slimsdk 0.1.55 → 0.2.1

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.
Files changed (90) hide show
  1. package/README.md +3 -5
  2. package/dist/desktop/index.css +0 -48
  3. package/dist/desktop/index.css.map +1 -1
  4. package/dist/desktop/index.d.ts +14 -13
  5. package/dist/desktop/index.js +1476 -1972
  6. package/dist/desktop/index.js.map +1 -1
  7. package/dist/docs-BHtSyl34.d.ts +10 -0
  8. package/dist/index-B4158M0u.d.ts +21 -0
  9. package/dist/index-BAQxKstM.d.ts +8 -0
  10. package/dist/index-BMqjxP9I.d.ts +11 -0
  11. package/dist/index-CD53Vh6h.d.ts +31 -0
  12. package/dist/index-COGi5mfY.d.ts +28 -0
  13. package/dist/index-COUeXLOQ.d.ts +3 -0
  14. package/dist/index-CoYHkkyT.d.ts +14 -0
  15. package/dist/{index-kr8P3eEW.d.ts → index-Cvng8f_u.d.ts} +10 -9
  16. package/dist/index-D5CUpF9v.d.ts +10 -0
  17. package/dist/index-DBhzpIiB.d.ts +32 -0
  18. package/dist/index-D_o5c-YA.d.ts +134 -0
  19. package/dist/index-DzKPF0ja.d.ts +14 -0
  20. package/dist/index-jVam7Sxi.d.ts +15 -0
  21. package/dist/index-uQOR5bdy.d.ts +20 -0
  22. package/dist/index.d.ts +1 -1
  23. package/dist/index.js +2 -2
  24. package/dist/index.js.map +1 -1
  25. package/dist/lib/index.d.ts +1 -1
  26. package/dist/lib/index.js +194 -1
  27. package/dist/lib/index.js.map +1 -1
  28. package/dist/mobile/index.css +0 -48
  29. package/dist/mobile/index.css.map +1 -1
  30. package/dist/mobile/index.d.ts +13 -12
  31. package/dist/mobile/index.js +542 -808
  32. package/dist/mobile/index.js.map +1 -1
  33. package/dist/mod/button/index.d.ts +1 -1
  34. package/dist/mod/button/index.js +2 -2
  35. package/dist/mod/button/index.js.map +1 -1
  36. package/dist/mod/cover/index.d.ts +1 -1
  37. package/dist/mod/cover/index.js +3 -3
  38. package/dist/mod/cover/index.js.map +1 -1
  39. package/dist/mod/dialog/index.d.ts +1 -1
  40. package/dist/mod/dialog/index.js +13 -13
  41. package/dist/mod/dialog/index.js.map +1 -1
  42. package/dist/mod/drawer/index.d.ts +1 -1
  43. package/dist/mod/drawer/index.js +8 -8
  44. package/dist/mod/drawer/index.js.map +1 -1
  45. package/dist/mod/drop/index.d.ts +1 -1
  46. package/dist/mod/drop/index.js +15 -15
  47. package/dist/mod/drop/index.js.map +1 -1
  48. package/dist/mod/index.d.ts +7 -7
  49. package/dist/mod/index.js +61 -59
  50. package/dist/mod/index.js.map +1 -1
  51. package/dist/mod/modal/index.d.ts +1 -1
  52. package/dist/mod/modal/index.js +12 -12
  53. package/dist/mod/modal/index.js.map +1 -1
  54. package/dist/mod/tabs/index.d.ts +1 -1
  55. package/dist/mod/tabs/index.js +8 -6
  56. package/dist/mod/tabs/index.js.map +1 -1
  57. package/dist/page/desktop/index.d.ts +3 -3
  58. package/dist/page/desktop/index.js +228 -801
  59. package/dist/page/desktop/index.js.map +1 -1
  60. package/dist/page/index.d.ts +7 -7
  61. package/dist/page/index.js +12 -12
  62. package/dist/page/index.js.map +1 -1
  63. package/dist/page/mobile/index.d.ts +2 -2
  64. package/dist/page/mobile/index.js +14 -14
  65. package/dist/page/mobile/index.js.map +1 -1
  66. package/dist/svchub/index.d.ts +2 -0
  67. package/dist/svchub/index.js +760 -0
  68. package/dist/svchub/index.js.map +1 -0
  69. package/dist/worker/hubworker.js +1 -1
  70. package/dist/worker/hubworker.js.map +1 -1
  71. package/package.json +7 -6
  72. package/dist/index-B2HHS23A.d.ts +0 -20
  73. package/dist/index-BQcJsVJ-.d.ts +0 -10
  74. package/dist/index-Bf_lg-oZ.d.ts +0 -339
  75. package/dist/index-ChdqOPJq.d.ts +0 -15
  76. package/dist/index-CzsSwSvp.d.ts +0 -21
  77. package/dist/index-D3tu8t6p.d.ts +0 -28
  78. package/dist/index-DQt71MNx.d.ts +0 -31
  79. package/dist/index-DZdXvqxA.d.ts +0 -10
  80. package/dist/index-DcvauYN8.d.ts +0 -14
  81. package/dist/index-Pd7FTiEW.d.ts +0 -32
  82. package/dist/index-QRbamarh.d.ts +0 -8
  83. package/dist/mod/global/index.d.ts +0 -57
  84. package/dist/mod/global/index.js +0 -117
  85. package/dist/mod/global/index.js.map +0 -1
  86. package/dist/mod/hwlink/index.d.ts +0 -3
  87. package/dist/mod/hwlink/index.js +0 -873
  88. package/dist/mod/hwlink/index.js.map +0 -1
  89. package/dist/mod/hwlink/style.css +0 -1134
  90. package/dist/mod/hwlink/style.css.map +0 -1
package/dist/lib/index.js CHANGED
@@ -433,7 +433,7 @@ __export(cookie_exports, {
433
433
  });
434
434
  var setItem = (key, val, exp) => {
435
435
  const d = /* @__PURE__ */ new Date();
436
- d.setTime(d.getTime() + exp * 24 * 60 * 60 * 1e3);
436
+ d.setTime(d.getTime() + 1e3 * exp);
437
437
  const expires = "expires=" + d.toUTCString();
438
438
  document.cookie = `${key}=${val};${expires};path=/`;
439
439
  };
@@ -544,6 +544,198 @@ function ThaiBahtText(input) {
544
544
  return convertFullMoney(`${input}`);
545
545
  }
546
546
  var thbText = ThaiBahtText;
