"use strict";var BitByte=require("./8BitByte"),RSBlock=require("./RSBlock"),BitBuffer=require("./BitBuffer"),util=require("./util"),Polynomial=require("./Polynomial");function QRCode(t,e){this.typeNumber=t,this.errorCorrectLevel=e,this.modules=null,this.moduleCount=0,this.dataCache=null,this.dataList=[]}var proto=QRCode.prototype;proto.addData=function(t){t=new BitByte(t);this.dataList.push(t),this.dataCache=null},proto.isDark=function(t,e){if(t<0||this.moduleCount<=t||e<0||this.moduleCount<=e)throw new Error(t+","+e);return this.modules[t][e]},proto.getModuleCount=function(){return this.moduleCount},proto.make=function(){if(this.typeNumber<1){for(var t=1,t=1;t<40;t++){for(var e=RSBlock.getRSBlocks(t,this.errorCorrectLevel),o=new BitBuffer,r=0,i=0;i>o&1);this.modules[Math.floor(o/3)][o%3+this.moduleCount-8-3]=r}for(o=0;o<18;o++){r=!t&&1==(e>>o&1);this.modules[o%3+this.moduleCount-8-3][Math.floor(o/3)]=r}},proto.setupTypeInfo=function(t,e){for(var e=this.errorCorrectLevel<<3|e,o=util.getBCHTypeInfo(e),r=0;r<15;r++){var i=!t&&1==(o>>r&1);r<6?this.modules[r][8]=i:r<8?this.modules[r+1][8]=i:this.modules[this.moduleCount-15+r][8]=i}for(r=0;r<15;r++){i=!t&&1==(o>>r&1);r<8?this.modules[8][this.moduleCount-r-1]=i:r<9?this.modules[8][15-r-1+1]=i:this.modules[8][15-r-1]=i}this.modules[this.moduleCount-8][8]=!t},proto.mapData=function(t,e){for(var o=-1,r=this.moduleCount-1,i=7,n=0,u=this.moduleCount-1;0>>i&1)),l=util.getMask(e,r,u-a),this.modules[r][u-a]=s=l?!s:s,-1==--i)&&(n++,i=7);if((r+=o)<0||this.moduleCount<=r){r-=o,o=-o;break}}},QRCode.PAD0=236,QRCode.PAD1=17,QRCode.createData=function(t,e,o){for(var r=RSBlock.getRSBlocks(t,e),i=new BitBuffer,n=0;n8*s)throw new Error("code length overflow. ("+i.getLengthInBits()+">"+8*s+")");for(i.getLengthInBits()+4<=8*s&&i.put(0,4);i.getLengthInBits()%8!=0;)i.putBit(!1);for(;;){if(i.getLengthInBits()>=8*s)break;if(i.put(QRCode.PAD0,8),i.getLengthInBits()>=8*s)break;i.put(QRCode.PAD1,8)}return QRCode.createBytes(i,r)},QRCode.createBytes=function(t,e){for(var o=0,r=0,i=0,n=new Array(e.length),u=new Array(e.length),s=0;s