From d3417ec581820b36152c5ae797305b3734dfcf59 Mon Sep 17 00:00:00 2001 From: sehugg Date: Thu, 4 Sep 2025 15:09:33 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20sehugg/8?= =?UTF-8?q?bitworkshop@341eb73fde7bac9cd3b6a91ba57ac7034c70d201=20?= =?UTF-8?q?=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...{apple2-POKAQJIT.js => apple2-F3TCBBE3.js} | 8 +- gen/apple2-F3TCBBE3.js.map | 7 ++ gen/apple2-POKAQJIT.js.map | 7 -- gen/{basic-B4CQ7LR5.js => basic-P524QEPR.js} | 4 +- ...-B4CQ7LR5.js.map => basic-P524QEPR.js.map} | 0 gen/{chunk-HJLNIWCH.js => chunk-7U3MLVOX.js} | 4 +- ...-HJLNIWCH.js.map => chunk-7U3MLVOX.js.map} | 0 gen/{chunk-X7HTZJQJ.js => chunk-R2WG5Q3S.js} | 4 +- ...-X7HTZJQJ.js.map => chunk-R2WG5Q3S.js.map} | 0 gen/{devel-5ZB3MOPT.js => devel-LCSOTPUJ.js} | 4 +- ...-5ZB3MOPT.js.map => devel-LCSOTPUJ.js.map} | 0 gen/embedui.js | 2 +- gen/machine/apple2.js | 74 +++++++++---------- gen/machine/apple2.js.map | 2 +- gen/ui.js | 2 +- src/machine/apple2.ts | 35 +++++---- 16 files changed, 78 insertions(+), 75 deletions(-) rename gen/{apple2-POKAQJIT.js => apple2-F3TCBBE3.js} (79%) create mode 100644 gen/apple2-F3TCBBE3.js.map delete mode 100644 gen/apple2-POKAQJIT.js.map rename gen/{basic-B4CQ7LR5.js => basic-P524QEPR.js} (99%) rename gen/{basic-B4CQ7LR5.js.map => basic-P524QEPR.js.map} (100%) rename gen/{chunk-HJLNIWCH.js => chunk-7U3MLVOX.js} (96%) rename gen/{chunk-HJLNIWCH.js.map => chunk-7U3MLVOX.js.map} (100%) rename gen/{chunk-X7HTZJQJ.js => chunk-R2WG5Q3S.js} (99%) rename gen/{chunk-X7HTZJQJ.js.map => chunk-R2WG5Q3S.js.map} (100%) rename gen/{devel-5ZB3MOPT.js => devel-LCSOTPUJ.js} (95%) rename gen/{devel-5ZB3MOPT.js.map => devel-LCSOTPUJ.js.map} (100%) diff --git a/gen/apple2-POKAQJIT.js b/gen/apple2-F3TCBBE3.js similarity index 79% rename from gen/apple2-POKAQJIT.js rename to gen/apple2-F3TCBBE3.js index bb977d17..88f0c4af 100644 --- a/gen/apple2-POKAQJIT.js +++ b/gen/apple2-F3TCBBE3.js @@ -1,13 +1,13 @@ -import{a as t0}from"./chunk-EAN7TGRM.js";import{B as a0,I as e0,q as $,t as x0,y as U}from"./chunk-HOSZ5TQY.js";import{J as O,O as b,g as q,i as j,l as W,m as X,s as V,u as l}from"./chunk-RXF2JDJ3.js";import"./chunk-WAARL7ET.js";var z=class extends ${constructor(){super();this.cpuFrequency=1022727;this.sampleRate=this.cpuFrequency;this.cpuCyclesPerLine=65;this.cpuCyclesPerFrame=this.cpuCyclesPerLine*262;this.canvasWidth=280;this.numVisibleScanlines=192;this.numTotalScanlines=262;this.defaultROMSize=77824;this.LOAD_BASE=0;this.HDR_SIZE=0;this.ram=new Uint8Array(77824);this.cpu=new x0;this.grdirty=new Array(49152>>7);this.grparams={dirty:this.grdirty,grswitch:F,mem:this.ram};this.kbdlatch=0;this.soundstate=0;this.auxRAMselected=!1;this.auxRAMbank=1;this.writeinhibit=!0;this.bank2rdoffset=0;this.bank2wroffset=0;this.slots=new Array(8);this.fakeDrive={readROM:x=>{var a=this.cpu.getPC();if(a>=50688&&a<50944)switch(x){case 0:return 0;case 1:return this.LOAD_BASE&255;case 2:return this.LOAD_BASE>>8&255;default:return 0}else switch(x){case 0:return this.rom&&this.loadRAMWithProgram(),76;case 1:return 32;case 3:return 0;case 5:return 3;case 7:return 60;default:return 0}},readConst:x=>0,read:x=>this.floatbus(),write:(x,a)=>{}};this.loadBIOS(new W().decode(X(atob(u0)))),this.connectCPUMemoryBus(this),this.bios[54170-(65536-this.bios.length)]=96}saveState(){return{c:this.cpu.saveState(),ram:this.ram.slice(),kbdlatch:this.kbdlatch,soundstate:this.soundstate,grswitch:this.grparams.grswitch,auxRAMselected:this.auxRAMselected,auxRAMbank:this.auxRAMbank,writeinhibit:this.writeinhibit,slots:this.slots.map(x=>x&&x.saveState&&x.saveState()),inputs:null}}loadState(x){this.cpu.loadState(x.c),this.ram.set(x.ram),this.kbdlatch=x.kbdlatch,this.soundstate=x.soundstate,this.grparams.grswitch=x.grswitch,this.auxRAMselected=x.auxRAMselected,this.auxRAMbank=x.auxRAMbank,this.writeinhibit=x.writeinhibit,this.setupLanguageCardConstants();for(var a=0;a>8!=198);x++);for(var x=0;x<2e6&&(this.cpu.advanceClock(),!(this.cpu.getPC()>>8<198));x++);}readConst(x){if(x<49152)return this.ram[x];if(x>=53248)return this.auxRAMselected?x>=57344?this.ram[x]:this.ram[x+this.bank2rdoffset]:this.bios[x-(65536-this.bios.length)];if(x>=49408&&x<51200){var a=x>>8&7;return(this.slots[a]&&this.slots[a].readConst(x&255))|0}else return 0}read(x){if(x&=65535,x<49152||x>=53248)return this.readConst(x);if(x<49408){this.probe.logIORead(x,0);var a=x>>4&15;switch(a){case 0:return this.kbdlatch;case 1:this.kbdlatch&=127;break;case 3:this.soundstate=this.soundstate^1;break;case 5:(x&15)<8&&((x&1)!=0?this.grparams.grswitch|=1<<(x>>1&7):this.grparams.grswitch&=~(1<<(x>>1&7)));break;case 6:switch(x&7){case 1:case 2:case 3:return this.floatbus()&127;case 4:case 5:return this.floatbus()|128;default:return this.floatbus()}case 7:if(x==49264)return this.floatbus()|128;case 8:return this.doLanguageCardIO(x);case 9:case 10:case 11:case 12:case 13:case 14:case 15:return(this.slots[a-8]&&this.slots[a-8].read(x&15))|0}}else if(x>=49408&&x<51200){var a=x>>8&7;return(this.slots[a]&&this.slots[a].readROM(x&255))|0}return this.floatbus()}write(x,a){if(x&=65535,a&=255,x<49152)this.ram[x]=a,this.grdirty[x>>7]=1;else if(x<49296)this.read(x);else if(x<49408){var e=x>>4&15;this.slots[e-8]&&this.slots[e-8].write(x&15,a),this.probe.logIOWrite(x,a)}else x>=53248&&!this.writeinhibit&&(x>=57344?this.ram[x]=a:this.ram[x+this.bank2wroffset]=a)}floatbus(){var x=this.frameCycles,a=Math.floor(x/65),e=Math.floor(x%65),m=this.ap2disp.getAddressForScanline(a);return this.readConst(m+e)}connectVideo(x){super.connectVideo(x),this.ap2disp=this.pixels&&new A0(this.pixels,this.grparams)}startScanline(){}drawScanline(){}advanceFrame(x){var a=super.advanceFrame(x);return this.ap2disp&&this.ap2disp.updateScreen(),a}advanceCPU(){return this.audio.feedSample(this.soundstate,1),super.advanceCPU()}setKeyInput(x,a,e){if(e&b.KeyDown){switch(a=0,x){case 16:case 17:case 18:break;case 8:if(a=8,e&b.Shift){this.cpu.reset();return}break;case 13:a=13;break;case 27:a=27;break;case 37:a=8;break;case 39:a=21;break;case 38:a=11;break;case 40:a=10;break;case 48:e&b.Shift&&(a=41);break;case 49:e&b.Shift&&(a=33);break;case 50:e&b.Shift&&(a=64);break;case 51:e&b.Shift&&(a=35);break;case 52:e&b.Shift&&(a=36);break;case 53:e&b.Shift&&(a=37);break;case 54:e&b.Shift&&(a=94);break;case 55:e&b.Shift&&(a=38);break;case 56:e&b.Shift&&(a=42);break;case 57:e&b.Shift&&(a=40);break;case 61:a=e&b.Shift?43:61;break;case 173:a=e&b.Shift?95:45;break;case 59:a=e&b.Shift?58:59;break;case 188:a=e&b.Shift?60:44;break;case 190:a=e&b.Shift?62:46;break;case 191:a=e&b.Shift?63:47;break;case 222:a=e&b.Shift?34:39;break;default:a=x,a>=97&&a<=122&&(a-=32),a>=65&&a<65+26&&e&b.Ctrl&&(a-=64)}a&&(this.kbdlatch=(a|128)&255)}}doLanguageCardIO(x){switch(x&15){case 0:case 4:this.auxRAMselected=!0,this.auxRAMbank=2,this.writeinhibit=!0;break;case 1:case 5:this.auxRAMselected=!1,this.auxRAMbank=2,this.writeinhibit=!1;break;case 2:case 6:case 10:case 14:this.auxRAMselected=!1,this.writeinhibit=!0;break;case 3:case 7:this.auxRAMselected=!0,this.auxRAMbank=2,this.writeinhibit=!1;break;case 8:case 12:this.auxRAMselected=!0,this.auxRAMbank=1,this.writeinhibit=!0;break;case 9:case 13:this.auxRAMselected=!1,this.auxRAMbank=1,this.writeinhibit=!1;break;case 11:case 15:this.auxRAMselected=!0,this.auxRAMbank=1,this.writeinhibit=!1;break}return this.setupLanguageCardConstants(),this.floatbus()}setupLanguageCardConstants(){this.auxRAMbank==2?this.bank2rdoffset=-4096:this.bank2rdoffset=12288,this.auxRAMbank==2?this.bank2wroffset=-4096:this.bank2wroffset=12288}getDebugCategories(){return["CPU","Stack","I/O","Disk"]}getDebugInfo(x,a){switch(x){case"I/O":return"AUX RAM Bank: "+a.auxRAMbank+` +import{a as t0}from"./chunk-EAN7TGRM.js";import{B as a0,I as e0,q as $,t as x0,y as U}from"./chunk-HOSZ5TQY.js";import{J as O,O as o,g as q,i as j,l as W,m as X,s as V,u as l}from"./chunk-RXF2JDJ3.js";import"./chunk-WAARL7ET.js";var z=class extends ${constructor(){super();this.cpuFrequency=1022727;this.sampleRate=this.cpuFrequency;this.cpuCyclesPerLine=65;this.cpuCyclesPerFrame=this.cpuCyclesPerLine*262;this.canvasWidth=280;this.numVisibleScanlines=192;this.numTotalScanlines=262;this.defaultROMSize=77824;this.LOAD_BASE=0;this.HDR_SIZE=0;this.ram=new Uint8Array(77824);this.cpu=new x0;this.grdirty=new Array(49152>>7);this.grparams={dirty:this.grdirty,grswitch:F,mem:this.ram};this.kbdlatch=0;this.soundstate=0;this.auxRAMselected=!1;this.auxRAMbank=1;this.writeinhibit=!0;this.bank2rdoffset=0;this.bank2wroffset=0;this.slots=new Array(8);this.fakeDrive={readROM:x=>{var a=this.cpu.getPC();if(a>=50688&&a<50944)switch(x){case 0:return 0;case 1:return this.LOAD_BASE&255;case 2:return this.LOAD_BASE>>8&255;default:return 0}else switch(x){case 0:return this.rom&&this.loadRAMWithProgram(),76;case 1:return 32;case 3:return 0;case 5:return 3;case 7:return 60;default:return 0}},readConst:x=>0,read:x=>this.floatbus(),write:(x,a)=>{}};this.loadBIOS(new W().decode(X(atob(u0)))),this.connectCPUMemoryBus(this),this.bios[54170-(65536-this.bios.length)]=96}saveState(){return{c:this.cpu.saveState(),ram:this.ram.slice(),kbdlatch:this.kbdlatch,soundstate:this.soundstate,grswitch:this.grparams.grswitch,auxRAMselected:this.auxRAMselected,auxRAMbank:this.auxRAMbank,writeinhibit:this.writeinhibit,slots:this.slots.map(x=>x&&x.saveState&&x.saveState()),inputs:null}}loadState(x){this.cpu.loadState(x.c),this.ram.set(x.ram),this.kbdlatch=x.kbdlatch,this.soundstate=x.soundstate,this.grparams.grswitch=x.grswitch,this.auxRAMselected=x.auxRAMselected,this.auxRAMbank=x.auxRAMbank,this.writeinhibit=x.writeinhibit,this.setupLanguageCardConstants();for(var a=0;a>8!=198);x++);for(var x=0;x<2e6&&(this.cpu.advanceClock(),!(this.cpu.getPC()>>8<198));x++);}readConst(x){if(x<49152)return this.ram[x];if(x>=53248)return this.auxRAMselected?x>=57344?this.ram[x]:this.ram[x+this.bank2rdoffset]:this.bios[x-(65536-this.bios.length)];if(x>=49408&&x<51200){var a=x>>8&7;return(this.slots[a]&&this.slots[a].readConst(x&255))|0}else return 0}read(x){if(x&=65535,x<49152||x>=53248)return this.readConst(x);if(x<49408){this.probe.logIORead(x,0);var a=x>>4&15;switch(a){case 0:return this.kbdlatch;case 1:this.kbdlatch&=127;break;case 3:this.soundstate=this.soundstate^1;break;case 5:(x&15)<8&&((x&1)!=0?this.grparams.grswitch|=1<<(x>>1&7):this.grparams.grswitch&=~(1<<(x>>1&7)));break;case 6:switch(x&7){case 1:case 2:case 3:return this.floatbus()&127;case 4:case 5:return this.floatbus()|128;default:return this.floatbus()}case 7:if(x==49264)return this.floatbus()|128;case 8:return this.doLanguageCardIO(x);case 9:case 10:case 11:case 12:case 13:case 14:case 15:return(this.slots[a-8]&&this.slots[a-8].read(x&15))|0}}else if(x>=49408&&x<51200){var a=x>>8&7;return(this.slots[a]&&this.slots[a].readROM(x&255))|0}return this.floatbus()}write(x,a){if(x&=65535,a&=255,x<49152)this.ram[x]=a,this.grdirty[x>>7]=1;else if(x<49296)this.read(x);else if(x<49408){var e=x>>4&15;this.slots[e-8]&&this.slots[e-8].write(x&15,a),this.probe.logIOWrite(x,a)}else x>=53248&&!this.writeinhibit&&(x>=57344?this.ram[x]=a:this.ram[x+this.bank2wroffset]=a)}floatbus(){var x=this.frameCycles,a=Math.floor(x/65),e=Math.floor(x%65),m=this.ap2disp.getAddressForScanline(a);return this.readConst(m+e)}connectVideo(x){super.connectVideo(x),this.ap2disp=this.pixels&&new A0(this.pixels,this.grparams)}startScanline(){}drawScanline(){}advanceFrame(x){var a=super.advanceFrame(x);return this.ap2disp&&this.ap2disp.updateScreen(),a}advanceCPU(){return this.audio.feedSample(this.soundstate,1),super.advanceCPU()}setKeyInput(x,a,e){if(console.log(`setKeyInput: ${x} ${a} ${e}`),e&o.KeyDown){switch(a=0,x){case 16:case 17:case 18:case 91:return;case 8:if(a=8,e&o.Shift){this.cpu.reset();return}break;case 13:a=13;break;case 27:a=27;break;case 37:a=8;break;case 39:a=21;break;case 38:a=11;break;case 40:a=10;break;case 48:a=e&o.Shift?41:48;break;case 49:a=e&o.Shift?33:49;break;case 50:a=e&o.Shift?64:50;break;case 51:a=e&o.Shift?35:51;break;case 52:a=e&o.Shift?36:52;break;case 53:a=e&o.Shift?37:53;break;case 54:a=e&o.Shift?94:54;break;case 55:a=e&o.Shift?38:55;break;case 56:a=e&o.Shift?42:56;break;case 57:a=e&o.Shift?40:57;break;case 61:a=e&o.Shift?95:45;break;case 173:a=e&o.Shift?43:61;break;case 59:a=e&o.Shift?58:59;break;case 186:a=e&o.Shift?58:59;break;case 187:a=e&o.Shift?43:61;break;case 188:a=e&o.Shift?60:44;break;case 189:a=e&o.Shift?95:45;break;case 190:a=e&o.Shift?62:46;break;case 191:a=e&o.Shift?63:47;break;case 222:a=e&o.Shift?34:39;break;default:a=x,a>=97&&a<=122&&(a-=32),a>=65&&a<65+26&&e&o.Ctrl&&(a-=64)}a&&(this.kbdlatch=(a|128)&255)}}doLanguageCardIO(x){switch(x&15){case 0:case 4:this.auxRAMselected=!0,this.auxRAMbank=2,this.writeinhibit=!0;break;case 1:case 5:this.auxRAMselected=!1,this.auxRAMbank=2,this.writeinhibit=!1;break;case 2:case 6:case 10:case 14:this.auxRAMselected=!1,this.writeinhibit=!0;break;case 3:case 7:this.auxRAMselected=!0,this.auxRAMbank=2,this.writeinhibit=!1;break;case 8:case 12:this.auxRAMselected=!0,this.auxRAMbank=1,this.writeinhibit=!0;break;case 9:case 13:this.auxRAMselected=!1,this.auxRAMbank=1,this.writeinhibit=!1;break;case 11:case 15:this.auxRAMselected=!0,this.auxRAMbank=1,this.writeinhibit=!1;break}return this.setupLanguageCardConstants(),this.floatbus()}setupLanguageCardConstants(){this.auxRAMbank==2?this.bank2rdoffset=-4096:this.bank2rdoffset=12288,this.auxRAMbank==2?this.bank2wroffset=-4096:this.bank2wroffset=12288}getDebugCategories(){return["CPU","Stack","I/O","Disk"]}getDebugInfo(x,a){switch(x){case"I/O":return"AUX RAM Bank: "+a.auxRAMbank+` AUX RAM Select: `+a.auxRAMselected+` AUX RAM Write: `+!a.writeinhibit+` GR Switches: `+V(a.grswitch,["Graphics","Mixed","Page2","Hires"],!1)+` `;case"Disk":return this.slots[6]&&this.slots[6].toLongString&&this.slots[6].toLongString()||` -`}}},F=1,G=2,v=4,L=8,A0=function(s,x){var a=280,e=192,m=4294967295,t=4278190080,n=-1,c=new Array(40*24);let D=250,C=[l(0,0,0),l(227,30,96),l(96,78,189),l(255,68,253),l(0,163,96),l(156,156,156),l(20,207,253),l(208,195,255),l(96,114,3),l(255,106,60),l(156,156,156),l(255,160,208),l(20,245,60),l(208,221,141),l(114,255,208),l(255,255,255)],u=[0,128,256,384,512,640,768,896,40,168,296,424,552,680,808,936,80,208,336,464,592,720,848,976],g=[0,1024,2048,3072,4096,5120,6144,7168,128,1152,2176,3200,4224,5248,6272,7296,256,1280,2304,3328,4352,5376,6400,7424,384,1408,2432,3456,4480,5504,6528,7552,512,1536,2560,3584,4608,5632,6656,7680,640,1664,2688,3712,4736,5760,6784,7808,768,1792,2816,3840,4864,5888,6912,7936,896,1920,2944,3968,4992,6016,7040,8064,40,1064,2088,3112,4136,5160,6184,7208,168,1192,2216,3240,4264,5288,6312,7336,296,1320,2344,3368,4392,5416,6440,7464,424,1448,2472,3496,4520,5544,6568,7592,552,1576,2600,3624,4648,5672,6696,7720,680,1704,2728,3752,4776,5800,6824,7848,808,1832,2856,3880,4904,5928,6952,7976,936,1960,2984,4008,5032,6056,7080,8104,80,1104,2128,3152,4176,5200,6224,7248,208,1232,2256,3280,4304,5328,6352,7376,336,1360,2384,3408,4432,5456,6480,7504,464,1488,2512,3536,4560,5584,6608,7632,592,1616,2640,3664,4688,5712,6736,7760,720,1744,2768,3792,4816,5840,6864,7888,848,1872,2896,3920,4944,5968,6992,8016,976,2e3,3024,4048,5072,6096,7120,8144,120,1144,2168,3192,4216,5240,6264,7288,248,1272,2296,3320,4344,5368,6392,7416,376,1400,2424,3448,4472,5496,6520,7544,504,1528,2552,3576,4600,5624,6648,7672,632,1656,2680,3704,4728,5752,6776,7800,760,1784,2808,3832,4856,5880,6904,7928,888,1912,2936,3960,4984,6008,7032,8056,1016,2040,3064,4088,5112,6136,7160,8184,0,1024,2048,3072,4096,5120];var Q;{Q=new Array(256*4*2*7);var k,M,y,E,C0=15,K=0;for(M=0;M<2;M++)for(var w=0;w<1024;w++){(w&128)==0?(y=3,E=12):(y=6,E=9);var H=(w&256)>>8|(w&127)<<1|(w&512)>>1;for(k=0;k<7;k++){var R;(2<>4],f=0;f<4;f++)s[r]=s[r+1]=s[r+2]=s[r+3]=s[r+4]=s[r+5]=s[r+6]=A,r+=a}function o0(h,i,o,f){var r=(i<<3)*a+h*7,d,A;f?(d=t,A=m):(d=m,A=t);for(var p=0;p<8;p++){var S=l0[(o<<3)+p];s[r]=(S&64)>0?d:A,s[r+1]=(S&32)>0?d:A,s[r+2]=(S&16)>0?d:A,s[r+3]=(S&8)>0?d:A,s[r+4]=(S&4)>0?d:A,s[r+5]=(S&2)>0?d:A,s[r+6]=(S&1)>0?d:A,r+=a}}this.getAddressForScanline=function(h){var i=g[h];return x.grswitch&L&&(h<160||!(x.grswitch&G))?i=i|(x.grswitch&v?16384:8192):i=i&1023|(x.grswitch&v?2048:1024),i};function T(h,i){for(var o=h*a;h>7]){o+=a;continue}for(var r,d,A=0,p=x.mem[f]&255,S=0;S<20;S++){for(var P=x.mem[f+1]&255,Y=x.mem[f+2]&255,b0=((A&64)<<2|p|P<<9)&1023,B=0;B<7;B++)s[o+B]=Q[b0*7+B];for(var m0=((p&64)<<2|P|Y<<9)&1023,B=0;B<7;B++)s[o+7+B]=Q[m0*7+7168+B];o+=14,f+=2,A=P,p=Y}}}function Z(h){for(var i=u[h]+((x.grswitch&v)!=0?2048:1024),o=0;o<40;o++){var f=x.mem[i+o]&255;f!=c[h*40+o]&&(h0(o,h,f),c[h*40+o]=f)}}function J(h,i){for(var o=u[h]+((x.grswitch&v)!=0?2048:1024),f=0;f<40;f++){var r=x.mem[o+f]&255,d;r>=128?d=!1:r>=64?(d=i,i?r-=64:r+=64):d=!0,r!=c[h*40+f]&&(o0(f,h,r&127,d),c[h*40+f]=r)}}this.updateScreen=function(h){var i,o=new Date().getTime()%(D<<1)>D;if(x.grswitch!=n&&(n=x.grswitch,h=!0),h){if((x.grswitch&F)!=0||(x.grswitch&G)!=0)for(i=0;i<24;i++)for(var f=0;f<40;f++)c[i*40+f]=-1;for(var r=0;r>1]:this.track_data=null}toLongString(){return"Track: "+this.track/2+` +`}}},F=1,G=2,v=4,L=8,A0=function(i,x){var a=280,e=192,m=4294967295,t=4278190080,n=-1,c=new Array(40*24);let D=250,C=[l(0,0,0),l(227,30,96),l(96,78,189),l(255,68,253),l(0,163,96),l(156,156,156),l(20,207,253),l(208,195,255),l(96,114,3),l(255,106,60),l(156,156,156),l(255,160,208),l(20,245,60),l(208,221,141),l(114,255,208),l(255,255,255)],u=[0,128,256,384,512,640,768,896,40,168,296,424,552,680,808,936,80,208,336,464,592,720,848,976],k=[0,1024,2048,3072,4096,5120,6144,7168,128,1152,2176,3200,4224,5248,6272,7296,256,1280,2304,3328,4352,5376,6400,7424,384,1408,2432,3456,4480,5504,6528,7552,512,1536,2560,3584,4608,5632,6656,7680,640,1664,2688,3712,4736,5760,6784,7808,768,1792,2816,3840,4864,5888,6912,7936,896,1920,2944,3968,4992,6016,7040,8064,40,1064,2088,3112,4136,5160,6184,7208,168,1192,2216,3240,4264,5288,6312,7336,296,1320,2344,3368,4392,5416,6440,7464,424,1448,2472,3496,4520,5544,6568,7592,552,1576,2600,3624,4648,5672,6696,7720,680,1704,2728,3752,4776,5800,6824,7848,808,1832,2856,3880,4904,5928,6952,7976,936,1960,2984,4008,5032,6056,7080,8104,80,1104,2128,3152,4176,5200,6224,7248,208,1232,2256,3280,4304,5328,6352,7376,336,1360,2384,3408,4432,5456,6480,7504,464,1488,2512,3536,4560,5584,6608,7632,592,1616,2640,3664,4688,5712,6736,7760,720,1744,2768,3792,4816,5840,6864,7888,848,1872,2896,3920,4944,5968,6992,8016,976,2e3,3024,4048,5072,6096,7120,8144,120,1144,2168,3192,4216,5240,6264,7288,248,1272,2296,3320,4344,5368,6392,7416,376,1400,2424,3448,4472,5496,6520,7544,504,1528,2552,3576,4600,5624,6648,7672,632,1656,2680,3704,4728,5752,6776,7800,760,1784,2808,3832,4856,5880,6904,7928,888,1912,2936,3960,4984,6008,7032,8056,1016,2040,3064,4088,5112,6136,7160,8184,0,1024,2048,3072,4096,5120];var Q;{Q=new Array(256*4*2*7);var g,M,y,E,C0=15,K=0;for(M=0;M<2;M++)for(var I=0;I<1024;I++){(I&128)==0?(y=3,E=12):(y=6,E=9);var H=(I&256)>>8|(I&127)<<1|(I&512)>>1;for(g=0;g<7;g++){var R;(2<>4],f=0;f<4;f++)i[r]=i[r+1]=i[r+2]=i[r+3]=i[r+4]=i[r+5]=i[r+6]=A,r+=a}function o0(h,s,b,f){var r=(s<<3)*a+h*7,d,A;f?(d=t,A=m):(d=m,A=t);for(var p=0;p<8;p++){var S=l0[(b<<3)+p];i[r]=(S&64)>0?d:A,i[r+1]=(S&32)>0?d:A,i[r+2]=(S&16)>0?d:A,i[r+3]=(S&8)>0?d:A,i[r+4]=(S&4)>0?d:A,i[r+5]=(S&2)>0?d:A,i[r+6]=(S&1)>0?d:A,r+=a}}this.getAddressForScanline=function(h){var s=k[h];return x.grswitch&L&&(h<160||!(x.grswitch&G))?s=s|(x.grswitch&v?16384:8192):s=s&1023|(x.grswitch&v?2048:1024),s};function T(h,s){for(var b=h*a;h>7]){b+=a;continue}for(var r,d,A=0,p=x.mem[f]&255,S=0;S<20;S++){for(var P=x.mem[f+1]&255,Y=x.mem[f+2]&255,b0=((A&64)<<2|p|P<<9)&1023,B=0;B<7;B++)i[b+B]=Q[b0*7+B];for(var m0=((p&64)<<2|P|Y<<9)&1023,B=0;B<7;B++)i[b+7+B]=Q[m0*7+7168+B];b+=14,f+=2,A=P,p=Y}}}function Z(h){for(var s=u[h]+((x.grswitch&v)!=0?2048:1024),b=0;b<40;b++){var f=x.mem[s+b]&255;f!=c[h*40+b]&&(h0(b,h,f),c[h*40+b]=f)}}function J(h,s){for(var b=u[h]+((x.grswitch&v)!=0?2048:1024),f=0;f<40;f++){var r=x.mem[b+f]&255,d;r>=128?d=!1:r>=64?(d=s,s?r-=64:r+=64):d=!0,r!=c[h*40+f]&&(o0(f,h,r&127,d),c[h*40+f]=r)}}this.updateScreen=function(h){var s,b=new Date().getTime()%(D<<1)>D;if(x.grswitch!=n&&(n=x.grswitch,h=!0),h){if((x.grswitch&F)!=0||(x.grswitch&G)!=0)for(s=0;s<24;s++)for(var f=0;f<40;f++)c[s*40+f]=-1;for(var r=0;r>1]:this.track_data=null}toLongString(){return"Track: "+this.track/2+` Offset: `+this.track_index+` Mode: `+(this.read_mode?"READ":"WRITE")+` Motor: `+this.motor+` Data: `+(this.track_data?q(this.track_data[this.track_index]):"-")+` -`}read_latch(){return this.track_index=(this.track_index+1)%_,this.track_data?this.track_data[this.track_index]&255:this.emu.floatbus()|128}write_latch(x){this.track_index=(this.track_index+1)%_,this.track_data!=null&&(this.track_data[this.track_index]=x)}readROM(x){return r0[x]}readConst(x){return r0[x]}read(x){return this.doIO(x,0)}write(x,a){this.doIO(x,a)}doIO(x,a){switch(x&15){case 1:case 3:case 5:case 7:var e,m,t;t=this.track,e=x>>1&3,e==(t-1&3)?t>0&&t--:e==(t+1&3)&&t>1],console.log("track",t/2)):this.track_data=null,this.track=t;break;case 8:this.motor=!1;break;case 9:this.motor=!0;break;case 10:break;case 11:break;case 15:this.read_mode=!1;case 12:if(this.read_mode)return this.read_latch();break;case 14:this.read_mode=!0;case 13:return a>=0&&!this.read_mode&&!this.write_protect&&this.write_latch(a),this.write_protect?128:0}return this.emu.floatbus()}},N=[150,151,154,155,157,158,159,166,167,171,172,173,174,175,178,179,180,181,182,183,185,186,187,188,189,190,191,203,205,206,207,211,214,215,217,218,219,220,221,222,223,229,230,231,233,234,235,236,237,238,239,242,243,244,245,246,247,249,250,251,252,253,254,255],g0=[0,7,14,6,13,5,12,4,11,3,10,2,9,1,8,15];function k0(s,x,a,e,m,t,n){var c,D,C,u,g=new Uint8Array(258);for(u=0,c=0;c<14;c++)t[n++]=255;for(t[n++]=213,t[n++]=170,t[n++]=150,t[n++]=s>>1|170,t[n++]=s|170,D=s,t[n++]=x>>1|170,t[n++]=x|170,D^=x,t[n++]=a>>1|170,t[n++]=a|170,D^=a,t[n++]=D>>1|170,t[n++]=D|170,t[n++]=222,t[n++]=170,t[n++]=235,c=0;c<6;c++)t[n++]=255;for(t[n++]=213,t[n++]=170,t[n++]=173,c=0;c<256;c++)g[c]=e[c+m]&255;for(g[256]=0,g[257]=0,C=0,c=0;c<86;c++)u=(g[c]&1)<<1,u|=(g[c]&2)>>1,u|=(g[c+86]&1)<<3,u|=(g[c+86]&2)<<1,u|=(g[c+172]&1)<<5,u|=(g[c+172]&2)<<3,t[n++]=N[u^C],C=u;for(c=0;c<256;c++)u=g[c]>>2,t[n++]=N[u^C],C=u;t[n++]=N[u],t[n++]=222,t[n++]=170,t[n++]=235}function S0(s,x,a){for(var e=new Uint8Array(_),m=0,t=0;t<16;t++)k0(s,x,t,a,g0[t]<<8,e,m),m+=d0;for(;m<_;)e[m++]=255;return e}var c0=[{id:"sieve.c",name:"Sieve",category:"C"},{id:"keyboardtest.c",name:"Keyboard Test"},{id:"mandel.c",name:"Mandelbrot"},{id:"tgidemo.c",name:"TGI Graphics Demo"},{id:"Eliza.c",name:"Eliza"},{id:"siegegame.c",name:"Siege Game"},{id:"cosmic.c",name:"Cosmic Impalas"},{id:"farmhouse.c",name:"Farmhouse Adventure"},{id:"yum.c",name:"Yum Dice Game"},{id:"lz4test.c",name:"LZ4 Decompressor"},{id:"hgrtest.a",name:"HGR Test",category:"Assembly Language"},{id:"conway.a",name:"Conway's Game of Life"},{id:"lz4fh.a",name:"LZ4FH Decompressor"},{id:"deltamod.dasm",name:"Delta Modulation Audio"}],n0=class extends t0{constructor(){super(...arguments);this.getOpcodeMetadata=a0;this.getToolForFilename=U}start(){this.startModule(this.mainElement,{jsfile:"mame8bitpc.js",biosfile:["apple2e.zip"],driver:"apple2e",width:280*2,height:192*2,preInit:function(x){}})}getDefaultExtension(){return".c"}getPresets(){return c0}loadROM(x,a){this.loadROMFile(a)}},f0=class extends e0{constructor(){super(...arguments);this.getMemoryMap=function(){return{main:[{name:"Zero Page RAM",start:0,size:256,type:"ram"},{name:"Line Input RAM",start:512,size:256,type:"ram"},{name:"RAM",start:768,size:192,type:"ram"},{name:"DOS Vectors",start:960,size:64,type:"ram"},{name:"Text/Lores Page 1",start:1024,size:1024,type:"ram"},{name:"RAM",start:2048,size:6144,type:"ram"},{name:"Hires Page 1",start:8192,size:8192,type:"ram"},{name:"Hires Page 2",start:16384,size:8192,type:"ram"},{name:"RAM",start:24576,size:24576,type:"ram"},{name:"I/O",start:49152,size:4096,type:"io"},{name:"ROM",start:53248,size:12288,type:"rom"}]}};this.getToolForFilename=x=>x.endsWith(".lnk")?"merlin32":U(x)}newMachine(){return new z}getPresets(){return c0}getDefaultExtension(){return".c"}readAddress(x){return this.machine.readConst(x)}getROMExtension(x){return x&&x.length==35*16*256?".dsk":".bin"}};O["apple2.mame"]=n0;O.apple2=f0; -//# sourceMappingURL=apple2-POKAQJIT.js.map +`}read_latch(){return this.track_index=(this.track_index+1)%_,this.track_data?this.track_data[this.track_index]&255:this.emu.floatbus()|128}write_latch(x){this.track_index=(this.track_index+1)%_,this.track_data!=null&&(this.track_data[this.track_index]=x)}readROM(x){return r0[x]}readConst(x){return r0[x]}read(x){return this.doIO(x,0)}write(x,a){this.doIO(x,a)}doIO(x,a){switch(x&15){case 1:case 3:case 5:case 7:var e,m,t;t=this.track,e=x>>1&3,e==(t-1&3)?t>0&&t--:e==(t+1&3)&&t>1],console.log("track",t/2)):this.track_data=null,this.track=t;break;case 8:this.motor=!1;break;case 9:this.motor=!0;break;case 10:break;case 11:break;case 15:this.read_mode=!1;case 12:if(this.read_mode)return this.read_latch();break;case 14:this.read_mode=!0;case 13:return a>=0&&!this.read_mode&&!this.write_protect&&this.write_latch(a),this.write_protect?128:0}return this.emu.floatbus()}},N=[150,151,154,155,157,158,159,166,167,171,172,173,174,175,178,179,180,181,182,183,185,186,187,188,189,190,191,203,205,206,207,211,214,215,217,218,219,220,221,222,223,229,230,231,233,234,235,236,237,238,239,242,243,244,245,246,247,249,250,251,252,253,254,255],k0=[0,7,14,6,13,5,12,4,11,3,10,2,9,1,8,15];function g0(i,x,a,e,m,t,n){var c,D,C,u,k=new Uint8Array(258);for(u=0,c=0;c<14;c++)t[n++]=255;for(t[n++]=213,t[n++]=170,t[n++]=150,t[n++]=i>>1|170,t[n++]=i|170,D=i,t[n++]=x>>1|170,t[n++]=x|170,D^=x,t[n++]=a>>1|170,t[n++]=a|170,D^=a,t[n++]=D>>1|170,t[n++]=D|170,t[n++]=222,t[n++]=170,t[n++]=235,c=0;c<6;c++)t[n++]=255;for(t[n++]=213,t[n++]=170,t[n++]=173,c=0;c<256;c++)k[c]=e[c+m]&255;for(k[256]=0,k[257]=0,C=0,c=0;c<86;c++)u=(k[c]&1)<<1,u|=(k[c]&2)>>1,u|=(k[c+86]&1)<<3,u|=(k[c+86]&2)<<1,u|=(k[c+172]&1)<<5,u|=(k[c+172]&2)<<3,t[n++]=N[u^C],C=u;for(c=0;c<256;c++)u=k[c]>>2,t[n++]=N[u^C],C=u;t[n++]=N[u],t[n++]=222,t[n++]=170,t[n++]=235}function S0(i,x,a){for(var e=new Uint8Array(_),m=0,t=0;t<16;t++)g0(i,x,t,a,k0[t]<<8,e,m),m+=d0;for(;m<_;)e[m++]=255;return e}var c0=[{id:"sieve.c",name:"Sieve",category:"C"},{id:"keyboardtest.c",name:"Keyboard Test"},{id:"mandel.c",name:"Mandelbrot"},{id:"tgidemo.c",name:"TGI Graphics Demo"},{id:"Eliza.c",name:"Eliza"},{id:"siegegame.c",name:"Siege Game"},{id:"cosmic.c",name:"Cosmic Impalas"},{id:"farmhouse.c",name:"Farmhouse Adventure"},{id:"yum.c",name:"Yum Dice Game"},{id:"lz4test.c",name:"LZ4 Decompressor"},{id:"hgrtest.a",name:"HGR Test",category:"Assembly Language"},{id:"conway.a",name:"Conway's Game of Life"},{id:"lz4fh.a",name:"LZ4FH Decompressor"},{id:"deltamod.dasm",name:"Delta Modulation Audio"}],n0=class extends t0{constructor(){super(...arguments);this.getOpcodeMetadata=a0;this.getToolForFilename=U}start(){this.startModule(this.mainElement,{jsfile:"mame8bitpc.js",biosfile:["apple2e.zip"],driver:"apple2e",width:280*2,height:192*2,preInit:function(x){}})}getDefaultExtension(){return".c"}getPresets(){return c0}loadROM(x,a){this.loadROMFile(a)}},f0=class extends e0{constructor(){super(...arguments);this.getMemoryMap=function(){return{main:[{name:"Zero Page RAM",start:0,size:256,type:"ram"},{name:"Line Input RAM",start:512,size:256,type:"ram"},{name:"RAM",start:768,size:192,type:"ram"},{name:"DOS Vectors",start:960,size:64,type:"ram"},{name:"Text/Lores Page 1",start:1024,size:1024,type:"ram"},{name:"RAM",start:2048,size:6144,type:"ram"},{name:"Hires Page 1",start:8192,size:8192,type:"ram"},{name:"Hires Page 2",start:16384,size:8192,type:"ram"},{name:"RAM",start:24576,size:24576,type:"ram"},{name:"I/O",start:49152,size:4096,type:"io"},{name:"ROM",start:53248,size:12288,type:"rom"}]}};this.getToolForFilename=x=>x.endsWith(".lnk")?"merlin32":U(x)}newMachine(){return new z}getPresets(){return c0}getDefaultExtension(){return".c"}readAddress(x){return this.machine.readConst(x)}getROMExtension(x){return x&&x.length==35*16*256?".dsk":".bin"}};O["apple2.mame"]=n0;O.apple2=f0; +//# sourceMappingURL=apple2-F3TCBBE3.js.map diff --git a/gen/apple2-F3TCBBE3.js.map b/gen/apple2-F3TCBBE3.js.map new file mode 100644 index 00000000..4bafd848 --- /dev/null +++ b/gen/apple2-F3TCBBE3.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../src/machine/apple2.ts", "../src/platform/apple2.ts"], + "sourcesContent": ["\nimport { MOS6502, MOS6502State } from \"../common/cpu/MOS6502\";\nimport { Bus, BasicScanlineMachine, SavesState, AcceptsBIOS } from \"../common/devices\";\nimport { KeyFlags } from \"../common/emu\"; // TODO\nimport { hex, lzgmini, stringToByteArray, RGBA, printFlags, arrayCompare } from \"../common/util\";\n\ninterface AppleIIStateBase {\n ram : Uint8Array;\n soundstate : number;\n auxRAMselected,writeinhibit : boolean;\n auxRAMbank : number;\n}\n\ninterface AppleIIControlsState {\n inputs : Uint8Array; // unused?\n kbdlatch : number;\n}\n\ninterface AppleIIState extends AppleIIStateBase, AppleIIControlsState {\n c : MOS6502State;\n grswitch : number;\n slots: SlotDevice[];\n}\n\ninterface SlotDevice extends Bus {\n readROM(address: number) : number;\n readConst(address: number) : number;\n}\n\nexport class AppleII extends BasicScanlineMachine implements AcceptsBIOS {\n\n // approx: http://www.cs.columbia.edu/~sedwards/apple2fpga/\n cpuFrequency = 1022727;\n sampleRate = this.cpuFrequency;\n cpuCyclesPerLine = 65;\n cpuCyclesPerFrame = this.cpuCyclesPerLine * 262;\n canvasWidth = 280;\n numVisibleScanlines = 192;\n numTotalScanlines = 262;\n defaultROMSize = 0x13000; // we'll never need one that big, but...\n\n // these are set later\n LOAD_BASE = 0;\n HDR_SIZE = 0;\n\n ram = new Uint8Array(0x13000); // 64K + 16K LC RAM - 4K hardware + 12K ROM\n bios : Uint8Array;\n cpu = new MOS6502();\n grdirty = new Array(0xc000 >> 7);\n grparams = {dirty:this.grdirty, grswitch:GR_TXMODE, mem:this.ram};\n ap2disp;\n kbdlatch = 0;\n soundstate = 0;\n // language card switches\n auxRAMselected = false;\n auxRAMbank = 1;\n writeinhibit = true;\n // value to add when reading & writing each of these banks\n // bank 1 is E000-FFFF, bank 2 is D000-DFFF\n bank2rdoffset=0;\n bank2wroffset=0;\n // disk II\n slots : SlotDevice[] = new Array(8);\n // fake disk drive that loads program into RAM\n fakeDrive : SlotDevice = {\n readROM: (a) => {\n var pc = this.cpu.getPC();\n if (pc >= 0xC600 && pc < 0xC700) {\n // We're reading code to EXECUTE.\n // Load the built program directly into memory, and \"read\"\n // a JMP directly to it.\n //console.log(`fakeDrive (EXEC): ${a.toString(16)}`);\n switch (a) {\n // JMP VM_BASE\n case 0:\n // SHOULD load program into RAM here, but have to do it\n // below instead.\n return 0;\n case 1: return this.LOAD_BASE&0xff;\n case 2: return (this.LOAD_BASE>>8)&0xff;\n default: return 0;\n }\n }\n else {\n // We're reading code, but not executing it.\n // This is probably the Monitor routine to identify whether\n // this slot is a Disk ][ drive, so... give it what it wants.\n //console.log(`fakeDrive (NOEX): ${a.toString(16)}`);\n switch (a) {\n case 0:\n // Actually, if we get here, we probably ARE being\n // executed. For some reason, the instruction at $C600\n // gets read for execution, BEFORE the PC gets set to\n // the correct location. So we handle loading the program\n // into RAM and returning the JMP here, instead of above\n // where it would otherwise belong.\n if (this.rom) {\n this.loadRAMWithProgram();\n }\n return 0x4c; // JMP\n case 1: return 0x20;\n case 3: return 0x00;\n case 5: return 0x03;\n case 7: return 0x3c;\n default: return 0;\n }\n }\n },\n readConst: (a) => {\n return 0;\n },\n read: (a) => { return this.floatbus(); },\n write: (a,v) => { }\n };\n\n constructor() {\n super();\n this.loadBIOS(new lzgmini().decode(stringToByteArray(atob(APPLEIIGO_LZG))));\n this.connectCPUMemoryBus(this);\n // This line is inappropriate for real ROMs, but was there for\n // the APPLE][GO ROM, so keeping it only in the constructor, for\n // that special case (in case it really is important for this\n // address to be an RTS).\n this.bios[0xD39A - (0x10000 - this.bios.length)] = 0x60; // $d39a = RTS\n }\n saveState() : AppleIIState {\n // TODO: automagic\n return {\n c: this.cpu.saveState(),\n ram: this.ram.slice(),\n kbdlatch: this.kbdlatch,\n soundstate: this.soundstate,\n grswitch: this.grparams.grswitch,\n auxRAMselected: this.auxRAMselected,\n auxRAMbank: this.auxRAMbank,\n writeinhibit: this.writeinhibit,\n slots: this.slots.map((slot) => { return slot && slot['saveState'] && slot['saveState']() }),\n inputs: null\n };\n }\n loadState(s:AppleIIState) {\n this.cpu.loadState(s.c);\n this.ram.set(s.ram);\n this.kbdlatch = s.kbdlatch;\n this.soundstate = s.soundstate;\n this.grparams.grswitch = s.grswitch;\n this.auxRAMselected = s.auxRAMselected;\n this.auxRAMbank = s.auxRAMbank;\n this.writeinhibit = s.writeinhibit;\n this.setupLanguageCardConstants();\n for (var i=0; i>8) == 0xc6) break;\n }\n // get out of $c600 boot\n for (var i=0; i<2000000; i++) {\n this.cpu.advanceClock();\n if ((this.cpu.getPC()>>8) < 0xc6) break;\n }\n }\n readConst(address: number): number {\n if (address < 0xc000) {\n return this.ram[address];\n } else if (address >= 0xd000) {\n if (!this.auxRAMselected)\n return this.bios[address - (0x10000 - this.bios.length)];\n else if (address >= 0xe000)\n return this.ram[address];\n else\n return this.ram[address + this.bank2rdoffset];\n } else if (address >= 0xc100 && address < 0xc800) {\n var slot = (address >> 8) & 7;\n return (this.slots[slot] && this.slots[slot].readConst(address & 0xff)) | 0;\n } else {\n return 0;\n }\n }\n read(address:number) : number {\n address &= 0xffff;\n if (address < 0xc000 || address >= 0xd000) {\n return this.readConst(address);\n } else if (address < 0xc100) {\n this.probe.logIORead(address, 0); // TODO: value\n var slot = (address >> 4) & 0x0f;\n switch (slot)\n {\n case 0:\n return this.kbdlatch;\n case 1:\n this.kbdlatch &= 0x7f;\n break;\n case 3:\n this.soundstate = this.soundstate ^ 1;\n break;\n case 5:\n if ((address & 0x0f) < 8) {\n // graphics\n if ((address & 1) != 0)\n this.grparams.grswitch |= 1 << ((address >> 1) & 0x07);\n else\n this.grparams.grswitch &= ~(1 << ((address >> 1) & 0x07));\n }\n break;\n case 6:\n // tapein, joystick, buttons\n switch (address & 7) {\n // buttons (off)\n case 1:\n case 2:\n case 3:\n return this.floatbus() & 0x7f;\n // joystick\n case 4:\n case 5:\n return this.floatbus() | 0x80;\n default:\n return this.floatbus();\n }\n case 7:\n // joy reset\n if (address == 0xc070)\n return this.floatbus() | 0x80;\n case 8:\n return this.doLanguageCardIO(address);\n case 9: case 10: case 11: case 12: case 13: case 14: case 15:\n return (this.slots[slot-8] && this.slots[slot-8].read(address & 0xf)) | 0;\n }\n } else if (address >= 0xc100 && address < 0xc800) {\n var slot = (address >> 8) & 7;\n return (this.slots[slot] && this.slots[slot].readROM(address & 0xff)) | 0;\n }\n return this.floatbus();\n }\n write(address:number, val:number) : void {\n address &= 0xffff;\n val &= 0xff;\n if (address < 0xc000) {\n this.ram[address] = val;\n this.grdirty[address>>7] = 1;\n } else if (address < 0xc090) {\n this.read(address); // strobe address, discard result\n } else if (address < 0xc100) {\n var slot = (address >> 4) & 0x0f;\n this.slots[slot-8] && this.slots[slot-8].write(address & 0xf, val);\n this.probe.logIOWrite(address, val);\n } else if (address >= 0xd000 && !this.writeinhibit) {\n if (address >= 0xe000)\n this.ram[address] = val;\n else\n this.ram[address + this.bank2wroffset] = val;\n }\n }\n // http://www.deater.net/weave/vmwprod/megademo/vapor_lock.html\n // https://retrocomputing.stackexchange.com/questions/14012/what-is-dram-refresh-and-why-is-the-weird-apple-ii-video-memory-layout-affected\n // http://www.apple-iigs.info/doc/fichiers/TheappleIIcircuitdescription1.pdf\n // http://rich12345.tripod.com/aiivideo/softalk.html\n // https://github.com/MiSTer-devel/Apple-II_MiSTer/blob/master/rtl/timing_generator.vhd\n floatbus() : number {\n var fcyc = this.frameCycles;\n var yline = Math.floor(fcyc / 65);\n var xcyc = Math.floor(fcyc % 65);\n var addr = this.ap2disp.getAddressForScanline(yline);\n return this.readConst(addr + xcyc);\n }\n\n connectVideo(pixels:Uint32Array) {\n super.connectVideo(pixels);\n this.ap2disp = this.pixels && new Apple2Display(this.pixels, this.grparams);\n }\n startScanline() {\n }\n drawScanline() {\n // TODO: draw scanline via ap2disp\n }\n advanceFrame(trap) : number {\n var clocks = super.advanceFrame(trap);\n this.ap2disp && this.ap2disp.updateScreen();\n return clocks;\n }\n advanceCPU() {\n this.audio.feedSample(this.soundstate, 1);\n return super.advanceCPU();\n }\n\n setKeyInput(key:number, code:number, flags:number) : void {\n console.log(`setKeyInput: ${key} ${code} ${flags}`);\n if (flags & KeyFlags.KeyDown) {\n code = 0;\n switch (key) {\n case 16: case 17: case 18: case 91:\n return; // ignore shift/ctrl/alt - don't set any key\n case 8:\n code=8; // left\n if (flags & KeyFlags.Shift) {\n // (possibly) soft reset\n this.cpu.reset();\n return;\n }\n break;\n case 13: code=13; break; // return\n case 27: code=27; break; // escape\n case 37: code=8; break; // left\n case 39: code=21; break; // right\n case 38: code=11; break; // up\n case 40: code=10; break; // down\n case 48: code = (flags & KeyFlags.Shift) ? 0x29 : 0x30; break; // ) or 0\n case 49: code = (flags & KeyFlags.Shift) ? 0x21 : 0x31; break; // ! or 1\n case 50: code = (flags & KeyFlags.Shift) ? 0x40 : 0x32; break; // @ or 2\n case 51: code = (flags & KeyFlags.Shift) ? 0x23 : 0x33; break; // # or 3\n case 52: code = (flags & KeyFlags.Shift) ? 0x24 : 0x34; break; // $ or 4\n case 53: code = (flags & KeyFlags.Shift) ? 0x25 : 0x35; break; // % or 5\n case 54: code = (flags & KeyFlags.Shift) ? 0x5e : 0x36; break; // ^ or 6\n case 55: code = (flags & KeyFlags.Shift) ? 0x26 : 0x37; break; // & or 7\n case 56: code = (flags & KeyFlags.Shift) ? 0x2a : 0x38; break; // * or 8\n case 57: code = (flags & KeyFlags.Shift) ? 0x28 : 0x39; break; // ( or 9\n case 61: code = (flags & KeyFlags.Shift) ? 0x5f : 0x2d; break; // _ or -\n case 173: code = (flags & KeyFlags.Shift) ? 0x2b : 0x3d; break; // + or =\n case 59: code = (flags & KeyFlags.Shift) ? 0x3a : 0x3b; break; // : or ;\n case 186: code = (flags & KeyFlags.Shift) ? 0x3a : 0x3b; break; // : or ;\n case 187: code = (flags & KeyFlags.Shift) ? 0x2b : 0x3d; break; // + or =\n case 188: code = (flags & KeyFlags.Shift) ? 0x3c : 0x2c; break;\n case 189: code = (flags & KeyFlags.Shift) ? 0x5f : 0x2d; break; // _ or -\n case 190: code = (flags & KeyFlags.Shift) ? 0x3e : 0x2e; break;\n case 191: code = (flags & KeyFlags.Shift) ? 0x3f : 0x2f; break;\n case 222: code = (flags & KeyFlags.Shift) ? 0x22 : 0x27; break;\n default:\n code = key;\n // convert to uppercase for Apple ][\n if (code >= 0x61 && code <= 0x7a) code -= 32;\n // convert to control codes if Ctrl pressed\n if (code >= 65 && code < 65+26) {\n if (flags & KeyFlags.Ctrl) code -= 64; // ctrl\n }\n }\n if (code) {\n this.kbdlatch = (code | 0x80) & 0xff;\n }\n }\n }\n \n doLanguageCardIO(address:number) {\n // TODO: require two writes in a row for some things\n switch (address & 0x0f) {\n // Select aux RAM bank 2, write protected.\n case 0x0:\n case 0x4:\n this.auxRAMselected = true;\n this.auxRAMbank = 2;\n this.writeinhibit = true;\n break;\n // Select ROM, write enable aux RAM bank 2.\n case 0x1:\n case 0x5:\n this.auxRAMselected = false;\n this.auxRAMbank = 2;\n this.writeinhibit = false;\n break;\n // Select ROM, write protect aux RAM (either bank).\n case 0x2:\n case 0x6:\n case 0xA:\n case 0xE:\n this.auxRAMselected = false;\n this.writeinhibit = true;\n break;\n // Select aux RAM bank 2, write enabled.\n case 0x3:\n case 0x7:\n this.auxRAMselected = true;\n this.auxRAMbank = 2;\n this.writeinhibit = false;\n break;\n // Select aux RAM bank 1, write protected.\n case 0x8:\n case 0xC:\n this.auxRAMselected = true;\n this.auxRAMbank = 1;\n this.writeinhibit = true;\n break;\n // Select ROM, write enable aux RAM bank 1.\n case 0x9:\n case 0xD:\n this.auxRAMselected = false;\n this.auxRAMbank = 1;\n this.writeinhibit = false;\n break;\n // Select aux RAM bank 1, write enabled.\n case 0xB:\n case 0xF:\n this.auxRAMselected = true;\n this.auxRAMbank = 1;\n this.writeinhibit = false;\n break;\n }\n this.setupLanguageCardConstants();\n return this.floatbus();\n }\n\n setupLanguageCardConstants() {\n // reset language card constants\n if (this.auxRAMbank == 2)\n this.bank2rdoffset = -0x1000; // map 0xd000-0xdfff -> 0xc000-0xcfff\n else\n this.bank2rdoffset = 0x3000; // map 0xd000-0xdfff -> 0x10000-0x10fff\n if (this.auxRAMbank == 2)\n this.bank2wroffset = -0x1000; // map 0xd000-0xdfff -> 0xc000-0xcfff\n else\n this.bank2wroffset = 0x3000; // map 0xd000-0xdfff -> 0x10000-0x10fff\n }\n\n getDebugCategories() {\n return ['CPU','Stack','I/O','Disk'];\n }\n getDebugInfo(category:string, state:AppleIIState) {\n switch (category) {\n case 'I/O': return \"AUX RAM Bank: \" + state.auxRAMbank + \n \"\\nAUX RAM Select: \" + state.auxRAMselected +\n \"\\nAUX RAM Write: \" + !state.writeinhibit +\n \"\\n\\nGR Switches: \" + printFlags(state.grswitch, [\"Graphics\",\"Mixed\",\"Page2\",\"Hires\"], false) +\n \"\\n\";\n case 'Disk': return (this.slots[6] && this.slots[6]['toLongString'] && this.slots[6]['toLongString']()) || \"\\n\";\n }\n }\n}\n\nconst GR_TXMODE = 1;\nconst GR_MIXMODE = 2;\nconst GR_PAGE1 = 4;\nconst GR_HIRES = 8;\n\ntype AppleGRParams = {dirty:boolean[], grswitch:number, mem:Uint8Array};\n\nvar Apple2Display = function(pixels : Uint32Array, apple : AppleGRParams) {\n var XSIZE = 280;\n var YSIZE = 192;\n var PIXELON = 0xffffffff;\n var PIXELOFF = 0xff000000;\n\n var oldgrmode = -1;\n var textbuf = new Array(40*24);\n\n const flashInterval = 250;\n\n // https://mrob.com/pub/xapple2/colors.html\n const loresColor = [\n RGBA(0, 0, 0),\n RGBA(227, 30, 96),\n RGBA(96, 78, 189),\n RGBA(255, 68, 253),\n RGBA(0, 163, 96),\n RGBA(156, 156, 156),\n RGBA(20, 207, 253),\n RGBA(208, 195, 255),\n RGBA(96, 114, 3),\n RGBA(255, 106, 60),\n RGBA(156, 156, 156),\n RGBA(255, 160, 208),\n RGBA(20, 245, 60),\n RGBA(208, 221, 141),\n RGBA(114, 255, 208),\n RGBA(255, 255, 255)\n ];\n\n const text_lut = [\n 0x000, 0x080, 0x100, 0x180, 0x200, 0x280, 0x300, 0x380,\n 0x028, 0x0a8, 0x128, 0x1a8, 0x228, 0x2a8, 0x328, 0x3a8,\n 0x050, 0x0d0, 0x150, 0x1d0, 0x250, 0x2d0, 0x350, 0x3d0\n ];\n\n const hires_lut = [\n 0x0000, 0x0400, 0x0800, 0x0c00, 0x1000, 0x1400, 0x1800, 0x1c00,\n 0x0080, 0x0480, 0x0880, 0x0c80, 0x1080, 0x1480, 0x1880, 0x1c80,\n 0x0100, 0x0500, 0x0900, 0x0d00, 0x1100, 0x1500, 0x1900, 0x1d00,\n 0x0180, 0x0580, 0x0980, 0x0d80, 0x1180, 0x1580, 0x1980, 0x1d80,\n 0x0200, 0x0600, 0x0a00, 0x0e00, 0x1200, 0x1600, 0x1a00, 0x1e00,\n 0x0280, 0x0680, 0x0a80, 0x0e80, 0x1280, 0x1680, 0x1a80, 0x1e80,\n 0x0300, 0x0700, 0x0b00, 0x0f00, 0x1300, 0x1700, 0x1b00, 0x1f00,\n 0x0380, 0x0780, 0x0b80, 0x0f80, 0x1380, 0x1780, 0x1b80, 0x1f80,\n 0x0028, 0x0428, 0x0828, 0x0c28, 0x1028, 0x1428, 0x1828, 0x1c28,\n 0x00a8, 0x04a8, 0x08a8, 0x0ca8, 0x10a8, 0x14a8, 0x18a8, 0x1ca8,\n 0x0128, 0x0528, 0x0928, 0x0d28, 0x1128, 0x1528, 0x1928, 0x1d28,\n 0x01a8, 0x05a8, 0x09a8, 0x0da8, 0x11a8, 0x15a8, 0x19a8, 0x1da8,\n 0x0228, 0x0628, 0x0a28, 0x0e28, 0x1228, 0x1628, 0x1a28, 0x1e28,\n 0x02a8, 0x06a8, 0x0aa8, 0x0ea8, 0x12a8, 0x16a8, 0x1aa8, 0x1ea8,\n 0x0328, 0x0728, 0x0b28, 0x0f28, 0x1328, 0x1728, 0x1b28, 0x1f28,\n 0x03a8, 0x07a8, 0x0ba8, 0x0fa8, 0x13a8, 0x17a8, 0x1ba8, 0x1fa8,\n 0x0050, 0x0450, 0x0850, 0x0c50, 0x1050, 0x1450, 0x1850, 0x1c50,\n 0x00d0, 0x04d0, 0x08d0, 0x0cd0, 0x10d0, 0x14d0, 0x18d0, 0x1cd0,\n 0x0150, 0x0550, 0x0950, 0x0d50, 0x1150, 0x1550, 0x1950, 0x1d50,\n 0x01d0, 0x05d0, 0x09d0, 0x0dd0, 0x11d0, 0x15d0, 0x19d0, 0x1dd0,\n 0x0250, 0x0650, 0x0a50, 0x0e50, 0x1250, 0x1650, 0x1a50, 0x1e50,\n 0x02d0, 0x06d0, 0x0ad0, 0x0ed0, 0x12d0, 0x16d0, 0x1ad0, 0x1ed0,\n 0x0350, 0x0750, 0x0b50, 0x0f50, 0x1350, 0x1750, 0x1b50, 0x1f50,\n 0x03d0, 0x07d0, 0x0bd0, 0x0fd0, 0x13d0, 0x17d0, 0x1bd0, 0x1fd0,\n // just for floating bus, y >= 192\n 0x0078, 0x0478, 0x0878, 0x0c78, 0x1078, 0x1478, 0x1878, 0x1c78,\n 0x00f8, 0x04f8, 0x08f8, 0x0cf8, 0x10f8, 0x14f8, 0x18f8, 0x1cf8,\n 0x0178, 0x0578, 0x0978, 0x0d78, 0x1178, 0x1578, 0x1978, 0x1d78, \n 0x01f8, 0x05f8, 0x09f8, 0x0df8, 0x11f8, 0x15f8, 0x19f8, 0x1df8, \n 0x0278, 0x0678, 0x0a78, 0x0e78, 0x1278, 0x1678, 0x1a78, 0x1e78, \n 0x02f8, 0x06f8, 0x0af8, 0x0ef8, 0x12f8, 0x16f8, 0x1af8, 0x1ef8, \n 0x0378, 0x0778, 0x0b78, 0x0f78, 0x1378, 0x1778, 0x1b78, 0x1f78, \n 0x03f8, 0x07f8, 0x0bf8, 0x0ff8, 0x13f8, 0x17f8, 0x1bf8, 0x1ff8, \n 0x0000, 0x0400, 0x0800, 0x0c00, 0x1000, 0x1400,\n ];\n\n var colors_lut;\n\n /**\n * This function makes the color lookup table for hires mode.\n * We make a table of 1024 * 2 * 7 entries.\n * Why? Because we assume each color byte has 10 bits\n * (8 real bits + 1 on each side) and we need different colors\n * for odd and even addresses (2) and each byte displays 7 pixels.\n */\n {\n colors_lut = new Array(256*4*2*7);\n var i,j;\n var c1,c2,c3 = 15;\n var base = 0;\n\n // go thru odd and even\n for (j=0; j<2; j++)\n {\n // go thru 1024 values\n for (var b1=0; b1<1024; b1++)\n {\n // see if the hi bit is set\n if ((b1 & 0x80) == 0)\n {\n c1 = 3; c2 = 12; // purple & green\n } else\n {\n c1 = 6; c2 = 9; // blue & orange\n }\n // make a value consisting of:\n // the 8th bit, then bits 0-7, then the 9th bit\n var b = ((b1 & 0x100) >> 8) | ((b1 & 0x7f) << 1) |\n ((b1 & 0x200) >> 1);\n // go through each pixel\n for (i=0; i<7; i++)\n {\n var c;\n // is this pixel lit?\n if (((2<> 4];\n for (i=0; i<4; i++)\n {\n pixels[base] =\n pixels[base+1] =\n pixels[base+2] =\n pixels[base+3] =\n pixels[base+4] =\n pixels[base+5] =\n pixels[base+6] = c;\n base += XSIZE;\n }\n }\n\n function drawTextChar(x, y, b, invert)\n {\n var base = (y<<3)*XSIZE + x*7; // (x<<2) + (x<<1) + x\n var on,off;\n if (invert)\n {\n on = PIXELOFF;\n off = PIXELON;\n } else\n {\n on = PIXELON;\n off = PIXELOFF;\n }\n\n for (var yy=0; yy<8; yy++)\n {\n var chr = apple2_charset[(b<<3)+yy];\n pixels[base] = ((chr & 64) > 0)?on:off;\n pixels[base+1] = ((chr & 32) > 0)?on:off;\n pixels[base+2] = ((chr & 16) > 0)?on:off;\n pixels[base+3] = ((chr & 8) > 0)?on:off;\n pixels[base+4] = ((chr & 4) > 0)?on:off;\n pixels[base+5] = ((chr & 2) > 0)?on:off;\n pixels[base+6] = ((chr & 1) > 0)?on:off;\n base += XSIZE;\n }\n }\n\n this.getAddressForScanline = function(y:number) : number {\n var base = hires_lut[y];\n if ((apple.grswitch & GR_HIRES) && (y < 160 || !(apple.grswitch & GR_MIXMODE)))\n base = base | ((apple.grswitch & GR_PAGE1) ? 0x4000 : 0x2000);\n else\n base = (base & 0x3ff) | ((apple.grswitch & GR_PAGE1) ? 0x800 : 0x400);\n return base;\n }\n\n function drawHiresLines(y, maxy)\n {\n var yb = y*XSIZE;\n for (; y < maxy; y++)\n {\n var base = hires_lut[y] + (((apple.grswitch & GR_PAGE1) != 0) ? 0x4000 : 0x2000);\n if (!apple.dirty[base >> 7])\n {\n yb += XSIZE;\n continue;\n }\n var c1, c2;\n var b = 0;\n var b1 = apple.mem[base] & 0xff;\n for (var x1=0; x1<20; x1++)\n {\n var b2 = apple.mem[base+1] & 0xff;\n var b3 = apple.mem[base+2] & 0xff;\n var d1 = (((b&0x40)<<2) | b1 | b2<<9) & 0x3ff;\n for (var i=0; i<7; i++)\n pixels[yb+i] = colors_lut[d1*7+i];\n var d2 = (((b1&0x40)<<2) | b2 | b3<<9) & 0x3ff;\n for (var i=0; i<7; i++)\n pixels[yb+7+i] = colors_lut[d2*7+7168+i];\n yb += 14;\n base += 2;\n b = b2;\n b1 = b3;\n }\n }\n }\n\n function drawLoresLine(y)\n {\n // get the base address of this line\n var base = text_lut[y] +\n (((apple.grswitch & GR_PAGE1) != 0) ? 0x800 : 0x400);\n //\t\tif (!dirty[base >> 7])\n //\t\t return;\n for (var x=0; x<40; x++)\n {\n var b = apple.mem[base+x] & 0xff;\n // if the char. changed, draw it\n if (b != textbuf[y*40+x])\n {\n drawLoresChar(x, y, b);\n textbuf[y*40+x] = b;\n }\n }\n }\n\n function drawTextLine(y, flash)\n {\n // get the base address of this line\n var base = text_lut[y] +\n (((apple.grswitch & GR_PAGE1) != 0) ? 0x800 : 0x400);\n //\t\tif (!dirty[base >> 7])\n //\t\t return;\n for (var x=0; x<40; x++)\n {\n var b = apple.mem[base+x] & 0xff;\n var invert;\n // invert flash characters 1/2 of the time\n if (b >= 0x80)\n {\n invert = false;\n } else if (b >= 0x40)\n {\n invert = flash;\n if (flash)\n b -= 0x40;\n else\n b += 0x40;\n } else\n invert = true;\n // if the char. changed, draw it\n if (b != textbuf[y*40+x])\n {\n drawTextChar(x, y, b & 0x7f, invert);\n textbuf[y*40+x] = b;\n }\n }\n }\n\n this.updateScreen = function(totalrepaint)\n {\n var y;\n var flash = (new Date().getTime() % (flashInterval<<1)) > flashInterval;\n\n // if graphics mode changed, repaint whole screen\n if (apple.grswitch != oldgrmode)\n {\n oldgrmode = apple.grswitch;\n totalrepaint = true;\n }\n if (totalrepaint)\n {\n // clear textbuf if in text mode\n if ((apple.grswitch & GR_TXMODE) != 0 || (apple.grswitch & GR_MIXMODE) != 0)\n {\n for (y=0; y<24; y++)\n for (var x=0; x<40; x++)\n textbuf[y*40+x] = -1;\n }\n for (var i=0; i {\n emu : AppleII;\n track_data : Uint8Array;\n \n constructor(emu : AppleII, image : Uint8Array) {\n super();\n this.emu = emu;\n this.data = new Array(NUM_TRACKS);\n for (var i=0; i>1];\n else\n this.track_data = null;\n }\n \n toLongString() {\n return \"Track: \" + (this.track / 2) +\n \"\\nOffset: \" + (this.track_index) +\n \"\\nMode: \" + (this.read_mode ? \"READ\" : \"WRITE\") +\n \"\\nMotor: \" + this.motor +\n \"\\nData: \" + (this.track_data ? hex(this.track_data[this.track_index]) : '-') +\n \"\\n\";\n }\n \n read_latch() : number {\n this.track_index = (this.track_index + 1) % TRACK_SIZE;\n if (this.track_data) {\n return (this.track_data[this.track_index] & 0xff);\n } else\n return this.emu.floatbus() | 0x80;\n }\n\n write_latch(value: number) {\n this.track_index = (this.track_index + 1) % TRACK_SIZE;\n if (this.track_data != null)\n this.track_data[this.track_index] = value;\n }\n \n readROM(address) { return DISKII_PROM[address]; }\n readConst(address) { return DISKII_PROM[address]; }\n read(address) { return this.doIO(address, 0); }\n write(address, value) { this.doIO(address, value); }\n\n doIO(address, value) : number \n {\n switch (address & 0x0f)\n {\n /*\n * Turn motor phases 0 to 3 on. Turning on the previous phase + 1\n * increments the track position, turning on the previous phase - 1\n * decrements the track position. In this scheme phase 0 and 3 are\n * considered to be adjacent. The previous phase number can be\n * computed as the track number % 4.\n */\n case 0x1:\n case 0x3:\n case 0x5:\n case 0x7:\n var phase, lastphase, new_track;\n new_track = this.track;\n phase = (address >> 1) & 3;\n\n // if new phase is even and current phase is odd\n if (phase == ((new_track - 1) & 3))\n {\n if (new_track > 0)\n new_track--;\n } else\n if (phase == ((new_track + 1) & 3))\n {\n if (new_track < NUM_TRACKS*2-1)\n new_track++;\n }\n if ((new_track & 1) == 0)\n {\n this.track_data = this.data[new_track>>1];\n console.log('track', new_track/2);\n } else\n this.track_data = null;\n this.track = new_track;\n break;\n /*\n * Turn drive motor off.\n */\n case 0x8:\n this.motor = false;\n break;\n /*\n * Turn drive motor on.\n */\n case 0x9:\n this.motor = true;\n break; \n /*\n * Select drive 1.\n */\n case 0xa:\n //drive = 0;\n break;\n /*\n * Select drive 2.\n */\n case 0xb:\n //drive = 1;\n break;\n /*\n * Select write mode.\n */\n case 0xf:\n this.read_mode = false;\n /*\n * Read a disk byte if read mode is active.\n */\n case 0xC:\n if (this.read_mode)\n return this.read_latch();\n break;\n /*\n * Select read mode and read the write protect status.\n */\n case 0xE:\n this.read_mode = true;\n /*\n * Write a disk byte if write mode is active and the disk is not\n * write protected.\n */\n case 0xD:\n if (value >= 0 && !this.read_mode && !this.write_protect)\n this.write_latch(value);\n /*\n * Read the write protect status only.\n */\n return this.write_protect ? 0x80 : 0x00;\n }\n return this.emu.floatbus();\n }\n\n}\n\n/* --------------- TRACK CONVERSION ROUTINES ---------------------- */\n\n /*\n * Normal byte (lower six bits only) -> disk byte translation table.\n */\n const byte_translation = [\n 0x96, 0x97, 0x9a, 0x9b, 0x9d, 0x9e, 0x9f, 0xa6,\n 0xa7, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb2, 0xb3,\n 0xb4, 0xb5, 0xb6, 0xb7, 0xb9, 0xba, 0xbb, 0xbc,\n 0xbd, 0xbe, 0xbf, 0xcb, 0xcd, 0xce, 0xcf, 0xd3,\n 0xd6, 0xd7, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde,\n 0xdf, 0xe5, 0xe6, 0xe7, 0xe9, 0xea, 0xeb, 0xec,\n 0xed, 0xee, 0xef, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6,\n 0xf7, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff\n ];\n\n /*\n * Sector skewing table.\n */\n\n const skewing_table = [\n 0,7,14,6,13,5,12,4,11,3,10,2,9,1,8,15\n ];\n\n/*\n * Encode a 256-byte sector as SECTOR_SIZE disk bytes as follows:\n *\n * 14 sync bytes\n * 3 address header bytes\n * 8 address block bytes\n * 3 address trailer bytes\n * 6 sync bytes\n * 3 data header bytes\n * 343 data block bytes\n * 3 data trailer bytes\n */\n function nibblizeSector(vol, trk, sector, inn, in_ofs, out, i)\n {\n var loop, checksum, prev_value, value;\n var sector_buffer = new Uint8Array(258);\n value = 0;\n\n /*\n * Step 1: write 6 sync bytes (0xff's). Normally these would be\n * written as 10-bit bytes with two extra zero bits, but for the\n * purpose of emulation normal 8-bit bytes will do, since the\n * emulated drive will always be in sync.\n */\n for (loop = 0; loop < 14; loop++)\n out[i++] = 0xff;\n\n /*\n * Step 2: write the 3-byte address header (0xd5 0xaa 0x96).\n */\n out[i++] = 0xd5;\n out[i++] = 0xaa;\n out[i++] = 0x96;\n\n /*\n * Step 3: write the address block. Use 4-and-4 encoding to convert\n * the volume, track and sector and checksum into 2 disk bytes each.\n * The checksum is a simple exclusive OR of the first three values.\n */\n out[i++] = ((vol >> 1) | 0xaa);\n out[i++] = (vol | 0xaa);\n checksum = vol;\n out[i++] = ((trk >> 1) | 0xaa);\n out[i++] = (trk | 0xaa);\n checksum ^= trk;\n out[i++] = ((sector >> 1) | 0xaa);\n out[i++] = (sector | 0xaa);\n checksum ^= sector;\n out[i++] = ((checksum >> 1) | 0xaa);\n out[i++] = (checksum | 0xaa);\n\n /*\n * Step 4: write the 3-byte address trailer (0xde 0xaa 0xeb).\n */\n out[i++] = (0xde);\n out[i++] = (0xaa);\n out[i++] = (0xeb);\n\n /*\n * Step 5: write another 6 sync bytes.\n */\n for (loop = 0; loop < 6; loop++)\n out[i++] = (0xff);\n\n /*\n * Step 6: write the 3-byte data header.\n */\n out[i++] = (0xd5);\n out[i++] = (0xaa);\n out[i++] = (0xad);\n\n /*\n * Step 7: read the next 256-byte sector from the old disk image file,\n * and add two zero bytes to bring the number of bytes up to a multiple\n * of 3.\n */\n for (loop = 0; loop < 256; loop++)\n sector_buffer[loop] = inn[loop + in_ofs] & 0xff;\n sector_buffer[256] = 0;\n sector_buffer[257] = 0; \n\n /*\n * Step 8: write the first 86 disk bytes of the data block, which\n * encodes the bottom two bits of each sector byte into six-bit\n * values as follows:\n *\n * disk byte n, bit 0 = sector byte n, bit 1\n * disk byte n, bit 1 = sector byte n, bit 0\n * disk byte n, bit 2 = sector byte n + 86, bit 1\n * disk byte n, bit 3 = sector byte n + 86, bit 0\n * disk byte n, bit 4 = sector byte n + 172, bit 1\n * disk byte n, bit 5 = sector byte n + 172, bit 0\n *\n * The scheme allows each pair of bits to be shifted to the right out\n * of the disk byte, then shifted to the left into the sector byte.\n *\n * Before the 6-bit value is translated to a disk byte, it is exclusive\n * ORed with the previous 6-bit value, hence the values written are\n * really a running checksum.\n */\n prev_value = 0;\n for (loop = 0; loop < 86; loop++)\n {\n value = (sector_buffer[loop] & 0x01) << 1;\n value |= (sector_buffer[loop] & 0x02) >> 1;\n value |= (sector_buffer[loop + 86] & 0x01) << 3;\n value |= (sector_buffer[loop + 86] & 0x02) << 1;\n value |= (sector_buffer[loop + 172] & 0x01) << 5;\n value |= (sector_buffer[loop + 172] & 0x02) << 3;\n out[i++] = (byte_translation[value ^ prev_value]);\n prev_value = value;\n } \n\n /*\n * Step 9: write the last 256 disk bytes of the data block, which\n * encodes the top six bits of each sector byte. Again, each value\n * is exclusive ORed with the previous value to create a running\n * checksum (the first value is exclusive ORed with the last value of\n * the previous step).\n */\n\n for (loop = 0; loop < 256; loop++)\n {\n value = (sector_buffer[loop] >> 2);\n out[i++] = (byte_translation[value ^ prev_value]);\n prev_value = value;\n }\n\n /*\n * Step 10: write the last value as the checksum.\n */\n out[i++] = (byte_translation[value]);\n\n /*\n * Step 11: write the 3-byte data trailer.\n */\n out[i++] = (0xde);\n out[i++] = (0xaa);\n out[i++] = (0xeb);\n\n }\n\n function nibblizeTrack(vol, trk, inn)\n {\n var out = new Uint8Array(TRACK_SIZE);\n var out_pos = 0;\n for (var sector = 0; sector < 16; sector++) {\n nibblizeSector(vol, trk, sector,\n inn, skewing_table[sector] << 8,\n out, out_pos);\n out_pos += SECTOR_SIZE;\n }\n while (out_pos < TRACK_SIZE)\n out[out_pos++] = (0xff);\n return out;\n }\n\n\n", "\nimport { Platform, Preset, getOpcodeMetadata_6502, getToolForFilename_6502 } from \"../common/baseplatform\";\nimport { PLATFORMS } from \"../common/emu\";\nimport { AppleII } from \"../machine/apple2\";\nimport { Base6502MachinePlatform } from \"../common/baseplatform\";\nimport { CodeAnalyzer_apple2 } from \"../common/analysis\";\nimport { BaseMAME6502Platform } from \"../common/mameplatform\";\n\nconst APPLE2_PRESETS : Preset[] = [\n {id:'sieve.c', name:'Sieve', category:\"C\"},\n {id:'keyboardtest.c', name:'Keyboard Test'},\n {id:'mandel.c', name:'Mandelbrot'},\n {id:'tgidemo.c', name:'TGI Graphics Demo'},\n {id:'Eliza.c', name:'Eliza'},\n {id:'siegegame.c', name:'Siege Game'},\n {id:'cosmic.c', name:'Cosmic Impalas'},\n {id:'farmhouse.c', name:\"Farmhouse Adventure\"},\n {id:'yum.c', name:\"Yum Dice Game\"},\n {id:'lz4test.c', name:\"LZ4 Decompressor\"},\n {id:'hgrtest.a', name:\"HGR Test\", category:\"Assembly Language\"},\n {id:'conway.a', name:\"Conway's Game of Life\"},\n {id:'lz4fh.a', name:\"LZ4FH Decompressor\"},\n {id:'deltamod.dasm', name:\"Delta Modulation Audio\"},\n// {id:'zap.dasm', name:\"ZAP!\"},\n// {id:'tb_6502.s', name:'Tom Bombem (assembler game)'},\n];\n\n/// MAME support\n\nclass Apple2MAMEPlatform extends BaseMAME6502Platform implements Platform {\n\n start () {\n this.startModule(this.mainElement, {\n jsfile:'mame8bitpc.js',\n biosfile:['apple2e.zip'],\n //cfgfile:'nes.cfg',\n driver:'apple2e',\n width:280*2,\n height:192*2,\n //romfn:'/emulator/cart.nes',\n //romsize:romSize,\n //romdata:new lzgmini().decode(lzgRom).slice(0, romSize),\n preInit:function(_self) {\n },\n });\n }\n\n getOpcodeMetadata = getOpcodeMetadata_6502;\n getDefaultExtension () { return \".c\"; };\n getToolForFilename = getToolForFilename_6502;\n\n getPresets () { return APPLE2_PRESETS; }\n\n loadROM (title, data) {\n this.loadROMFile(data);\n // TODO\n }\n}\n\n///\n\nclass NewApple2Platform extends Base6502MachinePlatform implements Platform {\n\n newMachine() { return new AppleII(); }\n getPresets() { return APPLE2_PRESETS; }\n getDefaultExtension() { return \".c\"; };\n readAddress(a) { return this.machine.readConst(a); }\n // TODO loadBIOS(bios)\t{ this.machine.loadBIOS(a); }\n getMemoryMap = function() { return { main:[\n {name:'Zero Page RAM',start:0x0,size:0x100,type:'ram'},\n {name:'Line Input RAM',start:0x200,size:0x100,type:'ram'},\n {name:'RAM',start:0x300,size:0xc0,type:'ram'},\n {name:'DOS Vectors',start:0x3c0,size:0x40,type:'ram'},\n {name:'Text/Lores Page 1',start:0x400,size:0x400,type:'ram'},\n {name:'RAM',start:0x800,size:0x1800,type:'ram'},\n {name:'Hires Page 1',start:0x2000,size:0x2000,type:'ram'},\n {name:'Hires Page 2',start:0x4000,size:0x2000,type:'ram'},\n {name:'RAM',start:0x6000,size:0x6000,type:'ram'},\n {name:'I/O',start:0xc000,size:0x1000,type:'io'},\n {name:'ROM',start:0xd000,size:0x3000,type:'rom'},\n ] } };\n getROMExtension(rom:Uint8Array) {\n if (rom && rom.length == 35*16*256) return \".dsk\"; // DSK image\n return \".bin\";\n };\n getToolForFilename = (fn:string) : string => {\n if (fn.endsWith(\".lnk\")) return \"merlin32\";\n else return getToolForFilename_6502(fn);\n }\n /*\n newCodeAnalyzer() {\n return new CodeAnalyzer_apple2(this);\n }\n getOriginPC() {\n return 0x803; // TODO?\n }\n */\n}\n\nPLATFORMS['apple2.mame'] = Apple2MAMEPlatform;\nPLATFORMS['apple2'] = NewApple2Platform;\n"], + "mappings": "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,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,EAAK,GAAK,GAAK,EAAK,EAAK,EAAK,EACnC,EAAK,GAAK,EAAK,EAAK,EAAK,EAAK,EAAK,GACnC,EAAK,EAAK,EAAK,EAAK,GAAK,GAAK,EAAK,EACnC,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,GACnC,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EACnC,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EACnC,EAAK,GAAK,GAAK,GAAK,EAAK,EAAK,EAAK,EACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,EACnC,EAAK,GAAK,GAAK,EAAK,EAAK,GAAK,GAAK,EACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EACnC,EAAK,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,EACnC,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EACnC,EAAK,EAAK,GAAK,GAAK,EAAK,GAAK,GAAK,EACnC,EAAK,EAAK,EAAK,EAAK,GAAK,EAAK,EAAK,EACnC,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,GACnC,EAAK,EAAK,EAAK,EAAK,GAAK,EAAK,EAAK,EACnC,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EACnC,EAAK,EAAK,EAAK,EAAK,EAAK,GAAK,GAAK,EACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,EAAK,GAAK,EAAK,EAAK,EAAK,EAAK,GACnC,EAAK,GAAK,GAAK,EAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,EAAK,EAAK,GAAK,EAAK,GAAK,GACnC,EAAK,EAAK,GAAK,GAAK,GAAK,GAAK,EAAK,EACnC,EAAK,GAAK,GAAK,GAAK,EAAK,EAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,EAAK,EAAK,EAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,EAAK,EAAK,GACnC,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EACnC,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,GACnC,EAAK,EAAK,EAAK,GAAK,GAAK,GAAK,EAAK,EACnC,EAAK,EAAK,EAAK,GAAK,EAAK,GAAK,EAAK,EACnC,EAAK,GAAK,EAAK,EAAK,EAAK,EAAK,EAAK,GACnC,EAAK,GAAK,GAAK,EAAK,EAAK,EAAK,EAAK,EACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,EAAK,EAAK,EAAK,EAAK,EAAK,GACnC,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,EAAK,GAAK,GACnC,EAAK,GAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,EACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,EAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,EAAK,EAAK,EAAK,EACnC,EAAK,GAAK,EAAK,EAAK,EAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,EAAK,GAAK,GAAK,EAAK,EAAK,EAAK,EACnC,EAAK,GAAK,EAAK,EAAK,EAAK,EAAK,EAAK,GACnC,EAAK,EAAK,EAAK,EAAK,GAAK,GAAK,EAAK,EACnC,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,GACnC,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EACnC,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EACnC,EAAK,GAAK,GAAK,GAAK,EAAK,EAAK,EAAK,EACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,EACnC,EAAK,GAAK,GAAK,EAAK,EAAK,GAAK,GAAK,EACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EACnC,EAAK,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,EACnC,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EACnC,EAAK,EAAK,GAAK,GAAK,EAAK,GAAK,GAAK,EACnC,EAAK,EAAK,EAAK,EAAK,GAAK,EAAK,EAAK,EACnC,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,GACnC,EAAK,EAAK,EAAK,EAAK,GAAK,EAAK,EAAK,EACnC,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EACnC,EAAK,EAAK,EAAK,EAAK,EAAK,GAAK,GAAK,EACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,EAAK,GAAK,EAAK,EAAK,EAAK,EAAK,GACnC,EAAK,GAAK,GAAK,EAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,EAAK,EAAK,GAAK,EAAK,GAAK,GACnC,EAAK,EAAK,GAAK,GAAK,GAAK,GAAK,EAAK,EACnC,EAAK,GAAK,GAAK,GAAK,EAAK,EAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,EAAK,EAAK,EAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,EAAK,EAAK,GACnC,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EACnC,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,GACnC,EAAK,EAAK,EAAK,GAAK,GAAK,GAAK,EAAK,EACnC,EAAK,EAAK,EAAK,GAAK,EAAK,GAAK,EAAK,EACnC,EAAK,GAAK,EAAK,EAAK,EAAK,EAAK,EAAK,GACnC,EAAK,GAAK,GAAK,EAAK,EAAK,EAAK,EAAK,EACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,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", + "names": [] +} diff --git a/gen/apple2-POKAQJIT.js.map b/gen/apple2-POKAQJIT.js.map deleted file mode 100644 index 9c8cd2a8..00000000 --- a/gen/apple2-POKAQJIT.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../src/machine/apple2.ts", "../src/platform/apple2.ts"], - "sourcesContent": ["\nimport { MOS6502, MOS6502State } from \"../common/cpu/MOS6502\";\nimport { Bus, BasicScanlineMachine, SavesState, AcceptsBIOS } from \"../common/devices\";\nimport { KeyFlags } from \"../common/emu\"; // TODO\nimport { hex, lzgmini, stringToByteArray, RGBA, printFlags, arrayCompare } from \"../common/util\";\n\ninterface AppleIIStateBase {\n ram : Uint8Array;\n soundstate : number;\n auxRAMselected,writeinhibit : boolean;\n auxRAMbank : number;\n}\n\ninterface AppleIIControlsState {\n inputs : Uint8Array; // unused?\n kbdlatch : number;\n}\n\ninterface AppleIIState extends AppleIIStateBase, AppleIIControlsState {\n c : MOS6502State;\n grswitch : number;\n slots: SlotDevice[];\n}\n\ninterface SlotDevice extends Bus {\n readROM(address: number) : number;\n readConst(address: number) : number;\n}\n\nexport class AppleII extends BasicScanlineMachine implements AcceptsBIOS {\n\n // approx: http://www.cs.columbia.edu/~sedwards/apple2fpga/\n cpuFrequency = 1022727;\n sampleRate = this.cpuFrequency;\n cpuCyclesPerLine = 65;\n cpuCyclesPerFrame = this.cpuCyclesPerLine * 262;\n canvasWidth = 280;\n numVisibleScanlines = 192;\n numTotalScanlines = 262;\n defaultROMSize = 0x13000; // we'll never need one that big, but...\n\n // these are set later\n LOAD_BASE = 0;\n HDR_SIZE = 0;\n\n ram = new Uint8Array(0x13000); // 64K + 16K LC RAM - 4K hardware + 12K ROM\n bios : Uint8Array;\n cpu = new MOS6502();\n grdirty = new Array(0xc000 >> 7);\n grparams = {dirty:this.grdirty, grswitch:GR_TXMODE, mem:this.ram};\n ap2disp;\n kbdlatch = 0;\n soundstate = 0;\n // language card switches\n auxRAMselected = false;\n auxRAMbank = 1;\n writeinhibit = true;\n // value to add when reading & writing each of these banks\n // bank 1 is E000-FFFF, bank 2 is D000-DFFF\n bank2rdoffset=0;\n bank2wroffset=0;\n // disk II\n slots : SlotDevice[] = new Array(8);\n // fake disk drive that loads program into RAM\n fakeDrive : SlotDevice = {\n readROM: (a) => {\n var pc = this.cpu.getPC();\n if (pc >= 0xC600 && pc < 0xC700) {\n // We're reading code to EXECUTE.\n // Load the built program directly into memory, and \"read\"\n // a JMP directly to it.\n //console.log(`fakeDrive (EXEC): ${a.toString(16)}`);\n switch (a) {\n // JMP VM_BASE\n case 0:\n // SHOULD load program into RAM here, but have to do it\n // below instead.\n return 0;\n case 1: return this.LOAD_BASE&0xff;\n case 2: return (this.LOAD_BASE>>8)&0xff;\n default: return 0;\n }\n }\n else {\n // We're reading code, but not executing it.\n // This is probably the Monitor routine to identify whether\n // this slot is a Disk ][ drive, so... give it what it wants.\n //console.log(`fakeDrive (NOEX): ${a.toString(16)}`);\n switch (a) {\n case 0:\n // Actually, if we get here, we probably ARE being\n // executed. For some reason, the instruction at $C600\n // gets read for execution, BEFORE the PC gets set to\n // the correct location. So we handle loading the program\n // into RAM and returning the JMP here, instead of above\n // where it would otherwise belong.\n if (this.rom) {\n this.loadRAMWithProgram();\n }\n return 0x4c; // JMP\n case 1: return 0x20;\n case 3: return 0x00;\n case 5: return 0x03;\n case 7: return 0x3c;\n default: return 0;\n }\n }\n },\n readConst: (a) => {\n return 0;\n },\n read: (a) => { return this.floatbus(); },\n write: (a,v) => { }\n };\n\n constructor() {\n super();\n this.loadBIOS(new lzgmini().decode(stringToByteArray(atob(APPLEIIGO_LZG))));\n this.connectCPUMemoryBus(this);\n // This line is inappropriate for real ROMs, but was there for\n // the APPLE][GO ROM, so keeping it only in the constructor, for\n // that special case (in case it really is important for this\n // address to be an RTS).\n this.bios[0xD39A - (0x10000 - this.bios.length)] = 0x60; // $d39a = RTS\n }\n saveState() : AppleIIState {\n // TODO: automagic\n return {\n c: this.cpu.saveState(),\n ram: this.ram.slice(),\n kbdlatch: this.kbdlatch,\n soundstate: this.soundstate,\n grswitch: this.grparams.grswitch,\n auxRAMselected: this.auxRAMselected,\n auxRAMbank: this.auxRAMbank,\n writeinhibit: this.writeinhibit,\n slots: this.slots.map((slot) => { return slot && slot['saveState'] && slot['saveState']() }),\n inputs: null\n };\n }\n loadState(s:AppleIIState) {\n this.cpu.loadState(s.c);\n this.ram.set(s.ram);\n this.kbdlatch = s.kbdlatch;\n this.soundstate = s.soundstate;\n this.grparams.grswitch = s.grswitch;\n this.auxRAMselected = s.auxRAMselected;\n this.auxRAMbank = s.auxRAMbank;\n this.writeinhibit = s.writeinhibit;\n this.setupLanguageCardConstants();\n for (var i=0; i>8) == 0xc6) break;\n }\n // get out of $c600 boot\n for (var i=0; i<2000000; i++) {\n this.cpu.advanceClock();\n if ((this.cpu.getPC()>>8) < 0xc6) break;\n }\n }\n readConst(address: number): number {\n if (address < 0xc000) {\n return this.ram[address];\n } else if (address >= 0xd000) {\n if (!this.auxRAMselected)\n return this.bios[address - (0x10000 - this.bios.length)];\n else if (address >= 0xe000)\n return this.ram[address];\n else\n return this.ram[address + this.bank2rdoffset];\n } else if (address >= 0xc100 && address < 0xc800) {\n var slot = (address >> 8) & 7;\n return (this.slots[slot] && this.slots[slot].readConst(address & 0xff)) | 0;\n } else {\n return 0;\n }\n }\n read(address:number) : number {\n address &= 0xffff;\n if (address < 0xc000 || address >= 0xd000) {\n return this.readConst(address);\n } else if (address < 0xc100) {\n this.probe.logIORead(address, 0); // TODO: value\n var slot = (address >> 4) & 0x0f;\n switch (slot)\n {\n case 0:\n return this.kbdlatch;\n case 1:\n this.kbdlatch &= 0x7f;\n break;\n case 3:\n this.soundstate = this.soundstate ^ 1;\n break;\n case 5:\n if ((address & 0x0f) < 8) {\n // graphics\n if ((address & 1) != 0)\n this.grparams.grswitch |= 1 << ((address >> 1) & 0x07);\n else\n this.grparams.grswitch &= ~(1 << ((address >> 1) & 0x07));\n }\n break;\n case 6:\n // tapein, joystick, buttons\n switch (address & 7) {\n // buttons (off)\n case 1:\n case 2:\n case 3:\n return this.floatbus() & 0x7f;\n // joystick\n case 4:\n case 5:\n return this.floatbus() | 0x80;\n default:\n return this.floatbus();\n }\n case 7:\n // joy reset\n if (address == 0xc070)\n return this.floatbus() | 0x80;\n case 8:\n return this.doLanguageCardIO(address);\n case 9: case 10: case 11: case 12: case 13: case 14: case 15:\n return (this.slots[slot-8] && this.slots[slot-8].read(address & 0xf)) | 0;\n }\n } else if (address >= 0xc100 && address < 0xc800) {\n var slot = (address >> 8) & 7;\n return (this.slots[slot] && this.slots[slot].readROM(address & 0xff)) | 0;\n }\n return this.floatbus();\n }\n write(address:number, val:number) : void {\n address &= 0xffff;\n val &= 0xff;\n if (address < 0xc000) {\n this.ram[address] = val;\n this.grdirty[address>>7] = 1;\n } else if (address < 0xc090) {\n this.read(address); // strobe address, discard result\n } else if (address < 0xc100) {\n var slot = (address >> 4) & 0x0f;\n this.slots[slot-8] && this.slots[slot-8].write(address & 0xf, val);\n this.probe.logIOWrite(address, val);\n } else if (address >= 0xd000 && !this.writeinhibit) {\n if (address >= 0xe000)\n this.ram[address] = val;\n else\n this.ram[address + this.bank2wroffset] = val;\n }\n }\n // http://www.deater.net/weave/vmwprod/megademo/vapor_lock.html\n // https://retrocomputing.stackexchange.com/questions/14012/what-is-dram-refresh-and-why-is-the-weird-apple-ii-video-memory-layout-affected\n // http://www.apple-iigs.info/doc/fichiers/TheappleIIcircuitdescription1.pdf\n // http://rich12345.tripod.com/aiivideo/softalk.html\n // https://github.com/MiSTer-devel/Apple-II_MiSTer/blob/master/rtl/timing_generator.vhd\n floatbus() : number {\n var fcyc = this.frameCycles;\n var yline = Math.floor(fcyc / 65);\n var xcyc = Math.floor(fcyc % 65);\n var addr = this.ap2disp.getAddressForScanline(yline);\n return this.readConst(addr + xcyc);\n }\n\n connectVideo(pixels:Uint32Array) {\n super.connectVideo(pixels);\n this.ap2disp = this.pixels && new Apple2Display(this.pixels, this.grparams);\n }\n startScanline() {\n }\n drawScanline() {\n // TODO: draw scanline via ap2disp\n }\n advanceFrame(trap) : number {\n var clocks = super.advanceFrame(trap);\n this.ap2disp && this.ap2disp.updateScreen();\n return clocks;\n }\n advanceCPU() {\n this.audio.feedSample(this.soundstate, 1);\n return super.advanceCPU();\n }\n\n setKeyInput(key:number, code:number, flags:number) : void {\n //console.log(`setKeyInput: ${key} ${code} ${flags}`);\n if (flags & KeyFlags.KeyDown) {\n code = 0;\n switch (key) {\n case 16: case 17: case 18:\n break; // ignore shift/ctrl/etc\n case 8:\n code=8; // left\n if (flags & KeyFlags.Shift) {\n // (possibly) soft reset\n this.cpu.reset();\n return;\n }\n break;\n case 13: code=13; break; // return\n case 27: code=27; break; // escape\n case 37: code=8; break; // left\n case 39: code=21; break; // right\n case 38: code=11; break; // up\n case 40: code=10; break; // down\n case 48: if (flags & KeyFlags.Shift) code = 0x29; break; // )\n case 49: if (flags & KeyFlags.Shift) code = 0x21; break; // !\n case 50: if (flags & KeyFlags.Shift) code = 0x40; break; // @\n case 51: if (flags & KeyFlags.Shift) code = 0x23; break; // #\n case 52: if (flags & KeyFlags.Shift) code = 0x24; break; // $\n case 53: if (flags & KeyFlags.Shift) code = 0x25; break; // %\n case 54: if (flags & KeyFlags.Shift) code = 0x5e; break; // ^\n case 55: if (flags & KeyFlags.Shift) code = 0x26; break; // &\n case 56: if (flags & KeyFlags.Shift) code = 0x2a; break; // *\n case 57: if (flags & KeyFlags.Shift) code = 0x28; break; // (\n case 61: code = (flags & KeyFlags.Shift) ? 0x2b : 0x3d; break; // +\n case 173: code = (flags & KeyFlags.Shift) ? 0x5f : 0x2d; break; // _\n case 59: code = (flags & KeyFlags.Shift) ? 0x3a : 0x3b; break;\n case 188: code = (flags & KeyFlags.Shift) ? 0x3c : 0x2c; break;\n case 190: code = (flags & KeyFlags.Shift) ? 0x3e : 0x2e; break;\n case 191: code = (flags & KeyFlags.Shift) ? 0x3f : 0x2f; break;\n case 222: code = (flags & KeyFlags.Shift) ? 0x22 : 0x27; break;\n default:\n code = key;\n // convert to uppercase for Apple ][\n if (code >= 0x61 && code <= 0x7a) code -= 32;\n // convert to control codes if Ctrl pressed\n if (code >= 65 && code < 65+26) {\n if (flags & KeyFlags.Ctrl) code -= 64; // ctrl\n }\n }\n if (code) {\n this.kbdlatch = (code | 0x80) & 0xff;\n }\n }\n }\n \n doLanguageCardIO(address:number) {\n // TODO: require two writes in a row for some things\n switch (address & 0x0f) {\n // Select aux RAM bank 2, write protected.\n case 0x0:\n case 0x4:\n this.auxRAMselected = true;\n this.auxRAMbank = 2;\n this.writeinhibit = true;\n break;\n // Select ROM, write enable aux RAM bank 2.\n case 0x1:\n case 0x5:\n this.auxRAMselected = false;\n this.auxRAMbank = 2;\n this.writeinhibit = false;\n break;\n // Select ROM, write protect aux RAM (either bank).\n case 0x2:\n case 0x6:\n case 0xA:\n case 0xE:\n this.auxRAMselected = false;\n this.writeinhibit = true;\n break;\n // Select aux RAM bank 2, write enabled.\n case 0x3:\n case 0x7:\n this.auxRAMselected = true;\n this.auxRAMbank = 2;\n this.writeinhibit = false;\n break;\n // Select aux RAM bank 1, write protected.\n case 0x8:\n case 0xC:\n this.auxRAMselected = true;\n this.auxRAMbank = 1;\n this.writeinhibit = true;\n break;\n // Select ROM, write enable aux RAM bank 1.\n case 0x9:\n case 0xD:\n this.auxRAMselected = false;\n this.auxRAMbank = 1;\n this.writeinhibit = false;\n break;\n // Select aux RAM bank 1, write enabled.\n case 0xB:\n case 0xF:\n this.auxRAMselected = true;\n this.auxRAMbank = 1;\n this.writeinhibit = false;\n break;\n }\n this.setupLanguageCardConstants();\n return this.floatbus();\n }\n\n setupLanguageCardConstants() {\n // reset language card constants\n if (this.auxRAMbank == 2)\n this.bank2rdoffset = -0x1000; // map 0xd000-0xdfff -> 0xc000-0xcfff\n else\n this.bank2rdoffset = 0x3000; // map 0xd000-0xdfff -> 0x10000-0x10fff\n if (this.auxRAMbank == 2)\n this.bank2wroffset = -0x1000; // map 0xd000-0xdfff -> 0xc000-0xcfff\n else\n this.bank2wroffset = 0x3000; // map 0xd000-0xdfff -> 0x10000-0x10fff\n }\n\n getDebugCategories() {\n return ['CPU','Stack','I/O','Disk'];\n }\n getDebugInfo(category:string, state:AppleIIState) {\n switch (category) {\n case 'I/O': return \"AUX RAM Bank: \" + state.auxRAMbank + \n \"\\nAUX RAM Select: \" + state.auxRAMselected +\n \"\\nAUX RAM Write: \" + !state.writeinhibit +\n \"\\n\\nGR Switches: \" + printFlags(state.grswitch, [\"Graphics\",\"Mixed\",\"Page2\",\"Hires\"], false) +\n \"\\n\";\n case 'Disk': return (this.slots[6] && this.slots[6]['toLongString'] && this.slots[6]['toLongString']()) || \"\\n\";\n }\n }\n}\n\nconst GR_TXMODE = 1;\nconst GR_MIXMODE = 2;\nconst GR_PAGE1 = 4;\nconst GR_HIRES = 8;\n\ntype AppleGRParams = {dirty:boolean[], grswitch:number, mem:Uint8Array};\n\nvar Apple2Display = function(pixels : Uint32Array, apple : AppleGRParams) {\n var XSIZE = 280;\n var YSIZE = 192;\n var PIXELON = 0xffffffff;\n var PIXELOFF = 0xff000000;\n\n var oldgrmode = -1;\n var textbuf = new Array(40*24);\n\n const flashInterval = 250;\n\n // https://mrob.com/pub/xapple2/colors.html\n const loresColor = [\n RGBA(0, 0, 0),\n RGBA(227, 30, 96),\n RGBA(96, 78, 189),\n RGBA(255, 68, 253),\n RGBA(0, 163, 96),\n RGBA(156, 156, 156),\n RGBA(20, 207, 253),\n RGBA(208, 195, 255),\n RGBA(96, 114, 3),\n RGBA(255, 106, 60),\n RGBA(156, 156, 156),\n RGBA(255, 160, 208),\n RGBA(20, 245, 60),\n RGBA(208, 221, 141),\n RGBA(114, 255, 208),\n RGBA(255, 255, 255)\n ];\n\n const text_lut = [\n 0x000, 0x080, 0x100, 0x180, 0x200, 0x280, 0x300, 0x380,\n 0x028, 0x0a8, 0x128, 0x1a8, 0x228, 0x2a8, 0x328, 0x3a8,\n 0x050, 0x0d0, 0x150, 0x1d0, 0x250, 0x2d0, 0x350, 0x3d0\n ];\n\n const hires_lut = [\n 0x0000, 0x0400, 0x0800, 0x0c00, 0x1000, 0x1400, 0x1800, 0x1c00,\n 0x0080, 0x0480, 0x0880, 0x0c80, 0x1080, 0x1480, 0x1880, 0x1c80,\n 0x0100, 0x0500, 0x0900, 0x0d00, 0x1100, 0x1500, 0x1900, 0x1d00,\n 0x0180, 0x0580, 0x0980, 0x0d80, 0x1180, 0x1580, 0x1980, 0x1d80,\n 0x0200, 0x0600, 0x0a00, 0x0e00, 0x1200, 0x1600, 0x1a00, 0x1e00,\n 0x0280, 0x0680, 0x0a80, 0x0e80, 0x1280, 0x1680, 0x1a80, 0x1e80,\n 0x0300, 0x0700, 0x0b00, 0x0f00, 0x1300, 0x1700, 0x1b00, 0x1f00,\n 0x0380, 0x0780, 0x0b80, 0x0f80, 0x1380, 0x1780, 0x1b80, 0x1f80,\n 0x0028, 0x0428, 0x0828, 0x0c28, 0x1028, 0x1428, 0x1828, 0x1c28,\n 0x00a8, 0x04a8, 0x08a8, 0x0ca8, 0x10a8, 0x14a8, 0x18a8, 0x1ca8,\n 0x0128, 0x0528, 0x0928, 0x0d28, 0x1128, 0x1528, 0x1928, 0x1d28,\n 0x01a8, 0x05a8, 0x09a8, 0x0da8, 0x11a8, 0x15a8, 0x19a8, 0x1da8,\n 0x0228, 0x0628, 0x0a28, 0x0e28, 0x1228, 0x1628, 0x1a28, 0x1e28,\n 0x02a8, 0x06a8, 0x0aa8, 0x0ea8, 0x12a8, 0x16a8, 0x1aa8, 0x1ea8,\n 0x0328, 0x0728, 0x0b28, 0x0f28, 0x1328, 0x1728, 0x1b28, 0x1f28,\n 0x03a8, 0x07a8, 0x0ba8, 0x0fa8, 0x13a8, 0x17a8, 0x1ba8, 0x1fa8,\n 0x0050, 0x0450, 0x0850, 0x0c50, 0x1050, 0x1450, 0x1850, 0x1c50,\n 0x00d0, 0x04d0, 0x08d0, 0x0cd0, 0x10d0, 0x14d0, 0x18d0, 0x1cd0,\n 0x0150, 0x0550, 0x0950, 0x0d50, 0x1150, 0x1550, 0x1950, 0x1d50,\n 0x01d0, 0x05d0, 0x09d0, 0x0dd0, 0x11d0, 0x15d0, 0x19d0, 0x1dd0,\n 0x0250, 0x0650, 0x0a50, 0x0e50, 0x1250, 0x1650, 0x1a50, 0x1e50,\n 0x02d0, 0x06d0, 0x0ad0, 0x0ed0, 0x12d0, 0x16d0, 0x1ad0, 0x1ed0,\n 0x0350, 0x0750, 0x0b50, 0x0f50, 0x1350, 0x1750, 0x1b50, 0x1f50,\n 0x03d0, 0x07d0, 0x0bd0, 0x0fd0, 0x13d0, 0x17d0, 0x1bd0, 0x1fd0,\n // just for floating bus, y >= 192\n 0x0078, 0x0478, 0x0878, 0x0c78, 0x1078, 0x1478, 0x1878, 0x1c78,\n 0x00f8, 0x04f8, 0x08f8, 0x0cf8, 0x10f8, 0x14f8, 0x18f8, 0x1cf8,\n 0x0178, 0x0578, 0x0978, 0x0d78, 0x1178, 0x1578, 0x1978, 0x1d78, \n 0x01f8, 0x05f8, 0x09f8, 0x0df8, 0x11f8, 0x15f8, 0x19f8, 0x1df8, \n 0x0278, 0x0678, 0x0a78, 0x0e78, 0x1278, 0x1678, 0x1a78, 0x1e78, \n 0x02f8, 0x06f8, 0x0af8, 0x0ef8, 0x12f8, 0x16f8, 0x1af8, 0x1ef8, \n 0x0378, 0x0778, 0x0b78, 0x0f78, 0x1378, 0x1778, 0x1b78, 0x1f78, \n 0x03f8, 0x07f8, 0x0bf8, 0x0ff8, 0x13f8, 0x17f8, 0x1bf8, 0x1ff8, \n 0x0000, 0x0400, 0x0800, 0x0c00, 0x1000, 0x1400,\n ];\n\n var colors_lut;\n\n /**\n * This function makes the color lookup table for hires mode.\n * We make a table of 1024 * 2 * 7 entries.\n * Why? Because we assume each color byte has 10 bits\n * (8 real bits + 1 on each side) and we need different colors\n * for odd and even addresses (2) and each byte displays 7 pixels.\n */\n {\n colors_lut = new Array(256*4*2*7);\n var i,j;\n var c1,c2,c3 = 15;\n var base = 0;\n\n // go thru odd and even\n for (j=0; j<2; j++)\n {\n // go thru 1024 values\n for (var b1=0; b1<1024; b1++)\n {\n // see if the hi bit is set\n if ((b1 & 0x80) == 0)\n {\n c1 = 3; c2 = 12; // purple & green\n } else\n {\n c1 = 6; c2 = 9; // blue & orange\n }\n // make a value consisting of:\n // the 8th bit, then bits 0-7, then the 9th bit\n var b = ((b1 & 0x100) >> 8) | ((b1 & 0x7f) << 1) |\n ((b1 & 0x200) >> 1);\n // go through each pixel\n for (i=0; i<7; i++)\n {\n var c;\n // is this pixel lit?\n if (((2<> 4];\n for (i=0; i<4; i++)\n {\n pixels[base] =\n pixels[base+1] =\n pixels[base+2] =\n pixels[base+3] =\n pixels[base+4] =\n pixels[base+5] =\n pixels[base+6] = c;\n base += XSIZE;\n }\n }\n\n function drawTextChar(x, y, b, invert)\n {\n var base = (y<<3)*XSIZE + x*7; // (x<<2) + (x<<1) + x\n var on,off;\n if (invert)\n {\n on = PIXELOFF;\n off = PIXELON;\n } else\n {\n on = PIXELON;\n off = PIXELOFF;\n }\n\n for (var yy=0; yy<8; yy++)\n {\n var chr = apple2_charset[(b<<3)+yy];\n pixels[base] = ((chr & 64) > 0)?on:off;\n pixels[base+1] = ((chr & 32) > 0)?on:off;\n pixels[base+2] = ((chr & 16) > 0)?on:off;\n pixels[base+3] = ((chr & 8) > 0)?on:off;\n pixels[base+4] = ((chr & 4) > 0)?on:off;\n pixels[base+5] = ((chr & 2) > 0)?on:off;\n pixels[base+6] = ((chr & 1) > 0)?on:off;\n base += XSIZE;\n }\n }\n\n this.getAddressForScanline = function(y:number) : number {\n var base = hires_lut[y];\n if ((apple.grswitch & GR_HIRES) && (y < 160 || !(apple.grswitch & GR_MIXMODE)))\n base = base | ((apple.grswitch & GR_PAGE1) ? 0x4000 : 0x2000);\n else\n base = (base & 0x3ff) | ((apple.grswitch & GR_PAGE1) ? 0x800 : 0x400);\n return base;\n }\n\n function drawHiresLines(y, maxy)\n {\n var yb = y*XSIZE;\n for (; y < maxy; y++)\n {\n var base = hires_lut[y] + (((apple.grswitch & GR_PAGE1) != 0) ? 0x4000 : 0x2000);\n if (!apple.dirty[base >> 7])\n {\n yb += XSIZE;\n continue;\n }\n var c1, c2;\n var b = 0;\n var b1 = apple.mem[base] & 0xff;\n for (var x1=0; x1<20; x1++)\n {\n var b2 = apple.mem[base+1] & 0xff;\n var b3 = apple.mem[base+2] & 0xff;\n var d1 = (((b&0x40)<<2) | b1 | b2<<9) & 0x3ff;\n for (var i=0; i<7; i++)\n pixels[yb+i] = colors_lut[d1*7+i];\n var d2 = (((b1&0x40)<<2) | b2 | b3<<9) & 0x3ff;\n for (var i=0; i<7; i++)\n pixels[yb+7+i] = colors_lut[d2*7+7168+i];\n yb += 14;\n base += 2;\n b = b2;\n b1 = b3;\n }\n }\n }\n\n function drawLoresLine(y)\n {\n // get the base address of this line\n var base = text_lut[y] +\n (((apple.grswitch & GR_PAGE1) != 0) ? 0x800 : 0x400);\n //\t\tif (!dirty[base >> 7])\n //\t\t return;\n for (var x=0; x<40; x++)\n {\n var b = apple.mem[base+x] & 0xff;\n // if the char. changed, draw it\n if (b != textbuf[y*40+x])\n {\n drawLoresChar(x, y, b);\n textbuf[y*40+x] = b;\n }\n }\n }\n\n function drawTextLine(y, flash)\n {\n // get the base address of this line\n var base = text_lut[y] +\n (((apple.grswitch & GR_PAGE1) != 0) ? 0x800 : 0x400);\n //\t\tif (!dirty[base >> 7])\n //\t\t return;\n for (var x=0; x<40; x++)\n {\n var b = apple.mem[base+x] & 0xff;\n var invert;\n // invert flash characters 1/2 of the time\n if (b >= 0x80)\n {\n invert = false;\n } else if (b >= 0x40)\n {\n invert = flash;\n if (flash)\n b -= 0x40;\n else\n b += 0x40;\n } else\n invert = true;\n // if the char. changed, draw it\n if (b != textbuf[y*40+x])\n {\n drawTextChar(x, y, b & 0x7f, invert);\n textbuf[y*40+x] = b;\n }\n }\n }\n\n this.updateScreen = function(totalrepaint)\n {\n var y;\n var flash = (new Date().getTime() % (flashInterval<<1)) > flashInterval;\n\n // if graphics mode changed, repaint whole screen\n if (apple.grswitch != oldgrmode)\n {\n oldgrmode = apple.grswitch;\n totalrepaint = true;\n }\n if (totalrepaint)\n {\n // clear textbuf if in text mode\n if ((apple.grswitch & GR_TXMODE) != 0 || (apple.grswitch & GR_MIXMODE) != 0)\n {\n for (y=0; y<24; y++)\n for (var x=0; x<40; x++)\n textbuf[y*40+x] = -1;\n }\n for (var i=0; i {\n emu : AppleII;\n track_data : Uint8Array;\n \n constructor(emu : AppleII, image : Uint8Array) {\n super();\n this.emu = emu;\n this.data = new Array(NUM_TRACKS);\n for (var i=0; i>1];\n else\n this.track_data = null;\n }\n \n toLongString() {\n return \"Track: \" + (this.track / 2) +\n \"\\nOffset: \" + (this.track_index) +\n \"\\nMode: \" + (this.read_mode ? \"READ\" : \"WRITE\") +\n \"\\nMotor: \" + this.motor +\n \"\\nData: \" + (this.track_data ? hex(this.track_data[this.track_index]) : '-') +\n \"\\n\";\n }\n \n read_latch() : number {\n this.track_index = (this.track_index + 1) % TRACK_SIZE;\n if (this.track_data) {\n return (this.track_data[this.track_index] & 0xff);\n } else\n return this.emu.floatbus() | 0x80;\n }\n\n write_latch(value: number) {\n this.track_index = (this.track_index + 1) % TRACK_SIZE;\n if (this.track_data != null)\n this.track_data[this.track_index] = value;\n }\n \n readROM(address) { return DISKII_PROM[address]; }\n readConst(address) { return DISKII_PROM[address]; }\n read(address) { return this.doIO(address, 0); }\n write(address, value) { this.doIO(address, value); }\n\n doIO(address, value) : number \n {\n switch (address & 0x0f)\n {\n /*\n * Turn motor phases 0 to 3 on. Turning on the previous phase + 1\n * increments the track position, turning on the previous phase - 1\n * decrements the track position. In this scheme phase 0 and 3 are\n * considered to be adjacent. The previous phase number can be\n * computed as the track number % 4.\n */\n case 0x1:\n case 0x3:\n case 0x5:\n case 0x7:\n var phase, lastphase, new_track;\n new_track = this.track;\n phase = (address >> 1) & 3;\n\n // if new phase is even and current phase is odd\n if (phase == ((new_track - 1) & 3))\n {\n if (new_track > 0)\n new_track--;\n } else\n if (phase == ((new_track + 1) & 3))\n {\n if (new_track < NUM_TRACKS*2-1)\n new_track++;\n }\n if ((new_track & 1) == 0)\n {\n this.track_data = this.data[new_track>>1];\n console.log('track', new_track/2);\n } else\n this.track_data = null;\n this.track = new_track;\n break;\n /*\n * Turn drive motor off.\n */\n case 0x8:\n this.motor = false;\n break;\n /*\n * Turn drive motor on.\n */\n case 0x9:\n this.motor = true;\n break; \n /*\n * Select drive 1.\n */\n case 0xa:\n //drive = 0;\n break;\n /*\n * Select drive 2.\n */\n case 0xb:\n //drive = 1;\n break;\n /*\n * Select write mode.\n */\n case 0xf:\n this.read_mode = false;\n /*\n * Read a disk byte if read mode is active.\n */\n case 0xC:\n if (this.read_mode)\n return this.read_latch();\n break;\n /*\n * Select read mode and read the write protect status.\n */\n case 0xE:\n this.read_mode = true;\n /*\n * Write a disk byte if write mode is active and the disk is not\n * write protected.\n */\n case 0xD:\n if (value >= 0 && !this.read_mode && !this.write_protect)\n this.write_latch(value);\n /*\n * Read the write protect status only.\n */\n return this.write_protect ? 0x80 : 0x00;\n }\n return this.emu.floatbus();\n }\n\n}\n\n/* --------------- TRACK CONVERSION ROUTINES ---------------------- */\n\n /*\n * Normal byte (lower six bits only) -> disk byte translation table.\n */\n const byte_translation = [\n 0x96, 0x97, 0x9a, 0x9b, 0x9d, 0x9e, 0x9f, 0xa6,\n 0xa7, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb2, 0xb3,\n 0xb4, 0xb5, 0xb6, 0xb7, 0xb9, 0xba, 0xbb, 0xbc,\n 0xbd, 0xbe, 0xbf, 0xcb, 0xcd, 0xce, 0xcf, 0xd3,\n 0xd6, 0xd7, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde,\n 0xdf, 0xe5, 0xe6, 0xe7, 0xe9, 0xea, 0xeb, 0xec,\n 0xed, 0xee, 0xef, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6,\n 0xf7, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff\n ];\n\n /*\n * Sector skewing table.\n */\n\n const skewing_table = [\n 0,7,14,6,13,5,12,4,11,3,10,2,9,1,8,15\n ];\n\n/*\n * Encode a 256-byte sector as SECTOR_SIZE disk bytes as follows:\n *\n * 14 sync bytes\n * 3 address header bytes\n * 8 address block bytes\n * 3 address trailer bytes\n * 6 sync bytes\n * 3 data header bytes\n * 343 data block bytes\n * 3 data trailer bytes\n */\n function nibblizeSector(vol, trk, sector, inn, in_ofs, out, i)\n {\n var loop, checksum, prev_value, value;\n var sector_buffer = new Uint8Array(258);\n value = 0;\n\n /*\n * Step 1: write 6 sync bytes (0xff's). Normally these would be\n * written as 10-bit bytes with two extra zero bits, but for the\n * purpose of emulation normal 8-bit bytes will do, since the\n * emulated drive will always be in sync.\n */\n for (loop = 0; loop < 14; loop++)\n out[i++] = 0xff;\n\n /*\n * Step 2: write the 3-byte address header (0xd5 0xaa 0x96).\n */\n out[i++] = 0xd5;\n out[i++] = 0xaa;\n out[i++] = 0x96;\n\n /*\n * Step 3: write the address block. Use 4-and-4 encoding to convert\n * the volume, track and sector and checksum into 2 disk bytes each.\n * The checksum is a simple exclusive OR of the first three values.\n */\n out[i++] = ((vol >> 1) | 0xaa);\n out[i++] = (vol | 0xaa);\n checksum = vol;\n out[i++] = ((trk >> 1) | 0xaa);\n out[i++] = (trk | 0xaa);\n checksum ^= trk;\n out[i++] = ((sector >> 1) | 0xaa);\n out[i++] = (sector | 0xaa);\n checksum ^= sector;\n out[i++] = ((checksum >> 1) | 0xaa);\n out[i++] = (checksum | 0xaa);\n\n /*\n * Step 4: write the 3-byte address trailer (0xde 0xaa 0xeb).\n */\n out[i++] = (0xde);\n out[i++] = (0xaa);\n out[i++] = (0xeb);\n\n /*\n * Step 5: write another 6 sync bytes.\n */\n for (loop = 0; loop < 6; loop++)\n out[i++] = (0xff);\n\n /*\n * Step 6: write the 3-byte data header.\n */\n out[i++] = (0xd5);\n out[i++] = (0xaa);\n out[i++] = (0xad);\n\n /*\n * Step 7: read the next 256-byte sector from the old disk image file,\n * and add two zero bytes to bring the number of bytes up to a multiple\n * of 3.\n */\n for (loop = 0; loop < 256; loop++)\n sector_buffer[loop] = inn[loop + in_ofs] & 0xff;\n sector_buffer[256] = 0;\n sector_buffer[257] = 0; \n\n /*\n * Step 8: write the first 86 disk bytes of the data block, which\n * encodes the bottom two bits of each sector byte into six-bit\n * values as follows:\n *\n * disk byte n, bit 0 = sector byte n, bit 1\n * disk byte n, bit 1 = sector byte n, bit 0\n * disk byte n, bit 2 = sector byte n + 86, bit 1\n * disk byte n, bit 3 = sector byte n + 86, bit 0\n * disk byte n, bit 4 = sector byte n + 172, bit 1\n * disk byte n, bit 5 = sector byte n + 172, bit 0\n *\n * The scheme allows each pair of bits to be shifted to the right out\n * of the disk byte, then shifted to the left into the sector byte.\n *\n * Before the 6-bit value is translated to a disk byte, it is exclusive\n * ORed with the previous 6-bit value, hence the values written are\n * really a running checksum.\n */\n prev_value = 0;\n for (loop = 0; loop < 86; loop++)\n {\n value = (sector_buffer[loop] & 0x01) << 1;\n value |= (sector_buffer[loop] & 0x02) >> 1;\n value |= (sector_buffer[loop + 86] & 0x01) << 3;\n value |= (sector_buffer[loop + 86] & 0x02) << 1;\n value |= (sector_buffer[loop + 172] & 0x01) << 5;\n value |= (sector_buffer[loop + 172] & 0x02) << 3;\n out[i++] = (byte_translation[value ^ prev_value]);\n prev_value = value;\n } \n\n /*\n * Step 9: write the last 256 disk bytes of the data block, which\n * encodes the top six bits of each sector byte. Again, each value\n * is exclusive ORed with the previous value to create a running\n * checksum (the first value is exclusive ORed with the last value of\n * the previous step).\n */\n\n for (loop = 0; loop < 256; loop++)\n {\n value = (sector_buffer[loop] >> 2);\n out[i++] = (byte_translation[value ^ prev_value]);\n prev_value = value;\n }\n\n /*\n * Step 10: write the last value as the checksum.\n */\n out[i++] = (byte_translation[value]);\n\n /*\n * Step 11: write the 3-byte data trailer.\n */\n out[i++] = (0xde);\n out[i++] = (0xaa);\n out[i++] = (0xeb);\n\n }\n\n function nibblizeTrack(vol, trk, inn)\n {\n var out = new Uint8Array(TRACK_SIZE);\n var out_pos = 0;\n for (var sector = 0; sector < 16; sector++) {\n nibblizeSector(vol, trk, sector,\n inn, skewing_table[sector] << 8,\n out, out_pos);\n out_pos += SECTOR_SIZE;\n }\n while (out_pos < TRACK_SIZE)\n out[out_pos++] = (0xff);\n return out;\n }\n\n\n", "\nimport { Platform, Preset, getOpcodeMetadata_6502, getToolForFilename_6502 } from \"../common/baseplatform\";\nimport { PLATFORMS } from \"../common/emu\";\nimport { AppleII } from \"../machine/apple2\";\nimport { Base6502MachinePlatform } from \"../common/baseplatform\";\nimport { CodeAnalyzer_apple2 } from \"../common/analysis\";\nimport { BaseMAME6502Platform } from \"../common/mameplatform\";\n\nconst APPLE2_PRESETS : Preset[] = [\n {id:'sieve.c', name:'Sieve', category:\"C\"},\n {id:'keyboardtest.c', name:'Keyboard Test'},\n {id:'mandel.c', name:'Mandelbrot'},\n {id:'tgidemo.c', name:'TGI Graphics Demo'},\n {id:'Eliza.c', name:'Eliza'},\n {id:'siegegame.c', name:'Siege Game'},\n {id:'cosmic.c', name:'Cosmic Impalas'},\n {id:'farmhouse.c', name:\"Farmhouse Adventure\"},\n {id:'yum.c', name:\"Yum Dice Game\"},\n {id:'lz4test.c', name:\"LZ4 Decompressor\"},\n {id:'hgrtest.a', name:\"HGR Test\", category:\"Assembly Language\"},\n {id:'conway.a', name:\"Conway's Game of Life\"},\n {id:'lz4fh.a', name:\"LZ4FH Decompressor\"},\n {id:'deltamod.dasm', name:\"Delta Modulation Audio\"},\n// {id:'zap.dasm', name:\"ZAP!\"},\n// {id:'tb_6502.s', name:'Tom Bombem (assembler game)'},\n];\n\n/// MAME support\n\nclass Apple2MAMEPlatform extends BaseMAME6502Platform implements Platform {\n\n start () {\n this.startModule(this.mainElement, {\n jsfile:'mame8bitpc.js',\n biosfile:['apple2e.zip'],\n //cfgfile:'nes.cfg',\n driver:'apple2e',\n width:280*2,\n height:192*2,\n //romfn:'/emulator/cart.nes',\n //romsize:romSize,\n //romdata:new lzgmini().decode(lzgRom).slice(0, romSize),\n preInit:function(_self) {\n },\n });\n }\n\n getOpcodeMetadata = getOpcodeMetadata_6502;\n getDefaultExtension () { return \".c\"; };\n getToolForFilename = getToolForFilename_6502;\n\n getPresets () { return APPLE2_PRESETS; }\n\n loadROM (title, data) {\n this.loadROMFile(data);\n // TODO\n }\n}\n\n///\n\nclass NewApple2Platform extends Base6502MachinePlatform implements Platform {\n\n newMachine() { return new AppleII(); }\n getPresets() { return APPLE2_PRESETS; }\n getDefaultExtension() { return \".c\"; };\n readAddress(a) { return this.machine.readConst(a); }\n // TODO loadBIOS(bios)\t{ this.machine.loadBIOS(a); }\n getMemoryMap = function() { return { main:[\n {name:'Zero Page RAM',start:0x0,size:0x100,type:'ram'},\n {name:'Line Input RAM',start:0x200,size:0x100,type:'ram'},\n {name:'RAM',start:0x300,size:0xc0,type:'ram'},\n {name:'DOS Vectors',start:0x3c0,size:0x40,type:'ram'},\n {name:'Text/Lores Page 1',start:0x400,size:0x400,type:'ram'},\n {name:'RAM',start:0x800,size:0x1800,type:'ram'},\n {name:'Hires Page 1',start:0x2000,size:0x2000,type:'ram'},\n {name:'Hires Page 2',start:0x4000,size:0x2000,type:'ram'},\n {name:'RAM',start:0x6000,size:0x6000,type:'ram'},\n {name:'I/O',start:0xc000,size:0x1000,type:'io'},\n {name:'ROM',start:0xd000,size:0x3000,type:'rom'},\n ] } };\n getROMExtension(rom:Uint8Array) {\n if (rom && rom.length == 35*16*256) return \".dsk\"; // DSK image\n return \".bin\";\n };\n getToolForFilename = (fn:string) : string => {\n if (fn.endsWith(\".lnk\")) return \"merlin32\";\n else return getToolForFilename_6502(fn);\n }\n /*\n newCodeAnalyzer() {\n return new CodeAnalyzer_apple2(this);\n }\n getOriginPC() {\n return 0x803; // TODO?\n }\n */\n}\n\nPLATFORMS['apple2.mame'] = Apple2MAMEPlatform;\nPLATFORMS['apple2'] = NewApple2Platform;\n"], - "mappings": "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D,IAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KACxD,IAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KACxD,IAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KACxD,IAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KACxD,IAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KACxD,IAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KACxD,GAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KACxD,IAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KACxD,IAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KACxD,IAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KACxD,IAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KACxD,IAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KACxD,IAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KACxD,IAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KACxD,GAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KACxD,IAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KACxD,IAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KACxD,IAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KACxD,IAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KACxD,IAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KACxD,IAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KACxD,IAAQ,IAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAExD,IAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KACxD,IAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KACxD,IAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KACxD,IAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KACxD,IAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KACxD,IAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KACxD,IAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KACxD,KAAQ,KAAQ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AAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,EAAK,EAAK,EAAK,EAAK,EAAK,GACnC,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,EAAK,GAAK,GACnC,EAAK,GAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,EACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,EAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,EAAK,EAAK,EAAK,EACnC,EAAK,GAAK,EAAK,EAAK,EAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,EAAK,GAAK,GAAK,EAAK,EAAK,EAAK,EACnC,EAAK,GAAK,EAAK,EAAK,EAAK,EAAK,EAAK,GACnC,EAAK,EAAK,EAAK,EAAK,GAAK,GAAK,EAAK,EACnC,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,GACnC,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EACnC,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EACnC,EAAK,GAAK,GAAK,GAAK,EAAK,EAAK,EAAK,EACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,EACnC,EAAK,GAAK,GAAK,EAAK,EAAK,GAAK,GAAK,EACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EACnC,EAAK,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,EACnC,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EACnC,EAAK,EAAK,GAAK,GAAK,EAAK,GAAK,GAAK,EACnC,EAAK,EAAK,EAAK,EAAK,GAAK,EAAK,EAAK,EACnC,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,GACnC,EAAK,EAAK,EAAK,EAAK,GAAK,EAAK,EAAK,EACnC,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EACnC,EAAK,EAAK,EAAK,EAAK,EAAK,GAAK,GAAK,EACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,EAAK,GAAK,EAAK,EAAK,EAAK,EAAK,GACnC,EAAK,GAAK,GAAK,EAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,EAAK,EAAK,GAAK,EAAK,GAAK,GACnC,EAAK,EAAK,GAAK,GAAK,GAAK,GAAK,EAAK,EACnC,EAAK,GAAK,GAAK,GAAK,EAAK,EAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,EAAK,EAAK,EAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,EAAK,EAAK,GACnC,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EACnC,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,GACnC,EAAK,EAAK,EAAK,GAAK,GAAK,GAAK,EAAK,EACnC,EAAK,EAAK,EAAK,GAAK,EAAK,GAAK,EAAK,EACnC,EAAK,GAAK,EAAK,EAAK,EAAK,EAAK,EAAK,GACnC,EAAK,GAAK,GAAK,EAAK,EAAK,EAAK,EAAK,EACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,EAAK,EAAK,EAAK,EAAK,EAAK,GACnC,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,EAAK,GAAK,GACnC,EAAK,GAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,EACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,EAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,EAAK,EAAK,EAAK,EACnC,EAAK,GAAK,EAAK,EAAK,EAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,EAAK,GAAK,GAAK,EAAK,EAAK,EAAK,EACnC,EAAK,GAAK,EAAK,EAAK,EAAK,EAAK,EAAK,GACnC,EAAK,EAAK,EAAK,EAAK,GAAK,GAAK,EAAK,EACnC,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,GACnC,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EACnC,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EACnC,EAAK,GAAK,GAAK,GAAK,EAAK,EAAK,EAAK,EACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,EACnC,EAAK,GAAK,GAAK,EAAK,EAAK,GAAK,GAAK,EACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EACnC,EAAK,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,EACnC,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EACnC,EAAK,EAAK,GAAK,GAAK,EAAK,GAAK,GAAK,EACnC,EAAK,EAAK,EAAK,EAAK,GAAK,EAAK,EAAK,EACnC,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,GACnC,EAAK,EAAK,EAAK,EAAK,GAAK,EAAK,EAAK,EACnC,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EACnC,EAAK,EAAK,EAAK,EAAK,EAAK,GAAK,GAAK,EACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,EAAK,GAAK,EAAK,EAAK,EAAK,EAAK,GACnC,EAAK,GAAK,GAAK,EAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,EAAK,EAAK,GAAK,EAAK,GAAK,GACnC,EAAK,EAAK,GAAK,GAAK,GAAK,GAAK,EAAK,EACnC,EAAK,GAAK,GAAK,GAAK,EAAK,EAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,EAAK,EAAK,EAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACnC,EAAK,GAAK,GAAK,GAAK,GAAK,EAAK,EAAK,GACnC,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EACnC,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,GACnC,EAAK,EAAK,EAAK,GAAK,GAAK,GAAK,EAAK,EACnC,EAAK,EAAK,EAAK,GAAK,EAAK,GAAK,EAAK,EACnC,EAAK,GAAK,EAAK,EAAK,EAAK,EAAK,EAAK,GACnC,EAAK,GAAK,GAAK,EAAK,EAAK,EAAK,EAAK,EACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IA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", - "names": [] -} diff --git a/gen/basic-B4CQ7LR5.js b/gen/basic-P524QEPR.js similarity index 99% rename from gen/basic-B4CQ7LR5.js rename to gen/basic-P524QEPR.js index 1af45db3..9dba76fe 100644 --- a/gen/basic-B4CQ7LR5.js +++ b/gen/basic-P524QEPR.js @@ -1,4 +1,4 @@ -import{b as v}from"./chunk-3XE5YOCV.js";import{a as d,t as S}from"./chunk-X7HTZJQJ.js";import"./chunk-T4FRG4BA.js";import"./chunk-B2GOFULO.js";import"./chunk-HJLNIWCH.js";import"./chunk-HOSZ5TQY.js";import{B as c,J as b,T as g,U as f,a as p}from"./chunk-RXF2JDJ3.js";import"./chunk-WAARL7ET.js";function O(o){return o.value!=null}function E(o){return o.name!=null}function N(o){return o.op!=null&&o.left!=null&&o.right!=null}function I(o){return o.op!=null&&o.expr!=null}var y=class{randomize(){this.seed(Math.random()*2147483647,Math.random()*2147483647,Math.random()*2147483647,Math.random()*2147483647)}constructor(){(()=>{var r,e,i,n;this.seed=function(s,a,u,h){r=s,e=a,i=u,n=h},this.seedfloat=function(s){this.seed(s,s*4294,s*429496,s*4294967296),this.next(),this.next(),this.next()},this.next=function(){r>>>=0,e>>>=0,i>>>=0,n>>>=0;var s=r+e|0;return r=e^e>>>9,e=i+(i<<3)|0,i=i<<21|i>>>11,n=n+1|0,s=s+n|0,i=i+s|0,(s>>>0)/4294967296}})(),this.seedfloat(-1)}},L=1024*1024,l=class{constructor(){this.margin=80;this.running=!1;this.exited=!0;this.trace=!1}load(t){let r=null,e=0;if(this.pc2label!=null){let s=this.curpc;for(;s>0&&(r=this.pc2label.get(s))==null;)s--;e=this.curpc-s,console.log("oldpc=",this.curpc,"restart @ label",r,"+",e)}this.program=t,this.opts=t.opts,this.opts.maxArrayElements||(this.opts.maxArrayElements=L),this.allstmts=t.stmts,this.label2pc=t.labels,this.label2dataptr={},this.pc2label=new Map,this.datums=[],this.subroutines={},this.builtins=this.getBuiltinFunctions();for(var i in t.labels){var n=t.labels[i];this.pc2label.set(n,i)}return this.allstmts.forEach((s,a)=>{this.curpc=a+1,this.compileStatement(s),s.command=="DATA"&&(this.label2dataptr[s.$loc.label]=this.datums.length,s.datums.forEach(u=>{this.curpc=s.$loc.offset,this.datums.push(u)}))}),this.label2pc[r]!=null?(this.curpc=this.label2pc[r]+e,!0):(this.curpc=0,!1)}reset(){this.curpc=0,this.dataptr=0,this.clearVars(),this.returnStack=[],this.column=0,this.running=!0,this.exited=!1}clearVars(){this.globals=this.vars={},this.arrays={},this.defs={},this.forLoops={},this.forLoopStack=[],this.whileLoops=[],this.rng=new y,this.opts&&this.opts.staticArrays&&this.allstmts.filter(t=>t.command=="DIM").forEach(t=>{t.args.forEach(r=>this.compileJS(this._DIM(r))())})}saveState(){return $.extend(!0,{},this)}loadState(t){$.extend(!0,this,t)}getBuiltinFunctions(){var t=this.program&&this.opts.validFunctions;t||(t=Object.getOwnPropertyNames(l.prototype).filter(i=>/^[A-Z]{3,}[$]?$/.test(i)));var r={};for(var e of t)this.supportsFunction(e)&&(r[e]=this[e].bind(this));return r}supportsFunction(t){return typeof this[t]=="function"}runtimeError(t){throw this.curpc--,new g(t,this.getCurrentSourceLocation())}dialectError(t){this.runtimeError(`I can't ${t} in this dialect of BASIC.`)}getLineForPC(t){var r=this.allstmts[t];return r&&r.$loc&&r.$loc.line}getLabelForPC(t){var r=this.allstmts[t];return r&&r.$loc&&r.$loc.label}getCurrentSourceLocation(){var t=this.getStatement();return t&&t.$loc}getCurrentLabel(){var t=this.getCurrentSourceLocation();return t&&t.label}getStatement(){return this.allstmts[this.curpc]}step(){if(!this.running)return!1;var t=this.getStatement();return t?(this.trace&&console.log(this.curpc,t,this.vars,Object.keys(this.arrays)),this.curpc++,this.executeStatement(t),this.running):(this.running=!1,this.exited=!0,!1)}compileStatement(t){if(t.$run==null)try{var r=this["do__"+t.command];r==null&&this.runtimeError(`I don't know how to "${t.command}".`);var e=r.bind(this)(t);this.trace&&console.log(e),t.$run=this.compileJS(e)}catch(i){throw e&&console.log(e),i}}compileJS(t){return new Function(t).bind(this)}executeStatement(t){this.compileStatement(t),t.$run()}skipToEOL(){do this.curpc++;while(this.curpc=0?this.curpc=r:this.runtimeError(`I tried to go to the label "${t}" but couldn't find it.`)}newLocalScope(){this.vars=Object.create(this.vars)}popLocalScope(){this.vars!==this.globals&&(this.vars=Object.getPrototypeOf(this.vars))}gosubLabel(t){this.returnStack.length>32767&&this.runtimeError("I did too many GOSUBs without a RETURN."),this.returnStack.push(this.curpc),this.gotoLabel(t)}returnFromGosub(){this.returnStack.length==0&&this.runtimeError("I tried to RETURN, but there wasn't a corresponding GOSUB.");var t=this.returnStack.pop();this.curpc=t,this.popLocalScope()}popReturnStack(){this.returnStack.length==0&&this.runtimeError("I tried to POP, but there wasn't a corresponding GOSUB."),this.returnStack.pop()}valueToString(t,r){var e;if(typeof t=="number"){var i=this.float2str(t,this.opts.printZoneLength-4);return r?i.startsWith("-")?`${i} `:` ${i} `:i}else if(t==` +import{b as v}from"./chunk-3XE5YOCV.js";import{a as d,t as S}from"./chunk-R2WG5Q3S.js";import"./chunk-T4FRG4BA.js";import"./chunk-B2GOFULO.js";import"./chunk-7U3MLVOX.js";import"./chunk-HOSZ5TQY.js";import{B as c,J as b,T as g,U as f,a as p}from"./chunk-RXF2JDJ3.js";import"./chunk-WAARL7ET.js";function O(o){return o.value!=null}function E(o){return o.name!=null}function N(o){return o.op!=null&&o.left!=null&&o.right!=null}function I(o){return o.op!=null&&o.expr!=null}var y=class{randomize(){this.seed(Math.random()*2147483647,Math.random()*2147483647,Math.random()*2147483647,Math.random()*2147483647)}constructor(){(()=>{var r,e,i,n;this.seed=function(s,a,u,h){r=s,e=a,i=u,n=h},this.seedfloat=function(s){this.seed(s,s*4294,s*429496,s*4294967296),this.next(),this.next(),this.next()},this.next=function(){r>>>=0,e>>>=0,i>>>=0,n>>>=0;var s=r+e|0;return r=e^e>>>9,e=i+(i<<3)|0,i=i<<21|i>>>11,n=n+1|0,s=s+n|0,i=i+s|0,(s>>>0)/4294967296}})(),this.seedfloat(-1)}},L=1024*1024,l=class{constructor(){this.margin=80;this.running=!1;this.exited=!0;this.trace=!1}load(t){let r=null,e=0;if(this.pc2label!=null){let s=this.curpc;for(;s>0&&(r=this.pc2label.get(s))==null;)s--;e=this.curpc-s,console.log("oldpc=",this.curpc,"restart @ label",r,"+",e)}this.program=t,this.opts=t.opts,this.opts.maxArrayElements||(this.opts.maxArrayElements=L),this.allstmts=t.stmts,this.label2pc=t.labels,this.label2dataptr={},this.pc2label=new Map,this.datums=[],this.subroutines={},this.builtins=this.getBuiltinFunctions();for(var i in t.labels){var n=t.labels[i];this.pc2label.set(n,i)}return this.allstmts.forEach((s,a)=>{this.curpc=a+1,this.compileStatement(s),s.command=="DATA"&&(this.label2dataptr[s.$loc.label]=this.datums.length,s.datums.forEach(u=>{this.curpc=s.$loc.offset,this.datums.push(u)}))}),this.label2pc[r]!=null?(this.curpc=this.label2pc[r]+e,!0):(this.curpc=0,!1)}reset(){this.curpc=0,this.dataptr=0,this.clearVars(),this.returnStack=[],this.column=0,this.running=!0,this.exited=!1}clearVars(){this.globals=this.vars={},this.arrays={},this.defs={},this.forLoops={},this.forLoopStack=[],this.whileLoops=[],this.rng=new y,this.opts&&this.opts.staticArrays&&this.allstmts.filter(t=>t.command=="DIM").forEach(t=>{t.args.forEach(r=>this.compileJS(this._DIM(r))())})}saveState(){return $.extend(!0,{},this)}loadState(t){$.extend(!0,this,t)}getBuiltinFunctions(){var t=this.program&&this.opts.validFunctions;t||(t=Object.getOwnPropertyNames(l.prototype).filter(i=>/^[A-Z]{3,}[$]?$/.test(i)));var r={};for(var e of t)this.supportsFunction(e)&&(r[e]=this[e].bind(this));return r}supportsFunction(t){return typeof this[t]=="function"}runtimeError(t){throw this.curpc--,new g(t,this.getCurrentSourceLocation())}dialectError(t){this.runtimeError(`I can't ${t} in this dialect of BASIC.`)}getLineForPC(t){var r=this.allstmts[t];return r&&r.$loc&&r.$loc.line}getLabelForPC(t){var r=this.allstmts[t];return r&&r.$loc&&r.$loc.label}getCurrentSourceLocation(){var t=this.getStatement();return t&&t.$loc}getCurrentLabel(){var t=this.getCurrentSourceLocation();return t&&t.label}getStatement(){return this.allstmts[this.curpc]}step(){if(!this.running)return!1;var t=this.getStatement();return t?(this.trace&&console.log(this.curpc,t,this.vars,Object.keys(this.arrays)),this.curpc++,this.executeStatement(t),this.running):(this.running=!1,this.exited=!0,!1)}compileStatement(t){if(t.$run==null)try{var r=this["do__"+t.command];r==null&&this.runtimeError(`I don't know how to "${t.command}".`);var e=r.bind(this)(t);this.trace&&console.log(e),t.$run=this.compileJS(e)}catch(i){throw e&&console.log(e),i}}compileJS(t){return new Function(t).bind(this)}executeStatement(t){this.compileStatement(t),t.$run()}skipToEOL(){do this.curpc++;while(this.curpc=0?this.curpc=r:this.runtimeError(`I tried to go to the label "${t}" but couldn't find it.`)}newLocalScope(){this.vars=Object.create(this.vars)}popLocalScope(){this.vars!==this.globals&&(this.vars=Object.getPrototypeOf(this.vars))}gosubLabel(t){this.returnStack.length>32767&&this.runtimeError("I did too many GOSUBs without a RETURN."),this.returnStack.push(this.curpc),this.gotoLabel(t)}returnFromGosub(){this.returnStack.length==0&&this.runtimeError("I tried to RETURN, but there wasn't a corresponding GOSUB.");var t=this.returnStack.pop();this.curpc=t,this.popLocalScope()}popReturnStack(){this.returnStack.length==0&&this.runtimeError("I tried to POP, but there wasn't a corresponding GOSUB."),this.returnStack.pop()}valueToString(t,r){var e;if(typeof t=="number"){var i=this.float2str(t,this.opts.printZoneLength-4);return r?i.startsWith("-")?`${i} `:` ${i} `:i}else if(t==` `)this.column=0,e=t;else if(t==" "){var n=this.opts.printZoneLength,s=Math.floor(this.column/n),a=(s+1)*this.opts.printZoneLength;a+n>this.margin?(this.column=0,e=` `):e=this.TAB(a)}else e=`${t}`;return e}float2str(t,r){var e=t.toString().toUpperCase();if(r>0){for(var i=r;e.length>r;)e=t.toPrecision(i--);e.startsWith("0.")?e=e.substr(1):e.startsWith("-0.")&&(e="-"+e.substr(2))}return e}printExpr(t){var r=this.valueToString(t,this.opts.numericPadding);this.column+=r.length,this.print(r)}print(t){console.log(t)}async input(t,r){return{line:"",vals:[]}}resume(){}expr2js(t,r){if(r||(r={}),O(t))return JSON.stringify(t.value);if(E(t)){if(!t.args&&r.locals&&r.locals.indexOf(t.name)>=0)return t.name;{r.isconst&&this.runtimeError("I expected a constant value here.");var e="",i=JSON.stringify(t.name);let u=t.args?t.args.map(h=>this.expr2js(h,r)).join(", "):[];return t.name.startsWith("FN")?e+=`this.getDef(${i})(${u})`:this.builtins[t.name]?(this.checkFuncArgs(t,this.builtins[t.name]),e+=`this.builtins.${t.name}(${u})`):t.args?this.opts.arraysContainChars&&t.name.endsWith("$")?e+=`this.getStringSlice(this.vars.${t.name}, ${u})`:e+=`this.arrayGet(${i}, ${u})`:e+=`this.vars.${t.name}`,r.novalid?e:`this.checkValue(${e}, ${i})`}}else if(N(t)){var n=this.expr2js(t.left,r),s=this.expr2js(t.right,r);return`this.${t.op}(${n}, ${s})`}else if(I(t)){var a=this.expr2js(t.expr,r);return`this.${t.op}(${a})`}}assign2js(t,r){r||(r={});var e="";return(t.name.startsWith("FN")||this.builtins[t.name])&&this.runtimeError("I can't call a function here."),t.args?this.opts.arraysContainChars&&t.name.endsWith("$")?this.runtimeError("I can't set array slices via this command yet."):e+=this.array2js(t,r):e=`this.globals.${t.name}`,e}array2js(t,r){var e=JSON.stringify(t.name),i=t.args||[];return this.expr2js(t,{novalid:!0})+`;this.getArray(${e}, ${i.length})`+i.map(n=>"[this.ROUND("+this.expr2js(n,r)+")]").join("")}checkFuncArgs(t,r){var e=t.args?t.args.length:0;t.name=="RND"&&e==0||t.name=="MID$"&&e==2||t.name=="INSTR"&&e==2||r.length!=e&&this.runtimeError(`I expected ${r.length} arguments for the ${t.name} function, but I got ${e}.`)}startForLoop(t,r,e,i,n){var s=this.curpc-1,a=this.pc2label.get(s);i||(i=1),this.vars[t]=r,this.trace&&console.log(`FOR ${t} = ${r} TO ${e} STEP ${i}`);var u=()=>i>=0?this.vars[t]>e:this.vars[t]h==t)),this.forLoopStack.push(t),this.forLoops[t]={$next:h=>{h&&t!=h&&this.runtimeError(`I executed NEXT "${h}", but the last FOR was for "${t}".`),this.vars[t]+=i;var m=u();m?(this.forLoopStack.pop(),delete this.forLoops[t]):this.curpc=(a!=null&&this.label2pc[a]||s)+1,this.trace&&console.log(`NEXT ${t}: ${this.vars[t]} TO ${e} STEP ${i} DONE=${m}`)}}}nextForLoop(t){var r=this.forLoops[t||this.opts.optionalNextVar&&this.forLoopStack[this.forLoopStack.length-1]];r||this.runtimeError("I couldn't find a matching FOR for this NEXT."),r.$next(t)}whileLoop(t){t?this.whileLoops.push(this.curpc-1):this.skipToAfterWend()}nextWhileLoop(){var t=this.whileLoops.pop();t==null?this.runtimeError("I couldn't find a matching WHILE for this WEND."):this.curpc=t}assign(t,r,e){return e&&t.endsWith("$")?this.checkValue(this.convert(t,r),t):t.endsWith("$")?this.convertToString(r,t):this.convertToNumber(r,t)}convert(t,r){return t.endsWith("$")?r==null?"":r.toString():typeof r=="number"?r:parseFloat(r+"")}convertToString(t,r){if(typeof t!="string")this.runtimeError(`I can't convert ${t} to a string.`);else return t}convertToNumber(t,r){if(typeof t!="number")this.runtimeError(`I can't convert ${t} to a number.`);else return this.checkNum(t)}dimArray(t,...r){if(r=r.map(Math.round),this.arrays[t]!=null){if(this.opts.staticArrays)return;this.runtimeError(`I already dimensioned this array (${t}) earlier.`)}var e=this.getTotalArrayLength(r);e>this.opts.maxArrayElements&&this.runtimeError("I can't create an array with this many elements.");var i=t.endsWith("$"),n=i?Array:Float64Array;if(r.length==1)this.arrays[t]=new n(r[0]+1);else if(r.length==2){this.arrays[t]=new Array(r[0]+1);for(var s=0;s=i.length&&this.runtimeError(`I tried to lookup ${t}(${r}) but it exceeded the dimensions of the array.`),i=i[r[n]]}return c(i)&&this.runtimeError(`I tried to lookup ${t}(${r}) but used too few dimensions.`),i}modifyStringSlice(t,r,e,i){return t=t||"",this.checkString(t),this.checkString(r),i||(i=e),e=this.ROUND(e),i=this.ROUND(i),e<1&&this.dialectError("accept a string slice index less than 1"),ir.length)&&this.runtimeError(`I needed a number between 1 and ${r.length}, but I got ${t}.`),t<1||t>r.length?0:t}onGotoLabel(t,...r){t=this.checkOnGoto(t,r),t&&this.gotoLabel(r[t-1])}onGosubLabel(t,...r){t=this.checkOnGoto(t,r),t&&this.gosubLabel(r[t-1])}nextDatum(){return this.dataptr>=this.datums.length&&this.runtimeError("I tried to READ, but ran out of data."),this.datums[this.dataptr++].value}do__PRINT(t){var r="";for(var e of t.args){var i=this.expr2js(e),n=i.name;r+=`this.printExpr(this.checkValue(${i}, ${JSON.stringify(n)}));`}return r}preInput(){this.running=!1,this.curpc--}postInput(t){t&&this.curpc++,this.running=!0,this.resume()}do__INPUT(t){var r=t.prompt!=null?this.expr2js(t.prompt):'""',e=t.elapsed!=null?this.assign2js(t.elapsed):"let ___",i="";return t.args.forEach((n,s)=>{var a=this.assign2js(n);i+=` var value = this.convert(${JSON.stringify(n.name)}, response.vals[${s}]); @@ -34,4 +34,4 @@ import{b as v}from"./chunk-3XE5YOCV.js";import{a as d,t as S}from"./chunk-X7HTZJ `),this.tty.addtext("*** END OF PROGRAM ***",1),this.tty.showPrintHead(!1)}loadROM(t,r){var e=this.runtime.exited;this.program=r;var i=this.runtime.load(r);this.tty.uppercaseOnly=!0,d.input=this.program.opts.uppercaseOnly?n=>n.toUpperCase():null,(!this.hotReload||e||!i)&&this.reset()}getROMExtension(){return".json"}reset(){this.tty.clear(),this.runtime.reset(),this.clock=0,this.transcript=[]}pause(){this.timer.stop()}resume(){this.isBlocked()||(this.animcount=0,this.timer.start())}isBlocked(){return this.tty.waitingfor!=null||this.runtime.exited}isRunning(){return this.timer.isRunning()}getDefaultExtension(){return".bas"}getToolForFilename(){return"basic"}getPresets(){return T}getPC(){return this.runtime.curpc}getSP(){return 4096-this.runtime.returnStack.length}isStable(){return!0}getCPUState(){return{PC:this.getPC(),SP:this.getSP()}}saveState(){return{c:this.getCPUState(),rt:this.runtime.saveState()}}loadState(t){this.runtime.loadState(t)}getDebugTree(){return{CurrentLine:this.runtime.getCurrentLabel(),Variables:this.runtime.vars,Arrays:this.runtime.arrays,Functions:this.runtime.defs,ForLoops:this.runtime.forLoops,WhileLoops:this.runtime.whileLoops,ReturnStack:this.runtime.returnStack,NextDatum:this.runtime.datums[this.runtime.dataptr],Clock:this.clock,Options:this.runtime.opts,Internals:this.runtime}}inspect(t){let r=this.runtime.vars[t];if(r!=null)return`${t} = ${r}`}showHelp(){return"https://8bitworkshop.com/docs/platforms/basic/"}getDebugCategories(){return["Variables"]}getDebugInfo(t,r){switch(t){case"Variables":return this.varsToLongString()}}varsToLongString(){var t="",r=Object.keys(this.runtime.vars);r.sort();for(var e of r){var i=this.runtime.vars[e],n=JSON.stringify(i);n.length>24&&(n=`${n.substr(0,24)}...(${n.length})`),t+=p(e,3)+" = "+n+` `}return t}setupDebug(t){this.onBreakpointHit=t}clearDebug(){this.onBreakpointHit=null,this.debugTrap=null}checkDebugTrap(){return this.debugTrap&&this.debugTrap()?(this.pause(),this.break(),!0):!1}break(){this.onBreakpointHit&&this.onBreakpointHit(this.saveState())}step(){var t=this.clock;this.debugTrap=()=>this.clock>t,this.resume()}stepOver(){var t=this.runtime.getStatement();if(t&&(t.command=="GOSUB"||t.command=="ONGOSUB")){var r=this.getPC()+1;this.runEval(()=>this.getPC()==r)}else this.step()}runUntilReturn(){var t=this.getSP();this.runEval(()=>this.getSP()>t)}runEval(t){this.debugTrap=()=>t(this.getCPUState()),this.resume()}restartAtPC(t){return t=Math.round(t),t>=0&&t{(function(l,e){typeof define=="function"&&define.amd?define([],e):typeof d!="undefined"?e():(e(),l.FileSaver={})})(d,function(){"use strict";function l(t,r){return typeof r=="undefined"?r={autoBom:!1}:typeof r!="object"&&(console.warn("Deprecated: Expected third argument to be a object"),r={autoBom:!r}),r.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(t.type)?new Blob(["\uFEFF",t],{type:t.type}):t}function e(t,r,c){var a=new XMLHttpRequest;a.open("GET",t),a.responseType="blob",a.onload=function(){u(a.response,r,c)},a.onerror=function(){console.error("could not download file")},a.send()}function n(t){var r=new XMLHttpRequest;r.open("HEAD",t,!1);try{r.send()}catch(c){}return 200<=r.status&&299>=r.status}function i(t){try{t.dispatchEvent(new MouseEvent("click"))}catch(c){var r=document.createEvent("MouseEvents");r.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),t.dispatchEvent(r)}}var o=typeof window=="object"&&window.window===window?window:typeof self=="object"&&self.self===self?self:typeof global=="object"&&global.global===global?global:void 0,m=o.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),u=o.saveAs||(typeof window!="object"||window!==o?function(){}:"download"in HTMLAnchorElement.prototype&&!m?function(t,r,c){var a=o.URL||o.webkitURL,s=document.createElement("a");r=r||t.name||"download",s.download=r,s.rel="noopener",typeof t=="string"?(s.href=t,s.origin===location.origin?i(s):n(s.href)?e(t,r,c):i(s,s.target="_blank")):(s.href=a.createObjectURL(t),setTimeout(function(){a.revokeObjectURL(s.href)},4e4),setTimeout(function(){i(s)},0))}:"msSaveOrOpenBlob"in navigator?function(t,r,c){if(r=r||t.name||"download",typeof t!="string")navigator.msSaveOrOpenBlob(l(t,c),r);else if(n(t))e(t,r,c);else{var a=document.createElement("a");a.href=t,a.target="_blank",setTimeout(function(){i(a)})}}:function(t,r,c,a){if(a=a||open("","_blank"),a&&(a.document.title=a.document.body.innerText="downloading..."),typeof t=="string")return e(t,r,c);var s=t.type==="application/octet-stream",g=/constructor/i.test(o.HTMLElement)||o.safari,S=/CriOS\/[\d]+/.test(navigator.userAgent);if((S||s&&g||m)&&typeof FileReader!="undefined"){var f=new FileReader;f.onloadend=function(){var p=f.result;p=S?p:p.replace(/^data:[^;]*;/,"data:attachment/file;"),a?a.location.href=p:location=p,a=null},f.readAsDataURL(t)}else{var k=o.URL||o.webkitURL,h=k.createObjectURL(t);a?a.location=h:location.href=h,a=null,setTimeout(function(){k.revokeObjectURL(h)},4e4)}});o.saveAs=u.saveAs=u,typeof v!="undefined"&&(v.exports=u)})});var y=class{constructor(e){this.checkpointInterval=10;this.maxCheckpoints=300;this.reset(),this.platform=e}reset(){this.checkpoints=[],this.framerecs=[],this.frameCount=0,this.lastSeekFrame=0,this.lastSeekStep=0,this.lastStepCount=0,this.callbackStateChanged&&this.callbackStateChanged()}frameRequested(){var e={controls:this.platform.saveControlsState(),seed:b()},n=!1;return this.lastSeekFramethis.maxCheckpoints&&(this.checkpoints.shift(),this.framerecs=this.framerecs.slice(this.checkpointInterval),this.lastSeekFrame-=this.checkpointInterval,this.frameCount-=this.checkpointInterval,this.callbackStateChanged&&this.callbackStateChanged())}getStateAtOrBefore(e){if(e<=0&&this.checkpoints.length>0)return{frame:0,state:this.checkpoints[0]};var n=Math.floor(e/this.checkpointInterval),i=n0&&this.platform.advanceFrameClock&&(n=this.platform.advanceFrameClock(null,n)),this.lastSeekFrame=e,this.lastSeekStep=n,this.lastStepCount=m,e}else return-1}loadControls(e){this.platform.loadControlsState&&this.platform.loadControlsState(this.framerecs[e].controls),w(this.framerecs[e].seed)}getLastCheckpoint(){return this.checkpoints.length&&this.checkpoints[this.checkpoints.length-1]}};function R(l){switch(l){case"apple2":return import("./apple2-POKAQJIT.js");case"arm32":return import("./arm32-YOVXZCNI.js");case"astrocade":return import("./astrocade-GGUSZACM.js");case"atari7800":return import("./atari7800-CXCAHYMV.js");case"atari8":return import("./atari8-NEYVE3NM.js");case"basic":return import("./basic-B4CQ7LR5.js");case"c64":return import("./c64-64B37DE2.js");case"coleco":return import("./coleco-N2J2NCAL.js");case"cpc":return import("./cpc-A6J3AUP4.js");case"devel":return import("./devel-5ZB3MOPT.js");case"exidy":return import("./exidy-2LYPFO3U.js");case"galaxian":return import("./galaxian-34VZTEW4.js");case"gb":return import("./gb-53MEVXZB.js");case"gameboy":return import("./gb-53MEVXZB.js");case"kim1":return import("./kim1-3JCDOY4I.js");case"markdown":return import("./markdown-ANTTQCOM.js");case"msx":return import("./msx-B6OOUSHZ.js");case"mw8080bw":return import("./mw8080bw-3O5ORABT.js");case"nes":return import("./nes-C4PZC42U.js");case"pce":return import("./pce-QKZWAOJ6.js");case"sms":return import("./sms-AQUVJELI.js");case"sound_konami":return import("./sound_konami-AO5HR7FT.js");case"sound_williams":return import("./sound_williams-F7P5GFVB.js");case"vcs":return import("./vcs-ANPXZC7S.js");case"vector":return import("./vector-RZLJFANQ.js");case"vectrex":return import("./vectrex-XANQBMYR.js");case"verilog":return import("./verilog-KR6KEVH5.js");case"vic20":return import("./vic20-KEXYJPBJ.js");case"vicdual":return import("./vicdual-XMUP7XHT.js");case"williams":return import("./williams-P43HHQRV.js");case"x86":return import("./x86-6FYJTVDF.js");case"zmachine":return import("./zmachine-BKWZLVHV.js");case"zx":return import("./zx-RDF3MOX6.js");default:throw new Error(`Platform not recognized: '${l}'`)}}export{y as a,R as b,E as c}; -//# sourceMappingURL=chunk-HJLNIWCH.js.map +import{L as b,M as w}from"./chunk-RXF2JDJ3.js";import{d as C}from"./chunk-WAARL7ET.js";var E=C((d,v)=>{(function(l,e){typeof define=="function"&&define.amd?define([],e):typeof d!="undefined"?e():(e(),l.FileSaver={})})(d,function(){"use strict";function l(t,r){return typeof r=="undefined"?r={autoBom:!1}:typeof r!="object"&&(console.warn("Deprecated: Expected third argument to be a object"),r={autoBom:!r}),r.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(t.type)?new Blob(["\uFEFF",t],{type:t.type}):t}function e(t,r,c){var a=new XMLHttpRequest;a.open("GET",t),a.responseType="blob",a.onload=function(){u(a.response,r,c)},a.onerror=function(){console.error("could not download file")},a.send()}function n(t){var r=new XMLHttpRequest;r.open("HEAD",t,!1);try{r.send()}catch(c){}return 200<=r.status&&299>=r.status}function i(t){try{t.dispatchEvent(new MouseEvent("click"))}catch(c){var r=document.createEvent("MouseEvents");r.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),t.dispatchEvent(r)}}var o=typeof window=="object"&&window.window===window?window:typeof self=="object"&&self.self===self?self:typeof global=="object"&&global.global===global?global:void 0,m=o.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),u=o.saveAs||(typeof window!="object"||window!==o?function(){}:"download"in HTMLAnchorElement.prototype&&!m?function(t,r,c){var a=o.URL||o.webkitURL,s=document.createElement("a");r=r||t.name||"download",s.download=r,s.rel="noopener",typeof t=="string"?(s.href=t,s.origin===location.origin?i(s):n(s.href)?e(t,r,c):i(s,s.target="_blank")):(s.href=a.createObjectURL(t),setTimeout(function(){a.revokeObjectURL(s.href)},4e4),setTimeout(function(){i(s)},0))}:"msSaveOrOpenBlob"in navigator?function(t,r,c){if(r=r||t.name||"download",typeof t!="string")navigator.msSaveOrOpenBlob(l(t,c),r);else if(n(t))e(t,r,c);else{var a=document.createElement("a");a.href=t,a.target="_blank",setTimeout(function(){i(a)})}}:function(t,r,c,a){if(a=a||open("","_blank"),a&&(a.document.title=a.document.body.innerText="downloading..."),typeof t=="string")return e(t,r,c);var s=t.type==="application/octet-stream",g=/constructor/i.test(o.HTMLElement)||o.safari,S=/CriOS\/[\d]+/.test(navigator.userAgent);if((S||s&&g||m)&&typeof FileReader!="undefined"){var f=new FileReader;f.onloadend=function(){var p=f.result;p=S?p:p.replace(/^data:[^;]*;/,"data:attachment/file;"),a?a.location.href=p:location=p,a=null},f.readAsDataURL(t)}else{var k=o.URL||o.webkitURL,h=k.createObjectURL(t);a?a.location=h:location.href=h,a=null,setTimeout(function(){k.revokeObjectURL(h)},4e4)}});o.saveAs=u.saveAs=u,typeof v!="undefined"&&(v.exports=u)})});var y=class{constructor(e){this.checkpointInterval=10;this.maxCheckpoints=300;this.reset(),this.platform=e}reset(){this.checkpoints=[],this.framerecs=[],this.frameCount=0,this.lastSeekFrame=0,this.lastSeekStep=0,this.lastStepCount=0,this.callbackStateChanged&&this.callbackStateChanged()}frameRequested(){var e={controls:this.platform.saveControlsState(),seed:b()},n=!1;return this.lastSeekFramethis.maxCheckpoints&&(this.checkpoints.shift(),this.framerecs=this.framerecs.slice(this.checkpointInterval),this.lastSeekFrame-=this.checkpointInterval,this.frameCount-=this.checkpointInterval,this.callbackStateChanged&&this.callbackStateChanged())}getStateAtOrBefore(e){if(e<=0&&this.checkpoints.length>0)return{frame:0,state:this.checkpoints[0]};var n=Math.floor(e/this.checkpointInterval),i=n0&&this.platform.advanceFrameClock&&(n=this.platform.advanceFrameClock(null,n)),this.lastSeekFrame=e,this.lastSeekStep=n,this.lastStepCount=m,e}else return-1}loadControls(e){this.platform.loadControlsState&&this.platform.loadControlsState(this.framerecs[e].controls),w(this.framerecs[e].seed)}getLastCheckpoint(){return this.checkpoints.length&&this.checkpoints[this.checkpoints.length-1]}};function R(l){switch(l){case"apple2":return import("./apple2-F3TCBBE3.js");case"arm32":return import("./arm32-YOVXZCNI.js");case"astrocade":return import("./astrocade-GGUSZACM.js");case"atari7800":return import("./atari7800-CXCAHYMV.js");case"atari8":return import("./atari8-NEYVE3NM.js");case"basic":return import("./basic-P524QEPR.js");case"c64":return import("./c64-64B37DE2.js");case"coleco":return import("./coleco-N2J2NCAL.js");case"cpc":return import("./cpc-A6J3AUP4.js");case"devel":return import("./devel-LCSOTPUJ.js");case"exidy":return import("./exidy-2LYPFO3U.js");case"galaxian":return import("./galaxian-34VZTEW4.js");case"gb":return import("./gb-53MEVXZB.js");case"gameboy":return import("./gb-53MEVXZB.js");case"kim1":return import("./kim1-3JCDOY4I.js");case"markdown":return import("./markdown-ANTTQCOM.js");case"msx":return import("./msx-B6OOUSHZ.js");case"mw8080bw":return import("./mw8080bw-3O5ORABT.js");case"nes":return import("./nes-C4PZC42U.js");case"pce":return import("./pce-QKZWAOJ6.js");case"sms":return import("./sms-AQUVJELI.js");case"sound_konami":return import("./sound_konami-AO5HR7FT.js");case"sound_williams":return import("./sound_williams-F7P5GFVB.js");case"vcs":return import("./vcs-ANPXZC7S.js");case"vector":return import("./vector-RZLJFANQ.js");case"vectrex":return import("./vectrex-XANQBMYR.js");case"verilog":return import("./verilog-KR6KEVH5.js");case"vic20":return import("./vic20-KEXYJPBJ.js");case"vicdual":return import("./vicdual-XMUP7XHT.js");case"williams":return import("./williams-P43HHQRV.js");case"x86":return import("./x86-6FYJTVDF.js");case"zmachine":return import("./zmachine-BKWZLVHV.js");case"zx":return import("./zx-RDF3MOX6.js");default:throw new Error(`Platform not recognized: '${l}'`)}}export{y as a,R as b,E as c}; +//# sourceMappingURL=chunk-7U3MLVOX.js.map diff --git a/gen/chunk-HJLNIWCH.js.map b/gen/chunk-7U3MLVOX.js.map similarity index 100% rename from gen/chunk-HJLNIWCH.js.map rename to gen/chunk-7U3MLVOX.js.map diff --git a/gen/chunk-X7HTZJQJ.js b/gen/chunk-R2WG5Q3S.js similarity index 99% rename from gen/chunk-X7HTZJQJ.js rename to gen/chunk-R2WG5Q3S.js index eff48a43..dfa5f17e 100644 --- a/gen/chunk-X7HTZJQJ.js +++ b/gen/chunk-R2WG5Q3S.js @@ -1,4 +1,4 @@ -import{a as Mn,b as Oi,c as ql}from"./chunk-T4FRG4BA.js";import{a as qs}from"./chunk-B2GOFULO.js";import{a as Ys,b as Xs,c as Yl}from"./chunk-HJLNIWCH.js";import{D as Pa,J as ka,l as ee,u as Gs,v as Vs}from"./chunk-HOSZ5TQY.js";import{A as gi,E as qt,F as Sa,G as Mi,H as Fn,I as Bs,J as Aa,T as Ca,V as js,a as br,b as qi,ba as In,ca as zs,d as Ot,da as Yi,e as Ta,f as Tt,g as Ne,k as Us,m as Pn,n as kn,o as Dn,p as mi,q as Ws,t as Rn,w as $s,x as Hs,y as Ln,z as Nt}from"./chunk-RXF2JDJ3.js";import{c as Vi,d as Ea,e as _a}from"./chunk-WAARL7ET.js";var Ra=Ea((Qs,Da)=>{(function(l){if(typeof Qs=="object"&&typeof Da!="undefined")Da.exports=l();else if(typeof define=="function"&&define.amd)define([],l);else{var t;typeof window!="undefined"?t=window:typeof global!="undefined"?t=global:typeof self!="undefined"?t=self:t=this,t.localforage=l()}})(function(){var l,t,r;return function a(u,d,m){function y(W,le){if(!d[W]){if(!u[W]){var H=typeof Vi=="function"&&Vi;if(!le&&H)return H(W,!0);if(b)return b(W,!0);var U=new Error("Cannot find module '"+W+"'");throw U.code="MODULE_NOT_FOUND",U}var B=d[W]={exports:{}};u[W][0].call(B.exports,function(ce){var Q=u[W][1][ce];return y(Q||ce)},B,B.exports,a,u,d,m)}return d[W].exports}for(var b=typeof Vi=="function"&&Vi,D=0;D=43)}}).catch(function(){return!1})}function De(p){return typeof ke=="boolean"?H.resolve(ke):J(p).then(function(E){return ke=E,ke})}function et(p){var E=he[p.name],g={};g.promise=new H(function(A,k){g.resolve=A,g.reject=k}),E.deferredOperations.push(g),E.dbReady?E.dbReady=E.dbReady.then(function(){return g.promise}):E.dbReady=g.promise}function Me(p){var E=he[p.name],g=E.deferredOperations.pop();if(g)return g.resolve(),g.promise}function ve(p,E){var g=he[p.name],A=g.deferredOperations.pop();if(A)return A.reject(E),A.promise}function Qe(p,E){return new H(function(g,A){if(he[p.name]=he[p.name]||qe(),p.db)if(E)et(p),p.db.close();else return g(p.db);var k=[p.name];E&&k.push(p.version);var S=D.open.apply(D,k);E&&(S.onupgradeneeded=function(M){var j=S.result;try{j.createObjectStore(p.storeName),M.oldVersion<=1&&j.createObjectStore(we)}catch(q){if(q.name==="ConstraintError")console.warn('The database "'+p.name+'" has been upgraded from version '+M.oldVersion+" to version "+M.newVersion+', but the storage "'+p.storeName+'" already exists.');else throw q}}),S.onerror=function(M){M.preventDefault(),A(S.error)},S.onsuccess=function(){var M=S.result;M.onversionchange=function(j){j.target.close()},g(M),Me(p)}})}function St(p){return Qe(p,!1)}function wr(p){return Qe(p,!0)}function mt(p,E){if(!p.db)return!0;var g=!p.db.objectStoreNames.contains(p.storeName),A=p.versionp.db.version;if(A&&(p.version!==E&&console.warn('The database "'+p.name+`" can't be downgraded from version `+p.db.version+" to version "+p.version+"."),p.version=p.db.version),k||g){if(g){var S=p.db.version+1;S>p.version&&(p.version=S)}return!0}return!1}function Er(p){return new H(function(E,g){var A=new FileReader;A.onerror=g,A.onloadend=function(k){var S=btoa(k.target.result||"");E({__local_forage_encoded_blob:!0,data:S,type:p.type})},A.readAsBinaryString(p)})}function gt(p){var E=ue(atob(p.data));return le([E],{type:p.type})}function Kr(p){return p&&p.__local_forage_encoded_blob}function Zr(p){var E=this,g=E._initReady().then(function(){var A=he[E._dbInfo.name];if(A&&A.dbReady)return A.dbReady});return B(g,p,p),g}function Ve(p){et(p);for(var E=he[p.name],g=E.forages,A=0;A0&&(!p.db||S.name==="InvalidStateError"||S.name==="NotFoundError"))return H.resolve().then(function(){if(!p.db||S.name==="NotFoundError"&&!p.db.objectStoreNames.contains(p.storeName)&&p.version<=p.db.version)return p.db&&(p.version=p.db.version+1),wr(p)}).then(function(){return Ve(p).then(function(){vt(p,E,g,A-1)})}).catch(g);g(S)}}function qe(){return{forages:[],db:null,dbReady:null,deferredOperations:[]}}function Ci(p){var E=this,g={db:null};if(p)for(var A in p)g[A]=p[A];var k=he[g.name];k||(k=qe(),he[g.name]=k),k.forages.push(E),E._initReady||(E._initReady=E.ready,E.ready=Zr);var S=[];function M(){return H.resolve()}for(var j=0;j>4,z[k++]=(M&15)<<4|j>>2,z[k++]=(j&3)<<6|q&63;return Y}function jt(p){var E=new Uint8Array(p),g="",A;for(A=0;A>2],g+=ut[(E[A]&3)<<4|E[A+1]>>4],g+=ut[(E[A+1]&15)<<2|E[A+2]>>6],g+=ut[E[A+2]&63];return E.length%3==2?g=g.substring(0,g.length-1)+"=":E.length%3==1&&(g=g.substring(0,g.length-2)+"=="),g}function fr(p,E){var g="";if(p&&(g=At.call(p)),p&&(g==="[object ArrayBuffer]"||p.buffer&&At.call(p.buffer)==="[object ArrayBuffer]")){var A,k=Zt;p instanceof ArrayBuffer?(A=p,k+=ct):(A=p.buffer,g==="[object Int8Array]"?k+=Bt:g==="[object Uint8Array]"?k+=te:g==="[object Uint8ClampedArray]"?k+=Ge:g==="[object Int16Array]"?k+=tr:g==="[object Uint16Array]"?k+=ii:g==="[object Int32Array]"?k+=ri:g==="[object Uint32Array]"?k+=Wr:g==="[object Float32Array]"?k+=Ar:g==="[object Float64Array]"?k+=rr:E(new Error("Failed to get type for BinaryArray"))),E(k+jt(A))}else if(g==="[object Blob]"){var S=new FileReader;S.onload=function(){var M=ot+p.type+"~"+jt(this.result);E(Zt+er+M)},S.readAsArrayBuffer(p)}else try{E(JSON.stringify(p))}catch(M){console.error("Couldn't convert value into a JSON string: ",p),E(null,M)}}function $r(p){if(p.substring(0,Ur)!==Zt)return JSON.parse(p);var E=p.substring(ft),g=p.substring(Ur,ft),A;if(g===er&&Sr.test(E)){var k=E.match(Sr);A=k[1],E=E.substring(k[0].length)}var S=nt(E);switch(g){case ct:return S;case er:return le([S],{type:A});case Bt:return new Int8Array(S);case te:return new Uint8Array(S);case Ge:return new Uint8ClampedArray(S);case tr:return new Int16Array(S);case ii:return new Uint16Array(S);case ri:return new Int32Array(S);case Wr:return new Uint32Array(S);case Ar:return new Float32Array(S);case rr:return new Float64Array(S);default:throw new Error("Unkown type: "+g)}}var Hr={serialize:fr,deserialize:$r,stringToBuffer:nt,bufferToString:jt};function Cr(p,E,g,A){p.executeSql("CREATE TABLE IF NOT EXISTS "+E.storeName+" (id INTEGER PRIMARY KEY, key unique, value)",[],g,A)}function Wt(p){var E=this,g={db:null};if(p)for(var A in p)g[A]=typeof p[A]!="string"?p[A].toString():p[A];var k=new H(function(S,M){try{g.db=openDatabase(g.name,String(g.version),g.description,g.size)}catch(j){return M(j)}g.db.transaction(function(j){Cr(j,g,function(){E._dbInfo=g,S()},function(q,Y){M(Y)})},M)});return g.serializer=Hr,k}function yt(p,E,g,A,k,S){p.executeSql(g,A,k,function(M,j){j.code===j.SYNTAX_ERR?M.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name = ?",[E.storeName],function(q,Y){Y.rows.length?S(q,j):Cr(q,E,function(){q.executeSql(g,A,k,S)},S)},S):S(M,j)},S)}function dr(p,E){var g=this;p=ce(p);var A=new H(function(k,S){g.ready().then(function(){var M=g._dbInfo;M.db.transaction(function(j){yt(j,M,"SELECT * FROM "+M.storeName+" WHERE key = ? LIMIT 1",[p],function(q,Y){var z=Y.rows.length?Y.rows.item(0).value:null;z&&(z=M.serializer.deserialize(z)),k(z)},function(q,Y){S(Y)})})}).catch(S)});return U(A,E),A}function ki(p,E){var g=this,A=new H(function(k,S){g.ready().then(function(){var M=g._dbInfo;M.db.transaction(function(j){yt(j,M,"SELECT * FROM "+M.storeName,[],function(q,Y){for(var z=Y.rows,ne=z.length,xe=0;xe0){M(dt.apply(k,[p,q,g,A-1]));return}j(xe)}})})}).catch(j)});return U(S,g),S}function Pe(p,E,g){return dt.apply(this,[p,E,g,1])}function zt(p,E){var g=this;p=ce(p);var A=new H(function(k,S){g.ready().then(function(){var M=g._dbInfo;M.db.transaction(function(j){yt(j,M,"DELETE FROM "+M.storeName+" WHERE key = ?",[p],function(){k()},function(q,Y){S(Y)})})}).catch(S)});return U(A,E),A}function $i(p){var E=this,g=new H(function(A,k){E.ready().then(function(){var S=E._dbInfo;S.db.transaction(function(M){yt(M,S,"DELETE FROM "+S.storeName,[],function(){A()},function(j,q){k(q)})})}).catch(k)});return U(g,p),g}function ni(p){var E=this,g=new H(function(A,k){E.ready().then(function(){var S=E._dbInfo;S.db.transaction(function(M){yt(M,S,"SELECT COUNT(key) as c FROM "+S.storeName,[],function(j,q){var Y=q.rows.item(0).c;A(Y)},function(j,q){k(q)})})}).catch(k)});return U(g,p),g}function Br(p,E){var g=this,A=new H(function(k,S){g.ready().then(function(){var M=g._dbInfo;M.db.transaction(function(j){yt(j,M,"SELECT key FROM "+M.storeName+" WHERE id = ? LIMIT 1",[p+1],function(q,Y){var z=Y.rows.length?Y.rows.item(0).key:null;k(z)},function(q,Y){S(Y)})})}).catch(S)});return U(A,E),A}function ir(p){var E=this,g=new H(function(A,k){E.ready().then(function(){var S=E._dbInfo;S.db.transaction(function(M){yt(M,S,"SELECT key FROM "+S.storeName,[],function(j,q){for(var Y=[],z=0;z '__WebKitDatabaseInfoTable__'",[],function(k,S){for(var M=[],j=0;j0}function Ri(p){var E=this,g={};if(p)for(var A in p)g[A]=p[A];return g.keyPrefix=si(p,E._defaultConfig),zr()?(E._dbInfo=g,g.serializer=Hr,H.resolve()):H.reject()}function $t(p){var E=this,g=E.ready().then(function(){for(var A=E._dbInfo.keyPrefix,k=localStorage.length-1;k>=0;k--){var S=localStorage.key(k);S.indexOf(A)===0&&localStorage.removeItem(S)}});return U(g,p),g}function oi(p,E){var g=this;p=ce(p);var A=g.ready().then(function(){var k=g._dbInfo,S=localStorage.getItem(k.keyPrefix+p);return S&&(S=k.serializer.deserialize(S)),S});return U(A,E),A}function Li(p,E){var g=this,A=g.ready().then(function(){for(var k=g._dbInfo,S=k.keyPrefix,M=S.length,j=localStorage.length,q=1,Y=0;Y=0;M--){var j=localStorage.key(M);j.indexOf(S)===0&&localStorage.removeItem(j)}}):k=H.reject("Invalid arguments"),U(k,E),k}var ie={_driver:"localStorageWrapper",_initStorage:Ri,_support:jr(),iterate:Li,getItem:oi,setItem:T,removeItem:ae,clear:$t,length:ui,key:ar,keys:li,dropInstance:V},Fe=function(E,g){return E===g||typeof E=="number"&&typeof g=="number"&&isNaN(E)&&isNaN(g)},tt=function(E,g){for(var A=E.length,k=0;k{(function(l,t){"use strict";typeof Un=="object"&&typeof Un.exports=="object"?Un.exports=l.document?t(l,!0):function(r){if(!r.document)throw new Error("jQuery requires a window with a document");return t(r)}:t(l)})(typeof window!="undefined"?window:eo,function(l,t){"use strict";var r=[],a=Object.getPrototypeOf,u=r.slice,d=r.flat?function(e){return r.flat.call(e)}:function(e){return r.concat.apply([],e)},m=r.push,y=r.indexOf,b={},D=b.toString,W=b.hasOwnProperty,le=W.toString,H=le.call(Object),U={},B=function(i){return typeof i=="function"&&typeof i.nodeType!="number"&&typeof i.item!="function"},ce=function(i){return i!=null&&i===i.window},Q=l.document,we={type:!0,src:!0,nonce:!0,noModule:!0};function ke(e,i,n){n=n||Q;var o,c,f=n.createElement("script");if(f.text=e,i)for(o in we)c=i[o]||i.getAttribute&&i.getAttribute(o),c&&f.setAttribute(o,c);n.head.appendChild(f).parentNode.removeChild(f)}function he(e){return e==null?e+"":typeof e=="object"||typeof e=="function"?b[D.call(e)]||"object":typeof e}var de="3.7.1",He=/HTML$/i,s=function(e,i){return new s.fn.init(e,i)};s.fn=s.prototype={jquery:de,constructor:s,length:0,toArray:function(){return u.call(this)},get:function(e){return e==null?u.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var i=s.merge(this.constructor(),e);return i.prevObject=this,i},each:function(e){return s.each(this,e)},map:function(e){return this.pushStack(s.map(this,function(i,n){return e.call(i,n,i)}))},slice:function(){return this.pushStack(u.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(s.grep(this,function(e,i){return(i+1)%2}))},odd:function(){return this.pushStack(s.grep(this,function(e,i){return i%2}))},eq:function(e){var i=this.length,n=+e+(e<0?i:0);return this.pushStack(n>=0&&n0&&i-1 in e}function J(e,i){return e.nodeName&&e.nodeName.toLowerCase()===i.toLowerCase()}var De=r.pop,et=r.sort,Me=r.splice,ve="[\\x20\\t\\r\\n\\f]",Qe=new RegExp("^"+ve+"+|((?:^|[^\\\\])(?:\\\\.)*)"+ve+"+$","g");s.contains=function(e,i){var n=i&&i.parentNode;return e===n||!!(n&&n.nodeType===1&&(e.contains?e.contains(n):e.compareDocumentPosition&&e.compareDocumentPosition(n)&16))};var St=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;function wr(e,i){return i?e==="\0"?"\uFFFD":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e}s.escapeSelector=function(e){return(e+"").replace(St,wr)};var mt=Q,Er=m;(function(){var e,i,n,o,c,f=Er,h,w,x,C,I,N=s.expando,L=0,G=0,ge=Tn(),Re=Tn(),Ee=Tn(),pt=Tn(),at=function(v,_){return v===_&&(c=!0),0},hr="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",pr="(?:\\\\[\\da-fA-F]{1,6}"+ve+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",Ce="\\["+ve+"*("+pr+")(?:"+ve+"*([*^$|!~]?=)"+ve+`*(?:'((?:\\\\.|[^\\\\'])*)'|"((?:\\\\.|[^\\\\"])*)"|(`+pr+"))|)"+ve+"*\\]",hi=":("+pr+`)(?:\\((('((?:\\\\.|[^\\\\'])*)'|"((?:\\\\.|[^\\\\"])*)")|((?:\\\\.|[^\\\\()[\\]]|`+Ce+")*)|.*)\\)|)",Le=new RegExp(ve+"+","g"),Je=new RegExp("^"+ve+"*,"+ve+"*"),ji=new RegExp("^"+ve+"*([>+~]|"+ve+")"+ve+"*"),pa=new RegExp(ve+"|>"),mr=new RegExp(hi),zi=new RegExp("^"+pr+"$"),gr={ID:new RegExp("^#("+pr+")"),CLASS:new RegExp("^\\.("+pr+")"),TAG:new RegExp("^("+pr+"|[*])"),ATTR:new RegExp("^"+Ce),PSEUDO:new RegExp("^"+hi),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ve+"*(even|odd|(([+-]|)(\\d*)n|)"+ve+"*(?:([+-]|)"+ve+"*(\\d+)|))"+ve+"*\\)|)","i"),bool:new RegExp("^(?:"+hr+")$","i"),needsContext:new RegExp("^"+ve+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ve+"*((?:-\\d)?\\d*)"+ve+"*\\)|)(?=[^-]|$)","i")},Vr=/^(?:input|select|textarea|button)$/i,qr=/^h\d$/i,Gt=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ma=/[+~]/,Dr=new RegExp("\\\\[\\da-fA-F]{1,6}"+ve+"?|\\\\([^\\r\\n\\f])","g"),Rr=function(v,_){var R="0x"+v.slice(1)-65536;return _||(R<0?String.fromCharCode(R+65536):String.fromCharCode(R>>10|55296,R&1023|56320))},$l=function(){Yr()},Hl=An(function(v){return v.disabled===!0&&J(v,"fieldset")},{dir:"parentNode",next:"legend"});function Bl(){try{return h.activeElement}catch(v){}}try{f.apply(r=u.call(mt.childNodes),mt.childNodes),r[mt.childNodes.length].nodeType}catch(v){f={apply:function(_,R){Er.apply(_,u.call(R))},call:function(_){Er.apply(_,u.call(arguments,1))}}}function We(v,_,R,F){var O,X,K,se,Z,Te,pe,be=_&&_.ownerDocument,Se=_?_.nodeType:9;if(R=R||[],typeof v!="string"||!v||Se!==1&&Se!==9&&Se!==11)return R;if(!F&&(Yr(_),_=_||h,x)){if(Se!==11&&(Z=Gt.exec(v)))if(O=Z[1]){if(Se===9)if(K=_.getElementById(O)){if(K.id===O)return f.call(R,K),R}else return R;else if(be&&(K=be.getElementById(O))&&We.contains(_,K)&&K.id===O)return f.call(R,K),R}else{if(Z[2])return f.apply(R,_.getElementsByTagName(v)),R;if((O=Z[3])&&_.getElementsByClassName)return f.apply(R,_.getElementsByClassName(O)),R}if(!pt[v+" "]&&(!C||!C.test(v))){if(pe=v,be=_,Se===1&&(pa.test(v)||ji.test(v))){for(be=ma.test(v)&&va(_.parentNode)||_,(be!=_||!U.scope)&&((se=_.getAttribute("id"))?se=s.escapeSelector(se):_.setAttribute("id",se=N)),Te=Gi(v),X=Te.length;X--;)Te[X]=(se?"#"+se:":scope")+" "+Sn(Te[X]);pe=Te.join(",")}try{return f.apply(R,be.querySelectorAll(pe)),R}catch(fe){pt(v,!0)}finally{se===N&&_.removeAttribute("id")}}}return Ns(v.replace(Qe,"$1"),_,R,F)}function Tn(){var v=[];function _(R,F){return v.push(R+" ")>i.cacheLength&&delete _[v.shift()],_[R+" "]=F}return _}function sr(v){return v[N]=!0,v}function Fi(v){var _=h.createElement("fieldset");try{return!!v(_)}catch(R){return!1}finally{_.parentNode&&_.parentNode.removeChild(_),_=null}}function jl(v){return function(_){return J(_,"input")&&_.type===v}}function zl(v){return function(_){return(J(_,"input")||J(_,"button"))&&_.type===v}}function Ms(v){return function(_){return"form"in _?_.parentNode&&_.disabled===!1?"label"in _?"label"in _.parentNode?_.parentNode.disabled===v:_.disabled===v:_.isDisabled===v||_.isDisabled!==!v&&Hl(_)===v:_.disabled===v:"label"in _?_.disabled===v:!1}}function pi(v){return sr(function(_){return _=+_,sr(function(R,F){for(var O,X=v([],R.length,_),K=X.length;K--;)R[O=X[K]]&&(R[O]=!(F[O]=R[O]))})})}function va(v){return v&&typeof v.getElementsByTagName!="undefined"&&v}function Yr(v){var _,R=v?v.ownerDocument||v:mt;return R==h||R.nodeType!==9||!R.documentElement||(h=R,w=h.documentElement,x=!s.isXMLDoc(h),I=w.matches||w.webkitMatchesSelector||w.msMatchesSelector,w.msMatchesSelector&&mt!=h&&(_=h.defaultView)&&_.top!==_&&_.addEventListener("unload",$l),U.getById=Fi(function(F){return w.appendChild(F).id=s.expando,!h.getElementsByName||!h.getElementsByName(s.expando).length}),U.disconnectedMatch=Fi(function(F){return I.call(F,"*")}),U.scope=Fi(function(){return h.querySelectorAll(":scope")}),U.cssHas=Fi(function(){try{return h.querySelector(":has(*,:jqfake)"),!1}catch(F){return!0}}),U.getById?(i.filter.ID=function(F){var O=F.replace(Dr,Rr);return function(X){return X.getAttribute("id")===O}},i.find.ID=function(F,O){if(typeof O.getElementById!="undefined"&&x){var X=O.getElementById(F);return X?[X]:[]}}):(i.filter.ID=function(F){var O=F.replace(Dr,Rr);return function(X){var K=typeof X.getAttributeNode!="undefined"&&X.getAttributeNode("id");return K&&K.value===O}},i.find.ID=function(F,O){if(typeof O.getElementById!="undefined"&&x){var X,K,se,Z=O.getElementById(F);if(Z){if(X=Z.getAttributeNode("id"),X&&X.value===F)return[Z];for(se=O.getElementsByName(F),K=0;Z=se[K++];)if(X=Z.getAttributeNode("id"),X&&X.value===F)return[Z]}return[]}}),i.find.TAG=function(F,O){return typeof O.getElementsByTagName!="undefined"?O.getElementsByTagName(F):O.querySelectorAll(F)},i.find.CLASS=function(F,O){if(typeof O.getElementsByClassName!="undefined"&&x)return O.getElementsByClassName(F)},C=[],Fi(function(F){var O;w.appendChild(F).innerHTML="",F.querySelectorAll("[selected]").length||C.push("\\["+ve+"*(?:value|"+hr+")"),F.querySelectorAll("[id~="+N+"-]").length||C.push("~="),F.querySelectorAll("a#"+N+"+*").length||C.push(".#.+[+~]"),F.querySelectorAll(":checked").length||C.push(":checked"),O=h.createElement("input"),O.setAttribute("type","hidden"),F.appendChild(O).setAttribute("name","D"),w.appendChild(F).disabled=!0,F.querySelectorAll(":disabled").length!==2&&C.push(":enabled",":disabled"),O=h.createElement("input"),O.setAttribute("name",""),F.appendChild(O),F.querySelectorAll("[name='']").length||C.push("\\["+ve+"*name"+ve+"*="+ve+`*(?:''|"")`)}),U.cssHas||C.push(":has"),C=C.length&&new RegExp(C.join("|")),at=function(F,O){if(F===O)return c=!0,0;var X=!F.compareDocumentPosition-!O.compareDocumentPosition;return X||(X=(F.ownerDocument||F)==(O.ownerDocument||O)?F.compareDocumentPosition(O):1,X&1||!U.sortDetached&&O.compareDocumentPosition(F)===X?F===h||F.ownerDocument==mt&&We.contains(mt,F)?-1:O===h||O.ownerDocument==mt&&We.contains(mt,O)?1:o?y.call(o,F)-y.call(o,O):0:X&4?-1:1)}),h}We.matches=function(v,_){return We(v,null,null,_)},We.matchesSelector=function(v,_){if(Yr(v),x&&!pt[_+" "]&&(!C||!C.test(_)))try{var R=I.call(v,_);if(R||U.disconnectedMatch||v.document&&v.document.nodeType!==11)return R}catch(F){pt(_,!0)}return We(_,h,null,[v]).length>0},We.contains=function(v,_){return(v.ownerDocument||v)!=h&&Yr(v),s.contains(v,_)},We.attr=function(v,_){(v.ownerDocument||v)!=h&&Yr(v);var R=i.attrHandle[_.toLowerCase()],F=R&&W.call(i.attrHandle,_.toLowerCase())?R(v,_,!x):void 0;return F!==void 0?F:v.getAttribute(_)},We.error=function(v){throw new Error("Syntax error, unrecognized expression: "+v)},s.uniqueSort=function(v){var _,R=[],F=0,O=0;if(c=!U.sortStable,o=!U.sortStable&&u.call(v,0),et.call(v,at),c){for(;_=v[O++];)_===v[O]&&(F=R.push(O));for(;F--;)Me.call(v,R[F],1)}return o=null,v},s.fn.uniqueSort=function(){return this.pushStack(s.uniqueSort(u.apply(this)))},i=s.expr={cacheLength:50,createPseudo:sr,match:gr,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(v){return v[1]=v[1].replace(Dr,Rr),v[3]=(v[3]||v[4]||v[5]||"").replace(Dr,Rr),v[2]==="~="&&(v[3]=" "+v[3]+" "),v.slice(0,4)},CHILD:function(v){return v[1]=v[1].toLowerCase(),v[1].slice(0,3)==="nth"?(v[3]||We.error(v[0]),v[4]=+(v[4]?v[5]+(v[6]||1):2*(v[3]==="even"||v[3]==="odd")),v[5]=+(v[7]+v[8]||v[3]==="odd")):v[3]&&We.error(v[0]),v},PSEUDO:function(v){var _,R=!v[6]&&v[2];return gr.CHILD.test(v[0])?null:(v[3]?v[2]=v[4]||v[5]||"":R&&mr.test(R)&&(_=Gi(R,!0))&&(_=R.indexOf(")",R.length-_)-R.length)&&(v[0]=v[0].slice(0,_),v[2]=R.slice(0,_)),v.slice(0,3))}},filter:{TAG:function(v){var _=v.replace(Dr,Rr).toLowerCase();return v==="*"?function(){return!0}:function(R){return J(R,_)}},CLASS:function(v){var _=ge[v+" "];return _||(_=new RegExp("(^|"+ve+")"+v+"("+ve+"|$)"))&&ge(v,function(R){return _.test(typeof R.className=="string"&&R.className||typeof R.getAttribute!="undefined"&&R.getAttribute("class")||"")})},ATTR:function(v,_,R){return function(F){var O=We.attr(F,v);return O==null?_==="!=":_?(O+="",_==="="?O===R:_==="!="?O!==R:_==="^="?R&&O.indexOf(R)===0:_==="*="?R&&O.indexOf(R)>-1:_==="$="?R&&O.slice(-R.length)===R:_==="~="?(" "+O.replace(Le," ")+" ").indexOf(R)>-1:_==="|="?O===R||O.slice(0,R.length+1)===R+"-":!1):!0}},CHILD:function(v,_,R,F,O){var X=v.slice(0,3)!=="nth",K=v.slice(-4)!=="last",se=_==="of-type";return F===1&&O===0?function(Z){return!!Z.parentNode}:function(Z,Te,pe){var be,Se,fe,je,Mt,_t=X!==K?"nextSibling":"previousSibling",Vt=Z.parentNode,vr=se&&Z.nodeName.toLowerCase(),Ii=!pe&&!se,Ct=!1;if(Vt){if(X){for(;_t;){for(fe=Z;fe=fe[_t];)if(se?J(fe,vr):fe.nodeType===1)return!1;Mt=_t=v==="only"&&!Mt&&"nextSibling"}return!0}if(Mt=[K?Vt.firstChild:Vt.lastChild],K&&Ii){for(Se=Vt[N]||(Vt[N]={}),be=Se[v]||[],je=be[0]===L&&be[1],Ct=je&&be[2],fe=je&&Vt.childNodes[je];fe=++je&&fe&&fe[_t]||(Ct=je=0)||Mt.pop();)if(fe.nodeType===1&&++Ct&&fe===Z){Se[v]=[L,je,Ct];break}}else if(Ii&&(Se=Z[N]||(Z[N]={}),be=Se[v]||[],je=be[0]===L&&be[1],Ct=je),Ct===!1)for(;(fe=++je&&fe&&fe[_t]||(Ct=je=0)||Mt.pop())&&!((se?J(fe,vr):fe.nodeType===1)&&++Ct&&(Ii&&(Se=fe[N]||(fe[N]={}),Se[v]=[L,Ct]),fe===Z)););return Ct-=O,Ct===F||Ct%F==0&&Ct/F>=0}}},PSEUDO:function(v,_){var R,F=i.pseudos[v]||i.setFilters[v.toLowerCase()]||We.error("unsupported pseudo: "+v);return F[N]?F(_):F.length>1?(R=[v,v,"",_],i.setFilters.hasOwnProperty(v.toLowerCase())?sr(function(O,X){for(var K,se=F(O,_),Z=se.length;Z--;)K=y.call(O,se[Z]),O[K]=!(X[K]=se[Z])}):function(O){return F(O,0,R)}):F}},pseudos:{not:sr(function(v){var _=[],R=[],F=wa(v.replace(Qe,"$1"));return F[N]?sr(function(O,X,K,se){for(var Z,Te=F(O,null,se,[]),pe=O.length;pe--;)(Z=Te[pe])&&(O[pe]=!(X[pe]=Z))}):function(O,X,K){return _[0]=O,F(_,null,K,R),_[0]=null,!R.pop()}}),has:sr(function(v){return function(_){return We(v,_).length>0}}),contains:sr(function(v){return v=v.replace(Dr,Rr),function(_){return(_.textContent||s.text(_)).indexOf(v)>-1}}),lang:sr(function(v){return zi.test(v||"")||We.error("unsupported lang: "+v),v=v.replace(Dr,Rr).toLowerCase(),function(_){var R;do if(R=x?_.lang:_.getAttribute("xml:lang")||_.getAttribute("lang"))return R=R.toLowerCase(),R===v||R.indexOf(v+"-")===0;while((_=_.parentNode)&&_.nodeType===1);return!1}}),target:function(v){var _=l.location&&l.location.hash;return _&&_.slice(1)===v.id},root:function(v){return v===w},focus:function(v){return v===Bl()&&h.hasFocus()&&!!(v.type||v.href||~v.tabIndex)},enabled:Ms(!1),disabled:Ms(!0),checked:function(v){return J(v,"input")&&!!v.checked||J(v,"option")&&!!v.selected},selected:function(v){return v.parentNode&&v.parentNode.selectedIndex,v.selected===!0},empty:function(v){for(v=v.firstChild;v;v=v.nextSibling)if(v.nodeType<6)return!1;return!0},parent:function(v){return!i.pseudos.empty(v)},header:function(v){return qr.test(v.nodeName)},input:function(v){return Vr.test(v.nodeName)},button:function(v){return J(v,"input")&&v.type==="button"||J(v,"button")},text:function(v){var _;return J(v,"input")&&v.type==="text"&&((_=v.getAttribute("type"))==null||_.toLowerCase()==="text")},first:pi(function(){return[0]}),last:pi(function(v,_){return[_-1]}),eq:pi(function(v,_,R){return[R<0?R+_:R]}),even:pi(function(v,_){for(var R=0;R<_;R+=2)v.push(R);return v}),odd:pi(function(v,_){for(var R=1;R<_;R+=2)v.push(R);return v}),lt:pi(function(v,_,R){var F;for(R<0?F=R+_:R>_?F=_:F=R;--F>=0;)v.push(F);return v}),gt:pi(function(v,_,R){for(var F=R<0?R+_:R;++F<_;)v.push(F);return v})}},i.pseudos.nth=i.pseudos.eq;for(e in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})i.pseudos[e]=jl(e);for(e in{submit:!0,reset:!0})i.pseudos[e]=zl(e);function Os(){}Os.prototype=i.filters=i.pseudos,i.setFilters=new Os;function Gi(v,_){var R,F,O,X,K,se,Z,Te=Re[v+" "];if(Te)return _?0:Te.slice(0);for(K=v,se=[],Z=i.preFilter;K;){(!R||(F=Je.exec(K)))&&(F&&(K=K.slice(F[0].length)||K),se.push(O=[])),R=!1,(F=ji.exec(K))&&(R=F.shift(),O.push({value:R,type:F[0].replace(Qe," ")}),K=K.slice(R.length));for(X in i.filter)(F=gr[X].exec(K))&&(!Z[X]||(F=Z[X](F)))&&(R=F.shift(),O.push({value:R,type:X,matches:F}),K=K.slice(R.length));if(!R)break}return _?K.length:K?We.error(v):Re(v,se).slice(0)}function Sn(v){for(var _=0,R=v.length,F="";_1?function(_,R,F){for(var O=v.length;O--;)if(!v[O](_,R,F))return!1;return!0}:v[0]}function Gl(v,_,R){for(var F=0,O=_.length;F-1&&(K[pe]=!(se[pe]=Se))}}else fe=Cn(fe===se?fe.splice(_t,fe.length):fe),O?O(null,se,fe,Te):f.apply(se,fe)})}function xa(v){for(var _,R,F,O=v.length,X=i.relative[v[0].type],K=X||i.relative[" "],se=X?1:0,Z=An(function(be){return be===_},K,!0),Te=An(function(be){return y.call(_,be)>-1},K,!0),pe=[function(be,Se,fe){var je=!X&&(fe||Se!=n)||((_=Se).nodeType?Z(be,Se,fe):Te(be,Se,fe));return _=null,je}];se1&&ba(pe),se>1&&Sn(v.slice(0,se-1).concat({value:v[se-2].type===" "?"*":""})).replace(Qe,"$1"),R,se0,F=v.length>0,O=function(X,K,se,Z,Te){var pe,be,Se,fe=0,je="0",Mt=X&&[],_t=[],Vt=n,vr=X||F&&i.find.TAG("*",Te),Ii=L+=Vt==null?1:Math.random()||.1,Ct=vr.length;for(Te&&(n=K==h||K||Te);je!==Ct&&(pe=vr[je])!=null;je++){if(F&&pe){for(be=0,!K&&pe.ownerDocument!=h&&(Yr(pe),se=!x);Se=v[be++];)if(Se(pe,K||h,se)){f.call(Z,pe);break}Te&&(L=Ii)}R&&((pe=!Se&&pe)&&fe--,X&&Mt.push(pe))}if(fe+=je,R&&je!==fe){for(be=0;Se=_[be++];)Se(Mt,_t,K,se);if(X){if(fe>0)for(;je--;)Mt[je]||_t[je]||(_t[je]=De.call(Z));_t=Cn(_t)}f.apply(Z,_t),Te&&!X&&_t.length>0&&fe+_.length>1&&s.uniqueSort(Z)}return Te&&(L=Ii,n=Vt),Mt};return R?sr(O):O}function wa(v,_){var R,F=[],O=[],X=Ee[v+" "];if(!X){for(_||(_=Gi(v)),R=_.length;R--;)X=xa(_[R]),X[N]?F.push(X):O.push(X);X=Ee(v,Vl(O,F)),X.selector=v}return X}function Ns(v,_,R,F){var O,X,K,se,Z,Te=typeof v=="function"&&v,pe=!F&&Gi(v=Te.selector||v);if(R=R||[],pe.length===1){if(X=pe[0]=pe[0].slice(0),X.length>2&&(K=X[0]).type==="ID"&&_.nodeType===9&&x&&i.relative[X[1].type]){if(_=(i.find.ID(K.matches[0].replace(Dr,Rr),_)||[])[0],_)Te&&(_=_.parentNode);else return R;v=v.slice(X.shift().value.length)}for(O=gr.needsContext.test(v)?0:X.length;O--&&(K=X[O],!i.relative[se=K.type]);)if((Z=i.find[se])&&(F=Z(K.matches[0].replace(Dr,Rr),ma.test(X[0].type)&&va(_.parentNode)||_))){if(X.splice(O,1),v=F.length&&Sn(X),!v)return f.apply(R,F),R;break}}return(Te||wa(v,pe))(F,_,!x,R,!_||ma.test(v)&&va(_.parentNode)||_),R}U.sortStable=N.split("").sort(at).join("")===N,Yr(),U.sortDetached=Fi(function(v){return v.compareDocumentPosition(h.createElement("fieldset"))&1}),s.find=We,s.expr[":"]=s.expr.pseudos,s.unique=s.uniqueSort,We.compile=wa,We.select=Ns,We.setDocument=Yr,We.tokenize=Gi,We.escape=s.escapeSelector,We.getText=s.text,We.isXML=s.isXMLDoc,We.selectors=s.expr,We.support=s.support,We.uniqueSort=s.uniqueSort})();var gt=function(e,i,n){for(var o=[],c=n!==void 0;(e=e[i])&&e.nodeType!==9;)if(e.nodeType===1){if(c&&s(e).is(n))break;o.push(e)}return o},Kr=function(e,i){for(var n=[];e;e=e.nextSibling)e.nodeType===1&&e!==i&&n.push(e);return n},Zr=s.expr.match.needsContext,Ve=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function vt(e,i,n){return B(i)?s.grep(e,function(o,c){return!!i.call(o,c,o)!==n}):i.nodeType?s.grep(e,function(o){return o===i!==n}):typeof i!="string"?s.grep(e,function(o){return y.call(i,o)>-1!==n}):s.filter(i,e,n)}s.filter=function(e,i,n){var o=i[0];return n&&(e=":not("+e+")"),i.length===1&&o.nodeType===1?s.find.matchesSelector(o,e)?[o]:[]:s.find.matches(e,s.grep(i,function(c){return c.nodeType===1}))},s.fn.extend({find:function(e){var i,n,o=this.length,c=this;if(typeof e!="string")return this.pushStack(s(e).filter(function(){for(i=0;i1?s.uniqueSort(n):n},filter:function(e){return this.pushStack(vt(this,e||[],!1))},not:function(e){return this.pushStack(vt(this,e||[],!0))},is:function(e){return!!vt(this,typeof e=="string"&&Zr.test(e)?s(e):e||[],!1).length}});var qe,Ci=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,ze=s.fn.init=function(e,i,n){var o,c;if(!e)return this;if(n=n||qe,typeof e=="string")if(e[0]==="<"&&e[e.length-1]===">"&&e.length>=3?o=[null,e,null]:o=Ci.exec(e),o&&(o[1]||!i))if(o[1]){if(i=i instanceof s?i[0]:i,s.merge(this,s.parseHTML(o[1],i&&i.nodeType?i.ownerDocument||i:Q,!0)),Ve.test(o[1])&&s.isPlainObject(i))for(o in i)B(this[o])?this[o](i[o]):this.attr(o,i[o]);return this}else return c=Q.getElementById(o[2]),c&&(this[0]=c,this.length=1),this;else return!i||i.jquery?(i||n).find(e):this.constructor(i).find(e);else{if(e.nodeType)return this[0]=e,this.length=1,this;if(B(e))return n.ready!==void 0?n.ready(e):e(s)}return s.makeArray(e,this)};ze.prototype=s.fn,qe=s(Q);var _r=/^(?:parents|prev(?:Until|All))/,ei={children:!0,contents:!0,next:!0,prev:!0};s.fn.extend({has:function(e){var i=s(e,this),n=i.length;return this.filter(function(){for(var o=0;o-1:n.nodeType===1&&s.find.matchesSelector(n,e))){f.push(n);break}}return this.pushStack(f.length>1?s.uniqueSort(f):f)},index:function(e){return e?typeof e=="string"?y.call(s(e),this[0]):y.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,i){return this.pushStack(s.uniqueSort(s.merge(this.get(),s(e,i))))},addBack:function(e){return this.add(e==null?this.prevObject:this.prevObject.filter(e))}});function ti(e,i){for(;(e=e[i])&&e.nodeType!==1;);return e}s.each({parent:function(e){var i=e.parentNode;return i&&i.nodeType!==11?i:null},parents:function(e){return gt(e,"parentNode")},parentsUntil:function(e,i,n){return gt(e,"parentNode",n)},next:function(e){return ti(e,"nextSibling")},prev:function(e){return ti(e,"previousSibling")},nextAll:function(e){return gt(e,"nextSibling")},prevAll:function(e){return gt(e,"previousSibling")},nextUntil:function(e,i,n){return gt(e,"nextSibling",n)},prevUntil:function(e,i,n){return gt(e,"previousSibling",n)},siblings:function(e){return Kr((e.parentNode||{}).firstChild,e)},children:function(e){return Kr(e.firstChild)},contents:function(e){return e.contentDocument!=null&&a(e.contentDocument)?e.contentDocument:(J(e,"template")&&(e=e.content||e),s.merge([],e.childNodes))}},function(e,i){s.fn[e]=function(n,o){var c=s.map(this,i,n);return e.slice(-5)!=="Until"&&(o=n),o&&typeof o=="string"&&(c=s.filter(o,c)),this.length>1&&(ei[e]||s.uniqueSort(c),_r.test(e)&&c.reverse()),this.pushStack(c)}});var bt=/[^\x20\t\r\n\f]+/g;function Pi(e){var i={};return s.each(e.match(bt)||[],function(n,o){i[o]=!0}),i}s.Callbacks=function(e){e=typeof e=="string"?Pi(e):s.extend({},e);var i,n,o,c,f=[],h=[],w=-1,x=function(){for(c=c||e.once,o=i=!0;h.length;w=-1)for(n=h.shift();++w-1;)f.splice(L,1),L<=w&&w--}),this},has:function(I){return I?s.inArray(I,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return c=h=[],f=n="",this},disabled:function(){return!f},lock:function(){return c=h=[],!n&&!i&&(f=n=""),this},locked:function(){return!!c},fireWith:function(I,N){return c||(N=N||[],N=[I,N.slice?N.slice():N],h.push(N),i||x()),this},fire:function(){return C.fireWith(this,arguments),this},fired:function(){return!!o}};return C};function Jt(e){return e}function Ut(e){throw e}function Nr(e,i,n,o){var c;try{e&&B(c=e.promise)?c.call(e).done(i).fail(n):e&&B(c=e.then)?c.call(e,i,n):i.apply(void 0,[e].slice(o))}catch(f){n.apply(void 0,[f])}}s.extend({Deferred:function(e){var i=[["notify","progress",s.Callbacks("memory"),s.Callbacks("memory"),2],["resolve","done",s.Callbacks("once memory"),s.Callbacks("once memory"),0,"resolved"],["reject","fail",s.Callbacks("once memory"),s.Callbacks("once memory"),1,"rejected"]],n="pending",o={state:function(){return n},always:function(){return c.done(arguments).fail(arguments),this},catch:function(f){return o.then(null,f)},pipe:function(){var f=arguments;return s.Deferred(function(h){s.each(i,function(w,x){var C=B(f[x[4]])&&f[x[4]];c[x[1]](function(){var I=C&&C.apply(this,arguments);I&&B(I.promise)?I.promise().progress(h.notify).done(h.resolve).fail(h.reject):h[x[0]+"With"](this,C?[I]:arguments)})}),f=null}).promise()},then:function(f,h,w){var x=0;function C(I,N,L,G){return function(){var ge=this,Re=arguments,Ee=function(){var at,hr;if(!(I=x&&(L!==Ut&&(ge=void 0,Re=[at]),N.rejectWith(ge,Re))}};I?pt():(s.Deferred.getErrorHook?pt.error=s.Deferred.getErrorHook():s.Deferred.getStackHook&&(pt.error=s.Deferred.getStackHook()),l.setTimeout(pt))}}return s.Deferred(function(I){i[0][3].add(C(0,I,B(w)?w:Jt,I.notifyWith)),i[1][3].add(C(0,I,B(f)?f:Jt)),i[2][3].add(C(0,I,B(h)?h:Ut))}).promise()},promise:function(f){return f!=null?s.extend(f,o):o}},c={};return s.each(i,function(f,h){var w=h[2],x=h[5];o[h[1]]=w.add,x&&w.add(function(){n=x},i[3-f][2].disable,i[3-f][3].disable,i[0][2].lock,i[0][3].lock),w.add(h[3].fire),c[h[0]]=function(){return c[h[0]+"With"](this===c?void 0:this,arguments),this},c[h[0]+"With"]=w.fireWith}),o.promise(c),e&&e.call(c,c),c},when:function(e){var i=arguments.length,n=i,o=Array(n),c=u.call(arguments),f=s.Deferred(),h=function(w){return function(x){o[w]=this,c[w]=arguments.length>1?u.call(arguments):x,--i||f.resolveWith(o,c)}};if(i<=1&&(Nr(e,f.done(h(n)).resolve,f.reject,!i),f.state()==="pending"||B(c[n]&&c[n].then)))return f.then();for(;n--;)Nr(c[n],h(n),f.reject);return f.promise()}});var Kt=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;s.Deferred.exceptionHook=function(e,i){l.console&&l.console.warn&&e&&Kt.test(e.name)&&l.console.warn("jQuery.Deferred exception: "+e.message,e.stack,i)},s.readyException=function(e){l.setTimeout(function(){throw e})};var Tr=s.Deferred();s.fn.ready=function(e){return Tr.then(e).catch(function(i){s.readyException(i)}),this},s.extend({isReady:!1,readyWait:1,ready:function(e){(e===!0?--s.readyWait:s.isReady)||(s.isReady=!0,!(e!==!0&&--s.readyWait>0)&&Tr.resolveWith(Q,[s]))}}),s.ready.then=Tr.then;function ut(){Q.removeEventListener("DOMContentLoaded",ut),l.removeEventListener("load",ut),s.ready()}Q.readyState==="complete"||Q.readyState!=="loading"&&!Q.documentElement.doScroll?l.setTimeout(s.ready):(Q.addEventListener("DOMContentLoaded",ut),l.addEventListener("load",ut));var ot=function(e,i,n,o,c,f,h){var w=0,x=e.length,C=n==null;if(he(n)==="object"){c=!0;for(w in n)ot(e,i,w,n[w],!0,f,h)}else if(o!==void 0&&(c=!0,B(o)||(h=!0),C&&(h?(i.call(e,o),i=null):(C=i,i=function(I,N,L){return C.call(s(I),L)})),i))for(;w1,null,!0)},removeData:function(e){return this.each(function(){Ge.remove(this,e)})}}),s.extend({queue:function(e,i,n){var o;if(e)return i=(i||"fx")+"queue",o=te.get(e,i),n&&(!o||Array.isArray(n)?o=te.access(e,i,s.makeArray(n)):o.push(n)),o||[]},dequeue:function(e,i){i=i||"fx";var n=s.queue(e,i),o=n.length,c=n.shift(),f=s._queueHooks(e,i),h=function(){s.dequeue(e,i)};c==="inprogress"&&(c=n.shift(),o--),c&&(i==="fx"&&n.unshift("inprogress"),delete f.stop,c.call(e,h,f)),!o&&f&&f.empty.fire()},_queueHooks:function(e,i){var n=i+"queueHooks";return te.get(e,n)||te.access(e,n,{empty:s.Callbacks("once memory").add(function(){te.remove(e,[i+"queue",n])})})}}),s.fn.extend({queue:function(e,i){var n=2;return typeof e!="string"&&(i=e,e="fx",n--),arguments.length\x20\t\r\n\f]*)/i,ki=/^$|^module$|\/(?:java|ecma)script/i;(function(){var e=Q.createDocumentFragment(),i=e.appendChild(Q.createElement("div")),n=Q.createElement("input");n.setAttribute("type","radio"),n.setAttribute("checked","checked"),n.setAttribute("name","t"),i.appendChild(n),U.checkClone=i.cloneNode(!0).cloneNode(!0).lastChild.checked,i.innerHTML="",U.noCloneChecked=!!i.cloneNode(!0).lastChild.defaultValue,i.innerHTML="",U.option=!!i.lastChild})();var dt={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};dt.tbody=dt.tfoot=dt.colgroup=dt.caption=dt.thead,dt.th=dt.td,U.option||(dt.optgroup=dt.option=[1,""]);function Pe(e,i){var n;return typeof e.getElementsByTagName!="undefined"?n=e.getElementsByTagName(i||"*"):typeof e.querySelectorAll!="undefined"?n=e.querySelectorAll(i||"*"):n=[],i===void 0||i&&J(e,i)?s.merge([e],n):n}function zt(e,i){for(var n=0,o=e.length;n-1){c&&c.push(f);continue}if(C=nt(f),h=Pe(N.appendChild(f),"script"),C&&zt(h),n)for(I=0;f=h[I++];)ki.test(f.type||"")&&n.push(f)}return N}var Br=/^([^.]*)(?:\.(.+)|)/;function ir(){return!0}function nr(){return!1}function ai(e,i,n,o,c,f){var h,w;if(typeof i=="object"){typeof n!="string"&&(o=o||n,n=void 0);for(w in i)ai(e,w,n,o,i[w],f);return e}if(o==null&&c==null?(c=n,o=n=void 0):c==null&&(typeof n=="string"?(c=o,o=void 0):(c=o,o=n,n=void 0)),c===!1)c=nr;else if(!c)return e;return f===1&&(h=c,c=function(x){return s().off(x),h.apply(this,arguments)},c.guid=h.guid||(h.guid=s.guid++)),e.each(function(){s.event.add(this,i,c,o,n)})}s.event={global:{},add:function(e,i,n,o,c){var f,h,w,x,C,I,N,L,G,ge,Re,Ee=te.get(e);if(!!er(e))for(n.handler&&(f=n,n=f.handler,c=f.selector),c&&s.find.matchesSelector(At,c),n.guid||(n.guid=s.guid++),(x=Ee.events)||(x=Ee.events=Object.create(null)),(h=Ee.handle)||(h=Ee.handle=function(pt){return typeof s!="undefined"&&s.event.triggered!==pt.type?s.event.dispatch.apply(e,arguments):void 0}),i=(i||"").match(bt)||[""],C=i.length;C--;)w=Br.exec(i[C])||[],G=Re=w[1],ge=(w[2]||"").split(".").sort(),!!G&&(N=s.event.special[G]||{},G=(c?N.delegateType:N.bindType)||G,N=s.event.special[G]||{},I=s.extend({type:G,origType:Re,data:o,handler:n,guid:n.guid,selector:c,needsContext:c&&s.expr.match.needsContext.test(c),namespace:ge.join(".")},f),(L=x[G])||(L=x[G]=[],L.delegateCount=0,(!N.setup||N.setup.call(e,o,ge,h)===!1)&&e.addEventListener&&e.addEventListener(G,h)),N.add&&(N.add.call(e,I),I.handler.guid||(I.handler.guid=n.guid)),c?L.splice(L.delegateCount++,0,I):L.push(I),s.event.global[G]=!0)},remove:function(e,i,n,o,c){var f,h,w,x,C,I,N,L,G,ge,Re,Ee=te.hasData(e)&&te.get(e);if(!(!Ee||!(x=Ee.events))){for(i=(i||"").match(bt)||[""],C=i.length;C--;){if(w=Br.exec(i[C])||[],G=Re=w[1],ge=(w[2]||"").split(".").sort(),!G){for(G in x)s.event.remove(e,G+i[C],n,o,!0);continue}for(N=s.event.special[G]||{},G=(o?N.delegateType:N.bindType)||G,L=x[G]||[],w=w[2]&&new RegExp("(^|\\.)"+ge.join("\\.(?:.*\\.|)")+"(\\.|$)"),h=f=L.length;f--;)I=L[f],(c||Re===I.origType)&&(!n||n.guid===I.guid)&&(!w||w.test(I.namespace))&&(!o||o===I.selector||o==="**"&&I.selector)&&(L.splice(f,1),I.selector&&L.delegateCount--,N.remove&&N.remove.call(e,I));h&&!L.length&&((!N.teardown||N.teardown.call(e,ge,Ee.handle)===!1)&&s.removeEvent(e,G,Ee.handle),delete x[G])}s.isEmptyObject(x)&&te.remove(e,"handle events")}},dispatch:function(e){var i,n,o,c,f,h,w=new Array(arguments.length),x=s.event.fix(e),C=(te.get(this,"events")||Object.create(null))[x.type]||[],I=s.event.special[x.type]||{};for(w[0]=x,i=1;i=1)){for(;C!==this;C=C.parentNode||this)if(C.nodeType===1&&!(e.type==="click"&&C.disabled===!0)){for(f=[],h={},n=0;n-1:s.find(c,this,null,[C]).length),h[c]&&f.push(o);f.length&&w.push({elem:C,handlers:f})}}return C=this,x\s*$/g;function zr(e,i){return J(e,"table")&&J(i.nodeType!==11?i:i.firstChild,"tr")&&s(e).children("tbody")[0]||e}function Ri(e){return e.type=(e.getAttribute("type")!==null)+"/"+e.type,e}function $t(e){return(e.type||"").slice(0,5)==="true/"?e.type=e.type.slice(5):e.removeAttribute("type"),e}function oi(e,i){var n,o,c,f,h,w,x;if(i.nodeType===1){if(te.hasData(e)&&(f=te.get(e),x=f.events,x)){te.remove(i,"handle events");for(c in x)for(n=0,o=x[c].length;n1&&typeof G=="string"&&!U.checkClone&&si.test(G))return e.each(function(Re){var Ee=e.eq(Re);ge&&(i[0]=G.call(this,Re,Ee.html())),ar(Ee,i,n,o)});if(N&&(c=ni(i,e[0].ownerDocument,!1,e,o),f=c.firstChild,c.childNodes.length===1&&(c=f),f||o)){for(h=s.map(Pe(c,"script"),Ri),w=h.length;I0&&zt(h,!x&&Pe(e,"script")),w},cleanData:function(e){for(var i,n,o,c=s.event.special,f=0;(n=e[f])!==void 0;f++)if(er(n)){if(i=n[te.expando]){if(i.events)for(o in i.events)c[o]?s.event.remove(n,o):s.removeEvent(n,o,i.handle);n[te.expando]=void 0}n[Ge.expando]&&(n[Ge.expando]=void 0)}}}),s.fn.extend({detach:function(e){return li(this,e,!0)},remove:function(e){return li(this,e)},text:function(e){return ot(this,function(i){return i===void 0?s.text(this):this.empty().each(function(){(this.nodeType===1||this.nodeType===11||this.nodeType===9)&&(this.textContent=i)})},null,e,arguments.length)},append:function(){return ar(this,arguments,function(e){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){var i=zr(this,e);i.appendChild(e)}})},prepend:function(){return ar(this,arguments,function(e){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){var i=zr(this,e);i.insertBefore(e,i.firstChild)}})},before:function(){return ar(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return ar(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,i=0;(e=this[i])!=null;i++)e.nodeType===1&&(s.cleanData(Pe(e,!1)),e.textContent="");return this},clone:function(e,i){return e=e==null?!1:e,i=i==null?e:i,this.map(function(){return s.clone(this,e,i)})},html:function(e){return ot(this,function(i){var n=this[0]||{},o=0,c=this.length;if(i===void 0&&n.nodeType===1)return n.innerHTML;if(typeof i=="string"&&!jr.test(i)&&!dt[(dr.exec(i)||["",""])[1].toLowerCase()]){i=s.htmlPrefilter(i);try{for(;o=0&&(x+=Math.max(0,Math.ceil(e["offset"+i[0].toUpperCase()+i.slice(1)]-f-x-w-.5))||0),x+C}function wn(e,i,n){var o=T(e),c=!U.boxSizingReliable()||n,f=c&&s.css(e,"boxSizing",!1,o)==="border-box",h=f,w=Fe(e,i,o),x="offset"+i[0].toUpperCase()+i.slice(1);if(ui.test(w)){if(!n)return w;w="auto"}return(!U.boxSizingReliable()&&f||!U.reliableTrDimensions()&&J(e,"tr")||w==="auto"||!parseFloat(w)&&s.css(e,"display",!1,o)==="inline")&&e.getClientRects().length&&(f=s.css(e,"boxSizing",!1,o)==="border-box",h=x in e,h&&(w=e[x])),w=parseFloat(w)||0,w+ci(e,i,n||(f?"border":"content"),h,o,w)+"px"}s.extend({cssHooks:{opacity:{get:function(e,i){if(i){var n=Fe(e,"opacity");return n===""?"1":n}}}},cssNumber:{animationIterationCount:!0,aspectRatio:!0,borderImageSlice:!0,columnCount:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,scale:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeMiterlimit:!0,strokeOpacity:!0},cssProps:{},style:function(e,i,n,o){if(!(!e||e.nodeType===3||e.nodeType===8||!e.style)){var c,f,h,w=ct(i),x=ae.test(i),C=e.style;if(x||(i=rt(w)),h=s.cssHooks[i]||s.cssHooks[w],n!==void 0){if(f=typeof n,f==="string"&&(c=rr.exec(n))&&c[1]&&(n=$r(e,i,c),f="number"),n==null||n!==n)return;f==="number"&&!x&&(n+=c&&c[3]||(s.cssNumber[w]?"":"px")),!U.clearCloneStyle&&n===""&&i.indexOf("background")===0&&(C[i]="inherit"),(!h||!("set"in h)||(n=h.set(e,n,o))!==void 0)&&(x?C.setProperty(i,n):C[i]=n)}else return h&&"get"in h&&(c=h.get(e,!1,o))!==void 0?c:C[i]}},css:function(e,i,n,o){var c,f,h,w=ct(i),x=ae.test(i);return x||(i=rt(w)),h=s.cssHooks[i]||s.cssHooks[w],h&&"get"in h&&(c=h.get(e,!0,n)),c===void 0&&(c=Fe(e,i,o)),c==="normal"&&i in yn&&(c=yn[i]),n===""||n?(f=parseFloat(c),n===!0||isFinite(f)?f||0:c):c}}),s.each(["height","width"],function(e,i){s.cssHooks[i]={get:function(n,o,c){if(o)return Pr.test(s.css(n,"display"))&&(!n.getClientRects().length||!n.getBoundingClientRect().width)?V(n,Gr,function(){return wn(n,i,c)}):wn(n,i,c)},set:function(n,o,c){var f,h=T(n),w=!U.scrollboxSize()&&h.position==="absolute",x=w||c,C=x&&s.css(n,"boxSizing",!1,h)==="border-box",I=c?ci(n,i,c,C,h):0;return C&&w&&(I-=Math.ceil(n["offset"+i[0].toUpperCase()+i.slice(1)]-parseFloat(h[i])-ci(n,i,"border",!1,h)-.5)),I&&(f=rr.exec(o))&&(f[3]||"px")!=="px"&&(n.style[i]=o,o=s.css(n,i)),xn(n,o,I)}}}),s.cssHooks.marginLeft=tt(U.reliableMarginLeft,function(e,i){if(i)return(parseFloat(Fe(e,"marginLeft"))||e.getBoundingClientRect().left-V(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),s.each({margin:"",padding:"",border:"Width"},function(e,i){s.cssHooks[e+i]={expand:function(n){for(var o=0,c={},f=typeof n=="string"?n.split(" "):[n];o<4;o++)c[e+ft[o]+i]=f[o]||f[o-2]||f[0];return c}},e!=="margin"&&(s.cssHooks[e+i].set=xn)}),s.fn.extend({css:function(e,i){return ot(this,function(n,o,c){var f,h,w={},x=0;if(Array.isArray(o)){for(f=T(n),h=o.length;x1)}});function wt(e,i,n,o,c){return new wt.prototype.init(e,i,n,o,c)}s.Tween=wt,wt.prototype={constructor:wt,init:function(e,i,n,o,c,f){this.elem=e,this.prop=n,this.easing=c||s.easing._default,this.options=i,this.start=this.now=this.cur(),this.end=o,this.unit=f||(s.cssNumber[n]?"":"px")},cur:function(){var e=wt.propHooks[this.prop];return e&&e.get?e.get(this):wt.propHooks._default.get(this)},run:function(e){var i,n=wt.propHooks[this.prop];return this.options.duration?this.pos=i=s.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=i=e,this.now=(this.end-this.start)*i+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):wt.propHooks._default.set(this),this}},wt.prototype.init.prototype=wt.prototype,wt.propHooks={_default:{get:function(e){var i;return e.elem.nodeType!==1||e.elem[e.prop]!=null&&e.elem.style[e.prop]==null?e.elem[e.prop]:(i=s.css(e.elem,e.prop,""),!i||i==="auto"?0:i)},set:function(e){s.fx.step[e.prop]?s.fx.step[e.prop](e):e.elem.nodeType===1&&(s.cssHooks[e.prop]||e.elem.style[rt(e.prop)]!=null)?s.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},wt.propHooks.scrollTop=wt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},s.easing={linear:function(e){return e},swing:function(e){return .5-Math.cos(e*Math.PI)/2},_default:"swing"},s.fx=wt.prototype.init,s.fx.step={};var p,E,g=/^(?:toggle|show|hide)$/,A=/queueHooks$/;function k(){E&&(Q.hidden===!1&&l.requestAnimationFrame?l.requestAnimationFrame(k):l.setTimeout(k,s.fx.interval),s.fx.tick())}function S(){return l.setTimeout(function(){p=void 0}),p=Date.now()}function M(e,i){var n,o=0,c={height:e};for(i=i?1:0;o<4;o+=2-i)n=ft[o],c["margin"+n]=c["padding"+n]=e;return i&&(c.opacity=c.width=e),c}function j(e,i,n){for(var o,c=(z.tweeners[i]||[]).concat(z.tweeners["*"]),f=0,h=c.length;f1)},removeAttr:function(e){return this.each(function(){s.removeAttr(this,e)})}}),s.extend({attr:function(e,i,n){var o,c,f=e.nodeType;if(!(f===3||f===8||f===2)){if(typeof e.getAttribute=="undefined")return s.prop(e,i,n);if((f!==1||!s.isXMLDoc(e))&&(c=s.attrHooks[i.toLowerCase()]||(s.expr.match.bool.test(i)?ne:void 0)),n!==void 0){if(n===null){s.removeAttr(e,i);return}return c&&"set"in c&&(o=c.set(e,n,i))!==void 0?o:(e.setAttribute(i,n+""),n)}return c&&"get"in c&&(o=c.get(e,i))!==null?o:(o=s.find.attr(e,i),o==null?void 0:o)}},attrHooks:{type:{set:function(e,i){if(!U.radioValue&&i==="radio"&&J(e,"input")){var n=e.value;return e.setAttribute("type",i),n&&(e.value=n),i}}}},removeAttr:function(e,i){var n,o=0,c=i&&i.match(bt);if(c&&e.nodeType===1)for(;n=c[o++];)e.removeAttribute(n)}}),ne={set:function(e,i,n){return i===!1?s.removeAttr(e,n):e.setAttribute(n,n),n}},s.each(s.expr.match.bool.source.match(/\w+/g),function(e,i){var n=xe[i]||s.find.attr;xe[i]=function(o,c,f){var h,w,x=c.toLowerCase();return f||(w=xe[x],xe[x]=h,h=n(o,c,f)!=null?x:null,xe[x]=w),h}});var Ie=/^(?:input|select|textarea|button)$/i,Oe=/^(?:a|area)$/i;s.fn.extend({prop:function(e,i){return ot(this,s.prop,e,i,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[s.propFix[e]||e]})}}),s.extend({prop:function(e,i,n){var o,c,f=e.nodeType;if(!(f===3||f===8||f===2))return(f!==1||!s.isXMLDoc(e))&&(i=s.propFix[i]||i,c=s.propHooks[i]),n!==void 0?c&&"set"in c&&(o=c.set(e,n,i))!==void 0?o:e[i]=n:c&&"get"in c&&(o=c.get(e,i))!==null?o:e[i]},propHooks:{tabIndex:{get:function(e){var i=s.find.attr(e,"tabindex");return i?parseInt(i,10):Ie.test(e.nodeName)||Oe.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),U.optSelected||(s.propHooks.selected={get:function(e){var i=e.parentNode;return i&&i.parentNode&&i.parentNode.selectedIndex,null},set:function(e){var i=e.parentNode;i&&(i.selectedIndex,i.parentNode&&i.parentNode.selectedIndex)}}),s.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){s.propFix[this.toLowerCase()]=this});function $e(e){var i=e.match(bt)||[];return i.join(" ")}function Ue(e){return e.getAttribute&&e.getAttribute("class")||""}function Et(e){return Array.isArray(e)?e:typeof e=="string"?e.match(bt)||[]:[]}s.fn.extend({addClass:function(e){var i,n,o,c,f,h;return B(e)?this.each(function(w){s(this).addClass(e.call(this,w,Ue(this)))}):(i=Et(e),i.length?this.each(function(){if(o=Ue(this),n=this.nodeType===1&&" "+$e(o)+" ",n){for(f=0;f-1;)n=n.replace(" "+c+" "," ");h=$e(n),o!==h&&this.setAttribute("class",h)}}):this):this.attr("class","")},toggleClass:function(e,i){var n,o,c,f,h=typeof e,w=h==="string"||Array.isArray(e);return B(e)?this.each(function(x){s(this).toggleClass(e.call(this,x,Ue(this),i),i)}):typeof i=="boolean"&&w?i?this.addClass(e):this.removeClass(e):(n=Et(e),this.each(function(){if(w)for(f=s(this),c=0;c-1)return!0;return!1}});var fi=/\r/g;s.fn.extend({val:function(e){var i,n,o,c=this[0];return arguments.length?(o=B(e),this.each(function(f){var h;this.nodeType===1&&(o?h=e.call(this,f,s(this).val()):h=e,h==null?h="":typeof h=="number"?h+="":Array.isArray(h)&&(h=s.map(h,function(w){return w==null?"":w+""})),i=s.valHooks[this.type]||s.valHooks[this.nodeName.toLowerCase()],(!i||!("set"in i)||i.set(this,h,"value")===void 0)&&(this.value=h))})):c?(i=s.valHooks[c.type]||s.valHooks[c.nodeName.toLowerCase()],i&&"get"in i&&(n=i.get(c,"value"))!==void 0?n:(n=c.value,typeof n=="string"?n.replace(fi,""):n==null?"":n)):void 0}}),s.extend({valHooks:{option:{get:function(e){var i=s.find.attr(e,"value");return i!=null?i:$e(s.text(e))}},select:{get:function(e){var i,n,o,c=e.options,f=e.selectedIndex,h=e.type==="select-one",w=h?null:[],x=h?f+1:c.length;for(f<0?o=x:o=h?f:0;o-1)&&(n=!0);return n||(e.selectedIndex=-1),f}}}}),s.each(["radio","checkbox"],function(){s.valHooks[this]={set:function(e,i){if(Array.isArray(i))return e.checked=s.inArray(s(e).val(),i)>-1}},U.checkOn||(s.valHooks[this].get=function(e){return e.getAttribute("value")===null?"on":e.value})});var kr=l.location,En={guid:Date.now()},di=/\?/;s.parseXML=function(e){var i,n;if(!e||typeof e!="string")return null;try{i=new l.DOMParser().parseFromString(e,"text/xml")}catch(o){}return n=i&&i.getElementsByTagName("parsererror")[0],(!i||n)&&s.error("Invalid XML: "+(n?s.map(n.childNodes,function(o){return o.textContent}).join(` +import{a as Mn,b as Oi,c as ql}from"./chunk-T4FRG4BA.js";import{a as qs}from"./chunk-B2GOFULO.js";import{a as Ys,b as Xs,c as Yl}from"./chunk-7U3MLVOX.js";import{D as Pa,J as ka,l as ee,u as Gs,v as Vs}from"./chunk-HOSZ5TQY.js";import{A as gi,E as qt,F as Sa,G as Mi,H as Fn,I as Bs,J as Aa,T as Ca,V as js,a as br,b as qi,ba as In,ca as zs,d as Ot,da as Yi,e as Ta,f as Tt,g as Ne,k as Us,m as Pn,n as kn,o as Dn,p as mi,q as Ws,t as Rn,w as $s,x as Hs,y as Ln,z as Nt}from"./chunk-RXF2JDJ3.js";import{c as Vi,d as Ea,e as _a}from"./chunk-WAARL7ET.js";var Ra=Ea((Qs,Da)=>{(function(l){if(typeof Qs=="object"&&typeof Da!="undefined")Da.exports=l();else if(typeof define=="function"&&define.amd)define([],l);else{var t;typeof window!="undefined"?t=window:typeof global!="undefined"?t=global:typeof self!="undefined"?t=self:t=this,t.localforage=l()}})(function(){var l,t,r;return function a(u,d,m){function y(W,le){if(!d[W]){if(!u[W]){var H=typeof Vi=="function"&&Vi;if(!le&&H)return H(W,!0);if(b)return b(W,!0);var U=new Error("Cannot find module '"+W+"'");throw U.code="MODULE_NOT_FOUND",U}var B=d[W]={exports:{}};u[W][0].call(B.exports,function(ce){var Q=u[W][1][ce];return y(Q||ce)},B,B.exports,a,u,d,m)}return d[W].exports}for(var b=typeof Vi=="function"&&Vi,D=0;D=43)}}).catch(function(){return!1})}function De(p){return typeof ke=="boolean"?H.resolve(ke):J(p).then(function(E){return ke=E,ke})}function et(p){var E=he[p.name],g={};g.promise=new H(function(A,k){g.resolve=A,g.reject=k}),E.deferredOperations.push(g),E.dbReady?E.dbReady=E.dbReady.then(function(){return g.promise}):E.dbReady=g.promise}function Me(p){var E=he[p.name],g=E.deferredOperations.pop();if(g)return g.resolve(),g.promise}function ve(p,E){var g=he[p.name],A=g.deferredOperations.pop();if(A)return A.reject(E),A.promise}function Qe(p,E){return new H(function(g,A){if(he[p.name]=he[p.name]||qe(),p.db)if(E)et(p),p.db.close();else return g(p.db);var k=[p.name];E&&k.push(p.version);var S=D.open.apply(D,k);E&&(S.onupgradeneeded=function(M){var j=S.result;try{j.createObjectStore(p.storeName),M.oldVersion<=1&&j.createObjectStore(we)}catch(q){if(q.name==="ConstraintError")console.warn('The database "'+p.name+'" has been upgraded from version '+M.oldVersion+" to version "+M.newVersion+', but the storage "'+p.storeName+'" already exists.');else throw q}}),S.onerror=function(M){M.preventDefault(),A(S.error)},S.onsuccess=function(){var M=S.result;M.onversionchange=function(j){j.target.close()},g(M),Me(p)}})}function St(p){return Qe(p,!1)}function wr(p){return Qe(p,!0)}function mt(p,E){if(!p.db)return!0;var g=!p.db.objectStoreNames.contains(p.storeName),A=p.versionp.db.version;if(A&&(p.version!==E&&console.warn('The database "'+p.name+`" can't be downgraded from version `+p.db.version+" to version "+p.version+"."),p.version=p.db.version),k||g){if(g){var S=p.db.version+1;S>p.version&&(p.version=S)}return!0}return!1}function Er(p){return new H(function(E,g){var A=new FileReader;A.onerror=g,A.onloadend=function(k){var S=btoa(k.target.result||"");E({__local_forage_encoded_blob:!0,data:S,type:p.type})},A.readAsBinaryString(p)})}function gt(p){var E=ue(atob(p.data));return le([E],{type:p.type})}function Kr(p){return p&&p.__local_forage_encoded_blob}function Zr(p){var E=this,g=E._initReady().then(function(){var A=he[E._dbInfo.name];if(A&&A.dbReady)return A.dbReady});return B(g,p,p),g}function Ve(p){et(p);for(var E=he[p.name],g=E.forages,A=0;A0&&(!p.db||S.name==="InvalidStateError"||S.name==="NotFoundError"))return H.resolve().then(function(){if(!p.db||S.name==="NotFoundError"&&!p.db.objectStoreNames.contains(p.storeName)&&p.version<=p.db.version)return p.db&&(p.version=p.db.version+1),wr(p)}).then(function(){return Ve(p).then(function(){vt(p,E,g,A-1)})}).catch(g);g(S)}}function qe(){return{forages:[],db:null,dbReady:null,deferredOperations:[]}}function Ci(p){var E=this,g={db:null};if(p)for(var A in p)g[A]=p[A];var k=he[g.name];k||(k=qe(),he[g.name]=k),k.forages.push(E),E._initReady||(E._initReady=E.ready,E.ready=Zr);var S=[];function M(){return H.resolve()}for(var j=0;j>4,z[k++]=(M&15)<<4|j>>2,z[k++]=(j&3)<<6|q&63;return Y}function jt(p){var E=new Uint8Array(p),g="",A;for(A=0;A>2],g+=ut[(E[A]&3)<<4|E[A+1]>>4],g+=ut[(E[A+1]&15)<<2|E[A+2]>>6],g+=ut[E[A+2]&63];return E.length%3==2?g=g.substring(0,g.length-1)+"=":E.length%3==1&&(g=g.substring(0,g.length-2)+"=="),g}function fr(p,E){var g="";if(p&&(g=At.call(p)),p&&(g==="[object ArrayBuffer]"||p.buffer&&At.call(p.buffer)==="[object ArrayBuffer]")){var A,k=Zt;p instanceof ArrayBuffer?(A=p,k+=ct):(A=p.buffer,g==="[object Int8Array]"?k+=Bt:g==="[object Uint8Array]"?k+=te:g==="[object Uint8ClampedArray]"?k+=Ge:g==="[object Int16Array]"?k+=tr:g==="[object Uint16Array]"?k+=ii:g==="[object Int32Array]"?k+=ri:g==="[object Uint32Array]"?k+=Wr:g==="[object Float32Array]"?k+=Ar:g==="[object Float64Array]"?k+=rr:E(new Error("Failed to get type for BinaryArray"))),E(k+jt(A))}else if(g==="[object Blob]"){var S=new FileReader;S.onload=function(){var M=ot+p.type+"~"+jt(this.result);E(Zt+er+M)},S.readAsArrayBuffer(p)}else try{E(JSON.stringify(p))}catch(M){console.error("Couldn't convert value into a JSON string: ",p),E(null,M)}}function $r(p){if(p.substring(0,Ur)!==Zt)return JSON.parse(p);var E=p.substring(ft),g=p.substring(Ur,ft),A;if(g===er&&Sr.test(E)){var k=E.match(Sr);A=k[1],E=E.substring(k[0].length)}var S=nt(E);switch(g){case ct:return S;case er:return le([S],{type:A});case Bt:return new Int8Array(S);case te:return new Uint8Array(S);case Ge:return new Uint8ClampedArray(S);case tr:return new Int16Array(S);case ii:return new Uint16Array(S);case ri:return new Int32Array(S);case Wr:return new Uint32Array(S);case Ar:return new Float32Array(S);case rr:return new Float64Array(S);default:throw new Error("Unkown type: "+g)}}var Hr={serialize:fr,deserialize:$r,stringToBuffer:nt,bufferToString:jt};function Cr(p,E,g,A){p.executeSql("CREATE TABLE IF NOT EXISTS "+E.storeName+" (id INTEGER PRIMARY KEY, key unique, value)",[],g,A)}function Wt(p){var E=this,g={db:null};if(p)for(var A in p)g[A]=typeof p[A]!="string"?p[A].toString():p[A];var k=new H(function(S,M){try{g.db=openDatabase(g.name,String(g.version),g.description,g.size)}catch(j){return M(j)}g.db.transaction(function(j){Cr(j,g,function(){E._dbInfo=g,S()},function(q,Y){M(Y)})},M)});return g.serializer=Hr,k}function yt(p,E,g,A,k,S){p.executeSql(g,A,k,function(M,j){j.code===j.SYNTAX_ERR?M.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name = ?",[E.storeName],function(q,Y){Y.rows.length?S(q,j):Cr(q,E,function(){q.executeSql(g,A,k,S)},S)},S):S(M,j)},S)}function dr(p,E){var g=this;p=ce(p);var A=new H(function(k,S){g.ready().then(function(){var M=g._dbInfo;M.db.transaction(function(j){yt(j,M,"SELECT * FROM "+M.storeName+" WHERE key = ? LIMIT 1",[p],function(q,Y){var z=Y.rows.length?Y.rows.item(0).value:null;z&&(z=M.serializer.deserialize(z)),k(z)},function(q,Y){S(Y)})})}).catch(S)});return U(A,E),A}function ki(p,E){var g=this,A=new H(function(k,S){g.ready().then(function(){var M=g._dbInfo;M.db.transaction(function(j){yt(j,M,"SELECT * FROM "+M.storeName,[],function(q,Y){for(var z=Y.rows,ne=z.length,xe=0;xe0){M(dt.apply(k,[p,q,g,A-1]));return}j(xe)}})})}).catch(j)});return U(S,g),S}function Pe(p,E,g){return dt.apply(this,[p,E,g,1])}function zt(p,E){var g=this;p=ce(p);var A=new H(function(k,S){g.ready().then(function(){var M=g._dbInfo;M.db.transaction(function(j){yt(j,M,"DELETE FROM "+M.storeName+" WHERE key = ?",[p],function(){k()},function(q,Y){S(Y)})})}).catch(S)});return U(A,E),A}function $i(p){var E=this,g=new H(function(A,k){E.ready().then(function(){var S=E._dbInfo;S.db.transaction(function(M){yt(M,S,"DELETE FROM "+S.storeName,[],function(){A()},function(j,q){k(q)})})}).catch(k)});return U(g,p),g}function ni(p){var E=this,g=new H(function(A,k){E.ready().then(function(){var S=E._dbInfo;S.db.transaction(function(M){yt(M,S,"SELECT COUNT(key) as c FROM "+S.storeName,[],function(j,q){var Y=q.rows.item(0).c;A(Y)},function(j,q){k(q)})})}).catch(k)});return U(g,p),g}function Br(p,E){var g=this,A=new H(function(k,S){g.ready().then(function(){var M=g._dbInfo;M.db.transaction(function(j){yt(j,M,"SELECT key FROM "+M.storeName+" WHERE id = ? LIMIT 1",[p+1],function(q,Y){var z=Y.rows.length?Y.rows.item(0).key:null;k(z)},function(q,Y){S(Y)})})}).catch(S)});return U(A,E),A}function ir(p){var E=this,g=new H(function(A,k){E.ready().then(function(){var S=E._dbInfo;S.db.transaction(function(M){yt(M,S,"SELECT key FROM "+S.storeName,[],function(j,q){for(var Y=[],z=0;z '__WebKitDatabaseInfoTable__'",[],function(k,S){for(var M=[],j=0;j0}function Ri(p){var E=this,g={};if(p)for(var A in p)g[A]=p[A];return g.keyPrefix=si(p,E._defaultConfig),zr()?(E._dbInfo=g,g.serializer=Hr,H.resolve()):H.reject()}function $t(p){var E=this,g=E.ready().then(function(){for(var A=E._dbInfo.keyPrefix,k=localStorage.length-1;k>=0;k--){var S=localStorage.key(k);S.indexOf(A)===0&&localStorage.removeItem(S)}});return U(g,p),g}function oi(p,E){var g=this;p=ce(p);var A=g.ready().then(function(){var k=g._dbInfo,S=localStorage.getItem(k.keyPrefix+p);return S&&(S=k.serializer.deserialize(S)),S});return U(A,E),A}function Li(p,E){var g=this,A=g.ready().then(function(){for(var k=g._dbInfo,S=k.keyPrefix,M=S.length,j=localStorage.length,q=1,Y=0;Y=0;M--){var j=localStorage.key(M);j.indexOf(S)===0&&localStorage.removeItem(j)}}):k=H.reject("Invalid arguments"),U(k,E),k}var ie={_driver:"localStorageWrapper",_initStorage:Ri,_support:jr(),iterate:Li,getItem:oi,setItem:T,removeItem:ae,clear:$t,length:ui,key:ar,keys:li,dropInstance:V},Fe=function(E,g){return E===g||typeof E=="number"&&typeof g=="number"&&isNaN(E)&&isNaN(g)},tt=function(E,g){for(var A=E.length,k=0;k{(function(l,t){"use strict";typeof Un=="object"&&typeof Un.exports=="object"?Un.exports=l.document?t(l,!0):function(r){if(!r.document)throw new Error("jQuery requires a window with a document");return t(r)}:t(l)})(typeof window!="undefined"?window:eo,function(l,t){"use strict";var r=[],a=Object.getPrototypeOf,u=r.slice,d=r.flat?function(e){return r.flat.call(e)}:function(e){return r.concat.apply([],e)},m=r.push,y=r.indexOf,b={},D=b.toString,W=b.hasOwnProperty,le=W.toString,H=le.call(Object),U={},B=function(i){return typeof i=="function"&&typeof i.nodeType!="number"&&typeof i.item!="function"},ce=function(i){return i!=null&&i===i.window},Q=l.document,we={type:!0,src:!0,nonce:!0,noModule:!0};function ke(e,i,n){n=n||Q;var o,c,f=n.createElement("script");if(f.text=e,i)for(o in we)c=i[o]||i.getAttribute&&i.getAttribute(o),c&&f.setAttribute(o,c);n.head.appendChild(f).parentNode.removeChild(f)}function he(e){return e==null?e+"":typeof e=="object"||typeof e=="function"?b[D.call(e)]||"object":typeof e}var de="3.7.1",He=/HTML$/i,s=function(e,i){return new s.fn.init(e,i)};s.fn=s.prototype={jquery:de,constructor:s,length:0,toArray:function(){return u.call(this)},get:function(e){return e==null?u.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var i=s.merge(this.constructor(),e);return i.prevObject=this,i},each:function(e){return s.each(this,e)},map:function(e){return this.pushStack(s.map(this,function(i,n){return e.call(i,n,i)}))},slice:function(){return this.pushStack(u.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(s.grep(this,function(e,i){return(i+1)%2}))},odd:function(){return this.pushStack(s.grep(this,function(e,i){return i%2}))},eq:function(e){var i=this.length,n=+e+(e<0?i:0);return this.pushStack(n>=0&&n0&&i-1 in e}function J(e,i){return e.nodeName&&e.nodeName.toLowerCase()===i.toLowerCase()}var De=r.pop,et=r.sort,Me=r.splice,ve="[\\x20\\t\\r\\n\\f]",Qe=new RegExp("^"+ve+"+|((?:^|[^\\\\])(?:\\\\.)*)"+ve+"+$","g");s.contains=function(e,i){var n=i&&i.parentNode;return e===n||!!(n&&n.nodeType===1&&(e.contains?e.contains(n):e.compareDocumentPosition&&e.compareDocumentPosition(n)&16))};var St=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;function wr(e,i){return i?e==="\0"?"\uFFFD":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e}s.escapeSelector=function(e){return(e+"").replace(St,wr)};var mt=Q,Er=m;(function(){var e,i,n,o,c,f=Er,h,w,x,C,I,N=s.expando,L=0,G=0,ge=Tn(),Re=Tn(),Ee=Tn(),pt=Tn(),at=function(v,_){return v===_&&(c=!0),0},hr="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",pr="(?:\\\\[\\da-fA-F]{1,6}"+ve+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",Ce="\\["+ve+"*("+pr+")(?:"+ve+"*([*^$|!~]?=)"+ve+`*(?:'((?:\\\\.|[^\\\\'])*)'|"((?:\\\\.|[^\\\\"])*)"|(`+pr+"))|)"+ve+"*\\]",hi=":("+pr+`)(?:\\((('((?:\\\\.|[^\\\\'])*)'|"((?:\\\\.|[^\\\\"])*)")|((?:\\\\.|[^\\\\()[\\]]|`+Ce+")*)|.*)\\)|)",Le=new RegExp(ve+"+","g"),Je=new RegExp("^"+ve+"*,"+ve+"*"),ji=new RegExp("^"+ve+"*([>+~]|"+ve+")"+ve+"*"),pa=new RegExp(ve+"|>"),mr=new RegExp(hi),zi=new RegExp("^"+pr+"$"),gr={ID:new RegExp("^#("+pr+")"),CLASS:new RegExp("^\\.("+pr+")"),TAG:new RegExp("^("+pr+"|[*])"),ATTR:new RegExp("^"+Ce),PSEUDO:new RegExp("^"+hi),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ve+"*(even|odd|(([+-]|)(\\d*)n|)"+ve+"*(?:([+-]|)"+ve+"*(\\d+)|))"+ve+"*\\)|)","i"),bool:new RegExp("^(?:"+hr+")$","i"),needsContext:new RegExp("^"+ve+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ve+"*((?:-\\d)?\\d*)"+ve+"*\\)|)(?=[^-]|$)","i")},Vr=/^(?:input|select|textarea|button)$/i,qr=/^h\d$/i,Gt=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ma=/[+~]/,Dr=new RegExp("\\\\[\\da-fA-F]{1,6}"+ve+"?|\\\\([^\\r\\n\\f])","g"),Rr=function(v,_){var R="0x"+v.slice(1)-65536;return _||(R<0?String.fromCharCode(R+65536):String.fromCharCode(R>>10|55296,R&1023|56320))},$l=function(){Yr()},Hl=An(function(v){return v.disabled===!0&&J(v,"fieldset")},{dir:"parentNode",next:"legend"});function Bl(){try{return h.activeElement}catch(v){}}try{f.apply(r=u.call(mt.childNodes),mt.childNodes),r[mt.childNodes.length].nodeType}catch(v){f={apply:function(_,R){Er.apply(_,u.call(R))},call:function(_){Er.apply(_,u.call(arguments,1))}}}function We(v,_,R,F){var O,X,K,se,Z,Te,pe,be=_&&_.ownerDocument,Se=_?_.nodeType:9;if(R=R||[],typeof v!="string"||!v||Se!==1&&Se!==9&&Se!==11)return R;if(!F&&(Yr(_),_=_||h,x)){if(Se!==11&&(Z=Gt.exec(v)))if(O=Z[1]){if(Se===9)if(K=_.getElementById(O)){if(K.id===O)return f.call(R,K),R}else return R;else if(be&&(K=be.getElementById(O))&&We.contains(_,K)&&K.id===O)return f.call(R,K),R}else{if(Z[2])return f.apply(R,_.getElementsByTagName(v)),R;if((O=Z[3])&&_.getElementsByClassName)return f.apply(R,_.getElementsByClassName(O)),R}if(!pt[v+" "]&&(!C||!C.test(v))){if(pe=v,be=_,Se===1&&(pa.test(v)||ji.test(v))){for(be=ma.test(v)&&va(_.parentNode)||_,(be!=_||!U.scope)&&((se=_.getAttribute("id"))?se=s.escapeSelector(se):_.setAttribute("id",se=N)),Te=Gi(v),X=Te.length;X--;)Te[X]=(se?"#"+se:":scope")+" "+Sn(Te[X]);pe=Te.join(",")}try{return f.apply(R,be.querySelectorAll(pe)),R}catch(fe){pt(v,!0)}finally{se===N&&_.removeAttribute("id")}}}return Ns(v.replace(Qe,"$1"),_,R,F)}function Tn(){var v=[];function _(R,F){return v.push(R+" ")>i.cacheLength&&delete _[v.shift()],_[R+" "]=F}return _}function sr(v){return v[N]=!0,v}function Fi(v){var _=h.createElement("fieldset");try{return!!v(_)}catch(R){return!1}finally{_.parentNode&&_.parentNode.removeChild(_),_=null}}function jl(v){return function(_){return J(_,"input")&&_.type===v}}function zl(v){return function(_){return(J(_,"input")||J(_,"button"))&&_.type===v}}function Ms(v){return function(_){return"form"in _?_.parentNode&&_.disabled===!1?"label"in _?"label"in _.parentNode?_.parentNode.disabled===v:_.disabled===v:_.isDisabled===v||_.isDisabled!==!v&&Hl(_)===v:_.disabled===v:"label"in _?_.disabled===v:!1}}function pi(v){return sr(function(_){return _=+_,sr(function(R,F){for(var O,X=v([],R.length,_),K=X.length;K--;)R[O=X[K]]&&(R[O]=!(F[O]=R[O]))})})}function va(v){return v&&typeof v.getElementsByTagName!="undefined"&&v}function Yr(v){var _,R=v?v.ownerDocument||v:mt;return R==h||R.nodeType!==9||!R.documentElement||(h=R,w=h.documentElement,x=!s.isXMLDoc(h),I=w.matches||w.webkitMatchesSelector||w.msMatchesSelector,w.msMatchesSelector&&mt!=h&&(_=h.defaultView)&&_.top!==_&&_.addEventListener("unload",$l),U.getById=Fi(function(F){return w.appendChild(F).id=s.expando,!h.getElementsByName||!h.getElementsByName(s.expando).length}),U.disconnectedMatch=Fi(function(F){return I.call(F,"*")}),U.scope=Fi(function(){return h.querySelectorAll(":scope")}),U.cssHas=Fi(function(){try{return h.querySelector(":has(*,:jqfake)"),!1}catch(F){return!0}}),U.getById?(i.filter.ID=function(F){var O=F.replace(Dr,Rr);return function(X){return X.getAttribute("id")===O}},i.find.ID=function(F,O){if(typeof O.getElementById!="undefined"&&x){var X=O.getElementById(F);return X?[X]:[]}}):(i.filter.ID=function(F){var O=F.replace(Dr,Rr);return function(X){var K=typeof X.getAttributeNode!="undefined"&&X.getAttributeNode("id");return K&&K.value===O}},i.find.ID=function(F,O){if(typeof O.getElementById!="undefined"&&x){var X,K,se,Z=O.getElementById(F);if(Z){if(X=Z.getAttributeNode("id"),X&&X.value===F)return[Z];for(se=O.getElementsByName(F),K=0;Z=se[K++];)if(X=Z.getAttributeNode("id"),X&&X.value===F)return[Z]}return[]}}),i.find.TAG=function(F,O){return typeof O.getElementsByTagName!="undefined"?O.getElementsByTagName(F):O.querySelectorAll(F)},i.find.CLASS=function(F,O){if(typeof O.getElementsByClassName!="undefined"&&x)return O.getElementsByClassName(F)},C=[],Fi(function(F){var O;w.appendChild(F).innerHTML="",F.querySelectorAll("[selected]").length||C.push("\\["+ve+"*(?:value|"+hr+")"),F.querySelectorAll("[id~="+N+"-]").length||C.push("~="),F.querySelectorAll("a#"+N+"+*").length||C.push(".#.+[+~]"),F.querySelectorAll(":checked").length||C.push(":checked"),O=h.createElement("input"),O.setAttribute("type","hidden"),F.appendChild(O).setAttribute("name","D"),w.appendChild(F).disabled=!0,F.querySelectorAll(":disabled").length!==2&&C.push(":enabled",":disabled"),O=h.createElement("input"),O.setAttribute("name",""),F.appendChild(O),F.querySelectorAll("[name='']").length||C.push("\\["+ve+"*name"+ve+"*="+ve+`*(?:''|"")`)}),U.cssHas||C.push(":has"),C=C.length&&new RegExp(C.join("|")),at=function(F,O){if(F===O)return c=!0,0;var X=!F.compareDocumentPosition-!O.compareDocumentPosition;return X||(X=(F.ownerDocument||F)==(O.ownerDocument||O)?F.compareDocumentPosition(O):1,X&1||!U.sortDetached&&O.compareDocumentPosition(F)===X?F===h||F.ownerDocument==mt&&We.contains(mt,F)?-1:O===h||O.ownerDocument==mt&&We.contains(mt,O)?1:o?y.call(o,F)-y.call(o,O):0:X&4?-1:1)}),h}We.matches=function(v,_){return We(v,null,null,_)},We.matchesSelector=function(v,_){if(Yr(v),x&&!pt[_+" "]&&(!C||!C.test(_)))try{var R=I.call(v,_);if(R||U.disconnectedMatch||v.document&&v.document.nodeType!==11)return R}catch(F){pt(_,!0)}return We(_,h,null,[v]).length>0},We.contains=function(v,_){return(v.ownerDocument||v)!=h&&Yr(v),s.contains(v,_)},We.attr=function(v,_){(v.ownerDocument||v)!=h&&Yr(v);var R=i.attrHandle[_.toLowerCase()],F=R&&W.call(i.attrHandle,_.toLowerCase())?R(v,_,!x):void 0;return F!==void 0?F:v.getAttribute(_)},We.error=function(v){throw new Error("Syntax error, unrecognized expression: "+v)},s.uniqueSort=function(v){var _,R=[],F=0,O=0;if(c=!U.sortStable,o=!U.sortStable&&u.call(v,0),et.call(v,at),c){for(;_=v[O++];)_===v[O]&&(F=R.push(O));for(;F--;)Me.call(v,R[F],1)}return o=null,v},s.fn.uniqueSort=function(){return this.pushStack(s.uniqueSort(u.apply(this)))},i=s.expr={cacheLength:50,createPseudo:sr,match:gr,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(v){return v[1]=v[1].replace(Dr,Rr),v[3]=(v[3]||v[4]||v[5]||"").replace(Dr,Rr),v[2]==="~="&&(v[3]=" "+v[3]+" "),v.slice(0,4)},CHILD:function(v){return v[1]=v[1].toLowerCase(),v[1].slice(0,3)==="nth"?(v[3]||We.error(v[0]),v[4]=+(v[4]?v[5]+(v[6]||1):2*(v[3]==="even"||v[3]==="odd")),v[5]=+(v[7]+v[8]||v[3]==="odd")):v[3]&&We.error(v[0]),v},PSEUDO:function(v){var _,R=!v[6]&&v[2];return gr.CHILD.test(v[0])?null:(v[3]?v[2]=v[4]||v[5]||"":R&&mr.test(R)&&(_=Gi(R,!0))&&(_=R.indexOf(")",R.length-_)-R.length)&&(v[0]=v[0].slice(0,_),v[2]=R.slice(0,_)),v.slice(0,3))}},filter:{TAG:function(v){var _=v.replace(Dr,Rr).toLowerCase();return v==="*"?function(){return!0}:function(R){return J(R,_)}},CLASS:function(v){var _=ge[v+" "];return _||(_=new RegExp("(^|"+ve+")"+v+"("+ve+"|$)"))&&ge(v,function(R){return _.test(typeof R.className=="string"&&R.className||typeof R.getAttribute!="undefined"&&R.getAttribute("class")||"")})},ATTR:function(v,_,R){return function(F){var O=We.attr(F,v);return O==null?_==="!=":_?(O+="",_==="="?O===R:_==="!="?O!==R:_==="^="?R&&O.indexOf(R)===0:_==="*="?R&&O.indexOf(R)>-1:_==="$="?R&&O.slice(-R.length)===R:_==="~="?(" "+O.replace(Le," ")+" ").indexOf(R)>-1:_==="|="?O===R||O.slice(0,R.length+1)===R+"-":!1):!0}},CHILD:function(v,_,R,F,O){var X=v.slice(0,3)!=="nth",K=v.slice(-4)!=="last",se=_==="of-type";return F===1&&O===0?function(Z){return!!Z.parentNode}:function(Z,Te,pe){var be,Se,fe,je,Mt,_t=X!==K?"nextSibling":"previousSibling",Vt=Z.parentNode,vr=se&&Z.nodeName.toLowerCase(),Ii=!pe&&!se,Ct=!1;if(Vt){if(X){for(;_t;){for(fe=Z;fe=fe[_t];)if(se?J(fe,vr):fe.nodeType===1)return!1;Mt=_t=v==="only"&&!Mt&&"nextSibling"}return!0}if(Mt=[K?Vt.firstChild:Vt.lastChild],K&&Ii){for(Se=Vt[N]||(Vt[N]={}),be=Se[v]||[],je=be[0]===L&&be[1],Ct=je&&be[2],fe=je&&Vt.childNodes[je];fe=++je&&fe&&fe[_t]||(Ct=je=0)||Mt.pop();)if(fe.nodeType===1&&++Ct&&fe===Z){Se[v]=[L,je,Ct];break}}else if(Ii&&(Se=Z[N]||(Z[N]={}),be=Se[v]||[],je=be[0]===L&&be[1],Ct=je),Ct===!1)for(;(fe=++je&&fe&&fe[_t]||(Ct=je=0)||Mt.pop())&&!((se?J(fe,vr):fe.nodeType===1)&&++Ct&&(Ii&&(Se=fe[N]||(fe[N]={}),Se[v]=[L,Ct]),fe===Z)););return Ct-=O,Ct===F||Ct%F==0&&Ct/F>=0}}},PSEUDO:function(v,_){var R,F=i.pseudos[v]||i.setFilters[v.toLowerCase()]||We.error("unsupported pseudo: "+v);return F[N]?F(_):F.length>1?(R=[v,v,"",_],i.setFilters.hasOwnProperty(v.toLowerCase())?sr(function(O,X){for(var K,se=F(O,_),Z=se.length;Z--;)K=y.call(O,se[Z]),O[K]=!(X[K]=se[Z])}):function(O){return F(O,0,R)}):F}},pseudos:{not:sr(function(v){var _=[],R=[],F=wa(v.replace(Qe,"$1"));return F[N]?sr(function(O,X,K,se){for(var Z,Te=F(O,null,se,[]),pe=O.length;pe--;)(Z=Te[pe])&&(O[pe]=!(X[pe]=Z))}):function(O,X,K){return _[0]=O,F(_,null,K,R),_[0]=null,!R.pop()}}),has:sr(function(v){return function(_){return We(v,_).length>0}}),contains:sr(function(v){return v=v.replace(Dr,Rr),function(_){return(_.textContent||s.text(_)).indexOf(v)>-1}}),lang:sr(function(v){return zi.test(v||"")||We.error("unsupported lang: "+v),v=v.replace(Dr,Rr).toLowerCase(),function(_){var R;do if(R=x?_.lang:_.getAttribute("xml:lang")||_.getAttribute("lang"))return R=R.toLowerCase(),R===v||R.indexOf(v+"-")===0;while((_=_.parentNode)&&_.nodeType===1);return!1}}),target:function(v){var _=l.location&&l.location.hash;return _&&_.slice(1)===v.id},root:function(v){return v===w},focus:function(v){return v===Bl()&&h.hasFocus()&&!!(v.type||v.href||~v.tabIndex)},enabled:Ms(!1),disabled:Ms(!0),checked:function(v){return J(v,"input")&&!!v.checked||J(v,"option")&&!!v.selected},selected:function(v){return v.parentNode&&v.parentNode.selectedIndex,v.selected===!0},empty:function(v){for(v=v.firstChild;v;v=v.nextSibling)if(v.nodeType<6)return!1;return!0},parent:function(v){return!i.pseudos.empty(v)},header:function(v){return qr.test(v.nodeName)},input:function(v){return Vr.test(v.nodeName)},button:function(v){return J(v,"input")&&v.type==="button"||J(v,"button")},text:function(v){var _;return J(v,"input")&&v.type==="text"&&((_=v.getAttribute("type"))==null||_.toLowerCase()==="text")},first:pi(function(){return[0]}),last:pi(function(v,_){return[_-1]}),eq:pi(function(v,_,R){return[R<0?R+_:R]}),even:pi(function(v,_){for(var R=0;R<_;R+=2)v.push(R);return v}),odd:pi(function(v,_){for(var R=1;R<_;R+=2)v.push(R);return v}),lt:pi(function(v,_,R){var F;for(R<0?F=R+_:R>_?F=_:F=R;--F>=0;)v.push(F);return v}),gt:pi(function(v,_,R){for(var F=R<0?R+_:R;++F<_;)v.push(F);return v})}},i.pseudos.nth=i.pseudos.eq;for(e in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})i.pseudos[e]=jl(e);for(e in{submit:!0,reset:!0})i.pseudos[e]=zl(e);function Os(){}Os.prototype=i.filters=i.pseudos,i.setFilters=new Os;function Gi(v,_){var R,F,O,X,K,se,Z,Te=Re[v+" "];if(Te)return _?0:Te.slice(0);for(K=v,se=[],Z=i.preFilter;K;){(!R||(F=Je.exec(K)))&&(F&&(K=K.slice(F[0].length)||K),se.push(O=[])),R=!1,(F=ji.exec(K))&&(R=F.shift(),O.push({value:R,type:F[0].replace(Qe," ")}),K=K.slice(R.length));for(X in i.filter)(F=gr[X].exec(K))&&(!Z[X]||(F=Z[X](F)))&&(R=F.shift(),O.push({value:R,type:X,matches:F}),K=K.slice(R.length));if(!R)break}return _?K.length:K?We.error(v):Re(v,se).slice(0)}function Sn(v){for(var _=0,R=v.length,F="";_1?function(_,R,F){for(var O=v.length;O--;)if(!v[O](_,R,F))return!1;return!0}:v[0]}function Gl(v,_,R){for(var F=0,O=_.length;F-1&&(K[pe]=!(se[pe]=Se))}}else fe=Cn(fe===se?fe.splice(_t,fe.length):fe),O?O(null,se,fe,Te):f.apply(se,fe)})}function xa(v){for(var _,R,F,O=v.length,X=i.relative[v[0].type],K=X||i.relative[" "],se=X?1:0,Z=An(function(be){return be===_},K,!0),Te=An(function(be){return y.call(_,be)>-1},K,!0),pe=[function(be,Se,fe){var je=!X&&(fe||Se!=n)||((_=Se).nodeType?Z(be,Se,fe):Te(be,Se,fe));return _=null,je}];se1&&ba(pe),se>1&&Sn(v.slice(0,se-1).concat({value:v[se-2].type===" "?"*":""})).replace(Qe,"$1"),R,se0,F=v.length>0,O=function(X,K,se,Z,Te){var pe,be,Se,fe=0,je="0",Mt=X&&[],_t=[],Vt=n,vr=X||F&&i.find.TAG("*",Te),Ii=L+=Vt==null?1:Math.random()||.1,Ct=vr.length;for(Te&&(n=K==h||K||Te);je!==Ct&&(pe=vr[je])!=null;je++){if(F&&pe){for(be=0,!K&&pe.ownerDocument!=h&&(Yr(pe),se=!x);Se=v[be++];)if(Se(pe,K||h,se)){f.call(Z,pe);break}Te&&(L=Ii)}R&&((pe=!Se&&pe)&&fe--,X&&Mt.push(pe))}if(fe+=je,R&&je!==fe){for(be=0;Se=_[be++];)Se(Mt,_t,K,se);if(X){if(fe>0)for(;je--;)Mt[je]||_t[je]||(_t[je]=De.call(Z));_t=Cn(_t)}f.apply(Z,_t),Te&&!X&&_t.length>0&&fe+_.length>1&&s.uniqueSort(Z)}return Te&&(L=Ii,n=Vt),Mt};return R?sr(O):O}function wa(v,_){var R,F=[],O=[],X=Ee[v+" "];if(!X){for(_||(_=Gi(v)),R=_.length;R--;)X=xa(_[R]),X[N]?F.push(X):O.push(X);X=Ee(v,Vl(O,F)),X.selector=v}return X}function Ns(v,_,R,F){var O,X,K,se,Z,Te=typeof v=="function"&&v,pe=!F&&Gi(v=Te.selector||v);if(R=R||[],pe.length===1){if(X=pe[0]=pe[0].slice(0),X.length>2&&(K=X[0]).type==="ID"&&_.nodeType===9&&x&&i.relative[X[1].type]){if(_=(i.find.ID(K.matches[0].replace(Dr,Rr),_)||[])[0],_)Te&&(_=_.parentNode);else return R;v=v.slice(X.shift().value.length)}for(O=gr.needsContext.test(v)?0:X.length;O--&&(K=X[O],!i.relative[se=K.type]);)if((Z=i.find[se])&&(F=Z(K.matches[0].replace(Dr,Rr),ma.test(X[0].type)&&va(_.parentNode)||_))){if(X.splice(O,1),v=F.length&&Sn(X),!v)return f.apply(R,F),R;break}}return(Te||wa(v,pe))(F,_,!x,R,!_||ma.test(v)&&va(_.parentNode)||_),R}U.sortStable=N.split("").sort(at).join("")===N,Yr(),U.sortDetached=Fi(function(v){return v.compareDocumentPosition(h.createElement("fieldset"))&1}),s.find=We,s.expr[":"]=s.expr.pseudos,s.unique=s.uniqueSort,We.compile=wa,We.select=Ns,We.setDocument=Yr,We.tokenize=Gi,We.escape=s.escapeSelector,We.getText=s.text,We.isXML=s.isXMLDoc,We.selectors=s.expr,We.support=s.support,We.uniqueSort=s.uniqueSort})();var gt=function(e,i,n){for(var o=[],c=n!==void 0;(e=e[i])&&e.nodeType!==9;)if(e.nodeType===1){if(c&&s(e).is(n))break;o.push(e)}return o},Kr=function(e,i){for(var n=[];e;e=e.nextSibling)e.nodeType===1&&e!==i&&n.push(e);return n},Zr=s.expr.match.needsContext,Ve=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function vt(e,i,n){return B(i)?s.grep(e,function(o,c){return!!i.call(o,c,o)!==n}):i.nodeType?s.grep(e,function(o){return o===i!==n}):typeof i!="string"?s.grep(e,function(o){return y.call(i,o)>-1!==n}):s.filter(i,e,n)}s.filter=function(e,i,n){var o=i[0];return n&&(e=":not("+e+")"),i.length===1&&o.nodeType===1?s.find.matchesSelector(o,e)?[o]:[]:s.find.matches(e,s.grep(i,function(c){return c.nodeType===1}))},s.fn.extend({find:function(e){var i,n,o=this.length,c=this;if(typeof e!="string")return this.pushStack(s(e).filter(function(){for(i=0;i1?s.uniqueSort(n):n},filter:function(e){return this.pushStack(vt(this,e||[],!1))},not:function(e){return this.pushStack(vt(this,e||[],!0))},is:function(e){return!!vt(this,typeof e=="string"&&Zr.test(e)?s(e):e||[],!1).length}});var qe,Ci=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,ze=s.fn.init=function(e,i,n){var o,c;if(!e)return this;if(n=n||qe,typeof e=="string")if(e[0]==="<"&&e[e.length-1]===">"&&e.length>=3?o=[null,e,null]:o=Ci.exec(e),o&&(o[1]||!i))if(o[1]){if(i=i instanceof s?i[0]:i,s.merge(this,s.parseHTML(o[1],i&&i.nodeType?i.ownerDocument||i:Q,!0)),Ve.test(o[1])&&s.isPlainObject(i))for(o in i)B(this[o])?this[o](i[o]):this.attr(o,i[o]);return this}else return c=Q.getElementById(o[2]),c&&(this[0]=c,this.length=1),this;else return!i||i.jquery?(i||n).find(e):this.constructor(i).find(e);else{if(e.nodeType)return this[0]=e,this.length=1,this;if(B(e))return n.ready!==void 0?n.ready(e):e(s)}return s.makeArray(e,this)};ze.prototype=s.fn,qe=s(Q);var _r=/^(?:parents|prev(?:Until|All))/,ei={children:!0,contents:!0,next:!0,prev:!0};s.fn.extend({has:function(e){var i=s(e,this),n=i.length;return this.filter(function(){for(var o=0;o-1:n.nodeType===1&&s.find.matchesSelector(n,e))){f.push(n);break}}return this.pushStack(f.length>1?s.uniqueSort(f):f)},index:function(e){return e?typeof e=="string"?y.call(s(e),this[0]):y.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,i){return this.pushStack(s.uniqueSort(s.merge(this.get(),s(e,i))))},addBack:function(e){return this.add(e==null?this.prevObject:this.prevObject.filter(e))}});function ti(e,i){for(;(e=e[i])&&e.nodeType!==1;);return e}s.each({parent:function(e){var i=e.parentNode;return i&&i.nodeType!==11?i:null},parents:function(e){return gt(e,"parentNode")},parentsUntil:function(e,i,n){return gt(e,"parentNode",n)},next:function(e){return ti(e,"nextSibling")},prev:function(e){return ti(e,"previousSibling")},nextAll:function(e){return gt(e,"nextSibling")},prevAll:function(e){return gt(e,"previousSibling")},nextUntil:function(e,i,n){return gt(e,"nextSibling",n)},prevUntil:function(e,i,n){return gt(e,"previousSibling",n)},siblings:function(e){return Kr((e.parentNode||{}).firstChild,e)},children:function(e){return Kr(e.firstChild)},contents:function(e){return e.contentDocument!=null&&a(e.contentDocument)?e.contentDocument:(J(e,"template")&&(e=e.content||e),s.merge([],e.childNodes))}},function(e,i){s.fn[e]=function(n,o){var c=s.map(this,i,n);return e.slice(-5)!=="Until"&&(o=n),o&&typeof o=="string"&&(c=s.filter(o,c)),this.length>1&&(ei[e]||s.uniqueSort(c),_r.test(e)&&c.reverse()),this.pushStack(c)}});var bt=/[^\x20\t\r\n\f]+/g;function Pi(e){var i={};return s.each(e.match(bt)||[],function(n,o){i[o]=!0}),i}s.Callbacks=function(e){e=typeof e=="string"?Pi(e):s.extend({},e);var i,n,o,c,f=[],h=[],w=-1,x=function(){for(c=c||e.once,o=i=!0;h.length;w=-1)for(n=h.shift();++w-1;)f.splice(L,1),L<=w&&w--}),this},has:function(I){return I?s.inArray(I,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return c=h=[],f=n="",this},disabled:function(){return!f},lock:function(){return c=h=[],!n&&!i&&(f=n=""),this},locked:function(){return!!c},fireWith:function(I,N){return c||(N=N||[],N=[I,N.slice?N.slice():N],h.push(N),i||x()),this},fire:function(){return C.fireWith(this,arguments),this},fired:function(){return!!o}};return C};function Jt(e){return e}function Ut(e){throw e}function Nr(e,i,n,o){var c;try{e&&B(c=e.promise)?c.call(e).done(i).fail(n):e&&B(c=e.then)?c.call(e,i,n):i.apply(void 0,[e].slice(o))}catch(f){n.apply(void 0,[f])}}s.extend({Deferred:function(e){var i=[["notify","progress",s.Callbacks("memory"),s.Callbacks("memory"),2],["resolve","done",s.Callbacks("once memory"),s.Callbacks("once memory"),0,"resolved"],["reject","fail",s.Callbacks("once memory"),s.Callbacks("once memory"),1,"rejected"]],n="pending",o={state:function(){return n},always:function(){return c.done(arguments).fail(arguments),this},catch:function(f){return o.then(null,f)},pipe:function(){var f=arguments;return s.Deferred(function(h){s.each(i,function(w,x){var C=B(f[x[4]])&&f[x[4]];c[x[1]](function(){var I=C&&C.apply(this,arguments);I&&B(I.promise)?I.promise().progress(h.notify).done(h.resolve).fail(h.reject):h[x[0]+"With"](this,C?[I]:arguments)})}),f=null}).promise()},then:function(f,h,w){var x=0;function C(I,N,L,G){return function(){var ge=this,Re=arguments,Ee=function(){var at,hr;if(!(I=x&&(L!==Ut&&(ge=void 0,Re=[at]),N.rejectWith(ge,Re))}};I?pt():(s.Deferred.getErrorHook?pt.error=s.Deferred.getErrorHook():s.Deferred.getStackHook&&(pt.error=s.Deferred.getStackHook()),l.setTimeout(pt))}}return s.Deferred(function(I){i[0][3].add(C(0,I,B(w)?w:Jt,I.notifyWith)),i[1][3].add(C(0,I,B(f)?f:Jt)),i[2][3].add(C(0,I,B(h)?h:Ut))}).promise()},promise:function(f){return f!=null?s.extend(f,o):o}},c={};return s.each(i,function(f,h){var w=h[2],x=h[5];o[h[1]]=w.add,x&&w.add(function(){n=x},i[3-f][2].disable,i[3-f][3].disable,i[0][2].lock,i[0][3].lock),w.add(h[3].fire),c[h[0]]=function(){return c[h[0]+"With"](this===c?void 0:this,arguments),this},c[h[0]+"With"]=w.fireWith}),o.promise(c),e&&e.call(c,c),c},when:function(e){var i=arguments.length,n=i,o=Array(n),c=u.call(arguments),f=s.Deferred(),h=function(w){return function(x){o[w]=this,c[w]=arguments.length>1?u.call(arguments):x,--i||f.resolveWith(o,c)}};if(i<=1&&(Nr(e,f.done(h(n)).resolve,f.reject,!i),f.state()==="pending"||B(c[n]&&c[n].then)))return f.then();for(;n--;)Nr(c[n],h(n),f.reject);return f.promise()}});var Kt=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;s.Deferred.exceptionHook=function(e,i){l.console&&l.console.warn&&e&&Kt.test(e.name)&&l.console.warn("jQuery.Deferred exception: "+e.message,e.stack,i)},s.readyException=function(e){l.setTimeout(function(){throw e})};var Tr=s.Deferred();s.fn.ready=function(e){return Tr.then(e).catch(function(i){s.readyException(i)}),this},s.extend({isReady:!1,readyWait:1,ready:function(e){(e===!0?--s.readyWait:s.isReady)||(s.isReady=!0,!(e!==!0&&--s.readyWait>0)&&Tr.resolveWith(Q,[s]))}}),s.ready.then=Tr.then;function ut(){Q.removeEventListener("DOMContentLoaded",ut),l.removeEventListener("load",ut),s.ready()}Q.readyState==="complete"||Q.readyState!=="loading"&&!Q.documentElement.doScroll?l.setTimeout(s.ready):(Q.addEventListener("DOMContentLoaded",ut),l.addEventListener("load",ut));var ot=function(e,i,n,o,c,f,h){var w=0,x=e.length,C=n==null;if(he(n)==="object"){c=!0;for(w in n)ot(e,i,w,n[w],!0,f,h)}else if(o!==void 0&&(c=!0,B(o)||(h=!0),C&&(h?(i.call(e,o),i=null):(C=i,i=function(I,N,L){return C.call(s(I),L)})),i))for(;w1,null,!0)},removeData:function(e){return this.each(function(){Ge.remove(this,e)})}}),s.extend({queue:function(e,i,n){var o;if(e)return i=(i||"fx")+"queue",o=te.get(e,i),n&&(!o||Array.isArray(n)?o=te.access(e,i,s.makeArray(n)):o.push(n)),o||[]},dequeue:function(e,i){i=i||"fx";var n=s.queue(e,i),o=n.length,c=n.shift(),f=s._queueHooks(e,i),h=function(){s.dequeue(e,i)};c==="inprogress"&&(c=n.shift(),o--),c&&(i==="fx"&&n.unshift("inprogress"),delete f.stop,c.call(e,h,f)),!o&&f&&f.empty.fire()},_queueHooks:function(e,i){var n=i+"queueHooks";return te.get(e,n)||te.access(e,n,{empty:s.Callbacks("once memory").add(function(){te.remove(e,[i+"queue",n])})})}}),s.fn.extend({queue:function(e,i){var n=2;return typeof e!="string"&&(i=e,e="fx",n--),arguments.length\x20\t\r\n\f]*)/i,ki=/^$|^module$|\/(?:java|ecma)script/i;(function(){var e=Q.createDocumentFragment(),i=e.appendChild(Q.createElement("div")),n=Q.createElement("input");n.setAttribute("type","radio"),n.setAttribute("checked","checked"),n.setAttribute("name","t"),i.appendChild(n),U.checkClone=i.cloneNode(!0).cloneNode(!0).lastChild.checked,i.innerHTML="",U.noCloneChecked=!!i.cloneNode(!0).lastChild.defaultValue,i.innerHTML="",U.option=!!i.lastChild})();var dt={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};dt.tbody=dt.tfoot=dt.colgroup=dt.caption=dt.thead,dt.th=dt.td,U.option||(dt.optgroup=dt.option=[1,""]);function Pe(e,i){var n;return typeof e.getElementsByTagName!="undefined"?n=e.getElementsByTagName(i||"*"):typeof e.querySelectorAll!="undefined"?n=e.querySelectorAll(i||"*"):n=[],i===void 0||i&&J(e,i)?s.merge([e],n):n}function zt(e,i){for(var n=0,o=e.length;n-1){c&&c.push(f);continue}if(C=nt(f),h=Pe(N.appendChild(f),"script"),C&&zt(h),n)for(I=0;f=h[I++];)ki.test(f.type||"")&&n.push(f)}return N}var Br=/^([^.]*)(?:\.(.+)|)/;function ir(){return!0}function nr(){return!1}function ai(e,i,n,o,c,f){var h,w;if(typeof i=="object"){typeof n!="string"&&(o=o||n,n=void 0);for(w in i)ai(e,w,n,o,i[w],f);return e}if(o==null&&c==null?(c=n,o=n=void 0):c==null&&(typeof n=="string"?(c=o,o=void 0):(c=o,o=n,n=void 0)),c===!1)c=nr;else if(!c)return e;return f===1&&(h=c,c=function(x){return s().off(x),h.apply(this,arguments)},c.guid=h.guid||(h.guid=s.guid++)),e.each(function(){s.event.add(this,i,c,o,n)})}s.event={global:{},add:function(e,i,n,o,c){var f,h,w,x,C,I,N,L,G,ge,Re,Ee=te.get(e);if(!!er(e))for(n.handler&&(f=n,n=f.handler,c=f.selector),c&&s.find.matchesSelector(At,c),n.guid||(n.guid=s.guid++),(x=Ee.events)||(x=Ee.events=Object.create(null)),(h=Ee.handle)||(h=Ee.handle=function(pt){return typeof s!="undefined"&&s.event.triggered!==pt.type?s.event.dispatch.apply(e,arguments):void 0}),i=(i||"").match(bt)||[""],C=i.length;C--;)w=Br.exec(i[C])||[],G=Re=w[1],ge=(w[2]||"").split(".").sort(),!!G&&(N=s.event.special[G]||{},G=(c?N.delegateType:N.bindType)||G,N=s.event.special[G]||{},I=s.extend({type:G,origType:Re,data:o,handler:n,guid:n.guid,selector:c,needsContext:c&&s.expr.match.needsContext.test(c),namespace:ge.join(".")},f),(L=x[G])||(L=x[G]=[],L.delegateCount=0,(!N.setup||N.setup.call(e,o,ge,h)===!1)&&e.addEventListener&&e.addEventListener(G,h)),N.add&&(N.add.call(e,I),I.handler.guid||(I.handler.guid=n.guid)),c?L.splice(L.delegateCount++,0,I):L.push(I),s.event.global[G]=!0)},remove:function(e,i,n,o,c){var f,h,w,x,C,I,N,L,G,ge,Re,Ee=te.hasData(e)&&te.get(e);if(!(!Ee||!(x=Ee.events))){for(i=(i||"").match(bt)||[""],C=i.length;C--;){if(w=Br.exec(i[C])||[],G=Re=w[1],ge=(w[2]||"").split(".").sort(),!G){for(G in x)s.event.remove(e,G+i[C],n,o,!0);continue}for(N=s.event.special[G]||{},G=(o?N.delegateType:N.bindType)||G,L=x[G]||[],w=w[2]&&new RegExp("(^|\\.)"+ge.join("\\.(?:.*\\.|)")+"(\\.|$)"),h=f=L.length;f--;)I=L[f],(c||Re===I.origType)&&(!n||n.guid===I.guid)&&(!w||w.test(I.namespace))&&(!o||o===I.selector||o==="**"&&I.selector)&&(L.splice(f,1),I.selector&&L.delegateCount--,N.remove&&N.remove.call(e,I));h&&!L.length&&((!N.teardown||N.teardown.call(e,ge,Ee.handle)===!1)&&s.removeEvent(e,G,Ee.handle),delete x[G])}s.isEmptyObject(x)&&te.remove(e,"handle events")}},dispatch:function(e){var i,n,o,c,f,h,w=new Array(arguments.length),x=s.event.fix(e),C=(te.get(this,"events")||Object.create(null))[x.type]||[],I=s.event.special[x.type]||{};for(w[0]=x,i=1;i=1)){for(;C!==this;C=C.parentNode||this)if(C.nodeType===1&&!(e.type==="click"&&C.disabled===!0)){for(f=[],h={},n=0;n-1:s.find(c,this,null,[C]).length),h[c]&&f.push(o);f.length&&w.push({elem:C,handlers:f})}}return C=this,x\s*$/g;function zr(e,i){return J(e,"table")&&J(i.nodeType!==11?i:i.firstChild,"tr")&&s(e).children("tbody")[0]||e}function Ri(e){return e.type=(e.getAttribute("type")!==null)+"/"+e.type,e}function $t(e){return(e.type||"").slice(0,5)==="true/"?e.type=e.type.slice(5):e.removeAttribute("type"),e}function oi(e,i){var n,o,c,f,h,w,x;if(i.nodeType===1){if(te.hasData(e)&&(f=te.get(e),x=f.events,x)){te.remove(i,"handle events");for(c in x)for(n=0,o=x[c].length;n1&&typeof G=="string"&&!U.checkClone&&si.test(G))return e.each(function(Re){var Ee=e.eq(Re);ge&&(i[0]=G.call(this,Re,Ee.html())),ar(Ee,i,n,o)});if(N&&(c=ni(i,e[0].ownerDocument,!1,e,o),f=c.firstChild,c.childNodes.length===1&&(c=f),f||o)){for(h=s.map(Pe(c,"script"),Ri),w=h.length;I0&&zt(h,!x&&Pe(e,"script")),w},cleanData:function(e){for(var i,n,o,c=s.event.special,f=0;(n=e[f])!==void 0;f++)if(er(n)){if(i=n[te.expando]){if(i.events)for(o in i.events)c[o]?s.event.remove(n,o):s.removeEvent(n,o,i.handle);n[te.expando]=void 0}n[Ge.expando]&&(n[Ge.expando]=void 0)}}}),s.fn.extend({detach:function(e){return li(this,e,!0)},remove:function(e){return li(this,e)},text:function(e){return ot(this,function(i){return i===void 0?s.text(this):this.empty().each(function(){(this.nodeType===1||this.nodeType===11||this.nodeType===9)&&(this.textContent=i)})},null,e,arguments.length)},append:function(){return ar(this,arguments,function(e){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){var i=zr(this,e);i.appendChild(e)}})},prepend:function(){return ar(this,arguments,function(e){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){var i=zr(this,e);i.insertBefore(e,i.firstChild)}})},before:function(){return ar(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return ar(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,i=0;(e=this[i])!=null;i++)e.nodeType===1&&(s.cleanData(Pe(e,!1)),e.textContent="");return this},clone:function(e,i){return e=e==null?!1:e,i=i==null?e:i,this.map(function(){return s.clone(this,e,i)})},html:function(e){return ot(this,function(i){var n=this[0]||{},o=0,c=this.length;if(i===void 0&&n.nodeType===1)return n.innerHTML;if(typeof i=="string"&&!jr.test(i)&&!dt[(dr.exec(i)||["",""])[1].toLowerCase()]){i=s.htmlPrefilter(i);try{for(;o=0&&(x+=Math.max(0,Math.ceil(e["offset"+i[0].toUpperCase()+i.slice(1)]-f-x-w-.5))||0),x+C}function wn(e,i,n){var o=T(e),c=!U.boxSizingReliable()||n,f=c&&s.css(e,"boxSizing",!1,o)==="border-box",h=f,w=Fe(e,i,o),x="offset"+i[0].toUpperCase()+i.slice(1);if(ui.test(w)){if(!n)return w;w="auto"}return(!U.boxSizingReliable()&&f||!U.reliableTrDimensions()&&J(e,"tr")||w==="auto"||!parseFloat(w)&&s.css(e,"display",!1,o)==="inline")&&e.getClientRects().length&&(f=s.css(e,"boxSizing",!1,o)==="border-box",h=x in e,h&&(w=e[x])),w=parseFloat(w)||0,w+ci(e,i,n||(f?"border":"content"),h,o,w)+"px"}s.extend({cssHooks:{opacity:{get:function(e,i){if(i){var n=Fe(e,"opacity");return n===""?"1":n}}}},cssNumber:{animationIterationCount:!0,aspectRatio:!0,borderImageSlice:!0,columnCount:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,scale:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeMiterlimit:!0,strokeOpacity:!0},cssProps:{},style:function(e,i,n,o){if(!(!e||e.nodeType===3||e.nodeType===8||!e.style)){var c,f,h,w=ct(i),x=ae.test(i),C=e.style;if(x||(i=rt(w)),h=s.cssHooks[i]||s.cssHooks[w],n!==void 0){if(f=typeof n,f==="string"&&(c=rr.exec(n))&&c[1]&&(n=$r(e,i,c),f="number"),n==null||n!==n)return;f==="number"&&!x&&(n+=c&&c[3]||(s.cssNumber[w]?"":"px")),!U.clearCloneStyle&&n===""&&i.indexOf("background")===0&&(C[i]="inherit"),(!h||!("set"in h)||(n=h.set(e,n,o))!==void 0)&&(x?C.setProperty(i,n):C[i]=n)}else return h&&"get"in h&&(c=h.get(e,!1,o))!==void 0?c:C[i]}},css:function(e,i,n,o){var c,f,h,w=ct(i),x=ae.test(i);return x||(i=rt(w)),h=s.cssHooks[i]||s.cssHooks[w],h&&"get"in h&&(c=h.get(e,!0,n)),c===void 0&&(c=Fe(e,i,o)),c==="normal"&&i in yn&&(c=yn[i]),n===""||n?(f=parseFloat(c),n===!0||isFinite(f)?f||0:c):c}}),s.each(["height","width"],function(e,i){s.cssHooks[i]={get:function(n,o,c){if(o)return Pr.test(s.css(n,"display"))&&(!n.getClientRects().length||!n.getBoundingClientRect().width)?V(n,Gr,function(){return wn(n,i,c)}):wn(n,i,c)},set:function(n,o,c){var f,h=T(n),w=!U.scrollboxSize()&&h.position==="absolute",x=w||c,C=x&&s.css(n,"boxSizing",!1,h)==="border-box",I=c?ci(n,i,c,C,h):0;return C&&w&&(I-=Math.ceil(n["offset"+i[0].toUpperCase()+i.slice(1)]-parseFloat(h[i])-ci(n,i,"border",!1,h)-.5)),I&&(f=rr.exec(o))&&(f[3]||"px")!=="px"&&(n.style[i]=o,o=s.css(n,i)),xn(n,o,I)}}}),s.cssHooks.marginLeft=tt(U.reliableMarginLeft,function(e,i){if(i)return(parseFloat(Fe(e,"marginLeft"))||e.getBoundingClientRect().left-V(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),s.each({margin:"",padding:"",border:"Width"},function(e,i){s.cssHooks[e+i]={expand:function(n){for(var o=0,c={},f=typeof n=="string"?n.split(" "):[n];o<4;o++)c[e+ft[o]+i]=f[o]||f[o-2]||f[0];return c}},e!=="margin"&&(s.cssHooks[e+i].set=xn)}),s.fn.extend({css:function(e,i){return ot(this,function(n,o,c){var f,h,w={},x=0;if(Array.isArray(o)){for(f=T(n),h=o.length;x1)}});function wt(e,i,n,o,c){return new wt.prototype.init(e,i,n,o,c)}s.Tween=wt,wt.prototype={constructor:wt,init:function(e,i,n,o,c,f){this.elem=e,this.prop=n,this.easing=c||s.easing._default,this.options=i,this.start=this.now=this.cur(),this.end=o,this.unit=f||(s.cssNumber[n]?"":"px")},cur:function(){var e=wt.propHooks[this.prop];return e&&e.get?e.get(this):wt.propHooks._default.get(this)},run:function(e){var i,n=wt.propHooks[this.prop];return this.options.duration?this.pos=i=s.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=i=e,this.now=(this.end-this.start)*i+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):wt.propHooks._default.set(this),this}},wt.prototype.init.prototype=wt.prototype,wt.propHooks={_default:{get:function(e){var i;return e.elem.nodeType!==1||e.elem[e.prop]!=null&&e.elem.style[e.prop]==null?e.elem[e.prop]:(i=s.css(e.elem,e.prop,""),!i||i==="auto"?0:i)},set:function(e){s.fx.step[e.prop]?s.fx.step[e.prop](e):e.elem.nodeType===1&&(s.cssHooks[e.prop]||e.elem.style[rt(e.prop)]!=null)?s.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},wt.propHooks.scrollTop=wt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},s.easing={linear:function(e){return e},swing:function(e){return .5-Math.cos(e*Math.PI)/2},_default:"swing"},s.fx=wt.prototype.init,s.fx.step={};var p,E,g=/^(?:toggle|show|hide)$/,A=/queueHooks$/;function k(){E&&(Q.hidden===!1&&l.requestAnimationFrame?l.requestAnimationFrame(k):l.setTimeout(k,s.fx.interval),s.fx.tick())}function S(){return l.setTimeout(function(){p=void 0}),p=Date.now()}function M(e,i){var n,o=0,c={height:e};for(i=i?1:0;o<4;o+=2-i)n=ft[o],c["margin"+n]=c["padding"+n]=e;return i&&(c.opacity=c.width=e),c}function j(e,i,n){for(var o,c=(z.tweeners[i]||[]).concat(z.tweeners["*"]),f=0,h=c.length;f1)},removeAttr:function(e){return this.each(function(){s.removeAttr(this,e)})}}),s.extend({attr:function(e,i,n){var o,c,f=e.nodeType;if(!(f===3||f===8||f===2)){if(typeof e.getAttribute=="undefined")return s.prop(e,i,n);if((f!==1||!s.isXMLDoc(e))&&(c=s.attrHooks[i.toLowerCase()]||(s.expr.match.bool.test(i)?ne:void 0)),n!==void 0){if(n===null){s.removeAttr(e,i);return}return c&&"set"in c&&(o=c.set(e,n,i))!==void 0?o:(e.setAttribute(i,n+""),n)}return c&&"get"in c&&(o=c.get(e,i))!==null?o:(o=s.find.attr(e,i),o==null?void 0:o)}},attrHooks:{type:{set:function(e,i){if(!U.radioValue&&i==="radio"&&J(e,"input")){var n=e.value;return e.setAttribute("type",i),n&&(e.value=n),i}}}},removeAttr:function(e,i){var n,o=0,c=i&&i.match(bt);if(c&&e.nodeType===1)for(;n=c[o++];)e.removeAttribute(n)}}),ne={set:function(e,i,n){return i===!1?s.removeAttr(e,n):e.setAttribute(n,n),n}},s.each(s.expr.match.bool.source.match(/\w+/g),function(e,i){var n=xe[i]||s.find.attr;xe[i]=function(o,c,f){var h,w,x=c.toLowerCase();return f||(w=xe[x],xe[x]=h,h=n(o,c,f)!=null?x:null,xe[x]=w),h}});var Ie=/^(?:input|select|textarea|button)$/i,Oe=/^(?:a|area)$/i;s.fn.extend({prop:function(e,i){return ot(this,s.prop,e,i,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[s.propFix[e]||e]})}}),s.extend({prop:function(e,i,n){var o,c,f=e.nodeType;if(!(f===3||f===8||f===2))return(f!==1||!s.isXMLDoc(e))&&(i=s.propFix[i]||i,c=s.propHooks[i]),n!==void 0?c&&"set"in c&&(o=c.set(e,n,i))!==void 0?o:e[i]=n:c&&"get"in c&&(o=c.get(e,i))!==null?o:e[i]},propHooks:{tabIndex:{get:function(e){var i=s.find.attr(e,"tabindex");return i?parseInt(i,10):Ie.test(e.nodeName)||Oe.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),U.optSelected||(s.propHooks.selected={get:function(e){var i=e.parentNode;return i&&i.parentNode&&i.parentNode.selectedIndex,null},set:function(e){var i=e.parentNode;i&&(i.selectedIndex,i.parentNode&&i.parentNode.selectedIndex)}}),s.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){s.propFix[this.toLowerCase()]=this});function $e(e){var i=e.match(bt)||[];return i.join(" ")}function Ue(e){return e.getAttribute&&e.getAttribute("class")||""}function Et(e){return Array.isArray(e)?e:typeof e=="string"?e.match(bt)||[]:[]}s.fn.extend({addClass:function(e){var i,n,o,c,f,h;return B(e)?this.each(function(w){s(this).addClass(e.call(this,w,Ue(this)))}):(i=Et(e),i.length?this.each(function(){if(o=Ue(this),n=this.nodeType===1&&" "+$e(o)+" ",n){for(f=0;f-1;)n=n.replace(" "+c+" "," ");h=$e(n),o!==h&&this.setAttribute("class",h)}}):this):this.attr("class","")},toggleClass:function(e,i){var n,o,c,f,h=typeof e,w=h==="string"||Array.isArray(e);return B(e)?this.each(function(x){s(this).toggleClass(e.call(this,x,Ue(this),i),i)}):typeof i=="boolean"&&w?i?this.addClass(e):this.removeClass(e):(n=Et(e),this.each(function(){if(w)for(f=s(this),c=0;c-1)return!0;return!1}});var fi=/\r/g;s.fn.extend({val:function(e){var i,n,o,c=this[0];return arguments.length?(o=B(e),this.each(function(f){var h;this.nodeType===1&&(o?h=e.call(this,f,s(this).val()):h=e,h==null?h="":typeof h=="number"?h+="":Array.isArray(h)&&(h=s.map(h,function(w){return w==null?"":w+""})),i=s.valHooks[this.type]||s.valHooks[this.nodeName.toLowerCase()],(!i||!("set"in i)||i.set(this,h,"value")===void 0)&&(this.value=h))})):c?(i=s.valHooks[c.type]||s.valHooks[c.nodeName.toLowerCase()],i&&"get"in i&&(n=i.get(c,"value"))!==void 0?n:(n=c.value,typeof n=="string"?n.replace(fi,""):n==null?"":n)):void 0}}),s.extend({valHooks:{option:{get:function(e){var i=s.find.attr(e,"value");return i!=null?i:$e(s.text(e))}},select:{get:function(e){var i,n,o,c=e.options,f=e.selectedIndex,h=e.type==="select-one",w=h?null:[],x=h?f+1:c.length;for(f<0?o=x:o=h?f:0;o-1)&&(n=!0);return n||(e.selectedIndex=-1),f}}}}),s.each(["radio","checkbox"],function(){s.valHooks[this]={set:function(e,i){if(Array.isArray(i))return e.checked=s.inArray(s(e).val(),i)>-1}},U.checkOn||(s.valHooks[this].get=function(e){return e.getAttribute("value")===null?"on":e.value})});var kr=l.location,En={guid:Date.now()},di=/\?/;s.parseXML=function(e){var i,n;if(!e||typeof e!="string")return null;try{i=new l.DOMParser().parseFromString(e,"text/xml")}catch(o){}return n=i&&i.getElementsByTagName("parsererror")[0],(!i||n)&&s.error("Invalid XML: "+(n?s.map(n.childNodes,function(o){return o.textContent}).join(` `):e)),i};var oa=/^(?:focusinfocus|focusoutblur)$/,_n=function(e){e.stopPropagation()};s.extend(s.event,{trigger:function(e,i,n,o){var c,f,h,w,x,C,I,N,L=[n||Q],G=W.call(e,"type")?e.type:e,ge=W.call(e,"namespace")?e.namespace.split("."):[];if(f=N=h=n=n||Q,!(n.nodeType===3||n.nodeType===8)&&!oa.test(G+s.event.triggered)&&(G.indexOf(".")>-1&&(ge=G.split("."),G=ge.shift(),ge.sort()),x=G.indexOf(":")<0&&"on"+G,e=e[s.expando]?e:new s.Event(G,typeof e=="object"&&e),e.isTrigger=o?2:3,e.namespace=ge.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+ge.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),i=i==null?[e]:s.makeArray(i,[e]),I=s.event.special[G]||{},!(!o&&I.trigger&&I.trigger.apply(n,i)===!1))){if(!o&&!I.noBubble&&!ce(n)){for(w=I.delegateType||G,oa.test(w+G)||(f=f.parentNode);f;f=f.parentNode)L.push(f),h=f;h===(n.ownerDocument||Q)&&L.push(h.defaultView||h.parentWindow||l)}for(c=0;(f=L[c++])&&!e.isPropagationStopped();)N=f,e.type=c>1?w:I.bindType||G,C=(te.get(f,"events")||Object.create(null))[e.type]&&te.get(f,"handle"),C&&C.apply(f,i),C=x&&f[x],C&&C.apply&&er(f)&&(e.result=C.apply(f,i),e.result===!1&&e.preventDefault());return e.type=G,!o&&!e.isDefaultPrevented()&&(!I._default||I._default.apply(L.pop(),i)===!1)&&er(n)&&x&&B(n[G])&&!ce(n)&&(h=n[x],h&&(n[x]=null),s.event.triggered=G,e.isPropagationStopped()&&N.addEventListener(G,_n),n[G](),e.isPropagationStopped()&&N.removeEventListener(G,_n),s.event.triggered=void 0,h&&(n[x]=h)),e.result}},simulate:function(e,i,n){var o=s.extend(new s.Event,n,{type:e,isSimulated:!0});s.event.trigger(o,null,i)}}),s.fn.extend({trigger:function(e,i){return this.each(function(){s.event.trigger(e,i,this)})},triggerHandler:function(e,i){var n=this[0];if(n)return s.event.trigger(e,i,n,!0)}});var la=/\[\]$/,Hi=/\r?\n/g,Sl=/^(?:submit|button|image|reset|file)$/i,Al=/^(?:input|select|textarea|keygen)/i;function ua(e,i,n,o){var c;if(Array.isArray(i))s.each(i,function(f,h){n||la.test(e)?o(e,h):ua(e+"["+(typeof h=="object"&&h!=null?f:"")+"]",h,n,o)});else if(!n&&he(i)==="object")for(c in i)ua(e+"["+c+"]",i[c],n,o);else o(e,i)}s.param=function(e,i){var n,o=[],c=function(f,h){var w=B(h)?h():h;o[o.length]=encodeURIComponent(f)+"="+encodeURIComponent(w==null?"":w)};if(e==null)return"";if(Array.isArray(e)||e.jquery&&!s.isPlainObject(e))s.each(e,function(){c(this.name,this.value)});else for(n in e)ua(n,e[n],i,c);return o.join("&")},s.fn.extend({serialize:function(){return s.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=s.prop(this,"elements");return e?s.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!s(this).is(":disabled")&&Al.test(this.nodeName)&&!Sl.test(e)&&(this.checked||!yt.test(e))}).map(function(e,i){var n=s(this).val();return n==null?null:Array.isArray(n)?s.map(n,function(o){return{name:i.name,value:o.replace(Hi,`\r `)}}):{name:i.name,value:n.replace(Hi,`\r `)}}).get()}});var Cl=/%20/g,Pl=/#.*$/,kl=/([?&])_=[^&]*/,Dl=/^(.*?):[ \t]*([^\r\n]*)$/mg,Rl=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Ll=/^(?:GET|HEAD)$/,Fl=/^\/\//,Ds={},ca={},Rs="*/".concat("*"),fa=Q.createElement("a");fa.href=kr.href;function Ls(e){return function(i,n){typeof i!="string"&&(n=i,i="*");var o,c=0,f=i.toLowerCase().match(bt)||[];if(B(n))for(;o=f[c++];)o[0]==="+"?(o=o.slice(1)||"*",(e[o]=e[o]||[]).unshift(n)):(e[o]=e[o]||[]).push(n)}}function Fs(e,i,n,o){var c={},f=e===ca;function h(w){var x;return c[w]=!0,s.each(e[w]||[],function(C,I){var N=I(i,n,o);if(typeof N=="string"&&!f&&!c[N])return i.dataTypes.unshift(N),h(N),!1;if(f)return!(x=N)}),x}return h(i.dataTypes[0])||!c["*"]&&h("*")}function da(e,i){var n,o,c=s.ajaxSettings.flatOptions||{};for(n in i)i[n]!==void 0&&((c[n]?e:o||(o={}))[n]=i[n]);return o&&s.extend(!0,e,o),e}function Il(e,i,n){for(var o,c,f,h,w=e.contents,x=e.dataTypes;x[0]==="*";)x.shift(),o===void 0&&(o=e.mimeType||i.getResponseHeader("Content-Type"));if(o){for(c in w)if(w[c]&&w[c].test(o)){x.unshift(c);break}}if(x[0]in n)f=x[0];else{for(c in n){if(!x[0]||e.converters[c+" "+x[0]]){f=c;break}h||(h=c)}f=f||h}if(f)return f!==x[0]&&x.unshift(f),n[f]}function Ml(e,i,n,o){var c,f,h,w,x,C={},I=e.dataTypes.slice();if(I[1])for(h in e.converters)C[h.toLowerCase()]=e.converters[h];for(f=I.shift();f;)if(e.responseFields[f]&&(n[e.responseFields[f]]=i),!x&&o&&e.dataFilter&&(i=e.dataFilter(i,e.dataType)),x=f,f=I.shift(),f){if(f==="*")f=x;else if(x!=="*"&&x!==f){if(h=C[x+" "+f]||C["* "+f],!h){for(c in C)if(w=c.split(" "),w[1]===f&&(h=C[x+" "+w[0]]||C["* "+w[0]],h)){h===!0?h=C[c]:C[c]!==!0&&(f=w[0],I.unshift(w[1]));break}}if(h!==!0)if(h&&e.throws)i=h(i);else try{i=h(i)}catch(N){return{state:"parsererror",error:h?N:"No conversion from "+x+" to "+f}}}}return{state:"success",data:i}}s.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:kr.href,type:"GET",isLocal:Rl.test(kr.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Rs,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":s.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,i){return i?da(da(e,s.ajaxSettings),i):da(s.ajaxSettings,e)},ajaxPrefilter:Ls(Ds),ajaxTransport:Ls(ca),ajax:function(e,i){typeof e=="object"&&(i=e,e=void 0),i=i||{};var n,o,c,f,h,w,x,C,I,N,L=s.ajaxSetup({},i),G=L.context||L,ge=L.context&&(G.nodeType||G.jquery)?s(G):s.event,Re=s.Deferred(),Ee=s.Callbacks("once memory"),pt=L.statusCode||{},at={},hr={},pr="canceled",Ce={readyState:0,getResponseHeader:function(Le){var Je;if(x){if(!f)for(f={};Je=Dl.exec(c);)f[Je[1].toLowerCase()+" "]=(f[Je[1].toLowerCase()+" "]||[]).concat(Je[2]);Je=f[Le.toLowerCase()+" "]}return Je==null?null:Je.join(", ")},getAllResponseHeaders:function(){return x?c:null},setRequestHeader:function(Le,Je){return x==null&&(Le=hr[Le.toLowerCase()]=hr[Le.toLowerCase()]||Le,at[Le]=Je),this},overrideMimeType:function(Le){return x==null&&(L.mimeType=Le),this},statusCode:function(Le){var Je;if(Le)if(x)Ce.always(Le[Ce.status]);else for(Je in Le)pt[Je]=[pt[Je],Le[Je]];return this},abort:function(Le){var Je=Le||pr;return n&&n.abort(Je),hi(0,Je),this}};if(Re.promise(Ce),L.url=((e||L.url||kr.href)+"").replace(Fl,kr.protocol+"//"),L.type=i.method||i.type||L.method||L.type,L.dataTypes=(L.dataType||"*").toLowerCase().match(bt)||[""],L.crossDomain==null){w=Q.createElement("a");try{w.href=L.url,w.href=w.href,L.crossDomain=fa.protocol+"//"+fa.host!=w.protocol+"//"+w.host}catch(Le){L.crossDomain=!0}}if(L.data&&L.processData&&typeof L.data!="string"&&(L.data=s.param(L.data,L.traditional)),Fs(Ds,L,i,Ce),x)return Ce;C=s.event&&L.global,C&&s.active++==0&&s.event.trigger("ajaxStart"),L.type=L.type.toUpperCase(),L.hasContent=!Ll.test(L.type),o=L.url.replace(Pl,""),L.hasContent?L.data&&L.processData&&(L.contentType||"").indexOf("application/x-www-form-urlencoded")===0&&(L.data=L.data.replace(Cl,"+")):(N=L.url.slice(o.length),L.data&&(L.processData||typeof L.data=="string")&&(o+=(di.test(o)?"&":"?")+L.data,delete L.data),L.cache===!1&&(o=o.replace(kl,"$1"),N=(di.test(o)?"&":"?")+"_="+En.guid+++N),L.url=o+N),L.ifModified&&(s.lastModified[o]&&Ce.setRequestHeader("If-Modified-Since",s.lastModified[o]),s.etag[o]&&Ce.setRequestHeader("If-None-Match",s.etag[o])),(L.data&&L.hasContent&&L.contentType!==!1||i.contentType)&&Ce.setRequestHeader("Content-Type",L.contentType),Ce.setRequestHeader("Accept",L.dataTypes[0]&&L.accepts[L.dataTypes[0]]?L.accepts[L.dataTypes[0]]+(L.dataTypes[0]!=="*"?", "+Rs+"; q=0.01":""):L.accepts["*"]);for(I in L.headers)Ce.setRequestHeader(I,L.headers[I]);if(L.beforeSend&&(L.beforeSend.call(G,Ce,L)===!1||x))return Ce.abort();if(pr="abort",Ee.add(L.complete),Ce.done(L.success),Ce.fail(L.error),n=Fs(ca,L,i,Ce),!n)hi(-1,"No Transport");else{if(Ce.readyState=1,C&&ge.trigger("ajaxSend",[Ce,L]),x)return Ce;L.async&&L.timeout>0&&(h=l.setTimeout(function(){Ce.abort("timeout")},L.timeout));try{x=!1,n.send(at,hi)}catch(Le){if(x)throw Le;hi(-1,Le)}}function hi(Le,Je,ji,pa){var mr,zi,gr,Vr,qr,Gt=Je;x||(x=!0,h&&l.clearTimeout(h),n=void 0,c=pa||"",Ce.readyState=Le>0?4:0,mr=Le>=200&&Le<300||Le===304,ji&&(Vr=Il(L,Ce,ji)),!mr&&s.inArray("script",L.dataTypes)>-1&&s.inArray("json",L.dataTypes)<0&&(L.converters["text script"]=function(){}),Vr=Ml(L,Vr,Ce,mr),mr?(L.ifModified&&(qr=Ce.getResponseHeader("Last-Modified"),qr&&(s.lastModified[o]=qr),qr=Ce.getResponseHeader("etag"),qr&&(s.etag[o]=qr)),Le===204||L.type==="HEAD"?Gt="nocontent":Le===304?Gt="notmodified":(Gt=Vr.state,zi=Vr.data,gr=Vr.error,mr=!gr)):(gr=Gt,(Le||!Gt)&&(Gt="error",Le<0&&(Le=0))),Ce.status=Le,Ce.statusText=(Je||Gt)+"",mr?Re.resolveWith(G,[zi,Gt,Ce]):Re.rejectWith(G,[Ce,Gt,gr]),Ce.statusCode(pt),pt=void 0,C&&ge.trigger(mr?"ajaxSuccess":"ajaxError",[Ce,L,mr?zi:gr]),Ee.fireWith(G,[Ce,Gt]),C&&(ge.trigger("ajaxComplete",[Ce,L]),--s.active||s.event.trigger("ajaxStop")))}return Ce},getJSON:function(e,i,n){return s.get(e,i,n,"json")},getScript:function(e,i){return s.get(e,void 0,i,"script")}}),s.each(["get","post"],function(e,i){s[i]=function(n,o,c,f){return B(o)&&(f=f||c,c=o,o=void 0),s.ajax(s.extend({url:n,type:i,dataType:f,data:o,success:c},s.isPlainObject(n)&&n))}}),s.ajaxPrefilter(function(e){var i;for(i in e.headers)i.toLowerCase()==="content-type"&&(e.contentType=e.headers[i]||"")}),s._evalUrl=function(e,i,n){return s.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(o){s.globalEval(o,i,n)}})},s.fn.extend({wrapAll:function(e){var i;return this[0]&&(B(e)&&(e=e.call(this[0])),i=s(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&i.insertBefore(this[0]),i.map(function(){for(var n=this;n.firstElementChild;)n=n.firstElementChild;return n}).append(this)),this},wrapInner:function(e){return B(e)?this.each(function(i){s(this).wrapInner(e.call(this,i))}):this.each(function(){var i=s(this),n=i.contents();n.length?n.wrapAll(e):i.append(e)})},wrap:function(e){var i=B(e);return this.each(function(n){s(this).wrapAll(i?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){s(this).replaceWith(this.childNodes)}),this}}),s.expr.pseudos.hidden=function(e){return!s.expr.pseudos.visible(e)},s.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},s.ajaxSettings.xhr=function(){try{return new l.XMLHttpRequest}catch(e){}};var Ol={0:200,1223:204},Bi=s.ajaxSettings.xhr();U.cors=!!Bi&&"withCredentials"in Bi,U.ajax=Bi=!!Bi,s.ajaxTransport(function(e){var i,n;if(U.cors||Bi&&!e.crossDomain)return{send:function(o,c){var f,h=e.xhr();if(h.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(f in e.xhrFields)h[f]=e.xhrFields[f];e.mimeType&&h.overrideMimeType&&h.overrideMimeType(e.mimeType),!e.crossDomain&&!o["X-Requested-With"]&&(o["X-Requested-With"]="XMLHttpRequest");for(f in o)h.setRequestHeader(f,o[f]);i=function(w){return function(){i&&(i=n=h.onload=h.onerror=h.onabort=h.ontimeout=h.onreadystatechange=null,w==="abort"?h.abort():w==="error"?typeof h.status!="number"?c(0,"error"):c(h.status,h.statusText):c(Ol[h.status]||h.status,h.statusText,(h.responseType||"text")!=="text"||typeof h.responseText!="string"?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=i(),n=h.onerror=h.ontimeout=i("error"),h.onabort!==void 0?h.onabort=n:h.onreadystatechange=function(){h.readyState===4&&l.setTimeout(function(){i&&n()})},i=i("abort");try{h.send(e.hasContent&&e.data||null)}catch(w){if(i)throw w}},abort:function(){i&&i()}}}),s.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),s.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return s.globalEval(e),e}}}),s.ajaxPrefilter("script",function(e){e.cache===void 0&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),s.ajaxTransport("script",function(e){if(e.crossDomain||e.scriptAttrs){var i,n;return{send:function(o,c){i=s("