spessasynth_lib 3.22.13 → 3.23.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/@types/soundfont/basic_soundfont/basic_soundfont.d.ts +2 -0
  2. package/@types/soundfont/basic_soundfont/basic_zone.d.ts +16 -0
  3. package/@types/soundfont/basic_soundfont/generator.d.ts +2 -1
  4. package/@types/soundfont/basic_soundfont/riff_chunk.d.ts +2 -1
  5. package/@types/soundfont/basic_soundfont/write_dls/art2.d.ts +6 -0
  6. package/@types/soundfont/basic_soundfont/write_dls/articulator.d.ts +28 -0
  7. package/@types/soundfont/basic_soundfont/write_dls/combine_zones.d.ts +8 -0
  8. package/@types/soundfont/basic_soundfont/write_dls/ins.d.ts +7 -0
  9. package/@types/soundfont/basic_soundfont/write_dls/lins.d.ts +5 -0
  10. package/@types/soundfont/basic_soundfont/write_dls/modulator_converter.d.ts +11 -0
  11. package/@types/soundfont/basic_soundfont/write_dls/rgn2.d.ts +8 -0
  12. package/@types/soundfont/basic_soundfont/write_dls/wave.d.ts +6 -0
  13. package/@types/soundfont/basic_soundfont/write_dls/write_dls.d.ts +6 -0
  14. package/@types/soundfont/basic_soundfont/write_dls/wsmp.d.ts +12 -0
  15. package/@types/soundfont/basic_soundfont/write_dls/wvpl.d.ts +8 -0
  16. package/README.md +2 -1
  17. package/midi_parser/midi_editor.js +0 -0
  18. package/package.json +1 -1
  19. package/soundfont/basic_soundfont/basic_preset.js +23 -12
  20. package/soundfont/basic_soundfont/basic_soundfont.js +2 -0
  21. package/soundfont/basic_soundfont/basic_zone.js +30 -5
  22. package/soundfont/basic_soundfont/generator.js +10 -4
  23. package/soundfont/basic_soundfont/riff_chunk.js +20 -5
  24. package/soundfont/basic_soundfont/write_dls/art2.js +136 -0
  25. package/soundfont/basic_soundfont/write_dls/articulator.js +49 -0
  26. package/soundfont/basic_soundfont/write_dls/combine_zones.js +398 -0
  27. package/soundfont/basic_soundfont/write_dls/ins.js +103 -0
  28. package/soundfont/basic_soundfont/write_dls/lins.js +18 -0
  29. package/soundfont/basic_soundfont/write_dls/modulator_converter.js +324 -0
  30. package/soundfont/basic_soundfont/write_dls/rgn2.js +116 -0
  31. package/soundfont/basic_soundfont/write_dls/wave.js +88 -0
  32. package/soundfont/basic_soundfont/write_dls/write_dls.js +118 -0
  33. package/soundfont/basic_soundfont/write_dls/wsmp.js +78 -0
  34. package/soundfont/basic_soundfont/write_dls/wvpl.js +32 -0
  35. package/soundfont/basic_soundfont/write_sf2/igen.js +3 -3
  36. package/soundfont/basic_soundfont/write_sf2/pgen.js +2 -2
  37. package/soundfont/dls/articulator_converter.js +10 -0
  38. package/soundfont/dls/dls_sample.js +2 -2
  39. package/soundfont/dls/dls_soundfont.js +2 -1
  40. package/soundfont/dls/dls_zone.js +21 -18
  41. package/soundfont/dls/read_articulation.js +18 -30
  42. package/soundfont/dls/read_instrument.js +31 -1
  43. package/soundfont/dls/read_region.js +0 -4
  44. package/soundfont/dls/read_samples.js +17 -17
  45. package/synthetizer/key_modifier_manager.js +1 -1
  46. package/synthetizer/worklet_processor.min.js +13 -12
  47. package/synthetizer/worklet_system/worklet_methods/worklet_soundfont_manager/worklet_soundfont_manager.js +0 -0
  48. package/synthetizer/worklet_system/worklet_utilities/worklet_voice.js +1 -1
  49. package/utils/byte_functions/string.js +1 -1
@@ -1,18 +1,19 @@
1
- var cs=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(A,e)=>(typeof require<"u"?require:A)[e]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var J=class extends Uint8Array{currentIndex;constructor(A){super(A),this.currentIndex=0}};function Fe(t){let A=t.reduce((n,o)=>n+o.length,0),e=new J(A),s=0;for(let n of t)e.set(n,s),s+=n.length;return e}function kt(t){t=Math.floor(t);let A=Math.floor(t/60),e=Math.round(t-A*60);return{minutes:A,seconds:e,time:`${A.toString().padStart(2,"0")}:${e.toString().padStart(2,"0")}`}}function Qs(t){return t.trim().replaceAll(".mid","").replaceAll(".rmi","").replaceAll("_"," ")}function lA(t){let A="";for(let e=0;e<t.length;e++){let s=t[e].toString(16).padStart(2,"0").toUpperCase();A+=s,A+=" "}return A}var r={warn:"color: orange;",unrecognized:"color: red;",info:"color: aqua;",recognized:"color: lime",value:"color: yellow; background-color: black;"};var ge=class{constructor(A,e,s){this.ticks=A,this.messageStatusByte=e,this.messageData=s}};function ls(t){let A=t&240,e=t&15,s=e;switch(A){case 128:case 144:case 160:case 176:case 192:case 208:case 224:break;case 240:switch(e){case 0:s=-3;break;case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:case 12:case 13:case 14:s=-1;break;case 15:s=-2;break}break;default:s=-1}return s}var F={noteOff:128,noteOn:144,polyPressure:160,controllerChange:176,programChange:192,channelPressure:208,pitchBend:224,systemExclusive:240,timecode:241,songPosition:242,songSelect:243,tuneRequest:246,clock:248,start:250,continue:251,stop:252,activeSensing:254,reset:255,sequenceNumber:0,text:1,copyright:2,trackName:3,instrumentName:4,lyric:5,marker:6,cuePoint:7,programName:8,midiChannelPrefix:32,midiPort:33,endOfTrack:47,setTempo:81,smpteOffset:84,timeSignature:88,keySignature:89,sequenceSpecific:127};function Re(t){let A=t&240,e=t&15,s=-1,n=t;return A>=128&&A<=224&&(s=e,n=A),{status:n,channel:s}}var S={bankSelect:0,modulationWheel:1,breathController:2,footController:4,portamentoTime:5,dataEntryMsb:6,mainVolume:7,balance:8,pan:10,expressionController:11,effectControl1:12,effectControl2:13,generalPurposeController1:16,generalPurposeController2:17,generalPurposeController3:18,generalPurposeController4:19,lsbForControl0BankSelect:32,lsbForControl1ModulationWheel:33,lsbForControl2BreathController:34,lsbForControl4FootController:36,lsbForControl5PortamentoTime:37,lsbForControl6DataEntry:38,lsbForControl7MainVolume:39,lsbForControl8Balance:40,lsbForControl10Pan:42,lsbForControl11ExpressionController:43,lsbForControl12EffectControl1:44,lsbForControl13EffectControl2:45,sustainPedal:64,portamentoOnOff:65,sostenutoPedal:66,softPedal:67,legatoFootswitch:68,hold2Pedal:69,soundVariation:70,timbreHarmonicContent:71,releaseTime:72,attackTime:73,brightness:74,soundController6:75,soundController7:76,soundController8:77,soundController9:78,soundController10:79,generalPurposeController5:80,generalPurposeController6:81,generalPurposeController7:82,generalPurposeController8:83,portamentoControl:84,reverbDepth:91,tremoloDepth:92,chorusDepth:93,detuneDepth:94,phaserDepth:95,dataIncrement:96,dataDecrement:97,NRPNLsb:98,NRPNMsb:99,RPNLsb:100,RPNMsb:101,allSoundOff:120,resetAllControllers:121,localControlOnOff:122,allNotesOff:123,omniModeOff:124,omniModeOn:125,monoModeOn:126,polyModeOn:127},us={8:2,9:2,10:2,11:2,12:1,13:1,14:2};var z={noteOff:0,noteOn:1,ccChange:2,programChange:3,channelPressure:4,polyPressure:5,killNote:6,ccReset:7,setChannelVibrato:8,soundFontManager:9,stopAll:10,killNotes:11,muteChannel:12,addNewChannel:13,customcCcChange:14,debugMessage:15,systemExclusive:16,setMasterParameter:17,setDrums:18,pitchWheel:19,transpose:20,highPerformanceMode:21,lockController:22,sequencerSpecific:23,requestSynthesizerSnapshot:24,setLogLevel:25,keyModifierManager:26,setEffectsGain:27,destroyWorklet:28},Ce={mainVolume:0,masterPan:1,voicesCap:2,interpolationType:3},HA=-1,uA={channelProperties:0,eventCall:1,reportedCurrentTime:2,sequencerSpecific:3,synthesizerSnapshot:4,ready:5,soundfontError:6,identify:7};var ds=!1,fs=!0,Ve=!1,ms=!0;function ps(t,A,e,s){ds=t,fs=A,Ve=e,ms=s}function m(...t){ds&&console.info(...t)}function H(...t){fs&&console.warn(...t)}function ys(...t){ms&&console.table(...t)}function se(...t){Ve&&console.group(...t)}function yA(...t){Ve&&console.groupCollapsed(...t)}function V(){Ve&&console.groupEnd()}var Ee={reloadSoundFont:0,addNewSoundFont:2,deleteSoundFont:3,rearrangeSoundFonts:4};var a={INVALID:-1,startAddrsOffset:0,endAddrOffset:1,startloopAddrsOffset:2,endloopAddrsOffset:3,startAddrsCoarseOffset:4,modLfoToPitch:5,vibLfoToPitch:6,modEnvToPitch:7,initialFilterFc:8,initialFilterQ:9,modLfoToFilterFc:10,modEnvToFilterFc:11,endAddrsCoarseOffset:12,modLfoToVolume:13,unused1:14,chorusEffectsSend:15,reverbEffectsSend:16,pan:17,unused2:18,unused3:19,unused4:20,delayModLFO:21,freqModLFO:22,delayVibLFO:23,freqVibLFO:24,delayModEnv:25,attackModEnv:26,holdModEnv:27,decayModEnv:28,sustainModEnv:29,releaseModEnv:30,keyNumToModEnvHold:31,keyNumToModEnvDecay:32,delayVolEnv:33,attackVolEnv:34,holdVolEnv:35,decayVolEnv:36,sustainVolEnv:37,releaseVolEnv:38,keyNumToVolEnvHold:39,keyNumToVolEnvDecay:40,instrument:41,reserved1:42,keyRange:43,velRange:44,startloopAddrsCoarseOffset:45,keyNum:46,velocity:47,initialAttenuation:48,reserved2:49,endloopAddrsCoarseOffset:50,coarseTune:51,fineTune:52,sampleID:53,sampleModes:54,reserved3:55,scaleTuning:56,exclusiveClass:57,overridingRootKey:58,unused5:59,endOper:60},T=[];T[a.startAddrsOffset]={min:0,max:32768,def:0};T[a.endAddrOffset]={min:-32768,max:32768,def:0};T[a.startloopAddrsOffset]={min:-32768,max:32768,def:0};T[a.endloopAddrsOffset]={min:-32768,max:32768,def:0};T[a.startAddrsCoarseOffset]={min:0,max:32768,def:0};T[a.modLfoToPitch]={min:-12e3,max:12e3,def:0};T[a.vibLfoToPitch]={min:-12e3,max:12e3,def:0};T[a.modEnvToPitch]={min:-12e3,max:12e3,def:0};T[a.initialFilterFc]={min:1500,max:13500,def:13500};T[a.initialFilterQ]={min:0,max:960,def:0};T[a.modLfoToFilterFc]={min:-12e3,max:12e3,def:0};T[a.modEnvToFilterFc]={min:-12e3,max:12e3,def:0};T[a.endAddrsCoarseOffset]={min:-32768,max:32768,def:0};T[a.modLfoToVolume]={min:-960,max:960,def:0};T[a.chorusEffectsSend]={min:0,max:1e3,def:0};T[a.reverbEffectsSend]={min:0,max:1e3,def:0};T[a.pan]={min:-500,max:500,def:0};T[a.delayModLFO]={min:-12e3,max:5e3,def:-12e3};T[a.freqModLFO]={min:-16e3,max:4500,def:0};T[a.delayVibLFO]={min:-12e3,max:5e3,def:-12e3};T[a.freqVibLFO]={min:-16e3,max:4500,def:0};T[a.delayModEnv]={min:-32768,max:5e3,def:-32768};T[a.attackModEnv]={min:-32768,max:8e3,def:-32768};T[a.holdModEnv]={min:-12e3,max:5e3,def:-12e3};T[a.decayModEnv]={min:-12e3,max:8e3,def:-12e3};T[a.sustainModEnv]={min:0,max:1e3,def:0};T[a.releaseModEnv]={min:-7200,max:8e3,def:-12e3};T[a.keyNumToModEnvHold]={min:-1200,max:1200,def:0};T[a.keyNumToModEnvDecay]={min:-1200,max:1200,def:0};T[a.delayVolEnv]={min:-12e3,max:5e3,def:-12e3};T[a.attackVolEnv]={min:-12e3,max:8e3,def:-12e3};T[a.holdVolEnv]={min:-12e3,max:5e3,def:-12e3};T[a.decayVolEnv]={min:-12e3,max:8e3,def:-12e3};T[a.sustainVolEnv]={min:0,max:1440,def:0};T[a.releaseVolEnv]={min:-7200,max:8e3,def:-12e3};T[a.keyNumToVolEnvHold]={min:-1200,max:1200,def:0};T[a.keyNumToVolEnvDecay]={min:-1200,max:1200,def:0};T[a.startloopAddrsCoarseOffset]={min:-32768,max:32768,def:0};T[a.keyNum]={min:-1,max:127,def:-1};T[a.velocity]={min:-1,max:127,def:-1};T[a.initialAttenuation]={min:-250,max:1440,def:0};T[a.endloopAddrsCoarseOffset]={min:-32768,max:32768,def:0};T[a.coarseTune]={min:-120,max:120,def:0};T[a.fineTune]={min:-12700,max:12700,def:0};T[a.scaleTuning]={min:0,max:1200,def:100};T[a.exclusiveClass]={min:0,max:99999,def:0};T[a.overridingRootKey]={min:-1,max:127,def:-1};var U=class{generatorType=a.INVALID;generatorValue=0;constructor(A=a.INVALID,e=0){if(this.generatorType=A,e===void 0)throw new Error("No value provided.");let s=T[A];this.generatorValue=Math.round(e),s!==void 0&&(this.generatorValue=Math.max(s.min,Math.min(s.max,this.generatorValue)))}};function Ss(t,A,e){let s=T[t]||{min:0,max:32768,def:0},n=A.find(h=>h.generatorType===t),o=0;n&&(o=n.generatorValue);let i=e.find(h=>h.generatorType===t),g=s.def;i&&(g=i.generatorValue);let B=g+o;return t===a.initialAttenuation?B:Math.max(s.min,Math.min(s.max,B))}var K={noController:0,noteOnVelocity:2,noteOnKeyNum:3,polyPressure:10,channelPressure:13,pitchWheel:14,pitchWheelRange:16,link:127},hA={linear:0,concave:1,convex:2,switch:3},_=class t{currentValue=0;constructor(A){this.sourceEnum=A.srcEnum,this.modulatorDestination=A.dest,this.secondarySourceEnum=A.secSrcEnum,this.transformAmount=A.amt,this.transformType=A.transform,this.modulatorDestination>58&&(this.modulatorDestination=a.INVALID),this.sourcePolarity=this.sourceEnum>>9&1,this.sourceDirection=this.sourceEnum>>8&1,this.sourceUsesCC=this.sourceEnum>>7&1,this.sourceIndex=this.sourceEnum&127,this.sourceCurveType=this.sourceEnum>>10&3,this.secSrcPolarity=this.secondarySourceEnum>>9&1,this.secSrcDirection=this.secondarySourceEnum>>8&1,this.secSrcUsesCC=this.secondarySourceEnum>>7&1,this.secSrcIndex=this.secondarySourceEnum&127,this.secSrcCurveType=this.secondarySourceEnum>>10&3,this.isEffectModulator=(this.sourceEnum===219||this.sourceEnum===221)&&this.secondarySourceEnum===0&&(this.modulatorDestination===a.reverbEffectsSend||this.modulatorDestination===a.chorusEffectsSend)}static copy(A){return new t({srcEnum:A.sourceEnum,secSrcEnum:A.secondarySourceEnum,transform:A.transformType,amt:A.transformAmount,dest:A.modulatorDestination})}static isIdentical(A,e){return A.sourceEnum===e.sourceEnum&&A.modulatorDestination===e.modulatorDestination&&A.secondarySourceEnum===e.secondarySourceEnum&&A.transformType===e.transformType}sumTransform(A){return new t({srcEnum:this.sourceEnum,secSrcEnum:this.secondarySourceEnum,dest:this.modulatorDestination,transform:this.transformType,amt:this.transformAmount+A.transformAmount})}debugString(){function A(n,o){return Object.keys(n).find(i=>n[i]===o)}let e=A(hA,this.sourceCurveType);e+=this.sourcePolarity===0?" unipolar ":" bipolar ",e+=this.sourceDirection===0?"forwards ":"backwards ",this.sourceUsesCC?e+=A(S,this.sourceIndex):e+=A(K,this.sourceIndex);let s=A(hA,this.secSrcCurveType);return s+=this.secSrcPolarity===0?" unipolar ":" bipolar ",s+=this.secSrcCurveType===0?"forwards ":"backwards ",this.secSrcUsesCC?s+=A(S,this.secSrcIndex):s+=A(K,this.secSrcIndex),`Modulator:
1
+ var fs=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(A,e)=>(typeof require<"u"?require:A)[e]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var b=class extends Uint8Array{currentIndex;constructor(A){super(A),this.currentIndex=0}};function cA(t){let A=t.reduce((n,o)=>n+o.length,0),e=new b(A),s=0;for(let n of t)e.set(n,s),s+=n.length;return e}function xt(t){t=Math.floor(t);let A=Math.floor(t/60),e=Math.round(t-A*60);return{minutes:A,seconds:e,time:`${A.toString().padStart(2,"0")}:${e.toString().padStart(2,"0")}`}}function ms(t){return t.trim().replaceAll(".mid","").replaceAll(".rmi","").replaceAll("_"," ")}function SA(t){let A="";for(let e=0;e<t.length;e++){let s=t[e].toString(16).padStart(2,"0").toUpperCase();A+=s,A+=" "}return A}var a={warn:"color: orange;",unrecognized:"color: red;",info:"color: aqua;",recognized:"color: lime",value:"color: yellow; background-color: black;"};var ce=class{constructor(A,e,s){this.ticks=A,this.messageStatusByte=e,this.messageData=s}};function ps(t){let A=t&240,e=t&15,s=e;switch(A){case 128:case 144:case 160:case 176:case 192:case 208:case 224:break;case 240:switch(e){case 0:s=-3;break;case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:case 12:case 13:case 14:s=-1;break;case 15:s=-2;break}break;default:s=-1}return s}var M={noteOff:128,noteOn:144,polyPressure:160,controllerChange:176,programChange:192,channelPressure:208,pitchBend:224,systemExclusive:240,timecode:241,songPosition:242,songSelect:243,tuneRequest:246,clock:248,start:250,continue:251,stop:252,activeSensing:254,reset:255,sequenceNumber:0,text:1,copyright:2,trackName:3,instrumentName:4,lyric:5,marker:6,cuePoint:7,programName:8,midiChannelPrefix:32,midiPort:33,endOfTrack:47,setTempo:81,smpteOffset:84,timeSignature:88,keySignature:89,sequenceSpecific:127};function Ne(t){let A=t&240,e=t&15,s=-1,n=t;return A>=128&&A<=224&&(s=e,n=A),{status:n,channel:s}}var k={bankSelect:0,modulationWheel:1,breathController:2,footController:4,portamentoTime:5,dataEntryMsb:6,mainVolume:7,balance:8,pan:10,expressionController:11,effectControl1:12,effectControl2:13,generalPurposeController1:16,generalPurposeController2:17,generalPurposeController3:18,generalPurposeController4:19,lsbForControl0BankSelect:32,lsbForControl1ModulationWheel:33,lsbForControl2BreathController:34,lsbForControl4FootController:36,lsbForControl5PortamentoTime:37,lsbForControl6DataEntry:38,lsbForControl7MainVolume:39,lsbForControl8Balance:40,lsbForControl10Pan:42,lsbForControl11ExpressionController:43,lsbForControl12EffectControl1:44,lsbForControl13EffectControl2:45,sustainPedal:64,portamentoOnOff:65,sostenutoPedal:66,softPedal:67,legatoFootswitch:68,hold2Pedal:69,soundVariation:70,timbreHarmonicContent:71,releaseTime:72,attackTime:73,brightness:74,soundController6:75,soundController7:76,soundController8:77,soundController9:78,soundController10:79,generalPurposeController5:80,generalPurposeController6:81,generalPurposeController7:82,generalPurposeController8:83,portamentoControl:84,reverbDepth:91,tremoloDepth:92,chorusDepth:93,detuneDepth:94,phaserDepth:95,dataIncrement:96,dataDecrement:97,NRPNLsb:98,NRPNMsb:99,RPNLsb:100,RPNMsb:101,allSoundOff:120,resetAllControllers:121,localControlOnOff:122,allNotesOff:123,omniModeOff:124,omniModeOn:125,monoModeOn:126,polyModeOn:127},ys={8:2,9:2,10:2,11:2,12:1,13:1,14:2};var sA={noteOff:0,noteOn:1,ccChange:2,programChange:3,channelPressure:4,polyPressure:5,killNote:6,ccReset:7,setChannelVibrato:8,soundFontManager:9,stopAll:10,killNotes:11,muteChannel:12,addNewChannel:13,customcCcChange:14,debugMessage:15,systemExclusive:16,setMasterParameter:17,setDrums:18,pitchWheel:19,transpose:20,highPerformanceMode:21,lockController:22,sequencerSpecific:23,requestSynthesizerSnapshot:24,setLogLevel:25,keyModifierManager:26,setEffectsGain:27,destroyWorklet:28},le={mainVolume:0,masterPan:1,voicesCap:2,interpolationType:3},PA=-1,DA={channelProperties:0,eventCall:1,reportedCurrentTime:2,sequencerSpecific:3,synthesizerSnapshot:4,ready:5,soundfontError:6,identify:7};var Ss=!1,Ds=!0,We=!1,ks=!0;function ws(t,A,e,s){Ss=t,Ds=A,We=e,ks=s}function p(...t){Ss&&console.info(...t)}function U(...t){Ds&&console.warn(...t)}function Fs(...t){ks&&console.table(...t)}function ae(...t){We&&console.group(...t)}function QA(...t){We&&console.groupCollapsed(...t)}function K(){We&&console.groupEnd()}var Qe={reloadSoundFont:0,addNewSoundFont:2,deleteSoundFont:3,rearrangeSoundFonts:4};var r={INVALID:-1,startAddrsOffset:0,endAddrOffset:1,startloopAddrsOffset:2,endloopAddrsOffset:3,startAddrsCoarseOffset:4,modLfoToPitch:5,vibLfoToPitch:6,modEnvToPitch:7,initialFilterFc:8,initialFilterQ:9,modLfoToFilterFc:10,modEnvToFilterFc:11,endAddrsCoarseOffset:12,modLfoToVolume:13,unused1:14,chorusEffectsSend:15,reverbEffectsSend:16,pan:17,unused2:18,unused3:19,unused4:20,delayModLFO:21,freqModLFO:22,delayVibLFO:23,freqVibLFO:24,delayModEnv:25,attackModEnv:26,holdModEnv:27,decayModEnv:28,sustainModEnv:29,releaseModEnv:30,keyNumToModEnvHold:31,keyNumToModEnvDecay:32,delayVolEnv:33,attackVolEnv:34,holdVolEnv:35,decayVolEnv:36,sustainVolEnv:37,releaseVolEnv:38,keyNumToVolEnvHold:39,keyNumToVolEnvDecay:40,instrument:41,reserved1:42,keyRange:43,velRange:44,startloopAddrsCoarseOffset:45,keyNum:46,velocity:47,initialAttenuation:48,reserved2:49,endloopAddrsCoarseOffset:50,coarseTune:51,fineTune:52,sampleID:53,sampleModes:54,reserved3:55,scaleTuning:56,exclusiveClass:57,overridingRootKey:58,unused5:59,endOper:60},J=[];J[r.startAddrsOffset]={min:0,max:32768,def:0};J[r.endAddrOffset]={min:-32768,max:32768,def:0};J[r.startloopAddrsOffset]={min:-32768,max:32768,def:0};J[r.endloopAddrsOffset]={min:-32768,max:32768,def:0};J[r.startAddrsCoarseOffset]={min:0,max:32768,def:0};J[r.modLfoToPitch]={min:-12e3,max:12e3,def:0};J[r.vibLfoToPitch]={min:-12e3,max:12e3,def:0};J[r.modEnvToPitch]={min:-12e3,max:12e3,def:0};J[r.initialFilterFc]={min:1500,max:13500,def:13500};J[r.initialFilterQ]={min:0,max:960,def:0};J[r.modLfoToFilterFc]={min:-12e3,max:12e3,def:0};J[r.modEnvToFilterFc]={min:-12e3,max:12e3,def:0};J[r.endAddrsCoarseOffset]={min:-32768,max:32768,def:0};J[r.modLfoToVolume]={min:-960,max:960,def:0};J[r.chorusEffectsSend]={min:0,max:1e3,def:0};J[r.reverbEffectsSend]={min:0,max:1e3,def:0};J[r.pan]={min:-500,max:500,def:0};J[r.delayModLFO]={min:-12e3,max:5e3,def:-12e3};J[r.freqModLFO]={min:-16e3,max:4500,def:0};J[r.delayVibLFO]={min:-12e3,max:5e3,def:-12e3};J[r.freqVibLFO]={min:-16e3,max:4500,def:0};J[r.delayModEnv]={min:-32768,max:5e3,def:-32768};J[r.attackModEnv]={min:-32768,max:8e3,def:-32768};J[r.holdModEnv]={min:-12e3,max:5e3,def:-12e3};J[r.decayModEnv]={min:-12e3,max:8e3,def:-12e3};J[r.sustainModEnv]={min:0,max:1e3,def:0};J[r.releaseModEnv]={min:-7200,max:8e3,def:-12e3};J[r.keyNumToModEnvHold]={min:-1200,max:1200,def:0};J[r.keyNumToModEnvDecay]={min:-1200,max:1200,def:0};J[r.delayVolEnv]={min:-12e3,max:5e3,def:-12e3};J[r.attackVolEnv]={min:-12e3,max:8e3,def:-12e3};J[r.holdVolEnv]={min:-12e3,max:5e3,def:-12e3};J[r.decayVolEnv]={min:-12e3,max:8e3,def:-12e3};J[r.sustainVolEnv]={min:0,max:1440,def:0};J[r.releaseVolEnv]={min:-7200,max:8e3,def:-12e3};J[r.keyNumToVolEnvHold]={min:-1200,max:1200,def:0};J[r.keyNumToVolEnvDecay]={min:-1200,max:1200,def:0};J[r.startloopAddrsCoarseOffset]={min:-32768,max:32768,def:0};J[r.keyNum]={min:-1,max:127,def:-1};J[r.velocity]={min:-1,max:127,def:-1};J[r.initialAttenuation]={min:-250,max:1440,def:0};J[r.endloopAddrsCoarseOffset]={min:-32768,max:32768,def:0};J[r.coarseTune]={min:-120,max:120,def:0};J[r.fineTune]={min:-12700,max:12700,def:0};J[r.scaleTuning]={min:0,max:1200,def:100};J[r.exclusiveClass]={min:0,max:99999,def:0};J[r.overridingRootKey]={min:-1,max:127,def:-1};J[r.sampleModes]={min:0,max:3,def:0};var T=class{generatorType=r.INVALID;generatorValue=0;constructor(A=r.INVALID,e=0,s=!0){if(this.generatorType=A,e===void 0)throw new Error("No value provided.");if(this.generatorValue=Math.round(e),s){let n=J[A];n!==void 0&&(this.generatorValue=Math.max(n.min,Math.min(n.max,this.generatorValue)))}}};function Rs(t,A,e){let s=J[t]||{min:0,max:32768,def:0},n=A.find(h=>h.generatorType===t),o=0;n&&(o=n.generatorValue);let g=e.find(h=>h.generatorType===t),i=s.def;g&&(i=g.generatorValue);let E=i+o;return t===r.initialAttenuation?E:Math.max(s.min,Math.min(s.max,E))}var P={noController:0,noteOnVelocity:2,noteOnKeyNum:3,polyPressure:10,channelPressure:13,pitchWheel:14,pitchWheelRange:16,link:127},uA={linear:0,concave:1,convex:2,switch:3},X=class t{currentValue=0;constructor(A){this.sourceEnum=A.srcEnum,this.modulatorDestination=A.dest,this.secondarySourceEnum=A.secSrcEnum,this.transformAmount=A.amt,this.transformType=A.transform,this.modulatorDestination>58&&(this.modulatorDestination=r.INVALID),this.sourcePolarity=this.sourceEnum>>9&1,this.sourceDirection=this.sourceEnum>>8&1,this.sourceUsesCC=this.sourceEnum>>7&1,this.sourceIndex=this.sourceEnum&127,this.sourceCurveType=this.sourceEnum>>10&3,this.secSrcPolarity=this.secondarySourceEnum>>9&1,this.secSrcDirection=this.secondarySourceEnum>>8&1,this.secSrcUsesCC=this.secondarySourceEnum>>7&1,this.secSrcIndex=this.secondarySourceEnum&127,this.secSrcCurveType=this.secondarySourceEnum>>10&3,this.isEffectModulator=(this.sourceEnum===219||this.sourceEnum===221)&&this.secondarySourceEnum===0&&(this.modulatorDestination===r.reverbEffectsSend||this.modulatorDestination===r.chorusEffectsSend)}static copy(A){return new t({srcEnum:A.sourceEnum,secSrcEnum:A.secondarySourceEnum,transform:A.transformType,amt:A.transformAmount,dest:A.modulatorDestination})}static isIdentical(A,e){return A.sourceEnum===e.sourceEnum&&A.modulatorDestination===e.modulatorDestination&&A.secondarySourceEnum===e.secondarySourceEnum&&A.transformType===e.transformType}sumTransform(A){return new t({srcEnum:this.sourceEnum,secSrcEnum:this.secondarySourceEnum,dest:this.modulatorDestination,transform:this.transformType,amt:this.transformAmount+A.transformAmount})}debugString(){function A(n,o){return Object.keys(n).find(g=>n[g]===o)}let e=A(uA,this.sourceCurveType);e+=this.sourcePolarity===0?" unipolar ":" bipolar ",e+=this.sourceDirection===0?"forwards ":"backwards ",this.sourceUsesCC?e+=A(k,this.sourceIndex):e+=A(P,this.sourceIndex);let s=A(uA,this.secSrcCurveType);return s+=this.secSrcPolarity===0?" unipolar ":" bipolar ",s+=this.secSrcCurveType===0?"forwards ":"backwards ",this.secSrcUsesCC?s+=A(k,this.secSrcIndex):s+=A(P,this.secSrcIndex),`Modulator:
2
2
  Source: ${e}
3
3
  Secondary source: ${s}
4
- Destination: ${A(a,this.modulatorDestination)}
4
+ Destination: ${A(r,this.modulatorDestination)}
5
5
  Trasform amount: ${this.transformAmount}
6
6
  Transform type: ${this.transformType}
7
7
 
8
8
 
9
- `}},wt=960,Ft=hA.concave;function YA(t,A,e,s,n){return t<<10|A<<9|e<<8|s<<7|n}var Oe=[new _({srcEnum:YA(Ft,0,1,0,K.noteOnVelocity),dest:a.initialAttenuation,amt:wt,secSrcEnum:0,transform:0}),new _({srcEnum:129,dest:a.vibLfoToPitch,amt:50,secSrcEnum:0,transform:0}),new _({srcEnum:YA(Ft,0,1,1,S.mainVolume),dest:a.initialAttenuation,amt:wt,secSrcEnum:0,transform:0}),new _({srcEnum:13,dest:a.vibLfoToPitch,amt:50,secSrcEnum:0,transform:0}),new _({srcEnum:526,dest:a.fineTune,amt:12700,secSrcEnum:16,transform:0}),new _({srcEnum:650,dest:a.pan,amt:500,secSrcEnum:0,transform:0}),new _({srcEnum:YA(Ft,0,1,1,S.expressionController),dest:a.initialAttenuation,amt:wt,secSrcEnum:0,transform:0}),new _({srcEnum:219,dest:a.reverbEffectsSend,amt:200,secSrcEnum:0,transform:0}),new _({srcEnum:221,dest:a.chorusEffectsSend,amt:200,secSrcEnum:0,transform:0}),new _({srcEnum:YA(hA.linear,0,0,0,K.polyPressure),dest:a.vibLfoToPitch,amt:50,secSrcEnum:0,transform:0}),new _({srcEnum:YA(hA.linear,0,0,1,S.tremoloDepth),dest:a.modLfoToVolume,amt:24,secSrcEnum:0,transform:0}),new _({srcEnum:YA(hA.linear,1,0,1,S.releaseTime),dest:a.releaseVolEnv,amt:1200,secSrcEnum:0,transform:0}),new _({srcEnum:YA(hA.linear,1,0,1,S.brightness),dest:a.initialFilterFc,amt:6e3,secSrcEnum:0,transform:0}),new _({srcEnum:YA(hA.linear,1,0,1,S.timbreHarmonicContent),dest:a.initialFilterQ,amt:250,secSrcEnum:0,transform:0})];var gA=128,Ze=147,Be=new Int16Array(Ze).fill(0),dA=(t,A)=>Be[t]=A<<7;dA(S.mainVolume,100);dA(S.balance,64);dA(S.expressionController,127);dA(S.pan,64);dA(S.timbreHarmonicContent,64);dA(S.releaseTime,64);dA(S.attackTime,64);dA(S.brightness,64);dA(S.soundController6,64);dA(S.soundController7,64);dA(S.soundController8,64);dA(S.soundController9,64);dA(S.generalPurposeController6,64);dA(S.generalPurposeController8,64);dA(gA+K.pitchWheel,64);dA(gA+K.pitchWheelRange,2);var aA={channelTuning:0,channelTransposeFine:1,modulationMultiplier:2,masterTuning:3,channelTuningSemitones:4},Rt=Object.keys(aA).length,Gt=new Float32Array(Rt);Gt[aA.modulationMultiplier]=1;var fA={Idle:0,RPCoarse:1,RPFine:2,NRPCoarse:3,NRPFine:4,DataCoarse:5,DataFine:6};function Ds(t=!1){let A={midiControllers:new Int16Array(Ze),lockedControllers:Array(Ze).fill(!1),customControllers:new Float32Array(Rt),NRPCoarse:0,NRPFine:0,RPValue:0,dataEntryState:fA.Idle,voices:[],sustainedVoices:[],cachedVoices:[],preset:this.defaultPreset,presetUsesOverride:!1,channelTransposeKeyShift:0,channelOctaveTuning:new Int8Array(12),keyCentTuning:new Int16Array(128),channelVibrato:{delay:0,depth:0,rate:0},velocityOverride:0,lockGSNRPNParams:!1,holdPedal:!1,isMuted:!1,drumChannel:!1,lockPreset:!1};for(let e=0;e<128;e++)A.cachedVoices.push([]);this.workletProcessorChannels.push(A),this.resetControllers(this.workletProcessorChannels.length-1),this.sendChannelProperties(),t&&this.callEvent("newchannel",void 0)}function zA(t,A){t.lockPreset||(t.bank=A)}function KA(t){return t.drumChannel?128:t.bank}var Mt={velocityOverride:128};var Xe={addMapping:0,deleteMapping:1,clearMappings:2},We=class{_keyMappings=[];handleMessage(A,e){switch(A){default:return;case Xe.addMapping:this.addMapping(...e);break;case Xe.clearMappings:this.clearMappings();break;case Xe.deleteMapping:this.deleteMapping(...e)}}addMapping(A,e,s){this._keyMappings[A]===void 0&&(this._keyMappings[A]=[]),this._keyMappings[A][e]=s}deleteMapping(A,e){this._keyMappings[A]?.[e]!==void 0&&(this._keyMappings[A][e]=void 0)}clearMappings(){this._keyMappings=[]}setMappings(A){this._keyMappings=A}getMappings(){return this._keyMappings}getVelocity(A,e){let s=this._keyMappings[A]?.[e];return s?s.velocity:-1}hasOverridePatch(A,e){let s=this._keyMappings[A]?.[e]?.patch?.bank;return s!==void 0&&s>=0}getPatch(A,e){let s=this._keyMappings[A]?.[e];if(s)return s.patch;throw new Error("No modifier.")}};var ks="spessasynth-worklet-system",ws=350,SA=9,_e=16,ze="gs";var wA={loadNewSongList:0,pause:1,stop:2,play:3,setTime:4,changeMIDIMessageSending:5,setPlaybackRate:6,setLoop:7,changeSong:8,getMIDI:9,setSkipToFirstNote:10,setPreservePlaybackState:11},FA={midiEvent:0,songChange:1,textEvent:2,timeChange:3,pause:4,getMIDI:5,midiError:6};function jA(t,A){let e=0;for(let s=8*(A-1);s>=0;s-=8)e|=t[t.currentIndex++]<<s;return e>>>0}function Fs(t,A){if(this.ignoreEvents)return;if(this.sendMIDIMessages&&t.messageStatusByte>=128){this.sendMIDIMessage([t.messageStatusByte,...t.messageData]);return}let e=Re(t.messageStatusByte),s=this.midiPortChannelOffsets[this.midiPorts[A]]||0;switch(e.channel+=s,e.status){case F.noteOn:let n=t.messageData[1];if(n>0)this.synth.noteOn(e.channel,t.messageData[0],n),this.playingNotes.push({midiNote:t.messageData[0],channel:e.channel,velocity:n});else{this.synth.noteOff(e.channel,t.messageData[0]);let i=this.playingNotes.findIndex(g=>g.midiNote===t.messageData[0]&&g.channel===e.channel);i!==-1&&this.playingNotes.splice(i,1)}break;case F.noteOff:this.synth.noteOff(e.channel,t.messageData[0]);let o=this.playingNotes.findIndex(i=>i.midiNote===t.messageData[0]&&i.channel===e.channel);o!==-1&&this.playingNotes.splice(o,1);break;case F.pitchBend:this.synth.pitchWheel(e.channel,t.messageData[1],t.messageData[0]);break;case F.controllerChange:this.synth.controllerChange(e.channel,t.messageData[0],t.messageData[1]);break;case F.programChange:this.synth.programChange(e.channel,t.messageData[0]);break;case F.polyPressure:this.synth.polyPressure(e.channel,t.messageData[0],t.messageData[1]);break;case F.channelPressure:this.synth.channelPressure(e.channel,t.messageData[0]);break;case F.systemExclusive:this.synth.systemExclusive(t.messageData,s);break;case F.setTempo:this.oneTickToSeconds=60/(Yo(t)*this.midiData.timeDivision),this.oneTickToSeconds===0&&(this.oneTickToSeconds=60/(120*this.midiData.timeDivision),H("invalid tempo! falling back to 120 BPM"));break;case F.timeSignature:case F.endOfTrack:case F.midiChannelPrefix:case F.songPosition:case F.activeSensing:case F.keySignature:case F.sequenceNumber:case F.sequenceSpecific:break;case F.text:case F.lyric:case F.copyright:case F.trackName:case F.marker:case F.cuePoint:case F.instrumentName:case F.programName:this.post(FA.textEvent,[t.messageData,e.status]);break;case F.midiPort:this.assignMIDIPort(A,t.messageData[0]);break;case F.reset:this.synth.stopAllChannels(),this.synth.resetAllControllers();break;default:H(`%cUnrecognized Event: %c${t.messageStatusByte}%c status byte: %c${Object.keys(F).find(i=>F[i]===e.status)}`,r.warn,r.unrecognized,r.warn,r.value);break}}function Rs(){for(let t=0;t<16;t++)this.synth.createWorkletChannel(!0),t===SA&&this.synth.setDrums(this.synth.workletProcessorChannels.length-1,!0)}function Yo(t){return t.messageData.currentIndex=0,6e7/jA(t.messageData,3)}function Gs(){let t=this.currentTime;for(;this.playedTime<t;){let A=this._findFirstEventIndex(),e=this.tracks[A][this.eventIndex[A]];if(this._processEvent(e,A),this.eventIndex[A]++,A=this._findFirstEventIndex(),this.tracks[A].length<=this.eventIndex[A]){if(this.loop){this.setTimeTicks(this.midiData.loop.start);return}this.eventIndex[A]--,this.pause(!0),this.songs.length>1&&this.nextSong();return}let s=this.tracks[A][this.eventIndex[A]];if(this.playedTime+=this.oneTickToSeconds*(s.ticks-e.ticks),this.midiData.loop.end<=e.ticks&&this.loop&&this.currentLoopCount>0){this.currentLoopCount--,this.setTimeTicks(this.midiData.loop.start);return}else if(t>=this.duration){if(this.loop&&this.currentLoopCount>0){this.currentLoopCount--,this.setTimeTicks(this.midiData.loop.start);return}this.eventIndex[A]--,this.pause(!0),this.songs.length>1&&this.nextSong();return}}}function Ms(){let t=0,A=1/0;return this.tracks.forEach((e,s)=>{this.eventIndex[s]>=e.length||e[this.eventIndex[s]].ticks<A&&(t=s,A=e[this.eventIndex[s]].ticks)}),t}var je=class{constructor(A){this.timeDivision=A.timeDivision,this.duration=A.duration,this.tempoChanges=A.tempoChanges,this.copyright=A.copyright,this.tracksAmount=A.tracksAmount,this.lyrics=A.lyrics,this.firstNoteOn=A.firstNoteOn,this.keyRange=A.keyRange,this.lastVoiceEventTick=A.lastVoiceEventTick,this.midiPorts=A.midiPorts,this.midiPortChannelOffsets=A.midiPortChannelOffsets,this.usedChannelsOnTrack=A.usedChannelsOnTrack,this.loop=A.loop,this.midiName=A.midiName,this.fileName=A.fileName,this.rawMidiName=A.rawMidiName,this.isEmbedded=A.embeddedSoundFont!==void 0,this.RMIDInfo=A.RMIDInfo,this.bankOffset=A.bankOffset}},qi={duration:99999,firstNoteOn:0,loop:{start:0,end:123456},lastVoiceEventTick:123456,lyrics:[],copyright:"",midiPorts:[],midiPortChannelOffsets:[],tracksAmount:0,tempoChanges:[{ticks:0,tempo:120}],fileName:"NOT_LOADED.mid",midiName:"Loading...",rawMidiName:new Uint8Array([76,111,97,100,105,110,103,46,46,46]),usedChannelsOnTrack:[],timeDivision:0,keyRange:{min:0,max:127},isEmbedded:!1,RMIDInfo:void 0,bankOffset:0};function D(t,A){let e=0;for(let s=0;s<A;s++)e|=t[t.currentIndex++]<<s*8;return e>>>0}function he(t,A,e){for(let s=0;s<e;s++)t[t.currentIndex++]=A>>s*8&255}function v(t,A){t[t.currentIndex++]=A&255,t[t.currentIndex++]=A>>8}function cA(t,A){he(t,A,4)}function $A(t,A){let e=A<<8|t;return e>32767?e-65536:e}function xs(t){return t>127?t-256:t}function O(t,A,e=void 0,s=!0){if(e){let n=t.slice(t.currentIndex,t.currentIndex+A);return t.currentIndex+=A,new TextDecoder(e.replace(/[^\x20-\x7E]/g,"")).decode(n.buffer)}else{let n=!1,o="";for(let i=0;i<A;i++){let g=t[t.currentIndex++];if(!n){if(g<32||g>127){if(s){n=!0;continue}else if(g===0){n=!0;continue}}o+=String.fromCharCode(g)}}return o}}function RA(t,A,e=0){e>0&&A.length>e&&(A=A.slice(0,e));for(let s=0;s<A.length;s++)t[t.currentIndex++]=A.charCodeAt(s);if(e>A.length)for(let s=0;s<e-A.length;s++)t[t.currentIndex++]=0;return t}var $=class{constructor(A,e,s){this.header=A,this.size=e,this.chunkData=s}};function Z(t,A=!0,e=!1){let s=O(t,4),n=D(t,4),o;return A&&(o=new J(t.buffer.slice(t.currentIndex,t.currentIndex+n))),(A||e)&&(t.currentIndex+=n),n%2!==0&&t[t.currentIndex]===0&&t.currentIndex++,new $(s,n,o)}function sA(t,A=void 0){let e=8+t.size;t.size%2!==0&&e++,A&&(e+=A.length);let s=new J(e);return A&&(s.set(A,s.currentIndex),s.currentIndex+=A.length),RA(s,t.header),cA(s,e-8-(A?.length||0)),s.set(t.chunkData,s.currentIndex),s}function DA(t,A){return t.find(e=>e.header!=="LIST"?!1:(e.chunkData.currentIndex=0,O(e.chunkData,4)===A))}function $e(t){let A=0;for(;t;){let e=t[t.currentIndex++];if(A=A<<7|e&127,e>>7!==1)break}return A}var At={name:"INAM",album:"IPRD",artist:"IART",genre:"IGNR",picture:"IPIC",copyright:"ICOP",creationDate:"ICRD",comment:"ICMT",engineer:"IENG",software:"ISFT",encoding:"IENC",midiEncoding:"MENC",bankOffset:"DBNK"};var et=class{constructor(){this.timeDivision=0,this.duration=0,this.tempoChanges=[{ticks:0,tempo:120}],this.copyright="",this.tracksAmount=0,this.lyrics=[],this.firstNoteOn=0,this.keyRange={min:0,max:127},this.lastVoiceEventTick=0,this.midiPorts=[0],this.midiPortChannelOffsets=[0],this.usedChannelsOnTrack=[],this.loop={start:0,end:0},this.midiName="",this.fileName="",this.rawMidiName=void 0,this.embeddedSoundFont=void 0,this.format=0,this.RMIDInfo={},this.bankOffset=0,this.tracks=[]}};function ce(t,A){let e=0;for(;t>0;){let s=A.tempoChanges.find(o=>o.ticks<t),n=t-s.ticks;e+=n*60/(s.tempo*A.timeDivision),t-=n}return e}var Jo=new Uint8Array([65,16,69,18,16,0,0]),tt=class extends et{constructor(A,e=""){super(),yA("%cParsing MIDI File...",r.info);let s=new J(A),n,o=!1,i=!1,g=!1,B=O(s,4);if(s.currentIndex-=4,B==="RIFF"){s.currentIndex+=8;let y=O(s,4,void 0,!1);if(y!=="RMID")throw V(),new SyntaxError(`Invalid RMIDI Header! Expected "RMID", got "${y}"`);let w=Z(s);if(w.header!=="data")throw V(),new SyntaxError(`Invalid RMIDI Chunk header! Expected "data", got "${y}"`);for(n=w.chunkData;s.currentIndex<=s.length;){let k=s.currentIndex,L=Z(s,!0);if(L.header==="RIFF"){let R=O(L.chunkData,4).toLowerCase();R==="sfbk"||R==="sfpk"||R==="dls "?(m("%cFound embedded soundfont!",r.recognized),this.embeddedSoundFont=s.slice(k,k+L.size).buffer):H(`Unknown RIFF chunk: "${R}"`),R==="dls "&&(g=!0)}else if(L.header==="LIST"&&O(L.chunkData,4)==="INFO"){for(m("%cFound RMIDI INFO chunk!",r.recognized),this.RMIDInfo={};L.chunkData.currentIndex<=L.size;){let N=Z(L.chunkData,!0);this.RMIDInfo[N.header]=N.chunkData}this.RMIDInfo.ICOP&&(o=!0,this.copyright=O(this.RMIDInfo.ICOP,this.RMIDInfo.ICOP.length,void 0,!1).replaceAll(`
10
- `," ")),this.RMIDInfo.INAM&&(this.rawMidiName=this.RMIDInfo[At.name],this.midiName=O(this.rawMidiName,this.rawMidiName.length,void 0,!1).replaceAll(`
11
- `," "),i=!0),this.RMIDInfo.IALB&&!this.RMIDInfo.IPRD&&(this.RMIDInfo.IPRD=this.RMIDInfo.IALB),this.RMIDInfo.PRD&&!this.RMIDInfo.IALB&&(this.RMIDInfo.IALB=this.RMIDInfo.IPRD),this.bankOffset=1,this.RMIDInfo[At.bankOffset]&&(this.bankOffset=D(this.RMIDInfo[At.bankOffset],2))}}g&&(this.bankOffset=0)}else n=s;let h=this.readMIDIChunk(n);if(h.type!=="MThd")throw V(),new SyntaxError(`Invalid MIDI Header! Expected "MThd", got "${h.type}"`);if(h.size!==6)throw V(),new RangeError(`Invalid MIDI header chunk size! Expected 6, got ${h.size}`);this.format=jA(h.data,2),this.tracksAmount=jA(h.data,2),this.timeDivision=jA(h.data,2),this.keyRange={min:127,max:0},this.lyrics=[],this.tempoChanges=[{ticks:0,tempo:120}];let d=null,u=null;this.lastVoiceEventTick=0,this.midiPorts=[];let l=0;this.midiPortChannelOffsets=[],this.usedChannelsOnTrack=[],this.tracks=[];for(let y=0;y<this.tracksAmount;y++){let w=[],k=this.readMIDIChunk(n),L=new Set;if(this.midiPorts.push(-1),k.type!=="MTrk")throw V(),new SyntaxError(`Invalid track header! Expected "MTrk" got "${k.type}"`);let R,N=0;for(this.format===2&&y>0&&(N+=this.tracks[y-1][this.tracks[y-1].length-1].ticks);k.data.currentIndex<k.size;){N+=$e(k.data);let G=k.data[k.data.currentIndex],C;if(R!==void 0&&G<128)C=R;else{if(!R&&G<128)throw V(),new SyntaxError(`Unexpected byte with no running byte. (${G})`);C=k.data[k.data.currentIndex++]}let iA=ls(C),j;switch(iA){case-1:j=0;break;case-2:C=k.data[k.data.currentIndex++],j=$e(k.data);break;case-3:j=$e(k.data);break;default:if(N>this.lastVoiceEventTick&&(this.lastVoiceEventTick=N),j=us[C>>4],(C&240)===F.noteOn){L.add(iA);let IA=k.data[k.data.currentIndex];this.keyRange.min=Math.min(this.keyRange.min,IA),this.keyRange.max=Math.max(this.keyRange.max,IA)}R=C;break}let AA=new J(j),eA=k.data.slice(k.data.currentIndex,k.data.currentIndex+j);k.data.currentIndex+=j,AA.set(eA,0);let QA=new ge(N,C,AA);switch(w.push(QA),iA){case-2:switch(C){case F.setTempo:this.tempoChanges.push({ticks:N,tempo:6e7/jA(eA,3)});break;case F.marker:switch(O(AA,AA.length).trim().toLowerCase()){default:break;case"start":case"loopstart":d=N;break;case"loopend":u=N}AA.currentIndex=0;break;case F.midiPort:let mA=AA[0];this.midiPorts[y]=mA,this.midiPortChannelOffsets[mA]===void 0&&(this.midiPortChannelOffsets[mA]=l,l+=16);break;case F.copyright:o||(this.copyright+=O(AA,AA.length,void 0,!1)+`
12
- `);break;case F.lyric:this.lyrics.push(AA)}break;case-3:if(AA.slice(0,7).every((IA,mA)=>Jo[mA]===IA)){let IA=AA.slice(7,eA.length-3),mA=O(IA,IA.length)+`
13
- `;this.copyright+=mA,m(`%cDecoded Roland SC message! %c${mA}`,r.recognized,r.value)}break;default:if((C&240)===F.controllerChange)switch(AA[0]){case 2:case 116:d=N;break;case 4:case 117:u===null?u=N:u=0;break;case 0:g&&AA[1]!==0&&AA[1]!==127&&(m("%cDLS RMIDI with offset 1 detected!",r.recognized),this.bankOffset=1)}}}this.tracks.push(w),this.usedChannelsOnTrack.push(L),m(`%cParsed %c${this.tracks.length}%c / %c${this.tracksAmount}`,r.info,r.value,r.info,r.value)}m("%cAll tracks parsed correctly!",r.recognized),yA("%cCorrecting loops, ports and detecting notes...",r.info);let Q=[];for(let y of this.tracks){let w=y.find(k=>(k.messageStatusByte&240)===F.noteOn);w&&Q.push(w.ticks)}this.firstNoteOn=Math.min(...Q),m(`%cFirst note-on detected at: %c${this.firstNoteOn}%c ticks!`,r.info,r.recognized,r.info),d!==null&&u===null?(d=this.firstNoteOn,u=this.lastVoiceEventTick):(d===null&&(d=this.firstNoteOn),(u===null||u===0)&&(u=this.lastVoiceEventTick)),this.loop={start:d,end:u},m(`%cLoop points: start: %c${this.loop.start}%c end: %c${this.loop.end}`,r.info,r.recognized,r.info,r.recognized);let p=0;for(let y of this.midiPorts)if(y!==-1){p=y;break}if(this.midiPorts=this.midiPorts.map(y=>y===-1?p:y),this.midiPortChannelOffsets.length===0&&(this.midiPortChannelOffsets=[0]),this.midiPortChannelOffsets.length<2?m("%cNo additional MIDI Ports detected.",r.info):m("%cMIDI Ports detected!",r.recognized),!i)if(this.tracks.length>1){if(this.tracks[0].find(y=>y.messageStatusByte>=F.noteOn&&y.messageStatusByte<F.polyPressure)===void 0){let y=this.tracks[0].find(w=>w.messageStatusByte===F.trackName);y&&(this.rawMidiName=y.messageData,this.midiName=O(y.messageData,y.messageData.length,void 0,!1))}}else{let y=this.tracks[0].find(w=>w.messageStatusByte===F.trackName);y&&(this.rawMidiName=y.messageData,this.midiName=O(y.messageData,y.messageData.length,void 0,!1))}if(this.fileName=e,this.midiName=this.midiName.trim(),this.midiName.length===0){m("%cNo name detected. Using the alt name!",r.info),this.midiName=Qs(e),this.rawMidiName=new Uint8Array(this.midiName.length);for(let y=0;y<this.midiName.length;y++)this.rawMidiName[y]=this.midiName.charCodeAt(y)}else m(`%cMIDI Name detected! %c"${this.midiName}"`,r.info,r.recognized);this.tempoChanges.reverse(),this.duration=ce(this.lastVoiceEventTick,this),V(),m(`%cMIDI file parsed. Total tick time: %c${this.lastVoiceEventTick}%c, total seconds time: %c${this.duration}`,r.info,r.recognized,r.info,r.recognized),V()}readMIDIChunk(A){let e={};e.type=O(A,4),e.size=jA(A,4),e.data=new J(e.size);let s=A.slice(A.currentIndex,A.currentIndex+e.size);return e.data.set(s,0),A.currentIndex+=e.size,e}};function Ns(t,A){yA("%cSearching for all used programs and keys...",r.info);let e=16+t.midiPortChannelOffsets.reduce((u,l)=>l>u?l:u),s=[];for(let u=0;u<e;u++){let l=u%16===SA?128:0;s.push({program:0,bank:l,drums:u%16===SA,string:`${l}:0`})}function n(u){let l=A.getPreset(u.bank,u.program);u.bank=l.bank,u.program=l.program,u.string=u.bank+":"+u.program,o[u.string]||(m(`%cDetected a new preset: %c${u.string}`,r.info,r.recognized),o[u.string]=new Set)}let o={},i=Array(t.tracks.length).fill(0),g=t.tracks.length;function B(){let u=0,l=1/0;return t.tracks.forEach((Q,p)=>{i[p]>=Q.length||Q[i[p]].ticks<l&&(u=p,l=Q[i[p]].ticks)}),u}let h=t.midiPorts.slice(),d="gs";for(;g>0;){let u=B(),l=t.tracks[u];if(i[u]>=l.length){g--;continue}let Q=l[i[u]];if(i[u]++,Q.messageStatusByte===F.midiPort){h[u]=Q.messageData[0];continue}let p=Q.messageStatusByte&240;if(p!==F.noteOn&&p!==F.controllerChange&&p!==F.programChange&&p!==F.systemExclusive)continue;let y=(Q.messageStatusByte&15)+t.midiPortChannelOffsets[h[u]]||0,w=s[y];switch(p){case F.programChange:w.program=Q.messageData[0],n(w);break;case F.controllerChange:if(Q.messageData[0]!==S.bankSelect||d==="gs"&&w.drums)continue;let k=Q.messageData[1],L=Math.max(0,k-t.bankOffset);if(d==="xg"){let G=k===120||k===126||k===127;G!==w.drums?(w.drums=G,w.bank=w.drums?128:L,n(w)):w.bank=w.drums?128:L;continue}s[y].bank=L;break;case F.noteOn:if(Q.messageData[1]===0)continue;n(w),o[w.string].add(`${Q.messageData[0]}-${Q.messageData[1]}`);break;case F.systemExclusive:if(Q.messageData[0]!==65||Q.messageData[2]!==66||Q.messageData[3]!==18||Q.messageData[4]!==64||!(Q.messageData[5]&16)||Q.messageData[6]!==21){Q.messageData[0]===67&&Q.messageData[2]===76&&Q.messageData[5]===126&&Q.messageData[6]===0&&(d="xg");continue}let R=[9,0,1,2,3,4,5,6,7,8,10,11,12,13,14,15][Q.messageData[5]&15]+t.midiPortChannelOffsets[h[u]],N=!!(Q.messageData[7]>0&&Q.messageData[5]>>4);w=s[R],w.drums=N,w.bank=N?128:0,n(w);break}}for(let u of Object.keys(o))o[u].size===0&&(m(`%cDetected change but no keys for %c${u}`,r.info,r.value),delete o[u]);return V(),o}function bs(t,A){this.midiData.usedChannelsOnTrack[t].size!==0&&(this.midiPortChannelOffset===0&&(this.midiPortChannelOffset+=16,this.midiPortChannelOffsets[A]=0),this.midiPortChannelOffsets[A]===void 0&&(this.synth.workletProcessorChannels.length<this.midiPortChannelOffset+15&&this._addNewMidiPort(),this.midiPortChannelOffsets[A]=this.midiPortChannelOffset,this.midiPortChannelOffset+=16),this.midiPorts[t]=A)}function Ls(t,A=!0){if(this.stop(),!t.tracks)throw new Error("This MIDI has no tracks!");if(this.oneTickToSeconds=60/(120*t.timeDivision),this.midiData=t,this.currentLoopCount=this.loopCount,this.midiData.embeddedSoundFont!==void 0)m("%cEmbedded soundfont detected! Using it.",r.recognized),this.synth.setEmbeddedSoundFont(this.midiData.embeddedSoundFont,this.midiData.bankOffset);else{this.synth.overrideSoundfont&&this.synth.clearSoundFont(!0,!0),yA("%cPreloading samples...",r.info);let e=Ns(this.midiData,this.synth.soundfontManager);for(let[s,n]of Object.entries(e)){let o=parseInt(s.split(":")[0]),i=parseInt(s.split(":")[1]),g=this.synth.getPreset(o,i);m(`%cPreloading used samples on %c${g.presetName}%c...`,r.info,r.recognized,r.info);for(let B of n){let h=B.split("-");g.preloadSpecific(parseInt(h[0]),parseInt(h[1]))}}V()}if(this.tracks=this.midiData.tracks,this.midiPorts=this.midiData.midiPorts,this.midiPortChannelOffset=0,this.midiPortChannelOffsets={},this.midiData.midiPorts.forEach((e,s)=>{this.assignMIDIPort(s,e)}),this.duration=this.midiData.duration,this.firstNoteTime=ce(this.midiData.firstNoteOn,this.midiData),m(`%cTotal song time: ${kt(Math.ceil(this.duration)).time}`,r.recognized),this.post(FA.songChange,[new je(this.midiData),this.songIndex,A]),this.duration<=1&&(H(`%cVery short song: (${kt(Math.round(this.duration)).time}). Disabling loop!`,r.warn),this.loop=!1),A)this.play(!0);else{let e=this._skipToFirstNoteOn?this.midiData.firstNoteOn-1:0;this.setTimeTicks(e),this.pause()}}function Us(t,A=!0){this.songs=t.reduce((e,s)=>{if(s.duration)return e.push(s),e;try{e.push(new tt(s.binary,s.altName||""))}catch(n){return this.post(FA.midiError,n.message),e}return e},[]),!(this.songs.length<1)&&(this.songIndex=0,this.songs.length>1&&(this.loop=!1),this.loadNewSequence(this.songs[this.songIndex],A))}function Ts(){if(this.songs.length===1){this.currentTime=0;return}this.songIndex++,this.songIndex%=this.songs.length,this.loadNewSequence(this.songs[this.songIndex])}function Hs(){if(this.songs.length===1){this.currentTime=0;return}this.songIndex--,this.songIndex<0&&(this.songIndex=this.songs.length-1),this.loadNewSequence(this.songs[this.songIndex])}var Ge=Be.slice(0,128);function Ys(t,A=void 0){this.oneTickToSeconds=60/(120*this.midiData.timeDivision),this.synth.resetAllControllers(),this.sendMIDIReset(),this._resetTimers();let e=this.synth.workletProcessorChannels.length,s=Array(e).fill(8192),n=[];for(let g=0;g<e;g++)n.push({program:-1,bank:0,actualBank:0});let o=g=>g===S.dataDecrement||g===S.dataIncrement||g===S.dataEntryMsb||g===S.dataDecrement||g===S.lsbForControl6DataEntry||g===S.RPNLsb||g===S.RPNMsb||g===S.NRPNLsb||g===S.NRPNMsb||g===S.bankSelect||g===S.lsbForControl0BankSelect||g===S.resetAllControllers,i=[];for(let g=0;g<e;g++)i.push(Array.from(Ge));for(;;){let g=this._findFirstEventIndex(),B=this.tracks[g][this.eventIndex[g]];if(A!==void 0){if(B.ticks>=A)break}else if(this.playedTime>=t)break;let h=Re(B.messageStatusByte),d=h.channel+(this.midiPortChannelOffsets[this.midiPorts[g]]||0);switch(h.status){case F.noteOn:case F.noteOff:case F.keySignature:break;case F.pitchBend:s[d]=B.messageData[1]<<7|B.messageData[0];break;case F.programChange:let l=n[d];l.program=B.messageData[0],l.actualBank=l.bank;break;case F.controllerChange:let Q=B.messageData[0];if(o(Q)){let p=B.messageData[1];if(Q===S.bankSelect){n[d].bank=p;break}else Q===S.resetAllControllers&&(i[d]=Array.from(Ge));this.sendMIDIMessages?this.sendMIDICC(d,Q,p):this.synth.controllerChange(d,Q,p)}else i[d]===void 0&&(i[d]=Array.from(Ge)),i[d][Q]=B.messageData[1];break;default:this._processEvent(B,g);break}this.eventIndex[g]++,g=this._findFirstEventIndex();let u=this.tracks[g][this.eventIndex[g]];if(u===void 0)return this.stop(),!1;this.playedTime+=this.oneTickToSeconds*(u.ticks-B.ticks)}if(this.sendMIDIMessages){for(let g=0;g<e;g++)if(s[g]!==void 0&&this.sendMIDIPitchWheel(g,s[g]>>7,s[g]&127),i[g]!==void 0&&i[g].forEach((B,h)=>{B!==Ge[h]&&!o(h)&&this.sendMIDICC(g,h,B)}),n[g].program>=0&&n[g].actualBank>=0){let B=n[g].actualBank;this.sendMIDICC(g,S.bankSelect,B),this.sendMIDIProgramChange(g,n[g].program)}}else for(let g=0;g<e;g++)if(s[g]!==void 0&&this.synth.pitchWheel(g,s[g]>>7,s[g]&127),i[g]!==void 0&&i[g].forEach((B,h)=>{B!==Ge[h]&&!o(h)&&this.synth.controllerChange(g,h,B)}),n[g].program>=0&&n[g].actualBank>=0){let B=n[g].actualBank;this.synth.controllerChange(g,S.bankSelect,B),this.synth.programChange(g,n[g].program)}return!0}function Js(t=!1){if(this.midiData!==void 0){if(t){this.pausedTime=void 0,this.currentTime=0;return}if(this.currentTime>=this.duration){this.pausedTime=void 0,this.currentTime=0;return}this.paused&&(this._recalculateStartTime(this.pausedTime),this.pausedTime=void 0),this.sendMIDIMessages||this.playingNotes.forEach(A=>{this.synth.noteOn(A.channel,A.midiNote,A.velocity,!1,!0)}),this.setProcessHandler()}}function vs(t){this.stop(),this.playingNotes=[],this.pausedTime=void 0,this.post(FA.timeChange,currentTime-ce(t,this.midiData));let A=this._playTo(0,t);this._recalculateStartTime(this.playedTime),A&&this.play()}function qs(t){this.absoluteStartTime=currentTime-t/this._playbackRate}function Ps(t,A){switch(t){default:break;case wA.loadNewSongList:this.loadNewSongList(A[0],A[1]);break;case wA.pause:this.pause();break;case wA.play:this.play(A);break;case wA.stop:this.stop();break;case wA.setTime:this.currentTime=A;break;case wA.changeMIDIMessageSending:this.sendMIDIMessages=A;break;case wA.setPlaybackRate:this.playbackRate=A;break;case wA.setLoop:this.loop=A;break;case wA.changeSong:A?this.nextSong():this.previousSong();break;case wA.getMIDI:this.post(FA.getMIDI,this.midiData);break;case wA.setSkipToFirstNote:this._skipToFirstNoteOn=A;break;case wA.setPreservePlaybackState:this.preservePlaybackState=A}}function Ks(t,A=void 0){this.synth.enableEventSystem&&this.synth.post({messageType:uA.sequencerSpecific,messageData:{messageType:t,messageData:A}})}function Vs(t){this.post(FA.midiEvent,t)}function Os(t,A,e){t%=16,this.sendMIDIMessages&&this.sendMIDIMessage([F.controllerChange|t,A,e])}function Zs(t,A){t%=16,this.sendMIDIMessages&&this.sendMIDIMessage([F.programChange|t,A])}function Xs(t,A,e){t%=16,this.sendMIDIMessages&&this.sendMIDIMessage([F.pitchBend|t,e,A])}function Ws(){if(this.sendMIDIMessages){this.sendMIDIMessage([F.reset]);for(let t=0;t<_e;t++)this.sendMIDIMessage([F.controllerChange|t,S.allSoundOff,0]),this.sendMIDIMessage([F.controllerChange|t,S.resetAllControllers,0])}}var rA=class{constructor(A){this.synth=A,this.ignoreEvents=!1,this.sendMIDIMessages=!1,this.loopCount=1/0,this.currentLoopCount=this.loopCount,this.eventIndex=[],this.songIndex=0,this.playedTime=0,this.pausedTime=void 0,this.absoluteStartTime=currentTime,this._playbackRate=1,this.playingNotes=[],this.loop=!0,this.midiData=void 0,this.midiPorts=[],this.midiPortChannelOffset=0,this.midiPortChannelOffsets={},this._skipToFirstNoteOn=!0,this.preservePlaybackState=!1}set playbackRate(A){let e=this.currentTime;this._playbackRate=A,this.currentTime=e}get currentTime(){return this.pausedTime!==void 0?this.pausedTime:(currentTime-this.absoluteStartTime)*this._playbackRate}set currentTime(A){if(A>this.duration||A<0){this._skipToFirstNoteOn?this.setTimeTicks(this.midiData.firstNoteOn-1):this.setTimeTicks(0);return}if(this._skipToFirstNoteOn&&A<this.firstNoteTime){this.setTimeTicks(this.midiData.firstNoteOn-1);return}this.stop(),this.playingNotes=[];let e=this.paused&&this.preservePlaybackState;this.pausedTime=void 0,this.post(FA.timeChange,currentTime-A),this._playTo(A),this._recalculateStartTime(A),e?this.pause():this.play()}get paused(){return this.pausedTime!==void 0}pause(A=!1){if(this.paused){H("Already paused");return}this.pausedTime=this.currentTime,this.stop(),this.post(FA.pause,A)}stop(){this.clearProcessHandler();for(let A=0;A<16;A++)this.synth.controllerChange(A,S.sustainPedal,0);if(this.synth.stopAllChannels(),this.sendMIDIMessages){for(let A of this.playingNotes)this.sendMIDIMessage([F.noteOff|A.channel%16,A.midiNote]);for(let A=0;A<_e;A++)this.sendMIDICC(A,S.allNotesOff,0),this.sendMIDICC(A,S.allSoundOff,0)}}_resetTimers(){this.playedTime=0,this.eventIndex=Array(this.tracks.length).fill(0)}setProcessHandler(){this.synth.processTickCallback=this._processTick.bind(this)}clearProcessHandler(){this.synth.processTickCallback=void 0}};rA.prototype.sendMIDIMessage=Vs;rA.prototype.sendMIDIReset=Ws;rA.prototype.sendMIDICC=Os;rA.prototype.sendMIDIProgramChange=Zs;rA.prototype.sendMIDIPitchWheel=Xs;rA.prototype.assignMIDIPort=bs;rA.prototype.post=Ks;rA.prototype.processMessage=Ps;rA.prototype._processEvent=Fs;rA.prototype._addNewMidiPort=Rs;rA.prototype._processTick=Gs;rA.prototype._findFirstEventIndex=Ms;rA.prototype.loadNewSequence=Ls;rA.prototype.loadNewSongList=Us;rA.prototype.nextSong=Ts;rA.prototype.previousSong=Hs;rA.prototype.play=Js;rA.prototype._playTo=Ys;rA.prototype.setTimeTicks=vs;rA.prototype._recalculateStartTime=qs;var xt=new Float32Array(30001);for(let t=0;t<xt.length;t++){let A=-15e3+t;xt[t]=Math.pow(2,A/1200)}function JA(t){return t<=-32767?0:xt[t- -15e3]}var st=-2e4,_s=16500,Nt=new Float32Array(_s-st+1);for(let t=0;t<Nt.length;t++){let A=st+t;Nt[t]=440*Math.pow(2,(A-6900)/1200)}function Me(t){return t<st||t>_s?440*Math.pow(2,(t-6900)/1200):Nt[~~t-st]}var Lt=-1660,vo=1600,bt=new Float32Array((vo-Lt)*100+1);for(let t=0;t<bt.length;t++){let A=(Lt*100+t)/100;bt[t]=Math.pow(10,-A/20)}function vA(t){return bt[Math.floor((t-Lt)*100)]}function nt(t,A,e){if(e<t)return 0;let s=(e-t)/(1/A)+.25;return Math.abs(s-~~(s+.5))*4-1}var CA=16384,ZA=new Float32Array(CA+1),ne=new Float32Array(CA+1);ZA[0]=0;ZA[ZA.length-1]=1;ne[0]=0;ne[ne.length-1]=1;for(let t=1;t<CA-1;t++){let A=-.4166666666666667*Math.log(t/(ZA.length-1))/Math.LN10;ne[t]=1-A,ZA[ZA.length-1-t]=A}function oe(t,A,e,s){switch(t&&(e=1-e),A){case hA.linear:return s?e*2-1:e;case hA.switch:return e=e>.5?1:0,s?e*2-1:e;case hA.concave:return s?(e=e*2-1,e<0?-ZA[~~(e*-CA)]:ZA[~~(e*CA)]):ZA[~~(e*CA)];case hA.convex:return s?(e=e*2-1,e<0?-ne[~~(e*-CA)]:ne[~~(e*CA)]):ne[~~(e*CA)]}}var Ut=1,Tt=new Float32Array(1e3);for(let t=0;t<Tt.length;t++)Tt[t]=oe(0,hA.convex,t/1e3,0);var UA=class t{attackDuration=0;decayDuration=0;holdDuration=0;releaseDuration=0;sustainLevel=0;delayEnd=0;attackEnd=0;holdEnd=0;decayEnd=0;releaseStartLevel=0;currentValue=0;static startRelease(A){t.recalculate(A)}static recalculate(A){let e=A.modulationEnvelope;A.isInRelease&&(e.releaseStartLevel=t.getValue(A,A.releaseStartTime,!0)),e.sustainLevel=1-A.modulatedGenerators[a.sustainModEnv]/1e3,e.attackDuration=JA(A.modulatedGenerators[a.attackModEnv]);let s=(60-A.midiNote)*A.modulatedGenerators[a.keyNumToModEnvDecay],n=JA(A.modulatedGenerators[a.decayModEnv]+s);e.decayDuration=n*(1-e.sustainLevel);let o=(60-A.midiNote)*A.modulatedGenerators[a.keyNumToModEnvHold];e.holdDuration=JA(o+A.modulatedGenerators[a.holdModEnv]);let i=JA(A.modulatedGenerators[a.releaseModEnv]);e.releaseDuration=i*e.releaseStartLevel,e.delayEnd=A.startTime+JA(A.modulatedGenerators[a.delayModEnv]),e.attackEnd=e.delayEnd+e.attackDuration,e.holdEnd=e.attackEnd+e.holdDuration,e.decayEnd=e.holdEnd+e.decayDuration}static getValue(A,e,s=!1){let n=A.modulationEnvelope;return A.isInRelease&&!s?n.releaseStartLevel===0?0:Math.max(0,(1-(e-A.releaseStartTime)/n.releaseDuration)*n.releaseStartLevel):(e<n.delayEnd?n.currentValue=0:e<n.attackEnd?n.currentValue=Tt[~~((1-(n.attackEnd-e)/n.attackDuration)*1e3)]:e<n.holdEnd?n.currentValue=Ut:e<n.decayEnd?n.currentValue=(1-(n.decayEnd-e)/n.decayDuration)*(n.sustainLevel-Ut)+Ut:n.currentValue=n.sustainLevel,n.currentValue)}};var Qe={linear:0,nearestNeighbor:1,fourthOrder:2};function zs(t,A){let e=t.sample,s=e.cursor,n=e.sampleData;if(e.isLooping){let o=e.loopEnd-e.loopStart;for(let i=0;i<A.length;i++){for(;s>=e.loopEnd;)s-=o;let g=~~s,B=g+1;for(;B>=e.loopEnd;)B-=o;let h=s-g,d=n[B],u=n[g];A[i]=u+(d-u)*h,s+=e.playbackStep*t.currentTuningCalculated}}else{if(e.loopingMode===2&&!t.isInRelease)return;for(let o=0;o<A.length;o++){let i=~~s,g=i+1;if(g>=e.end){t.finished=!0;return}let B=s-i,h=n[g],d=n[i];A[o]=d+(h-d)*B,s+=e.playbackStep*t.currentTuningCalculated}}t.sample.cursor=s}function js(t,A){let e=t.sample,s=e.cursor,n=e.loopEnd-e.loopStart,o=e.sampleData;if(t.sample.isLooping)for(let i=0;i<A.length;i++){for(;s>=e.loopEnd;)s-=n;let g=~~s+1;for(;g>=e.loopEnd;)g-=n;A[i]=o[g],s+=e.playbackStep*t.currentTuningCalculated}else{if(e.loopingMode===2&&!t.isInRelease)return;for(let i=0;i<A.length;i++){let g=~~s+1;if(g>=e.end){t.finished=!0;return}A[i]=o[g],s+=e.playbackStep*t.currentTuningCalculated}}e.cursor=s}function $s(t,A){let e=t.sample,s=e.cursor,n=e.sampleData;if(e.isLooping){let o=e.loopEnd-e.loopStart;for(let i=0;i<A.length;i++){for(;s>=e.loopEnd;)s-=o;let g=~~s,B=g+1,h=B+1,d=h+1,u=s-g;B>=e.loopEnd&&(B-=o),h>=e.loopEnd&&(h-=o),d>=e.loopEnd&&(d-=o);let l=n[g],Q=n[B],p=n[h],y=n[d],w=.5*(p-l),k=l-2.5*Q+2*p-.5*y,L=.5*(y-l)+1.5*(Q-p);A[i]=((L*u+k)*u+w)*u+Q,s+=e.playbackStep*t.currentTuningCalculated}}else{if(e.loopingMode===2&&!t.isInRelease)return;for(let o=0;o<A.length;o++){let i=~~s,g=i+1,B=g+1,h=B+1,d=s-i;if(g>=e.end||B>=e.end||h>=e.end){t.finished=!0;return}let u=n[i],l=n[g],Q=n[B],p=n[h],y=.5*(Q-u),w=u-2.5*l+2*Q-.5*p,k=.5*(p-u)+1.5*(l-Q);A[o]=((k*d+w)*d+y)*d+l,s+=e.playbackStep*t.currentTuningCalculated}}t.sample.cursor=s}var An=.001,GA=100,Ht=90,qo=15e-6,TA=class t{currentSampleTime=0;sampleRate;currentAttenuationDb=GA;state=0;releaseStartDb=GA;releaseStartTimeSamples=0;currentReleaseGain=1;attackDuration=0;decayDuration=0;releaseDuration=0;attenuation=0;attenuationTarget=0;sustainDbRelative=0;delayEnd=0;attackEnd=0;holdEnd=0;decayEnd=0;constructor(A,e){this.sampleRate=A,this.canEndOnSilentSustain=e/10>=Ht}static startRelease(A){A.volumeEnvelope.releaseStartTimeSamples=A.volumeEnvelope.currentSampleTime,A.volumeEnvelope.currentReleaseGain=vA(A.volumeEnvelope.currentAttenuationDb),t.recalculate(A)}static recalculate(A){let e=A.volumeEnvelope,s=h=>Math.max(0,Math.floor(JA(h)*e.sampleRate));e.attenuationTarget=Math.max(0,Math.min(A.modulatedGenerators[a.initialAttenuation],1440))/10,e.sustainDbRelative=Math.min(GA,A.modulatedGenerators[a.sustainVolEnv]/10);let n=Math.min(GA,e.sustainDbRelative);e.attackDuration=s(A.modulatedGenerators[a.attackVolEnv]);let o=A.modulatedGenerators[a.decayVolEnv],i=(60-A.targetKey)*A.modulatedGenerators[a.keyNumToVolEnvDecay],g=n/GA;e.decayDuration=s(o+i)*g,e.releaseDuration=s(A.modulatedGenerators[a.releaseVolEnv]),e.delayEnd=s(A.modulatedGenerators[a.delayVolEnv]),e.attackEnd=e.attackDuration+e.delayEnd;let B=(60-A.targetKey)*A.modulatedGenerators[a.keyNumToVolEnvHold];if(e.holdEnd=s(A.modulatedGenerators[a.holdVolEnv]+B)+e.attackEnd,e.decayEnd=e.decayDuration+e.holdEnd,e.state===0&&e.attackEnd===0&&(e.state=2),A.isInRelease){let h=Math.max(0,Math.min(GA,e.sustainDbRelative)),d=h/GA;switch(e.decayDuration=s(o+i)*d,e.state){case 0:e.releaseStartDb=GA;break;case 1:let l=1-(e.attackEnd-e.releaseStartTimeSamples)/e.attackDuration;e.releaseStartDb=20*Math.log10(l)*-1;break;case 2:e.releaseStartDb=0;break;case 3:e.releaseStartDb=(1-(e.decayEnd-e.releaseStartTimeSamples)/e.decayDuration)*h;break;case 4:e.releaseStartDb=h;break}e.releaseStartDb=Math.max(0,Math.min(e.releaseStartDb,GA)),e.releaseStartDb>=Ht&&(A.finished=!0),e.currentReleaseGain=vA(e.releaseStartDb);let u=(GA-e.releaseStartDb)/GA;e.releaseDuration*=u}}static apply(A,e,s,n){let o=A.volumeEnvelope,i=s/10,g=n;if(A.isInRelease){let h=o.currentSampleTime-o.releaseStartTimeSamples;if(h>=o.releaseDuration){for(let u=0;u<e.length;u++)e[u]=0;A.finished=!0;return}let d=GA-o.releaseStartDb;for(let u=0;u<e.length;u++){o.attenuation+=(o.attenuationTarget-o.attenuation)*g;let l=h/o.releaseDuration*d+o.releaseStartDb;o.currentReleaseGain=vA(l+i+o.attenuation),e[u]*=o.currentReleaseGain,o.currentSampleTime++,h++}o.currentReleaseGain<=qo&&(A.finished=!0);return}let B=0;switch(o.state){case 0:for(;o.currentSampleTime<o.delayEnd;)if(o.currentAttenuationDb=GA,e[B]=0,o.currentSampleTime++,++B>=e.length)return;o.state++;case 1:for(;o.currentSampleTime<o.attackEnd;){o.attenuation+=(o.attenuationTarget-o.attenuation)*g;let h=1-(o.attackEnd-o.currentSampleTime)/o.attackDuration;if(e[B]*=h*vA(o.attenuation+i),o.currentAttenuationDb=0,o.currentSampleTime++,++B>=e.length)return}o.state++;case 2:for(;o.currentSampleTime<o.holdEnd;)if(o.attenuation+=(o.attenuationTarget-o.attenuation)*g,e[B]*=vA(o.attenuation+i),o.currentAttenuationDb=0,o.currentSampleTime++,++B>=e.length)return;o.state++;case 3:for(;o.currentSampleTime<o.decayEnd;)if(o.attenuation+=(o.attenuationTarget-o.attenuation)*g,o.currentAttenuationDb=(1-(o.decayEnd-o.currentSampleTime)/o.decayDuration)*o.sustainDbRelative,e[B]*=vA(o.currentAttenuationDb+i+o.attenuation),o.currentSampleTime++,++B>=e.length)return;o.state++;case 4:for(o.canEndOnSilentSustain&&o.sustainDbRelative>=Ht&&(A.finished=!0);;)if(o.attenuation+=(o.attenuationTarget-o.attenuation)*g,e[B]*=vA(o.sustainDbRelative+i+o.attenuation),o.currentAttenuationDb=o.sustainDbRelative,o.currentSampleTime++,++B>=e.length)return}}};var le=class t{a0=0;a1=0;a2=0;a3=0;a4=0;x1=0;x2=0;y1=0;y2=0;reasonanceCb=0;reasonanceGain=1;cutoffCents=13501;cutoffHz=20001;static apply(A,e,s,n){if(n&&s>13499&&A.filter.reasonanceCb===0)return;let o=A.filter;(o.cutoffCents!==s||o.reasonanceCb!==A.modulatedGenerators[a.initialFilterQ])&&(o.cutoffCents=s,o.reasonanceCb=A.modulatedGenerators[a.initialFilterQ],t.calculateCoefficients(o));for(let i=0;i<e.length;i++){let g=e[i],B=o.a0*g+o.a1*o.x1+o.a2*o.x2-o.a3*o.y1-o.a4*o.y2;o.x2=o.x1,o.x1=g,o.y2=o.y1,o.y1=B,e[i]=B}}static calculateCoefficients(A){A.cutoffHz=Me(A.cutoffCents),A.cutoffHz=Math.min(A.cutoffHz,.45*sampleRate);let e=A.reasonanceCb/10;A.reasonanceGain=vA(-1*(e-3.01));let s=1/Math.sqrt(vA(-e)),n=2*Math.PI*A.cutoffHz/sampleRate,o=Math.cos(n),i=Math.sin(n)/(2*A.reasonanceGain),g=(1-o)*s,B=g/2,h=B,d=1+i,u=-2*o,l=1-i;A.a0=B/d,A.a1=g/d,A.a2=h/d,A.a3=u/d,A.a4=l/d}};var en=.05;function tn(t,A,e,s,n,o){if(A.isInRelease||currentTime>=A.releaseStartTime&&(A.isInRelease=!0,TA.startRelease(A),UA.startRelease(A),A.sample.loopingMode===3&&(A.sample.isLooping=!1)),A.modulatedGenerators[a.initialAttenuation]>2500){A.isInRelease&&(A.finished=!0);return}let i=A.targetKey,g=A.modulatedGenerators[a.fineTune]+t.customControllers[aA.channelTuning]+t.customControllers[aA.channelTransposeFine]+t.customControllers[aA.masterTuning]+t.channelOctaveTuning[A.midiNote%12]+t.keyCentTuning[A.midiNote],B=A.modulatedGenerators[a.coarseTune]+t.customControllers[aA.channelTuningSemitones],h=this.tunings[t.preset.program]?.[A.realKey];h?.midiNote>=0&&(i=h.midiNote,g+=h.centTuning),g+=(i-A.sample.rootKey)*A.modulatedGenerators[a.scaleTuning];let d=A.modulatedGenerators[a.vibLfoToPitch];if(d!==0){let C=A.startTime+JA(A.modulatedGenerators[a.delayVibLFO]),iA=Me(A.modulatedGenerators[a.freqVibLFO]),j=nt(C,iA,currentTime);g+=j*(d*t.customControllers[aA.modulationMultiplier])}let u=A.modulatedGenerators[a.initialFilterFc],l=u,Q=A.modulatedGenerators[a.modLfoToPitch],p=A.modulatedGenerators[a.modLfoToVolume],y=A.modulatedGenerators[a.modLfoToFilterFc],w=0;if(Q+y+p!==0){let C=A.startTime+JA(A.modulatedGenerators[a.delayModLFO]),iA=Me(A.modulatedGenerators[a.freqModLFO]),j=nt(C,iA,currentTime);g+=j*(Q*t.customControllers[aA.modulationMultiplier]),w=-j*p,l+=j*y}if(t.channelVibrato.depth>0){let C=nt(A.startTime+t.channelVibrato.delay,t.channelVibrato.rate,currentTime);C&&(g+=C*t.channelVibrato.depth)}let k=A.modulatedGenerators[a.modEnvToPitch],L=A.modulatedGenerators[a.modEnvToFilterFc],R=UA.getValue(A,currentTime);l+=R*L,g+=R*k;let N=~~(g+B*100);N!==A.currentTuningCents&&(A.currentTuningCents=N,A.currentTuningCalculated=Math.pow(2,N/1200));let G=new Float32Array(e.length);switch(this.interpolationType){case Qe.linear:default:zs(A,G);break;case Qe.nearestNeighbor:js(A,G);break;case Qe.fourthOrder:$s(A,G)}le.apply(A,G,l,u>13499),TA.apply(A,G,w,this.volumeEnvelopeSmoothingFactor),this.panVoice(A,G,e,s,n,o)}function Po(t,A){let e=0;return t.drumChannel&&(e+=5),A.isInRelease&&(e-=5),e+=A.velocity/25,e-=A.volumeEnvelope.state,A.isInRelease&&(e-=5),e-=A.volumeEnvelope.currentAttenuationDb/50,e}function sn(t){let A=[];for(let s of this.workletProcessorChannels)for(let n of s.voices)if(!n.finished){let o=Po(s,n);A.push({channel:s,voice:n,priority:o})}A.sort((s,n)=>s.priority-n.priority);let e=A.slice(0,t);for(let{channel:s,voice:n}of e){let o=s.voices.indexOf(n);o>-1&&s.voices.splice(o,1)}}function nn(t,A=on){t.releaseStartTime=currentTime,t.releaseStartTime-t.startTime<A&&(t.releaseStartTime=t.startTime+A)}var VA=VA!==void 0?VA:{},rn=!1,an;VA.isInitialized=new Promise(t=>an=t);var Ko=function(t){var A,e,s,n,o,i,g,B="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",h="",d=0;t=t.replace(/[^A-Za-z0-9\+\/\=]/g,"");do n=B.indexOf(t.charAt(d++)),o=B.indexOf(t.charAt(d++)),i=B.indexOf(t.charAt(d++)),g=B.indexOf(t.charAt(d++)),A=n<<2|o>>4,e=(15&o)<<4|i>>2,s=(3&i)<<6|g,h+=String.fromCharCode(A),i!==64&&(h+=String.fromCharCode(e)),g!==64&&(h+=String.fromCharCode(s));while(d<t.length);return h};(function(){var t,A,e,s,n,o,i,g,B,h,d,u,l,Q,p,y,w,k,L,R,N,G,C=C!==void 0?C:{};C.wasmBinary=Uint8Array.from(Ko("AGFzbQEAAAABpQEYYAJ/fwF/YAF/AGAAAX9gBH9/f38AYAAAYAN/f38Bf2ABfwF/YAJ/fwBgBn9/f39/fwF/YAR/f39/AX9gBX9/f39/AX9gB39/f39/f38Bf2AGf39/f39/AGAIf39/f39/f38Bf2AFf39/f38AYAd/f39/f39/AGADf39/AGABfwF9YAF9AX1gAnx/AXxgAnx/AX9gA3x8fwF8YAJ8fAF8YAF8AXwCngIPA2VudgZtZW1vcnkCAIACA2VudgV0YWJsZQFwAQQEA2Vudgl0YWJsZUJhc2UDfwADZW52DkRZTkFNSUNUT1BfUFRSA38AA2VudghTVEFDS1RPUAN/AANlbnYJU1RBQ0tfTUFYA38ABmdsb2JhbAhJbmZpbml0eQN8AANlbnYFYWJvcnQAAQNlbnYNZW5sYXJnZU1lbW9yeQACA2Vudg5nZXRUb3RhbE1lbW9yeQACA2VudhdhYm9ydE9uQ2Fubm90R3Jvd01lbW9yeQACA2Vudg5fX19hc3NlcnRfZmFpbAADA2VudgtfX19zZXRFcnJObwABA2VudgZfYWJvcnQABANlbnYWX2Vtc2NyaXB0ZW5fbWVtY3B5X2JpZwAFA3d2BgYCAQcHAQIBAQcBCAcFAAkGCQoHBgYGBgEFBgIBBgYKAAgLAAYGBgYGBgYBAAoMDAMGBQANCAoJAAwODA8OAQAGBgcEABAJEAERAAADBQwAAAMHBxIGAQAABwIFEwMOBw8HBgYQFAoVExYXFxcXFgQFBQYFAAYkB38BIwELfwEjAgt/ASMDC38BQQALfwFBAAt8ASMEC38BQQALB9MCFRBfX2dyb3dXYXNtTWVtb3J5AAgRX19fZXJybm9fbG9jYXRpb24AYwVfZnJlZQBfB19tYWxsb2MAXgdfbWVtY3B5AHkHX21lbXNldAB6BV9zYnJrAHsXX3N0Yl92b3JiaXNfanNfY2hhbm5lbHMAJhRfc3RiX3ZvcmJpc19qc19jbG9zZQAlFV9zdGJfdm9yYmlzX2pzX2RlY29kZQAoE19zdGJfdm9yYmlzX2pzX29wZW4AJBpfc3RiX3ZvcmJpc19qc19zYW1wbGVfcmF0ZQAnC2R5bkNhbGxfaWlpAHwTZXN0YWJsaXNoU3RhY2tTcGFjZQAMC2dldFRlbXBSZXQwAA8LcnVuUG9zdFNldHMAeAtzZXRUZW1wUmV0MAAOCHNldFRocmV3AA0Kc3RhY2tBbGxvYwAJDHN0YWNrUmVzdG9yZQALCXN0YWNrU2F2ZQAKCQoBACMACwR9VFl9Csb2A3YGACAAQAALGwEBfyMGIQEjBiAAaiQGIwZBD2pBcHEkBiABCwQAIwYLBgAgACQGCwoAIAAkBiABJAcLEAAjCEUEQCAAJAggASQJCwsGACAAJAsLBAAjCwsRACAABEAgABARIAAgABASCwvvBwEKfyAAQYADaiEHIAcoAgAhBQJAIAUEQCAAQfwBaiEEIAQoAgAhASABQQBKBEAgAEHwAGohCANAIAUgAkEYbGpBEGohCSAJKAIAIQEgAQRAIAgoAgAhAyAFIAJBGGxqQQ1qIQogCi0AACEGIAZB/wFxIQYgAyAGQbAQbGpBBGohAyADKAIAIQMgA0EASgRAQQAhAwNAIAEgA0ECdGohASABKAIAIQEgACABEBIgA0EBaiEDIAgoAgAhASAKLQAAIQYgBkH/AXEhBiABIAZBsBBsakEEaiEBIAEoAgAhBiAJKAIAIQEgAyAGSA0ACwsgACABEBILIAUgAkEYbGpBFGohASABKAIAIQEgACABEBIgAkEBaiECIAQoAgAhASACIAFODQMgBygCACEFDAAACwALCwsgAEHwAGohAyADKAIAIQEgAQRAIABB7ABqIQUgBSgCACECIAJBAEoEQEEAIQIDQAJAIAEgAkGwEGxqQQhqIQQgBCgCACEEIAAgBBASIAEgAkGwEGxqQRxqIQQgBCgCACEEIAAgBBASIAEgAkGwEGxqQSBqIQQgBCgCACEEIAAgBBASIAEgAkGwEGxqQaQQaiEEIAQoAgAhBCAAIAQQEiABIAJBsBBsakGoEGohASABKAIAIQEgAUUhBCABQXxqIQFBACABIAQbIQEgACABEBIgAkEBaiECIAUoAgAhASACIAFODQAgAygCACEBDAELCyADKAIAIQELIAAgARASCyAAQfgBaiEBIAEoAgAhASAAIAEQEiAHKAIAIQEgACABEBIgAEGIA2ohAyADKAIAIQEgAQRAIABBhANqIQUgBSgCACECIAJBAEoEQEEAIQIDQCABIAJBKGxqQQRqIQEgASgCACEBIAAgARASIAJBAWohAiAFKAIAIQcgAygCACEBIAIgB0gNAAsLIAAgARASCyAAQQRqIQIgAigCACEBIAFBAEoEQEEAIQEDQCAAQZQGaiABQQJ0aiEDIAMoAgAhAyAAIAMQEiAAQZQHaiABQQJ0aiEDIAMoAgAhAyAAIAMQEiAAQdgHaiABQQJ0aiEDIAMoAgAhAyAAIAMQEiABQQFqIQEgAigCACEDIAEgA0ghAyABQRBJIQUgBSADcQ0ACwtBACEBA0AgAEGgCGogAUECdGohAiACKAIAIQIgACACEBIgAEGoCGogAUECdGohAiACKAIAIQIgACACEBIgAEGwCGogAUECdGohAiACKAIAIQIgACACEBIgAEG4CGogAUECdGohAiACKAIAIQIgACACEBIgAEHACGogAUECdGohAiACKAIAIQIgACACEBIgAUEBaiEBIAFBAkcNAAsLGwAgAEHEAGohACAAKAIAIQAgAEUEQCABEF8LC3wBAX8gAEHUB2ohASABQQA2AgAgAEGAC2ohASABQQA2AgAgAEH4CmohASABQQA2AgAgAEGcCGohASABQQA2AgAgAEHVCmohASABQQA6AAAgAEH8CmohASABQQA2AgAgAEHUC2ohASABQQA2AgAgAEHYC2ohACAAQQA2AgAL8AQBB38jBiELIwZBEGokBiALQQhqIQcgC0EEaiEKIAshCCAAQSRqIQYgBiwAACEGAn8gBgR/IABBgAtqIQYgBigCACEGIAZBf0oEQCAFQQA2AgAgACABIAIQFgwCCyAAQRRqIQYgBiABNgIAIAEgAmohAiAAQRxqIQkgCSACNgIAIABB2ABqIQIgAkEANgIAIABBABAXIQkgCUUEQCAFQQA2AgBBAAwCCyAAIAcgCCAKEBghCSAJBEAgBygCACECIAgoAgAhCSAKKAIAIQggACACIAkgCBAaIQogByAKNgIAIABBBGohAiACKAIAIQggCEEASgRAQQAhAgNAIABBlAZqIAJBAnRqIQcgBygCACEHIAcgCUECdGohByAAQdQGaiACQQJ0aiEMIAwgBzYCACACQQFqIQIgAiAISA0ACwsgAwRAIAMgCDYCAAsgBSAKNgIAIABB1AZqIQAgBCAANgIAIAYoAgAhACAAIAFrDAILAkACQAJAAkACQCACKAIAIgNBIGsOBAECAgACCyACQQA2AgAgAEHUAGohAiAAEBkhAwJAIANBf0cEQANAIAIoAgAhAyADDQIgABAZIQMgA0F/Rw0ACwsLIAVBADYCACAGKAIAIQAgACABawwFCwwBCwwBCyAAQdQHaiEEIAQoAgAhBCAERQRAIAJBADYCACAAQdQAaiECIAAQGSEDAkAgA0F/RwRAA0AgAigCACEDIAMNAiAAEBkhAyADQX9HDQALCwsgBUEANgIAIAYoAgAhACAAIAFrDAMLCyAAEBMgAiADNgIAIAVBADYCAEEBBSAAQQIQFUEACwshACALJAYgAAsJACAAIAE2AlgLpgoBDH8gAEGAC2ohCiAKKAIAIQYCQAJAAkAgBkEATA0AA0AgACAEQRRsakGQC2ohAyADQQA2AgAgBEEBaiEEIAQgBkgNAAsgBkEESA0ADAELIAJBBEgEQEEAIQIFIAJBfWohBkEAIQIDQAJAIAEgAmohBCAELAAAIQMgA0HPAEYEQCAEQcATQQQQZCEEIARFBEAgAkEaaiEJIAkgBk4NAiACQRtqIQcgASAJaiELIAssAAAhAyADQf8BcSEFIAcgBWohBCAEIAZODQIgBUEbaiEEIAMEQEEAIQMDQCADIAdqIQggASAIaiEIIAgtAAAhCCAIQf8BcSEIIAQgCGohBCADQQFqIQMgAyAFRw0ACyAEIQMFIAQhAwtBACEEQQAhBQNAIAUgAmohByABIAdqIQcgBywAACEHIAQgBxApIQQgBUEBaiEFIAVBFkcNAAtBFiEFA0AgBEEAECkhBCAFQQFqIQUgBUEaRw0ACyAKKAIAIQUgBUEBaiEHIAogBzYCACADQWZqIQMgACAFQRRsakGIC2ohCCAIIAM2AgAgACAFQRRsakGMC2ohAyADIAQ2AgAgAkEWaiEEIAEgBGohBCAELQAAIQQgBEH/AXEhBCACQRdqIQMgASADaiEDIAMtAAAhAyADQf8BcSEDIANBCHQhAyADIARyIQQgAkEYaiEDIAEgA2ohAyADLQAAIQMgA0H/AXEhAyADQRB0IQMgBCADciEEIAJBGWohAyABIANqIQMgAy0AACEDIANB/wFxIQMgA0EYdCEDIAQgA3IhBCAAQYQLaiAFQRRsaiEDIAMgBDYCACALLQAAIQQgBEH/AXEhBCAJIARqIQQgASAEaiEEIAQsAAAhBCAEQX9GBH9BfwUgAkEGaiEEIAEgBGohBCAELQAAIQQgBEH/AXEhBCACQQdqIQMgASADaiEDIAMtAAAhAyADQf8BcSEDIANBCHQhAyADIARyIQQgAkEIaiEDIAEgA2ohAyADLQAAIQMgA0H/AXEhAyADQRB0IQMgBCADciEEIAJBCWohAyABIANqIQMgAy0AACEDIANB/wFxIQMgA0EYdCEDIAQgA3ILIQQgACAFQRRsakGUC2ohAyADIAQ2AgAgACAFQRRsakGQC2ohBCAEIAk2AgAgB0EERgRAIAYhAgwDCwsLIAJBAWohAiACIAZIDQEgBiECCwsgCigCACEGIAZBAEoNAQsMAQsgAiEEIAYhAkEAIQYDQAJAIABBhAtqIAZBFGxqIQkgACAGQRRsakGQC2ohAyADKAIAIQsgACAGQRRsakGIC2ohDSANKAIAIQggBCALayEDIAggA0ohBSADIAggBRshByAAIAZBFGxqQYwLaiEOIA4oAgAhAyAHQQBKBEBBACEFA0AgBSALaiEMIAEgDGohDCAMLAAAIQwgAyAMECkhAyAFQQFqIQUgBSAHSA0ACwsgCCAHayEFIA0gBTYCACAOIAM2AgAgBQRAIAZBAWohBgUgCSgCACEFIAMgBUYNASACQX9qIQIgCiACNgIAIAkgAEGEC2ogAkEUbGoiAikCADcCACAJIAIpAgg3AgggCSACKAIQNgIQIAooAgAhAgsgBiACSA0BIAQhAgwCCwsgByALaiECIApBfzYCACAAQdQHaiEBIAFBADYCACAAQdgKaiEBIAFBfzYCACAAIAZBFGxqQZQLaiEBIAEoAgAhASAAQZgIaiEEIAQgATYCACABQX9HIQEgAEGcCGohACAAIAE2AgALIAILhgUBCH8gAEHYCmohAiACKAIAIQMgAEEUaiECIAIoAgAhAgJ/AkAgA0F/RgR/QQEhAwwBBSAAQdAIaiEEIAQoAgAhBQJAIAMgBUgEQANAIABB1AhqIANqIQQgBCwAACEGIAZB/wFxIQQgAiAEaiECIAZBf0cNAiADQQFqIQMgAyAFSA0ACwsLIAFBAEchBiAFQX9qIQQgAyAESCEEIAYgBHEEQCAAQRUQFUEADAMLIABBHGohBCAEKAIAIQQgAiAESwR/IABBARAVQQAFIAMgBUYhBCADQX9GIQMgBCADcgR/QQAhAwwDBUEBCwsLDAELIAAoAhwhCCAAQdQHaiEGIAFBAEchBCACIQECQAJAAkACQAJAAkACQAJAAkADQCABQRpqIQUgBSAITw0BIAFBwBNBBBBkIQIgAg0CIAFBBGohAiACLAAAIQIgAg0DIAMEQCAGKAIAIQIgAgRAIAFBBWohAiACLAAAIQIgAkEBcSECIAINBgsFIAFBBWohAiACLAAAIQIgAkEBcSECIAJFDQYLIAUsAAAhAiACQf8BcSEHIAFBG2ohCSAJIAdqIQEgASAISw0GAkAgAgRAQQAhAgNAIAkgAmohAyADLAAAIQUgBUH/AXEhAyABIANqIQEgBUF/Rw0CIAJBAWohAiACIAdJDQALBUEAIQILCyAHQX9qIQMgAiADSCEDIAQgA3ENByABIAhLDQhBASACIAdHDQoaQQAhAwwAAAsACyAAQQEQFUEADAgLIABBFRAVQQAMBwsgAEEVEBVBAAwGCyAAQRUQFUEADAULIABBFRAVQQAMBAsgAEEBEBVBAAwDCyAAQRUQFUEADAILIABBARAVC0EACyEAIAALewEFfyMGIQUjBkEQaiQGIAVBCGohBiAFQQRqIQQgBSEHIAAgAiAEIAMgBSAGECohBCAEBH8gBigCACEEIABBkANqIARBBmxqIQggAigCACEGIAMoAgAhBCAHKAIAIQMgACABIAggBiAEIAMgAhArBUEACyEAIAUkBiAACxsBAX8gABAuIQEgAEHoCmohACAAQQA2AgAgAQv5AwIMfwN9IABB1AdqIQkgCSgCACEGIAYEfyAAIAYQSCELIABBBGohBCAEKAIAIQogCkEASgRAIAZBAEohDCAGQX9qIQ0DQCAMBEAgAEGUBmogBUECdGooAgAhDiAAQZQHaiAFQQJ0aigCACEPQQAhBANAIAQgAmohByAOIAdBAnRqIQcgByoCACEQIAsgBEECdGohCCAIKgIAIREgECARlCEQIA8gBEECdGohCCAIKgIAIREgDSAEayEIIAsgCEECdGohCCAIKgIAIRIgESASlCERIBAgEZIhECAHIBA4AgAgBEEBaiEEIAQgBkcNAAsLIAVBAWohBSAFIApIDQALCyAJKAIABSAAQQRqIQQgBCgCACEKQQALIQsgASADayEHIAkgBzYCACAKQQBKBEAgASADSiEJQQAhBQNAIAkEQCAAQZQGaiAFQQJ0aigCACEMIABBlAdqIAVBAnRqKAIAIQ1BACEGIAMhBANAIAwgBEECdGohBCAEKAIAIQQgDSAGQQJ0aiEOIA4gBDYCACAGQQFqIQYgBiADaiEEIAYgB0cNAAsLIAVBAWohBSAFIApIDQALCyALRSEEIAEgA0ghBSABIAMgBRshASABIAJrIQEgAEH8CmohACAEBEBBACEBBSAAKAIAIQIgAiABaiECIAAgAjYCAAsgAQvRAQECfyMGIQYjBkHgC2okBiAGIQUgBSAEEBwgBUEUaiEEIAQgADYCACAAIAFqIQEgBUEcaiEEIAQgATYCACAFQSRqIQEgAUEBOgAAIAUQHSEBIAEEQCAFEB4hASABBEAgASAFQdwLEHkaIAFBFGohBCAEKAIAIQQgBCAAayEAIAIgADYCACADQQA2AgAFIAUQEUEAIQELBSAFQdQAaiEAIAAoAgAhACAARSEAIAVB2ABqIQEgASgCACEBIAMgAUEBIAAbNgIAQQAhAQsgBiQGIAELrQECAX8BfiAAQQBB3AsQehogAQRAIABBxABqIQIgASkCACEDIAIgAzcCACAAQcgAaiECIANCIIghAyADpyEBIAFBA2ohASABQXxxIQEgAiABNgIAIABB0ABqIQIgAiABNgIACyAAQdQAaiEBIAFBADYCACAAQdgAaiEBIAFBADYCACAAQRRqIQEgAUEANgIAIABB8ABqIQEgAUEANgIAIABBgAtqIQAgAEF/NgIAC9BNAiN/A30jBiEZIwZBgAhqJAYgGUHwB2ohAiAZIgxB7AdqIR0gDEHoB2ohHiAAEDEhAQJ/IAEEQCAAQdMKaiEBIAEtAAAhASABQf8BcSEBIAFBAnEhAyADRQRAIABBIhAVQQAMAgsgAUEEcSEDIAMEQCAAQSIQFUEADAILIAFBAXEhASABBEAgAEEiEBVBAAwCCyAAQdAIaiEBIAEoAgAhASABQQFHBEAgAEEiEBVBAAwCCyAAQdQIaiEBAkACQCABLAAAQR5rIgEEQCABQSJGBEAMAgUMAwsACyAAEDAhASABQf8BcUEBRwRAIABBIhAVQQAMBAsgACACQQYQIiEBIAFFBEAgAEEKEBVBAAwECyACEEkhASABRQRAIABBIhAVQQAMBAsgABAjIQEgAQRAIABBIhAVQQAMBAsgABAwIQEgAUH/AXEhAyAAQQRqIRMgEyADNgIAIAFB/wFxRQRAIABBIhAVQQAMBAsgAUH/AXFBEEoEQCAAQQUQFUEADAQLIAAQIyEBIAAgATYCACABRQRAIABBIhAVQQAMBAsgABAjGiAAECMaIAAQIxogABAwIQMgA0H/AXEhBCAEQQ9xIQEgBEEEdiEEQQEgAXQhBSAAQeQAaiEaIBogBTYCAEEBIAR0IQUgAEHoAGohFCAUIAU2AgAgAUF6aiEFIAVBB0sEQCAAQRQQFUEADAQLIANBoH9qQRh0QRh1IQMgA0EASARAIABBFBAVQQAMBAsgASAESwRAIABBFBAVQQAMBAsgABAwIQEgAUEBcSEBIAFFBEAgAEEiEBVBAAwECyAAEDEhAUEAIAFFDQMaIAAQSiEBQQAgAUUNAxogAEHUCmohAwNAIAAQLyEBIAAgARBLIANBADoAACABDQALIAAQSiEBQQAgAUUNAxogAEEkaiEBIAEsAAAhAQJAIAEEQCAAQQEQFyEBIAENASAAQdgAaiEAIAAoAgAhAUEAIAFBFUcNBRogAEEUNgIAQQAMBQsLEEwgABAZIQEgAUEFRwRAIABBFBAVQQAMBAtBACEBA0AgABAZIQMgA0H/AXEhAyACIAFqIQQgBCADOgAAIAFBAWohASABQQZHDQALIAIQSSEBIAFFBEAgAEEUEBVBAAwECyAAQQgQLCEBIAFBAWohASAAQewAaiENIA0gATYCACABQbAQbCEBIAAgARBNIQEgAEHwAGohFSAVIAE2AgAgAUUEQCAAQQMQFUEADAQLIA0oAgAhAiACQbAQbCECIAFBACACEHoaIA0oAgAhAQJAIAFBAEoEQCAAQRBqIRYDQAJAIBUoAgAhCiAKIAZBsBBsaiEJIABBCBAsIQEgAUH/AXEhASABQcIARwRAQT8hAQwBCyAAQQgQLCEBIAFB/wFxIQEgAUHDAEcEQEHBACEBDAELIABBCBAsIQEgAUH/AXEhASABQdYARwRAQcMAIQEMAQsgAEEIECwhASAAQQgQLCECIAJBCHQhAiABQf8BcSEBIAIgAXIhASAJIAE2AgAgAEEIECwhASAAQQgQLCECIABBCBAsIQMgA0EQdCEDIAJBCHQhAiACQYD+A3EhAiABQf8BcSEBIAIgAXIhASABIANyIQEgCiAGQbAQbGpBBGohDiAOIAE2AgAgAEEBECwhASABQQBHIgMEf0EABSAAQQEQLAshASABQf8BcSECIAogBkGwEGxqQRdqIREgESACOgAAIAkoAgAhBCAOKAIAIQEgBEUEQCABBH9ByAAhAQwCBUEACyEBCyACQf8BcQRAIAAgARA8IQIFIAAgARBNIQIgCiAGQbAQbGpBCGohASABIAI2AgALIAJFBEBBzQAhAQwBCwJAIAMEQCAAQQUQLCEDIA4oAgAhASABQQBMBEBBACEDDAILQQAhBANAIANBAWohBSABIARrIQEgARAtIQEgACABECwhASABIARqIQMgDigCACEPIAMgD0oEQEHTACEBDAQLIAIgBGohBCAFQf8BcSEPIAQgDyABEHoaIA4oAgAhASABIANKBH8gAyEEIAUhAwwBBUEACyEDCwUgDigCACEBIAFBAEwEQEEAIQMMAgtBACEDQQAhAQNAIBEsAAAhBAJAAkAgBEUNACAAQQEQLCEEIAQNACACIANqIQQgBEF/OgAADAELIABBBRAsIQQgBEEBaiEEIARB/wFxIQUgAiADaiEPIA8gBToAACABQQFqIQEgBEH/AXEhBCAEQSBGBEBB2gAhAQwFCwsgA0EBaiEDIA4oAgAhBCADIARIDQALIAEhAyAEIQELCyARLAAAIQQCfwJAIAQEfyABQQJ1IQQgAyAETgRAIBYoAgAhAyABIANKBEAgFiABNgIACyAAIAEQTSEBIAogBkGwEGxqQQhqIQMgAyABNgIAIAFFBEBB4QAhAQwFCyAOKAIAIQQgASACIAQQeRogDigCACEBIAAgAiABEE4gAygCACECIBFBADoAACAOKAIAIQQMAgsgCiAGQbAQbGpBrBBqIQQgBCADNgIAIAMEfyAAIAMQTSEBIAogBkGwEGxqQQhqIQMgAyABNgIAIAFFBEBB6wAhAQwFCyAEKAIAIQEgAUECdCEBIAAgARA8IQEgCiAGQbAQbGpBIGohAyADIAE2AgAgAUUEQEHtACEBDAULIAQoAgAhASABQQJ0IQEgACABEDwhBSAFRQRAQfAAIQEMBQsgDigCACEBIAQoAgAhDyAFIQcgBQVBACEPQQAhB0EACyEDIA9BA3QhBSAFIAFqIQUgFigCACEPIAUgD00EQCABIQUgBAwDCyAWIAU2AgAgASEFIAQFIAEhBAwBCwwBCyAEQQBKBEBBACEBQQAhAwNAIAIgA2ohBSAFLAAAIQUgBUH/AXFBCkohDyAFQX9HIQUgDyAFcSEFIAVBAXEhBSABIAVqIQEgA0EBaiEDIAMgBEgNAAsFQQAhAQsgCiAGQbAQbGpBrBBqIQ8gDyABNgIAIARBAnQhASAAIAEQTSEBIAogBkGwEGxqQSBqIQMgAyABNgIAIAFFBEBB6QAhAQwCC0EAIQMgDigCACEFQQAhByAPCyEBIAkgAiAFIAMQTyEEIARFBEBB9AAhAQwBCyABKAIAIQQgBARAIARBAnQhBCAEQQRqIQQgACAEEE0hBCAKIAZBsBBsakGkEGohBSAFIAQ2AgAgBEUEQEH5ACEBDAILIAEoAgAhBCAEQQJ0IQQgBEEEaiEEIAAgBBBNIQQgCiAGQbAQbGpBqBBqIQUgBSAENgIAIARFBEBB+wAhAQwCCyAEQQRqIQ8gBSAPNgIAIARBfzYCACAJIAIgAxBQCyARLAAAIQMgAwRAIAEoAgAhAyADQQJ0IQMgACAHIAMQTiAKIAZBsBBsakEgaiEDIAMoAgAhBCABKAIAIQUgBUECdCEFIAAgBCAFEE4gDigCACEEIAAgAiAEEE4gA0EANgIACyAJEFEgAEEEECwhAiACQf8BcSEDIAogBkGwEGxqQRVqIQUgBSADOgAAIAJB/wFxIQIgAkECSwRAQYABIQEMAQsgAgRAIABBIBAsIQIgAhBSISUgCiAGQbAQbGpBDGohDyAPICU4AgAgAEEgECwhAiACEFIhJSAKIAZBsBBsakEQaiEbIBsgJTgCACAAQQQQLCECIAJBAWohAiACQf8BcSECIAogBkGwEGxqQRRqIQQgBCACOgAAIABBARAsIQIgAkH/AXEhAiAKIAZBsBBsakEWaiEcIBwgAjoAACAFLAAAIQsgDigCACECIAkoAgAhAyALQQFGBH8gAiADEFMFIAMgAmwLIQIgCiAGQbAQbGpBGGohCyALIAI2AgAgAkUEQEGGASEBDAILIAJBAXQhAiAAIAIQPCEQIBBFBEBBiAEhAQwCCyALKAIAIQIgAkEASgRAQQAhAgNAIAQtAAAhAyADQf8BcSEDIAAgAxAsIQMgA0F/RgRAQYwBIQEMBAsgA0H//wNxIQMgECACQQF0aiEXIBcgAzsBACACQQFqIQIgCygCACEDIAIgA0gNAAsgAyECCyAFLAAAIQMCQCADQQFGBEAgESwAACEDIANBAEciFwRAIAEoAgAhAyADRQRAIAIhAQwDCwUgDigCACEDCyAKIAZBsBBsaiAAIANBAnQgCSgCAGwQTSIfNgIcIB9FBEBBkwEhAQwECyABIA4gFxshASABKAIAIQ4gDkEASgRAIAogBkGwEGxqQagQaiEgIAkoAgAiCkEASiEJQwAAAAAhJUEAIQEDQCAXBH8gICgCACECIAIgAUECdGohAiACKAIABSABCyEEIAkEQCALKAIAIRggHCwAAEUhISAKIAFsISJBACEDQQEhAgNAIAQgAm4hEiASIBhwIRIgECASQQF0aiESIBIvAQAhEiASQf//A3GyISQgGyoCACEmICYgJJQhJCAPKgIAISYgJCAmkiEkICUgJJIhJCAiIANqIRIgHyASQQJ0aiESIBIgJDgCACAlICQgIRshJSADQQFqIQMgAyAKSCISBEBBfyAYbiEjIAIgI0sEQEGeASEBDAkLIBggAmwhAgsgEg0ACwsgAUEBaiEBIAEgDkgNAAsLIAVBAjoAACALKAIAIQEFIAJBAnQhASAAIAEQTSECIAogBkGwEGxqQRxqIQEgASACNgIAIAsoAgAhCCACRQRAQaUBIQEMBAsgCEEATARAIAghAQwCCyAcLAAARSEDQwAAAAAhJUEAIQEDQCAQIAFBAXRqIQQgBC8BACEEIARB//8DcbIhJCAbKgIAISYgJiAklCEkIA8qAgAhJiAkICaSISQgJSAkkiEkIAIgAUECdGohBCAEICQ4AgAgJSAkIAMbISUgAUEBaiEBIAEgCEgNAAsgCCEBCwsgAUEBdCEBIAAgECABEE4LIAZBAWohBiANKAIAIQEgBiABSA0BDAMLCwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAUE/aw5nABYBFgIWFhYWAxYWFhYEFhYWFhYFFhYWFhYWBhYWFhYWFgcWFhYWFhYWCBYJFgoWFgsWFhYMFhYWFg0WDhYWFhYPFhYWFhYQFhEWFhYSFhYWFhYWExYWFhYWFhYWFhYUFhYWFhYWFRYLIABBFBAVQQAMGwsgAEEUEBVBAAwaCyAAQRQQFUEADBkLIABBFBAVQQAMGAsgAEEDEBVBAAwXCyAAQRQQFUEADBYLIABBFBAVQQAMFQsgAEEDEBVBAAwUCyAAQQMQFUEADBMLIABBAxAVQQAMEgsgAEEDEBVBAAwRCyAAQQMQFUEADBALIBEsAAAhASABBEAgACAHQQAQTgsgAEEUEBVBAAwPCyAAQQMQFUEADA4LIABBAxAVQQAMDQsgAEEUEBVBAAwMCyAAQRQQFUEADAsLIABBAxAVQQAMCgsgCygCACEBIAFBAXQhASAAIBAgARBOIABBFBAVQQAMCQsgCygCACEBIAFBAXQhASAAIBAgARBOIABBAxAVQQAMCAsgGEEBdCEBIAAgECABEE4gAEEUEBVBAAwHCyAIQQF0IQEgACAQIAEQTiAAQQMQFUEADAYLCwsgAEEGECwhASABQQFqIQEgAUH/AXEhAgJAIAIEQEEAIQEDQAJAIABBEBAsIQMgA0UhAyADRQ0AIAFBAWohASABIAJJDQEMAwsLIABBFBAVQQAMBQsLIABBBhAsIQEgAUEBaiEBIABB9ABqIQ8gDyABNgIAIAFBvAxsIQEgACABEE0hASAAQfgBaiEOIA4gATYCACABRQRAIABBAxAVQQAMBAsgDygCACEBAn8gAUEASgR/QQAhBEEAIQcCQAJAAkACQAJAAkADQCAAQRAQLCEBIAFB//8DcSECIABB+ABqIAdBAXRqIQMgAyACOwEAIAFB//8DcSEBIAFBAUsNASABRQ0CIA4oAgAhBSAAQQUQLCEBIAFB/wFxIQIgBSAHQbwMbGohCiAKIAI6AAAgAUH/AXEhASABBEBBfyEBQQAhAgNAIABBBBAsIQMgA0H/AXEhCCAFIAdBvAxsakEBaiACaiEGIAYgCDoAACADQf8BcSEDIAMgAUohCCADIAEgCBshAyACQQFqIQIgCi0AACEBIAFB/wFxIQEgAiABSQRAIAMhAQwBCwtBACEBA0AgAEEDECwhAiACQQFqIQIgAkH/AXEhAiAFIAdBvAxsakEhaiABaiEIIAggAjoAACAAQQIQLCECIAJB/wFxIQIgBSAHQbwMbGpBMWogAWohCCAIIAI6AAACQAJAIAJB/wFxRQ0AIABBCBAsIQIgAkH/AXEhBiAFIAdBvAxsakHBAGogAWohECAQIAY6AAAgAkH/AXEhAiANKAIAIQYgAiAGTg0HIAgsAAAhAiACQR9HDQAMAQtBACECA0AgAEEIECwhBiAGQf//A2ohBiAGQf//A3EhECAFIAdBvAxsakHSAGogAUEEdGogAkEBdGohCSAJIBA7AQAgBkEQdCEGIAZBEHUhBiANKAIAIRAgBiAQSCEGIAZFDQggAkEBaiECIAgtAAAhBiAGQf8BcSEGQQEgBnQhBiACIAZIDQALCyABQQFqIQIgASADSARAIAIhAQwBCwsLIABBAhAsIQEgAUEBaiEBIAFB/wFxIQEgBSAHQbwMbGpBtAxqIQIgAiABOgAAIABBBBAsIQEgAUH/AXEhAiAFIAdBvAxsakG1DGohECAQIAI6AAAgBSAHQbwMbGpB0gJqIQkgCUEAOwEAIAFB/wFxIQFBASABdCEBIAFB//8DcSEBIAUgB0G8DGxqQdQCaiECIAIgATsBACAFIAdBvAxsakG4DGohBiAGQQI2AgAgCiwAACEBAkACQCABBEBBACEIQQIhAwNAIAUgB0G8DGxqQQFqIAhqIQIgAi0AACECIAJB/wFxIQIgBSAHQbwMbGpBIWogAmohAiACLAAAIQsgCwRAQQAhAQNAIBAtAAAhAyADQf8BcSEDIAAgAxAsIQMgA0H//wNxIQsgBigCACEDIAUgB0G8DGxqQdICaiADQQF0aiERIBEgCzsBACADQQFqIQMgBiADNgIAIAFBAWohASACLQAAIQsgC0H/AXEhCyABIAtJDQALIAosAAAhAgUgASECCyADIQEgCEEBaiEIIAJB/wFxIQMgCCADSQRAIAEhAyACIQEMAQsLIAFBAEoNAQVBAiEBDAELDAELQQAhAgNAIAUgB0G8DGxqQdICaiACQQF0aiEDIAMuAQAhAyAMIAJBAnRqIQggCCADOwEAIAJB//8DcSEDIAwgAkECdGpBAmohCCAIIAM7AQAgAkEBaiECIAIgAUgNAAsLIAwgAUEEQQEQZiAGKAIAIQECQCABQQBKBEBBACEBA0AgDCABQQJ0akECaiECIAIuAQAhAiACQf8BcSECIAUgB0G8DGxqQcYGaiABaiEDIAMgAjoAACABQQFqIQEgBigCACECIAEgAkgNAAsgAkECTARAIAIhAQwCC0ECIQEDQCAJIAEgHSAeEFUgHSgCACECIAJB/wFxIQIgBSAHQbwMbGpBwAhqIAFBAXRqIQMgAyACOgAAIB4oAgAhAiACQf8BcSECIAUgB0G8DGxqIAFBAXRqQcEIaiEDIAMgAjoAACABQQFqIQEgBigCACECIAEgAkgNAAsgAiEBCwsgASAESiECIAEgBCACGyEEIAdBAWohByAPKAIAIQEgByABSA0ADAUACwALIABBFBAVQQAMCgsgDigCACEBIABBCBAsIQIgAkH/AXEhAiABIAdBvAxsaiEDIAMgAjoAACAAQRAQLCECIAJB//8DcSECIAEgB0G8DGxqQQJqIQMgAyACOwEAIABBEBAsIQIgAkH//wNxIQIgASAHQbwMbGpBBGohAyADIAI7AQAgAEEGECwhAiACQf8BcSECIAEgB0G8DGxqQQZqIQMgAyACOgAAIABBCBAsIQIgAkH/AXEhAiABIAdBvAxsakEHaiEDIAMgAjoAACAAQQQQLCECIAJBAWohAiACQf8BcSEEIAEgB0G8DGxqQQhqIQMgAyAEOgAAIAJB/wFxIQIgAgRAIAEgB0G8DGxqQQlqIQJBACEBA0AgAEEIECwhByAHQf8BcSEHIAIgAWohBCAEIAc6AAAgAUEBaiEBIAMtAAAhByAHQf8BcSEHIAEgB0kNAAsLIABBBBAVQQAMCQsgAEEUEBUMAgsgAEEUEBUMAQsgBEEBdAwCC0EADAUFQQALCyEQIABBBhAsIQEgAUEBaiEBIABB/AFqIQUgBSABNgIAIAFBGGwhASAAIAEQTSEBIABBgANqIQ4gDiABNgIAIAFFBEAgAEEDEBVBAAwECyAFKAIAIQIgAkEYbCECIAFBACACEHoaIAUoAgAhAQJAIAFBAEoEQEEAIQcCQAJAAkACQAJAAkACQAJAA0AgDigCACEEIABBEBAsIQEgAUH//wNxIQIgAEGAAmogB0EBdGohAyADIAI7AQAgAUH//wNxIQEgAUECSw0BIABBGBAsIQIgBCAHQRhsaiEBIAEgAjYCACAAQRgQLCECIAQgB0EYbGpBBGohAyADIAI2AgAgASgCACEBIAIgAUkNAiAAQRgQLCEBIAFBAWohASAEIAdBGGxqQQhqIQIgAiABNgIAIABBBhAsIQEgAUEBaiEBIAFB/wFxIQEgBCAHQRhsakEMaiEIIAggAToAACAAQQgQLCEBIAFB/wFxIQIgBCAHQRhsakENaiEGIAYgAjoAACABQf8BcSEBIA0oAgAhAiABIAJODQMgCCwAACEBIAEEf0EAIQEDQCAAQQMQLCEDIABBARAsIQIgAgR/IABBBRAsBUEACyECIAJBA3QhAiACIANqIQIgAkH/AXEhAiAMIAFqIQMgAyACOgAAIAFBAWohASAILQAAIQIgAkH/AXEhAyABIANJDQALIAJB/wFxBUEACyEBIAFBBHQhASAAIAEQTSEBIAQgB0EYbGpBFGohCiAKIAE2AgAgAUUNBCAILAAAIQIgAgRAQQAhAgNAIAwgAmotAAAhC0EAIQMDQEEBIAN0IQkgCSALcSEJIAkEQCAAQQgQLCEJIAlB//8DcSERIAooAgAhASABIAJBBHRqIANBAXRqIRYgFiAROwEAIAlBEHQhCSAJQRB1IQkgDSgCACERIBEgCUwNCQUgASACQQR0aiADQQF0aiEJIAlBfzsBAAsgA0EBaiEDIANBCEkNAAsgAkEBaiECIAgtAAAhAyADQf8BcSEDIAIgA0kNAAsLIBUoAgAhASAGLQAAIQIgAkH/AXEhAiABIAJBsBBsakEEaiEBIAEoAgAhASABQQJ0IQEgACABEE0hASAEIAdBGGxqQRBqIQogCiABNgIAIAFFDQYgFSgCACECIAYtAAAhAyADQf8BcSEDIAIgA0GwEGxqQQRqIQIgAigCACECIAJBAnQhAiABQQAgAhB6GiAVKAIAIQIgBi0AACEBIAFB/wFxIQMgAiADQbAQbGpBBGohASABKAIAIQEgAUEASgRAQQAhAQNAIAIgA0GwEGxqIQIgAigCACEDIAAgAxBNIQIgCigCACEEIAQgAUECdGohBCAEIAI2AgAgCigCACECIAIgAUECdGohAiACKAIAIQQgBEUNCQJAIANBAEoEQCAILQAAIQkgA0F/aiECIAlB/wFxIQkgASAJcCEJIAlB/wFxIQkgBCACaiEEIAQgCToAACADQQFGDQEgASEDA0AgCC0AACEJIAlB/wFxIQQgAyAEbSEDIAooAgAgAUECdGohBCAEKAIAIQsgAkF/aiEEIAlB/wFxIQkgAyAJbyEJIAlB/wFxIQkgCyAEaiELIAsgCToAACACQQFKBEAgBCECDAELCwsLIAFBAWohASAVKAIAIQIgBi0AACEDIANB/wFxIQMgAiADQbAQbGpBBGohBCAEKAIAIQQgASAESA0ACwsgB0EBaiEHIAUoAgAhASAHIAFIDQAMCgALAAsgAEEUEBUMBgsgAEEUEBUMBQsgAEEUEBUMBAsgAEEDEBUMAwsgAEEUEBUMAgsgAEEDEBUMAQsgAEEDEBULQQAMBQsLIABBBhAsIQEgAUEBaiEBIABBhANqIQcgByABNgIAIAFBKGwhASAAIAEQTSEBIABBiANqIQogCiABNgIAIAFFBEAgAEEDEBVBAAwECyAHKAIAIQIgAkEobCECIAFBACACEHoaIAcoAgAhAQJAIAFBAEoEQEEAIQECQAJAAkACQAJAAkACQAJAAkACQANAIAooAgAhBCAEIAFBKGxqIQwgAEEQECwhAiACDQEgEygCACECIAJBA2whAiAAIAIQTSECIAQgAUEobGpBBGohCCAIIAI2AgAgAkUNAiAAQQEQLCECIAIEfyAAQQQQLCECIAJBAWohAiACQf8BcQVBAQshAiAEIAFBKGxqQQhqIQYgBiACOgAAIABBARAsIQICQCACBEAgAEEIECwhAiACQQFqIQIgAkH//wNxIQMgDCADOwEAIAJB//8DcSECIAJFDQFBACECIBMoAgAhAwNAIANBf2ohAyADEC0hAyAAIAMQLCEDIANB/wFxIQMgCCgCACENIA0gAkEDbGohDSANIAM6AAAgEygCACEDIANBf2ohAyADEC0hAyAAIAMQLCENIA1B/wFxIQkgCCgCACEDIAMgAkEDbGpBAWohCyALIAk6AAAgAyACQQNsaiEDIAMsAAAhCyALQf8BcSERIBMoAgAhAyADIBFMDQYgDUH/AXEhDSADIA1MDQcgCyAJQRh0QRh1RiENIA0NCCACQQFqIQIgDC8BACENIA1B//8DcSENIAIgDUkNAAsFIAxBADsBAAsLIABBAhAsIQIgAg0GIAYsAAAhAyATKAIAIgxBAEohAgJAAkAgA0H/AXFBAUoEQCACRQ0BQQAhAgNAIABBBBAsIQMgA0H/AXEhAyAIKAIAIQwgDCACQQNsakECaiEMIAwgAzoAACAGLQAAIQwgDEH/AXEgA0ohAyADRQ0LIAJBAWohAiATKAIAIQMgAiADSA0ACwwBBSACBEAgCCgCACEIQQAhAgNAIAggAkEDbGpBAmohDSANQQA6AAAgAkEBaiECIAIgDEgNAAsLIAMNAQsMAQtBACECA0AgAEEIECwaIABBCBAsIQMgA0H/AXEhCCAEIAFBKGxqQQlqIAJqIQMgAyAIOgAAIABBCBAsIQggCEH/AXEhDCAEIAFBKGxqQRhqIAJqIQ0gDSAMOgAAIAMtAAAhAyADQf8BcSEDIA8oAgAhDCAMIANMDQogCEH/AXEhAyAFKAIAIQggAyAISCEDIANFDQsgAkEBaiECIAYtAAAhAyADQf8BcSEDIAIgA0kNAAsLIAFBAWohASAHKAIAIQIgASACSA0ADAwACwALIABBFBAVQQAMDgsgAEEDEBVBAAwNCyAAQRQQFUEADAwLIABBFBAVQQAMCwsgAEEUEBVBAAwKCyAAQRQQFUEADAkLIABBFBAVQQAMCAsgAEEUEBVBAAwHCyAAQRQQFUEADAYACwALCyAAQQYQLCEBIAFBAWohASAAQYwDaiECIAIgATYCAAJAIAFBAEoEQEEAIQECQAJAAkACQANAIABBARAsIQMgA0H/AXEhAyAAQZADaiABQQZsaiEEIAQgAzoAACAAQRAQLCEDIANB//8DcSEEIAAgAUEGbGpBkgNqIQMgAyAEOwEAIABBEBAsIQQgBEH//wNxIQggACABQQZsakGUA2ohBCAEIAg7AQAgAEEIECwhCCAIQf8BcSEGIAAgAUEGbGpBkQNqIQwgDCAGOgAAIAMuAQAhAyADDQEgBC4BACEDIAMNAiAIQf8BcSEDIAcoAgAhBCADIARIIQMgA0UNAyABQQFqIQEgAigCACEDIAEgA0gNAAwGAAsACyAAQRQQFUEADAgLIABBFBAVQQAMBwsgAEEUEBVBAAwGAAsACwsgABAhIABB1AdqIQEgAUEANgIAIBMoAgAhAQJAIAFBAEoEQEEAIQEDQAJAIBQoAgAhAiACQQJ0IQIgACACEE0hAyAAQZQGaiABQQJ0aiECIAIgAzYCACAUKAIAIQMgA0EBdCEDIANB/v///wdxIQMgACADEE0hByAAQZQHaiABQQJ0aiEDIAMgBzYCACAAIBAQTSEHIABB2AdqIAFBAnRqIQQgBCAHNgIAIAIoAgAhAiACRQ0AIAMoAgAhAyADRSEDIAdFIQcgByADcg0AIBQoAgAhAyADQQJ0IQMgAkEAIAMQehogAUEBaiEBIBMoAgAhAiABIAJIDQEMAwsLIABBAxAVQQAMBQsLIBooAgAhASAAQQAgARBWIQFBACABRQ0DGiAUKAIAIQEgAEEBIAEQViEBQQAgAUUNAxogGigCACEBIABB3ABqIQIgAiABNgIAIBQoAgAhASAAQeAAaiECIAIgATYCACABQQF0IQIgAkH+////B3EhBCAFKAIAIQggCEEASgR/IA4oAgAhByABQQJtIQNBACECQQAhAQNAIAcgAUEYbGohBSAFKAIAIQUgBSADSSEGIAUgAyAGGyEGIAcgAUEYbGpBBGohBSAFKAIAIQUgBSADSSEMIAUgAyAMGyEFIAUgBmshBSAHIAFBGGxqQQhqIQYgBigCACEGIAUgBm4hBSAFIAJKIQYgBSACIAYbIQIgAUEBaiEBIAEgCEgNAAsgAkECdCEBIAFBBGoFQQQLIQEgEygCACECIAIgAWwhASAAQQxqIQIgBCABSyEDIAIgBCABIAMbIgI2AgAgAEHVCmohASABQQE6AAAgAEHEAGohASABKAIAIQECQCABBEAgAEHQAGohASABKAIAIQEgAEHIAGohAyADKAIAIQMgASADRwRAQcwWQcQTQaAgQYQXEAQLIABBzABqIQMgAygCACEDIAJB3AtqIQIgAiADaiECIAIgAU0NASAAQQMQFUEADAULCyAAEB8hASAAQShqIQAgACABNgIAQQEMAwsgACACQQYQIiEBIAFBAEchASACLAAAIQMgA0HmAEYhAyABIANxBEAgAkEBaiEBIAEsAAAhASABQekARgRAIAJBAmohASABLAAAIQEgAUHzAEYEQCACQQNqIQEgASwAACEBIAFB6ABGBEAgAkEEaiEBIAEsAAAhASABQeUARgRAIAJBBWohASABLAAAIQEgAUHhAEYEQCAAEDAhASABQf8BcUHkAEYEQCAAEDAhASABQf8BcUUEQCAAQSYQFUEADAoLCwsLCwsLCwsgAEEiEBULQQALIQAgGSQGIAALDwEBfyAAQdwLEE0hASABCz8BAX8gAEEkaiEBIAEsAAAhASABBH9BAAUgAEEUaiEBIAEoAgAhASAAQRhqIQAgACgCACEAIAEgAGsLIQAgAAuBAgECfyAAQdgKaiEBIAEoAgAhAQJ/AkAgAUF/Rw0AIAAQMCEBIABB1ABqIQIgAigCACECIAIEf0EABSABQf8BcUHPAEcEQCAAQR4QFUEADAMLIAAQMCEBIAFB/wFxQecARwRAIABBHhAVQQAMAwsgABAwIQEgAUH/AXFB5wBHBEAgAEEeEBVBAAwDCyAAEDAhASABQf8BcUHTAEcEQCAAQR4QFUEADAMLIAAQMyEBIAEEQCAAQdMKaiEBIAEsAAAhASABQQFxIQEgAUUNAiAAQdwKaiEBIAFBADYCACAAQdQKaiEBIAFBADoAACAAQSAQFQtBAAsMAQsgABBKCyEAIAALFAEBfwNAIAAQLiEBIAFBf0cNAAsLZQEEfyAAQRRqIQMgAygCACEFIAUgAmohBiAAQRxqIQQgBCgCACEEIAYgBEsEfyAAQdQAaiEAIABBATYCAEEABSABIAUgAhB5GiADKAIAIQAgACACaiEAIAMgADYCAEEBCyEAIAALaAECfyAAEDAhAiACQf8BcSECIAAQMCEBIAFB/wFxIQEgAUEIdCEBIAEgAnIhAiAAEDAhASABQf8BcSEBIAFBEHQhASACIAFyIQIgABAwIQAgAEH/AXEhACAAQRh0IQAgAiAAciEAIAALEwEBf0EEEF4hACAAQQA2AgAgAAsTAQF/IAAoAgAhASABEBAgABBfCyEAIAAoAgAhACAABH8gAEEEaiEAIAAoAgAFQQALIQAgAAsaACAAKAIAIQAgAAR/IAAoAgAFQQALIQAgAAvbBwISfwF9IwYhECMGQRBqJAYgEEEEaiELIBAhDCAEQQA2AgAgACgCACEGAkACQCAGDQBBICEFA0ACQCALQQA2AgAgDEEANgIAIAUgAkohBiACIAUgBhshBiABIAYgCyAMQQAQGyEKIAAgCjYCAAJAAkACQAJAIAwoAgAOAgEAAgsgAiAFTCEHIAdBAXMhBSAFQQFxIQUgBiAFdCEFQQFBAiAHGyEGIAYhCUEAIAggBxshCCAFIQYMAgsgCygCACEHIAQoAgAhBSAFIAdqIQUgBCAFNgIAIAEgB2ohAUEAIQkgAiAHayECDAELQQEhCUF/IQgLAkACQAJAIAlBA3EOAwABAAELDAELDAELIAoEQCAKIQYMAwUgBiEFDAILAAsLIAkEfyAIBSAKIQYMAQshEgwBCyAGQQRqIQogCigCACEIIAhBAnQhCCAIEF4hDSANRQRAEAYLIAooAgAhCCAIQQBKBEAgCEECdCEIIA1BACAIEHoaC0EAIQVBACEKIAEhCCAGIQECQAJAAkADQCALQQA2AgAgDEEANgIAIAJBIEghBiACQSAgBhshCSABIAggCUEAIAsgDBAUIQEgAUUEQEEgIQYgCSEBA0AgAiAGSiEGIAZFDQQgAUEBdCEGIAYgAkohASACIAYgARshASAAKAIAIQkgCSAIIAFBACALIAwQFCEJIAlFDQALIAkhAQsgBCgCACEGIAYgAWohBiAEIAY2AgAgCCABaiEIIAIgAWshBiAMKAIAIREgESAKaiEJAkACQCAFIAlIBEAgBUUhAiAFQQF0IQFBgCAgASACGyECIAAoAgAhASABQQRqIQUgBSgCACEFIAVBAEoEQCACQQJ0IQ5BACEBA0AgDSABQQJ0aiEHIAcoAgAhBSAFIA4QYCEFIAVFDQYgByAFNgIAIAFBAWohASAAKAIAIQcgB0EEaiEFIAUoAgAhBSABIAVIDQALIAUhDiAHIQEMAgsFIAAoAgAiAUEEaiEHIAUhAiAHKAIAIQ4MAQsMAQsgDkEASgRAIBFBAEohEyALKAIAIRRBACEHA0AgEwRAIBQgB0ECdGooAgAhFSANIAdBAnRqKAIAIRZBACEFA0AgFSAFQQJ0aiEPIA8qAgAhFyAXQwAAgD9eBEBDAACAPyEXBSAXQwAAgL9dBEBDAACAvyEXCwsgBSAKaiEPIBYgD0ECdGohDyAPIBc4AgAgBUEBaiEFIAUgEUcNAAsLIAdBAWohBSAFIA5IBEAgBSEHDAELCwsLIAIhBSAJIQogBiECDAAACwALEAYMAQsgAyANNgIAIAohEgsLIBAkBiASCzwBAX8gAEEIdCECIAFB/wFxIQEgAEEYdiEAIAAgAXMhACAAQQJ0QdAZaiEAIAAoAgAhACAAIAJzIQAgAAvvBAEFfyAAQdgLaiEGIAZBADYCACAAQdQLaiEGIAZBADYCACAAQdQAaiEIIAgoAgAhBgJ/IAYEf0EABSAAQSRqIQcCQAJAA0ACQCAAECAhBkEAIAZFDQUaIABBARAsIQYgBkUNACAHLAAAIQYgBg0CA0AgABAZIQYgBkF/Rw0ACyAIKAIAIQYgBkUNAUEADAULCwwBCyAAQSMQFUEADAILIABBxABqIQYgBigCACEGIAYEQCAAQcgAaiEGIAYoAgAhByAAQdAAaiEGIAYoAgAhBiAHIAZHBEBB0xNBxBNBuhhBixQQBAsLIABBjANqIQcgBygCACEGIAZBf2ohBiAGEC0hBiAAIAYQLCEIIAhBf0YEf0EABSAHKAIAIQYgCCAGSAR/IAUgCDYCACAAQZADaiAIQQZsaiEHIAcsAAAhBQJAAkAgBQR/IABB6ABqIQUgBSgCACEFIABBARAsIQYgAEEBECwhCCAGQQBHIQkgBywAACEGIAZFIQcgBUEBdSEGIAkgB3IEfwwCBSAAQeQAaiEKIAooAgAhCSAFIAlrIQkgCUECdSEJIAEgCTYCACAKKAIAIQEgASAFaiEJIAYhASAJQQJ1CwUgAEHkAGohBSAFKAIAIQZBACEIIAYhBSAGQQF1IQZBASEHDAELIQYMAQsgAUEANgIAIAYhAQsgAiAGNgIAIAhBAEchAiACIAdyBEAgAyABNgIABSAFQQNsIQIgAEHkAGohASABKAIAIQAgAiAAayEAIABBAnUhACADIAA2AgAgASgCACEAIAAgAmohACAAQQJ1IQULIAQgBTYCAEEBBUEACwsLCyEAIAALjB0CJ38DfSMGIRwjBkGAFGokBiAcQYAMaiEdIBxBgARqISQgHEGAAmohFCAcISAgAi0AACEHIAdB/wFxIQcgAEHcAGogB0ECdGohByAHKAIAIR4gAEGIA2ohByAHKAIAIRYgAkEBaiEHIActAAAhByAHQf8BcSEXIBYgF0EobGohIiAeQQF1IR9BACAfayEpIABBBGohGiAaKAIAIQcCfwJAIAdBAEoEfyAWIBdBKGxqQQRqISogAEH4AWohKyAAQfAAaiElIABB6ApqIRggAEHkCmohISAUQQFqISwDQAJAICooAgAhByAHIA1BA2xqQQJqIQcgBy0AACEHIAdB/wFxIQcgHSANQQJ0aiEVIBVBADYCACAWIBdBKGxqQQlqIAdqIQcgBy0AACEHIAdB/wFxIQ8gAEH4AGogD0EBdGohByAHLgEAIQcgB0UNACArKAIAIRAgAEEBECwhBwJAAkAgB0UNACAQIA9BvAxsakG0DGohByAHLQAAIQcgB0H/AXEhByAHQX9qIQcgB0ECdEGQCGohByAHKAIAISMgAEHYB2ogDUECdGohByAHKAIAIRkgIxAtIQcgB0F/aiEHIAAgBxAsIQggCEH//wNxIQggGSAIOwEAIAAgBxAsIQcgB0H//wNxIQcgGUECaiEIIAggBzsBACAQIA9BvAxsaiEmICYsAAAhByAHBEBBACETQQIhBwNAIBAgD0G8DGxqQQFqIBNqIQggCC0AACEIIAhB/wFxIRsgECAPQbwMbGpBIWogG2ohCCAILAAAIQwgDEH/AXEhJyAQIA9BvAxsakExaiAbaiEIIAgsAAAhCCAIQf8BcSEoQQEgKHQhCSAJQX9qIS0gCARAICUoAgAhCyAQIA9BvAxsakHBAGogG2ohCCAILQAAIQggCEH/AXEhCiALIApBsBBsaiEOIBgoAgAhCCAIQQpIBEAgABA0CyAhKAIAIQkgCUH/B3EhCCALIApBsBBsakEkaiAIQQF0aiEIIAguAQAhCCAIQX9KBEAgCyAKQbAQbGpBCGohDiAOKAIAIQ4gDiAIaiEOIA4tAAAhDiAOQf8BcSEOIAkgDnYhCSAhIAk2AgAgGCgCACEJIAkgDmshCSAJQQBIIQ5BACAJIA4bIRFBfyAIIA4bIQkgGCARNgIABSAAIA4QNSEJCyALIApBsBBsakEXaiEIIAgsAAAhCCAIBEAgCyAKQbAQbGpBqBBqIQggCCgCACEIIAggCUECdGohCCAIKAIAIQkLBUEAIQkLIAwEQEEAIQsgByEIA0AgCSAtcSEKIBAgD0G8DGxqQdIAaiAbQQR0aiAKQQF0aiEKIAouAQAhDCAJICh1IQogDEF/SgR/ICUoAgAhDiAOIAxBsBBsaiESIBgoAgAhCSAJQQpIBEAgABA0CyAhKAIAIREgEUH/B3EhCSAOIAxBsBBsakEkaiAJQQF0aiEJIAkuAQAhCSAJQX9KBEAgDiAMQbAQbGpBCGohEiASKAIAIRIgEiAJaiESIBItAAAhEiASQf8BcSESIBEgEnYhESAhIBE2AgAgGCgCACERIBEgEmshESARQQBIIRJBACARIBIbIRFBfyAJIBIbIQkgGCARNgIABSAAIBIQNSEJCyAOIAxBsBBsakEXaiERIBEsAAAhESARBEAgDiAMQbAQbGpBqBBqIQwgDCgCACEMIAwgCUECdGohCSAJKAIAIQkLIAlB//8DcQVBAAshCSAZIAhBAXRqIAk7AQAgCEEBaiEIIAtBAWohCyALICdHBEAgCiEJDAELCyAHICdqIQcLIBNBAWohEyAmLQAAIQggCEH/AXEhCCATIAhJDQALCyAYKAIAIQcgB0F/Rg0AICxBAToAACAUQQE6AAAgECAPQbwMbGpBuAxqIQcgBygCACETIBNBAkoEQCAjQf//A2ohG0ECIQcDQCAQIA9BvAxsakHACGogB0EBdGohCCAILQAAIQggCEH/AXEhCyAQIA9BvAxsaiAHQQF0akHBCGohCCAILQAAIQggCEH/AXEhCiAQIA9BvAxsakHSAmogB0EBdGohCCAILwEAIQggCEH//wNxIQggECAPQbwMbGpB0gJqIAtBAXRqIQkgCS8BACEJIAlB//8DcSEJIBAgD0G8DGxqQdICaiAKQQF0aiEMIAwvAQAhDCAMQf//A3EhDCAZIAtBAXRqIQ4gDi4BACEOIBkgCkEBdGohFSAVLgEAIRUgCCAJIAwgDiAVEDYhCCAZIAdBAXRqIQ4gDi4BACEJICMgCGshDAJAAkAgCQRAIAwgCEghFSAMIAggFRtBAXQhFSAUIApqIQogCkEBOgAAIBQgC2ohCyALQQE6AAAgFCAHaiELIAtBAToAACAVIAlMBEAgDCAISg0DIBsgCWshCAwCCyAJQQFxIQsgCwR/IAlBAWohCSAJQQF2IQkgCCAJawUgCUEBdSEJIAkgCGoLIQgFIBQgB2ohCSAJQQA6AAALCyAOIAg7AQALIAdBAWohByAHIBNIDQALCyATQQBKBEBBACEHA0AgFCAHaiEIIAgsAAAhCCAIRQRAIBkgB0EBdGohCCAIQX87AQALIAdBAWohByAHIBNHDQALCwwBCyAVQQE2AgALIA1BAWohDSAaKAIAIQcgDSAHSA0BDAMLCyAAQRUQFUEABQwBCwwBCyAAQcQAaiETIBMoAgAhCSAJBEAgAEHIAGohCCAIKAIAIQggAEHQAGohDSANKAIAIQ0gCCANRwRAQdMTQcQTQc8ZQecUEAQLCyAHQQJ0IQggJCAdIAgQeRogIi4BACEIIAgEQCAWIBdBKGxqKAIEIQ0gCEH//wNxIQxBACEIA0AgDSAIQQNsaiELIAstAAAhCyALQf8BcSELIB0gC0ECdGohCyALKAIAIQ8gHSANIAhBA2xqLQABQQJ0aiEKAkACQCAPRQ0AIAooAgAhDyAPRQ0ADAELIApBADYCACALQQA2AgALIAhBAWohCCAIIAxJDQALCyAWIBdBKGxqQQhqIQsgCywAACEIIAgEQCAWIBdBKGxqQQRqIQxBACEJIAchDQNAAkAgDUEASgRAIAwoAgAhD0EAIQdBACEIA0AgDyAIQQNsakECaiEKIAotAAAhCiAKQf8BcSEKIAkgCkYEQCAdIAhBAnRqIQogCigCACEQICAgB2ohCiAQBEAgCkEBOgAAIBQgB0ECdGohCiAKQQA2AgAFIApBADoAACAAQZQGaiAIQQJ0aiEKIAooAgAhCiAUIAdBAnRqIRAgECAKNgIACyAHQQFqIQcLIAhBAWohCCAIIA1IDQALBUEAIQcLIBYgF0EobGpBGGogCWohCCAILQAAIQggCEH/AXEhCCAAIBQgByAfIAggIBA3IAlBAWohCSALLQAAIQcgB0H/AXEhByAJIAdPDQAgGigCACENDAELCyATKAIAIQkLIAkEQCAAQcgAaiEHIAcoAgAhByAAQdAAaiEIIAgoAgAhCCAHIAhHBEBB0xNBxBNB8BlB5xQQBAsLICIuAQAhByAHBEAgFiAXQShsaigCBCENIB5BAUohDCAHQf//A3EhCANAIAhBf2ohCSANIAlBA2xqIQcgBy0AACEHIAdB/wFxIQcgAEGUBmogB0ECdGohByAHKAIAISAgDSAJQQNsakEBaiEHIActAAAhByAHQf8BcSEHIABBlAZqIAdBAnRqIQcgBygCACEPIAwEQEEAIQcDQCAgIAdBAnRqIQsgCyoCACEuIA8gB0ECdGoiECoCACIvQwAAAABeIQogLkMAAAAAXgRAIAoEQCAuITAgLiAvkyEuBSAuIC+SITALBSAKBEAgLiEwIC4gL5IhLgUgLiAvkyEwCwsgCyAwOAIAIBAgLjgCACAHQQFqIQcgByAfSA0ACwsgCEEBSgRAIAkhCAwBCwsLIBooAgAhByAHQQBKBEAgH0ECdCEJQQAhBwNAICQgB0ECdGohCCAIKAIAIQ0gAEGUBmogB0ECdGohCCANBEAgCCgCACEIIAhBACAJEHoaBSAIKAIAIQggAEHYB2ogB0ECdGohDSANKAIAIQ0gACAiIAcgHiAIIA0QOAsgB0EBaiEHIBooAgAhCCAHIAhIDQALIAhBAEoEQEEAIQcDQCAAQZQGaiAHQQJ0aiEIIAgoAgAhCCACLQAAIQkgCUH/AXEhCSAIIB4gACAJEDkgB0EBaiEHIBooAgAhCCAHIAhIDQALCwsgABAhIABB1QpqIQIgAiwAACEHIAcEQCAAQZgIaiEGIAYgKTYCACAeIAVrIQYgAEH4CmohByAHIAY2AgAgAEGcCGohBiAGQQE2AgAgAkEAOgAABSAAQfgKaiEHIAcoAgAhAiACBEAgBCADayEIIAIgCEgEQCACIANqIQMgBiADNgIAIAdBADYCAAUgAiAIayECIAcgAjYCACAGIAQ2AgAgBCEDCwsLIABB4ApqIQIgAigCACECIABB8ApqIQYgBigCACEHIABBnAhqIggoAgAhBgJAAkAgAiAHRgRAIAYEQCAAQdMKaiECIAIsAAAhAiACQQRxIQIgAgRAIABB9ApqIQIgAigCACECIABBmAhqIQYgBigCACEHIAUgA2shCSAJIAdqIQkgAiAJSSEJIAIgB0khDSACIAdrIQJBACACIA0bIQIgAiADaiECIAIgBUohByAFIAIgBxshAiAJBEAgASACNgIAIAYoAgAhACAAIAJqIQAgBiAANgIAQQEMBgsLCyAAQfQKaiECIAIoAgAhAiADIB9rIQYgBiACaiEGIABBmAhqIQIgAiAGNgIAIAhBATYCAAwBBSAAQZgIaiECIAYNAQsMAQsgBCADayEDIAIoAgAhBCADIARqIQMgAiADNgIACyATKAIAIQIgAgRAIABByABqIQIgAigCACECIABB0ABqIQAgACgCACEAIAIgAEcEQEHTE0HEE0HkGkHnFBAECwsgASAFNgIAQQELIQAgHCQGIAALqAIBBX8gAEHoCmohBSAFKAIAIQICQCACQQBIBEBBACEABSACIAFIBEAgAUEYSgRAIABBGBAsIQIgAUFoaiEBIAAgARAsIQAgAEEYdCEAIAAgAmohACAADwsgAkUEQCAAQeQKaiECIAJBADYCAAsgAEHkCmohAwJAAkACQANAIAAQLiECIAJBf0YNASAFKAIAIQQgAiAEdCECIAMoAgAhBiAGIAJqIQIgAyACNgIAIAUgBEEIaiICNgIAIAIgAUgNAAwCAAsACyAFQX82AgBBACEADAQLIARBeEgEQEEAIQAMBAsLCyAAQeQKaiEEIAQoAgAhA0EBIAF0IQAgAEF/aiEAIAMgAHEhACADIAF2IQMgBCADNgIAIAIgAWshASAFIAE2AgALCyAAC40CAAJAIABBAEgEf0EABSAAQYCAAUgEQCAAQRBIBEAgAEGACGohACAALAAAIQAMAwsgAEGABEgEQCAAQQV2IQAgAEGACGohACAALAAAIQAgAEEFaiEABSAAQQp2IQAgAEGACGohACAALAAAIQAgAEEKaiEACwwCCyAAQYCAgAhIBH8gAEGAgCBIBH8gAEEPdiEAIABBgAhqIQAgACwAACEAIABBD2oFIABBFHYhACAAQYAIaiEAIAAsAAAhACAAQRRqCwUgAEGAgICAAkgEfyAAQRl2IQAgAEGACGohACAALAAAIQAgAEEZagUgAEEediEAIABBgAhqIQAgACwAACEAIABBHmoLCwshAAsgAAuiAQEDfyAAQdQKaiECIAIsAAAhAQJAAkAgAQ0AIABB3ApqIQEgASgCACEBIAEEQEF/IQMFIAAQLyEBIAEEQCACLAAAIQEgAQ0CQaEUQcQTQfYLQbUUEAQFQX8hAwsLDAELIAFBf2pBGHRBGHUhASACIAE6AAAgAEHsCmohASABKAIAIQIgAkEBaiECIAEgAjYCACAAEDAhACAAQf8BcSEDCyADC6wCAQd/IABB3ApqIQIgAigCACEBAkAgAUUEQCAAQdgKaiEEIAQoAgAhASABQX9GBEAgAEHQCGohASABKAIAIQEgAUF/aiEBIABB4ApqIQMgAyABNgIAIAAQMSEBIAFFBEAgAkEBNgIADAMLIABB0wpqIQEgASwAACEBIAFBAXEhASABBH8gBCgCAAUgAEEgEBUMAwshAQsgAUEBaiEHIAQgBzYCACAAQdQIaiABaiEDIAMsAAAhBiAGQf8BcSEDIAZBf0cEQCACQQE2AgAgAEHgCmohAiACIAE2AgALIABB0AhqIQEgASgCACEBIAcgAU4EQCAEQX82AgALIABB1ApqIQAgACwAACEBIAEEQEHFFEHEE0HoC0HaFBAEBSAAIAY6AAAgAyEFCwsLIAULUQEDfyAAQRRqIQMgAygCACEBIABBHGohAiACKAIAIQIgASACSQR/IAFBAWohACADIAA2AgAgASwAAAUgAEHUAGohACAAQQE2AgBBAAshACAACyABAX8gABAyIQEgAQR/IAAQMwUgAEEeEBVBAAshACAAC2ABAX8gABAwIQEgAUH/AXFBzwBGBEAgABAwIQEgAUH/AXFB5wBGBEAgABAwIQEgAUH/AXFB5wBGBEAgABAwIQAgAEH/AXFB0wBGIQAFQQAhAAsFQQAhAAsFQQAhAAsgAAvZAwEGfyAAEDAhAQJ/IAFB/wFxBH8gAEEfEBVBAAUgABAwIQEgAEHTCmohAiACIAE6AAAgABAjIQUgABAjIQIgABAjGiAAECMhASAAQcwIaiEDIAMgATYCACAAECMaIAAQMCEBIAFB/wFxIQEgAEHQCGohAyADIAE2AgAgAEHUCGohBCAAIAQgARAiIQEgAUUEQCAAQQoQFUEADAILIABB8ApqIQQgBEF+NgIAIAIgBXEhAQJAIAFBf0cEQCADKAIAIQEgAUEASgRAA0ACQCABQX9qIQIgAEHUCGogAmohBiAGLAAAIQYgBkF/Rw0AIAFBAUwNBCACIQEMAQsLIAQgAjYCACAAQfQKaiEBIAEgBTYCAAsLCyAAQdUKaiEBIAEsAAAhASABBEAgAygCACEDIANBAEoEf0EAIQJBACEBA0AgAEHUCGogAWohBCAELQAAIQQgBEH/AXEhBCACIARqIQIgAUEBaiEBIAEgA0gNAAsgAkEbagVBGwshASAAQShqIQIgAigCACECIAEgA2ohASABIAJqIQEgAEEsaiEDIAMgAjYCACAAQTBqIQIgAiABNgIAIABBNGohASABIAU2AgALIABB2ApqIQAgAEEANgIAQQELCyEAIAALowEBB38gAEHoCmohAyADKAIAIQECQCABQRlIBEAgAEHkCmohBCABRQRAIARBADYCAAsgAEHUCmohBSAAQdwKaiEGA0AgBigCACEBIAEEQCAFLAAAIQEgAUUNAwsgABAuIQIgAkF/Rg0CIAMoAgAhASACIAF0IQIgBCgCACEHIAcgAmohAiAEIAI2AgAgAUEIaiECIAMgAjYCACABQRFIDQALCwsLrQUBCX8gABA0IAFBIGohAiACKAIAIQUCQAJAIAVFIgNFDQAgAUGkEGohAiACKAIAIQIgAg0AQX8hAQwBCyABQQRqIQIgAigCACECAkACQCACQQhKBEAgAUGkEGohAyADKAIAIQMgAw0BBSADDQELDAELIABB5ApqIQggCCgCACEJIAkQOiEHIAFBrBBqIQIgAigCACECIAJBAUoEQCABQaQQaigCACEKQQAhAwNAIAJBAXYhBSAFIANqIQQgCiAEQQJ0aiEGIAYoAgAhBiAGIAdLIQYgAiAFayECIAMgBCAGGyEDIAUgAiAGGyECIAJBAUoNAAsFQQAhAwsgAUEXaiECIAIsAAAhAiACRQRAIAFBqBBqIQIgAigCACECIAIgA0ECdGohAiACKAIAIQMLIAFBCGohASABKAIAIQEgASADaiEBIAEtAAAhASABQf8BcSEBIABB6ApqIQIgAigCACEAIAAgAUgEf0EAIQBBfwUgACABayEAIAkgAXYhASAIIAE2AgAgAwshASACIAA2AgAMAQsgAUEXaiEDIAMsAAAhAyADBEBBgRVBxBNB6gxBjBUQBAsCQCACQQBKBEAgASgCCCEIIABB5ApqIQlBACEBA0ACQCAIIAFqIQMgAywAACEEIARB/wFxIQMgBEF/RwRAIAUgAUECdGoh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IwZBEGokBiACIQECfCAAvUIgiKdB/////wdxIgNB/MOk/wNJBHwgA0GewZryA0kEfEQAAAAAAADwPwUgAEQAAAAAAAAAABByCwUgACAAoSADQf//v/8HSw0BGgJAAkACQAJAIAAgARBuQQNxDgMAAQIDCyABKwMAIAErAwgQcgwECyABKwMAIAErAwhBARBwmgwDCyABKwMAIAErAwgQcpoMAgsgASsDACABKwMIQQEQcAsLIQAgAiQGIAALywEBA38jBiECIwZBEGokBiACIQECQCAAvUIgiKdB/////wdxIgNB/MOk/wNJBEAgA0GAgMDyA08EQCAARAAAAAAAAAAAQQAQcCEACwUgA0H//7//B0sEQCAAIAChIQAMAgsCQAJAAkACQAJAIAAgARBuQQNxDgMAAQIDCyABKwMAIAErAwhBARBwIQAMBQsgASsDACABKwMIEHIhAAwECyABKwMAIAErAwhBARBwmiEADAMLIAErAwAgASsDCBBymiEACwsLIAIkBiAAC5sDAwJ/AX4CfCAAvSIDQj+IpyEBAnwCfwJAIANCIIinQf////8HcSICQarGmIQESwR8IANC////////////AINCgICAgICAgPj/AFYEQCAADwsgAETvOfr+Qi6GQGQEQCAARAAAAAAAAOB/og8FIABE0rx63SsjhsBjIABEUTAt1RBJh8BjcUUNAkQAAAAAAAAAACIADwsABSACQcLc2P4DSwRAIAJBscXC/wNLDQIgAUEBcyABawwDCyACQYCAwPEDSwR8QQAhASAABSAARAAAAAAAAPA/oA8LCwwCCyAARP6CK2VHFfc/oiABQQN0QYATaisDAKCqCyEBIAAgAbciBEQAAOD+Qi7mP6KhIgAgBER2PHk17znqPaIiBaELIQQgACAEIAQgBCAEoiIAIAAgACAAIABE0KS+cmk3Zj6iRPFr0sVBvbu+oKJELN4lr2pWET+gokSTvb4WbMFmv6CiRD5VVVVVVcU/oKKhIgCiRAAAAAAAAABAIAChoyAFoaBEAAAAAAAA8D+gIQAgAUUEQCAADwsgACABEGULnwMDAn8BfgV8IAC9IgNCIIinIQECfyADQgBTIgIgAUGAgMAASXIEfyADQv///////////wCDQgBRBEBEAAAAAAAA8L8gACAAoqMPCyACRQRAIABEAAAAAAAAUEOi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mgDjqR0AXmGRAAgb5gCFmWUAoBRfAI1AaACA2P8AJ3NNAAYGMQDKVhUAyahzAHviYABrjMAAQcMSC11A+yH5PwAAAAAtRHQ+AAAAgJhG+DwAAABgUcx4OwAAAICDG/A5AAAAQCAlejgAAACAIoLjNgAAAAAd82k1AAAAAAAA4D8AAAAAAADgvwAAAAAAAPA/AAAAAAAA+D8AQagTCwgG0M9D6/1MPgBBuxMLigZAA7jiP09nZ1MuL3N0Yl92b3JiaXMuYwBmLT5hbGxvYy5hbGxvY19idWZmZXJfbGVuZ3RoX2luX2J5dGVzID09IGYtPnRlbXBfb2Zmc2V0AHZvcmJpc19kZWNvZGVfaW5pdGlhbABmLT5ieXRlc19pbl9zZWcgPiAwAGdldDhfcGFja2V0X3JhdwBmLT5ieXRlc19pbl9zZWcgPT0gMABuZXh0X3NlZ21lbnQAdm9yYmlzX2RlY29kZV9wYWNrZXRfcmVzdAAhYy0+c3BhcnNlAGNvZGVib29rX2RlY29kZV9zY2FsYXJfcmF3ACFjLT5zcGFyc2UgfHwgeiA8IGMtPnNvcnRlZF9lbnRyaWVzAGNvZGVib29rX2RlY29kZV9kZWludGVybGVhdmVfcmVwZWF0AHogPCBjLT5zb3J0ZWRfZW50cmllcwBjb2RlYm9va19kZWNvZGVfc3RhcnQAKG4gJiAzKSA9PSAwAGltZGN0X3N0ZXAzX2l0ZXIwX2xvb3AAMABnZXRfd2luZG93AGYtPnRlbXBfb2Zmc2V0ID09IGYtPmFsbG9jLmFsbG9jX2J1ZmZlcl9sZW5ndGhfaW5fYnl0ZXMAc3RhcnRfZGVjb2RlcgB2b3JiaXNjLT5zb3J0ZWRfZW50cmllcyA9PSAwAGNvbXB1dGVfY29kZXdvcmRzAHogPj0gMCAmJiB6IDwgMzIAbGVuW2ldID49IDAgJiYgbGVuW2ldIDwgMzIAYXZhaWxhYmxlW3ldID09IDAAayA9PSBjLT5zb3J0ZWRfZW50cmllcwBjb21wdXRlX3NvcnRlZF9odWZmbWFuAGMtPnNvcnRlZF9jb2Rld29yZHNbeF0gPT0gY29kZQBsZW4gIT0gTk9fQ09ERQBpbmNsdWRlX2luX3NvcnQAcG93KChmbG9hdCkgcisxLCBkaW0pID4gZW50cmllcwBsb29rdXAxX3ZhbHVlcwAoaW50KSBmbG9vcihwb3coKGZsb2F0KSByLCBkaW0pKSA8PSBlbnRyaWVzAOoPBG5hbWUB4g9+AAVhYm9ydAENZW5sYXJnZU1lbW9yeQIOZ2V0VG90YWxNZW1vcnkDF2Fib3J0T25DYW5ub3RHcm93TWVtb3J5BA5fX19hc3NlcnRfZmFpbAULX19fc2V0RXJyTm8GBl9hYm9ydAcWX2Vtc2NyaXB0ZW5fbWVtY3B5X2JpZwgQX19ncm93V2FzbU1lbW9yeQkKc3RhY2tBbGxvYwoJc3RhY2tTYXZlCwxzdGFja1Jlc3RvcmUME2VzdGFibGlzaFN0YWNrU3BhY2UNCHNldFRocmV3DgtzZXRUZW1wUmV0MA8LZ2V0VGVtcFJldDAQEV9zdGJfdm9yYmlzX2Nsb3NlEQ5fdm9yYmlzX2RlaW5pdBILX3NldHVwX2ZyZWUTGl9zdGJfdm9yYmlzX2ZsdXNoX3B1c2hkYXRhFCFfc3RiX3ZvcmJpc19kZWNvZGVfZnJhbWVfcHVzaGRhdGEVBl9lcnJvchYgX3ZvcmJpc19zZWFyY2hfZm9yX3BhZ2VfcHVzaGRhdGEXGF9pc193aG9sZV9wYWNrZXRfcHJlc2VudBgVX3ZvcmJpc19kZWNvZGVfcGFja2V0GQxfZ2V0OF9wYWNrZXQaFF92b3JiaXNfZmluaXNoX2ZyYW1lGxlfc3RiX3ZvcmJpc19vcGVuX3B1c2hkYXRhHAxfdm9yYmlzX2luaXQdDl9zdGFydF9kZWNvZGVyHg1fdm9yYmlzX2FsbG9jHxtfc3RiX3ZvcmJpc19nZXRfZmlsZV9vZmZzZXQgE19tYXliZV9zdGFydF9wYWNrZXQhDV9mbHVzaF9wYWNrZXQiBV9nZXRuIwZfZ2V0MzIkE19zdGJfdm9yYmlzX2pzX29wZW4lFF9zdGJfdm9yYmlzX2pzX2Nsb3NlJhdfc3RiX3ZvcmJpc19qc19jaGFubmVscycaX3N0Yl92b3JiaXNfanNfc2FtcGxlX3JhdGUoFV9zdGJfdm9yYmlzX2pzX2RlY29kZSkNX2NyYzMyX3VwZGF0ZSoWX3ZvcmJpc19kZWNvZGVfaW5pdGlhbCsaX3ZvcmJpc19kZWNvZGVfcGFja2V0X3Jlc3QsCV9nZXRfYml0cy0FX2lsb2cuEF9nZXQ4X3BhY2tldF9yYXcvDV9uZXh0X3NlZ21lbnQwBV9nZXQ4MQtfc3RhcnRfcGFnZTIQX2NhcHR1cmVfcGF0dGVybjMdX3N0YXJ0X3BhZ2Vfbm9fY2FwdHVyZXBhdHRlcm40DV9wcmVwX2h1ZmZtYW41G19jb2RlYm9va19kZWNvZGVfc2NhbGFyX3JhdzYOX3ByZWRpY3RfcG9pbnQ3D19kZWNvZGVfcmVzaWR1ZTgJX2RvX2Zsb29yOQ1faW52ZXJzZV9tZGN0OgxfYml0X3JldmVyc2U7EV9tYWtlX2Jsb2NrX2FycmF5PBJfc2V0dXBfdGVtcF9tYWxsb2M9JF9jb2RlYm9va19kZWNvZGVfZGVpbnRlcmxlYXZlX3JlcGVhdD4PX3Jlc2lkdWVfZGVjb2RlPxVfY29kZWJvb2tfZGVjb2RlX3N0ZXBAEF9jb2RlYm9va19kZWNvZGVBFl9jb2RlYm9va19kZWNvZGVfc3RhcnRCCl9kcmF3X2xpbmVDF19pbWRjdF9zdGVwM19pdGVyMF9sb29wRBlfaW1kY3Rfc3RlcDNfaW5uZXJfcl9sb29wRRlfaW1kY3Rfc3RlcDNfaW5uZXJfc19sb29wRh9faW1kY3Rfc3RlcDNfaW5uZXJfc19sb29wX2xkNjU0RwhfaXRlcl81NEgLX2dldF93aW5kb3dJEF92b3JiaXNfdmFsaWRhdGVKDV9zdGFydF9wYWNrZXRLBV9za2lwTAtfY3JjMzJfaW5pdE0NX3NldHVwX21hbGxvY04QX3NldHVwX3RlbXBfZnJlZU8SX2NvbXB1dGVfY29kZXdvcmRzUBdfY29tcHV0ZV9zb3J0ZWRfaHVmZm1hblEcX2NvbXB1dGVfYWNjZWxlcmF0ZWRfaHVmZm1hblIPX2Zsb2F0MzJfdW5wYWNrUw9fbG9va3VwMV92YWx1ZXNUDl9wb2ludF9jb21wYXJlVQpfbmVpZ2hib3JzVg9faW5pdF9ibG9ja3NpemVXCl9hZGRfZW50cnlYEF9pbmNsdWRlX2luX3NvcnRZD191aW50MzJfY29tcGFyZVoYX2NvbXB1dGVfdHdpZGRsZV9mYWN0b3JzWw9fY29tcHV0ZV93aW5kb3dcE19jb21wdXRlX2JpdHJldmVyc2VdB19zcXVhcmVeB19tYWxsb2NfBV9mcmVlYAhfcmVhbGxvY2ESX3RyeV9yZWFsbG9jX2NodW5rYg5fZGlzcG9zZV9jaHVua2MRX19fZXJybm9fbG9jYXRpb25kB19tZW1jbXBlB19zY2FsYm5mBl9xc29ydGcFX3NpZnRoBF9zaHJpCF90cmlua2xlagRfc2hsawVfcG50emwIX2FfY3R6X2xtBl9jeWNsZW4LX19fcmVtX3BpbzJvEV9fX3JlbV9waW8yX2xhcmdlcAZfX19zaW5xBl9sZGV4cHIGX19fY29zcwRfY29zdARfc2ludQRfZXhwdgRfbG9ndwRfcG93eAtydW5Qb3N0U2V0c3kHX21lbWNweXoHX21lbXNldHsFX3Nicmt8C2R5bkNhbGxfaWlpfQJiMA=="),function(I){return I.charCodeAt(0)});var C=C!==void 0?C:{},iA={};for(t in C)C.hasOwnProperty(t)&&(iA[t]=C[t]);C.arguments=[],C.thisProgram="./this.program",C.quit=function(I,E){throw E},C.preRun=[],C.postRun=[];var j=!1,AA=!1,eA=!1,QA=!1;j=typeof window=="object",AA=typeof importScripts=="function",eA=typeof process=="object"&&typeof cs=="function"&&!j&&!AA,QA=!j&&!eA&&!AA;var IA="";function mA(I){return C.locateFile?C.locateFile(I,IA):IA+I}eA?(IA=__dirname+"/",C.read=function(E,c){var f;return A||(A=void 0),e||(e=void 0),E=e.normalize(E),f=A.readFileSync(E),c?f:f.toString()},C.readBinary=function(E){var c=C.read(E,!0);return c.buffer||(c=new Uint8Array(c)),_A(c.buffer),c},process.argv.length>1&&(C.thisProgram=process.argv[1].replace(/\\/g,"/")),C.arguments=process.argv.slice(2),typeof module<"u",process.on("uncaughtException",function(I){if(!(I instanceof De))throw I}),process.on("unhandledRejection",function(I,E){process.exit(1)}),C.quit=function(I){process.exit(I)},C.inspect=function(){return"[Emscripten Module object]"}):QA?(typeof read<"u"&&(C.read=function(E){return read(E)}),C.readBinary=function(E){var c;return typeof readbuffer=="function"?new Uint8Array(readbuffer(E)):(_A(typeof(c=read(E,"binary"))=="object"),c)},typeof scriptArgs<"u"?C.arguments=scriptArgs:typeof arguments<"u"&&(C.arguments=arguments),typeof quit=="function"&&(C.quit=function(I){quit(I)})):(j||AA)&&(j?document.currentScript&&(IA=document.currentScript.src):IA=self.location.href,IA=IA.indexOf("blob:")!==0?IA.split("/").slice(0,-1).join("/")+"/":"",C.read=function(E){var c=new XMLHttpRequest;return c.open("GET",E,!1),c.send(null),c.responseText},AA&&(C.readBinary=function(E){var c=new XMLHttpRequest;return c.open("GET",E,!1),c.responseType="arraybuffer",c.send(null),new Uint8Array(c.response)}),C.readAsync=function(E,c,f){var M=new XMLHttpRequest;M.open("GET",E,!0),M.responseType="arraybuffer",M.onload=function(){if(M.status==200||M.status==0&&M.response){c(M.response);return}f()},M.onerror=f,M.send(null)},C.setWindowTitle=function(I){document.title=I});var Le=C.print||(typeof console<"u"?console.log.bind(console):typeof print<"u"?print:null),MA=C.printErr||(typeof printErr<"u"?printErr:typeof console<"u"&&console.warn.bind(console)||Le);for(t in iA)iA.hasOwnProperty(t)&&(C[t]=iA[t]);function Ue(I){var E=Q;return Q=Q+I+15&-16,E}function Wt(I){var E=B[R>>2],c=E+I+15&-16;return B[R>>2]=c,c>=EA&&!os()?(B[R>>2]=E,0):E}function _t(I,E){return E||(E=16),I=Math.ceil(I/E)*E}function ko(I){switch(I){case"i1":case"i8":return 1;case"i16":return 2;case"i32":case"float":return 4;case"i64":case"double":return 8;default:if(I[I.length-1]==="*")return 4;if(I[0]!=="i")return 0;var E=parseInt(I.substr(1));return _A(E%8==0),E/8}}function pe(I){pe.shown||(pe.shown={}),pe.shown[I]||(pe.shown[I]=1,MA(I))}iA=void 0;var wo={"f64-rem":function(I,E){return I%E},debugger:function(){}},Et=[];function er(I,E){for(var c=0,f=c;f<c+0;f++)if(!Et[f])return Et[f]=I,1+f;throw"Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS."}function tr(I){Et[I-1]=null}var Bt={};function sr(I,E){if(I){_A(E),Bt[E]||(Bt[E]={});var c=Bt[E];return c[I]||(E.length===1?c[I]=function(){return ht(E,I)}:E.length===2?c[I]=function(M){return ht(E,I,[M])}:c[I]=function(){return ht(E,I,Array.prototype.slice.call(arguments))}),c[I]}}function nr(I,E,c){return c?+(I>>>0)+4294967296*+(E>>>0):+(I>>>0)+4294967296*+(0|E)}function ht(I,E,c){return c&&c.length?C["dynCall_"+I].apply(null,[E].concat(c)):C["dynCall_"+I].call(null,E)}var Te=0,zt=0;function _A(I,E){I||OA("Assertion failed: "+E)}function jt(I){var E=C["_"+I];return _A(E,"Cannot call unknown function "+I+", make sure it is exported"),E}var $t={stackSave:function(){pt()},stackRestore:function(){mt()},arrayToC:function(I){var E,c,f=Pe(I.length);return E=I,c=f,n.set(E,c),f},stringToC:function(I){var E=0;if(I!=null&&I!==0){var c=(I.length<<2)+1;E=Pe(c),ts(I,E,c)}return E}},Fo={string:$t.stringToC,array:$t.arrayToC};function As(I,E,c,f,M){var P=jt(I),X=[],b=0;if(f)for(var BA=0;BA<f.length;BA++){var nA=Fo[c[BA]];nA?(b===0&&(b=pt()),X[BA]=nA(f[BA])):X[BA]=f[BA]}var oA,tA=P.apply(null,X);return tA=(oA=tA,E==="string"?He(oA):E==="boolean"?!!oA:oA),b!==0&&mt(b),tA}function Ro(I,E,c,f){switch((c=c||"i8").charAt(c.length-1)==="*"&&(c="i32"),c){case"i1":case"i8":n[I>>0]=E;break;case"i16":i[I>>1]=E;break;case"i32":B[I>>2]=E;break;case"i64":tempI64=[E>>>0,+bo(tempDouble=E)>=1?tempDouble>0?(0|Uo(+gs(tempDouble/4294967296),4294967295))>>>0:~~+Lo((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0],B[I>>2]=tempI64[0],B[I+4>>2]=tempI64[1];break;case"float":d[I>>2]=E;break;case"double":u[I>>3]=E;break;default:OA("invalid type for setValue: "+c)}}function or(I,E,c){switch((E=E||"i8").charAt(E.length-1)==="*"&&(E="i32"),E){case"i1":case"i8":return n[I>>0];case"i16":return i[I>>1];case"i32":case"i64":return B[I>>2];case"float":return d[I>>2];case"double":return u[I>>3];default:OA("invalid type for getValue: "+E)}return null}function rr(I,E,c,f){typeof I=="number"?(P=!0,X=I):(P=!1,X=I.length);var M=typeof E=="string"?E:null;if(b=c==4?f:[typeof qe=="function"?qe:Ue,Pe,Ue,Wt][c===void 0?2:c](Math.max(X,M?1:E.length)),P){for(f=b,_A((3&b)==0),BA=b+(-4&X);f<BA;f+=4)B[f>>2]=0;for(BA=b+X;f<BA;)n[f++>>0]=0;return b}if(M==="i8")return I.subarray||I.slice?o.set(I,b):o.set(new Uint8Array(I),b),b;for(var P,X,b,BA,nA,oA,tA,q=0;q<X;){var pA=I[q];if((nA=M||E[q])===0){q++;continue}nA=="i64"&&(nA="i32"),Ro(b+q,pA,nA),tA!==nA&&(oA=ko(nA),tA=nA),q+=oA}return b}function ir(I){return p?dt?qe(I):Wt(I):Ue(I)}function He(I,E){if(E===0||!I)return"";for(var c,f,M,P=0,X=0;P|=f=o[I+X>>0],(f!=0||E)&&(X++,!E||X!=E););E||(E=X);var b="";if(P<128){for(;E>0;)M=String.fromCharCode.apply(String,o.subarray(I,I+Math.min(E,1024))),b=b?b+M:M,I+=1024,E-=1024;return b}return c=I,function(nA,oA){for(var tA=oA;nA[tA];)++tA;if(tA-oA>16&&nA.subarray&&es)return es.decode(nA.subarray(oA,tA));for(var q,pA,xA,NA,bA,te,LA="";;){if(!(q=nA[oA++]))return LA;if(!(128&q)){LA+=String.fromCharCode(q);continue}if(pA=63&nA[oA++],(224&q)==192){LA+=String.fromCharCode((31&q)<<6|pA);continue}if(xA=63&nA[oA++],(240&q)==224?q=(15&q)<<12|pA<<6|xA:(NA=63&nA[oA++],(248&q)==240?q=(7&q)<<18|pA<<12|xA<<6|NA:(bA=63&nA[oA++],q=(252&q)==248?(3&q)<<24|pA<<18|xA<<12|NA<<6|bA:(1&q)<<30|pA<<24|xA<<18|NA<<12|bA<<6|(te=63&nA[oA++]))),q<65536)LA+=String.fromCharCode(q);else{var ke=q-65536;LA+=String.fromCharCode(55296|ke>>10,56320|1023&ke)}}}(o,c)}function ar(I){for(var E="";;){var c=n[I++>>0];if(!c)return E;E+=String.fromCharCode(c)}}function Ir(I,E){return function(f,M,P){for(var X=0;X<f.length;++X)n[M++>>0]=f.charCodeAt(X);P||(n[M>>0]=0)}(I,E,!1)}var es=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function Ye(I,E,c,f){if(!(f>0))return 0;for(var M=c,P=c+f-1,X=0;X<I.length;++X){var b=I.charCodeAt(X);if(b>=55296&&b<=57343&&(b=65536+((1023&b)<<10)|1023&I.charCodeAt(++X)),b<=127){if(c>=P)break;E[c++]=b}else if(b<=2047){if(c+1>=P)break;E[c++]=192|b>>6,E[c++]=128|63&b}else if(b<=65535){if(c+2>=P)break;E[c++]=224|b>>12,E[c++]=128|b>>6&63,E[c++]=128|63&b}else if(b<=2097151){if(c+3>=P)break;E[c++]=240|b>>18,E[c++]=128|b>>12&63,E[c++]=128|b>>6&63,E[c++]=128|63&b}else if(b<=67108863){if(c+4>=P)break;E[c++]=248|b>>24,E[c++]=128|b>>18&63,E[c++]=128|b>>12&63,E[c++]=128|b>>6&63,E[c++]=128|63&b}else{if(c+5>=P)break;E[c++]=252|b>>30,E[c++]=128|b>>24&63,E[c++]=128|b>>18&63,E[c++]=128|b>>12&63,E[c++]=128|b>>6&63,E[c++]=128|63&b}}return E[c]=0,c-M}function ts(I,E,c){return Ye(I,o,E,c)}function Je(I){for(var E=0,c=0;c<I.length;++c){var f=I.charCodeAt(c);f>=55296&&f<=57343&&(f=65536+((1023&f)<<10)|1023&I.charCodeAt(++c)),f<=127?++E:f<=2047?E+=2:f<=65535?E+=3:f<=2097151?E+=4:f<=67108863?E+=5:E+=6}return E}var ss=typeof TextDecoder<"u"?new TextDecoder("utf-16le"):void 0;function gr(I){for(var E=I,c=E>>1;i[c];)++c;if((E=c<<1)-I>32&&ss)return ss.decode(o.subarray(I,E));for(var f=0,M="";;){var P=i[I+2*f>>1];if(P==0)return M;++f,M+=String.fromCharCode(P)}}function Cr(I,E,c){if(c===void 0&&(c=2147483647),c<2)return 0;for(var f=E,M=(c-=2)<2*I.length?c/2:I.length,P=0;P<M;++P){var X=I.charCodeAt(P);i[E>>1]=X,E+=2}return i[E>>1]=0,E-f}function Er(I){return 2*I.length}function Br(I){for(var E=0,c="";;){var f=B[I+4*E>>2];if(f==0)return c;if(++E,f>=65536){var M=f-65536;c+=String.fromCharCode(55296|M>>10,56320|1023&M)}else c+=String.fromCharCode(f)}}function hr(I,E,c){if(c===void 0&&(c=2147483647),c<4)return 0;for(var f=E,M=f+c-4,P=0;P<I.length;++P){var X=I.charCodeAt(P);if(X>=55296&&X<=57343&&(X=65536+((1023&X)<<10)|1023&I.charCodeAt(++P)),B[E>>2]=X,(E+=4)+4>M)break}return B[E>>2]=0,E-f}function cr(I){for(var E=0,c=0;c<I.length;++c){var f=I.charCodeAt(c);f>=55296&&f<=57343&&++c,E+=4}return E}function Qr(I){var E=Je(I)+1,c=qe(E);return c&&Ye(I,n,c,E),c}function lr(I){var E=Je(I)+1,c=Pe(E);return Ye(I,n,c,E),c}function ur(I){return I}function dr(){var I,E=function(){var f=Error();if(!f.stack){try{throw Error(0)}catch(M){f=M}if(!f.stack)return"(no stack trace available)"}return f.stack.toString()}();return C.extraStackTrace&&(E+=`
14
- `+C.extraStackTrace()),(I=E).replace(/__Z[\w\d_]+/g,function(c){var f,M=f=c;return c===M?c:c+" ["+M+"]"})}function ct(I,E){return I%E>0&&(I+=E-I%E),I}function ns(I){C.buffer=s=I}function Qt(){C.HEAP8=n=new Int8Array(s),C.HEAP16=i=new Int16Array(s),C.HEAP32=B=new Int32Array(s),C.HEAPU8=o=new Uint8Array(s),C.HEAPU16=g=new Uint16Array(s),C.HEAPU32=h=new Uint32Array(s),C.HEAPF32=d=new Float32Array(s),C.HEAPF64=u=new Float64Array(s)}function os(){var I=C.usingWasm?65536:16777216,E=2147483648-I;if(B[R>>2]>E)return!1;var c=EA;for(EA=Math.max(EA,16777216);EA<B[R>>2];)EA=EA<=536870912?ct(2*EA,I):Math.min(ct((3*EA+2147483648)/4,I),E);var f=C.reallocBuffer(EA);return f&&f.byteLength==EA?(ns(f),Qt(),!0):(EA=c,!1)}l=Q=y=w=k=L=R=0,p=!1,C.reallocBuffer||(C.reallocBuffer=function(I){try{if(ArrayBuffer.transfer)E=ArrayBuffer.transfer(s,I);else{var E,c=n;E=new ArrayBuffer(I),new Int8Array(E).set(c)}}catch{return!1}return!!To(E)&&E});try{(N=Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype,"byteLength").get))(new ArrayBuffer(4))}catch{N=function(E){return E.byteLength}}var lt=C.TOTAL_STACK||5242880,EA=C.TOTAL_MEMORY||16777216;function Go(){return EA}function ye(I){for(;I.length>0;){var E=I.shift();if(typeof E=="function"){E();continue}var c=E.func;typeof c=="number"?E.arg===void 0?C.dynCall_v(c):C.dynCall_vi(c,E.arg):c(E.arg===void 0?null:E.arg)}}EA<lt&&MA("TOTAL_MEMORY should be larger than TOTAL_STACK, was "+EA+"! (TOTAL_STACK="+lt+")"),C.buffer?s=C.buffer:(typeof WebAssembly=="object"&&typeof WebAssembly.Memory=="function"?(C.wasmMemory=new WebAssembly.Memory({initial:EA/65536}),s=C.wasmMemory.buffer):s=new ArrayBuffer(EA),C.buffer=s),Qt();var rs=[],ut=[],is=[],as=[],Is=[],dt=!1,Mo=!1;function xo(I){rs.unshift(I)}function fr(I){ut.unshift(I)}function mr(I){is.unshift(I)}function pr(I){as.unshift(I)}function No(I){Is.unshift(I)}function yr(I,E,c){var f,M;pe("writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!"),c&&(f=n[M=E+Je(I)]),ts(I,E,1/0),c&&(n[M]=f)}function Sr(I,E,c){return I>=0?I:E<=32?2*Math.abs(1<<E-1)+I:Math.pow(2,E)+I}function Dr(I,E,c){if(I<=0)return I;var f=E<=32?Math.abs(1<<E-1):Math.pow(2,E-1);return I>=f&&(E<=32||I>f)&&(I=-2*f+I),I}var bo=Math.abs,Lo=Math.ceil,gs=Math.floor,Uo=Math.min,ee=0,ft=null,Se=null;function kr(I){return I}C.preloadedImages={},C.preloadedAudios={};var Cs="data:application/octet-stream;base64,";function ve(I){return String.prototype.startsWith?I.startsWith(Cs):I.indexOf(Cs)===0}(function(){var E="main.wast",c="main.wasm",f="main.temp.asm.js";ve(E)||(E=mA(E)),ve(c)||(c=mA(c)),ve(f)||(f=mA(f));var M={global:null,env:null,asm2wasm:wo,parent:C},P=null;function X(tA){return tA}function b(){try{if(C.wasmBinary)return new Uint8Array(C.wasmBinary);if(C.readBinary)return C.readBinary(c);throw"both async and sync fetching of the wasm failed"}catch(tA){OA(tA)}}C.asmPreload=C.asm;var BA=C.reallocBuffer,nA=function(tA){tA=ct(tA,C.usingWasm?65536:16777216);var q=C.buffer.byteLength;if(C.usingWasm)try{var pA=C.wasmMemory.grow((tA-q)/65536);return pA!==-1?C.buffer=C.wasmMemory.buffer:null}catch{return null}};C.reallocBuffer=function(tA){return oA==="asmjs"?BA(tA):nA(tA)};var oA="";C.asm=function(tA,q,pA){var xA;if(!(q=xA=q).table){var NA,bA=C.wasmTableSize;bA===void 0&&(bA=1024);var te=C.wasmMaxTableSize;typeof WebAssembly=="object"&&typeof WebAssembly.Table=="function"?te!==void 0?q.table=new WebAssembly.Table({initial:bA,maximum:te,element:"anyfunc"}):q.table=new WebAssembly.Table({initial:bA,element:"anyfunc"}):q.table=Array(bA),C.wasmTable=q.table}return q.memoryBase||(q.memoryBase=C.STATIC_BASE),q.tableBase||(q.tableBase=0),NA=function(ke,ae,St){if(typeof WebAssembly!="object")return MA("no native wasm support detected"),!1;if(!(C.wasmMemory instanceof WebAssembly.Memory))return MA("no native wasm Memory in use"),!1;function Ke(qA,PA){if((P=qA.exports).memory){var we,Dt,hs;we=P.memory,Dt=C.buffer,we.byteLength<Dt.byteLength&&MA("the new buffer in mergeMemory is smaller than the previous one. in native wasm, we should grow memory here"),hs=new Int8Array(Dt),new Int8Array(we).set(hs),ns(we),Qt()}C.asm=P,C.usingWasm=!0,function(Nr){if(ee--,C.monitorRunDependencies&&C.monitorRunDependencies(ee),ee==0&&(ft!==null&&(clearInterval(ft),ft=null),Se)){var Ho=Se;Se=null,Ho()}}("wasm-instantiate")}if(ae.memory=C.wasmMemory,M.global={NaN:NaN,Infinity:1/0},M["global.Math"]=Math,M.env=ae,ee++,C.monitorRunDependencies&&C.monitorRunDependencies(ee),C.instantiateWasm)try{return C.instantiateWasm(M,Ke)}catch(qA){return MA("Module.instantiateWasm callback failed with error: "+qA),!1}function Ie(qA){Ke(qA.instance,qA.module)}function Bs(qA){(!C.wasmBinary&&(j||AA)&&typeof fetch=="function"?fetch(c,{credentials:"same-origin"}).then(function(PA){if(!PA.ok)throw"failed to load wasm binary file at '"+c+"'";return PA.arrayBuffer()}).catch(function(){return b()}):new Promise(function(PA,we){PA(b())})).then(function(PA){return WebAssembly.instantiate(PA,M)}).then(qA).catch(function(PA){MA("failed to asynchronously prepare wasm: "+PA),OA(PA)})}return C.wasmBinary||typeof WebAssembly.instantiateStreaming!="function"||ve(c)||typeof fetch!="function"?Bs(Ie):WebAssembly.instantiateStreaming(fetch(c,{credentials:"same-origin"}),M).then(Ie).catch(function(qA){MA("wasm streaming compile failed: "+qA),MA("falling back to ArrayBuffer instantiation"),Bs(Ie)}),{}}(tA,q,pA),_A(NA,"no binaryen method succeeded."),NA},C.asm})(),Q=(l=1024)+4816,ut.push(),C.STATIC_BASE=l,C.STATIC_BUMP=4816;var kA=Q;function wr(I){n[kA]=n[I],n[kA+1]=n[I+1],n[kA+2]=n[I+2],n[kA+3]=n[I+3]}function Fr(I){n[kA]=n[I],n[kA+1]=n[I+1],n[kA+2]=n[I+2],n[kA+3]=n[I+3],n[kA+4]=n[I+4],n[kA+5]=n[I+5],n[kA+6]=n[I+6],n[kA+7]=n[I+7]}function Rr(I,E,c){var f=c>0?c:Je(I)+1,M=Array(f),P=Ye(I,M,0,M.length);return E&&(M.length=P),M}function Gr(I){for(var E=[],c=0;c<I.length;c++){var f=I[c];f>255&&(f&=255),E.push(String.fromCharCode(f))}return E.join("")}Q+=16,R=Ue(4),k=(y=w=_t(Q))+lt,L=_t(k),B[R>>2]=L,p=!0,C.wasmTableSize=4,C.wasmMaxTableSize=4,C.asmGlobalArg={},C.asmLibraryArg={abort:OA,assert:_A,enlargeMemory:os,getTotalMemory:Go,abortOnCannotGrowMemory:function(){OA("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+EA+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")},invoke_iii:function(E,c,f){var M=pt();try{return C.dynCall_iii(E,c,f)}catch(P){if(mt(M),typeof P!="number"&&P!=="longjmp")throw P;C.setThrew(1,0)}},___assert_fail:function(E,c,f,M){OA("Assertion failed: "+He(E)+", at: "+[c?He(c):"unknown filename",f,M?He(M):"unknown function"])},___setErrNo:function(E){return C.___errno_location&&(B[C.___errno_location()>>2]=E),E},_abort:function(){C.abort()},_emscripten_memcpy_big:function(E,c,f){return o.set(o.subarray(c,c+f),E),E},_llvm_floor_f64:gs,DYNAMICTOP_PTR:R,tempDoublePtr:kA,ABORT:Te,STACKTOP:w,STACK_MAX:k};var Es=C.asm(C.asmGlobalArg,C.asmLibraryArg,s);C.asm=Es,C.___errno_location=function(){return C.asm.___errno_location.apply(null,arguments)};var To=C._emscripten_replace_memory=function(){return C.asm._emscripten_replace_memory.apply(null,arguments)};C._free=function(){return C.asm._free.apply(null,arguments)};var qe=C._malloc=function(){return C.asm._malloc.apply(null,arguments)};C._memcpy=function(){return C.asm._memcpy.apply(null,arguments)},C._memset=function(){return C.asm._memset.apply(null,arguments)},C._sbrk=function(){return C.asm._sbrk.apply(null,arguments)},C._stb_vorbis_js_channels=function(){return C.asm._stb_vorbis_js_channels.apply(null,arguments)},C._stb_vorbis_js_close=function(){return C.asm._stb_vorbis_js_close.apply(null,arguments)},C._stb_vorbis_js_decode=function(){return C.asm._stb_vorbis_js_decode.apply(null,arguments)},C._stb_vorbis_js_open=function(){return C.asm._stb_vorbis_js_open.apply(null,arguments)},C._stb_vorbis_js_sample_rate=function(){return C.asm._stb_vorbis_js_sample_rate.apply(null,arguments)},C.establishStackSpace=function(){return C.asm.establishStackSpace.apply(null,arguments)},C.getTempRet0=function(){return C.asm.getTempRet0.apply(null,arguments)},C.runPostSets=function(){return C.asm.runPostSets.apply(null,arguments)},C.setTempRet0=function(){return C.asm.setTempRet0.apply(null,arguments)},C.setThrew=function(){return C.asm.setThrew.apply(null,arguments)};var Pe=C.stackAlloc=function(){return C.asm.stackAlloc.apply(null,arguments)},mt=C.stackRestore=function(){return C.asm.stackRestore.apply(null,arguments)},pt=C.stackSave=function(){return C.asm.stackSave.apply(null,arguments)};function De(I){this.name="ExitStatus",this.message="Program terminated with exit("+I+")",this.status=I}function yt(I){I=I||C.arguments,!(ee>0)&&(function(){if(C.preRun)for(typeof C.preRun=="function"&&(C.preRun=[C.preRun]);C.preRun.length;)xo(C.preRun.shift());ye(rs)}(),!(ee>0)&&(C.calledRun||(C.setStatus?(C.setStatus("Running..."),setTimeout(function(){setTimeout(function(){C.setStatus("")},1),E()},1)):E())));function E(){!C.calledRun&&(C.calledRun=!0,Te||(dt||(dt=!0,ye(ut)),ye(is),C.onRuntimeInitialized&&C.onRuntimeInitialized(),function(){if(C.postRun)for(typeof C.postRun=="function"&&(C.postRun=[C.postRun]);C.postRun.length;)No(C.postRun.shift());ye(Is)}()))}}function Mr(I,E){(!E||!C.noExitRuntime||I!==0)&&(C.noExitRuntime||(Te=!0,zt=I,w=G,ye(as),Mo=!0,C.onExit&&C.onExit(I)),C.quit(I,new De(I)))}function OA(I){throw C.onAbort&&C.onAbort(I),I!==void 0?(Le(I),MA(I),I=JSON.stringify(I)):I="",Te=!0,zt=1,"abort("+I+"). Build with -s ASSERTIONS=1 for more info."}if(C.dynCall_iii=function(){return C.asm.dynCall_iii.apply(null,arguments)},C.asm=Es,C.ccall=As,C.cwrap=function(E,c,f,M){var P=(f=f||[]).every(function(X){return X==="number"});return c!=="string"&&P&&!M?jt(E):function(){return As(E,c,f,arguments,M)}},De.prototype=Error(),De.prototype.constructor=De,Se=function I(){C.calledRun||yt(),C.calledRun||(Se=I)},C.run=yt,C.abort=OA,C.preInit)for(typeof C.preInit=="function"&&(C.preInit=[C.preInit]);C.preInit.length>0;)C.preInit.pop()();C.noExitRuntime=!0,yt(),C.onRuntimeInitialized=()=>{rn=!0,an()},VA.decode=function(I){return function(c){if(!rn)throw Error("Not initialized");var f={};function M(ae){return new Int32Array(C.HEAPU8.buffer,ae,1)[0]}function P(ae,St){var Ke=new ArrayBuffer(St*Float32Array.BYTES_PER_ELEMENT),Ie=new Float32Array(Ke);return Ie.set(new Float32Array(C.HEAPU8.buffer,ae,St)),Ie}f.open=C.cwrap("stb_vorbis_js_open","number",[]),f.close=C.cwrap("stb_vorbis_js_close","void",["number"]),f.channels=C.cwrap("stb_vorbis_js_channels","number",["number"]),f.sampleRate=C.cwrap("stb_vorbis_js_sample_rate","number",["number"]),f.decode=C.cwrap("stb_vorbis_js_decode","number",["number","number","number","number","number"]);var X,b,BA,nA,oA=f.open(),tA=(X=c,b=c.byteLength,BA=C._malloc(b),(nA=new Uint8Array(C.HEAPU8.buffer,BA,b)).set(new Uint8Array(X,0,b)),nA),q=C._malloc(4),pA=C._malloc(4),xA=f.decode(oA,tA.byteOffset,tA.byteLength,q,pA);if(C._free(tA.byteOffset),xA<0)throw f.close(oA),C._free(q),Error("stbvorbis decode failed: "+xA);for(var NA=f.channels(oA),bA=Array(NA),te=new Int32Array(C.HEAPU32.buffer,M(q),NA),LA=0;LA<NA;LA++)bA[LA]=P(te[LA],xA),C._free(te[LA]);var ke=f.sampleRate(oA);return f.close(oA),C._free(M(q)),C._free(q),{data:bA,sampleRate:ke,eof:!0,error:null}}(I)}})();function In(t){let A=t.messageData,e=t.channelNumber,s={};switch(e>=0&&(s=this.workletProcessorChannels[e]),t.messageType){case z.noteOn:this.noteOn(e,A[0],A[1],A[2]);break;case z.noteOff:this.noteOff(e,A);break;case z.pitchWheel:this.pitchWheel(e,A[0],A[1]);break;case z.ccChange:this.controllerChange(e,A[0],A[1],A[2]);break;case z.customcCcChange:s.customControllers[A[0]]=A[1];break;case z.killNote:this.killNote(e,A);break;case z.programChange:this.programChange(e,A[0],A[1]);break;case z.channelPressure:this.channelPressure(e,A);break;case z.polyPressure:this.polyPressure(e,A[0],A[1]);break;case z.ccReset:e===HA?this.resetAllControllers():this.resetControllers(e);break;case z.systemExclusive:this.systemExclusive(A);break;case z.setChannelVibrato:if(e===HA)for(let i=0;i<this.workletProcessorChannels.length;i++)A.rate===-1?this.disableAndLockGSNRPN(i):this.setVibrato(i,A.depth,A.rate,A.delay);else A.rate===-1?this.disableAndLockGSNRPN(e):this.setVibrato(e,A.depth,A.rate,A.delay);break;case z.stopAll:e===HA?this.stopAllChannels(A===1):this.stopAll(e,A===1);break;case z.killNotes:this.voiceKilling(A);break;case z.muteChannel:this.muteChannel(e,A);break;case z.addNewChannel:this.createWorkletChannel(!0);break;case z.debugMessage:this.debugMessage();break;case z.setMasterParameter:let n=A[0],o=A[1];switch(n){case Ce.masterPan:this.setMasterPan(o);break;case Ce.mainVolume:this.setMasterGain(o);break;case Ce.voicesCap:this.voiceCap=o;break;case Ce.interpolationType:this.interpolationType=o;break}break;case z.setDrums:this.setDrums(e,A);break;case z.transpose:e===HA?this.transposeAllChannels(A[0],A[1]):this.transposeChannel(e,A[0],A[1]);break;case z.highPerformanceMode:this.highPerformanceMode=A;break;case z.lockController:A[0]===HA?s.lockPreset=A[1]:s.lockedControllers[A[0]]=A[1];break;case z.sequencerSpecific:this.sequencer.processMessage(A.messageType,A.messageData);break;case z.soundFontManager:try{this.soundfontManager.handleMessage(A[0],A[1])}catch(i){this.post({messageType:uA.soundfontError,messageData:i})}this.clearSoundFont(!0,!1);break;case z.keyModifierManager:this.keyModifierManager.handleMessage(A[0],A[1]);break;case z.requestSynthesizerSnapshot:this.sendSynthesizerSnapshot();break;case z.setLogLevel:ps(A[0],A[1],A[2],A[3]);break;case z.setEffectsGain:this.reverbGain=A[0],this.chorusGain=A[1];break;case z.destroyWorklet:this.alive=!1;break;default:H("Unrecognized event:",A);break}}function gn(t,A){this.enableEventSystem&&this.post({messageType:uA.eventCall,messageData:{eventName:t,eventData:A}})}function Cn(){if(!this.enableEventSystem)return;let t=this.workletProcessorChannels.map(A=>{let e=(A.midiControllers[gA+K.pitchWheelRange]>>7)+(A.midiControllers[gA+K.pitchWheelRange]&127)/127;return{voicesAmount:A.voices.length,pitchBend:A.midiControllers[gA+K.pitchWheel],pitchBendRangeSemitones:e,isMuted:A.isMuted,isDrum:A.drumChannel}});this.post({messageType:uA.channelProperties,messageData:t})}function Vo(t,A,e){let s=t,n=A<<7|e;return t===127&&A===127&&e===127?{midiNote:-1,centTuning:null}:{midiNote:s,centTuning:n*.0061}}function En(t,A=0){let e=t[0];if(!(this.deviceID!==HA&&t[1]!==127&&this.deviceID!==t[1]))switch(e){default:H(`%cUnrecognized SysEx: %c${lA(t)}`,r.warn,r.unrecognized);break;case 126:case 127:switch(t[2]){case 4:let n;switch(t[3]){case 1:let o=t[5]<<7|t[4];this.setMIDIVolume(o/16384),m(`%cMaster Volume. Volume: %c${o}`,r.info,r.value);break;case 2:let g=((t[5]<<7|t[4])-8192)/8192;this.setMasterPan(g),m(`%cMaster Pan. Pan: %c${g}`,r.info,r.value);break;case 3:let B=(t[5]<<7|t[6])-8192;n=Math.floor(B/81.92),this.setMasterTuning(n),m(`%cMaster Fine Tuning. Cents: %c${n}`,r.info,r.value);break;case 4:n=(t[5]-64)*100,this.setMasterTuning(n),m(`%cMaster Coarse Tuning. Cents: %c${n}`,r.info,r.value);break;default:H(`%cUnrecognized MIDI Device Control Real-time message: %c${lA(t)}`,r.warn,r.unrecognized)}break;case 9:t[3]===1?(m("%cGM system on",r.info),this.system="gm"):t[3]===3?(m("%cGM2 system on",r.info),this.system="gm2"):(m("%cGM system off, defaulting to GS",r.info),this.system="gs");break;case 8:switch(t[3]){case 2:case 7:let o=4;t[3]===7&&o++;let i=t[o++],g=t[o++];for(let h=0;h<g;h++)this.tunings[i][t[o++]]=Vo(t[o++],t[o++],t[o++]);m(`%cSingle Note Tuning. Program: %c${i}%c Keys affected: %c${g}`,r.info,r.recognized,r.info,r.recognized);break;case 9:case 8:let B=new Int8Array(12);if(t[3]===8)for(let h=0;h<12;h++)B[h]=t[7+h]-64;else for(let h=0;h<24;h+=2){let d=(t[7+h]<<7|t[8+h])-8192;B[h/2]=Math.floor(d/81.92)}(t[4]&1)===1&&this.setOctaveTuning(14+A,B),(t[4]>>1&1)===1&&this.setOctaveTuning(15+A,B);for(let h=0;h<7;h++)(t[5]>>h&1)===1&&this.setOctaveTuning(7+h+A,B);for(let h=0;h<7;h++)(t[6]>>h&1)===1&&this.setOctaveTuning(h+A,B);m(`%cMIDI Octave Scale ${t[3]===8?"(1 byte)":"(2 bytes)"} tuning via Tuning: %c${B.join(" ")}`,r.info,r.value);break;default:H(`%cUnrecognized MIDI Tuning standard message: %c${lA(t)}`,r.warn,r.unrecognized);break}break;default:H(`%cUnrecognized MIDI Realtime/non realtime message: %c${lA(t)}`,r.warn,r.unrecognized)}break;case 65:let s=function(){H(`%cUnrecognized Roland %cGS %cSysEx: %c${lA(t)}`,r.warn,r.recognized,r.warn,r.unrecognized)};if(t[2]===66&&t[3]===18){let n=t[7];if(t[6]===127){n===0?(m("%cGS Reset received!",r.info),this.resetAllControllers(!1),this.system="gs"):n===127&&(m("%cGS system off, switching to GM2",r.info),this.resetAllControllers(!1),this.system="gm2");return}else if(t[4]===64){if((t[5]&16)>0){let o=[9,0,1,2,3,4,5,6,7,8,10,11,12,13,14,15][t[5]&15]+A;switch(t[6]){default:s();break;case 21:let i=n>0&&t[5]>>4;this.setDrums(o,i),m(`%cChannel %c${o}%c ${i?"is now a drum channel":"now isn't a drum channel"}%c via: %c${lA(t)}`,r.info,r.value,r.recognized,r.info,r.value);return;case 22:let g=n-64;this.transposeChannel(o,g),m(`%cChannel %c${o}%c pitch shift. Semitones %c${g}%c, with %c${lA(t)}`,r.info,r.recognized,r.info,r.value,r.info,r.value);return;case 28:let B=n;B===0&&(B=Math.floor(Math.random()*128)),this.controllerChange(o,S.pan,B);break;case 33:this.controllerChange(o,S.chorusDepth,n);break;case 34:this.controllerChange(o,S.reverbDepth,n);break;case 64:case 65:case 66:case 67:case 68:case 69:case 70:case 71:case 72:case 73:case 74:case 75:let h=t.length-9,d=new Int8Array(12);for(let l=0;l<h;l++)d[l]=t[l+7]-64;this.setOctaveTuning(o,d);let u=n-64;m(`%cChannel %c${o}%c octave scale tuning. Cents %c${d.join(" ")}%c, with %c${lA(t)}`,r.info,r.recognized,r.info,r.value,r.info,r.value),this.setChannelTuning(o,u);break}return}else if(t[5]===0&&t[6]===6){m(`%cRoland GS Master Pan set to: %c${n}%c with: %c${lA(t)}`,r.info,r.value,r.info,r.value),this.setMasterPan((n-64)/64);return}else if(t[5]===0&&t[6]===5){let o=n-64;m(`%cRoland GS Master Key-Shift set to: %c${o}%c with: %c${lA(t)}`,r.info,r.value,r.info,r.value),this.setMasterTuning(o*100);return}else if(t[5]===0&&t[6]===4){m(`%cRoland GS Master Volume set to: %c${n}%c with: %c${lA(t)}`,r.info,r.value,r.info,r.value),this.setMIDIVolume(n/127);return}}s();return}else if(t[2]===22&&t[3]===18&&t[4]===16){this.setMIDIVolume(t[7]/100),m(`%cRoland Master Volume control set to: %c${t[7]}%c via: %c${lA(t)}`,r.info,r.value,r.info,r.value);return}else{H(`%cUnrecognized Roland SysEx: %c${lA(t)}`,r.warn,r.unrecognized);return}case 67:if(t[2]===76)if(t[3]===0&&t[4]===0)switch(t[5]){case 4:let n=t[6];this.setMIDIVolume(n/127),m(`%cXG master volume. Volume: %c${n}`,r.info,r.recognized);break;case 6:let o=t[6]-64;this.transposeAllChannels(o),m(`%cXG master transpose. Volume: %c${o}`,r.info,r.recognized);break;case 126:m("%cXG system on",r.info),this.resetAllControllers(!1),this.system="xg";break}else if(t[3]===8){if(this.system!=="xg")return;let n=t[4]+A;if(n>=this.workletProcessorChannels.length)return;let o=t[6];switch(t[5]){case 1:this.controllerChange(n,S.bankSelect,o);break;case 2:this.controllerChange(n,S.lsbForControl0BankSelect,o);break;case 3:this.programChange(n,o);break;case 8:let i=this.workletProcessorChannels[n];if(i.drumChannel)return;let g=o-64;i.channelTransposeKeyShift=g;break;case 11:this.controllerChange(n,S.mainVolume,o);break;case 14:let B=o;B===0&&(B=Math.floor(Math.random()*127)),this.controllerChange(n,S.pan,B);break;case 19:this.controllerChange(n,S.reverbDepth,o);break;case 18:this.controllerChange(n,S.chorusDepth,o);break;default:H(`%cUnrecognized Yamaha XG Part Setup: %c${t[5].toString(16).toUpperCase()}`,r.warn,r.unrecognized)}}else this.system==="xg"&&H(`%cUnrecognized Yamaha XG SysEx: %c${lA(t)}`,r.warn,r.unrecognized);else this.system==="xg"&&H(`%cUnrecognized Yamaha SysEx: %c${lA(t)}`,r.warn,r.unrecognized);break}}var Oo=1e3/200;function Bn(t,A,e){if(A.transformAmount===0)return A.currentValue=0,0;let s;if(A.sourceUsesCC)s=t[A.sourceIndex];else{let h=A.sourceIndex+gA;switch(A.sourceIndex){case K.noController:s=16383;break;case K.noteOnKeyNum:s=e.midiNote<<7;break;case K.noteOnVelocity:s=e.velocity<<7;break;case K.polyPressure:s=e.pressure<<7;break;default:s=t[h];break}}let n=re[A.sourceCurveType][A.sourcePolarity][A.sourceDirection][s],o;if(A.secSrcUsesCC)o=t[A.secSrcIndex];else{let h=A.secSrcIndex+gA;switch(A.secSrcIndex){case K.noController:o=16383;break;case K.noteOnKeyNum:o=e.midiNote<<7;break;case K.noteOnVelocity:o=e.velocity<<7;break;case K.polyPressure:o=e.pressure<<7;break;default:o=t[h]}}let i=re[A.secSrcCurveType][A.secSrcPolarity][A.secSrcDirection][o],g=A.transformAmount;A.isEffectModulator&&g<=1e3&&(g*=Oo,g=Math.min(g,1e3));let B=n*i*g;return A.transformType===2&&(B=Math.abs(B)),A.currentValue=B,B}function XA(t,A,e=-1,s=0){let n=t.modulators,o=t.generators,i=t.modulatedGenerators;if(e===-1){i.set(o),n.forEach(h=>{let d=T[h.modulatorDestination],u=i[h.modulatorDestination]+Bn(A,h,t);i[h.modulatorDestination]=Math.max(d.min,Math.min(u,d.max))}),TA.recalculate(t),UA.recalculate(t);return}let g=new Set([a.initialAttenuation,a.delayVolEnv,a.attackVolEnv,a.holdVolEnv,a.decayVolEnv,a.sustainVolEnv,a.releaseVolEnv,a.keyNumToVolEnvHold,a.keyNumToVolEnvDecay]),B=new Set;n.forEach(h=>{if(h.sourceUsesCC===e&&h.sourceIndex===s||h.secSrcUsesCC===e&&h.secSrcIndex===s){let d=h.modulatorDestination;B.has(d)||(i[d]=o[d],Bn(A,h,t),n.forEach(u=>{if(u.modulatorDestination===d){let l=T[h.modulatorDestination],Q=i[h.modulatorDestination]+u.currentValue;i[h.modulatorDestination]=Math.max(l.min,Math.min(Q,l.max))}}),B.add(d))}}),[...B].some(h=>g.has(h))&&TA.recalculate(t),UA.recalculate(t)}var re=[];for(let t=0;t<4;t++){re[t]=[[new Float32Array(CA),new Float32Array(CA)],[new Float32Array(CA),new Float32Array(CA)]];for(let A=0;A<CA;A++)re[t][0][0][A]=oe(0,t,A/CA,0),re[t][1][0][A]=oe(0,t,A/CA,1),re[t][0][1][A]=oe(1,t,A/CA,0),re[t][1][1][A]=oe(1,t,A/CA,1)}function hn(t,A,e,s=!1,n=!0,o=currentTime){if(e===0){this.noteOff(t,A);return}let i=this.workletProcessorChannels[t];if(this.highPerformanceMode&&this.totalVoicesAmount>200&&e<40||this.highPerformanceMode&&e<10||i.isMuted)return;let g=A+i.channelTransposeKeyShift,B=g;if(A>127||A<0)return;let h=i.preset.program;this.tunings[h]?.[A]?.midiNote>=0&&(B=this.tunings[h]?.[A].midiNote),i.velocityOverride>0&&(e=i.velocityOverride);let d=this.keyModifierManager.getVelocity(t,A);d>-1&&(e=d);let u=this.getWorkletVoices(t,B,e,i,o,g,s),l=i.voices;u.forEach(Q=>{let p=Q.generators[a.exclusiveClass];p!==0&&l.forEach(G=>{G.generators[a.exclusiveClass]===p&&(this.releaseVoice(G,cn),G.modulatedGenerators[a.releaseVolEnv]=-7e3,G.modulatedGenerators[a.releaseModEnv]=-7e3,TA.recalculate(G),UA.recalculate(G))}),XA(Q,i.midiControllers);let y=Q.modulatedGenerators[a.startAddrsOffset]+Q.modulatedGenerators[a.startAddrsCoarseOffset]*32768,w=Q.modulatedGenerators[a.endAddrOffset]+Q.modulatedGenerators[a.endAddrsCoarseOffset]*32768,k=Q.modulatedGenerators[a.startloopAddrsOffset]+Q.modulatedGenerators[a.startloopAddrsCoarseOffset]*32768,L=Q.modulatedGenerators[a.endloopAddrsOffset]+Q.modulatedGenerators[a.endloopAddrsCoarseOffset]*32768,R=Q.sample,N=G=>Math.max(0,Math.min(R.sampleData.length-1,G));if(R.cursor=N(R.cursor+y),R.end=N(R.end+w),R.loopStart=N(R.loopStart+k),R.loopEnd=N(R.loopEnd+L),R.loopEnd<R.loopStart){let G=R.loopStart;R.loopStart=R.loopEnd,R.loopEnd=G}R.loopEnd-R.loopStart<1&&(R.loopingMode=0,R.isLooping=!1),Q.volumeEnvelope.attenuation=Q.volumeEnvelope.attenuationTarget,Q.currentPan=(Math.max(-500,Math.min(500,Q.modulatedGenerators[a.pan]))+500)/1e3}),this.totalVoicesAmount+=u.length,this.totalVoicesAmount>this.voiceCap&&this.voiceKilling(u.length),l.push(...u),n&&(this.sendChannelProperties(),this.callEvent("noteon",{midiNote:A,channel:t,velocity:e}))}function Qn(t,A){if(A>127||A<0){H("Received a noteOn for note",A,"Ignoring.");return}let e=A+this.workletProcessorChannels[t].channelTransposeKeyShift;if(this.highPerformanceMode&&!this.workletProcessorChannels[t].drumChannel){this.killNote(t,e);return}this.workletProcessorChannels[t].voices.forEach(n=>{n.realKey!==e||n.isInRelease===!0||(this.workletProcessorChannels[t].holdPedal?this.workletProcessorChannels[t].sustainedVoices.push(n):this.releaseVoice(n))}),this.callEvent("noteoff",{midiNote:A,channel:t})}function ln(t,A){this.workletProcessorChannels[t].voices.forEach(e=>{e.realKey===A&&(e.modulatedGenerators[a.releaseVolEnv]=-12e3,this.releaseVoice(e))})}function un(t,A=!1){let e=this.workletProcessorChannels[t].voices;A?(e.length=0,this.workletProcessorChannels[t].sustainedVoices.length=0,this.sendChannelProperties()):(e.forEach(s=>{s.isInRelease||this.releaseVoice(s)}),this.workletProcessorChannels[t].sustainedVoices.forEach(s=>{this.releaseVoice(s)}))}function dn(t=!1){m("%cStop all received!",r.info);for(let A=0;A<this.workletProcessorChannels.length;A++)this.stopAll(A,t);this.callEvent("stopall",void 0)}function fn(t,A=!1){this.transposition=0;for(let e=0;e<this.workletProcessorChannels.length;e++)this.transposeChannel(e,t,A);this.transposition=t}function mn(t,A,e=!1){let s=this.workletProcessorChannels[t];s.drumChannel||(A+=this.transposition);let n=Math.trunc(A),o=s.channelTransposeKeyShift+s.customControllers[aA.channelTransposeFine]/100;s.drumChannel&&!e||A===o||(n!==s.channelTransposeKeyShift&&this.stopAll(t,!1),s.channelTransposeKeyShift=n,s.customControllers[aA.channelTransposeFine]=(A-n)*100)}function pn(t,A,e=!0){let s=this.workletProcessorChannels[t];A=Math.round(A),s.customControllers[aA.channelTuning]=A,e&&m(`%cChannel ${t} fine tuning. Cents: %c${A}`,r.info,r.value)}function yn(t,A){let e=this.workletProcessorChannels[t];A=Math.round(A),e.customControllers[aA.channelTuningSemitones]=A,m(`%cChannel ${t} coarse tuning. Semitones: %c${A}`,r.info,r.value)}function Sn(t){t=Math.round(t);for(let A=0;A<this.workletProcessorChannels.length;A++)this.workletProcessorChannels[A].customControllers[aA.masterTuning]=t}function Dn(t,A){let e=this.workletProcessorChannels[t];A=Math.round(A),m(`%cChannel ${t} modulation depth. Cents: %c${A}`,r.info,r.value),e.customControllers[aA.modulationMultiplier]=A/50}function kn(t,A,e){if(this.workletProcessorChannels[t].lockedControllers[gA+K.pitchWheel])return;let s=e|A<<7;this.callEvent("pitchwheel",{channel:t,MSB:A,LSB:e}),this.workletProcessorChannels[t].midiControllers[gA+K.pitchWheel]=s,this.workletProcessorChannels[t].voices.forEach(n=>XA(n,this.workletProcessorChannels[t].midiControllers,0,K.pitchWheel)),this.sendChannelProperties()}function wn(t,A){let e=this.workletProcessorChannels[t];e.midiControllers[gA+K.channelPressure]=A<<7,this.workletProcessorChannels[t].voices.forEach(s=>XA(s,e.midiControllers,0,K.channelPressure)),this.callEvent("channelpressure",{channel:t,pressure:A})}function Fn(t,A,e){this.workletProcessorChannels[t].voices.forEach(s=>{s.midiNote===A&&(s.pressure=e,XA(s,this.workletProcessorChannels[t].midiControllers,0,K.polyPressure))}),this.callEvent("polypressure",{channel:t,midiNote:A,pressure:e})}function Rn(t,A){if(A.length!==12)throw new Error("Tuning is not the length of 12.");this.workletProcessorChannels[t].channelOctaveTuning=A}function Gn(t,A,e,s=!1){let n=this.workletProcessorChannels[t];if(n===void 0){H(`Trying to access channel ${t} which does not exist... ignoring!`);return}if(A>127){if(!s)return;switch(A){default:return;case Mt.velocityOverride:n.velocityOverride=e}}if(A>=S.lsbForControl1ModulationWheel&&A<=S.lsbForControl13EffectControl2&&A!==S.lsbForControl6DataEntry){let o=A-32;if(n.lockedControllers[o])return;n.midiControllers[o]=n.midiControllers[o]&16256|e&127,n.voices.forEach(i=>XA(i,n.midiControllers,1,o))}switch(A){case S.allNotesOff:this.stopAll(t);break;case S.allSoundOff:this.stopAll(t,!0);break;case S.bankSelect:let o=e;if(!s){switch(this.system){case"gm":m(`%cIgnoring the Bank Select (${e}), as the synth is in GM mode.`,r.info);return;case"xg":o===120||o===126||o===127?this.setDrums(t,!0):t%16!==SA&&this.setDrums(t,!1);break;case"gm2":o===120&&this.setDrums(t,!0)}n.drumChannel&&(o=128),o===128&&!n.drumChannel&&(o=KA(n))}zA(n,o);break;case S.lsbForControl0BankSelect:this.system==="xg"?n.drumChannel||e!==127&&zA(n,e):this.system==="gm2"&&zA(n,e);break;case S.RPNLsb:n.RPValue=n.RPValue<<7|e,n.dataEntryState=fA.RPFine;break;case S.RPNMsb:n.RPValue=e,n.dataEntryState=fA.RPCoarse;break;case S.NRPNMsb:n.NRPCoarse=e,n.dataEntryState=fA.NRPCoarse;break;case S.NRPNLsb:n.NRPFine=e,n.dataEntryState=fA.NRPFine;break;case S.dataEntryMsb:this.dataEntryCoarse(t,e);break;case S.lsbForControl6DataEntry:this.dataEntryFine(t,e);break;case S.resetAllControllers:this.resetControllers(t);break;case S.sustainPedal:e>=64?n.holdPedal=!0:(n.holdPedal=!1,n.sustainedVoices.forEach(i=>{this.releaseVoice(i)}),n.sustainedVoices=[]);break;default:if(n.lockedControllers[A])return;n.midiControllers[A]=e<<7,n.voices.forEach(i=>XA(i,n.midiControllers,1,A));break}this.callEvent("controllerchange",{channel:t,controllerNumber:A,controllerValue:e})}function Mn(t){this.midiVolume=t,this.setMasterPan(this.pan)}function xn(t){this.masterGain=t*Yt,this.setMasterPan(this.pan)}function Nn(t){this.pan=t,t=t/2+.5,this.panLeft=1-t,this.panRight=t}function bn(t,A){A&&this.stopAll(t,!0),this.workletProcessorChannels[t].isMuted=A,this.sendChannelProperties(),this.callEvent("mutechannel",{channel:t,isMuted:A})}function Ln(t){this.workletProcessorChannels[t].lockGSNRPNParams=!0,this.workletProcessorChannels[t].channelVibrato.rate=0,this.workletProcessorChannels[t].channelVibrato.delay=0,this.workletProcessorChannels[t].channelVibrato.depth=0}function Un(t,A,e,s){this.workletProcessorChannels[t].lockGSNRPNParams||(this.workletProcessorChannels[t].channelVibrato.rate=e,this.workletProcessorChannels[t].channelVibrato.delay=s,this.workletProcessorChannels[t].channelVibrato.depth=A)}function Tn(t,A){let e=this.workletProcessorChannels[t],s=()=>{e.channelVibrato.delay===0&&e.channelVibrato.rate===0&&e.channelVibrato.depth===0&&(e.channelVibrato.depth=50,e.channelVibrato.rate=8,e.channelVibrato.delay=.6)};switch(e.dataEntryState){default:case fA.Idle:break;case fA.NRPFine:if(this.system!=="gs"||e.lockGSNRPNParams)return;switch(e.NRPCoarse){default:if(A===64)return;H(`%cUnrecognized NRPN for %c${t}%c: %c(0x${e.NRPCoarse.toString(16).toUpperCase()} 0x${e.NRPFine.toString(16).toUpperCase()})%c data value: %c${A}`,r.warn,r.recognized,r.warn,r.unrecognized,r.warn,r.value);break;case 1:switch(e.NRPFine){default:if(A===64)return;H(`%cUnrecognized NRPN for %c${t}%c: %c(0x${e.NRPCoarse.toString(16)} 0x${e.NRPFine.toString(16)})%c data value: %c${A}`,r.warn,r.recognized,r.warn,r.unrecognized,r.warn,r.value);break;case 8:if(A===64)return;s(),e.channelVibrato.rate=A/64*8,m(`%cVibrato rate for %c${t}%c is now set to %c${A} = ${e.channelVibrato.rate}%cHz.`,r.info,r.recognized,r.info,r.value,r.info);break;case 9:if(A===64)return;s(),e.channelVibrato.depth=A/2,m(`%cVibrato depth for %c${t}%c is now set to %c${A} = ${e.channelVibrato.depth}%c cents range of detune.`,r.info,r.recognized,r.info,r.value,r.info);break;case 10:if(A===64)return;s(),e.channelVibrato.delay=A/64/3,m(`%cVibrato delay for %c${t}%c is now set to %c${A} = ${e.channelVibrato.delay}%c seconds.`,r.info,r.recognized,r.info,r.value,r.info);break;case 32:let i=A;this.controllerChange(t,S.brightness,A),m(`%cFilter cutoff for %c${t}%c is now set to %c${i}`,r.info,r.recognized,r.info,r.value)}break;case 24:let n=A-64;e.keyCentTuning[e.NRPFine]=n*100,m(`%cGS drum key tuning. MIDI note: %c${e.NRPFine}%c semitones: %c${n}`,r.info,r.recognized,r.info,r.value);break;case 29:let o=A;this.controllerChange(t,S.reverbDepth,o),m(`%cGS Drum reverb for %c${t}%c: %c${o}`,r.info,r.recognized,r.info,r.value);break}break;case fA.RPCoarse:case fA.RPFine:switch(e.RPValue){default:H(`%cUnrecognized RPN for %c${t}%c: %c(0x${e.RPValue.toString(16)})%c data value: %c${A}`,r.warn,r.recognized,r.warn,r.unrecognized,r.warn,r.value);break;case 0:e.midiControllers[gA+K.pitchWheelRange]=A<<7,m(`%cChannel ${t} bend range. Semitones: %c${A}`,r.info,r.value);break;case 2:this.setChannelTuningSemitones(t,A-64);break;case 1:this.setChannelTuning(t,A-64,!1);break;case 5:this.setModulationDepth(t,A*100);break;case 16383:this.resetParameters(t);break}}}function Hn(t,A){let e=this.workletProcessorChannels[t];switch(e.dataEntryState){default:break;case fA.RPCoarse:case fA.RPFine:switch(e.RPValue){default:break;case 0:if(A===0)break;e.midiControllers[gA+K.pitchWheelRange]|=A;let s=(e.midiControllers[gA+K.pitchWheelRange]>>7)+A/127;m(`%cChannel ${t} bend range. Semitones: %c${s}`,r.info,r.value);break;case 1:let o=e.customControllers[aA.channelTuning]<<7|A;this.setChannelTuning(t,o*.01220703125);break;case 5:let g=e.customControllers[aA.modulationMultiplier]*50+A/128*100;this.setModulationDepth(t,g);break;case 16383:this.resetParameters(t);break}}}function Yn(t=!0){t&&m("%cResetting all controllers!",r.info),this.callEvent("allcontrollerreset",void 0);for(let A=0;A<this.workletProcessorChannels.length;A++){this.resetControllers(A);let e=this.workletProcessorChannels[A];e.lockPreset?this.callEvent("drumchange",{channel:A,isDrumChannel:e.drumChannel}):(e.presetUsesOverride=!0,zA(e,0),A%16===SA?(this.setPreset(A,this.drumPreset),e.drumChannel=!0,this.callEvent("drumchange",{channel:A,isDrumChannel:!0})):(e.drumChannel=!1,this.setPreset(A,this.defaultPreset),this.callEvent("drumchange",{channel:A,isDrumChannel:!1}))),this.callEvent("programchange",{channel:A,program:e.preset.program,bank:KA(e),userCalled:!1});for(let s=0;s<128;s++)this.workletProcessorChannels[A].lockedControllers[s]&&this.callEvent("controllerchange",{channel:A,controllerNumber:s,controllerValue:this.workletProcessorChannels[A].midiControllers[s]>>7});if(this.workletProcessorChannels[A].lockedControllers[gA+K.pitchWheel]===!1){let s=this.workletProcessorChannels[A].midiControllers[gA+K.pitchWheel],n=s>>7,o=s&127;this.callEvent("pitchwheel",{channel:A,MSB:n,LSB:o})}}this.tunings=[],this.tunings=[];for(let A=0;127>A;A++)this.tunings.push([]);this.setMIDIVolume(1),this.system=ze}function Jn(t){let A=this.workletProcessorChannels[t],e=A.lockedControllers.reduce((n,o,i)=>(o&&n.push(i),n),[]);A.channelOctaveTuning.fill(0),A.keyCentTuning.fill(0);for(let n=0;n<Be.length;n++){if(A.lockedControllers[n])return;let o=Be[n];A.midiControllers[n]!==o&&n<127&&this.callEvent("controllerchange",{channel:t,controllerNumber:n,controllerValue:o>>7}),A.midiControllers[n]=o}A.channelVibrato={rate:0,depth:0,delay:0},A.holdPedal=!1;let s=A.customControllers[aA.channelTransposeFine];A.customControllers.set(Gt),A.customControllers[aA.channelTransposeFine]=s,this.resetParameters(t)}function vn(t){let A=this.workletProcessorChannels[t];A.NRPCoarse=0,A.NRPFine=0,A.RPValue=0,A.dataEntryState=fA.Idle}function qn(){let t=4;for(let s of this.instruments)t+=s.instrumentZones.reduce((n,o)=>(o.generators=o.generators.filter(i=>i.generatorType!==a.sampleID&&i.generatorType!==a.keyRange&&i.generatorType!==a.velRange),(o.velRange.max!==127||o.velRange.min!==0)&&o.generators.unshift({generatorType:a.velRange,generatorValue:o.velRange.max<<8|o.velRange.min}),(o.keyRange.max!==127||o.keyRange.min!==0)&&o.generators.unshift({generatorType:a.keyRange,generatorValue:o.keyRange.max<<8|o.keyRange.min}),o.isGlobal||o.generators.push({generatorType:a.sampleID,generatorValue:this.samples.indexOf(o.sample)}),o.generators.length*4+n),0);let A=new J(t),e=0;for(let s of this.instruments)for(let n of s.instrumentZones){n.generatorZoneStartIndex=e;for(let o of n.generators)v(A,o.generatorType),v(A,o.generatorValue),e++}return cA(A,0),sA(new $("igen",A.length,A))}function Pn(t,A,e,s,n){let o=this.samples.map((h,d)=>{e&&h.compressSample(s,n);let u=h.getRawData();return m(`%cEncoded sample %c${d}. ${h.sampleName}%c of %c${this.samples.length}`,r.info,r.recognized,r.info,r.recognized),u}),i=this.samples.reduce((h,d,u)=>h+o[u].length+46,0),g=new J(i);this.samples.forEach((h,d)=>{let u=o[d],l,Q,p=u.length;h.isCompressed?(l=g.currentIndex,Q=l+u.length):(l=g.currentIndex/2,Q=l+u.length/2,p+=46),t.push(l),g.set(u,g.currentIndex),g.currentIndex+=p,A.push(Q)});let B=sA(new $("smpl",g.length,g),new J([115,100,116,97]));return sA(new $("LIST",B.length,B))}function Kn(t,A){let s=new J(46*(this.samples.length+1));return this.samples.forEach((n,o)=>{RA(s,n.sampleName,20);let i=t[o];cA(s,i);let g=A[o];cA(s,g);let B=n.sampleLoopStartIndex+i,h=n.sampleLoopEndIndex+i;n.isCompressed&&(B-=i,h-=i),cA(s,B),cA(s,h),cA(s,n.sampleRate),s[s.currentIndex++]=n.samplePitch,s[s.currentIndex++]=n.samplePitchCorrection,v(s,n.sampleLink),v(s,n.sampleType)}),RA(s,"EOS",46),sA(new $("shdr",s.length,s))}function Vn(){let t=10;for(let s of this.instruments)t+=s.instrumentZones.reduce((n,o)=>o.modulators.length*10+n,0);let A=new J(t),e=0;for(let s of this.instruments)for(let n of s.instrumentZones){n.modulatorZoneStartIndex=e;for(let o of n.modulators)v(A,o.sourceEnum),v(A,o.modulatorDestination),v(A,o.transformAmount),v(A,o.secondarySourceEnum),v(A,o.transformType),e++}return he(A,0,10),sA(new $("imod",A.length,A))}function On(){let t=this.instruments.reduce((o,i)=>i.instrumentZones.length*4+o,4),A=new J(t),e=0,s=0,n=0;for(let o of this.instruments){o.instrumentZoneIndex=e;for(let i of o.instrumentZones)i.zoneID=e,v(A,s),v(A,n),s+=i.generators.length,n+=i.modulators.length,e++}return v(A,s),v(A,n),sA(new $("ibag",A.length,A))}function Zn(){let t=this.instruments.length*22+22,A=new J(t),e=0,s=0;for(let n of this.instruments)RA(A,n.instrumentName,20),v(A,e),e+=n.instrumentZones.length,n.instrumentID=s,s++;return RA(A,"EOI",20),v(A,e),sA(new $("inst",A.length,A))}function Xn(){let t=4;for(let s of this.presets)t+=s.presetZones.reduce((n,o)=>(o.generators=o.generators.filter(i=>i.generatorType!==a.instrument&&i.generatorType!==a.keyRange&&i.generatorType!==a.velRange),(o.velRange.max!==127||o.velRange.min!==0)&&o.generators.unshift({generatorType:a.velRange,generatorValue:o.velRange.max<<8|o.velRange.min}),(o.keyRange.max!==127||o.keyRange.min!==0)&&o.generators.unshift({generatorType:a.keyRange,generatorValue:o.keyRange.max<<8|o.keyRange.min}),o.isGlobal||o.generators.push({generatorType:a.instrument,generatorValue:this.instruments.indexOf(o.instrument)}),o.generators.length*4+n),0);let A=new J(t),e=0;for(let s of this.presets)for(let n of s.presetZones){n.generatorZoneStartIndex=e;for(let o of n.generators)v(A,o.generatorType),v(A,o.generatorValue);e+=n.generators.length}return v(A,0),v(A,0),sA(new $("pgen",A.length,A))}function Wn(){let t=10;for(let s of this.presets)t+=s.presetZones.reduce((n,o)=>o.modulators.length*10+n,0);let A=new J(t),e=0;for(let s of this.presets)for(let n of s.presetZones){n.modulatorZoneStartIndex=e;for(let o of n.modulators)v(A,o.sourceEnum),v(A,o.modulatorDestination),v(A,o.transformAmount),v(A,o.secondarySourceEnum),v(A,o.transformType),e++}return he(A,0,10),sA(new $("pmod",A.length,A))}function _n(){let t=this.presets.reduce((o,i)=>i.presetZones.length*4+o,4),A=new J(t),e=0,s=0,n=0;for(let o of this.presets){o.presetZoneStartIndex=e;for(let i of o.presetZones)i.zoneID=e,v(A,s),v(A,n),s+=i.generators.length,n+=i.modulators.length,e++}return v(A,s),v(A,n),sA(new $("pbag",A.length,A))}function zn(){let t=this.presets.length*38+38,A=new J(t),e=0;for(let s of this.presets)RA(A,s.presetName,20),v(A,s.program),v(A,s.bank),v(A,e),cA(A,s.library),cA(A,s.genre),cA(A,s.morphology),e+=s.presetZones.length;return RA(A,"EOP",20),v(A,0),v(A,0),v(A,e),cA(A,0),cA(A,0),cA(A,0),sA(new $("phdr",A.length,A))}var Zo={compress:!1,compressionQuality:.5,compressionFunction:void 0};function jn(t=Zo){if(t.compress&&typeof t.compressionFunction!="function")throw new TypeError("No compression function supplied but compression enabled.");yA("%cSaving soundfont...",r.info),m(`%cCompression: %c${t?.compress||"false"}%c quality: %c${t?.compressionQuality||"none"}`,r.info,r.recognized,r.info,r.recognized),m("%cWriting INFO...",r.info);let A=[];this.soundFontInfo.ISFT="SpessaSynth",t?.compress&&(this.soundFontInfo.ifil="3.0");for(let[N,G]of Object.entries(this.soundFontInfo))if(N==="ifil"||N==="iver"){let C=parseInt(G.split(".")[0]),iA=parseInt(G.split(".")[1]),j=new J(4);v(j,C),v(j,iA),A.push(sA(new $(N,4,j)))}else if(N==="DMOD")A.push(sA(new $(N,G.length,G)));else{let C=new J(G.length);RA(C,G),A.push(sA(new $(N,G.length,C)))}let e=Fe([new J([73,78,70,79]),...A]),s=sA(new $("LIST",e.length,e));m("%cWriting SDTA...",r.info);let n=[],o=[],i=Pn.call(this,n,o,t?.compress,t?.compressionQuality??.5,t.compressionFunction);m("%cWriting PDTA...",r.info),m("%cWriting SHDR...",r.info);let g=Kn.call(this,n,o);m("%cWriting IGEN...",r.info);let B=qn.call(this);m("%cWriting IMOD...",r.info);let h=Vn.call(this);m("%cWriting IBAG...",r.info);let d=On.call(this);m("%cWriting INST...",r.info);let u=Zn.call(this),l=Xn.call(this);m("%cWriting PMOD...",r.info);let Q=Wn.call(this);m("%cWriting PBAG...",r.info);let p=_n.call(this);m("%cWriting PHDR...",r.info);let y=zn.call(this),w=Fe([new J([112,100,116,97]),y,p,Q,l,u,d,h,B,g]),k=sA(new $("LIST",w.length,w));m("%cWriting the output file...",r.info);let L=Fe([new J([115,102,98,107]),s,i,k]),R=sA(new $("RIFF",L.length,L));return m(`%cSaved succesfully! Final file size: %c${R.length}`,r.info,r.recognized),V(),R}var ie=class t{constructor(A=void 0){this.soundFontInfo={},this.presets=[],this.samples=[],this.instruments=[],this.defaultModulators=Oe.map(e=>_.copy(e)),A?.presets&&(this.presets.push(...A.presets),this.soundFontInfo=A.info)}static mergeSoundfonts(...A){let e=A.shift(),s=e.presets;for(;A.length;)A.shift().presets.forEach(o=>{s.find(i=>i.bank===o.bank&&i.program===o.program)===void 0&&s.push(o)});return new t({presets:s,info:e.soundFontInfo})}removeUnusedElements(){this.instruments.forEach(A=>{A.useCount<1&&A.instrumentZones.forEach(e=>{e.isGlobal||e.sample.useCount--})}),this.instruments=this.instruments.filter(A=>A.useCount>0),this.samples=this.samples.filter(A=>A.useCount>0)}deleteInstrument(A){if(A.useCount>0)throw new Error(`Cannot delete an instrument that has ${A.useCount} usages.`);this.instruments.splice(this.instruments.indexOf(A),1),A.deleteInstrument(),this.removeUnusedElements()}deletePreset(A){A.deletePreset(),this.presets.splice(this.presets.indexOf(A),1),this.removeUnusedElements()}deleteSample(A){if(A.useCount>0)throw new Error(`Cannot delete sample that has ${A.useCount} usages.`);this.samples.splice(this.samples.indexOf(A),1),this.removeUnusedElements()}setSampleIDOffset(A){this.presets.forEach(e=>e.sampleIDOffset=A)}getPresetNoFallback(A,e,s=!1){let n=this.presets.find(o=>o.bank===A&&o.program===e);if(n)return n;if(s!==!1)return A===128?this.presets.find(o=>o.bank===128):this.presets.find(o=>o.program===e)}getPreset(A,e){let s=this.presets.find(n=>n.bank===A&&n.program===e);return s||(A===128?(s=this.presets.find(n=>n.bank===128&&n.program===e),s||(s=this.presets.find(n=>n.bank===128))):s=this.presets.find(n=>n.program===e&&n.bank!==128),s&&H(`%cPreset ${A}.${e} not found. Replaced with %c${s.presetName} (${s.bank}.${s.program})`,r.warn,r.recognized)),s||(H(`Preset ${e} not found. Defaulting to`,this.presets[0].presetName),s=this.presets[0]),s}getPresetByName(A){let e=this.presets.find(s=>s.presetName===A);return e||(H("Preset not found. Defaulting to:",this.presets[0].presetName),e=this.presets[0]),e}parsingError(A){throw new Error(`SF parsing error: ${A} The file may be corrupted.`)}destroySoundfont(){delete this.presets,delete this.instruments,delete this.samples}};ie.prototype.write=jn;function $n(t){yA("%cLoading instruments...",r.info);for(let A=0;A<this.instrumentAmount;A++)this.readDLSInstrument(Z(t.chunkData));V()}var ue=class{constructor(A){this.presetName="",this.program=0,this.bank=0,this.presetZones=[],this.sampleIDOffset=0,this.foundSamplesAndGenerators=[];for(let e=0;e<128;e++)this.foundSamplesAndGenerators[e]=[];this.library=0,this.genre=0,this.morphology=0,this.defaultModulators=A}deletePreset(){this.presetZones.forEach(A=>A.deleteZone()),this.presetZones.length=0}deleteZone(A){this.presetZones[A].deleteZone(),this.presetZones.splice(A,1)}preload(A,e){for(let s=A;s<e+1;s++)for(let n=0;n<128;n++)this.getSamplesAndGenerators(s,n).forEach(o=>{o.sample.isSampleLoaded||o.sample.getAudioData()})}preloadSpecific(A,e){this.getSamplesAndGenerators(A,e).forEach(s=>{s.sample.isSampleLoaded||s.sample.getAudioData()})}getSamplesAndGenerators(A,e){let s=this.foundSamplesAndGenerators[A][e];if(s)return s;if(this.presetZones.length<1)return[];function n(u,l,Q){return Q>=u&&Q<=l}function o(u,l){u.push(...l.filter(Q=>!u.find(p=>p.generatorType===Q.generatorType)))}function i(u,l){u.push(...l.filter(Q=>!u.find(p=>_.isIdentical(Q,p))))}let g=[],B=this.presetZones[0].isGlobal?[...this.presetZones[0].generators]:[],h=this.presetZones[0].isGlobal?[...this.presetZones[0].modulators]:[];return this.presetZones.filter(u=>n(u.keyRange.min,u.keyRange.max,A)&&n(u.velRange.min,u.velRange.max,e)&&!u.isGlobal).forEach(u=>{if(u.instrument.instrumentZones.length<1)return;let l=u.generators,Q=u.modulators,p=u.instrument.instrumentZones[0].isGlobal?[...u.instrument.instrumentZones[0].generators]:[],y=u.instrument.instrumentZones[0].isGlobal?[...u.instrument.instrumentZones[0].modulators]:[];u.instrument.instrumentZones.filter(k=>n(k.keyRange.min,k.keyRange.max,A)&&n(k.velRange.min,k.velRange.max,e)&&!k.isGlobal).forEach(k=>{let L=[...k.generators],R=[...k.modulators];o(l,B),o(L,p),i(Q,h),i(R,y),i(R,this.defaultModulators);let N=[...R];for(let G=0;G<Q.length;G++){let C=Q[G],iA=N.findIndex(j=>_.isIdentical(C,j));iA!==-1?N[iA]=N[iA].sumTransform(C):N.push(C)}g.push({instrumentGenerators:L,presetGenerators:l,modulators:N,sample:k.sample,sampleID:k.generators.find(G=>G.generatorType===a.sampleID).generatorValue})})}),this.foundSamplesAndGenerators[A][e]=g,g}};var xe=class{velRange={min:0,max:127};keyRange={min:0,max:127};isGlobal=!1;generators=[];modulators=[]};var Ae=class extends xe{sample=void 0;useCount=0;deleteZone(){this.useCount--,!this.isGlobal&&this.sample.useCount--}},de=class extends xe{instrument=void 0;deleteZone(){this.isGlobal||this.instrument.removeUseCount()}};var fe=class{constructor(){this.instrumentName="",this.instrumentZones=[],this._useCount=0}get useCount(){return this._useCount}addUseCount(){this._useCount++,this.instrumentZones.forEach(A=>A.useCount++)}removeUseCount(){this._useCount--;for(let A=0;A<this.instrumentZones.length;A++)this.safeDeleteZone(A)&&A--}deleteInstrument(){this.instrumentZones.forEach(A=>A.deleteZone()),this.instrumentZones.length=0}safeDeleteZone(A){return this.instrumentZones[A].useCount--,this.instrumentZones[A].useCount<1?(this.deleteZone(A),!0):!1}deleteZone(A){this.instrumentZones[A].deleteZone(),this.instrumentZones.splice(A,1)}};var ot=class extends ue{constructor(A,e){super(Oe),this.program=e&127,this.bank=A>>8&127,A>>31&&(this.bank=128),this.DLSInstrument=new fe,this.DLSInstrument.addUseCount();let n=new de;n.instrument=this.DLSInstrument,this.presetZones=[n]}};function Ao(t){this.verifyHeader(t,"LIST"),this.verifyText(O(t.chunkData,4),"ins ");let A=[];for(;t.chunkData.length>t.chunkData.currentIndex;)A.push(Z(t.chunkData));let e=A.find(Q=>Q.header==="insh");if(!e)throw V(),new Error("No instrument header!");let s=D(e.chunkData,4),n=D(e.chunkData,4),o=D(e.chunkData,4),i=new ot(n,o),g="unnamedPreset",B=DA(A,"INFO");if(B){let Q=Z(B.chunkData);for(;Q.header!=="INAM";)Q=Z(B.chunkData);g=O(Q.chunkData,Q.chunkData.length).trim()}i.presetName=g,i.DLSInstrument.instrumentName=g,se(`%cParsing %c"${g}"%c...`,r.info,r.recognized,r.info);let h=DA(A,"lrgn");if(!h)throw V(),new Error("No region list!");let d=new Ae;d.isGlobal=!0;let u=DA(A,"lart"),l=DA(A,"lar2");this.readLart(u,l,d),i.DLSInstrument.instrumentZones.push(d);for(let Q=0;Q<s;Q++){let p=Z(h.chunkData);this.verifyHeader(p,"LIST");let y=O(p.chunkData,4);y!=="rgn "&&y!=="rgn2"&&(V(),this.parsingError(`Invalid DLS region! Expected "rgn " or "rgn2" got "${y}"`));let w=this.readRegion(p);w&&i.DLSInstrument.instrumentZones.push(w)}this.presets.push(i),this.instruments.push(i.DLSInstrument),V()}var x={none:0,gain:1,reserved:2,pitch:3,pan:4,keyNum:5,chorusSend:128,reverbSend:129,modLfoFreq:260,modLfoDelay:261,vibLfoFreq:276,vibLfoDelay:277,volEnvAttack:518,volEnvDecay:519,volEnvRelease:521,volEnvSustain:522,volEnvDelay:523,volEnvHold:524,modEnvAttack:778,modEnvDecay:779,modEnvRelease:781,modEnvSustain:782,modEnvDelay:783,modEnvHold:784,filterCutoff:1280,filterQ:1281};var W={none:0,modLfo:1,velocity:2,keyNum:3,volEnv:4,modEnv:5,pitchWheel:6,polyPressure:7,channelPressure:8,vibratoLfo:9,modulationWheel:129,volume:135,pan:138,expression:139,chorus:219,reverb:221,pitchWheelRange:256,fineTune:257,coarseTune:258};function eo(t){let A,e=!1;switch(t){default:case W.modLfo:case W.vibratoLfo:case W.coarseTune:case W.fineTune:case W.modEnv:return;case W.keyNum:A=K.noteOnKeyNum;break;case W.none:A=K.noController;break;case W.modulationWheel:A=S.modulationWheel,e=!0;break;case W.pan:A=S.pan,e=!0;break;case W.reverb:A=S.reverbDepth,e=!0;break;case W.chorus:A=S.chorusDepth,e=!0;break;case W.expression:A=S.expressionController,e=!0;break;case W.volume:A=S.mainVolume,e=!0;break;case W.velocity:A=K.noteOnVelocity;break;case W.polyPressure:A=K.polyPressure;break;case W.channelPressure:A=K.channelPressure;break;case W.pitchWheel:A=K.pitchWheel;break;case W.pitchWheelRange:A=K.pitchWheelRange;break}if(A===void 0)throw new Error(`Unknown DLS Source: ${t}`);return{enum:A,isCC:e}}function Xo(t,A){switch(t){default:case x.none:return;case x.pan:return a.pan;case x.gain:return{gen:a.initialAttenuation,newAmount:A*-1};case x.pitch:return a.fineTune;case x.keyNum:return a.overridingRootKey;case x.volEnvDelay:return a.delayVolEnv;case x.volEnvAttack:return a.attackVolEnv;case x.volEnvHold:return a.holdVolEnv;case x.volEnvDecay:return a.decayVolEnv;case x.volEnvSustain:return{gen:a.sustainVolEnv,newAmount:1e3-A};case x.volEnvRelease:return a.releaseVolEnv;case x.modEnvDelay:return a.delayModEnv;case x.modEnvAttack:return a.attackModEnv;case x.modEnvHold:return a.holdModEnv;case x.modEnvDecay:return a.decayModEnv;case x.modEnvSustain:return{gen:a.sustainModEnv,newAmount:(1e3-A)/10};case x.modEnvRelease:return a.releaseModEnv;case x.filterCutoff:return a.initialFilterFc;case x.filterQ:return a.initialFilterQ;case x.chorusSend:return a.chorusEffectsSend;case x.reverbSend:return a.reverbEffectsSend}}function Wo(t,A){return t===W.vibratoLfo&&A===x.pitch?a.vibLfoToPitch:t===W.modLfo&&A===x.pitch?a.modLfoToPitch:t===W.modLfo&&A===x.filterCutoff?a.modLfoToFilterFc:t===W.modLfo&&A===x.gain?a.modLfoToVolume:t===W.modEnv&&A===x.filterCutoff?a.modEnvToFilterFc:t===W.modEnv&&A===x.pitch?a.modEnvToPitch:void 0}function to(t,A,e,s,n){let o=Wo(t,e),i,g,B=!1,h=!1,d=n;if(o===void 0){let k=Xo(e,n);if(k===void 0||(i=k,k.newAmount!==void 0&&(d=k.newAmount,i=k.gen),g=eo(t),g===void 0))return}else i=o,B=!0,g={enum:K.noController,isCC:!1},h=!0;let u=eo(A);if(u===void 0)return;let l;if(h)l=0;else{let k=s&15,L=s>>10&15;L===hA.linear&&k!==hA.linear&&(L=k);let R=s>>14&1,N=s>>15&1;i===a.initialAttenuation&&n<0&&(N=1),l=YA(L,R,N,g.isCC,g.enum)}let Q=s>>4&15,p=s>>8&1,y=s>>9&1,w=YA(Q,p,y,u.isCC,u.enum);if(B){let k=w;w=l,l=k}return new _({srcEnum:l,secSrcEnum:w,dest:i,transform:0,amt:d})}function Jt(t,A){let e=t.chunkData,s=[],n=[];D(e,4);let o=D(e,4);for(let i=0;i<o;i++){let g=D(e,2),B=D(e,2),h=D(e,2),d=D(e,2),l=(D(e,4)|0)>>16;if(g===0&&B===0&&d===0){let Q;switch(h){case x.pan:Q=new U(a.pan,l);break;case x.gain:Q=new U(a.initialAttenuation,-l*10/.4);break;case x.filterCutoff:Q=new U(a.initialFilterFc,l);break;case x.filterQ:Q=new U(a.initialFilterQ,l);break;case x.modLfoFreq:Q=new U(a.freqModLFO,l);break;case x.modLfoDelay:Q=new U(a.delayModLFO,l);break;case x.vibLfoFreq:Q=new U(a.freqVibLFO,l);break;case x.vibLfoDelay:Q=new U(a.delayVibLFO,l);break;case x.volEnvDelay:Q=new U(a.delayVolEnv,l);break;case x.volEnvAttack:Q=new U(a.attackVolEnv,l);break;case x.volEnvHold:Q=new U(a.holdVolEnv,l);break;case x.volEnvDecay:Q=new U(a.decayVolEnv,l);break;case x.volEnvRelease:Q=new U(a.releaseVolEnv,l);break;case x.volEnvSustain:let p=(1e3-l)/10;Q=new U(a.sustainVolEnv,p*10);break;case x.modEnvDelay:Q=new U(a.delayModEnv,l);break;case x.modEnvAttack:Q=new U(a.attackModEnv,l);break;case x.modEnvHold:Q=new U(a.holdModEnv,l);break;case x.modEnvDecay:Q=new U(a.decayModEnv,l);break;case x.modEnvRelease:Q=new U(a.releaseModEnv,l);break;case x.modEnvSustain:let y=1e3-l;Q=new U(a.sustainModEnv,y);break;case x.reverbSend:Q=new U(a.reverbEffectsSend,l);break;case x.chorusSend:Q=new U(a.chorusEffectsSend,l);break;case x.pitch:let w=Math.floor(l/100),k=Math.floor(l-w*100);Q=new U(a.fineTune,k),s.push(new U(a.coarseTune,w));break}Q&&s.push(Q)}else{let Q=!0;if(B===W.none)if(g===W.modLfo&&h===x.pitch)s.push(new U(a.modLfoToPitch,l));else if(g===W.modLfo&&h===x.gain)s.push(new U(a.modLfoToVolume,l));else if(g===W.modLfo&&h===x.filterCutoff)s.push(new U(a.modLfoToFilterFc,l));else if(g===W.vibratoLfo&&h===x.pitch)s.push(new U(a.vibLfoToPitch,l));else if(g===W.modEnv&&h===x.pitch)s.push(new U(a.modEnvToPitch,l));else if(g===W.modEnv&&h===x.filterCutoff)s.push(new U(a.modEnvToFilterFc,l));else if(g===W.keyNum&&h===x.volEnvHold){s.push(new U(a.keyNumToVolEnvHold,l/-128));let p=Math.round(60/128*l);s.forEach(y=>{y.generatorType===a.holdVolEnv&&(y.generatorValue+=p)})}else if(g===W.keyNum&&h===x.volEnvDecay){s.push(new U(a.keyNumToVolEnvDecay,l/-128));let p=Math.round(60/128*l);s.forEach(y=>{y.generatorType===a.decayVolEnv&&(y.generatorValue+=p)})}else if(g===W.keyNum&&h===x.modEnvHold){s.push(new U(a.keyNumToModEnvHold,l/-128));let p=Math.round(60/128*l);s.forEach(y=>{y.generatorType===a.holdModEnv&&(y.generatorValue+=p)})}else if(g===W.keyNum&&h===x.modEnvDecay){s.push(new U(a.keyNumToModEnvDecay,l/-128));let p=Math.round(60/128*l);s.forEach(y=>{y.generatorType===a.decayModEnv&&(y.generatorValue+=p)})}else Q=!1;else Q=!1;if(Q===!1){let p=to(g,B,h,d,l);p?(n.push(p),m("%cSucceeded converting to SF2 Modulator!",r.recognized)):H("Failed converting to SF2 Modulator!")}}}return n.find(i=>i.modulatorDestination===a.reverbEffectsSend)===void 0&&n.push(new _({srcEnum:219,dest:a.reverbEffectsSend,amt:1e3,secSrcEnum:0,transform:0})),n.find(i=>i.modulatorDestination===a.chorusEffectsSend)===void 0&&n.push(new _({srcEnum:221,dest:a.chorusEffectsSend,amt:1e3,secSrcEnum:0,transform:0})),A&&n.push(new _({srcEnum:129,dest:a.vibLfoToPitch,amt:0,secSrcEnum:0,transform:0}),new _({srcEnum:13,dest:a.vibLfoToPitch,amt:0,secSrcEnum:0,transform:0})),{modulators:n,generators:s}}function so(t,A,e){if(t)for(;t.chunkData.currentIndex<t.chunkData.length;){let s=Z(t.chunkData);this.verifyHeader(s,"art1");let n=Jt(s,!0);e.generators.push(...n.generators),e.modulators.push(...n.modulators)}if(A)for(;A.chunkData.currentIndex<A.chunkData.length;){let s=Z(A.chunkData);this.verifyHeader(s,"art2");let n=Jt(s,!1);e.generators.push(...n.generators),e.modulators.push(...n.modulators)}}var rt=class extends Ae{constructor(A,e){super(),this.keyRange=A,this.velRange=e,this.isGlobal=!0}setWavesample(A,e,s,n,o,i,g){e!==0&&this.generators.push(new U(a.sampleModes,e)),this.generators.push(new U(a.initialAttenuation,A)),this.isGlobal=!1,g-=o.samplePitchCorrection;let B=Math.trunc(g/100);B!==0&&this.generators.push(new U(a.coarseTune,B));let h=g-B*100;h!==0&&this.generators.push(new U(a.fineTune,h));let d=s.start-o.sampleLoopStartIndex,u=s.end-o.sampleLoopEndIndex;if(d!==0){let l=d%32768;this.generators.push(new U(a.startloopAddrsOffset,l));let Q=Math.trunc(d/32768);Q!==0&&this.generators.push(new U(a.startloopAddrsCoarseOffset,Q))}if(u!==0){let l=u%32768;this.generators.push(new U(a.endloopAddrsOffset,l));let Q=Math.trunc(u/32768);Q!==0&&this.generators.push(new U(a.endloopAddrsCoarseOffset,Q))}n!==o.samplePitch&&this.generators.push(new U(a.overridingRootKey,n)),this.generators.push(new U(a.sampleID,i)),this.sample=o,o.useCount++}};function no(t){let A=[];for(;t.chunkData.length>t.chunkData.currentIndex;)A.push(Z(t.chunkData));let e=A.find(AA=>AA.header==="rgnh"),s=D(e.chunkData,2),n=D(e.chunkData,2),o=D(e.chunkData,2),i=D(e.chunkData,2),g=new rt({min:s,max:n},{min:o,max:i});D(e.chunkData,2);let B=D(e.chunkData,2);B!==0&&g.generators.push(new U(a.exclusiveClass,B));let h=DA(A,"lart"),d=DA(A,"lar2");this.readLart(h,d,g),g.isGlobal=!1;let u=A.find(AA=>AA.header==="wsmp");D(u.chunkData,4);let l=D(u.chunkData,2),Q=$A(u.chunkData[u.chunkData.currentIndex++],u.chunkData[u.chunkData.currentIndex++]),p=Math.trunc(Q/100);l+=p,Q-=p*100;let w=(D(u.chunkData,4)|0)/-655360;D(u.chunkData,4);let k=D(u.chunkData,4),L,R={start:0,end:0};if(k===0)L=0;else{D(u.chunkData,4),D(u.chunkData,4)===0?L=1:L=3,R.start=D(u.chunkData,4);let eA=D(u.chunkData,4);R.end=R.start+eA}let N=A.find(AA=>AA.header==="wlnk");if(N===void 0)return;D(N.chunkData,2),D(N.chunkData,2),D(N.chunkData,4);let G=D(N.chunkData,4),C=this.samples[G];if(C===void 0)throw new Error("Invalid sample ID!");let j=(w||C.sampleDbAttenuation)*10/.4;return g.setWavesample(j,L,R,l,C,G,Q),g}var me=class{constructor(A,e,s,n,o,i,g,B){this.sampleName=A,this.sampleRate=e,this.samplePitch=s,this.samplePitchCorrection=n,this.sampleLink=o,this.sampleType=i,this.sampleLoopStartIndex=g,this.sampleLoopEndIndex=B,this.isCompressed=(i&16)>0,this.compressedData=void 0,this.useCount=0}getRawData(){let A=new Error("Not implemented");throw A.name="NotImplementedError",A}compressSample(A,e){if(!this.isCompressed)try{this.compressedData=e([this.getAudioData()],1,this.sampleRate,A),this.sampleType|=16,this.isCompressed=!0}catch{H(`Failed to compress ${this.sampleName}. Leaving as uncompressed!`),this.isCompressed=!1,this.compressedData=void 0,this.sampleType&=-17}}getAudioData(){let A=new Error("Not implemented");throw A.name="NotImplementedError",A}};var it=class extends me{sampleDbAttenuation;sampleData;constructor(A,e,s,n,o,i,g,B){super(A,e,s,n,0,1,o,i-1),this.sampleData=g,this.sampleDbAttenuation=B}getAudioData(){return this.sampleData}getRawData(){if(this.isCompressed){if(!this.compressedData)throw new Error("Compressed but no data?? This shouldn't happen!!");return this.compressedData}let A=new Uint8Array(this.sampleData.length*2);for(let e=0;e<this.sampleData.length;e++){let s=Math.floor(this.sampleData[e]*32767);A[e*2]=s&255,A[e*2+1]=s>>8&255}return A}};var oo={PCM:1,ALAW:6};function _o(t,A){let e=Math.pow(2,A*8-1),s=Math.pow(2,A*8),n,o=!1;A===1?(n=255,o=!0):n=e;let i=t.size/A,g=new Float32Array(i);for(let B=0;B<g.length;B++){let h=D(t.chunkData,A);o?g[B]=h/n-.5:(h>=e&&(h-=s),g[B]=h/n)}return g}function zo(t,A){let e=t.size/A,s=new Float32Array(e);for(let n=0;n<s.length;n++){let o=D(t.chunkData,A),i=o^85;i&=127;let g=i>>4,B=i&15;g>0&&(B+=16),B=(B<<4)+8,g>1&&(B=B<<g-1);let h=o>127?B:-B;s[n]=h/32678}return s}function ro(t){yA("%cLoading Wave samples...",r.recognized);let A=0;for(;t.chunkData.currentIndex<t.chunkData.length;){let e=Z(t.chunkData);this.verifyHeader(e,"LIST"),this.verifyText(O(e.chunkData,4),"wave");let s=[];for(;e.chunkData.currentIndex<e.chunkData.length;)s.push(Z(e.chunkData));let n=s.find(G=>G.header==="fmt ");if(!n)throw new Error("No fmt chunk in the wave file!");let o=D(n.chunkData,2),i=D(n.chunkData,2);if(i!==1)throw new Error(`Only mono samples are supported. Fmt reports ${i} channels`);let g=D(n.chunkData,4);D(n.chunkData,4),D(n.chunkData,2);let h=D(n.chunkData,2)/8,d=!1,u=s.find(G=>G.header==="data");u||this.parsingError("No data chunk in the WAVE chunk!");let l;switch(o){default:d=!0,l=new Float32Array(u.size/h);break;case oo.PCM:l=_o(u,h);break;case oo.ALAW:l=zo(u,h);break}let Q=60,p=0,y=0,w=l.length-1,k=0,L=s.find(G=>G.header==="wsmp");if(L){D(L.chunkData,4),Q=D(L.chunkData,2),p=$A(L.chunkData[L.chunkData.currentIndex++],L.chunkData[L.chunkData.currentIndex++]);let G=Math.trunc(p/100);if(Q+=G,p-=G*100,k=(D(L.chunkData,4)|0)/-655360,D(L.chunkData,4),D(L.chunkData,4)===1){D(L.chunkData,8),y=D(L.chunkData,4);let j=D(L.chunkData,4);w=y+j}}else H("No wsmp chunk in wave... using sane defaults.");let R=DA(s,"INFO"),N=`Unnamed ${A}`;if(R){let G=Z(R.chunkData);for(;G.header!=="INAM"&&R.chunkData.currentIndex<R.chunkData.length;)G=Z(R.chunkData);G.header==="INAM"&&(N=O(G.chunkData,G.size).trim())}d&&console.error(`Failed to load '${N}': Unsupported format: (${o})`),this.samples.push(new it(N,g,Q,p,y,l.length,l,k)),A++,m(`%cLoaded sample %c${N}`,r.info,r.recognized)}V()}var WA=class extends ie{constructor(A){super(),this.dataArray=new J(A),se("%cParsing DLS...",r.info),this.dataArray||(V(),this.parsingError("No data provided!"));let e=Z(this.dataArray,!1);this.verifyHeader(e,"riff"),this.verifyText(O(this.dataArray,4).toLowerCase(),"dls ");let s=[];for(;this.dataArray.currentIndex<this.dataArray.length;)s.push(Z(this.dataArray));this.soundFontInfo.ifil="2.1",this.soundFontInfo.isng="EMU8000",this.soundFontInfo.INAM="Unnamed DLS",this.soundFontInfo.IENG="Unknown",this.soundFontInfo.IPRD="SpessaSynth DLS",this.soundFontInfo.ICRD=new Date().toDateString();let n=DA(s,"INFO");if(n)for(;n.chunkData.currentIndex<n.chunkData.length;){let B=Z(n.chunkData);this.soundFontInfo[B.header]=O(B.chunkData,B.size)}this.soundFontInfo.ICMT=(this.soundFontInfo.ICMT||"(No description)")+`
15
- Converted from DLS to SF2 with SpessaSynth`,this.soundFontInfo.ISBJ&&(this.soundFontInfo.ICMT+=`
16
- `+this.soundFontInfo.ISBJ,delete this.soundFontInfo.ISBJ);for(let[B,h]of Object.entries(this.soundFontInfo))m(`%c"${B}": %c"${h}"`,r.info,r.recognized);let o=s.find(B=>B.header==="colh");o||(V(),this.parsingError("No colh chunk!")),this.instrumentAmount=D(o.chunkData,4),m(`%cInstruments amount: %c${this.instrumentAmount}`,r.info,r.recognized);let i=DA(s,"wvpl");i||(V(),this.parsingError("No wvpl chunk!")),this.readDLSSamples(i);let g=DA(s,"lins");g||(V(),this.parsingError("No lins chunk!")),this.readDLSInstrumentList(g),this.presets.sort((B,h)=>B.program-h.program+(B.bank-h.bank)),m(`%cParsing finished! %c"${this.soundFontInfo.INAM||"UNNAMED"}"%c has %c${this.presets.length} %cpresets,
17
- %c${this.instruments.length}%c instruments and %c${this.samples.length}%c samples.`,r.info,r.recognized,r.info,r.recognized,r.info,r.recognized,r.info,r.recognized,r.info),V()}verifyHeader(A,e){A.header.toLowerCase()!==e.toLowerCase()&&(V(),this.parsingError(`Invalid DLS chunk header! Expected "${e.toLowerCase()}" got "${A.header.toLowerCase()}"`))}verifyText(A,e){A.toLowerCase()!==e.toLowerCase()&&(V(),this.parsingError(`FourCC error: Expected "${e.toLowerCase()}" got "${A.toLowerCase()}"`))}parsingError(A){throw new Error(`DLS parse error: ${A} The file may be corrupted.`)}destroySoundfont(){super.destroySoundfont(),delete this.dataArray}};WA.prototype.readDLSInstrumentList=$n;WA.prototype.readDLSInstrument=Ao;WA.prototype.readRegion=no;WA.prototype.readLart=so;WA.prototype.readDLSSamples=ro;var vt=class extends me{constructor(A,e,s,n,o,i,g,B,h,d,u,l,Q){super(A,i,g,B,h,d,n-e/2,o-e/2),this.sampleName=A,this.sampleStartIndex=e,this.sampleEndIndex=s,this.isSampleLoaded=!1,this.sampleID=l,this.sampleLength=this.sampleEndIndex-this.sampleStartIndex,this.sampleDataArray=u,this.sampleData=new Float32Array(0),this.isCompressed&&(this.sampleLoopStartIndex+=this.sampleStartIndex/2,this.sampleLoopEndIndex+=this.sampleStartIndex/2,this.sampleLength=99999999),this.isDataRaw=Q}getRawData(){let A=this.sampleDataArray;if(this.isCompressed){if(this.compressedData)return this.compressedData;let e=A.currentIndex;return A.slice(this.sampleStartIndex/2+e,this.sampleEndIndex/2+e)}else{if(!this.isDataRaw)throw new Error("Writing SF2Pack samples is not supported.");let e=A.currentIndex;return A.slice(e+this.sampleStartIndex,e+this.sampleEndIndex)}}decodeVorbis(){if(this.sampleLength<1)return;let A=this.sampleDataArray,e=A.currentIndex,s=A.slice(this.sampleStartIndex/2+e,this.sampleEndIndex/2+e);this.sampleData=new Float32Array(0);try{let n=VA.decode(s.buffer);this.sampleData=n.data[0]}catch(n){throw new Error(`Ogg Vorbis decode error: ${n}`)}}getAudioData(){return this.isSampleLoaded?this.sampleData:this.sampleLength<1?new Float32Array(1):this.isCompressed?(this.decodeVorbis(),this.isSampleLoaded=!0,this.sampleData):this.isDataRaw?this.loadUncompressedData():this.getUncompressedReadyData()}loadUncompressedData(){if(this.isCompressed)return H("Trying to load a compressed sample via loadUncompressedData()... aborting!"),new Float32Array(0);let A=new Float32Array(this.sampleLength/2),e=this.sampleDataArray.currentIndex,s=new Int16Array(this.sampleDataArray.slice(e+this.sampleStartIndex,e+this.sampleEndIndex).buffer);for(let n=0;n<s.length;n++)A[n]=s[n]/32768;return this.sampleData=A,this.isSampleLoaded=!0,A}getUncompressedReadyData(){let A=this.sampleDataArray.slice(this.sampleStartIndex/2,this.sampleEndIndex/2);return this.sampleData=A,this.isSampleLoaded=!0,A}};function io(t,A,e=!0){let s=[],n=0;for(;t.chunkData.length>t.chunkData.currentIndex;){let o=jo(n,t.chunkData,A,e);s.push(o),n++}return s.length>1&&s.pop(),s}function jo(t,A,e,s){let n=O(A,20),o=D(A,4)*2,i=D(A,4)*2,g=D(A,4),B=D(A,4),h=D(A,4),d=A[A.currentIndex++];d===255&&(d=60);let u=xs(A[A.currentIndex++]),l=D(A,2),Q=D(A,2);return new vt(n,o,i,g,B,h,d,u,l,Q,e,t,s)}var qt=class extends U{constructor(A){super();let e=A.currentIndex;this.generatorType=A[e+1]<<8|A[e],this.generatorValue=$A(A[e+2],A[e+3]),A.currentIndex+=4}};function Pt(t){let A=[];for(;t.chunkData.length>t.chunkData.currentIndex;)A.push(new qt(t.chunkData));return A.length>1&&A.pop(),A}var Kt=class extends fe{constructor(A){super(),this.instrumentName=O(A.chunkData,20).trim(),this.instrumentZoneIndex=D(A.chunkData,2),this.instrumentZonesAmount=0}getInstrumentZones(A,e){this.instrumentZonesAmount=A;for(let s=this.instrumentZoneIndex;s<this.instrumentZonesAmount+this.instrumentZoneIndex;s++)this.instrumentZones.push(e[s])}};function ao(t,A){let e=[];for(;t.chunkData.length>t.chunkData.currentIndex;){let s=new Kt(t);if(e.length>0){let n=s.instrumentZoneIndex-e[e.length-1].instrumentZoneIndex;e[e.length-1].getInstrumentZones(n,A)}e.push(s)}return e.length>1&&e.pop(),e}var Vt=class extends Ae{constructor(A){super(),this.generatorZoneStartIndex=D(A,2),this.modulatorZoneStartIndex=D(A,2),this.modulatorZoneSize=0,this.generatorZoneSize=0,this.isGlobal=!0}setZoneSize(A,e){this.modulatorZoneSize=A,this.generatorZoneSize=e}getGenerators(A){for(let e=this.generatorZoneStartIndex;e<this.generatorZoneStartIndex+this.generatorZoneSize;e++)this.generators.push(A[e])}getModulators(A){for(let e=this.modulatorZoneStartIndex;e<this.modulatorZoneStartIndex+this.modulatorZoneSize;e++)this.modulators.push(A[e])}getSample(A){let e=this.generators.find(s=>s.generatorType===a.sampleID);e&&(this.sample=A[e.generatorValue],this.isGlobal=!1,this.sample.useCount++)}getKeyRange(){let A=this.generators.find(e=>e.generatorType===a.keyRange);A&&(this.keyRange.min=A.generatorValue&127,this.keyRange.max=A.generatorValue>>8&127)}getVelRange(){let A=this.generators.find(e=>e.generatorType===a.velRange);A&&(this.velRange.min=A.generatorValue&127,this.velRange.max=A.generatorValue>>8&127)}};function Io(t,A,e,s){let n=[];for(;t.chunkData.length>t.chunkData.currentIndex;){let o=new Vt(t.chunkData);if(n.length>0){let i=o.modulatorZoneStartIndex-n[n.length-1].modulatorZoneStartIndex,g=o.generatorZoneStartIndex-n[n.length-1].generatorZoneStartIndex;n[n.length-1].setZoneSize(i,g),n[n.length-1].getGenerators(A),n[n.length-1].getModulators(e),n[n.length-1].getSample(s),n[n.length-1].getKeyRange(),n[n.length-1].getVelRange()}n.push(o)}return n.length>1&&n.pop(),n}var Ot=class extends de{constructor(A){super(),this.generatorZoneStartIndex=D(A,2),this.modulatorZoneStartIndex=D(A,2),this.modulatorZoneSize=0,this.generatorZoneSize=0,this.isGlobal=!0}setZoneSize(A,e){this.modulatorZoneSize=A,this.generatorZoneSize=e}getGenerators(A){for(let e=this.generatorZoneStartIndex;e<this.generatorZoneStartIndex+this.generatorZoneSize;e++)this.generators.push(A[e])}getModulators(A){for(let e=this.modulatorZoneStartIndex;e<this.modulatorZoneStartIndex+this.modulatorZoneSize;e++)this.modulators.push(A[e])}getInstrument(A){let e=this.generators.find(s=>s.generatorType===a.instrument);e&&(this.instrument=A[e.generatorValue],this.instrument.addUseCount(),this.isGlobal=!1)}getKeyRange(){let A=this.generators.find(e=>e.generatorType===a.keyRange);A&&(this.keyRange.min=A.generatorValue&127,this.keyRange.max=A.generatorValue>>8&127)}getVelRange(){let A=this.generators.find(e=>e.generatorType===a.velRange);A&&(this.velRange.min=A.generatorValue&127,this.velRange.max=A.generatorValue>>8&127)}};function go(t,A,e,s){let n=[];for(;t.chunkData.length>t.chunkData.currentIndex;){let o=new Ot(t.chunkData);if(n.length>0){let i=o.modulatorZoneStartIndex-n[n.length-1].modulatorZoneStartIndex,g=o.generatorZoneStartIndex-n[n.length-1].generatorZoneStartIndex;n[n.length-1].setZoneSize(i,g),n[n.length-1].getGenerators(A),n[n.length-1].getModulators(e),n[n.length-1].getInstrument(s),n[n.length-1].getKeyRange(),n[n.length-1].getVelRange()}n.push(o)}return n.length>1&&n.pop(),n}var Zt=class extends ue{constructor(A,e){super(e),this.presetName=O(A.chunkData,20).trim().replace(/\d{3}:\d{3}/,""),this.program=D(A.chunkData,2),this.bank=D(A.chunkData,2),this.presetZoneStartIndex=D(A.chunkData,2),this.library=D(A.chunkData,4),this.genre=D(A.chunkData,4),this.morphology=D(A.chunkData,4),this.presetZonesAmount=0}getPresetZones(A,e){this.presetZonesAmount=A;for(let s=this.presetZoneStartIndex;s<this.presetZonesAmount+this.presetZoneStartIndex;s++)this.presetZones.push(e[s])}};function Co(t,A,e){let s=[];for(;t.chunkData.length>t.chunkData.currentIndex;){let n=new Zt(t,e);if(s.length>0){let o=n.presetZoneStartIndex-s[s.length-1].presetZoneStartIndex;s[s.length-1].getPresetZones(o,A)}s.push(n)}return s.length>1&&s.pop(),s}var Xt=class extends _{constructor(A){super({srcEnum:D(A,2),dest:D(A,2),amt:$A(A[A.currentIndex++],A[A.currentIndex++]),secSrcEnum:D(A,2),transform:D(A,2)})}};function at(t){let A=[];for(;t.chunkData.length>t.chunkData.currentIndex;)A.push(new Xt(t.chunkData));return A}var It=class extends ie{constructor(A,e=!0){super(),e&&console.warn("Using the constructor directly is deprecated. Use loadSoundFont instead."),this.dataArray=new J(A),se("%cParsing SoundFont...",r.info),this.dataArray||(V(),this.parsingError("No data provided!"));let s=Z(this.dataArray,!1);this.verifyHeader(s,"riff");let n=O(this.dataArray,4).toLowerCase();if(n!=="sfbk"&&n!=="sfpk")throw V(),new SyntaxError(`Invalid soundFont! Expected "sfbk" or "sfpk" got "${n}"`);let o=n==="sfpk",i=Z(this.dataArray);for(this.verifyHeader(i,"list"),O(i.chunkData,4);i.chunkData.length>i.chunkData.currentIndex;){let eA=Z(i.chunkData),QA;switch(eA.header.toLowerCase()){case"ifil":case"iver":QA=`${D(eA.chunkData,2)}.${D(eA.chunkData,2)}`,this.soundFontInfo[eA.header]=QA;break;case"icmt":QA=O(eA.chunkData,eA.chunkData.length,void 0,!1),this.soundFontInfo[eA.header]=QA;break;case"dmod":let IA=at(eA);IA.pop(),QA=`Modulators: ${IA.length}`;let mA=this.defaultModulators;this.defaultModulators=IA,this.defaultModulators.push(...mA.filter(Le=>!this.defaultModulators.find(MA=>_.isIdentical(Le,MA)))),this.soundFontInfo[eA.header]=eA.chunkData;break;default:QA=O(eA.chunkData,eA.chunkData.length),this.soundFontInfo[eA.header]=QA}m(`%c"${eA.header}": %c"${QA}"`,r.info,r.recognized)}let g=Z(this.dataArray,!1);this.verifyHeader(g,"list"),this.verifyText(O(this.dataArray,4),"sdta"),m("%cVerifying smpl chunk...",r.warn);let B=Z(this.dataArray,!1);this.verifyHeader(B,"smpl");let h;if(o){m("%cSF2Pack detected, attempting to decode the smpl chunk...",r.info);try{h=VA.decode(this.dataArray.buffer.slice(this.dataArray.currentIndex,this.dataArray.currentIndex+g.size-12)).data[0]}catch(eA){throw V(),new Error(`SF2Pack Ogg Vorbis decode error: ${eA}`)}m(`%cDecoded the smpl chunk! Length: %c${h.length}`,r.info,r.value)}else h=this.dataArray,this.sampleDataStartIndex=this.dataArray.currentIndex;m(`%cSkipping sample chunk, length: %c${g.size-12}`,r.info,r.value),this.dataArray.currentIndex+=g.size-12,m("%cLoading preset data chunk...",r.warn);let d=Z(this.dataArray);this.verifyHeader(d,"list"),O(d.chunkData,4);let u=Z(d.chunkData);this.verifyHeader(u,"phdr");let l=Z(d.chunkData);this.verifyHeader(l,"pbag");let Q=Z(d.chunkData);this.verifyHeader(Q,"pmod");let p=Z(d.chunkData);this.verifyHeader(p,"pgen");let y=Z(d.chunkData);this.verifyHeader(y,"inst");let w=Z(d.chunkData);this.verifyHeader(w,"ibag");let k=Z(d.chunkData);this.verifyHeader(k,"imod");let L=Z(d.chunkData);this.verifyHeader(L,"igen");let R=Z(d.chunkData);this.verifyHeader(R,"shdr"),this.dataArray.currentIndex=this.sampleDataStartIndex,this.samples.push(...io(R,h,!o));let N=Pt(L),G=at(k),C=Io(w,N,G,this.samples);this.instruments=ao(y,C);let iA=Pt(p),j=at(Q),AA=go(l,iA,j,this.instruments);this.presets.push(...Co(u,AA,this.defaultModulators)),this.presets.sort((eA,QA)=>eA.program-QA.program+(eA.bank-QA.bank)),m(`%cParsing finished! %c"${this.soundFontInfo.INAM}"%c has %c${this.presets.length} %cpresets,
18
- %c${this.instruments.length}%c instruments and %c${this.samples.length}%c samples.`,r.info,r.recognized,r.info,r.recognized,r.info,r.recognized,r.info,r.recognized,r.info),V(),o&&delete this.dataArray}verifyHeader(A,e){A.header.toLowerCase()!==e.toLowerCase()&&(V(),this.parsingError(`Invalid chunk header! Expected "${e.toLowerCase()}" got "${A.header.toLowerCase()}"`))}verifyText(A,e){A.toLowerCase()!==e.toLowerCase()&&(V(),this.parsingError(`Invalid FourCC: Expected "${e.toLowerCase()}" got "${A.toLowerCase()}"\``))}destroySoundfont(){super.destroySoundfont(),delete this.dataArray}};function Ne(t){let A=t.slice(8,12),e=new J(A);return O(e,4,void 0,!1).toLowerCase()==="dls "?new WA(t):new It(t,!1)}function Eo(t,A,e=!1){let s=this.workletProcessorChannels[t];if(s===void 0){H(`Trying to access channel ${t} which does not exist... ignoring!`);return}if(s.lockPreset)return;let n=KA(s),o,i;if(this.overrideSoundfont){let g=n===128?128:n-this.soundfontBankOffset,B=this.overrideSoundfont.getPresetNoFallback(g,A);B?(o=n,i=B,s.presetUsesOverride=!0):(i=this.soundfontManager.getPreset(n,A),o=i.bank,s.presetUsesOverride=!1)}else i=this.soundfontManager.getPreset(n,A),o=i.bank,s.presetUsesOverride=!1;this.setPreset(t,i),this.callEvent("programchange",{channel:t,program:i.program,bank:o,userCalled:e})}function Bo(t,A){if(this.overrideSoundfont){let e=t===128?128:t-this.soundfontBankOffset,s=this.overrideSoundfont.getPresetNoFallback(e,A);if(s)return s}return this.soundfontManager.getPreset(t,A)}function ho(t,A){if(!this.workletProcessorChannels[t].lockPreset){delete this.workletProcessorChannels[t].preset,this.workletProcessorChannels[t].preset=A,this.workletProcessorChannels[t].cachedVoices=[];for(let e=0;e<128;e++)this.workletProcessorChannels[t].cachedVoices.push([])}}function co(t,A){let e=this.workletProcessorChannels[t];e.lockPreset||e.drumChannel!==A&&(A?(e.channelTransposeKeyShift=0,e.drumChannel=!0,this.setPreset(t,this.getPreset(KA(e),e.preset.program))):(e.drumChannel=!1,this.setPreset(t,this.getPreset(KA(e),e.preset.program))),e.presetUsesOverride=!1,this.callEvent("drumchange",{channel:t,isDrumChannel:e.drumChannel}),this.sendChannelProperties())}function Qo(){let t=this.soundfontManager.getPresetList();this.overrideSoundfont!==void 0&&this.overrideSoundfont.presets.forEach(A=>{let e=A.bank===128?128:A.bank+this.soundfontBankOffset,s=t.find(n=>n.bank===e&&n.program===A.program);s!==void 0?s.presetName=A.presetName:t.push({presetName:A.presetName,bank:e,program:A.program})}),this.callEvent("presetlistchange",t)}function lo(t=!0,A=!0){this.stopAllChannels(!0),A&&(delete this.overrideSoundfont,this.overrideSoundfont=void 0),this.defaultPreset=this.getPreset(0,0),this.drumPreset=this.getPreset(128,0);for(let e=0;e<this.workletProcessorChannels.length;e++){let s=this.workletProcessorChannels[e];s.cachedVoices=[];for(let n=0;n<128;n++)s.cachedVoices.push([]);(!A||A&&s.presetUsesOverride)&&(s.lockPreset=!1),this.programChange(e,s.preset.program)}t&&this.sendPresetList()}function uo(t,A=!1){this.clearSoundFont(!1,A);try{A?(this.overrideSoundfont=Ne(t),this.overrideSoundfont.setSampleIDOffset(this.soundfontManager.totalSoundfontOffset)):this.soundfontManager.reloadManager(t)}catch(e){this.post({messageType:uA.soundfontError,messageData:e});return}this.defaultPreset=this.getPreset(0,0),this.drumPreset=this.getPreset(128,0),this.workletProcessorChannels.forEach((e,s)=>{this.programChange(s,e.preset.program)}),this.post({messageType:uA.ready,messageData:void 0}),this.sendPresetList(),m("%cSpessaSynth is ready!",r.recognized)}function fo(t,A){this.soundfontBankOffset=A,this.reloadSoundFont(t,!0),this.overrideSoundfont.samples.forEach(e=>e.getAudioData()),this._snapshot!==void 0&&(this.applySynthesizerSnapshot(this._snapshot),this.resetAllControllers())}function mo(){let A={channelSnapshots:this.workletProcessorChannels.map(e=>({program:e.preset.program,bank:KA(e),lockPreset:e.lockPreset,patchName:e.preset.presetName,midiControllers:e.midiControllers,lockedControllers:e.lockedControllers,customControllers:e.customControllers,channelVibrato:e.channelVibrato,lockVibrato:e.lockGSNRPNParams,channelTransposeKeyShift:e.channelTransposeKeyShift,channelOctaveTuning:e.channelOctaveTuning,keyCentTuning:e.keyCentTuning,velocityOverride:e.velocityOverride,isMuted:e.isMuted,drumChannel:e.drumChannel})),mainVolume:this.midiVolume,pan:this.pan,transposition:this.transposition,system:this.system,interpolation:this.interpolationType,keyMappings:this.keyModifierManager.getMappings()};this.post({messageType:uA.synthesizerSnapshot,messageData:A})}function po(t){for(this.system=t.system,this.setMasterGain(t.mainVolume),this.setMasterPan(t.pan),this.transposeAllChannels(t.transposition),this.interpolationType=t.interpolation,this.keyModifierManager.setMappings(t.keyMappings);this.workletProcessorChannels.length<t.channelSnapshots.length;)this.createWorkletChannel();t.channelSnapshots.forEach((A,e)=>{let s=this.workletProcessorChannels[e];this.muteChannel(e,A.isMuted),this.setDrums(e,A.drumChannel),s.midiControllers=A.midiControllers,s.lockedControllers=A.lockedControllers,s.customControllers=A.customControllers,s.channelVibrato=A.channelVibrato,s.lockGSNRPNParams=A.lockVibrato,s.channelTransposeKeyShift=A.channelTransposeKeyShift,s.channelOctaveTuning=A.channelOctaveTuning,s.velocityOverride=A.velocityOverride,s.lockPreset=!1,zA(s,A.bank),this.programChange(e,A.program),s.lockPreset=A.lockPreset}),m("%cFinished restoring controllers!",r.info)}var gt=class{constructor(A,e){this.ready=e,this.totalSoundfontOffset=0,this.reloadManager(A)}_assingSampleOffsets(){let A=0;this.soundfontList.forEach(e=>{e.soundfont.setSampleIDOffset(A),A+=e.soundfont.samples.length}),this.totalSoundfontOffset=A}generatePresetList(){this._assingSampleOffsets();let A={};for(let e=this.soundfontList.length-1;e>=0;e--){let s=this.soundfontList[e],n=new Set;for(let o of s.soundfont.presets){let i=`${o.bank+s.bankOffset}-${o.program}`;n.has(i)||(n.add(i),A[i]=o.presetName)}}this.presetList=[];for(let[e,s]of Object.entries(A)){let n=e.split("-");this.presetList.push({presetName:s,program:parseInt(n[1]),bank:parseInt(n[0])})}}handleMessage(A,e){switch(A){case Ee.addNewSoundFont:this.addNewSoundFont(e[0],e[1],e[2]);break;case Ee.reloadSoundFont:this.reloadManager(e);break;case Ee.deleteSoundFont:this.deleteSoundFont(e);break;case Ee.rearrangeSoundFonts:this.rearrangeSoundFonts(e)}}getPresetList(){return this.presetList.slice()}reloadManager(A){let e=Ne(A);this.soundfontList=[],this.soundfontList.push({id:"main",bankOffset:0,soundfont:e}),this.generatePresetList(),this.ready()}deleteSoundFont(A){if(this.soundfontList.length===0){H("1 soundfont left. Aborting!");return}let e=this.soundfontList.findIndex(s=>s.id===A);if(e===-1){H(`No soundfont with id of "${A}" found. Aborting!`);return}delete this.soundfontList[e].soundfont.presets,delete this.soundfontList[e].soundfont.instruments,delete this.soundfontList[e].soundfont.samples,this.soundfontList.splice(e,1),this.generatePresetList()}addNewSoundFont(A,e,s){if(this.soundfontList.find(n=>n.id===e)!==void 0)throw new Error("Cannot overwrite the existing soundfont. Use soundfontManager.delete(id) instead.");this.soundfontList.push({id:e,soundfont:Ne(A),bankOffset:s}),this.generatePresetList(),this.ready()}rearrangeSoundFonts(A){this.soundfontList.sort((e,s)=>A.indexOf(e.id)-A.indexOf(s.id)),this.generatePresetList()}getPreset(A,e){if(this.soundfontList.length<1)throw new Error("No soundfonts! This should never happen.");for(let s of this.soundfontList){let n=s.soundfont.getPresetNoFallback(A-s.bankOffset,e);if(n!==void 0)return n}if(A!==128){for(let s of this.soundfontList){let n=s.soundfont.presets.find(o=>o.program===e);if(n)return n}return this.soundfontList[0].soundfont.presets[0]}else{for(let s of this.soundfontList){let n=s.soundfont.presets.find(o=>o.bank===128);if(n)return n}return this.soundfontList[0].soundfont.presets[0]}}destroyManager(){this.soundfontList.forEach(A=>{A.soundfont.destroySoundfont()}),delete this.soundfontList}};var Ct=class{sampleData;playbackStep=0;cursor=0;rootKey=0;loopStart=0;loopEnd=0;end=0;loopingMode=0;isLooping=!1;constructor(A,e,s,n,o,i,g,B){this.sampleData=A,this.playbackStep=e,this.cursor=s,this.rootKey=n,this.loopStart=o,this.loopEnd=i,this.end=g,this.loopingMode=B,this.isLooping=this.loopingMode===1||this.loopingMode===3}},be=class t{sample;filter=new le;generators;modulators=[];modulatedGenerators;finished=!1;isInRelease=!1;channelNumber=0;velocity=0;midiNote=0;pressure=0;targetKey=0;modulationEnvelope=new UA;volumeEnvelope;startTime=0;releaseStartTime=1/0;currentTuningCents=0;currentTuningCalculated=1;currentPan=.5;realKey;constructor(A,e,s,n,o,i,g,B,h,d){this.sample=e,this.generators=h,this.modulatedGenerators=new Int16Array(h),this.modulators=d,this.velocity=n,this.midiNote=s,this.channelNumber=o,this.startTime=i,this.targetKey=g,this.realKey=B,this.volumeEnvelope=new TA(A,h[a.sustainVolEnv])}static copy(A,e){let s=A.sample,n=new Ct(s.sampleData,s.playbackStep,s.cursor,s.rootKey,s.loopStart,s.loopEnd,s.end,s.loopingMode);return new t(A.volumeEnvelope.sampleRate,n,A.midiNote,A.velocity,A.channelNumber,e,A.targetKey,A.realKey,A.generators,A.modulators.map(o=>_.copy(o)))}};function yo(t,A,e,s,n,o,i=!1){let g,B=s.cachedVoices[A][e],h=this.keyModifierManager.hasOverridePatch(t,A);if(B!==void 0&&!h)return B.map(l=>be.copy(l,n));let d=!0,u=s.preset;if(h){d=!1;let l=this.keyModifierManager.getPatch(t,A);u=this.soundfontManager.getPreset(l.bank,l.program)}return g=u.getSamplesAndGenerators(A,e).reduce((l,Q)=>{if(Q.sample.sampleData===void 0)return H(`Discarding invalid sample: ${Q.sample.sampleName}`),l;let p=new Int16Array(60);for(let G=0;G<60;G++)p[G]=Ss(G,Q.presetGenerators,Q.instrumentGenerators);p[a.initialAttenuation]=Math.floor(p[a.initialAttenuation]*.4);let y=Q.sample.samplePitch;p[a.overridingRootKey]>-1&&(y=p[a.overridingRootKey]);let w=A;p[a.keyNum]>-1&&(w=p[a.keyNum]);let k=Q.sample.sampleLoopStartIndex,L=Q.sample.sampleLoopEndIndex,R=p[a.sampleModes],N=new Ct(Q.sample.getAudioData(),Q.sample.sampleRate/sampleRate*Math.pow(2,Q.sample.samplePitchCorrection/1200),0,y,k,L,Math.floor(Q.sample.sampleData.length)-1,R);return p[a.velocity]>-1&&(e=p[a.velocity]),i&&ys([{Sample:Q.sample.sampleName,Generators:p,Modulators:Q.modulators.map(G=>G.debugString()),Velocity:e,TargetKey:w,MidiNote:A,WorkletSample:N}]),l.push(new be(sampleRate,N,A,e,t,n,w,o,p,Q.modulators.map(G=>_.copy(G)))),l},[]),d&&(s.cachedVoices[A][e]=g.map(l=>be.copy(l,n))),g}var $o=4600,Ar=2e3,So=Math.PI/2;function Do(t,A,e,s,n,o){if(isNaN(A[0]))return;let i=(Math.max(-500,Math.min(500,t.modulatedGenerators[a.pan]))+500)/1e3;t.currentPan+=(i-t.currentPan)*this.panSmoothingFactor;let g=this.currentGain,B=Math.cos(So*t.currentPan)*g*this.panLeft,h=Math.sin(So*t.currentPan)*g*this.panRight,d=this.reverbGain*t.modulatedGenerators[a.reverbEffectsSend]/$o*g,u=this.chorusGain*t.modulatedGenerators[a.chorusEffectsSend]/Ar;if(d>0&&!this.oneOutputMode){let l=n[0],Q=n[1];for(let p=0;p<A.length;p++)l[p]+=d*A[p],Q[p]+=d*A[p]}if(u>0&&!this.oneOutputMode){let l=o[0],Q=o[1],p=B*u,y=h*u;for(let w=0;w<A.length;w++)l[w]+=p*A[w],Q[w]+=y*A[w]}if(B>0)for(let l=0;l<A.length;l++)e[l]+=B*A[l];if(h>0)for(let l=0;l<A.length;l++)s[l]+=h*A[l]}var on=.03,cn=.07,Yt=1,Y=class extends AudioWorkletProcessor{constructor(A){super(),this.oneOutputMode=A.processorOptions?.startRenderingData?.oneOutput===!0,this._outputsAmount=this.oneOutputMode?1:A.processorOptions.midiChannels,this.enableEventSystem=A.processorOptions.enableEventSystem,this.alive=!0,this.deviceID=HA,this.interpolationType=Qe.fourthOrder,this.processTickCallback=void 0,this.sequencer=new rA(this),this.transposition=0,this.tunings=[];for(let e=0;e<127;e++)this.tunings.push([]);this.soundfontBankOffset=0,this.masterGain=Yt,this.midiVolume=1,this.reverbGain=1,this.chorusGain=1,this.voiceCap=ws,this.pan=0,this.panLeft=.5,this.highPerformanceMode=!1,this.keyModifierManager=new We,this.overrideSoundfont=void 0,this.panRight=.5;try{this.soundfontManager=new gt(A.processorOptions.soundfont,this.postReady.bind(this))}catch(e){throw this.post({messageType:uA.soundfontError,messageData:e}),e}this.sendPresetList(),this.defaultPreset=this.getPreset(0,0),this.drumPreset=this.getPreset(128,0),this.workletProcessorChannels=[];for(let e=0;e<A.processorOptions.midiChannels;e++)this.createWorkletChannel(!1);this.workletProcessorChannels[SA].preset=this.drumPreset,this.workletProcessorChannels[SA].drumChannel=!0,this.volumeEnvelopeSmoothingFactor=An*(sampleRate/44100),this.panSmoothingFactor=en*(sampleRate/44100),this.system=ze,this.totalVoicesAmount=0,this._snapshot=A.processorOptions?.startRenderingData?.snapshot,this.port.onmessage=e=>this.handleMessage(e.data),A.processorOptions.startRenderingData&&(this._snapshot!==void 0&&(this.applySynthesizerSnapshot(this._snapshot),this.resetAllControllers()),m("%cRendering enabled! Starting render.",r.info),A.processorOptions.startRenderingData.parsedMIDI&&(A.processorOptions.startRenderingData?.loopCount!==void 0?(this.sequencer.loopCount=A.processorOptions.startRenderingData?.loopCount,this.sequencer.loop=!0):this.sequencer.loop=!1,this.sequencer.loadNewSongList([A.processorOptions.startRenderingData.parsedMIDI]))),VA.isInitialized.then(()=>{this.postReady(),m("%cSpessaSynth is ready!",r.recognized)})}get currentGain(){return this.masterGain*this.midiVolume}post(A){this.enableEventSystem&&this.port.postMessage(A)}postReady(){this.enableEventSystem&&this.port.postMessage({messageType:uA.ready,messageData:void 0})}debugMessage(){m({channels:this.workletProcessorChannels,voicesAmount:this.totalVoicesAmount,outputAmount:this._outputsAmount,dumpedSamples:this.workletDumpedSamplesList})}process(A,e){if(!this.alive)return!1;this.processTickCallback&&this.processTickCallback();let s=0;return this.workletProcessorChannels.forEach((n,o)=>{if(n.voices.length<1||n.isMuted)return;let i,g,B,h,d;if(this.oneOutputMode){let l=e[0];i=o%16*2,g=l[i],B=l[i+1]}else i=o%this._outputsAmount+2,g=e[i][0],B=e[i][1],h=e[0],d=e[1];let u=n.voices;n.voices=[],u.forEach(l=>{this.renderVoice(n,l,g,B,h,d),l.finished||n.voices.push(l)}),s+=n.voices.length}),s!==this.totalVoicesAmount&&(this.totalVoicesAmount=s,this.sendChannelProperties()),!0}destroyWorkletProcessor(){this.alive=!1,this.workletProcessorChannels.forEach(A=>{delete A.midiControllers,delete A.voices,delete A.sustainedVoices,delete A.cachedVoices,delete A.lockedControllers,delete A.preset,delete A.customControllers}),delete this.workletProcessorChannels,delete this.sequencer.midiData,delete this.sequencer,this.soundfontManager.destroyManager(),delete this.soundfontManager}};Y.prototype.renderVoice=tn;Y.prototype.releaseVoice=nn;Y.prototype.voiceKilling=sn;Y.prototype.getWorkletVoices=yo;Y.prototype.handleMessage=In;Y.prototype.sendChannelProperties=Cn;Y.prototype.callEvent=gn;Y.prototype.systemExclusive=En;Y.prototype.noteOn=hn;Y.prototype.noteOff=Qn;Y.prototype.polyPressure=Fn;Y.prototype.killNote=ln;Y.prototype.stopAll=un;Y.prototype.stopAllChannels=dn;Y.prototype.muteChannel=bn;Y.prototype.setVibrato=Un;Y.prototype.disableAndLockGSNRPN=Ln;Y.prototype.dataEntryCoarse=Tn;Y.prototype.dataEntryFine=Hn;Y.prototype.createWorkletChannel=Ds;Y.prototype.controllerChange=Gn;Y.prototype.channelPressure=wn;Y.prototype.resetAllControllers=Yn;Y.prototype.resetControllers=Jn;Y.prototype.resetParameters=vn;Y.prototype.setMasterGain=xn;Y.prototype.setMasterPan=Nn;Y.prototype.setMIDIVolume=Mn;Y.prototype.transposeAllChannels=fn;Y.prototype.transposeChannel=mn;Y.prototype.setChannelTuning=pn;Y.prototype.setChannelTuningSemitones=yn;Y.prototype.setMasterTuning=Sn;Y.prototype.setModulationDepth=Dn;Y.prototype.pitchWheel=kn;Y.prototype.setOctaveTuning=Rn;Y.prototype.programChange=Eo;Y.prototype.getPreset=Bo;Y.prototype.setPreset=ho;Y.prototype.setDrums=co;Y.prototype.reloadSoundFont=uo;Y.prototype.clearSoundFont=lo;Y.prototype.setEmbeddedSoundFont=fo;Y.prototype.sendPresetList=Qo;Y.prototype.sendSynthesizerSnapshot=mo;Y.prototype.applySynthesizerSnapshot=po;Y.prototype.panVoice=Do;registerProcessor(ks,Y);m("%cProcessor succesfully registered!",r.recognized);
9
+ `}},Mt=960,Nt=uA.concave;function qA(t,A,e,s,n){return t<<10|A<<9|e<<8|s<<7|n}var Xe=[new X({srcEnum:qA(Nt,0,1,0,P.noteOnVelocity),dest:r.initialAttenuation,amt:Mt,secSrcEnum:0,transform:0}),new X({srcEnum:129,dest:r.vibLfoToPitch,amt:50,secSrcEnum:0,transform:0}),new X({srcEnum:qA(Nt,0,1,1,k.mainVolume),dest:r.initialAttenuation,amt:Mt,secSrcEnum:0,transform:0}),new X({srcEnum:13,dest:r.vibLfoToPitch,amt:50,secSrcEnum:0,transform:0}),new X({srcEnum:526,dest:r.fineTune,amt:12700,secSrcEnum:16,transform:0}),new X({srcEnum:650,dest:r.pan,amt:500,secSrcEnum:0,transform:0}),new X({srcEnum:qA(Nt,0,1,1,k.expressionController),dest:r.initialAttenuation,amt:Mt,secSrcEnum:0,transform:0}),new X({srcEnum:219,dest:r.reverbEffectsSend,amt:200,secSrcEnum:0,transform:0}),new X({srcEnum:221,dest:r.chorusEffectsSend,amt:200,secSrcEnum:0,transform:0}),new X({srcEnum:qA(uA.linear,0,0,0,P.polyPressure),dest:r.vibLfoToPitch,amt:50,secSrcEnum:0,transform:0}),new X({srcEnum:qA(uA.linear,0,0,1,k.tremoloDepth),dest:r.modLfoToVolume,amt:24,secSrcEnum:0,transform:0}),new X({srcEnum:qA(uA.linear,1,0,1,k.releaseTime),dest:r.releaseVolEnv,amt:1200,secSrcEnum:0,transform:0}),new X({srcEnum:qA(uA.linear,1,0,1,k.brightness),dest:r.initialFilterFc,amt:6e3,secSrcEnum:0,transform:0}),new X({srcEnum:qA(uA.linear,1,0,1,k.timbreHarmonicContent),dest:r.initialFilterQ,amt:250,secSrcEnum:0,transform:0})];var dA=128,_e=147,ue=new Int16Array(_e).fill(0),kA=(t,A)=>ue[t]=A<<7;kA(k.mainVolume,100);kA(k.balance,64);kA(k.expressionController,127);kA(k.pan,64);kA(k.timbreHarmonicContent,64);kA(k.releaseTime,64);kA(k.attackTime,64);kA(k.brightness,64);kA(k.soundController6,64);kA(k.soundController7,64);kA(k.soundController8,64);kA(k.soundController9,64);kA(k.generalPurposeController6,64);kA(k.generalPurposeController8,64);kA(dA+P.pitchWheel,64);kA(dA+P.pitchWheelRange,2);var hA={channelTuning:0,channelTransposeFine:1,modulationMultiplier:2,masterTuning:3,channelTuningSemitones:4},bt=Object.keys(hA).length,Lt=new Float32Array(bt);Lt[hA.modulationMultiplier]=1;var wA={Idle:0,RPCoarse:1,RPFine:2,NRPCoarse:3,NRPFine:4,DataCoarse:5,DataFine:6};function Gs(t=!1){let A={midiControllers:new Int16Array(_e),lockedControllers:Array(_e).fill(!1),customControllers:new Float32Array(bt),NRPCoarse:0,NRPFine:0,RPValue:0,dataEntryState:wA.Idle,voices:[],sustainedVoices:[],cachedVoices:[],preset:this.defaultPreset,presetUsesOverride:!1,channelTransposeKeyShift:0,channelOctaveTuning:new Int8Array(12),keyCentTuning:new Int16Array(128),channelVibrato:{delay:0,depth:0,rate:0},velocityOverride:0,lockGSNRPNParams:!1,holdPedal:!1,isMuted:!1,drumChannel:!1,lockPreset:!1};for(let e=0;e<128;e++)A.cachedVoices.push([]);this.workletProcessorChannels.push(A),this.resetControllers(this.workletProcessorChannels.length-1),this.sendChannelProperties(),t&&this.callEvent("newchannel",void 0)}function te(t,A){t.lockPreset||(t.bank=A)}function XA(t){return t.drumChannel?128:t.bank}var Ut={velocityOverride:128};var ze={addMapping:0,deleteMapping:1,clearMappings:2},je=class{_keyMappings=[];handleMessage(A,e){switch(A){default:return;case ze.addMapping:this.addMapping(...e);break;case ze.clearMappings:this.clearMappings();break;case ze.deleteMapping:this.deleteMapping(...e)}}addMapping(A,e,s){this._keyMappings[A]===void 0&&(this._keyMappings[A]=[]),this._keyMappings[A][e]=s}deleteMapping(A,e){this._keyMappings[A]?.[e]!==void 0&&(this._keyMappings[A][e]=void 0)}clearMappings(){this._keyMappings=[]}setMappings(A){this._keyMappings=A}getMappings(){return this._keyMappings}getVelocity(A,e){let s=this._keyMappings[A]?.[e];return s?s.velocity:-1}hasOverridePatch(A,e){let s=this._keyMappings[A]?.[e]?.patch?.bank;return s!==void 0&&s>=0}getPatch(A,e){let s=this._keyMappings[A]?.[e];if(s)return s.patch;throw new Error("No modifier.")}};var xs="spessasynth-worklet-system",Ms=350,RA=9,$e=16,At="gs";var MA={loadNewSongList:0,pause:1,stop:2,play:3,setTime:4,changeMIDIMessageSending:5,setPlaybackRate:6,setLoop:7,changeSong:8,getMIDI:9,setSkipToFirstNote:10,setPreservePlaybackState:11},NA={midiEvent:0,songChange:1,textEvent:2,timeChange:3,pause:4,getMIDI:5,midiError:6};function se(t,A){let e=0;for(let s=8*(A-1);s>=0;s-=8)e|=t[t.currentIndex++]<<s;return e>>>0}function Ns(t,A){if(this.ignoreEvents)return;if(this.sendMIDIMessages&&t.messageStatusByte>=128){this.sendMIDIMessage([t.messageStatusByte,...t.messageData]);return}let e=Ne(t.messageStatusByte),s=this.midiPortChannelOffsets[this.midiPorts[A]]||0;switch(e.channel+=s,e.status){case M.noteOn:let n=t.messageData[1];if(n>0)this.synth.noteOn(e.channel,t.messageData[0],n),this.playingNotes.push({midiNote:t.messageData[0],channel:e.channel,velocity:n});else{this.synth.noteOff(e.channel,t.messageData[0]);let g=this.playingNotes.findIndex(i=>i.midiNote===t.messageData[0]&&i.channel===e.channel);g!==-1&&this.playingNotes.splice(g,1)}break;case M.noteOff:this.synth.noteOff(e.channel,t.messageData[0]);let o=this.playingNotes.findIndex(g=>g.midiNote===t.messageData[0]&&g.channel===e.channel);o!==-1&&this.playingNotes.splice(o,1);break;case M.pitchBend:this.synth.pitchWheel(e.channel,t.messageData[1],t.messageData[0]);break;case M.controllerChange:this.synth.controllerChange(e.channel,t.messageData[0],t.messageData[1]);break;case M.programChange:this.synth.programChange(e.channel,t.messageData[0]);break;case M.polyPressure:this.synth.polyPressure(e.channel,t.messageData[0],t.messageData[1]);break;case M.channelPressure:this.synth.channelPressure(e.channel,t.messageData[0]);break;case M.systemExclusive:this.synth.systemExclusive(t.messageData,s);break;case M.setTempo:this.oneTickToSeconds=60/(sr(t)*this.midiData.timeDivision),this.oneTickToSeconds===0&&(this.oneTickToSeconds=60/(120*this.midiData.timeDivision),U("invalid tempo! falling back to 120 BPM"));break;case M.timeSignature:case M.endOfTrack:case M.midiChannelPrefix:case M.songPosition:case M.activeSensing:case M.keySignature:case M.sequenceNumber:case M.sequenceSpecific:break;case M.text:case M.lyric:case M.copyright:case M.trackName:case M.marker:case M.cuePoint:case M.instrumentName:case M.programName:this.post(NA.textEvent,[t.messageData,e.status]);break;case M.midiPort:this.assignMIDIPort(A,t.messageData[0]);break;case M.reset:this.synth.stopAllChannels(),this.synth.resetAllControllers();break;default:U(`%cUnrecognized Event: %c${t.messageStatusByte}%c status byte: %c${Object.keys(M).find(g=>M[g]===e.status)}`,a.warn,a.unrecognized,a.warn,a.value);break}}function bs(){for(let t=0;t<16;t++)this.synth.createWorkletChannel(!0),t===RA&&this.synth.setDrums(this.synth.workletProcessorChannels.length-1,!0)}function sr(t){return t.messageData.currentIndex=0,6e7/se(t.messageData,3)}function Ls(){let t=this.currentTime;for(;this.playedTime<t;){let A=this._findFirstEventIndex(),e=this.tracks[A][this.eventIndex[A]];if(this._processEvent(e,A),this.eventIndex[A]++,A=this._findFirstEventIndex(),this.tracks[A].length<=this.eventIndex[A]){if(this.loop){this.setTimeTicks(this.midiData.loop.start);return}this.eventIndex[A]--,this.pause(!0),this.songs.length>1&&this.nextSong();return}let s=this.tracks[A][this.eventIndex[A]];if(this.playedTime+=this.oneTickToSeconds*(s.ticks-e.ticks),this.midiData.loop.end<=e.ticks&&this.loop&&this.currentLoopCount>0){this.currentLoopCount--,this.setTimeTicks(this.midiData.loop.start);return}else if(t>=this.duration){if(this.loop&&this.currentLoopCount>0){this.currentLoopCount--,this.setTimeTicks(this.midiData.loop.start);return}this.eventIndex[A]--,this.pause(!0),this.songs.length>1&&this.nextSong();return}}}function Us(){let t=0,A=1/0;return this.tracks.forEach((e,s)=>{this.eventIndex[s]>=e.length||e[this.eventIndex[s]].ticks<A&&(t=s,A=e[this.eventIndex[s]].ticks)}),t}var et=class{constructor(A){this.timeDivision=A.timeDivision,this.duration=A.duration,this.tempoChanges=A.tempoChanges,this.copyright=A.copyright,this.tracksAmount=A.tracksAmount,this.lyrics=A.lyrics,this.firstNoteOn=A.firstNoteOn,this.keyRange=A.keyRange,this.lastVoiceEventTick=A.lastVoiceEventTick,this.midiPorts=A.midiPorts,this.midiPortChannelOffsets=A.midiPortChannelOffsets,this.usedChannelsOnTrack=A.usedChannelsOnTrack,this.loop=A.loop,this.midiName=A.midiName,this.fileName=A.fileName,this.rawMidiName=A.rawMidiName,this.isEmbedded=A.embeddedSoundFont!==void 0,this.RMIDInfo=A.RMIDInfo,this.bankOffset=A.bankOffset}},aa={duration:99999,firstNoteOn:0,loop:{start:0,end:123456},lastVoiceEventTick:123456,lyrics:[],copyright:"",midiPorts:[],midiPortChannelOffsets:[],tracksAmount:0,tempoChanges:[{ticks:0,tempo:120}],fileName:"NOT_LOADED.mid",midiName:"Loading...",rawMidiName:new Uint8Array([76,111,97,100,105,110,103,46,46,46]),usedChannelsOnTrack:[],timeDivision:0,keyRange:{min:0,max:127},isEmbedded:!1,RMIDInfo:void 0,bankOffset:0};function F(t,A){let e=0;for(let s=0;s<A;s++)e|=t[t.currentIndex++]<<s*8;return e>>>0}function de(t,A,e){for(let s=0;s<e;s++)t[t.currentIndex++]=A>>s*8&255}function N(t,A){t[t.currentIndex++]=A&255,t[t.currentIndex++]=A>>8}function V(t,A){de(t,A,4)}function ne(t,A){let e=A<<8|t;return e>32767?e-65536:e}function Ts(t){return t>127?t-256:t}function _(t,A,e=void 0,s=!0){if(e){let n=t.slice(t.currentIndex,t.currentIndex+A);return t.currentIndex+=A,new TextDecoder(e.replace(/[^\x20-\x7E]/g,"")).decode(n.buffer)}else{let n=!1,o="";for(let g=0;g<A;g++){let i=t[t.currentIndex++];if(!n){if((i<32||i>127)&&i!==10){if(s){n=!0;continue}else if(i===0){n=!0;continue}}o+=String.fromCharCode(i)}}return o}}function ge(t,A=0){let e=t.length;A>0&&(e=A);let s=new b(e);return yA(s,t,A),s}function yA(t,A,e=0){e>0&&A.length>e&&(A=A.slice(0,e));for(let s=0;s<A.length;s++)t[t.currentIndex++]=A.charCodeAt(s);if(e>A.length)for(let s=0;s<e-A.length;s++)t[t.currentIndex++]=0;return t}var oA=class{constructor(A,e,s){this.header=A,this.size=e,this.chunkData=s}};function z(t,A=!0,e=!1){let s=_(t,4),n=F(t,4),o;return A&&(o=new b(t.buffer.slice(t.currentIndex,t.currentIndex+n))),(A||e)&&(t.currentIndex+=n),n%2!==0&&t[t.currentIndex]===0&&t.currentIndex++,new oA(s,n,o)}function gA(t,A=void 0){let e=8+t.size;t.size%2!==0&&e++,A&&(e+=A.length);let s=new b(e);return A&&(s.set(A,s.currentIndex),s.currentIndex+=A.length),yA(s,t.header),V(s,e-8-(A?.length||0)),s.set(t.chunkData,s.currentIndex),s}function tA(t,A,e=!1,s=!1){if(e){let h=new Uint8Array(A.length+1);h.set(A,0),A=h}let n=8,o=n+A.length,g=A.length;o%2!==0&&o++;let i=t;s&&(o+=4,g+=4,n+=4,i="LIST");let E=new b(o);return yA(E,i),V(E,g),s&&yA(E,t),E.set(A,n),E}function GA(t,A){return t.find(e=>e.header!=="LIST"?!1:(e.chunkData.currentIndex=0,_(e.chunkData,4)===A))}function tt(t){let A=0;for(;t;){let e=t[t.currentIndex++];if(A=A<<7|e&127,e>>7!==1)break}return A}var st={name:"INAM",album:"IPRD",artist:"IART",genre:"IGNR",picture:"IPIC",copyright:"ICOP",creationDate:"ICRD",comment:"ICMT",engineer:"IENG",software:"ISFT",encoding:"IENC",midiEncoding:"MENC",bankOffset:"DBNK"};var nt=class{constructor(){this.timeDivision=0,this.duration=0,this.tempoChanges=[{ticks:0,tempo:120}],this.copyright="",this.tracksAmount=0,this.lyrics=[],this.firstNoteOn=0,this.keyRange={min:0,max:127},this.lastVoiceEventTick=0,this.midiPorts=[0],this.midiPortChannelOffsets=[0],this.usedChannelsOnTrack=[],this.loop={start:0,end:0},this.midiName="",this.fileName="",this.rawMidiName=void 0,this.embeddedSoundFont=void 0,this.format=0,this.RMIDInfo={},this.bankOffset=0,this.tracks=[]}};function fe(t,A){let e=0;for(;t>0;){let s=A.tempoChanges.find(o=>o.ticks<t),n=t-s.ticks;e+=n*60/(s.tempo*A.timeDivision),t-=n}return e}var nr=new Uint8Array([65,16,69,18,16,0,0]),ot=class extends nt{constructor(A,e=""){super(),QA("%cParsing MIDI File...",a.info);let s=new b(A),n,o=!1,g=!1,i=!1,E=_(s,4);if(s.currentIndex-=4,E==="RIFF"){s.currentIndex+=8;let y=_(s,4,void 0,!1);if(y!=="RMID")throw K(),new SyntaxError(`Invalid RMIDI Header! Expected "RMID", got "${y}"`);let S=z(s);if(S.header!=="data")throw K(),new SyntaxError(`Invalid RMIDI Chunk header! Expected "data", got "${y}"`);for(n=S.chunkData;s.currentIndex<=s.length;){let w=s.currentIndex,H=z(s,!0);if(H.header==="RIFF"){let R=_(H.chunkData,4).toLowerCase();R==="sfbk"||R==="sfpk"||R==="dls "?(p("%cFound embedded soundfont!",a.recognized),this.embeddedSoundFont=s.slice(w,w+H.size).buffer):U(`Unknown RIFF chunk: "${R}"`),R==="dls "&&(i=!0)}else if(H.header==="LIST"&&_(H.chunkData,4)==="INFO"){for(p("%cFound RMIDI INFO chunk!",a.recognized),this.RMIDInfo={};H.chunkData.currentIndex<=H.size;){let x=z(H.chunkData,!0);this.RMIDInfo[x.header]=x.chunkData}this.RMIDInfo.ICOP&&(o=!0,this.copyright=_(this.RMIDInfo.ICOP,this.RMIDInfo.ICOP.length,void 0,!1).replaceAll(`
10
+ `," ")),this.RMIDInfo.INAM&&(this.rawMidiName=this.RMIDInfo[st.name],this.midiName=_(this.rawMidiName,this.rawMidiName.length,void 0,!1).replaceAll(`
11
+ `," "),g=!0),this.RMIDInfo.IALB&&!this.RMIDInfo.IPRD&&(this.RMIDInfo.IPRD=this.RMIDInfo.IALB),this.RMIDInfo.PRD&&!this.RMIDInfo.IALB&&(this.RMIDInfo.IALB=this.RMIDInfo.IPRD),this.bankOffset=1,this.RMIDInfo[st.bankOffset]&&(this.bankOffset=F(this.RMIDInfo[st.bankOffset],2))}}i&&(this.bankOffset=0)}else n=s;let h=this.readMIDIChunk(n);if(h.type!=="MThd")throw K(),new SyntaxError(`Invalid MIDI Header! Expected "MThd", got "${h.type}"`);if(h.size!==6)throw K(),new RangeError(`Invalid MIDI header chunk size! Expected 6, got ${h.size}`);this.format=se(h.data,2),this.tracksAmount=se(h.data,2),this.timeDivision=se(h.data,2),this.keyRange={min:127,max:0},this.lyrics=[],this.tempoChanges=[{ticks:0,tempo:120}];let d=null,Q=null;this.lastVoiceEventTick=0,this.midiPorts=[];let l=0;this.midiPortChannelOffsets=[],this.usedChannelsOnTrack=[],this.tracks=[];for(let y=0;y<this.tracksAmount;y++){let S=[],w=this.readMIDIChunk(n),H=new Set;if(this.midiPorts.push(-1),w.type!=="MTrk")throw K(),new SyntaxError(`Invalid track header! Expected "MTrk" got "${w.type}"`);let R,x=0;for(this.format===2&&y>0&&(x+=this.tracks[y-1][this.tracks[y-1].length-1].ticks);w.data.currentIndex<w.size;){x+=tt(w.data);let G=w.data[w.data.currentIndex],I;if(R!==void 0&&G<128)I=R;else{if(!R&&G<128)throw K(),new SyntaxError(`Unexpected byte with no running byte. (${G})`);I=w.data[w.data.currentIndex++]}let rA=ps(I),O;switch(rA){case-1:O=0;break;case-2:I=w.data[w.data.currentIndex++],O=tt(w.data);break;case-3:O=tt(w.data);break;default:if(x>this.lastVoiceEventTick&&(this.lastVoiceEventTick=x),O=ys[I>>4],(I&240)===M.noteOn){H.add(rA);let nA=w.data[w.data.currentIndex];this.keyRange.min=Math.min(this.keyRange.min,nA),this.keyRange.max=Math.max(this.keyRange.max,nA)}R=I;break}let AA=new b(O),$=w.data.slice(w.data.currentIndex,w.data.currentIndex+O);w.data.currentIndex+=O,AA.set($,0);let IA=new ce(x,I,AA);switch(S.push(IA),rA){case-2:switch(I){case M.setTempo:this.tempoChanges.push({ticks:x,tempo:6e7/se($,3)});break;case M.marker:switch(_(AA,AA.length).trim().toLowerCase()){default:break;case"start":case"loopstart":d=x;break;case"loopend":Q=x}AA.currentIndex=0;break;case M.midiPort:let iA=AA[0];this.midiPorts[y]=iA,this.midiPortChannelOffsets[iA]===void 0&&(this.midiPortChannelOffsets[iA]=l,l+=16);break;case M.copyright:o||(this.copyright+=_(AA,AA.length,void 0,!1)+`
12
+ `);break;case M.lyric:this.lyrics.push(AA)}break;case-3:if(AA.slice(0,7).every((nA,iA)=>nr[iA]===nA)){let nA=AA.slice(7,$.length-3),iA=_(nA,nA.length)+`
13
+ `;this.copyright+=iA,p(`%cDecoded Roland SC message! %c${iA}`,a.recognized,a.value)}break;default:if((I&240)===M.controllerChange)switch(AA[0]){case 2:case 116:d=x;break;case 4:case 117:Q===null?Q=x:Q=0;break;case 0:i&&AA[1]!==0&&AA[1]!==127&&(p("%cDLS RMIDI with offset 1 detected!",a.recognized),this.bankOffset=1)}}}this.tracks.push(S),this.usedChannelsOnTrack.push(H),p(`%cParsed %c${this.tracks.length}%c / %c${this.tracksAmount}`,a.info,a.value,a.info,a.value)}p("%cAll tracks parsed correctly!",a.recognized),QA("%cCorrecting loops, ports and detecting notes...",a.info);let c=[];for(let y of this.tracks){let S=y.find(w=>(w.messageStatusByte&240)===M.noteOn);S&&c.push(S.ticks)}this.firstNoteOn=Math.min(...c),p(`%cFirst note-on detected at: %c${this.firstNoteOn}%c ticks!`,a.info,a.recognized,a.info),d!==null&&Q===null?(d=this.firstNoteOn,Q=this.lastVoiceEventTick):(d===null&&(d=this.firstNoteOn),(Q===null||Q===0)&&(Q=this.lastVoiceEventTick)),this.loop={start:d,end:Q},p(`%cLoop points: start: %c${this.loop.start}%c end: %c${this.loop.end}`,a.info,a.recognized,a.info,a.recognized);let f=0;for(let y of this.midiPorts)if(y!==-1){f=y;break}if(this.midiPorts=this.midiPorts.map(y=>y===-1?f:y),this.midiPortChannelOffsets.length===0&&(this.midiPortChannelOffsets=[0]),this.midiPortChannelOffsets.length<2?p("%cNo additional MIDI Ports detected.",a.info):p("%cMIDI Ports detected!",a.recognized),!g)if(this.tracks.length>1){if(this.tracks[0].find(y=>y.messageStatusByte>=M.noteOn&&y.messageStatusByte<M.polyPressure)===void 0){let y=this.tracks[0].find(S=>S.messageStatusByte===M.trackName);y&&(this.rawMidiName=y.messageData,this.midiName=_(y.messageData,y.messageData.length,void 0,!1))}}else{let y=this.tracks[0].find(S=>S.messageStatusByte===M.trackName);y&&(this.rawMidiName=y.messageData,this.midiName=_(y.messageData,y.messageData.length,void 0,!1))}if(this.fileName=e,this.midiName=this.midiName.trim(),this.midiName.length===0){p("%cNo name detected. Using the alt name!",a.info),this.midiName=ms(e),this.rawMidiName=new Uint8Array(this.midiName.length);for(let y=0;y<this.midiName.length;y++)this.rawMidiName[y]=this.midiName.charCodeAt(y)}else p(`%cMIDI Name detected! %c"${this.midiName}"`,a.info,a.recognized);this.tempoChanges.reverse(),this.duration=fe(this.lastVoiceEventTick,this),K(),p(`%cMIDI file parsed. Total tick time: %c${this.lastVoiceEventTick}%c, total seconds time: %c${this.duration}`,a.info,a.recognized,a.info,a.recognized),K()}readMIDIChunk(A){let e={};e.type=_(A,4),e.size=se(A,4),e.data=new b(e.size);let s=A.slice(A.currentIndex,A.currentIndex+e.size);return e.data.set(s,0),A.currentIndex+=e.size,e}};function vs(t,A){QA("%cSearching for all used programs and keys...",a.info);let e=16+t.midiPortChannelOffsets.reduce((Q,l)=>l>Q?l:Q),s=[];for(let Q=0;Q<e;Q++){let l=Q%16===RA?128:0;s.push({program:0,bank:l,drums:Q%16===RA,string:`${l}:0`})}function n(Q){let l=A.getPreset(Q.bank,Q.program);Q.bank=l.bank,Q.program=l.program,Q.string=Q.bank+":"+Q.program,o[Q.string]||(p(`%cDetected a new preset: %c${Q.string}`,a.info,a.recognized),o[Q.string]=new Set)}let o={},g=Array(t.tracks.length).fill(0),i=t.tracks.length;function E(){let Q=0,l=1/0;return t.tracks.forEach((c,f)=>{g[f]>=c.length||c[g[f]].ticks<l&&(Q=f,l=c[g[f]].ticks)}),Q}let h=t.midiPorts.slice(),d="gs";for(;i>0;){let Q=E(),l=t.tracks[Q];if(g[Q]>=l.length){i--;continue}let c=l[g[Q]];if(g[Q]++,c.messageStatusByte===M.midiPort){h[Q]=c.messageData[0];continue}let f=c.messageStatusByte&240;if(f!==M.noteOn&&f!==M.controllerChange&&f!==M.programChange&&f!==M.systemExclusive)continue;let y=(c.messageStatusByte&15)+t.midiPortChannelOffsets[h[Q]]||0,S=s[y];switch(f){case M.programChange:S.program=c.messageData[0],n(S);break;case M.controllerChange:if(c.messageData[0]!==k.bankSelect||d==="gs"&&S.drums)continue;let w=c.messageData[1],H=Math.max(0,w-t.bankOffset);if(d==="xg"){let G=w===120||w===126||w===127;G!==S.drums?(S.drums=G,S.bank=S.drums?128:H,n(S)):S.bank=S.drums?128:H;continue}s[y].bank=H;break;case M.noteOn:if(c.messageData[1]===0)continue;n(S),o[S.string].add(`${c.messageData[0]}-${c.messageData[1]}`);break;case M.systemExclusive:if(c.messageData[0]!==65||c.messageData[2]!==66||c.messageData[3]!==18||c.messageData[4]!==64||!(c.messageData[5]&16)||c.messageData[6]!==21){c.messageData[0]===67&&c.messageData[2]===76&&c.messageData[5]===126&&c.messageData[6]===0&&(d="xg");continue}let R=[9,0,1,2,3,4,5,6,7,8,10,11,12,13,14,15][c.messageData[5]&15]+t.midiPortChannelOffsets[h[Q]],x=!!(c.messageData[7]>0&&c.messageData[5]>>4);S=s[R],S.drums=x,S.bank=x?128:0,n(S);break}}for(let Q of Object.keys(o))o[Q].size===0&&(p(`%cDetected change but no keys for %c${Q}`,a.info,a.value),delete o[Q]);return K(),o}function Hs(t,A){this.midiData.usedChannelsOnTrack[t].size!==0&&(this.midiPortChannelOffset===0&&(this.midiPortChannelOffset+=16,this.midiPortChannelOffsets[A]=0),this.midiPortChannelOffsets[A]===void 0&&(this.synth.workletProcessorChannels.length<this.midiPortChannelOffset+15&&this._addNewMidiPort(),this.midiPortChannelOffsets[A]=this.midiPortChannelOffset,this.midiPortChannelOffset+=16),this.midiPorts[t]=A)}function Ys(t,A=!0){if(this.stop(),!t.tracks)throw new Error("This MIDI has no tracks!");if(this.oneTickToSeconds=60/(120*t.timeDivision),this.midiData=t,this.currentLoopCount=this.loopCount,this.midiData.embeddedSoundFont!==void 0)p("%cEmbedded soundfont detected! Using it.",a.recognized),this.synth.setEmbeddedSoundFont(this.midiData.embeddedSoundFont,this.midiData.bankOffset);else{this.synth.overrideSoundfont&&this.synth.clearSoundFont(!0,!0),QA("%cPreloading samples...",a.info);let e=vs(this.midiData,this.synth.soundfontManager);for(let[s,n]of Object.entries(e)){let o=parseInt(s.split(":")[0]),g=parseInt(s.split(":")[1]),i=this.synth.getPreset(o,g);p(`%cPreloading used samples on %c${i.presetName}%c...`,a.info,a.recognized,a.info);for(let E of n){let h=E.split("-");i.preloadSpecific(parseInt(h[0]),parseInt(h[1]))}}K()}if(this.tracks=this.midiData.tracks,this.midiPorts=this.midiData.midiPorts,this.midiPortChannelOffset=0,this.midiPortChannelOffsets={},this.midiData.midiPorts.forEach((e,s)=>{this.assignMIDIPort(s,e)}),this.duration=this.midiData.duration,this.firstNoteTime=fe(this.midiData.firstNoteOn,this.midiData),p(`%cTotal song time: ${xt(Math.ceil(this.duration)).time}`,a.recognized),this.post(NA.songChange,[new et(this.midiData),this.songIndex,A]),this.duration<=1&&(U(`%cVery short song: (${xt(Math.round(this.duration)).time}). Disabling loop!`,a.warn),this.loop=!1),A)this.play(!0);else{let e=this._skipToFirstNoteOn?this.midiData.firstNoteOn-1:0;this.setTimeTicks(e),this.pause()}}function Js(t,A=!0){this.songs=t.reduce((e,s)=>{if(s.duration)return e.push(s),e;try{e.push(new ot(s.binary,s.altName||""))}catch(n){return this.post(NA.midiError,n.message),e}return e},[]),!(this.songs.length<1)&&(this.songIndex=0,this.songs.length>1&&(this.loop=!1),this.loadNewSequence(this.songs[this.songIndex],A))}function Ps(){if(this.songs.length===1){this.currentTime=0;return}this.songIndex++,this.songIndex%=this.songs.length,this.loadNewSequence(this.songs[this.songIndex])}function qs(){if(this.songs.length===1){this.currentTime=0;return}this.songIndex--,this.songIndex<0&&(this.songIndex=this.songs.length-1),this.loadNewSequence(this.songs[this.songIndex])}var be=ue.slice(0,128);function Ks(t,A=void 0){this.oneTickToSeconds=60/(120*this.midiData.timeDivision),this.synth.resetAllControllers(),this.sendMIDIReset(),this._resetTimers();let e=this.synth.workletProcessorChannels.length,s=Array(e).fill(8192),n=[];for(let i=0;i<e;i++)n.push({program:-1,bank:0,actualBank:0});let o=i=>i===k.dataDecrement||i===k.dataIncrement||i===k.dataEntryMsb||i===k.dataDecrement||i===k.lsbForControl6DataEntry||i===k.RPNLsb||i===k.RPNMsb||i===k.NRPNLsb||i===k.NRPNMsb||i===k.bankSelect||i===k.lsbForControl0BankSelect||i===k.resetAllControllers,g=[];for(let i=0;i<e;i++)g.push(Array.from(be));for(;;){let i=this._findFirstEventIndex(),E=this.tracks[i][this.eventIndex[i]];if(A!==void 0){if(E.ticks>=A)break}else if(this.playedTime>=t)break;let h=Ne(E.messageStatusByte),d=h.channel+(this.midiPortChannelOffsets[this.midiPorts[i]]||0);switch(h.status){case M.noteOn:case M.noteOff:case M.keySignature:break;case M.pitchBend:s[d]=E.messageData[1]<<7|E.messageData[0];break;case M.programChange:let l=n[d];l.program=E.messageData[0],l.actualBank=l.bank;break;case M.controllerChange:let c=E.messageData[0];if(o(c)){let f=E.messageData[1];if(c===k.bankSelect){n[d].bank=f;break}else c===k.resetAllControllers&&(g[d]=Array.from(be));this.sendMIDIMessages?this.sendMIDICC(d,c,f):this.synth.controllerChange(d,c,f)}else g[d]===void 0&&(g[d]=Array.from(be)),g[d][c]=E.messageData[1];break;default:this._processEvent(E,i);break}this.eventIndex[i]++,i=this._findFirstEventIndex();let Q=this.tracks[i][this.eventIndex[i]];if(Q===void 0)return this.stop(),!1;this.playedTime+=this.oneTickToSeconds*(Q.ticks-E.ticks)}if(this.sendMIDIMessages){for(let i=0;i<e;i++)if(s[i]!==void 0&&this.sendMIDIPitchWheel(i,s[i]>>7,s[i]&127),g[i]!==void 0&&g[i].forEach((E,h)=>{E!==be[h]&&!o(h)&&this.sendMIDICC(i,h,E)}),n[i].program>=0&&n[i].actualBank>=0){let E=n[i].actualBank;this.sendMIDICC(i,k.bankSelect,E),this.sendMIDIProgramChange(i,n[i].program)}}else for(let i=0;i<e;i++)if(s[i]!==void 0&&this.synth.pitchWheel(i,s[i]>>7,s[i]&127),g[i]!==void 0&&g[i].forEach((E,h)=>{E!==be[h]&&!o(h)&&this.synth.controllerChange(i,h,E)}),n[i].program>=0&&n[i].actualBank>=0){let E=n[i].actualBank;this.synth.controllerChange(i,k.bankSelect,E),this.synth.programChange(i,n[i].program)}return!0}function Vs(t=!1){if(this.midiData!==void 0){if(t){this.pausedTime=void 0,this.currentTime=0;return}if(this.currentTime>=this.duration){this.pausedTime=void 0,this.currentTime=0;return}this.paused&&(this._recalculateStartTime(this.pausedTime),this.pausedTime=void 0),this.sendMIDIMessages||this.playingNotes.forEach(A=>{this.synth.noteOn(A.channel,A.midiNote,A.velocity,!1,!0)}),this.setProcessHandler()}}function Os(t){this.stop(),this.playingNotes=[],this.pausedTime=void 0,this.post(NA.timeChange,currentTime-fe(t,this.midiData));let A=this._playTo(0,t);this._recalculateStartTime(this.playedTime),A&&this.play()}function Zs(t){this.absoluteStartTime=currentTime-t/this._playbackRate}function Ws(t,A){switch(t){default:break;case MA.loadNewSongList:this.loadNewSongList(A[0],A[1]);break;case MA.pause:this.pause();break;case MA.play:this.play(A);break;case MA.stop:this.stop();break;case MA.setTime:this.currentTime=A;break;case MA.changeMIDIMessageSending:this.sendMIDIMessages=A;break;case MA.setPlaybackRate:this.playbackRate=A;break;case MA.setLoop:this.loop=A;break;case MA.changeSong:A?this.nextSong():this.previousSong();break;case MA.getMIDI:this.post(NA.getMIDI,this.midiData);break;case MA.setSkipToFirstNote:this._skipToFirstNoteOn=A;break;case MA.setPreservePlaybackState:this.preservePlaybackState=A}}function Xs(t,A=void 0){this.synth.enableEventSystem&&this.synth.post({messageType:DA.sequencerSpecific,messageData:{messageType:t,messageData:A}})}function _s(t){this.post(NA.midiEvent,t)}function zs(t,A,e){t%=16,this.sendMIDIMessages&&this.sendMIDIMessage([M.controllerChange|t,A,e])}function js(t,A){t%=16,this.sendMIDIMessages&&this.sendMIDIMessage([M.programChange|t,A])}function $s(t,A,e){t%=16,this.sendMIDIMessages&&this.sendMIDIMessage([M.pitchBend|t,e,A])}function An(){if(this.sendMIDIMessages){this.sendMIDIMessage([M.reset]);for(let t=0;t<$e;t++)this.sendMIDIMessage([M.controllerChange|t,k.allSoundOff,0]),this.sendMIDIMessage([M.controllerChange|t,k.resetAllControllers,0])}}var BA=class{constructor(A){this.synth=A,this.ignoreEvents=!1,this.sendMIDIMessages=!1,this.loopCount=1/0,this.currentLoopCount=this.loopCount,this.eventIndex=[],this.songIndex=0,this.playedTime=0,this.pausedTime=void 0,this.absoluteStartTime=currentTime,this._playbackRate=1,this.playingNotes=[],this.loop=!0,this.midiData=void 0,this.midiPorts=[],this.midiPortChannelOffset=0,this.midiPortChannelOffsets={},this._skipToFirstNoteOn=!0,this.preservePlaybackState=!1}set playbackRate(A){let e=this.currentTime;this._playbackRate=A,this.currentTime=e}get currentTime(){return this.pausedTime!==void 0?this.pausedTime:(currentTime-this.absoluteStartTime)*this._playbackRate}set currentTime(A){if(A>this.duration||A<0){this._skipToFirstNoteOn?this.setTimeTicks(this.midiData.firstNoteOn-1):this.setTimeTicks(0);return}if(this._skipToFirstNoteOn&&A<this.firstNoteTime){this.setTimeTicks(this.midiData.firstNoteOn-1);return}this.stop(),this.playingNotes=[];let e=this.paused&&this.preservePlaybackState;this.pausedTime=void 0,this.post(NA.timeChange,currentTime-A),this._playTo(A),this._recalculateStartTime(A),e?this.pause():this.play()}get paused(){return this.pausedTime!==void 0}pause(A=!1){if(this.paused){U("Already paused");return}this.pausedTime=this.currentTime,this.stop(),this.post(NA.pause,A)}stop(){this.clearProcessHandler();for(let A=0;A<16;A++)this.synth.controllerChange(A,k.sustainPedal,0);if(this.synth.stopAllChannels(),this.sendMIDIMessages){for(let A of this.playingNotes)this.sendMIDIMessage([M.noteOff|A.channel%16,A.midiNote]);for(let A=0;A<$e;A++)this.sendMIDICC(A,k.allNotesOff,0),this.sendMIDICC(A,k.allSoundOff,0)}}_resetTimers(){this.playedTime=0,this.eventIndex=Array(this.tracks.length).fill(0)}setProcessHandler(){this.synth.processTickCallback=this._processTick.bind(this)}clearProcessHandler(){this.synth.processTickCallback=void 0}};BA.prototype.sendMIDIMessage=_s;BA.prototype.sendMIDIReset=An;BA.prototype.sendMIDICC=zs;BA.prototype.sendMIDIProgramChange=js;BA.prototype.sendMIDIPitchWheel=$s;BA.prototype.assignMIDIPort=Hs;BA.prototype.post=Xs;BA.prototype.processMessage=Ws;BA.prototype._processEvent=Ns;BA.prototype._addNewMidiPort=bs;BA.prototype._processTick=Ls;BA.prototype._findFirstEventIndex=Us;BA.prototype.loadNewSequence=Ys;BA.prototype.loadNewSongList=Js;BA.prototype.nextSong=Ps;BA.prototype.previousSong=qs;BA.prototype.play=Vs;BA.prototype._playTo=Ks;BA.prototype.setTimeTicks=Os;BA.prototype._recalculateStartTime=Zs;var Tt=new Float32Array(30001);for(let t=0;t<Tt.length;t++){let A=-15e3+t;Tt[t]=Math.pow(2,A/1200)}function KA(t){return t<=-32767?0:Tt[t- -15e3]}var rt=-2e4,en=16500,vt=new Float32Array(en-rt+1);for(let t=0;t<vt.length;t++){let A=rt+t;vt[t]=440*Math.pow(2,(A-6900)/1200)}function Le(t){return t<rt||t>en?440*Math.pow(2,(t-6900)/1200):vt[~~t-rt]}var Yt=-1660,or=1600,Ht=new Float32Array((or-Yt)*100+1);for(let t=0;t<Ht.length;t++){let A=(Yt*100+t)/100;Ht[t]=Math.pow(10,-A/20)}function VA(t){return Ht[Math.floor((t-Yt)*100)]}function it(t,A,e){if(e<t)return 0;let s=(e-t)/(1/A)+.25;return Math.abs(s-~~(s+.5))*4-1}var fA=16384,jA=new Float32Array(fA+1),Ie=new Float32Array(fA+1);jA[0]=0;jA[jA.length-1]=1;Ie[0]=0;Ie[Ie.length-1]=1;for(let t=1;t<fA-1;t++){let A=-.4166666666666667*Math.log(t/(jA.length-1))/Math.LN10;Ie[t]=1-A,jA[jA.length-1-t]=A}function Ce(t,A,e,s){switch(t&&(e=1-e),A){case uA.linear:return s?e*2-1:e;case uA.switch:return e=e>.5?1:0,s?e*2-1:e;case uA.concave:return s?(e=e*2-1,e<0?-jA[~~(e*-fA)]:jA[~~(e*fA)]):jA[~~(e*fA)];case uA.convex:return s?(e=e*2-1,e<0?-Ie[~~(e*-fA)]:Ie[~~(e*fA)]):Ie[~~(e*fA)]}}var Jt=1,Pt=new Float32Array(1e3);for(let t=0;t<Pt.length;t++)Pt[t]=Ce(0,uA.convex,t/1e3,0);var YA=class t{attackDuration=0;decayDuration=0;holdDuration=0;releaseDuration=0;sustainLevel=0;delayEnd=0;attackEnd=0;holdEnd=0;decayEnd=0;releaseStartLevel=0;currentValue=0;static startRelease(A){t.recalculate(A)}static recalculate(A){let e=A.modulationEnvelope;A.isInRelease&&(e.releaseStartLevel=t.getValue(A,A.releaseStartTime,!0)),e.sustainLevel=1-A.modulatedGenerators[r.sustainModEnv]/1e3,e.attackDuration=KA(A.modulatedGenerators[r.attackModEnv]);let s=(60-A.midiNote)*A.modulatedGenerators[r.keyNumToModEnvDecay],n=KA(A.modulatedGenerators[r.decayModEnv]+s);e.decayDuration=n*(1-e.sustainLevel);let o=(60-A.midiNote)*A.modulatedGenerators[r.keyNumToModEnvHold];e.holdDuration=KA(o+A.modulatedGenerators[r.holdModEnv]);let g=KA(A.modulatedGenerators[r.releaseModEnv]);e.releaseDuration=g*e.releaseStartLevel,e.delayEnd=A.startTime+KA(A.modulatedGenerators[r.delayModEnv]),e.attackEnd=e.delayEnd+e.attackDuration,e.holdEnd=e.attackEnd+e.holdDuration,e.decayEnd=e.holdEnd+e.decayDuration}static getValue(A,e,s=!1){let n=A.modulationEnvelope;return A.isInRelease&&!s?n.releaseStartLevel===0?0:Math.max(0,(1-(e-A.releaseStartTime)/n.releaseDuration)*n.releaseStartLevel):(e<n.delayEnd?n.currentValue=0:e<n.attackEnd?n.currentValue=Pt[~~((1-(n.attackEnd-e)/n.attackDuration)*1e3)]:e<n.holdEnd?n.currentValue=Jt:e<n.decayEnd?n.currentValue=(1-(n.decayEnd-e)/n.decayDuration)*(n.sustainLevel-Jt)+Jt:n.currentValue=n.sustainLevel,n.currentValue)}};var me={linear:0,nearestNeighbor:1,fourthOrder:2};function tn(t,A){let e=t.sample,s=e.cursor,n=e.sampleData;if(e.isLooping){let o=e.loopEnd-e.loopStart;for(let g=0;g<A.length;g++){for(;s>=e.loopEnd;)s-=o;let i=~~s,E=i+1;for(;E>=e.loopEnd;)E-=o;let h=s-i,d=n[E],Q=n[i];A[g]=Q+(d-Q)*h,s+=e.playbackStep*t.currentTuningCalculated}}else{if(e.loopingMode===2&&!t.isInRelease)return;for(let o=0;o<A.length;o++){let g=~~s,i=g+1;if(i>=e.end){t.finished=!0;return}let E=s-g,h=n[i],d=n[g];A[o]=d+(h-d)*E,s+=e.playbackStep*t.currentTuningCalculated}}t.sample.cursor=s}function sn(t,A){let e=t.sample,s=e.cursor,n=e.loopEnd-e.loopStart,o=e.sampleData;if(t.sample.isLooping)for(let g=0;g<A.length;g++){for(;s>=e.loopEnd;)s-=n;let i=~~s+1;for(;i>=e.loopEnd;)i-=n;A[g]=o[i],s+=e.playbackStep*t.currentTuningCalculated}else{if(e.loopingMode===2&&!t.isInRelease)return;for(let g=0;g<A.length;g++){let i=~~s+1;if(i>=e.end){t.finished=!0;return}A[g]=o[i],s+=e.playbackStep*t.currentTuningCalculated}}e.cursor=s}function nn(t,A){let e=t.sample,s=e.cursor,n=e.sampleData;if(e.isLooping){let o=e.loopEnd-e.loopStart;for(let g=0;g<A.length;g++){for(;s>=e.loopEnd;)s-=o;let i=~~s,E=i+1,h=E+1,d=h+1,Q=s-i;E>=e.loopEnd&&(E-=o),h>=e.loopEnd&&(h-=o),d>=e.loopEnd&&(d-=o);let l=n[i],c=n[E],f=n[h],y=n[d],S=.5*(f-l),w=l-2.5*c+2*f-.5*y,H=.5*(y-l)+1.5*(c-f);A[g]=((H*Q+w)*Q+S)*Q+c,s+=e.playbackStep*t.currentTuningCalculated}}else{if(e.loopingMode===2&&!t.isInRelease)return;for(let o=0;o<A.length;o++){let g=~~s,i=g+1,E=i+1,h=E+1,d=s-g;if(i>=e.end||E>=e.end||h>=e.end){t.finished=!0;return}let Q=n[g],l=n[i],c=n[E],f=n[h],y=.5*(c-Q),S=Q-2.5*l+2*c-.5*f,w=.5*(f-Q)+1.5*(l-c);A[o]=((w*d+S)*d+y)*d+l,s+=e.playbackStep*t.currentTuningCalculated}}t.sample.cursor=s}var on=.001,bA=100,qt=90,rr=15e-6,JA=class t{currentSampleTime=0;sampleRate;currentAttenuationDb=bA;state=0;releaseStartDb=bA;releaseStartTimeSamples=0;currentReleaseGain=1;attackDuration=0;decayDuration=0;releaseDuration=0;attenuation=0;attenuationTarget=0;sustainDbRelative=0;delayEnd=0;attackEnd=0;holdEnd=0;decayEnd=0;constructor(A,e){this.sampleRate=A,this.canEndOnSilentSustain=e/10>=qt}static startRelease(A){A.volumeEnvelope.releaseStartTimeSamples=A.volumeEnvelope.currentSampleTime,A.volumeEnvelope.currentReleaseGain=VA(A.volumeEnvelope.currentAttenuationDb),t.recalculate(A)}static recalculate(A){let e=A.volumeEnvelope,s=h=>Math.max(0,Math.floor(KA(h)*e.sampleRate));e.attenuationTarget=Math.max(0,Math.min(A.modulatedGenerators[r.initialAttenuation],1440))/10,e.sustainDbRelative=Math.min(bA,A.modulatedGenerators[r.sustainVolEnv]/10);let n=Math.min(bA,e.sustainDbRelative);e.attackDuration=s(A.modulatedGenerators[r.attackVolEnv]);let o=A.modulatedGenerators[r.decayVolEnv],g=(60-A.targetKey)*A.modulatedGenerators[r.keyNumToVolEnvDecay],i=n/bA;e.decayDuration=s(o+g)*i,e.releaseDuration=s(A.modulatedGenerators[r.releaseVolEnv]),e.delayEnd=s(A.modulatedGenerators[r.delayVolEnv]),e.attackEnd=e.attackDuration+e.delayEnd;let E=(60-A.targetKey)*A.modulatedGenerators[r.keyNumToVolEnvHold];if(e.holdEnd=s(A.modulatedGenerators[r.holdVolEnv]+E)+e.attackEnd,e.decayEnd=e.decayDuration+e.holdEnd,e.state===0&&e.attackEnd===0&&(e.state=2),A.isInRelease){let h=Math.max(0,Math.min(bA,e.sustainDbRelative)),d=h/bA;switch(e.decayDuration=s(o+g)*d,e.state){case 0:e.releaseStartDb=bA;break;case 1:let l=1-(e.attackEnd-e.releaseStartTimeSamples)/e.attackDuration;e.releaseStartDb=20*Math.log10(l)*-1;break;case 2:e.releaseStartDb=0;break;case 3:e.releaseStartDb=(1-(e.decayEnd-e.releaseStartTimeSamples)/e.decayDuration)*h;break;case 4:e.releaseStartDb=h;break}e.releaseStartDb=Math.max(0,Math.min(e.releaseStartDb,bA)),e.releaseStartDb>=qt&&(A.finished=!0),e.currentReleaseGain=VA(e.releaseStartDb);let Q=(bA-e.releaseStartDb)/bA;e.releaseDuration*=Q}}static apply(A,e,s,n){let o=A.volumeEnvelope,g=s/10,i=n;if(A.isInRelease){let h=o.currentSampleTime-o.releaseStartTimeSamples;if(h>=o.releaseDuration){for(let Q=0;Q<e.length;Q++)e[Q]=0;A.finished=!0;return}let d=bA-o.releaseStartDb;for(let Q=0;Q<e.length;Q++){o.attenuation+=(o.attenuationTarget-o.attenuation)*i;let l=h/o.releaseDuration*d+o.releaseStartDb;o.currentReleaseGain=VA(l+g+o.attenuation),e[Q]*=o.currentReleaseGain,o.currentSampleTime++,h++}o.currentReleaseGain<=rr&&(A.finished=!0);return}let E=0;switch(o.state){case 0:for(;o.currentSampleTime<o.delayEnd;)if(o.currentAttenuationDb=bA,e[E]=0,o.currentSampleTime++,++E>=e.length)return;o.state++;case 1:for(;o.currentSampleTime<o.attackEnd;){o.attenuation+=(o.attenuationTarget-o.attenuation)*i;let h=1-(o.attackEnd-o.currentSampleTime)/o.attackDuration;if(e[E]*=h*VA(o.attenuation+g),o.currentAttenuationDb=0,o.currentSampleTime++,++E>=e.length)return}o.state++;case 2:for(;o.currentSampleTime<o.holdEnd;)if(o.attenuation+=(o.attenuationTarget-o.attenuation)*i,e[E]*=VA(o.attenuation+g),o.currentAttenuationDb=0,o.currentSampleTime++,++E>=e.length)return;o.state++;case 3:for(;o.currentSampleTime<o.decayEnd;)if(o.attenuation+=(o.attenuationTarget-o.attenuation)*i,o.currentAttenuationDb=(1-(o.decayEnd-o.currentSampleTime)/o.decayDuration)*o.sustainDbRelative,e[E]*=VA(o.currentAttenuationDb+g+o.attenuation),o.currentSampleTime++,++E>=e.length)return;o.state++;case 4:for(o.canEndOnSilentSustain&&o.sustainDbRelative>=qt&&(A.finished=!0);;)if(o.attenuation+=(o.attenuationTarget-o.attenuation)*i,e[E]*=VA(o.sustainDbRelative+g+o.attenuation),o.currentAttenuationDb=o.sustainDbRelative,o.currentSampleTime++,++E>=e.length)return}}};var pe=class t{a0=0;a1=0;a2=0;a3=0;a4=0;x1=0;x2=0;y1=0;y2=0;reasonanceCb=0;reasonanceGain=1;cutoffCents=13501;cutoffHz=20001;static apply(A,e,s,n){if(n&&s>13499&&A.filter.reasonanceCb===0)return;let o=A.filter;(o.cutoffCents!==s||o.reasonanceCb!==A.modulatedGenerators[r.initialFilterQ])&&(o.cutoffCents=s,o.reasonanceCb=A.modulatedGenerators[r.initialFilterQ],t.calculateCoefficients(o));for(let g=0;g<e.length;g++){let i=e[g],E=o.a0*i+o.a1*o.x1+o.a2*o.x2-o.a3*o.y1-o.a4*o.y2;o.x2=o.x1,o.x1=i,o.y2=o.y1,o.y1=E,e[g]=E}}static calculateCoefficients(A){A.cutoffHz=Le(A.cutoffCents),A.cutoffHz=Math.min(A.cutoffHz,.45*sampleRate);let e=A.reasonanceCb/10;A.reasonanceGain=VA(-1*(e-3.01));let s=1/Math.sqrt(VA(-e)),n=2*Math.PI*A.cutoffHz/sampleRate,o=Math.cos(n),g=Math.sin(n)/(2*A.reasonanceGain),i=(1-o)*s,E=i/2,h=E,d=1+g,Q=-2*o,l=1-g;A.a0=E/d,A.a1=i/d,A.a2=h/d,A.a3=Q/d,A.a4=l/d}};var rn=.05;function an(t,A,e,s,n,o){if(A.isInRelease||currentTime>=A.releaseStartTime&&(A.isInRelease=!0,JA.startRelease(A),YA.startRelease(A),A.sample.loopingMode===3&&(A.sample.isLooping=!1)),A.modulatedGenerators[r.initialAttenuation]>2500){A.isInRelease&&(A.finished=!0);return}let g=A.targetKey,i=A.modulatedGenerators[r.fineTune]+t.customControllers[hA.channelTuning]+t.customControllers[hA.channelTransposeFine]+t.customControllers[hA.masterTuning]+t.channelOctaveTuning[A.midiNote%12]+t.keyCentTuning[A.midiNote],E=A.modulatedGenerators[r.coarseTune]+t.customControllers[hA.channelTuningSemitones],h=this.tunings[t.preset.program]?.[A.realKey];h?.midiNote>=0&&(g=h.midiNote,i+=h.centTuning),i+=(g-A.sample.rootKey)*A.modulatedGenerators[r.scaleTuning];let d=A.modulatedGenerators[r.vibLfoToPitch];if(d!==0){let I=A.startTime+KA(A.modulatedGenerators[r.delayVibLFO]),rA=Le(A.modulatedGenerators[r.freqVibLFO]),O=it(I,rA,currentTime);i+=O*(d*t.customControllers[hA.modulationMultiplier])}let Q=A.modulatedGenerators[r.initialFilterFc],l=Q,c=A.modulatedGenerators[r.modLfoToPitch],f=A.modulatedGenerators[r.modLfoToVolume],y=A.modulatedGenerators[r.modLfoToFilterFc],S=0;if(c+y+f!==0){let I=A.startTime+KA(A.modulatedGenerators[r.delayModLFO]),rA=Le(A.modulatedGenerators[r.freqModLFO]),O=it(I,rA,currentTime);i+=O*(c*t.customControllers[hA.modulationMultiplier]),S=-O*f,l+=O*y}if(t.channelVibrato.depth>0){let I=it(A.startTime+t.channelVibrato.delay,t.channelVibrato.rate,currentTime);I&&(i+=I*t.channelVibrato.depth)}let w=A.modulatedGenerators[r.modEnvToPitch],H=A.modulatedGenerators[r.modEnvToFilterFc],R=YA.getValue(A,currentTime);l+=R*H,i+=R*w;let x=~~(i+E*100);x!==A.currentTuningCents&&(A.currentTuningCents=x,A.currentTuningCalculated=Math.pow(2,x/1200));let G=new Float32Array(e.length);switch(this.interpolationType){case me.linear:default:tn(A,G);break;case me.nearestNeighbor:sn(A,G);break;case me.fourthOrder:nn(A,G)}pe.apply(A,G,l,Q>13499),JA.apply(A,G,S,this.volumeEnvelopeSmoothingFactor),this.panVoice(A,G,e,s,n,o)}function ir(t,A){let e=0;return t.drumChannel&&(e+=5),A.isInRelease&&(e-=5),e+=A.velocity/25,e-=A.volumeEnvelope.state,A.isInRelease&&(e-=5),e-=A.volumeEnvelope.currentAttenuationDb/50,e}function gn(t){let A=[];for(let s of this.workletProcessorChannels)for(let n of s.voices)if(!n.finished){let o=ir(s,n);A.push({channel:s,voice:n,priority:o})}A.sort((s,n)=>s.priority-n.priority);let e=A.slice(0,t);for(let{channel:s,voice:n}of e){let o=s.voices.indexOf(n);o>-1&&s.voices.splice(o,1)}}function In(t,A=Cn){t.releaseStartTime=currentTime,t.releaseStartTime-t.startTime<A&&(t.releaseStartTime=t.startTime+A)}var _A=_A!==void 0?_A:{},En=!1,Bn;_A.isInitialized=new Promise(t=>Bn=t);var ar=function(t){var A,e,s,n,o,g,i,E="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",h="",d=0;t=t.replace(/[^A-Za-z0-9\+\/\=]/g,"");do n=E.indexOf(t.charAt(d++)),o=E.indexOf(t.charAt(d++)),g=E.indexOf(t.charAt(d++)),i=E.indexOf(t.charAt(d++)),A=n<<2|o>>4,e=(15&o)<<4|g>>2,s=(3&g)<<6|i,h+=String.fromCharCode(A),g!==64&&(h+=String.fromCharCode(e)),i!==64&&(h+=String.fromCharCode(s));while(d<t.length);return h};(function(){var t,A,e,s,n,o,g,i,E,h,d,Q,l,c,f,y,S,w,H,R,x,G,I=I!==void 0?I:{};I.wasmBinary=Uint8Array.from(ar("AGFzbQEAAAABpQEYYAJ/fwF/YAF/AGAAAX9gBH9/f38AYAAAYAN/f38Bf2ABfwF/YAJ/fwBgBn9/f39/fwF/YAR/f39/AX9gBX9/f39/AX9gB39/f39/f38Bf2AGf39/f39/AGAIf39/f39/f38Bf2AFf39/f38AYAd/f39/f39/AGADf39/AGABfwF9YAF9AX1gAnx/AXxgAnx/AX9gA3x8fwF8YAJ8fAF8YAF8AXwCngIPA2VudgZtZW1vcnkCAIACA2VudgV0YWJsZQFwAQQEA2Vudgl0YWJsZUJhc2UDfwADZW52DkRZTkFNSUNUT1BfUFRSA38AA2VudghTVEFDS1RPUAN/AANlbnYJU1RBQ0tfTUFYA38ABmdsb2JhbAhJbmZpbml0eQN8AANlbnYFYWJvcnQAAQNlbnYNZW5sYXJnZU1lbW9yeQACA2Vudg5nZXRUb3RhbE1lbW9yeQACA2VudhdhYm9ydE9uQ2Fubm90R3Jvd01lbW9yeQACA2Vudg5fX19hc3NlcnRfZmFpbAADA2VudgtfX19zZXRFcnJObwABA2VudgZfYWJvcnQABANlbnYWX2Vtc2NyaXB0ZW5fbWVtY3B5X2JpZwAFA3d2BgYCAQcHAQIBAQcBCAcFAAkGCQoHBgYGBgEFBgIBBgYKAAgLAAYGBgYGBgYBAAoMDAMGBQANCAoJAAwODA8OAQAGBgcEABAJEAERAAADBQwAAAMHBxIGAQAABwIFEwMOBw8HBgYQFAoVExYXFxcXFgQFBQYFAAYkB38BIwELfwEjAgt/ASMDC38BQQALfwFBAAt8ASMEC38BQQALB9MCFRBfX2dyb3dXYXNtTWVtb3J5AAgRX19fZXJybm9fbG9jYXRpb24AYwVfZnJlZQBfB19tYWxsb2MAXgdfbWVtY3B5AHkHX21lbXNldAB6BV9zYnJrAHsXX3N0Yl92b3JiaXNfanNfY2hhbm5lbHMAJhRfc3RiX3ZvcmJpc19qc19jbG9zZQAlFV9zdGJfdm9yYmlzX2pzX2RlY29kZQAoE19zdGJfdm9yYmlzX2pzX29wZW4AJBpfc3RiX3ZvcmJpc19qc19zYW1wbGVfcmF0ZQAnC2R5bkNhbGxfaWlpAHwTZXN0YWJsaXNoU3RhY2tTcGFjZQAMC2dldFRlbXBSZXQwAA8LcnVuUG9zdFNldHMAeAtzZXRUZW1wUmV0MAAOCHNldFRocmV3AA0Kc3RhY2tBbGxvYwAJDHN0YWNrUmVzdG9yZQALCXN0YWNrU2F2ZQAKCQoBACMACwR9VFl9Csb2A3YGACAAQAALGwEBfyMGIQEjBiAAaiQGIwZBD2pBcHEkBiABCwQAIwYLBgAgACQGCwoAIAAkBiABJAcLEAAjCEUEQCAAJAggASQJCwsGACAAJAsLBAAjCwsRACAABEAgABARIAAgABASCwvvBwEKfyAAQYADaiEHIAcoAgAhBQJAIAUEQCAAQfwBaiEEIAQoAgAhASABQQBKBEAgAEHwAGohCANAIAUgAkEYbGpBEGohCSAJKAIAIQEgAQRAIAgoAgAhAyAFIAJBGGxqQQ1qIQogCi0AACEGIAZB/wFxIQYgAyAGQbAQbGpBBGohAyADKAIAIQMgA0EASgRAQQAhAwNAIAEgA0ECdGohASABKAIAIQEgACABEBIgA0EBaiEDIAgoAgAhASAKLQAAIQYgBkH/AXEhBiABIAZBsBBsakEEaiEBIAEoAgAhBiAJKAIAIQEgAyAGSA0ACwsgACABEBILIAUgAkEYbGpBFGohASABKAIAIQEgACABEBIgAkEBaiECIAQoAgAhASACIAFODQMgBygCACEFDAAACwALCwsgAEHwAGohAyADKAIAIQEgAQRAIABB7ABqIQUgBSgCACECIAJBAEoEQEEAIQIDQAJAIAEgAkGwEGxqQQhqIQQgBCgCACEEIAAgBBASIAEgAkGwEGxqQRxqIQQgBCgCACEEIAAgBBASIAEgAkGwEGxqQSBqIQQgBCgCACEEIAAgBBASIAEgAkGwEGxqQaQQaiEEIAQoAgAhBCAAIAQQEiABIAJBsBBsakGoEGohASABKAIAIQEgAUUhBCABQXxqIQFBACABIAQbIQEgACABEBIgAkEBaiECIAUoAgAhASACIAFODQAgAygCACEBDAELCyADKAIAIQELIAAgARASCyAAQfgBaiEBIAEoAgAhASAAIAEQEiAHKAIAIQEgACABEBIgAEGIA2ohAyADKAIAIQEgAQRAIABBhANqIQUgBSgCACECIAJBAEoEQEEAIQIDQCABIAJBKGxqQQRqIQEgASgCACEBIAAgARASIAJBAWohAiAFKAIAIQcgAygCACEBIAIgB0gNAAsLIAAgARASCyAAQQRqIQIgAigCACEBIAFBAEoEQEEAIQEDQCAAQZQGaiABQQJ0aiEDIAMoAgAhAyAAIAMQEiAAQZQHaiABQQJ0aiEDIAMoAgAhAyAAIAMQEiAAQdgHaiABQQJ0aiEDIAMoAgAhAyAAIAMQEiABQQFqIQEgAigCACEDIAEgA0ghAyABQRBJIQUgBSADcQ0ACwtBACEBA0AgAEGgCGogAUECdGohAiACKAIAIQIgACACEBIgAEGoCGogAUECdGohAiACKAIAIQIgACACEBIgAEGwCGogAUECdGohAiACKAIAIQIgACACEBIgAEG4CGogAUECdGohAiACKAIAIQIgACACEBIgAEHACGogAUECdGohAiACKAIAIQIgACACEBIgAUEBaiEBIAFBAkcNAAsLGwAgAEHEAGohACAAKAIAIQAgAEUEQCABEF8LC3wBAX8gAEHUB2ohASABQQA2AgAgAEGAC2ohASABQQA2AgAgAEH4CmohASABQQA2AgAgAEGcCGohASABQQA2AgAgAEHVCmohASABQQA6AAAgAEH8CmohASABQQA2AgAgAEHUC2ohASABQQA2AgAgAEHYC2ohACAAQQA2AgAL8AQBB38jBiELIwZBEGokBiALQQhqIQcgC0EEaiEKIAshCCAAQSRqIQYgBiwAACEGAn8gBgR/IABBgAtqIQYgBigCACEGIAZBf0oEQCAFQQA2AgAgACABIAIQFgwCCyAAQRRqIQYgBiABNgIAIAEgAmohAiAAQRxqIQkgCSACNgIAIABB2ABqIQIgAkEANgIAIABBABAXIQkgCUUEQCAFQQA2AgBBAAwCCyAAIAcgCCAKEBghCSAJBEAgBygCACECIAgoAgAhCSAKKAIAIQggACACIAkgCBAaIQogByAKNgIAIABBBGohAiACKAIAIQggCEEASgRAQQAhAgNAIABBlAZqIAJBAnRqIQcgBygCACEHIAcgCUECdGohByAAQdQGaiACQQJ0aiEMIAwgBzYCACACQQFqIQIgAiAISA0ACwsgAwRAIAMgCDYCAAsgBSAKNgIAIABB1AZqIQAgBCAANgIAIAYoAgAhACAAIAFrDAILAkACQAJAAkACQCACKAIAIgNBIGsOBAECAgACCyACQQA2AgAgAEHUAGohAiAAEBkhAwJAIANBf0cEQANAIAIoAgAhAyADDQIgABAZIQMgA0F/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ACECIABBmAhqIQYgBigCACEHIAUgA2shCSAJIAdqIQkgAiAJSSEJIAIgB0khDSACIAdrIQJBACACIA0bIQIgAiADaiECIAIgBUohByAFIAIgBxshAiAJBEAgASACNgIAIAYoAgAhACAAIAJqIQAgBiAANgIAQQEMBgsLCyAAQfQKaiECIAIoAgAhAiADIB9rIQYgBiACaiEGIABBmAhqIQIgAiAGNgIAIAhBATYCAAwBBSAAQZgIaiECIAYNAQsMAQsgBCADayEDIAIoAgAhBCADIARqIQMgAiADNgIACyATKAIAIQIgAgRAIABByABqIQIgAigCACECIABB0ABqIQAgACgCACEAIAIgAEcEQEHTE0HEE0HkGkHnFBAECwsgASAFNgIAQQELIQAgHCQGIAALqAIBBX8gAEHoCmohBSAFKAIAIQICQCACQQBIBEBBACEABSACIAFIBEAgAUEYSgRAIABBGBAsIQIgAUFoaiEBIAAgARAsIQAgAEEYdCEAIAAgAmohACAADwsgAkUEQCAAQeQKaiECIAJBADYCAAsgAEHkCmohAwJAAkACQANAIAAQLiECIAJBf0YNASAFKAIAIQQgAiAEdCECIAMoAgAhBiAGIAJqIQIgAyACNgIAIAUgBEEIaiICNgIAIAIgAUgNAAwCAAsACyAFQX82AgBBACEADAQLIARBeEgEQEEAIQAMBAsLCyAAQeQKaiEEIAQoAgAhA0EBIAF0IQAgAEF/aiEAIAMgAHEhACADIAF2IQMgBCADNgIAIAIgAWshASAFIAE2AgALCyAAC40CAAJAIABBAEgEf0EABSAAQYCAAUgEQCAAQRBIBEAgAEGACGohACAALAAAIQAMAwsgAEGABEgEQCAAQQV2IQAgAEGACGohACAALAAAIQAgAEEFaiEABSAAQQp2IQAgAEGACGohACAALAAAIQAgAEEKaiEACwwCCyAAQYCAgAhIBH8gAEGAgCBIBH8gAEEPdiEAIABBgAhqIQAgACwAACEAIABBD2oFIABBFHYhACAAQYAIaiEAIAAsAAAhACAAQRRqCwUgAEGAgICAAkgEfyAAQRl2IQAgAEGACGohACAALAAAIQAgAEEZagUgAEEediEAIABBgAhqIQAgACwAACEAIABBHmoLCwshAAsgAAuiAQEDfyAAQdQKaiECIAIsAAAhAQJAAkAgAQ0AIABB3ApqIQEgASgCACEBIAEEQEF/IQMFIAAQLyEBIAEEQCACLAAAIQEgAQ0CQaEUQcQTQfYLQbUUEAQFQX8hAwsLDAELIAFBf2pBGHRBGHUhASACIAE6AAAgAEHsCmohASABKAIAIQIgAkEBaiECIAEgAjYCACAAEDAhACAAQf8BcSEDCyADC6wCAQd/IABB3ApqIQIgAigCACEBAkAgAUUEQCAAQdgKaiEEIAQoAgAhASABQX9GBEAgAEHQCGohASABKAIAIQEgAUF/aiEBIABB4ApqIQMgAyABNgIAIAAQMSEBIAFFBEAgAkEBNgIADAMLIABB0wpqIQEgASwAACEBIAFBAXEhASABBH8gBCgCAAUgAEEgEBUMAwshAQsgAUEBaiEHIAQgBzYCACAAQdQIaiABaiEDIAMsAAAhBiAGQf8BcSEDIAZBf0cEQCACQQE2AgAgAEHgCmohAiACIAE2AgALIABB0AhqIQEgASgCACEBIAcgAU4EQCAEQX82AgALIABB1ApqIQAgACwAACEBIAEEQEHFFEHEE0HoC0HaFBAEBSAAIAY6AAAgAyEFCwsLIAULUQEDfyAAQRRqIQMgAygCACEBIABBHGohAiACKAIAIQIgASACSQR/IAFBAWohACADIAA2AgAgASwAAAUgAEHUAGohACAAQQE2AgBBAAshACAACyABAX8gABAyIQEgAQR/IAAQMwUgAEEeEBVBAAshACAAC2ABAX8gABAwIQEgAUH/AXFBzwBGBEAgABAwIQEgAUH/AXFB5wBGBEAgABAwIQEgAUH/AXFB5wBGBEAgABAwIQAgAEH/AXFB0wBGIQAFQQAhAAsFQQAhAAsFQQAhAAsgAAvZAwEGfyAAEDAhAQJ/IAFB/wFxBH8gAEEfEBVBAAUgABAwIQEgAEHTCmohAiACIAE6AAAgABAjIQUgABAjIQIgABAjGiAAECMhASAAQcwIaiEDIAMgATYCACAAECMaIAAQMCEBIAFB/wFxIQEgAEHQCGohAyADIAE2AgAgAEHUCGohBCAAIAQgARAiIQEgAUUEQCAAQQoQFUEADAILIABB8ApqIQQgBEF+NgIAIAIgBXEhAQJAIAFBf0cEQCADKAIAIQEgAUEASgRAA0ACQCABQX9qIQIgAEHUCGogAmohBiAGLAAAIQYgBkF/Rw0AIAFBAUwNBCACIQEMAQsLIAQgAjYCACAAQfQKaiEBIAEgBTYCAAsLCyAAQdUKaiEBIAEsAAAhASABBEAgAygCACEDIANBAEoEf0EAIQJBACEBA0AgAEHUCGogAWohBCAELQAAIQQgBEH/AXEhBCACIARqIQIgAUEBaiEBIAEgA0gNAAsgAkEbagVBGwshASAAQShqIQIgAigCACECIAEgA2ohASABIAJqIQEgAEEsaiEDIAMgAjYCACAAQTBqIQIgAiABNgIAIABBNGohASABIAU2AgALIABB2ApqIQAgAEEANgIAQQELCyEAIAALowEBB38gAEHoCmohAyADKAIAIQECQCABQRlIBEAgAEHkCmohBCABRQRAIARBADYCAAsgAEHUCmohBSAAQdwKaiEGA0AgBigCACEBIAEEQCAFLAAAIQEgAUUNAwsgABAuIQIgAkF/Rg0CIAMoAgAhASACIAF0IQIgBCgCACEHIAcgAmohAiAEIAI2AgAgAUEIaiECIAMgAjYCACABQRFIDQALCwsLrQUBCX8gABA0IAFBIGohAiACKAIAIQUCQAJAIAVFIgNFDQAgAUGkEGohAiACKAIAIQIgAg0AQX8hAQwBCyABQQRqIQIgAigCACECAkACQCACQQhKBEAgAUGkEGohAyADKAIAIQMgAw0BBSADDQELDAELIABB5ApqIQggCCgCACEJIAkQOiEHIAFBrBBqIQIgAigCACECIAJBAUoEQCABQaQQaigCACEKQQAhAwNAIAJBAXYhBSAFIANqIQQgCiAEQQJ0aiEGIAYoAgAhBiAGIAdLIQYgAiAFayECIAMgBCAGGyEDIAUgAiAGGyECIAJBAUoNAAsFQQAhAwsgAUEXaiECIAIsAAAhAiACRQRAIAFBqBBqIQIgAigCACECIAIgA0ECdGohAiACKAIAIQMLIAFBCGohASABKAIAIQEgASADaiEBIAEtAAAhASABQf8BcSEBIABB6ApqIQIgAigCACEAIAAgAUgEf0EAIQBBfwUgACABayEAIAkgAXYhASAIIAE2AgAgAwshASACIAA2AgAMAQsgAUEXaiEDIAMsAAAhAyADBEBBgRVBxBNB6gxBjBUQBAsCQCACQQBKBEAgASgCCCEIIABB5ApqIQlBACEBA0ACQCAIIAFqIQMgAywAACEEIARB/wFxIQMgBEF/RwRAIAUgAUECdGoh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IwZBEGokBiACIQECfCAAvUIgiKdB/////wdxIgNB/MOk/wNJBHwgA0GewZryA0kEfEQAAAAAAADwPwUgAEQAAAAAAAAAABByCwUgACAAoSADQf//v/8HSw0BGgJAAkACQAJAIAAgARBuQQNxDgMAAQIDCyABKwMAIAErAwgQcgwECyABKwMAIAErAwhBARBwmgwDCyABKwMAIAErAwgQcpoMAgsgASsDACABKwMIQQEQcAsLIQAgAiQGIAALywEBA38jBiECIwZBEGokBiACIQECQCAAvUIgiKdB/////wdxIgNB/MOk/wNJBEAgA0GAgMDyA08EQCAARAAAAAAAAAAAQQAQcCEACwUgA0H//7//B0sEQCAAIAChIQAMAgsCQAJAAkACQAJAIAAgARBuQQNxDgMAAQIDCyABKwMAIAErAwhBARBwIQAMBQsgASsDACABKwMIEHIhAAwECyABKwMAIAErAwhBARBwmiEADAMLIAErAwAgASsDCBBymiEACwsLIAIkBiAAC5sDAwJ/AX4CfCAAvSIDQj+IpyEBAnwCfwJAIANCIIinQf////8HcSICQarGmIQESwR8IANC////////////AINCgICAgICAgPj/AFYEQCAADwsgAETvOfr+Qi6GQGQEQCAARAAAAAAAAOB/og8FIABE0rx63SsjhsBjIABEUTAt1RBJh8BjcUUNAkQAAAAAAAAAACIADwsABSACQcLc2P4DSwRAIAJBscXC/wNLDQIgAUEBcyABawwDCyACQYCAwPEDSwR8QQAhASAABSAARAAAAAAAAPA/oA8LCwwCCyAARP6CK2VHFfc/oiABQQN0QYATaisDAKCqCyEBIAAgAbciBEQAAOD+Qi7mP6KhIgAgBER2PHk17znqPaIiBaELIQQgACAEIAQgBCAEoiIAIAAgACAAIABE0KS+cmk3Zj6iRPFr0sVBvbu+oKJELN4lr2pWET+gokSTvb4WbMFmv6CiRD5VVVVVVcU/oKKhIgCiRAAAAAAAAABAIAChoyAFoaBEAAAAAAAA8D+gIQAgAUUEQCAADwsgACABEGULnwMDAn8BfgV8IAC9IgNCIIinIQECfyADQgBTIgIgAUGAgMAASXIEfyADQv///////////wCDQgBRBEBEAAAAAAAA8L8gACAAoqMPCyACRQRAIABEAAAAAAAAUEOi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mgDjqR0AXmGRAAgb5gCFmWUAoBRfAI1AaACA2P8AJ3NNAAYGMQDKVhUAyahzAHviYABrjMAAQcMSC11A+yH5PwAAAAAtRHQ+AAAAgJhG+DwAAABgUcx4OwAAAICDG/A5AAAAQCAlejgAAACAIoLjNgAAAAAd82k1AAAAAAAA4D8AAAAAAADgvwAAAAAAAPA/AAAAAAAA+D8AQagTCwgG0M9D6/1MPgBBuxMLigZAA7jiP09nZ1MuL3N0Yl92b3JiaXMuYwBmLT5hbGxvYy5hbGxvY19idWZmZXJfbGVuZ3RoX2luX2J5dGVzID09IGYtPnRlbXBfb2Zmc2V0AHZvcmJpc19kZWNvZGVfaW5pdGlhbABmLT5ieXRlc19pbl9zZWcgPiAwAGdldDhfcGFja2V0X3JhdwBmLT5ieXRlc19pbl9zZWcgPT0gMABuZXh0X3NlZ21lbnQAdm9yYmlzX2RlY29kZV9wYWNrZXRfcmVzdAAhYy0+c3BhcnNlAGNvZGVib29rX2RlY29kZV9zY2FsYXJfcmF3ACFjLT5zcGFyc2UgfHwgeiA8IGMtPnNvcnRlZF9lbnRyaWVzAGNvZGVib29rX2RlY29kZV9kZWludGVybGVhdmVfcmVwZWF0AHogPCBjLT5zb3J0ZWRfZW50cmllcwBjb2RlYm9va19kZWNvZGVfc3RhcnQAKG4gJiAzKSA9PSAwAGltZGN0X3N0ZXAzX2l0ZXIwX2xvb3AAMABnZXRfd2luZG93AGYtPnRlbXBfb2Zmc2V0ID09IGYtPmFsbG9jLmFsbG9jX2J1ZmZlcl9sZW5ndGhfaW5fYnl0ZXMAc3RhcnRfZGVjb2RlcgB2b3JiaXNjLT5zb3J0ZWRfZW50cmllcyA9PSAwAGNvbXB1dGVfY29kZXdvcmRzAHogPj0gMCAmJiB6IDwgMzIAbGVuW2ldID49IDAgJiYgbGVuW2ldIDwgMzIAYXZhaWxhYmxlW3ldID09IDAAayA9PSBjLT5zb3J0ZWRfZW50cmllcwBjb21wdXRlX3NvcnRlZF9odWZmbWFuAGMtPnNvcnRlZF9jb2Rld29yZHNbeF0gPT0gY29kZQBsZW4gIT0gTk9fQ09ERQBpbmNsdWRlX2luX3NvcnQAcG93KChmbG9hdCkgcisxLCBkaW0pID4gZW50cmllcwBsb29rdXAxX3ZhbHVlcwAoaW50KSBmbG9vcihwb3coKGZsb2F0KSByLCBkaW0pKSA8PSBlbnRyaWVzAOoPBG5hbWUB4g9+AAVhYm9ydAENZW5sYXJnZU1lbW9yeQIOZ2V0VG90YWxNZW1vcnkDF2Fib3J0T25DYW5ub3RHcm93TWVtb3J5BA5fX19hc3NlcnRfZmFpbAULX19fc2V0RXJyTm8GBl9hYm9ydAcWX2Vtc2NyaXB0ZW5fbWVtY3B5X2JpZwgQX19ncm93V2FzbU1lbW9yeQkKc3RhY2tBbGxvYwoJc3RhY2tTYXZlCwxzdGFja1Jlc3RvcmUME2VzdGFibGlzaFN0YWNrU3BhY2UNCHNldFRocmV3DgtzZXRUZW1wUmV0MA8LZ2V0VGVtcFJldDAQEV9zdGJfdm9yYmlzX2Nsb3NlEQ5fdm9yYmlzX2RlaW5pdBILX3NldHVwX2ZyZWUTGl9zdGJfdm9yYmlzX2ZsdXNoX3B1c2hkYXRhFCFfc3RiX3ZvcmJpc19kZWNvZGVfZnJhbWVfcHVzaGRhdGEVBl9lcnJvchYgX3ZvcmJpc19zZWFyY2hfZm9yX3BhZ2VfcHVzaGRhdGEXGF9pc193aG9sZV9wYWNrZXRfcHJlc2VudBgVX3ZvcmJpc19kZWNvZGVfcGFja2V0GQxfZ2V0OF9wYWNrZXQaFF92b3JiaXNfZmluaXNoX2ZyYW1lGxlfc3RiX3ZvcmJpc19vcGVuX3B1c2hkYXRhHAxfdm9yYmlzX2luaXQdDl9zdGFydF9kZWNvZGVyHg1fdm9yYmlzX2FsbG9jHxtfc3RiX3ZvcmJpc19nZXRfZmlsZV9vZmZzZXQgE19tYXliZV9zdGFydF9wYWNrZXQhDV9mbHVzaF9wYWNrZXQiBV9nZXRuIwZfZ2V0MzIkE19zdGJfdm9yYmlzX2pzX29wZW4lFF9zdGJfdm9yYmlzX2pzX2Nsb3NlJhdfc3RiX3ZvcmJpc19qc19jaGFubmVscycaX3N0Yl92b3JiaXNfanNfc2FtcGxlX3JhdGUoFV9zdGJfdm9yYmlzX2pzX2RlY29kZSkNX2NyYzMyX3VwZGF0ZSoWX3ZvcmJpc19kZWNvZGVfaW5pdGlhbCsaX3ZvcmJpc19kZWNvZGVfcGFja2V0X3Jlc3QsCV9nZXRfYml0cy0FX2lsb2cuEF9nZXQ4X3BhY2tldF9yYXcvDV9uZXh0X3NlZ21lbnQwBV9nZXQ4MQtfc3RhcnRfcGFnZTIQX2NhcHR1cmVfcGF0dGVybjMdX3N0YXJ0X3BhZ2Vfbm9fY2FwdHVyZXBhdHRlcm40DV9wcmVwX2h1ZmZtYW41G19jb2RlYm9va19kZWNvZGVfc2NhbGFyX3JhdzYOX3ByZWRpY3RfcG9pbnQ3D19kZWNvZGVfcmVzaWR1ZTgJX2RvX2Zsb29yOQ1faW52ZXJzZV9tZGN0OgxfYml0X3JldmVyc2U7EV9tYWtlX2Jsb2NrX2FycmF5PBJfc2V0dXBfdGVtcF9tYWxsb2M9JF9jb2RlYm9va19kZWNvZGVfZGVpbnRlcmxlYXZlX3JlcGVhdD4PX3Jlc2lkdWVfZGVjb2RlPxVfY29kZWJvb2tfZGVjb2RlX3N0ZXBAEF9jb2RlYm9va19kZWNvZGVBFl9jb2RlYm9va19kZWNvZGVfc3RhcnRCCl9kcmF3X2xpbmVDF19pbWRjdF9zdGVwM19pdGVyMF9sb29wRBlfaW1kY3Rfc3RlcDNfaW5uZXJfcl9sb29wRRlfaW1kY3Rfc3RlcDNfaW5uZXJfc19sb29wRh9faW1kY3Rfc3RlcDNfaW5uZXJfc19sb29wX2xkNjU0RwhfaXRlcl81NEgLX2dldF93aW5kb3dJEF92b3JiaXNfdmFsaWRhdGVKDV9zdGFydF9wYWNrZXRLBV9za2lwTAtfY3JjMzJfaW5pdE0NX3NldHVwX21hbGxvY04QX3NldHVwX3RlbXBfZnJlZU8SX2NvbXB1dGVfY29kZXdvcmRzUBdfY29tcHV0ZV9zb3J0ZWRfaHVmZm1hblEcX2NvbXB1dGVfYWNjZWxlcmF0ZWRfaHVmZm1hblIPX2Zsb2F0MzJfdW5wYWNrUw9fbG9va3VwMV92YWx1ZXNUDl9wb2ludF9jb21wYXJlVQpfbmVpZ2hib3JzVg9faW5pdF9ibG9ja3NpemVXCl9hZGRfZW50cnlYEF9pbmNsdWRlX2luX3NvcnRZD191aW50MzJfY29tcGFyZVoYX2NvbXB1dGVfdHdpZGRsZV9mYWN0b3JzWw9fY29tcHV0ZV93aW5kb3dcE19jb21wdXRlX2JpdHJldmVyc2VdB19zcXVhcmVeB19tYWxsb2NfBV9mcmVlYAhfcmVhbGxvY2ESX3RyeV9yZWFsbG9jX2NodW5rYg5fZGlzcG9zZV9jaHVua2MRX19fZXJybm9fbG9jYXRpb25kB19tZW1jbXBlB19zY2FsYm5mBl9xc29ydGcFX3NpZnRoBF9zaHJpCF90cmlua2xlagRfc2hsawVfcG50emwIX2FfY3R6X2xtBl9jeWNsZW4LX19fcmVtX3BpbzJvEV9fX3JlbV9waW8yX2xhcmdlcAZfX19zaW5xBl9sZGV4cHIGX19fY29zcwRfY29zdARfc2ludQRfZXhwdgRfbG9ndwRfcG93eAtydW5Qb3N0U2V0c3kHX21lbWNweXoHX21lbXNldHsFX3Nicmt8C2R5bkNhbGxfaWlpfQJiMA=="),function(C){return C.charCodeAt(0)});var I=I!==void 0?I:{},rA={};for(t in I)I.hasOwnProperty(t)&&(rA[t]=I[t]);I.arguments=[],I.thisProgram="./this.program",I.quit=function(C,B){throw B},I.preRun=[],I.postRun=[];var O=!1,AA=!1,$=!1,IA=!1;O=typeof window=="object",AA=typeof importScripts=="function",$=typeof process=="object"&&typeof fs=="function"&&!O&&!AA,IA=!O&&!$&&!AA;var nA="";function iA(C){return I.locateFile?I.locateFile(C,nA):nA+C}$?(nA=__dirname+"/",I.read=function(B,u){var m;return A||(A=void 0),e||(e=void 0),B=e.normalize(B),m=A.readFileSync(B),u?m:m.toString()},I.readBinary=function(B){var u=I.read(B,!0);return u.buffer||(u=new Uint8Array(u)),ee(u.buffer),u},process.argv.length>1&&(I.thisProgram=process.argv[1].replace(/\\/g,"/")),I.arguments=process.argv.slice(2),typeof module<"u",process.on("uncaughtException",function(C){if(!(C instanceof Ge))throw C}),process.on("unhandledRejection",function(C,B){process.exit(1)}),I.quit=function(C){process.exit(C)},I.inspect=function(){return"[Emscripten Module object]"}):IA?(typeof read<"u"&&(I.read=function(B){return read(B)}),I.readBinary=function(B){var u;return typeof readbuffer=="function"?new Uint8Array(readbuffer(B)):(ee(typeof(u=read(B,"binary"))=="object"),u)},typeof scriptArgs<"u"?I.arguments=scriptArgs:typeof arguments<"u"&&(I.arguments=arguments),typeof quit=="function"&&(I.quit=function(C){quit(C)})):(O||AA)&&(O?document.currentScript&&(nA=document.currentScript.src):nA=self.location.href,nA=nA.indexOf("blob:")!==0?nA.split("/").slice(0,-1).join("/")+"/":"",I.read=function(B){var u=new XMLHttpRequest;return u.open("GET",B,!1),u.send(null),u.responseText},AA&&(I.readBinary=function(B){var u=new XMLHttpRequest;return u.open("GET",B,!1),u.responseType="arraybuffer",u.send(null),new Uint8Array(u.response)}),I.readAsync=function(B,u,m){var L=new XMLHttpRequest;L.open("GET",B,!0),L.responseType="arraybuffer",L.onload=function(){if(L.status==200||L.status==0&&L.response){u(L.response);return}m()},L.onerror=m,L.send(null)},I.setWindowTitle=function(C){document.title=C});var eA=I.print||(typeof console<"u"?console.log.bind(console):typeof print<"u"?print:null),lA=I.printErr||(typeof printErr<"u"?printErr:typeof console<"u"&&console.warn.bind(console)||eA);for(t in rA)rA.hasOwnProperty(t)&&(I[t]=rA[t]);function LA(C){var B=c;return c=c+C+15&-16,B}function As(C){var B=E[R>>2],u=B+C+15&-16;return E[R>>2]=u,u>=mA&&!Is()?(E[R>>2]=B,0):B}function es(C,B){return B||(B=16),C=Math.ceil(C/B)*B}function Ko(C){switch(C){case"i1":case"i8":return 1;case"i16":return 2;case"i32":case"float":return 4;case"i64":case"double":return 8;default:if(C[C.length-1]==="*")return 4;if(C[0]!=="i")return 0;var B=parseInt(C.substr(1));return ee(B%8==0),B/8}}function we(C){we.shown||(we.shown={}),we.shown[C]||(we.shown[C]=1,lA(C))}rA=void 0;var Vo={"f64-rem":function(C,B){return C%B},debugger:function(){}},Qt=[];function mr(C,B){for(var u=0,m=u;m<u+0;m++)if(!Qt[m])return Qt[m]=C,1+m;throw"Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS."}function pr(C){Qt[C-1]=null}var ut={};function yr(C,B){if(C){ee(B),ut[B]||(ut[B]={});var u=ut[B];return u[C]||(B.length===1?u[C]=function(){return dt(B,C)}:B.length===2?u[C]=function(L){return dt(B,C,[L])}:u[C]=function(){return dt(B,C,Array.prototype.slice.call(arguments))}),u[C]}}function Sr(C,B,u){return u?+(C>>>0)+4294967296*+(B>>>0):+(C>>>0)+4294967296*+(0|B)}function dt(C,B,u){return u&&u.length?I["dynCall_"+C].apply(null,[B].concat(u)):I["dynCall_"+C].call(null,B)}var Ye=0,ts=0;function ee(C,B){C||zA("Assertion failed: "+B)}function ss(C){var B=I["_"+C];return ee(B,"Cannot call unknown function "+C+", make sure it is exported"),B}var ns={stackSave:function(){wt()},stackRestore:function(){kt()},arrayToC:function(C){var B,u,m=Oe(C.length);return B=C,u=m,n.set(B,u),m},stringToC:function(C){var B=0;if(C!=null&&C!==0){var u=(C.length<<2)+1;B=Oe(u),is(C,B,u)}return B}},Oo={string:ns.stringToC,array:ns.arrayToC};function os(C,B,u,m,L){var W=ss(C),j=[],Y=0;if(m)for(var pA=0;pA<m.length;pA++){var CA=Oo[u[pA]];CA?(Y===0&&(Y=wt()),j[pA]=CA(m[pA])):j[pA]=m[pA]}var EA,aA=W.apply(null,j);return aA=(EA=aA,B==="string"?Je(EA):B==="boolean"?!!EA:EA),Y!==0&&kt(Y),aA}function Zo(C,B,u,m){switch((u=u||"i8").charAt(u.length-1)==="*"&&(u="i32"),u){case"i1":case"i8":n[C>>0]=B;break;case"i16":g[C>>1]=B;break;case"i32":E[C>>2]=B;break;case"i64":tempI64=[B>>>0,+jo(tempDouble=B)>=1?tempDouble>0?(0|Ar(+cs(tempDouble/4294967296),4294967295))>>>0:~~+$o((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0],E[C>>2]=tempI64[0],E[C+4>>2]=tempI64[1];break;case"float":d[C>>2]=B;break;case"double":Q[C>>3]=B;break;default:zA("invalid type for setValue: "+u)}}function Dr(C,B,u){switch((B=B||"i8").charAt(B.length-1)==="*"&&(B="i32"),B){case"i1":case"i8":return n[C>>0];case"i16":return g[C>>1];case"i32":case"i64":return E[C>>2];case"float":return d[C>>2];case"double":return Q[C>>3];default:zA("invalid type for getValue: "+B)}return null}function kr(C,B,u,m){typeof C=="number"?(W=!0,j=C):(W=!1,j=C.length);var L=typeof B=="string"?B:null;if(Y=u==4?m:[typeof Ve=="function"?Ve:LA,Oe,LA,As][u===void 0?2:u](Math.max(j,L?1:B.length)),W){for(m=Y,ee((3&Y)==0),pA=Y+(-4&j);m<pA;m+=4)E[m>>2]=0;for(pA=Y+j;m<pA;)n[m++>>0]=0;return Y}if(L==="i8")return C.subarray||C.slice?o.set(C,Y):o.set(new Uint8Array(C),Y),Y;for(var W,j,Y,pA,CA,EA,aA,Z=0;Z<j;){var FA=C[Z];if((CA=L||B[Z])===0){Z++;continue}CA=="i64"&&(CA="i32"),Zo(Y+Z,FA,CA),aA!==CA&&(EA=Ko(CA),aA=CA),Z+=EA}return Y}function wr(C){return f?St?Ve(C):As(C):LA(C)}function Je(C,B){if(B===0||!C)return"";for(var u,m,L,W=0,j=0;W|=m=o[C+j>>0],(m!=0||B)&&(j++,!B||j!=B););B||(B=j);var Y="";if(W<128){for(;B>0;)L=String.fromCharCode.apply(String,o.subarray(C,C+Math.min(B,1024))),Y=Y?Y+L:L,C+=1024,B-=1024;return Y}return u=C,function(CA,EA){for(var aA=EA;CA[aA];)++aA;if(aA-EA>16&&CA.subarray&&rs)return rs.decode(CA.subarray(EA,aA));for(var Z,FA,UA,TA,vA,ie,HA="";;){if(!(Z=CA[EA++]))return HA;if(!(128&Z)){HA+=String.fromCharCode(Z);continue}if(FA=63&CA[EA++],(224&Z)==192){HA+=String.fromCharCode((31&Z)<<6|FA);continue}if(UA=63&CA[EA++],(240&Z)==224?Z=(15&Z)<<12|FA<<6|UA:(TA=63&CA[EA++],(248&Z)==240?Z=(7&Z)<<18|FA<<12|UA<<6|TA:(vA=63&CA[EA++],Z=(252&Z)==248?(3&Z)<<24|FA<<18|UA<<12|TA<<6|vA:(1&Z)<<30|FA<<24|UA<<18|TA<<12|vA<<6|(ie=63&CA[EA++]))),Z<65536)HA+=String.fromCharCode(Z);else{var xe=Z-65536;HA+=String.fromCharCode(55296|xe>>10,56320|1023&xe)}}}(o,u)}function Fr(C){for(var B="";;){var u=n[C++>>0];if(!u)return B;B+=String.fromCharCode(u)}}function Rr(C,B){return function(m,L,W){for(var j=0;j<m.length;++j)n[L++>>0]=m.charCodeAt(j);W||(n[L>>0]=0)}(C,B,!1)}var rs=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function Pe(C,B,u,m){if(!(m>0))return 0;for(var L=u,W=u+m-1,j=0;j<C.length;++j){var Y=C.charCodeAt(j);if(Y>=55296&&Y<=57343&&(Y=65536+((1023&Y)<<10)|1023&C.charCodeAt(++j)),Y<=127){if(u>=W)break;B[u++]=Y}else if(Y<=2047){if(u+1>=W)break;B[u++]=192|Y>>6,B[u++]=128|63&Y}else if(Y<=65535){if(u+2>=W)break;B[u++]=224|Y>>12,B[u++]=128|Y>>6&63,B[u++]=128|63&Y}else if(Y<=2097151){if(u+3>=W)break;B[u++]=240|Y>>18,B[u++]=128|Y>>12&63,B[u++]=128|Y>>6&63,B[u++]=128|63&Y}else if(Y<=67108863){if(u+4>=W)break;B[u++]=248|Y>>24,B[u++]=128|Y>>18&63,B[u++]=128|Y>>12&63,B[u++]=128|Y>>6&63,B[u++]=128|63&Y}else{if(u+5>=W)break;B[u++]=252|Y>>30,B[u++]=128|Y>>24&63,B[u++]=128|Y>>18&63,B[u++]=128|Y>>12&63,B[u++]=128|Y>>6&63,B[u++]=128|63&Y}}return B[u]=0,u-L}function is(C,B,u){return Pe(C,o,B,u)}function qe(C){for(var B=0,u=0;u<C.length;++u){var m=C.charCodeAt(u);m>=55296&&m<=57343&&(m=65536+((1023&m)<<10)|1023&C.charCodeAt(++u)),m<=127?++B:m<=2047?B+=2:m<=65535?B+=3:m<=2097151?B+=4:m<=67108863?B+=5:B+=6}return B}var as=typeof TextDecoder<"u"?new TextDecoder("utf-16le"):void 0;function Gr(C){for(var B=C,u=B>>1;g[u];)++u;if((B=u<<1)-C>32&&as)return as.decode(o.subarray(C,B));for(var m=0,L="";;){var W=g[C+2*m>>1];if(W==0)return L;++m,L+=String.fromCharCode(W)}}function xr(C,B,u){if(u===void 0&&(u=2147483647),u<2)return 0;for(var m=B,L=(u-=2)<2*C.length?u/2:C.length,W=0;W<L;++W){var j=C.charCodeAt(W);g[B>>1]=j,B+=2}return g[B>>1]=0,B-m}function Mr(C){return 2*C.length}function Nr(C){for(var B=0,u="";;){var m=E[C+4*B>>2];if(m==0)return u;if(++B,m>=65536){var L=m-65536;u+=String.fromCharCode(55296|L>>10,56320|1023&L)}else u+=String.fromCharCode(m)}}function br(C,B,u){if(u===void 0&&(u=2147483647),u<4)return 0;for(var m=B,L=m+u-4,W=0;W<C.length;++W){var j=C.charCodeAt(W);if(j>=55296&&j<=57343&&(j=65536+((1023&j)<<10)|1023&C.charCodeAt(++W)),E[B>>2]=j,(B+=4)+4>L)break}return E[B>>2]=0,B-m}function Lr(C){for(var B=0,u=0;u<C.length;++u){var m=C.charCodeAt(u);m>=55296&&m<=57343&&++u,B+=4}return B}function Ur(C){var B=qe(C)+1,u=Ve(B);return u&&Pe(C,n,u,B),u}function Tr(C){var B=qe(C)+1,u=Oe(B);return Pe(C,n,u,B),u}function vr(C){return C}function Hr(){var C,B=function(){var m=Error();if(!m.stack){try{throw Error(0)}catch(L){m=L}if(!m.stack)return"(no stack trace available)"}return m.stack.toString()}();return I.extraStackTrace&&(B+=`
14
+ `+I.extraStackTrace()),(C=B).replace(/__Z[\w\d_]+/g,function(u){var m,L=m=u;return u===L?u:u+" ["+L+"]"})}function ft(C,B){return C%B>0&&(C+=B-C%B),C}function gs(C){I.buffer=s=C}function mt(){I.HEAP8=n=new Int8Array(s),I.HEAP16=g=new Int16Array(s),I.HEAP32=E=new Int32Array(s),I.HEAPU8=o=new Uint8Array(s),I.HEAPU16=i=new Uint16Array(s),I.HEAPU32=h=new Uint32Array(s),I.HEAPF32=d=new Float32Array(s),I.HEAPF64=Q=new Float64Array(s)}function Is(){var C=I.usingWasm?65536:16777216,B=2147483648-C;if(E[R>>2]>B)return!1;var u=mA;for(mA=Math.max(mA,16777216);mA<E[R>>2];)mA=mA<=536870912?ft(2*mA,C):Math.min(ft((3*mA+2147483648)/4,C),B);var m=I.reallocBuffer(mA);return m&&m.byteLength==mA?(gs(m),mt(),!0):(mA=u,!1)}l=c=y=S=w=H=R=0,f=!1,I.reallocBuffer||(I.reallocBuffer=function(C){try{if(ArrayBuffer.transfer)B=ArrayBuffer.transfer(s,C);else{var B,u=n;B=new ArrayBuffer(C),new Int8Array(B).set(u)}}catch{return!1}return!!er(B)&&B});try{(x=Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype,"byteLength").get))(new ArrayBuffer(4))}catch{x=function(B){return B.byteLength}}var pt=I.TOTAL_STACK||5242880,mA=I.TOTAL_MEMORY||16777216;function Wo(){return mA}function Fe(C){for(;C.length>0;){var B=C.shift();if(typeof B=="function"){B();continue}var u=B.func;typeof u=="number"?B.arg===void 0?I.dynCall_v(u):I.dynCall_vi(u,B.arg):u(B.arg===void 0?null:B.arg)}}mA<pt&&lA("TOTAL_MEMORY should be larger than TOTAL_STACK, was "+mA+"! (TOTAL_STACK="+pt+")"),I.buffer?s=I.buffer:(typeof WebAssembly=="object"&&typeof WebAssembly.Memory=="function"?(I.wasmMemory=new WebAssembly.Memory({initial:mA/65536}),s=I.wasmMemory.buffer):s=new ArrayBuffer(mA),I.buffer=s),mt();var Cs=[],yt=[],Es=[],Bs=[],hs=[],St=!1,Xo=!1;function _o(C){Cs.unshift(C)}function Yr(C){yt.unshift(C)}function Jr(C){Es.unshift(C)}function Pr(C){Bs.unshift(C)}function zo(C){hs.unshift(C)}function qr(C,B,u){var m,L;we("writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!"),u&&(m=n[L=B+qe(C)]),is(C,B,1/0),u&&(n[L]=m)}function Kr(C,B,u){return C>=0?C:B<=32?2*Math.abs(1<<B-1)+C:Math.pow(2,B)+C}function Vr(C,B,u){if(C<=0)return C;var m=B<=32?Math.abs(1<<B-1):Math.pow(2,B-1);return C>=m&&(B<=32||C>m)&&(C=-2*m+C),C}var jo=Math.abs,$o=Math.ceil,cs=Math.floor,Ar=Math.min,re=0,Dt=null,Re=null;function Or(C){return C}I.preloadedImages={},I.preloadedAudios={};var ls="data:application/octet-stream;base64,";function Ke(C){return String.prototype.startsWith?C.startsWith(ls):C.indexOf(ls)===0}(function(){var B="main.wast",u="main.wasm",m="main.temp.asm.js";Ke(B)||(B=iA(B)),Ke(u)||(u=iA(u)),Ke(m)||(m=iA(m));var L={global:null,env:null,asm2wasm:Vo,parent:I},W=null;function j(aA){return aA}function Y(){try{if(I.wasmBinary)return new Uint8Array(I.wasmBinary);if(I.readBinary)return I.readBinary(u);throw"both async and sync fetching of the wasm failed"}catch(aA){zA(aA)}}I.asmPreload=I.asm;var pA=I.reallocBuffer,CA=function(aA){aA=ft(aA,I.usingWasm?65536:16777216);var Z=I.buffer.byteLength;if(I.usingWasm)try{var FA=I.wasmMemory.grow((aA-Z)/65536);return FA!==-1?I.buffer=I.wasmMemory.buffer:null}catch{return null}};I.reallocBuffer=function(aA){return EA==="asmjs"?pA(aA):CA(aA)};var EA="";I.asm=function(aA,Z,FA){var UA;if(!(Z=UA=Z).table){var TA,vA=I.wasmTableSize;vA===void 0&&(vA=1024);var ie=I.wasmMaxTableSize;typeof WebAssembly=="object"&&typeof WebAssembly.Table=="function"?ie!==void 0?Z.table=new WebAssembly.Table({initial:vA,maximum:ie,element:"anyfunc"}):Z.table=new WebAssembly.Table({initial:vA,element:"anyfunc"}):Z.table=Array(vA),I.wasmTable=Z.table}return Z.memoryBase||(Z.memoryBase=I.STATIC_BASE),Z.tableBase||(Z.tableBase=0),TA=function(xe,Be,Rt){if(typeof WebAssembly!="object")return lA("no native wasm support detected"),!1;if(!(I.wasmMemory instanceof WebAssembly.Memory))return lA("no native wasm Memory in use"),!1;function Ze(ZA,WA){if((W=ZA.exports).memory){var Me,Gt,ds;Me=W.memory,Gt=I.buffer,Me.byteLength<Gt.byteLength&&lA("the new buffer in mergeMemory is smaller than the previous one. in native wasm, we should grow memory here"),ds=new Int8Array(Gt),new Int8Array(Me).set(ds),gs(Me),mt()}I.asm=W,I.usingWasm=!0,function($r){if(re--,I.monitorRunDependencies&&I.monitorRunDependencies(re),re==0&&(Dt!==null&&(clearInterval(Dt),Dt=null),Re)){var tr=Re;Re=null,tr()}}("wasm-instantiate")}if(Be.memory=I.wasmMemory,L.global={NaN:NaN,Infinity:1/0},L["global.Math"]=Math,L.env=Be,re++,I.monitorRunDependencies&&I.monitorRunDependencies(re),I.instantiateWasm)try{return I.instantiateWasm(L,Ze)}catch(ZA){return lA("Module.instantiateWasm callback failed with error: "+ZA),!1}function he(ZA){Ze(ZA.instance,ZA.module)}function us(ZA){(!I.wasmBinary&&(O||AA)&&typeof fetch=="function"?fetch(u,{credentials:"same-origin"}).then(function(WA){if(!WA.ok)throw"failed to load wasm binary file at '"+u+"'";return WA.arrayBuffer()}).catch(function(){return Y()}):new Promise(function(WA,Me){WA(Y())})).then(function(WA){return WebAssembly.instantiate(WA,L)}).then(ZA).catch(function(WA){lA("failed to asynchronously prepare wasm: "+WA),zA(WA)})}return I.wasmBinary||typeof WebAssembly.instantiateStreaming!="function"||Ke(u)||typeof fetch!="function"?us(he):WebAssembly.instantiateStreaming(fetch(u,{credentials:"same-origin"}),L).then(he).catch(function(ZA){lA("wasm streaming compile failed: "+ZA),lA("falling back to ArrayBuffer instantiation"),us(he)}),{}}(aA,Z,FA),ee(TA,"no binaryen method succeeded."),TA},I.asm})(),c=(l=1024)+4816,yt.push(),I.STATIC_BASE=l,I.STATIC_BUMP=4816;var xA=c;function Zr(C){n[xA]=n[C],n[xA+1]=n[C+1],n[xA+2]=n[C+2],n[xA+3]=n[C+3]}function Wr(C){n[xA]=n[C],n[xA+1]=n[C+1],n[xA+2]=n[C+2],n[xA+3]=n[C+3],n[xA+4]=n[C+4],n[xA+5]=n[C+5],n[xA+6]=n[C+6],n[xA+7]=n[C+7]}function Xr(C,B,u){var m=u>0?u:qe(C)+1,L=Array(m),W=Pe(C,L,0,L.length);return B&&(L.length=W),L}function _r(C){for(var B=[],u=0;u<C.length;u++){var m=C[u];m>255&&(m&=255),B.push(String.fromCharCode(m))}return B.join("")}c+=16,R=LA(4),w=(y=S=es(c))+pt,H=es(w),E[R>>2]=H,f=!0,I.wasmTableSize=4,I.wasmMaxTableSize=4,I.asmGlobalArg={},I.asmLibraryArg={abort:zA,assert:ee,enlargeMemory:Is,getTotalMemory:Wo,abortOnCannotGrowMemory:function(){zA("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+mA+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")},invoke_iii:function(B,u,m){var L=wt();try{return I.dynCall_iii(B,u,m)}catch(W){if(kt(L),typeof W!="number"&&W!=="longjmp")throw W;I.setThrew(1,0)}},___assert_fail:function(B,u,m,L){zA("Assertion failed: "+Je(B)+", at: "+[u?Je(u):"unknown filename",m,L?Je(L):"unknown function"])},___setErrNo:function(B){return I.___errno_location&&(E[I.___errno_location()>>2]=B),B},_abort:function(){I.abort()},_emscripten_memcpy_big:function(B,u,m){return o.set(o.subarray(u,u+m),B),B},_llvm_floor_f64:cs,DYNAMICTOP_PTR:R,tempDoublePtr:xA,ABORT:Ye,STACKTOP:S,STACK_MAX:w};var Qs=I.asm(I.asmGlobalArg,I.asmLibraryArg,s);I.asm=Qs,I.___errno_location=function(){return I.asm.___errno_location.apply(null,arguments)};var er=I._emscripten_replace_memory=function(){return I.asm._emscripten_replace_memory.apply(null,arguments)};I._free=function(){return I.asm._free.apply(null,arguments)};var Ve=I._malloc=function(){return I.asm._malloc.apply(null,arguments)};I._memcpy=function(){return I.asm._memcpy.apply(null,arguments)},I._memset=function(){return I.asm._memset.apply(null,arguments)},I._sbrk=function(){return I.asm._sbrk.apply(null,arguments)},I._stb_vorbis_js_channels=function(){return I.asm._stb_vorbis_js_channels.apply(null,arguments)},I._stb_vorbis_js_close=function(){return I.asm._stb_vorbis_js_close.apply(null,arguments)},I._stb_vorbis_js_decode=function(){return I.asm._stb_vorbis_js_decode.apply(null,arguments)},I._stb_vorbis_js_open=function(){return I.asm._stb_vorbis_js_open.apply(null,arguments)},I._stb_vorbis_js_sample_rate=function(){return I.asm._stb_vorbis_js_sample_rate.apply(null,arguments)},I.establishStackSpace=function(){return I.asm.establishStackSpace.apply(null,arguments)},I.getTempRet0=function(){return I.asm.getTempRet0.apply(null,arguments)},I.runPostSets=function(){return I.asm.runPostSets.apply(null,arguments)},I.setTempRet0=function(){return I.asm.setTempRet0.apply(null,arguments)},I.setThrew=function(){return I.asm.setThrew.apply(null,arguments)};var Oe=I.stackAlloc=function(){return I.asm.stackAlloc.apply(null,arguments)},kt=I.stackRestore=function(){return I.asm.stackRestore.apply(null,arguments)},wt=I.stackSave=function(){return I.asm.stackSave.apply(null,arguments)};function Ge(C){this.name="ExitStatus",this.message="Program terminated with exit("+C+")",this.status=C}function Ft(C){C=C||I.arguments,!(re>0)&&(function(){if(I.preRun)for(typeof I.preRun=="function"&&(I.preRun=[I.preRun]);I.preRun.length;)_o(I.preRun.shift());Fe(Cs)}(),!(re>0)&&(I.calledRun||(I.setStatus?(I.setStatus("Running..."),setTimeout(function(){setTimeout(function(){I.setStatus("")},1),B()},1)):B())));function B(){!I.calledRun&&(I.calledRun=!0,Ye||(St||(St=!0,Fe(yt)),Fe(Es),I.onRuntimeInitialized&&I.onRuntimeInitialized(),function(){if(I.postRun)for(typeof I.postRun=="function"&&(I.postRun=[I.postRun]);I.postRun.length;)zo(I.postRun.shift());Fe(hs)}()))}}function zr(C,B){(!B||!I.noExitRuntime||C!==0)&&(I.noExitRuntime||(Ye=!0,ts=C,S=G,Fe(Bs),Xo=!0,I.onExit&&I.onExit(C)),I.quit(C,new Ge(C)))}function zA(C){throw I.onAbort&&I.onAbort(C),C!==void 0?(eA(C),lA(C),C=JSON.stringify(C)):C="",Ye=!0,ts=1,"abort("+C+"). Build with -s ASSERTIONS=1 for more info."}if(I.dynCall_iii=function(){return I.asm.dynCall_iii.apply(null,arguments)},I.asm=Qs,I.ccall=os,I.cwrap=function(B,u,m,L){var W=(m=m||[]).every(function(j){return j==="number"});return u!=="string"&&W&&!L?ss(B):function(){return os(B,u,m,arguments,L)}},Ge.prototype=Error(),Ge.prototype.constructor=Ge,Re=function C(){I.calledRun||Ft(),I.calledRun||(Re=C)},I.run=Ft,I.abort=zA,I.preInit)for(typeof I.preInit=="function"&&(I.preInit=[I.preInit]);I.preInit.length>0;)I.preInit.pop()();I.noExitRuntime=!0,Ft(),I.onRuntimeInitialized=()=>{En=!0,Bn()},_A.decode=function(C){return function(u){if(!En)throw Error("Not initialized");var m={};function L(Be){return new Int32Array(I.HEAPU8.buffer,Be,1)[0]}function W(Be,Rt){var Ze=new ArrayBuffer(Rt*Float32Array.BYTES_PER_ELEMENT),he=new Float32Array(Ze);return he.set(new Float32Array(I.HEAPU8.buffer,Be,Rt)),he}m.open=I.cwrap("stb_vorbis_js_open","number",[]),m.close=I.cwrap("stb_vorbis_js_close","void",["number"]),m.channels=I.cwrap("stb_vorbis_js_channels","number",["number"]),m.sampleRate=I.cwrap("stb_vorbis_js_sample_rate","number",["number"]),m.decode=I.cwrap("stb_vorbis_js_decode","number",["number","number","number","number","number"]);var j,Y,pA,CA,EA=m.open(),aA=(j=u,Y=u.byteLength,pA=I._malloc(Y),(CA=new Uint8Array(I.HEAPU8.buffer,pA,Y)).set(new Uint8Array(j,0,Y)),CA),Z=I._malloc(4),FA=I._malloc(4),UA=m.decode(EA,aA.byteOffset,aA.byteLength,Z,FA);if(I._free(aA.byteOffset),UA<0)throw m.close(EA),I._free(Z),Error("stbvorbis decode failed: "+UA);for(var TA=m.channels(EA),vA=Array(TA),ie=new Int32Array(I.HEAPU32.buffer,L(Z),TA),HA=0;HA<TA;HA++)vA[HA]=W(ie[HA],UA),I._free(ie[HA]);var xe=m.sampleRate(EA);return m.close(EA),I._free(L(Z)),I._free(Z),{data:vA,sampleRate:xe,eof:!0,error:null}}(C)}})();function hn(t){let A=t.messageData,e=t.channelNumber,s={};switch(e>=0&&(s=this.workletProcessorChannels[e]),t.messageType){case sA.noteOn:this.noteOn(e,A[0],A[1],A[2]);break;case sA.noteOff:this.noteOff(e,A);break;case sA.pitchWheel:this.pitchWheel(e,A[0],A[1]);break;case sA.ccChange:this.controllerChange(e,A[0],A[1],A[2]);break;case sA.customcCcChange:s.customControllers[A[0]]=A[1];break;case sA.killNote:this.killNote(e,A);break;case sA.programChange:this.programChange(e,A[0],A[1]);break;case sA.channelPressure:this.channelPressure(e,A);break;case sA.polyPressure:this.polyPressure(e,A[0],A[1]);break;case sA.ccReset:e===PA?this.resetAllControllers():this.resetControllers(e);break;case sA.systemExclusive:this.systemExclusive(A);break;case sA.setChannelVibrato:if(e===PA)for(let g=0;g<this.workletProcessorChannels.length;g++)A.rate===-1?this.disableAndLockGSNRPN(g):this.setVibrato(g,A.depth,A.rate,A.delay);else A.rate===-1?this.disableAndLockGSNRPN(e):this.setVibrato(e,A.depth,A.rate,A.delay);break;case sA.stopAll:e===PA?this.stopAllChannels(A===1):this.stopAll(e,A===1);break;case sA.killNotes:this.voiceKilling(A);break;case sA.muteChannel:this.muteChannel(e,A);break;case sA.addNewChannel:this.createWorkletChannel(!0);break;case sA.debugMessage:this.debugMessage();break;case sA.setMasterParameter:let n=A[0],o=A[1];switch(n){case le.masterPan:this.setMasterPan(o);break;case le.mainVolume:this.setMasterGain(o);break;case le.voicesCap:this.voiceCap=o;break;case le.interpolationType:this.interpolationType=o;break}break;case sA.setDrums:this.setDrums(e,A);break;case sA.transpose:e===PA?this.transposeAllChannels(A[0],A[1]):this.transposeChannel(e,A[0],A[1]);break;case sA.highPerformanceMode:this.highPerformanceMode=A;break;case sA.lockController:A[0]===PA?s.lockPreset=A[1]:s.lockedControllers[A[0]]=A[1];break;case sA.sequencerSpecific:this.sequencer.processMessage(A.messageType,A.messageData);break;case sA.soundFontManager:try{this.soundfontManager.handleMessage(A[0],A[1])}catch(g){this.post({messageType:DA.soundfontError,messageData:g})}this.clearSoundFont(!0,!1);break;case sA.keyModifierManager:this.keyModifierManager.handleMessage(A[0],A[1]);break;case sA.requestSynthesizerSnapshot:this.sendSynthesizerSnapshot();break;case sA.setLogLevel:ws(A[0],A[1],A[2],A[3]);break;case sA.setEffectsGain:this.reverbGain=A[0],this.chorusGain=A[1];break;case sA.destroyWorklet:this.alive=!1;break;default:U("Unrecognized event:",A);break}}function cn(t,A){this.enableEventSystem&&this.post({messageType:DA.eventCall,messageData:{eventName:t,eventData:A}})}function ln(){if(!this.enableEventSystem)return;let t=this.workletProcessorChannels.map(A=>{let e=(A.midiControllers[dA+P.pitchWheelRange]>>7)+(A.midiControllers[dA+P.pitchWheelRange]&127)/127;return{voicesAmount:A.voices.length,pitchBend:A.midiControllers[dA+P.pitchWheel],pitchBendRangeSemitones:e,isMuted:A.isMuted,isDrum:A.drumChannel}});this.post({messageType:DA.channelProperties,messageData:t})}function gr(t,A,e){let s=t,n=A<<7|e;return t===127&&A===127&&e===127?{midiNote:-1,centTuning:null}:{midiNote:s,centTuning:n*.0061}}function Qn(t,A=0){let e=t[0];if(!(this.deviceID!==PA&&t[1]!==127&&this.deviceID!==t[1]))switch(e){default:U(`%cUnrecognized SysEx: %c${SA(t)}`,a.warn,a.unrecognized);break;case 126:case 127:switch(t[2]){case 4:let n;switch(t[3]){case 1:let o=t[5]<<7|t[4];this.setMIDIVolume(o/16384),p(`%cMaster Volume. Volume: %c${o}`,a.info,a.value);break;case 2:let i=((t[5]<<7|t[4])-8192)/8192;this.setMasterPan(i),p(`%cMaster Pan. Pan: %c${i}`,a.info,a.value);break;case 3:let E=(t[5]<<7|t[6])-8192;n=Math.floor(E/81.92),this.setMasterTuning(n),p(`%cMaster Fine Tuning. Cents: %c${n}`,a.info,a.value);break;case 4:n=(t[5]-64)*100,this.setMasterTuning(n),p(`%cMaster Coarse Tuning. Cents: %c${n}`,a.info,a.value);break;default:U(`%cUnrecognized MIDI Device Control Real-time message: %c${SA(t)}`,a.warn,a.unrecognized)}break;case 9:t[3]===1?(p("%cGM system on",a.info),this.system="gm"):t[3]===3?(p("%cGM2 system on",a.info),this.system="gm2"):(p("%cGM system off, defaulting to GS",a.info),this.system="gs");break;case 8:switch(t[3]){case 2:case 7:let o=4;t[3]===7&&o++;let g=t[o++],i=t[o++];for(let h=0;h<i;h++)this.tunings[g][t[o++]]=gr(t[o++],t[o++],t[o++]);p(`%cSingle Note Tuning. Program: %c${g}%c Keys affected: %c${i}`,a.info,a.recognized,a.info,a.recognized);break;case 9:case 8:let E=new Int8Array(12);if(t[3]===8)for(let h=0;h<12;h++)E[h]=t[7+h]-64;else for(let h=0;h<24;h+=2){let d=(t[7+h]<<7|t[8+h])-8192;E[h/2]=Math.floor(d/81.92)}(t[4]&1)===1&&this.setOctaveTuning(14+A,E),(t[4]>>1&1)===1&&this.setOctaveTuning(15+A,E);for(let h=0;h<7;h++)(t[5]>>h&1)===1&&this.setOctaveTuning(7+h+A,E);for(let h=0;h<7;h++)(t[6]>>h&1)===1&&this.setOctaveTuning(h+A,E);p(`%cMIDI Octave Scale ${t[3]===8?"(1 byte)":"(2 bytes)"} tuning via Tuning: %c${E.join(" ")}`,a.info,a.value);break;default:U(`%cUnrecognized MIDI Tuning standard message: %c${SA(t)}`,a.warn,a.unrecognized);break}break;default:U(`%cUnrecognized MIDI Realtime/non realtime message: %c${SA(t)}`,a.warn,a.unrecognized)}break;case 65:let s=function(){U(`%cUnrecognized Roland %cGS %cSysEx: %c${SA(t)}`,a.warn,a.recognized,a.warn,a.unrecognized)};if(t[2]===66&&t[3]===18){let n=t[7];if(t[6]===127){n===0?(p("%cGS Reset received!",a.info),this.resetAllControllers(!1),this.system="gs"):n===127&&(p("%cGS system off, switching to GM2",a.info),this.resetAllControllers(!1),this.system="gm2");return}else if(t[4]===64){if((t[5]&16)>0){let o=[9,0,1,2,3,4,5,6,7,8,10,11,12,13,14,15][t[5]&15]+A;switch(t[6]){default:s();break;case 21:let g=n>0&&t[5]>>4;this.setDrums(o,g),p(`%cChannel %c${o}%c ${g?"is now a drum channel":"now isn't a drum channel"}%c via: %c${SA(t)}`,a.info,a.value,a.recognized,a.info,a.value);return;case 22:let i=n-64;this.transposeChannel(o,i),p(`%cChannel %c${o}%c pitch shift. Semitones %c${i}%c, with %c${SA(t)}`,a.info,a.recognized,a.info,a.value,a.info,a.value);return;case 28:let E=n;E===0&&(E=Math.floor(Math.random()*128)),this.controllerChange(o,k.pan,E);break;case 33:this.controllerChange(o,k.chorusDepth,n);break;case 34:this.controllerChange(o,k.reverbDepth,n);break;case 64:case 65:case 66:case 67:case 68:case 69:case 70:case 71:case 72:case 73:case 74:case 75:let h=t.length-9,d=new Int8Array(12);for(let l=0;l<h;l++)d[l]=t[l+7]-64;this.setOctaveTuning(o,d);let Q=n-64;p(`%cChannel %c${o}%c octave scale tuning. Cents %c${d.join(" ")}%c, with %c${SA(t)}`,a.info,a.recognized,a.info,a.value,a.info,a.value),this.setChannelTuning(o,Q);break}return}else if(t[5]===0&&t[6]===6){p(`%cRoland GS Master Pan set to: %c${n}%c with: %c${SA(t)}`,a.info,a.value,a.info,a.value),this.setMasterPan((n-64)/64);return}else if(t[5]===0&&t[6]===5){let o=n-64;p(`%cRoland GS Master Key-Shift set to: %c${o}%c with: %c${SA(t)}`,a.info,a.value,a.info,a.value),this.setMasterTuning(o*100);return}else if(t[5]===0&&t[6]===4){p(`%cRoland GS Master Volume set to: %c${n}%c with: %c${SA(t)}`,a.info,a.value,a.info,a.value),this.setMIDIVolume(n/127);return}}s();return}else if(t[2]===22&&t[3]===18&&t[4]===16){this.setMIDIVolume(t[7]/100),p(`%cRoland Master Volume control set to: %c${t[7]}%c via: %c${SA(t)}`,a.info,a.value,a.info,a.value);return}else{U(`%cUnrecognized Roland SysEx: %c${SA(t)}`,a.warn,a.unrecognized);return}case 67:if(t[2]===76)if(t[3]===0&&t[4]===0)switch(t[5]){case 4:let n=t[6];this.setMIDIVolume(n/127),p(`%cXG master volume. Volume: %c${n}`,a.info,a.recognized);break;case 6:let o=t[6]-64;this.transposeAllChannels(o),p(`%cXG master transpose. Volume: %c${o}`,a.info,a.recognized);break;case 126:p("%cXG system on",a.info),this.resetAllControllers(!1),this.system="xg";break}else if(t[3]===8){if(this.system!=="xg")return;let n=t[4]+A;if(n>=this.workletProcessorChannels.length)return;let o=t[6];switch(t[5]){case 1:this.controllerChange(n,k.bankSelect,o);break;case 2:this.controllerChange(n,k.lsbForControl0BankSelect,o);break;case 3:this.programChange(n,o);break;case 8:let g=this.workletProcessorChannels[n];if(g.drumChannel)return;let i=o-64;g.channelTransposeKeyShift=i;break;case 11:this.controllerChange(n,k.mainVolume,o);break;case 14:let E=o;E===0&&(E=Math.floor(Math.random()*127)),this.controllerChange(n,k.pan,E);break;case 19:this.controllerChange(n,k.reverbDepth,o);break;case 18:this.controllerChange(n,k.chorusDepth,o);break;default:U(`%cUnrecognized Yamaha XG Part Setup: %c${t[5].toString(16).toUpperCase()}`,a.warn,a.unrecognized)}}else this.system==="xg"&&U(`%cUnrecognized Yamaha XG SysEx: %c${SA(t)}`,a.warn,a.unrecognized);else this.system==="xg"&&U(`%cUnrecognized Yamaha SysEx: %c${SA(t)}`,a.warn,a.unrecognized);break}}var Ir=1e3/200;function un(t,A,e){if(A.transformAmount===0)return A.currentValue=0,0;let s;if(A.sourceUsesCC)s=t[A.sourceIndex];else{let h=A.sourceIndex+dA;switch(A.sourceIndex){case P.noController:s=16383;break;case P.noteOnKeyNum:s=e.midiNote<<7;break;case P.noteOnVelocity:s=e.velocity<<7;break;case P.polyPressure:s=e.pressure<<7;break;default:s=t[h];break}}let n=Ee[A.sourceCurveType][A.sourcePolarity][A.sourceDirection][s],o;if(A.secSrcUsesCC)o=t[A.secSrcIndex];else{let h=A.secSrcIndex+dA;switch(A.secSrcIndex){case P.noController:o=16383;break;case P.noteOnKeyNum:o=e.midiNote<<7;break;case P.noteOnVelocity:o=e.velocity<<7;break;case P.polyPressure:o=e.pressure<<7;break;default:o=t[h]}}let g=Ee[A.secSrcCurveType][A.secSrcPolarity][A.secSrcDirection][o],i=A.transformAmount;A.isEffectModulator&&i<=1e3&&(i*=Ir,i=Math.min(i,1e3));let E=n*g*i;return A.transformType===2&&(E=Math.abs(E)),A.currentValue=E,E}function $A(t,A,e=-1,s=0){let n=t.modulators,o=t.generators,g=t.modulatedGenerators;if(e===-1){g.set(o),n.forEach(h=>{let d=J[h.modulatorDestination],Q=g[h.modulatorDestination]+un(A,h,t);g[h.modulatorDestination]=Math.max(d.min,Math.min(Q,d.max))}),JA.recalculate(t),YA.recalculate(t);return}let i=new Set([r.initialAttenuation,r.delayVolEnv,r.attackVolEnv,r.holdVolEnv,r.decayVolEnv,r.sustainVolEnv,r.releaseVolEnv,r.keyNumToVolEnvHold,r.keyNumToVolEnvDecay]),E=new Set;n.forEach(h=>{if(h.sourceUsesCC===e&&h.sourceIndex===s||h.secSrcUsesCC===e&&h.secSrcIndex===s){let d=h.modulatorDestination;E.has(d)||(g[d]=o[d],un(A,h,t),n.forEach(Q=>{if(Q.modulatorDestination===d){let l=J[h.modulatorDestination],c=g[h.modulatorDestination]+Q.currentValue;g[h.modulatorDestination]=Math.max(l.min,Math.min(c,l.max))}}),E.add(d))}}),[...E].some(h=>i.has(h))&&JA.recalculate(t),YA.recalculate(t)}var Ee=[];for(let t=0;t<4;t++){Ee[t]=[[new Float32Array(fA),new Float32Array(fA)],[new Float32Array(fA),new Float32Array(fA)]];for(let A=0;A<fA;A++)Ee[t][0][0][A]=Ce(0,t,A/fA,0),Ee[t][1][0][A]=Ce(0,t,A/fA,1),Ee[t][0][1][A]=Ce(1,t,A/fA,0),Ee[t][1][1][A]=Ce(1,t,A/fA,1)}function dn(t,A,e,s=!1,n=!0,o=currentTime){if(e===0){this.noteOff(t,A);return}let g=this.workletProcessorChannels[t];if(this.highPerformanceMode&&this.totalVoicesAmount>200&&e<40||this.highPerformanceMode&&e<10||g.isMuted)return;let i=A+g.channelTransposeKeyShift,E=i;if(A>127||A<0)return;let h=g.preset.program;this.tunings[h]?.[A]?.midiNote>=0&&(E=this.tunings[h]?.[A].midiNote),g.velocityOverride>0&&(e=g.velocityOverride);let d=this.keyModifierManager.getVelocity(t,A);d>-1&&(e=d);let Q=this.getWorkletVoices(t,E,e,g,o,i,s),l=g.voices;Q.forEach(c=>{let f=c.generators[r.exclusiveClass];f!==0&&l.forEach(G=>{G.generators[r.exclusiveClass]===f&&(this.releaseVoice(G,fn),G.modulatedGenerators[r.releaseVolEnv]=-7e3,G.modulatedGenerators[r.releaseModEnv]=-7e3,JA.recalculate(G),YA.recalculate(G))}),$A(c,g.midiControllers);let y=c.modulatedGenerators[r.startAddrsOffset]+c.modulatedGenerators[r.startAddrsCoarseOffset]*32768,S=c.modulatedGenerators[r.endAddrOffset]+c.modulatedGenerators[r.endAddrsCoarseOffset]*32768,w=c.modulatedGenerators[r.startloopAddrsOffset]+c.modulatedGenerators[r.startloopAddrsCoarseOffset]*32768,H=c.modulatedGenerators[r.endloopAddrsOffset]+c.modulatedGenerators[r.endloopAddrsCoarseOffset]*32768,R=c.sample,x=G=>Math.max(0,Math.min(R.sampleData.length-1,G));if(R.cursor=x(R.cursor+y),R.end=x(R.end+S),R.loopStart=x(R.loopStart+w),R.loopEnd=x(R.loopEnd+H),R.loopEnd<R.loopStart){let G=R.loopStart;R.loopStart=R.loopEnd,R.loopEnd=G}R.loopEnd-R.loopStart<1&&(R.loopingMode=0,R.isLooping=!1),c.volumeEnvelope.attenuation=c.volumeEnvelope.attenuationTarget,c.currentPan=(Math.max(-500,Math.min(500,c.modulatedGenerators[r.pan]))+500)/1e3}),this.totalVoicesAmount+=Q.length,this.totalVoicesAmount>this.voiceCap&&this.voiceKilling(Q.length),l.push(...Q),n&&(this.sendChannelProperties(),this.callEvent("noteon",{midiNote:A,channel:t,velocity:e}))}function mn(t,A){if(A>127||A<0){U("Received a noteOn for note",A,"Ignoring.");return}let e=A+this.workletProcessorChannels[t].channelTransposeKeyShift;if(this.highPerformanceMode&&!this.workletProcessorChannels[t].drumChannel){this.killNote(t,e);return}this.workletProcessorChannels[t].voices.forEach(n=>{n.realKey!==e||n.isInRelease===!0||(this.workletProcessorChannels[t].holdPedal?this.workletProcessorChannels[t].sustainedVoices.push(n):this.releaseVoice(n))}),this.callEvent("noteoff",{midiNote:A,channel:t})}function pn(t,A){this.workletProcessorChannels[t].voices.forEach(e=>{e.realKey===A&&(e.modulatedGenerators[r.releaseVolEnv]=-12e3,this.releaseVoice(e))})}function yn(t,A=!1){let e=this.workletProcessorChannels[t].voices;A?(e.length=0,this.workletProcessorChannels[t].sustainedVoices.length=0,this.sendChannelProperties()):(e.forEach(s=>{s.isInRelease||this.releaseVoice(s)}),this.workletProcessorChannels[t].sustainedVoices.forEach(s=>{this.releaseVoice(s)}))}function Sn(t=!1){p("%cStop all received!",a.info);for(let A=0;A<this.workletProcessorChannels.length;A++)this.stopAll(A,t);this.callEvent("stopall",void 0)}function Dn(t,A=!1){this.transposition=0;for(let e=0;e<this.workletProcessorChannels.length;e++)this.transposeChannel(e,t,A);this.transposition=t}function kn(t,A,e=!1){let s=this.workletProcessorChannels[t];s.drumChannel||(A+=this.transposition);let n=Math.trunc(A),o=s.channelTransposeKeyShift+s.customControllers[hA.channelTransposeFine]/100;s.drumChannel&&!e||A===o||(n!==s.channelTransposeKeyShift&&this.stopAll(t,!1),s.channelTransposeKeyShift=n,s.customControllers[hA.channelTransposeFine]=(A-n)*100)}function wn(t,A,e=!0){let s=this.workletProcessorChannels[t];A=Math.round(A),s.customControllers[hA.channelTuning]=A,e&&p(`%cChannel ${t} fine tuning. Cents: %c${A}`,a.info,a.value)}function Fn(t,A){let e=this.workletProcessorChannels[t];A=Math.round(A),e.customControllers[hA.channelTuningSemitones]=A,p(`%cChannel ${t} coarse tuning. Semitones: %c${A}`,a.info,a.value)}function Rn(t){t=Math.round(t);for(let A=0;A<this.workletProcessorChannels.length;A++)this.workletProcessorChannels[A].customControllers[hA.masterTuning]=t}function Gn(t,A){let e=this.workletProcessorChannels[t];A=Math.round(A),p(`%cChannel ${t} modulation depth. Cents: %c${A}`,a.info,a.value),e.customControllers[hA.modulationMultiplier]=A/50}function xn(t,A,e){if(this.workletProcessorChannels[t].lockedControllers[dA+P.pitchWheel])return;let s=e|A<<7;this.callEvent("pitchwheel",{channel:t,MSB:A,LSB:e}),this.workletProcessorChannels[t].midiControllers[dA+P.pitchWheel]=s,this.workletProcessorChannels[t].voices.forEach(n=>$A(n,this.workletProcessorChannels[t].midiControllers,0,P.pitchWheel)),this.sendChannelProperties()}function Mn(t,A){let e=this.workletProcessorChannels[t];e.midiControllers[dA+P.channelPressure]=A<<7,this.workletProcessorChannels[t].voices.forEach(s=>$A(s,e.midiControllers,0,P.channelPressure)),this.callEvent("channelpressure",{channel:t,pressure:A})}function Nn(t,A,e){this.workletProcessorChannels[t].voices.forEach(s=>{s.midiNote===A&&(s.pressure=e,$A(s,this.workletProcessorChannels[t].midiControllers,0,P.polyPressure))}),this.callEvent("polypressure",{channel:t,midiNote:A,pressure:e})}function bn(t,A){if(A.length!==12)throw new Error("Tuning is not the length of 12.");this.workletProcessorChannels[t].channelOctaveTuning=A}function Ln(t,A,e,s=!1){let n=this.workletProcessorChannels[t];if(n===void 0){U(`Trying to access channel ${t} which does not exist... ignoring!`);return}if(A>127){if(!s)return;switch(A){default:return;case Ut.velocityOverride:n.velocityOverride=e}}if(A>=k.lsbForControl1ModulationWheel&&A<=k.lsbForControl13EffectControl2&&A!==k.lsbForControl6DataEntry){let o=A-32;if(n.lockedControllers[o])return;n.midiControllers[o]=n.midiControllers[o]&16256|e&127,n.voices.forEach(g=>$A(g,n.midiControllers,1,o))}switch(A){case k.allNotesOff:this.stopAll(t);break;case k.allSoundOff:this.stopAll(t,!0);break;case k.bankSelect:let o=e;if(!s){switch(this.system){case"gm":p(`%cIgnoring the Bank Select (${e}), as the synth is in GM mode.`,a.info);return;case"xg":o===120||o===126||o===127?this.setDrums(t,!0):t%16!==RA&&this.setDrums(t,!1);break;case"gm2":o===120&&this.setDrums(t,!0)}n.drumChannel&&(o=128),o===128&&!n.drumChannel&&(o=XA(n))}te(n,o);break;case k.lsbForControl0BankSelect:this.system==="xg"?n.drumChannel||e!==127&&te(n,e):this.system==="gm2"&&te(n,e);break;case k.RPNLsb:n.RPValue=n.RPValue<<7|e,n.dataEntryState=wA.RPFine;break;case k.RPNMsb:n.RPValue=e,n.dataEntryState=wA.RPCoarse;break;case k.NRPNMsb:n.NRPCoarse=e,n.dataEntryState=wA.NRPCoarse;break;case k.NRPNLsb:n.NRPFine=e,n.dataEntryState=wA.NRPFine;break;case k.dataEntryMsb:this.dataEntryCoarse(t,e);break;case k.lsbForControl6DataEntry:this.dataEntryFine(t,e);break;case k.resetAllControllers:this.resetControllers(t);break;case k.sustainPedal:e>=64?n.holdPedal=!0:(n.holdPedal=!1,n.sustainedVoices.forEach(g=>{this.releaseVoice(g)}),n.sustainedVoices=[]);break;default:if(n.lockedControllers[A])return;n.midiControllers[A]=e<<7,n.voices.forEach(g=>$A(g,n.midiControllers,1,A));break}this.callEvent("controllerchange",{channel:t,controllerNumber:A,controllerValue:e})}function Un(t){this.midiVolume=t,this.setMasterPan(this.pan)}function Tn(t){this.masterGain=t*Kt,this.setMasterPan(this.pan)}function vn(t){this.pan=t,t=t/2+.5,this.panLeft=1-t,this.panRight=t}function Hn(t,A){A&&this.stopAll(t,!0),this.workletProcessorChannels[t].isMuted=A,this.sendChannelProperties(),this.callEvent("mutechannel",{channel:t,isMuted:A})}function Yn(t){this.workletProcessorChannels[t].lockGSNRPNParams=!0,this.workletProcessorChannels[t].channelVibrato.rate=0,this.workletProcessorChannels[t].channelVibrato.delay=0,this.workletProcessorChannels[t].channelVibrato.depth=0}function Jn(t,A,e,s){this.workletProcessorChannels[t].lockGSNRPNParams||(this.workletProcessorChannels[t].channelVibrato.rate=e,this.workletProcessorChannels[t].channelVibrato.delay=s,this.workletProcessorChannels[t].channelVibrato.depth=A)}function Pn(t,A){let e=this.workletProcessorChannels[t],s=()=>{e.channelVibrato.delay===0&&e.channelVibrato.rate===0&&e.channelVibrato.depth===0&&(e.channelVibrato.depth=50,e.channelVibrato.rate=8,e.channelVibrato.delay=.6)};switch(e.dataEntryState){default:case wA.Idle:break;case wA.NRPFine:if(this.system!=="gs"||e.lockGSNRPNParams)return;switch(e.NRPCoarse){default:if(A===64)return;U(`%cUnrecognized NRPN for %c${t}%c: %c(0x${e.NRPCoarse.toString(16).toUpperCase()} 0x${e.NRPFine.toString(16).toUpperCase()})%c data value: %c${A}`,a.warn,a.recognized,a.warn,a.unrecognized,a.warn,a.value);break;case 1:switch(e.NRPFine){default:if(A===64)return;U(`%cUnrecognized NRPN for %c${t}%c: %c(0x${e.NRPCoarse.toString(16)} 0x${e.NRPFine.toString(16)})%c data value: %c${A}`,a.warn,a.recognized,a.warn,a.unrecognized,a.warn,a.value);break;case 8:if(A===64)return;s(),e.channelVibrato.rate=A/64*8,p(`%cVibrato rate for %c${t}%c is now set to %c${A} = ${e.channelVibrato.rate}%cHz.`,a.info,a.recognized,a.info,a.value,a.info);break;case 9:if(A===64)return;s(),e.channelVibrato.depth=A/2,p(`%cVibrato depth for %c${t}%c is now set to %c${A} = ${e.channelVibrato.depth}%c cents range of detune.`,a.info,a.recognized,a.info,a.value,a.info);break;case 10:if(A===64)return;s(),e.channelVibrato.delay=A/64/3,p(`%cVibrato delay for %c${t}%c is now set to %c${A} = ${e.channelVibrato.delay}%c seconds.`,a.info,a.recognized,a.info,a.value,a.info);break;case 32:let g=A;this.controllerChange(t,k.brightness,A),p(`%cFilter cutoff for %c${t}%c is now set to %c${g}`,a.info,a.recognized,a.info,a.value)}break;case 24:let n=A-64;e.keyCentTuning[e.NRPFine]=n*100,p(`%cGS drum key tuning. MIDI note: %c${e.NRPFine}%c semitones: %c${n}`,a.info,a.recognized,a.info,a.value);break;case 29:let o=A;this.controllerChange(t,k.reverbDepth,o),p(`%cGS Drum reverb for %c${t}%c: %c${o}`,a.info,a.recognized,a.info,a.value);break}break;case wA.RPCoarse:case wA.RPFine:switch(e.RPValue){default:U(`%cUnrecognized RPN for %c${t}%c: %c(0x${e.RPValue.toString(16)})%c data value: %c${A}`,a.warn,a.recognized,a.warn,a.unrecognized,a.warn,a.value);break;case 0:e.midiControllers[dA+P.pitchWheelRange]=A<<7,p(`%cChannel ${t} bend range. Semitones: %c${A}`,a.info,a.value);break;case 2:this.setChannelTuningSemitones(t,A-64);break;case 1:this.setChannelTuning(t,A-64,!1);break;case 5:this.setModulationDepth(t,A*100);break;case 16383:this.resetParameters(t);break}}}function qn(t,A){let e=this.workletProcessorChannels[t];switch(e.dataEntryState){default:break;case wA.RPCoarse:case wA.RPFine:switch(e.RPValue){default:break;case 0:if(A===0)break;e.midiControllers[dA+P.pitchWheelRange]|=A;let s=(e.midiControllers[dA+P.pitchWheelRange]>>7)+A/127;p(`%cChannel ${t} bend range. Semitones: %c${s}`,a.info,a.value);break;case 1:let o=e.customControllers[hA.channelTuning]<<7|A;this.setChannelTuning(t,o*.01220703125);break;case 5:let i=e.customControllers[hA.modulationMultiplier]*50+A/128*100;this.setModulationDepth(t,i);break;case 16383:this.resetParameters(t);break}}}function Kn(t=!0){t&&p("%cResetting all controllers!",a.info),this.callEvent("allcontrollerreset",void 0);for(let A=0;A<this.workletProcessorChannels.length;A++){this.resetControllers(A);let e=this.workletProcessorChannels[A];e.lockPreset?this.callEvent("drumchange",{channel:A,isDrumChannel:e.drumChannel}):(e.presetUsesOverride=!0,te(e,0),A%16===RA?(this.setPreset(A,this.drumPreset),e.drumChannel=!0,this.callEvent("drumchange",{channel:A,isDrumChannel:!0})):(e.drumChannel=!1,this.setPreset(A,this.defaultPreset),this.callEvent("drumchange",{channel:A,isDrumChannel:!1}))),this.callEvent("programchange",{channel:A,program:e.preset.program,bank:XA(e),userCalled:!1});for(let s=0;s<128;s++)this.workletProcessorChannels[A].lockedControllers[s]&&this.callEvent("controllerchange",{channel:A,controllerNumber:s,controllerValue:this.workletProcessorChannels[A].midiControllers[s]>>7});if(this.workletProcessorChannels[A].lockedControllers[dA+P.pitchWheel]===!1){let s=this.workletProcessorChannels[A].midiControllers[dA+P.pitchWheel],n=s>>7,o=s&127;this.callEvent("pitchwheel",{channel:A,MSB:n,LSB:o})}}this.tunings=[],this.tunings=[];for(let A=0;127>A;A++)this.tunings.push([]);this.setMIDIVolume(1),this.system=At}function Vn(t){let A=this.workletProcessorChannels[t],e=A.lockedControllers.reduce((n,o,g)=>(o&&n.push(g),n),[]);A.channelOctaveTuning.fill(0),A.keyCentTuning.fill(0);for(let n=0;n<ue.length;n++){if(A.lockedControllers[n])return;let o=ue[n];A.midiControllers[n]!==o&&n<127&&this.callEvent("controllerchange",{channel:t,controllerNumber:n,controllerValue:o>>7}),A.midiControllers[n]=o}A.channelVibrato={rate:0,depth:0,delay:0},A.holdPedal=!1;let s=A.customControllers[hA.channelTransposeFine];A.customControllers.set(Lt),A.customControllers[hA.channelTransposeFine]=s,this.resetParameters(t)}function On(t){let A=this.workletProcessorChannels[t];A.NRPCoarse=0,A.NRPFine=0,A.RPValue=0,A.dataEntryState=wA.Idle}function Zn(){let t=4;for(let s of this.instruments)t+=s.instrumentZones.reduce((n,o)=>(o.generators=o.generators.filter(g=>g.generatorType!==r.sampleID&&g.generatorType!==r.keyRange&&g.generatorType!==r.velRange),(o.velRange.max!==127||o.velRange.min!==0)&&o.generators.unshift({generatorType:r.velRange,generatorValue:o.velRange.max<<8|Math.max(o.velRange.min,0)}),(o.keyRange.max!==127||o.keyRange.min!==0)&&o.generators.unshift({generatorType:r.keyRange,generatorValue:o.keyRange.max<<8|Math.max(o.keyRange.min,0)}),o.isGlobal||o.generators.push({generatorType:r.sampleID,generatorValue:this.samples.indexOf(o.sample)}),o.generators.length*4+n),0);let A=new b(t),e=0;for(let s of this.instruments)for(let n of s.instrumentZones){n.generatorZoneStartIndex=e;for(let o of n.generators)N(A,o.generatorType),N(A,o.generatorValue),e++}return V(A,0),gA(new oA("igen",A.length,A))}function Wn(t,A,e,s,n){let o=this.samples.map((h,d)=>{e&&h.compressSample(s,n);let Q=h.getRawData();return p(`%cEncoded sample %c${d}. ${h.sampleName}%c of %c${this.samples.length}`,a.info,a.recognized,a.info,a.recognized),Q}),g=this.samples.reduce((h,d,Q)=>h+o[Q].length+46,0),i=new b(g);this.samples.forEach((h,d)=>{let Q=o[d],l,c,f=Q.length;h.isCompressed?(l=i.currentIndex,c=l+Q.length):(l=i.currentIndex/2,c=l+Q.length/2,f+=46),t.push(l),i.set(Q,i.currentIndex),i.currentIndex+=f,A.push(c)});let E=gA(new oA("smpl",i.length,i),new b([115,100,116,97]));return gA(new oA("LIST",E.length,E))}function Xn(t,A){let s=new b(46*(this.samples.length+1));return this.samples.forEach((n,o)=>{yA(s,n.sampleName,20);let g=t[o];V(s,g);let i=A[o];V(s,i);let E=n.sampleLoopStartIndex+g,h=n.sampleLoopEndIndex+g;n.isCompressed&&(E-=g,h-=g),V(s,E),V(s,h),V(s,n.sampleRate),s[s.currentIndex++]=n.samplePitch,s[s.currentIndex++]=n.samplePitchCorrection,N(s,n.sampleLink),N(s,n.sampleType)}),yA(s,"EOS",46),gA(new oA("shdr",s.length,s))}function _n(){let t=10;for(let s of this.instruments)t+=s.instrumentZones.reduce((n,o)=>o.modulators.length*10+n,0);let A=new b(t),e=0;for(let s of this.instruments)for(let n of s.instrumentZones){n.modulatorZoneStartIndex=e;for(let o of n.modulators)N(A,o.sourceEnum),N(A,o.modulatorDestination),N(A,o.transformAmount),N(A,o.secondarySourceEnum),N(A,o.transformType),e++}return de(A,0,10),gA(new oA("imod",A.length,A))}function zn(){let t=this.instruments.reduce((o,g)=>g.instrumentZones.length*4+o,4),A=new b(t),e=0,s=0,n=0;for(let o of this.instruments){o.instrumentZoneIndex=e;for(let g of o.instrumentZones)g.zoneID=e,N(A,s),N(A,n),s+=g.generators.length,n+=g.modulators.length,e++}return N(A,s),N(A,n),gA(new oA("ibag",A.length,A))}function jn(){let t=this.instruments.length*22+22,A=new b(t),e=0,s=0;for(let n of this.instruments)yA(A,n.instrumentName,20),N(A,e),e+=n.instrumentZones.length,n.instrumentID=s,s++;return yA(A,"EOI",20),N(A,e),gA(new oA("inst",A.length,A))}function $n(){let t=4;for(let s of this.presets)t+=s.presetZones.reduce((n,o)=>(o.generators=o.generators.filter(g=>g.generatorType!==r.instrument&&g.generatorType!==r.keyRange&&g.generatorType!==r.velRange),(o.velRange.max!==127||o.velRange.min!==0)&&o.generators.unshift({generatorType:r.velRange,generatorValue:o.velRange.max<<8|Math.max(o.velRange.min,0)}),(o.keyRange.max!==127||o.keyRange.min!==0)&&o.generators.unshift({generatorType:r.keyRange,generatorValue:o.keyRange.max<<8|Math.max(o.keyRange.min,0)}),o.isGlobal||o.generators.push({generatorType:r.instrument,generatorValue:this.instruments.indexOf(o.instrument)}),o.generators.length*4+n),0);let A=new b(t),e=0;for(let s of this.presets)for(let n of s.presetZones){n.generatorZoneStartIndex=e;for(let o of n.generators)N(A,o.generatorType),N(A,o.generatorValue);e+=n.generators.length}return N(A,0),N(A,0),gA(new oA("pgen",A.length,A))}function Ao(){let t=10;for(let s of this.presets)t+=s.presetZones.reduce((n,o)=>o.modulators.length*10+n,0);let A=new b(t),e=0;for(let s of this.presets)for(let n of s.presetZones){n.modulatorZoneStartIndex=e;for(let o of n.modulators)N(A,o.sourceEnum),N(A,o.modulatorDestination),N(A,o.transformAmount),N(A,o.secondarySourceEnum),N(A,o.transformType),e++}return de(A,0,10),gA(new oA("pmod",A.length,A))}function eo(){let t=this.presets.reduce((o,g)=>g.presetZones.length*4+o,4),A=new b(t),e=0,s=0,n=0;for(let o of this.presets){o.presetZoneStartIndex=e;for(let g of o.presetZones)g.zoneID=e,N(A,s),N(A,n),s+=g.generators.length,n+=g.modulators.length,e++}return N(A,s),N(A,n),gA(new oA("pbag",A.length,A))}function to(){let t=this.presets.length*38+38,A=new b(t),e=0;for(let s of this.presets)yA(A,s.presetName,20),N(A,s.program),N(A,s.bank),N(A,e),V(A,s.library),V(A,s.genre),V(A,s.morphology),e+=s.presetZones.length;return yA(A,"EOP",20),N(A,0),N(A,0),N(A,e),V(A,0),V(A,0),V(A,0),gA(new oA("phdr",A.length,A))}var Cr={compress:!1,compressionQuality:.5,compressionFunction:void 0};function so(t=Cr){if(t.compress&&typeof t.compressionFunction!="function")throw new TypeError("No compression function supplied but compression enabled.");QA("%cSaving soundfont...",a.info),p(`%cCompression: %c${t?.compress||"false"}%c quality: %c${t?.compressionQuality||"none"}`,a.info,a.recognized,a.info,a.recognized),p("%cWriting INFO...",a.info);let A=[];this.soundFontInfo.ISFT="SpessaSynth",t?.compress&&(this.soundFontInfo.ifil="3.0");for(let[x,G]of Object.entries(this.soundFontInfo))if(x==="ifil"||x==="iver"){let I=parseInt(G.split(".")[0]),rA=parseInt(G.split(".")[1]),O=new b(4);N(O,I),N(O,rA),A.push(gA(new oA(x,4,O)))}else if(x==="DMOD")A.push(gA(new oA(x,G.length,G)));else{let I=new b(G.length);yA(I,G),A.push(gA(new oA(x,G.length,I)))}let e=cA([new b([73,78,70,79]),...A]),s=gA(new oA("LIST",e.length,e));p("%cWriting SDTA...",a.info);let n=[],o=[],g=Wn.call(this,n,o,t?.compress,t?.compressionQuality??.5,t.compressionFunction);p("%cWriting PDTA...",a.info),p("%cWriting SHDR...",a.info);let i=Xn.call(this,n,o);p("%cWriting IGEN...",a.info);let E=Zn.call(this);p("%cWriting IMOD...",a.info);let h=_n.call(this);p("%cWriting IBAG...",a.info);let d=zn.call(this);p("%cWriting INST...",a.info);let Q=jn.call(this),l=$n.call(this);p("%cWriting PMOD...",a.info);let c=Ao.call(this);p("%cWriting PBAG...",a.info);let f=eo.call(this);p("%cWriting PHDR...",a.info);let y=to.call(this),S=cA([new b([112,100,116,97]),y,f,c,l,Q,d,h,E,i]),w=gA(new oA("LIST",S.length,S));p("%cWriting the output file...",a.info);let H=cA([new b([115,102,98,107]),s,g,w]),R=gA(new oA("RIFF",H.length,H));return p(`%cSaved succesfully! Final file size: %c${R.length}`,a.info,a.recognized),K(),R}var Ue=class{velRange={min:-1,max:127};keyRange={min:-1,max:127};isGlobal=!1;generators=[];modulators=[];get hasKeyRange(){return this.keyRange.min!==-1}get hasVelRange(){return this.velRange.min!==-1}getGeneratorValue(A,e){return this.generators.find(s=>s.generatorType===A)?.generatorValue??e}};var OA=class extends Ue{sample=void 0;useCount=0;deleteZone(){this.useCount--,!this.isGlobal&&this.sample.useCount--}},ye=class extends Ue{instrument=void 0;deleteZone(){this.isGlobal||this.instrument.removeUseCount()}};var Er=new Set([r.velRange,r.keyRange,r.instrument,r.exclusiveClass,r.endOper,r.sampleModes,r.startloopAddrsOffset,r.startloopAddrsCoarseOffset,r.endloopAddrsOffset,r.endloopAddrsCoarseOffset,r.startAddrsOffset,r.startAddrsCoarseOffset,r.endAddrOffset,r.endAddrsCoarseOffset,r.initialAttenuation,r.fineTune,r.coarseTune,r.keyNumToVolEnvHold,r.keyNumToVolEnvDecay,r.keyNumToModEnvHold,r.keyNumToModEnvDecay]);function no(t,A=!0){function e(Q,l){Q.push(...l.filter(c=>!Q.find(f=>f.generatorType===c.generatorType)))}function s(Q,l){return{min:Math.max(Q.min,l.min),max:Math.min(Q.max,l.max)}}function n(Q,l){Q.push(...l.filter(c=>!Q.find(f=>X.isIdentical(c,f))))}let o=[],g=[],i=[],E={min:0,max:127},h={min:0,max:127},d=t.presetZones.find(Q=>Q.isGlobal);d&&(g.push(...d.generators),i.push(...d.modulators),E=d.keyRange,h=d.velRange);for(let Q of t.presetZones){if(Q.isGlobal)continue;let l=Q.keyRange;Q.hasKeyRange||(l=E);let c=Q.velRange;Q.hasVelRange||(c=h);let f=Q.generators.map(I=>new T(I.generatorType,I.generatorValue));e(f,g);let y=[...Q.modulators];n(y,i);let S=Q.instrument.instrumentZones,w=[],H=[],R={min:0,max:127},x={min:0,max:127},G=S.find(I=>I.isGlobal);G&&(w.push(...G.generators),H.push(...G.modulators),R=G.keyRange,x=G.velRange);for(let I of S){if(I.isGlobal)continue;let rA=I.keyRange;I.hasKeyRange||(rA=R);let O=I.velRange;if(I.hasVelRange||(O=x),rA=s(rA,l),O=s(O,c),rA.max<rA.min||O.max<O.min)continue;let AA=I.generators.map(eA=>new T(eA.generatorType,eA.generatorValue));e(AA,w);let $=[...I.modulators];n($,H);let IA=[...$];for(let eA of y){let lA=IA.findIndex(LA=>X.isIdentical(eA,LA));lA!==-1?IA[lA]=IA[lA].sumTransform(eA):IA.push(eA)}let nA=AA.map(eA=>new T(eA.generatorType,eA.generatorValue));for(let eA of f){if(eA.generatorType===r.velRange||eA.generatorType===r.keyRange||eA.generatorType===r.instrument||eA.generatorType===r.endOper||eA.generatorType===r.sampleModes)continue;let lA=AA.findIndex(LA=>LA.generatorType===eA.generatorType);if(lA!==-1){let LA=nA[lA].generatorValue+eA.generatorValue;nA[lA]=new T(eA.generatorType,LA)}else{let LA=J[eA.generatorType].def+eA.generatorValue;nA.push(new T(eA.generatorType,LA))}}nA=nA.filter(eA=>eA.generatorType!==r.sampleID&&eA.generatorType!==r.keyRange&&eA.generatorType!==r.velRange&&eA.generatorType!==r.endOper&&eA.generatorType!==r.instrument&&eA.generatorValue!==J[eA.generatorType].def);let iA=new OA;iA.keyRange=rA,iA.velRange=O,iA.keyRange.min===0&&iA.keyRange.max===127&&(iA.keyRange.min=-1),iA.velRange.min===0&&iA.velRange.max===127&&(iA.velRange.min=-1),iA.isGlobal=!1,iA.sample=I.sample,iA.generators=nA,iA.modulators=IA,o.push(iA)}}if(A){let Q=new OA;Q.isGlobal=!0;for(let f=0;f<58;f++){if(Er.has(f))continue;let y={},S=J[f]?.def||0;y[S]=0;for(let w of o){let H=w.generators.find(G=>G.generatorType===f);if(H){let G=H.generatorValue;y[G]===void 0?y[G]=1:y[G]++}else y[S]++;let R;switch(f){default:continue;case r.decayVolEnv:R=r.keyNumToVolEnvDecay;break;case r.holdVolEnv:R=r.keyNumToVolEnvHold;break;case r.decayModEnv:R=r.keyNumToModEnvDecay;break;case r.holdModEnv:R=r.keyNumToModEnvHold}if(w.generators.find(G=>G.generatorType===R)!==void 0){y={};break}}if(Object.keys(y).length>0){let w=Object.entries(y).reduce((R,x)=>R[1]<x[1]?x:R,[0,0]),H=parseInt(w[0]);H!==S&&Q.generators.push(new T(f,H)),o.forEach(R=>{let x=R.generators.findIndex(G=>G.generatorType===f);x!==-1?R.generators[x].generatorValue===H&&R.generators.splice(x,1):H!==S&&R.generators.push(new T(f,S))})}}let c=o.find(f=>!f.isGlobal).modulators.map(f=>X.copy(f));for(let f of c){let y=!0;for(let S of o){if(S.isGlobal||!y)continue;S.modulators.find(H=>X.isIdentical(H,f))||(y=!1)}if(y===!0){Q.modulators.push(X.copy(f));for(let S of o){let w=S.modulators.find(H=>X.isIdentical(H,f));w.transformAmount===f.transformAmount&&S.modulators.splice(S.modulators.indexOf(w),1)}}}o.splice(0,0,Q)}return o}var oo=20;function at(t,A,e,s,n,o,g){let i=g===0?0:1,E=new b(oo+i*16);V(E,oo),N(E,A),N(E,e);let h=s*.4,d=Math.floor(h*-65536);V(E,d),V(E,0);let Q=o-n,l=0;switch(g){default:case 0:i=0;break;case 1:l=0,i=1;break;case 3:l=1,i=1}return V(E,i),i===1&&(V(E,16),V(E,l),V(E,n),V(E,Q)),tA("wsmp",E)}var v={none:0,modLfo:1,velocity:2,keyNum:3,volEnv:4,modEnv:5,pitchWheel:6,polyPressure:7,channelPressure:8,vibratoLfo:9,modulationWheel:129,volume:135,pan:138,expression:139,chorus:219,reverb:221,pitchWheelRange:256,fineTune:257,coarseTune:258};var D={none:0,gain:1,reserved:2,pitch:3,pan:4,keyNum:5,chorusSend:128,reverbSend:129,modLfoFreq:260,modLfoDelay:261,vibLfoFreq:276,vibLfoDelay:277,volEnvAttack:518,volEnvDecay:519,volEnvRelease:521,volEnvSustain:522,volEnvDelay:523,volEnvHold:524,modEnvAttack:778,modEnvDecay:779,modEnvRelease:781,modEnvSustain:782,modEnvDelay:783,modEnvHold:784,filterCutoff:1280,filterQ:1281};var Te=class{source;control;destination;scale;transform;constructor(A,e,s,n,o){this.source=A,this.control=e,this.destination=s,this.scale=n,this.transform=o}writeArticulator(){let A=new b(12);return N(A,this.source),N(A,this.control),N(A,this.destination),N(A,this.transform),V(A,this.scale<<16),A}};function ro(t,A){if(t)switch(A){default:return;case k.modulationWheel:return v.modulationWheel;case k.mainVolume:return v.volume;case k.pan:return v.pan;case k.expressionController:return v.expression;case k.chorusDepth:return v.chorus;case k.reverbDepth:return v.reverb}else switch(A){default:return;case P.noteOnKeyNum:return v.keyNum;case P.noteOnVelocity:return v.velocity;case P.noController:return v.none;case P.polyPressure:return v.polyPressure;case P.channelPressure:return v.channelPressure;case P.pitchWheel:return v.pitchWheel;case P.pitchWheelRange:return v.pitchWheelRange}}function io(t,A){switch(t){default:return;case r.initialAttenuation:return{dest:D.gain,amount:-A};case r.fineTune:return D.pitch;case r.pan:return D.pan;case r.keyNum:return D.keyNum;case r.reverbEffectsSend:return D.reverbSend;case r.chorusEffectsSend:return D.chorusSend;case r.freqModLFO:return D.modLfoFreq;case r.delayModLFO:return D.modLfoDelay;case r.delayVibLFO:return D.vibLfoDelay;case r.freqVibLFO:return D.vibLfoFreq;case r.delayVolEnv:return D.volEnvDelay;case r.attackVolEnv:return D.volEnvAttack;case r.holdVolEnv:return D.volEnvHold;case r.decayVolEnv:return D.volEnvDecay;case r.sustainVolEnv:return{dest:D.volEnvSustain,amount:1e3-A};case r.releaseVolEnv:return D.volEnvRelease;case r.delayModEnv:return D.modEnvDelay;case r.attackModEnv:return D.modEnvAttack;case r.holdModEnv:return D.modEnvHold;case r.decayModEnv:return D.modEnvDecay;case r.sustainModEnv:return{dest:D.modEnvSustain,amount:1e3-A};case r.releaseModEnv:return D.modEnvRelease;case r.initialFilterFc:return D.filterCutoff;case r.initialFilterQ:return D.filterQ}}function ao(t,A){switch(t){default:return;case r.modEnvToFilterFc:return{source:v.modEnv,dest:D.filterCutoff,amt:A,isBipolar:!1};case r.modEnvToPitch:return{source:v.modEnv,dest:D.pitch,amt:A,isBipolar:!1};case r.modLfoToFilterFc:return{source:v.modLfo,dest:D.filterCutoff,amt:A,isBipolar:!0};case r.modLfoToVolume:return{source:v.modLfo,dest:D.gain,amt:A,isBipolar:!0};case r.modLfoToPitch:return{source:v.modLfo,dest:D.pitch,amt:A,isBipolar:!0};case r.vibLfoToPitch:return{source:v.vibratoLfo,dest:D.pitch,amt:A,isBipolar:!0};case r.keyNumToVolEnvHold:return{source:v.keyNum,dest:D.volEnvHold,amt:A,isBipolar:!0};case r.keyNumToVolEnvDecay:return{source:v.keyNum,dest:D.volEnvDecay,amt:A,isBipolar:!0};case r.keyNumToModEnvHold:return{source:v.keyNum,dest:D.modEnvHold,amt:A,isBipolar:!0};case r.keyNumToModEnvDecay:return{source:v.keyNum,dest:D.modEnvDecay,amt:A,isBipolar:!0};case r.scaleTuning:return{source:v.keyNum,dest:D.pitch,amt:A*128,isBipolar:!1}}}function go(t){let A=io(t.generatorType,t.generatorValue),e=A,s=0,n=t.generatorValue;A?.amount!==void 0&&(n=A.amount,e=A.dest);let o=ao(t.generatorType,t.generatorValue);if(o!==void 0)n=o.amt,e=o.dest,s=o.source;else if(e===void 0){U(`Invalid generator type: ${t.generatorType}`);return}return new Te(s,0,e,n,0)}function Io(t){if(t.transformType!==0){U("Other transform types are not supported.");return}let A=ro(t.sourceUsesCC,t.sourceIndex),e=t.sourceCurveType,s=t.sourcePolarity,n=t.sourceDirection;if(A===void 0){U(`Invalid source: ${t.sourceIndex}, CC: ${t.sourceUsesCC}`);return}let o=ro(t.secSrcUsesCC,t.secSrcIndex),g=t.secSrcCurveType,i=t.secSrcPolarity,E=t.secSrcDirection;if(o===void 0){U(`Invalid secondary source: ${t.secSrcIndex}, CC: ${t.secSrcUsesCC}`);return}let h=io(t.modulatorDestination,t.transformAmount),d=h,Q=t.transformAmount;h?.dest!==void 0&&(d=h.dest,Q=h.amount);let l=ao(t.modulatorDestination,t.transformAmount);if(l!==void 0)Q=l.amt,o=A,g=e,i=s,E=n,e=uA.linear,s=l.isBipolar?1:0,n=0,A=l.source,d=l.dest;else if(d===void 0){U(`Invalid destination: ${t.modulatorDestination}`);return}let c=0;return c|=g<<4,c|=i<<8,c|=E<<9,c|=e<<10,c|=s<<14,c|=n<<15,new Te(A,o,d,Q,c)}var Br=new Set([r.sampleModes,r.initialAttenuation,r.keyRange,r.velRange,r.sampleID,r.fineTune,r.coarseTune,r.startAddrsOffset,r.startAddrsCoarseOffset,r.endAddrOffset,r.endAddrsCoarseOffset,r.startloopAddrsOffset,r.startloopAddrsCoarseOffset,r.endloopAddrsOffset,r.endloopAddrsCoarseOffset,r.overridingRootKey,r.exclusiveClass]);function gt(t){for(let o=0;o<t.generators.length;o++){let g=t.generators[o],i;switch(g.generatorType){default:continue;case r.keyNumToVolEnvDecay:i=r.decayVolEnv;break;case r.keyNumToVolEnvHold:i=r.holdVolEnv;break;case r.keyNumToModEnvDecay:i=r.decayModEnv;break;case r.keyNumToModEnvHold:i=r.holdModEnv}let E=t.generators.find(f=>f.generatorType===i);if(E===void 0)continue;let h=g.generatorValue*-128,d=60/128*h,Q=E.generatorValue-d,l=t.generators.indexOf(g),c=t.generators.indexOf(E);t.generators[c]=new T(i,Q,!1),t.generators[l]=new T(g.generatorType,h,!1)}let A=t.generators.reduce((o,g)=>{if(Br.has(g.generatorType))return o;let i=go(g);return i!==void 0?(o.push(i),p("%cSucceeded converting to DLS Articulator!",a.recognized)):U("Failed converting to DLS Articulator!"),o},[]),e=t.modulators.reduce((o,g)=>{let i=Io(g);return i!==void 0?(o.push(i),p("%cSucceeded converting to DLS Articulator!",a.recognized)):U("Failed converting to DLS Articulator!"),o},[]);A.push(...e);let s=new b(8);V(s,8),V(s,A.length);let n=A.map(o=>o.writeArticulator());return tA("art2",cA([s,...n]))}function Co(t,A){let e=new b(14);N(e,Math.max(t.keyRange.min,0)),N(e,t.keyRange.max),N(e,Math.max(t.velRange.min,0)),N(e,t.velRange.max),N(e,0);let s=t.getGeneratorValue(r.exclusiveClass,0);N(e,s),N(e,0);let n=tA("rgnh",e),o=t.getGeneratorValue(r.overridingRootKey,t.sample.samplePitch);t.getGeneratorValue(r.scaleTuning,A.getGeneratorValue(r.scaleTuning,100))===0&&t.keyRange.max-t.keyRange.min===0&&(o=t.keyRange.min);let i=at(t.sample,o,t.getGeneratorValue(r.fineTune,0)+t.getGeneratorValue(r.coarseTune,0)*100+t.sample.samplePitchCorrection,t.getGeneratorValue(r.initialAttenuation,0),t.sample.sampleLoopStartIndex+t.getGeneratorValue(r.startloopAddrsOffset,0)+t.getGeneratorValue(r.startloopAddrsCoarseOffset,0)*32768,t.sample.sampleLoopEndIndex+t.getGeneratorValue(r.endloopAddrsOffset,0)+t.getGeneratorValue(r.endloopAddrsCoarseOffset,0)*32768,t.getGeneratorValue(r.sampleModes,0)),E=new b(12);N(E,0),N(E,0);let h=0;switch(t.sample.sampleType){default:case 1:case 4:h=0;break;case 2:h=1}V(E,h),V(E,this.samples.indexOf(t.sample));let d=tA("wlnk",E),Q=gt(t),l=tA("lar2",Q,!1,!0);return tA("rgn2",cA([n,i,d,l]),!1,!0)}function Eo(t){QA(`%cWriting %c${t.presetName}%c...`,a.info,a.recognized,a.info);let A=no(t),e=A.reduce((l,c)=>c.isGlobal?l:l+1,0),s=new b(12);V(s,e);let n=(t.bank&127)<<8;t.bank===128&&(n|=1<<31),V(s,n),V(s,t.program&127);let o=tA("insh",s),g=new b(0),i=A.find(l=>l.isGlobal===!0);if(i){let l=gt(i);g=tA("lar2",l,!1,!0)}let E=cA(A.reduce((l,c)=>(c.isGlobal||l.push(Co.apply(this,[c,i])),l),[])),h=tA("lrgn",E,!1,!0),d=tA("INAM",ge(t.presetName)),Q=tA("INFO",d,!1,!0);return K(),tA("ins ",cA([o,h,g,Q]),!1,!0)}function Bo(){let t=cA(this.presets.map(A=>Eo.apply(this,[A])));return tA("lins",t,!1,!0)}function ho(t){let A=new b(18);N(A,1),N(A,1),V(A,t.sampleRate),V(A,t.sampleRate*2),N(A,2),N(A,16);let e=tA("fmt ",A),s=at(t,t.samplePitch,t.samplePitchCorrection,0,t.sampleLoopStartIndex,t.sampleLoopEndIndex,1),n=t.getAudioData(),o;if(t.isCompressed){let E=new Int16Array(n.length);for(let h=0;h<n.length;h++)E[h]=n[h]*32768;o=tA("data",new b(E.buffer))}else o=tA("data",t.getRawData());let g=tA("INAM",ge(t.sampleName)),i=tA("INFO",g,!1,!0);return p(`%cSaved %c${t.sampleName}%c succesfully!`,a.recognized,a.value,a.recognized),tA("wave",cA([e,s,o,i]),!1,!0)}function co(){let t=0,A=[],e=this.samples.map(s=>{let n=ho(s);return A.push(t),t+=n.length,n});return{data:tA("wvpl",cA(e),!1,!0),indexes:A}}function lo(){QA("%cSaving DLS...",a.info);let t=new b(4);V(t,this.presets.length);let A=tA("colh",t);QA("%cWriting instruments...",a.info);let e=Bo.apply(this);p("%cSuccess!",a.recognized),K(),QA("%cWriting WAVE samples...",a.info);let s=co.apply(this),n=s.data,o=s.indexes;p("%cSucceeded!",a.recognized),K();let g=new b(8+4*o.length);V(g,8),V(g,o.length);for(let Q of o)V(g,Q);let i=tA("ptbl",g);this.soundFontInfo.ICMT=(this.soundFontInfo.ICMT||"Soundfont")+`
15
+ Converted from SF2 to DLS using SpessaSynth`,this.soundFontInfo.ISFT="SpessaSynth";let E=[];for(let[Q,l]of Object.entries(this.soundFontInfo))Q!=="ICMT"&&Q!=="INAM"&&Q!=="ICRD"&&Q!=="IENG"&&Q!=="ICOP"&&Q!=="ISFT"&&Q!=="ISBJ"||E.push(tA(Q,ge(l)));let h=tA("INFO",cA(E),!1,!0),d=new b(A.length+e.length+i.length+n.length+h.length+4);return yA(d,"DLS "),d.set(cA([A,e,i,n,h]),4),p("%cSaved succesfully!",a.recognized),K(),tA("RIFF",d)}var oe=class t{constructor(A=void 0){this.soundFontInfo={},this.presets=[],this.samples=[],this.instruments=[],this.defaultModulators=Xe.map(e=>X.copy(e)),A?.presets&&(this.presets.push(...A.presets),this.soundFontInfo=A.info)}static mergeSoundfonts(...A){let e=A.shift(),s=e.presets;for(;A.length;)A.shift().presets.forEach(o=>{s.find(g=>g.bank===o.bank&&g.program===o.program)===void 0&&s.push(o)});return new t({presets:s,info:e.soundFontInfo})}removeUnusedElements(){this.instruments.forEach(A=>{A.useCount<1&&A.instrumentZones.forEach(e=>{e.isGlobal||e.sample.useCount--})}),this.instruments=this.instruments.filter(A=>A.useCount>0),this.samples=this.samples.filter(A=>A.useCount>0)}deleteInstrument(A){if(A.useCount>0)throw new Error(`Cannot delete an instrument that has ${A.useCount} usages.`);this.instruments.splice(this.instruments.indexOf(A),1),A.deleteInstrument(),this.removeUnusedElements()}deletePreset(A){A.deletePreset(),this.presets.splice(this.presets.indexOf(A),1),this.removeUnusedElements()}deleteSample(A){if(A.useCount>0)throw new Error(`Cannot delete sample that has ${A.useCount} usages.`);this.samples.splice(this.samples.indexOf(A),1),this.removeUnusedElements()}setSampleIDOffset(A){this.presets.forEach(e=>e.sampleIDOffset=A)}getPresetNoFallback(A,e,s=!1){let n=this.presets.find(o=>o.bank===A&&o.program===e);if(n)return n;if(s!==!1)return A===128?this.presets.find(o=>o.bank===128):this.presets.find(o=>o.program===e)}getPreset(A,e){let s=this.presets.find(n=>n.bank===A&&n.program===e);return s||(A===128?(s=this.presets.find(n=>n.bank===128&&n.program===e),s||(s=this.presets.find(n=>n.bank===128))):s=this.presets.find(n=>n.program===e&&n.bank!==128),s&&U(`%cPreset ${A}.${e} not found. Replaced with %c${s.presetName} (${s.bank}.${s.program})`,a.warn,a.recognized)),s||(U(`Preset ${e} not found. Defaulting to`,this.presets[0].presetName),s=this.presets[0]),s}getPresetByName(A){let e=this.presets.find(s=>s.presetName===A);return e||(U("Preset not found. Defaulting to:",this.presets[0].presetName),e=this.presets[0]),e}parsingError(A){throw new Error(`SF parsing error: ${A} The file may be corrupted.`)}destroySoundfont(){delete this.presets,delete this.instruments,delete this.samples}};oe.prototype.write=so;oe.prototype.writeDLS=lo;function Qo(t){QA("%cLoading instruments...",a.info);for(let A=0;A<this.instrumentAmount;A++)this.readDLSInstrument(z(t.chunkData));K()}var Se=class{constructor(A){this.presetName="",this.program=0,this.bank=0,this.presetZones=[],this.sampleIDOffset=0,this.foundSamplesAndGenerators=[];for(let e=0;e<128;e++)this.foundSamplesAndGenerators[e]=[];this.library=0,this.genre=0,this.morphology=0,this.defaultModulators=A}deletePreset(){this.presetZones.forEach(A=>A.deleteZone()),this.presetZones.length=0}deleteZone(A){this.presetZones[A].deleteZone(),this.presetZones.splice(A,1)}preload(A,e){for(let s=A;s<e+1;s++)for(let n=0;n<128;n++)this.getSamplesAndGenerators(s,n).forEach(o=>{o.sample.isSampleLoaded||o.sample.getAudioData()})}preloadSpecific(A,e){this.getSamplesAndGenerators(A,e).forEach(s=>{s.sample.isSampleLoaded||s.sample.getAudioData()})}getSamplesAndGenerators(A,e){let s=this.foundSamplesAndGenerators[A][e];if(s)return s;if(this.presetZones.length<1)return[];function n(c,f){return f>=c.min&&f<=c.max}function o(c,f){c.push(...f.filter(y=>!c.find(S=>S.generatorType===y.generatorType)))}function g(c,f){c.push(...f.filter(y=>!c.find(S=>X.isIdentical(y,S))))}let i=[],E=this.presetZones[0].isGlobal?[...this.presetZones[0].generators]:[],h=this.presetZones[0].isGlobal?[...this.presetZones[0].modulators]:[],d=this.presetZones[0].isGlobal?this.presetZones[0].keyRange:{min:0,max:127},Q=this.presetZones[0].isGlobal?this.presetZones[0].velRange:{min:0,max:127};return this.presetZones.filter(c=>n(c.hasKeyRange?c.keyRange:d,A)&&n(c.hasVelRange?c.velRange:Q,e)&&!c.isGlobal).forEach(c=>{if(c.instrument.instrumentZones.length<1)return;let f=c.generators,y=c.modulators,S=c.instrument.instrumentZones[0],w=S.isGlobal?[...S.generators]:[],H=S.isGlobal?[...S.modulators]:[],R=S.isGlobal?S.keyRange:{min:0,max:127},x=S.isGlobal?S.velRange:{min:0,max:127};c.instrument.instrumentZones.filter(I=>n(I.hasKeyRange?I.keyRange:R,A)&&n(I.hasVelRange?I.velRange:x,e)&&!I.isGlobal).forEach(I=>{let rA=[...I.generators],O=[...I.modulators];o(f,E),o(rA,w),g(y,h),g(O,H),g(O,this.defaultModulators);let AA=[...O];for(let $=0;$<y.length;$++){let IA=y[$],nA=AA.findIndex(iA=>X.isIdentical(IA,iA));nA!==-1?AA[nA]=AA[nA].sumTransform(IA):AA.push(IA)}i.push({instrumentGenerators:rA,presetGenerators:f,modulators:AA,sample:I.sample,sampleID:I.generators.find($=>$.generatorType===r.sampleID).generatorValue})})}),this.foundSamplesAndGenerators[A][e]=i,i}};var De=class{constructor(){this.instrumentName="",this.instrumentZones=[],this._useCount=0}get useCount(){return this._useCount}addUseCount(){this._useCount++,this.instrumentZones.forEach(A=>A.useCount++)}removeUseCount(){this._useCount--;for(let A=0;A<this.instrumentZones.length;A++)this.safeDeleteZone(A)&&A--}deleteInstrument(){this.instrumentZones.forEach(A=>A.deleteZone()),this.instrumentZones.length=0}safeDeleteZone(A){return this.instrumentZones[A].useCount--,this.instrumentZones[A].useCount<1?(this.deleteZone(A),!0):!1}deleteZone(A){this.instrumentZones[A].deleteZone(),this.instrumentZones.splice(A,1)}};var It=class extends Se{constructor(A,e){super(Xe),this.program=e&127,this.bank=A>>8&127,A>>31&&(this.bank=128),this.DLSInstrument=new De,this.DLSInstrument.addUseCount();let n=new ye;n.instrument=this.DLSInstrument,this.presetZones=[n]}};function uo(t){this.verifyHeader(t,"LIST"),this.verifyText(_(t.chunkData,4),"ins ");let A=[];for(;t.chunkData.length>t.chunkData.currentIndex;)A.push(z(t.chunkData));let e=A.find(c=>c.header==="insh");if(!e)throw K(),new Error("No instrument header!");let s=F(e.chunkData,4),n=F(e.chunkData,4),o=F(e.chunkData,4),g=new It(n,o),i="unnamedPreset",E=GA(A,"INFO");if(E){let c=z(E.chunkData);for(;c.header!=="INAM";)c=z(E.chunkData);i=_(c.chunkData,c.chunkData.length).trim()}g.presetName=i,g.DLSInstrument.instrumentName=i,ae(`%cParsing %c"${i}"%c...`,a.info,a.recognized,a.info);let h=GA(A,"lrgn");if(!h)throw K(),new Error("No region list!");let d=new OA;d.isGlobal=!0;let Q=GA(A,"lart"),l=GA(A,"lar2");(l!==void 0||Q!==void 0)&&this.readLart(Q,l,d),d.generators=d.generators.filter(c=>c.generatorValue!==J[c.generatorType].def),d.modulators.find(c=>c.modulatorDestination===r.reverbEffectsSend)===void 0&&d.modulators.push(new X({srcEnum:219,dest:r.reverbEffectsSend,amt:1e3,secSrcEnum:0,transform:0})),d.modulators.find(c=>c.modulatorDestination===r.chorusEffectsSend)===void 0&&d.modulators.push(new X({srcEnum:221,dest:r.chorusEffectsSend,amt:1e3,secSrcEnum:0,transform:0})),g.DLSInstrument.instrumentZones.push(d);for(let c=0;c<s;c++){let f=z(h.chunkData);this.verifyHeader(f,"LIST");let y=_(f.chunkData,4);y!=="rgn "&&y!=="rgn2"&&(K(),this.parsingError(`Invalid DLS region! Expected "rgn " or "rgn2" got "${y}"`));let S=this.readRegion(f);S&&g.DLSInstrument.instrumentZones.push(S)}this.presets.push(g),this.instruments.push(g.DLSInstrument),K()}function fo(t){let A,e=!1;switch(t){default:case v.modLfo:case v.vibratoLfo:case v.coarseTune:case v.fineTune:case v.modEnv:return;case v.keyNum:A=P.noteOnKeyNum;break;case v.none:A=P.noController;break;case v.modulationWheel:A=k.modulationWheel,e=!0;break;case v.pan:A=k.pan,e=!0;break;case v.reverb:A=k.reverbDepth,e=!0;break;case v.chorus:A=k.chorusDepth,e=!0;break;case v.expression:A=k.expressionController,e=!0;break;case v.volume:A=k.mainVolume,e=!0;break;case v.velocity:A=P.noteOnVelocity;break;case v.polyPressure:A=P.polyPressure;break;case v.channelPressure:A=P.channelPressure;break;case v.pitchWheel:A=P.pitchWheel;break;case v.pitchWheelRange:A=P.pitchWheelRange;break}if(A===void 0)throw new Error(`Unknown DLS Source: ${t}`);return{enum:A,isCC:e}}function hr(t,A){switch(t){default:case D.none:return;case D.pan:return r.pan;case D.gain:return{gen:r.initialAttenuation,newAmount:A*-1};case D.pitch:return r.fineTune;case D.keyNum:return r.overridingRootKey;case D.volEnvDelay:return r.delayVolEnv;case D.volEnvAttack:return r.attackVolEnv;case D.volEnvHold:return r.holdVolEnv;case D.volEnvDecay:return r.decayVolEnv;case D.volEnvSustain:return{gen:r.sustainVolEnv,newAmount:1e3-A};case D.volEnvRelease:return r.releaseVolEnv;case D.modEnvDelay:return r.delayModEnv;case D.modEnvAttack:return r.attackModEnv;case D.modEnvHold:return r.holdModEnv;case D.modEnvDecay:return r.decayModEnv;case D.modEnvSustain:return{gen:r.sustainModEnv,newAmount:(1e3-A)/10};case D.modEnvRelease:return r.releaseModEnv;case D.filterCutoff:return r.initialFilterFc;case D.filterQ:return r.initialFilterQ;case D.chorusSend:return r.chorusEffectsSend;case D.reverbSend:return r.reverbEffectsSend}}function cr(t,A){return t===v.vibratoLfo&&A===D.pitch?r.vibLfoToPitch:t===v.modLfo&&A===D.pitch?r.modLfoToPitch:t===v.modLfo&&A===D.filterCutoff?r.modLfoToFilterFc:t===v.modLfo&&A===D.gain?r.modLfoToVolume:t===v.modEnv&&A===D.filterCutoff?r.modEnvToFilterFc:t===v.modEnv&&A===D.pitch?r.modEnvToPitch:void 0}function mo(t,A,e,s,n){let o=cr(t,e),g,i,E=!1,h=!1,d=n;if(o===void 0){let w=hr(e,n);if(w===void 0){U(`Invalid destination: ${e}`);return}if(g=w,w.newAmount!==void 0&&(d=w.newAmount,g=w.gen),i=fo(t),i===void 0){U(`Invalid source: ${t}`);return}}else g=o,E=!0,i={enum:P.noController,isCC:!1},h=!0;let Q=fo(A);if(Q===void 0){U(`Invalid control: ${A}`);return}let l;if(h)l=0;else{let w=s&15,H=s>>10&15;H===uA.linear&&w!==uA.linear&&(H=w);let R=s>>14&1,x=s>>15&1;g===r.initialAttenuation&&n<0&&(x=1),l=qA(H,R,x,i.isCC,i.enum)}let c=s>>4&15,f=s>>8&1,y=s>>9&1,S=qA(c,f,y,Q.isCC,Q.enum);if(E){let w=S;S=l,l=w}return new X({srcEnum:l,secSrcEnum:S,dest:g,transform:0,amt:d})}function Vt(t,A){let e=t.chunkData,s=[],n=[];F(e,4);let o=F(e,4);for(let g=0;g<o;g++){let i=F(e,2),E=F(e,2),h=F(e,2),d=F(e,2),l=(F(e,4)|0)>>16;if(i===0&&E===0&&d===0){let c;switch(h){case D.pan:c=new T(r.pan,l);break;case D.gain:c=new T(r.initialAttenuation,-l*10/.4);break;case D.filterCutoff:c=new T(r.initialFilterFc,l);break;case D.filterQ:c=new T(r.initialFilterQ,l);break;case D.modLfoFreq:c=new T(r.freqModLFO,l);break;case D.modLfoDelay:c=new T(r.delayModLFO,l);break;case D.vibLfoFreq:c=new T(r.freqVibLFO,l);break;case D.vibLfoDelay:c=new T(r.delayVibLFO,l);break;case D.volEnvDelay:c=new T(r.delayVolEnv,l);break;case D.volEnvAttack:c=new T(r.attackVolEnv,l);break;case D.volEnvHold:c=new T(r.holdVolEnv,l,!1);break;case D.volEnvDecay:c=new T(r.decayVolEnv,l,!1);break;case D.volEnvRelease:c=new T(r.releaseVolEnv,l);break;case D.volEnvSustain:let f=1e3-l;c=new T(r.sustainVolEnv,f);break;case D.modEnvDelay:c=new T(r.delayModEnv,l);break;case D.modEnvAttack:c=new T(r.attackModEnv,l);break;case D.modEnvHold:c=new T(r.holdModEnv,l,!1);break;case D.modEnvDecay:c=new T(r.decayModEnv,l,!1);break;case D.modEnvRelease:c=new T(r.releaseModEnv,l);break;case D.modEnvSustain:let y=1e3-l;c=new T(r.sustainModEnv,y);break;case D.reverbSend:c=new T(r.reverbEffectsSend,l);break;case D.chorusSend:c=new T(r.chorusEffectsSend,l);break;case D.pitch:let S=Math.floor(l/100),w=Math.floor(l-S*100);c=new T(r.fineTune,w),s.push(new T(r.coarseTune,S));break}c&&s.push(c)}else{let c=!0;if(E===v.none)if(i===v.modLfo&&h===D.pitch)s.push(new T(r.modLfoToPitch,l));else if(i===v.modLfo&&h===D.gain)s.push(new T(r.modLfoToVolume,l));else if(i===v.modLfo&&h===D.filterCutoff)s.push(new T(r.modLfoToFilterFc,l));else if(i===v.vibratoLfo&&h===D.pitch)s.push(new T(r.vibLfoToPitch,l));else if(i===v.modEnv&&h===D.pitch)s.push(new T(r.modEnvToPitch,l));else if(i===v.modEnv&&h===D.filterCutoff)s.push(new T(r.modEnvToFilterFc,l));else if(i===v.keyNum&&h===D.pitch)s.push(new T(r.scaleTuning,l/128));else if(i===v.keyNum&&h===D.volEnvHold){s.push(new T(r.keyNumToVolEnvHold,l/-128));let f=Math.round(60/128*l);s.forEach(y=>{y.generatorType===r.holdVolEnv&&(y.generatorValue+=f)})}else if(i===v.keyNum&&h===D.volEnvDecay){s.push(new T(r.keyNumToVolEnvDecay,l/-128));let f=Math.round(60/128*l);s.forEach(y=>{y.generatorType===r.decayVolEnv&&(y.generatorValue+=f)})}else if(i===v.keyNum&&h===D.modEnvHold){s.push(new T(r.keyNumToModEnvHold,l/-128));let f=Math.round(60/128*l);s.forEach(y=>{y.generatorType===r.holdModEnv&&(y.generatorValue+=f)})}else if(i===v.keyNum&&h===D.modEnvDecay){s.push(new T(r.keyNumToModEnvDecay,l/-128));let f=Math.round(60/128*l);s.forEach(y=>{y.generatorType===r.decayModEnv&&(y.generatorValue+=f)})}else c=!1;else c=!1;if(c===!1){let f=mo(i,E,h,d,l);f?(n.push(f),p("%cSucceeded converting to SF2 Modulator!",a.recognized)):U("Failed converting to SF2 Modulator!")}}}return A&&n.push(new X({srcEnum:129,dest:r.vibLfoToPitch,amt:0,secSrcEnum:0,transform:0}),new X({srcEnum:13,dest:r.vibLfoToPitch,amt:0,secSrcEnum:0,transform:0})),{modulators:n,generators:s}}function po(t,A,e){if(t)for(;t.chunkData.currentIndex<t.chunkData.length;){let s=z(t.chunkData);this.verifyHeader(s,"art1");let n=Vt(s,!0);e.generators.push(...n.generators),e.modulators.push(...n.modulators)}if(A)for(;A.chunkData.currentIndex<A.chunkData.length;){let s=z(A.chunkData);this.verifyHeader(s,"art2");let n=Vt(s,!1);e.generators.push(...n.generators),e.modulators.push(...n.modulators)}}var Ct=class extends OA{constructor(A,e){super(),this.keyRange=A,this.velRange=e,this.isGlobal=!0}setWavesample(A,e,s,n,o,g,i){e!==0&&this.generators.push(new T(r.sampleModes,e)),this.generators.push(new T(r.initialAttenuation,A)),this.isGlobal=!1,i-=o.samplePitchCorrection;let E=Math.trunc(i/100);E!==0&&this.generators.push(new T(r.coarseTune,E));let h=i-E*100;if(h!==0&&this.generators.push(new T(r.fineTune,h)),e!==0){let d=s.start-o.sampleLoopStartIndex,Q=s.end-o.sampleLoopEndIndex;if(d!==0){let l=d%32768;this.generators.push(new T(r.startloopAddrsOffset,l));let c=Math.trunc(d/32768);c!==0&&this.generators.push(new T(r.startloopAddrsCoarseOffset,c))}if(Q!==0){let l=Q%32768;this.generators.push(new T(r.endloopAddrsOffset,l));let c=Math.trunc(Q/32768);c!==0&&this.generators.push(new T(r.endloopAddrsCoarseOffset,c))}}n!==o.samplePitch&&this.generators.push(new T(r.overridingRootKey,n)),this.generators.push(new T(r.sampleID,g)),this.sample=o,o.useCount++}};function yo(t){let A=[];for(;t.chunkData.length>t.chunkData.currentIndex;)A.push(z(t.chunkData));let e=A.find(O=>O.header==="rgnh"),s=F(e.chunkData,2),n=F(e.chunkData,2),o=F(e.chunkData,2),g=F(e.chunkData,2),i=new Ct({min:s,max:n},{min:o,max:g});F(e.chunkData,2);let E=F(e.chunkData,2);E!==0&&i.generators.push(new T(r.exclusiveClass,E));let h=GA(A,"lart"),d=GA(A,"lar2");this.readLart(h,d,i),i.isGlobal=!1;let Q=A.find(O=>O.header==="wsmp");F(Q.chunkData,4);let l=F(Q.chunkData,2),c=ne(Q.chunkData[Q.chunkData.currentIndex++],Q.chunkData[Q.chunkData.currentIndex++]),y=(F(Q.chunkData,4)|0)/-655360;F(Q.chunkData,4);let S=F(Q.chunkData,4),w,H={start:0,end:0};if(S===0)w=0;else{F(Q.chunkData,4),F(Q.chunkData,4)===0?w=1:w=3,H.start=F(Q.chunkData,4);let AA=F(Q.chunkData,4);H.end=H.start+AA}let R=A.find(O=>O.header==="wlnk");if(R===void 0)return;F(R.chunkData,2),F(R.chunkData,2),F(R.chunkData,4);let x=F(R.chunkData,4),G=this.samples[x];if(G===void 0)throw new Error("Invalid sample ID!");let rA=(y||G.sampleDbAttenuation)*10/.4;return i.setWavesample(rA,w,H,l,G,x,c),i}var ke=class{constructor(A,e,s,n,o,g,i,E){this.sampleName=A,this.sampleRate=e,this.samplePitch=s,this.samplePitchCorrection=n,this.sampleLink=o,this.sampleType=g,this.sampleLoopStartIndex=i,this.sampleLoopEndIndex=E,this.isCompressed=(g&16)>0,this.compressedData=void 0,this.useCount=0}getRawData(){let A=new Error("Not implemented");throw A.name="NotImplementedError",A}compressSample(A,e){if(!this.isCompressed)try{this.compressedData=e([this.getAudioData()],1,this.sampleRate,A),this.sampleType|=16,this.isCompressed=!0}catch{U(`Failed to compress ${this.sampleName}. Leaving as uncompressed!`),this.isCompressed=!1,this.compressedData=void 0,this.sampleType&=-17}}getAudioData(){let A=new Error("Not implemented");throw A.name="NotImplementedError",A}};var Et=class extends ke{sampleDbAttenuation;sampleData;constructor(A,e,s,n,o,g,i,E){super(A,e,s,n,0,1,o,g),this.sampleData=i,this.sampleDbAttenuation=E}getAudioData(){return this.sampleData}getRawData(){if(this.isCompressed){if(!this.compressedData)throw new Error("Compressed but no data?? This shouldn't happen!!");return this.compressedData}let A=new Uint8Array(this.sampleData.length*2);for(let e=0;e<this.sampleData.length;e++){let s=Math.floor(this.sampleData[e]*32768);A[e*2]=s&255,A[e*2+1]=s>>8&255}return A}};var So={PCM:1,ALAW:6};function lr(t,A){let e=Math.pow(2,A*8-1),s=Math.pow(2,A*8),n,o=!1;A===1?(n=255,o=!0):n=e;let g=t.size/A,i=new Float32Array(g);for(let E=0;E<i.length;E++){let h=F(t.chunkData,A);o?i[E]=h/n-.5:(h>=e&&(h-=s),i[E]=h/n)}return i}function Qr(t,A){let e=t.size/A,s=new Float32Array(e);for(let n=0;n<s.length;n++){let o=F(t.chunkData,A),g=o^85;g&=127;let i=g>>4,E=g&15;i>0&&(E+=16),E=(E<<4)+8,i>1&&(E=E<<i-1);let h=o>127?E:-E;s[n]=h/32678}return s}function Do(t){QA("%cLoading Wave samples...",a.recognized);let A=0;for(;t.chunkData.currentIndex<t.chunkData.length;){let e=z(t.chunkData);this.verifyHeader(e,"LIST"),this.verifyText(_(e.chunkData,4),"wave");let s=[];for(;e.chunkData.currentIndex<e.chunkData.length;)s.push(z(e.chunkData));let n=s.find(G=>G.header==="fmt ");if(!n)throw new Error("No fmt chunk in the wave file!");let o=F(n.chunkData,2),g=F(n.chunkData,2);if(g!==1)throw new Error(`Only mono samples are supported. Fmt reports ${g} channels`);let i=F(n.chunkData,4);F(n.chunkData,4),F(n.chunkData,2);let h=F(n.chunkData,2)/8,d=!1,Q=s.find(G=>G.header==="data");Q||this.parsingError("No data chunk in the WAVE chunk!");let l;switch(o){default:d=!0,l=new Float32Array(Q.size/h);break;case So.PCM:l=lr(Q,h);break;case So.ALAW:l=Qr(Q,h);break}let c=GA(s,"INFO"),f=`Unnamed ${A}`;if(c){let G=z(c.chunkData);for(;G.header!=="INAM"&&c.chunkData.currentIndex<c.chunkData.length;)G=z(c.chunkData);G.header==="INAM"&&(f=_(G.chunkData,G.size).trim())}let y=60,S=0,w=0,H=l.length-1,R=0,x=s.find(G=>G.header==="wsmp");if(x){F(x.chunkData,4),y=F(x.chunkData,2),S=ne(x.chunkData[x.chunkData.currentIndex++],x.chunkData[x.chunkData.currentIndex++]);let G=Math.trunc(S/100);if(y+=G,S-=G*100,R=(F(x.chunkData,4)|0)/-655360,F(x.chunkData,4),F(x.chunkData,4)===1){F(x.chunkData,8),w=F(x.chunkData,4);let O=F(x.chunkData,4);H=w+O}}else U("No wsmp chunk in wave... using sane defaults.");d&&console.error(`Failed to load '${f}': Unsupported format: (${o})`),this.samples.push(new Et(f,i,y,S,w,H,l,R)),A++,p(`%cLoaded sample %c${f}`,a.info,a.recognized)}K()}var Ae=class extends oe{constructor(A){super(),this.dataArray=new b(A),ae("%cParsing DLS...",a.info),this.dataArray||(K(),this.parsingError("No data provided!"));let e=z(this.dataArray,!1);this.verifyHeader(e,"riff"),this.verifyText(_(this.dataArray,4).toLowerCase(),"dls ");let s=[];for(;this.dataArray.currentIndex<this.dataArray.length;)s.push(z(this.dataArray));this.soundFontInfo.ifil="2.1",this.soundFontInfo.isng="EMU8000",this.soundFontInfo.INAM="Unnamed DLS",this.soundFontInfo.IENG="Unknown",this.soundFontInfo.IPRD="SpessaSynth DLS",this.soundFontInfo.ICRD=new Date().toDateString();let n=GA(s,"INFO");if(n)for(;n.chunkData.currentIndex<n.chunkData.length;){let E=z(n.chunkData);this.soundFontInfo[E.header]=_(E.chunkData,E.size)}this.soundFontInfo.ICMT=this.soundFontInfo.ICMT||"(No description)",this.soundFontInfo.ISBJ&&(this.soundFontInfo.ICMT+=`
16
+ `+this.soundFontInfo.ISBJ,delete this.soundFontInfo.ISBJ),this.soundFontInfo.ICMT+=`
17
+ Converted from DLS to SF2 with SpessaSynth`;for(let[E,h]of Object.entries(this.soundFontInfo))p(`%c"${E}": %c"${h}"`,a.info,a.recognized);let o=s.find(E=>E.header==="colh");o||(K(),this.parsingError("No colh chunk!")),this.instrumentAmount=F(o.chunkData,4),p(`%cInstruments amount: %c${this.instrumentAmount}`,a.info,a.recognized);let g=GA(s,"wvpl");g||(K(),this.parsingError("No wvpl chunk!")),this.readDLSSamples(g);let i=GA(s,"lins");i||(K(),this.parsingError("No lins chunk!")),this.readDLSInstrumentList(i),this.presets.sort((E,h)=>E.program-h.program+(E.bank-h.bank)),p(`%cParsing finished! %c"${this.soundFontInfo.INAM||"UNNAMED"}"%c has %c${this.presets.length} %cpresets,
18
+ %c${this.instruments.length}%c instruments and %c${this.samples.length}%c samples.`,a.info,a.recognized,a.info,a.recognized,a.info,a.recognized,a.info,a.recognized,a.info),K()}verifyHeader(A,e){A.header.toLowerCase()!==e.toLowerCase()&&(K(),this.parsingError(`Invalid DLS chunk header! Expected "${e.toLowerCase()}" got "${A.header.toLowerCase()}"`))}verifyText(A,e){A.toLowerCase()!==e.toLowerCase()&&(K(),this.parsingError(`FourCC error: Expected "${e.toLowerCase()}" got "${A.toLowerCase()}"`))}parsingError(A){throw new Error(`DLS parse error: ${A} The file may be corrupted.`)}destroySoundfont(){super.destroySoundfont(),delete this.dataArray}};Ae.prototype.readDLSInstrumentList=Qo;Ae.prototype.readDLSInstrument=uo;Ae.prototype.readRegion=yo;Ae.prototype.readLart=po;Ae.prototype.readDLSSamples=Do;var Ot=class extends ke{constructor(A,e,s,n,o,g,i,E,h,d,Q,l,c){super(A,g,i,E,h,d,n-e/2,o-e/2),this.sampleName=A,this.sampleStartIndex=e,this.sampleEndIndex=s,this.isSampleLoaded=!1,this.sampleID=l,this.sampleLength=this.sampleEndIndex-this.sampleStartIndex,this.sampleDataArray=Q,this.sampleData=new Float32Array(0),this.isCompressed&&(this.sampleLoopStartIndex+=this.sampleStartIndex/2,this.sampleLoopEndIndex+=this.sampleStartIndex/2,this.sampleLength=99999999),this.isDataRaw=c}getRawData(){let A=this.sampleDataArray;if(this.isCompressed){if(this.compressedData)return this.compressedData;let e=A.currentIndex;return A.slice(this.sampleStartIndex/2+e,this.sampleEndIndex/2+e)}else{if(!this.isDataRaw)throw new Error("Writing SF2Pack samples is not supported.");let e=A.currentIndex;return A.slice(e+this.sampleStartIndex,e+this.sampleEndIndex)}}decodeVorbis(){if(this.sampleLength<1)return;let A=this.sampleDataArray,e=A.currentIndex,s=A.slice(this.sampleStartIndex/2+e,this.sampleEndIndex/2+e);this.sampleData=new Float32Array(0);try{let n=_A.decode(s.buffer);this.sampleData=n.data[0]}catch(n){throw new Error(`Ogg Vorbis decode error: ${n}`)}}getAudioData(){return this.isSampleLoaded?this.sampleData:this.sampleLength<1?new Float32Array(1):this.isCompressed?(this.decodeVorbis(),this.isSampleLoaded=!0,this.sampleData):this.isDataRaw?this.loadUncompressedData():this.getUncompressedReadyData()}loadUncompressedData(){if(this.isCompressed)return U("Trying to load a compressed sample via loadUncompressedData()... aborting!"),new Float32Array(0);let A=new Float32Array(this.sampleLength/2),e=this.sampleDataArray.currentIndex,s=new Int16Array(this.sampleDataArray.slice(e+this.sampleStartIndex,e+this.sampleEndIndex).buffer);for(let n=0;n<s.length;n++)A[n]=s[n]/32768;return this.sampleData=A,this.isSampleLoaded=!0,A}getUncompressedReadyData(){let A=this.sampleDataArray.slice(this.sampleStartIndex/2,this.sampleEndIndex/2);return this.sampleData=A,this.isSampleLoaded=!0,A}};function ko(t,A,e=!0){let s=[],n=0;for(;t.chunkData.length>t.chunkData.currentIndex;){let o=ur(n,t.chunkData,A,e);s.push(o),n++}return s.length>1&&s.pop(),s}function ur(t,A,e,s){let n=_(A,20),o=F(A,4)*2,g=F(A,4)*2,i=F(A,4),E=F(A,4),h=F(A,4),d=A[A.currentIndex++];d===255&&(d=60);let Q=Ts(A[A.currentIndex++]),l=F(A,2),c=F(A,2);return new Ot(n,o,g,i,E,h,d,Q,l,c,e,t,s)}var Zt=class extends T{constructor(A){super();let e=A.currentIndex;this.generatorType=A[e+1]<<8|A[e],this.generatorValue=ne(A[e+2],A[e+3]),A.currentIndex+=4}};function Wt(t){let A=[];for(;t.chunkData.length>t.chunkData.currentIndex;)A.push(new Zt(t.chunkData));return A.length>1&&A.pop(),A}var Xt=class extends De{constructor(A){super(),this.instrumentName=_(A.chunkData,20).trim(),this.instrumentZoneIndex=F(A.chunkData,2),this.instrumentZonesAmount=0}getInstrumentZones(A,e){this.instrumentZonesAmount=A;for(let s=this.instrumentZoneIndex;s<this.instrumentZonesAmount+this.instrumentZoneIndex;s++)this.instrumentZones.push(e[s])}};function wo(t,A){let e=[];for(;t.chunkData.length>t.chunkData.currentIndex;){let s=new Xt(t);if(e.length>0){let n=s.instrumentZoneIndex-e[e.length-1].instrumentZoneIndex;e[e.length-1].getInstrumentZones(n,A)}e.push(s)}return e.length>1&&e.pop(),e}var _t=class extends OA{constructor(A){super(),this.generatorZoneStartIndex=F(A,2),this.modulatorZoneStartIndex=F(A,2),this.modulatorZoneSize=0,this.generatorZoneSize=0,this.isGlobal=!0}setZoneSize(A,e){this.modulatorZoneSize=A,this.generatorZoneSize=e}getGenerators(A){for(let e=this.generatorZoneStartIndex;e<this.generatorZoneStartIndex+this.generatorZoneSize;e++)this.generators.push(A[e])}getModulators(A){for(let e=this.modulatorZoneStartIndex;e<this.modulatorZoneStartIndex+this.modulatorZoneSize;e++)this.modulators.push(A[e])}getSample(A){let e=this.generators.find(s=>s.generatorType===r.sampleID);e&&(this.sample=A[e.generatorValue],this.isGlobal=!1,this.sample.useCount++)}getKeyRange(){let A=this.generators.find(e=>e.generatorType===r.keyRange);A&&(this.keyRange.min=A.generatorValue&127,this.keyRange.max=A.generatorValue>>8&127)}getVelRange(){let A=this.generators.find(e=>e.generatorType===r.velRange);A&&(this.velRange.min=A.generatorValue&127,this.velRange.max=A.generatorValue>>8&127)}};function Fo(t,A,e,s){let n=[];for(;t.chunkData.length>t.chunkData.currentIndex;){let o=new _t(t.chunkData);if(n.length>0){let g=o.modulatorZoneStartIndex-n[n.length-1].modulatorZoneStartIndex,i=o.generatorZoneStartIndex-n[n.length-1].generatorZoneStartIndex;n[n.length-1].setZoneSize(g,i),n[n.length-1].getGenerators(A),n[n.length-1].getModulators(e),n[n.length-1].getSample(s),n[n.length-1].getKeyRange(),n[n.length-1].getVelRange()}n.push(o)}return n.length>1&&n.pop(),n}var zt=class extends ye{constructor(A){super(),this.generatorZoneStartIndex=F(A,2),this.modulatorZoneStartIndex=F(A,2),this.modulatorZoneSize=0,this.generatorZoneSize=0,this.isGlobal=!0}setZoneSize(A,e){this.modulatorZoneSize=A,this.generatorZoneSize=e}getGenerators(A){for(let e=this.generatorZoneStartIndex;e<this.generatorZoneStartIndex+this.generatorZoneSize;e++)this.generators.push(A[e])}getModulators(A){for(let e=this.modulatorZoneStartIndex;e<this.modulatorZoneStartIndex+this.modulatorZoneSize;e++)this.modulators.push(A[e])}getInstrument(A){let e=this.generators.find(s=>s.generatorType===r.instrument);e&&(this.instrument=A[e.generatorValue],this.instrument.addUseCount(),this.isGlobal=!1)}getKeyRange(){let A=this.generators.find(e=>e.generatorType===r.keyRange);A&&(this.keyRange.min=A.generatorValue&127,this.keyRange.max=A.generatorValue>>8&127)}getVelRange(){let A=this.generators.find(e=>e.generatorType===r.velRange);A&&(this.velRange.min=A.generatorValue&127,this.velRange.max=A.generatorValue>>8&127)}};function Ro(t,A,e,s){let n=[];for(;t.chunkData.length>t.chunkData.currentIndex;){let o=new zt(t.chunkData);if(n.length>0){let g=o.modulatorZoneStartIndex-n[n.length-1].modulatorZoneStartIndex,i=o.generatorZoneStartIndex-n[n.length-1].generatorZoneStartIndex;n[n.length-1].setZoneSize(g,i),n[n.length-1].getGenerators(A),n[n.length-1].getModulators(e),n[n.length-1].getInstrument(s),n[n.length-1].getKeyRange(),n[n.length-1].getVelRange()}n.push(o)}return n.length>1&&n.pop(),n}var jt=class extends Se{constructor(A,e){super(e),this.presetName=_(A.chunkData,20).trim().replace(/\d{3}:\d{3}/,""),this.program=F(A.chunkData,2),this.bank=F(A.chunkData,2),this.presetZoneStartIndex=F(A.chunkData,2),this.library=F(A.chunkData,4),this.genre=F(A.chunkData,4),this.morphology=F(A.chunkData,4),this.presetZonesAmount=0}getPresetZones(A,e){this.presetZonesAmount=A;for(let s=this.presetZoneStartIndex;s<this.presetZonesAmount+this.presetZoneStartIndex;s++)this.presetZones.push(e[s])}};function Go(t,A,e){let s=[];for(;t.chunkData.length>t.chunkData.currentIndex;){let n=new jt(t,e);if(s.length>0){let o=n.presetZoneStartIndex-s[s.length-1].presetZoneStartIndex;s[s.length-1].getPresetZones(o,A)}s.push(n)}return s.length>1&&s.pop(),s}var $t=class extends X{constructor(A){super({srcEnum:F(A,2),dest:F(A,2),amt:ne(A[A.currentIndex++],A[A.currentIndex++]),secSrcEnum:F(A,2),transform:F(A,2)})}};function Bt(t){let A=[];for(;t.chunkData.length>t.chunkData.currentIndex;)A.push(new $t(t.chunkData));return A}var ht=class extends oe{constructor(A,e=!0){super(),e&&console.warn("Using the constructor directly is deprecated. Use loadSoundFont instead."),this.dataArray=new b(A),ae("%cParsing SoundFont...",a.info),this.dataArray||(K(),this.parsingError("No data provided!"));let s=z(this.dataArray,!1);this.verifyHeader(s,"riff");let n=_(this.dataArray,4).toLowerCase();if(n!=="sfbk"&&n!=="sfpk")throw K(),new SyntaxError(`Invalid soundFont! Expected "sfbk" or "sfpk" got "${n}"`);let o=n==="sfpk",g=z(this.dataArray);for(this.verifyHeader(g,"list"),_(g.chunkData,4);g.chunkData.length>g.chunkData.currentIndex;){let $=z(g.chunkData),IA;switch($.header.toLowerCase()){case"ifil":case"iver":IA=`${F($.chunkData,2)}.${F($.chunkData,2)}`,this.soundFontInfo[$.header]=IA;break;case"icmt":IA=_($.chunkData,$.chunkData.length,void 0,!1),this.soundFontInfo[$.header]=IA;break;case"dmod":let nA=Bt($);nA.pop(),IA=`Modulators: ${nA.length}`;let iA=this.defaultModulators;this.defaultModulators=nA,this.defaultModulators.push(...iA.filter(eA=>!this.defaultModulators.find(lA=>X.isIdentical(eA,lA)))),this.soundFontInfo[$.header]=$.chunkData;break;default:IA=_($.chunkData,$.chunkData.length),this.soundFontInfo[$.header]=IA}p(`%c"${$.header}": %c"${IA}"`,a.info,a.recognized)}let i=z(this.dataArray,!1);this.verifyHeader(i,"list"),this.verifyText(_(this.dataArray,4),"sdta"),p("%cVerifying smpl chunk...",a.warn);let E=z(this.dataArray,!1);this.verifyHeader(E,"smpl");let h;if(o){p("%cSF2Pack detected, attempting to decode the smpl chunk...",a.info);try{h=_A.decode(this.dataArray.buffer.slice(this.dataArray.currentIndex,this.dataArray.currentIndex+i.size-12)).data[0]}catch($){throw K(),new Error(`SF2Pack Ogg Vorbis decode error: ${$}`)}p(`%cDecoded the smpl chunk! Length: %c${h.length}`,a.info,a.value)}else h=this.dataArray,this.sampleDataStartIndex=this.dataArray.currentIndex;p(`%cSkipping sample chunk, length: %c${i.size-12}`,a.info,a.value),this.dataArray.currentIndex+=i.size-12,p("%cLoading preset data chunk...",a.warn);let d=z(this.dataArray);this.verifyHeader(d,"list"),_(d.chunkData,4);let Q=z(d.chunkData);this.verifyHeader(Q,"phdr");let l=z(d.chunkData);this.verifyHeader(l,"pbag");let c=z(d.chunkData);this.verifyHeader(c,"pmod");let f=z(d.chunkData);this.verifyHeader(f,"pgen");let y=z(d.chunkData);this.verifyHeader(y,"inst");let S=z(d.chunkData);this.verifyHeader(S,"ibag");let w=z(d.chunkData);this.verifyHeader(w,"imod");let H=z(d.chunkData);this.verifyHeader(H,"igen");let R=z(d.chunkData);this.verifyHeader(R,"shdr"),this.dataArray.currentIndex=this.sampleDataStartIndex,this.samples.push(...ko(R,h,!o));let x=Wt(H),G=Bt(w),I=Fo(S,x,G,this.samples);this.instruments=wo(y,I);let rA=Wt(f),O=Bt(c),AA=Ro(l,rA,O,this.instruments);this.presets.push(...Go(Q,AA,this.defaultModulators)),this.presets.sort(($,IA)=>$.program-IA.program+($.bank-IA.bank)),p(`%cParsing finished! %c"${this.soundFontInfo.INAM}"%c has %c${this.presets.length} %cpresets,
19
+ %c${this.instruments.length}%c instruments and %c${this.samples.length}%c samples.`,a.info,a.recognized,a.info,a.recognized,a.info,a.recognized,a.info,a.recognized,a.info),K(),o&&delete this.dataArray}verifyHeader(A,e){A.header.toLowerCase()!==e.toLowerCase()&&(K(),this.parsingError(`Invalid chunk header! Expected "${e.toLowerCase()}" got "${A.header.toLowerCase()}"`))}verifyText(A,e){A.toLowerCase()!==e.toLowerCase()&&(K(),this.parsingError(`Invalid FourCC: Expected "${e.toLowerCase()}" got "${A.toLowerCase()}"\``))}destroySoundfont(){super.destroySoundfont(),delete this.dataArray}};function ve(t){let A=t.slice(8,12),e=new b(A);return _(e,4,void 0,!1).toLowerCase()==="dls "?new Ae(t):new ht(t,!1)}function xo(t,A,e=!1){let s=this.workletProcessorChannels[t];if(s===void 0){U(`Trying to access channel ${t} which does not exist... ignoring!`);return}if(s.lockPreset)return;let n=XA(s),o,g;if(this.overrideSoundfont){let i=n===128?128:n-this.soundfontBankOffset,E=this.overrideSoundfont.getPresetNoFallback(i,A);E?(o=n,g=E,s.presetUsesOverride=!0):(g=this.soundfontManager.getPreset(n,A),o=g.bank,s.presetUsesOverride=!1)}else g=this.soundfontManager.getPreset(n,A),o=g.bank,s.presetUsesOverride=!1;this.setPreset(t,g),this.callEvent("programchange",{channel:t,program:g.program,bank:o,userCalled:e})}function Mo(t,A){if(this.overrideSoundfont){let e=t===128?128:t-this.soundfontBankOffset,s=this.overrideSoundfont.getPresetNoFallback(e,A);if(s)return s}return this.soundfontManager.getPreset(t,A)}function No(t,A){if(!this.workletProcessorChannels[t].lockPreset){delete this.workletProcessorChannels[t].preset,this.workletProcessorChannels[t].preset=A,this.workletProcessorChannels[t].cachedVoices=[];for(let e=0;e<128;e++)this.workletProcessorChannels[t].cachedVoices.push([])}}function bo(t,A){let e=this.workletProcessorChannels[t];e.lockPreset||e.drumChannel!==A&&(A?(e.channelTransposeKeyShift=0,e.drumChannel=!0,this.setPreset(t,this.getPreset(XA(e),e.preset.program))):(e.drumChannel=!1,this.setPreset(t,this.getPreset(XA(e),e.preset.program))),e.presetUsesOverride=!1,this.callEvent("drumchange",{channel:t,isDrumChannel:e.drumChannel}),this.sendChannelProperties())}function Lo(){let t=this.soundfontManager.getPresetList();this.overrideSoundfont!==void 0&&this.overrideSoundfont.presets.forEach(A=>{let e=A.bank===128?128:A.bank+this.soundfontBankOffset,s=t.find(n=>n.bank===e&&n.program===A.program);s!==void 0?s.presetName=A.presetName:t.push({presetName:A.presetName,bank:e,program:A.program})}),this.callEvent("presetlistchange",t)}function Uo(t=!0,A=!0){this.stopAllChannels(!0),A&&(delete this.overrideSoundfont,this.overrideSoundfont=void 0),this.defaultPreset=this.getPreset(0,0),this.drumPreset=this.getPreset(128,0);for(let e=0;e<this.workletProcessorChannels.length;e++){let s=this.workletProcessorChannels[e];s.cachedVoices=[];for(let n=0;n<128;n++)s.cachedVoices.push([]);(!A||A&&s.presetUsesOverride)&&(s.lockPreset=!1),this.programChange(e,s.preset.program)}t&&this.sendPresetList()}function To(t,A=!1){this.clearSoundFont(!1,A);try{A?(this.overrideSoundfont=ve(t),this.overrideSoundfont.setSampleIDOffset(this.soundfontManager.totalSoundfontOffset)):this.soundfontManager.reloadManager(t)}catch(e){this.post({messageType:DA.soundfontError,messageData:e});return}this.defaultPreset=this.getPreset(0,0),this.drumPreset=this.getPreset(128,0),this.workletProcessorChannels.forEach((e,s)=>{this.programChange(s,e.preset.program)}),this.post({messageType:DA.ready,messageData:void 0}),this.sendPresetList(),p("%cSpessaSynth is ready!",a.recognized)}function vo(t,A){this.soundfontBankOffset=A,this.reloadSoundFont(t,!0),this.overrideSoundfont.samples.forEach(e=>e.getAudioData()),this._snapshot!==void 0&&(this.applySynthesizerSnapshot(this._snapshot),this.resetAllControllers())}function Ho(){let A={channelSnapshots:this.workletProcessorChannels.map(e=>({program:e.preset.program,bank:XA(e),lockPreset:e.lockPreset,patchName:e.preset.presetName,midiControllers:e.midiControllers,lockedControllers:e.lockedControllers,customControllers:e.customControllers,channelVibrato:e.channelVibrato,lockVibrato:e.lockGSNRPNParams,channelTransposeKeyShift:e.channelTransposeKeyShift,channelOctaveTuning:e.channelOctaveTuning,keyCentTuning:e.keyCentTuning,velocityOverride:e.velocityOverride,isMuted:e.isMuted,drumChannel:e.drumChannel})),mainVolume:this.midiVolume,pan:this.pan,transposition:this.transposition,system:this.system,interpolation:this.interpolationType,keyMappings:this.keyModifierManager.getMappings()};this.post({messageType:DA.synthesizerSnapshot,messageData:A})}function Yo(t){for(this.system=t.system,this.setMasterGain(t.mainVolume),this.setMasterPan(t.pan),this.transposeAllChannels(t.transposition),this.interpolationType=t.interpolation,this.keyModifierManager.setMappings(t.keyMappings);this.workletProcessorChannels.length<t.channelSnapshots.length;)this.createWorkletChannel();t.channelSnapshots.forEach((A,e)=>{let s=this.workletProcessorChannels[e];this.muteChannel(e,A.isMuted),this.setDrums(e,A.drumChannel),s.midiControllers=A.midiControllers,s.lockedControllers=A.lockedControllers,s.customControllers=A.customControllers,s.channelVibrato=A.channelVibrato,s.lockGSNRPNParams=A.lockVibrato,s.channelTransposeKeyShift=A.channelTransposeKeyShift,s.channelOctaveTuning=A.channelOctaveTuning,s.velocityOverride=A.velocityOverride,s.lockPreset=!1,te(s,A.bank),this.programChange(e,A.program),s.lockPreset=A.lockPreset}),p("%cFinished restoring controllers!",a.info)}var ct=class{constructor(A,e){this.ready=e,this.totalSoundfontOffset=0,this.reloadManager(A)}_assingSampleOffsets(){let A=0;this.soundfontList.forEach(e=>{e.soundfont.setSampleIDOffset(A),A+=e.soundfont.samples.length}),this.totalSoundfontOffset=A}generatePresetList(){this._assingSampleOffsets();let A={};for(let e=this.soundfontList.length-1;e>=0;e--){let s=this.soundfontList[e],n=new Set;for(let o of s.soundfont.presets){let g=`${o.bank+s.bankOffset}-${o.program}`;n.has(g)||(n.add(g),A[g]=o.presetName)}}this.presetList=[];for(let[e,s]of Object.entries(A)){let n=e.split("-");this.presetList.push({presetName:s,program:parseInt(n[1]),bank:parseInt(n[0])})}}handleMessage(A,e){switch(A){case Qe.addNewSoundFont:this.addNewSoundFont(e[0],e[1],e[2]);break;case Qe.reloadSoundFont:this.reloadManager(e);break;case Qe.deleteSoundFont:this.deleteSoundFont(e);break;case Qe.rearrangeSoundFonts:this.rearrangeSoundFonts(e)}}getPresetList(){return this.presetList.slice()}reloadManager(A){let e=ve(A);this.soundfontList=[],this.soundfontList.push({id:"main",bankOffset:0,soundfont:e}),this.generatePresetList(),this.ready()}deleteSoundFont(A){if(this.soundfontList.length===0){U("1 soundfont left. Aborting!");return}let e=this.soundfontList.findIndex(s=>s.id===A);if(e===-1){U(`No soundfont with id of "${A}" found. Aborting!`);return}delete this.soundfontList[e].soundfont.presets,delete this.soundfontList[e].soundfont.instruments,delete this.soundfontList[e].soundfont.samples,this.soundfontList.splice(e,1),this.generatePresetList()}addNewSoundFont(A,e,s){if(this.soundfontList.find(n=>n.id===e)!==void 0)throw new Error("Cannot overwrite the existing soundfont. Use soundfontManager.delete(id) instead.");this.soundfontList.push({id:e,soundfont:ve(A),bankOffset:s}),this.generatePresetList(),this.ready()}rearrangeSoundFonts(A){this.soundfontList.sort((e,s)=>A.indexOf(e.id)-A.indexOf(s.id)),this.generatePresetList()}getPreset(A,e){if(this.soundfontList.length<1)throw new Error("No soundfonts! This should never happen.");for(let s of this.soundfontList){let n=s.soundfont.getPresetNoFallback(A-s.bankOffset,e);if(n!==void 0)return n}if(A!==128){for(let s of this.soundfontList){let n=s.soundfont.presets.find(o=>o.program===e);if(n)return n}return this.soundfontList[0].soundfont.presets[0]}else{for(let s of this.soundfontList){let n=s.soundfont.presets.find(o=>o.bank===128);if(n)return n}return this.soundfontList[0].soundfont.presets[0]}}destroyManager(){this.soundfontList.forEach(A=>{A.soundfont.destroySoundfont()}),delete this.soundfontList}};var lt=class{sampleData;playbackStep=0;cursor=0;rootKey=0;loopStart=0;loopEnd=0;end=0;loopingMode=0;isLooping=!1;constructor(A,e,s,n,o,g,i,E){this.sampleData=A,this.playbackStep=e,this.cursor=s,this.rootKey=n,this.loopStart=o,this.loopEnd=g,this.end=i,this.loopingMode=E,this.isLooping=this.loopingMode===1||this.loopingMode===3}},He=class t{sample;filter=new pe;generators;modulators=[];modulatedGenerators;finished=!1;isInRelease=!1;channelNumber=0;velocity=0;midiNote=0;pressure=0;targetKey=0;modulationEnvelope=new YA;volumeEnvelope;startTime=0;releaseStartTime=1/0;currentTuningCents=0;currentTuningCalculated=1;currentPan=.5;realKey;constructor(A,e,s,n,o,g,i,E,h,d){this.sample=e,this.generators=h,this.modulatedGenerators=new Int16Array(h),this.modulators=d,this.velocity=n,this.midiNote=s,this.channelNumber=o,this.startTime=g,this.targetKey=i,this.realKey=E,this.volumeEnvelope=new JA(A,h[r.sustainVolEnv])}static copy(A,e){let s=A.sample,n=new lt(s.sampleData,s.playbackStep,s.cursor,s.rootKey,s.loopStart,s.loopEnd,s.end,s.loopingMode);return new t(A.volumeEnvelope.sampleRate,n,A.midiNote,A.velocity,A.channelNumber,e,A.targetKey,A.realKey,A.generators,A.modulators.map(o=>X.copy(o)))}};function Jo(t,A,e,s,n,o,g=!1){let i,E=s.cachedVoices[A]?.[e],h=this.keyModifierManager.hasOverridePatch(t,A);if(E!==void 0&&!h)return E.map(l=>He.copy(l,n));let d=!0,Q=s.preset;if(h){d=!1;let l=this.keyModifierManager.getPatch(t,A);Q=this.soundfontManager.getPreset(l.bank,l.program)}return i=Q.getSamplesAndGenerators(A,e).reduce((l,c)=>{if(c.sample.sampleData===void 0)return U(`Discarding invalid sample: ${c.sample.sampleName}`),l;let f=new Int16Array(60);for(let G=0;G<60;G++)f[G]=Rs(G,c.presetGenerators,c.instrumentGenerators);f[r.initialAttenuation]=Math.floor(f[r.initialAttenuation]*.4);let y=c.sample.samplePitch;f[r.overridingRootKey]>-1&&(y=f[r.overridingRootKey]);let S=A;f[r.keyNum]>-1&&(S=f[r.keyNum]);let w=c.sample.sampleLoopStartIndex,H=c.sample.sampleLoopEndIndex,R=f[r.sampleModes],x=new lt(c.sample.getAudioData(),c.sample.sampleRate/sampleRate*Math.pow(2,c.sample.samplePitchCorrection/1200),0,y,w,H,Math.floor(c.sample.sampleData.length)-1,R);return f[r.velocity]>-1&&(e=f[r.velocity]),g&&Fs([{Sample:c.sample.sampleName,Generators:f,Modulators:c.modulators.map(G=>G.debugString()),Velocity:e,TargetKey:S,MidiNote:A,WorkletSample:x}]),l.push(new He(sampleRate,x,A,e,t,n,S,o,f,c.modulators.map(G=>X.copy(G)))),l},[]),d&&(s.cachedVoices[A][e]=i.map(l=>He.copy(l,n))),i}var dr=4600,fr=2e3,Po=Math.PI/2;function qo(t,A,e,s,n,o){if(isNaN(A[0]))return;let g=(Math.max(-500,Math.min(500,t.modulatedGenerators[r.pan]))+500)/1e3;t.currentPan+=(g-t.currentPan)*this.panSmoothingFactor;let i=this.currentGain,E=Math.cos(Po*t.currentPan)*i*this.panLeft,h=Math.sin(Po*t.currentPan)*i*this.panRight,d=this.reverbGain*t.modulatedGenerators[r.reverbEffectsSend]/dr*i,Q=this.chorusGain*t.modulatedGenerators[r.chorusEffectsSend]/fr;if(d>0&&!this.oneOutputMode){let l=n[0],c=n[1];for(let f=0;f<A.length;f++)l[f]+=d*A[f],c[f]+=d*A[f]}if(Q>0&&!this.oneOutputMode){let l=o[0],c=o[1],f=E*Q,y=h*Q;for(let S=0;S<A.length;S++)l[S]+=f*A[S],c[S]+=y*A[S]}if(E>0)for(let l=0;l<A.length;l++)e[l]+=E*A[l];if(h>0)for(let l=0;l<A.length;l++)s[l]+=h*A[l]}var Cn=.03,fn=.07,Kt=1,q=class extends AudioWorkletProcessor{constructor(A){super(),this.oneOutputMode=A.processorOptions?.startRenderingData?.oneOutput===!0,this._outputsAmount=this.oneOutputMode?1:A.processorOptions.midiChannels,this.enableEventSystem=A.processorOptions.enableEventSystem,this.alive=!0,this.deviceID=PA,this.interpolationType=me.fourthOrder,this.processTickCallback=void 0,this.sequencer=new BA(this),this.transposition=0,this.tunings=[];for(let e=0;e<127;e++)this.tunings.push([]);this.soundfontBankOffset=0,this.masterGain=Kt,this.midiVolume=1,this.reverbGain=1,this.chorusGain=1,this.voiceCap=Ms,this.pan=0,this.panLeft=.5,this.highPerformanceMode=!1,this.keyModifierManager=new je,this.overrideSoundfont=void 0,this.panRight=.5;try{this.soundfontManager=new ct(A.processorOptions.soundfont,this.postReady.bind(this))}catch(e){throw this.post({messageType:DA.soundfontError,messageData:e}),e}this.sendPresetList(),this.defaultPreset=this.getPreset(0,0),this.drumPreset=this.getPreset(128,0),this.workletProcessorChannels=[];for(let e=0;e<A.processorOptions.midiChannels;e++)this.createWorkletChannel(!1);this.workletProcessorChannels[RA].preset=this.drumPreset,this.workletProcessorChannels[RA].drumChannel=!0,this.volumeEnvelopeSmoothingFactor=on*(sampleRate/44100),this.panSmoothingFactor=rn*(sampleRate/44100),this.system=At,this.totalVoicesAmount=0,this._snapshot=A.processorOptions?.startRenderingData?.snapshot,this.port.onmessage=e=>this.handleMessage(e.data),A.processorOptions.startRenderingData&&(this._snapshot!==void 0&&(this.applySynthesizerSnapshot(this._snapshot),this.resetAllControllers()),p("%cRendering enabled! Starting render.",a.info),A.processorOptions.startRenderingData.parsedMIDI&&(A.processorOptions.startRenderingData?.loopCount!==void 0?(this.sequencer.loopCount=A.processorOptions.startRenderingData?.loopCount,this.sequencer.loop=!0):this.sequencer.loop=!1,this.sequencer.loadNewSongList([A.processorOptions.startRenderingData.parsedMIDI]))),_A.isInitialized.then(()=>{this.postReady(),p("%cSpessaSynth is ready!",a.recognized)})}get currentGain(){return this.masterGain*this.midiVolume}post(A){this.enableEventSystem&&this.port.postMessage(A)}postReady(){this.enableEventSystem&&this.port.postMessage({messageType:DA.ready,messageData:void 0})}debugMessage(){p({channels:this.workletProcessorChannels,voicesAmount:this.totalVoicesAmount,outputAmount:this._outputsAmount,dumpedSamples:this.workletDumpedSamplesList})}process(A,e){if(!this.alive)return!1;this.processTickCallback&&this.processTickCallback();let s=0;return this.workletProcessorChannels.forEach((n,o)=>{if(n.voices.length<1||n.isMuted)return;let g,i,E,h,d;if(this.oneOutputMode){let l=e[0];g=o%16*2,i=l[g],E=l[g+1]}else g=o%this._outputsAmount+2,i=e[g][0],E=e[g][1],h=e[0],d=e[1];let Q=n.voices;n.voices=[],Q.forEach(l=>{this.renderVoice(n,l,i,E,h,d),l.finished||n.voices.push(l)}),s+=n.voices.length}),s!==this.totalVoicesAmount&&(this.totalVoicesAmount=s,this.sendChannelProperties()),!0}destroyWorkletProcessor(){this.alive=!1,this.workletProcessorChannels.forEach(A=>{delete A.midiControllers,delete A.voices,delete A.sustainedVoices,delete A.cachedVoices,delete A.lockedControllers,delete A.preset,delete A.customControllers}),delete this.workletProcessorChannels,delete this.sequencer.midiData,delete this.sequencer,this.soundfontManager.destroyManager(),delete this.soundfontManager}};q.prototype.renderVoice=an;q.prototype.releaseVoice=In;q.prototype.voiceKilling=gn;q.prototype.getWorkletVoices=Jo;q.prototype.handleMessage=hn;q.prototype.sendChannelProperties=ln;q.prototype.callEvent=cn;q.prototype.systemExclusive=Qn;q.prototype.noteOn=dn;q.prototype.noteOff=mn;q.prototype.polyPressure=Nn;q.prototype.killNote=pn;q.prototype.stopAll=yn;q.prototype.stopAllChannels=Sn;q.prototype.muteChannel=Hn;q.prototype.setVibrato=Jn;q.prototype.disableAndLockGSNRPN=Yn;q.prototype.dataEntryCoarse=Pn;q.prototype.dataEntryFine=qn;q.prototype.createWorkletChannel=Gs;q.prototype.controllerChange=Ln;q.prototype.channelPressure=Mn;q.prototype.resetAllControllers=Kn;q.prototype.resetControllers=Vn;q.prototype.resetParameters=On;q.prototype.setMasterGain=Tn;q.prototype.setMasterPan=vn;q.prototype.setMIDIVolume=Un;q.prototype.transposeAllChannels=Dn;q.prototype.transposeChannel=kn;q.prototype.setChannelTuning=wn;q.prototype.setChannelTuningSemitones=Fn;q.prototype.setMasterTuning=Rn;q.prototype.setModulationDepth=Gn;q.prototype.pitchWheel=xn;q.prototype.setOctaveTuning=bn;q.prototype.programChange=xo;q.prototype.getPreset=Mo;q.prototype.setPreset=No;q.prototype.setDrums=bo;q.prototype.reloadSoundFont=To;q.prototype.clearSoundFont=Uo;q.prototype.setEmbeddedSoundFont=vo;q.prototype.sendPresetList=Lo;q.prototype.sendSynthesizerSnapshot=Ho;q.prototype.applySynthesizerSnapshot=Yo;q.prototype.panVoice=qo;registerProcessor(xs,q);p("%cProcessor succesfully registered!",a.recognized);