547
+
548
+ // src/lib/md5.ts
549
+ function safeAdd(x, y) {
550
+ const lsw = (x & 65535) + (y & 65535);
551
+ const msw = (x >> 16) + (y >> 16) + (lsw >> 16);
552
+ return msw << 16 | lsw & 65535;
553
+ }
554
+ function bitRotateLeft(num, cnt) {
555
+ return num << cnt | num >>> 32 - cnt;
556
+ }
557
+ function md5cmn(q, a, b, x, s, t) {
558
+ return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);
559
+ }
560
+ function md5ff(a, b, c, d, x, s, t) {
561
+ return md5cmn(b & c | ~b & d, a, b, x, s, t);
562
+ }
563
+ function md5gg(a, b, c, d, x, s, t) {
564
+ return md5cmn(b & d | c & ~d, a, b, x, s, t);
565
+ }
566
+ function md5hh(a, b, c, d, x, s, t) {
567
+ return md5cmn(b ^ c ^ d, a, b, x, s, t);
568
+ }
569
+ function md5ii(a, b, c, d, x, s, t) {
570
+ return md5cmn(c ^ (b | ~d), a, b, x, s, t);
571
+ }
572
+ function binlMD5(x, len) {
573
+ x[len >> 5] |= 128 << len % 32;
574
+ x[(len + 64 >>> 9 << 4) + 14] = len;
575
+ let i;
576
+ let olda;
577
+ let oldb;
578
+ let oldc;
579
+ let oldd;
580
+ let a = 1732584193;
581
+ let b = -271733879;
582
+ let c = -1732584194;
583
+ let d = 271733878;
584
+ for (i = 0; i < x.length; i += 16) {
585
+ olda = a;
586
+ oldb = b;
587
+ oldc = c;
588
+ oldd = d;
589
+ a = md5ff(a, b, c, d, x[i], 7, -680876936);
590
+ d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);
591
+ c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);
592
+ b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);
593
+ a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);
594
+ d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);
595
+ c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);
596
+ b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);
597
+ a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);
598
+ d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);
599
+ c = md5ff(c, d, a, b, x[i + 10], 17, -42063);
600
+ b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);
601
+ a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);
602
+ d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);
603
+ c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);
604
+ b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);
605
+ a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);
606
+ d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);
607
+ c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);
608
+ b = md5gg(b, c, d, a, x[i], 20, -373897302);
609
+ a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);
610
+ d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);
611
+ c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);
612
+ b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);
613
+ a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);
614
+ d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);
615
+ c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);
616
+ b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);
617
+ a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);
618
+ d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);
619
+ c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);
620
+ b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);
621
+ a = md5hh(a, b, c, d, x[i + 5], 4, -378558);
622
+ d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);
623
+ c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);
624
+ b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);
625
+ a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);
626
+ d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);
627
+ c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);
628
+ b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);
629
+ a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);
630
+ d = md5hh(d, a, b, c, x[i], 11, -358537222);
631
+ c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);
632
+ b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);
633
+ a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);
634
+ d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);
635
+ c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);
636
+ b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);
637
+ a = md5ii(a, b, c, d, x[i], 6, -198630844);
638
+ d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);
639
+ c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);
640
+ b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);
641
+ a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);
642
+ d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);
643
+ c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);
644
+ b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);
645
+ a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);
646
+ d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);
647
+ c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);
648
+ b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);
649
+ a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);
650
+ d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);
651
+ c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);
652
+ b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);
653
+ a = safeAdd(a, olda);
654
+ b = safeAdd(b, oldb);
655
+ c = safeAdd(c, oldc);
656
+ d = safeAdd(d, oldd);
657
+ }
658
+ return [a, b, c, d];
659
+ }
660
+ function binl2rstr(input) {
661
+ let i;
662
+ let output = "";
663
+ const length32 = input.length * 32;
664
+ for (i = 0; i < length32; i += 8) {
665
+ output += String.fromCharCode(input[i >> 5] >>> i % 32 & 255);
666
+ }
667
+ return output;
668
+ }
669
+ function rstr2binl(input) {
670
+ let i;
671
+ const output = [];
672
+ output[(input.length >> 2) - 1] = void 0;
673
+ for (i = 0; i < output.length; i += 1) {
674
+ output[i] = 0;
675
+ }
676
+ const length8 = input.length * 8;
677
+ for (i = 0; i < length8; i += 8) {
678
+ output[i >> 5] |= (input.charCodeAt(i / 8) & 255) << i % 32;
679
+ }
680
+ return output;
681
+ }
682
+ function rstrMD5(s) {
683
+ return binl2rstr(binlMD5(rstr2binl(s), s.length * 8));
684
+ }
685
+ function rstrHMACMD5(key, data) {
686
+ let i;
687
+ let bkey = rstr2binl(key);
688
+ const ipad = [];
689
+ const opad = [];
690
+ ipad[15] = opad[15] = void 0;
691
+ if (bkey.length > 16) {
692
+ bkey = binlMD5(bkey, key.length * 8);
693
+ }
694
+ for (i = 0; i < 16; i += 1) {
695
+ ipad[i] = bkey[i] ^ 909522486;
696
+ opad[i] = bkey[i] ^ 1549556828;
697
+ }
698
+ const hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8);
699
+ return binl2rstr(binlMD5(opad.concat(hash), 512 + 128));
700
+ }
701
+ function rstr2hex(input) {
702
+ const hexTab = "0123456789abcdef";
703
+ let output = "";
704
+ let x;
705
+ let i;
706
+ for (i = 0; i < input.length; i += 1) {
707
+ x = input.charCodeAt(i);
708
+ output += hexTab.charAt(x >>> 4 & 15) + hexTab.charAt(x & 15);
709
+ }
710
+ return output;
711
+ }
712
+ function str2rstrUTF8(input) {
713
+ return decodeURIComponent(encodeURIComponent(input));
714
+ }
715
+ function rawMD5(s) {
716
+ return rstrMD5(str2rstrUTF8(s));
717
+ }
718
+ function hexMD5(s) {
719
+ return rstr2hex(rawMD5(s));
720
+ }
721
+ function rawHMACMD5(k, d) {
722
+ return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d));
723
+ }
724
+ function hexHMACMD5(k, d) {
725
+ return rstr2hex(rawHMACMD5(k, d));
726
+ }
727
+ function md5Hash(string, key, raw) {
728
+ if (!key) {
729
+ if (!raw) {
730
+ return hexMD5(string);
731
+ }
732
+ return rawMD5(string);
733
+ }
734
+ if (!raw) {
735
+ return hexHMACMD5(key, string);
736
+ }
737
+ return rawHMACMD5(key, string);
738
+ }
547
739
  export {
548
740
  FY_MONTH,
549
741
  FY_MONTH_SHORT,
@@ -563,6 +755,7 @@ export {
563
755
  getAge,
564
756
  isToday,
565
757
  jwtParse,
758
+ md5Hash,
566
759
  numFormat,
567
760
  setYear,
568
761
  shiftIndex,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/dateTime.ts","../../src/lib/utility.ts","../../src/lib/geoLocate.ts","../../src/lib/cookie.ts","../../src/lib/thbText.ts"],"sourcesContent":["/* dateTime */\n/*--------------------------------------------------------------------------------*/\nexport const TH_MONTH: string[] = [\n 'มกราคม', 'กุมภาพันธ์', 'มีนาคม', 'เมษายน', 'พฤษภาคม', 'มิถุนายน',\n 'กรกฎาคม', 'สิงหาคม', 'กันยายน', 'ตุลาคม', 'พฤศจิกายน', 'ธันวาคม',\n];\nexport const TH_MONTH_SHORT: string[] = [\n 'ม.ค.', 'ก.พ.', 'มี.ค.', 'เม.ย.', 'พ.ค.', 'มิ.ย.',\n 'ก.ค.', 'ส.ค.', 'ก.ย.', 'ต.ค.', 'พ.ย.', 'ธ.ค.',\n];\nexport const FY_MONTH: string[] = [\n 'ตุลาคม', 'พฤศจิกายน', 'ธันวาคม', 'มกราคม', 'กุมภาพันธ์', 'มีนาคม',\n 'เมษายน', 'พฤษภาคม', 'มิถุนายน', 'กรกฎาคม', 'สิงหาคม', 'กันยายน',\n];\nexport const FY_MONTH_SHORT: string[] = [\n 'ต.ค.', 'พ.ย.', 'ธ.ค.', 'ม.ค.', 'ก.พ.', 'มี.ค.',\n 'เม.ย.', 'พ.ค.', 'มิ.ย.', 'ก.ค.', 'ส.ค.', 'ก.ย.',\n];\nexport const PERIOD_TEXT: string[] = ['', 'เวรดึก', 'เวรเช้า', 'เวรบ่าย'];\n// time unix now\nexport const curTime = (): number => new Date().getTime();\n/*--------------------------------------------------------------------------------*/\nexport const curDate = (): string => {\n const dt = new Date();\n const yy = dt.getFullYear();\n const mm = String(dt.getMonth() + 1).padStart(2, '0');\n const dd = String(dt.getDate()).padStart(2, '0');\n return `${yy}-${mm}-${dd}`;\n};\n/*--------------------------------------------------------------------------------*/\nexport const curMonth = (): string => {\n const dt = new Date();\n const yy = dt.getFullYear();\n const mm = String(dt.getMonth() + 1).padStart(2, '0');\n return `${yy}-${mm}`;\n};\n/*--------------------------------------------------------------------------------*/\nexport const curYear = (yearType = ''): number => {\n const dt = new Date();\n const mm = dt.getMonth() + 1;\n if ((yearType == 'fyear' || yearType == 'fy') && mm > 9) {\n return dt.getFullYear() + 1; // ปีงบประมาณ\n }\n return dt.getFullYear(); // ปีปฏิทิน\n};\n/*--------------------------------------------------------------------------------*/\nexport const timeToStr = (unixtime: number, format = ''): string => {\n if (typeof unixtime != 'number') {\n return '';\n }\n const unix = new Date(Number(unixtime));\n const yy = unix.getFullYear();\n const mm = String(unix.getMonth() + 1).padStart(2, '0');\n const dd = String(unix.getDate()).padStart(2, '0');\n const H = String(unix.getHours()).padStart(2, '0');\n const M = String(unix.getMinutes()).padStart(2, '0');\n const S = String(unix.getSeconds()).padStart(2, '0');\n if (format == 'date') {\n return `${yy}-${mm}-${dd}`;\n }\n if (format == 'time') {\n return `${H}:${M}:${S}`;\n }\n return `${yy}-${mm}-${dd} ${H}:${M}:${S}`;\n};\n/*--------------------------------------------------------------------------------*/\nexport const shiftIndex = (unixtime = 0) => {\n if (typeof unixtime != 'number') {\n return { num: 0, text: '' };\n }\n const unix = unixtime ? new Date(unixtime) : new Date();\n const H = unix.getHours();\n if (H >= 0 && H < 8) return { num: 1, text: PERIOD_TEXT[1] };\n if (H >= 8 && H < 16) return { num: 2, text: PERIOD_TEXT[2] };\n if (H >= 16) return { num: 3, text: PERIOD_TEXT[3] };\n return { num: 0, text: '' };\n};\n/*--------------------------------------------------------------------------------*/\nexport const setYear = (el: HTMLSelectElement, min = 2020, txt = '') => {\n const dt = new Date();\n let year = dt.getFullYear();\n const month = dt.getMonth() + 1;\n if (month > 6 && month <= 12) {\n year++;\n }\n el.innerHTML = '<option value=\"\">- เลือก -</option>';\n for (let y = min; y <= year; y++) {\n const option = document.createElement('option');\n option.value = `${y}`;\n option.text = `${txt} ${y + 543}`;\n el.appendChild(option);\n }\n};\n/*--------------------------------------------------------------------------------*/\nexport const thaiDate = (date: number | string, format = 0): string => {\n if (typeof date == 'string' && date.indexOf('0000-00-00') >= 0) {\n return '';\n }\n if (typeof date == 'string') {\n date = date.trim();\n date = date.replace(' ', 'T');\n }\n\n const dt = new Date(date);\n if (isNaN(dt.getTime())) return '';\n\n const yy = dt.getFullYear() + 543;\n const mm = String(dt.getMonth() + 1).padStart(2, '0');\n const dd = String(dt.getDate()).padStart(2, '0');\n const H = String(dt.getHours()).padStart(2, '0');\n const M = String(dt.getMinutes()).padStart(2, '0');\n const S = String(dt.getSeconds()).padStart(2, '0');\n\n // 01/01/2500\n if (format == 0) return `${dd}/${mm}/${yy}`;\n // 01/01/2500 00:00\n if (format == 1) return `${dd}/${mm}/${yy} ${H}:${M}`;\n // 01/01/2500 00:00:00\n if (format == 2) return `${dd}/${mm}/${yy} ${H}:${M}:${S}`;\n\n // 01 มกราคม 2500\n if (format == 10) return `${dd} ${TH_MONTH[Number(mm) - 1]} ${yy}`;\n // 01 ม.ค. 65\n if (format == 11) return `${dd} ${TH_MONTH_SHORT[Number(mm) - 1]} ${String(yy).slice(-2)}`;\n // 01 มกราคม 2500 เวลา 00:00 น.\n if (format == 12) return `${dd} ${TH_MONTH[Number(mm) - 1]} ${yy} เวลา ${H}:${M} น.`;\n // 01 ม.ค. 65 00:00\n if (format == 13) return `${dd} ${TH_MONTH_SHORT[Number(mm) - 1]} ${String(yy).slice(-2)} ${H}:${M}`;\n\n // มกราคม 2500\n if (format == 20) return `${TH_MONTH[Number(mm) - 1]} ${yy}`;\n // ม.ค. 2500\n if (format == 21) return `${TH_MONTH_SHORT[Number(mm) - 1]} ${yy}`;\n // ม.ค. 65\n if (format == 22) return `${TH_MONTH_SHORT[Number(mm) - 1]} ${String(yy).slice(-2)}`;\n\n return '';\n};\n/*--------------------------------------------------------------------------------*/\nexport const dateDiff = (start: string, stop: string): number => {\n if (!start || start.indexOf('0000-00-00') >= 0) {\n return 0;\n }\n if (!stop || stop.indexOf('0000-00-00') >= 0) {\n return 0;\n }\n const [y1, m1, d1] = start.split('-');\n const [y2, m2, d2] = stop.split('-');\n const date1 = new Date(Number(y1), Number(m1) - 1, Number(d1)).getTime();\n const date2 = new Date(Number(y2), Number(m2) - 1, Number(d2)).getTime();\n return Math.round((date2 - date1) / (1000 * 60 * 60 * 24));\n};\n/*--------------------------------------------------------------------------------*/\nexport const timeDiff = (start: string, stop: string) => {\n if (!start || start.indexOf('0000-00-00') >= 0) {\n return { h: 0, m: 0, s: 0 };\n }\n if (!stop || stop.indexOf('0000-00-00') >= 0) {\n return { h: 0, m: 0, s: 0 };\n }\n start = start.replace(' ', 'T');\n stop = stop.replace(' ', 'T');\n const date1 = new Date(start);\n const date2 = new Date(stop);\n let msec = date2.getTime() - date1.getTime();\n\n const hh = Math.floor(msec / 1000 / 60 / 60);\n msec -= hh * 1000 * 60 * 60;\n const mm = Math.floor(msec / 1000 / 60);\n msec -= mm * 1000 * 60;\n const ss = Math.floor(msec / 1000);\n msec -= ss * 1000;\n return { h: hh, m: mm, s: ss };\n};\n/*--------------------------------------------------------------------------------*/\nexport const getAge = (date: string) => {\n if (!date || date.indexOf('0000-00-00') >= 0) {\n return { years: 0, months: 0, days: 0 };\n }\n const now = new Date();\n const nowYear = now.getFullYear();\n const nowMonth = now.getMonth();\n const nowDate = now.getDate();\n\n const [yy, mm, dd] = date.split('-');\n const birth = new Date(Number(yy), Number(mm) - 1, Number(dd));\n const birthYear = birth.getFullYear();\n const birthMonth = birth.getMonth();\n const birthDate = birth.getDate();\n\n let yearAge = nowYear - birthYear;\n let monthAge = 0;\n let dateAge = 0;\n\n if (nowMonth >= birthMonth) {\n monthAge = nowMonth - birthMonth;\n } else {\n yearAge--;\n monthAge = 12 + nowMonth - birthMonth;\n }\n\n if (nowDate >= birthDate) {\n dateAge = nowDate - birthDate;\n } else {\n monthAge--;\n dateAge = 31 + nowDate - birthDate;\n if (monthAge < 0) {\n monthAge = 11;\n yearAge--;\n }\n }\n\n return {\n years: yearAge,\n months: monthAge,\n days: dateAge,\n };\n};\n/*--------------------------------------------------------------------------------*/\nexport const ageToBirth = (year: number, month: number, day: number): string => {\n const y = Number(year);\n const m = Number(month);\n const d = Number(day);\n const dt = new Date(\n new Date().getFullYear() - y,\n new Date().getMonth() - m,\n new Date().getDate() - d,\n );\n const yy = dt.getFullYear();\n const mm = String(dt.getMonth() + 1).padStart(2, '0');\n const dd = String(dt.getDate()).padStart(2, '0');\n return `${yy}-${mm}-${dd}`; // 1957-10-10\n};\n/*--------------------------------------------------------------------------------*/\nexport const toDbDate = (date: string): string => {\n if ((!date) || (date.indexOf('0000-00-00') >= 0)) {\n return '';\n }\n const dt = new Date(date);\n const yy = dt.getFullYear() - 543;\n const mm = String(dt.getMonth() + 1).padStart(2, '0');\n const dd = String(dt.getDate()).padStart(2, '0');\n return `${yy}-${mm}-${dd}`;\n};\n/*--------------------------------------------------------------------------------*/\nexport const toThaiDate = (date: string): string => {\n if ((!date) || (date.indexOf('0000-00-00') >= 0)) {\n return '';\n }\n const dt = new Date(date);\n const yy = dt.getFullYear() + 543;\n const mm = String(dt.getMonth() + 1).padStart(2, '0');\n const dd = String(dt.getDate()).padStart(2, '0');\n return `${yy}-${mm}-${dd}`;\n};\n/*--------------------------------------------------------------------------------*/\nexport const isToday = (date: string): boolean => {\n const input = new Date(date);\n const today = new Date();\n if (input.setHours(0, 0, 0, 0) == today.setHours(0, 0, 0, 0)) {\n return true;\n }\n return false;\n};\n/*--------------------------------------------------------------------------------*/\n","/* utility */\nexport const THAI_DIGIT = ['๐', '๑', '๒', '๓', '๔', '๕', '๖', '๗', '๘', '๙'];\n/*--------------------------------------------------------------------------------*/\nexport const thaiDigit = (input: number | string): string => {\n return input.toString()\n .replace(/\\d/g, (digit: string) => THAI_DIGIT[parseInt(digit)]);\n};\n/*--------------------------------------------------------------------------------*/\nexport const cidCheck = (cid: string): boolean => {\n if (!Number(cid)) return false;\n if (cid.substring(0, 1) == '0') return false;\n if (cid.length !== 13) return false;\n let sum = 0;\n for (let i = 0; i < 12; i++) {\n sum += parseFloat(cid.charAt(i)) * (13 - i);\n }\n return (11 - sum % 11) % 10 === parseFloat(cid.charAt(12));\n};\n/*--------------------------------------------------------------------------------*/\nexport const winPopup = (\n width: number,\n height: number,\n name: string,\n url: string,\n) => {\n const left = (screen.width - width) / 2;\n const top = (screen.height - height) / 2;\n let opt = `width=${width}, height=${height},`;\n opt += `left=${left}, top=${top}`;\n return window.open(url, name, opt);\n};\n/*--------------------------------------------------------------------------------*/\nexport const strCheck = (str: string): string => {\n let out = String(str);\n out = out.replaceAll(\"'\", \"\\\\'\");\n out = out.replaceAll('\"', '\\\\\"');\n out = out.trim();\n return out;\n};\n/*--------------------------------------------------------------------------------*/\nexport const zeroFill = (\n num: number,\n opts?: {\n min?: number;\n max?: number;\n char?: string;\n }\n): string => {\n const n = Number(num);\n const min = opts?.min ? Number(opts.min) : 0;\n const max = opts?.max ? Number(opts.max) : 0;\n const char = opts?.char || opts?.char == '' ? opts.char : '-';\n if (n > 0) {\n return n.toLocaleString(undefined, {\n minimumFractionDigits: min,\n maximumFractionDigits: max,\n });\n } else return char;\n};\n/*--------------------------------------------------------------------------------*/\nexport const numFormat = (num: number, fixed = 0): string => {\n const n = Number(num);\n const f = Number(fixed);\n let out: string = '';\n if (n >= 10 ** 3 && n < 10 ** 6) {\n out = (n / 1000).toFixed(f) + ' K';\n } else if (n >= 10 ** 6) {\n out = (n / 1000000).toFixed(f) + ' M';\n }\n return out;\n};\n/*--------------------------------------------------------------------------------*/\nexport const strFormat = (value: string, pattern: string): string => {\n let i = 0;\n const v = value.toString();\n return pattern.replace(/#/g, () => {\n const out = v[i] ? v[i] : '#';\n i++;\n return out;\n });\n};\n/*--------------------------------------------------------------------------------*/\nexport const toBase64 = (file: File) => new Promise<string>((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result as string);\n reader.onerror = err => reject(err);\n});\n/*--------------------------------------------------------------------------------*/\nexport type JwtPack = {\n iss: string;\n iat: number;\n exp: number;\n agcy: number;\n acct: number;\n type: number;\n role: number;\n};\nexport const jwtParse = (token: string): JwtPack | null => {\n try { return JSON.parse(atob(token.split('.')[1])); }\n catch { return null; }\n};\n/*--------------------------------------------------------------------------------*/\n","/* geoLocate */\n/*--------------------------------------------------------------------------------*/\ntype GeoCoords = {\n position: {\n lat: number;\n lng: number;\n };\n accuracy: number;\n heading: number;\n speed: number;\n timestamp: number;\n};\n/*--------------------------------------------------------------------------------*/\nexport const getPosition = (params: {\n accuracy: number;\n timeout: number;\n}) => new Promise<GeoCoords>((resolve, reject) => {\n const timeout = params.timeout ? params.timeout : 10000; // 10 sec\n const acrLimit = params.accuracy ? params.accuracy : 10; // 10 meter\n const buff: GeoCoords[] = [];\n if (navigator.geolocation) {\n // set timeout\n const Tcount = setTimeout(() => {\n navigator.geolocation.clearWatch(watchId);\n clearTimeout(Tcount);\n // return best accuracy\n if (buff.length) {\n buff.sort((a, b) => a.accuracy - b.accuracy);\n resolve(buff[0]);\n }\n else {\n reject('position not found');\n }\n }, timeout);\n // get position\n const watchId = watchPosition((pos) => {\n const lat = pos.coords.latitude;\n const lng = pos.coords.longitude;\n const acr = pos.coords.accuracy;\n const head = pos.coords.heading ? pos.coords.heading : 0;\n const speed = pos.coords.speed ? pos.coords.speed : 0;\n const time = pos.timestamp;\n buff.push({\n position: { lat: lat, lng: lng },\n accuracy: acr,\n heading: head,\n speed: speed,\n timestamp: time,\n });\n // accuracy check\n if (acr <= acrLimit) {\n navigator.geolocation.clearWatch(watchId);\n clearTimeout(Tcount);\n resolve({\n position: { lat: lat, lng: lng },\n accuracy: acr,\n heading: head,\n speed: speed,\n timestamp: time,\n });\n }\n }, (err) => {\n navigator.geolocation.clearWatch(watchId);\n clearTimeout(Tcount);\n reject(err);\n });\n }\n else reject('not support geolocation');\n});\n/*--------------------------------------------------------------------------------*/\nexport const watchPosition = (\n success: PositionCallback,\n error: PositionErrorCallback\n) => {\n if (navigator.geolocation) {\n return navigator.geolocation.watchPosition(success, error, {\n enableHighAccuracy: true,\n timeout: 5000,\n maximumAge: 0,\n });\n }\n return 0;\n};\n/*--------------------------------------------------------------------------------*/\nexport const toAddress = async (position: { lat: number; lng: number; }) => {\n const key = 'AIzaSyDsKimgLKSw9DAz_j8Z0HDkLTmyGhxmNiU';\n const latlng = `${position.lat},${position.lng}`;\n let url = `https://maps.googleapis.com/maps/api/geocode/json`;\n url += `?latlng=${latlng}&key=${key}`;\n // fetch\n let address = '';\n await fetch(url).then(response => response.json()).then(resp => {\n const data = resp.results;\n if (data.length) address = data[0].formatted_address;\n });\n return address;\n};\n/*--------------------------------------------------------------------------------*/\n","/* cookie */\n/*--------------------------------------------------------------------------------*/\nexport const setItem = (key: string, val: string, exp: number) => {\n const d = new Date();\n d.setTime(d.getTime() + (exp * 24 * 60 * 60 * 1000));\n const expires = \"expires=\" + d.toUTCString();\n document.cookie = `${key}=${val};${expires};path=/`;\n};\n/*--------------------------------------------------------------------------------*/\nexport const getItem = (key: string): string => {\n const pair = document.cookie.split('; ').find(x => x.startsWith(key + '='));\n if (pair) return pair.split('=')[1];\n else return '';\n};\n/*--------------------------------------------------------------------------------*/\nexport const removeItem = (key: string) => {\n document.cookie = `${key}=;expires=Thu, 01 Jan 1970 00:00:00 UTC;path=/;`;\n};\n/*--------------------------------------------------------------------------------*/\nexport const clear = () => {\n document.cookie.split(';').forEach(cookie => {\n const eqPos = cookie.indexOf('=');\n const name = eqPos > -1 ? cookie.substring(0, eqPos) : cookie;\n removeItem(name);\n });\n};\n/*--------------------------------------------------------------------------------*/\n","/* thbText */\nconst MAX_POSITION = 6;\nconst UNIT_POSITION = 0;\nconst TEN_POSITION = 1;\n\nconst PRIMARY_UNIT = 'บาท';\nconst SECONDARY_UNIT = 'สตางค์';\nconst WHOLE_NUMBER_TEXT = 'ถ้วน';\nconst NUMBER_TEXTS = ['ศูนย์', 'หนึ่ง', 'สอง', 'สาม', 'สี่', 'ห้า', 'หก', 'เจ็ด', 'แปด', 'เก้า', 'สิบ'];\nconst UNIT_TEXTS = ['สิบ', 'ร้อย', 'พัน', 'หมื่น', 'แสน', 'ล้าน'];\n\nconst getIntegerDigits = (numberStringInput: string): number => parseInt(numberStringInput.split('.')[0], 10);\nconst getFractionalDigits = (numberStringInput: string): number => parseInt(numberStringInput.split('.')[1], 10);\nconst hasFractionalDigits = (numberInput: number | undefined) => numberInput !== undefined && numberInput !== 0;\n\nfunction isZeroValue(numberStringInput: string): boolean;\nfunction isZeroValue(numberInput: number): boolean;\nfunction isZeroValue(input: string | number): boolean {\n return parseInt(`${input}`, 10) === 0;\n}\n\nconst isUnitPosition = (position: number) => position == UNIT_POSITION;\nconst isTenPosition = (position: number) => position % MAX_POSITION == TEN_POSITION;\nconst isMillionsPosition = (position: number) => (position >= MAX_POSITION && position % MAX_POSITION == 0);\nconst isLastPosition = (position: number, lengthOfDigits: number) => position + 1 < lengthOfDigits;\n\nconst reverseNumber = (number: number): string => {\n const numberStr = number.toString();\n return numberStr.split('').reverse().join('');\n};\n\nconst getBathUnit = (position: number, number: string) => {\n let unitText = '';\n if (!isUnitPosition(position)) {\n unitText = UNIT_TEXTS[Math.abs(position - 1) % MAX_POSITION];\n }\n if (isZeroValue(number) && !isMillionsPosition(position)) {\n unitText = '';\n }\n return unitText;\n};\n\nconst getBathText = (position: number, number: string, lengthOfDigits: number) => {\n const _number: number = parseInt(number, 10);\n let numberText = NUMBER_TEXTS[_number];\n if (isZeroValue(_number)) {\n return '';\n }\n if (isTenPosition(position) && _number == 1) {\n numberText = '';\n }\n if (isTenPosition(position) && _number == 2) {\n numberText = 'ยี่';\n }\n if (isMillionsPosition(position) && isLastPosition(position, lengthOfDigits) && _number == 1) {\n numberText = 'เอ็ด';\n }\n if (lengthOfDigits > 1 && isUnitPosition(position) && _number == 1) {\n numberText = 'เอ็ด';\n }\n return numberText;\n};\n\nconst convert = (numberInput: number): string => {\n const numberReverse: string = reverseNumber(numberInput);\n let textOutput = '';\n numberReverse.split('').forEach((number: string, i) => {\n textOutput = `${getBathText(i, number, numberReverse.length)}${getBathUnit(i, number)}${textOutput}`;\n });\n return textOutput;\n};\n\nconst parseFloatWithPrecision = (number: string, precision = 2): string => {\n const numberFloatStr = parseFloat(number).toString().split('.');\n const integerUnitStr = numberFloatStr[0];\n const fractionalUnitStr = (numberFloatStr.length == 2) ? numberFloatStr[1].substring(0, precision) : '00';\n return parseFloat(`${integerUnitStr}.${fractionalUnitStr}`).toFixed(precision);\n};\n\nconst convertFullMoney = (numberInput: string) => {\n const numberStr: string = parseFloatWithPrecision(numberInput);\n const integerDigits: number = getIntegerDigits(numberStr);\n const fractionalDigits: number = getFractionalDigits(numberStr);\n const intTextOutput = convert(integerDigits);\n const textOutput = [];\n if (intTextOutput) {\n textOutput.push(`${[intTextOutput, PRIMARY_UNIT].join('')}`);\n }\n if (intTextOutput && !hasFractionalDigits(fractionalDigits)) {\n textOutput.push(WHOLE_NUMBER_TEXT);\n }\n if (hasFractionalDigits(fractionalDigits) && convert(fractionalDigits)) {\n textOutput.push(`${[convert(fractionalDigits), SECONDARY_UNIT].join('')}`);\n }\n return textOutput.join('');\n};\n\nfunction ThaiBahtText(stringNumberInput: string): string;\nfunction ThaiBahtText(numberInput: number): string;\nfunction ThaiBahtText(input: string | number): string {\n if (isNaN(Number(`${input}`))) {\n throw new TypeError('Invalid input. Expected a number or a string representing a number.');\n }\n return convertFullMoney(`${input}`);\n}\n\nexport const thbText = ThaiBahtText;\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/lib/dateTime.ts","../../src/lib/utility.ts","../../src/lib/geoLocate.ts","../../src/lib/cookie.ts","../../src/lib/thbText.ts","../../src/lib/md5.ts"],"sourcesContent":["/* dateTime */\n/*--------------------------------------------------------------------------------*/\nexport const TH_MONTH: string[] = [\n 'มกราคม', 'กุมภาพันธ์', 'มีนาคม', 'เมษายน', 'พฤษภาคม', 'มิถุนายน',\n 'กรกฎาคม', 'สิงหาคม', 'กันยายน', 'ตุลาคม', 'พฤศจิกายน', 'ธันวาคม',\n];\nexport const TH_MONTH_SHORT: string[] = [\n 'ม.ค.', 'ก.พ.', 'มี.ค.', 'เม.ย.', 'พ.ค.', 'มิ.ย.',\n 'ก.ค.', 'ส.ค.', 'ก.ย.', 'ต.ค.', 'พ.ย.', 'ธ.ค.',\n];\nexport const FY_MONTH: string[] = [\n 'ตุลาคม', 'พฤศจิกายน', 'ธันวาคม', 'มกราคม', 'กุมภาพันธ์', 'มีนาคม',\n 'เมษายน', 'พฤษภาคม', 'มิถุนายน', 'กรกฎาคม', 'สิงหาคม', 'กันยายน',\n];\nexport const FY_MONTH_SHORT: string[] = [\n 'ต.ค.', 'พ.ย.', 'ธ.ค.', 'ม.ค.', 'ก.พ.', 'มี.ค.',\n 'เม.ย.', 'พ.ค.', 'มิ.ย.', 'ก.ค.', 'ส.ค.', 'ก.ย.',\n];\nexport const PERIOD_TEXT: string[] = ['', 'เวรดึก', 'เวรเช้า', 'เวรบ่าย'];\n// time unix now\nexport const curTime = (): number => new Date().getTime();\n/*--------------------------------------------------------------------------------*/\nexport const curDate = (): string => {\n const dt = new Date();\n const yy = dt.getFullYear();\n const mm = String(dt.getMonth() + 1).padStart(2, '0');\n const dd = String(dt.getDate()).padStart(2, '0');\n return `${yy}-${mm}-${dd}`;\n};\n/*--------------------------------------------------------------------------------*/\nexport const curMonth = (): string => {\n const dt = new Date();\n const yy = dt.getFullYear();\n const mm = String(dt.getMonth() + 1).padStart(2, '0');\n return `${yy}-${mm}`;\n};\n/*--------------------------------------------------------------------------------*/\nexport const curYear = (yearType = ''): number => {\n const dt = new Date();\n const mm = dt.getMonth() + 1;\n if ((yearType == 'fyear' || yearType == 'fy') && mm > 9) {\n return dt.getFullYear() + 1; // ปีงบประมาณ\n }\n return dt.getFullYear(); // ปีปฏิทิน\n};\n/*--------------------------------------------------------------------------------*/\nexport const timeToStr = (unixtime: number, format = ''): string => {\n if (typeof unixtime != 'number') {\n return '';\n }\n const unix = new Date(Number(unixtime));\n const yy = unix.getFullYear();\n const mm = String(unix.getMonth() + 1).padStart(2, '0');\n const dd = String(unix.getDate()).padStart(2, '0');\n const H = String(unix.getHours()).padStart(2, '0');\n const M = String(unix.getMinutes()).padStart(2, '0');\n const S = String(unix.getSeconds()).padStart(2, '0');\n if (format == 'date') {\n return `${yy}-${mm}-${dd}`;\n }\n if (format == 'time') {\n return `${H}:${M}:${S}`;\n }\n return `${yy}-${mm}-${dd} ${H}:${M}:${S}`;\n};\n/*--------------------------------------------------------------------------------*/\nexport const shiftIndex = (unixtime = 0) => {\n if (typeof unixtime != 'number') {\n return { num: 0, text: '' };\n }\n const unix = unixtime ? new Date(unixtime) : new Date();\n const H = unix.getHours();\n if (H >= 0 && H < 8) return { num: 1, text: PERIOD_TEXT[1] };\n if (H >= 8 && H < 16) return { num: 2, text: PERIOD_TEXT[2] };\n if (H >= 16) return { num: 3, text: PERIOD_TEXT[3] };\n return { num: 0, text: '' };\n};\n/*--------------------------------------------------------------------------------*/\nexport const setYear = (el: HTMLSelectElement, min = 2020, txt = '') => {\n const dt = new Date();\n let year = dt.getFullYear();\n const month = dt.getMonth() + 1;\n if (month > 6 && month <= 12) {\n year++;\n }\n el.innerHTML = '<option value=\"\">- เลือก -</option>';\n for (let y = min; y <= year; y++) {\n const option = document.createElement('option');\n option.value = `${y}`;\n option.text = `${txt} ${y + 543}`;\n el.appendChild(option);\n }\n};\n/*--------------------------------------------------------------------------------*/\nexport const thaiDate = (date: number | string, format = 0): string => {\n if (typeof date == 'string' && date.indexOf('0000-00-00') >= 0) {\n return '';\n }\n if (typeof date == 'string') {\n date = date.trim();\n date = date.replace(' ', 'T');\n }\n\n const dt = new Date(date);\n if (isNaN(dt.getTime())) return '';\n\n const yy = dt.getFullYear() + 543;\n const mm = String(dt.getMonth() + 1).padStart(2, '0');\n const dd = String(dt.getDate()).padStart(2, '0');\n const H = String(dt.getHours()).padStart(2, '0');\n const M = String(dt.getMinutes()).padStart(2, '0');\n const S = String(dt.getSeconds()).padStart(2, '0');\n\n // 01/01/2500\n if (format == 0) return `${dd}/${mm}/${yy}`;\n // 01/01/2500 00:00\n if (format == 1) return `${dd}/${mm}/${yy} ${H}:${M}`;\n // 01/01/2500 00:00:00\n if (format == 2) return `${dd}/${mm}/${yy} ${H}:${M}:${S}`;\n\n // 01 มกราคม 2500\n if (format == 10) return `${dd} ${TH_MONTH[Number(mm) - 1]} ${yy}`;\n // 01 ม.ค. 65\n if (format == 11) return `${dd} ${TH_MONTH_SHORT[Number(mm) - 1]} ${String(yy).slice(-2)}`;\n // 01 มกราคม 2500 เวลา 00:00 น.\n if (format == 12) return `${dd} ${TH_MONTH[Number(mm) - 1]} ${yy} เวลา ${H}:${M} น.`;\n // 01 ม.ค. 65 00:00\n if (format == 13) return `${dd} ${TH_MONTH_SHORT[Number(mm) - 1]} ${String(yy).slice(-2)} ${H}:${M}`;\n\n // มกราคม 2500\n if (format == 20) return `${TH_MONTH[Number(mm) - 1]} ${yy}`;\n // ม.ค. 2500\n if (format == 21) return `${TH_MONTH_SHORT[Number(mm) - 1]} ${yy}`;\n // ม.ค. 65\n if (format == 22) return `${TH_MONTH_SHORT[Number(mm) - 1]} ${String(yy).slice(-2)}`;\n\n return '';\n};\n/*--------------------------------------------------------------------------------*/\nexport const dateDiff = (start: string, stop: string): number => {\n if (!start || start.indexOf('0000-00-00') >= 0) {\n return 0;\n }\n if (!stop || stop.indexOf('0000-00-00') >= 0) {\n return 0;\n }\n const [y1, m1, d1] = start.split('-');\n const [y2, m2, d2] = stop.split('-');\n const date1 = new Date(Number(y1), Number(m1) - 1, Number(d1)).getTime();\n const date2 = new Date(Number(y2), Number(m2) - 1, Number(d2)).getTime();\n return Math.round((date2 - date1) / (1000 * 60 * 60 * 24));\n};\n/*--------------------------------------------------------------------------------*/\nexport const timeDiff = (start: string, stop: string) => {\n if (!start || start.indexOf('0000-00-00') >= 0) {\n return { h: 0, m: 0, s: 0 };\n }\n if (!stop || stop.indexOf('0000-00-00') >= 0) {\n return { h: 0, m: 0, s: 0 };\n }\n start = start.replace(' ', 'T');\n stop = stop.replace(' ', 'T');\n const date1 = new Date(start);\n const date2 = new Date(stop);\n let msec = date2.getTime() - date1.getTime();\n\n const hh = Math.floor(msec / 1000 / 60 / 60);\n msec -= hh * 1000 * 60 * 60;\n const mm = Math.floor(msec / 1000 / 60);\n msec -= mm * 1000 * 60;\n const ss = Math.floor(msec / 1000);\n msec -= ss * 1000;\n return { h: hh, m: mm, s: ss };\n};\n/*--------------------------------------------------------------------------------*/\nexport const getAge = (date: string) => {\n if (!date || date.indexOf('0000-00-00') >= 0) {\n return { years: 0, months: 0, days: 0 };\n }\n const now = new Date();\n const nowYear = now.getFullYear();\n const nowMonth = now.getMonth();\n const nowDate = now.getDate();\n\n const [yy, mm, dd] = date.split('-');\n const birth = new Date(Number(yy), Number(mm) - 1, Number(dd));\n const birthYear = birth.getFullYear();\n const birthMonth = birth.getMonth();\n const birthDate = birth.getDate();\n\n let yearAge = nowYear - birthYear;\n let monthAge = 0;\n let dateAge = 0;\n\n if (nowMonth >= birthMonth) {\n monthAge = nowMonth - birthMonth;\n } else {\n yearAge--;\n monthAge = 12 + nowMonth - birthMonth;\n }\n\n if (nowDate >= birthDate) {\n dateAge = nowDate - birthDate;\n } else {\n monthAge--;\n dateAge = 31 + nowDate - birthDate;\n if (monthAge < 0) {\n monthAge = 11;\n yearAge--;\n }\n }\n\n return {\n years: yearAge,\n months: monthAge,\n days: dateAge,\n };\n};\n/*--------------------------------------------------------------------------------*/\nexport const ageToBirth = (year: number, month: number, day: number): string => {\n const y = Number(year);\n const m = Number(month);\n const d = Number(day);\n const dt = new Date(\n new Date().getFullYear() - y,\n new Date().getMonth() - m,\n new Date().getDate() - d,\n );\n const yy = dt.getFullYear();\n const mm = String(dt.getMonth() + 1).padStart(2, '0');\n const dd = String(dt.getDate()).padStart(2, '0');\n return `${yy}-${mm}-${dd}`; // 1957-10-10\n};\n/*--------------------------------------------------------------------------------*/\nexport const toDbDate = (date: string): string => {\n if ((!date) || (date.indexOf('0000-00-00') >= 0)) {\n return '';\n }\n const dt = new Date(date);\n const yy = dt.getFullYear() - 543;\n const mm = String(dt.getMonth() + 1).padStart(2, '0');\n const dd = String(dt.getDate()).padStart(2, '0');\n return `${yy}-${mm}-${dd}`;\n};\n/*--------------------------------------------------------------------------------*/\nexport const toThaiDate = (date: string): string => {\n if ((!date) || (date.indexOf('0000-00-00') >= 0)) {\n return '';\n }\n const dt = new Date(date);\n const yy = dt.getFullYear() + 543;\n const mm = String(dt.getMonth() + 1).padStart(2, '0');\n const dd = String(dt.getDate()).padStart(2, '0');\n return `${yy}-${mm}-${dd}`;\n};\n/*--------------------------------------------------------------------------------*/\nexport const isToday = (date: string): boolean => {\n const input = new Date(date);\n const today = new Date();\n if (input.setHours(0, 0, 0, 0) == today.setHours(0, 0, 0, 0)) {\n return true;\n }\n return false;\n};\n/*--------------------------------------------------------------------------------*/\n","/* utility */\nexport const THAI_DIGIT = ['๐', '๑', '๒', '๓', '๔', '๕', '๖', '๗', '๘', '๙'];\n/*--------------------------------------------------------------------------------*/\nexport const thaiDigit = (input: number | string): string => {\n return input.toString()\n .replace(/\\d/g, (digit: string) => THAI_DIGIT[parseInt(digit)]);\n};\n/*--------------------------------------------------------------------------------*/\nexport const cidCheck = (cid: string): boolean => {\n if (!Number(cid)) return false;\n if (cid.substring(0, 1) == '0') return false;\n if (cid.length !== 13) return false;\n let sum = 0;\n for (let i = 0; i < 12; i++) {\n sum += parseFloat(cid.charAt(i)) * (13 - i);\n }\n return (11 - sum % 11) % 10 === parseFloat(cid.charAt(12));\n};\n/*--------------------------------------------------------------------------------*/\nexport const winPopup = (\n width: number,\n height: number,\n name: string,\n url: string,\n) => {\n const left = (screen.width - width) / 2;\n const top = (screen.height - height) / 2;\n let opt = `width=${width}, height=${height},`;\n opt += `left=${left}, top=${top}`;\n return window.open(url, name, opt);\n};\n/*--------------------------------------------------------------------------------*/\nexport const strCheck = (str: string): string => {\n let out = String(str);\n out = out.replaceAll(\"'\", \"\\\\'\");\n out = out.replaceAll('\"', '\\\\\"');\n out = out.trim();\n return out;\n};\n/*--------------------------------------------------------------------------------*/\nexport const zeroFill = (\n num: number,\n opts?: {\n min?: number;\n max?: number;\n char?: string;\n }\n): string => {\n const n = Number(num);\n const min = opts?.min ? Number(opts.min) : 0;\n const max = opts?.max ? Number(opts.max) : 0;\n const char = opts?.char || opts?.char == '' ? opts.char : '-';\n if (n > 0) {\n return n.toLocaleString(undefined, {\n minimumFractionDigits: min,\n maximumFractionDigits: max,\n });\n } else return char;\n};\n/*--------------------------------------------------------------------------------*/\nexport const numFormat = (num: number, fixed = 0): string => {\n const n = Number(num);\n const f = Number(fixed);\n let out: string = '';\n if (n >= 10 ** 3 && n < 10 ** 6) {\n out = (n / 1000).toFixed(f) + ' K';\n } else if (n >= 10 ** 6) {\n out = (n / 1000000).toFixed(f) + ' M';\n }\n return out;\n};\n/*--------------------------------------------------------------------------------*/\nexport const strFormat = (value: string, pattern: string): string => {\n let i = 0;\n const v = value.toString();\n return pattern.replace(/#/g, () => {\n const out = v[i] ? v[i] : '#';\n i++;\n return out;\n });\n};\n/*--------------------------------------------------------------------------------*/\nexport const toBase64 = (file: File) => new Promise<string>((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result as string);\n reader.onerror = err => reject(err);\n});\n/*--------------------------------------------------------------------------------*/\nexport type JwtClaims = {\n iss: string;\n aud: string;\n iat: number;\n exp: number;\n sub: number;\n};\nexport const jwtParse = (token: string): JwtClaims | null => {\n try { return JSON.parse(atob(token.split('.')[1])); }\n catch { return null; }\n};\n/*--------------------------------------------------------------------------------*/\n","/* geoLocate */\n/*--------------------------------------------------------------------------------*/\ntype GeoCoords = {\n position: {\n lat: number;\n lng: number;\n };\n accuracy: number;\n heading: number;\n speed: number;\n timestamp: number;\n};\n/*--------------------------------------------------------------------------------*/\nexport const getPosition = (params: {\n accuracy: number;\n timeout: number;\n}) => new Promise<GeoCoords>((resolve, reject) => {\n const timeout = params.timeout ? params.timeout : 10000; // 10 sec\n const acrLimit = params.accuracy ? params.accuracy : 10; // 10 meter\n const buff: GeoCoords[] = [];\n if (navigator.geolocation) {\n // set timeout\n const Tcount = setTimeout(() => {\n navigator.geolocation.clearWatch(watchId);\n clearTimeout(Tcount);\n // return best accuracy\n if (buff.length) {\n buff.sort((a, b) => a.accuracy - b.accuracy);\n resolve(buff[0]);\n }\n else {\n reject('position not found');\n }\n }, timeout);\n // get position\n const watchId = watchPosition((pos) => {\n const lat = pos.coords.latitude;\n const lng = pos.coords.longitude;\n const acr = pos.coords.accuracy;\n const head = pos.coords.heading ? pos.coords.heading : 0;\n const speed = pos.coords.speed ? pos.coords.speed : 0;\n const time = pos.timestamp;\n buff.push({\n position: { lat: lat, lng: lng },\n accuracy: acr,\n heading: head,\n speed: speed,\n timestamp: time,\n });\n // accuracy check\n if (acr <= acrLimit) {\n navigator.geolocation.clearWatch(watchId);\n clearTimeout(Tcount);\n resolve({\n position: { lat: lat, lng: lng },\n accuracy: acr,\n heading: head,\n speed: speed,\n timestamp: time,\n });\n }\n }, (err) => {\n navigator.geolocation.clearWatch(watchId);\n clearTimeout(Tcount);\n reject(err);\n });\n }\n else reject('not support geolocation');\n});\n/*--------------------------------------------------------------------------------*/\nexport const watchPosition = (\n success: PositionCallback,\n error: PositionErrorCallback\n) => {\n if (navigator.geolocation) {\n return navigator.geolocation.watchPosition(success, error, {\n enableHighAccuracy: true,\n timeout: 5000,\n maximumAge: 0,\n });\n }\n return 0;\n};\n/*--------------------------------------------------------------------------------*/\nexport const toAddress = async (position: { lat: number; lng: number; }) => {\n const key = 'AIzaSyDsKimgLKSw9DAz_j8Z0HDkLTmyGhxmNiU';\n const latlng = `${position.lat},${position.lng}`;\n let url = `https://maps.googleapis.com/maps/api/geocode/json`;\n url += `?latlng=${latlng}&key=${key}`;\n // fetch\n let address = '';\n await fetch(url).then(response => response.json()).then(resp => {\n const data = resp.results;\n if (data.length) address = data[0].formatted_address;\n });\n return address;\n};\n/*--------------------------------------------------------------------------------*/\n","/* cookie */\n/*--------------------------------------------------------------------------------*/\nexport const setItem = (key: string, val: string, exp: number) => {\n const d = new Date();\n d.setTime(d.getTime() + (1000 * exp)); // seconds\n const expires = \"expires=\" + d.toUTCString();\n document.cookie = `${key}=${val};${expires};path=/`;\n};\n/*--------------------------------------------------------------------------------*/\nexport const getItem = (key: string): string => {\n const pair = document.cookie.split('; ').find(x => x.startsWith(key + '='));\n if (pair) return pair.split('=')[1];\n else return '';\n};\n/*--------------------------------------------------------------------------------*/\nexport const removeItem = (key: string) => {\n document.cookie = `${key}=;expires=Thu, 01 Jan 1970 00:00:00 UTC;path=/;`;\n};\n/*--------------------------------------------------------------------------------*/\nexport const clear = () => {\n document.cookie.split(';').forEach(cookie => {\n const eqPos = cookie.indexOf('=');\n const name = eqPos > -1 ? cookie.substring(0, eqPos) : cookie;\n removeItem(name);\n });\n};\n/*--------------------------------------------------------------------------------*/\n","/* thbText */\nconst MAX_POSITION = 6;\nconst UNIT_POSITION = 0;\nconst TEN_POSITION = 1;\n\nconst PRIMARY_UNIT = 'บาท';\nconst SECONDARY_UNIT = 'สตางค์';\nconst WHOLE_NUMBER_TEXT = 'ถ้วน';\nconst NUMBER_TEXTS = ['ศูนย์', 'หนึ่ง', 'สอง', 'สาม', 'สี่', 'ห้า', 'หก', 'เจ็ด', 'แปด', 'เก้า', 'สิบ'];\nconst UNIT_TEXTS = ['สิบ', 'ร้อย', 'พัน', 'หมื่น', 'แสน', 'ล้าน'];\n\nconst getIntegerDigits = (numberStringInput: string): number => parseInt(numberStringInput.split('.')[0], 10);\nconst getFractionalDigits = (numberStringInput: string): number => parseInt(numberStringInput.split('.')[1], 10);\nconst hasFractionalDigits = (numberInput: number | undefined) => numberInput !== undefined && numberInput !== 0;\n\nfunction isZeroValue(numberStringInput: string): boolean;\nfunction isZeroValue(numberInput: number): boolean;\nfunction isZeroValue(input: string | number): boolean {\n return parseInt(`${input}`, 10) === 0;\n}\n\nconst isUnitPosition = (position: number) => position == UNIT_POSITION;\nconst isTenPosition = (position: number) => position % MAX_POSITION == TEN_POSITION;\nconst isMillionsPosition = (position: number) => (position >= MAX_POSITION && position % MAX_POSITION == 0);\nconst isLastPosition = (position: number, lengthOfDigits: number) => position + 1 < lengthOfDigits;\n\nconst reverseNumber = (number: number): string => {\n const numberStr = number.toString();\n return numberStr.split('').reverse().join('');\n};\n\nconst getBathUnit = (position: number, number: string) => {\n let unitText = '';\n if (!isUnitPosition(position)) {\n unitText = UNIT_TEXTS[Math.abs(position - 1) % MAX_POSITION];\n }\n if (isZeroValue(number) && !isMillionsPosition(position)) {\n unitText = '';\n }\n return unitText;\n};\n\nconst getBathText = (position: number, number: string, lengthOfDigits: number) => {\n const _number: number = parseInt(number, 10);\n let numberText = NUMBER_TEXTS[_number];\n if (isZeroValue(_number)) {\n return '';\n }\n if (isTenPosition(position) && _number == 1) {\n numberText = '';\n }\n if (isTenPosition(position) && _number == 2) {\n numberText = 'ยี่';\n }\n if (isMillionsPosition(position) && isLastPosition(position, lengthOfDigits) && _number == 1) {\n numberText = 'เอ็ด';\n }\n if (lengthOfDigits > 1 && isUnitPosition(position) && _number == 1) {\n numberText = 'เอ็ด';\n }\n return numberText;\n};\n\nconst convert = (numberInput: number): string => {\n const numberReverse: string = reverseNumber(numberInput);\n let textOutput = '';\n numberReverse.split('').forEach((number: string, i) => {\n textOutput = `${getBathText(i, number, numberReverse.length)}${getBathUnit(i, number)}${textOutput}`;\n });\n return textOutput;\n};\n\nconst parseFloatWithPrecision = (number: string, precision = 2): string => {\n const numberFloatStr = parseFloat(number).toString().split('.');\n const integerUnitStr = numberFloatStr[0];\n const fractionalUnitStr = (numberFloatStr.length == 2) ? numberFloatStr[1].substring(0, precision) : '00';\n return parseFloat(`${integerUnitStr}.${fractionalUnitStr}`).toFixed(precision);\n};\n\nconst convertFullMoney = (numberInput: string) => {\n const numberStr: string = parseFloatWithPrecision(numberInput);\n const integerDigits: number = getIntegerDigits(numberStr);\n const fractionalDigits: number = getFractionalDigits(numberStr);\n const intTextOutput = convert(integerDigits);\n const textOutput = [];\n if (intTextOutput) {\n textOutput.push(`${[intTextOutput, PRIMARY_UNIT].join('')}`);\n }\n if (intTextOutput && !hasFractionalDigits(fractionalDigits)) {\n textOutput.push(WHOLE_NUMBER_TEXT);\n }\n if (hasFractionalDigits(fractionalDigits) && convert(fractionalDigits)) {\n textOutput.push(`${[convert(fractionalDigits), SECONDARY_UNIT].join('')}`);\n }\n return textOutput.join('');\n};\n\nfunction ThaiBahtText(stringNumberInput: string): string;\nfunction ThaiBahtText(numberInput: number): string;\nfunction ThaiBahtText(input: string | number): string {\n if (isNaN(Number(`${input}`))) {\n throw new TypeError('Invalid input. Expected a number or a string representing a number.');\n }\n return convertFullMoney(`${input}`);\n}\n\nexport const thbText = ThaiBahtText;\n","/* md5 */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nfunction safeAdd(x: number, y: number) {\n const lsw = (x & 0xffff) + (y & 0xffff);\n const msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 0xffff);\n}\n\nfunction bitRotateLeft(num: number, cnt: number) {\n return (num << cnt) | (num >>> (32 - cnt));\n}\n\nfunction md5cmn(q: number, a: number, b: number, x: number, s: number, t: number) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n}\n\nfunction md5ff(a: number, b: number, c: number, d: number, x: number, s: number, t: number) {\n return md5cmn((b & c) | (~b & d), a, b, x, s, t);\n}\n\nfunction md5gg(a: number, b: number, c: number, d: number, x: number, s: number, t: number) {\n return md5cmn((b & d) | (c & ~d), a, b, x, s, t);\n}\n\nfunction md5hh(a: number, b: number, c: number, d: number, x: number, s: number, t: number) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t);\n}\n\nfunction md5ii(a: number, b: number, c: number, d: number, x: number, s: number, t: number) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\nfunction binlMD5(x: number[], len: number) {\n x[len >> 5] |= 0x80 << len % 32;\n x[(((len + 64) >>> 9) << 4) + 14] = len;\n\n let i;\n let olda;\n let oldb;\n let oldc;\n let oldd;\n let a = 1732584193;\n let b = -271733879;\n let c = -1732584194;\n let d = 271733878;\n\n for (i = 0; i < x.length; i += 16) {\n olda = a;\n oldb = b;\n oldc = c;\n oldd = d;\n\n a = md5ff(a, b, c, d, x[i], 7, -680876936);\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5gg(b, c, d, a, x[i], 20, -373897302);\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5hh(d, a, b, c, x[i], 11, -358537222);\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n\n a = md5ii(a, b, c, d, x[i], 6, -198630844);\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n\n a = safeAdd(a, olda);\n b = safeAdd(b, oldb);\n c = safeAdd(c, oldc);\n d = safeAdd(d, oldd);\n }\n return [a, b, c, d];\n}\n\nfunction binl2rstr(input: number[]) {\n let i;\n let output = '';\n const length32 = input.length * 32;\n for (i = 0; i < length32; i += 8) {\n output += String.fromCharCode((input[i >> 5] >>> i % 32) & 0xff);\n }\n return output;\n}\n\nfunction rstr2binl(input: string) {\n let i;\n const output: any = [];\n output[(input.length >> 2) - 1] = undefined;\n for (i = 0; i < output.length; i += 1) {\n output[i] = 0;\n }\n const length8 = input.length * 8;\n for (i = 0; i < length8; i += 8) {\n output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << i % 32;\n }\n return output;\n}\n\nfunction rstrMD5(s: string) {\n return binl2rstr(binlMD5(rstr2binl(s), s.length * 8));\n}\n\nfunction rstrHMACMD5(key: string, data: string) {\n let i;\n let bkey = rstr2binl(key);\n const ipad: any = [];\n const opad: any = [];\n ipad[15] = opad[15] = undefined;\n if (bkey.length > 16) {\n bkey = binlMD5(bkey, key.length * 8);\n }\n for (i = 0; i < 16; i += 1) {\n ipad[i] = bkey[i] ^ 0x36363636;\n opad[i] = bkey[i] ^ 0x5c5c5c5c;\n }\n const hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8);\n return binl2rstr(binlMD5(opad.concat(hash), 512 + 128));\n}\n\nfunction rstr2hex(input: string) {\n const hexTab = '0123456789abcdef';\n let output = '';\n let x;\n let i;\n for (i = 0; i < input.length; i += 1) {\n x = input.charCodeAt(i);\n output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f);\n }\n return output;\n}\n\nfunction str2rstrUTF8(input: string) {\n return decodeURIComponent(encodeURIComponent(input));\n}\n\nfunction rawMD5(s: string) {\n return rstrMD5(str2rstrUTF8(s));\n}\n\nfunction hexMD5(s: string) {\n return rstr2hex(rawMD5(s));\n}\n\nfunction rawHMACMD5(k: string, d: string) {\n return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d));\n}\n\nfunction hexHMACMD5(k: string, d: string) {\n return rstr2hex(rawHMACMD5(k, d));\n}\n\nexport function md5Hash(string: string, key?: string, raw?: string) {\n if (!key) {\n if (!raw) {\n return hexMD5(string);\n }\n return rawMD5(string);\n }\n if (!raw) {\n return hexHMACMD5(key, string);\n }\n return rawHMACMD5(key, string);\n}"],"mappings":";;;;;;;AAEO,IAAM,WAAqB;AAAA,EAC9B;AAAA,EAAU;AAAA,EAAc;AAAA,EAAU;AAAA,EAAU;AAAA,EAAW;AAAA,EACvD;AAAA,EAAW;AAAA,EAAW;AAAA,EAAW;AAAA,EAAU;AAAA,EAAa;AAC5D;AACO,IAAM,iBAA2B;AAAA,EACpC;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAS;AAAA,EAAS;AAAA,EAAQ;AAAA,EAC1C;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAC5C;AACO,IAAM,WAAqB;AAAA,EAC9B;AAAA,EAAU;AAAA,EAAa;AAAA,EAAW;AAAA,EAAU;AAAA,EAAc;AAAA,EAC1D;AAAA,EAAU;AAAA,EAAW;AAAA,EAAY;AAAA,EAAW;AAAA,EAAW;AAC3D;AACO,IAAM,iBAA2B;AAAA,EACpC;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EACxC;AAAA,EAAS;AAAA,EAAQ;AAAA,EAAS;AAAA,EAAQ;AAAA,EAAQ;AAC9C;AACO,IAAM,cAAwB,CAAC,IAAI,wCAAU,8CAAW,4CAAS;AAEjE,IAAM,UAAU,OAAc,oBAAI,KAAK,GAAE,QAAQ;AAEjD,IAAM,UAAU,MAAc;AACjC,QAAM,KAAK,oBAAI,KAAK;AACpB,QAAM,KAAK,GAAG,YAAY;AAC1B,QAAM,KAAK,OAAO,GAAG,SAAS,IAAI,CAAC,EAAE,SAAS,GAAG,GAAG;AACpD,QAAM,KAAK,OAAO,GAAG,QAAQ,CAAC,EAAE,SAAS,GAAG,GAAG;AAC/C,SAAO,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE;AAC5B;AAEO,IAAM,WAAW,MAAc;AAClC,QAAM,KAAK,oBAAI,KAAK;AACpB,QAAM,KAAK,GAAG,YAAY;AAC1B,QAAM,KAAK,OAAO,GAAG,SAAS,IAAI,CAAC,EAAE,SAAS,GAAG,GAAG;AACpD,SAAO,GAAG,EAAE,IAAI,EAAE;AACtB;AAEO,IAAM,UAAU,CAAC,WAAW,OAAe;AAC9C,QAAM,KAAK,oBAAI,KAAK;AACpB,QAAM,KAAK,GAAG,SAAS,IAAI;AAC3B,OAAK,YAAY,WAAW,YAAY,SAAS,KAAK,GAAG;AACrD,WAAO,GAAG,YAAY,IAAI;AAAA,EAC9B;AACA,SAAO,GAAG,YAAY;AAC1B;AAEO,IAAM,YAAY,CAAC,UAAkB,SAAS,OAAe;AAChE,MAAI,OAAO,YAAY,UAAU;AAC7B,WAAO;AAAA,EACX;AACA,QAAM,OAAO,IAAI,KAAK,OAAO,QAAQ,CAAC;AACtC,QAAM,KAAK,KAAK,YAAY;AAC5B,QAAM,KAAK,OAAO,KAAK,SAAS,IAAI,CAAC,EAAE,SAAS,GAAG,GAAG;AACtD,QAAM,KAAK,OAAO,KAAK,QAAQ,CAAC,EAAE,SAAS,GAAG,GAAG;AACjD,QAAM,IAAI,OAAO,KAAK,SAAS,CAAC,EAAE,SAAS,GAAG,GAAG;AACjD,QAAM,IAAI,OAAO,KAAK,WAAW,CAAC,EAAE,SAAS,GAAG,GAAG;AACnD,QAAM,IAAI,OAAO,KAAK,WAAW,CAAC,EAAE,SAAS,GAAG,GAAG;AACnD,MAAI,UAAU,QAAQ;AAClB,WAAO,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE;AAAA,EAC5B;AACA,MAAI,UAAU,QAAQ;AAClB,WAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;AAAA,EACzB;AACA,SAAO,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3C;AAEO,IAAM,aAAa,CAAC,WAAW,MAAM;AACxC,MAAI,OAAO,YAAY,UAAU;AAC7B,WAAO,EAAE,KAAK,GAAG,MAAM,GAAG;AAAA,EAC9B;AACA,QAAM,OAAO,WAAW,IAAI,KAAK,QAAQ,IAAI,oBAAI,KAAK;AACtD,QAAM,IAAI,KAAK,SAAS;AACxB,MAAI,KAAK,KAAK,IAAI,EAAG,QAAO,EAAE,KAAK,GAAG,MAAM,YAAY,CAAC,EAAE;AAC3D,MAAI,KAAK,KAAK,IAAI,GAAI,QAAO,EAAE,KAAK,GAAG,MAAM,YAAY,CAAC,EAAE;AAC5D,MAAI,KAAK,GAAI,QAAO,EAAE,KAAK,GAAG,MAAM,YAAY,CAAC,EAAE;AACnD,SAAO,EAAE,KAAK,GAAG,MAAM,GAAG;AAC9B;AAEO,IAAM,UAAU,CAAC,IAAuB,MAAM,MAAM,MAAM,OAAO;AACpE,QAAM,KAAK,oBAAI,KAAK;AACpB,MAAI,OAAO,GAAG,YAAY;AAC1B,QAAM,QAAQ,GAAG,SAAS,IAAI;AAC9B,MAAI,QAAQ,KAAK,SAAS,IAAI;AAC1B;AAAA,EACJ;AACA,KAAG,YAAY;AACf,WAAS,IAAI,KAAK,KAAK,MAAM,KAAK;AAC9B,UAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,WAAO,QAAQ,GAAG,CAAC;AACnB,WAAO,OAAO,GAAG,GAAG,IAAI,IAAI,GAAG;AAC/B,OAAG,YAAY,MAAM;AAAA,EACzB;AACJ;AAEO,IAAM,WAAW,CAAC,MAAuB,SAAS,MAAc;AACnE,MAAI,OAAO,QAAQ,YAAY,KAAK,QAAQ,YAAY,KAAK,GAAG;AAC5D,WAAO;AAAA,EACX;AACA,MAAI,OAAO,QAAQ,UAAU;AACzB,WAAO,KAAK,KAAK;AACjB,WAAO,KAAK,QAAQ,KAAK,GAAG;AAAA,EAChC;AAEA,QAAM,KAAK,IAAI,KAAK,IAAI;AACxB,MAAI,MAAM,GAAG,QAAQ,CAAC,EAAG,QAAO;AAEhC,QAAM,KAAK,GAAG,YAAY,IAAI;AAC9B,QAAM,KAAK,OAAO,GAAG,SAAS,IAAI,CAAC,EAAE,SAAS,GAAG,GAAG;AACpD,QAAM,KAAK,OAAO,GAAG,QAAQ,CAAC,EAAE,SAAS,GAAG,GAAG;AAC/C,QAAM,IAAI,OAAO,GAAG,SAAS,CAAC,EAAE,SAAS,GAAG,GAAG;AAC/C,QAAM,IAAI,OAAO,GAAG,WAAW,CAAC,EAAE,SAAS,GAAG,GAAG;AACjD,QAAM,IAAI,OAAO,GAAG,WAAW,CAAC,EAAE,SAAS,GAAG,GAAG;AAGjD,MAAI,UAAU,EAAG,QAAO,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE;AAEzC,MAAI,UAAU,EAAG,QAAO,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;AAEnD,MAAI,UAAU,EAAG,QAAO,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AAGxD,MAAI,UAAU,GAAI,QAAO,GAAG,EAAE,IAAI,SAAS,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE;AAEhE,MAAI,UAAU,GAAI,QAAO,GAAG,EAAE,IAAI,eAAe,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC;AAExF,MAAI,UAAU,GAAI,QAAO,GAAG,EAAE,IAAI,SAAS,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,6BAAS,CAAC,IAAI,CAAC;AAE/E,MAAI,UAAU,GAAI,QAAO,GAAG,EAAE,IAAI,eAAe,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;AAGlG,MAAI,UAAU,GAAI,QAAO,GAAG,SAAS,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE;AAE1D,MAAI,UAAU,GAAI,QAAO,GAAG,eAAe,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE;AAEhE,MAAI,UAAU,GAAI,QAAO,GAAG,eAAe,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC;AAElF,SAAO;AACX;AAEO,IAAM,WAAW,CAAC,OAAe,SAAyB;AAC7D,MAAI,CAAC,SAAS,MAAM,QAAQ,YAAY,KAAK,GAAG;AAC5C,WAAO;AAAA,EACX;AACA,MAAI,CAAC,QAAQ,KAAK,QAAQ,YAAY,KAAK,GAAG;AAC1C,WAAO;AAAA,EACX;AACA,QAAM,CAAC,IAAI,IAAI,EAAE,IAAI,MAAM,MAAM,GAAG;AACpC,QAAM,CAAC,IAAI,IAAI,EAAE,IAAI,KAAK,MAAM,GAAG;AACnC,QAAM,QAAQ,IAAI,KAAK,OAAO,EAAE,GAAG,OAAO,EAAE,IAAI,GAAG,OAAO,EAAE,CAAC,EAAE,QAAQ;AACvE,QAAM,QAAQ,IAAI,KAAK,OAAO,EAAE,GAAG,OAAO,EAAE,IAAI,GAAG,OAAO,EAAE,CAAC,EAAE,QAAQ;AACvE,SAAO,KAAK,OAAO,QAAQ,UAAU,MAAO,KAAK,KAAK,GAAG;AAC7D;AAEO,IAAM,WAAW,CAAC,OAAe,SAAiB;AACrD,MAAI,CAAC,SAAS,MAAM,QAAQ,YAAY,KAAK,GAAG;AAC5C,WAAO,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE;AAAA,EAC9B;AACA,MAAI,CAAC,QAAQ,KAAK,QAAQ,YAAY,KAAK,GAAG;AAC1C,WAAO,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE;AAAA,EAC9B;AACA,UAAQ,MAAM,QAAQ,KAAK,GAAG;AAC9B,SAAO,KAAK,QAAQ,KAAK,GAAG;AAC5B,QAAM,QAAQ,IAAI,KAAK,KAAK;AAC5B,QAAM,QAAQ,IAAI,KAAK,IAAI;AAC3B,MAAI,OAAO,MAAM,QAAQ,IAAI,MAAM,QAAQ;AAE3C,QAAM,KAAK,KAAK,MAAM,OAAO,MAAO,KAAK,EAAE;AAC3C,UAAQ,KAAK,MAAO,KAAK;AACzB,QAAM,KAAK,KAAK,MAAM,OAAO,MAAO,EAAE;AACtC,UAAQ,KAAK,MAAO;AACpB,QAAM,KAAK,KAAK,MAAM,OAAO,GAAI;AACjC,UAAQ,KAAK;AACb,SAAO,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG;AACjC;AAEO,IAAM,SAAS,CAAC,SAAiB;AACpC,MAAI,CAAC,QAAQ,KAAK,QAAQ,YAAY,KAAK,GAAG;AAC1C,WAAO,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,EAAE;AAAA,EAC1C;AACA,QAAM,MAAM,oBAAI,KAAK;AACrB,QAAM,UAAU,IAAI,YAAY;AAChC,QAAM,WAAW,IAAI,SAAS;AAC9B,QAAM,UAAU,IAAI,QAAQ;AAE5B,QAAM,CAAC,IAAI,IAAI,EAAE,IAAI,KAAK,MAAM,GAAG;AACnC,QAAM,QAAQ,IAAI,KAAK,OAAO,EAAE,GAAG,OAAO,EAAE,IAAI,GAAG,OAAO,EAAE,CAAC;AAC7D,QAAM,YAAY,MAAM,YAAY;AACpC,QAAM,aAAa,MAAM,SAAS;AAClC,QAAM,YAAY,MAAM,QAAQ;AAEhC,MAAI,UAAU,UAAU;AACxB,MAAI,WAAW;AACf,MAAI,UAAU;AAEd,MAAI,YAAY,YAAY;AACxB,eAAW,WAAW;AAAA,EAC1B,OAAO;AACH;AACA,eAAW,KAAK,WAAW;AAAA,EAC/B;AAEA,MAAI,WAAW,WAAW;AACtB,cAAU,UAAU;AAAA,EACxB,OAAO;AACH;AACA,cAAU,KAAK,UAAU;AACzB,QAAI,WAAW,GAAG;AACd,iBAAW;AACX;AAAA,IACJ;AAAA,EACJ;AAEA,SAAO;AAAA,IACH,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,MAAM;AAAA,EACV;AACJ;AAEO,IAAM,aAAa,CAAC,MAAc,OAAe,QAAwB;AAC5E,QAAM,IAAI,OAAO,IAAI;AACrB,QAAM,IAAI,OAAO,KAAK;AACtB,QAAM,IAAI,OAAO,GAAG;AACpB,QAAM,KAAK,IAAI;AAAA,KACX,oBAAI,KAAK,GAAE,YAAY,IAAI;AAAA,KAC3B,oBAAI,KAAK,GAAE,SAAS,IAAI;AAAA,KACxB,oBAAI,KAAK,GAAE,QAAQ,IAAI;AAAA,EAC3B;AACA,QAAM,KAAK,GAAG,YAAY;AAC1B,QAAM,KAAK,OAAO,GAAG,SAAS,IAAI,CAAC,EAAE,SAAS,GAAG,GAAG;AACpD,QAAM,KAAK,OAAO,GAAG,QAAQ,CAAC,EAAE,SAAS,GAAG,GAAG;AAC/C,SAAO,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE;AAC5B;AAEO,IAAM,WAAW,CAAC,SAAyB;AAC9C,MAAK,CAAC,QAAU,KAAK,QAAQ,YAAY,KAAK,GAAI;AAC9C,WAAO;AAAA,EACX;AACA,QAAM,KAAK,IAAI,KAAK,IAAI;AACxB,QAAM,KAAK,GAAG,YAAY,IAAI;AAC9B,QAAM,KAAK,OAAO,GAAG,SAAS,IAAI,CAAC,EAAE,SAAS,GAAG,GAAG;AACpD,QAAM,KAAK,OAAO,GAAG,QAAQ,CAAC,EAAE,SAAS,GAAG,GAAG;AAC/C,SAAO,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE;AAC5B;AAEO,IAAM,aAAa,CAAC,SAAyB;AAChD,MAAK,CAAC,QAAU,KAAK,QAAQ,YAAY,KAAK,GAAI;AAC9C,WAAO;AAAA,EACX;AACA,QAAM,KAAK,IAAI,KAAK,IAAI;AACxB,QAAM,KAAK,GAAG,YAAY,IAAI;AAC9B,QAAM,KAAK,OAAO,GAAG,SAAS,IAAI,CAAC,EAAE,SAAS,GAAG,GAAG;AACpD,QAAM,KAAK,OAAO,GAAG,QAAQ,CAAC,EAAE,SAAS,GAAG,GAAG;AAC/C,SAAO,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE;AAC5B;AAEO,IAAM,UAAU,CAAC,SAA0B;AAC9C,QAAM,QAAQ,IAAI,KAAK,IAAI;AAC3B,QAAM,QAAQ,oBAAI,KAAK;AACvB,MAAI,MAAM,SAAS,GAAG,GAAG,GAAG,CAAC,KAAK,MAAM,SAAS,GAAG,GAAG,GAAG,CAAC,GAAG;AAC1D,WAAO;AAAA,EACX;AACA,SAAO;AACX;;;ACtQO,IAAM,aAAa,CAAC,UAAK,UAAK,UAAK,UAAK,UAAK,UAAK,UAAK,UAAK,UAAK,QAAG;AAEpE,IAAM,YAAY,CAAC,UAAmC;AACzD,SAAO,MAAM,SAAS,EACjB,QAAQ,OAAO,CAAC,UAAkB,WAAW,SAAS,KAAK,CAAC,CAAC;AACtE;AAEO,IAAM,WAAW,CAAC,QAAyB;AAC9C,MAAI,CAAC,OAAO,GAAG,EAAG,QAAO;AACzB,MAAI,IAAI,UAAU,GAAG,CAAC,KAAK,IAAK,QAAO;AACvC,MAAI,IAAI,WAAW,GAAI,QAAO;AAC9B,MAAI,MAAM;AACV,WAAS,IAAI,GAAG,IAAI,IAAI,KAAK;AACzB,WAAO,WAAW,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK;AAAA,EAC7C;AACA,UAAQ,KAAK,MAAM,MAAM,OAAO,WAAW,IAAI,OAAO,EAAE,CAAC;AAC7D;AAEO,IAAM,WAAW,CACpB,OACA,QACA,MACA,QACC;AACD,QAAM,QAAQ,OAAO,QAAQ,SAAS;AACtC,QAAM,OAAO,OAAO,SAAS,UAAU;AACvC,MAAI,MAAM,SAAS,KAAK,YAAY,MAAM;AAC1C,SAAO,QAAQ,IAAI,SAAS,GAAG;AAC/B,SAAO,OAAO,KAAK,KAAK,MAAM,GAAG;AACrC;AAEO,IAAM,WAAW,CAAC,QAAwB;AAC7C,MAAI,MAAM,OAAO,GAAG;AACpB,QAAM,IAAI,WAAW,KAAK,KAAK;AAC/B,QAAM,IAAI,WAAW,KAAK,KAAK;AAC/B,QAAM,IAAI,KAAK;AACf,SAAO;AACX;AAEO,IAAM,WAAW,CACpB,KACA,SAKS;AACT,QAAM,IAAI,OAAO,GAAG;AACpB,QAAM,MAAM,MAAM,MAAM,OAAO,KAAK,GAAG,IAAI;AAC3C,QAAM,MAAM,MAAM,MAAM,OAAO,KAAK,GAAG,IAAI;AAC3C,QAAM,OAAO,MAAM,QAAQ,MAAM,QAAQ,KAAK,KAAK,OAAO;AAC1D,MAAI,IAAI,GAAG;AACP,WAAO,EAAE,eAAe,QAAW;AAAA,MAC/B,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,IAC3B,CAAC;AAAA,EACL,MAAO,QAAO;AAClB;AAEO,IAAM,YAAY,CAAC,KAAa,QAAQ,MAAc;AACzD,QAAM,IAAI,OAAO,GAAG;AACpB,QAAM,IAAI,OAAO,KAAK;AACtB,MAAI,MAAc;AAClB,MAAI,KAAK,MAAM,KAAK,IAAI,MAAM,GAAG;AAC7B,WAAO,IAAI,KAAM,QAAQ,CAAC,IAAI;AAAA,EAClC,WAAW,KAAK,MAAM,GAAG;AACrB,WAAO,IAAI,KAAS,QAAQ,CAAC,IAAI;AAAA,EACrC;AACA,SAAO;AACX;AAEO,IAAM,YAAY,CAAC,OAAe,YAA4B;AACjE,MAAI,IAAI;AACR,QAAM,IAAI,MAAM,SAAS;AACzB,SAAO,QAAQ,QAAQ,MAAM,MAAM;AAC/B,UAAM,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI;AAC1B;AACA,WAAO;AAAA,EACX,CAAC;AACL;AAEO,IAAM,WAAW,CAAC,SAAe,IAAI,QAAgB,CAAC,SAAS,WAAW;AAC7E,QAAM,SAAS,IAAI,WAAW;AAC9B,SAAO,cAAc,IAAI;AACzB,SAAO,SAAS,MAAM,QAAQ,OAAO,MAAgB;AACrD,SAAO,UAAU,SAAO,OAAO,GAAG;AACtC,CAAC;AASM,IAAM,WAAW,CAAC,UAAoC;AACzD,MAAI;AAAE,WAAO,KAAK,MAAM,KAAK,MAAM,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC;AAAA,EAAG,QAC9C;AAAE,WAAO;AAAA,EAAM;AACzB;;;ACnGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAaO,IAAM,cAAc,CAAC,WAGtB,IAAI,QAAmB,CAAC,SAAS,WAAW;AAC9C,QAAM,UAAU,OAAO,UAAU,OAAO,UAAU;AAClD,QAAM,WAAW,OAAO,WAAW,OAAO,WAAW;AACrD,QAAM,OAAoB,CAAC;AAC3B,MAAI,UAAU,aAAa;AAEvB,UAAM,SAAS,WAAW,MAAM;AAC5B,gBAAU,YAAY,WAAW,OAAO;AACxC,mBAAa,MAAM;AAEnB,UAAI,KAAK,QAAQ;AACb,aAAK,KAAK,CAAC,GAAG,MAAM,EAAE,WAAW,EAAE,QAAQ;AAC3C,gBAAQ,KAAK,CAAC,CAAC;AAAA,MACnB,OACK;AACD,eAAO,oBAAoB;AAAA,MAC/B;AAAA,IACJ,GAAG,OAAO;AAEV,UAAM,UAAU,cAAc,CAAC,QAAQ;AACnC,YAAM,MAAM,IAAI,OAAO;AACvB,YAAM,MAAM,IAAI,OAAO;AACvB,YAAM,MAAM,IAAI,OAAO;AACvB,YAAM,OAAO,IAAI,OAAO,UAAU,IAAI,OAAO,UAAU;AACvD,YAAM,QAAQ,IAAI,OAAO,QAAQ,IAAI,OAAO,QAAQ;AACpD,YAAM,OAAO,IAAI;AACjB,WAAK,KAAK;AAAA,QACN,UAAU,EAAE,KAAU,IAAS;AAAA,QAC/B,UAAU;AAAA,QACV,SAAS;AAAA,QACT;AAAA,QACA,WAAW;AAAA,MACf,CAAC;AAED,UAAI,OAAO,UAAU;AACjB,kBAAU,YAAY,WAAW,OAAO;AACxC,qBAAa,MAAM;AACnB,gBAAQ;AAAA,UACJ,UAAU,EAAE,KAAU,IAAS;AAAA,UAC/B,UAAU;AAAA,UACV,SAAS;AAAA,UACT;AAAA,UACA,WAAW;AAAA,QACf,CAAC;AAAA,MACL;AAAA,IACJ,GAAG,CAAC,QAAQ;AACR,gBAAU,YAAY,WAAW,OAAO;AACxC,mBAAa,MAAM;AACnB,aAAO,GAAG;AAAA,IACd,CAAC;AAAA,EACL,MACK,QAAO,yBAAyB;AACzC,CAAC;AAEM,IAAM,gBAAgB,CACzB,SACA,UACC;AACD,MAAI,UAAU,aAAa;AACvB,WAAO,UAAU,YAAY,cAAc,SAAS,OAAO;AAAA,MACvD,oBAAoB;AAAA,MACpB,SAAS;AAAA,MACT,YAAY;AAAA,IAChB,CAAC;AAAA,EACL;AACA,SAAO;AACX;AAEO,IAAM,YAAY,OAAO,aAA4C;AACxE,QAAM,MAAM;AACZ,QAAM,SAAS,GAAG,SAAS,GAAG,IAAI,SAAS,GAAG;AAC9C,MAAI,MAAM;AACV,SAAO,WAAW,MAAM,QAAQ,GAAG;AAEnC,MAAI,UAAU;AACd,QAAM,MAAM,GAAG,EAAE,KAAK,cAAY,SAAS,KAAK,CAAC,EAAE,KAAK,UAAQ;AAC5D,UAAM,OAAO,KAAK;AAClB,QAAI,KAAK,OAAQ,WAAU,KAAK,CAAC,EAAE;AAAA,EACvC,CAAC;AACD,SAAO;AACX;;;AChGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,IAAM,UAAU,CAAC,KAAa,KAAa,QAAgB;AAC9D,QAAM,IAAI,oBAAI,KAAK;AACnB,IAAE,QAAQ,EAAE,QAAQ,IAAK,MAAO,GAAI;AACpC,QAAM,UAAU,aAAa,EAAE,YAAY;AAC3C,WAAS,SAAS,GAAG,GAAG,IAAI,GAAG,IAAI,OAAO;AAC9C;AAEO,IAAM,UAAU,CAAC,QAAwB;AAC5C,QAAM,OAAO,SAAS,OAAO,MAAM,IAAI,EAAE,KAAK,OAAK,EAAE,WAAW,MAAM,GAAG,CAAC;AAC1E,MAAI,KAAM,QAAO,KAAK,MAAM,GAAG,EAAE,CAAC;AAAA,MAC7B,QAAO;AAChB;AAEO,IAAM,aAAa,CAAC,QAAgB;AACvC,WAAS,SAAS,GAAG,GAAG;AAC5B;AAEO,IAAM,QAAQ,MAAM;AACvB,WAAS,OAAO,MAAM,GAAG,EAAE,QAAQ,YAAU;AACzC,UAAM,QAAQ,OAAO,QAAQ,GAAG;AAChC,UAAM,OAAO,QAAQ,KAAK,OAAO,UAAU,GAAG,KAAK,IAAI;AACvD,eAAW,IAAI;AAAA,EACnB,CAAC;AACL;;;ACxBA,IAAM,eAAe;AACrB,IAAM,gBAAgB;AACtB,IAAM,eAAe;AAErB,IAAM,eAAe;AACrB,IAAM,iBAAiB;AACvB,IAAM,oBAAoB;AAC1B,IAAM,eAAe,CAAC,kCAAS,kCAAS,sBAAO,sBAAO,sBAAO,sBAAO,gBAAM,4BAAQ,sBAAO,4BAAQ,oBAAK;AACtG,IAAM,aAAa,CAAC,sBAAO,4BAAQ,sBAAO,kCAAS,sBAAO,0BAAM;AAEhE,IAAM,mBAAmB,CAAC,sBAAsC,SAAS,kBAAkB,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE;AAC5G,IAAM,sBAAsB,CAAC,sBAAsC,SAAS,kBAAkB,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE;AAC/G,IAAM,sBAAsB,CAAC,gBAAoC,gBAAgB,UAAa,gBAAgB;AAI9G,SAAS,YAAY,OAAiC;AAClD,SAAO,SAAS,GAAG,KAAK,IAAI,EAAE,MAAM;AACxC;AAEA,IAAM,iBAAiB,CAAC,aAAqB,YAAY;AACzD,IAAM,gBAAgB,CAAC,aAAqB,WAAW,gBAAgB;AACvE,IAAM,qBAAqB,CAAC,aAAsB,YAAY,gBAAgB,WAAW,gBAAgB;AACzG,IAAM,iBAAiB,CAAC,UAAkB,mBAA2B,WAAW,IAAI;AAEpF,IAAM,gBAAgB,CAAC,WAA2B;AAC9C,QAAM,YAAY,OAAO,SAAS;AAClC,SAAO,UAAU,MAAM,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;AAChD;AAEA,IAAM,cAAc,CAAC,UAAkB,WAAmB;AACtD,MAAI,WAAW;AACf,MAAI,CAAC,eAAe,QAAQ,GAAG;AAC3B,eAAW,WAAW,KAAK,IAAI,WAAW,CAAC,IAAI,YAAY;AAAA,EAC/D;AACA,MAAI,YAAY,MAAM,KAAK,CAAC,mBAAmB,QAAQ,GAAG;AACtD,eAAW;AAAA,EACf;AACA,SAAO;AACX;AAEA,IAAM,cAAc,CAAC,UAAkB,QAAgB,mBAA2B;AAC9E,QAAM,UAAkB,SAAS,QAAQ,EAAE;AAC3C,MAAI,aAAa,aAAa,OAAO;AACrC,MAAI,YAAY,OAAO,GAAG;AACtB,WAAO;AAAA,EACX;AACA,MAAI,cAAc,QAAQ,KAAK,WAAW,GAAG;AACzC,iBAAa;AAAA,EACjB;AACA,MAAI,cAAc,QAAQ,KAAK,WAAW,GAAG;AACzC,iBAAa;AAAA,EACjB;AACA,MAAI,mBAAmB,QAAQ,KAAK,eAAe,UAAU,cAAc,KAAK,WAAW,GAAG;AAC1F,iBAAa;AAAA,EACjB;AACA,MAAI,iBAAiB,KAAK,eAAe,QAAQ,KAAK,WAAW,GAAG;AAChE,iBAAa;AAAA,EACjB;AACA,SAAO;AACX;AAEA,IAAM,UAAU,CAAC,gBAAgC;AAC7C,QAAM,gBAAwB,cAAc,WAAW;AACvD,MAAI,aAAa;AACjB,gBAAc,MAAM,EAAE,EAAE,QAAQ,CAAC,QAAgB,MAAM;AACnD,iBAAa,GAAG,YAAY,GAAG,QAAQ,cAAc,MAAM,CAAC,GAAG,YAAY,GAAG,MAAM,CAAC,GAAG,UAAU;AAAA,EACtG,CAAC;AACD,SAAO;AACX;AAEA,IAAM,0BAA0B,CAAC,QAAgB,YAAY,MAAc;AACvE,QAAM,iBAAiB,WAAW,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG;AAC9D,QAAM,iBAAiB,eAAe,CAAC;AACvC,QAAM,oBAAqB,eAAe,UAAU,IAAK,eAAe,CAAC,EAAE,UAAU,GAAG,SAAS,IAAI;AACrG,SAAO,WAAW,GAAG,cAAc,IAAI,iBAAiB,EAAE,EAAE,QAAQ,SAAS;AACjF;AAEA,IAAM,mBAAmB,CAAC,gBAAwB;AAC9C,QAAM,YAAoB,wBAAwB,WAAW;AAC7D,QAAM,gBAAwB,iBAAiB,SAAS;AACxD,QAAM,mBAA2B,oBAAoB,SAAS;AAC9D,QAAM,gBAAgB,QAAQ,aAAa;AAC3C,QAAM,aAAa,CAAC;AACpB,MAAI,eAAe;AACf,eAAW,KAAK,GAAG,CAAC,eAAe,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE;AAAA,EAC/D;AACA,MAAI,iBAAiB,CAAC,oBAAoB,gBAAgB,GAAG;AACzD,eAAW,KAAK,iBAAiB;AAAA,EACrC;AACA,MAAI,oBAAoB,gBAAgB,KAAK,QAAQ,gBAAgB,GAAG;AACpE,eAAW,KAAK,GAAG,CAAC,QAAQ,gBAAgB,GAAG,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE;AAAA,EAC7E;AACA,SAAO,WAAW,KAAK,EAAE;AAC7B;AAIA,SAAS,aAAa,OAAgC;AAClD,MAAI,MAAM,OAAO,GAAG,KAAK,EAAE,CAAC,GAAG;AAC3B,UAAM,IAAI,UAAU,qEAAqE;AAAA,EAC7F;AACA,SAAO,iBAAiB,GAAG,KAAK,EAAE;AACtC;AAEO,IAAM,UAAU;;;ACvGvB,SAAS,QAAQ,GAAW,GAAW;AACnC,QAAM,OAAO,IAAI,UAAW,IAAI;AAChC,QAAM,OAAO,KAAK,OAAO,KAAK,OAAO,OAAO;AAC5C,SAAQ,OAAO,KAAO,MAAM;AAChC;AAEA,SAAS,cAAc,KAAa,KAAa;AAC7C,SAAQ,OAAO,MAAQ,QAAS,KAAK;AACzC;AAEA,SAAS,OAAO,GAAW,GAAW,GAAW,GAAW,GAAW,GAAW;AAC9E,SAAO,QAAQ,cAAc,QAAQ,QAAQ,GAAG,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;AAC7E;AAEA,SAAS,MAAM,GAAW,GAAW,GAAW,GAAW,GAAW,GAAW,GAAW;AACxF,SAAO,OAAQ,IAAI,IAAM,CAAC,IAAI,GAAI,GAAG,GAAG,GAAG,GAAG,CAAC;AACnD;AAEA,SAAS,MAAM,GAAW,GAAW,GAAW,GAAW,GAAW,GAAW,GAAW;AACxF,SAAO,OAAQ,IAAI,IAAM,IAAI,CAAC,GAAI,GAAG,GAAG,GAAG,GAAG,CAAC;AACnD;AAEA,SAAS,MAAM,GAAW,GAAW,GAAW,GAAW,GAAW,GAAW,GAAW;AACxF,SAAO,OAAO,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC1C;AAEA,SAAS,MAAM,GAAW,GAAW,GAAW,GAAW,GAAW,GAAW,GAAW;AACxF,SAAO,OAAO,KAAK,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC;AAC7C;AAEA,SAAS,QAAQ,GAAa,KAAa;AACvC,IAAE,OAAO,CAAC,KAAK,OAAQ,MAAM;AAC7B,KAAK,MAAM,OAAQ,KAAM,KAAK,EAAE,IAAI;AAEpC,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI,IAAI;AACR,MAAI,IAAI;AACR,MAAI,IAAI;AACR,MAAI,IAAI;AAER,OAAK,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK,IAAI;AAC/B,WAAO;AACP,WAAO;AACP,WAAO;AACP,WAAO;AAEP,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,UAAU;AACzC,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,UAAU;AAC9C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,SAAS;AAC7C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,WAAW;AAC/C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,UAAU;AAC7C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,UAAU;AAC9C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,WAAW;AAC/C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,SAAS;AAC7C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,UAAU;AAC7C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,WAAW;AAC/C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,MAAM;AAC3C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,WAAW;AAChD,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,UAAU;AAC9C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,SAAS;AAC9C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,WAAW;AAChD,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,UAAU;AAE/C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,UAAU;AAC7C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,WAAW;AAC9C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,SAAS;AAC9C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,IAAI,UAAU;AAC1C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,UAAU;AAC7C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,QAAQ;AAC5C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,UAAU;AAC/C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,UAAU;AAC9C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,SAAS;AAC5C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,WAAW;AAC/C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,UAAU;AAC9C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,UAAU;AAC9C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,WAAW;AAC/C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,SAAS;AAC5C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,UAAU;AAC9C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,WAAW;AAEhD,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,OAAO;AAC1C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,WAAW;AAC/C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,UAAU;AAC/C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,SAAS;AAC9C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,WAAW;AAC9C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,UAAU;AAC9C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,UAAU;AAC9C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,WAAW;AAChD,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,SAAS;AAC7C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,IAAI,UAAU;AAC1C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,UAAU;AAC9C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,QAAQ;AAC5C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,UAAU;AAC7C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,UAAU;AAC/C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,SAAS;AAC9C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,UAAU;AAE9C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,UAAU;AACzC,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,UAAU;AAC9C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,WAAW;AAChD,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,SAAS;AAC7C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,UAAU;AAC9C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,WAAW;AAC/C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,QAAQ;AAC7C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,WAAW;AAC/C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,UAAU;AAC7C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,SAAS;AAC9C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,WAAW;AAC/C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,UAAU;AAC/C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,UAAU;AAC7C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,WAAW;AAChD,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,SAAS;AAC7C,QAAI,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,UAAU;AAE9C,QAAI,QAAQ,GAAG,IAAI;AACnB,QAAI,QAAQ,GAAG,IAAI;AACnB,QAAI,QAAQ,GAAG,IAAI;AACnB,QAAI,QAAQ,GAAG,IAAI;AAAA,EACvB;AACA,SAAO,CAAC,GAAG,GAAG,GAAG,CAAC;AACtB;AAEA,SAAS,UAAU,OAAiB;AAChC,MAAI;AACJ,MAAI,SAAS;AACb,QAAM,WAAW,MAAM,SAAS;AAChC,OAAK,IAAI,GAAG,IAAI,UAAU,KAAK,GAAG;AAC9B,cAAU,OAAO,aAAc,MAAM,KAAK,CAAC,MAAM,IAAI,KAAM,GAAI;AAAA,EACnE;AACA,SAAO;AACX;AAEA,SAAS,UAAU,OAAe;AAC9B,MAAI;AACJ,QAAM,SAAc,CAAC;AACrB,UAAQ,MAAM,UAAU,KAAK,CAAC,IAAI;AAClC,OAAK,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK,GAAG;AACnC,WAAO,CAAC,IAAI;AAAA,EAChB;AACA,QAAM,UAAU,MAAM,SAAS;AAC/B,OAAK,IAAI,GAAG,IAAI,SAAS,KAAK,GAAG;AAC7B,WAAO,KAAK,CAAC,MAAM,MAAM,WAAW,IAAI,CAAC,IAAI,QAAS,IAAI;AAAA,EAC9D;AACA,SAAO;AACX;AAEA,SAAS,QAAQ,GAAW;AACxB,SAAO,UAAU,QAAQ,UAAU,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AACxD;AAEA,SAAS,YAAY,KAAa,MAAc;AAC5C,MAAI;AACJ,MAAI,OAAO,UAAU,GAAG;AACxB,QAAM,OAAY,CAAC;AACnB,QAAM,OAAY,CAAC;AACnB,OAAK,EAAE,IAAI,KAAK,EAAE,IAAI;AACtB,MAAI,KAAK,SAAS,IAAI;AAClB,WAAO,QAAQ,MAAM,IAAI,SAAS,CAAC;AAAA,EACvC;AACA,OAAK,IAAI,GAAG,IAAI,IAAI,KAAK,GAAG;AACxB,SAAK,CAAC,IAAI,KAAK,CAAC,IAAI;AACpB,SAAK,CAAC,IAAI,KAAK,CAAC,IAAI;AAAA,EACxB;AACA,QAAM,OAAO,QAAQ,KAAK,OAAO,UAAU,IAAI,CAAC,GAAG,MAAM,KAAK,SAAS,CAAC;AACxE,SAAO,UAAU,QAAQ,KAAK,OAAO,IAAI,GAAG,MAAM,GAAG,CAAC;AAC1D;AAEA,SAAS,SAAS,OAAe;AAC7B,QAAM,SAAS;AACf,MAAI,SAAS;AACb,MAAI;AACJ,MAAI;AACJ,OAAK,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK,GAAG;AAClC,QAAI,MAAM,WAAW,CAAC;AACtB,cAAU,OAAO,OAAQ,MAAM,IAAK,EAAI,IAAI,OAAO,OAAO,IAAI,EAAI;AAAA,EACtE;AACA,SAAO;AACX;AAEA,SAAS,aAAa,OAAe;AACjC,SAAO,mBAAmB,mBAAmB,KAAK,CAAC;AACvD;AAEA,SAAS,OAAO,GAAW;AACvB,SAAO,QAAQ,aAAa,CAAC,CAAC;AAClC;AAEA,SAAS,OAAO,GAAW;AACvB,SAAO,SAAS,OAAO,CAAC,CAAC;AAC7B;AAEA,SAAS,WAAW,GAAW,GAAW;AACtC,SAAO,YAAY,aAAa,CAAC,GAAG,aAAa,CAAC,CAAC;AACvD;AAEA,SAAS,WAAW,GAAW,GAAW;AACtC,SAAO,SAAS,WAAW,GAAG,CAAC,CAAC;AACpC;AAEO,SAAS,QAAQ,QAAgB,KAAc,KAAc;AAChE,MAAI,CAAC,KAAK;AACN,QAAI,CAAC,KAAK;AACN,aAAO,OAAO,MAAM;AAAA,IACxB;AACA,WAAO,OAAO,MAAM;AAAA,EACxB;AACA,MAAI,CAAC,KAAK;AACN,WAAO,WAAW,KAAK,MAAM;AAAA,EACjC;AACA,SAAO,WAAW,KAAK,MAAM;AACjC;","names":[]}
@@ -2379,54 +2379,6 @@ textarea {
2379
2379
 
2380
2380
  /* src/mod/style.css */
2381
2381
 
2382
- /* src/svchub/oauth/style.css */
2383
- #app:has(#page-logout) {
2384
- padding: 0;
2385
- }
2386
- #page-logout {
2387
- width: 100%;
2388
- height: 100%;
2389
- position: fixed;
2390
- display: flex;
2391
- flex-direction: column;
2392
- justify-content: center;
2393
- align-items: center;
2394
- background-position: center;
2395
- background-repeat: no-repeat;
2396
- background-size: cover;
2397
- background-image: url(https://cdn.jsdelivr.net/npm/slimsdk/dist/assets/bg/bg-01.jpg);
2398
- }
2399
- #page-logout #content {
2400
- display: none;
2401
- text-align: center;
2402
- animation: fadeIn 0.4s;
2403
- }
2404
- #page-logout #content .logo {
2405
- margin: auto;
2406
- width: 150px;
2407
- height: 150px;
2408
- margin-bottom: 20px;
2409
- border-radius: 50%;
2410
- background-color: rgba(255, 255, 255, 0.2);
2411
- box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
2412
- }
2413
- #page-logout #content .logo img {
2414
- width: 100%;
2415
- height: 100%;
2416
- border-radius: 50%;
2417
- }
2418
- #page-logout #content #btn-login {
2419
- box-shadow: rgba(0, 0, 0, 0.16) 0px 3px 6px, rgba(0, 0, 0, 0.23) 0px 3px 6px;
2420
- }
2421
- #page-logout #loader {
2422
- width: 120px;
2423
- height: 120px;
2424
- border-radius: 50%;
2425
- border: 12px solid #E5E7EB;
2426
- border-color: #E5E7EB #06B6D4 #E5E7EB #06B6D4;
2427
- animation: spin 2s linear infinite;
2428
- }
2429
-
2430
2382
  /* src/page/style.css */
2431
2383
  #page-loader:has(.spinner.s32).overlay {
2432
2384
  padding-top: 24px;