qrgen.js 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955
  1. !
  2. function(r, t) {
  3. "object" == typeof module && module.exports ? module.exports = t(r) : r.qrgen = t(r)
  4. }("undefined" != typeof window ? window : this, function(r) {
  5. function t(r) {
  6. this.a(r)
  7. }
  8. function e(r) {
  9. var e = new t(r);
  10. return e.b()
  11. }
  12. function n(r, t) {
  13. var e = document.createElement("canvas");
  14. return e.width = r, e.height = t, e
  15. }
  16. function a(r, t) {
  17. var e = t.data;
  18. if (e) {
  19. var n = r.getContext("2d");
  20. Array.isArray(e) || (e = [e]), o(e, function(e) {
  21. if (e instanceof HTMLElement) n.drawImage(e, 0, 0, r.width, r.height);
  22. else {
  23. var a, o, i, u;
  24. e = "string" == typeof e ? {
  25. style: e
  26. } : e || {}, a = ("col" in e ? e.col * t.cellSize : e.x) || 0, o = ("row" in e ? e.row * t.cellSize : e.y) || 0, i = ("cols" in e ? e.cols * t.cellSize : e.width) || t.size, u = ("rows" in e ? e.rows * t.cellSize : e.height) || t.size, a < 0 && (a += t.size), o < 0 && (o += t.size), n.fillStyle = e.style || "black", n.fillRect(a, o, i, u)
  27. }
  28. })
  29. }
  30. return r
  31. }
  32. function o(r, t) {
  33. for (var e = r && r.length || 0, n = 0; n < e; n++) t.call(r, r[n], n)
  34. }
  35. function i() {
  36. var r;
  37. return o(arguments, function(t) {
  38. if (r) {
  39. if (t) for (var e in t) r[e] = t[e]
  40. } else r = t
  41. }), r
  42. }
  43. function u() {
  44. var r = [];
  45. return o(arguments, function(t) {
  46. Array.isArray(t) ? r = r.concat(t) : null != t && r.push(t)
  47. }), r
  48. }
  49. function f(r, t) {
  50. var e = this;
  51. t = t || {}, e.margin = t.margin || 0, e.nobg = !! t.nobg, e.isBackgroundColor = t.isBackgroundColor || e.isBackgroundColor, e.prepare(r)
  52. }
  53. var l = function() {
  54. function r(t, e) {
  55. if ("undefined" == typeof t.length) throw new Error(t.length + "/" + e);
  56. var n = function() {
  57. for (var r = 0; r < t.length && 0 == t[r];) r += 1;
  58. for (var n = new Array(t.length - r + e), a = 0; a < t.length - r; a += 1) n[a] = t[a + r];
  59. return n
  60. }(),
  61. a = {};
  62. return a.getAt = function(r) {
  63. return n[r]
  64. }, a.getLength = function() {
  65. return n.length
  66. }, a.multiply = function(t) {
  67. for (var e = new Array(a.getLength() + t.getLength() - 1), n = 0; n < a.getLength(); n += 1) for (var o = 0; o < t.getLength(); o += 1) e[n + o] ^= i.gexp(i.glog(a.getAt(n)) + i.glog(t.getAt(o)));
  68. return r(e, 0)
  69. }, a.mod = function(t) {
  70. if (a.getLength() - t.getLength() < 0) return a;
  71. for (var e = i.glog(a.getAt(0)) - i.glog(t.getAt(0)), n = new Array(a.getLength()), o = 0; o < a.getLength(); o += 1) n[o] = a.getAt(o);
  72. for (var o = 0; o < t.getLength(); o += 1) n[o] ^= i.gexp(i.glog(t.getAt(o)) + e);
  73. return r(n, 0).mod(t)
  74. }, a
  75. }
  76. var t = function(t, e) {
  77. var a = 236,
  78. i = 17,
  79. g = t,
  80. c = n[e],
  81. h = null,
  82. s = 0,
  83. v = null,
  84. d = new Array,
  85. w = {},
  86. p = function(r, t) {
  87. for (; null == v;) try {
  88. v = x(g, c, d);
  89. break
  90. } catch (r) {
  91. if (g++, g > 40) throw r
  92. }
  93. s = 4 * g + 17, h = function(r) {
  94. for (var t = new Array(r), e = 0; e < r; e += 1) {
  95. t[e] = new Array(r);
  96. for (var n = 0; n < r; n += 1) t[e][n] = null
  97. }
  98. return t
  99. }(s), m(0, 0), m(s - 7, 0), m(0, s - 7), A(), k(), T(r, t), g >= 7 && E(r), D(v, t)
  100. },
  101. m = function(r, t) {
  102. for (var e = -1; e <= 7; e += 1) if (!(r + e <= -1 || s <= r + e)) for (var n = -1; n <= 7; n += 1) t + n <= -1 || s <= t + n || (0 <= e && e <= 6 && (0 == n || 6 == n) || 0 <= n && n <= 6 && (0 == e || 6 == e) || 2 <= e && e <= 4 && 2 <= n && n <= 4 ? h[r + e][t + n] = !0 : h[r + e][t + n] = !1)
  103. },
  104. y = function() {
  105. for (var r = 0, t = 0, e = 0; e < 8; e += 1) {
  106. p(!0, e);
  107. var n = o.getLostPoint(w);
  108. (0 == e || r > n) && (r = n, t = e)
  109. }
  110. return t
  111. },
  112. k = function() {
  113. for (var r = 8; r < s - 8; r += 1) null == h[r][6] && (h[r][6] = r % 2 == 0);
  114. for (var t = 8; t < s - 8; t += 1) null == h[6][t] && (h[6][t] = t % 2 == 0)
  115. },
  116. A = function() {
  117. for (var r = o.getPatternPosition(g), t = 0; t < r.length; t += 1) for (var e = 0; e < r.length; e += 1) {
  118. var n = r[t],
  119. a = r[e];
  120. if (null == h[n][a]) for (var i = -2; i <= 2; i += 1) for (var u = -2; u <= 2; u += 1) i == -2 || 2 == i || u == -2 || 2 == u || 0 == i && 0 == u ? h[n + i][a + u] = !0 : h[n + i][a + u] = !1
  121. }
  122. },
  123. E = function(r) {
  124. for (var t = o.getBCHTypeNumber(g), e = 0; e < 18; e += 1) {
  125. var n = !r && 1 == (t >> e & 1);
  126. h[Math.floor(e / 3)][e % 3 + s - 8 - 3] = n
  127. }
  128. for (var e = 0; e < 18; e += 1) {
  129. var n = !r && 1 == (t >> e & 1);
  130. h[e % 3 + s - 8 - 3][Math.floor(e / 3)] = n
  131. }
  132. },
  133. T = function(r, t) {
  134. for (var e = c << 3 | t, n = o.getBCHTypeInfo(e), a = 0; a < 15; a += 1) {
  135. var i = !r && 1 == (n >> a & 1);
  136. a < 6 ? h[a][8] = i : a < 8 ? h[a + 1][8] = i : h[s - 15 + a][8] = i
  137. }
  138. for (var a = 0; a < 15; a += 1) {
  139. var i = !r && 1 == (n >> a & 1);
  140. a < 8 ? h[8][s - a - 1] = i : a < 9 ? h[8][15 - a - 1 + 1] = i : h[8][15 - a - 1] = i
  141. }
  142. h[s - 8][8] = !r
  143. },
  144. D = function(r, t) {
  145. for (var e = -1, n = s - 1, a = 7, i = 0, u = o.getMaskFunction(t), f = s - 1; f > 0; f -= 2) for (6 == f && (f -= 1);;) {
  146. for (var l = 0; l < 2; l += 1) if (null == h[n][f - l]) {
  147. var g = !1;
  148. i < r.length && (g = 1 == (r[i] >>> a & 1));
  149. var c = u(n, f - l);
  150. c && (g = !g), h[n][f - l] = g, a -= 1, a == -1 && (i += 1, a = 7)
  151. }
  152. if (n += e, n < 0 || s <= n) {
  153. n -= e, e = -e;
  154. break
  155. }
  156. }
  157. },
  158. M = function(t, e) {
  159. for (var n = 0, a = 0, i = 0, u = new Array(e.length), f = new Array(e.length), l = 0; l < e.length; l += 1) {
  160. var g = e[l].dataCount,
  161. c = e[l].totalCount - g;
  162. a = Math.max(a, g), i = Math.max(i, c), u[l] = new Array(g);
  163. for (var h = 0; h < u[l].length; h += 1) u[l][h] = 255 & t.getBuffer()[h + n];
  164. n += g;
  165. var s = o.getErrorCorrectPolynomial(c),
  166. v = r(u[l], s.getLength() - 1),
  167. d = v.mod(s);
  168. f[l] = new Array(s.getLength() - 1);
  169. for (var h = 0; h < f[l].length; h += 1) {
  170. var w = h + d.getLength() - f[l].length;
  171. f[l][h] = w >= 0 ? d.getAt(w) : 0
  172. }
  173. }
  174. for (var p = 0, h = 0; h < e.length; h += 1) p += e[h].totalCount;
  175. for (var m = new Array(p), y = 0, h = 0; h < a; h += 1) for (var l = 0; l < e.length; l += 1) h < u[l].length && (m[y] = u[l][h], y += 1);
  176. for (var h = 0; h < i; h += 1) for (var l = 0; l < e.length; l += 1) h < f[l].length && (m[y] = f[l][h], y += 1);
  177. return m
  178. },
  179. x = function(r, t, e) {
  180. for (var n = u.getRSBlocks(r, t), l = f(), g = 0; g < e.length; g += 1) {
  181. var c = e[g];
  182. l.put(c.getMode(), 4), l.put(c.getLength(), o.getLengthInBits(c.getMode(), r)), c.write(l)
  183. }
  184. for (var h = 0, g = 0; g < n.length; g += 1) h += n[g].dataCount;
  185. if (l.getLengthInBits() > 8 * h) throw new Error("code length overflow. (" + l.getLengthInBits() + ">" + 8 * h + ")");
  186. for (l.getLengthInBits() + 4 <= 8 * h && l.put(0, 4); l.getLengthInBits() % 8 != 0;) l.putBit(!1);
  187. for (;;) {
  188. if (l.getLengthInBits() >= 8 * h) break;
  189. if (l.put(a, 8), l.getLengthInBits() >= 8 * h) break;
  190. l.put(i, 8)
  191. }
  192. return M(l, n)
  193. };
  194. return w.addData = function(r) {
  195. var t = l(r);
  196. d.push(t), v = null
  197. }, w.isDark = function(r, t) {
  198. if (r < 0 || s <= r || t < 0 || s <= t) throw new Error(r + "," + t);
  199. return h[r][t]
  200. }, w.getModuleCount = function() {
  201. return s
  202. }, w.make = function() {
  203. p(!1, y())
  204. }, w
  205. };
  206. t.stringToBytes = function(r) {
  207. var t = [];
  208. r = r.replace(/\r\n/g, "\n");
  209. for (var e = 0; e < r.length; e++) {
  210. var n = r.charCodeAt(e);
  211. n < 128 ? t.push(n) : n < 2048 ? t.push(n >> 6 | 192, 63 & n | 128) : t.push(n >> 12 | 224, n >> 6 & 63 | 128, 63 & n | 128)
  212. }
  213. return t
  214. }, t.createStringToBytes = function(r, t) {
  215. var e = function() {
  216. for (var e = base64DecodeInputStream(r), n = function() {
  217. var r = e.read();
  218. if (r == -1) throw new Error;
  219. return r
  220. }, a = 0, o = {};;) {
  221. var i = e.read();
  222. if (i == -1) break;
  223. var u = n(),
  224. f = n(),
  225. l = n(),
  226. g = String.fromCharCode(i << 8 | u),
  227. c = f << 8 | l;
  228. o[g] = c, a += 1
  229. }
  230. if (a != t) throw new Error(a + " != " + t);
  231. return o
  232. }(),
  233. n = "?".charCodeAt(0);
  234. return function(r) {
  235. for (var t = new Array, a = 0; a < r.length; a += 1) {
  236. var o = r.charCodeAt(a);
  237. if (o < 128) t.push(o);
  238. else {
  239. var i = e[r.charAt(a)];
  240. "number" == typeof i ? (255 & i) == i ? t.push(i) : (t.push(i >>> 8), t.push(255 & i)) : t.push(n)
  241. }
  242. }
  243. return t
  244. }
  245. };
  246. var e = {
  247. MODE_NUMBER: 1,
  248. MODE_ALPHA_NUM: 2,
  249. MODE_8BIT_BYTE: 4,
  250. MODE_KANJI: 8
  251. },
  252. n = {
  253. L: 1,
  254. M: 0,
  255. Q: 3,
  256. H: 2
  257. },
  258. a = {
  259. PATTERN000: 0,
  260. PATTERN001: 1,
  261. PATTERN010: 2,
  262. PATTERN011: 3,
  263. PATTERN100: 4,
  264. PATTERN101: 5,
  265. PATTERN110: 6,
  266. PATTERN111: 7
  267. },
  268. o = function() {
  269. var t = [
  270. [],
  271. [6, 18],
  272. [6, 22],
  273. [6, 26],
  274. [6, 30],
  275. [6, 34],
  276. [6, 22, 38],
  277. [6, 24, 42],
  278. [6, 26, 46],
  279. [6, 28, 50],
  280. [6, 30, 54],
  281. [6, 32, 58],
  282. [6, 34, 62],
  283. [6, 26, 46, 66],
  284. [6, 26, 48, 70],
  285. [6, 26, 50, 74],
  286. [6, 30, 54, 78],
  287. [6, 30, 56, 82],
  288. [6, 30, 58, 86],
  289. [6, 34, 62, 90],
  290. [6, 28, 50, 72, 94],
  291. [6, 26, 50, 74, 98],
  292. [6, 30, 54, 78, 102],
  293. [6, 28, 54, 80, 106],
  294. [6, 32, 58, 84, 110],
  295. [6, 30, 58, 86, 114],
  296. [6, 34, 62, 90, 118],
  297. [6, 26, 50, 74, 98, 122],
  298. [6, 30, 54, 78, 102, 126],
  299. [6, 26, 52, 78, 104, 130],
  300. [6, 30, 56, 82, 108, 134],
  301. [6, 34, 60, 86, 112, 138],
  302. [6, 30, 58, 86, 114, 142],
  303. [6, 34, 62, 90, 118, 146],
  304. [6, 30, 54, 78, 102, 126, 150],
  305. [6, 24, 50, 76, 102, 128, 154],
  306. [6, 28, 54, 80, 106, 132, 158],
  307. [6, 32, 58, 84, 110, 136, 162],
  308. [6, 26, 54, 82, 110, 138, 166],
  309. [6, 30, 58, 86, 114, 142, 170]
  310. ],
  311. n = 1335,
  312. o = 7973,
  313. u = 21522,
  314. f = {},
  315. l = function(r) {
  316. for (var t = 0; 0 != r;) t += 1, r >>>= 1;
  317. return t
  318. };
  319. return f.getBCHTypeInfo = function(r) {
  320. for (var t = r << 10; l(t) - l(n) >= 0;) t ^= n << l(t) - l(n);
  321. return (r << 10 | t) ^ u
  322. }, f.getBCHTypeNumber = function(r) {
  323. for (var t = r << 12; l(t) - l(o) >= 0;) t ^= o << l(t) - l(o);
  324. return r << 12 | t
  325. }, f.getPatternPosition = function(r) {
  326. return t[r - 1]
  327. }, f.getMaskFunction = function(r) {
  328. switch (r) {
  329. case a.PATTERN000:
  330. return function(r, t) {
  331. return (r + t) % 2 == 0
  332. };
  333. case a.PATTERN001:
  334. return function(r, t) {
  335. return r % 2 == 0
  336. };
  337. case a.PATTERN010:
  338. return function(r, t) {
  339. return t % 3 == 0
  340. };
  341. case a.PATTERN011:
  342. return function(r, t) {
  343. return (r + t) % 3 == 0
  344. };
  345. case a.PATTERN100:
  346. return function(r, t) {
  347. return (Math.floor(r / 2) + Math.floor(t / 3)) % 2 == 0
  348. };
  349. case a.PATTERN101:
  350. return function(r, t) {
  351. return r * t % 2 + r * t % 3 == 0
  352. };
  353. case a.PATTERN110:
  354. return function(r, t) {
  355. return (r * t % 2 + r * t % 3) % 2 == 0
  356. };
  357. case a.PATTERN111:
  358. return function(r, t) {
  359. return (r * t % 3 + (r + t) % 2) % 2 == 0
  360. };
  361. default:
  362. throw new Error("bad maskPattern:" + r)
  363. }
  364. }, f.getErrorCorrectPolynomial = function(t) {
  365. for (var e = r([1], 0), n = 0; n < t; n += 1) e = e.multiply(r([1, i.gexp(n)], 0));
  366. return e
  367. }, f.getLengthInBits = function(r, t) {
  368. if (1 <= t && t < 10) switch (r) {
  369. case e.MODE_NUMBER:
  370. return 10;
  371. case e.MODE_ALPHA_NUM:
  372. return 9;
  373. case e.MODE_8BIT_BYTE:
  374. return 8;
  375. case e.MODE_KANJI:
  376. return 8;
  377. default:
  378. throw new Error("mode:" + r)
  379. } else if (t < 27) switch (r) {
  380. case e.MODE_NUMBER:
  381. return 12;
  382. case e.MODE_ALPHA_NUM:
  383. return 11;
  384. case e.MODE_8BIT_BYTE:
  385. return 16;
  386. case e.MODE_KANJI:
  387. return 10;
  388. default:
  389. throw new Error("mode:" + r)
  390. } else {
  391. if (!(t < 41)) throw new Error("type:" + t);
  392. switch (r) {
  393. case e.MODE_NUMBER:
  394. return 14;
  395. case e.MODE_ALPHA_NUM:
  396. return 13;
  397. case e.MODE_8BIT_BYTE:
  398. return 16;
  399. case e.MODE_KANJI:
  400. return 12;
  401. default:
  402. throw new Error("mode:" + r)
  403. }
  404. }
  405. }, f.getLostPoint = function(r) {
  406. for (var t = r.getModuleCount(), e = 0, n = 0; n < t; n += 1) for (var a = 0; a < t; a += 1) {
  407. for (var o = 0, i = r.isDark(n, a), u = -1; u <= 1; u += 1) if (!(n + u < 0 || t <= n + u)) for (var f = -1; f <= 1; f += 1) a + f < 0 || t <= a + f || 0 == u && 0 == f || i == r.isDark(n + u, a + f) && (o += 1);
  408. o > 5 && (e += 3 + o - 5)
  409. }
  410. for (var n = 0; n < t - 1; n += 1) for (var a = 0; a < t - 1; a += 1) {
  411. var l = 0;
  412. r.isDark(n, a) && (l += 1), r.isDark(n + 1, a) && (l += 1), r.isDark(n, a + 1) && (l += 1), r.isDark(n + 1, a + 1) && (l += 1), 0 != l && 4 != l || (e += 3)
  413. }
  414. for (var n = 0; n < t; n += 1) for (var a = 0; a < t - 6; a += 1) r.isDark(n, a) && !r.isDark(n, a + 1) && r.isDark(n, a + 2) && r.isDark(n, a + 3) && r.isDark(n, a + 4) && !r.isDark(n, a + 5) && r.isDark(n, a + 6) && (e += 40);
  415. for (var a = 0; a < t; a += 1) for (var n = 0; n < t - 6; n += 1) r.isDark(n, a) && !r.isDark(n + 1, a) && r.isDark(n + 2, a) && r.isDark(n + 3, a) && r.isDark(n + 4, a) && !r.isDark(n + 5, a) && r.isDark(n + 6, a) && (e += 40);
  416. for (var g = 0, a = 0; a < t; a += 1) for (var n = 0; n < t; n += 1) r.isDark(n, a) && (g += 1);
  417. var c = Math.abs(100 * g / t / t - 50) / 5;
  418. return e += 10 * c
  419. }, f
  420. }(),
  421. i = function() {
  422. for (var r = new Array(256), t = new Array(256), e = 0; e < 8; e += 1) r[e] = 1 << e;
  423. for (var e = 8; e < 256; e += 1) r[e] = r[e - 4] ^ r[e - 5] ^ r[e - 6] ^ r[e - 8];
  424. for (var e = 0; e < 255; e += 1) t[r[e]] = e;
  425. var n = {};
  426. return n.glog = function(r) {
  427. if (r < 1) throw new Error("glog(" + r + ")");
  428. return t[r]
  429. }, n.gexp = function(t) {
  430. for (; t < 0;) t += 255;
  431. for (; t >= 256;) t -= 255;
  432. return r[t]
  433. }, n
  434. }(),
  435. u = function() {
  436. var r = [
  437. [1, 26, 19],
  438. [1, 26, 16],
  439. [1, 26, 13],
  440. [1, 26, 9],
  441. [1, 44, 34],
  442. [1, 44, 28],
  443. [1, 44, 22],
  444. [1, 44, 16],
  445. [1, 70, 55],
  446. [1, 70, 44],
  447. [2, 35, 17],
  448. [2, 35, 13],
  449. [1, 100, 80],
  450. [2, 50, 32],
  451. [2, 50, 24],
  452. [4, 25, 9],
  453. [1, 134, 108],
  454. [2, 67, 43],
  455. [2, 33, 15, 2, 34, 16],
  456. [2, 33, 11, 2, 34, 12],
  457. [2, 86, 68],
  458. [4, 43, 27],
  459. [4, 43, 19],
  460. [4, 43, 15],
  461. [2, 98, 78],
  462. [4, 49, 31],
  463. [2, 32, 14, 4, 33, 15],
  464. [4, 39, 13, 1, 40, 14],
  465. [2, 121, 97],
  466. [2, 60, 38, 2, 61, 39],
  467. [4, 40, 18, 2, 41, 19],
  468. [4, 40, 14, 2, 41, 15],
  469. [2, 146, 116],
  470. [3, 58, 36, 2, 59, 37],
  471. [4, 36, 16, 4, 37, 17],
  472. [4, 36, 12, 4, 37, 13],
  473. [2, 86, 68, 2, 87, 69],
  474. [4, 69, 43, 1, 70, 44],
  475. [6, 43, 19, 2, 44, 20],
  476. [6, 43, 15, 2, 44, 16][81],
  477. [1, 80, 50, 4, 81, 51],
  478. [4, 50, 22, 4, 51, 23],
  479. [3, 36, 12, 8, 37, 13],
  480. [2, 116, 92, 2, 117, 93],
  481. [6, 58, 36, 2, 59, 37],
  482. [4, 46, 20, 6, 47, 21],
  483. [7, 42, 14, 4, 43, 15],
  484. [4, 133, 107],
  485. [8, 59, 37, 1, 60, 38],
  486. [8, 44, 20, 4, 45, 21],
  487. [12, 33, 11, 4, 34, 12],
  488. [3, 145, 115, 1, 146, 116],
  489. [4, 64, 40, 5, 65, 41],
  490. [11, 36, 16, 5, 37, 17],
  491. [11, 36, 12, 5, 37, 13],
  492. [5, 109, 87, 1, 110, 88],
  493. [5, 65, 41, 5, 66, 42],
  494. [5, 54, 24, 7, 55, 25],
  495. [11, 36, 12, 7, 37, 13],
  496. [5, 122, 98, 1, 123, 99],
  497. [7, 73, 45, 3, 74, 46],
  498. [15, 43, 19, 2, 44, 20],
  499. [3, 45, 15, 13, 46, 16],
  500. [1, 135, 107, 5, 136, 108],
  501. [10, 74, 46, 1, 75, 47],
  502. [1, 50, 22, 15, 51, 23],
  503. [2, 42, 14, 17, 43, 15],
  504. [5, 150, 120, 1, 151, 121],
  505. [9, 69, 43, 4, 70, 44],
  506. [17, 50, 22, 1, 51, 23],
  507. [2, 42, 14, 19, 43, 15],
  508. [3, 141, 113, 4, 142, 114],
  509. [3, 70, 44, 11, 71, 45],
  510. [17, 47, 21, 4, 48, 22],
  511. [9, 39, 13, 16, 40, 14],
  512. [3, 135, 107, 5, 136, 108],
  513. [3, 67, 41, 13, 68, 42],
  514. [15, 54, 24, 5, 55, 25],
  515. [15, 43, 15, 10, 44, 16],
  516. [4, 144, 116, 4, 145, 117],
  517. [17, 68, 42],
  518. [17, 50, 22, 6, 51, 23],
  519. [19, 46, 16, 6, 47, 17],
  520. [2, 139, 111, 7, 140, 112],
  521. [17, 74, 46],
  522. [7, 54, 24, 16, 55, 25],
  523. [34, 37, 13],
  524. [4, 151, 121, 5, 152, 122],
  525. [4, 75, 47, 14, 76, 48],
  526. [11, 54, 24, 14, 55, 25],
  527. [16, 45, 15, 14, 46, 16],
  528. [6, 147, 117, 4, 148, 118],
  529. [6, 73, 45, 14, 74, 46],
  530. [11, 54, 24, 16, 55, 25],
  531. [30, 46, 16, 2, 47, 17],
  532. [8, 132, 106, 4, 133, 107],
  533. [8, 75, 47, 13, 76, 48],
  534. [7, 54, 24, 22, 55, 25],
  535. [22, 45, 15, 13, 46, 16],
  536. [10, 142, 114, 2, 143, 115],
  537. [19, 74, 46, 4, 75, 47],
  538. [28, 50, 22, 6, 51, 23],
  539. [33, 46, 16, 4, 47, 17],
  540. [8, 152, 122, 4, 153, 123],
  541. [22, 73, 45, 3, 74, 46],
  542. [8, 53, 23, 26, 54, 24],
  543. [12, 45, 15, 28, 46, 16],
  544. [3, 147, 117, 10, 148, 118],
  545. [3, 73, 45, 23, 74, 46],
  546. [4, 54, 24, 31, 55, 25],
  547. [11, 45, 15, 31, 46, 16],
  548. [7, 146, 116, 7, 147, 117],
  549. [21, 73, 45, 7, 74, 46],
  550. [1, 53, 23, 37, 54, 24],
  551. [19, 45, 15, 26, 46, 16],
  552. [5, 145, 115, 10, 146, 116],
  553. [19, 75, 47, 10, 76, 48],
  554. [15, 54, 24, 25, 55, 25],
  555. [23, 45, 15, 25, 46, 16],
  556. [13, 145, 115, 3, 146, 116],
  557. [2, 74, 46, 29, 75, 47],
  558. [42, 54, 24, 1, 55, 25],
  559. [23, 45, 15, 28, 46, 16],
  560. [17, 145, 115],
  561. [10, 74, 46, 23, 75, 47],
  562. [10, 54, 24, 35, 55, 25],
  563. [19, 45, 15, 35, 46, 16],
  564. [17, 145, 115, 1, 146, 116],
  565. [14, 74, 46, 21, 75, 47],
  566. [29, 54, 24, 19, 55, 25],
  567. [11, 45, 15, 46, 46, 16],
  568. [13, 145, 115, 6, 146, 116],
  569. [14, 74, 46, 23, 75, 47],
  570. [44, 54, 24, 7, 55, 25],
  571. [59, 46, 16, 1, 47, 17],
  572. [12, 151, 121, 7, 152, 122],
  573. [12, 75, 47, 26, 76, 48],
  574. [39, 54, 24, 14, 55, 25],
  575. [22, 45, 15, 41, 46, 16],
  576. [6, 151, 121, 14, 152, 122],
  577. [6, 75, 47, 34, 76, 48],
  578. [46, 54, 24, 10, 55, 25],
  579. [2, 45, 15, 64, 46, 16],
  580. [17, 152, 122, 4, 153, 123],
  581. [29, 74, 46, 14, 75, 47],
  582. [49, 54, 24, 10, 55, 25],
  583. [24, 45, 15, 46, 46, 16],
  584. [4, 152, 122, 18, 153, 123],
  585. [13, 74, 46, 32, 75, 47],
  586. [48, 54, 24, 14, 55, 25],
  587. [42, 45, 15, 32, 46, 16],
  588. [20, 147, 117, 4, 148, 118],
  589. [40, 75, 47, 7, 76, 48],
  590. [43, 54, 24, 22, 55, 25],
  591. [10, 45, 15, 67, 46, 16],
  592. [19, 148, 118, 6, 149, 119],
  593. [18, 75, 47, 31, 76, 48],
  594. [34, 54, 24, 34, 55, 25],
  595. [20, 45, 15, 61, 46, 16]
  596. ],
  597. t = function(r, t) {
  598. var e = {};
  599. return e.totalCount = r, e.dataCount = t, e
  600. },
  601. e = {},
  602. a = function(t, e) {
  603. switch (e) {
  604. case n.L:
  605. return r[4 * (t - 1) + 0];
  606. case n.M:
  607. return r[4 * (t - 1) + 1];
  608. case n.Q:
  609. return r[4 * (t - 1) + 2];
  610. case n.H:
  611. return r[4 * (t - 1) + 3];
  612. default:
  613. return
  614. }
  615. };
  616. return e.getRSBlocks = function(r, e) {
  617. var n = a(r, e);
  618. if ("undefined" == typeof n) throw new Error("bad rs block @ typeNumber:" + r + "/errorCorrectLevel:" + e);
  619. for (var o = n.length / 3, i = new Array, u = 0; u < o; u += 1) for (var f = n[3 * u + 0], l = n[3 * u + 1], g = n[3 * u + 2], c = 0; c < f; c += 1) i.push(t(l, g));
  620. return i
  621. }, e
  622. }(),
  623. f = function() {
  624. var r = new Array,
  625. t = 0,
  626. e = {};
  627. return e.getBuffer = function() {
  628. return r
  629. }, e.getAt = function(t) {
  630. var e = Math.floor(t / 8);
  631. return 1 == (r[e] >>> 7 - t % 8 & 1)
  632. }, e.put = function(r, t) {
  633. for (var n = 0; n < t; n += 1) e.putBit(1 == (r >>> t - n - 1 & 1))
  634. }, e.getLengthInBits = function() {
  635. return t
  636. }, e.putBit = function(e) {
  637. var n = Math.floor(t / 8);
  638. r.length <= n && r.push(0), e && (r[n] |= 128 >>> t % 8), t += 1
  639. }, e
  640. },
  641. l = function(r) {
  642. var n = e.MODE_8BIT_BYTE,
  643. a = t.stringToBytes(r),
  644. o = {};
  645. return o.getMode = function() {
  646. return n
  647. }, o.getLength = function(r) {
  648. return a.length
  649. }, o.write = function(r) {
  650. for (var t = 0; t < a.length; t += 1) r.put(a[t], 8)
  651. }, o
  652. };
  653. return t
  654. }();
  655. t.c = {
  656. square: {
  657. data: function(r, e) {
  658. var n = e.context,
  659. a = e.cellSize;
  660. e.isDark(r.i, r.j) && (n.fillStyle = t.d, n.fillRect(r.x, r.y, a, a))
  661. }
  662. }
  663. }, t.e = function(r) {
  664. return t.c[r] || t.c.square
  665. }, t.d = "black", t.f = "white", t.prototype.a = function(r) {
  666. var e = this;
  667. r = e.g = i({
  668. typeNumber: 1,
  669. correctLevel: "M",
  670. foreground: t.d,
  671. background: null,
  672. data: "",
  673. effect: {},
  674. noAlpha: !0,
  675. reuseCanvas: null
  676. }, r);
  677. var n = e.h = {
  678. color: t.d,
  679. fontFamily: "Cursive",
  680. clearEdges: 0,
  681. margin: -1,
  682. size: .15
  683. },
  684. a = r.logo;
  685. a && (a.image || a.text) && i(n, a), (n.image || n.text) && n.margin < 0 && (n.margin = n.image ? 0 : 2), (n.image || n.text || "image" === r.effect.key) && (r.correctLevel = "H");
  686. var o = l(r.typeNumber, r.correctLevel);
  687. o.addData(r.data), o.make();
  688. var u = o.getModuleCount(),
  689. f = r.cellSize,
  690. g = r.size;
  691. f || g || (f = 2), f ? g = f * u : f = g / u, e.k = f, e.l = g, e.m = u, e.n = o
  692. }, t.prototype.o = function(r, t) {
  693. var e = this,
  694. n = e.m;
  695. return r >= 0 && r < n && t >= 0 && t < n && e.p(r * n + t) && e.n.isDark(r, t)
  696. }, t.prototype.b = function() {
  697. var r = this,
  698. e = r.g,
  699. o = r.m,
  700. i = Math.ceil(r.k),
  701. f = i * o,
  702. l = n(f, f),
  703. g = {
  704. cellSize: i,
  705. size: f,
  706. count: o,
  707. effect: e.effect,
  708. foreground: e.foreground
  709. };
  710. r.q(l), r.r(l, g), r.s(l);
  711. var c = r.t(g),
  712. h = c.getContext("2d");
  713. h.globalCompositeOperation = "destination-in", h.drawImage(l, 0, 0);
  714. var s = a(n(f, f), {
  715. cellSize: i,
  716. size: f,
  717. data: u(e.noAlpha ? t.f : null, e.background, c)
  718. }),
  719. v = r.h;
  720. v.canvas && s.getContext("2d").drawImage(v.canvas, v.x, v.y);
  721. var d = r.l,
  722. w = e.reuseCanvas;
  723. if (w ? w.width = w.height = d : f != d && (w = n(d, d)), w) {
  724. var p = w.getContext("2d");
  725. p.drawImage(s, 0, 0, d, d)
  726. } else w = s;
  727. return w
  728. }, t.prototype.t = function(r) {
  729. var e = this,
  730. o = r.cellSize,
  731. u = r.size,
  732. f = r.effect || {},
  733. l = t.e(f.key);
  734. return l.foreground ? l.foreground(i({
  735. mask: function() {
  736. var t = n(u, u);
  737. return e.r(t, {
  738. cellSize: o,
  739. count: r.count
  740. }), t
  741. }
  742. }, r)) : a(n(u, u), {
  743. cellSize: o,
  744. size: u,
  745. data: r.foreground
  746. })
  747. }, t.prototype.q = function(r) {
  748. var t, e, a, o = this,
  749. i = o.h,
  750. u = o.m,
  751. f = o.k,
  752. l = o.l,
  753. g = r.getContext("2d");
  754. if (i.image) t = i.image, e = t.naturalWidth || t.width, a = t.naturalHeight || t.height;
  755. else {
  756. if (!i.text) return;
  757. a = 100, t = "", i.fontStyle && (t += i.fontStyle + " "), t += a + "px " + i.fontFamily, g.font = t, e = g.measureText(i.text).width
  758. }
  759. t = e / a;
  760. var c = ~~ (Math.sqrt(Math.min(e * a / l / l, i.size) / t) * u),
  761. h = ~~ (t * c);
  762. (u - h) % 2 && h++, (u - c) % 2 && c++, t = Math.min((c * f - 2 * i.margin) / a, (h * f - 2 * i.margin) / e, 1), i.width = ~~ (t * e), i.height = ~~ (t * a), i.x = (l - i.width >> 1) - i.margin, i.y = (l - i.height >> 1) - i.margin, i.canvas = n(i.width + 2 * i.margin, i.height + 2 * i.margin);
  763. var s = i.canvas.getContext("2d");
  764. if (i.image) s.drawImage(i.image, i.margin, i.margin, i.width, i.height);
  765. else {
  766. var v = "";
  767. i.fontStyle && (v += i.fontStyle + " "), v += i.height + "px " + i.fontFamily, s.font = v, s.textAlign = "center", s.textBaseline = "middle", s.fillStyle = i.color, s.fillText(i.text, (i.width >> 1) + i.margin, (i.height >> 1) + i.margin)
  768. }
  769. o.u()
  770. }, t.prototype.r = function(r, e) {
  771. for (var n = this, a = e.cellSize, o = e.count, i = e.effect || {}, u = {
  772. cellSize: a,
  773. count: o,
  774. context: r.getContext("2d"),
  775. value: i.value || 0,
  776. isDark: n.o.bind(n)
  777. }, f = t.e(i.key), l = 0; l < o; l++) for (var g = 0; g < o; g++) f.data({
  778. i: l,
  779. j: g,
  780. x: g * a,
  781. y: l * a
  782. }, u)
  783. }, t.prototype.v = function(r, t, e) {
  784. return ~~ (r * e / 255 + t * (255 - e) / 255)
  785. }, t.prototype.u = function() {}, t.prototype.s = function(r) {}, t.prototype.p = function(r) {
  786. return !this.h.clearEdges
  787. };
  788. var g = r.Uint8Array || r.Array;
  789. return f.prototype = {
  790. prepare: function(r) {
  791. function t(r) {
  792. var t = l[r];
  793. if (!t) {
  794. var e = 4 * r,
  795. n = h.call(u.data, e, e + 4);
  796. t = a.isBackgroundColor(n) ? l[r] = 1 : l[r] = 2
  797. }
  798. return 1 === t
  799. }
  800. function e(r) {
  801. if (!f[r]) {
  802. for (var e = r % a.width, n = ~~ (r / a.width), o = a.margin + 1, i = Math.max(0, e - o + 1); i < e + o && i < a.width; i++) for (var u = Math.max(0, n - o + 1); u < n + o && u < a.height; u++) {
  803. var l = i - e,
  804. g = u - n;
  805. if (l * l + g * g < o * o && !t(i + u * a.width)) return void(f[r] = 2)
  806. }
  807. f[r] = 1, c.push(r)
  808. }
  809. }
  810. function n(r, t) {
  811. r % a.width && e(r - 1), t || e(r), (r + 1) % a.width && e(r + 1)
  812. }
  813. var a = this,
  814. o = r.getContext("2d");
  815. if (a.width = r.width, a.height = r.height, a.total = a.width * a.height, !a.nobg) {
  816. var i, u = o.getImageData(0, 0, a.width, a.height),
  817. f = a.data = new g(a.total),
  818. l = new g(a.total),
  819. c = [],
  820. h = [].slice;
  821. for (i = 0; i < a.width; i++) e(i), e(a.total - 1 - i);
  822. for (i = 0; i < a.height; i++) e(i * a.width), e((i + 1) * a.width - 1);
  823. for (var s = 0; s < c.length;) {
  824. var v = c[s];
  825. v > a.width && n(v - a.width), n(v, !0), v + a.width < a.total && n(v + a.width), s++
  826. }
  827. a.totalBackground = s
  828. }
  829. },
  830. isBackgroundColor: function(r) {
  831. return !r[3]
  832. },
  833. isBackground: function() {
  834. var r, t = arguments,
  835. e = this;
  836. if (1 == t.length) r = t[0];
  837. else {
  838. if (2 != t.length) {
  839. if (4 == t.length) {
  840. var n = t[0],
  841. a = t[1],
  842. o = n + t[2],
  843. i = a + t[3];
  844. n < 0 && (n = 0), a < 0 && (a = 0), o > e.width && (o = e.width), i > e.height && (i = e.height);
  845. for (var u = n; u < o; u++) for (var f = a; f < i; f++) if (!e.isBackground(u, f)) return !1;
  846. return !0
  847. }
  848. throw Error("Invalid index")
  849. }
  850. r = t[0] + t[1] * e.width
  851. }
  852. return !e.nobg && 1 === e.data[r]
  853. },
  854. clearBackground: function(r) {
  855. var t = this;
  856. if (r.width == t.width && r.height == t.height) {
  857. for (var e = r.getContext("2d"), n = e.getImageData(0, 0, t.width, t.height), a = 0; a < t.total; a++) if (t.isBackground(a)) {
  858. var o = 4 * a;
  859. n.data[o] = 0, n.data[o + 1] = 0, n.data[o + 2] = 0, n.data[o + 3] = 0
  860. }
  861. return e.putImageData(n, 0, 0), r
  862. }
  863. }
  864. }, t.prototype.u = function() {
  865. var r = this,
  866. t = r.h,
  867. e = r.m,
  868. n = r.k,
  869. a = t.edger = new f(t.canvas, {
  870. margin: t.margin,
  871. nobg: 2 == t.clearEdges
  872. });
  873. if (t.clearEdges) for (var o = r.w = new g(e * e), i = 0; i < e; i++) for (var u = 0; u < e; u++) o[i * e + u] = a.isBackground(u * n - t.x, i * n - t.y, n, n)
  874. }, t.prototype.s = function(r) {
  875. var t = this,
  876. e = t.h;
  877. if ((e.image || e.text) && !e.clearEdges) {
  878. var a = n(e.width + 2 * e.margin, e.height + 2 * e.margin),
  879. o = a.getContext("2d");
  880. o.fillStyle = "white", o.fillRect(0, 0, a.width, a.height), e.edger.clearBackground(a);
  881. var i = r.getContext("2d");
  882. i.globalCompositeOperation = "destination-out", i.drawImage(a, e.x, e.y)
  883. }
  884. }, t.prototype.p = function(r) {
  885. var t = this;
  886. return !t.h.clearEdges || t.w[r]
  887. }, !
  888. function() {
  889. function r(r, t, e, n, a, o) {
  890. o ? r.arcTo(t, e, n, a, o) : (r.lineTo(t, e), r.lineTo(n, a))
  891. }
  892. function e(e, n) {
  893. var a = e.x,
  894. o = e.y,
  895. i = n.cellSize,
  896. u = n.value * i / 2,
  897. f = n.context;
  898. n.isDark(e.i, e.j) && (f.fillStyle = t.d, f.beginPath(), f.moveTo(a + .5 * i, o), r(f, a + i, o, a + i, o + .5 * i, u), r(f, a + i, o + i, a + .5 * i, o + i, u), r(f, a, o + i, a, o + .5 * i, u), r(f, a, o, a + .5 * i, o, u), f.fill())
  899. }
  900. function o(t, e, n, a, o, i, u, f) {
  901. t.beginPath(), t.moveTo(e, n), r(t, a, o, i, u, f), t.lineTo(a, o), t.lineTo(e, n), t.fill()
  902. }
  903. function u(e, n) {
  904. var a = [0, 0, 0, 0],
  905. i = e.i,
  906. u = e.j,
  907. f = e.x,
  908. l = e.y,
  909. g = n.cellSize,
  910. c = n.value * g / 2,
  911. h = n.context;
  912. n.isDark(i - 1, u) && (a[0]++, a[1]++), n.isDark(i + 1, u) && (a[2]++, a[3]++), n.isDark(i, u - 1) && (a[0]++, a[3]++), n.isDark(i, u + 1) && (a[1]++, a[2]++), h.fillStyle = t.d, n.isDark(i, u) ? (n.isDark(i - 1, u - 1) && a[0]++, n.isDark(i - 1, u + 1) && a[1]++, n.isDark(i + 1, u + 1) && a[2]++, n.isDark(i + 1, u - 1) && a[3]++, h.beginPath(), h.moveTo(f + .5 * g, l), r(h, f + g, l, f + g, l + .5 * g, a[1] ? 0 : c), r(h, f + g, l + g, f + .5 * g, l + g, a[2] ? 0 : c), r(h, f, l + g, f, l + .5 * g, a[3] ? 0 : c), r(h, f, l, f + .5 * g, l, a[0] ? 0 : c), h.fill()) : (2 == a[0] && o(h, f, l + .5 * g, f, l, f + .5 * g, l, c), 2 == a[1] && o(h, f + .5 * g, l, f + g, l, f + g, l + .5 * g, c), 2 == a[2] && o(h, f + g, l + .5 * g, f + g, l + g, f + .5 * g, l + g, c), 2 == a[3] && o(h, f + .5 * g, l + g, f, l + g, f, l + .5 * g, c))
  913. }
  914. function f(r, e) {
  915. var n = r.i,
  916. a = r.j,
  917. o = r.x,
  918. i = r.y,
  919. u = e.context,
  920. f = e.cellSize,
  921. l = e.count;
  922. u.fillStyle = t.d;
  923. var g = .25;
  924. (n <= 7 && a <= 7 || n <= 7 && l - a - 1 <= 7 || l - n - 1 <= 7 && a <= 7 || n + 5 <= l && n + 9 >= l && a + 5 <= l && a + 9 >= l || 7 === n || 7 === a) && (g = 1 - .1 * e.value);
  925. var c = (1 - g) / 2;
  926. u.fillRect(o + c * f, i + c * f, g * f, g * f)
  927. }
  928. function l(r) {
  929. var e = r.cellSize,
  930. o = r.size,
  931. i = r.mask(),
  932. u = a(n(o, o), {
  933. cellSize: e,
  934. size: o,
  935. data: r.foreground
  936. }),
  937. f = u.getContext("2d");
  938. return f.globalCompositeOperation = "destination-in", f.drawImage(i, 0, 0), f.globalCompositeOperation = "destination-over", f.fillStyle = t.f, f.fillRect(0, 0, o, o), u
  939. }
  940. i(t.c, {
  941. round: {
  942. data: e
  943. },
  944. liquid: {
  945. data: u
  946. },
  947. image: {
  948. data: f,
  949. foreground: l
  950. }
  951. })
  952. }(), {
  953. canvas: e
  954. }
  955. });