mirror of
https://github.com/cnwhy/QRCode-decode.git
synced 2026-08-12 20:31:40 +08:00
8 lines
43 KiB
JavaScript
8 lines
43 KiB
JavaScript
/*!
|
|
* qr-decode v0.0.5
|
|
* (c) cnwhy <w.why@163.com>
|
|
* Released under the ISC License.
|
|
*/
|
|
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).qrDecode=t()}(this,(function(){"use strict";function e(e,t,n){this.x=e,this.y=t,this.count=1,this.estimatedModuleSize=n,this.__defineGetter__("EstimatedModuleSize",(function(){return this.estimatedModuleSize})),this.__defineGetter__("Count",(function(){return this.count})),this.__defineGetter__("X",(function(){return Math.floor(this.x)})),this.__defineGetter__("Y",(function(){return Math.floor(this.y)})),this.incrementCount=function(){this.count++},this.aboutEquals=function(e,t,n){if(Math.abs(t-this.y)<=e&&Math.abs(n-this.x)<=e){var r=Math.abs(e-this.estimatedModuleSize);return r<=1||r/this.estimatedModuleSize<=1}return!1}}var t=function(t,n,r,i,s,o,a,h){this.image=t,this.possibleCenters=new Array,this.startX=r,this.startY=i,this.width=s,this.height=o,this.moduleSize=a,this.crossCheckStateCount=new Array(0,0,0),this.resultPointCallback=h,this.centerFromEnd=function(e,t){return t-e[2]-e[1]/2},this.foundPatternCross=function(e){for(var t=this.moduleSize,n=t/2,r=0;r<3;r++)if(Math.abs(t-e[r])>=n)return!1;return!0},this.crossCheckVertical=function(e,t,r,i){var s=this.image,o=n.height,a=this.crossCheckStateCount;a[0]=0,a[1]=0,a[2]=0;for(var h=e;h>=0&&s[t+h*n.width]&&a[1]<=r;)a[1]++,h--;if(h<0||a[1]>r)return NaN;for(;h>=0&&!s[t+h*n.width]&&a[0]<=r;)a[0]++,h--;if(a[0]>r)return NaN;for(h=e+1;h<o&&s[t+h*n.width]&&a[1]<=r;)a[1]++,h++;if(h==o||a[1]>r)return NaN;for(;h<o&&!s[t+h*n.width]&&a[2]<=r;)a[2]++,h++;if(a[2]>r)return NaN;var w=a[0]+a[1]+a[2];return 5*Math.abs(w-i)>=2*i?NaN:this.foundPatternCross(a)?this.centerFromEnd(a,h):NaN},this.handlePossibleCenter=function(t,n,r){var i=t[0]+t[1]+t[2],s=this.centerFromEnd(t,r),o=this.crossCheckVertical(n,Math.floor(s),2*t[1],i);if(!isNaN(o)){for(var a=(t[0]+t[1]+t[2])/3,h=this.possibleCenters.length,w=0;w<h;w++){if(this.possibleCenters[w].aboutEquals(a,o,s))return new e(s,o,a)}var f=new e(s,o,a);this.possibleCenters.push(f),null!=this.resultPointCallback&&this.resultPointCallback.foundPossibleResultPoint(f)}return null},this.find=function(){for(var e=this.startX,r=this.height,o=e+s,a=i+(r>>1),h=new Array(0,0,0),w=0;w<r;w++){var f=a+(0==(1&w)?w+1>>1:-(w+1>>1));h[0]=0,h[1]=0,h[2]=0;for(var u=e;u<o&&!t[u+n.width*f];)u++;for(var l=0;u<o;){if(t[u+f*n.width])if(1==l)h[l]++;else if(2==l){var d;if(this.foundPatternCross(h))if(null!=(d=this.handlePossibleCenter(h,f,u)))return d;h[0]=h[2],h[1]=1,h[2]=0,l=1}else h[++l]++;else 1==l&&l++,h[l]++;u++}if(this.foundPatternCross(h))if(null!=(d=this.handlePossibleCenter(h,f,o)))return d}if(0!=this.possibleCenters.length)return this.possibleCenters[0];throw"Couldn't find enough alignment patterns"}};function n(e,t,n){this.x=e,this.y=t,this.count=1,this.estimatedModuleSize=n,this.__defineGetter__("EstimatedModuleSize",(function(){return this.estimatedModuleSize})),this.__defineGetter__("Count",(function(){return this.count})),this.__defineGetter__("X",(function(){return this.x})),this.__defineGetter__("Y",(function(){return this.y})),this.incrementCount=function(){this.count++},this.aboutEquals=function(e,t,n){if(Math.abs(t-this.y)<=e&&Math.abs(n-this.x)<=e){var r=Math.abs(e-this.estimatedModuleSize);return r<=1||r/this.estimatedModuleSize<=1}return!1}}function r(e){this.bottomLeft=e[0],this.topLeft=e[1],this.topRight=e[2],this.__defineGetter__("BottomLeft",(function(){return this.bottomLeft})),this.__defineGetter__("TopLeft",(function(){return this.topLeft})),this.__defineGetter__("TopRight",(function(){return this.topRight}))}var i=function(e){this.image=null,this.possibleCenters=[],this.hasSkipped=!1,this.crossCheckStateCount=new Array(0,0,0,0,0),this.resultPointCallback=null,this.__defineGetter__("CrossCheckStateCount",(function(){return this.crossCheckStateCount[0]=0,this.crossCheckStateCount[1]=0,this.crossCheckStateCount[2]=0,this.crossCheckStateCount[3]=0,this.crossCheckStateCount[4]=0,this.crossCheckStateCount})),this.foundPatternCross=function(e){for(var t=0,n=0;n<5;n++){var r=e[n];if(0==r)return!1;t+=r}if(t<7)return!1;var i=Math.floor((t<<8)/7),s=Math.floor(i/2);return Math.abs(i-(e[0]<<8))<s&&Math.abs(i-(e[1]<<8))<s&&Math.abs(3*i-(e[2]<<8))<3*s&&Math.abs(i-(e[3]<<8))<s&&Math.abs(i-(e[4]<<8))<s},this.centerFromEnd=function(e,t){return t-e[4]-e[3]-e[2]/2},this.crossCheckVertical=function(t,n,r,i){for(var s=this.image,o=e.height,a=this.CrossCheckStateCount,h=t;h>=0&&s[n+h*e.width];)a[2]++,h--;if(h<0)return NaN;for(;h>=0&&!s[n+h*e.width]&&a[1]<=r;)a[1]++,h--;if(h<0||a[1]>r)return NaN;for(;h>=0&&s[n+h*e.width]&&a[0]<=r;)a[0]++,h--;if(a[0]>r)return NaN;for(h=t+1;h<o&&s[n+h*e.width];)a[2]++,h++;if(h==o)return NaN;for(;h<o&&!s[n+h*e.width]&&a[3]<r;)a[3]++,h++;if(h==o||a[3]>=r)return NaN;for(;h<o&&s[n+h*e.width]&&a[4]<r;)a[4]++,h++;if(a[4]>=r)return NaN;var w=a[0]+a[1]+a[2]+a[3]+a[4];return 5*Math.abs(w-i)>=2*i?NaN:this.foundPatternCross(a)?this.centerFromEnd(a,h):NaN},this.crossCheckHorizontal=function(t,n,r,i){for(var s=this.image,o=e.width,a=this.CrossCheckStateCount,h=t;h>=0&&s[h+n*e.width];)a[2]++,h--;if(h<0)return NaN;for(;h>=0&&!s[h+n*e.width]&&a[1]<=r;)a[1]++,h--;if(h<0||a[1]>r)return NaN;for(;h>=0&&s[h+n*e.width]&&a[0]<=r;)a[0]++,h--;if(a[0]>r)return NaN;for(h=t+1;h<o&&s[h+n*e.width];)a[2]++,h++;if(h==o)return NaN;for(;h<o&&!s[h+n*e.width]&&a[3]<r;)a[3]++,h++;if(h==o||a[3]>=r)return NaN;for(;h<o&&s[h+n*e.width]&&a[4]<r;)a[4]++,h++;if(a[4]>=r)return NaN;var w=a[0]+a[1]+a[2]+a[3]+a[4];return 5*Math.abs(w-i)>=i?NaN:this.foundPatternCross(a)?this.centerFromEnd(a,h):NaN},this.handlePossibleCenter=function(e,t,r){var i=e[0]+e[1]+e[2]+e[3]+e[4],s=this.centerFromEnd(e,r),o=this.crossCheckVertical(t,Math.floor(s),e[2],i);if(!isNaN(o)&&(s=this.crossCheckHorizontal(Math.floor(s),Math.floor(o),e[2],i),!isNaN(s))){for(var a=i/7,h=!1,w=this.possibleCenters.length,f=0;f<w;f++){var u=this.possibleCenters[f];if(u.aboutEquals(a,o,s)){u.incrementCount(),h=!0;break}}if(!h){var l=new n(s,o,a);this.possibleCenters.push(l),null!=this.resultPointCallback&&this.resultPointCallback.foundPossibleResultPoint(l)}return!0}return!1},this.selectBestPatterns=function(){var e=this.possibleCenters.length;if(e<3)throw"Couldn't find enough finder patterns (found "+e+")";if(e>3){for(var t=0,n=0,r=0;r<e;r++){var i=this.possibleCenters[r].EstimatedModuleSize;t+=i,n+=i*i}var s=t/e;this.possibleCenters.sort((function(e,t){var n=Math.abs(t.EstimatedModuleSize-s),r=Math.abs(e.EstimatedModuleSize-s);return n<r?-1:n==r?0:1}));var o=Math.sqrt(n/e-s*s),a=Math.max(.2*s,o);for(r=this.possibleCenters.length-1;r>=0;r--){var h=this.possibleCenters[r];Math.abs(h.EstimatedModuleSize-s)>a&&this.possibleCenters.splice(r,1)}}return this.possibleCenters.length>3&&this.possibleCenters.sort((function(e,t){return e.count>t.count?-1:e.count<t.count?1:0})),new Array(this.possibleCenters[0],this.possibleCenters[1],this.possibleCenters[2])},this.findRowSkip=function(){var e=this.possibleCenters.length;if(e<=1)return 0;for(var t=null,n=0;n<e;n++){var r=this.possibleCenters[n];if(r.Count>=2){if(null!=t)return this.hasSkipped=!0,Math.floor((Math.abs(t.X-r.X)-Math.abs(t.Y-r.Y))/2);t=r}}return 0},this.haveMultiplyConfirmedCenters=function(){for(var e=0,t=0,n=this.possibleCenters.length,r=0;r<n;r++){var i=this.possibleCenters[r];i.Count>=2&&(e++,t+=i.EstimatedModuleSize)}if(e<3)return!1;var s=t/n,o=0;for(r=0;r<n;r++)i=this.possibleCenters[r],o+=Math.abs(i.EstimatedModuleSize-s);return o<=.05*t},this.findFinderPattern=function(t){this.image=t;var n=e.height,i=e.width,s=Math.floor(3*n/228);s<3&&(s=3);for(var o=!1,a=new Array(5),h=s-1;h<n&&!o;h+=s){a[0]=0,a[1]=0,a[2]=0,a[3]=0,a[4]=0;for(var w=0,f=0;f<i;f++)if(t[f+h*e.width])1==(1&w)&&w++,a[w]++;else if(0==(1&w))if(4==w)if(this.foundPatternCross(a)){if(this.handlePossibleCenter(a,h,f))if(s=2,this.hasSkipped)o=this.haveMultiplyConfirmedCenters();else{var u=this.findRowSkip();u>a[2]&&(h+=u-a[2]-s,f=i-1)}else{do{f++}while(f<i&&!t[f+h*e.width]);f--}w=0,a[0]=0,a[1]=0,a[2]=0,a[3]=0,a[4]=0}else a[0]=a[2],a[1]=a[3],a[2]=a[4],a[3]=1,a[4]=0,w=3;else a[++w]++;else a[w]++;if(this.foundPatternCross(a))this.handlePossibleCenter(a,h,i)&&(s=a[0],this.hasSkipped&&(o=this.haveMultiplyConfirmedCenters()))}var l=this.selectBestPatterns();return function(e){function t(e,t){var n=e.X-t.X,r=e.Y-t.Y;return Math.sqrt(n*n+r*r)}var n,r,i,s=t(e[0],e[1]),o=t(e[1],e[2]),a=t(e[0],e[2]);if(o>=s&&o>=a?(r=e[0],n=e[1],i=e[2]):a>=o&&a>=s?(r=e[1],n=e[0],i=e[2]):(r=e[2],n=e[0],i=e[1]),function(e,t,n){var r=t.x,i=t.y;return(n.x-r)*(e.y-i)-(n.y-i)*(e.x-r)}(n,r,i)<0){var h=n;n=i,i=h}e[0]=n,e[1]=r,e[2]=i}(l),new r(l)}},s=function(e,t){return e>=0?e>>t:(e>>t)+(2<<~t)};function o(e,t,n){this.ordinal_Renamed_Field=e,this.bits=t,this.name=n,this.__defineGetter__("Bits",(function(){return this.bits})),this.__defineGetter__("Name",(function(){return this.name})),this.ordinal=function(){return this.ordinal_Renamed_Field}}var a=new o(0,1,"L"),h=new o(1,0,"M"),w=new o(2,3,"Q"),f=new o(3,2,"H"),u=new Array(h,a,f,w),l=s,d=new Array(new Array(21522,0),new Array(20773,1),new Array(24188,2),new Array(23371,3),new Array(17913,4),new Array(16590,5),new Array(20375,6),new Array(19104,7),new Array(30660,8),new Array(29427,9),new Array(32170,10),new Array(30877,11),new Array(26159,12),new Array(25368,13),new Array(27713,14),new Array(26998,15),new Array(5769,16),new Array(5054,17),new Array(7399,18),new Array(6608,19),new Array(1890,20),new Array(597,21),new Array(3340,22),new Array(2107,23),new Array(13663,24),new Array(12392,25),new Array(16177,26),new Array(14854,27),new Array(9396,28),new Array(8579,29),new Array(11994,30),new Array(11245,31)),c=new Array(0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4);function g(e){this.errorCorrectionLevel=function(e){if(e<0||e>=u.length)throw"ArgumentException";return u[e]}(e>>3&3),this.dataMask=7&e,this.__defineGetter__("ErrorCorrectionLevel",(function(){return this.errorCorrectionLevel})),this.__defineGetter__("DataMask",(function(){return this.dataMask})),this.GetHashCode=function(){return this.errorCorrectionLevel.ordinal()<<3|this.dataMask},this.Equals=function(e){var t=e;return this.errorCorrectionLevel==t.errorCorrectionLevel&&this.dataMask==t.dataMask}}g.numBitsDiffering=function(e,t){return c[15&(e^=t)]+c[15&l(e,4)]+c[15&l(e,8)]+c[15&l(e,12)]+c[15&l(e,16)]+c[15&l(e,20)]+c[15&l(e,24)]+c[15&l(e,28)]},g.decodeFormatInformation=function(e){var t=g.doDecodeFormatInformation(e);return null!=t?t:g.doDecodeFormatInformation(21522^e)},g.doDecodeFormatInformation=function(e){for(var t=4294967295,n=0,r=0;r<d.length;r++){var i=d[r],s=i[0];if(s==e)return new g(i[1]);var o=this.numBitsDiffering(e,s);o<t&&(n=i[1],t=o)}return t<=3?new g(n):null};var v=g,m=s;var b=function(e,t){if(t||(t=e),e<1||t<1)throw"Both dimensions must be greater than 0";this.width=e,this.height=t;var n=e>>5;0!=(31&e)&&n++,this.rowSize=n,this.bits=new Array(n*t);for(var r=0;r<this.bits.length;r++)this.bits[r]=0;this.__defineGetter__("Width",(function(){return this.width})),this.__defineGetter__("Height",(function(){return this.height})),this.__defineGetter__("Dimension",(function(){if(this.width!=this.height)throw"Can't call getDimension() on a non-square matrix";return this.width})),this.get_Renamed=function(e,t){var n=t*this.rowSize+(e>>5);return 0!=(1&m(this.bits[n],31&e))},this.set_Renamed=function(e,t){var n=t*this.rowSize+(e>>5);this.bits[n]|=1<<(31&e)},this.flip=function(e,t){var n=t*this.rowSize+(e>>5);this.bits[n]^=1<<(31&e)},this.clear=function(){for(var e=this.bits.length,t=0;t<e;t++)this.bits[t]=0},this.setRegion=function(e,t,n,r){if(t<0||e<0)throw"Left and top must be nonnegative";if(r<1||n<1)throw"Height and width must be at least 1";var i=e+n,s=t+r;if(s>this.height||i>this.width)throw"The region must fit inside the matrix";for(var o=t;o<s;o++)for(var a=o*this.rowSize,h=e;h<i;h++)this.bits[a+(h>>5)]|=1<<(31&h)}};function y(e,t){this.count=e,this.dataCodewords=t,this.__defineGetter__("Count",(function(){return this.count})),this.__defineGetter__("DataCodewords",(function(){return this.dataCodewords}))}function C(e,t,n){this.ecCodewordsPerBlock=e,this.ecBlocks=n?new Array(t,n):new Array(t),this.__defineGetter__("ECCodewordsPerBlock",(function(){return this.ecCodewordsPerBlock})),this.__defineGetter__("TotalECCodewords",(function(){return this.ecCodewordsPerBlock*this.NumBlocks})),this.__defineGetter__("NumBlocks",(function(){for(var e=0,t=0;t<this.ecBlocks.length;t++)e+=this.ecBlocks[t].length;return e})),this.getECBlocks=function(){return this.ecBlocks}}function _(e,t,n,r,i,s){this.versionNumber=e,this.alignmentPatternCenters=t,this.ecBlocks=new Array(n,r,i,s);for(var o=0,a=n.ECCodewordsPerBlock,h=n.getECBlocks(),w=0;w<h.length;w++){var f=h[w];o+=f.Count*(f.DataCodewords+a)}this.totalCodewords=o,this.__defineGetter__("VersionNumber",(function(){return this.versionNumber})),this.__defineGetter__("AlignmentPatternCenters",(function(){return this.alignmentPatternCenters})),this.__defineGetter__("TotalCodewords",(function(){return this.totalCodewords})),this.__defineGetter__("DimensionForVersion",(function(){return 17+4*this.versionNumber})),this.buildFunctionPattern=function(){var e=this.DimensionForVersion,t=new b(e);t.setRegion(0,0,9,9),t.setRegion(e-8,0,8,9),t.setRegion(0,e-8,9,8);for(var n=this.alignmentPatternCenters.length,r=0;r<n;r++)for(var i=this.alignmentPatternCenters[r]-2,s=0;s<n;s++)0==r&&(0==s||s==n-1)||r==n-1&&0==s||t.setRegion(this.alignmentPatternCenters[s]-2,i,5,5);return t.setRegion(6,9,1,e-17),t.setRegion(9,6,e-17,1),this.versionNumber>6&&(t.setRegion(e-11,0,3,6),t.setRegion(0,e-11,6,3)),t},this.getECBlocksForLevel=function(e){return this.ecBlocks[e.ordinal()]}}_.VERSION_DECODE_INFO=new Array(31892,34236,39577,42195,48118,51042,55367,58893,63784,68472,70749,76311,79154,84390,87683,92361,96236,102084,102881,110507,110734,117786,119615,126325,127568,133589,136944,141498,145311,150283,152622,158308,161089,167017),_.VERSIONS=new Array(new _(1,new Array,new C(7,new y(1,19)),new C(10,new y(1,16)),new C(13,new y(1,13)),new C(17,new y(1,9))),new _(2,new Array(6,18),new C(10,new y(1,34)),new C(16,new y(1,28)),new C(22,new y(1,22)),new C(28,new y(1,16))),new _(3,new Array(6,22),new C(15,new y(1,55)),new C(26,new y(1,44)),new C(18,new y(2,17)),new C(22,new y(2,13))),new _(4,new Array(6,26),new C(20,new y(1,80)),new C(18,new y(2,32)),new C(26,new y(2,24)),new C(16,new y(4,9))),new _(5,new Array(6,30),new C(26,new y(1,108)),new C(24,new y(2,43)),new C(18,new y(2,15),new y(2,16)),new C(22,new y(2,11),new y(2,12))),new _(6,new Array(6,34),new C(18,new y(2,68)),new C(16,new y(4,27)),new C(24,new y(4,19)),new C(28,new y(4,15))),new _(7,new Array(6,22,38),new C(20,new y(2,78)),new C(18,new y(4,31)),new C(18,new y(2,14),new y(4,15)),new C(26,new y(4,13),new y(1,14))),new _(8,new Array(6,24,42),new C(24,new y(2,97)),new C(22,new y(2,38),new y(2,39)),new C(22,new y(4,18),new y(2,19)),new C(26,new y(4,14),new y(2,15))),new _(9,new Array(6,26,46),new C(30,new y(2,116)),new C(22,new y(3,36),new y(2,37)),new C(20,new y(4,16),new y(4,17)),new C(24,new y(4,12),new y(4,13))),new _(10,new Array(6,28,50),new C(18,new y(2,68),new y(2,69)),new C(26,new y(4,43),new y(1,44)),new C(24,new y(6,19),new y(2,20)),new C(28,new y(6,15),new y(2,16))),new _(11,new Array(6,30,54),new C(20,new y(4,81)),new C(30,new y(1,50),new y(4,51)),new C(28,new y(4,22),new y(4,23)),new C(24,new y(3,12),new y(8,13))),new _(12,new Array(6,32,58),new C(24,new y(2,92),new y(2,93)),new C(22,new y(6,36),new y(2,37)),new C(26,new y(4,20),new y(6,21)),new C(28,new y(7,14),new y(4,15))),new _(13,new Array(6,34,62),new C(26,new y(4,107)),new C(22,new y(8,37),new y(1,38)),new C(24,new y(8,20),new y(4,21)),new C(22,new y(12,11),new y(4,12))),new _(14,new Array(6,26,46,66),new C(30,new y(3,115),new y(1,116)),new C(24,new y(4,40),new y(5,41)),new C(20,new y(11,16),new y(5,17)),new C(24,new y(11,12),new y(5,13))),new _(15,new Array(6,26,48,70),new C(22,new y(5,87),new y(1,88)),new C(24,new y(5,41),new y(5,42)),new C(30,new y(5,24),new y(7,25)),new C(24,new y(11,12),new y(7,13))),new _(16,new Array(6,26,50,74),new C(24,new y(5,98),new y(1,99)),new C(28,new y(7,45),new y(3,46)),new C(24,new y(15,19),new y(2,20)),new C(30,new y(3,15),new y(13,16))),new _(17,new Array(6,30,54,78),new C(28,new y(1,107),new y(5,108)),new C(28,new y(10,46),new y(1,47)),new C(28,new y(1,22),new y(15,23)),new C(28,new y(2,14),new y(17,15))),new _(18,new Array(6,30,56,82),new C(30,new y(5,120),new y(1,121)),new C(26,new y(9,43),new y(4,44)),new C(28,new y(17,22),new y(1,23)),new C(28,new y(2,14),new y(19,15))),new _(19,new Array(6,30,58,86),new C(28,new y(3,113),new y(4,114)),new C(26,new y(3,44),new y(11,45)),new C(26,new y(17,21),new y(4,22)),new C(26,new y(9,13),new y(16,14))),new _(20,new Array(6,34,62,90),new C(28,new y(3,107),new y(5,108)),new C(26,new y(3,41),new y(13,42)),new C(30,new y(15,24),new y(5,25)),new C(28,new y(15,15),new y(10,16))),new _(21,new Array(6,28,50,72,94),new C(28,new y(4,116),new y(4,117)),new C(26,new y(17,42)),new C(28,new y(17,22),new y(6,23)),new C(30,new y(19,16),new y(6,17))),new _(22,new Array(6,26,50,74,98),new C(28,new y(2,111),new y(7,112)),new C(28,new y(17,46)),new C(30,new y(7,24),new y(16,25)),new C(24,new y(34,13))),new _(23,new Array(6,30,54,74,102),new C(30,new y(4,121),new y(5,122)),new C(28,new y(4,47),new y(14,48)),new C(30,new y(11,24),new y(14,25)),new C(30,new y(16,15),new y(14,16))),new _(24,new Array(6,28,54,80,106),new C(30,new y(6,117),new y(4,118)),new C(28,new y(6,45),new y(14,46)),new C(30,new y(11,24),new y(16,25)),new C(30,new y(30,16),new y(2,17))),new _(25,new Array(6,32,58,84,110),new C(26,new y(8,106),new y(4,107)),new C(28,new y(8,47),new y(13,48)),new C(30,new y(7,24),new y(22,25)),new C(30,new y(22,15),new y(13,16))),new _(26,new Array(6,30,58,86,114),new C(28,new y(10,114),new y(2,115)),new C(28,new y(19,46),new y(4,47)),new C(28,new y(28,22),new y(6,23)),new C(30,new y(33,16),new y(4,17))),new _(27,new Array(6,34,62,90,118),new C(30,new y(8,122),new y(4,123)),new C(28,new y(22,45),new y(3,46)),new C(30,new y(8,23),new y(26,24)),new C(30,new y(12,15),new y(28,16))),new _(28,new Array(6,26,50,74,98,122),new C(30,new y(3,117),new y(10,118)),new C(28,new y(3,45),new y(23,46)),new C(30,new y(4,24),new y(31,25)),new C(30,new y(11,15),new y(31,16))),new _(29,new Array(6,30,54,78,102,126),new C(30,new y(7,116),new y(7,117)),new C(28,new y(21,45),new y(7,46)),new C(30,new y(1,23),new y(37,24)),new C(30,new y(19,15),new y(26,16))),new _(30,new Array(6,26,52,78,104,130),new C(30,new y(5,115),new y(10,116)),new C(28,new y(19,47),new y(10,48)),new C(30,new y(15,24),new y(25,25)),new C(30,new y(23,15),new y(25,16))),new _(31,new Array(6,30,56,82,108,134),new C(30,new y(13,115),new y(3,116)),new C(28,new y(2,46),new y(29,47)),new C(30,new y(42,24),new y(1,25)),new C(30,new y(23,15),new y(28,16))),new _(32,new Array(6,34,60,86,112,138),new C(30,new y(17,115)),new C(28,new y(10,46),new y(23,47)),new C(30,new y(10,24),new y(35,25)),new C(30,new y(19,15),new y(35,16))),new _(33,new Array(6,30,58,86,114,142),new C(30,new y(17,115),new y(1,116)),new C(28,new y(14,46),new y(21,47)),new C(30,new y(29,24),new y(19,25)),new C(30,new y(11,15),new y(46,16))),new _(34,new Array(6,34,62,90,118,146),new C(30,new y(13,115),new y(6,116)),new C(28,new y(14,46),new y(23,47)),new C(30,new y(44,24),new y(7,25)),new C(30,new y(59,16),new y(1,17))),new _(35,new Array(6,30,54,78,102,126,150),new C(30,new y(12,121),new y(7,122)),new C(28,new y(12,47),new y(26,48)),new C(30,new y(39,24),new y(14,25)),new C(30,new y(22,15),new y(41,16))),new _(36,new Array(6,24,50,76,102,128,154),new C(30,new y(6,121),new y(14,122)),new C(28,new y(6,47),new y(34,48)),new C(30,new y(46,24),new y(10,25)),new C(30,new y(2,15),new y(64,16))),new _(37,new Array(6,28,54,80,106,132,158),new C(30,new y(17,122),new y(4,123)),new C(28,new y(29,46),new y(14,47)),new C(30,new y(49,24),new y(10,25)),new C(30,new y(24,15),new y(46,16))),new _(38,new Array(6,32,58,84,110,136,162),new C(30,new y(4,122),new y(18,123)),new C(28,new y(13,46),new y(32,47)),new C(30,new y(48,24),new y(14,25)),new C(30,new y(42,15),new y(32,16))),new _(39,new Array(6,26,54,82,110,138,166),new C(30,new y(20,117),new y(4,118)),new C(28,new y(40,47),new y(7,48)),new C(30,new y(43,24),new y(22,25)),new C(30,new y(10,15),new y(67,16))),new _(40,new Array(6,30,58,86,114,142,170),new C(30,new y(19,118),new y(6,119)),new C(28,new y(18,47),new y(31,48)),new C(30,new y(34,24),new y(34,25)),new C(30,new y(20,15),new y(61,16)))),_.getVersionForNumber=function(e){if(e<1||e>40)throw"ArgumentException";return _.VERSIONS[e-1]},_.getProvisionalVersionForDimension=function(e){if(e%4!=1)throw"Error getProvisionalVersionForDimension";try{return _.getVersionForNumber(e-17>>2)}catch(e){throw"Error getVersionForNumber"}},_.decodeVersionInformation=function(e){for(var t=4294967295,n=0,r=0;r<_.VERSION_DECODE_INFO.length;r++){var i=_.VERSION_DECODE_INFO[r];if(i==e)return this.getVersionForNumber(r+7);var s=v.numBitsDiffering(e,i);s<t&&(n=r+7,t=s)}return t<=3?this.getVersionForNumber(n):null};var A=_,p={checkAndNudgePoints:function(e,t,n){for(var r=n.width,i=n.height,s=!0,o=0;o<t.length&&s;o+=2){var a=Math.floor(t[o]),h=Math.floor(t[o+1]);if(a<-1||a>r||h<-1||h>i)throw"Error.checkAndNudgePoints ";s=!1,-1==a?(t[o]=0,s=!0):a==r&&(t[o]=r-1,s=!0),-1==h?(t[o+1]=0,s=!0):h==i&&(t[o+1]=i-1,s=!0)}s=!0;for(o=t.length-2;o>=0&&s;o-=2){a=Math.floor(t[o]),h=Math.floor(t[o+1]);if(a<-1||a>r||h<-1||h>i)throw"Error.checkAndNudgePoints ";s=!1,-1==a?(t[o]=0,s=!0):a==r&&(t[o]=r-1,s=!0),-1==h?(t[o+1]=0,s=!0):h==i&&(t[o+1]=i-1,s=!0)}},sampleGrid3:function(e,t,n,r){for(var i=new b(n),s=new Array(n<<1),o=0;o<n;o++){for(var a=s.length,h=o+.5,w=0;w<a;w+=2)s[w]=.5+(w>>1),s[w+1]=h;r.transformPoints1(s),p.checkAndNudgePoints(e,s,t);try{for(w=0;w<a;w+=2){e[Math.floor(s[w])+t.width*Math.floor(s[w+1])]&&i.set_Renamed(w>>1,o)}}catch(e){throw"Error.checkAndNudgePoints"}}return i}},M=p;function k(e,t,n,r,i,s,o,a,h){this.a11=e,this.a12=r,this.a13=o,this.a21=t,this.a22=i,this.a23=a,this.a31=n,this.a32=s,this.a33=h,this.transformPoints1=function(e){for(var t=e.length,n=this.a11,r=this.a12,i=this.a13,s=this.a21,o=this.a22,a=this.a23,h=this.a31,w=this.a32,f=this.a33,u=0;u<t;u+=2){var l=e[u],d=e[u+1],c=i*l+a*d+f;e[u]=(n*l+s*d+h)/c,e[u+1]=(r*l+o*d+w)/c}},this.transformPoints2=function(e,t){for(var n=e.length,r=0;r<n;r++){var i=e[r],s=t[r],o=this.a13*i+this.a23*s+this.a33;e[r]=(this.a11*i+this.a21*s+this.a31)/o,t[r]=(this.a12*i+this.a22*s+this.a32)/o}},this.buildAdjoint=function(){return new k(this.a22*this.a33-this.a23*this.a32,this.a23*this.a31-this.a21*this.a33,this.a21*this.a32-this.a22*this.a31,this.a13*this.a32-this.a12*this.a33,this.a11*this.a33-this.a13*this.a31,this.a12*this.a31-this.a11*this.a32,this.a12*this.a23-this.a13*this.a22,this.a13*this.a21-this.a11*this.a23,this.a11*this.a22-this.a12*this.a21)},this.times=function(e){return new k(this.a11*e.a11+this.a21*e.a12+this.a31*e.a13,this.a11*e.a21+this.a21*e.a22+this.a31*e.a23,this.a11*e.a31+this.a21*e.a32+this.a31*e.a33,this.a12*e.a11+this.a22*e.a12+this.a32*e.a13,this.a12*e.a21+this.a22*e.a22+this.a32*e.a23,this.a12*e.a31+this.a22*e.a32+this.a32*e.a33,this.a13*e.a11+this.a23*e.a12+this.a33*e.a13,this.a13*e.a21+this.a23*e.a22+this.a33*e.a23,this.a13*e.a31+this.a23*e.a32+this.a33*e.a33)}}k.quadrilateralToQuadrilateral=function(e,t,n,r,i,s,o,a,h,w,f,u,l,d,c,g){var v=this.quadrilateralToSquare(e,t,n,r,i,s,o,a);return this.squareToQuadrilateral(h,w,f,u,l,d,c,g).times(v)},k.squareToQuadrilateral=function(e,t,n,r,i,s,o,a){var h=a-s,w=t-r+s-a;if(0==h&&0==w)return new k(n-e,i-n,e,r-t,s-r,t,0,0,1);var f=n-i,u=o-i,l=e-n+i-o,d=r-s,c=f*h-u*d,g=(l*h-u*w)/c,v=(f*w-l*d)/c;return new k(n-e+g*n,o-e+v*o,e,r-t+g*r,a-t+v*a,t,g,v,1)},k.quadrilateralToSquare=function(e,t,n,r,i,s,o,a){return this.squareToQuadrilateral(e,t,n,r,i,s,o,a).buildAdjoint()};var P=k;function N(e,t){this.bits=e,this.points=t}var S=function(e,n){this.image=e,this.resultPointCallback=null,this.sizeOfBlackWhiteBlackRun=function(e,t,r,i){var s=Math.abs(i-t)>Math.abs(r-e);if(s){var o=e;e=t,t=o,o=r,r=i,i=o}for(var a=Math.abs(r-e),h=Math.abs(i-t),w=-a>>1,f=t<i?1:-1,u=e<r?1:-1,l=0,d=e,c=t;d!=r;d+=u){var g=s?c:d,v=s?d:c;if(1==l?this.image[g+v*n.width]&&l++:this.image[g+v*n.width]||l++,3==l){var m=d-e,b=c-t;return Math.sqrt(m*m+b*b)}if((w+=h)>0){if(c==i)break;c+=f,w-=a}}var y=r-e,C=i-t;return Math.sqrt(y*y+C*C)},this.sizeOfBlackWhiteBlackRunBothWays=function(e,t,r,i){var s=this.sizeOfBlackWhiteBlackRun(e,t,r,i),o=1,a=e-(r-e);a<0?(o=e/(e-a),a=0):a>=n.width&&(o=(n.width-1-e)/(a-e),a=n.width-1);var h=Math.floor(t-(i-t)*o);return o=1,h<0?(o=t/(t-h),h=0):h>=n.height&&(o=(n.height-1-t)/(h-t),h=n.height-1),a=Math.floor(e+(a-e)*o),(s+=this.sizeOfBlackWhiteBlackRun(e,t,a,h))-1},this.calculateModuleSizeOneWay=function(e,t){var n=this.sizeOfBlackWhiteBlackRunBothWays(Math.floor(e.X),Math.floor(e.Y),Math.floor(t.X),Math.floor(t.Y)),r=this.sizeOfBlackWhiteBlackRunBothWays(Math.floor(t.X),Math.floor(t.Y),Math.floor(e.X),Math.floor(e.Y));return isNaN(n)?r/7:isNaN(r)?n/7:(n+r)/14},this.calculateModuleSize=function(e,t,n){return(this.calculateModuleSizeOneWay(e,t)+this.calculateModuleSizeOneWay(e,n))/2},this.distance=function(e,t){var n=e.X-t.X,r=e.Y-t.Y;return Math.sqrt(n*n+r*r)},this.computeDimension=function(e,t,n,r){var i=7+(Math.round(this.distance(e,t)/r)+Math.round(this.distance(e,n)/r)>>1);switch(3&i){case 0:i++;break;case 2:i--;break;case 3:throw"Error"}return i},this.findAlignmentInRegion=function(e,r,i,s){var o=Math.floor(s*e),a=Math.max(0,r-o),h=Math.min(n.width-1,r+o);if(h-a<3*e)throw"Error";var w=Math.max(0,i-o),f=Math.min(n.height-1,i+o);return new t(this.image,n,a,w,h-a,f-w,e,this.resultPointCallback).find()},this.createTransform=function(e,t,n,r,i){var s,o,a,h,w=i-3.5;return null!=r?(s=r.X,o=r.Y,a=h=w-3):(s=t.X-e.X+n.X,o=t.Y-e.Y+n.Y,a=h=w),P.quadrilateralToQuadrilateral(3.5,3.5,w,3.5,a,h,3.5,w,e.X,e.Y,t.X,t.Y,s,o,n.X,n.Y)},this.sampleGrid=function(e,t,r){return M.sampleGrid3(e,n,r,t)},this.processFinderPatternInfo=function(e){var t=e.TopLeft,n=e.TopRight,r=e.BottomLeft,i=this.calculateModuleSize(t,n,r);if(i<1)throw"Error";var s=this.computeDimension(t,n,r,i),o=A.getProvisionalVersionForDimension(s),a=o.DimensionForVersion-7,h=null;if(o.AlignmentPatternCenters.length>0)for(var w=n.X-t.X+r.X,f=n.Y-t.Y+r.Y,u=1-3/a,l=Math.floor(t.X+u*(w-t.X)),d=Math.floor(t.Y+u*(f-t.Y)),c=4;c<=16;c<<=1){h=this.findAlignmentInRegion(i,l,d,c);break}var g=this.createTransform(t,n,r,h,s);return new N(this.sampleGrid(this.image,g,s),null==h?new Array(r,t,n):new Array(r,t,n,h))},this.detect=function(){var e=new i(n).findFinderPattern(this.image);return this.processFinderPatternInfo(e)}},B=function(e,t){return e^t};var E=function e(t,n){if(null==n||0==n.length)throw"System.ArgumentException";this.field=t;var r=n.length;if(r>1&&0==n[0]){for(var i=1;i<r&&0==n[i];)i++;if(i==r)this.coefficients=t.Zero.coefficients;else{this.coefficients=new Array(r-i);for(var s=0;s<this.coefficients.length;s++)this.coefficients[s]=0;for(var o=0;o<this.coefficients.length;o++)this.coefficients[o]=n[i+o]}}else this.coefficients=n;this.__defineGetter__("Zero",(function(){return 0==this.coefficients[0]})),this.__defineGetter__("Degree",(function(){return this.coefficients.length-1})),this.__defineGetter__("Coefficients",(function(){return this.coefficients})),this.getCoefficient=function(e){return this.coefficients[this.coefficients.length-1-e]},this.evaluateAt=function(e){if(0==e)return this.getCoefficient(0);var t=this.coefficients.length;if(1==e){for(var n=0,r=0;r<t;r++)n=B(n,this.coefficients[r]);return n}var i=this.coefficients[0];for(r=1;r<t;r++)i=B(this.field.multiply(e,i),this.coefficients[r]);return i},this.addOrSubtract=function(n){if(this.field!=n.field)throw"GF256Polys do not have same GF256 field";if(this.Zero)return n;if(n.Zero)return this;var r=this.coefficients,i=n.coefficients;if(r.length>i.length){var s=r;r=i,i=s}for(var o=new Array(i.length),a=i.length-r.length,h=0;h<a;h++)o[h]=i[h];for(var w=a;w<i.length;w++)o[w]=B(r[w-a],i[w]);return new e(t,o)},this.multiply1=function(t){if(this.field!=t.field)throw"GF256Polys do not have same GF256 field";if(this.Zero||t.Zero)return this.field.Zero;for(var n=this.coefficients,r=n.length,i=t.coefficients,s=i.length,o=new Array(r+s-1),a=0;a<r;a++)for(var h=n[a],w=0;w<s;w++)o[a+w]=B(o[a+w],this.field.multiply(h,i[w]));return new e(this.field,o)},this.multiply2=function(t){if(0==t)return this.field.Zero;if(1==t)return this;for(var n=this.coefficients.length,r=new Array(n),i=0;i<n;i++)r[i]=this.field.multiply(this.coefficients[i],t);return new e(this.field,r)},this.multiplyByMonomial=function(t,n){if(t<0)throw"System.ArgumentException";if(0==n)return this.field.Zero;for(var r=this.coefficients.length,i=new Array(r+t),s=0;s<i.length;s++)i[s]=0;for(s=0;s<r;s++)i[s]=this.field.multiply(this.coefficients[s],n);return new e(this.field,i)},this.divide=function(e){if(this.field!=e.field)throw"GF256Polys do not have same GF256 field";if(e.Zero)throw"Divide by 0";for(var t=this.field.Zero,n=this,r=e.getCoefficient(e.Degree),i=this.field.inverse(r);n.Degree>=e.Degree&&!n.Zero;){var s=n.Degree-e.Degree,o=this.field.multiply(n.getCoefficient(n.Degree),i),a=e.multiplyByMonomial(s,o),h=this.field.buildMonomial(s,o);t=t.addOrSubtract(h),n=n.addOrSubtract(a)}return new Array(t,n)}};function D(e){this.expTable=new Array(256),this.logTable=new Array(256);for(var t=1,n=0;n<256;n++)this.expTable[n]=t,(t<<=1)>=256&&(t^=e);for(n=0;n<255;n++)this.logTable[this.expTable[n]]=n;var r=new Array(1);r[0]=0,this.zero=new E(this,new Array(r));var i=new Array(1);i[0]=1,this.one=new E(this,new Array(i)),this.__defineGetter__("Zero",(function(){return this.zero})),this.__defineGetter__("One",(function(){return this.one})),this.buildMonomial=function(e,t){if(e<0)throw"System.ArgumentException";if(0==t)return this.zero;for(var n=new Array(e+1),r=0;r<n.length;r++)n[r]=0;return n[0]=t,new E(this,n)},this.exp=function(e){return this.expTable[e]},this.log=function(e){if(0==e)throw"System.ArgumentException";return this.logTable[e]},this.inverse=function(e){if(0==e)throw"System.ArithmeticException";return this.expTable[255-this.logTable[e]]},this.multiply=function(e,t){return 0==e||0==t?0:1==e?t:1==t?e:this.expTable[(this.logTable[e]+this.logTable[t])%255]}}D.QR_CODE_FIELD=new D(285),D.DATA_MATRIX_FIELD=new D(301),D.addOrSubtract=function(e,t){return e^t};var x=D,F=s,I={};I.forReference=function(e){if(e<0||e>7)throw"System.ArgumentException";return I.DATA_MASKS[e]},I.DATA_MASKS=new Array(new function(){this.unmaskBitMatrix=function(e,t){for(var n=0;n<t;n++)for(var r=0;r<t;r++)this.isMasked(n,r)&&e.flip(r,n)},this.isMasked=function(e,t){return 0==(e+t&1)}},new function(){this.unmaskBitMatrix=function(e,t){for(var n=0;n<t;n++)for(var r=0;r<t;r++)this.isMasked(n,r)&&e.flip(r,n)},this.isMasked=function(e,t){return 0==(1&e)}},new function(){this.unmaskBitMatrix=function(e,t){for(var n=0;n<t;n++)for(var r=0;r<t;r++)this.isMasked(n,r)&&e.flip(r,n)},this.isMasked=function(e,t){return t%3==0}},new function(){this.unmaskBitMatrix=function(e,t){for(var n=0;n<t;n++)for(var r=0;r<t;r++)this.isMasked(n,r)&&e.flip(r,n)},this.isMasked=function(e,t){return(e+t)%3==0}},new function(){this.unmaskBitMatrix=function(e,t){for(var n=0;n<t;n++)for(var r=0;r<t;r++)this.isMasked(n,r)&&e.flip(r,n)},this.isMasked=function(e,t){return 0==(F(e,1)+t/3&1)}},new function(){this.unmaskBitMatrix=function(e,t){for(var n=0;n<t;n++)for(var r=0;r<t;r++)this.isMasked(n,r)&&e.flip(r,n)},this.isMasked=function(e,t){var n=e*t;return(1&n)+n%3==0}},new function(){this.unmaskBitMatrix=function(e,t){for(var n=0;n<t;n++)for(var r=0;r<t;r++)this.isMasked(n,r)&&e.flip(r,n)},this.isMasked=function(e,t){var n=e*t;return 0==((1&n)+n%3&1)}},new function(){this.unmaskBitMatrix=function(e,t){for(var n=0;n<t;n++)for(var r=0;r<t;r++)this.isMasked(n,r)&&e.flip(r,n)},this.isMasked=function(e,t){return 0==((e+t&1)+e*t%3&1)}});var R=I,G=function(e){var t=e.Dimension;if(t<21||1!=(3&t))throw"Error BitMatrixParser";this.bitMatrix=e,this.parsedVersion=null,this.parsedFormatInfo=null,this.copyBit=function(e,t,n){return this.bitMatrix.get_Renamed(e,t)?n<<1|1:n<<1},this.readFormatInformation=function(){if(null!=this.parsedFormatInfo)return this.parsedFormatInfo;for(var e=0,t=0;t<6;t++)e=this.copyBit(t,8,e);e=this.copyBit(7,8,e),e=this.copyBit(8,8,e),e=this.copyBit(8,7,e);for(var n=5;n>=0;n--)e=this.copyBit(8,n,e);if(this.parsedFormatInfo=v.decodeFormatInformation(e),null!=this.parsedFormatInfo)return this.parsedFormatInfo;var r=this.bitMatrix.Dimension;e=0;var i=r-8;for(t=r-1;t>=i;t--)e=this.copyBit(t,8,e);for(n=r-7;n<r;n++)e=this.copyBit(8,n,e);if(this.parsedFormatInfo=v.decodeFormatInformation(e),null!=this.parsedFormatInfo)return this.parsedFormatInfo;throw"Error readFormatInformation"},this.readVersion=function(){if(null!=this.parsedVersion)return this.parsedVersion;var e=this.bitMatrix.Dimension,t=e-17>>2;if(t<=6)return A.getVersionForNumber(t);for(var n=0,r=e-11,i=5;i>=0;i--)for(var s=e-9;s>=r;s--)n=this.copyBit(s,i,n);if(this.parsedVersion=A.decodeVersionInformation(n),null!=this.parsedVersion&&this.parsedVersion.DimensionForVersion==e)return this.parsedVersion;n=0;for(s=5;s>=0;s--)for(i=e-9;i>=r;i--)n=this.copyBit(s,i,n);if(this.parsedVersion=A.decodeVersionInformation(n),null!=this.parsedVersion&&this.parsedVersion.DimensionForVersion==e)return this.parsedVersion;throw"Error readVersion"},this.readCodewords=function(){var e=this.readFormatInformation(),t=this.readVersion(),n=R.forReference(e.DataMask),r=this.bitMatrix.Dimension;n.unmaskBitMatrix(this.bitMatrix,r);for(var i=t.buildFunctionPattern(),s=!0,o=new Array(t.TotalCodewords),a=0,h=0,w=0,f=r-1;f>0;f-=2){6==f&&f--;for(var u=0;u<r;u++)for(var l=s?r-1-u:u,d=0;d<2;d++)i.get_Renamed(f-d,l)||(w++,h<<=1,this.bitMatrix.get_Renamed(f-d,l)&&(h|=1),8==w&&(o[a++]=h,w=0,h=0));s^=!0}if(a!=t.TotalCodewords)throw"Error readCodewords";return o}};function V(e,t){this.numDataCodewords=e,this.codewords=t,this.__defineGetter__("NumDataCodewords",(function(){return this.numDataCodewords})),this.__defineGetter__("Codewords",(function(){return this.codewords}))}V.getDataBlocks=function(e,t,n){if(e.length!=t.TotalCodewords)throw"ArgumentException";for(var r=t.getECBlocksForLevel(n),i=0,s=r.getECBlocks(),o=0;o<s.length;o++)i+=s[o].Count;for(var a=new Array(i),h=0,w=0;w<s.length;w++){var f=s[w];for(o=0;o<f.Count;o++){var u=f.DataCodewords,l=r.ECCodewordsPerBlock+u;a[h++]=new V(u,new Array(l))}}for(var d=a[0].codewords.length,c=a.length-1;c>=0;){if(a[c].codewords.length==d)break;c--}c++;var g=d-r.ECCodewordsPerBlock,v=0;for(o=0;o<g;o++)for(w=0;w<h;w++)a[w].codewords[o]=e[v++];for(w=c;w<h;w++)a[w].codewords[g]=e[v++];var m=a[0].codewords.length;for(o=g;o<m;o++)for(w=0;w<h;w++){var b=w<c?o:o+1;a[w].codewords[b]=e[v++]}return a};var T=V,z=[[10,9,8,8],[12,11,16,10],[14,13,16,12]];var O=function(e,t,n){this.blockPointer=0,this.bitPointer=7,this.dataLength=0,this.blocks=e,this.numErrorCorrectionCode=n,t<=9?this.dataLengthMode=0:t>=10&&t<=26?this.dataLengthMode=1:t>=27&&t<=40&&(this.dataLengthMode=2),this.getNextBits=function(e){var t=0;if(e<this.bitPointer+1){for(var n=0,r=0;r<e;r++)n+=1<<r;return n<<=this.bitPointer-e+1,t=(this.blocks[this.blockPointer]&n)>>this.bitPointer-e+1,this.bitPointer-=e,t}if(e<this.bitPointer+1+8){var i=0;for(r=0;r<this.bitPointer+1;r++)i+=1<<r;return t=(this.blocks[this.blockPointer]&i)<<e-(this.bitPointer+1),this.blockPointer++,t+=this.blocks[this.blockPointer]>>8-(e-(this.bitPointer+1)),this.bitPointer=this.bitPointer-e%8,this.bitPointer<0&&(this.bitPointer=8+this.bitPointer),t}if(e<this.bitPointer+1+16){i=0;var s=0;for(r=0;r<this.bitPointer+1;r++)i+=1<<r;var o=(this.blocks[this.blockPointer]&i)<<e-(this.bitPointer+1);this.blockPointer++;var a=this.blocks[this.blockPointer]<<e-(this.bitPointer+1+8);this.blockPointer++;for(r=0;r<e-(this.bitPointer+1+8);r++)s+=1<<r;return s<<=8-(e-(this.bitPointer+1+8)),t=o+a+((this.blocks[this.blockPointer]&s)>>8-(e-(this.bitPointer+1+8))),this.bitPointer=this.bitPointer-(e-8)%8,this.bitPointer<0&&(this.bitPointer=8+this.bitPointer),t}return 0},this.NextMode=function(){return this.blockPointer>this.blocks.length-this.numErrorCorrectionCode-2?0:this.getNextBits(4)},this.getDataLength=function(e){for(var t=0;e>>t!=1;)t++;return this.getNextBits(z[this.dataLengthMode][t])},this.getRomanAndFigureString=function(e){var t=e,n=0,r="",i=new Array("0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":");do{if(t>1){var s=(n=this.getNextBits(11))%45;r+=i[Math.floor(n/45)],r+=i[s],t-=2}else 1==t&&(r+=i[n=this.getNextBits(6)],t-=1)}while(t>0);return r},this.getFigureString=function(e){var t=e,n=0,r="";do{t>=3?((n=this.getNextBits(10))<100&&(r+="0"),n<10&&(r+="0"),t-=3):2==t?((n=this.getNextBits(7))<10&&(r+="0"),t-=2):1==t&&(n=this.getNextBits(4),t-=1),r+=n}while(t>0);return r},this.get8bitByteArray=function(e){var t=e,n=0,r=new Array;do{n=this.getNextBits(8),r.push(n),t--}while(t>0);return r},this.getKanjiString=function(e){var t=e,n=0,r="";do{var i=((n=this.getNextBits(13))/192<<8)+n%192,s=0;s=i+33088<=40956?i+33088:i+49472,r+=String.fromCharCode(s),t--}while(t>0);return r},this.parseECIValue=function(){var e=0,t=this.getNextBits(8);(0==(128&t)&&(e=127&t),128==(192&t))&&(e=(63&t)<<8|this.getNextBits(8));192==(224&t)&&(e=(31&t)<<16|this.getNextBits(8));return e},this.__defineGetter__("DataByte",(function(){for(var e=new Array;;){var t=this.NextMode();if(0==t){if(e.length>0)break;throw"Empty data block"}if(1!=t&&2!=t&&4!=t&&8!=t&&7!=t)throw"Invalid mode: "+t+" in (block:"+this.blockPointer+" bit:"+this.bitPointer+")";if(7==t)var n=this.parseECIValue();else{var r=this.getDataLength(t);if(r<1)throw"Invalid data length: "+r;switch(t){case 1:for(var i=this.getFigureString(r),s=new Array(i.length),o=0;o<i.length;o++)s[o]=i.charCodeAt(o);e.push(s);break;case 2:for(i=this.getRomanAndFigureString(r),s=new Array(i.length),o=0;o<i.length;o++)s[o]=i.charCodeAt(o);e.push(s);break;case 4:n=this.get8bitByteArray(r);e.push(n);break;case 8:i=this.getKanjiString(r);e.push(i)}}}return e}))},L={};L.rsDecoder=new function(e){this.field=e,this.decode=function(e,t){for(var n=new E(this.field,e),r=new Array(t),i=0;i<r.length;i++)r[i]=0;var s=!0;for(i=0;i<t;i++){var o=n.evaluateAt(this.field.exp(i));r[r.length-1-i]=o,0!=o&&(s=!1)}if(!s){var a=new E(this.field,r),h=this.runEuclideanAlgorithm(this.field.buildMonomial(t,1),a,t),w=h[0],f=h[1],u=this.findErrorLocations(w),l=this.findErrorMagnitudes(f,u,!1);for(i=0;i<u.length;i++){var d=e.length-1-this.field.log(u[i]);if(d<0)throw"ReedSolomonException Bad error location";e[d]=x.addOrSubtract(e[d],l[i])}}},this.runEuclideanAlgorithm=function(e,t,n){if(e.Degree<t.Degree){var r=e;e=t,t=r}for(var i=e,s=t,o=this.field.One,a=this.field.Zero,h=this.field.Zero,w=this.field.One;s.Degree>=Math.floor(n/2);){var f=i,u=o,l=h;if(o=a,h=w,(i=s).Zero)throw"r_{i-1} was zero";s=f;for(var d=this.field.Zero,c=i.getCoefficient(i.Degree),g=this.field.inverse(c);s.Degree>=i.Degree&&!s.Zero;){var v=s.Degree-i.Degree,m=this.field.multiply(s.getCoefficient(s.Degree),g);d=d.addOrSubtract(this.field.buildMonomial(v,m)),s=s.addOrSubtract(i.multiplyByMonomial(v,m))}a=d.multiply1(o).addOrSubtract(u),w=d.multiply1(h).addOrSubtract(l)}var b=w.getCoefficient(0);if(0==b)throw"ReedSolomonException sigmaTilde(0) was zero";var y=this.field.inverse(b),C=w.multiply2(y),_=s.multiply2(y);return new Array(C,_)},this.findErrorLocations=function(e){var t=e.Degree;if(1==t)return new Array(e.getCoefficient(1));for(var n=new Array(t),r=0,i=1;i<256&&r<t;i++)0==e.evaluateAt(i)&&(n[r]=this.field.inverse(i),r++);if(r!=t)throw"Error locator degree does not match number of roots";return n},this.findErrorMagnitudes=function(e,t,n){for(var r=t.length,i=new Array(r),s=0;s<r;s++){for(var o=this.field.inverse(t[s]),a=1,h=0;h<r;h++)s!=h&&(a=this.field.multiply(a,x.addOrSubtract(1,this.field.multiply(t[h],o))));i[s]=this.field.multiply(e.evaluateAt(o),this.field.inverse(a)),n&&(i[s]=this.field.multiply(i[s],o))}return i}}(x.QR_CODE_FIELD),L.correctErrors=function(e,t){for(var n=e.length,r=new Array(n),i=0;i<n;i++)r[i]=255&e[i];var s=e.length-t;try{L.rsDecoder.decode(r,s)}catch(e){throw e}for(i=0;i<t;i++)e[i]=r[i]},L.decode=function(e){for(var t=new G(e),n=t.readVersion(),r=t.readFormatInformation().ErrorCorrectionLevel,i=t.readCodewords(),s=T.getDataBlocks(i,n,r),o=0,a=0;a<s.length;a++)o+=s[a].NumDataCodewords;for(var h=new Array(o),w=0,f=0;f<s.length;f++){var u=s[f],l=u.Codewords,d=u.NumDataCodewords;L.correctErrors(l,d);for(a=0;a<d;a++)h[w++]=l[a]}return new O(h,n.VersionNumber,r.Bits)};var X=L;var Y={3:"iso-8859-1",20:"shift_jis",25:"utf-16be",26:"utf-8",27:"us-ascii"},q=function(e){if("undefined"!=typeof TextDecoder)return new TextDecoder("utf-8").decode(new Uint8Array(e));for(var t="",n=0;n<e.length;){var r=255&e[n++];if(r<128)t+=String.fromCharCode(r);else if(r<224)t+=String.fromCharCode((31&r)<<6|63&e[n++]);else if(r<240)t+=String.fromCharCode((15&r)<<12|(63&e[n++])<<6|63&e[n++]);else{var i=(7&r)<<18|(63&e[n++])<<12|(63&e[n++])<<6|63&e[n++];i-=65536,t+=String.fromCharCode(55296+(i>>10),56320+(1023&i))}}return t},Z=function(e,t){if(!t)for(var n=0;n+1<e.length;n+=2){var r=e[n];e[n]=e[n+1],e[n+1]=r}if("undefined"!=typeof TextDecoder)return new TextDecoder("utf-16le").decode(new Uint8Array(e));var i="";for(n=0;n+1<e.length;n+=2){var s=e[n]|e[n+1]<<8;if(s>=55296&&s<=56319&&n+3<e.length){var o=e[n+2]|e[n+3]<<8;if(o>=56320&&o<=57343){i+=String.fromCharCode(s,o),n+=2;continue}}i+=String.fromCharCode(s)}return i},W=function(e,t){var n=e.length;if(0==n)return"";if(t&&Y[t]){var r=Y[t];if("utf-16be"==r)return Z(e,!1);if("utf-8"==r)return q(e);if("undefined"!=typeof TextDecoder)try{return new TextDecoder(r).decode(new Uint8Array(e))}catch(e){}}if(n>=2&&255==e[0]&&254==e[1])return Z(e.slice(2),!0);if(n>=2&&254==e[0]&&255==e[1])return Z(e.slice(2),!1);if(n>=3&&239==e[0]&&187==e[1]&&191==e[2])return q(e.slice(3));if(n>=4&&n%2==0){for(var i=0,s=0,o=0;o<n;o+=2)0==e[o]&&i++,0==e[o+1]&&s++;var a=n/2;if(s>.7*a)return Z(e,!0);if(i>.7*a)return Z(e,!1)}return q(e)},H=function(e,t){var n=function(e,t,n){for(var r=new Array(t.width*t.height),i=function(e,t){return function(n,r){if(t.width<n||t.height<r)throw"point error";var i=4*n+r*t.width*4;return(33.33*e[i]+33.33*e[i+1]+33.33*e[i+2])/100}}(e,t),s=0;s<t.height;s++)for(var o=0;o<t.width;o++){var a=i(o,s);r[o+s*t.width]=a<=n}return r}(e,t,153),r=new S(n,t).detect();if(t.debugfn){for(var i=[],s=0;s<r.bits.Height;s++)for(var o=0;o<r.bits.Width;o++)i.push(!!r.bits.get_Renamed(o,s)||0);debugfn(i,r.bits.Width)}for(var a=X.decode(r.bits),h="",w=0;;){var f=a.NextMode();if(0==f)break;if(7!=f){var u=a.getDataLength(f);if(u<1)throw"Invalid data length: "+u;switch(f){case 1:h+=a.getFigureString(u);break;case 2:h+=a.getRomanAndFigureString(u);break;case 4:h+=W(a.get8bitByteArray(u),w);break;case 8:h+=a.getKanjiString(u);break;default:throw"Invalid mode: "+f}}else w=a.parseECIValue()}return h},Q=function(e,t){var n={width:e.width,height:e.height,debugfn:t};return H(e.data,n)},j=function(e){var t=document.createElement("canvas"),n=t.getContext("2d"),r="VIDEO"==e.tagName;t.width=r?e.videoWidth:e.width,t.height=r?e.videoHeight:e.height,n.drawImage(e,0,0,t.width,t.height);var i=n.getImageData(0,0,t.width,t.height);return Q(i)};return Q.decodeByDom=j,Q.decodeByUrl=function(e,t){var n=new Image;n.crossOrigin="anonymous",n.src=e,n.onload=function(){try{t(null,j(n))}catch(e){t(e)}},n.onerror=t},Q}));
|
|
//# sourceMappingURL=qr-decode.umd.min.js.map
|