@qr-platform/qr-code.js 0.9.1 → 0.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/index.js +1 -1
- package/lib/node.js +1 -1
- package/package.json +1 -1
package/lib/node.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
import{fileTypeFromBuffer as t}from"file-type";import e from"image-size";import{importSPKI as i,jwtVerify as o,errors as n}from"jose";const r={width:300,height:300,margin:0};class s{constructor(){this.buffer=[],this.length=0}getBuffer(){return this.buffer}getLengthInBits(){return this.length}toString(){let t="";for(let e=0;e<this.getLengthInBits();e+=1)t+=this.getBit(e)?"1":"0";return t}getBit(t){return 1==(this.buffer[~~(t/8)]>>>7-t%8&1)}put(t,e){for(let i=0;i<e;i+=1)this.putBit(1==(t>>>e-i-1&1))}putBit(t){this.length==8*this.buffer.length&&this.buffer.push(0),t&&(this.buffer[~~(this.length/8)]|=128>>>this.length%8),this.length+=1}}var a,l,h;!function(t){t[t.L=1]="L",t[t.M=0]="M",t[t.Q=3]="Q",t[t.H=2]="H"}(a||(a={}));class d{constructor(){throw new Error("error")}static glog(t){if(t<1)throw new Error("log("+t+")");return d.LOG_TABLE[t]}static gexp(t){for(;t<0;)t+=255;for(;t>=256;)t-=255;return d.EXP_TABLE[t]}}d.initialize=(()=>{d.EXP_TABLE=[],d.LOG_TABLE=[];for(let t=0;t<256;t+=1)d.EXP_TABLE.push(t<8?1<<t:d.EXP_TABLE[t-4]^d.EXP_TABLE[t-5]^d.EXP_TABLE[t-6]^d.EXP_TABLE[t-8]),d.LOG_TABLE.push(0);for(let t=0;t<255;t+=1)d.LOG_TABLE[d.EXP_TABLE[t]]=t})();class c{constructor(t,e=0){let i=0;for(;i<t.length&&0==t[i];)i+=1;this.num=[];const o=t.length-i;for(let e=0;e<o;e+=1)this.num.push(t[i+e]);for(let t=0;t<e;t+=1)this.num.push(0)}getAt(t){return this.num[t]}getLength(){return this.num.length}toString(){let t="";for(let e=0;e<this.getLength();e+=1)e>0&&(t+=","),t+=this.getAt(e);return t.toString()}toLogString(){let t="";for(let e=0;e<this.getLength();e+=1)e>0&&(t+=","),t+=d.glog(this.getAt(e));return t.toString()}multiply(t){const e=[],i=this.getLength()+t.getLength()-1;for(let t=0;t<i;t+=1)e.push(0);for(let i=0;i<this.getLength();i+=1)for(let o=0;o<t.getLength();o+=1)e[i+o]^=d.gexp(d.glog(this.getAt(i))+d.glog(t.getAt(o)));return new c(e)}mod(t){if(this.getLength()-t.getLength()<0)return this;const e=d.glog(this.getAt(0))-d.glog(t.getAt(0)),i=[];for(let t=0;t<this.getLength();t+=1)i.push(this.getAt(t));for(let o=0;o<t.getLength();o+=1)i[o]^=d.gexp(d.glog(t.getAt(o))+e);return new c(i).mod(t)}}!function(t){t[t.MODE_NUMBER=1]="MODE_NUMBER",t[t.MODE_ALPHA_NUM=2]="MODE_ALPHA_NUM",t[t.MODE_8BIT_BYTE=4]="MODE_8BIT_BYTE",t[t.MODE_KANJI=8]="MODE_KANJI"}(l||(l={}));class u{constructor(t,e){this.mode=t,this.data=e}getMode(){return this.mode}getData(){return this.data}getLengthInBits(t){if(1<=t&&t<10)switch(this.mode){case l.MODE_NUMBER:return 10;case l.MODE_ALPHA_NUM:return 9;case l.MODE_8BIT_BYTE:case l.MODE_KANJI:return 8;default:throw new Error("mode:"+this.mode)}else if(t<27)switch(this.mode){case l.MODE_NUMBER:return 12;case l.MODE_ALPHA_NUM:return 11;case l.MODE_8BIT_BYTE:return 16;case l.MODE_KANJI:return 10;default:throw new Error("mode:"+this.mode)}else{if(!(t<41))throw new Error("typeNumber:"+t);switch(this.mode){case l.MODE_NUMBER:return 14;case l.MODE_ALPHA_NUM:return 13;case l.MODE_8BIT_BYTE:return 16;case l.MODE_KANJI:return 12;default:throw new Error("mode:"+this.mode)}}}}class p extends u{constructor(t,e){super(l.MODE_8BIT_BYTE,t),this.stringToBytes=e}write(t){this.stringToBytes(this.getData()).forEach((e=>t.put(e,8)))}getLength(){return this.stringToBytes(this.getData()).length}}class m extends u{constructor(t){super(l.MODE_ALPHA_NUM,t)}write(t){const e=this.getData();let i=0;for(;i+1<e.length;)t.put(45*m.getCode(e.charAt(i))+m.getCode(e.charAt(i+1)),11),i+=2;i<e.length&&t.put(m.getCode(e.charAt(i)),6)}getLength(){return this.getData().length}static getCode(t){if("0"<=t&&t<="9")return t.charCodeAt(0)-"0".charCodeAt(0);if("A"<=t&&t<="Z")return t.charCodeAt(0)-"A".charCodeAt(0)+10;switch(t){case" ":return 36;case"$":return 37;case"%":return 38;case"*":return 39;case"+":return 40;case"-":return 41;case".":return 42;case"/":return 43;case":":return 44;default:throw new Error("illegal char :"+t)}}}class g extends u{constructor(t,e){super(l.MODE_KANJI,t),this.stringToBytes=e}write(t){const e=this.stringToBytes(this.getData());let i=0;for(;i+1<e.length;){let o=(255&e[i])<<8|255&e[i+1];if(33088<=o&&o<=40956)o-=33088;else{if(!(57408<=o&&o<=60351))throw new Error("illegal char at "+(i+1)+"/"+o);o-=49472}o=192*(o>>>8&255)+(255&o),t.put(o,13),i+=2}if(i<e.length)throw new Error("illegal char at "+(i+1))}getLength(){return this.stringToBytes(this.getData()).length/2}}class f extends u{constructor(t){super(l.MODE_NUMBER,t)}write(t){const e=this.getData();let i=0;for(;i+2<e.length;)t.put(f.strToNum(e.substring(i,i+3)),10),i+=3;i<e.length&&(e.length-i==1?t.put(f.strToNum(e.substring(i,i+1)),4):e.length-i==2&&t.put(f.strToNum(e.substring(i,i+2)),7))}getLength(){return this.getData().length}static strToNum(t){let e=0;for(let i=0;i<t.length;i+=1)e=10*e+f.chatToNum(t.charAt(i));return e}static chatToNum(t){if("0"<=t&&t<="9")return t.charCodeAt(0)-"0".charCodeAt(0);throw new Error("illegal char :"+t)}}!function(t){t[t.PATTERN000=0]="PATTERN000",t[t.PATTERN001=1]="PATTERN001",t[t.PATTERN010=2]="PATTERN010",t[t.PATTERN011=3]="PATTERN011",t[t.PATTERN100=4]="PATTERN100",t[t.PATTERN101=5]="PATTERN101",t[t.PATTERN110=6]="PATTERN110",t[t.PATTERN111=7]="PATTERN111"}(h||(h={}));class b{constructor(){throw new Error("error")}static getPatternPosition(t){return b.PATTERN_POSITION_TABLE[t-1]}static getMaxLength(t,e,i){const o=t-1;let n=0,r=0;switch(i){case a.L:n=0;break;case a.M:n=1;break;case a.Q:n=2;break;case a.H:n=3;break;default:throw new Error("e:"+i)}switch(e){case l.MODE_NUMBER:r=0;break;case l.MODE_ALPHA_NUM:r=1;break;case l.MODE_8BIT_BYTE:r=2;break;case l.MODE_KANJI:r=3;break;default:throw new Error("m:"+e)}return b.MAX_LENGTH[o][n][r]}static getErrorCorrectPolynomial(t){let e=new c([1]);for(let i=0;i<t;i+=1)e=e.multiply(new c([1,d.gexp(i)]));return e}static getMaskFunc(t){switch(t){case h.PATTERN000:return(t,e)=>(t+e)%2==0;case h.PATTERN001:return(t,e)=>t%2==0;case h.PATTERN010:return(t,e)=>e%3==0;case h.PATTERN011:return(t,e)=>(t+e)%3==0;case h.PATTERN100:return(t,e)=>(~~(t/2)+~~(e/3))%2==0;case h.PATTERN101:return(t,e)=>t*e%2+t*e%3==0;case h.PATTERN110:return(t,e)=>(t*e%2+t*e%3)%2==0;case h.PATTERN111:return(t,e)=>(t*e%3+(t+e)%2)%2==0;default:throw new Error("mask:"+t)}}static getLostPoint(t){const e=t.getModuleCount();let i=0;for(let o=0;o<e;o+=1)for(let n=0;n<e;n+=1){let r=0;const s=t.isDark(o,n);for(let i=-1;i<=1;i+=1)if(!(o+i<0||e<=o+i))for(let a=-1;a<=1;a+=1)n+a<0||e<=n+a||0==i&&0==a||s==t.isDark(o+i,n+a)&&(r+=1);r>5&&(i+=3+r-5)}for(let o=0;o<e-1;o+=1)for(let n=0;n<e-1;n+=1){let e=0;t.isDark(o,n)&&(e+=1),t.isDark(o+1,n)&&(e+=1),t.isDark(o,n+1)&&(e+=1),t.isDark(o+1,n+1)&&(e+=1),0!=e&&4!=e||(i+=3)}for(let o=0;o<e;o+=1)for(let n=0;n<e-6;n+=1)t.isDark(o,n)&&!t.isDark(o,n+1)&&t.isDark(o,n+2)&&t.isDark(o,n+3)&&t.isDark(o,n+4)&&!t.isDark(o,n+5)&&t.isDark(o,n+6)&&(i+=40);for(let o=0;o<e;o+=1)for(let n=0;n<e-6;n+=1)t.isDark(n,o)&&!t.isDark(n+1,o)&&t.isDark(n+2,o)&&t.isDark(n+3,o)&&t.isDark(n+4,o)&&!t.isDark(n+5,o)&&t.isDark(n+6,o)&&(i+=40);let o=0;for(let i=0;i<e;i+=1)for(let n=0;n<e;n+=1)t.isDark(n,i)&&(o+=1);return i+=10*(Math.abs(100*o/e/e-50)/5),i}static getBCHTypeInfo(t){let e=t<<10;for(;b.getBCHDigit(e)-b.getBCHDigit(b.G15)>=0;)e^=b.G15<<b.getBCHDigit(e)-b.getBCHDigit(b.G15);return(t<<10|e)^b.G15_MASK}static getBCHTypeNumber(t){let e=t<<12;for(;b.getBCHDigit(e)-b.getBCHDigit(b.G18)>=0;)e^=b.G18<<b.getBCHDigit(e)-b.getBCHDigit(b.G18);return t<<12|e}static getBCHDigit(t){let e=0;for(;0!=t;)e+=1,t>>>=1;return e}}b.PATTERN_POSITION_TABLE=[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],b.MAX_LENGTH=[[[41,25,17,10],[34,20,14,8],[27,16,11,7],[17,10,7,4]],[[77,47,32,20],[63,38,26,16],[48,29,20,12],[34,20,14,8]],[[127,77,53,32],[101,61,42,26],[77,47,32,20],[58,35,24,15]],[[187,114,78,48],[149,90,62,38],[111,67,46,28],[82,50,34,21]],[[255,154,106,65],[202,122,84,52],[144,87,60,37],[106,64,44,27]],[[322,195,134,82],[255,154,106,65],[178,108,74,45],[139,84,58,36]],[[370,224,154,95],[293,178,122,75],[207,125,86,53],[154,93,64,39]],[[461,279,192,118],[365,221,152,93],[259,157,108,66],[202,122,84,52]],[[552,335,230,141],[432,262,180,111],[312,189,130,80],[235,143,98,60]],[[652,395,271,167],[513,311,213,131],[364,221,151,93],[288,174,119,74]]],b.G15=1335,b.G18=7973,b.G15_MASK=21522;class O{constructor(t,e){this.totalCount=t,this.dataCount=e}getDataCount(){return this.dataCount}getTotalCount(){return this.totalCount}static getRSBlocks(t,e){const i=O.getRsBlockTable(t,e),o=i.length/3,n=[];for(let t=0;t<o;t+=1){const e=i[3*t+0],o=i[3*t+1],r=i[3*t+2];for(let t=0;t<e;t+=1)n.push(new O(o,r))}return n}static getRsBlockTable(t,e){switch(e){case a.L:return O.RS_BLOCK_TABLE[4*(t-1)+0];case a.M:return O.RS_BLOCK_TABLE[4*(t-1)+1];case a.Q:return O.RS_BLOCK_TABLE[4*(t-1)+2];case a.H:return O.RS_BLOCK_TABLE[4*(t-1)+3]}throw new Error("tn:"+t+"/ecl:"+e)}}O.RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12,7,37,13],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]];const k=Array(41).fill(0).map(((t,e)=>e));var w,y;!function(t){t.L="L",t.M="M",t.Q="Q",t.H="H"}(w||(w={})),function(t){t.numeric="numeric",t.alphanumeric="alphanumeric",t.byte="byte",t.kanji="kanji",t.unicode="unicode"}(y||(y={}));class Z{constructor(t=0,e=w.L){this.modules=[],this.moduleCount=0,this.typeNumber=t,this.errorCorrectLevel=a[e],this.qrDataList=[]}getTypeNumber(){return this.typeNumber}setTypeNumber(t){this.typeNumber=t}getErrorCorrectLevel(){return this.errorCorrectLevel}setErrorCorrectLevel(t){this.errorCorrectLevel=t}clearData(){this.qrDataList=[]}addData(t,e=y.byte){if(t instanceof u)this.qrDataList.push(t);else{if("string"!=typeof t)throw new Error(typeof t);switch(e){case y.numeric:this.qrDataList.push(new f(t));break;case y.alphanumeric:this.qrDataList.push(new m(t));break;case y.byte:this.qrDataList.push(new p(t,Z.stringToBytesFuncs.default));break;case y.unicode:this.qrDataList.push(new p(t,Z.stringToBytesFuncs.UTF8));break;case y.kanji:this.qrDataList.push(new g(t,Z.stringToBytesFuncs.SJIS));break;default:throw new Error("mode:"+e)}}}isDark(t,e){return!(!this.modules[t]||null==this.modules[t][e])&&this.modules[t][e]}getModuleCount(){return this.moduleCount}make(){if(this.typeNumber<1){let t=1;for(;t<40;t++){const e=O.getRSBlocks(t,this.errorCorrectLevel),i=new s;this.qrDataList.forEach((e=>{i.put(e.getMode(),4),i.put(e.getLength(),e.getLengthInBits(t)),e.write(i)}));const o=e.reduce(((t,e)=>t+e.getDataCount()),0);if(i.getLengthInBits()<=8*o)break}this.typeNumber=t}this.makeImpl(!1,this.getBestMaskPattern())}getBestMaskPattern(){let t=0,e=0;for(let i=0;i<8;i+=1){this.makeImpl(!0,i);const o=b.getLostPoint(this);(0==i||t>o)&&(t=o,e=i)}return e}makeImpl(t,e){this.moduleCount=4*this.typeNumber+17,this.modules=[];for(let t=0;t<this.moduleCount;t+=1){this.modules.push([]);for(let e=0;e<this.moduleCount;e+=1)this.modules[t].push(null)}this.setupPositionProbePattern(0,0),this.setupPositionProbePattern(this.moduleCount-7,0),this.setupPositionProbePattern(0,this.moduleCount-7),this.setupPositionAdjustPattern(),this.setupTimingPattern(),this.setupTypeInfo(t,e),this.typeNumber>=7&&this.setupTypeNumber(t);const i=Z.createData(this.typeNumber,this.errorCorrectLevel,this.qrDataList);this.mapData(i,e)}mapData(t,e){let i=-1,o=this.moduleCount-1,n=7,r=0;const s=b.getMaskFunc(e);for(let e=this.moduleCount-1;e>0;e-=2)for(6==e&&(e-=1);;){for(let i=0;i<2;i+=1)if(null==this.modules[o][e-i]){let a=!1;r<t.length&&(a=1==(t[r]>>>n&1));s(o,e-i)&&(a=!a),this.modules[o][e-i]=a,n-=1,-1==n&&(r+=1,n=7)}if(o+=i,o<0||this.moduleCount<=o){o-=i,i=-i;break}}}setupPositionAdjustPattern(){const t=b.getPatternPosition(this.typeNumber);t.forEach((e=>{t.forEach((t=>{if(null==this.modules[e][t])for(let i=-2;i<=2;i+=1)for(let o=-2;o<=2;o+=1)this.modules[e+i][t+o]=-2==i||2==i||-2==o||2==o||0==i&&0==o}))}))}setupPositionProbePattern(t,e){for(let i=-1;i<=7;i+=1)for(let o=-1;o<=7;o+=1)t+i<=-1||this.moduleCount<=t+i||e+o<=-1||this.moduleCount<=e+o||(this.modules[t+i][e+o]=0<=i&&i<=6&&(0==o||6==o)||0<=o&&o<=6&&(0==i||6==i)||2<=i&&i<=4&&2<=o&&o<=4)}setupTimingPattern(){for(let t=8;t<this.moduleCount-8;t+=1)null==this.modules[t][6]&&(this.modules[t][6]=t%2==0);for(let t=8;t<this.moduleCount-8;t+=1)null==this.modules[6][t]&&(this.modules[6][t]=t%2==0)}setupTypeNumber(t){const e=b.getBCHTypeNumber(this.typeNumber);for(let i=0;i<18;i+=1)this.modules[~~(i/3)][i%3+this.moduleCount-8-3]=!t&&1==(e>>i&1);for(let i=0;i<18;i+=1)this.modules[i%3+this.moduleCount-8-3][~~(i/3)]=!t&&1==(e>>i&1)}setupTypeInfo(t,e){const i=this.errorCorrectLevel<<3|e,o=b.getBCHTypeInfo(i);for(let e=0;e<15;e+=1){const i=!t&&1==(o>>e&1);e<6?this.modules[e][8]=i:e<8?this.modules[e+1][8]=i:this.modules[this.moduleCount-15+e][8]=i}for(let e=0;e<15;e+=1){const i=!t&&1==(o>>e&1);e<8?this.modules[8][this.moduleCount-e-1]=i:e<9?this.modules[8][15-e-1+1]=i:this.modules[8][15-e-1]=i}this.modules[this.moduleCount-8][8]=!t}static createData(t,e,i){const o=O.getRSBlocks(t,e),n=new s;i.forEach((e=>{n.put(e.getMode(),4),n.put(e.getLength(),e.getLengthInBits(t)),e.write(n)}));const r=o.reduce(((t,e)=>t+e.getDataCount()),0);if(n.getLengthInBits()>8*r)throw new Error("code length overflow. ("+n.getLengthInBits()+">"+8*r+")");for(n.getLengthInBits()+4<=8*r&&n.put(0,4);n.getLengthInBits()%8!=0;)n.putBit(!1);for(;!(n.getLengthInBits()>=8*r||(n.put(Z.PAD0,8),n.getLengthInBits()>=8*r));)n.put(Z.PAD1,8);return Z.createBytes(n,o)}static createBytes(t,e){let i=0,o=0,n=0;const r=new Array(e.length).map((t=>[])),s=new Array(e.length).map((t=>[]));function a(t){const e=[];for(let i=0;i<t;i+=1)e.push(0);return e}for(let l=0;l<e.length;l+=1){const h=e[l].getDataCount(),d=e[l].getTotalCount()-h;o=Math.max(o,h),n=Math.max(n,d),r[l]=a(h);for(let e=0;e<r[l].length;e+=1)r[l][e]=255&t.getBuffer()[e+i];i+=h;const u=b.getErrorCorrectPolynomial(d),p=new c(r[l],u.getLength()-1).mod(u);s[l]=a(u.getLength()-1);for(let t=0;t<s[l].length;t+=1){const e=t+p.getLength()-s[l].length;s[l][t]=e>=0?p.getAt(e):0}}const l=a(e.reduce(((t,e)=>t+e.getTotalCount()),0));let h=0;for(let t=0;t<o;t+=1)for(let i=0;i<e.length;i+=1)t<r[i].length&&(l[h]=r[i][t],h+=1);for(let t=0;t<n;t+=1)for(let i=0;i<e.length;i+=1)t<s[i].length&&(l[h]=s[i][t],h+=1);return l}}Z.stringToBytesFuncs={default(t){const e=[];for(let i=0;i<t.length;i+=1){const o=t.charCodeAt(i);e.push(255&o)}return e}},Z.PAD0=236,Z.PAD1=17;const S=t=>!!t&&"object"==typeof t&&!Array.isArray(t);function A(t,e=!1){const i=t.split("").reverse().join("");return e?i.toLocaleUpperCase():i}function C(t,...e){if(!e.length)return t;const i=e.shift();return void 0!==i&&S(t)&&S(i)?(t={...t},Object.keys(i).forEach((e=>{const o=t[e],n=i[e];Array.isArray(o)&&Array.isArray(n)?t[e]=n:S(o)&&S(n)?t[e]=C({...o},n):t[e]=n})),C(t,...e)):t}const j=A("rq",!0)+A("-",!0)+A("talp",!0)+A("mrof",!0),I=A("a".repeat(6)+"#",!0),W="top",Y="bottom",J="left",V="right";const v=t=>"number"==typeof t?t:parseInt(t.replace("%",""),10),T=(t,e="0%")=>t?t.endsWith("%")?t:t+"%":e,q="text",X="image",M={disabled:!1,enableText:!0,type:"text",value:j},G=(t,e)=>!t?.decorations?.[e]?.disabled,R=(t,e,i)=>!i||!t?.decorations?.[e]?.disabled,B=t=>{if("string"==typeof t)return t;if(!t)return"";const{fontFace:e="Helvetica",fontSize:i=20,fontColor:o="#000000",letterSpacing:n=0,fontWeight:r="normal"}=t;return`font-weight: ${r}; font-size: ${i}px; font-family: ${e}; fill: ${o}; letter-spacing: ${n}px;`};M.style={fontFace:"Helvetica",fontSize:20,fontColor:I,letterSpacing:2};const D={...M};const x=({document:t,position:e,rotate:i,flip:o,thickness:n,height:r,width:s,round:a,offset:l=0,curveAdjustment:h=0,curveRadius:d,outerBorderPadding:c=0,instanceId:u})=>{const p=Math.min(s,r),m=t.createElementNS("http://www.w3.org/2000/svg","path"),g=(t=>{if(t>=50)return 1;const e=[{R:0,P:0},{R:5,P:0},{R:10,P:.12},{R:15,P:.2},{R:20,P:.32},{R:25,P:.44},{R:30,P:.56},{R:35,P:.65},{R:40,P:.78},{R:45,P:.9},{R:50,P:1}],i=e.find((e=>t<=e.R))||e[0],o=e.find((e=>t>e.R))||e[e.length-1],{R:n,P:r}=i,{R:s,P:a}=o;return r+(t-n)/(s-n)*(a-r)})("string"==typeof a?v(a):a),f=void 0!==d?function(t){let e;return e="number"==typeof t?t:"string"==typeof t?(t.includes("%"),parseFloat(t)):0,e=Math.min(Math.max(e,0),50),.5+e/50*.5}(d):g,b=(p-n-2*c-10*h*2)/2*f,O=((t,e,i,o)=>{const n=i/2,r=o/2;let s="";return t&&(s+=`rotate(${t}, ${n}, ${r})`),e&&(s+=`translate(${n}, ${r}) scale(1, -1) translate(${-n}, ${-r})`),s.trim()})(i,o,s,r);m.setAttribute("id",`${e}-text-path-${u}`),m.setAttribute("transform",O);const{startX:k,startY:w,pathWidth:y}=((t,e,i,o,n={})=>{let r=e/2,s=e/2+o,a=t-e;return i&&(a-=2*i,r+=i,s+=i),r+=n.left||0,s+=n.top||0,{startX:r,startY:s,pathWidth:a}})(p,n,c,l);return m.setAttribute("d",((t,e,i,o)=>`M${t},${e+o} a${o},${o} 0 0 1 ${o},${-o} h${i-2*o} a${o},${o} 0 0 1 ${o},${o}`)(k,w,y,b)),m},L=({document:t,thickness:e,value:i,svg:o,position:n,height:r,width:s,round:a,style:l,offset:h=0,curveAdjustment:d=0,curveDisabled:c=!1,outerBorderPadding:u=0,curveRadius:p,instanceId:m,noBorderThickness:g,enabledBorders:f})=>{let b=0,O=!1;if(n===V?b=90:n===Y?O=!c:n===J&&(b=270),c){const a=t.createElementNS("http://www.w3.org/2000/svg","text");let d=s/2,c=(r-Math.min(s,r)+e)/2+2*u+h-(r-s>0?0:(s-r)/2);if(n===Y?c=r-2*u-e/2-h:n===W&&(c=2*u+e/2+h),n===W||n===Y){let t=0;!f[J]&&f[V]?t=-(e-g)/2:f[J]&&!f[V]&&(t=(e-g)/2),d+=t}else if(n===J||n===V){let t=0;!f[W]&&f[Y]?t=n===J?(e-g)/2:-(e-g)/2:f[W]&&!f[Y]&&(t=n===J?-(e-g)/2:(e-g)/2),d+=t}let p="";0!==b&&(p+=`rotate(${b}, ${s/2}, ${r/2})`),a.setAttribute("x",d.toString()),a.setAttribute("y",c.toString()),a.setAttribute("text-anchor","middle"),a.setAttribute("dominant-baseline","middle"),p&&a.setAttribute("transform",p.trim()),a.textContent=i;const m=B(l);a.setAttribute("style",m),o.appendChild(a)}else{let c=o.getElementsByTagName("defs")[0];c||(c=t.createElementNS("http://www.w3.org/2000/svg","defs"),o.appendChild(c));const k=x({document:t,position:n,rotate:b,flip:O,thickness:e,height:r,width:s,round:a,offset:h,curveAdjustment:d,enabledBorders:f,outerBorderPadding:u,curveRadius:p,noBorderThickness:g,instanceId:m}),{x:w,y}=function(t,e,i,o){let n=0,r=0;const s=(e-i)/2;return o.left&&o.right&&o.top&&o.bottom?(n=0,r=0):"top"===t||"bottom"===t?!o.left&&o.right?n=-s:(o.left&&!o.right||o.left&&o.right)&&(n=s):"left"!==t&&"right"!==t||(!o.top&&o.bottom?o.left&&o.right?(n="left"===t?2*+s:0,r=-s):n="left"===t?+s:-s:o.top&&!o.bottom?o.left&&o.right?(n="left"===t?0:2*s,r=-s):n=0:o.top&&o.bottom?r=o.left&&o.right?2*+s:+s:(n=o.left&&o.right?2*+s:+s,r=o.left&&o.right?2*-s:-s)),{x:n,y:r}}(n,e,g,f);if(0!==w||0!==y){const t=`${k.getAttribute("transform")||""} translate(${w}, ${y})`.trim();k.setAttribute("transform",t)}c.appendChild(k),o.appendChild((({document:t,value:e,position:i,style:o,instanceId:n})=>{const r=t.createElementNS("http://www.w3.org/2000/svg","text"),s=t.createElementNS("http://www.w3.org/2000/svg","textPath");s.setAttribute("href",`#${i}-text-path-${n}`),s.setAttribute("text-anchor","middle"),s.setAttribute("startOffset","50%"),s.textContent=e,s.setAttribute("alignment-baseline","middle");const a=B(o);return r.setAttribute("style",a),r.appendChild(s),r})({document:t,position:n,rotate:b,value:i,style:l,instanceId:m}))}},P=({document:t,thickness:e,value:i,svg:o,position:n,height:r,width:s,offset:a=0,style:l})=>{const h=t.createElementNS("http://www.w3.org/2000/svg","image"),d=Math.min(s,r);let c=(s-d+e)/2,u=(r-d+e)/2+a;n===W?c+=(d-e)/2:n===V?(c+=d-e,u+=(d-e)/2):n===Y?(c+=(d-e)/2,u+=d-e):n===J&&(u+=(d-e)/2),h.setAttribute("href",i||""),h.setAttribute("x",`${c}`),h.setAttribute("y",`${u}`),h.setAttribute("style",l?.toString()||""),o.appendChild(h)},F=t=>(e,i,o,n,r,s,a,l,h)=>{const{instanceId:d}=i,c=o,u=o,p=Math.min(c,u),m=T(t.radius),g=m&&v(m)>0?v(m)/100*p:0,f=T(t?.inner?.radius,g),b=Math.min(Math.max(t.inner?.scale??1,0),1.5),O=t.inner?.horizontalOffset??0,k=t.inner?.verticalOffset??0,w=t.thickness,y=t.color??"#000000",Z=t.borderOuter?t.borderOuter.thickness/2:0,S=t.borderInner?t.borderInner.thickness/2:0,A=i.document,C=r.left+r.right,j=r.top+r.bottom,I=n(w,g),Y={top:G(t,"top"),right:G(t,"right"),bottom:R(t,"bottom",h()),left:G(t,"left")},M=A.createElementNS("http://www.w3.org/2000/svg","rect"),B={x:s.left/2,y:s.top/2,width:p+C-s.left,height:p+j-s.top,fill:y,rx:m??g};Object.entries(B).forEach((([t,e])=>{M.setAttribute(t,e.toString())}));const x=A.createElementNS("http://www.w3.org/2000/svg","rect"),F=g>=200?"50%":g,U=c+C-(r.left+r.right+a.left+a.right+s.left+s.right),N=u+j-(r.top+r.bottom+a.top+a.bottom+s.top+s.bottom),E=U*b,z=N*b,K=(U-E)/2-O,H=(N-z)/2-k,Q={x:r.left+a.left+s.left+K,y:r.top+a.top+s.top+H,width:E,height:z,fill:I?.getAttribute("fill")||"#ffffff",rx:f??F};Object.entries(Q).forEach((([t,e])=>x.setAttribute(t,e.toString()))),I&&(({strokePath:t,backgroundMaskGroup:e,svgElement:i,color:o})=>{t.setAttribute("fill",e?.getAttribute("fill")||o),e.setAttribute("fill","none"),e.setAttribute("stroke-width","0"),i.insertBefore(e,i.firstChild)})({strokePath:x,backgroundMaskGroup:I,svgElement:e,color:y});let $=e.getElementsByTagName("defs")[0];$||($=A.createElementNS("http://www.w3.org/2000/svg","defs"),e.insertBefore($,e.firstChild));const _=A.createElementNS("http://www.w3.org/2000/svg","mask");_.setAttribute("id",`qr-mask-${d}`),_.setAttribute("maskUnits","userSpaceOnUse");const tt=A.createElementNS("http://www.w3.org/2000/svg","rect");if(tt.setAttribute("fill","white"),Object.entries(Q).forEach((([t,e])=>{"fill"!==t&&tt.setAttribute(t,e.toString())})),$.appendChild(_),_.appendChild(tt),e.insertBefore(x,e.firstChild?.nextSibling),e.insertBefore(M,e.firstChild),t.borderOuter&&t.borderOuter.thickness>0){const i=A.createElementNS("http://www.w3.org/2000/svg","rect"),o={x:s.left/2,y:s.top/2,width:c+C-s.left,height:u+j-s.top,fill:"none",rx:m??g,stroke:t.borderOuter.color,"stroke-width":t.borderOuter.thickness};Object.entries(o).forEach((([t,e])=>i.setAttribute(t,e.toString()))),e.insertBefore(i,e.firstChild?.nextSibling)}if(I){if(Array.from(e.getElementsByTagName("rect"))[0]){const t=e.firstChild;t?e.insertBefore(I,t):e.appendChild(I)}}if(t.borderInner&&t.borderInner.thickness>0){const i=A.createElementNS("http://www.w3.org/2000/svg","rect"),o={x:r.left+a.left+s.left+K,y:r.top+a.top+s.top+H,width:E,height:z,fill:"none",stroke:t.borderInner.color,"stroke-width":a.left,rx:f??F};Object.entries(o).forEach((([t,e])=>i.setAttribute(t,e.toString()))),e.appendChild(i)}let et={...D};if(!h()){const e=((t,e=[W,J,V])=>{for(const i of e){const e=t.decorations?.[i];if(e&&e.enableText&&!e.disabled&&e.type===q&&e.style)return e.style}})(t);e&&(et={...et,style:e})}const it=h()?t:{...t,decorations:{...t.decorations,bottom:{...t.decorations?.bottom||{},...et,disabled:!1,enableText:!0}}};for(const t in it.decorations){const i=it.decorations[t];if(!i?.enableText||!Y[t])continue;const o=i.type===X?P:i.type===q?L:void 0;o&&o({document:A,svg:e,position:t,thickness:it.thickness,value:i.value,style:i.style,offset:i.offset,curveAdjustment:i.curveAdjustment,curveDisabled:i.curveDisabled,height:u+j,width:c+C,enabledBorders:Y,outerBorderPadding:Z,innerBorderPadding:S,round:m,curveRadius:i.curveRadius,instanceId:d,noBorderThickness:l})}};var U,N,E,z,K,H;function Q(t){const e={...t};if(!e.colorStops||!e.colorStops.length)throw new Error("Field 'colorStops' is required in gradient");return e.rotation?e.rotation=Number(e.rotation):e.rotation=0,e.colorStops=e.colorStops.map((t=>({...t,offset:Number(t.offset)}))),e}function $(t){const e={...t};return e.imageOptions={...e.imageOptions,imageSize:Math.min(1,Number(e.imageOptions?.imageSize))||1,margin:Number(e.imageOptions?.margin)||0},e.imageOptions.mode==H.overlay&&(e.imageOptions.margin=0),e.imageOptions?.fill?.gradient&&(e.imageOptions.fill.gradient=Q(e.imageOptions.fill.gradient)),e.dotsOptions={...e.dotsOptions},e.dotsOptions.gradient&&(e.dotsOptions.gradient=Q(e.dotsOptions.gradient)),e.dotsOptions.size=Math.round(Math.max(0,e.dotsOptions.size)||10),e.cornersSquareOptions&&(e.cornersSquareOptions={...e.cornersSquareOptions},e.cornersSquareOptions.gradient&&(e.cornersSquareOptions.gradient=Q(e.cornersSquareOptions.gradient))),e.cornersDotOptions&&(e.cornersDotOptions={...e.cornersDotOptions},e.cornersDotOptions.gradient&&(e.cornersDotOptions.gradient=Q(e.cornersDotOptions.gradient))),e.backgroundOptions&&(e.backgroundOptions={...e.backgroundOptions},e.backgroundOptions.gradient&&(e.backgroundOptions.gradient=Q(e.backgroundOptions.gradient))),"undefined"==typeof document||e.document||(e.document=document),e}!function(t){t.radial="radial",t.linear="linear"}(U||(U={})),function(t){t.dot="dot",t.randomDot="random-dot",t.rounded="rounded",t.extraRounded="extra-rounded",t.verticalLine="vertical-line",t.horizontalLine="horizontal-line",t.classy="classy",t.classyRounded="classy-rounded",t.square="square",t.smallSquare="small-square",t.tinySquare="tiny-square",t.star="star",t.plus="plus",t.diamond="diamond"}(N||(N={})),function(t){t.dot="dot",t.square="square",t.heart="heart",t.rounded="rounded",t.classy="classy",t.outpoint="outpoint",t.inpoint="inpoint"}(E||(E={})),function(t){t.dot="dot",t.square="square",t.rounded="rounded",t.classy="classy",t.outpoint="outpoint",t.inpoint="inpoint"}(z||(z={})),function(t){t.square="square",t.circle="circle"}(K||(K={})),function(t){t.center="center",t.overlay="overlay",t.background="background"}(H||(H={}));const _={[w.L]:.07,[w.M]:.15,[w.Q]:.25,[w.H]:.3};function tt(t){const e={};return(t.primaryColor||t.dotsGradient)&&(e.dotsOptions={...e.dotsOptions,...t.primaryColor&&{color:t.primaryColor},...t.dotsGradient&&{gradient:t.dotsGradient}}),(t.secondaryColor||t.cornersGradient)&&(e.cornersSquareOptions={...e.cornersSquareOptions,...t.secondaryColor&&{color:t.secondaryColor},...t.cornersGradient&&{gradient:t.cornersGradient}},e.cornersDotOptions={...e.cornersDotOptions,...t.secondaryColor&&{color:t.secondaryColor}}),(t.thirdColor||t.cornersDotGradient)&&(e.cornersDotOptions={...e.cornersDotOptions,...t.thirdColor&&{color:t.thirdColor},...t.cornersDotGradient&&{gradient:t.cornersDotGradient}}),(t.backgroundColor||t.backgroundGradient)&&(e.backgroundOptions={...e.backgroundOptions,...t.backgroundColor&&{color:t.backgroundColor},...t.backgroundGradient&&{gradient:t.backgroundGradient}}),t.dotShape&&(e.dotsOptions={...e.dotsOptions,type:t.dotShape}),t.cornerSquareShape&&(e.cornersSquareOptions={...e.cornersSquareOptions,type:t.cornerSquareShape}),t.cornerDotShape&&(e.cornersDotOptions={...e.cornersDotOptions,type:t.cornerDotShape}),t.logo&&(e.image=t.logo),(void 0!==t.logoSize||t.logoMode||void 0!==t.logoMargin||t.logoFillColor||t.logoFillGradient)&&(e.imageOptions={...e.imageOptions,...void 0!==t.logoSize&&{imageSize:t.logoSize},...t.logoMode&&{mode:t.logoMode},...void 0!==t.logoMargin&&{margin:t.logoMargin},fill:{...e.imageOptions?.fill,...t.logoFillColor&&{color:t.logoFillColor},...t.logoFillGradient&&{gradient:t.logoFillGradient}}}),(t.borderColor||void 0!==t.borderThickness||void 0!==t.borderRadius||t.borderTextTop||t.borderTextRight||t.borderTextBottom||t.borderTextLeft||t.borderFontFace||void 0!==t.borderFontSize||t.borderFontColor||void 0!==t.borderLetterSpacing||t.borderFontWeight)&&(e.borderOptions={...e.borderOptions,hasBorder:!0,...t.borderColor&&{color:t.borderColor},...void 0!==t.borderThickness&&{thickness:t.borderThickness},...void 0!==t.borderRadius&&{radius:String(t.borderRadius)},...t.borderFontFace&&{fontFace:t.borderFontFace},...void 0!==t.borderFontSize&&{fontSize:t.borderFontSize},...t.borderFontColor&&{fontColor:t.borderFontColor},...void 0!==t.borderLetterSpacing&&{letterSpacing:t.borderLetterSpacing},...t.borderFontWeight&&{fontWeight:t.borderFontWeight},decorations:{...e.borderOptions?.decorations,...t.borderTextTop&&{top:{...e.borderOptions?.decorations?.top||{},text:t.borderTextTop}},...t.borderTextRight&&{right:{...e.borderOptions?.decorations?.right||{},text:t.borderTextRight}},...t.borderTextBottom&&{bottom:{...e.borderOptions?.decorations?.bottom||{},text:t.borderTextBottom}},...t.borderTextLeft&&{left:{...e.borderOptions?.decorations?.left||{},text:t.borderTextLeft}}}}),e}function et(t){const e=[];return void 0!==t.logoSize&&("number"!=typeof t.logoSize||t.logoSize<0||t.logoSize>1)&&e.push("logoSize must be a number between 0 and 1."),{isValid:0===e.length,errors:e}}class it{constructor(){}close(){}}class ot extends it{constructor(t){super(),this.istream=t,this.buffer=0,this.buflen=0}readByte(){for(;this.buflen<8;){const t=this.istream.readByte();if(-1==t){if(0==this.buflen)return-1;throw new Error("unexpected end of file./"+this.buflen)}if(t=="=".charCodeAt(0))return this.buflen=0,-1;ot.isWhitespace(t)||(this.buffer=this.buffer<<6|ot.decode(t),this.buflen+=6)}const t=this.buffer>>>this.buflen-8&255;return this.buflen-=8,t}static isWhitespace(t){return t=="\v".charCodeAt(0)||t=="\t".charCodeAt(0)||t=="\r".charCodeAt(0)||t=="\n".charCodeAt(0)}static decode(t){if("A".charCodeAt(0)<=t&&t<="Z".charCodeAt(0))return t-"A".charCodeAt(0);if("a".charCodeAt(0)<=t&&t<="z".charCodeAt(0))return t-"a".charCodeAt(0)+26;if("0".charCodeAt(0)<=t&&t<="9".charCodeAt(0))return t-"0".charCodeAt(0)+52;if(t=="+".charCodeAt(0))return 62;if(t=="/".charCodeAt(0))return 63;throw new Error("c:"+t)}}class nt extends it{constructor(t){super(),this.bytes=t,this.pos=0}readByte(){if(this.pos<this.bytes.length){const t=this.bytes[this.pos];return this.pos+=1,t}return-1}}(function(t,e){const i=(()=>{const i=new ot(new nt(function(t){const e=[];for(let i=0;i<t.length;i+=1)e.push(t.charCodeAt(i));return e}(t))),o=()=>{const t=i.readByte();if(-1==t)throw new Error("eof");return t};let n=0;const r={};for(;;){const t=i.readByte();if(-1==t)break;const e=o(),s=o()<<8|o();r[String.fromCharCode(t<<8|e)]=s,n+=1}if(n!=e)throw new Error(n+"!="+e);return r})(),o="?".charCodeAt(0)})("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MIWC4zCGguQwh4LlMIiC5jCJgucwioLoMIuC6TCMguowjYLrMI6C7DCPgu0wkILuMJGC7zCSgvAwk4LxMJuBSjCcgUswnYFUMJ6BVTChg0AwooNBMKODQjCkg0MwpYNEMKaDRTCng0YwqINHMKmDSDCqg0kwq4NKMKyDSzCtg0wwroNNMK+DTjCwg08wsYNQMLKDUTCzg1IwtINTMLWDVDC2g1Uwt4NWMLiDVzC5g1gwuoNZMLuDWjC8g1swvYNcML6DXTC/g14wwINfMMGDYDDCg2Eww4NiMMSDYzDFg2QwxoNlMMeDZjDIg2cwyYNoMMqDaTDLg2owzINrMM2DbDDOg20wz4NuMNCDbzDRg3Aw0oNxMNODcjDUg3Mw1YN0MNaDdTDXg3Yw2IN3MNmDeDDag3kw24N6MNyDezDdg3ww3oN9MN+DfjDgg4Aw4YOBMOKDgjDjg4Mw5IOEMOWDhTDmg4Yw54OHMOiDiDDpg4kw6oOKMOuDizDsg4ww7YONMO6DjjDvg48w8IOQMPGDkTDyg5Iw84OTMPSDlDD1g5Uw9oOWMPuBRTD8gVsw/YFSMP6BU04AiOpOAZKaTgOOtU4HlpxOCI/kTgmOT04Kj+NOC4m6Tg2Vc04Ol15OEJigThGJTk4Uio5OFZihThaQok4XmcBOGIt1ThmVuE4ej+VOIZe8TiaVwE4qmKJOLZKGTjGYo04yi/hONpikTjiK2045kk9OO47lTjyYpU4/mKZOQpinTkOUVE5Fi3ZOS5RWTk2T4U5OjMFOT5ZSTlXlaE5WmKhOV4/mTliYqU5ZibNOXYvjTl6M7k5fludOYpukTnGXkE5zk/tOfoqjToCLVE6CmKpOhZirToaXuU6Il1xOiZGIToqYrU6LjpZOjJPxTo6YsE6RiV1OkozdTpSM3E6ViOROmJhqTpmYaU6bjbFOnIifTp6YsU6fmLJOoJizTqGWU06imLROpIzwTqWI5U6mlpJOqIucTquLnU6si55OrZLgTq6Xuk6wmLVOs5i2TraYt066kGxOwI9ZTsGQbU7CmLxOxJi6TsaYu07Hi3dOyo2hTsuJ7k7NmLlOzpi4Ts+Vp07UjmVO1Y5kTtaRvE7XmL1O2JV0TtmQ5U7dgVdO3pi+Tt+YwE7jkeNO5JffTuWIyE7tmL9O7om8TvCLwk7ykodO9oyPTveYwU77lENPAYrpTwmYwk8KiMlPDYzeTw6K6k8PlZpPEJSwTxGLeE8aie9PHJjlTx2TYE8vlIxPMJjETzSUuk82l+BPOJBMTzqOZk88jpdPPYm+T0OSz09GkkFPR5jIT02Iyk9OkuFPT49aT1CNsk9Rl0NPU5HMT1WJvU9XmMdPWZddT1qYw09bmMVPXI3sT12Yxk9em0NPaZjOT2+Y0U9wmM9Pc4nAT3WVuU92mMlPe5jNT3yM8U9/jmdPg4qkT4aY0k+ImMpPi5fhT42OmE+PmMtPkZjQT5aY00+YmMxPm4ufT52Iy0+gi6BPoYm/T6ubRE+tlplPrpWOT6+M8k+1kE5Ptpe1T7+V1k/CjFdPw5GjT8SJ4k/Kj3JPzpjXT9CY3E/RmNpP1JjVT9eRrU/YmNhP2pjbT9uY2U/dldtP35jWT+GQTU/jlpNP5JjdT+WY3k/uj0NP75jrT/OUb0/1lVVP9pjmT/iV7k/6ibRP/pjqUAWY5FAGmO1QCZFxUAuMwlANlHtQD+DFUBGY7FASk3xQFJjhUBaM9FAZjPNQGpjfUB+O2FAhmOdQI5XtUCSSbFAlmONQJoyRUCiY4FApmOhQKpjiUCuXz1AsmOlQLZhgUDaL5FA5jJBQQ5juUEeY71BImPNQSYjMUE+VzlBQmPJQVZjxUFaY9VBamPRQXJLiUGWMklBsmPZQco7DUHSRpFB1kuNQdov0UHiY91B9i1VQgJj4UIWY+lCNllRQkYyGUJiOUFCZlPVQmpj5UKyNw1Ctl2JQspj8ULOZQlC0mPtQtY3CULePnVC+jFhQwplDUMWLzVDJmUBQyplBUM2TrVDPkZxQ0YuhUNWWbFDWmURQ2pe7UN6ZRVDjmUhQ5ZlGUOeRbVDtmUdQ7plJUPWZS1D5mUpQ+5XGUQCLVlEBmU1RAplOUQSJrVEJmUxREo7yURSZUVEVmVBRFplPURiY1FEamVJRH4+eUSGZU1Eql0RRMpbXUTeZVVE6mVRRO5lXUTyZVlE/mVhRQJlZUUGI8lFDjLNRRIxaUUWPW1FGkptRR4uiUUiQ5lFJjPVRS42OUUyZW1FNlsZRTpNlUVCOmVFSmVpRVJlcUVqTfVFcipVRYpldUWWT/FFokVNRaZlfUWqZYFFrlKpRbIz2UW2YWlFumWFRcYukUXWVulF2kbRRd4vvUXiTVFF8jJNRgJliUYKZY1GFk+BRhol+UYmZZlGKjftRjJllUY2NxFGPmWdRkOPsUZGZaFGSlmBRk5lpUZWZalGWmWtRl4/nUZmOylGgiqVRopluUaSZbFGllrtRppltUaiVeVGpmW9RqplwUauZcVGsk35RsJl1UbGZc1GymXRRs5lyUbSN4VG1mXZRtpboUbeX4lG9mXdRxJCmUcWZeFHGj3lRyZl5UcuSnFHMl71RzZOAUdaZw1HbmXpR3OqjUd2Lw1HgmXtR4ZZ9UeaPiFHnkfpR6Zl9UeqT4lHtmX5R8JmAUfGKTVH1mYFR9oulUfiTylH5iZpR+o9vUf2Un1H+mYJSAJOBUgOQblIEmYNSBpWqUgeQ2FIIiqBSCoqnUguZhFIOmYZSEYxZUhSZhVIXl/FSHY+JUiSUu1IllcpSJ5mHUimXmFIqmYhSLpmJUjCTnlIzmYpSNpCnUjeN/FI4jJRSOZmLUjqOaFI7jY9SQ5LkUkSZjVJHkaVSSo3tUkuZjlJMmY9STZFPUk+ZjFJUmZFSVpZVUluNhFJemZBSY4yVUmSN3FJllI1SaZmUUmqZklJvlZtScI/oUnGZm1JyioRSc5mVUnSZk1J1kW5SfZmXUn+ZllKDimNSh4yAUoiZnFKJl6tSjZmYUpGZnVKSmZpSlJmZUpuXzVKfjPdSoInBUqOX8lKpj5VSqpN3UquNhVKsmaBSrZmhUrGX41K0mEpStZmjUrmM+FK8maJSvopOUsGZpFLDlnVSxZK6UseXRVLJlddSzZmlUtLo01LVk65S15mmUtiKqFLZlrFS3Y+fUt6Zp1LfleVS4JmrUuKQqFLjmahS5IvOUuaZqVLniqlS8oxNUvOZrFL1ma1S+JmuUvmZr1L6jtlS/oz5Uv+W3FMBluZTApP1UwWV71MGmbBTCJmxUw2Zs1MPmbVTEJm0UxWZtlMWibtTF5ZrUxmN+lMambdTHZF4UyCPoFMhi6dTI5m4UyqU2VMvmblTMZm6UzOZu1M4mbxTOZVDUzqL5lM7iONTP5O9U0CZvVNBj1xTQ5DnU0WZv1NGmb5TR4+hU0iM31NJmcFTSpS8U02ZwlNRlNpTUpGyU1OR7FNUi6ZTV5PsU1iSUFNalI5TXJZtU16ZxFNgkOhTZoxUU2mZxVNumcZTb4lLU3CI81NxiutTc5GmU3SLcFN1l5FTd5nJU3iJtVN7mchTf4uoU4KZylOElu9TlpnLU5iX0FOajPpTn4y0U6CZzFOlmc5TppnNU6iQflOpiVhTrYl9U66Zz1OwmdBTs4y1U7aZ0VO7i45Two5RU8OZ0lPIlpRTyY2zU8qLeVPLl0ZTzJFvU82UvVPOjvtT1I9mU9aO5lPXjvNT2Y+WU9uUvlPfmdVT4YliU+KRcFPjjPtT5IzDU+WL5VPomdlT6ZJAU+qR/FPri6lT7I+iU+2Z2lPumdhT74nCU/CR5FPxjrZT8o5qU/OJRVP2ipBT942GU/iOaVP6mdtUAZncVAOLaFQEimVUCI2HVAmLZ1QKkt1UC4lEVAyTr1QNlrxUDo1AVA+XmVQQk2ZUEYz8VBuMTlQdmeVUH4vhVCCWaVQmlNtUKZnkVCuK3FQsmd9ULZngVC6Z4lQ2meNUOIt6VDmQgVQ7latUPJnhVD2Z3VQ+jOFUQJneVEKYQ1RGlfBUSJLmVEmM4FRKjZBUTpnmVFGT21RfmepUaI78VGqO9FRwme1UcZnrVHOWoVR1mehUdpnxVHeZ7FR7me9UfIzEVH2WvVSAmfBUhJnyVIaZ9FSLje5UjJhhVI6Z6VSPmedUkJnzVJKZ7lSimfZUpJpCVKWZ+FSomfxUq5pAVKyZ+VSvml1Uso3nVLOKUFS4mfdUvJpEVL2I9FS+mkNUwIijVMGVaVTCmkFUxJn6VMeZ9VTImftUyY3GVNiaRVThiPVU4ppOVOWaRlTmmkdU6I+jVOmWiVTtmkxU7ppLVPKTTlT6mk1U/ZpKVQSJU1UGjbRVB5BPVQ+aSFUQk4JVFJpJVRaIoFUumlNVL5dCVTGPpVUzmllVOJpYVTmaT1U+kcFVQJpQVUSR7VVFmlVVRo+kVUyaUlVPluJVU4xbVVaaVlVXmldVXJpUVV2aWlVjmlFVe5pgVXyaZVV+mmFVgJpcVYOaZlWEkVBVh5poVYmNQVWKml5Vi5KdVZiaYlWZmltVmoqrVZyK7FWdioVVnppjVZ+aX1WnjJZVqJppVamaZ1WqkXJVq4tpVayLqlWummRVsIvyVbaJY1XEmm1VxZprVceapVXUmnBV2ppqVdyablXfmmxV445rVeSab1X3mnJV+Zp3Vf2adVX+mnRWBpJRVgmJw1YUmnFWFppzVhePplYYiVJWG5p2VimJ3FYvmoJWMY/6VjKafVY0mntWNpp8VjiaflZCiVxWTJFYVk6aeFZQmnlWW4qaVmSagVZoiu1WapqEVmuagFZsmoNWdJWsVniT01Z6lLZWgJqGVoaahVaHimRWipqHVo+ailaUmolWoJqIVqKUWFalmotWrpqMVrSajla2mo1WvJqQVsCak1bBmpFWwpqPVsOaklbImpRWzpqVVtGallbTmpdW15qYVtiZZFbajvpW245sVt6J8VbgiPZW45JjVu6amVbwjaJW8ojNVvOQfVb5mppW+ozFVv2NkVb/mpxXAJqbVwOV3lcEmp1XCJqfVwmanlcLmqBXDZqhVw+Ml1cSiYBXE5qiVxaapFcYmqNXHJqmVx+TeVcmmqdXJ4izVyiN3VctjFxXMJJuVzeaqFc4mqlXO5qrV0CarFdCjeJXR4vPV0qWVldOmqpXT5qtV1CNv1dRjUJXYZqxV2SNo1dmklJXaZquV2qS2Fd/mrJXgpCCV4iasFeJmrNXi4xeV5OatFegmrVXoo1DV6OKX1ekmrdXqpq4V7CauVezmrZXwJqvV8OaulfGmrtXy5aEV86P6VfSmr1X05q+V9SavFfWmsBX3JRXV9+I5lfglXVX45rBV/SP+1f3jrdX+ZR8V/qK7lf8jelYAJZ4WAKTsFgFjJhYBpHNWAqav1gLmsJYFZHCWBmaw1gdmsRYIZrGWCSS51gqiqxYL+qfWDCJgVgxlfFYNI/qWDWTZ1g6jeRYPZrMWECVu1hBl9tYSonyWEuayFhRkVlYUprLWFSTg1hXk2hYWJOEWFmUt1hakstYXo3HWGKax1hpiZZYa5NVWHCayVhymsVYdZBvWHmazVh+j21Yg4urWIWazliTleZYl5GdWJySxFifmtBYqJZuWKua0ViumtZYs5WtWLia1Vi5ms9YuprSWLua1Fi+jaRYwZXHWMWa11jHkmRYyonzWMyP61jRmtlY05rYWNWNiFjXmtpY2JrcWNma21jcmt5Y3prTWN+a4Fjkmt9Y5ZrdWOuObVjskHBY7pFzWO+a4VjwkLpY8YjrWPKUhFj3ktlY+ZrjWPqa4lj7muRY/JrlWP2a5lkCmudZCZXPWQqa6FkPicRZEJrpWRWXW1kWik9ZGJnHWRmPZ1kakb1ZG5rqWRyW6VkilrJZJZrsWSeR5Vkpk1ZZKpG+WSuVdlksmu1ZLZruWS6Jm1kxjrhZMprvWTeIzlk4mvBZPprxWUSJgllHiu9ZSJPeWUmV8llOmvVZT5F0WVCa9FlRjF9ZVJZ6WVWa81lXk4VZWJr3WVqa9llgmvlZYpr4WWWJnFlnmvpZaI+nWWma/FlqkkRZbJr7WW6VsVlzj5dZdJN6WXibQFl9jURZgZtBWYKUQFmDlNxZhJbPWYqURFmNm0pZk4tXWZaXZFmZlq1Zm5uqWZ2bQlmjm0VZpZHDWaiWV1msk2lZsptGWbmWhVm7jchZvo+oWcabR1nJjm9Zy45uWdCIt1nRjMZZ05CpWdSIz1nZm0tZ2ptMWdybSVnliVdZ5oqtWeibSFnqlsNZ65VQWfaIpln7iPdZ/45wWgGI0FoDiKFaCZtRWhGbT1oYlrpaGptSWhybUFofm05aIJBQWiWbTVopldhaL4ziWjWbVlo2m1daPI+pWkCbU1pBmEtaRpRrWkmbVVpajaVaYptYWmaVd1pqm1labJtUWn+WuVqSlH1amptaWpuVUVq8m1tavZtfWr6bXFrBicVawpteWsmOuVrLm11azIyZWtCba1rWm2Ra15thWuGShFrjm2Ba5ptiWumbY1r6m2Va+5tmWwmK8FsLm2hbDJtnWxabaVsij+xbKptsWyyS2lswiWRbMptqWzabbVs+m25bQJtxW0Obb1tFm3BbUI5xW1GbcltUjUVbVZtzW1eOmltYkbZbWpt0W1ubdVtcjnlbXY1GW1+W0Ftji0dbZIzHW2WbdltmindbaZt3W2uRt1twm3hbcZuhW3ObeVt1m3pbeJt7W3qbfVuAm35bg5uAW4WR7luHiUZbiI7nW4mIwFuLkXZbjIquW42Os1uPjUdblZOGW5ePQFuYiq9bmZKIW5qS6FubiLZbnItYW52V81ufjsBbootxW6OQ6VukjrpbpZdHW6abgVuui3tbsI3JW7OKUVu0iYNbtY+qW7aJxlu4m4JbuZdlW7+PaFvCjuJbw5uDW8SK8VvFk9BbxpanW8ebhFvJm4VbzJV4W9Cbh1vSiqZb04v1W9SbhlvbirBb3ZBRW96bi1vfjkBb4YnHW+Kbilvkm4hb5ZuMW+abiVvnlEpb6J7LW+mQUlvrm41b7pe+W/Cbjlvzm5Bb9ZKeW/abj1v4kKFb+o6bW/6Rzlv/jvVcAZWVXAKQ6lwEjstcBZuRXAaPq1wHm5JcCJuTXAmI0VwKkbhcC5BxXA2blFwOk7FcD4+sXBGPrVwTm5VcFpDrXBqPrlwgm5ZcIpuXXCSW3lwom5hcLYvEXDGPQVw4m5lcOZuaXDqO2lw7kEtcPJPyXD2Qc1w+lPZcP5RBXECLx1xBm5tcRYuPXEabnFxIi/xcSpPNXEuJrlxNjnJcTpudXE+boFxQm59cUYv7XFObnlxVk1dcXpGuXGCTalxhjsZcZJF3XGWXmlxsm6JcbpujXG+T1FxxjlJcdpulXHmbplyMm6dckIryXJGbqFyUm6lcoYmqXKiRWlypiuJcq5urXKyWplyxkdBcs4p4XLabrVy3m69cuIrdXLubrFy8m65cvpuxXMWbsFzHm7Jc2ZuzXOCTu1zhi6xc6InjXOmbtFzqm7lc7Zu3XO+V9VzwlfRc9pOHXPqbtlz7j3Nc/Zu1XQeQkl0Lm7pdDo3oXRGbwF0Um8FdFZu7XRaKUl0Xm7xdGJvFXRmbxF0am8NdG5u/XR+bvl0im8JdKZX2XUubyV1Mm8ZdTpvIXVCXkl1Sm8ddXJu9XWmQk11sm8pdb421XXOby112m8xdgpvPXYSbzl2Hm81di5OIXYybuF2Qm9VdnZvRXaKb0F2sm9JdrpvTXbeb1l26l+RdvJvXXb2b1F3Jm9hdzIreXc2b2V3Sm9td05vaXdab3F3bm91d3ZDsXd6PQl3hj4Rd45GDXeWNSF3mjbZd541JXeiLkF3rm95d7o23XfGMyF3ym99d85akXfSUYl31m+Bd941KXfuKql39kkZd/ovQXgKOc14DlXpeBpS/Xgub4V4MivNeEZvkXhaSn14Zm+NeGpviXhub5V4dkuleJZCDXiuOdF4tkMheL5HRXjCLQV4zkqBeNpvmXjeb5144j+1ePZZYXkCb6l5Dm+leRJvoXkWVnV5Hm/FeTJZ5Xk6b615Um+1eVZaLXleb7F5fm+5eYZSmXmKb715jlbxeZJvwXnKKsV5zlb1edJROXnWb8l52m/NeeI1LXnmKsl56m/Ree4y2XnyXY159l0hefor0Xn+b9l6BkqFeg41MXoSPr16HlN1eio+wXo+PmF6VkupelpX3XpeTWF6ajU1enJV7XqCb916mk3hep43AXquMyV6tkutetYjBXraPjl63jU5euJdmXsGb+F7Cm/lew5RwXsib+l7Jl/VeyphMXs+b/F7Qm/te04pmXtacQF7anENe25xEXt2cQl7flV9e4I+xXuGcRl7inEVe45xBXuicR17pnEhe7JxJXvCcTF7xnEpe85xLXvScTV72iYRe95LsXvicTl76jJpe+4n0XvyUVV7+nE9e/5P5XwGV2V8DnFBfBJhNXwmcUV8Klb5fC5xUXwyYn18NmK9fD46uXxCT818RnFVfE4t8XxSSol8ViPhfFpxWXxeVpF8YjU9fG5JvXx+S7V8llu1fJoy3XyeMyl8pnFdfLZxYXy+cXl8xjuNfNZKjXzeLrV84nFlfPJVKXz6SZV9BnFpfSJxbX0qLrl9MnFxfTpxdX1GcX19Tk5ZfVpxgX1ecYV9ZnGJfXJxTX12cUl9hnGNfYoxgX2aVRl9pjcpfapVWX2uSpF9slWpfbZxkX3CPsl9xiWVfc5xlX3ecZl95lvBffJTeX3+caV+AiZ1fgZCqX4KcaF+DnGdfhIxhX4WR0l+HnG1fiJxrX4qcal+Ll6VfjIzjX5CPmV+RnGxfkpNrX5OPXV+Xk75fmJxwX5mcb1+enG5foJxxX6GM5F+onHJfqZWcX6qPel+tnHNfrpT3X7OTv1+0kqVfuZNPX7ycdF+9i0pfw5BTX8WVS1/MivVfzZRFX9acdV/XjnVf2JZZX9mWWl/ciZ5f3Zx6X+CSiV/knHdf64n1X/Ccq1/xnHlf9ZRPX/iceF/7nHZf/Y2aX/+cfGAOnINgD5yJYBCcgWASk3tgFZyGYBaVfGAZnIBgG5yFYByX5WAdjnZgIJHTYCGcfWAli31gJpyIYCeQq2AoiYVgKZyCYCqJ9mArnIdgL4uvYDGchGA6nIpgQZyMYEKclmBDnJRgRpyRYEqckGBLl/ZgTZySYFCLsGBSjVBgVY+aYFmcmWBanItgX5yPYGCcfmBiifhgY5yTYGSclWBlknBgaI2mYGmJtmBqnI1ga5yYYGycl2Bti7Fgb5GnYHCKhmB1jGJgd5yOYIGcmmCDnJ1ghJyfYImOu2CLnKVgjJLuYI2cm2CSnKNglIn3YJacoWCXnKJgmpyeYJucoGCfjOVgoJdJYKOKs2CmiXhgp5ykYKmUWWCqiKtgspTfYLOce2C0nKpgtZyuYLaW42C4nKdgvJOJYL2crGDFj+5gxpytYMeT1WDRmGZg05ypYNicr2DajZtg3JDJYN+I0mDgnKhg4ZymYOOReWDnnJxg6I5TYPCRxGDxnLtg85F6YPSctmD2nLNg95y0YPmO5GD6nLdg+5y6YQCctWEBj0RhA5y4YQacsmEIlvphCZb5YQ2cvGEOnL1hD4jTYRWcsWEai/BhG4ikYR+KtGEhnLlhJ5zBYSicwGEsnMVhNJzGYTycxGE9nMdhPpy/YT+cw2FCnMhhRJzJYUecvmFIjpxhSpzCYUuR1GFMjVFhTZywYU6QVGFTnNZhVZXnYViczGFZnM1hWpzOYV2c1WFfnNRhYpadYWOKtWFlnNJhZ4xkYWiKU2FrnM9hbpe2YW+c0WFwiNRhcZzTYXOcymF0nNBhdZzXYXaMY2F3nMthfpd8YYKXSmGHnNphipzeYY6RnmGQl/dhkZzfYZSc3GGWnNlhmZzYYZqc3WGkla5hp5OyYamMZWGrnOBhrJzbYa6c4WGyjJthtomvYbqc6WG+irZhw5znYcac6GHHjadhyJzmYcmc5GHKnONhy5zqYcyc4mHNnOxh0In5YeOc7mHmnO1h8pKmYfSc8WH2nO9h95zlYfiMnGH6nPBh/Jz0Yf2c82H+nPVh/5zyYgCc9mIInPdiCZz4YgqV6GIMnPpiDZz5Yg6PXmIQkKxiEYnkYhKJ+mIUnPtiFoi9YhqQymIbnPxiHebBYh6dQGIfjIFiIZ1BYiaQ7WIqnUJiLp1DYi+LWWIwnURiMp1FYjOdRmI0kdViOIzLYjuW32I/lltiQI+KYkGdR2JHkO5iSOe7YkmU4GJLjuhiTY3LYk6dSGJTkcViVZWlYliR72JbnUtiXp1JYmCdTGJjnUpiaJ1NYm6Vr2JxiLVidpV9YnmU4WJ8nU5ifp1RYn+Ps2KAi1pigp1PYoOdVmKEj7RiiZ1QYoqUY2KRl31ikp1SYpOdU2KUnVdilZOKYpadVGKXjVJimJDcYpudZWKclLJinpHwYquU4mKsnatisZX4YrWS72K5lpViu51aYryJn2K9kopiwp1jYsWSU2LGnV1ix51kYsidX2LJnWZiyp1iYsydYWLNlI9iz51bYtCJ+2LRnVli0ouRYtOR8WLUnVVi151YYtiNU2LZkNli24+1YtydYGLdlHFi4IuSYuGKZ2Lsiodi7ZBAYu6daGLvnW1i8Z1pYvOMnWL1nW5i9o5BYveNiWL+j0Vi/51cYwGOnWMCnWtjB453YwidbGMJiMJjDJ1nYxGSp2MZi5NjH4uyYyedamMoiKVjK43BYy+QVWM6kvBjPZTSYz6dcGM/kX1jSZGoY0yOSmNNnXFjT51zY1Cdb2NVld9jV5K7Y1yRe2NnlfljaI7MY2mdgGNrnX5jbpCYY3KMnmN2nXhjd4+3Y3qT5mN7lFBjgJ12Y4ORfGOIjvZjiZ17Y4yPtmOOnXVjj516Y5KUcmOWnXRjmIxAY5uKfGOfnXxjoJepY6GNzGOiklRjo515Y6WQ2mOnjVRjqJCEY6mJhmOqkVtjq513Y6yLZGOyjGZjtJLNY7WdfWO7kX5jvp2BY8Cdg2PDkbVjxJ2JY8adhGPJnYZjz5VgY9CS8WPSnYdj1pdLY9qXZ2Pbirdj4YisY+OdhWPpnYJj7or2Y/SJh2P2nYhj+pdoZAadjGQNkblkD52TZBOdjWQWnYpkF52RZBydcmQmnY5kKJ2SZCyUwGQtk4tkNJ2LZDadj2Q6jGdkPo3vZEKQ22ROnZdkWJNFZGedlGRploBkb52VZHadlmR4lsxkepCgZIOMgmSInZ1kko5UZJOdmmSVnZlkmpRRZJ6Ts2Skk1BkpZ2bZKmdnGSrlY9krZRkZK6OQmSwkO9kspZvZLmKaGS7naNkvJ2eZMGXaWTCnaVkxZ2hZMedomTNkYBk0p2gZNSdXmTYnaRk2p2fZOCdqWThnapk4pNGZOOdrGTmjkNk552nZOyLW2Tvna1k8Z2mZPKdsWT0nbBk9p2vZPqdsmT9nbRk/o/vZQCds2UFnbdlGJ21ZRydtmUdnZBlI525ZSSduGUqnZhlK526ZSydrmUvjnhlNJ27ZTWdvGU2nb5lN529ZTidv2U5ifxlO41VZT6V+mU/kK1lRYzMZUidwWVNncRlT5VxZVGLfmVVncNlVp3CZVeUc2VYncVlWYuzZV2dx2VencZlYoq4ZWOOVWVmk9ZlbIxoZXCQlGVynchldJCuZXWTR2V3lX5leJ3JZYKdymWDnctlh5W2ZYibfGWJkMRljJVrZY6N1mWQlONlkZTBZZeTbGWZl79lm53NZZyOzmWfnc5loYi0ZaSL0mWlkMtlp5WAZaudz2WsjmFlrZJmZa+OemWwkFZlt53QZbmV+2W8iZdlvY57ZcGd02XDndFlxJ3UZcWXt2XGndJly5D5Zcyd1WXPkbBl0p3WZdeK+GXZndhl253XZeCd2WXhndpl4or5ZeWT+mXmklVl54uMZeiOfGXpkYFl7I97Ze2IrmXxndtl+omgZfud32YCjVZmA53eZgaNqWYHj7hmCp3dZgyPuWYOlr5mD42oZhOI1WYUkMxmHJ3kZh+Qr2YgiWZmJY90ZieWhmYojfBmLY+6Zi+QpWY0neNmNZ3hZjad4mY8kotmP55FZkGd6GZCjp5mQ41XZkSd5mZJnedmS5BXZk+d5WZSjk5mXZ3qZl6d6WZfne5mYp3vZmSd62ZmikFmZ53sZmid7WZplNNmbpWBZm+MaWZwnfBmdJCwZnaPu2Z6knFmgYvFZoOd8WaEnfVmh4nJZoid8maJnfRmjp3zZpGPi2aWkmdml4jDZpid9madnfdmopKoZqaX72arjmJmrpXpZrSWXGa4nkFmuZ35Zryd/Ga+nftmwZ34ZsSeQGbHk9xmyZ36ZtaeQmbZj4xm2p5DZtyXambdlJhm4J5EZuaeRmbpnkdm8J5IZvKLyGbziWdm9I1YZvWeSWb3nkpm+I+RZvmRgmb8mdZm/ZFdZv6RXGb/kdZnAI3FZwOY8GcIjI5nCZdMZwuV/GcNlZ5nD55LZxSN8WcVkr1nFp5MZxeYTmcbll1nHZKpZx6eTWcfivpnJp5OZyeeT2colthnKpaiZyuWlmcslntnLY5EZy6eUWcxjulnNJZwZzaeU2c3nlZnOJ5VZzqK92c9i4BnP55SZ0GeVGdGnldnSZCZZ06Xm2dPiMdnUI3eZ1GRumdTjttnVo/xZ1meWmdck21nXp5YZ1+RqWdgnllnYY/wZ2KW22djnltnZJ5cZ2WXiGdqnmFnbY1ZZ2+UdGdwnl5ncZOMZ3Kd3GdzneBndYtuZ3eUZmd8nmBnfo+8Z3+UwmeFnmZnh5T4Z4meXWeLnmNnjJ5iZ5CQzWeVlo1nl5fRZ5qWh2ecicpnnY59Z6CYZ2ehnmVnopCVZ6aeZGepnl9nr4zNZ7Oea2e0nmlntonLZ7eeZ2e4nm1nuZ5zZ8GRxmfElb9nxp51Z8qVQWfOnnRnz5SQZ9CWXmfRirln05D1Z9SPX2fYktFn2pdNZ92ecGfenm9n4p5xZ+SebmfnnnZn6Z5sZ+yeamfunnJn755oZ/GSjGfzlvZn9I7EZ/WN8mf7jbhn/paPZ/+KYGgCksxoA5PIaASJaGgTkPBoFpCyaBeMSWgennhoIY1aaCKKnGgpnnpoKoqUaCuegWgynn1oNJDxaDiKamg5japoPIppaD2NzWhAnntoQYyFaEKMamhDk41oRp55aEiIxGhNnnxoTp5+aFCLy2hRjEtoU4q6aFSLamhZnoJoXI33aF2WkWhfjlZoY56DaGeVT2h0no9odomxaHeehGh+npVof56FaIGXwGiDnoxohZR+aI2elGiPnodok4iyaJSeiWiXjVtom56LaJ2eimifnoZooJ6RaKKPvWimmutop4zmaKiXnGitnohor5LyaLCKQmixjatos56AaLWekGi2ioFouZ6OaLqekmi8k45oxIr8aMaesGjJlsdoyp6XaMuK+2jNnp5o0pZfaNSen2jVnqFo156laNiemWjakklo35OPaOCeqWjhnpxo456maOeeoGjukFho756qaPKQsWj5nqho+oq7aQCYb2kBnpZpBJ6kaQWI1mkInphpC5a4aQyenWkNkEFpDpLFaQ+ek2kSnqNpGZCaaRqerWkbipFpHIyfaSGer2kinpppI56uaSWep2kmnptpKJ6raSqerGkwnr1pNJPMaTaeomk5nrlpPZ67aT+S1mlKl2tpU5WWaVSetmlVkchpWZ68aVqRXmlcnrNpXZ7AaV6ev2lgk+1pYZ6+aWKT6GlqnsJpa561aW2Lxmlunrhpb498aXOUgGl0nrppdYvJaXeesml4nrRpeZ6xaXyYT2l9inlpfp63aYGewWmCilRpio3laY6JfGmRntJplJhQaZWe1WmbkFlpnJ7UaaCe02mnntBprp7EabGe4WmynsNptJ7Wabuezmm+nslpv57GacGex2nDns9px+qgacqezGnLjVxpzJLGac2RhGnOnspp0J7FadOeyGnYl2xp2ZaKad2ezWnentdp557faeie2GnrnuVp7Z7jafKe3mn5nt1p+5LOaf2RhWn/nttqAp7ZagWe4GoKnuZqC5Tzagye7GoSnudqE57qahSe5GoXkpRqGZVXahue2moenuJqH4++aiGWzWoinvZqI57paimMoGoqiaFqK4p+ai6e0Wo1j79qNp7uajie9Wo5jvdqOoqSaj2STWpEnutqR57wakie9GpLi7RqWItralme8mpfi0BqYZPJamKe8WpmnvNqcp7tanie72p/ioBqgJJoaoSe+mqNnvhqjoznapCe92qXn0BqnJ53aqCe+Wqinvtqo578aqqfS2qsn0dqrp6NarOfRmq4n0Vqu59CasGe6GrCn0Rqw59DatGfSWrTmEVq2p9MatuL+Wren0hq359KauiUpWrqn01q+p9RavufTmsEl5NrBZ9Pawqe3GsSn1JrFp9Tax2JVGsfn1VrIIyHayGOn2sji9NrJ4miazKXfms3n1drOJ9WazmfWWs6i1xrPYvUaz6KvGtDn1xrR59ba0mfXWtMicxrTpJWa1CfXmtTir1rVJ9ga1mfX2tbn2FrX59ia2GfY2tijn5rY5Cza2SNn2tmlZBraZXga2qYY2tvjpVrc43Oa3SX8Gt4n2RreZ9la3uOgGt/n2ZrgJ9na4OfaWuEn2hrhpZ3a4mPfWuKjupri45ja42famuVn2xrlpBCa5ifa2uen21rpJ9ua6qfb2urn3Brr59xa7Gfc2uyn3Jrs590a7SJo2u1kmlrt591a7qORWu7imtrvJ92a7+TYWvAmsprxYtCa8afd2vLn3hrzZXqa86WiGvSk8Vr0595a9SU5GvYlPlr25bRa9+femvrn3xr7J97a++ffmvzn31sCJ+BbA+OgWwRlq9sE5+CbBSfg2wXi0NsG5+EbCOfhmwkn4VsNJCFbDeVWGw4iWlsPpTDbECS82xBj2BsQouBbE6UxGxQjqxsVZ+IbFeKvmxaiZhsXZPwbF6fh2xfjV1sYJJybGKfiWxon5Fsap+KbHCRv2xyi4Jsc5+SbHqMiGx9i0Rsfp+QbIGfjmyCn4tsg5eAbIiSvmyMk9dsjZ+MbJCflGySn5Nsk4xCbJaJq2yZjblsmp+NbJufj2yhlnZsopHybKuWl2yun5xssZ+dbLOJzWy4laZsuZb7bLqfn2y7jqFsvI/AbL2fmGy+n55sv4mIbMGLtWzEn5VsxZ+abMmQ8mzKlJFszJTlbNOfl2zVlkBs15+ZbNmfomzbn6Bs3Z+bbOGWQWzilGds44uDbOWTRGzoko1s6p+jbO+foWzwkdds8Z+WbPOJam0Ll21tDJ+ubRKfrW0XkPRtGZ+qbRuXjG0ek7RtH5+kbSWSw20piWttKo1ebSufp20yj0ZtM5+sbTWfq202n6ZtOJ+pbTuKiG09n6htPpRobUGXrG1Ej/JtRZDzbVmftG1an7JtXJVsbWOfr21kn7FtZolZbWmNX21qmFFtbIpcbW6Vgm10l4Ftd4pDbXiQWm15n7NthZ+4bYiPwW2Ml09tjp+1bZOfsG2Vn7ZtmZfcbZuTk22ck8Btr4pVbbKJdG21n7xtuJ+/bbyXwW3Al4RtxZ/GbcafwG3Hn71ty5fS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hWmToIVqlZOFbeVKhXflUIV+5VGFgOVEhYSUloWH5U6FiOVGhYrlSIWQ5VKFkeVHhZTlS4WXiZKFmZPjhZvlTIWc5U+FpOVFhaaRRYWo5UmFqY5GhaqQZIWrjE+FrJbyha6W94Wvj5KFueVWhbrlVIXBmG2FyeVThc2XlYXP5VWF0OVXhdXlWIXc5VuF3eVZheSToYXl5VqF6ZTLherlTYX3j5OF+eVchfrlYYX7kZSF/uVghgLlQYYG5WKGB5FohgrlXYYL5V+GE+VehhafUIYXn0GGGuVkhiLlY4Ytl5aGL+G6hjDlZYY/5WaGTeVnhk6M1YZQi3OGVOVphlWZfIZai5WGXJe4hl6L8YZf5WqGZ+VrhmuSjoZx5WyGeZP4hnuIuIaKieGGi+VxhozlcoaT5W2GlY5chqPlboaklGGGqeVvhqrlcIar5XqGr+V0hrDld4a25XOGxOV1hsbldobHjtaGyeV4hsuSYIbNjHWGzophhtTle4bZil6G2+WBht7lfIbf5YCG5JS4hunlfYbs5X6G7ZVnhu6U2Ibv5YKG+JH7hvnljIb75YiG/onphwDlhocClkmHA+WHhwblhIcI5YWHCeWKhwrljYcN5YuHEeWJhxLlg4cYkneHGuWUhxyWqIcl5ZKHKeWThzTljoc35ZCHO+WRhz/lj4dJkOSHS5hYh0zlmIdO5ZmHU+Wfh1WQSYdX5ZuHWeWeh1/llodg5ZWHY+Wgh2aJ2odo5ZyHauWhh27lnYd05ZqHdpKxh3jll4d/lIiHguWlh42XWoef5aSHouWjh6vlrIev5aaHs+Wuh7qXhoe75bGHveWoh8DlqYfE5a2HxuWwh8flr4fL5aeH0OWqh9Llu4fg5bSH7+Wyh/Lls4f25biH9+W5h/mKSYf7i2GH/uW3iAXloogN5baIDuW6iA/ltYgR5byIFeW+iBblvYgh5cCIIuW/iCPleYgn5cSIMeXBiDblwog55cOIO+XFiECMjIhC5ceIROXGiEaPT4hMjXOITZ+liFLlyIhTj3CIV4pYiFnlyYhbiXGIXY/ViF7lyohhjXSIYuXLiGOI34holVyIa+XMiHCQiohy5dOIdeXQiHeSj4h95dGIfuXOiH+L3IiB5c2IguXUiIiMVYiLkdyIjeXaiJLl1oiWkbOIl+XViJnl2Iie5c+IouXZiKTl24irlO2IruXX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ljKWaJY7kWqWP4iilkCRyZZC6JiWRJWNlkvom5ZM6JmWTY1+lk/ompZQjMCWW5XDllzonZZd6J+WXuiell/ooJZiiUCWY5B3lmSPnJZliteWZuihlmqUhpZs6KOWcIlBlnLoopZzksKWdZfLlnaTqZZ36JyWeJeklnqMr5Z9l3qWhYv3loaXspaIjEeWipHglovkQJaN6KSWjopLlo+Qj5aUinWWleimlpfop5aY6KWWmYyElpuN25acj+GWoIlClqOX15an6KmWqOeslqroqJaw6KyWseiqlrLoq5a06K2WtuiulreX6pa46K+WueiwlruQx5a8lLmWwJCdlsGK5ZbEl1mWxYnrlsaPV5bHjNmWyeizlsvospbMjpOWzei0ls7osZbRjkeW1ei4ltblq5bZmdSW25CXltzotpbil6OW45PvluiJSpbqkOGW6460lvCVtZbyiV+W9pfrlveXi5b56LmW+5NklwCO+ZcE6LqXBui7lweQa5cI6LyXCpfslw3ot5cO6L6XD+jAlxHov5cT6L2XFujBlxnowpcckZqXHonglyTow5cnlraXKujElzDoxZcymEmXOJ5Qlznoxpc96MeXPujIl0LozJdE6MmXRujKl0joy5dJ6M2XUpDCl1aW9ZdZkMOXXOjOl16U8Zdg6M+XYepyl2KWypdk6NCXZujRl2jo0pdpinaXa+jUl22QeJdx6NWXdIxDl3no1pd66NqXfOjYl4Ho2ZeEipOXhejXl4bo25eL6NyXjYjGl4/o3ZeQ6N6XmI/il5zo35egi2aXo+jil6bo4Zeo6OCXq+aRl62V2pez6OOXtOjkl8Po5ZfG6OaXyOjnl8vo6JfTitiX3Ojpl+3o6pfulEKX8ujsl/OJuZf16O+X9ujul/uJQ5f/i7+YAZXFmAKSuJgDjaCYBY2AmAaPh5gIkHuYDOjxmA/o8JgQl2GYEYrmmBKU0JgTk9qYF5CcmBiXzJgajHqYIej0mCTo85gslmqYLZOqmDSJb5g36PWYOOjymDuVcJg8l4qYPej2mEbo95hL6PmYTJHomE2KephOinuYT+j4mFSK55hVjLCYWIromFuTXphel96YZ4zamGvo+phv6PuYcOj8mHHpQJhz6UKYdOlBmKiVl5iq6UOYr+lEmLHpRZi26UaYw+lImMTpR5jG6UmY25TymNzjypjfkEiY4otRmOnpSpjr6UuY7ZmqmO6fWpjvlNGY8oj5mPSIuZj8jpSY/ZZPmP6P/JkD6UyZBZbdmQnpTZkKl3uZDIlhmRCOYJkS6U6ZE4nsmRTpT5kY6VCZHelSmR7pU5kg6VWZIelRmSTpVJkoitmZLOlWmS7pV5k96ViZPulZmULpWplF6VyZSelbmUvpXplM6WGZUOldmVHpX5lS6WCZVelimVeLwJmWjvGZl+ljmZjpZJmZjYGZpellmaiKXZmslG6Zrelmma7pZ5mzknmZtJPpmbzpaJnBlJ2ZxJHKmcWJd5nGi+yZyIvtmdCSk5nR6W2Z0ovumdWJ7ZnY6WyZ2+lqmd3pa5nf6WmZ4ul3me3pbpnu6W+Z8elwmfLpcZn46XOZ++lymf+PeJoB6XSaBel2mg6LUpoP6XWaEpGbmhOMsZoZ6XiaKJHLmivpeZowk6uaN+l6mj7pgJpA6X2aQul8mkPpfppF6XuaTemCmlXpgZpX6YSaWovBmlvpg5pf6YWaYumGmmTpiJpl6YeaaemJmmrpi5pr6YqaqI2cmq3pjJqw6Y2auIpbmrzpjprA6Y+axJCRms/pkJrR6ZGa0+mSmtTpk5rYjYKa3umUmt/plZri6Zaa4+mXmubpmJrqlK+a6+mamu2VRZru6Zua7+mZmvHpnZr06Zya9+memvvpn5sG6aCbGOmhmxrpopsf6aObIumkmyPppZsl6aabJ+mnmyjpqJsp6ambKumqmy7pq5sv6aybMZ9UmzLprZs74vabPItTm0GKQJtCjbCbQ+mvm0TprptFlqObTemxm07psptP6bCbUemzm1SWgptY6bSbWoubm2+YRJt06bWbg+m3m46IvJuR6bibkpWpm5PptpuW6bmbl+m6m5/pu5ug6bybqOm9m6qWjpurjkybrY34m66RTpu06b6buenBm8Dpv5vG6cKbyYzvm8rpwJvP6cOb0enEm9LpxZvU6cmb1o5Jm9uR4pvh6cqb4unHm+Ppxpvk6cib6Ix+m/Dpzpvx6c2b8unMm/WIsZwE6dicBunUnAjp1ZwJ6dGcCunXnAzp05wNioKcEJhrnBLp1pwT6dKcFOnQnBXpz5wb6dqcIendnCTp3Jwl6ducLZVonC7p2ZwviPGcMOnenDLp4Jw5io+cOunLnDuJVpw+6eKcRunhnEfp35xIkkycUpaQnFeX2Jxa6eOcYOnknGfp5Zx26eaceOnnnOWSuZzn6eic6ZS1nOvp7Zzs6emc8OnqnPOWUJz0lsKc9pPOnQPp7p0G6e+dB5O8nQjp7J0J6eudDomonRLp950V6fadG4mVnR/p9J0j6fOdJunxnSiKm50q6fCdK46wnSyJp507jYOdPun6nT/p+Z1B6fidROn1nUbp+51I6fydUOpEnVHqQ51Z6kWdXIlMnV3qQJ1e6kGdYI2UnWGWt51k6kKdbJZRnW/qSp1y6kadeupLnYfqSJ2J6kedj4x7nZrqTJ2k6k2dqepOnavqSZ2v6fKdsupPnbSS35246lOduupUnbvqUp3B6lGdwupXncTqUJ3G6lWdz+pWndPqWZ3Z6lid5upbne3qXJ3v6l2d8phonfjqWp35kemd+o3rnf3qXp4a6l+eG+pgnh7qYZ516mKeeIyynnnqY5596mSef46tnoHqZZ6I6maei+pnnozqaJ6R6muekuppnpOYW56V6mqel5ftnp3qbJ6fl9mepeptnqaUnp6p6m6equpwnq3qcZ646m+euY2NnrqWy567loOevJv1nr6fgJ6/lpuexImpnszqc57Ni2+ezup0ns/qdZ7Q6nae0o2VntTqd57Y4NKe2ZbZntuR4Z7c6nie3ep6nt7qeZ7g6nue5ep8nujqfZ7v6n6e9OqAnvbqgZ736oKe+eqDnvvqhJ786oWe/eqGnwfqh58I6oifDpNDnxOM258V6oqfIJFsnyHqi58s6oyfO5VAnz7qjZ9K6o6fS+JWn07m2J9P6OufUuqPn1TqkJ9f6pKfYOqTn2HqlJ9il+6fY+qRn2bqlZ9n6pafauqYn2zql59y6pqfduqbn3fqmZ+Nl7Sfleqcn5zqnZ+d4nOfoOqe/wGBSf8DgZT/BIGQ/wWBk/8GgZX/CIFp/wmBav8KgZb/C4F7/wyBQ/8OgUT/D4Fe/xCCT/8RglD/EoJR/xOCUv8UglP/FYJU/xaCVf8Xglb/GIJX/xmCWP8agUb/G4FH/xyBg/8dgYH/HoGE/x+BSP8ggZf/IYJg/yKCYf8jgmL/JIJj/yWCZP8mgmX/J4Jm/yiCZ/8pgmj/KoJp/yuCav8sgmv/LYJs/y6Cbf8vgm7/MIJv/zGCcP8ygnH/M4Jy/zSCc/81gnT/NoJ1/zeCdv84gnf/OYJ4/zqCef87gW3/PIFf/z2Bbv8+gU//P4FR/0CBTf9BgoH/QoKC/0OCg/9EgoT/RYKF/0aChv9Hgof/SIKI/0mCif9Kgor/S4KL/0yCjP9Ngo3/ToKO/0+Cj/9QgpD/UYKR/1KCkv9TgpP/VIKU/1WClf9Wgpb/V4KX/1iCmP9Zgpn/WoKa/1uBb/9cgWL/XYFw/2EAof9iAKL/YwCj/2QApP9lAKX/ZgCm/2cAp/9oAKj/aQCp/2oAqv9rAKv/bACs/20Arf9uAK7/bwCv/3AAsP9xALH/cgCy/3MAs/90ALT/dQC1/3YAtv93ALf/eAC4/3kAuf96ALr/ewC7/3wAvP99AL3/fgC+/38Av/+AAMD/gQDB/4IAwv+DAMP/hADE/4UAxf+GAMb/hwDH/4gAyP+JAMn/igDK/4sAy/+MAMz/jQDN/44Azv+PAM//kADQ/5EA0f+SANL/kwDT/5QA1P+VANX/lgDW/5cA1/+YANj/mQDZ/5oA2v+bANv/nADc/50A3f+eAN7/nwDf/+OBUP/lgY8=",7070);const rt={shape:K.square,qrOptions:{typeNumber:k[0],errorCorrectionLevel:w.Q},cornersSquareOptions:{type:z.square},cornersDotOptions:{type:E.square},dotsOptions:{type:N.square}},st={shape:K.square,qrOptions:{typeNumber:k[0],mode:void 0,errorCorrectionLevel:w.Q},imageOptions:{mode:H.center,imageSize:.4,crossOrigin:void 0,margin:0,fill:{color:"rgba(255,255,255,1)"}},cornersSquareOptions:{type:z.dot,color:"#000000"},cornersDotOptions:{type:E.dot,color:"#000000"},dotsOptions:{type:N.verticalLine,color:"#000000",size:10},backgroundOptions:{color:"#FFFFFF"}},at={...st,dotsOptions:{...st.dotsOptions,type:N.rounded},cornersSquareOptions:{type:z.dot,color:"#000000"},cornersDotOptions:{type:E.dot,color:"#000000"}},lt={...st,dotsOptions:{...st.dotsOptions,type:N.dot},cornersSquareOptions:{type:z.dot,color:"#000000"},cornersDotOptions:{type:E.dot,color:"#000000"}},ht={...st,dotsOptions:{...st.dotsOptions,type:N.classy},cornersSquareOptions:{type:z.classy,color:"#000000"},cornersDotOptions:{type:E.classy,color:"#000000"}},dt={plain:rt,basic:st,rounded:at,dots:lt,classy:ht},ct=t=>"number"==typeof t&&!isNaN(t)&&isFinite(t),ut=(t,e)=>{const i=[];return Object.values(U).includes(t.type)||i.push({path:`${e}.type`,message:`Invalid gradient type. Must be one of: ${Object.values(U).join(", ")}`,value:t.type}),void 0===t.rotation||ct(t.rotation)||i.push({path:`${e}.rotation`,message:"Rotation must be a valid number",value:t.rotation}),!t.colorStops||!Array.isArray(t.colorStops)||t.colorStops.length<2?i.push({path:`${e}.colorStops`,message:"Gradient must have at least 2 color stops",value:t.colorStops}):t.colorStops.forEach(((t,o)=>{(!ct(t.offset)||t.offset<0||t.offset>1)&&i.push({path:`${e}.colorStops[${o}].offset`,message:"Color stop offset must be between 0 and 1",value:t.offset}),(t=>{if(new Set(["black","white","red","green","blue","yellow","purple","gray","grey","cyan","magenta","lime","pink","teal","brown","orange"]).has(t.toLowerCase()))return!0;if(/^#([A-Fa-f0-9]{3}){1,2}$/.test(t))return!0;if(/^#([A-Fa-f0-9]{4}){1,2}$/.test(t))return!0;if(/^rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/.test(t)||/^rgba\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*([01]?\.?\d*)\)$/.test(t))return(t.match(/\d+/g)?.map(Number)||[]).every((t=>t>=0&&t<=255));return!1})(t.color)||i.push({path:`${e}.colorStops[${o}].color`,message:"Invalid color format",value:t.color})})),i};function pt(t){const e=[];let i={...st};return t.data&&"string"==typeof t.data||e.push({path:"data",message:"QR data is required and must be a string",value:t.data}),t.shape&&!Object.values(K).includes(t.shape)&&(e.push({path:"shape",message:`Invalid shape type. Must be one of: ${Object.values(K).join(", ")}`,value:t.shape}),t.shape=st.shape),t.qrOptions&&(t.qrOptions.typeNumber&&!Object.values(k).includes(t.qrOptions.typeNumber)&&(e.push({path:"qrOptions.typeNumber",message:"Invalid type number",value:t.qrOptions.typeNumber}),t.qrOptions.typeNumber=st.qrOptions?.typeNumber),t.qrOptions.errorCorrectionLevel&&!Object.values(w).includes(t.qrOptions.errorCorrectionLevel)&&(e.push({path:"qrOptions.errorCorrectionLevel",message:"Invalid error correction level",value:t.qrOptions.errorCorrectionLevel}),t.qrOptions.errorCorrectionLevel=st.qrOptions?.errorCorrectionLevel),t.qrOptions.mode&&!Object.values(y).includes(t.qrOptions.mode)&&(e.push({path:"qrOptions.mode",message:"Invalid mode",value:t.qrOptions.mode}),t.qrOptions.mode=st.qrOptions?.mode)),t.imageOptions&&(t.imageOptions.imageSize&&(!ct(t.imageOptions.imageSize)||t.imageOptions.imageSize<=0||t.imageOptions.imageSize>1)&&(e.push({path:"imageOptions.imageSize",message:"Image size must be between 0 and 1",value:t.imageOptions.imageSize}),t.imageOptions.imageSize=st.imageOptions?.imageSize),t.imageOptions.margin&&(!ct(t.imageOptions.margin)||t.imageOptions.margin<0)&&(e.push({path:"imageOptions.margin",message:"Margin must be a non-negative number",value:t.imageOptions.margin}),t.imageOptions.margin=st.imageOptions?.margin),t.imageOptions.mode&&!Object.values(H).includes(t.imageOptions.mode)&&(e.push({path:"imageOptions.mode",message:`Invalid image mode. Must be one of: ${Object.values(H).join(", ")}`,value:t.imageOptions.mode}),t.imageOptions.mode=st.imageOptions?.mode)),t.dotsOptions&&(t.dotsOptions.type&&!Object.values(N).includes(t.dotsOptions.type)&&(e.push({path:"dotsOptions.type",message:`Invalid dot type. Must be one of: ${Object.values(N).join(", ")}`,value:t.dotsOptions.type}),t.dotsOptions.type=st.dotsOptions?.type),t.dotsOptions.size&&(!ct(t.dotsOptions.size)||t.dotsOptions.size<=0)&&(e.push({path:"dotsOptions.size",message:"Dot size must be a positive number",value:t.dotsOptions.size}),t.dotsOptions.size=st.dotsOptions?.size),t.dotsOptions.gradient&&e.push(...ut(t.dotsOptions.gradient,"dotsOptions.gradient"))),t.cornersSquareOptions&&(t.cornersSquareOptions.type&&!Object.values(z).includes(t.cornersSquareOptions.type)&&(e.push({path:"cornersSquareOptions.type",message:`Invalid corner square type. Must be one of: ${Object.values(z).join(", ")}`,value:t.cornersSquareOptions.type}),t.cornersSquareOptions.type=st.cornersSquareOptions?.type),t.cornersSquareOptions.gradient&&e.push(...ut(t.cornersSquareOptions.gradient,"cornersSquareOptions.gradient"))),t.cornersDotOptions&&(t.cornersDotOptions.type&&!Object.values(E).includes(t.cornersDotOptions.type)&&(e.push({path:"cornersDotOptions.type",message:`Invalid corner dot type. Must be one of: ${Object.values(E).join(", ")}`,value:t.cornersDotOptions.type}),t.cornersDotOptions.type=st.cornersDotOptions?.type),t.cornersDotOptions.gradient&&e.push(...ut(t.cornersDotOptions.gradient,"cornersDotOptions.gradient"))),i={...i,...t},{warnings:e,validatedOptions:i}}const mt={classic:{primaryColor:"#000000",secondaryColor:"#000000",thirdColor:"#757575",backgroundColor:"#ffffff",dotShape:N.square,cornerSquareShape:z.square,cornerDotShape:E.square},modern:{primaryColor:"#4CAF50",secondaryColor:"#007fff",thirdColor:"#d81b60",backgroundColor:"#ffffff",dotShape:N.dot,cornerSquareShape:z.rounded,cornerDotShape:E.dot},rounded:{primaryColor:"#007bff",secondaryColor:"#4CAF50",thirdColor:"#d32f2f",backgroundColor:"#ffffff",dotShape:N.rounded,cornerSquareShape:z.rounded,cornerDotShape:E.dot},vibrant:{primaryColor:"#ff5722",secondaryColor:"#3f51b5",thirdColor:"#2e7d32",backgroundColor:"#ffffff",dotShape:N.rounded,cornerSquareShape:z.rounded,cornerDotShape:E.dot},pastel:{primaryColor:"#f8bbd0",secondaryColor:"#b2ebf2",thirdColor:"#00695c",backgroundColor:"#f5f5f5",dotShape:N.dot,cornerSquareShape:z.square,cornerDotShape:E.square},neon:{primaryColor:"#00e676",secondaryColor:"#ff1744",thirdColor:"#0288d1",backgroundColor:"#212121",dotShape:N.rounded,cornerSquareShape:z.rounded,cornerDotShape:E.dot},earthy:{primaryColor:"#795548",secondaryColor:"#4db6ac",thirdColor:"#8e24aa",backgroundColor:"#efebe9",dotShape:N.square,cornerSquareShape:z.square,cornerDotShape:E.square},sunset:{primaryColor:"#bf360c",secondaryColor:"#ab47bc",thirdColor:"#00796b",backgroundColor:"#fff3e0",dotShape:N.dot,cornerSquareShape:z.rounded,cornerDotShape:E.dot},oceanic:{primaryColor:"#0288d1",secondaryColor:"#26a69a",thirdColor:"#6a1b9a",backgroundColor:"#e0f7fa",dotShape:N.rounded,cornerSquareShape:z.square,cornerDotShape:E.dot},bold:{primaryColor:"#d50000",secondaryColor:"#6200ea",thirdColor:"#388e3c",backgroundColor:"#fafafa",dotShape:N.square,cornerSquareShape:z.rounded,cornerDotShape:E.square},limeGlow:{primaryColor:"#afb42b",secondaryColor:"#536dfe",thirdColor:"#c62828",backgroundColor:"#fffde7",dotShape:N.dot,cornerSquareShape:z.rounded,cornerDotShape:E.dot},twilight:{primaryColor:"#4527a0",secondaryColor:"#d84315",thirdColor:"#00796b",backgroundColor:"#eceff1",dotShape:N.rounded,cornerSquareShape:z.rounded,cornerDotShape:E.dot},meadow:{primaryColor:"#388e3c",secondaryColor:"#689f38",thirdColor:"#ad1457",backgroundColor:"#f1f8e9",dotShape:N.dot,cornerSquareShape:z.square,cornerDotShape:E.square},coral:{primaryColor:"#c2185b",secondaryColor:"#00838f",thirdColor:"#f57f17",backgroundColor:"#ffebee",dotShape:N.rounded,cornerSquareShape:z.rounded,cornerDotShape:E.dot},midnight:{primaryColor:"#5c6bc0",secondaryColor:"#fbc02d",thirdColor:"#00695c",backgroundColor:"#263238",dotShape:N.square,cornerSquareShape:z.square,cornerDotShape:E.square},citrus:{primaryColor:"#f57c00",secondaryColor:"#558b2f",thirdColor:"#6d4c41",backgroundColor:"#fff8e1",dotShape:N.dot,cornerSquareShape:z.rounded,cornerDotShape:E.dot},dusk:{primaryColor:"#6a1b9a",secondaryColor:"#e65100",thirdColor:"#2e7d32",backgroundColor:"#d7ccc8",dotShape:N.rounded,cornerSquareShape:z.square,cornerDotShape:E.dot},frost:{primaryColor:"#0277bd",secondaryColor:"#37474f",thirdColor:"#c2185b",backgroundColor:"#e1f5fe",dotShape:N.dot,cornerSquareShape:z.rounded,cornerDotShape:E.square},autumn:{primaryColor:"#d84315",secondaryColor:"#827717",thirdColor:"#4a148c",backgroundColor:"#efebe9",dotShape:N.square,cornerSquareShape:z.rounded,cornerDotShape:E.dot}},gt=/\.?0+$/;function ft(t){return t.toFixed(7).replace(gt,"")}function bt(t,...e){return t.reduce(((t,i,o)=>{let n="";return o&&(n=e[o-1]),"number"==typeof n&&(n=ft(n)),`${t}${n}${i}`}),"").trim().replace(/[\s\n\r]+/gim," ")}class Ot{get element(){return this._element}constructor(t,e){this.type=t,this.document=e}draw(t){let e;switch(this.type){case E.square:e=this.drawSquare;break;case E.heart:e=this.drawHeart;break;case E.rounded:e=this.drawRounded;break;case E.classy:e=this.drawClassy;break;case E.inpoint:e=this.drawInpoint;break;case E.outpoint:e=this.drawOutpoint;break;case E.dot:default:e=this.drawDot}e.call(this,t)}rotateFigure({x:t,y:e,size:i,rotation:o=0,draw:n}){const r=t+i/2,s=e+i/2;n(),this._element?.setAttribute("transform",`rotate(${ft(180*o/Math.PI)},${r},${s})`)}basicDot(t){const{size:e,x:i,y:o}=t;this.rotateFigure({...t,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","circle"),this._element.setAttribute("cx",ft(i+e/2)),this._element.setAttribute("cy",ft(o+e/2)),this._element.setAttribute("r",ft(e/2.1))}})}basicSquare(t){const{size:e,x:i,y:o}=t,n=e/11;this.rotateFigure({...t,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","rect"),this._element.setAttribute("x",ft(i+n)),this._element.setAttribute("y",ft(o+n)),this._element.setAttribute("width",ft(e-2*n)),this._element.setAttribute("height",ft(e-2*n))}})}basicHeart(t){const{size:e,x:i,y:o}=t;this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path");let n=!1,r=0;this._element.setAttribute("d",["M",1,.3262506,"c",0,.0383376,-.0064626,.0758377,-.0193751,.1125001,"s",-.0356247,.076875,-.0681248,.1206252,"c",-.0325,.0437499,-.0762503,.0931247,-.1312501,.1481249,"C",.7262502,.7625008,.6566626,.8279132,.5724999,.9037505,"L",.5,.9687506,"L",.4275001,.9037505,"C",.3433374,.8279132,.2737499,.7625005,.21875,.7075007,"C",.1637501,.6525008,.1199999,.6031258,.0874999,.5593758,"S",.0322876,.4754133,.0193751,.4387506,"S",0,.3645881,0,.3262506,"c",0,-.0783374,.0262499,-.1437498,.07875,-.1962499,"s",.1179124,-.07875,.1962499,-.07875,"c",.0433376,0,.0845875,.0091625,.12375,.0274999,"S",.4716623,.1229131,.5,.1562506,"c",.0283374,-.0333375,.0620874,-.0591625,.1012502,-.0775,"c",.0391627,-.0183375,.0804126,-.0274999,.12375,-.0274999,"c",.0783374,0,.1437497,.0262499,.1962501,.07875,"S",1,.2479131,1,.3262506,"z"].map((t=>"string"==typeof t?(r=0,n=t.toUpperCase()==t,t):(r++,t*=e,n&&(t+=r%2==1?i:o),ft(t)))).join(" "))}basicRounded(t){const{size:e,x:i,y:o}=t;this.rotateFigure({...t,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","rect"),this._element.setAttribute("x",ft(i)),this._element.setAttribute("y",ft(o)),this._element.setAttribute("width",ft(e)),this._element.setAttribute("height",ft(e)),this._element.setAttribute("rx",ft(e/4)),this._element.setAttribute("ry",ft(e/4))}})}basicClassy(t){const{size:e,x:i,y:o}=t,n=e/7;this.rotateFigure({...t,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("clip-rule","evenodd"),this._element.setAttribute("d",bt`M ${i} ${o+2.5*n} v ${2*n} a ${2.5*n} ${2.5*n}, 0, 0, 0, ${2.5*n} ${2.5*n} h ${4.5*n} v ${-4.5*n} a ${2.5*n} ${2.5*n}, 0, 0, 0, ${2.5*-n} ${2.5*-n} h ${-2*n} H ${i} z`)}})}basicInpoint(t){const{size:e,x:i,y:o}=t,n=e;this.rotateFigure({...t,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("clip-rule","evenodd"),this._element.setAttribute("d",bt`M ${i} ${o+n/2} v ${n/4} a ${n/4}, ${n/4} 0 0 0 ${n/4}, ${n/4} h ${n/4*3} v ${-n/4*3} a ${n/4}, ${n/4} 0 0 0 ${-n/4}, ${-n/4} h ${-n/2} a ${n/4}, ${n/4} 0 0 0 ${-n/4}, ${n/4} z`)}})}drawDot({x:t,y:e,size:i,rotation:o}){this.basicDot({x:t,y:e,size:i,rotation:o})}drawSquare({x:t,y:e,size:i,rotation:o}){this.basicSquare({x:t,y:e,size:i,rotation:o})}drawHeart({x:t,y:e,size:i,rotation:o}){this.basicHeart({x:t,y:e,size:i,rotation:o})}drawRounded({x:t,y:e,size:i,rotation:o}){this.basicRounded({x:t,y:e,size:i,rotation:o})}drawClassy({x:t,y:e,size:i,rotation:o}){this.basicClassy({x:t,y:e,size:i,rotation:o})}drawInpoint({x:t,y:e,size:i,rotation:o}){this.basicInpoint({x:t,y:e,size:i,rotation:o})}drawOutpoint({x:t,y:e,size:i,rotation:o}){this.basicInpoint({x:t,y:e,size:i,rotation:(o||0)+Math.PI})}}class kt{get element(){return this._element}get fill(){return this._fill}constructor(t,e){this.type=t,this.document=e}draw(t){let e;switch(this.type){case z.square:e=this.drawSquare;break;case z.rounded:e=this.drawExtraRounded;break;case z.classy:e=this.drawClassy;break;case z.outpoint:e=this.drawOutpoint;break;case z.inpoint:e=this.drawInpoint;break;case z.dot:default:e=this.drawDot}e.call(this,t)}rotateFigure({x:t,y:e,size:i,rotation:o=0,draw:n}){const r=t+i/2,s=e+i/2;n(),this._element?.setAttribute("transform",`rotate(${ft(180*o/Math.PI)},${r},${s})`),this._fill?.setAttribute("transform",`rotate(${ft(180*o/Math.PI)},${r},${s})`)}basicDot(t){const{size:e,x:i,y:o}=t,n=e/8,r=.5*e,s=r-n;this.rotateFigure({...t,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("clip-rule","evenodd"),this._element.setAttribute("d",bt`M ${i+e/2} ${o+(e/2-r)} a ${r} ${r} 0 1 0 0.1 0 z m 0 ${n} a ${s} ${s} 0 1 1 -0.1 0 Z`),this._fill=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._fill.setAttribute("clip-rule","evenodd"),this._fill.setAttribute("d",bt`M ${i+e/2} ${o+(e/2-(r+n))} a ${r+n} ${r+n} 0 1 0 0.1 0 z`)}})}basicSquare(t){const{size:e,x:i,y:o}=t,n=e/7;this.rotateFigure({...t,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("clip-rule","evenodd"),this._element.setAttribute("d",bt`M ${i} ${o} v ${e} h ${e} v ${-e} z M ${i+n} ${o+n} h ${e-2*n} v ${e-2*n} h ${2*n-e} z`),this._fill=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._fill.setAttribute("clip-rule","evenodd"),this._fill.setAttribute("d",bt`M ${i-n} ${o-n} h ${e+2*n} v ${e+2*n} h ${-e-2*n} z`)}})}basicExtraRounded(t){const{size:e,x:i,y:o}=t,n=e/7;this.rotateFigure({...t,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("clip-rule","evenodd"),this._element.setAttribute("d",bt`M ${i} ${o+2.5*n} v ${2*n} a ${2.5*n} ${2.5*n}, 0, 0, 0, ${2.5*n} ${2.5*n} h ${2*n} a ${2.5*n} ${2.5*n}, 0, 0, 0, ${2.5*n} ${2.5*-n} v ${-2*n} a ${2.5*n} ${2.5*n}, 0, 0, 0, ${2.5*-n} ${2.5*-n} h ${-2*n} a ${2.5*n} ${2.5*n}, 0, 0, 0, ${2.5*-n} ${2.5*n} z M ${i+2.5*n} ${o+n} h ${2*n} a ${1.5*n} ${1.5*n}, 0, 0, 1, ${1.5*n} ${1.5*n} v ${2*n} a ${1.5*n} ${1.5*n}, 0, 0, 1, ${1.5*-n} ${1.5*n} h ${-2*n} a ${1.5*n} ${1.5*n}, 0, 0, 1, ${1.5*-n} ${1.5*-n} v ${-2*n} a ${1.5*n} ${1.5*n}, 0, 0, 1, ${1.5*n} ${1.5*-n} z`),this._fill=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._fill.setAttribute("clip-rule","evenodd"),this._fill.setAttribute("d",bt`M ${i-n} ${o+2.5*n} v ${2*n} a ${3.5*n} ${3.5*n}, 0, 0, 0, ${3.5*n} ${3.5*n} h ${2*n} a ${3.5*n} ${3.5*n}, 0, 0, 0, ${3.5*n} ${3.5*-n} v ${-2*n} a ${3.5*n} ${3.5*n}, 0, 0, 0, ${3.5*-n} ${3.5*-n} h ${-2*n} a ${3.5*n} ${3.5*n}, 0, 0, 0, ${3.5*-n} ${3.5*n} z`)}})}basicClassy(t){const{size:e,x:i,y:o}=t,n=e/7;this.rotateFigure({...t,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("clip-rule","evenodd"),this._element.setAttribute("d",bt`M ${i} ${o+2.5*n} v ${2*n} a ${2.5*n} ${2.5*n}, 0, 0, 0, ${2.5*n} ${2.5*n} h ${4.5*n} v ${-4.5*n} a ${2.5*n} ${2.5*n}, 0, 0, 0, ${2.5*-n} ${2.5*-n} h ${-2*n} H ${i} z M ${i+2.5*n} ${o+n} h ${2*n} a ${1.5*n} ${1.5*n}, 0, 0, 1, ${1.5*n} ${1.5*n} v ${3.5*n} h ${-3.5*n} a ${1.5*n} ${1.5*n}, 0, 0, 1, ${1.5*-n} ${1.5*-n} v ${-3.5*n} z`),this._fill=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._fill.setAttribute("clip-rule","evenodd"),this._fill.setAttribute("d",bt`M ${i+.5*n} ${o-n} h ${4*n} a ${3.5*n} ${3.5*n}, 0, 0, 1, ${3.5*n} ${3.5*n} v ${5.5*n} h ${-5.5*n} a ${3.5*n} ${3.5*n}, 0, 0, 1, ${3.5*-n} ${3.5*-n} v ${-5.5*n} z`)}})}basicInpoint(t){const{size:e,x:i,y:o}=t,n=e/7;this.rotateFigure({...t,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("clip-rule","evenodd"),this._element.setAttribute("d",bt`M ${i} ${o+2.5*n} v ${2*n} a ${2.5*n} ${2.5*n}, 0, 0, 0, ${2.5*n} ${2.5*n} h ${4.5*n} v ${-4.5*n} a ${2.5*n} ${2.5*n}, 0, 0, 0, ${2.5*-n} ${2.5*-n} h ${-2*n} a ${2.5*n} ${2.5*n}, 0, 0, 0, ${2.5*-n} ${2.5*n} z M ${i+2.5*n} ${o+n} h ${2*n} a ${1.5*n} ${1.5*n}, 0, 0, 1, ${1.5*n} ${1.5*n} v ${3.5*n} h ${-3.5*n} a ${1.5*n} ${1.5*n}, 0, 0, 1, ${1.5*-n} ${1.5*-n} v ${-2*n} a ${1.5*n} ${1.5*n}, 0, 0, 1, ${1.5*n} ${1.5*-n} z`),this._fill=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._fill.setAttribute("clip-rule","evenodd"),this._fill.setAttribute("d",bt`M ${i+.5*n} ${o-n} h ${4*n} a ${3.5*n} ${3.5*n}, 0, 0, 1, ${3.5*n} ${3.5*n} v ${5.5*n} h ${-5.5*n} a ${3.5*n} ${3.5*n}, 0, 0, 1, ${3.5*-n} ${3.5*-n} v ${-2*n} a ${3.5*n} ${3.5*n}, 0, 0, 1, ${3.5*n} ${3.5*-n} z`)}})}drawDot({x:t,y:e,size:i,rotation:o}){this.basicDot({x:t,y:e,size:i,rotation:o})}drawSquare({x:t,y:e,size:i,rotation:o}){this.basicSquare({x:t,y:e,size:i,rotation:o})}drawExtraRounded({x:t,y:e,size:i,rotation:o}){this.basicExtraRounded({x:t,y:e,size:i,rotation:o})}drawClassy({x:t,y:e,size:i,rotation:o}){this.basicClassy({x:t,y:e,size:i,rotation:o})}drawInpoint({x:t,y:e,size:i,rotation:o}){this.basicInpoint({x:t,y:e,size:i,rotation:o})}drawOutpoint({x:t,y:e,size:i,rotation:o}){this.basicInpoint({x:t,y:e,size:i,rotation:(o||0)+Math.PI})}}class wt{get element(){return this._element}constructor(t,e){this.type=t,this.document=e}draw(t){let e;switch(this.type){case N.dot:e=this.drawDot;break;case N.randomDot:e=this.drawRandomDot;break;case N.classy:e=this.drawClassy;break;case N.classyRounded:e=this.drawClassyRounded;break;case N.rounded:e=this.drawRounded;break;case N.verticalLine:e=this.drawVerticalLine;break;case N.horizontalLine:e=this.drawHorizontalLine;break;case N.extraRounded:e=this.drawExtraRounded;break;case N.diamond:e=this.drawDiamond;break;case N.smallSquare:e=this.drawSmallSquare;break;case N.tinySquare:e=this.drawTinySquare;break;case N.star:e=this.drawStar;break;case N.plus:e=this.drawPlus;break;case N.square:default:e=this.drawSquare}e.call(this,t)}rotateFigure({x:t,y:e,size:i,rotation:o=0,draw:n}){const r=t+i/2,s=e+i/2;n(),this._element?.setAttribute("transform",`rotate(${ft(180*o/Math.PI)},${r},${s})`)}basicDot(t){const{size:e,x:i,y:o}=t;this.rotateFigure({...t,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","circle"),this._element.setAttribute("cx",ft(i+e/2)),this._element.setAttribute("cy",ft(o+e/2)),this._element.setAttribute("r",ft(e/2))}})}basicSquare(t){const{size:e,x:i,y:o}=t;this.rotateFigure({...t,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","rect"),this._element.setAttribute("x",ft(i)),this._element.setAttribute("y",ft(o)),this._element.setAttribute("width",ft(e)),this._element.setAttribute("height",ft(e))}})}basicSideRounded(t){const{size:e,x:i,y:o}=t;this.rotateFigure({...t,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("d",bt`M ${i} ${o} v ${e} h ${e/2} a ${e/2} ${e/2}, 0, 0, 0, 0 ${-e} z`)}})}basicCornerRounded(t){const{size:e,x:i,y:o}=t;this.rotateFigure({...t,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("d",bt`M ${i} ${o} v ${e} h ${e} v ${-e/2} a ${e/2} ${e/2}, 0, 0, 0, ${-e/2} ${-e/2} z`)}})}basicCornerExtraRounded(t){const{size:e,x:i,y:o}=t;this.rotateFigure({...t,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("d",bt`M ${i} ${o} v ${e} h ${e} a ${e} ${e}, 0, 0, 0, ${-e} ${-e} z`)}})}basicCornersRounded(t){const{size:e,x:i,y:o}=t;this.rotateFigure({...t,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("d",bt`M ${i} ${o} v ${e/2} a ${e/2} ${e/2}, 0, 0, 0, ${e/2} ${e/2} h ${e/2} v ${-e/2} a ${e/2} ${e/2}, 0, 0, 0, ${-e/2} ${-e/2} z`)}})}drawDot({x:t,y:e,size:i}){this.basicDot({x:t,y:e,size:i,rotation:0})}drawRandomDot({x:t,y:e,size:i}){const o=.25*Math.random()+.75;this.basicDot({x:t,y:e,size:i*o,rotation:0})}drawSquare({x:t,y:e,size:i}){this.basicSquare({x:t,y:e,size:i,rotation:0})}drawSmallSquare({x:t,y:e,size:i}){const o=i;i=.7*o,t+=.15*o,e+=.15*o,this.basicSquare({x:t,y:e,size:i,rotation:0})}drawTinySquare({x:t,y:e,size:i}){const o=i;i=.6*o,t+=.35*o,e+=.35*o,this.basicSquare({x:t,y:e,size:i,rotation:0})}drawDiamond({x:t,y:e,size:i}){this.basicSquare({x:t,y:e,size:i,rotation:Math.PI/4})}drawRounded({x:t,y:e,size:i,getNeighbor:o}){const n=o?+o(-1,0):0,r=o?+o(1,0):0,s=o?+o(0,-1):0,a=o?+o(0,1):0,l=n+r+s+a;if(0!==l)if(l>2||n&&r||s&&a)this.basicSquare({x:t,y:e,size:i,rotation:0});else{if(2===l){let o=0;return n&&s?o=Math.PI/2:s&&r?o=Math.PI:r&&a&&(o=-Math.PI/2),void this.basicCornerRounded({x:t,y:e,size:i,rotation:o})}if(1===l){let o=0;return s?o=Math.PI/2:r?o=Math.PI:a&&(o=-Math.PI/2),void this.basicSideRounded({x:t,y:e,size:i,rotation:o})}}else this.basicDot({x:t,y:e,size:i,rotation:0})}drawVerticalLine({x:t,y:e,size:i,getNeighbor:o}){const n=o?+o(-1,0):0,r=o?+o(1,0):0,s=o?+o(0,-1):0,a=o?+o(0,1):0;if(0===n+r+s+a||n&&!s&&!a||r&&!s&&!a)this.basicDot({x:t,y:e,size:i,rotation:0});else if(s&&a)this.basicSquare({x:t,y:e,size:i,rotation:0});else if(!s||a)if(!a||s);else{const o=-Math.PI/2;this.basicSideRounded({x:t,y:e,size:i,rotation:o})}else{const o=Math.PI/2;this.basicSideRounded({x:t,y:e,size:i,rotation:o})}}drawHorizontalLine({x:t,y:e,size:i,getNeighbor:o}){const n=o?+o(-1,0):0,r=o?+o(1,0):0,s=o?+o(0,-1):0,a=o?+o(0,1):0;if(0===n+r+s+a||s&&!n&&!r||a&&!n&&!r)this.basicDot({x:t,y:e,size:i,rotation:0});else if(n&&r)this.basicSquare({x:t,y:e,size:i,rotation:0});else if(!n||r)if(!r||n);else{const o=Math.PI;this.basicSideRounded({x:t,y:e,size:i,rotation:o})}else{const o=0;this.basicSideRounded({x:t,y:e,size:i,rotation:o})}}drawExtraRounded({x:t,y:e,size:i,getNeighbor:o}){const n=o?+o(-1,0):0,r=o?+o(1,0):0,s=o?+o(0,-1):0,a=o?+o(0,1):0,l=n+r+s+a;if(0!==l)if(l>2||n&&r||s&&a)this.basicSquare({x:t,y:e,size:i,rotation:0});else{if(2===l){let o=0;return n&&s?o=Math.PI/2:s&&r?o=Math.PI:r&&a&&(o=-Math.PI/2),void this.basicCornerExtraRounded({x:t,y:e,size:i,rotation:o})}if(1===l){let o=0;return s?o=Math.PI/2:r?o=Math.PI:a&&(o=-Math.PI/2),void this.basicSideRounded({x:t,y:e,size:i,rotation:o})}}else this.basicDot({x:t,y:e,size:i,rotation:0})}drawClassy({x:t,y:e,size:i,getNeighbor:o}){const n=o?+o(-1,0):0,r=o?+o(1,0):0,s=o?+o(0,-1):0,a=o?+o(0,1):0;0!==n+r+s+a?n||s?r||a?this.basicSquare({x:t,y:e,size:i,rotation:0}):this.basicCornerRounded({x:t,y:e,size:i,rotation:Math.PI/2}):this.basicCornerRounded({x:t,y:e,size:i,rotation:-Math.PI/2}):this.basicCornersRounded({x:t,y:e,size:i,rotation:Math.PI/2})}drawClassyRounded({x:t,y:e,size:i,getNeighbor:o}){const n=o?+o(-1,0):0,r=o?+o(1,0):0,s=o?+o(0,-1):0,a=o?+o(0,1):0;0!==n+r+s+a?n||s?r||a?this.basicSquare({x:t,y:e,size:i,rotation:0}):this.basicCornerExtraRounded({x:t,y:e,size:i,rotation:Math.PI/2}):this.basicCornerExtraRounded({x:t,y:e,size:i,rotation:-Math.PI/2}):this.basicCornersRounded({x:t,y:e,size:i,rotation:Math.PI/2})}drawStar({x:t,y:e,size:i}){this.rotateFigure({x:t,y:e,size:i,rotation:0,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path");const o=t+i/2,n=e+i/2,r=1.3*i/2,s=.5*r;let a="";for(let t=0;t<10;t++){const e=t*Math.PI/5-Math.PI/2,i=t%2==0?r:s;a+=(0===t?"M":"L")+`${o+i*Math.cos(e)},${n+i*Math.sin(e)}`}a+="Z",this._element?.setAttribute("d",a)}})}drawPlus({x:t,y:e,size:i}){this.rotateFigure({x:t,y:e,size:i,rotation:0,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path");const o=.35*i,n=.85*i,r=(i-n)/2,s=o/2,a=[`M ${t+i/2-s} ${e+r}`,`h ${o}`,`v ${n}`,"h "+-o,"z",`M ${t+r} ${e+i/2-s}`,`h ${n}`,`v ${o}`,"h "+-n,"z"].join(" ");this._element?.setAttribute("d",a)}})}}const yt={toDataURL:t=>"string"==typeof t&&t.startsWith("data:")?Promise.resolve(t):new Promise(((e,i)=>{if("string"==typeof t){const o=new XMLHttpRequest,n=()=>{o.abort()};o.onload=()=>{if(o.status<200||o.status>=300)return n(),void i(new Error(`Failed to load image: ${o.statusText}`));const t=new FileReader;t.onloadend=()=>{n(),e(t.result)},t.onerror=()=>{n(),i(new Error("Failed to read image blob"))},t.readAsDataURL(o.response)},o.onerror=o.ontimeout=o.onabort=()=>{n(),i(new Error("Image load aborted or failed"))};try{o.open("GET",t,!0),o.responseType="blob",o.timeout=1e4,o.send()}catch(t){n(),i(t)}}else{const o=new FileReader;o.onloadend=()=>{e(o.result)},o.onerror=()=>{i(new Error("Failed to read local image"))},o.readAsDataURL(t)}})).catch((t=>(console.error("Image loading error:",t),"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIj48cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSIjY2NjIi8+PHRleHQgeD0iNTAlIiB5PSI1MCUiIGRvbWluYW50LWJhc2VsaW5lPSJtaWRkbGUiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiMwMDAiIGZvbnQtc2l6ZT0iMTYiPkxvZ28gbG9hZCBlcnJvcjwvdGV4dD48L3N2Zz4="))),getSize:(t,e)=>new Promise(((i,o)=>{const n=new Image,r=setTimeout((()=>{o(new Error("Image loading timed out"))}),15e3);"string"==typeof e&&(n.crossOrigin=e);const s=()=>{clearTimeout(r),n.onload=n.onerror=n.onabort=null,n.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="};n.onload=()=>{s(),i({width:n.width,height:n.height})},n.onerror=n.onabort=()=>{s(),o(new Error("Failed to load image"))};try{"string"==typeof t?n.src=t:yt.toDataURL(t).then((t=>{t?n.src=t:o(new Error("Invalid image source"))})).catch(o)}catch(t){s(),o(t)}})).catch((t=>(console.error("Image size detection error:",t),{width:200,height:200})))};function Zt(t){let e,i=[],o=1;if("#"===(t=t.toLowerCase())[0]){const e=t.slice(1),n=e.length;n<=4?(i=[parseInt(e[0]+e[0],16),parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16)],4===n&&(o=parseInt(e[3]+e[3],16)/255)):(i=[parseInt(e[0]+e[1],16),parseInt(e[2]+e[3],16),parseInt(e[4]+e[5],16)],8===n&&(o=parseInt(e[6]+e[7],16)/255)),i[0]||(i[0]=0),i[1]||(i[1]=0),i[2]||(i[2]=0)}else{if(!(e=/^((?:rgba?))\s*\(([^)]*)\)/.exec(t)))return{value:t,alpha:o};{const t=3;i=e[2].trim().split(/\s*[,/]\s*|\s+/),i=i.map(((t,e)=>{if("%"===t[t.length-1]){const i=parseFloat(t)/100;return 3===e?i:255*i}return"none"===t?0:parseFloat(t)})),o=i.length>t?i.pop():1}}return{value:"#"+i.map((t=>Math.max(0,Math.min(255,t)).toString(16).padStart(2,"0"))).join(""),alpha:Math.max(0,Math.min(1,o))}}const St=[[1,1,1,1,1,1,1],[1,0,0,0,0,0,1],[1,0,0,0,0,0,1],[1,0,0,0,0,0,1],[1,0,0,0,0,0,1],[1,0,0,0,0,0,1],[1,1,1,1,1,1,1]],At=[[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,1,1,1,0,0],[0,0,1,1,1,0,0],[0,0,1,1,1,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0]];class Ct{constructor(t){this.roundValue=t=>"number"==typeof t?t:parseInt(t.replace("%",""),10)/100;const e=t.margin||0,i="circle"===t.shape?.1:.3,{bordersMain:o,bordersOuter:n,bordersInner:r}=t,s=Math.min(t.width,t.height),a=T(t.borderOptions?.radius),l=T(t.borderOptions?.inner?.radius,a),h=a&&v(a)>0?v(a)/100*s:0,d=(a&&v(l)>0?v(l)/100*s:0)??h,c=d>0&&t.borderOptions?.hasBorder?d*i:0;this._hls=t.hls,this.finalWidth=t.width+o.left+o.right+n.left+n.right+r.left+r.right,this.finalHeight=t.height+o.top+o.bottom+n.top+n.bottom+r.top+r.bottom;const u=o.left+o.right+n.left+n.right+r.left+r.right,p=o.top+o.bottom+n.top+n.bottom+r.top+r.bottom,m=t.borderOptions?.hasBorder?this.finalWidth-u-2*n.left-2*r.left-r.right-2*e-c:this.finalWidth-2*e,g=t.borderOptions?.hasBorder?this.finalHeight-p-2*n.top-2*r.top-r.top-2*e-c:this.finalHeight-2*e,f=m/t.width,b=g/t.height,O=Math.min(f,b),k=Math.min(Math.max(t.scale??1,0),1.5),w=Math.min(Math.max(t.borderOptions?.inner?.scale??1,0),1.5),y=t.borderOptions?.inner?.horizontalOffset||0,Z=t.borderOptions?.inner?.verticalOffset||0;t.scale=O*k*w||1,this.options=t,this.document=t.document,this.imageTools=t.imageTools||yt,this._element=this.document.createElementNS("http://www.w3.org/2000/svg","svg");const S=ft(t.width),A=ft(t.height);t.isResponsive||(this._element.setAttribute("width",S),this._element.setAttribute("height",A)),this._element.setAttribute("viewBox",`0 0 ${S} ${A}`),this.defs=this.document.createElementNS("http://www.w3.org/2000/svg","defs"),this._element.appendChild(this.defs),this._innerQrGroup=this.document.createElementNS("http://www.w3.org/2000/svg","g");let C=(m-t.width*t.scale)/2+e-y+c/2,j=(g-t.height*t.scale)/2+e-Z+c/2;if(t.borderOptions?.hasBorder){const e={top:G(t.borderOptions,"top"),right:G(t.borderOptions,"right"),bottom:R(t.borderOptions,"bottom",this._hls),left:G(t.borderOptions,"left")},i=t.borderOptions.thickness||0,o=t.borderOptions.borderOuter?.thickness||0,n=t.borderOptions.borderInner?.thickness||0,r=t.borderOptions.noBorderThickness||i/4;j+=((e.top?i:r)-(e.bottom?i:r))/2+o+n+n/2,C+=((e.left?i:r)-(e.right?i:r))/2+o+n+n/2}t.verticalOffset&&(j-=t.verticalOffset),t.horizontalOffset&&(C-=t.horizontalOffset),this._instanceId=Ct.instanceCount++,1===t.scale&&0===C&&0===j||this._innerQrGroup.setAttribute("transform",`translate(${C}, ${j}) scale(${t.scale})`),this._maskedQrGroup=this.document.createElementNS("http://www.w3.org/2000/svg","g"),this._maskedQrGroup.setAttribute("mask",`url(#qr-mask-${this._instanceId})`),this._maskedQrGroup.appendChild(this._innerQrGroup),this._element.appendChild(this._maskedQrGroup)}get element(){return this._element}get qrGroup(){return this._innerQrGroup||this._element}get width(){return this.finalWidth}get height(){return this.finalHeight}get svgSize(){return{width:this.options.width,height:this.options.height}}getElement(){return this._element}async drawQR(t){const e=t.getModuleCount(),i=parseInt(((e-17)/4).toFixed(0),10),o=this.options.dotsOptions.size;let n={hideXDots:0,hideYDots:0,width:0,height:0};if(this.qr=t,this.options.borderOptions?.hasBorder||this.drawBackground(),this.options.image){const t=await this.imageTools.getSize(this.options.image,this.options.imageOptions.crossOrigin),{imageOptions:r}=this.options;if(this.options.imageOptions.mode==H.background){const e=0,i=(this.finalWidth-2*e*o)*r.imageSize,s=(this.finalHeight-2*e*o)*r.imageSize;let{width:a,height:l}=t;l=l/a*i,a=i,l>s&&(a=a/l*s,l=s),n={hideXDots:0,hideYDots:0,width:a,height:l}}else{const r=this.options.imageOptions.imageSize*this.options.errorCorrectionPercent,s=b.getPatternPosition(i),a=Math.floor(r*(e*e-192-2*(e-16)-s.length**2*25));n=function({originalHeight:t,originalWidth:e,maxHiddenDots:i,maxHiddenAxisDots:o,dotSize:n,margin:r}){const s={x:0,y:0},a={x:0,y:0};if(t<=0||e<=0||i<=0||n<=0||4*r**2>i)return{height:0,width:0,hideYDots:0,hideXDots:0};o&&o%2==0&&(o=Math.max(1,o-1));const l=Math.max(e,t),h=Math.min(e,t);let d=0,c=(o||i)-2*r;do{const t=d+(c-d)/2;let e=Math.max(1,Math.ceil(t+2*r));e%2==0&&e++;let o=Math.max(1,Math.ceil(t*h/l+2*r));o%2==0&&o++,e*o>i?c=t:d=t}while(Math.abs(d-c)>.001);const u=d;let p=Math.max(1,Math.ceil(u+2*r));p%2==0&&p++;let m=Math.max(1,Math.ceil(u*h/l+2*r));m%2==0&&m++,e>t?(s.x=p,s.y=m):(s.x=m,s.y=p);const g=(s.x-2*r)*n,f=(s.y-2*r)*n;return a.x=g,a.y=g*t/e,a.y>f&&(a.y=f,a.x=f*e/t),{height:Math.round(a.y+2*r*n),width:Math.round(a.x+2*r*n),hideYDots:s.y,hideXDots:s.x}}({originalWidth:t.width,originalHeight:t.height,maxHiddenDots:a,maxHiddenAxisDots:e-14,dotSize:o,margin:this.options.imageOptions.margin})}}this.options.imageOptions.mode!=H.overlay&&this.options.image&&n.width>0&&n.height>0&&await this.drawImage({width:n.width,height:n.height,count:e,dotSize:o}),this.drawDots(((t,i)=>!(this.options.imageOptions.mode==H.center&&t>=(e-n.hideXDots)/2&&t<(e+n.hideXDots)/2&&i>=(e-n.hideYDots)/2&&i<(e+n.hideYDots)/2)&&!(t<8&&i<8||t>=e-8&&i<8||i>=e-8&&t<8))),this.options.imageOptions.mode==H.overlay&&this.options.image&&n.width>0&&n.height>0&&await this.drawImage({width:n.width,height:n.height,count:e,dotSize:o}),this.drawCorners()}drawBackground(){const t=this.options;if(this._element&&t.backgroundOptions){const e=t.backgroundOptions.gradient,i=t.backgroundOptions.color;this.createColor({options:e,color:i,additionalRotation:0,x:0,y:0,height:t.height,width:t.width,name:`background-color-${this._instanceId}`});const o=Math.min(t.width,t.height),n=this.document.createElementNS("http://www.w3.org/2000/svg","rect");[this.backgroundMask,this.backgroundMaskGroup]=this.createMask(`mask-background-color-${this._instanceId}`),this.defs.appendChild(this.backgroundMask);const r=t.backgroundOptions?.round||0,s=this.roundValue(r);n.setAttribute("x",ft((t.width-o)/2)),n.setAttribute("y",ft((t.height-o)/2)),n.setAttribute("width",ft(o)),n.setAttribute("height",ft(o)),n.setAttribute("rx",ft(o/2*s)),this.backgroundMaskGroup.appendChild(n)}}drawBackgroundForBorder(t,e){const i=this.options;if(i.backgroundOptions){const o=i.backgroundOptions.gradient,n=i.backgroundOptions.color||"#ffffff",r=Math.min(i.width,i.height)-2*t,s=(i.width-r)/2,a=(i.height-r)/2,l=e-t,h=this.createColor({options:o,borderOptions:i.borderOptions,color:n,additionalRotation:0,x:s,y:a,height:r,width:r,name:`background-color-${this._instanceId}`,returnSVGGroup:!0}),d=this.document.createElementNS("http://www.w3.org/2000/svg","rect");return[this.backgroundMask,this.backgroundMaskGroup]=this.createMask(`mask-background-color-${this._instanceId}`),this.defs.appendChild(this.backgroundMask),d.setAttribute("x",ft(s)),d.setAttribute("y",ft(a)),d.setAttribute("width",ft(r)),d.setAttribute("height",ft(r)),d.setAttribute("rx",ft(l)),this.backgroundMaskGroup.appendChild(d),h}}drawDots(t){if(!this.qr)throw new Error("QR code is not defined");const e=this.options,i=this.qr.getModuleCount();if(i>e.width||i>e.height)throw new Error("The canvas is too small");const o=e.dotsOptions.size;let n=Math.min(e.width,e.height);e.imageOptions.mode==H.background&&(n-=2*o*(e.imageOptions.margin||0));const r=Math.floor((e.width-i*o)/2);let s=Math.floor((e.height-i*o)/2);if(e.offset){const t=(e.height-i*o)/2;s+=Math.min(Math.abs(e.offset),t)*Math.sign(e.offset)}let a=new wt(e.dotsOptions.type,this.document);const l=new wt(N.tinySquare,this.document),h=new wt(N.square,this.document);[this.dotsMask,this.dotsMaskGroup]=this.createMask(`mask-dot-color-${this._instanceId}`),this.defs.appendChild(this.dotsMask),e.imageOptions.mode==H.background&&([this.lightDotsMask,this.lightDotsMaskGroup]=this.createMask(`mask-light-dot-color-${this._instanceId}`),this.defs.appendChild(this.lightDotsMask));let d=0,c=i;e.shape===K.circle?(d=Math.floor((n/o-i-2)/2),c=i+2*d):e.imageOptions.mode==H.background&&(d=1,c=i+2*d);const u=r-d*o,p=s-d*o,m=u,g=p,f=i+2*d,O=new Array(c),k=Math.floor(c/2);for(let o=0;o<c;o++){O[o]=new Array(c);for(let n=0;n<c;n++)if(o>d-1&&o<c-d&&n>d-1&&n<c-d){const e=o-d,i=n-d;t&&!t(e,i)?O[o][n]=void 0:O[o][n]=!!this.qr.isDark(i,e)}else e.shape===K.circle&&Math.sqrt((o-k)*(o-k)+(n-k)*(n-k))>k?O[o][n]=void 0:O[o][n]=o!=d-1&&o!=c-d&&n!=d-1&&n!=c-d?this.qr.isDark(n-2*d<0?n:n>=i?n-2*d:n-d,o-2*d<0?o:o>=i?o-2*d:o-d):(n==d-1&&(o<d+8||o>c-d-9)||n==c-d&&o<d+8||o==d-1&&(n<d+8||n>c-d-9)||o==c-d&&n<d+8)&&void 0}const w=(i-17)/4,y=b.getPatternPosition(w);for(let t=0;t<c;t++){const e=y.find((e=>t-d>e-3&&t-d<e+3));for(let i=0;i<c;i++){const n=y.find((t=>i-d>t-3&&i-d<t+3));null!=O[t][i]&&(this.lightDotsMask&&(a=e&&n&&(e!=y[0]&&n!=y[0]||n!=y[0]&&n!=y[y.length-1]||e!=y[0]&&e!=y[y.length-1])?h:l),O[t][i]?(a.draw({x:u+t*o,y:p+i*o,size:o,getNeighbor:(e,o)=>!0===O[t+e]?.[i+o]}),a.element&&this.dotsMaskGroup&&this.dotsMaskGroup.appendChild(a.element)):this.lightDotsMask&&(a.draw({x:u+t*o,y:p+i*o,size:o,getNeighbor:(e,o)=>!1===O[t+e]?.[i+o]}),a.element&&this.lightDotsMaskGroup&&this.lightDotsMaskGroup.appendChild(a.element)))}}this.lightDotsMask&&this.createColor({options:e.imageOptions.fill?.gradient,color:e.imageOptions.fill?.color,additionalRotation:0,x:m,y:g,height:f*o,width:f*o,name:`light-dot-color-${this._instanceId}`}),this.createColor({options:e.dotsOptions?.gradient,color:e.dotsOptions.color,additionalRotation:0,x:m,y:g,height:f*o,width:f*o,name:`dot-color-${this._instanceId}`})}drawCorners(){if(!this.qr)throw new Error("QR code is not defined");const t=this.qrGroup,e=this.options;if(!t)throw new Error("Element code is not defined");const i=this.qr.getModuleCount(),o=e.dotsOptions.size,n=7*o,r=3*o,s=Math.floor((e.width-i*o)/2);let a=Math.floor((e.height-i*o)/2);if(e.offset){const t=(e.height-i*o)/2,n=Math.min(Math.abs(e.offset),t)*Math.sign(e.offset);a+=n}[[0,0,0],[1,0,Math.PI/2],[0,1,-Math.PI/2]].forEach((([t,l,h])=>{const d=s+t*o*(i-7),c=a+l*o*(i-7);let u=this.dotsMask,p=this.dotsMaskGroup,m=this.dotsMask,g=this.dotsMaskGroup;if((e.cornersSquareOptions?.gradient||e.cornersSquareOptions?.color)&&([u,p]=this.createMask(`mask-corners-square-color-${t}-${l}-${this._instanceId}`),this.defs.appendChild(u),m=u,g=p,this.createColor({options:e.cornersSquareOptions?.gradient,color:e.cornersSquareOptions?.color,additionalRotation:h,x:d,y:c,height:n,width:n,name:`corners-square-color-${t}-${l}-${this._instanceId}`})),e.cornersSquareOptions?.type){const t=new kt(e.cornersSquareOptions.type,this.document);t.draw({x:d,y:c,size:n,rotation:h}),t.element&&p&&p.appendChild(t.element),t.fill&&this.lightDotsMaskGroup&&this.lightDotsMaskGroup.appendChild(t.fill)}else{const t=new wt(e.dotsOptions.type,this.document);for(let e=0;e<St.length;e++)for(let i=0;i<St[e].length;i++)St[e]?.[i]?(t.draw({x:d+e*o,y:c+i*o,size:o,getNeighbor:(t,o)=>!!St[e+t]?.[i+o]}),t.element&&p&&p.appendChild(t.element)):this.lightDotsMask&&!At[e]?.[i]&&(t.draw({x:d+e*o,y:c+i*o,size:o,getNeighbor:(t,o)=>!St[e+t]?.[i+o]&&!At[e+t]?.[i+o]}),t.element&&this.lightDotsMaskGroup&&this.lightDotsMaskGroup.appendChild(t.element));if(this.lightDotsMask)for(let e=-1;e<8;e++)for(let i=-1;i<8;i++)-1!=e&&7!=e&&-1!=i&&7!=i||(t.draw({x:d+e*o,y:c+i*o,size:o,getNeighbor:(t,o)=>{const n=e+t,r=i+o;return n>=-1&&n<=7&&r>=-1&&r<=7&&(-1==n||7==n||-1==r||7==r)}}),t.element&&this.lightDotsMaskGroup&&this.lightDotsMaskGroup.appendChild(t.element))}if((e.cornersDotOptions?.gradient||e.cornersDotOptions?.color)&&([m,g]=this.createMask(`mask-corners-dot-color-${t}-${l}-${this._instanceId}`),this.defs.appendChild(m),this.createColor({options:e.cornersDotOptions?.gradient,color:e.cornersDotOptions?.color,additionalRotation:h,x:d+2*o,y:c+2*o,height:r,width:r,name:`corners-dot-color-${t}-${l}-${this._instanceId}`})),e.cornersDotOptions?.type){const t=new Ot(e.cornersDotOptions.type,this.document);t.draw({x:d+2*o,y:c+2*o,size:r,rotation:h}),t.element&&g&&g.appendChild(t.element)}else{const t=new wt(e.dotsOptions.type,this.document);for(let e=0;e<At.length;e++)for(let i=0;i<At[e].length;i++)At[e]?.[i]&&(t.draw({x:d+e*o,y:c+i*o,size:o,getNeighbor:(t,o)=>!!At[e+t]?.[i+o]}),t.element&&g&&g.appendChild(t.element))}}))}async drawImage({width:t,height:e,count:i,dotSize:o}){const n=this.options,r=Math.floor((n.width-i*o)/2);let s=Math.floor((n.height-i*o)/2);if(n.offset){const t=(n.height-i*o)/2;s+=Math.min(Math.abs(n.offset),t)*Math.sign(n.offset)}let a=n.imageOptions.margin*o;n.imageOptions.mode==H.background&&(a=0);const l=r+a+(i*o-t)/2,h=s+a+(i*o-e)/2,d=t-2*a,c=e-2*a,u=await this.imageTools.toDataURL(n.image||"");let p=this.document.createElementNS("http://www.w3.org/2000/svg","image");if(p.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",u||""),u?.startsWith("data:image/svg+xml;")){let t=u.substring(19);const e=t.indexOf(","),i=t.substring(0,e);if(t=t.substring(e+1),"base64"===i)t="function"==typeof atob?atob(t):Buffer.from(t,"base64").toString("utf8");else t="";if(t){const e=(new DOMParser).parseFromString(t,"text/xml"),i=Array.from(e.getElementsByTagName("svg"));i.length&&(p=i[0],p.setAttribute("overflow","visible"))}}p&&u&&(p.setAttribute("x",ft(l)),p.setAttribute("y",ft(h)),p.setAttribute("width",`${ft(d)}px`),p.setAttribute("height",`${ft(c)}px`),this.qrGroup.appendChild(p))}createColor({options:t,borderOptions:e,color:i,additionalRotation:o,x:n,y:r,height:s,width:a,name:l,returnSVGGroup:h=!1}){const d=a>s?a:s,c=this.document.createElementNS("http://www.w3.org/2000/svg","rect");if(c.setAttribute("x",ft(n)),c.setAttribute("y",ft(r)),c.setAttribute("height",ft(s)),c.setAttribute("width",ft(a)),c.setAttribute("style",`mask:url(#mask-${l}-${this._instanceId})`),t){let i;if(t.type===U.radial){i=this.document.createElementNS("http://www.w3.org/2000/svg","radialGradient"),i.setAttribute("id",l+"-"+this._instanceId),i.setAttribute("gradientUnits","userSpaceOnUse");let t=n+a/2,o=r+s/2;if(e){const i=e.thickness/2,l=2;G(e,"top")&&!R(e,"bottom",this._hls)?o=r+i*l+s/2:!G(e,"top")&&R(e,"bottom",this._hls)&&(o=r-i*l+s/2),G(e,"right")&&!G(e,"left")?t=n-i*l+a/2:!G(e,"right")&&G(e,"left")&&(t=n+i*l+a/2)}i.setAttribute("fx",ft(t)),i.setAttribute("fy",ft(o)),i.setAttribute("cx",ft(n+a/2)),i.setAttribute("cy",ft(r+s/2)),i.setAttribute("r",ft(d/2))}else{const e=((t.rotation||0)+o)%(2*Math.PI),h=(e+2*Math.PI)%(2*Math.PI);let d=n+a/2,c=r+s/2,u=n+a/2,p=r+s/2;h>=0&&h<=.25*Math.PI||h>1.75*Math.PI&&h<=2*Math.PI?(d-=a/2,c-=s/2*Math.tan(e),u+=a/2,p+=s/2*Math.tan(e)):h>.25*Math.PI&&h<=.75*Math.PI?(c-=s/2,d-=a/2/Math.tan(e),p+=s/2,u+=a/2/Math.tan(e)):h>.75*Math.PI&&h<=1.25*Math.PI?(d+=a/2,c+=s/2*Math.tan(e),u-=a/2,p-=s/2*Math.tan(e)):h>1.25*Math.PI&&h<=1.75*Math.PI&&(c+=s/2,d+=a/2/Math.tan(e),p-=s/2,u-=a/2/Math.tan(e)),i=this.document.createElementNS("http://www.w3.org/2000/svg","linearGradient"),i.setAttribute("id",l+"-"+this._instanceId),i.setAttribute("gradientUnits","userSpaceOnUse"),i.setAttribute("x1",ft(d)),i.setAttribute("y1",ft(c)),i.setAttribute("x2",ft(u)),i.setAttribute("y2",ft(p))}t.colorStops.forEach((t=>{const e=this.document.createElementNS("http://www.w3.org/2000/svg","stop");e.setAttribute("offset",`${ft(100*t.offset)}%`);const o=Zt(t.color);e.setAttribute("stop-color",o.value),o.alpha<1&&e.setAttribute("stop-opacity",o.alpha.toFixed(7)),i.appendChild(e)})),c.setAttribute("fill",`url(#${l}-${this._instanceId})`),this.defs.appendChild(i)}else if(i){const t=Zt(i);c.setAttribute("fill",t.value),t.alpha<1&&c.setAttribute("opacity",t.alpha.toFixed(7))}if(h)return c;l.startsWith("background-color")?this._element.insertBefore(c,this._maskedQrGroup):this.qrGroup.appendChild(c)}createMask(t){const e=`${t}-${this._instanceId}`,i=this.options,o=this.document.createElementNS("http://www.w3.org/2000/svg","mask");o.setAttribute("id",e),o.setAttribute("maskUnits","userSpaceOnUse"),o.setAttribute("x","0"),o.setAttribute("y","0"),o.setAttribute("width",ft(i.width)),o.setAttribute("height",ft(i.height));const n=this.document.createElementNS("http://www.w3.org/2000/svg","g");return n.setAttribute("fill","#fff"),o.appendChild(n),[o,n]}}var jt;Ct.instanceCount=0,function(t){t.svg="svg",t.png="png",t.jpeg="jpeg",t.webp="webp"}(jt||(jt={})),Object.assign(Z.stringToBytesFuncs,{UTF8:t=>function(t){const e=[];for(let i=0;i<t.length;i++){let o=t.charCodeAt(i);o<128?e.push(o):o<2048?e.push(192|o>>6,128|63&o):o<55296||o>=57344?e.push(224|o>>12,128|o>>6&63,128|63&o):(i++,o=65536+((1023&o)<<10|1023&t.charCodeAt(i)),e.push(240|o>>18,128|o>>12&63,128|o>>6&63,128|63&o))}return e}(t)});let It=class t{get size(){return this.qrSVG?{width:this.qrSVG.width,height:this.qrSVG.height}:void 0}constructor(e,i=!1){const o=e;let n=st;if(t._selectedTemplate)if("string"==typeof t._selectedTemplate){const e=t._selectedTemplate;dt[e]?n=dt[e]:console.warn(`QR Code template "${e}" not found. Using default.`)}else n=t._selectedTemplate;let r={};if(t._selectedStyle){const{isValid:e,errors:i}=et(t._selectedStyle);e?r=tt(t._selectedStyle):console.warn("Invalid static style options ignored during instantiation:",i)}const s=C(n,r,o),{warnings:a,validatedOptions:l}=pt(s);this.options=$(l),a.length>0&&this._logValidationWarnings("QR Code Options Validation Warnings:",a),this.update()}static setTemplate(e){return"string"==typeof e?dt[e]?t._selectedTemplate=e:(console.warn(`QR Code template "${e}" not found. Resetting to default template.`),t._selectedTemplate=st):t._selectedTemplate=e,t}static setStyle(e){let i=null;if("string"==typeof e){const o=e;if(!mt[o])return console.warn(`QR Code style "${o}" not found in setStyle. Ignoring.`),t;i=mt[o]}else i=e;if(i){const{isValid:e,errors:o}=et(i);e||console.warn("Invalid style options provided to setStyle:",o),t._selectedStyle=i}else t._selectedStyle=null;return t}async update(t){this.container&&(this.container.innerHTML="");const{warnings:e}=pt(t||this.options);if(e.length>0&&this._logValidationWarnings("QR Code JS Options Update Validation Warnings:",e),this.options=t?$(C(this.options,t)):this.options,!this.options.data)return;this.options.stringToBytesFuncs&&(Object.assign(Z.stringToBytesFuncs,this.options.stringToBytesFuncs),delete this.options.stringToBytesFuncs),this.qr=new Z(this.options.qrOptions.typeNumber,this.options.qrOptions.errorCorrectionLevel);const i=this.options.qrOptions.mode||function(t){switch(!0){case/^[0-9]*$/.test(t):return y.numeric;case/^[0-9A-Z $%*+\-./:]*$/.test(t):return y.alphanumeric;case/[^\u0000-\u00ff]/.test(t):return y.unicode;default:return y.byte}}(this.options.data);this.qr.addData(this.options.data,i),this.qr.make(),await this._setupSvgAsync(),this.append(this.container)}append(t){if(t)return this.qrSVG?.element&&t.appendChild(this.qrSVG.element),this.container=t,this}async applyExtension(t){if(!t)throw new Error("Extension function should be defined.");this.extension=t,await this.update()}async deleteExtension(){this.extension=void 0,await this.update()}async serialize(t=!1){if(!this.qr)throw new Error("QR code is empty");if(this.qrSVG?.element||await this._setupSvgAsync(),this.svgDrawingPromise&&await this.svgDrawingPromise,!this.qrSVG?.element)return;let e=this.qrSVG.element;if(t){const t=this.qrSVG.element.cloneNode(!0);t.style.filter="invert(1)",e=t}let i=(new XMLSerializer).serializeToString(e);return i='<?xml version="1.0" standalone="no"?>\r\n'+i,i}async _setupSvgAsync(){if(!this.qr)return;let t=this.qr.getModuleCount();this.options.imageOptions.mode===H.background&&this.options.shape!==K.circle&&(t+=2);let e=Math.ceil((this.options.shape===K.circle?Math.sqrt(1.8):1.1)*t);e%2==0&&(e-=1);let i=0;this.options.imageOptions.mode===H.background&&(i+=this.options.imageOptions.margin||0);const o=Math.ceil(this.options.dotsOptions.size*(e+2*i)),n=this.options.borderOptions;let r=0,s=0;const a={top:0,right:0,bottom:0,left:0},l={top:0,right:0,bottom:0,left:0},h={top:0,right:0,bottom:0,left:0},d=n?.noBorderThickness||n?.thickness?n.thickness/4:0;if(n?.hasBorder){const t=n.borderOuter?.thickness?2*n.borderOuter?.thickness:0,e=n.borderInner?.thickness?2*n.borderInner?.thickness:0;t>0&&(l.top=t/2,l.bottom=t/2,l.left=t/2,l.right=t/2),e>0&&(h.top=e/2,h.bottom=e/2,h.left=e/2,h.right=e/2),G(n,"left")?(a.left=n.thickness,r+=n.thickness):(a.left=d,r+=d),G(n,"right")?(a.right=n.thickness,r+=n.thickness):(a.right=d,r+=d),G(n,"top")?(a.top=n.thickness,s+=n.thickness):(a.top=d,s+=d),R(n,"bottom",this._hls())?(a.bottom=n.thickness,s+=n.thickness):(a.bottom=d,s+=d)}const c=o+r,u=o+s;this.qrSVG=new Ct({...this.options,width:c,height:u,bordersMain:a,bordersOuter:l,bordersInner:h,errorCorrectionPercent:_[this.options.qrOptions.errorCorrectionLevel],hls:this._hls()}),this.svgDrawingPromise=this.qrSVG.drawQR(this.qr).then((()=>{this.qrSVG?.element&&(this.options.instanceId=this.qrSVG._instanceId,this.options.borderOptions?.hasBorder&&F(this.options.borderOptions)(this.qrSVG.element,this.options,o,this.qrSVG.drawBackgroundForBorder.bind(this.qrSVG),a,l,h,d,this._hls),this.extension?.(this.qrSVG.element,this.options))})).catch((t=>{console.error(t)}))}async _drawToCanvasForValidation(t){const{width:e=300,height:i=300}=this.qrSVG?.svgSize??t??r,o=e,n=i,s=document.createElement("canvas");s.width=o,s.height=n;const a=await this.serialize();if(!a)throw new Error("Failed to serialize SVG.");const l="data:image/svg+xml;base64,"+btoa(a);return new Promise(((t,e)=>{const i=new Image;i.width=o,i.height=n,i.crossOrigin="Anonymous",i.onload=()=>{const r=s.getContext("2d");if(!r)return e(new Error("Could not get canvas 2D context"));r.drawImage(i,0,0,o,n),t(s)},i.onerror=i.onabort=e,i.src=l}))}async drawToCanvas(t){const{width:e=300,height:i=300}=this.qrSVG?.svgSize??t??r,o=1*e,n=1*i,s=document.createElement("canvas");s.width=o,s.height=n;const a=(async()=>{try{const t=await this.serialize();if(!t)return void console.warn("SVG serialization returned empty.");const r="data:image/svg+xml;base64,"+btoa(t),a=new Image;a.width=o,a.height=n,await new Promise(((t,l)=>{a.onload=()=>{const r=Math.ceil(2*Math.max(e,i)/Math.max(a.width,a.height));let h;try{h=new OffscreenCanvas(a.width*r*2,a.height*r*2)}catch(t){h=document.createElement("canvas"),h.width=a.width*r*2,h.height=a.height*r*2}const d=h.getContext("2d");if(!d)return l(new Error("Could not get OffscreenCanvas 2D context"));d.drawImage(a,0,0,h.width,h.height);const c=s.getContext("2d");if(!c)return l(new Error("Could not get canvas 2D context"));c.drawImage(h,0,0,h.width,h.height,0,0,o,n),t()},a.onerror=t=>l(new Error(`Image load error: ${t}`)),a.onabort=()=>l(new Error("Image load aborted")),a.src=r}))}catch(t){throw console.error("Error drawing to canvas:",t),t}})();return{canvas:s,canvasDrawingPromise:a}}downloadURI(t,e){const i=document.createElement("a");i.download=e,i.href=t,document.body.appendChild(i),i.click(),document.body.removeChild(i)}async download(t,e){if("undefined"==typeof Blob)throw new Error("Cannot download in Node.js environment");let i=jt.png,o="qr";if(t&&(t.name&&(o=t.name),t.extension&&(i=t.extension)),"svg"===i.toLowerCase()){const t=await this.serialize();if(!t)return;const e="data:image/svg+xml;charset=utf-8,"+encodeURIComponent(t);this.downloadURI(e,`${o}.svg`)}else{const t=await this.drawToCanvas(e);if(!t)return;const{canvas:n,canvasDrawingPromise:r}=t;await r;const s=n.toDataURL(`image/${i}`);this.downloadURI(s,`${o}.${i}`)}}async createOptimizedQRCanvas(t){const{width:e=300,height:i=300}=this.qrSVG?.svgSize??t??r,o=document.createElement("canvas");o.width=e,o.height=i;const n=await this.serialize();if(!n)throw new Error("Failed to serialize SVG.");const s="data:image/svg+xml;base64,"+btoa(Array.from((new TextEncoder).encode(n)).map((t=>String.fromCharCode(t))).join(""));return new Promise(((t,n)=>{const r=new Image;r.width=e,r.height=i,r.crossOrigin="Anonymous",r.onload=()=>{const s=o.getContext("2d");if(!s)return n(new Error("Could not get canvas 2D context"));s.imageSmoothingEnabled=!1,s.drawImage(r,0,0,e,i),this.applyQRThreshold(o),t(o)},r.onerror=t=>n(new Error(`Image load error: ${t}`)),r.onabort=()=>n(new Error("Image load aborted")),r.src=s}))}applyQRThreshold(t){const e=t.getContext("2d");if(!e)return;const i=e.getImageData(0,0,t.width,t.height),o=i.data;for(let t=0;t<o.length;t+=4){const e=(o[t]+o[t+1]+o[t+2])/3<128?0:255;o[t]=o[t+1]=o[t+2]=e}e.putImageData(i,0,0)}_hls(){return!1}_logValidationWarnings(t,e){console.warn(t),e.forEach((t=>{console.warn(`option: ${t.path} - '${t.value}' : ${t.message}`)}))}};It.version="0.9.1",It._selectedTemplate=null,It._selectedStyle=null;class Wt{constructor(){this._hls=!1,this._decodedToken=null,this._licenseKey=null,this._storedToken=null,this._storedKey=null,this._isInitialized=!1,this._initPromise=null,this._licenseFetcher=async t=>{const e=Wt._defaultLicenseApiUrl;if(!e)throw new Error("LicenseManagerNode: API URL not set. Call LicenseManagerNode.setDefaultLicenseApiUrl() with an absolute URL.");try{const i=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({licenseKey:t})});if(!i.ok){let t={};try{t=await i.json()}catch(t){}throw new Error(`Failed to fetch token: ${i.status} ${t?.error||i.statusText}`)}const o=await i.text();if(!o)throw new Error("Fetched token is empty.");return o}catch(t){throw console.error(`LicenseManagerNode: Default fetcher failed: ${t.message}`),new Error(`License fetcher failed: ${t.message}`)}}}static get instance(){return Wt._instance||(Wt._instance=new Wt),Wt._instance}static setDefaultLicenseApiUrl(t){"string"==typeof t&&t?(t.startsWith("http://")||t.startsWith("https://")||console.warn("LicenseManagerNode: URL provided to setDefaultLicenseApiUrl does not appear to be absolute. Relative URLs may not work reliably server-side."),Wt._defaultLicenseApiUrl=t):console.warn("LicenseManagerNode: Invalid URL provided to setDefaultLicenseApiUrl.")}get hls(){return this._hls}get isInitialized(){return this._isInitialized}getLicenseDetails(){return this._hls?this._decodedToken:null}get licenseKey(){return this._licenseKey}configureLicenseFetcher(t){if("function"!=typeof t)throw new Error("License fetcher must be a function that accepts a license key string and returns a Promise<string>.");this._licenseFetcher=t,this.resetInitialization(),this.resetLicenseState()}async initialize(){return this._isInitialized&&this._initPromise||this._initPromise||(this._initPromise=this._performInitialization()),this._initPromise}async _performInitialization(){if(this._hls)return this._isInitialized=!0,!0;this.resetLicenseState();const t=this._getStoredLicenseData(),e=t.token||null,i=t.key||null;if(this._licenseKey=i,!e)return this._isInitialized=!0,!1;const o=await this._validateAndStoreToken(e,i);if(o.isValid)return this._hls=!0,this._decodedToken=o.license,this._isInitialized=!0,!0;if(console.warn("LicenseManagerNode: Stored license token failed validation during initialization."),!i)return console.warn("LicenseManagerNode: Cannot refresh token: No license key found in storage."),this._isInitialized=!0,!1;console.warn("LicenseManagerNode: Attempting to refresh token using stored license key...");try{const t=await this.activateWithKey(i);return this._isInitialized=!0,t.isValid}catch(t){return console.error(`LicenseManagerNode: Auto-refresh attempt failed: ${t.message}`),this._licenseKey=i,this._isInitialized=!0,!1}}resetInitialization(){this._isInitialized=!1,this._initPromise=null}resetLicenseState(){this._hls=!1,this._decodedToken=null,this._licenseKey=null,this._storedToken=null,this._storedKey=null}async activateWithToken(t){let e;return this.resetInitialization(),null===t?(e=await this._validateAndStoreToken(null,this._licenseKey),this._hls=!1,this._decodedToken=null):"string"==typeof t&&t?(e=await this._validateAndStoreToken(t,null),this._hls=e.isValid,this._decodedToken=e.license,e.isValid?this._licenseKey=this._getStoredLicenseData().key||null:this._licenseKey=null):(console.warn("Invalid token string provided to activateWithToken()."),e=await this._validateAndStoreToken(null,null),this._hls=!1,this._decodedToken=null,this._licenseKey=null),this._isInitialized=!0,this._initPromise=Promise.resolve(this._hls),e}async activateWithKey(t){this.resetInitialization();let e={isValid:!1,token:null,license:null};if(t&&"string"==typeof t){this._licenseKey=t;let i=null,o=null;const n=this._getStoredLicenseData();if(i=n.token||null,o=n.key||null,i&&o===t?(e=await this._validateAndStoreToken(i,t),e.isValid||console.warn("LicenseManagerNode: Cached token validation failed. Attempting to fetch a new token...")):(e={isValid:!1,token:null,license:null},i&&o!==t&&console.warn("LicenseManagerNode: Cached token belongs to a different license key. Fetching new token...")),!e.isValid)try{const i=await this._licenseFetcher(t);e=await this._validateAndStoreToken(i,t),e.isValid||console.warn(`LicenseManagerNode: Fetched token for key ${t} failed validation.`)}catch(i){console.warn(`LicenseManagerNode: Failed to fetch license token for key ${t}: ${i.message}`),await this._validateAndStoreToken(null,t),e={isValid:!1,token:null,license:null}}this._hls=e.isValid,this._decodedToken=e.license}else console.warn("Invalid license key provided to activateWithKey()."),await this._validateAndStoreToken(null,null),this._hls=!1,this._decodedToken=null,this._licenseKey=null;return this._isInitialized=!0,this._initPromise=Promise.resolve(this._hls),e}_getStoredLicenseData(){return{token:this._storedToken??void 0,key:this._storedKey??void 0}}_setStoredLicenseData(t){this._storedToken=t.token??null,this._storedKey=t.key??null}async _validateAndStoreToken(t,e){const r=e??this._storedKey??void 0;if(!t)return this._setStoredLicenseData({key:r}),{isValid:!1,token:null,license:null};try{const e=await async function(t){try{const e=await i("-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ZCmxp1vq4LJLviS9d2u Y5V9IykLzCrNcj8fCenqEyir5b4+FGE3hvLqp9zT+IYRF2cV2K0aGe9G0COFZsX2 E5ye1DguyvPQgRMPO8y7bxXJ3da1IP7Gs+/3gy4iuzRV4Uhy73jUVpqE/zZ2JAv/ sY36Rxmq4h7YE/F6YQk3DeZvnHjS7spUlp/+d3W67G8v2jiYWy3pO08Sn0rF2cjg XrJA5jcNr7ksER7AQcwayaLT4rAV4+EOcDYXL2egnqoTEmRzQYD2ReHBsO6jB0Ud bmsNepxbBdq/fBr+5HNj2tUJItarfH3BUVRFu/L1xP8wOEQa8wmPRwrJdPsI3bdk 7QIDAQAB -----END PUBLIC KEY-----","RS256"),{payload:r}=await o(t,e,{algorithms:["RS256"]});if(!r||"string"!=typeof r.sub)throw new n.JOSEError("Decoded token payload structure is invalid.");return r}catch(t){throw t}}(t);return this._setStoredLicenseData({token:t,key:r}),{isValid:!0,token:t,license:e}}catch(e){return console.warn(`LicenseManagerNode: License token validation failed: ${e.message}`),this._storedToken===t&&this._setStoredLicenseData({key:r}),{isValid:!1,token:null,license:null}}}}var Yt;Wt._instance=null,Wt._defaultLicenseApiUrl="/api/get-token",function(t){t.svg="svg",t.png="png",t.jpeg="jpeg",t.webp="webp"}(Yt||(Yt={}));let Jt=null;const Vt=void 0,vt="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIj48cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSIjY2NjIi8+PHRleHQgeD0iNTAlIiB5PSI1MCUiIGRvbWluYW50LWJhc2VsaW5lPSJtaWRkbGUiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiMwMDAiIGZvbnQtc2l6ZT0iMTYiPkxvZ28gbG9hZCBlcnJvcjwvdGV4dD48L3N2Zz4=";class Tt extends It{static async initializeIfNeeded(){return Wt.instance.initialize()}static get hls(){return Wt.instance.isInitialized?Wt.instance.hls:(Wt.instance.initialize().catch((t=>{console.error("QRCode.js (Server): Background license initialization failed:",t)})),!1)}_hls(){return Wt.instance.isInitialized?Wt.instance.hls:(Wt.instance.initialize().catch((t=>{console.error("QRCode.js (Server): Background license initialization failed:",t)})),!1)}static getLicenseDetails(){return Wt.instance.isInitialized?Wt.instance.getLicenseDetails():(Wt.instance.initialize().catch((t=>{console.error("QRCode.js (Server): Background license initialization failed:",t)})),null)}static configureLicenseFetcher(t){Wt.instance.configureLicenseFetcher(t)}static async token(t){return Wt.instance.activateWithToken(t)}static async license(t){return Wt.instance.activateWithKey(t)}static setLicenseUrl(t){return Wt.setDefaultLicenseApiUrl(t),this}static async initXmldom(){if(!Tt._xmldomSync){const t=await async function(){return Jt||(Jt=import("@xmldom/xmldom")),Jt}();Tt._xmldomSync=t}}constructor(i,o=!1){if(!Tt._xmldomSync)throw new Error("You must call QRCodeJs.initXmldom() before constructing QRCodeJs");const{DOMImplementation:n,DOMParser:r,XMLSerializer:s}=Tt._xmldomSync,a=(new n).createDocument(null,"");global.XMLSerializer=s,global.DOMParser=r;const l=new Map,h=async e=>{try{if("string"==typeof e){let i=l.get(e);return i||(i=new Promise((async(i,o)=>{const n=new AbortController,r=setTimeout((()=>{n.abort(),o(new Error("Image load timed out"))}),15e3);try{const o=await fetch(e,{signal:n.signal});if(!o.ok)throw new Error(`HTTP ${o.status} - ${o.statusText}`);const s=Buffer.from(await o.arrayBuffer()),a=await t(s);clearTimeout(r),i({contentType:o.headers.get("Content-Type")||a?.mime,data:s})}catch(t){clearTimeout(r),o(t)}})),l.set(e,i),i)}{const i=Buffer.isBuffer(e)?e:Buffer.from(await e.arrayBuffer()),o=await t(i);return{contentType:o?.mime,data:i}}}catch(t){return console.error("Image loading failed:",t),{contentType:"image/svg+xml",data:Buffer.from(vt.split(",")[1],"base64")}}};super({...i,document:i.document||a,imageTools:i.imageTools||{toDataURL:async t=>{try{if("string"==typeof t&&t.startsWith("data:"))return t;const{contentType:e,data:i}=await h(t);return`data:${e?.replace("application/xml","image/svg+xml")||"image/png"};base64,${i.toString("base64")}`}catch(t){return console.error("Data URL conversion failed:",t),vt}},getSize:async t=>{try{const{data:o}=Buffer.isBuffer(i.image)?{data:i.image}:await h(t),n=e(o);return{width:n.width||200,height:n.height||200}}catch(t){return console.error("Image size detection failed:",t),{width:200,height:200}}}}}),o||(Wt.instance.isInitialized||Wt.instance.hls?Wt.instance.isInitialized&&!Wt.instance.hls&&console.warn("QRCode.js (Server): No valid license found. Some features may be limited."):console.warn("QRCode.js (Server): License state not yet initialized. Call QRCodeJs.initializeIfNeeded() or activate a license."))}async validateScanning(){if(!this._hls())return console.warn("QRCode.js (Server): Scanning validation requires a valid license."),Promise.reject({isValid:!1,message:"Valid license required for scanning validation."});try{const t=await this.serialize(),{qrValidator:e}=await import("./chunks/scan-validator-node-BGUxkBJt.js"),i=await e.validateZbar(t,!1);if(i.isValid)return i;{console.debug("Zxing validation failed, trying Zbar...");const{qrValidatorZxing:e}=await import("./chunks/scan-validator-zxing-node-CV9K2v4n.js");return await e.validateZxing(t)}}catch(t){return console.warn(`Zbar and Zxing validation threw an error: ${t instanceof Error?t.message:String(t)}`),Promise.reject({isValid:!1,message:t instanceof Error?t.message:"Zbar and Zxing validation failed with an error"})}}static useTemplate(t){return new qt(t)}static useStyle(t){return(new qt).useStyle(t)}}Tt._xmldomSync=null,Tt._initPromise=null,Tt._initPromise=Tt.initXmldom();class qt{constructor(t){let e=st;if("string"==typeof t){const i=t;dt[i]?e=dt[i]:console.warn(`QR Code template "${i}" not found. Using default basic template.`)}else t&&(e=t);this.config=C({},e)}useTemplate(t){let e={};if("string"==typeof t){const i=t;dt[i]?e=dt[i]:console.warn(`QR Code template "${i}" not found in useTemplate chain. Ignoring.`)}else e=t;return this.config=C(e,this.config),this}useStyle(t){let e=null;if("string"==typeof t){const i=t;if(!mt[i])return console.warn(`QR Code style "${i}" not found. Ignoring.`),this;e=mt[i]}else e=t;if(e){const{isValid:t,errors:i}=et(e);t||console.warn("Invalid style options provided to QRCodeBuilder:",i);const o=tt(e);this.config=C(this.config,o)}return this}options(t){return this.config=C(this.config,t),new Tt(this.config)}build(){return new Tt(this.config)}}class Xt extends Tt{_hls(){return!0}constructor(t){super(t,!0)}}export{E as CornerDotType,z as CornerSquareType,N as DotType,w as ErrorCorrectionLevel,_ as ErrorCorrectionPercents,Yt as FileExtension,U as GradientType,H as ImageMode,y as Mode,Tt as QRCodeJs,K as ShapeType,k as TypeNumber,Xt as _,Vt as browserUtils};
|
1
|
+
import{fileTypeFromBuffer as t}from"file-type";import e from"image-size";import{importSPKI as i,jwtVerify as o,errors as n}from"jose";const r={width:300,height:300,margin:0};class s{constructor(){this.buffer=[],this.length=0}getBuffer(){return this.buffer}getLengthInBits(){return this.length}toString(){let t="";for(let e=0;e<this.getLengthInBits();e+=1)t+=this.getBit(e)?"1":"0";return t}getBit(t){return 1==(this.buffer[~~(t/8)]>>>7-t%8&1)}put(t,e){for(let i=0;i<e;i+=1)this.putBit(1==(t>>>e-i-1&1))}putBit(t){this.length==8*this.buffer.length&&this.buffer.push(0),t&&(this.buffer[~~(this.length/8)]|=128>>>this.length%8),this.length+=1}}var a,l,h;!function(t){t[t.L=1]="L",t[t.M=0]="M",t[t.Q=3]="Q",t[t.H=2]="H"}(a||(a={}));class d{constructor(){throw new Error("error")}static glog(t){if(t<1)throw new Error("log("+t+")");return d.LOG_TABLE[t]}static gexp(t){for(;t<0;)t+=255;for(;t>=256;)t-=255;return d.EXP_TABLE[t]}}d.initialize=(()=>{d.EXP_TABLE=[],d.LOG_TABLE=[];for(let t=0;t<256;t+=1)d.EXP_TABLE.push(t<8?1<<t:d.EXP_TABLE[t-4]^d.EXP_TABLE[t-5]^d.EXP_TABLE[t-6]^d.EXP_TABLE[t-8]),d.LOG_TABLE.push(0);for(let t=0;t<255;t+=1)d.LOG_TABLE[d.EXP_TABLE[t]]=t})();class c{constructor(t,e=0){let i=0;for(;i<t.length&&0==t[i];)i+=1;this.num=[];const o=t.length-i;for(let e=0;e<o;e+=1)this.num.push(t[i+e]);for(let t=0;t<e;t+=1)this.num.push(0)}getAt(t){return this.num[t]}getLength(){return this.num.length}toString(){let t="";for(let e=0;e<this.getLength();e+=1)e>0&&(t+=","),t+=this.getAt(e);return t.toString()}toLogString(){let t="";for(let e=0;e<this.getLength();e+=1)e>0&&(t+=","),t+=d.glog(this.getAt(e));return t.toString()}multiply(t){const e=[],i=this.getLength()+t.getLength()-1;for(let t=0;t<i;t+=1)e.push(0);for(let i=0;i<this.getLength();i+=1)for(let o=0;o<t.getLength();o+=1)e[i+o]^=d.gexp(d.glog(this.getAt(i))+d.glog(t.getAt(o)));return new c(e)}mod(t){if(this.getLength()-t.getLength()<0)return this;const e=d.glog(this.getAt(0))-d.glog(t.getAt(0)),i=[];for(let t=0;t<this.getLength();t+=1)i.push(this.getAt(t));for(let o=0;o<t.getLength();o+=1)i[o]^=d.gexp(d.glog(t.getAt(o))+e);return new c(i).mod(t)}}!function(t){t[t.MODE_NUMBER=1]="MODE_NUMBER",t[t.MODE_ALPHA_NUM=2]="MODE_ALPHA_NUM",t[t.MODE_8BIT_BYTE=4]="MODE_8BIT_BYTE",t[t.MODE_KANJI=8]="MODE_KANJI"}(l||(l={}));class u{constructor(t,e){this.mode=t,this.data=e}getMode(){return this.mode}getData(){return this.data}getLengthInBits(t){if(1<=t&&t<10)switch(this.mode){case l.MODE_NUMBER:return 10;case l.MODE_ALPHA_NUM:return 9;case l.MODE_8BIT_BYTE:case l.MODE_KANJI:return 8;default:throw new Error("mode:"+this.mode)}else if(t<27)switch(this.mode){case l.MODE_NUMBER:return 12;case l.MODE_ALPHA_NUM:return 11;case l.MODE_8BIT_BYTE:return 16;case l.MODE_KANJI:return 10;default:throw new Error("mode:"+this.mode)}else{if(!(t<41))throw new Error("typeNumber:"+t);switch(this.mode){case l.MODE_NUMBER:return 14;case l.MODE_ALPHA_NUM:return 13;case l.MODE_8BIT_BYTE:return 16;case l.MODE_KANJI:return 12;default:throw new Error("mode:"+this.mode)}}}}class p extends u{constructor(t,e){super(l.MODE_8BIT_BYTE,t),this.stringToBytes=e}write(t){this.stringToBytes(this.getData()).forEach((e=>t.put(e,8)))}getLength(){return this.stringToBytes(this.getData()).length}}class m extends u{constructor(t){super(l.MODE_ALPHA_NUM,t)}write(t){const e=this.getData();let i=0;for(;i+1<e.length;)t.put(45*m.getCode(e.charAt(i))+m.getCode(e.charAt(i+1)),11),i+=2;i<e.length&&t.put(m.getCode(e.charAt(i)),6)}getLength(){return this.getData().length}static getCode(t){if("0"<=t&&t<="9")return t.charCodeAt(0)-"0".charCodeAt(0);if("A"<=t&&t<="Z")return t.charCodeAt(0)-"A".charCodeAt(0)+10;switch(t){case" ":return 36;case"$":return 37;case"%":return 38;case"*":return 39;case"+":return 40;case"-":return 41;case".":return 42;case"/":return 43;case":":return 44;default:throw new Error("illegal char :"+t)}}}class g extends u{constructor(t,e){super(l.MODE_KANJI,t),this.stringToBytes=e}write(t){const e=this.stringToBytes(this.getData());let i=0;for(;i+1<e.length;){let o=(255&e[i])<<8|255&e[i+1];if(33088<=o&&o<=40956)o-=33088;else{if(!(57408<=o&&o<=60351))throw new Error("illegal char at "+(i+1)+"/"+o);o-=49472}o=192*(o>>>8&255)+(255&o),t.put(o,13),i+=2}if(i<e.length)throw new Error("illegal char at "+(i+1))}getLength(){return this.stringToBytes(this.getData()).length/2}}class f extends u{constructor(t){super(l.MODE_NUMBER,t)}write(t){const e=this.getData();let i=0;for(;i+2<e.length;)t.put(f.strToNum(e.substring(i,i+3)),10),i+=3;i<e.length&&(e.length-i==1?t.put(f.strToNum(e.substring(i,i+1)),4):e.length-i==2&&t.put(f.strToNum(e.substring(i,i+2)),7))}getLength(){return this.getData().length}static strToNum(t){let e=0;for(let i=0;i<t.length;i+=1)e=10*e+f.chatToNum(t.charAt(i));return e}static chatToNum(t){if("0"<=t&&t<="9")return t.charCodeAt(0)-"0".charCodeAt(0);throw new Error("illegal char :"+t)}}!function(t){t[t.PATTERN000=0]="PATTERN000",t[t.PATTERN001=1]="PATTERN001",t[t.PATTERN010=2]="PATTERN010",t[t.PATTERN011=3]="PATTERN011",t[t.PATTERN100=4]="PATTERN100",t[t.PATTERN101=5]="PATTERN101",t[t.PATTERN110=6]="PATTERN110",t[t.PATTERN111=7]="PATTERN111"}(h||(h={}));class b{constructor(){throw new Error("error")}static getPatternPosition(t){return b.PATTERN_POSITION_TABLE[t-1]}static getMaxLength(t,e,i){const o=t-1;let n=0,r=0;switch(i){case a.L:n=0;break;case a.M:n=1;break;case a.Q:n=2;break;case a.H:n=3;break;default:throw new Error("e:"+i)}switch(e){case l.MODE_NUMBER:r=0;break;case l.MODE_ALPHA_NUM:r=1;break;case l.MODE_8BIT_BYTE:r=2;break;case l.MODE_KANJI:r=3;break;default:throw new Error("m:"+e)}return b.MAX_LENGTH[o][n][r]}static getErrorCorrectPolynomial(t){let e=new c([1]);for(let i=0;i<t;i+=1)e=e.multiply(new c([1,d.gexp(i)]));return e}static getMaskFunc(t){switch(t){case h.PATTERN000:return(t,e)=>(t+e)%2==0;case h.PATTERN001:return(t,e)=>t%2==0;case h.PATTERN010:return(t,e)=>e%3==0;case h.PATTERN011:return(t,e)=>(t+e)%3==0;case h.PATTERN100:return(t,e)=>(~~(t/2)+~~(e/3))%2==0;case h.PATTERN101:return(t,e)=>t*e%2+t*e%3==0;case h.PATTERN110:return(t,e)=>(t*e%2+t*e%3)%2==0;case h.PATTERN111:return(t,e)=>(t*e%3+(t+e)%2)%2==0;default:throw new Error("mask:"+t)}}static getLostPoint(t){const e=t.getModuleCount();let i=0;for(let o=0;o<e;o+=1)for(let n=0;n<e;n+=1){let r=0;const s=t.isDark(o,n);for(let i=-1;i<=1;i+=1)if(!(o+i<0||e<=o+i))for(let a=-1;a<=1;a+=1)n+a<0||e<=n+a||0==i&&0==a||s==t.isDark(o+i,n+a)&&(r+=1);r>5&&(i+=3+r-5)}for(let o=0;o<e-1;o+=1)for(let n=0;n<e-1;n+=1){let e=0;t.isDark(o,n)&&(e+=1),t.isDark(o+1,n)&&(e+=1),t.isDark(o,n+1)&&(e+=1),t.isDark(o+1,n+1)&&(e+=1),0!=e&&4!=e||(i+=3)}for(let o=0;o<e;o+=1)for(let n=0;n<e-6;n+=1)t.isDark(o,n)&&!t.isDark(o,n+1)&&t.isDark(o,n+2)&&t.isDark(o,n+3)&&t.isDark(o,n+4)&&!t.isDark(o,n+5)&&t.isDark(o,n+6)&&(i+=40);for(let o=0;o<e;o+=1)for(let n=0;n<e-6;n+=1)t.isDark(n,o)&&!t.isDark(n+1,o)&&t.isDark(n+2,o)&&t.isDark(n+3,o)&&t.isDark(n+4,o)&&!t.isDark(n+5,o)&&t.isDark(n+6,o)&&(i+=40);let o=0;for(let i=0;i<e;i+=1)for(let n=0;n<e;n+=1)t.isDark(n,i)&&(o+=1);return i+=10*(Math.abs(100*o/e/e-50)/5),i}static getBCHTypeInfo(t){let e=t<<10;for(;b.getBCHDigit(e)-b.getBCHDigit(b.G15)>=0;)e^=b.G15<<b.getBCHDigit(e)-b.getBCHDigit(b.G15);return(t<<10|e)^b.G15_MASK}static getBCHTypeNumber(t){let e=t<<12;for(;b.getBCHDigit(e)-b.getBCHDigit(b.G18)>=0;)e^=b.G18<<b.getBCHDigit(e)-b.getBCHDigit(b.G18);return t<<12|e}static getBCHDigit(t){let e=0;for(;0!=t;)e+=1,t>>>=1;return e}}b.PATTERN_POSITION_TABLE=[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],b.MAX_LENGTH=[[[41,25,17,10],[34,20,14,8],[27,16,11,7],[17,10,7,4]],[[77,47,32,20],[63,38,26,16],[48,29,20,12],[34,20,14,8]],[[127,77,53,32],[101,61,42,26],[77,47,32,20],[58,35,24,15]],[[187,114,78,48],[149,90,62,38],[111,67,46,28],[82,50,34,21]],[[255,154,106,65],[202,122,84,52],[144,87,60,37],[106,64,44,27]],[[322,195,134,82],[255,154,106,65],[178,108,74,45],[139,84,58,36]],[[370,224,154,95],[293,178,122,75],[207,125,86,53],[154,93,64,39]],[[461,279,192,118],[365,221,152,93],[259,157,108,66],[202,122,84,52]],[[552,335,230,141],[432,262,180,111],[312,189,130,80],[235,143,98,60]],[[652,395,271,167],[513,311,213,131],[364,221,151,93],[288,174,119,74]]],b.G15=1335,b.G18=7973,b.G15_MASK=21522;class O{constructor(t,e){this.totalCount=t,this.dataCount=e}getDataCount(){return this.dataCount}getTotalCount(){return this.totalCount}static getRSBlocks(t,e){const i=O.getRsBlockTable(t,e),o=i.length/3,n=[];for(let t=0;t<o;t+=1){const e=i[3*t+0],o=i[3*t+1],r=i[3*t+2];for(let t=0;t<e;t+=1)n.push(new O(o,r))}return n}static getRsBlockTable(t,e){switch(e){case a.L:return O.RS_BLOCK_TABLE[4*(t-1)+0];case a.M:return O.RS_BLOCK_TABLE[4*(t-1)+1];case a.Q:return O.RS_BLOCK_TABLE[4*(t-1)+2];case a.H:return O.RS_BLOCK_TABLE[4*(t-1)+3]}throw new Error("tn:"+t+"/ecl:"+e)}}O.RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12,7,37,13],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]];const k=Array(41).fill(0).map(((t,e)=>e));var w,y;!function(t){t.L="L",t.M="M",t.Q="Q",t.H="H"}(w||(w={})),function(t){t.numeric="numeric",t.alphanumeric="alphanumeric",t.byte="byte",t.kanji="kanji",t.unicode="unicode"}(y||(y={}));class Z{constructor(t=0,e=w.L){this.modules=[],this.moduleCount=0,this.typeNumber=t,this.errorCorrectLevel=a[e],this.qrDataList=[]}getTypeNumber(){return this.typeNumber}setTypeNumber(t){this.typeNumber=t}getErrorCorrectLevel(){return this.errorCorrectLevel}setErrorCorrectLevel(t){this.errorCorrectLevel=t}clearData(){this.qrDataList=[]}addData(t,e=y.byte){if(t instanceof u)this.qrDataList.push(t);else{if("string"!=typeof t)throw new Error(typeof t);switch(e){case y.numeric:this.qrDataList.push(new f(t));break;case y.alphanumeric:this.qrDataList.push(new m(t));break;case y.byte:this.qrDataList.push(new p(t,Z.stringToBytesFuncs.default));break;case y.unicode:this.qrDataList.push(new p(t,Z.stringToBytesFuncs.UTF8));break;case y.kanji:this.qrDataList.push(new g(t,Z.stringToBytesFuncs.SJIS));break;default:throw new Error("mode:"+e)}}}isDark(t,e){return!(!this.modules[t]||null==this.modules[t][e])&&this.modules[t][e]}getModuleCount(){return this.moduleCount}make(){if(this.typeNumber<1){let t=1;for(;t<40;t++){const e=O.getRSBlocks(t,this.errorCorrectLevel),i=new s;this.qrDataList.forEach((e=>{i.put(e.getMode(),4),i.put(e.getLength(),e.getLengthInBits(t)),e.write(i)}));const o=e.reduce(((t,e)=>t+e.getDataCount()),0);if(i.getLengthInBits()<=8*o)break}this.typeNumber=t}this.makeImpl(!1,this.getBestMaskPattern())}getBestMaskPattern(){let t=0,e=0;for(let i=0;i<8;i+=1){this.makeImpl(!0,i);const o=b.getLostPoint(this);(0==i||t>o)&&(t=o,e=i)}return e}makeImpl(t,e){this.moduleCount=4*this.typeNumber+17,this.modules=[];for(let t=0;t<this.moduleCount;t+=1){this.modules.push([]);for(let e=0;e<this.moduleCount;e+=1)this.modules[t].push(null)}this.setupPositionProbePattern(0,0),this.setupPositionProbePattern(this.moduleCount-7,0),this.setupPositionProbePattern(0,this.moduleCount-7),this.setupPositionAdjustPattern(),this.setupTimingPattern(),this.setupTypeInfo(t,e),this.typeNumber>=7&&this.setupTypeNumber(t);const i=Z.createData(this.typeNumber,this.errorCorrectLevel,this.qrDataList);this.mapData(i,e)}mapData(t,e){let i=-1,o=this.moduleCount-1,n=7,r=0;const s=b.getMaskFunc(e);for(let e=this.moduleCount-1;e>0;e-=2)for(6==e&&(e-=1);;){for(let i=0;i<2;i+=1)if(null==this.modules[o][e-i]){let a=!1;r<t.length&&(a=1==(t[r]>>>n&1));s(o,e-i)&&(a=!a),this.modules[o][e-i]=a,n-=1,-1==n&&(r+=1,n=7)}if(o+=i,o<0||this.moduleCount<=o){o-=i,i=-i;break}}}setupPositionAdjustPattern(){const t=b.getPatternPosition(this.typeNumber);t.forEach((e=>{t.forEach((t=>{if(null==this.modules[e][t])for(let i=-2;i<=2;i+=1)for(let o=-2;o<=2;o+=1)this.modules[e+i][t+o]=-2==i||2==i||-2==o||2==o||0==i&&0==o}))}))}setupPositionProbePattern(t,e){for(let i=-1;i<=7;i+=1)for(let o=-1;o<=7;o+=1)t+i<=-1||this.moduleCount<=t+i||e+o<=-1||this.moduleCount<=e+o||(this.modules[t+i][e+o]=0<=i&&i<=6&&(0==o||6==o)||0<=o&&o<=6&&(0==i||6==i)||2<=i&&i<=4&&2<=o&&o<=4)}setupTimingPattern(){for(let t=8;t<this.moduleCount-8;t+=1)null==this.modules[t][6]&&(this.modules[t][6]=t%2==0);for(let t=8;t<this.moduleCount-8;t+=1)null==this.modules[6][t]&&(this.modules[6][t]=t%2==0)}setupTypeNumber(t){const e=b.getBCHTypeNumber(this.typeNumber);for(let i=0;i<18;i+=1)this.modules[~~(i/3)][i%3+this.moduleCount-8-3]=!t&&1==(e>>i&1);for(let i=0;i<18;i+=1)this.modules[i%3+this.moduleCount-8-3][~~(i/3)]=!t&&1==(e>>i&1)}setupTypeInfo(t,e){const i=this.errorCorrectLevel<<3|e,o=b.getBCHTypeInfo(i);for(let e=0;e<15;e+=1){const i=!t&&1==(o>>e&1);e<6?this.modules[e][8]=i:e<8?this.modules[e+1][8]=i:this.modules[this.moduleCount-15+e][8]=i}for(let e=0;e<15;e+=1){const i=!t&&1==(o>>e&1);e<8?this.modules[8][this.moduleCount-e-1]=i:e<9?this.modules[8][15-e-1+1]=i:this.modules[8][15-e-1]=i}this.modules[this.moduleCount-8][8]=!t}static createData(t,e,i){const o=O.getRSBlocks(t,e),n=new s;i.forEach((e=>{n.put(e.getMode(),4),n.put(e.getLength(),e.getLengthInBits(t)),e.write(n)}));const r=o.reduce(((t,e)=>t+e.getDataCount()),0);if(n.getLengthInBits()>8*r)throw new Error("code length overflow. ("+n.getLengthInBits()+">"+8*r+")");for(n.getLengthInBits()+4<=8*r&&n.put(0,4);n.getLengthInBits()%8!=0;)n.putBit(!1);for(;!(n.getLengthInBits()>=8*r||(n.put(Z.PAD0,8),n.getLengthInBits()>=8*r));)n.put(Z.PAD1,8);return Z.createBytes(n,o)}static createBytes(t,e){let i=0,o=0,n=0;const r=new Array(e.length).map((t=>[])),s=new Array(e.length).map((t=>[]));function a(t){const e=[];for(let i=0;i<t;i+=1)e.push(0);return e}for(let l=0;l<e.length;l+=1){const h=e[l].getDataCount(),d=e[l].getTotalCount()-h;o=Math.max(o,h),n=Math.max(n,d),r[l]=a(h);for(let e=0;e<r[l].length;e+=1)r[l][e]=255&t.getBuffer()[e+i];i+=h;const u=b.getErrorCorrectPolynomial(d),p=new c(r[l],u.getLength()-1).mod(u);s[l]=a(u.getLength()-1);for(let t=0;t<s[l].length;t+=1){const e=t+p.getLength()-s[l].length;s[l][t]=e>=0?p.getAt(e):0}}const l=a(e.reduce(((t,e)=>t+e.getTotalCount()),0));let h=0;for(let t=0;t<o;t+=1)for(let i=0;i<e.length;i+=1)t<r[i].length&&(l[h]=r[i][t],h+=1);for(let t=0;t<n;t+=1)for(let i=0;i<e.length;i+=1)t<s[i].length&&(l[h]=s[i][t],h+=1);return l}}Z.stringToBytesFuncs={default(t){const e=[];for(let i=0;i<t.length;i+=1){const o=t.charCodeAt(i);e.push(255&o)}return e}},Z.PAD0=236,Z.PAD1=17;const S=t=>!!t&&"object"==typeof t&&!Array.isArray(t);function A(t,e=!1){const i=t.split("").reverse().join("");return e?i.toLocaleUpperCase():i}function C(t,...e){if(!e.length)return t;const i=e.shift();return void 0!==i&&S(t)&&S(i)?(t={...t},Object.keys(i).forEach((e=>{const o=t[e],n=i[e];Array.isArray(o)&&Array.isArray(n)?t[e]=n:S(o)&&S(n)?t[e]=C({...o},n):t[e]=n})),C(t,...e)):t}const j=A("rq",!0)+A("-",!0)+A("talp",!0)+A("mrof",!0),I=A("a".repeat(6)+"#",!0),W="top",Y="bottom",J="left",V="right";const v=t=>"number"==typeof t?t:parseInt(t.replace("%",""),10),T=(t,e="0%")=>t?t.endsWith("%")?t:t+"%":e,q="text",X="image",M={disabled:!1,enableText:!0,type:"text",value:j},G=(t,e)=>!t?.decorations?.[e]?.disabled,R=(t,e,i)=>!i||!t?.decorations?.[e]?.disabled,B=t=>{if("string"==typeof t)return t;if(!t)return"";const{fontFace:e="Helvetica",fontSize:i=20,fontColor:o="#000000",letterSpacing:n=0,fontWeight:r="normal"}=t;return`font-weight: ${r}; font-size: ${i}px; font-family: ${e}; fill: ${o}; letter-spacing: ${n}px;`};M.style={fontFace:"Helvetica",fontSize:20,fontColor:I,letterSpacing:2};const D={...M};const x=({document:t,position:e,rotate:i,flip:o,thickness:n,height:r,width:s,round:a,offset:l=0,curveAdjustment:h=0,curveRadius:d,outerBorderPadding:c=0,instanceId:u})=>{const p=Math.min(s,r),m=t.createElementNS("http://www.w3.org/2000/svg","path"),g=(t=>{if(t>=50)return 1;const e=[{R:0,P:0},{R:5,P:0},{R:10,P:.12},{R:15,P:.2},{R:20,P:.32},{R:25,P:.44},{R:30,P:.56},{R:35,P:.65},{R:40,P:.78},{R:45,P:.9},{R:50,P:1}],i=e.find((e=>t<=e.R))||e[0],o=e.find((e=>t>e.R))||e[e.length-1],{R:n,P:r}=i,{R:s,P:a}=o;return r+(t-n)/(s-n)*(a-r)})("string"==typeof a?v(a):a),f=void 0!==d?function(t){let e;return e="number"==typeof t?t:"string"==typeof t?(t.includes("%"),parseFloat(t)):0,e=Math.min(Math.max(e,0),50),.5+e/50*.5}(d):g,b=(p-n-2*c-10*h*2)/2*f,O=((t,e,i,o)=>{const n=i/2,r=o/2;let s="";return t&&(s+=`rotate(${t}, ${n}, ${r})`),e&&(s+=`translate(${n}, ${r}) scale(1, -1) translate(${-n}, ${-r})`),s.trim()})(i,o,s,r);m.setAttribute("id",`${e}-text-path-${u}`),m.setAttribute("transform",O);const{startX:k,startY:w,pathWidth:y}=((t,e,i,o,n={})=>{let r=e/2,s=e/2+o,a=t-e;return i&&(a-=2*i,r+=i,s+=i),r+=n.left||0,s+=n.top||0,{startX:r,startY:s,pathWidth:a}})(p,n,c,l);return m.setAttribute("d",((t,e,i,o)=>`M${t},${e+o} a${o},${o} 0 0 1 ${o},${-o} h${i-2*o} a${o},${o} 0 0 1 ${o},${o}`)(k,w,y,b)),m},L=({document:t,thickness:e,value:i,svg:o,position:n,height:r,width:s,round:a,style:l,offset:h=0,curveAdjustment:d=0,curveDisabled:c=!1,outerBorderPadding:u=0,curveRadius:p,instanceId:m,noBorderThickness:g,enabledBorders:f})=>{let b=0,O=!1;if(n===V?b=90:n===Y?O=!c:n===J&&(b=270),c){const a=t.createElementNS("http://www.w3.org/2000/svg","text");let d=s/2,c=(r-Math.min(s,r)+e)/2+2*u+h-(r-s>0?0:(s-r)/2);if(n===Y?c=r-2*u-e/2-h:n===W&&(c=2*u+e/2+h),n===W||n===Y){let t=0;!f[J]&&f[V]?t=-(e-g)/2:f[J]&&!f[V]&&(t=(e-g)/2),d+=t}else if(n===J||n===V){let t=0;!f[W]&&f[Y]?t=n===J?(e-g)/2:-(e-g)/2:f[W]&&!f[Y]&&(t=n===J?-(e-g)/2:(e-g)/2),d+=t}let p="";0!==b&&(p+=`rotate(${b}, ${s/2}, ${r/2})`),a.setAttribute("x",d.toString()),a.setAttribute("y",c.toString()),a.setAttribute("text-anchor","middle"),a.setAttribute("dominant-baseline","middle"),p&&a.setAttribute("transform",p.trim()),a.textContent=i;const m=B(l);a.setAttribute("style",m),o.appendChild(a)}else{let c=o.getElementsByTagName("defs")[0];c||(c=t.createElementNS("http://www.w3.org/2000/svg","defs"),o.appendChild(c));const k=x({document:t,position:n,rotate:b,flip:O,thickness:e,height:r,width:s,round:a,offset:h,curveAdjustment:d,enabledBorders:f,outerBorderPadding:u,curveRadius:p,noBorderThickness:g,instanceId:m}),{x:w,y}=function(t,e,i,o){let n=0,r=0;const s=(e-i)/2;return o.left&&o.right&&o.top&&o.bottom?(n=0,r=0):"top"===t||"bottom"===t?!o.left&&o.right?n=-s:(o.left&&!o.right||o.left&&o.right)&&(n=s):"left"!==t&&"right"!==t||(!o.top&&o.bottom?o.left&&o.right?(n="left"===t?2*+s:0,r=-s):n="left"===t?+s:-s:o.top&&!o.bottom?o.left&&o.right?(n="left"===t?0:2*s,r=-s):n=0:o.top&&o.bottom?r=o.left&&o.right?2*+s:+s:(n=o.left&&o.right?2*+s:+s,r=o.left&&o.right?2*-s:-s)),{x:n,y:r}}(n,e,g,f);if(0!==w||0!==y){const t=`${k.getAttribute("transform")||""} translate(${w}, ${y})`.trim();k.setAttribute("transform",t)}c.appendChild(k),o.appendChild((({document:t,value:e,position:i,style:o,instanceId:n})=>{const r=t.createElementNS("http://www.w3.org/2000/svg","text"),s=t.createElementNS("http://www.w3.org/2000/svg","textPath");s.setAttribute("href",`#${i}-text-path-${n}`),s.setAttribute("text-anchor","middle"),s.setAttribute("startOffset","50%"),s.textContent=e,s.setAttribute("alignment-baseline","middle");const a=B(o);return r.setAttribute("style",a),r.appendChild(s),r})({document:t,position:n,rotate:b,value:i,style:l,instanceId:m}))}},P=({document:t,thickness:e,value:i,svg:o,position:n,height:r,width:s,offset:a=0,style:l})=>{const h=t.createElementNS("http://www.w3.org/2000/svg","image"),d=Math.min(s,r);let c=(s-d+e)/2,u=(r-d+e)/2+a;n===W?c+=(d-e)/2:n===V?(c+=d-e,u+=(d-e)/2):n===Y?(c+=(d-e)/2,u+=d-e):n===J&&(u+=(d-e)/2),h.setAttribute("href",i||""),h.setAttribute("x",`${c}`),h.setAttribute("y",`${u}`),h.setAttribute("style",l?.toString()||""),o.appendChild(h)},F=t=>(e,i,o,n,r,s,a,l,h)=>{const{instanceId:d}=i,c=o,u=o,p=Math.min(c,u),m=T(t.radius),g=m&&v(m)>0?v(m)/100*p:0,f=T(t?.inner?.radius,g),b=Math.min(Math.max(t.inner?.scale??1,0),1.5),O=t.inner?.horizontalOffset??0,k=t.inner?.verticalOffset??0,w=t.thickness,y=t.color??"#000000",Z=t.borderOuter?t.borderOuter.thickness/2:0,S=t.borderInner?t.borderInner.thickness/2:0,A=i.document,C=r.left+r.right,j=r.top+r.bottom,I=n(w,g),Y={top:G(t,"top"),right:G(t,"right"),bottom:R(t,"bottom",h()),left:G(t,"left")},M=A.createElementNS("http://www.w3.org/2000/svg","rect"),B={x:s.left/2,y:s.top/2,width:p+C-s.left,height:p+j-s.top,fill:y,rx:m??g};Object.entries(B).forEach((([t,e])=>{M.setAttribute(t,e.toString())}));const x=A.createElementNS("http://www.w3.org/2000/svg","rect"),F=g>=200?"50%":g,U=c+C-(r.left+r.right+a.left+a.right+s.left+s.right),N=u+j-(r.top+r.bottom+a.top+a.bottom+s.top+s.bottom),E=U*b,z=N*b,K=(U-E)/2-O,H=(N-z)/2-k,Q={x:r.left+a.left+s.left+K,y:r.top+a.top+s.top+H,width:E,height:z,fill:I?.getAttribute("fill")||"#ffffff",rx:f??F};Object.entries(Q).forEach((([t,e])=>x.setAttribute(t,e.toString()))),I&&(({strokePath:t,backgroundMaskGroup:e,svgElement:i,color:o})=>{t.setAttribute("fill",e?.getAttribute("fill")||o),e.setAttribute("fill","none"),e.setAttribute("stroke-width","0"),i.insertBefore(e,i.firstChild)})({strokePath:x,backgroundMaskGroup:I,svgElement:e,color:y});let $=e.getElementsByTagName("defs")[0];$||($=A.createElementNS("http://www.w3.org/2000/svg","defs"),e.insertBefore($,e.firstChild));const _=A.createElementNS("http://www.w3.org/2000/svg","mask");_.setAttribute("id",`qr-mask-${d}`),_.setAttribute("maskUnits","userSpaceOnUse");const tt=A.createElementNS("http://www.w3.org/2000/svg","rect");if(tt.setAttribute("fill","white"),Object.entries(Q).forEach((([t,e])=>{"fill"!==t&&tt.setAttribute(t,e.toString())})),$.appendChild(_),_.appendChild(tt),e.insertBefore(x,e.firstChild?.nextSibling),e.insertBefore(M,e.firstChild),t.borderOuter&&t.borderOuter.thickness>0){const i=A.createElementNS("http://www.w3.org/2000/svg","rect"),o={x:s.left/2,y:s.top/2,width:c+C-s.left,height:u+j-s.top,fill:"none",rx:m??g,stroke:t.borderOuter.color,"stroke-width":t.borderOuter.thickness};Object.entries(o).forEach((([t,e])=>i.setAttribute(t,e.toString()))),e.insertBefore(i,e.firstChild?.nextSibling)}if(I){if(Array.from(e.getElementsByTagName("rect"))[0]){const t=e.firstChild;t?e.insertBefore(I,t):e.appendChild(I)}}if(t.borderInner&&t.borderInner.thickness>0){const i=A.createElementNS("http://www.w3.org/2000/svg","rect"),o={x:r.left+a.left+s.left+K,y:r.top+a.top+s.top+H,width:E,height:z,fill:"none",stroke:t.borderInner.color,"stroke-width":a.left,rx:f??F};Object.entries(o).forEach((([t,e])=>i.setAttribute(t,e.toString()))),e.appendChild(i)}let et={...D};if(!h()){const e=((t,e=[W,J,V])=>{for(const i of e){const e=t.decorations?.[i];if(e&&e.enableText&&!e.disabled&&e.type===q&&e.style)return e.style}})(t);e&&(et={...et,style:e})}const it=h()?t:{...t,decorations:{...t.decorations,bottom:{...t.decorations?.bottom||{},...et,disabled:!1,enableText:!0}}};for(const t in it.decorations){const i=it.decorations[t];if(!i?.enableText||!Y[t])continue;const o=i.type===X?P:i.type===q?L:void 0;o&&o({document:A,svg:e,position:t,thickness:it.thickness,value:i.value,style:i.style,offset:i.offset,curveAdjustment:i.curveAdjustment,curveDisabled:i.curveDisabled,height:u+j,width:c+C,enabledBorders:Y,outerBorderPadding:Z,innerBorderPadding:S,round:m,curveRadius:i.curveRadius,instanceId:d,noBorderThickness:l})}};var U,N,E,z,K,H;function Q(t){const e={...t};if(!e.colorStops||!e.colorStops.length)throw new Error("Field 'colorStops' is required in gradient");return e.rotation?e.rotation=Number(e.rotation):e.rotation=0,e.colorStops=e.colorStops.map((t=>({...t,offset:Number(t.offset)}))),e}function $(t){const e={...t};return e.imageOptions={...e.imageOptions,imageSize:Math.min(1,Number(e.imageOptions?.imageSize))||1,margin:Number(e.imageOptions?.margin)||0},e.imageOptions.mode==H.overlay&&(e.imageOptions.margin=0),e.imageOptions?.fill?.gradient&&(e.imageOptions.fill.gradient=Q(e.imageOptions.fill.gradient)),e.dotsOptions={...e.dotsOptions},e.dotsOptions.gradient&&(e.dotsOptions.gradient=Q(e.dotsOptions.gradient)),e.dotsOptions.size=Math.round(Math.max(0,e.dotsOptions.size)||10),e.cornersSquareOptions&&(e.cornersSquareOptions={...e.cornersSquareOptions},e.cornersSquareOptions.gradient&&(e.cornersSquareOptions.gradient=Q(e.cornersSquareOptions.gradient))),e.cornersDotOptions&&(e.cornersDotOptions={...e.cornersDotOptions},e.cornersDotOptions.gradient&&(e.cornersDotOptions.gradient=Q(e.cornersDotOptions.gradient))),e.backgroundOptions&&(e.backgroundOptions={...e.backgroundOptions},e.backgroundOptions.gradient&&(e.backgroundOptions.gradient=Q(e.backgroundOptions.gradient))),"undefined"==typeof document||e.document||(e.document=document),e}!function(t){t.radial="radial",t.linear="linear"}(U||(U={})),function(t){t.dot="dot",t.randomDot="random-dot",t.rounded="rounded",t.extraRounded="extra-rounded",t.verticalLine="vertical-line",t.horizontalLine="horizontal-line",t.classy="classy",t.classyRounded="classy-rounded",t.square="square",t.smallSquare="small-square",t.tinySquare="tiny-square",t.star="star",t.plus="plus",t.diamond="diamond"}(N||(N={})),function(t){t.dot="dot",t.square="square",t.heart="heart",t.rounded="rounded",t.classy="classy",t.outpoint="outpoint",t.inpoint="inpoint"}(E||(E={})),function(t){t.dot="dot",t.square="square",t.rounded="rounded",t.classy="classy",t.outpoint="outpoint",t.inpoint="inpoint"}(z||(z={})),function(t){t.square="square",t.circle="circle"}(K||(K={})),function(t){t.center="center",t.overlay="overlay",t.background="background"}(H||(H={}));const _={[w.L]:.07,[w.M]:.15,[w.Q]:.25,[w.H]:.3};function tt(t){const e={};return(t.primaryColor||t.dotsGradient)&&(e.dotsOptions={...e.dotsOptions,...t.primaryColor&&{color:t.primaryColor},...t.dotsGradient&&{gradient:t.dotsGradient}}),(t.secondaryColor||t.cornersGradient)&&(e.cornersSquareOptions={...e.cornersSquareOptions,...t.secondaryColor&&{color:t.secondaryColor},...t.cornersGradient&&{gradient:t.cornersGradient}},e.cornersDotOptions={...e.cornersDotOptions,...t.secondaryColor&&{color:t.secondaryColor}}),(t.thirdColor||t.cornersDotGradient)&&(e.cornersDotOptions={...e.cornersDotOptions,...t.thirdColor&&{color:t.thirdColor},...t.cornersDotGradient&&{gradient:t.cornersDotGradient}}),(t.backgroundColor||t.backgroundGradient)&&(e.backgroundOptions={...e.backgroundOptions,...t.backgroundColor&&{color:t.backgroundColor},...t.backgroundGradient&&{gradient:t.backgroundGradient}}),t.dotShape&&(e.dotsOptions={...e.dotsOptions,type:t.dotShape}),t.cornerSquareShape&&(e.cornersSquareOptions={...e.cornersSquareOptions,type:t.cornerSquareShape}),t.cornerDotShape&&(e.cornersDotOptions={...e.cornersDotOptions,type:t.cornerDotShape}),t.logo&&(e.image=t.logo),(void 0!==t.logoSize||t.logoMode||void 0!==t.logoMargin||t.logoFillColor||t.logoFillGradient)&&(e.imageOptions={...e.imageOptions,...void 0!==t.logoSize&&{imageSize:t.logoSize},...t.logoMode&&{mode:t.logoMode},...void 0!==t.logoMargin&&{margin:t.logoMargin},fill:{...e.imageOptions?.fill,...t.logoFillColor&&{color:t.logoFillColor},...t.logoFillGradient&&{gradient:t.logoFillGradient}}}),(t.borderColor||void 0!==t.borderThickness||void 0!==t.borderRadius||t.borderTextTop||t.borderTextRight||t.borderTextBottom||t.borderTextLeft||t.borderFontFace||void 0!==t.borderFontSize||t.borderFontColor||void 0!==t.borderLetterSpacing||t.borderFontWeight)&&(e.borderOptions={...e.borderOptions,hasBorder:!0,...t.borderColor&&{color:t.borderColor},...void 0!==t.borderThickness&&{thickness:t.borderThickness},...void 0!==t.borderRadius&&{radius:String(t.borderRadius)},...t.borderFontFace&&{fontFace:t.borderFontFace},...void 0!==t.borderFontSize&&{fontSize:t.borderFontSize},...t.borderFontColor&&{fontColor:t.borderFontColor},...void 0!==t.borderLetterSpacing&&{letterSpacing:t.borderLetterSpacing},...t.borderFontWeight&&{fontWeight:t.borderFontWeight},decorations:{...e.borderOptions?.decorations,...t.borderTextTop&&{top:{...e.borderOptions?.decorations?.top||{},text:t.borderTextTop}},...t.borderTextRight&&{right:{...e.borderOptions?.decorations?.right||{},text:t.borderTextRight}},...t.borderTextBottom&&{bottom:{...e.borderOptions?.decorations?.bottom||{},text:t.borderTextBottom}},...t.borderTextLeft&&{left:{...e.borderOptions?.decorations?.left||{},text:t.borderTextLeft}}}}),e}function et(t){const e=[];return void 0!==t.logoSize&&("number"!=typeof t.logoSize||t.logoSize<0||t.logoSize>1)&&e.push("logoSize must be a number between 0 and 1."),{isValid:0===e.length,errors:e}}class it{constructor(){}close(){}}class ot extends it{constructor(t){super(),this.istream=t,this.buffer=0,this.buflen=0}readByte(){for(;this.buflen<8;){const t=this.istream.readByte();if(-1==t){if(0==this.buflen)return-1;throw new Error("unexpected end of file./"+this.buflen)}if(t=="=".charCodeAt(0))return this.buflen=0,-1;ot.isWhitespace(t)||(this.buffer=this.buffer<<6|ot.decode(t),this.buflen+=6)}const t=this.buffer>>>this.buflen-8&255;return this.buflen-=8,t}static isWhitespace(t){return t=="\v".charCodeAt(0)||t=="\t".charCodeAt(0)||t=="\r".charCodeAt(0)||t=="\n".charCodeAt(0)}static decode(t){if("A".charCodeAt(0)<=t&&t<="Z".charCodeAt(0))return t-"A".charCodeAt(0);if("a".charCodeAt(0)<=t&&t<="z".charCodeAt(0))return t-"a".charCodeAt(0)+26;if("0".charCodeAt(0)<=t&&t<="9".charCodeAt(0))return t-"0".charCodeAt(0)+52;if(t=="+".charCodeAt(0))return 62;if(t=="/".charCodeAt(0))return 63;throw new Error("c:"+t)}}class nt extends it{constructor(t){super(),this.bytes=t,this.pos=0}readByte(){if(this.pos<this.bytes.length){const t=this.bytes[this.pos];return this.pos+=1,t}return-1}}(function(t,e){const i=(()=>{const i=new ot(new nt(function(t){const e=[];for(let i=0;i<t.length;i+=1)e.push(t.charCodeAt(i));return e}(t))),o=()=>{const t=i.readByte();if(-1==t)throw new Error("eof");return t};let n=0;const r={};for(;;){const t=i.readByte();if(-1==t)break;const e=o(),s=o()<<8|o();r[String.fromCharCode(t<<8|e)]=s,n+=1}if(n!=e)throw new Error(n+"!="+e);return r})(),o="?".charCodeAt(0)})("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MIWC4zCGguQwh4LlMIiC5jCJgucwioLoMIuC6TCMguowjYLrMI6C7DCPgu0wkILuMJGC7zCSgvAwk4LxMJuBSjCcgUswnYFUMJ6BVTChg0AwooNBMKODQjCkg0MwpYNEMKaDRTCng0YwqINHMKmDSDCqg0kwq4NKMKyDSzCtg0wwroNNMK+DTjCwg08wsYNQMLKDUTCzg1IwtINTMLWDVDC2g1Uwt4NWMLiDVzC5g1gwuoNZMLuDWjC8g1swvYNcML6DXTC/g14wwINfMMGDYDDCg2Eww4NiMMSDYzDFg2QwxoNlMMeDZjDIg2cwyYNoMMqDaTDLg2owzINrMM2DbDDOg20wz4NuMNCDbzDRg3Aw0oNxMNODcjDUg3Mw1YN0MNaDdTDXg3Yw2IN3MNmDeDDag3kw24N6MNyDezDdg3ww3oN9MN+DfjDgg4Aw4YOBMOKDgjDjg4Mw5IOEMOWDhTDmg4Yw54OHMOiDiDDpg4kw6oOKMOuDizDsg4ww7YONMO6DjjDvg48w8IOQMPGDkTDyg5Iw84OTMPSDlDD1g5Uw9oOWMPuBRTD8gVsw/YFSMP6BU04AiOpOAZKaTgOOtU4HlpxOCI/kTgmOT04Kj+NOC4m6Tg2Vc04Ol15OEJigThGJTk4Uio5OFZihThaQok4XmcBOGIt1ThmVuE4ej+VOIZe8TiaVwE4qmKJOLZKGTjGYo04yi/hONpikTjiK2045kk9OO47lTjyYpU4/mKZOQpinTkOUVE5Fi3ZOS5RWTk2T4U5OjMFOT5ZSTlXlaE5WmKhOV4/mTliYqU5ZibNOXYvjTl6M7k5fludOYpukTnGXkE5zk/tOfoqjToCLVE6CmKpOhZirToaXuU6Il1xOiZGIToqYrU6LjpZOjJPxTo6YsE6RiV1OkozdTpSM3E6ViOROmJhqTpmYaU6bjbFOnIifTp6YsU6fmLJOoJizTqGWU06imLROpIzwTqWI5U6mlpJOqIucTquLnU6si55OrZLgTq6Xuk6wmLVOs5i2TraYt066kGxOwI9ZTsGQbU7CmLxOxJi6TsaYu07Hi3dOyo2hTsuJ7k7NmLlOzpi4Ts+Vp07UjmVO1Y5kTtaRvE7XmL1O2JV0TtmQ5U7dgVdO3pi+Tt+YwE7jkeNO5JffTuWIyE7tmL9O7om8TvCLwk7ykodO9oyPTveYwU77lENPAYrpTwmYwk8KiMlPDYzeTw6K6k8PlZpPEJSwTxGLeE8aie9PHJjlTx2TYE8vlIxPMJjETzSUuk82l+BPOJBMTzqOZk88jpdPPYm+T0OSz09GkkFPR5jIT02Iyk9OkuFPT49aT1CNsk9Rl0NPU5HMT1WJvU9XmMdPWZddT1qYw09bmMVPXI3sT12Yxk9em0NPaZjOT2+Y0U9wmM9Pc4nAT3WVuU92mMlPe5jNT3yM8U9/jmdPg4qkT4aY0k+ImMpPi5fhT42OmE+PmMtPkZjQT5aY00+YmMxPm4ufT52Iy0+gi6BPoYm/T6ubRE+tlplPrpWOT6+M8k+1kE5Ptpe1T7+V1k/CjFdPw5GjT8SJ4k/Kj3JPzpjXT9CY3E/RmNpP1JjVT9eRrU/YmNhP2pjbT9uY2U/dldtP35jWT+GQTU/jlpNP5JjdT+WY3k/uj0NP75jrT/OUb0/1lVVP9pjmT/iV7k/6ibRP/pjqUAWY5FAGmO1QCZFxUAuMwlANlHtQD+DFUBGY7FASk3xQFJjhUBaM9FAZjPNQGpjfUB+O2FAhmOdQI5XtUCSSbFAlmONQJoyRUCiY4FApmOhQKpjiUCuXz1AsmOlQLZhgUDaL5FA5jJBQQ5juUEeY71BImPNQSYjMUE+VzlBQmPJQVZjxUFaY9VBamPRQXJLiUGWMklBsmPZQco7DUHSRpFB1kuNQdov0UHiY91B9i1VQgJj4UIWY+lCNllRQkYyGUJiOUFCZlPVQmpj5UKyNw1Ctl2JQspj8ULOZQlC0mPtQtY3CULePnVC+jFhQwplDUMWLzVDJmUBQyplBUM2TrVDPkZxQ0YuhUNWWbFDWmURQ2pe7UN6ZRVDjmUhQ5ZlGUOeRbVDtmUdQ7plJUPWZS1D5mUpQ+5XGUQCLVlEBmU1RAplOUQSJrVEJmUxREo7yURSZUVEVmVBRFplPURiY1FEamVJRH4+eUSGZU1Eql0RRMpbXUTeZVVE6mVRRO5lXUTyZVlE/mVhRQJlZUUGI8lFDjLNRRIxaUUWPW1FGkptRR4uiUUiQ5lFJjPVRS42OUUyZW1FNlsZRTpNlUVCOmVFSmVpRVJlcUVqTfVFcipVRYpldUWWT/FFokVNRaZlfUWqZYFFrlKpRbIz2UW2YWlFumWFRcYukUXWVulF2kbRRd4vvUXiTVFF8jJNRgJliUYKZY1GFk+BRhol+UYmZZlGKjftRjJllUY2NxFGPmWdRkOPsUZGZaFGSlmBRk5lpUZWZalGWmWtRl4/nUZmOylGgiqVRopluUaSZbFGllrtRppltUaiVeVGpmW9RqplwUauZcVGsk35RsJl1UbGZc1GymXRRs5lyUbSN4VG1mXZRtpboUbeX4lG9mXdRxJCmUcWZeFHGj3lRyZl5UcuSnFHMl71RzZOAUdaZw1HbmXpR3OqjUd2Lw1HgmXtR4ZZ9UeaPiFHnkfpR6Zl9UeqT4lHtmX5R8JmAUfGKTVH1mYFR9oulUfiTylH5iZpR+o9vUf2Un1H+mYJSAJOBUgOQblIEmYNSBpWqUgeQ2FIIiqBSCoqnUguZhFIOmYZSEYxZUhSZhVIXl/FSHY+JUiSUu1IllcpSJ5mHUimXmFIqmYhSLpmJUjCTnlIzmYpSNpCnUjeN/FI4jJRSOZmLUjqOaFI7jY9SQ5LkUkSZjVJHkaVSSo3tUkuZjlJMmY9STZFPUk+ZjFJUmZFSVpZVUluNhFJemZBSY4yVUmSN3FJllI1SaZmUUmqZklJvlZtScI/oUnGZm1JyioRSc5mVUnSZk1J1kW5SfZmXUn+ZllKDimNSh4yAUoiZnFKJl6tSjZmYUpGZnVKSmZpSlJmZUpuXzVKfjPdSoInBUqOX8lKpj5VSqpN3UquNhVKsmaBSrZmhUrGX41K0mEpStZmjUrmM+FK8maJSvopOUsGZpFLDlnVSxZK6UseXRVLJlddSzZmlUtLo01LVk65S15mmUtiKqFLZlrFS3Y+fUt6Zp1LfleVS4JmrUuKQqFLjmahS5IvOUuaZqVLniqlS8oxNUvOZrFL1ma1S+JmuUvmZr1L6jtlS/oz5Uv+W3FMBluZTApP1UwWV71MGmbBTCJmxUw2Zs1MPmbVTEJm0UxWZtlMWibtTF5ZrUxmN+lMambdTHZF4UyCPoFMhi6dTI5m4UyqU2VMvmblTMZm6UzOZu1M4mbxTOZVDUzqL5lM7iONTP5O9U0CZvVNBj1xTQ5DnU0WZv1NGmb5TR4+hU0iM31NJmcFTSpS8U02ZwlNRlNpTUpGyU1OR7FNUi6ZTV5PsU1iSUFNalI5TXJZtU16ZxFNgkOhTZoxUU2mZxVNumcZTb4lLU3CI81NxiutTc5GmU3SLcFN1l5FTd5nJU3iJtVN7mchTf4uoU4KZylOElu9TlpnLU5iX0FOajPpTn4y0U6CZzFOlmc5TppnNU6iQflOpiVhTrYl9U66Zz1OwmdBTs4y1U7aZ0VO7i45Two5RU8OZ0lPIlpRTyY2zU8qLeVPLl0ZTzJFvU82UvVPOjvtT1I9mU9aO5lPXjvNT2Y+WU9uUvlPfmdVT4YliU+KRcFPjjPtT5IzDU+WL5VPomdlT6ZJAU+qR/FPri6lT7I+iU+2Z2lPumdhT74nCU/CR5FPxjrZT8o5qU/OJRVP2ipBT942GU/iOaVP6mdtUAZncVAOLaFQEimVUCI2HVAmLZ1QKkt1UC4lEVAyTr1QNlrxUDo1AVA+XmVQQk2ZUEYz8VBuMTlQdmeVUH4vhVCCWaVQmlNtUKZnkVCuK3FQsmd9ULZngVC6Z4lQ2meNUOIt6VDmQgVQ7latUPJnhVD2Z3VQ+jOFUQJneVEKYQ1RGlfBUSJLmVEmM4FRKjZBUTpnmVFGT21RfmepUaI78VGqO9FRwme1UcZnrVHOWoVR1mehUdpnxVHeZ7FR7me9UfIzEVH2WvVSAmfBUhJnyVIaZ9FSLje5UjJhhVI6Z6VSPmedUkJnzVJKZ7lSimfZUpJpCVKWZ+FSomfxUq5pAVKyZ+VSvml1Uso3nVLOKUFS4mfdUvJpEVL2I9FS+mkNUwIijVMGVaVTCmkFUxJn6VMeZ9VTImftUyY3GVNiaRVThiPVU4ppOVOWaRlTmmkdU6I+jVOmWiVTtmkxU7ppLVPKTTlT6mk1U/ZpKVQSJU1UGjbRVB5BPVQ+aSFUQk4JVFJpJVRaIoFUumlNVL5dCVTGPpVUzmllVOJpYVTmaT1U+kcFVQJpQVUSR7VVFmlVVRo+kVUyaUlVPluJVU4xbVVaaVlVXmldVXJpUVV2aWlVjmlFVe5pgVXyaZVV+mmFVgJpcVYOaZlWEkVBVh5poVYmNQVWKml5Vi5KdVZiaYlWZmltVmoqrVZyK7FWdioVVnppjVZ+aX1WnjJZVqJppVamaZ1WqkXJVq4tpVayLqlWummRVsIvyVbaJY1XEmm1VxZprVceapVXUmnBV2ppqVdyablXfmmxV445rVeSab1X3mnJV+Zp3Vf2adVX+mnRWBpJRVgmJw1YUmnFWFppzVhePplYYiVJWG5p2VimJ3FYvmoJWMY/6VjKafVY0mntWNpp8VjiaflZCiVxWTJFYVk6aeFZQmnlWW4qaVmSagVZoiu1WapqEVmuagFZsmoNWdJWsVniT01Z6lLZWgJqGVoaahVaHimRWipqHVo+ailaUmolWoJqIVqKUWFalmotWrpqMVrSajla2mo1WvJqQVsCak1bBmpFWwpqPVsOaklbImpRWzpqVVtGallbTmpdW15qYVtiZZFbajvpW245sVt6J8VbgiPZW45JjVu6amVbwjaJW8ojNVvOQfVb5mppW+ozFVv2NkVb/mpxXAJqbVwOV3lcEmp1XCJqfVwmanlcLmqBXDZqhVw+Ml1cSiYBXE5qiVxaapFcYmqNXHJqmVx+TeVcmmqdXJ4izVyiN3VctjFxXMJJuVzeaqFc4mqlXO5qrV0CarFdCjeJXR4vPV0qWVldOmqpXT5qtV1CNv1dRjUJXYZqxV2SNo1dmklJXaZquV2qS2Fd/mrJXgpCCV4iasFeJmrNXi4xeV5OatFegmrVXoo1DV6OKX1ekmrdXqpq4V7CauVezmrZXwJqvV8OaulfGmrtXy5aEV86P6VfSmr1X05q+V9SavFfWmsBX3JRXV9+I5lfglXVX45rBV/SP+1f3jrdX+ZR8V/qK7lf8jelYAJZ4WAKTsFgFjJhYBpHNWAqav1gLmsJYFZHCWBmaw1gdmsRYIZrGWCSS51gqiqxYL+qfWDCJgVgxlfFYNI/qWDWTZ1g6jeRYPZrMWECVu1hBl9tYSonyWEuayFhRkVlYUprLWFSTg1hXk2hYWJOEWFmUt1hakstYXo3HWGKax1hpiZZYa5NVWHCayVhymsVYdZBvWHmazVh+j21Yg4urWIWazliTleZYl5GdWJySxFifmtBYqJZuWKua0ViumtZYs5WtWLia1Vi5ms9YuprSWLua1Fi+jaRYwZXHWMWa11jHkmRYyonzWMyP61jRmtlY05rYWNWNiFjXmtpY2JrcWNma21jcmt5Y3prTWN+a4Fjkmt9Y5ZrdWOuObVjskHBY7pFzWO+a4VjwkLpY8YjrWPKUhFj3ktlY+ZrjWPqa4lj7muRY/JrlWP2a5lkCmudZCZXPWQqa6FkPicRZEJrpWRWXW1kWik9ZGJnHWRmPZ1kakb1ZG5rqWRyW6VkilrJZJZrsWSeR5Vkpk1ZZKpG+WSuVdlksmu1ZLZruWS6Jm1kxjrhZMprvWTeIzlk4mvBZPprxWUSJgllHiu9ZSJPeWUmV8llOmvVZT5F0WVCa9FlRjF9ZVJZ6WVWa81lXk4VZWJr3WVqa9llgmvlZYpr4WWWJnFlnmvpZaI+nWWma/FlqkkRZbJr7WW6VsVlzj5dZdJN6WXibQFl9jURZgZtBWYKUQFmDlNxZhJbPWYqURFmNm0pZk4tXWZaXZFmZlq1Zm5uqWZ2bQlmjm0VZpZHDWaiWV1msk2lZsptGWbmWhVm7jchZvo+oWcabR1nJjm9Zy45uWdCIt1nRjMZZ05CpWdSIz1nZm0tZ2ptMWdybSVnliVdZ5oqtWeibSFnqlsNZ65VQWfaIpln7iPdZ/45wWgGI0FoDiKFaCZtRWhGbT1oYlrpaGptSWhybUFofm05aIJBQWiWbTVopldhaL4ziWjWbVlo2m1daPI+pWkCbU1pBmEtaRpRrWkmbVVpajaVaYptYWmaVd1pqm1labJtUWn+WuVqSlH1amptaWpuVUVq8m1tavZtfWr6bXFrBicVawpteWsmOuVrLm11azIyZWtCba1rWm2Ra15thWuGShFrjm2Ba5ptiWumbY1r6m2Va+5tmWwmK8FsLm2hbDJtnWxabaVsij+xbKptsWyyS2lswiWRbMptqWzabbVs+m25bQJtxW0Obb1tFm3BbUI5xW1GbcltUjUVbVZtzW1eOmltYkbZbWpt0W1ubdVtcjnlbXY1GW1+W0Ftji0dbZIzHW2WbdltmindbaZt3W2uRt1twm3hbcZuhW3ObeVt1m3pbeJt7W3qbfVuAm35bg5uAW4WR7luHiUZbiI7nW4mIwFuLkXZbjIquW42Os1uPjUdblZOGW5ePQFuYiq9bmZKIW5qS6FubiLZbnItYW52V81ufjsBbootxW6OQ6VukjrpbpZdHW6abgVuui3tbsI3JW7OKUVu0iYNbtY+qW7aJxlu4m4JbuZdlW7+PaFvCjuJbw5uDW8SK8VvFk9BbxpanW8ebhFvJm4VbzJV4W9Cbh1vSiqZb04v1W9SbhlvbirBb3ZBRW96bi1vfjkBb4YnHW+Kbilvkm4hb5ZuMW+abiVvnlEpb6J7LW+mQUlvrm41b7pe+W/Cbjlvzm5Bb9ZKeW/abj1v4kKFb+o6bW/6Rzlv/jvVcAZWVXAKQ6lwEjstcBZuRXAaPq1wHm5JcCJuTXAmI0VwKkbhcC5BxXA2blFwOk7FcD4+sXBGPrVwTm5VcFpDrXBqPrlwgm5ZcIpuXXCSW3lwom5hcLYvEXDGPQVw4m5lcOZuaXDqO2lw7kEtcPJPyXD2Qc1w+lPZcP5RBXECLx1xBm5tcRYuPXEabnFxIi/xcSpPNXEuJrlxNjnJcTpudXE+boFxQm59cUYv7XFObnlxVk1dcXpGuXGCTalxhjsZcZJF3XGWXmlxsm6JcbpujXG+T1FxxjlJcdpulXHmbplyMm6dckIryXJGbqFyUm6lcoYmqXKiRWlypiuJcq5urXKyWplyxkdBcs4p4XLabrVy3m69cuIrdXLubrFy8m65cvpuxXMWbsFzHm7Jc2ZuzXOCTu1zhi6xc6InjXOmbtFzqm7lc7Zu3XO+V9VzwlfRc9pOHXPqbtlz7j3Nc/Zu1XQeQkl0Lm7pdDo3oXRGbwF0Um8FdFZu7XRaKUl0Xm7xdGJvFXRmbxF0am8NdG5u/XR+bvl0im8JdKZX2XUubyV1Mm8ZdTpvIXVCXkl1Sm8ddXJu9XWmQk11sm8pdb421XXOby112m8xdgpvPXYSbzl2Hm81di5OIXYybuF2Qm9VdnZvRXaKb0F2sm9JdrpvTXbeb1l26l+RdvJvXXb2b1F3Jm9hdzIreXc2b2V3Sm9td05vaXdab3F3bm91d3ZDsXd6PQl3hj4Rd45GDXeWNSF3mjbZd541JXeiLkF3rm95d7o23XfGMyF3ym99d85akXfSUYl31m+Bd941KXfuKql39kkZd/ovQXgKOc14DlXpeBpS/Xgub4V4MivNeEZvkXhaSn14Zm+NeGpviXhub5V4dkuleJZCDXiuOdF4tkMheL5HRXjCLQV4zkqBeNpvmXjeb5144j+1ePZZYXkCb6l5Dm+leRJvoXkWVnV5Hm/FeTJZ5Xk6b615Um+1eVZaLXleb7F5fm+5eYZSmXmKb715jlbxeZJvwXnKKsV5zlb1edJROXnWb8l52m/NeeI1LXnmKsl56m/Ree4y2XnyXY159l0hefor0Xn+b9l6BkqFeg41MXoSPr16HlN1eio+wXo+PmF6VkupelpX3XpeTWF6ajU1enJV7XqCb916mk3hep43AXquMyV6tkutetYjBXraPjl63jU5euJdmXsGb+F7Cm/lew5RwXsib+l7Jl/VeyphMXs+b/F7Qm/te04pmXtacQF7anENe25xEXt2cQl7flV9e4I+xXuGcRl7inEVe45xBXuicR17pnEhe7JxJXvCcTF7xnEpe85xLXvScTV72iYRe95LsXvicTl76jJpe+4n0XvyUVV7+nE9e/5P5XwGV2V8DnFBfBJhNXwmcUV8Klb5fC5xUXwyYn18NmK9fD46uXxCT818RnFVfE4t8XxSSol8ViPhfFpxWXxeVpF8YjU9fG5JvXx+S7V8llu1fJoy3XyeMyl8pnFdfLZxYXy+cXl8xjuNfNZKjXzeLrV84nFlfPJVKXz6SZV9BnFpfSJxbX0qLrl9MnFxfTpxdX1GcX19Tk5ZfVpxgX1ecYV9ZnGJfXJxTX12cUl9hnGNfYoxgX2aVRl9pjcpfapVWX2uSpF9slWpfbZxkX3CPsl9xiWVfc5xlX3ecZl95lvBffJTeX3+caV+AiZ1fgZCqX4KcaF+DnGdfhIxhX4WR0l+HnG1fiJxrX4qcal+Ll6VfjIzjX5CPmV+RnGxfkpNrX5OPXV+Xk75fmJxwX5mcb1+enG5foJxxX6GM5F+onHJfqZWcX6qPel+tnHNfrpT3X7OTv1+0kqVfuZNPX7ycdF+9i0pfw5BTX8WVS1/MivVfzZRFX9acdV/XjnVf2JZZX9mWWl/ciZ5f3Zx6X+CSiV/knHdf64n1X/Ccq1/xnHlf9ZRPX/iceF/7nHZf/Y2aX/+cfGAOnINgD5yJYBCcgWASk3tgFZyGYBaVfGAZnIBgG5yFYByX5WAdjnZgIJHTYCGcfWAli31gJpyIYCeQq2AoiYVgKZyCYCqJ9mArnIdgL4uvYDGchGA6nIpgQZyMYEKclmBDnJRgRpyRYEqckGBLl/ZgTZySYFCLsGBSjVBgVY+aYFmcmWBanItgX5yPYGCcfmBiifhgY5yTYGSclWBlknBgaI2mYGmJtmBqnI1ga5yYYGycl2Bti7Fgb5GnYHCKhmB1jGJgd5yOYIGcmmCDnJ1ghJyfYImOu2CLnKVgjJLuYI2cm2CSnKNglIn3YJacoWCXnKJgmpyeYJucoGCfjOVgoJdJYKOKs2CmiXhgp5ykYKmUWWCqiKtgspTfYLOce2C0nKpgtZyuYLaW42C4nKdgvJOJYL2crGDFj+5gxpytYMeT1WDRmGZg05ypYNicr2DajZtg3JDJYN+I0mDgnKhg4ZymYOOReWDnnJxg6I5TYPCRxGDxnLtg85F6YPSctmD2nLNg95y0YPmO5GD6nLdg+5y6YQCctWEBj0RhA5y4YQacsmEIlvphCZb5YQ2cvGEOnL1hD4jTYRWcsWEai/BhG4ikYR+KtGEhnLlhJ5zBYSicwGEsnMVhNJzGYTycxGE9nMdhPpy/YT+cw2FCnMhhRJzJYUecvmFIjpxhSpzCYUuR1GFMjVFhTZywYU6QVGFTnNZhVZXnYViczGFZnM1hWpzOYV2c1WFfnNRhYpadYWOKtWFlnNJhZ4xkYWiKU2FrnM9hbpe2YW+c0WFwiNRhcZzTYXOcymF0nNBhdZzXYXaMY2F3nMthfpd8YYKXSmGHnNphipzeYY6RnmGQl/dhkZzfYZSc3GGWnNlhmZzYYZqc3WGkla5hp5OyYamMZWGrnOBhrJzbYa6c4WGyjJthtomvYbqc6WG+irZhw5znYcac6GHHjadhyJzmYcmc5GHKnONhy5zqYcyc4mHNnOxh0In5YeOc7mHmnO1h8pKmYfSc8WH2nO9h95zlYfiMnGH6nPBh/Jz0Yf2c82H+nPVh/5zyYgCc9mIInPdiCZz4YgqV6GIMnPpiDZz5Yg6PXmIQkKxiEYnkYhKJ+mIUnPtiFoi9YhqQymIbnPxiHebBYh6dQGIfjIFiIZ1BYiaQ7WIqnUJiLp1DYi+LWWIwnURiMp1FYjOdRmI0kdViOIzLYjuW32I/lltiQI+KYkGdR2JHkO5iSOe7YkmU4GJLjuhiTY3LYk6dSGJTkcViVZWlYliR72JbnUtiXp1JYmCdTGJjnUpiaJ1NYm6Vr2JxiLVidpV9YnmU4WJ8nU5ifp1RYn+Ps2KAi1pigp1PYoOdVmKEj7RiiZ1QYoqUY2KRl31ikp1SYpOdU2KUnVdilZOKYpadVGKXjVJimJDcYpudZWKclLJinpHwYquU4mKsnatisZX4YrWS72K5lpViu51aYryJn2K9kopiwp1jYsWSU2LGnV1ix51kYsidX2LJnWZiyp1iYsydYWLNlI9iz51bYtCJ+2LRnVli0ouRYtOR8WLUnVVi151YYtiNU2LZkNli24+1YtydYGLdlHFi4IuSYuGKZ2Lsiodi7ZBAYu6daGLvnW1i8Z1pYvOMnWL1nW5i9o5BYveNiWL+j0Vi/51cYwGOnWMCnWtjB453YwidbGMJiMJjDJ1nYxGSp2MZi5NjH4uyYyedamMoiKVjK43BYy+QVWM6kvBjPZTSYz6dcGM/kX1jSZGoY0yOSmNNnXFjT51zY1Cdb2NVld9jV5K7Y1yRe2NnlfljaI7MY2mdgGNrnX5jbpCYY3KMnmN2nXhjd4+3Y3qT5mN7lFBjgJ12Y4ORfGOIjvZjiZ17Y4yPtmOOnXVjj516Y5KUcmOWnXRjmIxAY5uKfGOfnXxjoJepY6GNzGOiklRjo515Y6WQ2mOnjVRjqJCEY6mJhmOqkVtjq513Y6yLZGOyjGZjtJLNY7WdfWO7kX5jvp2BY8Cdg2PDkbVjxJ2JY8adhGPJnYZjz5VgY9CS8WPSnYdj1pdLY9qXZ2Pbirdj4YisY+OdhWPpnYJj7or2Y/SJh2P2nYhj+pdoZAadjGQNkblkD52TZBOdjWQWnYpkF52RZBydcmQmnY5kKJ2SZCyUwGQtk4tkNJ2LZDadj2Q6jGdkPo3vZEKQ22ROnZdkWJNFZGedlGRploBkb52VZHadlmR4lsxkepCgZIOMgmSInZ1kko5UZJOdmmSVnZlkmpRRZJ6Ts2Skk1BkpZ2bZKmdnGSrlY9krZRkZK6OQmSwkO9kspZvZLmKaGS7naNkvJ2eZMGXaWTCnaVkxZ2hZMedomTNkYBk0p2gZNSdXmTYnaRk2p2fZOCdqWThnapk4pNGZOOdrGTmjkNk552nZOyLW2Tvna1k8Z2mZPKdsWT0nbBk9p2vZPqdsmT9nbRk/o/vZQCds2UFnbdlGJ21ZRydtmUdnZBlI525ZSSduGUqnZhlK526ZSydrmUvjnhlNJ27ZTWdvGU2nb5lN529ZTidv2U5ifxlO41VZT6V+mU/kK1lRYzMZUidwWVNncRlT5VxZVGLfmVVncNlVp3CZVeUc2VYncVlWYuzZV2dx2VencZlYoq4ZWOOVWVmk9ZlbIxoZXCQlGVynchldJCuZXWTR2V3lX5leJ3JZYKdymWDnctlh5W2ZYibfGWJkMRljJVrZY6N1mWQlONlkZTBZZeTbGWZl79lm53NZZyOzmWfnc5loYi0ZaSL0mWlkMtlp5WAZaudz2WsjmFlrZJmZa+OemWwkFZlt53QZbmV+2W8iZdlvY57ZcGd02XDndFlxJ3UZcWXt2XGndJly5D5Zcyd1WXPkbBl0p3WZdeK+GXZndhl253XZeCd2WXhndpl4or5ZeWT+mXmklVl54uMZeiOfGXpkYFl7I97Ze2IrmXxndtl+omgZfud32YCjVZmA53eZgaNqWYHj7hmCp3dZgyPuWYOlr5mD42oZhOI1WYUkMxmHJ3kZh+Qr2YgiWZmJY90ZieWhmYojfBmLY+6Zi+QpWY0neNmNZ3hZjad4mY8kotmP55FZkGd6GZCjp5mQ41XZkSd5mZJnedmS5BXZk+d5WZSjk5mXZ3qZl6d6WZfne5mYp3vZmSd62ZmikFmZ53sZmid7WZplNNmbpWBZm+MaWZwnfBmdJCwZnaPu2Z6knFmgYvFZoOd8WaEnfVmh4nJZoid8maJnfRmjp3zZpGPi2aWkmdml4jDZpid9madnfdmopKoZqaX72arjmJmrpXpZrSWXGa4nkFmuZ35Zryd/Ga+nftmwZ34ZsSeQGbHk9xmyZ36ZtaeQmbZj4xm2p5DZtyXambdlJhm4J5EZuaeRmbpnkdm8J5IZvKLyGbziWdm9I1YZvWeSWb3nkpm+I+RZvmRgmb8mdZm/ZFdZv6RXGb/kdZnAI3FZwOY8GcIjI5nCZdMZwuV/GcNlZ5nD55LZxSN8WcVkr1nFp5MZxeYTmcbll1nHZKpZx6eTWcfivpnJp5OZyeeT2colthnKpaiZyuWlmcslntnLY5EZy6eUWcxjulnNJZwZzaeU2c3nlZnOJ5VZzqK92c9i4BnP55SZ0GeVGdGnldnSZCZZ06Xm2dPiMdnUI3eZ1GRumdTjttnVo/xZ1meWmdck21nXp5YZ1+RqWdgnllnYY/wZ2KW22djnltnZJ5cZ2WXiGdqnmFnbY1ZZ2+UdGdwnl5ncZOMZ3Kd3GdzneBndYtuZ3eUZmd8nmBnfo+8Z3+UwmeFnmZnh5T4Z4meXWeLnmNnjJ5iZ5CQzWeVlo1nl5fRZ5qWh2ecicpnnY59Z6CYZ2ehnmVnopCVZ6aeZGepnl9nr4zNZ7Oea2e0nmlntonLZ7eeZ2e4nm1nuZ5zZ8GRxmfElb9nxp51Z8qVQWfOnnRnz5SQZ9CWXmfRirln05D1Z9SPX2fYktFn2pdNZ92ecGfenm9n4p5xZ+SebmfnnnZn6Z5sZ+yeamfunnJn755oZ/GSjGfzlvZn9I7EZ/WN8mf7jbhn/paPZ/+KYGgCksxoA5PIaASJaGgTkPBoFpCyaBeMSWgennhoIY1aaCKKnGgpnnpoKoqUaCuegWgynn1oNJDxaDiKamg5japoPIppaD2NzWhAnntoQYyFaEKMamhDk41oRp55aEiIxGhNnnxoTp5+aFCLy2hRjEtoU4q6aFSLamhZnoJoXI33aF2WkWhfjlZoY56DaGeVT2h0no9odomxaHeehGh+npVof56FaIGXwGiDnoxohZR+aI2elGiPnodok4iyaJSeiWiXjVtom56LaJ2eimifnoZooJ6RaKKPvWimmutop4zmaKiXnGitnohor5LyaLCKQmixjatos56AaLWekGi2ioFouZ6OaLqekmi8k45oxIr8aMaesGjJlsdoyp6XaMuK+2jNnp5o0pZfaNSen2jVnqFo156laNiemWjakklo35OPaOCeqWjhnpxo456maOeeoGjukFho756qaPKQsWj5nqho+oq7aQCYb2kBnpZpBJ6kaQWI1mkInphpC5a4aQyenWkNkEFpDpLFaQ+ek2kSnqNpGZCaaRqerWkbipFpHIyfaSGer2kinpppI56uaSWep2kmnptpKJ6raSqerGkwnr1pNJPMaTaeomk5nrlpPZ67aT+S1mlKl2tpU5WWaVSetmlVkchpWZ68aVqRXmlcnrNpXZ7AaV6ev2lgk+1pYZ6+aWKT6GlqnsJpa561aW2Lxmlunrhpb498aXOUgGl0nrppdYvJaXeesml4nrRpeZ6xaXyYT2l9inlpfp63aYGewWmCilRpio3laY6JfGmRntJplJhQaZWe1WmbkFlpnJ7UaaCe02mnntBprp7EabGe4WmynsNptJ7Wabuezmm+nslpv57GacGex2nDns9px+qgacqezGnLjVxpzJLGac2RhGnOnspp0J7FadOeyGnYl2xp2ZaKad2ezWnentdp557faeie2GnrnuVp7Z7jafKe3mn5nt1p+5LOaf2RhWn/nttqAp7ZagWe4GoKnuZqC5Tzagye7GoSnudqE57qahSe5GoXkpRqGZVXahue2moenuJqH4++aiGWzWoinvZqI57paimMoGoqiaFqK4p+ai6e0Wo1j79qNp7uajie9Wo5jvdqOoqSaj2STWpEnutqR57wakie9GpLi7RqWItralme8mpfi0BqYZPJamKe8WpmnvNqcp7tanie72p/ioBqgJJoaoSe+mqNnvhqjoznapCe92qXn0BqnJ53aqCe+Wqinvtqo578aqqfS2qsn0dqrp6NarOfRmq4n0Vqu59CasGe6GrCn0Rqw59DatGfSWrTmEVq2p9MatuL+Wren0hq359KauiUpWrqn01q+p9RavufTmsEl5NrBZ9Pawqe3GsSn1JrFp9Tax2JVGsfn1VrIIyHayGOn2sji9NrJ4miazKXfms3n1drOJ9WazmfWWs6i1xrPYvUaz6KvGtDn1xrR59ba0mfXWtMicxrTpJWa1CfXmtTir1rVJ9ga1mfX2tbn2FrX59ia2GfY2tijn5rY5Cza2SNn2tmlZBraZXga2qYY2tvjpVrc43Oa3SX8Gt4n2RreZ9la3uOgGt/n2ZrgJ9na4OfaWuEn2hrhpZ3a4mPfWuKjupri45ja42famuVn2xrlpBCa5ifa2uen21rpJ9ua6qfb2urn3Brr59xa7Gfc2uyn3Jrs590a7SJo2u1kmlrt591a7qORWu7imtrvJ92a7+TYWvAmsprxYtCa8afd2vLn3hrzZXqa86WiGvSk8Vr0595a9SU5GvYlPlr25bRa9+femvrn3xr7J97a++ffmvzn31sCJ+BbA+OgWwRlq9sE5+CbBSfg2wXi0NsG5+EbCOfhmwkn4VsNJCFbDeVWGw4iWlsPpTDbECS82xBj2BsQouBbE6UxGxQjqxsVZ+IbFeKvmxaiZhsXZPwbF6fh2xfjV1sYJJybGKfiWxon5Fsap+KbHCRv2xyi4Jsc5+SbHqMiGx9i0Rsfp+QbIGfjmyCn4tsg5eAbIiSvmyMk9dsjZ+MbJCflGySn5Nsk4xCbJaJq2yZjblsmp+NbJufj2yhlnZsopHybKuWl2yun5xssZ+dbLOJzWy4laZsuZb7bLqfn2y7jqFsvI/AbL2fmGy+n55sv4mIbMGLtWzEn5VsxZ+abMmQ8mzKlJFszJTlbNOfl2zVlkBs15+ZbNmfomzbn6Bs3Z+bbOGWQWzilGds44uDbOWTRGzoko1s6p+jbO+foWzwkdds8Z+WbPOJam0Ll21tDJ+ubRKfrW0XkPRtGZ+qbRuXjG0ek7RtH5+kbSWSw20piWttKo1ebSufp20yj0ZtM5+sbTWfq202n6ZtOJ+pbTuKiG09n6htPpRobUGXrG1Ej/JtRZDzbVmftG1an7JtXJVsbWOfr21kn7FtZolZbWmNX21qmFFtbIpcbW6Vgm10l4Ftd4pDbXiQWm15n7NthZ+4bYiPwW2Ml09tjp+1bZOfsG2Vn7ZtmZfcbZuTk22ck8Btr4pVbbKJdG21n7xtuJ+/bbyXwW3Al4RtxZ/GbcafwG3Hn71ty5fS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hWmToIVqlZOFbeVKhXflUIV+5VGFgOVEhYSUloWH5U6FiOVGhYrlSIWQ5VKFkeVHhZTlS4WXiZKFmZPjhZvlTIWc5U+FpOVFhaaRRYWo5UmFqY5GhaqQZIWrjE+FrJbyha6W94Wvj5KFueVWhbrlVIXBmG2FyeVThc2XlYXP5VWF0OVXhdXlWIXc5VuF3eVZheSToYXl5VqF6ZTLherlTYX3j5OF+eVchfrlYYX7kZSF/uVghgLlQYYG5WKGB5FohgrlXYYL5V+GE+VehhafUIYXn0GGGuVkhiLlY4Ytl5aGL+G6hjDlZYY/5WaGTeVnhk6M1YZQi3OGVOVphlWZfIZai5WGXJe4hl6L8YZf5WqGZ+VrhmuSjoZx5WyGeZP4hnuIuIaKieGGi+VxhozlcoaT5W2GlY5chqPlboaklGGGqeVvhqrlcIar5XqGr+V0hrDld4a25XOGxOV1hsbldobHjtaGyeV4hsuSYIbNjHWGzophhtTle4bZil6G2+WBht7lfIbf5YCG5JS4hunlfYbs5X6G7ZVnhu6U2Ibv5YKG+JH7hvnljIb75YiG/onphwDlhocClkmHA+WHhwblhIcI5YWHCeWKhwrljYcN5YuHEeWJhxLlg4cYkneHGuWUhxyWqIcl5ZKHKeWThzTljoc35ZCHO+WRhz/lj4dJkOSHS5hYh0zlmIdO5ZmHU+Wfh1WQSYdX5ZuHWeWeh1/llodg5ZWHY+Wgh2aJ2odo5ZyHauWhh27lnYd05ZqHdpKxh3jll4d/lIiHguWlh42XWoef5aSHouWjh6vlrIev5aaHs+Wuh7qXhoe75bGHveWoh8DlqYfE5a2HxuWwh8flr4fL5aeH0OWqh9Llu4fg5bSH7+Wyh/Lls4f25biH9+W5h/mKSYf7i2GH/uW3iAXloogN5baIDuW6iA/ltYgR5byIFeW+iBblvYgh5cCIIuW/iCPleYgn5cSIMeXBiDblwog55cOIO+XFiECMjIhC5ceIROXGiEaPT4hMjXOITZ+liFLlyIhTj3CIV4pYiFnlyYhbiXGIXY/ViF7lyohhjXSIYuXLiGOI34holVyIa+XMiHCQiohy5dOIdeXQiHeSj4h95dGIfuXOiH+L3IiB5c2IguXUiIiMVYiLkdyIjeXaiJLl1oiWkbOIl+XViJnl2Iie5c+IouXZiKTl24irlO2IruXX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ljKWaJY7kWqWP4iilkCRyZZC6JiWRJWNlkvom5ZM6JmWTY1+lk/ompZQjMCWW5XDllzonZZd6J+WXuiell/ooJZiiUCWY5B3lmSPnJZliteWZuihlmqUhpZs6KOWcIlBlnLoopZzksKWdZfLlnaTqZZ36JyWeJeklnqMr5Z9l3qWhYv3loaXspaIjEeWipHglovkQJaN6KSWjopLlo+Qj5aUinWWleimlpfop5aY6KWWmYyElpuN25acj+GWoIlClqOX15an6KmWqOeslqroqJaw6KyWseiqlrLoq5a06K2WtuiulreX6pa46K+WueiwlruQx5a8lLmWwJCdlsGK5ZbEl1mWxYnrlsaPV5bHjNmWyeizlsvospbMjpOWzei0ls7osZbRjkeW1ei4ltblq5bZmdSW25CXltzotpbil6OW45PvluiJSpbqkOGW6460lvCVtZbyiV+W9pfrlveXi5b56LmW+5NklwCO+ZcE6LqXBui7lweQa5cI6LyXCpfslw3ot5cO6L6XD+jAlxHov5cT6L2XFujBlxnowpcckZqXHonglyTow5cnlraXKujElzDoxZcymEmXOJ5Qlznoxpc96MeXPujIl0LozJdE6MmXRujKl0joy5dJ6M2XUpDCl1aW9ZdZkMOXXOjOl16U8Zdg6M+XYepyl2KWypdk6NCXZujRl2jo0pdpinaXa+jUl22QeJdx6NWXdIxDl3no1pd66NqXfOjYl4Ho2ZeEipOXhejXl4bo25eL6NyXjYjGl4/o3ZeQ6N6XmI/il5zo35egi2aXo+jil6bo4Zeo6OCXq+aRl62V2pez6OOXtOjkl8Po5ZfG6OaXyOjnl8vo6JfTitiX3Ojpl+3o6pfulEKX8ujsl/OJuZf16O+X9ujul/uJQ5f/i7+YAZXFmAKSuJgDjaCYBY2AmAaPh5gIkHuYDOjxmA/o8JgQl2GYEYrmmBKU0JgTk9qYF5CcmBiXzJgajHqYIej0mCTo85gslmqYLZOqmDSJb5g36PWYOOjymDuVcJg8l4qYPej2mEbo95hL6PmYTJHomE2KephOinuYT+j4mFSK55hVjLCYWIromFuTXphel96YZ4zamGvo+phv6PuYcOj8mHHpQJhz6UKYdOlBmKiVl5iq6UOYr+lEmLHpRZi26UaYw+lImMTpR5jG6UmY25TymNzjypjfkEiY4otRmOnpSpjr6UuY7ZmqmO6fWpjvlNGY8oj5mPSIuZj8jpSY/ZZPmP6P/JkD6UyZBZbdmQnpTZkKl3uZDIlhmRCOYJkS6U6ZE4nsmRTpT5kY6VCZHelSmR7pU5kg6VWZIelRmSTpVJkoitmZLOlWmS7pV5k96ViZPulZmULpWplF6VyZSelbmUvpXplM6WGZUOldmVHpX5lS6WCZVelimVeLwJmWjvGZl+ljmZjpZJmZjYGZpellmaiKXZmslG6Zrelmma7pZ5mzknmZtJPpmbzpaJnBlJ2ZxJHKmcWJd5nGi+yZyIvtmdCSk5nR6W2Z0ovumdWJ7ZnY6WyZ2+lqmd3pa5nf6WmZ4ul3me3pbpnu6W+Z8elwmfLpcZn46XOZ++lymf+PeJoB6XSaBel2mg6LUpoP6XWaEpGbmhOMsZoZ6XiaKJHLmivpeZowk6uaN+l6mj7pgJpA6X2aQul8mkPpfppF6XuaTemCmlXpgZpX6YSaWovBmlvpg5pf6YWaYumGmmTpiJpl6YeaaemJmmrpi5pr6YqaqI2cmq3pjJqw6Y2auIpbmrzpjprA6Y+axJCRms/pkJrR6ZGa0+mSmtTpk5rYjYKa3umUmt/plZri6Zaa4+mXmubpmJrqlK+a6+mamu2VRZru6Zua7+mZmvHpnZr06Zya9+memvvpn5sG6aCbGOmhmxrpopsf6aObIumkmyPppZsl6aabJ+mnmyjpqJsp6ambKumqmy7pq5sv6aybMZ9UmzLprZs74vabPItTm0GKQJtCjbCbQ+mvm0TprptFlqObTemxm07psptP6bCbUemzm1SWgptY6bSbWoubm2+YRJt06bWbg+m3m46IvJuR6bibkpWpm5PptpuW6bmbl+m6m5/pu5ug6bybqOm9m6qWjpurjkybrY34m66RTpu06b6buenBm8Dpv5vG6cKbyYzvm8rpwJvP6cOb0enEm9LpxZvU6cmb1o5Jm9uR4pvh6cqb4unHm+Ppxpvk6cib6Ix+m/Dpzpvx6c2b8unMm/WIsZwE6dicBunUnAjp1ZwJ6dGcCunXnAzp05wNioKcEJhrnBLp1pwT6dKcFOnQnBXpz5wb6dqcIendnCTp3Jwl6ducLZVonC7p2ZwviPGcMOnenDLp4Jw5io+cOunLnDuJVpw+6eKcRunhnEfp35xIkkycUpaQnFeX2Jxa6eOcYOnknGfp5Zx26eaceOnnnOWSuZzn6eic6ZS1nOvp7Zzs6emc8OnqnPOWUJz0lsKc9pPOnQPp7p0G6e+dB5O8nQjp7J0J6eudDomonRLp950V6fadG4mVnR/p9J0j6fOdJunxnSiKm50q6fCdK46wnSyJp507jYOdPun6nT/p+Z1B6fidROn1nUbp+51I6fydUOpEnVHqQ51Z6kWdXIlMnV3qQJ1e6kGdYI2UnWGWt51k6kKdbJZRnW/qSp1y6kadeupLnYfqSJ2J6kedj4x7nZrqTJ2k6k2dqepOnavqSZ2v6fKdsupPnbSS35246lOduupUnbvqUp3B6lGdwupXncTqUJ3G6lWdz+pWndPqWZ3Z6lid5upbne3qXJ3v6l2d8phonfjqWp35kemd+o3rnf3qXp4a6l+eG+pgnh7qYZ516mKeeIyynnnqY5596mSef46tnoHqZZ6I6maei+pnnozqaJ6R6muekuppnpOYW56V6mqel5ftnp3qbJ6fl9mepeptnqaUnp6p6m6equpwnq3qcZ646m+euY2NnrqWy567loOevJv1nr6fgJ6/lpuexImpnszqc57Ni2+ezup0ns/qdZ7Q6nae0o2VntTqd57Y4NKe2ZbZntuR4Z7c6nie3ep6nt7qeZ7g6nue5ep8nujqfZ7v6n6e9OqAnvbqgZ736oKe+eqDnvvqhJ786oWe/eqGnwfqh58I6oifDpNDnxOM258V6oqfIJFsnyHqi58s6oyfO5VAnz7qjZ9K6o6fS+JWn07m2J9P6OufUuqPn1TqkJ9f6pKfYOqTn2HqlJ9il+6fY+qRn2bqlZ9n6pafauqYn2zql59y6pqfduqbn3fqmZ+Nl7Sfleqcn5zqnZ+d4nOfoOqe/wGBSf8DgZT/BIGQ/wWBk/8GgZX/CIFp/wmBav8KgZb/C4F7/wyBQ/8OgUT/D4Fe/xCCT/8RglD/EoJR/xOCUv8UglP/FYJU/xaCVf8Xglb/GIJX/xmCWP8agUb/G4FH/xyBg/8dgYH/HoGE/x+BSP8ggZf/IYJg/yKCYf8jgmL/JIJj/yWCZP8mgmX/J4Jm/yiCZ/8pgmj/KoJp/yuCav8sgmv/LYJs/y6Cbf8vgm7/MIJv/zGCcP8ygnH/M4Jy/zSCc/81gnT/NoJ1/zeCdv84gnf/OYJ4/zqCef87gW3/PIFf/z2Bbv8+gU//P4FR/0CBTf9BgoH/QoKC/0OCg/9EgoT/RYKF/0aChv9Hgof/SIKI/0mCif9Kgor/S4KL/0yCjP9Ngo3/ToKO/0+Cj/9QgpD/UYKR/1KCkv9TgpP/VIKU/1WClf9Wgpb/V4KX/1iCmP9Zgpn/WoKa/1uBb/9cgWL/XYFw/2EAof9iAKL/YwCj/2QApP9lAKX/ZgCm/2cAp/9oAKj/aQCp/2oAqv9rAKv/bACs/20Arf9uAK7/bwCv/3AAsP9xALH/cgCy/3MAs/90ALT/dQC1/3YAtv93ALf/eAC4/3kAuf96ALr/ewC7/3wAvP99AL3/fgC+/38Av/+AAMD/gQDB/4IAwv+DAMP/hADE/4UAxf+GAMb/hwDH/4gAyP+JAMn/igDK/4sAy/+MAMz/jQDN/44Azv+PAM//kADQ/5EA0f+SANL/kwDT/5QA1P+VANX/lgDW/5cA1/+YANj/mQDZ/5oA2v+bANv/nADc/50A3f+eAN7/nwDf/+OBUP/lgY8=",7070);const rt={shape:K.square,qrOptions:{typeNumber:k[0],errorCorrectionLevel:w.Q},cornersSquareOptions:{type:z.square},cornersDotOptions:{type:E.square},dotsOptions:{type:N.square}},st={shape:K.square,qrOptions:{typeNumber:k[0],mode:void 0,errorCorrectionLevel:w.Q},imageOptions:{mode:H.center,imageSize:.4,crossOrigin:void 0,margin:0,fill:{color:"rgba(255,255,255,1)"}},cornersSquareOptions:{type:z.dot,color:"#000000"},cornersDotOptions:{type:E.dot,color:"#000000"},dotsOptions:{type:N.verticalLine,color:"#000000",size:10},backgroundOptions:{color:"#FFFFFF"}},at={...st,dotsOptions:{...st.dotsOptions,type:N.rounded},cornersSquareOptions:{type:z.dot,color:"#000000"},cornersDotOptions:{type:E.dot,color:"#000000"}},lt={...st,dotsOptions:{...st.dotsOptions,type:N.dot},cornersSquareOptions:{type:z.dot,color:"#000000"},cornersDotOptions:{type:E.dot,color:"#000000"}},ht={...st,dotsOptions:{...st.dotsOptions,type:N.classy},cornersSquareOptions:{type:z.classy,color:"#000000"},cornersDotOptions:{type:E.classy,color:"#000000"}},dt={plain:rt,basic:st,rounded:at,dots:lt,classy:ht},ct=t=>"number"==typeof t&&!isNaN(t)&&isFinite(t),ut=(t,e)=>{const i=[];return Object.values(U).includes(t.type)||i.push({path:`${e}.type`,message:`Invalid gradient type. Must be one of: ${Object.values(U).join(", ")}`,value:t.type}),void 0===t.rotation||ct(t.rotation)||i.push({path:`${e}.rotation`,message:"Rotation must be a valid number",value:t.rotation}),!t.colorStops||!Array.isArray(t.colorStops)||t.colorStops.length<2?i.push({path:`${e}.colorStops`,message:"Gradient must have at least 2 color stops",value:t.colorStops}):t.colorStops.forEach(((t,o)=>{(!ct(t.offset)||t.offset<0||t.offset>1)&&i.push({path:`${e}.colorStops[${o}].offset`,message:"Color stop offset must be between 0 and 1",value:t.offset}),(t=>{if(new Set(["black","white","red","green","blue","yellow","purple","gray","grey","cyan","magenta","lime","pink","teal","brown","orange"]).has(t.toLowerCase()))return!0;if(/^#([A-Fa-f0-9]{3}){1,2}$/.test(t))return!0;if(/^#([A-Fa-f0-9]{4}){1,2}$/.test(t))return!0;if(/^rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/.test(t)||/^rgba\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*([01]?\.?\d*)\)$/.test(t))return(t.match(/\d+/g)?.map(Number)||[]).every((t=>t>=0&&t<=255));return!1})(t.color)||i.push({path:`${e}.colorStops[${o}].color`,message:"Invalid color format",value:t.color})})),i};function pt(t){const e=[];let i={...st};return t.data&&"string"==typeof t.data||e.push({path:"data",message:"QR data is required and must be a string",value:t.data}),t.shape&&!Object.values(K).includes(t.shape)&&(e.push({path:"shape",message:`Invalid shape type. Must be one of: ${Object.values(K).join(", ")}`,value:t.shape}),t.shape=st.shape),t.qrOptions&&(t.qrOptions.typeNumber&&!Object.values(k).includes(t.qrOptions.typeNumber)&&(e.push({path:"qrOptions.typeNumber",message:"Invalid type number",value:t.qrOptions.typeNumber}),t.qrOptions.typeNumber=st.qrOptions?.typeNumber),t.qrOptions.errorCorrectionLevel&&!Object.values(w).includes(t.qrOptions.errorCorrectionLevel)&&(e.push({path:"qrOptions.errorCorrectionLevel",message:"Invalid error correction level",value:t.qrOptions.errorCorrectionLevel}),t.qrOptions.errorCorrectionLevel=st.qrOptions?.errorCorrectionLevel),t.qrOptions.mode&&!Object.values(y).includes(t.qrOptions.mode)&&(e.push({path:"qrOptions.mode",message:"Invalid mode",value:t.qrOptions.mode}),t.qrOptions.mode=st.qrOptions?.mode)),t.imageOptions&&(t.imageOptions.imageSize&&(!ct(t.imageOptions.imageSize)||t.imageOptions.imageSize<=0||t.imageOptions.imageSize>1)&&(e.push({path:"imageOptions.imageSize",message:"Image size must be between 0 and 1",value:t.imageOptions.imageSize}),t.imageOptions.imageSize=st.imageOptions?.imageSize),t.imageOptions.margin&&(!ct(t.imageOptions.margin)||t.imageOptions.margin<0)&&(e.push({path:"imageOptions.margin",message:"Margin must be a non-negative number",value:t.imageOptions.margin}),t.imageOptions.margin=st.imageOptions?.margin),t.imageOptions.mode&&!Object.values(H).includes(t.imageOptions.mode)&&(e.push({path:"imageOptions.mode",message:`Invalid image mode. Must be one of: ${Object.values(H).join(", ")}`,value:t.imageOptions.mode}),t.imageOptions.mode=st.imageOptions?.mode)),t.dotsOptions&&(t.dotsOptions.type&&!Object.values(N).includes(t.dotsOptions.type)&&(e.push({path:"dotsOptions.type",message:`Invalid dot type. Must be one of: ${Object.values(N).join(", ")}`,value:t.dotsOptions.type}),t.dotsOptions.type=st.dotsOptions?.type),t.dotsOptions.size&&(!ct(t.dotsOptions.size)||t.dotsOptions.size<=0)&&(e.push({path:"dotsOptions.size",message:"Dot size must be a positive number",value:t.dotsOptions.size}),t.dotsOptions.size=st.dotsOptions?.size),t.dotsOptions.gradient&&e.push(...ut(t.dotsOptions.gradient,"dotsOptions.gradient"))),t.cornersSquareOptions&&(t.cornersSquareOptions.type&&!Object.values(z).includes(t.cornersSquareOptions.type)&&(e.push({path:"cornersSquareOptions.type",message:`Invalid corner square type. Must be one of: ${Object.values(z).join(", ")}`,value:t.cornersSquareOptions.type}),t.cornersSquareOptions.type=st.cornersSquareOptions?.type),t.cornersSquareOptions.gradient&&e.push(...ut(t.cornersSquareOptions.gradient,"cornersSquareOptions.gradient"))),t.cornersDotOptions&&(t.cornersDotOptions.type&&!Object.values(E).includes(t.cornersDotOptions.type)&&(e.push({path:"cornersDotOptions.type",message:`Invalid corner dot type. Must be one of: ${Object.values(E).join(", ")}`,value:t.cornersDotOptions.type}),t.cornersDotOptions.type=st.cornersDotOptions?.type),t.cornersDotOptions.gradient&&e.push(...ut(t.cornersDotOptions.gradient,"cornersDotOptions.gradient"))),i={...i,...t},{warnings:e,validatedOptions:i}}const mt={classic:{primaryColor:"#000000",secondaryColor:"#000000",thirdColor:"#757575",backgroundColor:"#ffffff",dotShape:N.square,cornerSquareShape:z.square,cornerDotShape:E.square},modern:{primaryColor:"#4CAF50",secondaryColor:"#007fff",thirdColor:"#d81b60",backgroundColor:"#ffffff",dotShape:N.dot,cornerSquareShape:z.rounded,cornerDotShape:E.dot},rounded:{primaryColor:"#007bff",secondaryColor:"#4CAF50",thirdColor:"#d32f2f",backgroundColor:"#ffffff",dotShape:N.rounded,cornerSquareShape:z.rounded,cornerDotShape:E.dot},vibrant:{primaryColor:"#ff5722",secondaryColor:"#3f51b5",thirdColor:"#2e7d32",backgroundColor:"#ffffff",dotShape:N.rounded,cornerSquareShape:z.rounded,cornerDotShape:E.dot},pastel:{primaryColor:"#f8bbd0",secondaryColor:"#b2ebf2",thirdColor:"#00695c",backgroundColor:"#f5f5f5",dotShape:N.dot,cornerSquareShape:z.square,cornerDotShape:E.square},neon:{primaryColor:"#00e676",secondaryColor:"#ff1744",thirdColor:"#0288d1",backgroundColor:"#212121",dotShape:N.rounded,cornerSquareShape:z.rounded,cornerDotShape:E.dot},earthy:{primaryColor:"#795548",secondaryColor:"#4db6ac",thirdColor:"#8e24aa",backgroundColor:"#efebe9",dotShape:N.square,cornerSquareShape:z.square,cornerDotShape:E.square},sunset:{primaryColor:"#bf360c",secondaryColor:"#ab47bc",thirdColor:"#00796b",backgroundColor:"#fff3e0",dotShape:N.dot,cornerSquareShape:z.rounded,cornerDotShape:E.dot},oceanic:{primaryColor:"#0288d1",secondaryColor:"#26a69a",thirdColor:"#6a1b9a",backgroundColor:"#e0f7fa",dotShape:N.rounded,cornerSquareShape:z.square,cornerDotShape:E.dot},bold:{primaryColor:"#d50000",secondaryColor:"#6200ea",thirdColor:"#388e3c",backgroundColor:"#fafafa",dotShape:N.square,cornerSquareShape:z.rounded,cornerDotShape:E.square},limeGlow:{primaryColor:"#afb42b",secondaryColor:"#536dfe",thirdColor:"#c62828",backgroundColor:"#fffde7",dotShape:N.dot,cornerSquareShape:z.rounded,cornerDotShape:E.dot},twilight:{primaryColor:"#4527a0",secondaryColor:"#d84315",thirdColor:"#00796b",backgroundColor:"#eceff1",dotShape:N.rounded,cornerSquareShape:z.rounded,cornerDotShape:E.dot},meadow:{primaryColor:"#388e3c",secondaryColor:"#689f38",thirdColor:"#ad1457",backgroundColor:"#f1f8e9",dotShape:N.dot,cornerSquareShape:z.square,cornerDotShape:E.square},coral:{primaryColor:"#c2185b",secondaryColor:"#00838f",thirdColor:"#f57f17",backgroundColor:"#ffebee",dotShape:N.rounded,cornerSquareShape:z.rounded,cornerDotShape:E.dot},midnight:{primaryColor:"#5c6bc0",secondaryColor:"#fbc02d",thirdColor:"#00695c",backgroundColor:"#263238",dotShape:N.square,cornerSquareShape:z.square,cornerDotShape:E.square},citrus:{primaryColor:"#f57c00",secondaryColor:"#558b2f",thirdColor:"#6d4c41",backgroundColor:"#fff8e1",dotShape:N.dot,cornerSquareShape:z.rounded,cornerDotShape:E.dot},dusk:{primaryColor:"#6a1b9a",secondaryColor:"#e65100",thirdColor:"#2e7d32",backgroundColor:"#d7ccc8",dotShape:N.rounded,cornerSquareShape:z.square,cornerDotShape:E.dot},frost:{primaryColor:"#0277bd",secondaryColor:"#37474f",thirdColor:"#c2185b",backgroundColor:"#e1f5fe",dotShape:N.dot,cornerSquareShape:z.rounded,cornerDotShape:E.square},autumn:{primaryColor:"#d84315",secondaryColor:"#827717",thirdColor:"#4a148c",backgroundColor:"#efebe9",dotShape:N.square,cornerSquareShape:z.rounded,cornerDotShape:E.dot}},gt=/\.?0+$/;function ft(t){return t.toFixed(7).replace(gt,"")}function bt(t,...e){return t.reduce(((t,i,o)=>{let n="";return o&&(n=e[o-1]),"number"==typeof n&&(n=ft(n)),`${t}${n}${i}`}),"").trim().replace(/[\s\n\r]+/gim," ")}class Ot{get element(){return this._element}constructor(t,e){this.type=t,this.document=e}draw(t){let e;switch(this.type){case E.square:e=this.drawSquare;break;case E.heart:e=this.drawHeart;break;case E.rounded:e=this.drawRounded;break;case E.classy:e=this.drawClassy;break;case E.inpoint:e=this.drawInpoint;break;case E.outpoint:e=this.drawOutpoint;break;case E.dot:default:e=this.drawDot}e.call(this,t)}rotateFigure({x:t,y:e,size:i,rotation:o=0,draw:n}){const r=t+i/2,s=e+i/2;n(),this._element?.setAttribute("transform",`rotate(${ft(180*o/Math.PI)},${r},${s})`)}basicDot(t){const{size:e,x:i,y:o}=t;this.rotateFigure({...t,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","circle"),this._element.setAttribute("cx",ft(i+e/2)),this._element.setAttribute("cy",ft(o+e/2)),this._element.setAttribute("r",ft(e/2.1))}})}basicSquare(t){const{size:e,x:i,y:o}=t,n=e/11;this.rotateFigure({...t,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","rect"),this._element.setAttribute("x",ft(i+n)),this._element.setAttribute("y",ft(o+n)),this._element.setAttribute("width",ft(e-2*n)),this._element.setAttribute("height",ft(e-2*n))}})}basicHeart(t){const{size:e,x:i,y:o}=t;this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path");let n=!1,r=0;this._element.setAttribute("d",["M",1,.3262506,"c",0,.0383376,-.0064626,.0758377,-.0193751,.1125001,"s",-.0356247,.076875,-.0681248,.1206252,"c",-.0325,.0437499,-.0762503,.0931247,-.1312501,.1481249,"C",.7262502,.7625008,.6566626,.8279132,.5724999,.9037505,"L",.5,.9687506,"L",.4275001,.9037505,"C",.3433374,.8279132,.2737499,.7625005,.21875,.7075007,"C",.1637501,.6525008,.1199999,.6031258,.0874999,.5593758,"S",.0322876,.4754133,.0193751,.4387506,"S",0,.3645881,0,.3262506,"c",0,-.0783374,.0262499,-.1437498,.07875,-.1962499,"s",.1179124,-.07875,.1962499,-.07875,"c",.0433376,0,.0845875,.0091625,.12375,.0274999,"S",.4716623,.1229131,.5,.1562506,"c",.0283374,-.0333375,.0620874,-.0591625,.1012502,-.0775,"c",.0391627,-.0183375,.0804126,-.0274999,.12375,-.0274999,"c",.0783374,0,.1437497,.0262499,.1962501,.07875,"S",1,.2479131,1,.3262506,"z"].map((t=>"string"==typeof t?(r=0,n=t.toUpperCase()==t,t):(r++,t*=e,n&&(t+=r%2==1?i:o),ft(t)))).join(" "))}basicRounded(t){const{size:e,x:i,y:o}=t;this.rotateFigure({...t,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","rect"),this._element.setAttribute("x",ft(i)),this._element.setAttribute("y",ft(o)),this._element.setAttribute("width",ft(e)),this._element.setAttribute("height",ft(e)),this._element.setAttribute("rx",ft(e/4)),this._element.setAttribute("ry",ft(e/4))}})}basicClassy(t){const{size:e,x:i,y:o}=t,n=e/7;this.rotateFigure({...t,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("clip-rule","evenodd"),this._element.setAttribute("d",bt`M ${i} ${o+2.5*n} v ${2*n} a ${2.5*n} ${2.5*n}, 0, 0, 0, ${2.5*n} ${2.5*n} h ${4.5*n} v ${-4.5*n} a ${2.5*n} ${2.5*n}, 0, 0, 0, ${2.5*-n} ${2.5*-n} h ${-2*n} H ${i} z`)}})}basicInpoint(t){const{size:e,x:i,y:o}=t,n=e;this.rotateFigure({...t,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("clip-rule","evenodd"),this._element.setAttribute("d",bt`M ${i} ${o+n/2} v ${n/4} a ${n/4}, ${n/4} 0 0 0 ${n/4}, ${n/4} h ${n/4*3} v ${-n/4*3} a ${n/4}, ${n/4} 0 0 0 ${-n/4}, ${-n/4} h ${-n/2} a ${n/4}, ${n/4} 0 0 0 ${-n/4}, ${n/4} z`)}})}drawDot({x:t,y:e,size:i,rotation:o}){this.basicDot({x:t,y:e,size:i,rotation:o})}drawSquare({x:t,y:e,size:i,rotation:o}){this.basicSquare({x:t,y:e,size:i,rotation:o})}drawHeart({x:t,y:e,size:i,rotation:o}){this.basicHeart({x:t,y:e,size:i,rotation:o})}drawRounded({x:t,y:e,size:i,rotation:o}){this.basicRounded({x:t,y:e,size:i,rotation:o})}drawClassy({x:t,y:e,size:i,rotation:o}){this.basicClassy({x:t,y:e,size:i,rotation:o})}drawInpoint({x:t,y:e,size:i,rotation:o}){this.basicInpoint({x:t,y:e,size:i,rotation:o})}drawOutpoint({x:t,y:e,size:i,rotation:o}){this.basicInpoint({x:t,y:e,size:i,rotation:(o||0)+Math.PI})}}class kt{get element(){return this._element}get fill(){return this._fill}constructor(t,e){this.type=t,this.document=e}draw(t){let e;switch(this.type){case z.square:e=this.drawSquare;break;case z.rounded:e=this.drawExtraRounded;break;case z.classy:e=this.drawClassy;break;case z.outpoint:e=this.drawOutpoint;break;case z.inpoint:e=this.drawInpoint;break;case z.dot:default:e=this.drawDot}e.call(this,t)}rotateFigure({x:t,y:e,size:i,rotation:o=0,draw:n}){const r=t+i/2,s=e+i/2;n(),this._element?.setAttribute("transform",`rotate(${ft(180*o/Math.PI)},${r},${s})`),this._fill?.setAttribute("transform",`rotate(${ft(180*o/Math.PI)},${r},${s})`)}basicDot(t){const{size:e,x:i,y:o}=t,n=e/8,r=.5*e,s=r-n;this.rotateFigure({...t,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("clip-rule","evenodd"),this._element.setAttribute("d",bt`M ${i+e/2} ${o+(e/2-r)} a ${r} ${r} 0 1 0 0.1 0 z m 0 ${n} a ${s} ${s} 0 1 1 -0.1 0 Z`),this._fill=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._fill.setAttribute("clip-rule","evenodd"),this._fill.setAttribute("d",bt`M ${i+e/2} ${o+(e/2-(r+n))} a ${r+n} ${r+n} 0 1 0 0.1 0 z`)}})}basicSquare(t){const{size:e,x:i,y:o}=t,n=e/7;this.rotateFigure({...t,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("clip-rule","evenodd"),this._element.setAttribute("d",bt`M ${i} ${o} v ${e} h ${e} v ${-e} z M ${i+n} ${o+n} h ${e-2*n} v ${e-2*n} h ${2*n-e} z`),this._fill=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._fill.setAttribute("clip-rule","evenodd"),this._fill.setAttribute("d",bt`M ${i-n} ${o-n} h ${e+2*n} v ${e+2*n} h ${-e-2*n} z`)}})}basicExtraRounded(t){const{size:e,x:i,y:o}=t,n=e/7;this.rotateFigure({...t,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("clip-rule","evenodd"),this._element.setAttribute("d",bt`M ${i} ${o+2.5*n} v ${2*n} a ${2.5*n} ${2.5*n}, 0, 0, 0, ${2.5*n} ${2.5*n} h ${2*n} a ${2.5*n} ${2.5*n}, 0, 0, 0, ${2.5*n} ${2.5*-n} v ${-2*n} a ${2.5*n} ${2.5*n}, 0, 0, 0, ${2.5*-n} ${2.5*-n} h ${-2*n} a ${2.5*n} ${2.5*n}, 0, 0, 0, ${2.5*-n} ${2.5*n} z M ${i+2.5*n} ${o+n} h ${2*n} a ${1.5*n} ${1.5*n}, 0, 0, 1, ${1.5*n} ${1.5*n} v ${2*n} a ${1.5*n} ${1.5*n}, 0, 0, 1, ${1.5*-n} ${1.5*n} h ${-2*n} a ${1.5*n} ${1.5*n}, 0, 0, 1, ${1.5*-n} ${1.5*-n} v ${-2*n} a ${1.5*n} ${1.5*n}, 0, 0, 1, ${1.5*n} ${1.5*-n} z`),this._fill=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._fill.setAttribute("clip-rule","evenodd"),this._fill.setAttribute("d",bt`M ${i-n} ${o+2.5*n} v ${2*n} a ${3.5*n} ${3.5*n}, 0, 0, 0, ${3.5*n} ${3.5*n} h ${2*n} a ${3.5*n} ${3.5*n}, 0, 0, 0, ${3.5*n} ${3.5*-n} v ${-2*n} a ${3.5*n} ${3.5*n}, 0, 0, 0, ${3.5*-n} ${3.5*-n} h ${-2*n} a ${3.5*n} ${3.5*n}, 0, 0, 0, ${3.5*-n} ${3.5*n} z`)}})}basicClassy(t){const{size:e,x:i,y:o}=t,n=e/7;this.rotateFigure({...t,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("clip-rule","evenodd"),this._element.setAttribute("d",bt`M ${i} ${o+2.5*n} v ${2*n} a ${2.5*n} ${2.5*n}, 0, 0, 0, ${2.5*n} ${2.5*n} h ${4.5*n} v ${-4.5*n} a ${2.5*n} ${2.5*n}, 0, 0, 0, ${2.5*-n} ${2.5*-n} h ${-2*n} H ${i} z M ${i+2.5*n} ${o+n} h ${2*n} a ${1.5*n} ${1.5*n}, 0, 0, 1, ${1.5*n} ${1.5*n} v ${3.5*n} h ${-3.5*n} a ${1.5*n} ${1.5*n}, 0, 0, 1, ${1.5*-n} ${1.5*-n} v ${-3.5*n} z`),this._fill=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._fill.setAttribute("clip-rule","evenodd"),this._fill.setAttribute("d",bt`M ${i+.5*n} ${o-n} h ${4*n} a ${3.5*n} ${3.5*n}, 0, 0, 1, ${3.5*n} ${3.5*n} v ${5.5*n} h ${-5.5*n} a ${3.5*n} ${3.5*n}, 0, 0, 1, ${3.5*-n} ${3.5*-n} v ${-5.5*n} z`)}})}basicInpoint(t){const{size:e,x:i,y:o}=t,n=e/7;this.rotateFigure({...t,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("clip-rule","evenodd"),this._element.setAttribute("d",bt`M ${i} ${o+2.5*n} v ${2*n} a ${2.5*n} ${2.5*n}, 0, 0, 0, ${2.5*n} ${2.5*n} h ${4.5*n} v ${-4.5*n} a ${2.5*n} ${2.5*n}, 0, 0, 0, ${2.5*-n} ${2.5*-n} h ${-2*n} a ${2.5*n} ${2.5*n}, 0, 0, 0, ${2.5*-n} ${2.5*n} z M ${i+2.5*n} ${o+n} h ${2*n} a ${1.5*n} ${1.5*n}, 0, 0, 1, ${1.5*n} ${1.5*n} v ${3.5*n} h ${-3.5*n} a ${1.5*n} ${1.5*n}, 0, 0, 1, ${1.5*-n} ${1.5*-n} v ${-2*n} a ${1.5*n} ${1.5*n}, 0, 0, 1, ${1.5*n} ${1.5*-n} z`),this._fill=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._fill.setAttribute("clip-rule","evenodd"),this._fill.setAttribute("d",bt`M ${i+.5*n} ${o-n} h ${4*n} a ${3.5*n} ${3.5*n}, 0, 0, 1, ${3.5*n} ${3.5*n} v ${5.5*n} h ${-5.5*n} a ${3.5*n} ${3.5*n}, 0, 0, 1, ${3.5*-n} ${3.5*-n} v ${-2*n} a ${3.5*n} ${3.5*n}, 0, 0, 1, ${3.5*n} ${3.5*-n} z`)}})}drawDot({x:t,y:e,size:i,rotation:o}){this.basicDot({x:t,y:e,size:i,rotation:o})}drawSquare({x:t,y:e,size:i,rotation:o}){this.basicSquare({x:t,y:e,size:i,rotation:o})}drawExtraRounded({x:t,y:e,size:i,rotation:o}){this.basicExtraRounded({x:t,y:e,size:i,rotation:o})}drawClassy({x:t,y:e,size:i,rotation:o}){this.basicClassy({x:t,y:e,size:i,rotation:o})}drawInpoint({x:t,y:e,size:i,rotation:o}){this.basicInpoint({x:t,y:e,size:i,rotation:o})}drawOutpoint({x:t,y:e,size:i,rotation:o}){this.basicInpoint({x:t,y:e,size:i,rotation:(o||0)+Math.PI})}}class wt{get element(){return this._element}constructor(t,e){this.type=t,this.document=e}draw(t){let e;switch(this.type){case N.dot:e=this.drawDot;break;case N.randomDot:e=this.drawRandomDot;break;case N.classy:e=this.drawClassy;break;case N.classyRounded:e=this.drawClassyRounded;break;case N.rounded:e=this.drawRounded;break;case N.verticalLine:e=this.drawVerticalLine;break;case N.horizontalLine:e=this.drawHorizontalLine;break;case N.extraRounded:e=this.drawExtraRounded;break;case N.diamond:e=this.drawDiamond;break;case N.smallSquare:e=this.drawSmallSquare;break;case N.tinySquare:e=this.drawTinySquare;break;case N.star:e=this.drawStar;break;case N.plus:e=this.drawPlus;break;case N.square:default:e=this.drawSquare}e.call(this,t)}rotateFigure({x:t,y:e,size:i,rotation:o=0,draw:n}){const r=t+i/2,s=e+i/2;n(),this._element?.setAttribute("transform",`rotate(${ft(180*o/Math.PI)},${r},${s})`)}basicDot(t){const{size:e,x:i,y:o}=t;this.rotateFigure({...t,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","circle"),this._element.setAttribute("cx",ft(i+e/2)),this._element.setAttribute("cy",ft(o+e/2)),this._element.setAttribute("r",ft(e/2))}})}basicSquare(t){const{size:e,x:i,y:o}=t;this.rotateFigure({...t,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","rect"),this._element.setAttribute("x",ft(i)),this._element.setAttribute("y",ft(o)),this._element.setAttribute("width",ft(e)),this._element.setAttribute("height",ft(e))}})}basicSideRounded(t){const{size:e,x:i,y:o}=t;this.rotateFigure({...t,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("d",bt`M ${i} ${o} v ${e} h ${e/2} a ${e/2} ${e/2}, 0, 0, 0, 0 ${-e} z`)}})}basicCornerRounded(t){const{size:e,x:i,y:o}=t;this.rotateFigure({...t,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("d",bt`M ${i} ${o} v ${e} h ${e} v ${-e/2} a ${e/2} ${e/2}, 0, 0, 0, ${-e/2} ${-e/2} z`)}})}basicCornerExtraRounded(t){const{size:e,x:i,y:o}=t;this.rotateFigure({...t,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("d",bt`M ${i} ${o} v ${e} h ${e} a ${e} ${e}, 0, 0, 0, ${-e} ${-e} z`)}})}basicCornersRounded(t){const{size:e,x:i,y:o}=t;this.rotateFigure({...t,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("d",bt`M ${i} ${o} v ${e/2} a ${e/2} ${e/2}, 0, 0, 0, ${e/2} ${e/2} h ${e/2} v ${-e/2} a ${e/2} ${e/2}, 0, 0, 0, ${-e/2} ${-e/2} z`)}})}drawDot({x:t,y:e,size:i}){this.basicDot({x:t,y:e,size:i,rotation:0})}drawRandomDot({x:t,y:e,size:i}){const o=.25*Math.random()+.75;this.basicDot({x:t,y:e,size:i*o,rotation:0})}drawSquare({x:t,y:e,size:i}){this.basicSquare({x:t,y:e,size:i,rotation:0})}drawSmallSquare({x:t,y:e,size:i}){const o=i;i=.7*o,t+=.15*o,e+=.15*o,this.basicSquare({x:t,y:e,size:i,rotation:0})}drawTinySquare({x:t,y:e,size:i}){const o=i;i=.6*o,t+=.35*o,e+=.35*o,this.basicSquare({x:t,y:e,size:i,rotation:0})}drawDiamond({x:t,y:e,size:i}){this.basicSquare({x:t,y:e,size:i,rotation:Math.PI/4})}drawRounded({x:t,y:e,size:i,getNeighbor:o}){const n=o?+o(-1,0):0,r=o?+o(1,0):0,s=o?+o(0,-1):0,a=o?+o(0,1):0,l=n+r+s+a;if(0!==l)if(l>2||n&&r||s&&a)this.basicSquare({x:t,y:e,size:i,rotation:0});else{if(2===l){let o=0;return n&&s?o=Math.PI/2:s&&r?o=Math.PI:r&&a&&(o=-Math.PI/2),void this.basicCornerRounded({x:t,y:e,size:i,rotation:o})}if(1===l){let o=0;return s?o=Math.PI/2:r?o=Math.PI:a&&(o=-Math.PI/2),void this.basicSideRounded({x:t,y:e,size:i,rotation:o})}}else this.basicDot({x:t,y:e,size:i,rotation:0})}drawVerticalLine({x:t,y:e,size:i,getNeighbor:o}){const n=o?+o(-1,0):0,r=o?+o(1,0):0,s=o?+o(0,-1):0,a=o?+o(0,1):0;if(0===n+r+s+a||n&&!s&&!a||r&&!s&&!a)this.basicDot({x:t,y:e,size:i,rotation:0});else if(s&&a)this.basicSquare({x:t,y:e,size:i,rotation:0});else if(!s||a)if(!a||s);else{const o=-Math.PI/2;this.basicSideRounded({x:t,y:e,size:i,rotation:o})}else{const o=Math.PI/2;this.basicSideRounded({x:t,y:e,size:i,rotation:o})}}drawHorizontalLine({x:t,y:e,size:i,getNeighbor:o}){const n=o?+o(-1,0):0,r=o?+o(1,0):0,s=o?+o(0,-1):0,a=o?+o(0,1):0;if(0===n+r+s+a||s&&!n&&!r||a&&!n&&!r)this.basicDot({x:t,y:e,size:i,rotation:0});else if(n&&r)this.basicSquare({x:t,y:e,size:i,rotation:0});else if(!n||r)if(!r||n);else{const o=Math.PI;this.basicSideRounded({x:t,y:e,size:i,rotation:o})}else{const o=0;this.basicSideRounded({x:t,y:e,size:i,rotation:o})}}drawExtraRounded({x:t,y:e,size:i,getNeighbor:o}){const n=o?+o(-1,0):0,r=o?+o(1,0):0,s=o?+o(0,-1):0,a=o?+o(0,1):0,l=n+r+s+a;if(0!==l)if(l>2||n&&r||s&&a)this.basicSquare({x:t,y:e,size:i,rotation:0});else{if(2===l){let o=0;return n&&s?o=Math.PI/2:s&&r?o=Math.PI:r&&a&&(o=-Math.PI/2),void this.basicCornerExtraRounded({x:t,y:e,size:i,rotation:o})}if(1===l){let o=0;return s?o=Math.PI/2:r?o=Math.PI:a&&(o=-Math.PI/2),void this.basicSideRounded({x:t,y:e,size:i,rotation:o})}}else this.basicDot({x:t,y:e,size:i,rotation:0})}drawClassy({x:t,y:e,size:i,getNeighbor:o}){const n=o?+o(-1,0):0,r=o?+o(1,0):0,s=o?+o(0,-1):0,a=o?+o(0,1):0;0!==n+r+s+a?n||s?r||a?this.basicSquare({x:t,y:e,size:i,rotation:0}):this.basicCornerRounded({x:t,y:e,size:i,rotation:Math.PI/2}):this.basicCornerRounded({x:t,y:e,size:i,rotation:-Math.PI/2}):this.basicCornersRounded({x:t,y:e,size:i,rotation:Math.PI/2})}drawClassyRounded({x:t,y:e,size:i,getNeighbor:o}){const n=o?+o(-1,0):0,r=o?+o(1,0):0,s=o?+o(0,-1):0,a=o?+o(0,1):0;0!==n+r+s+a?n||s?r||a?this.basicSquare({x:t,y:e,size:i,rotation:0}):this.basicCornerExtraRounded({x:t,y:e,size:i,rotation:Math.PI/2}):this.basicCornerExtraRounded({x:t,y:e,size:i,rotation:-Math.PI/2}):this.basicCornersRounded({x:t,y:e,size:i,rotation:Math.PI/2})}drawStar({x:t,y:e,size:i}){this.rotateFigure({x:t,y:e,size:i,rotation:0,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path");const o=t+i/2,n=e+i/2,r=1.3*i/2,s=.5*r;let a="";for(let t=0;t<10;t++){const e=t*Math.PI/5-Math.PI/2,i=t%2==0?r:s;a+=(0===t?"M":"L")+`${o+i*Math.cos(e)},${n+i*Math.sin(e)}`}a+="Z",this._element?.setAttribute("d",a)}})}drawPlus({x:t,y:e,size:i}){this.rotateFigure({x:t,y:e,size:i,rotation:0,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path");const o=.35*i,n=.85*i,r=(i-n)/2,s=o/2,a=[`M ${t+i/2-s} ${e+r}`,`h ${o}`,`v ${n}`,"h "+-o,"z",`M ${t+r} ${e+i/2-s}`,`h ${n}`,`v ${o}`,"h "+-n,"z"].join(" ");this._element?.setAttribute("d",a)}})}}const yt={toDataURL:t=>"string"==typeof t&&t.startsWith("data:")?Promise.resolve(t):new Promise(((e,i)=>{if("string"==typeof t){const o=new XMLHttpRequest,n=()=>{o.abort()};o.onload=()=>{if(o.status<200||o.status>=300)return n(),void i(new Error(`Failed to load image: ${o.statusText}`));const t=new FileReader;t.onloadend=()=>{n(),e(t.result)},t.onerror=()=>{n(),i(new Error("Failed to read image blob"))},t.readAsDataURL(o.response)},o.onerror=o.ontimeout=o.onabort=()=>{n(),i(new Error("Image load aborted or failed"))};try{o.open("GET",t,!0),o.responseType="blob",o.timeout=1e4,o.send()}catch(t){n(),i(t)}}else{const o=new FileReader;o.onloadend=()=>{e(o.result)},o.onerror=()=>{i(new Error("Failed to read local image"))},o.readAsDataURL(t)}})).catch((t=>(console.error("Image loading error:",t),"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIj48cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSIjY2NjIi8+PHRleHQgeD0iNTAlIiB5PSI1MCUiIGRvbWluYW50LWJhc2VsaW5lPSJtaWRkbGUiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiMwMDAiIGZvbnQtc2l6ZT0iMTYiPkxvZ28gbG9hZCBlcnJvcjwvdGV4dD48L3N2Zz4="))),getSize:(t,e)=>new Promise(((i,o)=>{const n=new Image,r=setTimeout((()=>{o(new Error("Image loading timed out"))}),15e3);"string"==typeof e&&(n.crossOrigin=e);const s=()=>{clearTimeout(r),n.onload=n.onerror=n.onabort=null,n.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="};n.onload=()=>{s(),i({width:n.width,height:n.height})},n.onerror=n.onabort=()=>{s(),o(new Error("Failed to load image"))};try{"string"==typeof t?n.src=t:yt.toDataURL(t).then((t=>{t?n.src=t:o(new Error("Invalid image source"))})).catch(o)}catch(t){s(),o(t)}})).catch((t=>(console.error("Image size detection error:",t),{width:200,height:200})))};function Zt(t){let e,i=[],o=1;if("#"===(t=t.toLowerCase())[0]){const e=t.slice(1),n=e.length;n<=4?(i=[parseInt(e[0]+e[0],16),parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16)],4===n&&(o=parseInt(e[3]+e[3],16)/255)):(i=[parseInt(e[0]+e[1],16),parseInt(e[2]+e[3],16),parseInt(e[4]+e[5],16)],8===n&&(o=parseInt(e[6]+e[7],16)/255)),i[0]||(i[0]=0),i[1]||(i[1]=0),i[2]||(i[2]=0)}else{if(!(e=/^((?:rgba?))\s*\(([^)]*)\)/.exec(t)))return{value:t,alpha:o};{const t=3;i=e[2].trim().split(/\s*[,/]\s*|\s+/),i=i.map(((t,e)=>{if("%"===t[t.length-1]){const i=parseFloat(t)/100;return 3===e?i:255*i}return"none"===t?0:parseFloat(t)})),o=i.length>t?i.pop():1}}return{value:"#"+i.map((t=>Math.max(0,Math.min(255,t)).toString(16).padStart(2,"0"))).join(""),alpha:Math.max(0,Math.min(1,o))}}const St=[[1,1,1,1,1,1,1],[1,0,0,0,0,0,1],[1,0,0,0,0,0,1],[1,0,0,0,0,0,1],[1,0,0,0,0,0,1],[1,0,0,0,0,0,1],[1,1,1,1,1,1,1]],At=[[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,1,1,1,0,0],[0,0,1,1,1,0,0],[0,0,1,1,1,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0]];class Ct{constructor(t){this.roundValue=t=>"number"==typeof t?t:parseInt(t.replace("%",""),10)/100;const e=t.margin||0,i="circle"===t.shape?.1:.3,{bordersMain:o,bordersOuter:n,bordersInner:r}=t,s=Math.min(t.width,t.height),a=T(t.borderOptions?.radius),l=T(t.borderOptions?.inner?.radius,a),h=a&&v(a)>0?v(a)/100*s:0,d=(a&&v(l)>0?v(l)/100*s:0)??h,c=d>0&&t.borderOptions?.hasBorder?d*i:0;this._hls=t.hls,this.finalWidth=t.width+o.left+o.right+n.left+n.right+r.left+r.right,this.finalHeight=t.height+o.top+o.bottom+n.top+n.bottom+r.top+r.bottom;const u=o.left+o.right+n.left+n.right+r.left+r.right,p=o.top+o.bottom+n.top+n.bottom+r.top+r.bottom,m=t.borderOptions?.hasBorder?this.finalWidth-u-2*n.left-2*r.left-r.right-2*e-c:this.finalWidth-2*e,g=t.borderOptions?.hasBorder?this.finalHeight-p-2*n.top-2*r.top-r.top-2*e-c:this.finalHeight-2*e,f=m/t.width,b=g/t.height,O=Math.min(f,b),k=Math.min(Math.max(t.scale??1,0),1.5),w=Math.min(Math.max(t.borderOptions?.inner?.scale??1,0),1.5),y=t.borderOptions?.inner?.horizontalOffset||0,Z=t.borderOptions?.inner?.verticalOffset||0;t.scale=O*k*w||1,this.options=t,this.document=t.document,this.imageTools=t.imageTools||yt,this._element=this.document.createElementNS("http://www.w3.org/2000/svg","svg");const S=ft(t.width),A=ft(t.height);t.isResponsive||(this._element.setAttribute("width",S),this._element.setAttribute("height",A)),this._element.setAttribute("viewBox",`0 0 ${S} ${A}`),this.defs=this.document.createElementNS("http://www.w3.org/2000/svg","defs"),this._element.appendChild(this.defs),this._innerQrGroup=this.document.createElementNS("http://www.w3.org/2000/svg","g");let C=(m-t.width*t.scale)/2+e-y+c/2,j=(g-t.height*t.scale)/2+e-Z+c/2;if(t.borderOptions?.hasBorder){const e={top:G(t.borderOptions,"top"),right:G(t.borderOptions,"right"),bottom:R(t.borderOptions,"bottom",this._hls),left:G(t.borderOptions,"left")},i=t.borderOptions.thickness||0,o=t.borderOptions.borderOuter?.thickness||0,n=t.borderOptions.borderInner?.thickness||0,r=t.borderOptions.noBorderThickness||i/4;j+=((e.top?i:r)-(e.bottom?i:r))/2+o+n+n/2,C+=((e.left?i:r)-(e.right?i:r))/2+o+n+n/2}t.verticalOffset&&(j-=t.verticalOffset),t.horizontalOffset&&(C-=t.horizontalOffset),this._instanceId=Ct.instanceCount++,1===t.scale&&0===C&&0===j||this._innerQrGroup.setAttribute("transform",`translate(${C}, ${j}) scale(${t.scale})`),this._maskedQrGroup=this.document.createElementNS("http://www.w3.org/2000/svg","g"),this._maskedQrGroup.setAttribute("mask",`url(#qr-mask-${this._instanceId})`),this._maskedQrGroup.appendChild(this._innerQrGroup),this._element.appendChild(this._maskedQrGroup)}get element(){return this._element}get qrGroup(){return this._innerQrGroup||this._element}get width(){return this.finalWidth}get height(){return this.finalHeight}get svgSize(){return{width:this.options.width,height:this.options.height}}getElement(){return this._element}async drawQR(t){const e=t.getModuleCount(),i=parseInt(((e-17)/4).toFixed(0),10),o=this.options.dotsOptions.size;let n={hideXDots:0,hideYDots:0,width:0,height:0};if(this.qr=t,this.options.borderOptions?.hasBorder||this.drawBackground(),this.options.image){const t=await this.imageTools.getSize(this.options.image,this.options.imageOptions.crossOrigin),{imageOptions:r}=this.options;if(this.options.imageOptions.mode==H.background){const e=0,i=(this.finalWidth-2*e*o)*r.imageSize,s=(this.finalHeight-2*e*o)*r.imageSize;let{width:a,height:l}=t;l=l/a*i,a=i,l>s&&(a=a/l*s,l=s),n={hideXDots:0,hideYDots:0,width:a,height:l}}else{const r=this.options.imageOptions.imageSize*this.options.errorCorrectionPercent,s=b.getPatternPosition(i),a=Math.floor(r*(e*e-192-2*(e-16)-s.length**2*25));n=function({originalHeight:t,originalWidth:e,maxHiddenDots:i,maxHiddenAxisDots:o,dotSize:n,margin:r}){const s={x:0,y:0},a={x:0,y:0};if(t<=0||e<=0||i<=0||n<=0||4*r**2>i)return{height:0,width:0,hideYDots:0,hideXDots:0};o&&o%2==0&&(o=Math.max(1,o-1));const l=Math.max(e,t),h=Math.min(e,t);let d=0,c=(o||i)-2*r;do{const t=d+(c-d)/2;let e=Math.max(1,Math.ceil(t+2*r));e%2==0&&e++;let o=Math.max(1,Math.ceil(t*h/l+2*r));o%2==0&&o++,e*o>i?c=t:d=t}while(Math.abs(d-c)>.001);const u=d;let p=Math.max(1,Math.ceil(u+2*r));p%2==0&&p++;let m=Math.max(1,Math.ceil(u*h/l+2*r));m%2==0&&m++,e>t?(s.x=p,s.y=m):(s.x=m,s.y=p);const g=(s.x-2*r)*n,f=(s.y-2*r)*n;return a.x=g,a.y=g*t/e,a.y>f&&(a.y=f,a.x=f*e/t),{height:Math.round(a.y+2*r*n),width:Math.round(a.x+2*r*n),hideYDots:s.y,hideXDots:s.x}}({originalWidth:t.width,originalHeight:t.height,maxHiddenDots:a,maxHiddenAxisDots:e-14,dotSize:o,margin:this.options.imageOptions.margin})}}this.options.imageOptions.mode!=H.overlay&&this.options.image&&n.width>0&&n.height>0&&await this.drawImage({width:n.width,height:n.height,count:e,dotSize:o}),this.drawDots(((t,i)=>!(this.options.imageOptions.mode==H.center&&t>=(e-n.hideXDots)/2&&t<(e+n.hideXDots)/2&&i>=(e-n.hideYDots)/2&&i<(e+n.hideYDots)/2)&&!(t<8&&i<8||t>=e-8&&i<8||i>=e-8&&t<8))),this.options.imageOptions.mode==H.overlay&&this.options.image&&n.width>0&&n.height>0&&await this.drawImage({width:n.width,height:n.height,count:e,dotSize:o}),this.drawCorners()}drawBackground(){const t=this.options;if(this._element&&t.backgroundOptions){const e=t.backgroundOptions.gradient,i=t.backgroundOptions.color;this.createColor({options:e,color:i,additionalRotation:0,x:0,y:0,height:t.height,width:t.width,name:`background-color-${this._instanceId}`});const o=Math.min(t.width,t.height),n=this.document.createElementNS("http://www.w3.org/2000/svg","rect");[this.backgroundMask,this.backgroundMaskGroup]=this.createMask(`mask-background-color-${this._instanceId}`),this.defs.appendChild(this.backgroundMask);const r=t.backgroundOptions?.round||0,s=this.roundValue(r);n.setAttribute("x",ft((t.width-o)/2)),n.setAttribute("y",ft((t.height-o)/2)),n.setAttribute("width",ft(o)),n.setAttribute("height",ft(o)),n.setAttribute("rx",ft(o/2*s)),this.backgroundMaskGroup.appendChild(n)}}drawBackgroundForBorder(t,e){const i=this.options;if(i.backgroundOptions){const o=i.backgroundOptions.gradient,n=i.backgroundOptions.color||"#ffffff",r=Math.min(i.width,i.height)-2*t,s=(i.width-r)/2,a=(i.height-r)/2,l=e-t,h=this.createColor({options:o,borderOptions:i.borderOptions,color:n,additionalRotation:0,x:s,y:a,height:r,width:r,name:`background-color-${this._instanceId}`,returnSVGGroup:!0}),d=this.document.createElementNS("http://www.w3.org/2000/svg","rect");return[this.backgroundMask,this.backgroundMaskGroup]=this.createMask(`mask-background-color-${this._instanceId}`),this.defs.appendChild(this.backgroundMask),d.setAttribute("x",ft(s)),d.setAttribute("y",ft(a)),d.setAttribute("width",ft(r)),d.setAttribute("height",ft(r)),d.setAttribute("rx",ft(l)),this.backgroundMaskGroup.appendChild(d),h}}drawDots(t){if(!this.qr)throw new Error("QR code is not defined");const e=this.options,i=this.qr.getModuleCount();if(i>e.width||i>e.height)throw new Error("The canvas is too small");const o=e.dotsOptions.size;let n=Math.min(e.width,e.height);e.imageOptions.mode==H.background&&(n-=2*o*(e.imageOptions.margin||0));const r=Math.floor((e.width-i*o)/2);let s=Math.floor((e.height-i*o)/2);if(e.offset){const t=(e.height-i*o)/2;s+=Math.min(Math.abs(e.offset),t)*Math.sign(e.offset)}let a=new wt(e.dotsOptions.type,this.document);const l=new wt(N.tinySquare,this.document),h=new wt(N.square,this.document);[this.dotsMask,this.dotsMaskGroup]=this.createMask(`mask-dot-color-${this._instanceId}`),this.defs.appendChild(this.dotsMask),e.imageOptions.mode==H.background&&([this.lightDotsMask,this.lightDotsMaskGroup]=this.createMask(`mask-light-dot-color-${this._instanceId}`),this.defs.appendChild(this.lightDotsMask));let d=0,c=i;e.shape===K.circle?(d=Math.floor((n/o-i-2)/2),c=i+2*d):e.imageOptions.mode==H.background&&(d=1,c=i+2*d);const u=r-d*o,p=s-d*o,m=u,g=p,f=i+2*d,O=new Array(c),k=Math.floor(c/2);for(let o=0;o<c;o++){O[o]=new Array(c);for(let n=0;n<c;n++)if(o>d-1&&o<c-d&&n>d-1&&n<c-d){const e=o-d,i=n-d;t&&!t(e,i)?O[o][n]=void 0:O[o][n]=!!this.qr.isDark(i,e)}else e.shape===K.circle&&Math.sqrt((o-k)*(o-k)+(n-k)*(n-k))>k?O[o][n]=void 0:O[o][n]=o!=d-1&&o!=c-d&&n!=d-1&&n!=c-d?this.qr.isDark(n-2*d<0?n:n>=i?n-2*d:n-d,o-2*d<0?o:o>=i?o-2*d:o-d):(n==d-1&&(o<d+8||o>c-d-9)||n==c-d&&o<d+8||o==d-1&&(n<d+8||n>c-d-9)||o==c-d&&n<d+8)&&void 0}const w=(i-17)/4,y=b.getPatternPosition(w);for(let t=0;t<c;t++){const e=y.find((e=>t-d>e-3&&t-d<e+3));for(let i=0;i<c;i++){const n=y.find((t=>i-d>t-3&&i-d<t+3));null!=O[t][i]&&(this.lightDotsMask&&(a=e&&n&&(e!=y[0]&&n!=y[0]||n!=y[0]&&n!=y[y.length-1]||e!=y[0]&&e!=y[y.length-1])?h:l),O[t][i]?(a.draw({x:u+t*o,y:p+i*o,size:o,getNeighbor:(e,o)=>!0===O[t+e]?.[i+o]}),a.element&&this.dotsMaskGroup&&this.dotsMaskGroup.appendChild(a.element)):this.lightDotsMask&&(a.draw({x:u+t*o,y:p+i*o,size:o,getNeighbor:(e,o)=>!1===O[t+e]?.[i+o]}),a.element&&this.lightDotsMaskGroup&&this.lightDotsMaskGroup.appendChild(a.element)))}}this.lightDotsMask&&this.createColor({options:e.imageOptions.fill?.gradient,color:e.imageOptions.fill?.color,additionalRotation:0,x:m,y:g,height:f*o,width:f*o,name:`light-dot-color-${this._instanceId}`}),this.createColor({options:e.dotsOptions?.gradient,color:e.dotsOptions.color,additionalRotation:0,x:m,y:g,height:f*o,width:f*o,name:`dot-color-${this._instanceId}`})}drawCorners(){if(!this.qr)throw new Error("QR code is not defined");const t=this.qrGroup,e=this.options;if(!t)throw new Error("Element code is not defined");const i=this.qr.getModuleCount(),o=e.dotsOptions.size,n=7*o,r=3*o,s=Math.floor((e.width-i*o)/2);let a=Math.floor((e.height-i*o)/2);if(e.offset){const t=(e.height-i*o)/2,n=Math.min(Math.abs(e.offset),t)*Math.sign(e.offset);a+=n}[[0,0,0],[1,0,Math.PI/2],[0,1,-Math.PI/2]].forEach((([t,l,h])=>{const d=s+t*o*(i-7),c=a+l*o*(i-7);let u=this.dotsMask,p=this.dotsMaskGroup,m=this.dotsMask,g=this.dotsMaskGroup;if((e.cornersSquareOptions?.gradient||e.cornersSquareOptions?.color)&&([u,p]=this.createMask(`mask-corners-square-color-${t}-${l}-${this._instanceId}`),this.defs.appendChild(u),m=u,g=p,this.createColor({options:e.cornersSquareOptions?.gradient,color:e.cornersSquareOptions?.color,additionalRotation:h,x:d,y:c,height:n,width:n,name:`corners-square-color-${t}-${l}-${this._instanceId}`})),e.cornersSquareOptions?.type){const t=new kt(e.cornersSquareOptions.type,this.document);t.draw({x:d,y:c,size:n,rotation:h}),t.element&&p&&p.appendChild(t.element),t.fill&&this.lightDotsMaskGroup&&this.lightDotsMaskGroup.appendChild(t.fill)}else{const t=new wt(e.dotsOptions.type,this.document);for(let e=0;e<St.length;e++)for(let i=0;i<St[e].length;i++)St[e]?.[i]?(t.draw({x:d+e*o,y:c+i*o,size:o,getNeighbor:(t,o)=>!!St[e+t]?.[i+o]}),t.element&&p&&p.appendChild(t.element)):this.lightDotsMask&&!At[e]?.[i]&&(t.draw({x:d+e*o,y:c+i*o,size:o,getNeighbor:(t,o)=>!St[e+t]?.[i+o]&&!At[e+t]?.[i+o]}),t.element&&this.lightDotsMaskGroup&&this.lightDotsMaskGroup.appendChild(t.element));if(this.lightDotsMask)for(let e=-1;e<8;e++)for(let i=-1;i<8;i++)-1!=e&&7!=e&&-1!=i&&7!=i||(t.draw({x:d+e*o,y:c+i*o,size:o,getNeighbor:(t,o)=>{const n=e+t,r=i+o;return n>=-1&&n<=7&&r>=-1&&r<=7&&(-1==n||7==n||-1==r||7==r)}}),t.element&&this.lightDotsMaskGroup&&this.lightDotsMaskGroup.appendChild(t.element))}if((e.cornersDotOptions?.gradient||e.cornersDotOptions?.color)&&([m,g]=this.createMask(`mask-corners-dot-color-${t}-${l}-${this._instanceId}`),this.defs.appendChild(m),this.createColor({options:e.cornersDotOptions?.gradient,color:e.cornersDotOptions?.color,additionalRotation:h,x:d+2*o,y:c+2*o,height:r,width:r,name:`corners-dot-color-${t}-${l}-${this._instanceId}`})),e.cornersDotOptions?.type){const t=new Ot(e.cornersDotOptions.type,this.document);t.draw({x:d+2*o,y:c+2*o,size:r,rotation:h}),t.element&&g&&g.appendChild(t.element)}else{const t=new wt(e.dotsOptions.type,this.document);for(let e=0;e<At.length;e++)for(let i=0;i<At[e].length;i++)At[e]?.[i]&&(t.draw({x:d+e*o,y:c+i*o,size:o,getNeighbor:(t,o)=>!!At[e+t]?.[i+o]}),t.element&&g&&g.appendChild(t.element))}}))}async drawImage({width:t,height:e,count:i,dotSize:o}){const n=this.options,r=Math.floor((n.width-i*o)/2);let s=Math.floor((n.height-i*o)/2);if(n.offset){const t=(n.height-i*o)/2;s+=Math.min(Math.abs(n.offset),t)*Math.sign(n.offset)}let a=n.imageOptions.margin*o;n.imageOptions.mode==H.background&&(a=0);const l=r+a+(i*o-t)/2,h=s+a+(i*o-e)/2,d=t-2*a,c=e-2*a,u=await this.imageTools.toDataURL(n.image||"");let p=this.document.createElementNS("http://www.w3.org/2000/svg","image");if(p.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",u||""),u?.startsWith("data:image/svg+xml;")){let t=u.substring(19);const e=t.indexOf(","),i=t.substring(0,e);if(t=t.substring(e+1),"base64"===i)t="function"==typeof atob?atob(t):Buffer.from(t,"base64").toString("utf8");else t="";if(t){const e=(new DOMParser).parseFromString(t,"text/xml"),i=Array.from(e.getElementsByTagName("svg"));i.length&&(p=i[0],p.setAttribute("overflow","visible"))}}p&&u&&(p.setAttribute("x",ft(l)),p.setAttribute("y",ft(h)),p.setAttribute("width",`${ft(d)}px`),p.setAttribute("height",`${ft(c)}px`),this.qrGroup.appendChild(p))}createColor({options:t,borderOptions:e,color:i,additionalRotation:o,x:n,y:r,height:s,width:a,name:l,returnSVGGroup:h=!1}){const d=a>s?a:s,c=this.document.createElementNS("http://www.w3.org/2000/svg","rect");if(c.setAttribute("x",ft(n)),c.setAttribute("y",ft(r)),c.setAttribute("height",ft(s)),c.setAttribute("width",ft(a)),c.setAttribute("style",`mask:url(#mask-${l}-${this._instanceId})`),t){let i;if(t.type===U.radial){i=this.document.createElementNS("http://www.w3.org/2000/svg","radialGradient"),i.setAttribute("id",l+"-"+this._instanceId),i.setAttribute("gradientUnits","userSpaceOnUse");let t=n+a/2,o=r+s/2;if(e){const i=e.thickness/2,l=2;G(e,"top")&&!R(e,"bottom",this._hls)?o=r+i*l+s/2:!G(e,"top")&&R(e,"bottom",this._hls)&&(o=r-i*l+s/2),G(e,"right")&&!G(e,"left")?t=n-i*l+a/2:!G(e,"right")&&G(e,"left")&&(t=n+i*l+a/2)}i.setAttribute("fx",ft(t)),i.setAttribute("fy",ft(o)),i.setAttribute("cx",ft(n+a/2)),i.setAttribute("cy",ft(r+s/2)),i.setAttribute("r",ft(d/2))}else{const e=((t.rotation||0)+o)%(2*Math.PI),h=(e+2*Math.PI)%(2*Math.PI);let d=n+a/2,c=r+s/2,u=n+a/2,p=r+s/2;h>=0&&h<=.25*Math.PI||h>1.75*Math.PI&&h<=2*Math.PI?(d-=a/2,c-=s/2*Math.tan(e),u+=a/2,p+=s/2*Math.tan(e)):h>.25*Math.PI&&h<=.75*Math.PI?(c-=s/2,d-=a/2/Math.tan(e),p+=s/2,u+=a/2/Math.tan(e)):h>.75*Math.PI&&h<=1.25*Math.PI?(d+=a/2,c+=s/2*Math.tan(e),u-=a/2,p-=s/2*Math.tan(e)):h>1.25*Math.PI&&h<=1.75*Math.PI&&(c+=s/2,d+=a/2/Math.tan(e),p-=s/2,u-=a/2/Math.tan(e)),i=this.document.createElementNS("http://www.w3.org/2000/svg","linearGradient"),i.setAttribute("id",l+"-"+this._instanceId),i.setAttribute("gradientUnits","userSpaceOnUse"),i.setAttribute("x1",ft(d)),i.setAttribute("y1",ft(c)),i.setAttribute("x2",ft(u)),i.setAttribute("y2",ft(p))}t.colorStops.forEach((t=>{const e=this.document.createElementNS("http://www.w3.org/2000/svg","stop");e.setAttribute("offset",`${ft(100*t.offset)}%`);const o=Zt(t.color);e.setAttribute("stop-color",o.value),o.alpha<1&&e.setAttribute("stop-opacity",o.alpha.toFixed(7)),i.appendChild(e)})),c.setAttribute("fill",`url(#${l}-${this._instanceId})`),this.defs.appendChild(i)}else if(i){const t=Zt(i);c.setAttribute("fill",t.value),t.alpha<1&&c.setAttribute("opacity",t.alpha.toFixed(7))}if(h)return c;l.startsWith("background-color")?this._element.insertBefore(c,this._maskedQrGroup):this.qrGroup.appendChild(c)}createMask(t){const e=`${t}-${this._instanceId}`,i=this.options,o=this.document.createElementNS("http://www.w3.org/2000/svg","mask");o.setAttribute("id",e),o.setAttribute("maskUnits","userSpaceOnUse"),o.setAttribute("x","0"),o.setAttribute("y","0"),o.setAttribute("width",ft(i.width)),o.setAttribute("height",ft(i.height));const n=this.document.createElementNS("http://www.w3.org/2000/svg","g");return n.setAttribute("fill","#fff"),o.appendChild(n),[o,n]}}var jt;Ct.instanceCount=0,function(t){t.svg="svg",t.png="png",t.jpeg="jpeg",t.webp="webp"}(jt||(jt={})),Object.assign(Z.stringToBytesFuncs,{UTF8:t=>function(t){const e=[];for(let i=0;i<t.length;i++){let o=t.charCodeAt(i);o<128?e.push(o):o<2048?e.push(192|o>>6,128|63&o):o<55296||o>=57344?e.push(224|o>>12,128|o>>6&63,128|63&o):(i++,o=65536+((1023&o)<<10|1023&t.charCodeAt(i)),e.push(240|o>>18,128|o>>12&63,128|o>>6&63,128|63&o))}return e}(t)});let It=class t{get size(){return this.qrSVG?{width:this.qrSVG.width,height:this.qrSVG.height}:void 0}constructor(e,i=!1){const o=e;let n=st;if(t._selectedTemplate)if("string"==typeof t._selectedTemplate){const e=t._selectedTemplate;dt[e]?n=dt[e]:console.warn(`QR Code template "${e}" not found. Using default.`)}else n=t._selectedTemplate;let r={};if(t._selectedStyle){const{isValid:e,errors:i}=et(t._selectedStyle);e?r=tt(t._selectedStyle):console.warn("Invalid static style options ignored during instantiation:",i)}const s=C(n,r,o),{warnings:a,validatedOptions:l}=pt(s);this.options=$(l),a.length>0&&this._logValidationWarnings("QR Code Options Validation Warnings:",a),this.update()}static setTemplate(e){return"string"==typeof e?dt[e]?t._selectedTemplate=e:(console.warn(`QR Code template "${e}" not found. Resetting to default template.`),t._selectedTemplate=st):t._selectedTemplate=e,t}static setStyle(e){let i=null;if("string"==typeof e){const o=e;if(!mt[o])return console.warn(`QR Code style "${o}" not found in setStyle. Ignoring.`),t;i=mt[o]}else i=e;if(i){const{isValid:e,errors:o}=et(i);e||console.warn("Invalid style options provided to setStyle:",o),t._selectedStyle=i}else t._selectedStyle=null;return t}async update(t){this.container&&(this.container.innerHTML="");const{warnings:e}=pt(t||this.options);if(e.length>0&&this._logValidationWarnings("QR Code JS Options Update Validation Warnings:",e),this.options=t?$(C(this.options,t)):this.options,!this.options.data)return;this.options.stringToBytesFuncs&&(Object.assign(Z.stringToBytesFuncs,this.options.stringToBytesFuncs),delete this.options.stringToBytesFuncs),this.qr=new Z(this.options.qrOptions.typeNumber,this.options.qrOptions.errorCorrectionLevel);const i=this.options.qrOptions.mode||function(t){switch(!0){case/^[0-9]*$/.test(t):return y.numeric;case/^[0-9A-Z $%*+\-./:]*$/.test(t):return y.alphanumeric;case/[^\u0000-\u00ff]/.test(t):return y.unicode;default:return y.byte}}(this.options.data);this.qr.addData(this.options.data,i),this.qr.make(),await this._setupSvgAsync(),this.append(this.container)}append(t){if(t)return this.qrSVG?.element&&t.appendChild(this.qrSVG.element),this.container=t,this}async applyExtension(t){if(!t)throw new Error("Extension function should be defined.");this.extension=t,await this.update()}async deleteExtension(){this.extension=void 0,await this.update()}async serialize(t=!1){if(!this.qr)throw new Error("QR code is empty");if(this.qrSVG?.element||await this._setupSvgAsync(),this.svgDrawingPromise&&await this.svgDrawingPromise,!this.qrSVG?.element)return;let e=this.qrSVG.element;if(t){const t=this.qrSVG.element.cloneNode(!0);t.style.filter="invert(1)",e=t}let i=(new XMLSerializer).serializeToString(e);return i='<?xml version="1.0" standalone="no"?>\r\n'+i,i}async _setupSvgAsync(){if(!this.qr)return;let t=this.qr.getModuleCount();this.options.imageOptions.mode===H.background&&this.options.shape!==K.circle&&(t+=2);let e=Math.ceil((this.options.shape===K.circle?Math.sqrt(1.8):1.1)*t);e%2==0&&(e-=1);let i=0;this.options.imageOptions.mode===H.background&&(i+=this.options.imageOptions.margin||0);const o=Math.ceil(this.options.dotsOptions.size*(e+2*i)),n=this.options.borderOptions;let r=0,s=0;const a={top:0,right:0,bottom:0,left:0},l={top:0,right:0,bottom:0,left:0},h={top:0,right:0,bottom:0,left:0},d=n?.noBorderThickness||n?.thickness?n.thickness/4:0;if(n?.hasBorder){const t=n.borderOuter?.thickness?2*n.borderOuter?.thickness:0,e=n.borderInner?.thickness?2*n.borderInner?.thickness:0;t>0&&(l.top=t/2,l.bottom=t/2,l.left=t/2,l.right=t/2),e>0&&(h.top=e/2,h.bottom=e/2,h.left=e/2,h.right=e/2),G(n,"left")?(a.left=n.thickness,r+=n.thickness):(a.left=d,r+=d),G(n,"right")?(a.right=n.thickness,r+=n.thickness):(a.right=d,r+=d),G(n,"top")?(a.top=n.thickness,s+=n.thickness):(a.top=d,s+=d),R(n,"bottom",this._hls())?(a.bottom=n.thickness,s+=n.thickness):(a.bottom=d,s+=d)}const c=o+r,u=o+s;this.qrSVG=new Ct({...this.options,width:c,height:u,bordersMain:a,bordersOuter:l,bordersInner:h,errorCorrectionPercent:_[this.options.qrOptions.errorCorrectionLevel],hls:this._hls()}),this.svgDrawingPromise=this.qrSVG.drawQR(this.qr).then((()=>{this.qrSVG?.element&&(this.options.instanceId=this.qrSVG._instanceId,this.options.borderOptions?.hasBorder&&F(this.options.borderOptions)(this.qrSVG.element,this.options,o,this.qrSVG.drawBackgroundForBorder.bind(this.qrSVG),a,l,h,d,this._hls),this.extension?.(this.qrSVG.element,this.options))})).catch((t=>{console.error(t)}))}async _drawToCanvasForValidation(t){const{width:e=300,height:i=300}=this.qrSVG?.svgSize??t??r,o=e,n=i,s=document.createElement("canvas");s.width=o,s.height=n;const a=await this.serialize();if(!a)throw new Error("Failed to serialize SVG.");const l="data:image/svg+xml;base64,"+btoa(a);return new Promise(((t,e)=>{const i=new Image;i.width=o,i.height=n,i.crossOrigin="Anonymous",i.onload=()=>{const r=s.getContext("2d");if(!r)return e(new Error("Could not get canvas 2D context"));r.drawImage(i,0,0,o,n),t(s)},i.onerror=i.onabort=e,i.src=l}))}async drawToCanvas(t){const{width:e=300,height:i=300}=this.qrSVG?.svgSize??t??r,o=1*e,n=1*i,s=document.createElement("canvas");s.width=o,s.height=n;const a=(async()=>{try{const t=await this.serialize();if(!t)return void console.warn("SVG serialization returned empty.");const r="data:image/svg+xml;base64,"+btoa(t),a=new Image;a.width=o,a.height=n,await new Promise(((t,l)=>{a.onload=()=>{const r=Math.ceil(2*Math.max(e,i)/Math.max(a.width,a.height));let h;try{h=new OffscreenCanvas(a.width*r*2,a.height*r*2)}catch(t){h=document.createElement("canvas"),h.width=a.width*r*2,h.height=a.height*r*2}const d=h.getContext("2d");if(!d)return l(new Error("Could not get OffscreenCanvas 2D context"));d.drawImage(a,0,0,h.width,h.height);const c=s.getContext("2d");if(!c)return l(new Error("Could not get canvas 2D context"));c.drawImage(h,0,0,h.width,h.height,0,0,o,n),t()},a.onerror=t=>l(new Error(`Image load error: ${t}`)),a.onabort=()=>l(new Error("Image load aborted")),a.src=r}))}catch(t){throw console.error("Error drawing to canvas:",t),t}})();return{canvas:s,canvasDrawingPromise:a}}downloadURI(t,e){const i=document.createElement("a");i.download=e,i.href=t,document.body.appendChild(i),i.click(),document.body.removeChild(i)}async download(t,e){if("undefined"==typeof Blob)throw new Error("Cannot download in Node.js environment");let i=jt.png,o="qr";if(t&&(t.name&&(o=t.name),t.extension&&(i=t.extension)),"svg"===i.toLowerCase()){const t=await this.serialize();if(!t)return;const e="data:image/svg+xml;charset=utf-8,"+encodeURIComponent(t);this.downloadURI(e,`${o}.svg`)}else{const t=await this.drawToCanvas(e);if(!t)return;const{canvas:n,canvasDrawingPromise:r}=t;await r;const s=n.toDataURL(`image/${i}`);this.downloadURI(s,`${o}.${i}`)}}async createOptimizedQRCanvas(t){const{width:e=300,height:i=300}=this.qrSVG?.svgSize??t??r,o=document.createElement("canvas");o.width=e,o.height=i;const n=await this.serialize();if(!n)throw new Error("Failed to serialize SVG.");const s="data:image/svg+xml;base64,"+btoa(Array.from((new TextEncoder).encode(n)).map((t=>String.fromCharCode(t))).join(""));return new Promise(((t,n)=>{const r=new Image;r.width=e,r.height=i,r.crossOrigin="Anonymous",r.onload=()=>{const s=o.getContext("2d");if(!s)return n(new Error("Could not get canvas 2D context"));s.imageSmoothingEnabled=!1,s.drawImage(r,0,0,e,i),this.applyQRThreshold(o),t(o)},r.onerror=t=>n(new Error(`Image load error: ${t}`)),r.onabort=()=>n(new Error("Image load aborted")),r.src=s}))}applyQRThreshold(t){const e=t.getContext("2d");if(!e)return;const i=e.getImageData(0,0,t.width,t.height),o=i.data;for(let t=0;t<o.length;t+=4){const e=(o[t]+o[t+1]+o[t+2])/3<128?0:255;o[t]=o[t+1]=o[t+2]=e}e.putImageData(i,0,0)}_hls(){return!1}_logValidationWarnings(t,e){console.warn(t),e.forEach((t=>{console.warn(`option: ${t.path} - '${t.value}' : ${t.message}`)}))}};It.version="0.9.2",It._selectedTemplate=null,It._selectedStyle=null;class Wt{constructor(){this._hls=!1,this._decodedToken=null,this._licenseKey=null,this._storedToken=null,this._storedKey=null,this._isInitialized=!1,this._initPromise=null,this._licenseFetcher=async t=>{const e=Wt._defaultLicenseApiUrl;if(!e)throw new Error("LicenseManagerNode: API URL not set. Call LicenseManagerNode.setDefaultLicenseApiUrl() with an absolute URL.");try{const i=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({licenseKey:t})});if(!i.ok){let t={};try{t=await i.json()}catch(t){}throw new Error(`Failed to fetch token: ${i.status} ${t?.error||i.statusText}`)}const o=await i.text();if(!o)throw new Error("Fetched token is empty.");return o}catch(t){throw console.error(`LicenseManagerNode: Default fetcher failed: ${t.message}`),new Error(`License fetcher failed: ${t.message}`)}}}static get instance(){return Wt._instance||(Wt._instance=new Wt),Wt._instance}static setDefaultLicenseApiUrl(t){"string"==typeof t&&t?(t.startsWith("http://")||t.startsWith("https://")||console.warn("LicenseManagerNode: URL provided to setDefaultLicenseApiUrl does not appear to be absolute. Relative URLs may not work reliably server-side."),Wt._defaultLicenseApiUrl=t):console.warn("LicenseManagerNode: Invalid URL provided to setDefaultLicenseApiUrl.")}get hls(){return this._hls}get isInitialized(){return this._isInitialized}getLicenseDetails(){return this._hls?this._decodedToken:null}get licenseKey(){return this._licenseKey}configureLicenseFetcher(t){if("function"!=typeof t)throw new Error("License fetcher must be a function that accepts a license key string and returns a Promise<string>.");this._licenseFetcher=t,this.resetInitialization(),this.resetLicenseState()}async initialize(){return this._isInitialized&&this._initPromise||this._initPromise||(this._initPromise=this._performInitialization()),this._initPromise}async _performInitialization(){if(this._hls)return this._isInitialized=!0,!0;this.resetLicenseState();const t=this._getStoredLicenseData(),e=t.token||null,i=t.key||null;if(this._licenseKey=i,!e)return this._isInitialized=!0,!1;const o=await this._validateAndStoreToken(e,i);if(o.isValid)return this._hls=!0,this._decodedToken=o.license,this._isInitialized=!0,!0;if(console.warn("LicenseManagerNode: Stored license token failed validation during initialization."),!i)return console.warn("LicenseManagerNode: Cannot refresh token: No license key found in storage."),this._isInitialized=!0,!1;console.warn("LicenseManagerNode: Attempting to refresh token using stored license key...");try{const t=await this.activateWithKey(i);return this._isInitialized=!0,t.isValid}catch(t){return console.error(`LicenseManagerNode: Auto-refresh attempt failed: ${t.message}`),this._licenseKey=i,this._isInitialized=!0,!1}}resetInitialization(){this._isInitialized=!1,this._initPromise=null}resetLicenseState(){this._hls=!1,this._decodedToken=null,this._licenseKey=null,this._storedToken=null,this._storedKey=null}async activateWithToken(t){let e;return this.resetInitialization(),null===t?(e=await this._validateAndStoreToken(null,this._licenseKey),this._hls=!1,this._decodedToken=null):"string"==typeof t&&t?(e=await this._validateAndStoreToken(t,null),this._hls=e.isValid,this._decodedToken=e.license,e.isValid?this._licenseKey=this._getStoredLicenseData().key||null:this._licenseKey=null):(console.warn("Invalid token string provided to activateWithToken()."),e=await this._validateAndStoreToken(null,null),this._hls=!1,this._decodedToken=null,this._licenseKey=null),this._isInitialized=!0,this._initPromise=Promise.resolve(this._hls),e}async activateWithKey(t){this.resetInitialization();let e={isValid:!1,token:null,license:null};if(t&&"string"==typeof t){this._licenseKey=t;let i=null,o=null;const n=this._getStoredLicenseData();if(i=n.token||null,o=n.key||null,i&&o===t?(e=await this._validateAndStoreToken(i,t),e.isValid||console.warn("LicenseManagerNode: Cached token validation failed. Attempting to fetch a new token...")):(e={isValid:!1,token:null,license:null},i&&o!==t&&console.warn("LicenseManagerNode: Cached token belongs to a different license key. Fetching new token...")),!e.isValid)try{const i=await this._licenseFetcher(t);e=await this._validateAndStoreToken(i,t),e.isValid||console.warn(`LicenseManagerNode: Fetched token for key ${t} failed validation.`)}catch(i){console.warn(`LicenseManagerNode: Failed to fetch license token for key ${t}: ${i.message}`),await this._validateAndStoreToken(null,t),e={isValid:!1,token:null,license:null}}this._hls=e.isValid,this._decodedToken=e.license}else console.warn("Invalid license key provided to activateWithKey()."),await this._validateAndStoreToken(null,null),this._hls=!1,this._decodedToken=null,this._licenseKey=null;return this._isInitialized=!0,this._initPromise=Promise.resolve(this._hls),e}_getStoredLicenseData(){return{token:this._storedToken??void 0,key:this._storedKey??void 0}}_setStoredLicenseData(t){this._storedToken=t.token??null,this._storedKey=t.key??null}async _validateAndStoreToken(t,e){const r=e??this._storedKey??void 0;if(!t)return this._setStoredLicenseData({key:r}),{isValid:!1,token:null,license:null};try{const e=await async function(t){try{const e=await i("-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ZCmxp1vq4LJLviS9d2u Y5V9IykLzCrNcj8fCenqEyir5b4+FGE3hvLqp9zT+IYRF2cV2K0aGe9G0COFZsX2 E5ye1DguyvPQgRMPO8y7bxXJ3da1IP7Gs+/3gy4iuzRV4Uhy73jUVpqE/zZ2JAv/ sY36Rxmq4h7YE/F6YQk3DeZvnHjS7spUlp/+d3W67G8v2jiYWy3pO08Sn0rF2cjg XrJA5jcNr7ksER7AQcwayaLT4rAV4+EOcDYXL2egnqoTEmRzQYD2ReHBsO6jB0Ud bmsNepxbBdq/fBr+5HNj2tUJItarfH3BUVRFu/L1xP8wOEQa8wmPRwrJdPsI3bdk 7QIDAQAB -----END PUBLIC KEY-----","RS256"),{payload:r}=await o(t,e,{algorithms:["RS256"]});if(!r||"string"!=typeof r.sub)throw new n.JOSEError("Decoded token payload structure is invalid.");return r}catch(t){throw t}}(t);return this._setStoredLicenseData({token:t,key:r}),{isValid:!0,token:t,license:e}}catch(e){return console.warn(`LicenseManagerNode: License token validation failed: ${e.message}`),this._storedToken===t&&this._setStoredLicenseData({key:r}),{isValid:!1,token:null,license:null}}}}var Yt;Wt._instance=null,Wt._defaultLicenseApiUrl="/api/get-token",function(t){t.svg="svg",t.png="png",t.jpeg="jpeg",t.webp="webp"}(Yt||(Yt={}));let Jt=null;const Vt=void 0,vt="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIj48cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSIjY2NjIi8+PHRleHQgeD0iNTAlIiB5PSI1MCUiIGRvbWluYW50LWJhc2VsaW5lPSJtaWRkbGUiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiMwMDAiIGZvbnQtc2l6ZT0iMTYiPkxvZ28gbG9hZCBlcnJvcjwvdGV4dD48L3N2Zz4=";class Tt extends It{static async initializeIfNeeded(){return Wt.instance.initialize()}static get hls(){return Wt.instance.isInitialized?Wt.instance.hls:(Wt.instance.initialize().catch((t=>{console.error("QRCode.js (Server): Background license initialization failed:",t)})),!1)}_hls(){return Wt.instance.isInitialized?Wt.instance.hls:(Wt.instance.initialize().catch((t=>{console.error("QRCode.js (Server): Background license initialization failed:",t)})),!1)}static getLicenseDetails(){return Wt.instance.isInitialized?Wt.instance.getLicenseDetails():(Wt.instance.initialize().catch((t=>{console.error("QRCode.js (Server): Background license initialization failed:",t)})),null)}static configureLicenseFetcher(t){Wt.instance.configureLicenseFetcher(t)}static async token(t){return Wt.instance.activateWithToken(t)}static async license(t){return Wt.instance.activateWithKey(t)}static setLicenseUrl(t){return Wt.setDefaultLicenseApiUrl(t),this}static async initXmldom(){if(!Tt._xmldomSync){const t=await async function(){return Jt||(Jt=import("@xmldom/xmldom")),Jt}();Tt._xmldomSync=t}}constructor(i,o=!1){if(!Tt._xmldomSync)throw new Error("You must call QRCodeJs.initXmldom() before constructing QRCodeJs");const{DOMImplementation:n,DOMParser:r,XMLSerializer:s}=Tt._xmldomSync,a=(new n).createDocument(null,"");global.XMLSerializer=s,global.DOMParser=r;const l=new Map,h=async e=>{try{if("string"==typeof e){let i=l.get(e);return i||(i=new Promise((async(i,o)=>{const n=new AbortController,r=setTimeout((()=>{n.abort(),o(new Error("Image load timed out"))}),15e3);try{const o=await fetch(e,{signal:n.signal});if(!o.ok)throw new Error(`HTTP ${o.status} - ${o.statusText}`);const s=Buffer.from(await o.arrayBuffer()),a=await t(s);clearTimeout(r),i({contentType:o.headers.get("Content-Type")||a?.mime,data:s})}catch(t){clearTimeout(r),o(t)}})),l.set(e,i),i)}{const i=Buffer.isBuffer(e)?e:Buffer.from(await e.arrayBuffer()),o=await t(i);return{contentType:o?.mime,data:i}}}catch(t){return console.error("Image loading failed:",t),{contentType:"image/svg+xml",data:Buffer.from(vt.split(",")[1],"base64")}}};super({...i,document:i.document||a,imageTools:i.imageTools||{toDataURL:async t=>{try{if("string"==typeof t&&t.startsWith("data:"))return t;const{contentType:e,data:i}=await h(t);return`data:${e?.replace("application/xml","image/svg+xml")||"image/png"};base64,${i.toString("base64")}`}catch(t){return console.error("Data URL conversion failed:",t),vt}},getSize:async t=>{try{const{data:o}=Buffer.isBuffer(i.image)?{data:i.image}:await h(t),n=e(o);return{width:n.width||200,height:n.height||200}}catch(t){return console.error("Image size detection failed:",t),{width:200,height:200}}}}}),o||(Wt.instance.isInitialized||Wt.instance.hls?Wt.instance.isInitialized&&!Wt.instance.hls&&console.warn("QRCode.js (Server): No valid license found. Some features may be limited."):console.warn("QRCode.js (Server): License state not yet initialized. Call QRCodeJs.initializeIfNeeded() or activate a license."))}async validateScanning(){if(!this._hls())return console.warn("QRCode.js (Server): Scanning validation requires a valid license."),Promise.reject({isValid:!1,message:"Valid license required for scanning validation."});try{const t=await this.serialize(),{qrValidator:e}=await import("./chunks/scan-validator-node-BGUxkBJt.js"),i=await e.validateZbar(t,!1);if(i.isValid)return i;{console.debug("Zxing validation failed, trying Zbar...");const{qrValidatorZxing:e}=await import("./chunks/scan-validator-zxing-node-CV9K2v4n.js");return await e.validateZxing(t)}}catch(t){return console.warn(`Zbar and Zxing validation threw an error: ${t instanceof Error?t.message:String(t)}`),Promise.reject({isValid:!1,message:t instanceof Error?t.message:"Zbar and Zxing validation failed with an error"})}}static useTemplate(t){return new qt(t)}static useStyle(t){return(new qt).useStyle(t)}}Tt._xmldomSync=null,Tt._initPromise=null,Tt._initPromise=Tt.initXmldom();class qt{constructor(t){let e=st;if("string"==typeof t){const i=t;dt[i]?e=dt[i]:console.warn(`QR Code template "${i}" not found. Using default basic template.`)}else t&&(e=t);this.config=C({},e)}useTemplate(t){let e={};if("string"==typeof t){const i=t;dt[i]?e=dt[i]:console.warn(`QR Code template "${i}" not found in useTemplate chain. Ignoring.`)}else e=t;return this.config=C(e,this.config),this}useStyle(t){let e=null;if("string"==typeof t){const i=t;if(!mt[i])return console.warn(`QR Code style "${i}" not found. Ignoring.`),this;e=mt[i]}else e=t;if(e){const{isValid:t,errors:i}=et(e);t||console.warn("Invalid style options provided to QRCodeBuilder:",i);const o=tt(e);this.config=C(this.config,o)}return this}options(t){return this.config=C(this.config,t),new Tt(this.config)}build(){return new Tt(this.config)}}class Xt extends Tt{_hls(){return!0}constructor(t){super(t,!0)}}export{E as CornerDotType,z as CornerSquareType,N as DotType,w as ErrorCorrectionLevel,_ as ErrorCorrectionPercents,Yt as FileExtension,U as GradientType,H as ImageMode,y as Mode,Tt as QRCodeJs,K as ShapeType,k as TypeNumber,Xt as _,Vt as browserUtils};
|