unify-external-plugin-platform 0.0.2-70 → 0.0.2-72

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.
@@ -82621,8 +82621,8 @@ zs_empty.install = Vue => {
82621
82621
  Vue.component(zs_empty.name, zs_empty);
82622
82622
  };
82623
82623
  /* harmony default export */ var packages_zs_empty = (zs_empty);
82624
- ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-85.use[1]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[4]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./packages/id-card-reader/id-card-reader-demo/src/id-card-reader-demo.vue?vue&type=template&id=e321b460&scoped=true&
82625
- var id_card_reader_demovue_type_template_id_e321b460_scoped_true_render = function render() {
82624
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-85.use[1]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[4]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./packages/id-card-reader/id-card-reader-demo/src/id-card-reader-demo.vue?vue&type=template&id=3d89866c&scoped=true&
82625
+ var id_card_reader_demovue_type_template_id_3d89866c_scoped_true_render = function render() {
82626
82626
  var _vm = this,
82627
82627
  _c = _vm._self._c;
82628
82628
  return _vm.tip ? _c('el-tooltip', {
@@ -82663,7 +82663,7 @@ var id_card_reader_demovue_type_template_id_e321b460_scoped_true_render = functi
82663
82663
  return [_vm._v(_vm._s(_vm.label))];
82664
82664
  })], 2);
82665
82665
  };
82666
- var id_card_reader_demovue_type_template_id_e321b460_scoped_true_staticRenderFns = [];
82666
+ var id_card_reader_demovue_type_template_id_3d89866c_scoped_true_staticRenderFns = [];
82667
82667
 
82668
82668
  // EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.push.js
82669
82669
  var es_array_push = __webpack_require__(7658);
@@ -82738,26 +82738,26 @@ var es_array_push = __webpack_require__(7658);
82738
82738
  /** 身份证信息 */
82739
82739
  info: {
82740
82740
  /** 姓名 */
82741
- name: '张三',
82741
+ name: '',
82742
82742
  /** 性别 */
82743
- sex: '',
82743
+ sex: '',
82744
82744
  /** 民族 */
82745
- nation: '',
82745
+ nation: '',
82746
82746
  /** 出生日期 */
82747
- birthday: '19950710',
82747
+ birthday: '',
82748
82748
  /** 地址 */
82749
- address: '浙江省杭州市西湖区',
82749
+ address: '',
82750
82750
  /** 证件号码 */
82751
- cardId: '140*************11',
82751
+ cardId: '',
82752
82752
  /** 签发机关 */
82753
- police: '公安局',
82753
+ police: '',
82754
82754
  /** 有效期开始 */
82755
- validStart: '20220516',
82755
+ validStart: '',
82756
82756
  /** 有效期结束 */
82757
- validEnd: '20420516'
82757
+ validEnd: ''
82758
82758
  },
82759
82759
  /** 身份证照片 */
82760
- headImage: 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/wAALCAKAAoABASIA/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/9oACAEBAAA/APqmiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiio2Y5IBNRDzd3L/LT1diNzEAUxrhEBMsqRj/aIFUrnX9MtgfP1K0QeplX/Gsm4+IHhi3JE2uWakf7WaqD4o+EO2vWf4k1PB8RvC0y5TXLI84+8asReOfDsjALrdhz/t4q9D4l0icfudUs3P8AszL/AI1etr2GdcwzxSg/3XB/lUwl9GyKcrZ709aWiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiikJwOaaJFxkcj2rH8QeJNM0OEy6lexwLjPzGvJvFH7SPhLTEkTTnnvrgcDYg2fnmvG/FX7SviXUvMi0yCOxiJ+VlOW/lXnOp/E7xbqW4XeuXbKewc4/nWDda1qV0P3t9O5/wBpzUEcV1OCSZZCfQE03+zb/vbTn/gJoFpfRceRcKPTBpQLsDHlzZ9yafBcX8ROJ7iMD+6SK6Twz8RPEnhuaN9O1e5UL/DISQfzNe7/AA+/acieVbfxjatEmzH2i3UMS3uOMCvfPCHjbQvE9os+k6lDOpHTOCPwrpfOULnk06ORXB2npTs0tFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFNf7jc4968n+Lvxh0vwTZyQxN5+pHhYlPQ+tfHnj7x3q/jLVpZ9TuXKt92NTgJ6CofD/gLxFrMavp2kXMqtyHMZAYe1eieFv2cfE+qgSX6x2UXozDd+Wa9W8Ofsx6BbhG1i4nnbAyquBz+Vdpp/wL8EWRymjrIV6GVt2f5V1Ok+B9A01QLTRoI8ewrZ/saw/wCfKL/vkVFJoenM3zWNuR7xio38NaM6kNpdsSfWOs+TwJ4dm3eZo1o+evy4rzTx9+zxoGvSTXGlRmwupDkGM4UH3GK+fvHPwL8VeFA06232+1DYEkAzj6jmuC0zVNU0C/M9tPcWt0h9wRX0F8M/2lJoWisvF0JmU4UXKdR9RzX0p4U8R6b4jsTd6TdR3EfG7aeVz6+lbg60+iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiqFxKf3iAH3x2HqK4/xv8S/D/g391rOoKspXKxpyx615HrX7VenxO6aPos8uOA85AB/Jq5a0/aq11Lgefo1k0GefnbdXo3gz9pbw3q8wg1iGbTJD/G4yhP4EmsH4x/tBxW9pPp3g+XfPKpU3JUYUeq//AF6+YLm41DXtVeWaWe7uJG6sSSTX0V8CvgQ1ytvrPiyIBB88UBHv39a+oNL062sYI4ra3jhjQYCKgGKvbRnOBn6U4dKNo64FGB6UtJilpAB6CgADoBVe8hSWHY6qVJ5yMivLPiV8FNA8YRM8Ua2l8fuyxjaM+4FfJvxI+FOv+CbxxcWrTWgORPHyuKofDr4h6x4I1ZbvTrqRov8AlpCx+V/wr7Z+FPxK0zx3pMM0NwqX2MS2x4YGu83HDAcFeealiYOgI70+iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiimsSBkDJpnnDcwA+7972rzX40/Eiz8B6JKwmVtSlGLeIHnd6mviDxHquoeLdbkubqaS7vLh8gZ/QCu58NfATxnrVvFL9k+zW8gzum4/Susuf2WvEKWjSQ6layTAZEZGM/jXjvjXwfq3gzU1stZgEUzrvQqchlyR/Sq/hjw5eeIdWSw05DJcSEAD1NfWXwX+BFnoCQanrWZb7qY3XgV7xb2yxIipgBOAAKmA+bI6U7HvRS0UUUUUUhGRioDb5bcW5HT0FVdU0e11Swezv4o5oHGGVl4NfLXx2+AZ0+B9a8HQtJCoZ7i2Ufd91rwvwZ4l1LwnrEWoaTO0UyMNydN4B5Ffb3wh+Jun+O9DjdH26kBslhzyD616Ja/u4Aoy2Dip1bNOooooooooooooooooooooooooooooooooooooooooooooooooooopkjBUJY4Fcf8Q/Ftv4O8M32qXrqFiBCDPLseg96+CvF/inUvF+s3N9fu80kzHy06hAfSvor9m74Pi3tU1/X4B5sgBhjccqPXFfSUSbQFjjwAMDPQU14nfgquP71fN37amkKdL0LVFjy6yG3LAdBhjz+Jryb9me8WH4paQj4G9jkn8K+8Yum7PXoKlU5HNKtLRRRRRRRRRRRVHUYpJY9qAMGGCCOD9favmL9oP4Hs4n8Q+F4SZsF7m2QcNjqy+/tXgvgbxXqXgzXY7y0meJ42xIhGN3qpFfdXwp8d2Xjnw5b31tKgn+7LFuG5WHXI64ruFxmn0UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVDc48lsgEjkZ9a+LP2pviD/wkmvro2nzZsLBtsgB4eTnJ/DOKZ+y/wDD3/hKPEK6pqMRbS7JtwyOJH9D+VfaNiqJHtRFTZ8mF6CrVFePftTacL34T6pMwybTZKv13gfyNfJHwena1+IvhuQHlrgbvpmv0Qjb92p9Bn9KmT7o96ctLRRRRRRRRRRRRUcqq8Tq4ypBBHqK+SP2l/hI+m3E/ibQIFa0mP8ApEKD7h/vD8q8l+FXj++8CeI4buzfdASFmj/hde9feXgnxJZ+J9FttQsZllWVcnafunuD710dFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFRMzCTaO44rzj47eOI/Bngm+lzi7uEMNvjqWPH6ZBr4TsbS617XYrdFZ7q7m7c8k8k/zr9Bfhd4PtfCHhHT9OijxKkS+cezPjk11kEaoTtzzU1FcR8ZrRL34a+IYJBkG2zj6EH+lfAfgy8ex8WaVOhAMMykZr9JdPkE9hDLn76L/Krkf3BTlpaKKKKKKKKKKKKawyrD2rK1GyhvLWe1uYlkt5VKEMOOa+K/2hPhZL4K1dr7ToidHuDuUjpG3p9Kl/Z1+JsvhDXIdOvZc6ZeOI2Rv4WPRvbtX25BcrNHHJGwdJFDKw9KsryOuaWiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiq85KEtkADua+G/wBpPxw/inxhc21vcbrCxPkxxjoGGcv+IwPwrrf2SfAn9oajN4hv4f3NucRbx95vUfrX1yg+UY5FPQEZyKdRXN/EGLzvCesRkZBtH/ka/OC3LQ6irDhklA/Wv0j8F3IuPDOnyBt26BTmt2I5QfSnrS0UUUUUUUUUUUUh6GoUi+VlY5BrB8Y+GLHxNot3peowiSC5TYM9V9xX57eLdFuPC3iO90+dGjltpNnPbnII/DFfa/7O3jRPF3gO23Efa7ALbyL3IAwD+IGa9VT7o4x7U6iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiivMvj/4yXwj4BvpoZQl/OvlQD3Oef0r4Y0GxuvEniKGyjBkmvJACe+CeTX6D/Drw1b+FPCdjp1ugBijXeQPvE9f511iABQB0paKSvPvjL4wsvCXhPUJryRfMmt2jiiPV2OR/Wvz+hje91NEiQl5ZAVUepPSv0e8E2y2nhjS7fBDCFVbPY10a9KVaWiiiiiiiiiiiij1pKikxkE/w818tftfeBhH5HiewhAUgR3O0d8nB/UVxf7KPixtC8a/YJ5iLTUMRFCeN3Y/pX25FzGuDkYp9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFVXnIV8naFBJb0FfFH7Uvjg+IvGQ021lzYWC7BtPVj1P5itX9kfwa2oeJZddu4SYLZSsTEcFiCD/MV9hQKojCgcrVlPu0tFZuqajFp9pc3Ez7UhUuSa+E/jl8QLrxr4oc+aRYWRKRL2zk8j867X9mL4X/ANu6vD4l1SINp9q25FkH+tk9vYYNfYaRIibVUBR2p6jApy0tFFFFFFFFFFFFFGKaUU5yK5L4qaVb6v8AD7X7W6iWRPsjyYYd1BYH8xX5+eC72TTvEdlcRuVaOUBSO3NfpRpk3n2FvL/fQGrVFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFJTZCRGxHXFcH8ZvE8XhXwHqt8zkSbBGir1LEgYH55r4CDz6xq5wplmupv4uuSelfoB8G/CsfhPwTYWSKvmbdztjnJrtlTFSg8UmfakMgAyeK+cv2pviQum6f/YWlXA+0zDEuP4RXzp8LvB13428V2umwhmgd/MmkH8K9z+PSvv/AML6NZeH9ItNO0yARW1ugjUD0Hr78VsKc04dKVaWiiiiikJwCaa0qqD7U0SgkcHHr6U9G3EjGMU6iiikzSisHxwM+DtdGetlN/6A1fm9ph8rWYg3IWYdP96v0t8OP5mhWL+sSmtKiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiikNNcZRhntXyF+1/40+26vaeHLRv3VsfNnx3fkAfkRXJ/sv+Eh4i8eR3VwoeysR5smRxu4x/WvuKyBSFUxjA5FWKF6U1yQBj1rnfH/ia38KeGr7VLw4jiTj61+ePizWbnxL4gu9QnZnmuX3YJ6DPAr7H/Zn+H/8AwifhZdTu4vL1LUlDvnrGnYfjtz+NexLztKD5Dz/galiqQdKVaWiiiiiqOr30Wm6bc3lwwWKBC7Gvjrxp+0R4hl1q5/sWRY7RXKp7gV7D8BfjAPHEX9naqwj1WJdxA/jx3/Sva4XLNkD5SOfY1PRRR60lN3YzXOfEW48nwPrz+lnKP/HTX5w2beZq0JHeVf51+l/hddvh7Tx6QrWrRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRUUvU/SsDxvrieHPD2p6pcMAkEJYD1wDX54+JdVufEHiK+1Cdy891Nk993YAfhgV9rfs7+Df+EZ8B2clzBtvrtRI3HIU8gH869VhGJCPap6KjkYKOa+Sv2v/ABk9xqdv4ctHJgiUTS4P8XYf+PVw37Nngc+L/GkU1ygaw0/E0oPQn+EfiRX3VaxJHCqIoCqAAPTHFSqBTqWkpaKKKKKwPHWnSat4S1Wxg/1s8BVfr1/pX57eIvCer6RqUllcafcmYMd+xCQa99/ZM8B6pp2qz67qNu9tGV2IJBgkf5NfUsKgdOB6VLQOlLSdjSVC/wB41wvxzvRY/DHX5mOB5Oz8zj+tfBfgy2N34m0yIDO+dRX6WaZH5VhAn91AKtUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU3cBSF8DjmhXz2p1LRRRRRRRRRUUxwpIxkV83/teeNY7HTrTw5bPumuMvOAfur2/PmvC/gP4RbxX48sYZEY21q4mk44wOR+tfoFbxCOGNUARVUAKBTwmG3Z5p+aFqO4x5ZJOAOc1+evxy1Brz4i64+7cPOKD6A4/pX0b+xvpkEPgK5vxHtuZ7h0Zv7yjGP5177Co256E1IBS0UUUUUUUU2RA6Mp6GsyTQtPmO64tLeWXGN7xKSas29kkSFARs7KqhQPyqyq4xzkgYp1A6UtJ2NJiopAd3tXjv7V2om0+FN/b4GbmSNM56YcGvkf4TxeZ480JT0+0A/zr9HYWyqgDjFPU5zS0UUUUUUUUUUUUUUUUUUUUUUUUUUUUUVGVySc01lwOtEZHIzUoI9aCwHekDA9CDS5oyPWjI9aUUmR60ZHrQSAMk8UZHrWN4p1i30TSbm/unCRwRlyzHAFfnn8QPEt14q8T6hqV2xdp3Jjz2XnA/Wvq/8AZY8CLoHhRNXu4yt7fDf8wwQucAfpXukf3eKdRRkDqetZniO6S00W+mdwgjhZsk4xwa/N7xTeHUfEWp3DHd5lxJtPr8xr7e/Zs0wad8K9HJG0zr5pz3zivVU6cU6iiiiiiiiiiikoooHSlo9aSmsNwI9a8W/ax0qfUvhrK8CM32eRZGIGcDIr438HaqdJ8RaZeD/ljKHP51+jHhTWbfWtHgvbaaOWORAwZGyK2Y3DDIIxTsj1paKKKKKKKKKKKKKKKKKKKKKKKKKKKKKYXAJGKaXBGAKZhIyWZgKY95DGcPNEg/2zj+dVZNZ01XIN/agj/puv+NQv4m0ePiTVLNP+2yf40n/CU6H/ANBmx/7/AK/41Uu/Gmg27kSa5p6rjP8ArQT+lVU+JHhQuI/7ctGY/wC1WnaeLtBuv9Tq9m3/AG0FXY9Y09z8l/avnpiVT/WrIlWRcowZT3WhVBGN7fiKHcouOp6A184ftf8AjdbXSLbw3YT/AL+4bfPt7IM8H8xXg/wT8Inxd45060cF7dJN8vptBr790uxi060htoBtjhQIoq/GcpTqKiMhG7I6dDXif7UnjZNB8GPpdnOBfXx2YB5Vep/SvjPTlWfUYIn43ygFj9eTX6KfDu3is/BuiwW5V4YrdQCtdRF9wU6iiiiiiiiiiikoooHSlooorI8V6NBr+gXum3QzFcJsNfAfxT8Aah4K12e1uIH+xCQmKYDI25OK2vg58YNU8EXkcN1K1xphIBhPYe1fZfgPxvpHi/TkudKuUOVy0ZPKmuoHzHDcEelSrS0UUUUUUUUUUUUUUUUUUUUUUUUUU1ztUknGO9RCZuwyPWo5JSpBJQA+p61wvjj4s+GfCKyi91GN7lOPs8fzNn35r528Y/tK+IdSuni0G3hsbYHCFlEjP+BHFeYa98SPFmrysb3Wrnr91ZCB+QrnJ9a1GZsvfTlj1IkPNMWe/kBJmmf6sTTd17/dn/75NIY7x8kpOf8AgJpBb3Z6Rz/98mporm9tOj3MePqKsQ+ItUtnD2+oXUbjvvI/rXX+H/jR420Z18nWJZUUY2THcP1r1jwf+1JdLMkPiTTUaLoZom5/LAr3XRfiRoet6S97pupwSIse7DcMT6Yr4d+JOu3fiTxnql3fNudpnSNQP4QxCgfgK+oP2V/h6fDmhtrl/ERf3yjbk/dT6fjXu7JuIJ7VKnSkkJCEryaiSYlWJbBzxxXJ/EzxzYeCNCuL7UHA+XEafxO3oBXwt8SPGN/4016TVL+XAPCRr0RecY9a5UNKrjgr3BIxmvsL9k3xz/bGhzaHfz7ryyHybjyyf/WxX0HEdy570+iiiiiiiiimSMVjYjqKxPEGv2uh6ab3ULhIbVOGkbue2BWN4O+IWieL57hNEvkuDCPmQgAj+ddhBIzscjjHFTUDpS0UUUyVA8bKSQDXM+NPB+m+LNKlstVtklDDaHPBH418b/GP4P6h4Lvbi4sYGn0Zj+7lHzGP2PtXJeAvHOr+B79JtOkKxkYkU8gjPavr/wCDnxj0/wAbWv2e6dLfUIwMq3G/6V6tFKzZzgD37VNG2Qec+/rTlpaKKKKKKKKKKKKKKKKKKKKKKKKa/wBw1SvbyGytpbi7lSOCNSzMxwAPXNfI/wAavjze6pqN/pPhec2+mqfL+0R8PMMc89ueK8O0/TtU8Q3whsYZ725kO75AWP4/nXt/w5/Zu1nU2jufE0w0+1YZMa4LsPYjpXsWlfs6+BrEKZbS4umA/wCW0gIP6CuitPg34EgII8MWBI6FwSf510eneD9B09AtnpFrEo6BVFX/AOxNO/58Lf8A74FOTR9PUYFjbj/gAobRdOdSrWNuQf8AYFZd94G8N3uftOi2Umf7yVyuv/BDwTq8bBtGit3PRoTtxXnGvfstaVPE7aNqc8EvUCX5h/IV5B46+AvivwtC1xHANQth/Hb8n/vnk151p9zf6ZM/lSS2ksZ75BHqK9D+D+t+H5PGFmfFtukhdxslYdT/ALVfcekT2klrG1jIj2+MR7OgHtWiMUtMl4Q847Vh+ItctfD+mXupahKsVrapuZnOOfb1r4V+LvxCuvHniK4uJZXaxidltoiCoC54OO3vXYfAn4LXPiu5h1TWYmi0lDuw3/LQ+w9K9B/aJ+E9kPC41PQrJbeWxGGVD95fWvAfhJ4rbwf430vUA7JCjhJcfxKThv0r9CNGvIb3T4LiFw6SqHDDvnmr+4frilqJ7iNH2k/N6ChZkYcN3xjvTlkViwB6U4ciloopoYbiKZIVaNxnPHOK+V/2w/FpY6boVu524aSVVOMHjbmuV/ZALt8QJwSzIYuQDxnBr7RiGDg/nUtA6UtFFFIRkUm3gg81lappMepQT211DHLayDBRud1fLXxp+AE2mifV/CqNLaZLyW4PKH1HtXz/AGFzeaLfB7d5rS8hbI6g59MV9SfBf9oO3vki0vxhIIbvhVuSDtb6+lfRlpewXMCzQzJJG43KyHIP0NTR3EbPtDfN6elTUUUUUUUUUUUUUUUUUUUUUUUUVFO4SF2JAAGcnpXyT+0r8XHvZpfDehz4ijO25kQ8Mf7oPpXlHwm8CXfjvxHDZwQuLWM+ZcTL0Vfcnv2wK+2/BXgrRvDFnDbaNpkEaqoBl25cn1JPPPWuujj8sd2+tTjpS0UUUDrS0lNaoZkEqncQF9CoNeUfFH4M6J4vglkgtEtNRAJSaH5UB/2h3r498feDNU8Ga01nqcLowJMc3Zx6g167+z58Z5NGktND8QzB7NjsilPJX2NfW1hfRX0ENxayiSGQZBFXF5Bqtqd5Bp9jNdXcqQwQqXd36ACviT49/FafxjqrWdjK6aPbuVEQOBL1+Y+v0rN+BPw0uvG3iBZp4iNMhbMrN0YZ6CvuHQtPg0iwt7G0QJBGm1VAxin6pp0OoWlxbToHhmjKkGvz/wDjB4Wbwj4yvrDyysIfzIm9iT/hX0r+yj49XXPDJ0K9kJvbE4j3dXTrn9cV74vJGfSpK8K/aT+KNx4It7bT9IVf7Ruhv8w/wDkV8++EPjX4o07Wo7i9v5LiEv8AvFbocntX234S1ZdZ0Oyv412rPGG2+9ba5wM9aWiiopM59qy/EGrWmh6TeXl1MIo4oy5LV+e3xJ8UTeKvF2o6q7FkkcqFPZcnpX0d+yH4Lk0/TJtevEKyXIzFn+70r6Qj7+9PoHSlooooooqG4VXjKOAQ3GCMg14h8X/gRpnifzdR0gC0vurBBwxr5U8YeB9W8K6jNBqNtLC69GI+Vvoa7j4M/GLU/CF1Ba6nM9zozNsKMcmI+q5/r/hX2T4Z1mx12wt72wmjnjlAdZIzwR71v0UUUUUUUUUUUUUUUUUUUUUUVDI5D4GeBk188/tK/F0aFaS+HfD9zm/mXE0sbYMYPv618weEvDt/4s12LTrSF5ry5fBOM7B3Y+wzX3T8J/h/ZeCfD0NpDFH5uA0rgcyP6n19K7tSWVsetOQEVIBS4oxRijFJS0lGKAoHQU3ykznaM1wvxZ8Bab448PSWd5CguFGYZQvzIeehr4L8WaBqHhTX73TtQVormCTBK8d+or6e/ZP8ez6tBLol/KzvCv7vcck19ByTtCxdjiMcEep9vyr5Q/aQ+MB1SS58O+Hbk/Y0IWeVG4kOeg9q8m+FPgq+8c+ILeyt4y0CN++fsq/5Nfd3gPwpYeD9Dh07TUAWNQpIHU+tdJGvy8807AAIAr52/av8BPqui/2/Zx7p7QfPtHLL7185/CrxfP4H8YWWpxEiFDsnH95D1z+dfoD4b1u017S7TULGUSQXEYkRh6HtWvXz7+018LtQ8XS22r6OhluLePY0fqK8E8I/B7xNrOpxWc2nS2+1svIwIAAr7i8J6R/Y2hWFkTl7eIIfc1srnaM9cUMcDjqaill2c8kjggVGs2QwDYdeoznFcN47+Kvh/wAJQSm7v43uVXIgTk5r5O+K3xn1jxrJPaxSmDTG+XyU43j3qh8FvhvdeO/EEET27rpikNczgcBfQe9fdnh/SYNI061srSNUht0CIFGOK11HFLQOlLRRRRRRSYz1pFRRnCgVzHjfwlpfinSpbTVYI3Q8IxXJU+or4g+L/wAN9R8E6/NG0Tf2dK37ubHGOvNbfwC+K9z4J1eOwvJGk0a4YCRCeIz6ivtnTtQhu7eK4hlMkcqB0YHgitFDkA+tOHeloooooooooooooooooopKTd7V5t8d/HieBvB1zcI4F7cL5Vso6ljwfyBzXw/pFjqvjXxMkEG+4v76UlmPOCT/ACr7Z+DfwvsvAehRq8ccuqSqGuLkDnPovoBXpMOGjXI5qZFx06U7FFLRRRRRRRRRVW7O3GQSCMfSvnP9qz4ctqGm/wDCR6dFme2GJvVl9a+ePhT4rn8G+LbHUIyxiDgTKD/CTive/jb8dbGXQJtJ8LyyS3F5GPNnU8RA9h78187+EPDt74r1q3sLdXllmbdnH3R3Jr7p+EXw90/wPocSQRKLuRAZHxyTXdxpgAqABinRpgHmnY61lavYxatYXVnOoZJgY2U+lfBXxs8C3fgvxfPbzLm1nzJAyjAIyeP0r1P9lP4lLp8x8M6vN+4mbNu7HhD3X9a+sILtJow4yEPQ+tSFA3OajFqgbciohPUqOtSBCOM5FPHSmucYx61wHxk8Yv4K8J3mpRQtI/AXHrxivjfxZ8XfFfiiRxeatNDAf+WMRCr+fWuOjj1PW7ny4Irm8kJwAgLk/wA69p+Fv7POr649te+IR/Z9mrbmjcfO49Pavq/wv4T0/wAN6bDaaXDHCsY/hH3j710CJhcU4UuPeilooooooooqLyhhhwQeea5vx34VsfFGi3FlfwpJ5q7AxH3fcV8G/E/wbceB/EtzYuG2K37tyOq19B/snfEcX9jJ4X1aXEtqu+2dzy4z938OtfSELkABhnPOanBpaKKKKKKKKKKKKKKKKKKT1qMPgEse9fEf7UvjB9f8ZNYROGtLBfLCg8BsnJ/Wuw/Y28MebdX3iC5hCpEPIhZh98nkkfTbivqUg5jBBVB1PrUseccjmpl6UtFFFFFFFJQCKKWoJzhlBXKtxVLVtKh1LTLnTrn5re5jaNwfQjFfnx8UfCc3g7xVqmnTqUTdmPPdSciud0TTbnVb+Gyt43lmmICIvf619lfs8fCQeC7X+1dVBOrTAgq3SMY/+vXtUJJy55zwBU69PSlHejtVcJ+9Ljpjk1518bvh5B458NPCVH2+BS1vJjnPPH5V8N6jY3vhnV3gnZ7a8s5NqsOOc9f0r6w/Z1+MMXiGxj0bXZ1TUYhtjJ43ivfYT+7GWBz3FPFFFITisDxf4Z07xZo02n6mpktpOorzbSv2c/BNncCWS0lmA5CySsf0zXoWh+CNB0Iq2maTaRMvAZIlDD8cV0MSheFHGfripqF6Uq0tFFFFFFFFFFFQXGQykDdjqPavHv2j/h6PFfhe5vrKANqNshdCBy2O1fG3hnVbrw34jtbu0Z4ri1l3gdMkfwn64xX6BfDXxjaeMPDdlqNq4YyRgSf7Mg4ZfwINdTbsSWB7VNRRRRRRRRRRRRRRRRRRSdjXn3xi8Xp4R8HX987BLjG2Be5bnH518Fqs+ta8F3GW7upsbR3Ynj+dfoB8KfCsHhTwbpWmRx7XSMTSf9dG5b9WNdlT16UtFFFFFFFFQswDEHj6d6oS6nYwSGOW6hjfuGkGTVyORHiDq42H7rZyKsDpS0yQZjcZxkV83/tkeFUvPD9h4ghjzcWjeVKw/wCeZJx+prwz9n3UItO+JWktcASRTuIW9gf/ANVff9uR5aYHBGfpUtKtLRRUcoJGAcGvDPj/APB1PFlrLqmjxhdTjUt/v+1fH7DUfDmslCGt7y1k+6eNhHevpT4PftDxyNBpnixiGICJP2/Gvo/StRh1G1SayuEnjbkOh6ir6kdhzTx0ooopB3oXrT6KSlooooooooooopKjuEWSCRGXcGGCPWvhz9pjwK/hrxa2o2kZSzvTuGB0bn/Ct/8AZJ8cf2d4hn8P3soS3vBvjLH/AJaD/wDWa+wrUr5Yx1x+lT0UUUUUUUUUUUUUUUUUlITwa+Pf2wPE7XfiC10WKT93agtIoP8AEen5YrD/AGUfCMeveORqNzHug0wGQ56FiMD8iRX2xbrhiM5FT7aBxS0UUUUUUUVwHxq1+fw/4C1O9ssm4jCge2TivhDVvE2q6heSXNxqNx5zsWX94eOfavpX9kPxLq+tLqFrqV3LPBagbN5z1z/hX0wOnFLSMMqRXE/FvQo/EPgPWrCUsFkgLZXqCvzDH121+femXFxo2tRyx/u5YZgcjtzX6NeB9ZTW/D+n3kJVkkhBJHrXQYpRRRRTWQMMGo3jIhYbj0614r8avglZeMS+oaUUtNTUZYLwsvXr/wDWr5J8X+C9Z8J3jQarYSwgNgSAfK3uD2/Gul+Fnxf1jwTcojSPd2C8GJz0HtzX1l4E+MnhjxTZxMNQjtbsjmGQ4Ofxr0K21CC4j3QypKDyPLYGrAkG0E8ZoDN1GCKUOO9RvOA2ACTTkl/vIV/Wn7z2GRTDOBnPGPxp6vntTs0UtFFFFFFFFFFMkJEbEHnFec/G3wXH4v8ACN7B5e64ijMsTAchhzj9K+DreS78Pa7E674bmym5PTkHn+VfoR8K/FcfjHwbp2rxhEeWPEsan7jDqK7KiiiiiiiiiiiiiiiiimkgdaqX91Hb2dzK0gURxs+T2wDX52fFbXG1/wAZ6lfM4cPKwU+oB4NfVP7JvhhdI8ADUJYyLjUXMpJHVBgAfmte4xD0BqaiiiiiiiiiisTxRoVv4h0i60+8TMFwmxvX2NfM+sfsuXjaqzabqMQsSc4c/MBntXtnwh+G1p4D0iW3tyzTSn947dTXoyjAApaQ9DWffgzWt5Ey5RkYfpX5w+P0WHxfrcCDAjunUfgxr7P/AGW5pJvhdZmRiwVigb6Y/wAa9gooooopGztOOtQGEHgoCPU9ax/E/hnTvEenz2eq2cVxDIMEuoyPpXy98Tv2cb7TpJLvwkkl7bE58j+NPp1zXhGpaPqfh6/aK/s7i0mBwN2VIrd8L/E3xT4bkDafq8wVT9xyWB/OvV9B/an1q1jWPVNHt7vGAZBKVP8AKu20v9qbQJkH9pabd279/LG8fzFdFaftJeB5IiZZ7xG9DCP/AIqsbWP2nfDNs5/s+2uroY43LtGfzNcZqv7Vl/IzDTtEiiXsXkyf5VjW37UXilLrdNZ2kkGf9XgA/nivS/B37S/h7UIFj8QQTadcnqY/nXPucivY/DXjHQvEMKSaTqlvcgjojZP41vq6nowPapBRRRRRRRRRRRTW4U8Z9qg8ptjqeQecf0r4n/ai8G/2D4zkvbVNtneDzOBwrd/610/7HnjQ2us3nhm7mAhuQZYATwHH3sfXivrcSKc4YcU+iiiiiiiiiiiiiiiio5fu/pXNfEKf7F4O1ufONlq361+b5LTSs7HJya/SP4f6fFp/hHSLeAYjjgXH5Z/rXSIMDFOooooooooooooooooqpP8A6if/AHD/AFr83fiL/wAj14i/6/Jf/QzX2V+yl/ySaz/67P8AyWvY6KKKKKKKKguv9VyMjI7ZrE17w1pXiCDydS02C6iPUyAV5N4n/Zq8M6l5j6a8thIxJAQ/KPwxXn2pfsqapGzNZa7BIp+6piOR9TmuU1L9m7xras32eGC5Qdw4Gf1rnrn4KeNrfPmaJM3snNJp/wAFPG962F0SaIZxmTiuqsP2ZvGVygeVrWEHs7DP86df/szeLrWB5Eltpyv8KEZ/nXnniH4deJNAlZNQ0uYBRuyqkjH+RWb4d13UfDl3De2E8lvLG/3Q3X2I/Cvun4L+P4PHHhu1uTIovkXZNHnnPrXpIoooooooooooooryP9ozwWvinwXczRR5urRfMUjqQM8V8V+ENcuPCviG01K2yl1ZzB8Hvg/d/Sv0O8F61Br/AId07ULRwyXEIkBz3zhh+YNdCuNoxS0UUUUUUUUUUUUUUUyQZGDXI/FoZ+HfiH/r2P8AMV+cSu8ZIB5r9MfA8nm+FNLcHIMCfyrcpaKKKKKKKKKKKKKKKTsaztVnFrp99Ixxsid8/QE1+bfi64+2+J9WuQd32i6dx9CxNfdH7OulHSfhhpkbcedmZR7HA/pXp1FFFFFFFFIQCMGkCKOgFG0ZzRtFAUDtRsGKb5Keh/OnBAKRY1AIA61n6hpdndwyJcW0cgZDH8654P8A+uvij9of4eXPhbW5by1tgmlTNkMvIUnmsf4B+NLrwp4zsljlY2tzIInj7HJxn9a+/LeTzbeKT++ob8xU1FFFFFFFFFFFFVrqJJY3R1DKylSD3HpXwJ8f/CZ8K+Pr6KOHy7WZ/Oi9CCTwPyr3X9jnxS+o+Hr/AES6m3SWT74VPaM44/NjX0an3R9KdRRRRRRRRRRRRRRRTHOB+Nct8ToHuvAuuQRDMjQEAfr/AEr8472Bo7mRSMEHFfop8INRh1H4e6LLCxYeQFJx3FdnnnHelooooooooooooooopOxrjfitqSaX4D168kcqqWxXI9zt/rX55aVA97q8UYBZpHwB+Nfo74EsW07wrpFqwwYoAuBXR0UUUUUUUUUUUUUUUUUzby3ANeW/tL2Udx8ItckkQMYUEik/wnOP618O+DSV8SaWynB+0IP1r9LNI/5Btr/1xT+VW6KKKKKKKKKKKKhnVmB29R0rwL9rjwh/afhBNbt41M+nkAnuUPX+VeDfs4eJX0D4lacN5SC7JhlA6EYOB+YFffMJJiUt1xzT6KKKKKKKKKKKKKKKZIMrjv1qrfW6XVpcxOMpKhU/lX54fFzQX8P+NdStHXaqykoP9nJr6U/Y78RtqHhW90mVyTZv8mfQ4/xr6DTlz7YqWiiiiiiiiiiiiiiimSsVicjqBmvBf2vfEDad8P4bCEnGozCMkeg+b+a184/APSl1r4iaXbSKCm/J/MV+gtsgSNVUYVVAFTUUUUUUUUUUUUUUUUUUV5v+0Su74OeJva3/APZhXwZ4UbZ4h0o/9PC/zr9LtI/5Bdl/1xT/ANBq7RRRRRRRRRRRRTT1NY3i7SYta8O6hYTqGjnjKEH6V+eVzbyeG/HBhJKNZ3o59gc1+ifhm7/tHw9pt4f+W9ukn5gGtWiiiiiiiiiiiiiiikNNIG08CvkT9sjw79n1vTtXijwk6lJHA43dq5z9k3xPHonjl7C5l2Qainl8ngMOR+eMV9q2Rcn5j06+/p+lXKKKKKKKKKKKKKKKKZIcRuRzgV8qftsXAEnh+0384MoX2+YZrmP2PNL+2ePJ7pl+W2hLA+/FfaMZHCjoBmpKKKKKKKKKKKKKKKKKKK89/aAAPwe8U5/59f8A2YV8EeDgD4m0sHkfaF/mK/SzSv8AkGWf/XFP/Qau0UUUUUUUUUUUUYpjqCmOxr89fj/atYfFnxAuMAzq6/8AfC19p/Be7N78NvD824t/oqjk+gFdvF92n0UUUUUUUUUUUUUUmKMcEV5p8e/CI8W+Ar61RQJoB50TYydwzXwhbvc6FrEbxMYr21l3Z6YIOf6V99/BvxxbeNvCFjfRHE8aCGdWPIkHB/PBNd0sxbO1cke9Sody5FLRRRRRRRRRRRRUckmztk9aa0oZSFGSRxnivgb9ovxM/iP4kantm8y1s3EEPPQY5/Umvdf2Q/DZsPCsmqyJ+8vHJDYxhRkY/HivoK3BVsE54xViiiiiiiiiiiiiiiiiiivPvj8M/CDxQP8Ap1/9mFfA/g7/AJGbSv8Ar4T+dfpbpP8AyDbX/rin8quUUUUUUUUUUUUUVHMCYyAcE8Zr4W/astfs/wAULtv+eiq2fX5QP6V9Pfs3yGX4SaGT/ChWvTU4z9adRRRRRRRRRRRRRRRRVeZVlVkZcqeGBHWvjT9p74ay+H9XOv2EW6wumw+3+A//AF6534AfEQ+DvFCpfzsNNuiI3TtGezfhjFfcGm3cV5bxTwkPEyh0kB4YGtNCCoI6U6iiiiiiiiiiikyM4yM1DcEbecbe9eI/Hz4txeE9NvNK0m5WXWJlIGD/AKkev1r5C0WxufEviG1t4o2muLmUBmHJJLZJNfoR8O/Dg8MeFLDTYiD5UYBPv3rpYBhRnrUtFFFFFFFFFFFFFFFFFFef/Hzj4QeKP+vX/wBmFfA/g/8A5GfScf8APyn/AKFX6WaT/wAg21/64p/KrlFFFFFFFFFFFFFNft9a+M/2zLPyPG2nzhcedb7s+vJH9K99/Zq4+EejfRv516evenUUUUUUUUUUUUUUUUUVznjXw/a+JdHudNvow8M8ZUE/wt2P518B/ErwZf8AgzxRc2F3EdikvGezJng/rXtf7NnxlSxRfDnie5xbjatpM4+6e4J/KvqSylSSJZLdxLE43K2cjFW4WD5IPTg4qWiiiiiiiiiioRjLHHzDivI/j/8AFW38DaM1pYMkutXKkQoeRH6ufpXxjdLqfiTVS0pkvb66cfMeWJJ719Wfs7/B5fDgTWtYXN8y/KhH3a+gE6DjHtTx3paKKKKKKKKKKKKKKKKKK87/AGg/+SO+Kf8Ar1/9mFfB3gf/AJGzSP8Ar6j/APQq/SvS/wDkHW3/AFyX+VWqKKKKKKKKKKKKKRjhSa+Tv224f+Jh4fn7eUU/VjXpH7KWqC++F9nApybaR1b25OP5V7PGcjnrin0UUUUUUUUUUUUUUUUVHIm4dvxrzf4x/Da08b6Dcq0arqCLuhmHXPofavifxr4O1nwdqE9tqEDxxFhtkUfK2Dxg16D8HPjpqnhGZLHVle+0rhcE/NGPXNfXvhPxTp3iPSor/SLiOWBlydrdD6EetbyXBYqCNpIzz3qwKKKKKKKKZK+xc4yKj8xi6YZdp7HrXHfEvxxp/gXQbi+1OVQ7giOMH5nbsAK+EPG3im+8Y+JLi+uPmlmYiJBzsXPAHvX0x+zP8J/7Js4te12DNzKu6GN/4B64r6HiQL0GO3FTKOKUDFLRRRRRRRRRRRRRRRRRRXnf7Qf/ACR3xT/16/8Aswr4O8Df8jfoo7G6j/8AQq/SzTv+PC3/AOuS/wAqs0UUUUUUUUUUUUU1hlSK+YP22IA1joc3OVYj/wBCqT9ifUWbSfEFg5GFljdB36NmvpqPlcnqRT6KKKKKKKKKKKKKKKKKYyknINDBvLYDBPvXMeLfCOm+J9OnstRsonjkXG9gMg+oPb8K+NvjN8Hb/wAD30txZJJc6QzZRxyR9awPhp8QdS8DaxFeWkzG1BzNbE5VvYCvuH4beLrLxr4ei1TT5AVc4dT1jb0rsF6Cloooooopkv3Dnp3rm/F/iOz8MaJc6lduAkAB5/T+VfCPxR8d6h498QS3l7KVt42xBFk4VcnoPX616F+zx8JZ/EGsRa1qtq8OnW7AoG6SHFfZMFskW1YwAijaoHRRU4AFOXpS0UUUUUUUUUUUUUUUUUUV5z+0Kf8Aiz3ib3tv/ZhXwh4JwPFmjN6XMf8A6FX6V6Zzp9sf+mS/yq1RRRRRRRRRRRRRTXr50/bStmfwjpU6qSEuME+nBrg/2Mrt4/GN9ag/JJAzEe4x/jX2OncU6iiiiiiiiiiiiiiiiiiiisPxFo8GuWVxZ3kKSwyDZhh0461+fXxR0iLSfGWsWdsmyG1naIe/J/wr6e/Y0lZ/AV4h6Lctj8hX0FS0UUUUUVHN92vGv2o9Ju734ZXj2LMDbyLLJj+JRnivinQLhLfWrV7oboxKu4H0zX6OeBY7QeGNOewiRLd4EddvfKgmt4gg8dKfSp0paKKKKKKKKKKKKKKKKKKK84/aH/5I94l/69//AGYV8H+Df+Ro0j/r5T/0Kv0s0n/kHWv/AFxT+VW6KKKKKKKKKKKKKa3Tj1rxn9qy0S4+Fl/LIMtAUdPrvA/ka8D/AGSL37P8S44s/wCuiZf5V9xJ606iiiiiiiiiiiiiiiiiiiisvW70WNheXLttWCMyZ/Cvzm+IertrXi7Vr4MSk07sP++jX17+yjok2k/DuC4mBX7c5lVT6cc/pXt46UtFFFFFFRT/AHOOvasbxXpcereHL7TpIw6TREFT3r83tdszp2r38DjDRTMmPxr7j/Zh1xtZ+GNl5sheS3JiJPoCQP5V60vSjFKvelooooooooooooooooooorzj9of/AJI94l/69/8A2YV8H+Dv+Rn0j/r5T+Yr9K9J/wCQba/9cU/lVyiiiiiiiiiiiiikNeR/tRgf8Km1L6r/AOhCvmX9l0Mfi1pgUnABJ/SvvNCQKdn3p1FFFFFFFFFFFFFFFFFFFeQftMeKk8O/D28jSQrc3mIEA+oJ/TNfGPgXRZfEvi3T9NiAYTzYbPpnrX6JeHdKi0rSLOxt0CpbII1HbFbQGBgUtFFFFFFNYZFRrG3y5xkDBr8/f2gdF/sf4n6zCqhUeTzV9CCOte5/sYarG/h3UdNLHzUl3ge3P+NfR4ceZjB571LQO9LRRRRRRRRRRRRRRRRRRRXm/wC0QwX4P+JM97fH/jwr4Q8FjPijSB6XK/zFfpZpf/IMs/8Arin8hVuiiiiiiiiiiiiikY4BPpXkX7UrY+E2p/8AAf8A0IV85/sl25m+KsDDH7uB2/UV9zIQQcduKXFPooooooooooooooooooor43/bH1/7d4ttNIjc+XZRAsvq5z/Rqj/Y98OC78X3WqzoCtpGVXP94kf4V9gwgsTu43dKtAcAUtFFFFFFFFfJP7Z3h0R6npeuouFlX7O5HcjJH864/wDZS8QjSPiAlpK+IrxTHj34/wAK+34WVkXHQjipqB3paKKKKKKKKKKKKKKKKKKK8x/aSbb8HvEPvEB+tfDfgNN/ivSf+vlP5iv0n0wY0+1/65J/KrdFFFFFFFFFFFFFNf7jV5D+1P8A8km1T/gH/oQrwn9jeASfES4k/uWr/wA1r7Sh+5n15p9LRRRRRRRRRRRRRRRRRTX+6aglm8vexICKMkn0r86vi5q7678QvEF+zEq9x8vPoAv9K+qv2RtEOnfDtryVNst3IWyRzgE17ngelLRRRRRRRRRXlH7Q3hoa78OdXCrueBBcLx0IOTj8BXxF4Svzpev6feISrxTA8HnrX6RaJcLe6dZ3CH5WjBrRoHeloooooooooooooooooooryz9phtvwg1z3QD9a+Jfh2u7xfpC+t1H/AOhV+kunjFjbD/pmv8qsUUUUUUUUUUUUUU1uleQ/tRkn4T6sV6goP/HhXif7GA/4rjUD/wBOzfzFfY8R9OlSUtFFFFFFFFFFFFFFFFFNb7p4rnvGouD4b1IWXNyYHEaj+IkHFfnrZ6Je6v4qNiVZbma5KOMcj5uTX6E+ANFXQPCmm6ao/wBRAqlgOpxya6SiiiiiiiiiisfxFbfb9JvrFwoN1E8QOfVSK+DH+GfiKHxnLYrpczeXcnB2/KVDcHNfd/hCym07QdPtJjuaKIKze9bdA70tFFFFFFFFFFFFFFFFFFFeefHjQbrxD8NdVsNPXfcuoKr64r5E+FHw91+68d6Wr6fNGsM6ySM4wAAea++LZPLt4k/uqB+lTUUUUUUUUUUUUUUyT7h5x71zPxC8LQeL/DF5pFzIYkuFAMirkrg5zj8K83+C3wZm+HuvXt8dRF0kqmJQV2kLnr9eK9sgG1MZz71JS0UUUUUUUUUUUUUUUUUjfdNUZ42CqkakyMcgkcAelYdl4J0OyvpL6HTIPtbHcX2859a6O3B44IAHOasUUUUUUUUUUVUeEOGJQsc5we1M8gB1cRJg8H5eRTrZXUKckIecVboHeloooooooooooooooooooqOZNyY7VTgsYoW3Rwop6KVXnHvV9elLRRRRRRRRRRRRRTWGRg01e4xxTMMWOAPxFPjBGcjFPpaKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK/9k='
82760
+ headImage: ''
82761
82761
  };
82762
82762
  this.$emit('click', readData);
82763
82763
  }
@@ -82775,11 +82775,11 @@ var es_array_push = __webpack_require__(7658);
82775
82775
  ;
82776
82776
  var id_card_reader_demo_component = normalizeComponent(
82777
82777
  src_id_card_reader_demovue_type_script_lang_js_,
82778
- id_card_reader_demovue_type_template_id_e321b460_scoped_true_render,
82779
- id_card_reader_demovue_type_template_id_e321b460_scoped_true_staticRenderFns,
82778
+ id_card_reader_demovue_type_template_id_3d89866c_scoped_true_render,
82779
+ id_card_reader_demovue_type_template_id_3d89866c_scoped_true_staticRenderFns,
82780
82780
  false,
82781
82781
  null,
82782
- "e321b460",
82782
+ "3d89866c",
82783
82783
  null
82784
82784
 
82785
82785
  )
@@ -85004,50 +85004,45 @@ class UdsPluginSocketService {
85004
85004
  _defineProperty(UdsPluginSocketService, "scannerCameraUrl", 'ws://127.0.0.1:8341');
85005
85005
  _defineProperty(UdsPluginSocketService, "ws", void 0);
85006
85006
  _defineProperty(UdsPluginSocketService, "requestStore", []);
85007
- ;// CONCATENATED MODULE: ./packages/service/external-plugins/ewp-plugin-socket.service.ts
85007
+ ;// CONCATENATED MODULE: ./packages/service/external-plugins/wei-rong-plugin-socket.service.ts
85008
85008
 
85009
85009
 
85010
- /**
85011
- * 沃斯德人证交互终端
85012
- * E窗通WEBSOCKET服务
85013
- *
85014
- * */
85015
85010
 
85016
- var EWindowPassMethodCode;
85017
- (function (EWindowPassMethodCode) {
85018
- /** 读取社保卡 */
85019
- EWindowPassMethodCode["iReadCardBas"] = "iReadCardBas";
85011
+ /**
85012
+ * @author: lvcy
85013
+ * @date: 2024-03-22
85014
+ * @description:国产客户端,硬件对接
85015
+ */
85016
+ var WEIRONGMethodCode;
85017
+ (function (WEIRONGMethodCode) {
85018
+ /** 读卡 */
85019
+ WEIRONGMethodCode["ReadCard_Base64"] = "ReadCard_Base64";
85020
+ /** 开始签名*/
85021
+ WEIRONGMethodCode["StartSignName"] = "StartSignName";
85022
+ /** 获取签名状态*/
85023
+ WEIRONGMethodCode["GetSignNameStatus"] = "GetSignNameStatus";
85020
85024
  /** 获取签名*/
85021
- EWindowPassMethodCode["GetSignName_Base64"] = "GetSignName_Base64";
85022
- /** 读取二代身份证 */
85023
- EWindowPassMethodCode["ReadIDCard_Base64"] = "ReadIDCard_Base64";
85025
+ WEIRONGMethodCode["GetSignName_Base64"] = "GetSignName_Base64";
85024
85026
  /** 人证比对 */
85025
- EWindowPassMethodCode["FaceValidateWithIdCard_Base64"] = "FaceValidateWithIdCard_Base64";
85026
- /** 获取指纹 */
85027
- EWindowPassMethodCode["FingerPrint_Base64"] = "FingerPrint_Base64";
85028
- })(EWindowPassMethodCode || (EWindowPassMethodCode = {}));
85029
- const EWindowPassMethodDesc = {
85030
- [EWindowPassMethodCode.iReadCardBas]: '读取社保卡',
85031
- [EWindowPassMethodCode.GetSignName_Base64]: '获取签名',
85032
- [EWindowPassMethodCode.ReadIDCard_Base64]: '读取二代身份证',
85033
- [EWindowPassMethodCode.FaceValidateWithIdCard_Base64]: '人证比对',
85034
- [EWindowPassMethodCode.FingerPrint_Base64]: '获取指纹'
85027
+ WEIRONGMethodCode["FaceValidateWithIdCard_Base64"] = "FaceValidateWithIdCard_Base64";
85028
+ /** 打开高拍仪器*/
85029
+ WEIRONGMethodCode["TurnOnTheCamera"] = "TurnOnTheCamera";
85030
+ /** 拍照*/
85031
+ WEIRONGMethodCode["ScannerCamera"] = "ScannerCamera";
85032
+ })(WEIRONGMethodCode || (WEIRONGMethodCode = {}));
85033
+ const WEIRONGMethodDesc = {
85034
+ [WEIRONGMethodCode.ReadCard_Base64]: '读卡',
85035
+ [WEIRONGMethodCode.GetSignName_Base64]: '获取签名',
85036
+ [WEIRONGMethodCode.FaceValidateWithIdCard_Base64]: '人证比对'
85035
85037
  };
85036
- class EWindowPassService {
85038
+ class WeiRongPluginService {
85037
85039
  static startConnect(method) {
85038
- if (this.ws && this.ws.readyState === WebSocket.CONNECTING) {
85040
+ console.log('startConnect', method, this.ws?.readyState, WebSocket.CONNECTING);
85041
+ if (this.ws && this.ws.readyState === WebSocket.OPEN) {
85039
85042
  return this;
85040
85043
  }
85041
- let webSocketUrl = '';
85042
- switch (method) {
85043
- case EWindowPassMethodCode.FingerPrint_Base64:
85044
- webSocketUrl = this.fingerPrintBasWebSocketUrl;
85045
- break;
85046
- default:
85047
- webSocketUrl = this.iReadCardBasWebSocketUrl;
85048
- break;
85049
- }
85050
- const ws = new WebSocket(webSocketUrl);
85044
+ console.log('重新链接');
85045
+ const ws = new WebSocket(this.webSocketUrl);
85051
85046
  let resolved;
85052
85047
  const onConnect = new Promise(resolve => {
85053
85048
  resolved = resolve;
@@ -85056,15 +85051,6 @@ class EWindowPassService {
85056
85051
  resolved(true);
85057
85052
  };
85058
85053
  ws.onmessage = event => {
85059
- if (method === EWindowPassMethodCode.FingerPrint_Base64) {
85060
- // 指纹后端返回的是string
85061
- event = {
85062
- ...event,
85063
- data: JSON.stringify({
85064
- fingerPrintInfo: event.data
85065
- })
85066
- };
85067
- }
85068
85054
  this.handleMessage(event);
85069
85055
  };
85070
85056
  ws.onclose = () => this.handleClose();
@@ -85080,7 +85066,7 @@ class EWindowPassService {
85080
85066
  reject('handleError');
85081
85067
  });
85082
85068
  }
85083
- throw Error('E窗通设备功能加载失败');
85069
+ throw Error('设备功能加载失败');
85084
85070
  }
85085
85071
  static handleClose() {
85086
85072
  for (const type in this.requestStore) {
@@ -85098,61 +85084,73 @@ class EWindowPassService {
85098
85084
  } catch (e) {
85099
85085
  data = '';
85100
85086
  }
85101
- this.requestStore.forEach(({
85102
- resolve
85103
- }) => {
85104
- resolve(data);
85105
- });
85106
- this.requestStore = [];
85107
- this.ws.close();
85087
+ if (data.method === 'FaceScreenStream' || data.method === 'VideoStream') {
85088
+ const event = new ScannerCameraRefreshPhotoEvent(data.imgBase64);
85089
+ return window.dispatchEvent(event);
85090
+ } else {
85091
+ this.requestStore.forEach(({
85092
+ resolve
85093
+ }) => {
85094
+ resolve(data);
85095
+ });
85096
+ this.requestStore = [];
85097
+ }
85108
85098
  }
85109
85099
  static async read(method) {
85110
85100
  await this.startConnect(method);
85111
- const methodDesc = EWindowPassMethodDesc[method];
85101
+ const methodDesc = WEIRONGMethodDesc[method];
85112
85102
  if (this.ws.readyState === 1) {
85113
- if (method !== EWindowPassMethodCode.FingerPrint_Base64) console.log(methodDesc + '连接成功');
85114
85103
  let jsonString;
85115
- // outTimes:超时时间(秒)
85116
85104
  switch (method) {
85117
- case EWindowPassMethodCode.ReadIDCard_Base64:
85118
- // cardReader:0 读卡器-USB;1 读卡器-COM
85105
+ case WEIRONGMethodCode.ReadCard_Base64:
85119
85106
  jsonString = JSON.stringify({
85120
- method,
85107
+ method: 'ReadIDCard_Base64',
85121
85108
  args: {
85122
85109
  outTimes: 30,
85123
- cardReader: 1
85110
+ cardReader: 0
85124
85111
  }
85125
85112
  });
85126
85113
  break;
85127
- case EWindowPassMethodCode.FaceValidateWithIdCard_Base64:
85128
- // cardReader:0 读卡器-USB;1 读卡器-COM
85114
+ case WEIRONGMethodCode.FaceValidateWithIdCard_Base64:
85129
85115
  jsonString = JSON.stringify({
85130
- method,
85116
+ method: 'FaceValidateWithIdCard_Base64',
85131
85117
  args: {
85132
85118
  outTimes: 30,
85133
- cardReader: 1,
85134
- cameraType: 0
85119
+ score: 75
85135
85120
  }
85136
85121
  });
85137
85122
  break;
85138
- case EWindowPassMethodCode.iReadCardBas:
85139
- // icType:1接触卡;2非接触卡;3自动(接触优先);4自动(非接优先)
85123
+ case WEIRONGMethodCode.StartSignName:
85140
85124
  jsonString = JSON.stringify({
85141
- method,
85125
+ method: 'SignNameScreen_Start',
85142
85126
  args: {
85143
- icType: '1'
85127
+ outTimes: 30
85144
85128
  }
85145
85129
  });
85146
85130
  break;
85147
- case EWindowPassMethodCode.FingerPrint_Base64:
85148
- // 获取指纹:getimgae,颜色(0黑色 1红色), 质量(默认0), 图像大小(288,360),类型(0民用,1公安)
85149
- jsonString = 'getimgae,1,0,288,0';
85131
+ case WEIRONGMethodCode.GetSignNameStatus:
85132
+ jsonString = JSON.stringify({
85133
+ method: 'SignNameScreen_Status',
85134
+ args: {}
85135
+ });
85150
85136
  break;
85151
- default:
85137
+ case WEIRONGMethodCode.GetSignName_Base64:
85152
85138
  jsonString = JSON.stringify({
85153
- method,
85139
+ method: 'SignNameScreen_Get',
85140
+ args: {}
85141
+ });
85142
+ break;
85143
+ case WEIRONGMethodCode.TurnOnTheCamera:
85144
+ jsonString = JSON.stringify({
85145
+ method: 'VideoStart',
85146
+ args: {}
85147
+ });
85148
+ break;
85149
+ case WEIRONGMethodCode.ScannerCamera:
85150
+ jsonString = JSON.stringify({
85151
+ method: 'GetCameraImage',
85154
85152
  args: {
85155
- outTimes: 30
85153
+ imagePath: ''
85156
85154
  }
85157
85155
  });
85158
85156
  break;
@@ -85171,441 +85169,99 @@ class EWindowPassService {
85171
85169
  throw Error(methodDesc + '未准备完成');
85172
85170
  }
85173
85171
  }
85174
- /**
85175
- * 读取二代身份证
85176
- * */
85177
- static async idCardRead(method = EWindowPassMethodCode.ReadIDCard_Base64) {
85178
- const readData = await EWindowPassService.read(EWindowPassMethodCode.ReadIDCard_Base64);
85179
- console.log('读取二代身份证==>', readData);
85172
+ /** 读取身份证和永居证*/
85173
+ static async idCardRead() {
85174
+ const readData = await WeiRongPluginService.read(WEIRONGMethodCode.ReadCard_Base64);
85180
85175
  if (!readData) {
85181
- throw Error('未匹配可用的E窗通读取设备');
85176
+ throw Error('未匹配到可用的读取设备');
85182
85177
  }
85183
85178
  if (readData.retVal !== 0) {
85179
+ this.ws?.close();
85184
85180
  throw Error("读取二代身份证失败,返回值:" + readData.retVal + ",错误信息:" + readData.errMsg);
85185
85181
  }
85186
- const idInfo = readData.idInfo.data;
85187
- const {
85182
+ let idInfo = readData.idInfo;
85183
+ // name:姓名 "ENfullname":"英文姓名" sex:性别 nation:民族 number 身份证号码 birthday: 生日 address: 地址,
85184
+ // organs:签发机关 signdate:开始有效期 validterm: 结束有效期
85185
+ let {
85188
85186
  name,
85187
+ ENfullname: englishName,
85188
+ Nationality,
85189
85189
  sex,
85190
85190
  birthday,
85191
85191
  address,
85192
- id_num,
85193
- nations
85192
+ number,
85193
+ nation,
85194
+ organs: police,
85195
+ signdate: validStart,
85196
+ validterm: validEnd
85194
85197
  } = idInfo;
85198
+ let chineseName = '',
85199
+ cardType = '1',
85200
+ nationality = '中国';
85201
+ // 外国人永居证
85202
+ if (readData.cardType == 1 || readData.cardType == 2) {
85203
+ cardType = '9'; // 永居证
85204
+ chineseName = name;
85205
+ name = name || englishName; // 姓名,先读中文名,没有时读英文名
85206
+ police = police || '中华人民共和国国家移民管理局'; // 发证机关,读不到,默认
85207
+ nationality = Nationality; // 永居证国籍放在名族里面的
85208
+ nation = '';
85209
+ } else {
85210
+ // 身份证
85211
+ cardType = '1'; // 身份证
85212
+ }
85213
+
85195
85214
  const IDCardData = {
85196
85215
  info: {
85216
+ cardType,
85217
+ nationality,
85197
85218
  name,
85219
+ chineseName,
85220
+ englishName,
85198
85221
  sex,
85199
85222
  birthday: birthday.replace('-', '').replace('-', ''),
85200
85223
  address,
85201
- cardId: id_num,
85202
- nation: nations
85224
+ cardId: number,
85225
+ nation,
85226
+ police,
85227
+ validStart,
85228
+ validEnd
85203
85229
  },
85204
- headImage: readData.idPhotoPicBase64
85230
+ headImage: readData.idPhotoBase64
85205
85231
  };
85206
- console.log('读取二代身份证结果==>', IDCardData);
85232
+ this.ws?.close();
85207
85233
  return IDCardData;
85208
85234
  }
85209
- /**
85210
- * 人证比对
85211
- */
85212
- static async faceValidateWithIdCardRead() {
85213
- const readData = await EWindowPassService.read(EWindowPassMethodCode.FaceValidateWithIdCard_Base64);
85214
- console.log('人证比对==>', readData);
85235
+ /** 读取社保卡 */
85236
+ static async socialSecurityCardRead() {
85237
+ const readData = await WeiRongPluginService.read(WEIRONGMethodCode.ReadCard_Base64);
85215
85238
  if (!readData) {
85216
- throw Error('未匹配可用的E窗通读取设备');
85239
+ throw Error('未匹配可用的读取设备');
85217
85240
  }
85218
85241
  if (readData.retVal !== 0) {
85219
- throw Error("人证比对失败,返回值:" + readData.retVal + ",错误信息:" + readData.errMsg);
85242
+ this.ws?.close();
85243
+ throw Error("读取社保卡基本信息失败,返回值:" + readData.retVal + ",错误信息:" + readData.idInfo);
85220
85244
  }
85221
- const idInfo = readData.idInfo.data;
85222
- const {
85245
+ // 返回数据:cardType 3 社保卡
85246
+ // idInfo: {
85247
+ // name:姓名
85248
+ // sex:性别
85249
+ // nation:民族
85250
+ // cardnumber:卡号
85251
+ // number:社会保障号码(身份证号)
85252
+ // birthday:出生日期"\
85253
+ // city:城市代码
85254
+ // signdate:开始有效期
85255
+ // validterm:结束有效期
85256
+ // cardveVrsion:社保卡版本
85257
+ // }
85258
+ const idInfo = readData.idInfo;
85259
+ let {
85223
85260
  name,
85224
85261
  sex,
85225
- birth,
85226
- address,
85227
- idNo,
85228
- nation
85229
- } = idInfo;
85230
- const IDCardData = {
85231
- idCard: {
85232
- info: {
85233
- name,
85234
- sex,
85235
- birthday: birth.replace('-', '').replace('-', ''),
85236
- address,
85237
- cardId: idNo,
85238
- nation
85239
- },
85240
- headImage: readData.idPhotoBase64
85241
- },
85242
- faceimg: readData.scenceBase64
85243
- };
85244
- console.log('人证比对结果==>', IDCardData);
85245
- return IDCardData;
85246
- }
85247
- /** 读取社保卡 */
85248
- static async socialSecurityCardRead() {
85249
- const readData = await EWindowPassService.read(EWindowPassMethodCode.iReadCardBas);
85250
- if (!readData) {
85251
- throw Error('未匹配可用的E窗通读取设备');
85252
- }
85253
- if (readData.retVal !== 0) {
85254
- throw Error("读取社保卡基本信息失败,返回值:" + readData.retVal + ",错误信息:" + readData.outInfo);
85255
- }
85256
- // 返回数据:330100|350781196403072943|W57681892|331100D10600000300657BCF88899F8E|张三|3B6D000000815444368660330100286BCF|1.00|2020-08-12|2030-08-12|1|SN00000000|(邮编|身份证号|卡号|社会保障号码|姓名|...不知道是什么信息了)
85257
- const outInfo = readData.outInfo;
85258
- const outInfoArray = outInfo.split('|');
85259
- const cardId = outInfoArray[1];
85260
- const birthday = IdCardCommonUtils.getBirthdayByIdNumber(cardId).replace('-', '').replace('-', '');
85261
- const sex = IdCardCommonUtils.getGenderByIdNumber(cardId);
85262
- const IDCardData = {
85263
- info: {
85264
- name: outInfoArray[4],
85265
- sex,
85266
- birthday,
85267
- address: '',
85268
- cardId
85269
- },
85270
- headImage: ''
85271
- };
85272
- console.log('读取社保卡==>', readData);
85273
- return IDCardData;
85274
- }
85275
- /** 获取签名-base64 */
85276
- static async signNameRead() {
85277
- const readData = await EWindowPassService.read(EWindowPassMethodCode.GetSignName_Base64);
85278
- if (!readData) {
85279
- throw Error('未匹配可用的E窗通读取设备');
85280
- }
85281
- if (readData.retVal !== 0) {
85282
- throw Error("读取签名失败,返回值:" + readData.retVal + ",错误信息:" + readData.errMsg);
85283
- }
85284
- console.log('获取签名==>', readData);
85285
- return readData.signPicBase64;
85286
- }
85287
- /** 获取指纹*/
85288
- static async fingerPrintRead() {
85289
- let timeOver = 30;
85290
- async function readFingerPrint() {
85291
- const readData = await EWindowPassService.read(EWindowPassMethodCode.FingerPrint_Base64);
85292
- if (!readData) {
85293
- throw Error('未匹配可用的E窗通读取设备');
85294
- }
85295
- let list = readData.fingerPrintInfo.split("|");
85296
- console.log(list);
85297
- let ret = Number(list[1]);
85298
- if (ret > 1) {
85299
- if (timeOver > 0) {
85300
- timeOver--;
85301
- return await readFingerPrint();
85302
- } else {
85303
- return {
85304
- status: 'error',
85305
- data: '已超时,请重新操作,按压指纹'
85306
- };
85307
- }
85308
- } else {
85309
- return {
85310
- status: 'success',
85311
- data: readData.fingerPrintInfo
85312
- };
85313
- }
85314
- }
85315
- let {
85316
- status,
85317
- data
85318
- } = await readFingerPrint();
85319
- if (status === 'error') {
85320
- throw Error(data);
85321
- } else {
85322
- let [method, result, quality, image, featureCode] = data.split('|');
85323
- // getimgae|1|68|......|......
85324
- // method:方法,result:返回的状态,quality:指纹图片质量,image:图片base64,featureCode:指纹特征码
85325
- return {
85326
- method,
85327
- result,
85328
- quality,
85329
- image,
85330
- featureCode
85331
- };
85332
- }
85333
- }
85334
- }
85335
- _defineProperty(EWindowPassService, "iReadCardBasWebSocketUrl", 'ws://127.0.0.1:5847');
85336
- _defineProperty(EWindowPassService, "fingerPrintBasWebSocketUrl", 'ws://127.0.0.1:9000');
85337
- _defineProperty(EWindowPassService, "ws", void 0);
85338
- _defineProperty(EWindowPassService, "requestStore", []);
85339
- ;// CONCATENATED MODULE: ./packages/service/external-plugins/wei-rong-plugin-socket.service.ts
85340
-
85341
-
85342
-
85343
-
85344
- /**
85345
- * @author: lvcy
85346
- * @date: 2024-03-22
85347
- * @description:国产客户端,硬件对接
85348
- */
85349
- var WEIRONGMethodCode;
85350
- (function (WEIRONGMethodCode) {
85351
- /** 读卡 */
85352
- WEIRONGMethodCode["ReadCard_Base64"] = "ReadCard_Base64";
85353
- /** 开始签名*/
85354
- WEIRONGMethodCode["StartSignName"] = "StartSignName";
85355
- /** 获取签名状态*/
85356
- WEIRONGMethodCode["GetSignNameStatus"] = "GetSignNameStatus";
85357
- /** 获取签名*/
85358
- WEIRONGMethodCode["GetSignName_Base64"] = "GetSignName_Base64";
85359
- /** 人证比对 */
85360
- WEIRONGMethodCode["FaceValidateWithIdCard_Base64"] = "FaceValidateWithIdCard_Base64";
85361
- /** 打开高拍仪器*/
85362
- WEIRONGMethodCode["TurnOnTheCamera"] = "TurnOnTheCamera";
85363
- /** 拍照*/
85364
- WEIRONGMethodCode["ScannerCamera"] = "ScannerCamera";
85365
- })(WEIRONGMethodCode || (WEIRONGMethodCode = {}));
85366
- const WEIRONGMethodDesc = {
85367
- [WEIRONGMethodCode.ReadCard_Base64]: '读卡',
85368
- [WEIRONGMethodCode.GetSignName_Base64]: '获取签名',
85369
- [WEIRONGMethodCode.FaceValidateWithIdCard_Base64]: '人证比对'
85370
- };
85371
- class WeiRongPluginService {
85372
- static startConnect(method) {
85373
- console.log('startConnect', method, this.ws?.readyState, WebSocket.CONNECTING);
85374
- if (this.ws && this.ws.readyState === WebSocket.OPEN) {
85375
- return this;
85376
- }
85377
- console.log('重新链接');
85378
- const ws = new WebSocket(this.webSocketUrl);
85379
- let resolved;
85380
- const onConnect = new Promise(resolve => {
85381
- resolved = resolve;
85382
- });
85383
- ws.onopen = () => {
85384
- resolved(true);
85385
- };
85386
- ws.onmessage = event => {
85387
- if (method === EWindowPassMethodCode.FingerPrint_Base64) {
85388
- // 指纹后端返回的是string
85389
- event = {
85390
- ...event,
85391
- data: JSON.stringify({
85392
- fingerPrintInfo: event.data
85393
- })
85394
- };
85395
- }
85396
- this.handleMessage(event);
85397
- };
85398
- ws.onclose = () => this.handleClose();
85399
- ws.onerror = () => this.handleError();
85400
- this.ws = ws;
85401
- return onConnect;
85402
- }
85403
- static handleError() {
85404
- for (const type in this.requestStore) {
85405
- this.requestStore.forEach(({
85406
- reject
85407
- }) => {
85408
- reject('handleError');
85409
- });
85410
- }
85411
- throw Error('设备功能加载失败');
85412
- }
85413
- static handleClose() {
85414
- for (const type in this.requestStore) {
85415
- this.requestStore.forEach(({
85416
- reject
85417
- }) => {
85418
- reject('close');
85419
- });
85420
- }
85421
- }
85422
- static handleMessage(msg) {
85423
- let data = '';
85424
- try {
85425
- data = JSON.parse(msg.data);
85426
- } catch (e) {
85427
- data = '';
85428
- }
85429
- if (data.method === 'FaceScreenStream' || data.method === 'VideoStream') {
85430
- const event = new ScannerCameraRefreshPhotoEvent(data.imgBase64);
85431
- return window.dispatchEvent(event);
85432
- } else {
85433
- this.requestStore.forEach(({
85434
- resolve
85435
- }) => {
85436
- resolve(data);
85437
- });
85438
- this.requestStore = [];
85439
- }
85440
- // this.ws.close();
85441
- }
85442
-
85443
- static async read(method) {
85444
- await this.startConnect(method);
85445
- const methodDesc = WEIRONGMethodDesc[method];
85446
- if (this.ws.readyState === 1) {
85447
- let jsonString;
85448
- switch (method) {
85449
- case WEIRONGMethodCode.ReadCard_Base64:
85450
- jsonString = JSON.stringify({
85451
- method: 'ReadIDCard_Base64',
85452
- args: {
85453
- outTimes: 30,
85454
- cardReader: 0
85455
- }
85456
- });
85457
- break;
85458
- case WEIRONGMethodCode.FaceValidateWithIdCard_Base64:
85459
- jsonString = JSON.stringify({
85460
- method: 'FaceValidateWithIdCard_Base64',
85461
- args: {
85462
- outTimes: 30,
85463
- score: 75
85464
- }
85465
- });
85466
- break;
85467
- case WEIRONGMethodCode.StartSignName:
85468
- jsonString = JSON.stringify({
85469
- method: 'SignNameScreen_Start',
85470
- args: {
85471
- outTimes: 30
85472
- }
85473
- });
85474
- break;
85475
- case WEIRONGMethodCode.GetSignNameStatus:
85476
- jsonString = JSON.stringify({
85477
- method: 'SignNameScreen_Status',
85478
- args: {}
85479
- });
85480
- break;
85481
- case WEIRONGMethodCode.GetSignName_Base64:
85482
- jsonString = JSON.stringify({
85483
- method: 'SignNameScreen_Get',
85484
- args: {}
85485
- });
85486
- break;
85487
- case WEIRONGMethodCode.TurnOnTheCamera:
85488
- jsonString = JSON.stringify({
85489
- method: 'VideoStart',
85490
- args: {}
85491
- });
85492
- break;
85493
- case WEIRONGMethodCode.ScannerCamera:
85494
- jsonString = JSON.stringify({
85495
- method: 'GetCameraImage',
85496
- args: {
85497
- imagePath: ''
85498
- }
85499
- });
85500
- break;
85501
- }
85502
- this.ws.send(jsonString);
85503
- return new Promise((resolve, reject) => {
85504
- if (!this.requestStore) {
85505
- this.requestStore = [];
85506
- }
85507
- this.requestStore.push({
85508
- resolve,
85509
- reject
85510
- });
85511
- });
85512
- } else {
85513
- throw Error(methodDesc + '未准备完成');
85514
- }
85515
- }
85516
- /** 读取身份证和永居证*/
85517
- static async idCardRead() {
85518
- const readData = await WeiRongPluginService.read(WEIRONGMethodCode.ReadCard_Base64);
85519
- if (!readData) {
85520
- throw Error('未匹配到可用的读取设备');
85521
- }
85522
- if (readData.retVal !== 0) {
85523
- this.ws?.close();
85524
- throw Error("读取二代身份证失败,返回值:" + readData.retVal + ",错误信息:" + readData.errMsg);
85525
- }
85526
- let idInfo = readData.idInfo;
85527
- // name:姓名 "ENfullname":"英文姓名" sex:性别 nation:民族 number 身份证号码 birthday: 生日 address: 地址,
85528
- // organs:签发机关 signdate:开始有效期 validterm: 结束有效期
85529
- let {
85530
- name,
85531
- ENfullname: englishName,
85532
- Nationality,
85533
- sex,
85534
- birthday,
85535
- address,
85536
- number,
85537
- nation,
85538
- organs: police,
85539
- signdate: validStart,
85540
- validterm: validEnd
85541
- } = idInfo;
85542
- let chineseName = '',
85543
- cardType = '1',
85544
- nationality = '中国';
85545
- // 外国人永居证
85546
- if (readData.cardType == 1 || readData.cardType == 2) {
85547
- cardType = '9'; // 永居证
85548
- chineseName = name;
85549
- name = name || englishName; // 姓名,先读中文名,没有时读英文名
85550
- police = police || '中华人民共和国国家移民管理局'; // 发证机关,读不到,默认
85551
- nationality = Nationality; // 永居证国籍放在名族里面的
85552
- nation = '';
85553
- } else {
85554
- // 身份证
85555
- cardType = '1'; // 身份证
85556
- }
85557
-
85558
- const IDCardData = {
85559
- info: {
85560
- cardType,
85561
- nationality,
85562
- name,
85563
- chineseName,
85564
- englishName,
85565
- sex,
85566
- birthday: birthday.replace('-', '').replace('-', ''),
85567
- address,
85568
- cardId: number,
85569
- nation,
85570
- police,
85571
- validStart,
85572
- validEnd
85573
- },
85574
- headImage: readData.idPhotoBase64
85575
- };
85576
- this.ws?.close();
85577
- return IDCardData;
85578
- }
85579
- /** 读取社保卡 */
85580
- static async socialSecurityCardRead() {
85581
- const readData = await WeiRongPluginService.read(WEIRONGMethodCode.ReadCard_Base64);
85582
- if (!readData) {
85583
- throw Error('未匹配可用的读取设备');
85584
- }
85585
- if (readData.retVal !== 0) {
85586
- this.ws?.close();
85587
- throw Error("读取社保卡基本信息失败,返回值:" + readData.retVal + ",错误信息:" + readData.idInfo);
85588
- }
85589
- // 返回数据:cardType 3 社保卡
85590
- // idInfo: {
85591
- // name:姓名
85592
- // sex:性别
85593
- // nation:民族
85594
- // cardnumber:卡号
85595
- // number:社会保障号码(身份证号)
85596
- // birthday:出生日期"\
85597
- // city:城市代码
85598
- // signdate:开始有效期
85599
- // validterm:结束有效期
85600
- // cardveVrsion:社保卡版本
85601
- // }
85602
- const idInfo = readData.idInfo;
85603
- let {
85604
- name,
85605
- sex,
85606
- birthday,
85607
- number: cardId,
85608
- cardnumber
85262
+ birthday,
85263
+ number: cardId,
85264
+ cardnumber
85609
85265
  } = idInfo;
85610
85266
  const IDCardData = {
85611
85267
  info: {
@@ -85621,26 +85277,6 @@ class WeiRongPluginService {
85621
85277
  this.ws?.close();
85622
85278
  return IDCardData;
85623
85279
  }
85624
- // 港澳台居住证协议
85625
- // {
85626
- // "method": "ReadIDCard_Base64",
85627
- // "retVal": 0,
85628
- // "errMsg":"",
85629
- // "cardType":"4",
85630
- // "idInfo":{
85631
- // "name":"中文姓名",
85632
- // "sex":"性别",
85633
- // "birthday":"出生日期",
85634
- // "address":"(例:杭州市西湖区XXXX)",
85635
- // "number":"证件号码",
85636
- // "organs":"签发机关",
85637
- // "signdate":"开始有效期",
85638
- // "validterm":"结束有效期",
85639
- // "signCount":"签证次数",
85640
- // "passNu":"通行证号"
85641
- // },
85642
- // "idPhotoBase64":"小头像base64图片格式"
85643
- // }
85644
85280
  /**
85645
85281
  * 人证比对
85646
85282
  */
@@ -86537,7 +86173,127 @@ class SignReadService {
86537
86173
  ws.onopen = () => {
86538
86174
  resolved(true);
86539
86175
  };
86540
- ws.onmessage = event => this.handleMessage(event);
86176
+ ws.onmessage = event => this.handleMessage(event);
86177
+ ws.onclose = () => this.handleClose();
86178
+ ws.onerror = () => this.handleError();
86179
+ this.ws = ws;
86180
+ return onConnect;
86181
+ }
86182
+ static handleError() {
86183
+ for (const type in this.requestStore) {
86184
+ this.requestStore.forEach(({
86185
+ reject
86186
+ }) => {
86187
+ reject('handleError');
86188
+ });
86189
+ }
86190
+ throw Error('签字板加载失败');
86191
+ }
86192
+ static handleClose() {
86193
+ for (const type in this.requestStore) {
86194
+ this.requestStore.forEach(({
86195
+ reject
86196
+ }) => {
86197
+ reject('close');
86198
+ });
86199
+ }
86200
+ }
86201
+ static handleMessage(msg) {
86202
+ let data = msg.data;
86203
+ this.requestStore.forEach(({
86204
+ resolve
86205
+ }) => {
86206
+ resolve(data);
86207
+ });
86208
+ this.requestStore = [];
86209
+ this.ws.close();
86210
+ }
86211
+ static async read(signMode = PluginApiType.ywSign) {
86212
+ await this.startConnect(signMode);
86213
+ if (this.ws.readyState === 1) {
86214
+ console.log('签字板连接成功');
86215
+ this.ws.send(signMode);
86216
+ return new Promise((resolve, reject) => {
86217
+ if (!this.requestStore) {
86218
+ this.requestStore = [];
86219
+ }
86220
+ this.requestStore.push({
86221
+ resolve,
86222
+ reject
86223
+ });
86224
+ });
86225
+ } else {
86226
+ throw Error('签字板未准备完成');
86227
+ }
86228
+ }
86229
+ }
86230
+ _defineProperty(SignReadService, "signWebSocketUrl", 'ws://127.0.0.1:8152/chromeManage');
86231
+ _defineProperty(SignReadService, "hwSignWebSocketUrl", 'ws://127.0.0.1:8152/HWSIGNManage');
86232
+ _defineProperty(SignReadService, "ws", void 0);
86233
+ _defineProperty(SignReadService, "requestStore", []);
86234
+ ;// CONCATENATED MODULE: ./packages/service/external-plugins/ewp-plugin-socket.service.ts
86235
+
86236
+
86237
+ /**
86238
+ * 沃斯德人证交互终端
86239
+ * E窗通WEBSOCKET服务
86240
+ *
86241
+ * */
86242
+
86243
+ var EWindowPassMethodCode;
86244
+ (function (EWindowPassMethodCode) {
86245
+ /** 读取社保卡 */
86246
+ EWindowPassMethodCode["iReadCardBas"] = "iReadCardBas";
86247
+ /** 获取签名*/
86248
+ EWindowPassMethodCode["GetSignName_Base64"] = "GetSignName_Base64";
86249
+ /** 读取二代身份证 */
86250
+ EWindowPassMethodCode["ReadIDCard_Base64"] = "ReadIDCard_Base64";
86251
+ /** 人证比对 */
86252
+ EWindowPassMethodCode["FaceValidateWithIdCard_Base64"] = "FaceValidateWithIdCard_Base64";
86253
+ /** 获取指纹 */
86254
+ EWindowPassMethodCode["FingerPrint_Base64"] = "FingerPrint_Base64";
86255
+ })(EWindowPassMethodCode || (EWindowPassMethodCode = {}));
86256
+ const EWindowPassMethodDesc = {
86257
+ [EWindowPassMethodCode.iReadCardBas]: '读取社保卡',
86258
+ [EWindowPassMethodCode.GetSignName_Base64]: '获取签名',
86259
+ [EWindowPassMethodCode.ReadIDCard_Base64]: '读取二代身份证',
86260
+ [EWindowPassMethodCode.FaceValidateWithIdCard_Base64]: '人证比对',
86261
+ [EWindowPassMethodCode.FingerPrint_Base64]: '获取指纹'
86262
+ };
86263
+ class EWindowPassService {
86264
+ static startConnect(method) {
86265
+ if (this.ws && this.ws.readyState === WebSocket.CONNECTING) {
86266
+ return this;
86267
+ }
86268
+ let webSocketUrl = '';
86269
+ switch (method) {
86270
+ case EWindowPassMethodCode.FingerPrint_Base64:
86271
+ webSocketUrl = this.fingerPrintBasWebSocketUrl;
86272
+ break;
86273
+ default:
86274
+ webSocketUrl = this.iReadCardBasWebSocketUrl;
86275
+ break;
86276
+ }
86277
+ const ws = new WebSocket(webSocketUrl);
86278
+ let resolved;
86279
+ const onConnect = new Promise(resolve => {
86280
+ resolved = resolve;
86281
+ });
86282
+ ws.onopen = () => {
86283
+ resolved(true);
86284
+ };
86285
+ ws.onmessage = event => {
86286
+ if (method === EWindowPassMethodCode.FingerPrint_Base64) {
86287
+ // 指纹后端返回的是string
86288
+ event = {
86289
+ ...event,
86290
+ data: JSON.stringify({
86291
+ fingerPrintInfo: event.data
86292
+ })
86293
+ };
86294
+ }
86295
+ this.handleMessage(event);
86296
+ };
86541
86297
  ws.onclose = () => this.handleClose();
86542
86298
  ws.onerror = () => this.handleError();
86543
86299
  this.ws = ws;
@@ -86551,7 +86307,7 @@ class SignReadService {
86551
86307
  reject('handleError');
86552
86308
  });
86553
86309
  }
86554
- throw Error('签字板加载失败');
86310
+ throw Error('E窗通设备功能加载失败');
86555
86311
  }
86556
86312
  static handleClose() {
86557
86313
  for (const type in this.requestStore) {
@@ -86563,7 +86319,12 @@ class SignReadService {
86563
86319
  }
86564
86320
  }
86565
86321
  static handleMessage(msg) {
86566
- let data = msg.data;
86322
+ let data = '';
86323
+ try {
86324
+ data = JSON.parse(msg.data);
86325
+ } catch (e) {
86326
+ data = '';
86327
+ }
86567
86328
  this.requestStore.forEach(({
86568
86329
  resolve
86569
86330
  }) => {
@@ -86572,11 +86333,58 @@ class SignReadService {
86572
86333
  this.requestStore = [];
86573
86334
  this.ws.close();
86574
86335
  }
86575
- static async read(signMode = PluginApiType.ywSign) {
86576
- await this.startConnect(signMode);
86336
+ static async read(method) {
86337
+ await this.startConnect(method);
86338
+ const methodDesc = EWindowPassMethodDesc[method];
86577
86339
  if (this.ws.readyState === 1) {
86578
- console.log('签字板连接成功');
86579
- this.ws.send(signMode);
86340
+ if (method !== EWindowPassMethodCode.FingerPrint_Base64) console.log(methodDesc + '连接成功');
86341
+ let jsonString;
86342
+ // outTimes:超时时间(秒)
86343
+ switch (method) {
86344
+ case EWindowPassMethodCode.ReadIDCard_Base64:
86345
+ // cardReader:0 读卡器-USB;1 读卡器-COM
86346
+ jsonString = JSON.stringify({
86347
+ method,
86348
+ args: {
86349
+ outTimes: 30,
86350
+ cardReader: 1
86351
+ }
86352
+ });
86353
+ break;
86354
+ case EWindowPassMethodCode.FaceValidateWithIdCard_Base64:
86355
+ // cardReader:0 读卡器-USB;1 读卡器-COM
86356
+ jsonString = JSON.stringify({
86357
+ method,
86358
+ args: {
86359
+ outTimes: 30,
86360
+ cardReader: 1,
86361
+ cameraType: 0
86362
+ }
86363
+ });
86364
+ break;
86365
+ case EWindowPassMethodCode.iReadCardBas:
86366
+ // icType:1接触卡;2非接触卡;3自动(接触优先);4自动(非接优先)
86367
+ jsonString = JSON.stringify({
86368
+ method,
86369
+ args: {
86370
+ icType: '1'
86371
+ }
86372
+ });
86373
+ break;
86374
+ case EWindowPassMethodCode.FingerPrint_Base64:
86375
+ // 获取指纹:getimgae,颜色(0黑色 1红色), 质量(默认0), 图像大小(288,360),类型(0民用,1公安)
86376
+ jsonString = 'getimgae,1,0,288,0';
86377
+ break;
86378
+ default:
86379
+ jsonString = JSON.stringify({
86380
+ method,
86381
+ args: {
86382
+ outTimes: 30
86383
+ }
86384
+ });
86385
+ break;
86386
+ }
86387
+ this.ws.send(jsonString);
86580
86388
  return new Promise((resolve, reject) => {
86581
86389
  if (!this.requestStore) {
86582
86390
  this.requestStore = [];
@@ -86587,14 +86395,174 @@ class SignReadService {
86587
86395
  });
86588
86396
  });
86589
86397
  } else {
86590
- throw Error('签字板未准备完成');
86398
+ throw Error(methodDesc + '未准备完成');
86399
+ }
86400
+ }
86401
+ /**
86402
+ * 读取二代身份证
86403
+ * */
86404
+ static async idCardRead(method = EWindowPassMethodCode.ReadIDCard_Base64) {
86405
+ const readData = await EWindowPassService.read(EWindowPassMethodCode.ReadIDCard_Base64);
86406
+ console.log('读取二代身份证==>', readData);
86407
+ if (!readData) {
86408
+ throw Error('未匹配可用的E窗通读取设备');
86409
+ }
86410
+ if (readData.retVal !== 0) {
86411
+ throw Error("读取二代身份证失败,返回值:" + readData.retVal + ",错误信息:" + readData.errMsg);
86412
+ }
86413
+ const idInfo = readData.idInfo.data;
86414
+ const {
86415
+ name,
86416
+ sex,
86417
+ birthday,
86418
+ address,
86419
+ id_num,
86420
+ nations
86421
+ } = idInfo;
86422
+ const IDCardData = {
86423
+ info: {
86424
+ name,
86425
+ sex,
86426
+ birthday: birthday.replace('-', '').replace('-', ''),
86427
+ address,
86428
+ cardId: id_num,
86429
+ nation: nations
86430
+ },
86431
+ headImage: readData.idPhotoPicBase64
86432
+ };
86433
+ console.log('读取二代身份证结果==>', IDCardData);
86434
+ return IDCardData;
86435
+ }
86436
+ /**
86437
+ * 人证比对
86438
+ */
86439
+ static async faceValidateWithIdCardRead() {
86440
+ const readData = await EWindowPassService.read(EWindowPassMethodCode.FaceValidateWithIdCard_Base64);
86441
+ console.log('人证比对==>', readData);
86442
+ if (!readData) {
86443
+ throw Error('未匹配可用的E窗通读取设备');
86444
+ }
86445
+ if (readData.retVal !== 0) {
86446
+ throw Error("人证比对失败,返回值:" + readData.retVal + ",错误信息:" + readData.errMsg);
86447
+ }
86448
+ const idInfo = readData.idInfo.data;
86449
+ const {
86450
+ name,
86451
+ sex,
86452
+ birth,
86453
+ address,
86454
+ idNo,
86455
+ nation
86456
+ } = idInfo;
86457
+ const IDCardData = {
86458
+ idCard: {
86459
+ info: {
86460
+ name,
86461
+ sex,
86462
+ birthday: birth.replace('-', '').replace('-', ''),
86463
+ address,
86464
+ cardId: idNo,
86465
+ nation
86466
+ },
86467
+ headImage: readData.idPhotoBase64
86468
+ },
86469
+ faceimg: readData.scenceBase64
86470
+ };
86471
+ console.log('人证比对结果==>', IDCardData);
86472
+ return IDCardData;
86473
+ }
86474
+ /** 读取社保卡 */
86475
+ static async socialSecurityCardRead() {
86476
+ const readData = await EWindowPassService.read(EWindowPassMethodCode.iReadCardBas);
86477
+ if (!readData) {
86478
+ throw Error('未匹配可用的E窗通读取设备');
86479
+ }
86480
+ if (readData.retVal !== 0) {
86481
+ throw Error("读取社保卡基本信息失败,返回值:" + readData.retVal + ",错误信息:" + readData.outInfo);
86482
+ }
86483
+ // 返回数据:330100|350781196403072943|W57681892|331100D10600000300657BCF88899F8E|张三|3B6D000000815444368660330100286BCF|1.00|2020-08-12|2030-08-12|1|SN00000000|(邮编|身份证号|卡号|社会保障号码|姓名|...不知道是什么信息了)
86484
+ const outInfo = readData.outInfo;
86485
+ const outInfoArray = outInfo.split('|');
86486
+ const cardId = outInfoArray[1];
86487
+ const birthday = IdCardCommonUtils.getBirthdayByIdNumber(cardId).replace('-', '').replace('-', '');
86488
+ const sex = IdCardCommonUtils.getGenderByIdNumber(cardId);
86489
+ const IDCardData = {
86490
+ info: {
86491
+ name: outInfoArray[4],
86492
+ sex,
86493
+ birthday,
86494
+ address: '',
86495
+ cardId
86496
+ },
86497
+ headImage: ''
86498
+ };
86499
+ console.log('读取社保卡==>', readData);
86500
+ return IDCardData;
86501
+ }
86502
+ /** 获取签名-base64 */
86503
+ static async signNameRead() {
86504
+ const readData = await EWindowPassService.read(EWindowPassMethodCode.GetSignName_Base64);
86505
+ if (!readData) {
86506
+ throw Error('未匹配可用的E窗通读取设备');
86507
+ }
86508
+ if (readData.retVal !== 0) {
86509
+ throw Error("读取签名失败,返回值:" + readData.retVal + ",错误信息:" + readData.errMsg);
86510
+ }
86511
+ console.log('获取签名==>', readData);
86512
+ return readData.signPicBase64;
86513
+ }
86514
+ /** 获取指纹*/
86515
+ static async fingerPrintRead() {
86516
+ let timeOver = 30;
86517
+ async function readFingerPrint() {
86518
+ const readData = await EWindowPassService.read(EWindowPassMethodCode.FingerPrint_Base64);
86519
+ if (!readData) {
86520
+ throw Error('未匹配可用的E窗通读取设备');
86521
+ }
86522
+ let list = readData.fingerPrintInfo.split("|");
86523
+ console.log(list);
86524
+ let ret = Number(list[1]);
86525
+ if (ret > 1) {
86526
+ if (timeOver > 0) {
86527
+ timeOver--;
86528
+ return await readFingerPrint();
86529
+ } else {
86530
+ return {
86531
+ status: 'error',
86532
+ data: '已超时,请重新操作,按压指纹'
86533
+ };
86534
+ }
86535
+ } else {
86536
+ return {
86537
+ status: 'success',
86538
+ data: readData.fingerPrintInfo
86539
+ };
86540
+ }
86541
+ }
86542
+ let {
86543
+ status,
86544
+ data
86545
+ } = await readFingerPrint();
86546
+ if (status === 'error') {
86547
+ throw Error(data);
86548
+ } else {
86549
+ let [method, result, quality, image, featureCode] = data.split('|');
86550
+ // getimgae|1|68|......|......
86551
+ // method:方法,result:返回的状态,quality:指纹图片质量,image:图片base64,featureCode:指纹特征码
86552
+ return {
86553
+ method,
86554
+ result,
86555
+ quality,
86556
+ image,
86557
+ featureCode
86558
+ };
86591
86559
  }
86592
86560
  }
86593
86561
  }
86594
- _defineProperty(SignReadService, "signWebSocketUrl", 'ws://127.0.0.1:8152/chromeManage');
86595
- _defineProperty(SignReadService, "hwSignWebSocketUrl", 'ws://127.0.0.1:8152/HWSIGNManage');
86596
- _defineProperty(SignReadService, "ws", void 0);
86597
- _defineProperty(SignReadService, "requestStore", []);
86562
+ _defineProperty(EWindowPassService, "iReadCardBasWebSocketUrl", 'ws://127.0.0.1:5847');
86563
+ _defineProperty(EWindowPassService, "fingerPrintBasWebSocketUrl", 'ws://127.0.0.1:9000');
86564
+ _defineProperty(EWindowPassService, "ws", void 0);
86565
+ _defineProperty(EWindowPassService, "requestStore", []);
86598
86566
  ;// CONCATENATED MODULE: ./packages/service/external-plugins/huada-plugin-socket.service.ts
86599
86567
 
86600
86568
 
@@ -87756,8 +87724,8 @@ var default_take_photo_dialog_component = normalizeComponent(
87756
87724
  )
87757
87725
 
87758
87726
  /* harmony default export */ var default_take_photo_dialog = (default_take_photo_dialog_component.exports);
87759
- ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-85.use[1]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[4]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./packages/id-card-reader/id-card-reader-button/src/dialog/wei-rong-face-auth-dialog.vue?vue&type=template&id=d49bc744&scoped=true&
87760
- var wei_rong_face_auth_dialogvue_type_template_id_d49bc744_scoped_true_render = function render() {
87727
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-85.use[1]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[4]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./packages/id-card-reader/id-card-reader-button/src/dialog/wei-rong-face-auth-dialog.vue?vue&type=template&id=5bbb0afc&scoped=true&
87728
+ var wei_rong_face_auth_dialogvue_type_template_id_5bbb0afc_scoped_true_render = function render() {
87761
87729
  var _vm = this,
87762
87730
  _c = _vm._self._c;
87763
87731
  return _vm.visibility ? _c('el-dialog', {
@@ -87787,7 +87755,7 @@ var wei_rong_face_auth_dialogvue_type_template_id_d49bc744_scoped_true_render =
87787
87755
  }
87788
87756
  })])]) : _vm._e();
87789
87757
  };
87790
- var wei_rong_face_auth_dialogvue_type_template_id_d49bc744_scoped_true_staticRenderFns = [];
87758
+ var wei_rong_face_auth_dialogvue_type_template_id_5bbb0afc_scoped_true_staticRenderFns = [];
87791
87759
 
87792
87760
  ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-85.use[1]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./packages/id-card-reader/id-card-reader-button/src/dialog/wei-rong-face-auth-dialog.vue?vue&type=script&lang=js&
87793
87761
 
@@ -87802,7 +87770,6 @@ const wei_rong_face_auth_dialogvue_type_script_lang_js_BEGIN_DATA = 'data:image/
87802
87770
  };
87803
87771
  },
87804
87772
  async created() {
87805
- console.log();
87806
87773
  window.addEventListener(SCANNER_CAMERA_REFRESH_PHOTO_EVENT, message => {
87807
87774
  if (message.type === SCANNER_CAMERA_REFRESH_PHOTO_EVENT) {
87808
87775
  this.viewFaceImage = `${wei_rong_face_auth_dialogvue_type_script_lang_js_BEGIN_DATA}${message.scannerResultUrl}`;
@@ -87827,11 +87794,11 @@ const wei_rong_face_auth_dialogvue_type_script_lang_js_BEGIN_DATA = 'data:image/
87827
87794
  ;
87828
87795
  var wei_rong_face_auth_dialog_component = normalizeComponent(
87829
87796
  dialog_wei_rong_face_auth_dialogvue_type_script_lang_js_,
87830
- wei_rong_face_auth_dialogvue_type_template_id_d49bc744_scoped_true_render,
87831
- wei_rong_face_auth_dialogvue_type_template_id_d49bc744_scoped_true_staticRenderFns,
87797
+ wei_rong_face_auth_dialogvue_type_template_id_5bbb0afc_scoped_true_render,
87798
+ wei_rong_face_auth_dialogvue_type_template_id_5bbb0afc_scoped_true_staticRenderFns,
87832
87799
  false,
87833
87800
  null,
87834
- "d49bc744",
87801
+ "5bbb0afc",
87835
87802
  null
87836
87803
 
87837
87804
  )
@@ -88323,5 +88290,4 @@ if (typeof window !== 'undefined' && window.Vue) {
88323
88290
  /******/ return __webpack_exports__;
88324
88291
  /******/ })()
88325
88292
  ;
88326
- });
88327
- //# sourceMappingURL=external-plugin.umd.js.map
88293
+ });