@arkyc/widget 1.1.0 → 1.2.0
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.
- package/LICENSE +21 -0
- package/dist/_virtual/_virtual_arkyc-theme-css.mjs +1 -1
- package/dist/arkyc-widget.iife.global.js +57 -3
- package/dist/arkyc-widget.iife.global.js.map +1 -1
- package/dist/client.d.mts +27 -0
- package/dist/client.d.mts.map +1 -1
- package/dist/client.mjs +24 -0
- package/dist/client.mjs.map +1 -1
- package/dist/controller.d.mts +63 -6
- package/dist/controller.d.mts.map +1 -1
- package/dist/controller.mjs +107 -8
- package/dist/controller.mjs.map +1 -1
- package/dist/flow.d.mts.map +1 -1
- package/dist/flow.mjs +1 -0
- package/dist/flow.mjs.map +1 -1
- package/dist/h.mjs +64 -0
- package/dist/h.mjs.map +1 -0
- package/dist/index.d.mts +3 -3
- package/dist/types.d.mts +26 -2
- package/dist/types.d.mts.map +1 -1
- package/dist/ui.d.mts +19 -0
- package/dist/ui.d.mts.map +1 -0
- package/dist/ui.mjs +257 -183
- package/dist/ui.mjs.map +1 -1
- package/package.json +2 -2
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Toneflix Technologies Limited
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
//#region \0virtual:arkyc-theme-css
|
|
2
|
-
var _virtual_arkyc_theme_css_default = ".arkyc-root {\n /* {variables} */\n\n color: var(--arkyc-fg);\n font-family:\n system-ui,\n -apple-system,\n Segoe UI,\n Roboto,\n sans-serif;\n box-sizing: border-box;\n}\n\n.arkyc-text-center {\n text-align: center;\n}\n\n.arkyc-root * {\n box-sizing: border-box;\n}\n\n.arkyc-card {\n background: var(--arkyc-bg);\n border-radius: var(--arkyc-radius);\n width: 100vw;\n max-width: 480px;\n height: 100%;\n max-height: 720px;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.arkyc-root.arkyc-fullscreen .arkyc-card {\n max-width: none;\n max-height: none;\n height: 100vh;\n height: 100dvh;\n border-radius: 0;\n}\n\n/* On a wider (desktop) viewport, \"fullscreen\" is a large centred dialog rather than edge-to-edge. */\n@media (min-width: 700px) {\n .arkyc-root.arkyc-fullscreen .arkyc-card {\n max-width: 560px;\n min-width: 400px;\n width: 100%;\n height: auto;\n min-height: min(620px, 92vh);\n max-height: 92vh;\n border-radius: var(--arkyc-radius);\n }\n}\n\n/* Handoff (QR) takes over the whole viewport — but only in overlay (open) mode,\n so an inline mount() stays within its container instead of escaping fullscreen.\n The close affordance is hidden either way: there's nothing to dismiss while\n awaiting the phone. */\n.arkyc-root.arkyc-overlay.arkyc-handoff .arkyc-card {\n position: fixed;\n inset: 0;\n width: 100vw;\n height: 100vh;\n height: 100dvh;\n max-width: none;\n max-height: none;\n min-width: 0;\n min-height: 0;\n border-radius: 0;\n z-index: 2147483646;\n}\n\n.arkyc-root.arkyc-handoff .arkyc-close {\n display: none;\n}\n\n.arkyc-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n /* border-bottom: 1px solid var(--arkyc-border); */\n}\n\n.arkyc-logo {\n height: 24px;\n width: auto;\n}\n\n.arkyc-title {\n font-size: 15px;\n font-weight: 600;\n margin: 0;\n}\n\n.arkyc-brand {\n display: flex;\n align-items: center;\n gap: 10px;\n min-width: 0;\n}\n\n.arkyc-brand-name {\n font-size: 15px;\n font-weight: 600;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.arkyc-close {\n background: none;\n border: 0;\n color: var(--arkyc-muted);\n font-size: 20px;\n line-height: 1;\n cursor: pointer;\n}\n\n.arkyc-body {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n gap: 14px;\n padding: 24px;\n overflow-y: auto;\n}\n\n.arkyc-h {\n font-size: 20px;\n font-weight: 600;\n margin: 0;\n}\n\n.arkyc-p {\n font-size: 14px;\n color: var(--arkyc-muted);\n margin: 0;\n max-width: 340px;\n}\n\n.arkyc-footer {\n padding: 16px 20px;\n /* border-top: 1px solid var(--arkyc-border); */\n}\n\n.arkyc-btn {\n appearance: none;\n border: 0;\n border-radius: var(--arkyc-radius);\n background: var(--arkyc-primary);\n color: #fff;\n font-size: 15px;\n font-weight: 600;\n padding: 12px 18px;\n width: 100%;\n cursor: pointer;\n}\n\n.arkyc-btn[disabled] {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n/* Busy: hide the label and show an inline spinner while the handler runs. */\n.arkyc-btn.arkyc-busy {\n position: relative;\n color: transparent;\n pointer-events: none;\n opacity: 1;\n}\n\n.arkyc-btn.arkyc-busy::after {\n content: '';\n position: absolute;\n inset: 0;\n margin: auto;\n width: 16px;\n height: 16px;\n border-radius: 50%;\n border: 2px solid rgba(255, 255, 255, 0.5);\n border-top-color: #fff;\n animation: arkyc-spin 0.8s linear infinite;\n}\n\n.arkyc-btn-ghost.arkyc-busy::after {\n border-color: color-mix(in srgb, var(--arkyc-primary) 35%, transparent);\n border-top-color: var(--arkyc-primary);\n}\n\n.arkyc-btn-ghost {\n background: transparent;\n color: var(--arkyc-primary);\n border: 1px solid var(--arkyc-border);\n}\n\n.arkyc-choices {\n display: flex;\n flex-direction: column;\n gap: 8px;\n width: 100%;\n max-width: 340px;\n}\n\n.arkyc-preview {\n width: 100%;\n max-width: 360px;\n border-radius: var(--arkyc-radius);\n background: #000;\n aspect-ratio: 3/2;\n object-fit: cover;\n}\n\n.arkyc-preview.selfie {\n aspect-ratio: 1/1;\n max-width: 280px;\n border-radius: 50%;\n transform: scaleX(-1);\n}\n\n.arkyc-spinner {\n width: 42px;\n height: 42px;\n border-radius: 50%;\n border: 4px solid var(--arkyc-border);\n border-top-color: var(--arkyc-primary);\n animation: arkyc-spin 1s linear infinite;\n}\n\n.arkyc-spinner.sm {\n width: 18px;\n height: 18px;\n border-width: 3px;\n}\n\n@keyframes arkyc-spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n.arkyc-qr {\n width: 200px;\n height: 200px;\n padding: 12px;\n margin: 4px auto;\n background: #fff;\n border-radius: var(--arkyc-radius);\n border: 1px solid var(--arkyc-border);\n}\n\n.arkyc-qr svg {\n display: block;\n width: 100%;\n height: 100%;\n}\n\n.arkyc-handoff-wait {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 10px;\n color: var(--arkyc-muted);\n font-size: 14px;\n margin-top: 6px;\n}\n\n/* Decorative line-art illustration on the welcome / instruction screens: a soft\n tinted disc in the primary colour with a halo, holding a stroked icon. */\n.arkyc-illus {\n width: 104px;\n height: 104px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n margin: 0 auto 2px;\n color: var(--arkyc-primary);\n background: color-mix(in srgb, var(--arkyc-primary) 12%, transparent);\n box-shadow: 0 0 0 8px color-mix(in srgb, var(--arkyc-primary) 5%, transparent);\n}\n\n.arkyc-illus svg {\n width: 58px;\n height: 58px;\n}\n\n.arkyc-badge {\n width: 64px;\n height: 64px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 32px;\n color: #fff;\n}\n\n.arkyc-badge.ok {\n background: #16a34a;\n}\n\n.arkyc-badge.warn {\n background: #d97706;\n}\n\n.arkyc-badge.err {\n background: #dc2626;\n}\n\n/* --- Animated capture overlays --- */\n.arkyc-stage {\n position: relative;\n width: 100%;\n max-width: 280px;\n margin: 0 auto;\n}\n\n.arkyc-stage .arkyc-preview {\n display: block;\n width: 100%;\n max-width: 100%;\n}\n\n.arkyc-ring {\n position: absolute;\n inset: 0;\n pointer-events: none;\n}\n\n.arkyc-ring svg {\n width: 100%;\n height: 100%;\n transform: rotate(-90deg);\n overflow: visible;\n}\n\n.arkyc-ring-track {\n fill: none;\n stroke: rgba(125, 130, 150, 0.3);\n stroke-width: 3;\n}\n\n.arkyc-ring-arc {\n fill: none;\n stroke: var(--arkyc-primary);\n stroke-width: 4;\n stroke-linecap: round;\n transition:\n stroke-dashoffset 0.15s linear,\n stroke 0.25s;\n}\n\n.arkyc-stage[data-state='wait'] .arkyc-ring-track {\n animation: arkyc-pulse 1.5s ease-in-out infinite;\n}\n\n.arkyc-stage[data-state='good'] .arkyc-ring-arc,\n.arkyc-stage[data-state='done'] .arkyc-ring-arc,\n.arkyc-stage[data-state='done'] .arkyc-ring-track {\n stroke: #16a34a;\n}\n\n.arkyc-cue {\n position: absolute;\n left: 0;\n right: 0;\n bottom: 7%;\n display: flex;\n justify-content: center;\n align-items: center;\n pointer-events: none;\n opacity: 0;\n transition: opacity 0.25s;\n}\n\n.arkyc-cue.show {\n opacity: 1;\n}\n\n.arkyc-cue svg {\n width: 36px;\n height: 36px;\n color: #fff;\n filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.55));\n}\n\n.arkyc-cue-turn_right svg {\n animation: arkyc-nudge-r 1.1s ease-in-out infinite;\n}\n\n.arkyc-cue-turn_left svg {\n animation: arkyc-nudge-l 1.1s ease-in-out infinite;\n}\n\n.arkyc-cue-nod svg {\n animation: arkyc-nudge-d 1.1s ease-in-out infinite;\n}\n\n.arkyc-cue-move_closer svg {\n animation: arkyc-zoom 1.2s ease-in-out infinite;\n}\n\n.arkyc-cue-blink svg,\n.arkyc-cue-smile svg {\n animation: arkyc-soft 1.3s ease-in-out infinite;\n}\n\n.arkyc-check {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 0;\n transform: scale(0.5);\n transition:\n opacity 0.25s,\n transform 0.25s;\n pointer-events: none;\n}\n\n.arkyc-check svg {\n width: 56px;\n height: 56px;\n color: #16a34a;\n background: rgba(255, 255, 255, 0.92);\n border-radius: 50%;\n padding: 10px;\n box-sizing: border-box;\n}\n\n.arkyc-stage[data-state='done'] .arkyc-check {\n opacity: 1;\n transform: scale(1);\n}\n\n.arkyc-stage[data-state='done'] .arkyc-cue {\n opacity: 0;\n}\n\n.arkyc-dots {\n display: flex;\n gap: 8px;\n justify-content: center;\n margin: 0 0 14px;\n}\n\n.arkyc-dot {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: var(--arkyc-border);\n transition:\n background 0.3s,\n transform 0.3s;\n}\n\n.arkyc-dot.active {\n background: var(--arkyc-primary);\n transform: scale(1.4);\n animation: arkyc-pulse 1.2s ease-in-out infinite;\n}\n\n.arkyc-dot.done {\n background: #16a34a;\n}\n\n.arkyc-doc {\n position: relative;\n width: 100%;\n max-width: 360px;\n margin: 0 auto;\n}\n\n.arkyc-doc .arkyc-preview {\n display: block;\n width: 100%;\n max-width: 100%;\n}\n\n.arkyc-doc-frame {\n position: absolute;\n /* Fixed, always-visible alignment target at the ID-1 card aspect ratio\n (85.6 × 54 mm ≈ 1.585:1), centred in the preview. */\n top: 50%;\n left: 50%;\n width: 86%;\n aspect-ratio: 1.585 / 1;\n transform: translate(-50%, -50%);\n pointer-events: none;\n border: 2px solid rgba(255, 255, 255, 0.5);\n border-radius: 10px;\n transition: border-color 0.3s;\n}\n\n.arkyc-corner {\n position: absolute;\n width: 24px;\n height: 24px;\n border: 3px solid rgba(255, 255, 255, 0.9);\n transition: border-color 0.3s;\n}\n\n.arkyc-corner.tl {\n top: 0;\n left: 0;\n border-right: none;\n border-bottom: none;\n border-top-left-radius: 6px;\n}\n\n.arkyc-corner.tr {\n top: 0;\n right: 0;\n border-left: none;\n border-bottom: none;\n border-top-right-radius: 6px;\n}\n\n.arkyc-corner.bl {\n bottom: 0;\n left: 0;\n border-right: none;\n border-top: none;\n border-bottom-left-radius: 6px;\n}\n\n.arkyc-corner.br {\n bottom: 0;\n right: 0;\n border-left: none;\n border-top: none;\n border-bottom-right-radius: 6px;\n}\n\n.arkyc-scan {\n position: absolute;\n /* Animates within the fixed guide (its parent), sweeping the card area. */\n left: 6%;\n right: 6%;\n top: 6%;\n height: 2px;\n background: linear-gradient(90deg, transparent, var(--arkyc-primary), transparent);\n box-shadow: 0 0 8px var(--arkyc-primary);\n animation: arkyc-scan 2.4s ease-in-out infinite;\n}\n\n/* A document is in view: brighten the guide (quality tints still override). */\n.arkyc-doc[data-detected='true'] .arkyc-doc-frame {\n border-color: rgba(255, 255, 255, 0.85);\n}\n\n.arkyc-doc[data-q='good'] .arkyc-corner,\n.arkyc-doc[data-q='good'] .arkyc-doc-frame {\n border-color: #16a34a;\n}\n\n.arkyc-doc[data-q='good'] .arkyc-scan {\n background: linear-gradient(90deg, transparent, #16a34a, transparent);\n box-shadow: 0 0 8px #16a34a;\n}\n\n.arkyc-doc[data-q='bad'] .arkyc-corner,\n.arkyc-doc[data-q='bad'] .arkyc-doc-frame {\n border-color: #f59e0b;\n}\n\n@keyframes arkyc-pulse {\n 0%,\n 100% {\n opacity: 1;\n }\n\n 50% {\n opacity: 0.4;\n }\n}\n\n@keyframes arkyc-nudge-r {\n 0%,\n 100% {\n transform: translateX(-7px);\n }\n\n 50% {\n transform: translateX(7px);\n }\n}\n\n@keyframes arkyc-nudge-l {\n 0%,\n 100% {\n transform: translateX(7px);\n }\n\n 50% {\n transform: translateX(-7px);\n }\n}\n\n@keyframes arkyc-nudge-d {\n 0%,\n 100% {\n transform: translateY(-6px);\n }\n\n 50% {\n transform: translateY(6px);\n }\n}\n\n@keyframes arkyc-zoom {\n 0%,\n 100% {\n transform: scale(0.8);\n }\n\n 50% {\n transform: scale(1.15);\n }\n}\n\n@keyframes arkyc-soft {\n 0%,\n 100% {\n opacity: 0.35;\n }\n\n 50% {\n opacity: 1;\n }\n}\n\n@keyframes arkyc-scan {\n 0%,\n 100% {\n top: 6%;\n }\n\n 50% {\n top: 90%;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .arkyc-ring-track,\n .arkyc-cue svg,\n .arkyc-scan,\n .arkyc-dot,\n .arkyc-spinner {\n animation: none !important;\n }\n\n .arkyc-ring-arc {\n transition: none !important;\n }\n}\n\n.arkyc-hidden {\n display: none;\n}\n";
|
|
2
|
+
var _virtual_arkyc_theme_css_default = ".arkyc-root {\n /* {variables} */\n\n color: var(--arkyc-fg);\n font-family:\n system-ui,\n -apple-system,\n Segoe UI,\n Roboto,\n sans-serif;\n box-sizing: border-box;\n}\n\n.arkyc-text-center {\n text-align: center;\n}\n\n.arkyc-root * {\n box-sizing: border-box;\n}\n\n.arkyc-card {\n background: var(--arkyc-bg);\n border-radius: var(--arkyc-radius);\n width: 100vw;\n max-width: 480px;\n height: 100%;\n max-height: 720px;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.arkyc-root.arkyc-fullscreen .arkyc-card {\n max-width: none;\n max-height: none;\n height: 100vh;\n height: 100dvh;\n border-radius: 0;\n}\n\n/* On a wider (desktop) viewport, \"fullscreen\" is a large centred dialog rather than edge-to-edge. */\n@media (min-width: 700px) {\n .arkyc-root.arkyc-fullscreen .arkyc-card {\n max-width: 560px;\n min-width: 400px;\n width: 100%;\n height: auto;\n min-height: min(620px, 92vh);\n max-height: 92vh;\n border-radius: var(--arkyc-radius);\n }\n}\n\n/* Handoff (QR) takes over the whole viewport — but only in overlay (open) mode,\n so an inline mount() stays within its container instead of escaping fullscreen.\n The close affordance is hidden either way: there's nothing to dismiss while\n awaiting the phone. */\n.arkyc-root.arkyc-overlay.arkyc-handoff .arkyc-card {\n position: fixed;\n inset: 0;\n width: 100vw;\n height: 100vh;\n height: 100dvh;\n max-width: none;\n max-height: none;\n min-width: 0;\n min-height: 0;\n border-radius: 0;\n z-index: 2147483646;\n}\n\n.arkyc-root.arkyc-handoff .arkyc-close {\n display: none;\n}\n\n.arkyc-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n /* border-bottom: 1px solid var(--arkyc-border); */\n}\n\n.arkyc-logo {\n height: 24px;\n width: auto;\n}\n\n.arkyc-title {\n font-size: 15px;\n font-weight: 600;\n margin: 0;\n}\n\n.arkyc-brand {\n display: flex;\n align-items: center;\n gap: 10px;\n min-width: 0;\n}\n\n.arkyc-brand-name {\n font-size: 15px;\n font-weight: 600;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.arkyc-close {\n background: none;\n border: 0;\n color: var(--arkyc-muted);\n font-size: 20px;\n line-height: 1;\n cursor: pointer;\n}\n\n.arkyc-body {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n gap: 14px;\n padding: 24px;\n overflow-y: auto;\n}\n\n.arkyc-h {\n font-size: 20px;\n font-weight: 600;\n margin: 0;\n}\n\n.arkyc-p {\n font-size: 14px;\n color: var(--arkyc-muted);\n margin: 0;\n max-width: 340px;\n}\n\n.arkyc-footer {\n padding: 16px 20px;\n /* border-top: 1px solid var(--arkyc-border); */\n}\n\n.arkyc-btn {\n appearance: none;\n border: 0;\n border-radius: var(--arkyc-radius);\n background: var(--arkyc-primary);\n color: #fff;\n font-size: 15px;\n font-weight: 600;\n padding: 12px 18px;\n width: 100%;\n cursor: pointer;\n}\n\n.arkyc-btn[disabled] {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n/* Busy: hide the label and show an inline spinner while the handler runs. */\n.arkyc-btn.arkyc-busy {\n position: relative;\n color: transparent;\n pointer-events: none;\n opacity: 1;\n}\n\n.arkyc-btn.arkyc-busy::after {\n content: '';\n position: absolute;\n inset: 0;\n margin: auto;\n width: 16px;\n height: 16px;\n border-radius: 50%;\n border: 2px solid rgba(255, 255, 255, 0.5);\n border-top-color: #fff;\n animation: arkyc-spin 0.8s linear infinite;\n}\n\n.arkyc-btn-ghost.arkyc-busy::after {\n border-color: color-mix(in srgb, var(--arkyc-primary) 35%, transparent);\n border-top-color: var(--arkyc-primary);\n}\n\n.arkyc-btn-ghost {\n background: transparent;\n color: var(--arkyc-primary);\n border: 1px solid var(--arkyc-border);\n}\n\n/* Address-entry form (opt-in address stage). */\n.arkyc-addr-form {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 8px;\n width: 100%;\n max-width: 340px;\n text-align: left;\n}\n\n.arkyc-addr-input {\n width: 100%;\n box-sizing: border-box;\n padding: 9px 11px;\n font-size: 14px;\n color: var(--arkyc-fg);\n background: var(--arkyc-bg);\n border: 1px solid var(--arkyc-border);\n border-radius: var(--arkyc-radius);\n outline: none;\n}\n\n.arkyc-addr-input[type='file'] {\n max-width: 340px;\n padding: 7px 9px;\n}\n\n.arkyc-addr-input:focus {\n border-color: var(--arkyc-primary);\n}\n\n.arkyc-addr-opt {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n max-width: 340px;\n font-size: 14px;\n color: var(--arkyc-fg);\n text-align: left;\n cursor: pointer;\n}\n\n.arkyc-addr-opt input {\n flex: none;\n width: 16px;\n height: 16px;\n margin: 0;\n}\n\nselect.arkyc-addr-input {\n color: #757575;\n}\n\n.arkyc-choices {\n display: flex;\n flex-direction: column;\n gap: 8px;\n width: 100%;\n max-width: 340px;\n}\n\n.arkyc-preview {\n width: 100%;\n max-width: 360px;\n border-radius: var(--arkyc-radius);\n background: #000;\n aspect-ratio: 3/2;\n object-fit: cover;\n}\n\n.arkyc-preview.selfie {\n aspect-ratio: 1/1;\n max-width: 280px;\n border-radius: 50%;\n transform: scaleX(-1);\n}\n\n.arkyc-spinner {\n width: 42px;\n height: 42px;\n border-radius: 50%;\n border: 4px solid var(--arkyc-border);\n border-top-color: var(--arkyc-primary);\n animation: arkyc-spin 1s linear infinite;\n}\n\n.arkyc-spinner.sm {\n width: 18px;\n height: 18px;\n border-width: 3px;\n}\n\n@keyframes arkyc-spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n.arkyc-qr {\n width: 200px;\n height: 200px;\n padding: 12px;\n margin: 4px auto;\n background: #fff;\n border-radius: var(--arkyc-radius);\n border: 1px solid var(--arkyc-border);\n}\n\n.arkyc-qr svg {\n display: block;\n width: 100%;\n height: 100%;\n}\n\n.arkyc-handoff-wait {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 10px;\n color: var(--arkyc-muted);\n font-size: 14px;\n margin-top: 6px;\n}\n\n/* Decorative line-art illustration on the welcome / instruction screens: a soft\n tinted disc in the primary colour with a halo, holding a stroked icon. */\n.arkyc-illus {\n width: 104px;\n height: 104px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n margin: 0 auto 2px;\n color: var(--arkyc-primary);\n background: color-mix(in srgb, var(--arkyc-primary) 12%, transparent);\n box-shadow: 0 0 0 8px color-mix(in srgb, var(--arkyc-primary) 5%, transparent);\n}\n\n.arkyc-illus svg {\n width: 58px;\n height: 58px;\n}\n\n.arkyc-badge {\n width: 64px;\n height: 64px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 32px;\n color: #fff;\n}\n\n.arkyc-badge.ok {\n background: #16a34a;\n}\n\n.arkyc-badge.warn {\n background: #d97706;\n}\n\n.arkyc-badge.err {\n background: #dc2626;\n}\n\n/* --- Animated capture overlays --- */\n.arkyc-stage {\n position: relative;\n width: 100%;\n max-width: 280px;\n margin: 0 auto;\n}\n\n.arkyc-stage .arkyc-preview {\n display: block;\n width: 100%;\n max-width: 100%;\n}\n\n.arkyc-ring {\n position: absolute;\n inset: 0;\n pointer-events: none;\n}\n\n.arkyc-ring svg {\n width: 100%;\n height: 100%;\n transform: rotate(-90deg);\n overflow: visible;\n}\n\n.arkyc-ring-track {\n fill: none;\n stroke: rgba(125, 130, 150, 0.3);\n stroke-width: 3;\n}\n\n.arkyc-ring-arc {\n fill: none;\n stroke: var(--arkyc-primary);\n stroke-width: 4;\n stroke-linecap: round;\n transition:\n stroke-dashoffset 0.15s linear,\n stroke 0.25s;\n}\n\n.arkyc-stage[data-state='wait'] .arkyc-ring-track {\n animation: arkyc-pulse 1.5s ease-in-out infinite;\n}\n\n.arkyc-stage[data-state='good'] .arkyc-ring-arc,\n.arkyc-stage[data-state='done'] .arkyc-ring-arc,\n.arkyc-stage[data-state='done'] .arkyc-ring-track {\n stroke: #16a34a;\n}\n\n.arkyc-cue {\n position: absolute;\n left: 0;\n right: 0;\n bottom: 7%;\n display: flex;\n justify-content: center;\n align-items: center;\n pointer-events: none;\n opacity: 0;\n transition: opacity 0.25s;\n}\n\n.arkyc-cue.show {\n opacity: 1;\n}\n\n.arkyc-cue svg {\n width: 36px;\n height: 36px;\n color: #fff;\n filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.55));\n}\n\n.arkyc-cue-turn_right svg {\n animation: arkyc-nudge-r 1.1s ease-in-out infinite;\n}\n\n.arkyc-cue-turn_left svg {\n animation: arkyc-nudge-l 1.1s ease-in-out infinite;\n}\n\n.arkyc-cue-nod svg {\n animation: arkyc-nudge-d 1.1s ease-in-out infinite;\n}\n\n.arkyc-cue-move_closer svg {\n animation: arkyc-zoom 1.2s ease-in-out infinite;\n}\n\n.arkyc-cue-blink svg,\n.arkyc-cue-smile svg {\n animation: arkyc-soft 1.3s ease-in-out infinite;\n}\n\n.arkyc-check {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 0;\n transform: scale(0.5);\n transition:\n opacity 0.25s,\n transform 0.25s;\n pointer-events: none;\n}\n\n.arkyc-check svg {\n width: 56px;\n height: 56px;\n color: #16a34a;\n background: rgba(255, 255, 255, 0.92);\n border-radius: 50%;\n padding: 10px;\n box-sizing: border-box;\n}\n\n.arkyc-stage[data-state='done'] .arkyc-check {\n opacity: 1;\n transform: scale(1);\n}\n\n.arkyc-stage[data-state='done'] .arkyc-cue {\n opacity: 0;\n}\n\n.arkyc-dots {\n display: flex;\n gap: 8px;\n justify-content: center;\n margin: 0 0 14px;\n}\n\n.arkyc-dot {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: var(--arkyc-border);\n transition:\n background 0.3s,\n transform 0.3s;\n}\n\n.arkyc-dot.active {\n background: var(--arkyc-primary);\n transform: scale(1.4);\n animation: arkyc-pulse 1.2s ease-in-out infinite;\n}\n\n.arkyc-dot.done {\n background: #16a34a;\n}\n\n.arkyc-doc {\n position: relative;\n width: 100%;\n max-width: 360px;\n margin: 0 auto;\n}\n\n.arkyc-doc .arkyc-preview {\n display: block;\n width: 100%;\n max-width: 100%;\n}\n\n.arkyc-doc-frame {\n position: absolute;\n /* Fixed, always-visible alignment target at the ID-1 card aspect ratio\n (85.6 × 54 mm ≈ 1.585:1), centred in the preview. */\n top: 50%;\n left: 50%;\n width: 86%;\n aspect-ratio: 1.585 / 1;\n transform: translate(-50%, -50%);\n pointer-events: none;\n border: 2px solid rgba(255, 255, 255, 0.5);\n border-radius: 10px;\n transition: border-color 0.3s;\n}\n\n.arkyc-corner {\n position: absolute;\n width: 24px;\n height: 24px;\n border: 3px solid rgba(255, 255, 255, 0.9);\n transition: border-color 0.3s;\n}\n\n.arkyc-corner.tl {\n top: 0;\n left: 0;\n border-right: none;\n border-bottom: none;\n border-top-left-radius: 6px;\n}\n\n.arkyc-corner.tr {\n top: 0;\n right: 0;\n border-left: none;\n border-bottom: none;\n border-top-right-radius: 6px;\n}\n\n.arkyc-corner.bl {\n bottom: 0;\n left: 0;\n border-right: none;\n border-top: none;\n border-bottom-left-radius: 6px;\n}\n\n.arkyc-corner.br {\n bottom: 0;\n right: 0;\n border-left: none;\n border-top: none;\n border-bottom-right-radius: 6px;\n}\n\n.arkyc-scan {\n position: absolute;\n /* Animates within the fixed guide (its parent), sweeping the card area. */\n left: 6%;\n right: 6%;\n top: 6%;\n height: 2px;\n background: linear-gradient(90deg, transparent, var(--arkyc-primary), transparent);\n box-shadow: 0 0 8px var(--arkyc-primary);\n animation: arkyc-scan 2.4s ease-in-out infinite;\n}\n\n/* A document is in view: brighten the guide (quality tints still override). */\n.arkyc-doc[data-detected='true'] .arkyc-doc-frame {\n border-color: rgba(255, 255, 255, 0.85);\n}\n\n.arkyc-doc[data-q='good'] .arkyc-corner,\n.arkyc-doc[data-q='good'] .arkyc-doc-frame {\n border-color: #16a34a;\n}\n\n.arkyc-doc[data-q='good'] .arkyc-scan {\n background: linear-gradient(90deg, transparent, #16a34a, transparent);\n box-shadow: 0 0 8px #16a34a;\n}\n\n.arkyc-doc[data-q='bad'] .arkyc-corner,\n.arkyc-doc[data-q='bad'] .arkyc-doc-frame {\n border-color: #f59e0b;\n}\n\n@keyframes arkyc-pulse {\n 0%,\n 100% {\n opacity: 1;\n }\n\n 50% {\n opacity: 0.4;\n }\n}\n\n@keyframes arkyc-nudge-r {\n 0%,\n 100% {\n transform: translateX(-7px);\n }\n\n 50% {\n transform: translateX(7px);\n }\n}\n\n@keyframes arkyc-nudge-l {\n 0%,\n 100% {\n transform: translateX(7px);\n }\n\n 50% {\n transform: translateX(-7px);\n }\n}\n\n@keyframes arkyc-nudge-d {\n 0%,\n 100% {\n transform: translateY(-6px);\n }\n\n 50% {\n transform: translateY(6px);\n }\n}\n\n@keyframes arkyc-zoom {\n 0%,\n 100% {\n transform: scale(0.8);\n }\n\n 50% {\n transform: scale(1.15);\n }\n}\n\n@keyframes arkyc-soft {\n 0%,\n 100% {\n opacity: 0.35;\n }\n\n 50% {\n opacity: 1;\n }\n}\n\n@keyframes arkyc-scan {\n 0%,\n 100% {\n top: 6%;\n }\n\n 50% {\n top: 90%;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .arkyc-ring-track,\n .arkyc-cue svg,\n .arkyc-scan,\n .arkyc-dot,\n .arkyc-spinner {\n animation: none !important;\n }\n\n .arkyc-ring-arc {\n transition: none !important;\n }\n}\n\n.arkyc-hidden {\n display: none;\n}\n";
|
|
3
3
|
//#endregion
|
|
4
4
|
export { _virtual_arkyc_theme_css_default as default };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var Arkyc=(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Object.create,n=Object.defineProperty,r=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,a=Object.getPrototypeOf,o=Object.prototype.hasOwnProperty,s=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),c=(e,t,a,s)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var c=i(t),l=0,u=c.length,d;l<u;l++)d=c[l],!o.call(e,d)&&d!==a&&n(e,d,{get:(e=>t[e]).bind(null,d),enumerable:!(s=r(t,d))||s.enumerable});return e},l=(e,r,i)=>(i=e==null?{}:t(a(e)),c(r||!e||!e.__esModule?n(i,`default`,{value:e,enumerable:!0}):i,e));function u(e){"@babel/helpers - typeof";return u=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},u(e)}function d(e,t){if(u(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(u(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function f(e){var t=d(e,`string`);return u(t)==`symbol`?t:t+``}function p(e,t,n){return(t=f(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var m=class extends Error{constructor(e,t,n){super(e),p(this,`status`,void 0),p(this,`code`,void 0),this.name=`WidgetApiError`,this.status=t,this.code=n}};function h(e,t){if(t)for(let[n,r]of Object.entries(t))r!=null&&e.append(n,String(r))}var g=class{constructor(e){if(p(this,`token`,void 0),p(this,`baseUrl`,void 0),p(this,`fetchImpl`,void 0),!e.token)throw Error("ArkycClient requires a client `token`.");this.token=e.token,this.baseUrl=(e.baseUrl??``).replace(/\/$/,``);let t=e.fetch??globalThis.fetch;if(!t)throw Error("No `fetch` implementation available.");this.fetchImpl=t.bind(globalThis)}getSession(){return this.request(`GET`,`/v1/client/session`)}submitDocumentFront(e){let t=new FormData;return e.image&&t.append(`image`,e.image,`document-front.jpg`),e.country&&t.append(`country`,e.country),e.documentType&&t.append(`document_type`,e.documentType),h(t,e.signals),this.request(`POST`,`/v1/client/document/front`,t)}submitDocumentBack(e){let t=new FormData;return e.image&&t.append(`image`,e.image,`document-back.jpg`),e.country&&t.append(`country`,e.country),e.documentType&&t.append(`document_type`,e.documentType),this.request(`POST`,`/v1/client/document/back`,t)}submitLiveness(e){let t=new FormData;return e.selfie&&t.append(`selfie`,e.selfie,`selfie.jpg`),e.video&&t.append(`video`,e.video,`liveness.webm`),e.mode&&t.append(`mode`,e.mode),e.challenges&&t.append(`challenges`,JSON.stringify(e.challenges)),h(t,e.signals),this.request(`POST`,`/v1/client/liveness`,t)}complete(e={}){return this.request(`POST`,`/v1/client/complete`,e.signals??{})}async request(e,t,n){let r={"X-Client-Token":this.token},i;n instanceof FormData?i=n:n&&(r[`Content-Type`]=`application/json`,i=JSON.stringify(n));let a=await this.fetchImpl(`${this.baseUrl}${t}`,{method:e,headers:r,body:i}),o=await a.text(),s=o?JSON.parse(o):{};if(!a.ok)throw new m(s.message??`Request failed (${a.status})`,a.status);return s.data}};async function _(e,t){try{return await import(e)}catch{return await import(`https://cdn.jsdelivr.net/npm/${t}`)}}async function v(e,t){try{if(e.transport===`pusher`)return await y(e,t);if(e.transport===`firebase`)return await b(e)}catch{return null}return null}async function y(e,t){let n=(await _(`pusher-js`,`pusher-js@8/+esm`)).default,r=new n(String(e.key??``),{cluster:String(e.cluster??`mt1`),forceTLS:!!(e.forceTLS??!1),...e.wsHost?{wsHost:String(e.wsHost),wsPort:Number(e.wsPort),wssPort:Number(e.wssPort??e.wsPort),enabledTransports:e.enabledTransports??[`ws`,`wss`]}:{},channelAuthorization:{transport:`ajax`,endpoint:t.authEndpoint,headers:{"X-Client-Token":t.token}}});return{subscribe(e,t){let n=r.subscribe(e),i=(e,n)=>t(e,n);return n.bind_global(i),()=>{n.unbind_global(i),r.unsubscribe(e)}},disconnect(){r.disconnect()}}}async function b(e){let[t,n,r]=await Promise.all([_(`firebase/app`,`firebase@11/app/+esm`),_(`firebase/auth`,`firebase@11/auth/+esm`),_(`firebase/database`,`firebase@11/database/+esm`)]),i=`arkyc-widget-realtime`,a=t.getApps().some(e=>e.name===i)?t.getApp(i):t.initializeApp({apiKey:String(e.apiKey??``),authDomain:String(e.authDomain??``),projectId:String(e.projectId??``),databaseURL:String(e.databaseURL??``)},i);e.token&&await n.signInWithCustomToken(n.getAuth(a),e.token);let o=r.getDatabase(a),s=Date.now();return{subscribe(e,t){let n=r.query(r.ref(o,`realtime/${e}`),r.orderByChild(`at`),r.startAt(s)),i=r.onChildAdded(n,e=>{let n=e.val();n&&t(n.event,n.payload)});return()=>i()},disconnect(){}}}var x=`.arkyc-root {
|
|
1
|
+
var Arkyc=(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Object.create,n=Object.defineProperty,r=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,a=Object.getPrototypeOf,o=Object.prototype.hasOwnProperty,s=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),c=(e,t,a,s)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var c=i(t),l=0,u=c.length,d;l<u;l++)d=c[l],!o.call(e,d)&&d!==a&&n(e,d,{get:(e=>t[e]).bind(null,d),enumerable:!(s=r(t,d))||s.enumerable});return e},l=(e,r,i)=>(i=e==null?{}:t(a(e)),c(r||!e||!e.__esModule?n(i,`default`,{value:e,enumerable:!0}):i,e));function u(e){"@babel/helpers - typeof";return u=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},u(e)}function d(e,t){if(u(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(u(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function f(e){var t=d(e,`string`);return u(t)==`symbol`?t:t+``}function p(e,t,n){return(t=f(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var m=class extends Error{constructor(e,t,n){super(e),p(this,`status`,void 0),p(this,`code`,void 0),this.name=`WidgetApiError`,this.status=t,this.code=n}};function h(e,t){if(t)for(let[n,r]of Object.entries(t))r!=null&&e.append(n,String(r))}var g=class{constructor(e){if(p(this,`token`,void 0),p(this,`baseUrl`,void 0),p(this,`fetchImpl`,void 0),!e.token)throw Error("ArkycClient requires a client `token`.");this.token=e.token,this.baseUrl=(e.baseUrl??``).replace(/\/$/,``);let t=e.fetch??globalThis.fetch;if(!t)throw Error("No `fetch` implementation available.");this.fetchImpl=t.bind(globalThis)}getSession(){return this.request(`GET`,`/v1/client/session`)}submitDocumentFront(e){let t=new FormData;return e.image&&t.append(`image`,e.image,`document-front.jpg`),e.country&&t.append(`country`,e.country),e.documentType&&t.append(`document_type`,e.documentType),h(t,e.signals),this.request(`POST`,`/v1/client/document/front`,t)}submitDocumentBack(e){let t=new FormData;return e.image&&t.append(`image`,e.image,`document-back.jpg`),e.country&&t.append(`country`,e.country),e.documentType&&t.append(`document_type`,e.documentType),this.request(`POST`,`/v1/client/document/back`,t)}submitLiveness(e){let t=new FormData;return e.selfie&&t.append(`selfie`,e.selfie,`selfie.jpg`),e.video&&t.append(`video`,e.video,`liveness.webm`),e.mode&&t.append(`mode`,e.mode),e.challenges&&t.append(`challenges`,JSON.stringify(e.challenges)),h(t,e.signals),this.request(`POST`,`/v1/client/liveness`,t)}submitAddress(e){let t=new FormData,n={line1:e.line1,line2:e.line2,city:e.city,region:e.region,postal_code:e.postalCode,country:e.country};for(let[e,r]of Object.entries(n))r&&t.append(e,r);return e.poa&&t.append(`poa`,e.poa,`proof-of-address.jpg`),e.latitude!=null&&t.append(`latitude`,String(e.latitude)),e.longitude!=null&&t.append(`longitude`,String(e.longitude)),h(t,e.signals),this.request(`POST`,`/v1/client/address`,t)}complete(e={}){return this.request(`POST`,`/v1/client/complete`,e.signals??{})}async request(e,t,n){let r={"X-Client-Token":this.token},i;n instanceof FormData?i=n:n&&(r[`Content-Type`]=`application/json`,i=JSON.stringify(n));let a=await this.fetchImpl(`${this.baseUrl}${t}`,{method:e,headers:r,body:i}),o=await a.text(),s=o?JSON.parse(o):{};if(!a.ok)throw new m(s.message??`Request failed (${a.status})`,a.status);return s.data}};async function _(e,t){try{return await import(e)}catch{return await import(`https://cdn.jsdelivr.net/npm/${t}`)}}async function v(e,t){try{if(e.transport===`pusher`)return await y(e,t);if(e.transport===`firebase`)return await b(e)}catch{return null}return null}async function y(e,t){let n=(await _(`pusher-js`,`pusher-js@8/+esm`)).default,r=new n(String(e.key??``),{cluster:String(e.cluster??`mt1`),forceTLS:!!(e.forceTLS??!1),...e.wsHost?{wsHost:String(e.wsHost),wsPort:Number(e.wsPort),wssPort:Number(e.wssPort??e.wsPort),enabledTransports:e.enabledTransports??[`ws`,`wss`]}:{},channelAuthorization:{transport:`ajax`,endpoint:t.authEndpoint,headers:{"X-Client-Token":t.token}}});return{subscribe(e,t){let n=r.subscribe(e),i=(e,n)=>t(e,n);return n.bind_global(i),()=>{n.unbind_global(i),r.unsubscribe(e)}},disconnect(){r.disconnect()}}}async function b(e){let[t,n,r]=await Promise.all([_(`firebase/app`,`firebase@11/app/+esm`),_(`firebase/auth`,`firebase@11/auth/+esm`),_(`firebase/database`,`firebase@11/database/+esm`)]),i=`arkyc-widget-realtime`,a=t.getApps().some(e=>e.name===i)?t.getApp(i):t.initializeApp({apiKey:String(e.apiKey??``),authDomain:String(e.authDomain??``),projectId:String(e.projectId??``),databaseURL:String(e.databaseURL??``)},i);e.token&&await n.signInWithCustomToken(n.getAuth(a),e.token);let o=r.getDatabase(a),s=Date.now();return{subscribe(e,t){let n=r.query(r.ref(o,`realtime/${e}`),r.orderByChild(`at`),r.startAt(s)),i=r.onChildAdded(n,e=>{let n=e.val();n&&t(n.event,n.payload)});return()=>i()},disconnect(){}}}var x=`.arkyc-root {
|
|
2
2
|
/* {variables} */
|
|
3
3
|
|
|
4
4
|
color: var(--arkyc-fg);
|
|
@@ -197,6 +197,60 @@ var Arkyc=(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module
|
|
|
197
197
|
border: 1px solid var(--arkyc-border);
|
|
198
198
|
}
|
|
199
199
|
|
|
200
|
+
/* Address-entry form (opt-in address stage). */
|
|
201
|
+
.arkyc-addr-form {
|
|
202
|
+
display: grid;
|
|
203
|
+
grid-template-columns: 1fr 1fr;
|
|
204
|
+
gap: 8px;
|
|
205
|
+
width: 100%;
|
|
206
|
+
max-width: 340px;
|
|
207
|
+
text-align: left;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
.arkyc-addr-input {
|
|
211
|
+
width: 100%;
|
|
212
|
+
box-sizing: border-box;
|
|
213
|
+
padding: 9px 11px;
|
|
214
|
+
font-size: 14px;
|
|
215
|
+
color: var(--arkyc-fg);
|
|
216
|
+
background: var(--arkyc-bg);
|
|
217
|
+
border: 1px solid var(--arkyc-border);
|
|
218
|
+
border-radius: var(--arkyc-radius);
|
|
219
|
+
outline: none;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
.arkyc-addr-input[type='file'] {
|
|
223
|
+
max-width: 340px;
|
|
224
|
+
padding: 7px 9px;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
.arkyc-addr-input:focus {
|
|
228
|
+
border-color: var(--arkyc-primary);
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
.arkyc-addr-opt {
|
|
232
|
+
display: flex;
|
|
233
|
+
align-items: center;
|
|
234
|
+
gap: 8px;
|
|
235
|
+
width: 100%;
|
|
236
|
+
max-width: 340px;
|
|
237
|
+
font-size: 14px;
|
|
238
|
+
color: var(--arkyc-fg);
|
|
239
|
+
text-align: left;
|
|
240
|
+
cursor: pointer;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
.arkyc-addr-opt input {
|
|
244
|
+
flex: none;
|
|
245
|
+
width: 16px;
|
|
246
|
+
height: 16px;
|
|
247
|
+
margin: 0;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
select.arkyc-addr-input {
|
|
251
|
+
color: #757575;
|
|
252
|
+
}
|
|
253
|
+
|
|
200
254
|
.arkyc-choices {
|
|
201
255
|
display: flex;
|
|
202
256
|
flex-direction: column;
|
|
@@ -663,8 +717,8 @@ var Arkyc=(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module
|
|
|
663
717
|
.arkyc-hidden {
|
|
664
718
|
display: none;
|
|
665
719
|
}
|
|
666
|
-
`;let S={background:`#ffffff`,foreground:`#0f172a`,muted:`#64748b`,border:`#e2e8f0`},C={background:`#0f172a`,foreground:`#f8fafc`,muted:`#94a3b8`,border:`#1e293b`};var w=class{constructor(e){p(this,`primaryColor`,void 0),p(this,`borderRadius`,void 0),p(this,`mode`,void 0),p(this,`logoUrl`,void 0),p(this,`name`,void 0),p(this,`showBranding`,void 0),p(this,`background`,void 0),p(this,`foreground`,void 0),p(this,`muted`,void 0),p(this,`border`,void 0),this.mode=e?.theme===`dark`?`dark`:`light`;let t=this.mode===`dark`?C:S;this.primaryColor=e?.primary_color??`#b8860b`,this.borderRadius=e?.border_radius??12,this.logoUrl=e?.logo_url??null,this.name=e?.name??null,this.showBranding=e?.show_branding!==!1,this.background=t.background,this.foreground=t.foreground,this.muted=t.muted,this.border=t.border}variables(){return[`--arkyc-primary:${this.primaryColor}`,`--arkyc-radius:${this.borderRadius}px`,`--arkyc-bg:${this.background}`,`--arkyc-fg:${this.foreground}`,`--arkyc-muted:${this.muted}`,`--arkyc-border:${this.border}`].join(`;`)}stylesheet(){return x.replace(`/* {variables} */`,`${this.variables()};`).trim()}},T=class{constructor(e=globalThis.document,t=globalThis.navigator){this.doc=e,this.nav=t,p(this,`stream`,null)}get supported(){return!!this.nav?.mediaDevices?.getUserMedia}async start(e,t){let n=await this.nav.mediaDevices.getUserMedia({video:{facingMode:t},audio:!1});return this.stream=n,e.srcObject=n,e.setAttribute(`playsinline`,`true`),e.muted=!0,await e.play().catch(()=>void 0),n}stop(){this.stream?.getTracks().forEach(e=>e.stop()),this.stream=null}get canRecord(){return globalThis.MediaRecorder!==void 0}recordStart(e){let t=[],n=new MediaRecorder(e,{mimeType:`video/webm`});return n.ondataavailable=e=>{e.data&&e.data.size>0&&t.push(e.data)},n.start(),{stop:()=>new Promise(e=>{n.onstop=()=>e(new Blob(t,{type:`video/webm`})),n.stop()})}}sampleQuality(e){let t=this.doc.createElement(`canvas`);t.width=32,t.height=32;let n=t.getContext(`2d`);if(!n||!e.videoWidth)return null;n.drawImage(e,0,0,t.width,t.height);let{data:r}=n.getImageData(0,0,t.width,t.height),i=0,a=0,o=r.length/4;for(let e=0;e<r.length;e+=4){let t=(.299*r[e]+.587*r[e+1]+.114*r[e+2])/255;i+=t,t>.92&&(a+=1)}let s=i/o;return{brightness:s,tooDark:s<.25,glare:a/o>.15}}grabFrame(e,t=.92){let n=this.doc.createElement(`canvas`);n.width=e.videoWidth||1280,n.height=e.videoHeight||720;let r=n.getContext(`2d`);return r?(r.drawImage(e,0,0,n.width,n.height),new Promise((e,r)=>{n.toBlob(t=>t?e(t):r(Error(`Failed to capture frame.`)),`image/jpeg`,t)})):Promise.reject(Error(`Canvas 2D context unavailable.`))}static fileFromInput(e){return e.files?.[0]??null}};let E={sessionTransition:`session.transition`,reviewAction:`review.action`},D=[`document`,`liveness`,`face_match`];function O(e,t){return e?e.steps.some(e=>e.key===t&&e.enabled):!0}function k(e){return e?O(e,`document`)&&!e.options.skip_ocr:!0}function A(e){return e?e.steps.filter(e=>e.enabled).map(e=>e.key):[...D]}let j={document:[`document_selection`,`front_capture`,`back_capture`,`ocr_processing`],liveness:[`active_liveness`,`selfie_capture`,`passive_liveness`],face_match:[`face_match`]};var M=class e{static documentHasBack(e){return e!=null&&e!==`passport`}static stepOrder(e={}){return[`welcome`,...A(e.workflow).flatMap(e=>j[e]),`processing`,`result`]}static isStepEnabled(t,n={}){return t===`back_capture`?e.documentHasBack(n.documentType):t===`ocr_processing`?k(n.workflow):t===`active_liveness`?n.livenessMode===`active`:t===`selfie_capture`||t===`passive_liveness`?n.livenessMode!==`active`:!0}static nextStep(t,n={}){let r=e.stepOrder(n),i=r.indexOf(t);if(i<0)return t;for(let t=i+1;t<r.length;t+=1){let i=r[t];if(e.isStepEnabled(i,n))return i}return t}static isTerminal(t){return e.TERMINAL_STATUSES.includes(t)}static statusToDecision(e){switch(e){case`approved`:return`approved`;case`rejected`:return`rejected`;case`requires_review`:return`requires_review`;default:return null}}};p(M,`STEP_ORDER`,[`welcome`,`document_selection`,`front_capture`,`back_capture`,`ocr_processing`,`active_liveness`,`selfie_capture`,`passive_liveness`,`face_match`,`processing`,`result`]),p(M,`TERMINAL_STATUSES`,[`approved`,`rejected`,`requires_review`,`expired`,`cancelled`]);let N=`0.10.20`,P=e=>`https://cdn.jsdelivr.net/npm/`+e;function F(e,t){return e?.find(e=>e.categoryName===t)?.score??0}function I(){let e=globalThis.performance;return e?.now?e.now():0}var ee=class{constructor(){p(this,`landmarker`,null),p(this,`state`,`idle`),p(this,`loading`,null)}async ready(){return this.state===`ready`?!0:this.state===`failed`?!1:(this.loading||(this.loading=this.load()),this.loading)}async load(){this.state=`loading`;try{if(typeof document>`u`)throw Error(`no document`);if(!document.createElement(`canvas`).getContext(`webgl2`))throw Error(`no webgl2`);let e=await import(P(`@mediapipe/tasks-vision@${N}/vision_bundle.mjs`)),t=await e.FilesetResolver.forVisionTasks(P(`@mediapipe/tasks-vision@${N}/wasm`));return this.landmarker=await e.FaceLandmarker.createFromOptions(t,{baseOptions:{modelAssetPath:`https://storage.googleapis.com/mediapipe-models/face_landmarker/face_landmarker/float16/1/face_landmarker.task`,delegate:`GPU`},outputFaceBlendshapes:!0,runningMode:`VIDEO`,numFaces:1}),this.state=`ready`,!0}catch{return this.state=`failed`,!1}}analyze(e){if(this.state!==`ready`||!this.landmarker||!e.videoWidth)return null;let t;try{t=this.landmarker.detectForVideo(e,I())}catch{return null}let n=t.faceLandmarks?.[0];if(!n||n.length===0)return{present:!1,centerX:.5,centerY:.5,scale:0,turn:0,pitch:0,blink:0,smile:0};let r=1,i=0,a=1,o=0;for(let e of n)e.x<r&&(r=e.x),e.x>i&&(i=e.x),e.y<a&&(a=e.y),e.y>o&&(o=e.y);let s=Math.max(.001,o-a),c=n[1],l=n[33],u=n[263],d=n[234],f=n[454],p=n[152],m=c.x-d.x,h=f.x-c.x,g=(h-m)/Math.max(.001,m+h),_=(l.y+u.y)/2,v=(c.y-_)/Math.max(.001,p.y-_),y=t.faceBlendshapes?.[0]?.categories,b=Math.max(F(y,`eyeBlinkLeft`),F(y,`eyeBlinkRight`)),x=(F(y,`mouthSmileLeft`)+F(y,`mouthSmileRight`))/2;return{present:!0,centerX:(r+i)/2,centerY:(a+o)/2,scale:s,turn:g,pitch:v,blink:b,smile:x}}close(){try{this.landmarker?.close()}catch{}this.landmarker=null,this.state=`failed`}};function L(){return new ee}let R={turn:.18,smile:.5,blinkClosed:.55,blinkOpen:.25,hold:3,nodDown:.06,nodReturn:.02,closerFactor:1.22,selfieCenterTol:.2,selfieCenterYTol:.25,selfieMinScale:.28,selfieMaxScale:.85};function z(e,t=R){let n=e=>{let n=0;return{feed(r){return n=r.present&&e(r)?n+1:0,n>=t.hold},get progress(){return Math.min(1,n/Math.max(1,t.hold))}}},r=(e,t,n)=>{let r=null,i=!1,a=!1;return{feed(o){if(!o.present)return!1;let s=e(o);if(r===null)return r=s,!1;if(t(s,r))i=!0;else if(i&&n(s,r))return a=!0,!0;return!1},get progress(){return a?1:i?.6:0}}};switch(e){case`blink`:{let e=!1,n=!1;return{feed(r){if(!r.present)return!1;if(r.blink>t.blinkClosed)e=!0;else if(e&&r.blink<t.blinkOpen)return n=!0,!0;return!1},get progress(){return n?1:e?.6:0}}}case`smile`:return n(e=>e.smile>t.smile);case`turn_left`:return n(e=>e.turn<-t.turn);case`turn_right`:return n(e=>e.turn>t.turn);case`nod`:return r(e=>e.pitch,(e,n)=>e>n+t.nodDown,(e,n)=>e<n+t.nodReturn);case`move_closer`:{let e=null,n=0;return{feed(r){return r.present?e===null?(e=r.scale,!1):(n=r.scale>e*t.closerFactor?n+1:0,n>=t.hold):!1},get progress(){return Math.min(1,n/Math.max(1,t.hold))}}}}}function B(e,t=R){return e.present&&Math.abs(e.centerX-.5)<t.selfieCenterTol&&Math.abs(e.centerY-.5)<t.selfieCenterYTol&&e.scale>t.selfieMinScale&&e.scale<t.selfieMaxScale}let V={sampleWidth:320,minFill:.18,maxFill:.97,centerTol:.22,minEdgeStrength:.1,minSharpness:8,borderMargin:.012,minBrightness:.18,hold:5};function te(e){return[e.y,1-(e.x+e.w),1-(e.y+e.h),e.x]}function H(e,t,n){let r=t,i=-1;for(let a=t;a<n;a+=1){let t=e[a];t>i&&(i=t,r=a)}return{i:r,v:i}}function U(e,t,n){let r={present:!1,rect:{x:0,y:0,w:0,h:0},fill:0,centerX:.5,centerY:.5,edgeStrength:0,sharpness:0,brightness:0};if(t<8||n<8||e.length<t*n)return r;let i=new Float64Array(n),a=new Float64Array(t),o=0,s=0,c=0,l=0;for(let r=0;r<t*n;r+=1)l+=e[r];let u=l/(t*n*255);for(let r=1;r<n-1;r+=1)for(let n=1;n<t-1;n+=1){let l=r*t+n,u=e[l-t-1],d=e[l-t],f=e[l-t+1],p=e[l-1],m=e[l],h=e[l+1],g=e[l+t-1],_=e[l+t],v=e[l+t+1],y=f+2*h+v-(u+2*p+g),b=g+2*_+v-(u+2*d+f);i[r]+=Math.abs(b),a[n]+=Math.abs(y);let x=4*m-p-h-d-_;o+=x,s+=x*x,c+=1}let d=c?s/c-(o/c)**2:0,f=Math.max(1,Math.floor(n*.05)),p=Math.max(1,Math.floor(t*.05)),m=Math.floor(n/2),h=Math.floor(t/2),g=H(i,f,m),_=H(i,m,n-f),v=H(a,p,h),y=H(a,h,t-p),b=v.i/t,x=y.i/t,S=g.i/n,C=_.i/n,w={x:b,y:S,w:Math.max(0,x-b),h:Math.max(0,C-S)},T=Math.max(1,w.w*t),E=Math.max(1,w.h*n),D=Math.min(g.v/(T*1020),_.v/(T*1020),v.v/(E*1020),y.v/(E*1020));return{present:w.w>.12&&w.h>.12&&D>.04,rect:w,fill:w.w*w.h,centerX:(b+x)/2,centerY:(S+C)/2,edgeStrength:D,sharpness:d,brightness:u}}function W(e,t=V){return e.brightness<t.minBrightness?{ready:!1,hint:`Too dark — find better lighting`}:!e.present||e.edgeStrength<t.minEdgeStrength?{ready:!1,hint:`Fit your document inside the frame`}:e.fill>t.maxFill||Math.min(...te(e.rect))<t.borderMargin?{ready:!1,hint:`Move back a little — fit the whole document`}:e.fill<t.minFill?{ready:!1,hint:`Move closer`}:Math.abs(e.centerX-.5)>t.centerTol||Math.abs(e.centerY-.5)>t.centerTol?{ready:!1,hint:`Center the document`}:e.sharpness<t.minSharpness?{ready:!1,hint:`Hold steady to focus`}:{ready:!0,hint:`Looks good — hold steady`}}function ne(e,t=V){return W(e,t).ready}var re=class{constructor(e){this.tuning=e,p(this,`canvas`,null),p(this,`ctx`,null)}ready(){try{if(typeof document>`u`)return Promise.resolve(!1);let e=document.createElement(`canvas`),t=e.getContext(`2d`,{willReadFrequently:!0});return t?(this.canvas=e,this.ctx=t,Promise.resolve(!0)):Promise.resolve(!1)}catch{return Promise.resolve(!1)}}analyze(e){if(!this.ctx||!this.canvas||!e.videoWidth)return null;let t=this.tuning.sampleWidth,n=Math.max(1,Math.round(t*e.videoHeight/e.videoWidth));this.canvas.width=t,this.canvas.height=n;let r;try{this.ctx.drawImage(e,0,0,t,n),r=this.ctx.getImageData(0,0,t,n).data}catch{return null}let i=new Float32Array(t*n);for(let e=0,t=0;e<i.length;e+=1,t+=4)i[e]=.299*r[t]+.587*r[t+1]+.114*r[t+2];return U(i,t,n)}close(){this.canvas=null,this.ctx=null}};function G(e=V){return new re(e)}let ie=[{name:`United States`,iso2:`US`,flag:`🇺🇸`},{name:`Canada`,iso2:`CA`,flag:`🇨🇦`},{name:`Brazil`,iso2:`BR`,flag:`🇧🇷`},{name:`United Kingdom`,iso2:`GB`,flag:`🇬🇧`},{name:`Germany`,iso2:`DE`,flag:`🇩🇪`},{name:`France`,iso2:`FR`,flag:`🇫🇷`},{name:`China`,iso2:`CN`,flag:`🇨🇳`},{name:`Japan`,iso2:`JP`,flag:`🇯🇵`},{name:`India`,iso2:`IN`,flag:`🇮🇳`},{name:`Australia`,iso2:`AU`,flag:`🇦🇺`},{name:`South Africa`,iso2:`ZA`,flag:`🇿🇦`},{name:`Russia`,iso2:`RU`,flag:`🇷🇺`},{name:`Saudi Arabia`,iso2:`SA`,flag:`🇸🇦`},{name:`Afghanistan`,iso2:`AF`,flag:`🇦🇫`},{name:`Albania`,iso2:`AL`,flag:`🇦🇱`},{name:`Algeria`,iso2:`DZ`,flag:`🇩🇿`},{name:`Andorra`,iso2:`AD`,flag:`🇦🇩`},{name:`Angola`,iso2:`AO`,flag:`🇦🇴`},{name:`Antigua and Barbuda`,iso2:`AG`,flag:`🇦🇬`},{name:`Argentina`,iso2:`AR`,flag:`🇦🇷`},{name:`Armenia`,iso2:`AM`,flag:`🇦🇲`},{name:`Austria`,iso2:`AT`,flag:`🇦🇹`},{name:`Azerbaijan`,iso2:`AZ`,flag:`🇦🇿`},{name:`Bahamas`,iso2:`BS`,flag:`🇧🇸`},{name:`Bahrain`,iso2:`BH`,flag:`🇧🇭`},{name:`Bangladesh`,iso2:`BD`,flag:`🇧🇩`},{name:`Barbados`,iso2:`BB`,flag:`🇧🇧`},{name:`Belarus`,iso2:`BY`,flag:`🇧🇾`},{name:`Belgium`,iso2:`BE`,flag:`🇧🇪`},{name:`Belize`,iso2:`BZ`,flag:`🇧🇿`},{name:`Benin`,iso2:`BJ`,flag:`🇧🇯`},{name:`Bhutan`,iso2:`BT`,flag:`🇧🇹`},{name:`Bolivia`,iso2:`BO`,flag:`🇧🇴`},{name:`Bosnia and Herzegovina`,iso2:`BA`,flag:`🇧🇦`},{name:`Botswana`,iso2:`BW`,flag:`🇧🇼`},{name:`Brunei`,iso2:`BN`,flag:`🇧🇳`},{name:`Bulgaria`,iso2:`BG`,flag:`🇧🇬`},{name:`Burkina Faso`,iso2:`BF`,flag:`🇧🇫`},{name:`Burundi`,iso2:`BI`,flag:`🇧🇮`},{name:`Cabo Verde`,iso2:`CV`,flag:`🇨🇻`},{name:`Cambodia`,iso2:`KH`,flag:`🇰🇭`},{name:`Cameroon`,iso2:`CM`,flag:`🇨🇲`},{name:`Central African Republic`,iso2:`CF`,flag:`🇨🇫`},{name:`Chad`,iso2:`TD`,flag:`🇹🇩`},{name:`Chile`,iso2:`CL`,flag:`🇨🇱`},{name:`Colombia`,iso2:`CO`,flag:`🇨🇴`},{name:`Comoros`,iso2:`KM`,flag:`🇰🇲`},{name:`Congo (Congo-Brazzaville)`,iso2:`CG`,flag:`🇨🇬`},{name:`Congo (Congo-Kinshasa)`,iso2:`CD`,flag:`🇨🇩`},{name:`Costa Rica`,iso2:`CR`,flag:`🇨🇷`},{name:`Croatia`,iso2:`HR`,flag:`🇭🇷`},{name:`Cuba`,iso2:`CU`,flag:`🇨🇺`},{name:`Cyprus`,iso2:`CY`,flag:`🇨🇾`},{name:`Czech Republic`,iso2:`CZ`,flag:`🇨🇿`},{name:`Denmark`,iso2:`DK`,flag:`🇩🇰`},{name:`Djibouti`,iso2:`DJ`,flag:`🇩🇯`},{name:`Dominica`,iso2:`DM`,flag:`🇩🇲`},{name:`Dominican Republic`,iso2:`DO`,flag:`🇩🇴`},{name:`Ecuador`,iso2:`EC`,flag:`🇪🇨`},{name:`Egypt`,iso2:`EG`,flag:`🇪🇬`},{name:`El Salvador`,iso2:`SV`,flag:`🇸🇻`},{name:`Equatorial Guinea`,iso2:`GQ`,flag:`🇬🇶`},{name:`Eritrea`,iso2:`ER`,flag:`🇪🇷`},{name:`Estonia`,iso2:`EE`,flag:`🇪🇪`},{name:`Eswatini`,iso2:`SZ`,flag:`🇸🇿`},{name:`Ethiopia`,iso2:`ET`,flag:`🇪🇹`},{name:`Fiji`,iso2:`FJ`,flag:`🇫🇯`},{name:`Finland`,iso2:`FI`,flag:`🇫🇮`},{name:`Gabon`,iso2:`GA`,flag:`🇬🇦`},{name:`Gambia`,iso2:`GM`,flag:`🇬🇲`},{name:`Georgia`,iso2:`GE`,flag:`🇬🇪`},{name:`Ghana`,iso2:`GH`,flag:`🇬🇭`},{name:`Greece`,iso2:`GR`,flag:`🇬🇷`},{name:`Grenada`,iso2:`GD`,flag:`🇬🇩`},{name:`Guatemala`,iso2:`GT`,flag:`🇬🇹`},{name:`Guinea`,iso2:`GN`,flag:`🇬🇳`},{name:`Guinea-Bissau`,iso2:`GW`,flag:`🇬🇼`},{name:`Guyana`,iso2:`GY`,flag:`🇬🇾`},{name:`Haiti`,iso2:`HT`,flag:`🇭🇹`},{name:`Honduras`,iso2:`HN`,flag:`🇭🇳`},{name:`Hungary`,iso2:`HU`,flag:`🇭🇺`},{name:`Iceland`,iso2:`IS`,flag:`🇮🇸`},{name:`Indonesia`,iso2:`ID`,flag:`🇮🇩`},{name:`Iran`,iso2:`IR`,flag:`🇮🇷`},{name:`Iraq`,iso2:`IQ`,flag:`🇮🇶`},{name:`Ireland`,iso2:`IE`,flag:`🇮🇪`},{name:`Israel`,iso2:`IL`,flag:`🇮🇱`},{name:`Italy`,iso2:`IT`,flag:`🇮🇹`},{name:`Jamaica`,iso2:`JM`,flag:`🇯🇲`},{name:`Jordan`,iso2:`JO`,flag:`🇯🇴`},{name:`Kazakhstan`,iso2:`KZ`,flag:`🇰🇿`},{name:`Kenya`,iso2:`KE`,flag:`🇰🇪`},{name:`Kiribati`,iso2:`KI`,flag:`🇰🇮`},{name:`Kuwait`,iso2:`KW`,flag:`🇰🇼`},{name:`Kyrgyzstan`,iso2:`KG`,flag:`🇰🇬`},{name:`Laos`,iso2:`LA`,flag:`🇱🇦`},{name:`Latvia`,iso2:`LV`,flag:`🇱🇻`},{name:`Lebanon`,iso2:`LB`,flag:`🇱🇧`},{name:`Lesotho`,iso2:`LS`,flag:`🇱🇸`},{name:`Liberia`,iso2:`LR`,flag:`🇱🇷`},{name:`Libya`,iso2:`LY`,flag:`🇱🇾`},{name:`Liechtenstein`,iso2:`LI`,flag:`🇱🇮`},{name:`Lithuania`,iso2:`LT`,flag:`🇱🇹`},{name:`Luxembourg`,iso2:`LU`,flag:`🇱🇺`},{name:`Madagascar`,iso2:`MG`,flag:`🇲🇬`},{name:`Malawi`,iso2:`MW`,flag:`🇲🇼`},{name:`Malaysia`,iso2:`MY`,flag:`🇲🇾`},{name:`Maldives`,iso2:`MV`,flag:`🇲🇻`},{name:`Mali`,iso2:`ML`,flag:`🇲🇱`},{name:`Malta`,iso2:`MT`,flag:`🇲🇹`},{name:`Marshall Islands`,iso2:`MH`,flag:`🇲🇭`},{name:`Mauritania`,iso2:`MR`,flag:`🇲🇷`},{name:`Mauritius`,iso2:`MU`,flag:`🇲🇺`},{name:`Mexico`,iso2:`MX`,flag:`🇲🇽`},{name:`Micronesia`,iso2:`FM`,flag:`🇫🇲`},{name:`Moldova`,iso2:`MD`,flag:`🇲🇩`},{name:`Monaco`,iso2:`MC`,flag:`🇲🇨`},{name:`Mongolia`,iso2:`MN`,flag:`🇲🇳`},{name:`Montenegro`,iso2:`ME`,flag:`🇲🇪`},{name:`Morocco`,iso2:`MA`,flag:`🇲🇦`},{name:`Mozambique`,iso2:`MZ`,flag:`🇲🇿`},{name:`Myanmar`,iso2:`MM`,flag:`🇲🇲`},{name:`Namibia`,iso2:`NA`,flag:`🇳🇦`},{name:`Nauru`,iso2:`NR`,flag:`🇳🇷`},{name:`Nepal`,iso2:`NP`,flag:`🇳🇵`},{name:`Netherlands`,iso2:`NL`,flag:`🇳🇱`},{name:`New Zealand`,iso2:`NZ`,flag:`🇳🇿`},{name:`Nicaragua`,iso2:`NI`,flag:`🇳🇮`},{name:`Niger`,iso2:`NE`,flag:`🇳🇪`},{name:`Nigeria`,iso2:`NG`,flag:`🇳🇬`},{name:`North Korea`,iso2:`KP`,flag:`🇰🇵`},{name:`North Macedonia`,iso2:`MK`,flag:`🇲🇰`},{name:`Norway`,iso2:`NO`,flag:`🇳🇴`},{name:`Oman`,iso2:`OM`,flag:`🇴🇲`},{name:`Pakistan`,iso2:`PK`,flag:`🇵🇰`},{name:`Palau`,iso2:`PW`,flag:`🇵🇼`},{name:`Panama`,iso2:`PA`,flag:`🇵🇦`},{name:`Papua New Guinea`,iso2:`PG`,flag:`🇵🇬`},{name:`Paraguay`,iso2:`PY`,flag:`🇵🇾`},{name:`Peru`,iso2:`PE`,flag:`🇵🇪`},{name:`Philippines`,iso2:`PH`,flag:`🇵🇭`},{name:`Poland`,iso2:`PL`,flag:`🇵🇱`},{name:`Portugal`,iso2:`PT`,flag:`🇵🇹`},{name:`Qatar`,iso2:`QA`,flag:`🇶🇦`},{name:`Romania`,iso2:`RO`,flag:`🇷🇴`},{name:`Rwanda`,iso2:`RW`,flag:`🇷🇼`},{name:`Saint Kitts and Nevis`,iso2:`KN`,flag:`🇰🇳`},{name:`Saint Lucia`,iso2:`LC`,flag:`🇱🇨`},{name:`Saint Vincent and the Grenadines`,iso2:`VC`,flag:`🇻🇨`},{name:`Samoa`,iso2:`WS`,flag:`🇼🇸`},{name:`San Marino`,iso2:`SM`,flag:`🇸🇲`},{name:`Sao Tome and Principe`,iso2:`ST`,flag:`🇸🇹`},{name:`Senegal`,iso2:`SN`,flag:`🇸🇳`},{name:`Serbia`,iso2:`RS`,flag:`🇷🇸`},{name:`Seychelles`,iso2:`SC`,flag:`🇸🇨`},{name:`Sierra Leone`,iso2:`SL`,flag:`🇸🇱`},{name:`Singapore`,iso2:`SG`,flag:`🇸🇬`},{name:`Slovakia`,iso2:`SK`,flag:`🇸🇰`},{name:`Slovenia`,iso2:`SI`,flag:`🇸🇮`},{name:`Solomon Islands`,iso2:`SB`,flag:`🇸🇧`},{name:`Somalia`,iso2:`SO`,flag:`🇸🇴`},{name:`South Korea`,iso2:`KR`,flag:`🇰🇷`},{name:`South Sudan`,iso2:`SS`,flag:`🇸🇸`},{name:`Spain`,iso2:`ES`,flag:`🇪🇸`},{name:`Sri Lanka`,iso2:`LK`,flag:`🇱🇰`},{name:`Sudan`,iso2:`SD`,flag:`🇸🇩`},{name:`Suriname`,iso2:`SR`,flag:`🇸🇷`},{name:`Sweden`,iso2:`SE`,flag:`🇸🇪`},{name:`Switzerland`,iso2:`CH`,flag:`🇨🇭`},{name:`Syria`,iso2:`SY`,flag:`🇸🇾`},{name:`Tajikistan`,iso2:`TJ`,flag:`🇹🇯`},{name:`Tanzania`,iso2:`TZ`,flag:`🇹🇿`},{name:`Thailand`,iso2:`TH`,flag:`🇹🇭`},{name:`Togo`,iso2:`TG`,flag:`🇹🇬`},{name:`Tonga`,iso2:`TO`,flag:`🇹🇴`},{name:`Trinidad and Tobago`,iso2:`TT`,flag:`🇹🇹`},{name:`Tunisia`,iso2:`TN`,flag:`🇹🇳`},{name:`Turkey`,iso2:`TR`,flag:`🇹🇷`},{name:`Turkmenistan`,iso2:`TM`,flag:`🇹🇲`},{name:`Tuvalu`,iso2:`TV`,flag:`🇹🇻`},{name:`Uganda`,iso2:`UG`,flag:`🇺🇬`},{name:`Ukraine`,iso2:`UA`,flag:`🇺🇦`},{name:`United Arab Emirates`,iso2:`AE`,flag:`🇦🇪`},{name:`Uruguay`,iso2:`UY`,flag:`🇺🇾`},{name:`Uzbekistan`,iso2:`UZ`,flag:`🇺🇿`},{name:`Vanuatu`,iso2:`VU`,flag:`🇻🇺`},{name:`Venezuela`,iso2:`VE`,flag:`🇻🇪`},{name:`Vietnam`,iso2:`VN`,flag:`🇻🇳`},{name:`Yemen`,iso2:`YE`,flag:`🇾🇪`},{name:`Zambia`,iso2:`ZM`,flag:`🇿🇲`},{name:`Zimbabwe`,iso2:`ZW`,flag:`🇿🇼`},{name:`Timor-Leste`,iso2:`TL`,flag:`🇹🇱`}],K={passport:`Passport`,id_card:`ID Card`,drivers_license:`Driver's License`,residence_permit:`Residence Permit`},q={turn_left:`Slowly turn your head to the left, and hold`,turn_right:`Slowly turn your head to the right, and hold`,blink:`Blink slowly`,smile:`Smile, and hold it`,nod:`Slowly nod your head`,move_closer:`Slowly move closer to the camera`},J={cls:`warn`,icon:`⏳`,title:`Link expired`,copy:`This verification link has expired.`},ae={approved:{cls:`ok`,icon:`✓`,title:`Already complete`,copy:`This verification has already been completed.`},rejected:{cls:`ok`,icon:`✓`,title:`Already complete`,copy:`This verification has already been completed.`},requires_review:{cls:`ok`,icon:`✓`,title:`Already complete`,copy:`This verification has already been submitted and is being reviewed.`},expired:J,cancelled:{cls:`warn`,icon:`⏳`,title:`Cancelled`,copy:`This verification was cancelled.`}},Y=e=>`<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round">${e}</svg>`,oe={turn_right:Y(`<path d="M5 12h14M13 6l6 6-6 6"/>`),turn_left:Y(`<path d="M19 12H5M11 6l-6 6 6 6"/>`),nod:Y(`<path d="M12 5v14M6 13l6 6 6-6"/>`),move_closer:Y(`<circle cx="12" cy="12" r="4"/><path d="M12 2v3M12 19v3M2 12h3M19 12h3"/>`),blink:Y(`<path d="M2 12s4-7 10-7 10 7 10 7-4 7-10 7S2 12 2 12z"/><circle cx="12" cy="12" r="3"/>`),smile:Y(`<path d="M8 14s1.5 2 4 2 4-2 4-2"/><path d="M9 9h.01M15 9h.01"/>`)},se=Y(`<path d="M20 6 9 17l-5-5"/>`),X=e=>`<svg viewBox="0 0 64 64" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round">${e}</svg>`,ce={welcome:X(`<path d="M32 7 52 14v14c0 12.5-8.2 21.6-20 25.6C20.2 49.6 12 40.5 12 28V14z"/><path d="M23 30.5l6.2 6.2L41 24.5"/>`),front_capture:X(`<rect x="7" y="15" width="50" height="34" rx="5"/><circle cx="22" cy="28" r="5"/><path d="M14 42c1-5 5-7 8-7s7 2 8 7"/><path d="M38 27h12M38 34h12M38 41h8"/>`),back_capture:X(`<rect x="7" y="15" width="50" height="34" rx="5"/><rect x="7" y="20" width="50" height="6" fill="currentColor" stroke="none" opacity=".18"/><path d="M14 34h36M14 41h24"/>`),selfie_capture:X(`<path d="M10 20v-6a4 4 0 0 1 4-4h6"/><path d="M44 10h6a4 4 0 0 1 4 4v6"/><path d="M54 44v6a4 4 0 0 1-4 4h-6"/><path d="M20 54h-6a4 4 0 0 1-4-4v-6"/><circle cx="32" cy="27" r="8"/><path d="M19 50c0-7 6-11 13-11s13 4 13 11"/>`),active_liveness:X(`<circle cx="32" cy="30" r="13"/><circle cx="27" cy="27" r="1.2" fill="currentColor" stroke="none"/><circle cx="37" cy="27" r="1.2" fill="currentColor" stroke="none"/><path d="M26 34c2 2.5 10 2.5 12 0"/><path d="M13 30H6M10 26l-4 4 4 4"/><path d="M51 30h7M54 26l4 4-4 4"/>`)};var le=class{constructor(e,t,n,r=globalThis.navigator,i=L(),a=R,o=G(),s=V){this.doc=e,this.theme=t,this.handlers=n,p(this,`root`,void 0),p(this,`body`,void 0),p(this,`footer`,void 0),p(this,`styleEl`,void 0),p(this,`brandEl`,void 0),p(this,`camera`,void 0),p(this,`analyzer`,void 0),p(this,`tuning`,void 0),p(this,`docAnalyzer`,void 0),p(this,`docTuning`,void 0),p(this,`timers`,[]),p(this,`cleanups`,[]),this.camera=new T(e,r),this.analyzer=i,this.tuning=a,this.docAnalyzer=o,this.docTuning=s,this.root=this.el(`div`,{class:`arkyc-root`}),this.styleEl=this.el(`style`,{text:t.stylesheet()}),this.root.appendChild(this.styleEl);let c=this.el(`div`,{class:`arkyc-card`}),l=this.el(`div`,{class:`arkyc-header`});this.brandEl=this.el(`div`,{class:`arkyc-brand`}),this.fillBrand(),l.appendChild(this.brandEl);let u=this.el(`button`,{class:`arkyc-close`,html:`×`,"aria-label":`Close`});u.addEventListener(`click`,()=>this.handlers.onClose()),l.appendChild(u),this.body=this.el(`div`,{class:`arkyc-body`}),this.footer=this.el(`div`,{class:`arkyc-footer`}),c.appendChild(l),c.appendChild(this.body),c.appendChild(this.footer),this.root.appendChild(c)}fillBrand(){this.clear(this.brandEl);let e=Date.now()-Math.floor(600*1e3*Math.random());this.theme.showBranding&&(this.theme.logoUrl||this.theme.name)?(this.theme.logoUrl&&this.brandEl.appendChild(this.el(`img`,{class:`arkyc-logo`,src:this.theme.logoUrl+`?stamp=`+e})),this.theme.name&&this.brandEl.appendChild(this.el(`span`,{class:`arkyc-brand-name`,text:this.theme.name}))):this.brandEl.appendChild(this.el(`p`,{class:`arkyc-title`,text:`Verify your identity`}))}applyBranding(e){this.theme=new w(e),this.styleEl.textContent=this.theme.stylesheet(),this.fillBrand()}get element(){return this.root}get cameraSupported(){return this.camera.supported}destroy(){this.timers.forEach(e=>clearInterval(e)),this.timers=[],this.cleanups.forEach(e=>e()),this.cleanups=[],this.camera.stop()}render(e){switch(this.destroy(),this.clear(this.body),this.clear(this.footer),this.root.classList.remove(`arkyc-handoff`),e.step){case`welcome`:return this.renderWelcome(e.handoffAvailable);case`document_selection`:return this.renderDocumentSelection();case`front_capture`:return this.renderCapture(`Front of document`,`environment`,e.allowSkip,!1,e.strictCapture);case`back_capture`:return this.renderCapture(`Back of document`,`environment`,e.allowSkip,!1,e.strictCapture);case`selfie_capture`:return this.renderCapture(`Take a selfie`,`user`,e.allowSkip,!0,e.strictCapture);case`active_liveness`:return this.renderActiveLiveness(e.livenessChallenges??[],e.allowSkip,e.requireLiveCamera);case`ocr_processing`:return this.renderProcessing(`Reading your document…`);case`passive_liveness`:return this.renderProcessing(`Checking liveness…`);case`face_match`:return this.renderProcessing(`Matching your face…`);case`processing`:return this.renderProcessing(e.statusLabel??`Finalising verification…`);case`result`:return this.renderResult(e.decision??null,e.errorMessage,{terminal:e.terminalNotice,status:e.status})}}appendArt(e){let t=ce[e];t&&this.body.appendChild(this.el(`div`,{class:`arkyc-illus`,html:t}))}renderWelcome(e){this.appendArt(`welcome`),this.body.appendChild(this.el(`h2`,{class:`arkyc-h`,text:`Verify your identity`})),this.body.appendChild(this.el(`p`,{class:`arkyc-p`,text:`You will need a government-issued ID and a moment to take a selfie. Your data is processed securely.`})),this.footer.appendChild(this.button(`Get started`,()=>this.handlers.onStart())),e&&this.footer.appendChild(this.button(`Continue on your phone`,()=>this.handlers.onUsePhone(),`arkyc-btn-ghost`))}renderLoading(e=`Loading…`){this.destroy(),this.clear(this.body),this.clear(this.footer),this.root.classList.remove(`arkyc-handoff`),this.renderProcessing(e)}renderInstruction(e,t,n,r,i){this.destroy(),this.clear(this.body),this.clear(this.footer),this.root.classList.remove(`arkyc-handoff`),this.appendArt(e),this.body.appendChild(this.el(`h2`,{class:`arkyc-h`,text:t})),this.body.appendChild(this.el(`p`,{class:`arkyc-p`,text:n})),this.footer.appendChild(this.button(r,i))}renderHandoff(e,t){this.destroy(),this.clear(this.body),this.clear(this.footer),this.root.classList.add(`arkyc-handoff`),this.body.appendChild(this.el(`h2`,{class:`arkyc-h`,text:`Continue on your phone`})),this.body.appendChild(this.el(`p`,{class:`arkyc-p`,text:`Scan this code with your phone camera to finish verifying there.`})),this.body.appendChild(this.el(`div`,{class:`arkyc-qr`,html:e}));let n=this.el(`div`,{class:`arkyc-handoff-wait`});n.appendChild(this.el(`div`,{class:`arkyc-spinner sm`})),n.appendChild(this.el(`span`,{text:`Waiting for your phone…`})),this.body.appendChild(n),t&&this.footer.appendChild(this.button(`Continue on this device`,()=>this.handlers.onContinueHere(),`arkyc-btn-ghost`))}renderDocumentSelection(){this.body.appendChild(this.el(`h2`,{class:`arkyc-h`,text:`Select your document`}));let e=this.el(`select`,{class:`arkyc-btn arkyc-btn-ghost arkyc-text-center`,name:`country`,autocomplete:`country`,"aria-label":`Country`}),t=this.el(`option`,{value:``,selected:`selected`});t.textContent=`Country`,e.appendChild(t),ie.forEach(({name:t,iso2:n,flag:r})=>{let i=this.el(`option`,{value:n});i.textContent=`${r} ${t}`,e.appendChild(i)});let n=this.el(`div`,{class:`arkyc-choices`});n.appendChild(e),Object.keys(K).forEach(t=>{let r=this.button(K[t],()=>this.handlers.onDocumentSelected(t,(e.value||``).trim().toUpperCase()));r.classList.add(`arkyc-btn-ghost`),n.appendChild(r)}),this.body.appendChild(n)}renderCapture(e,t,n,r=!1,i=!1){let a=i&&!r;this.body.appendChild(this.el(`h2`,{class:`arkyc-h`,text:e})),this.body.appendChild(this.el(`p`,{class:`arkyc-p`,text:`Position it clearly in frame, then capture.`}));let o=this.el(`input`,{type:`file`,accept:`image/*`,class:`arkyc-hidden`});if(o.addEventListener(`change`,()=>this.handlers.onImage(T.fileFromInput(o))),this.body.appendChild(o),this.camera.supported){let s=this.el(`video`,{class:`arkyc-preview${r?` selfie`:``}`}),c=r?this.buildFaceStage(s):null,l=r?null:this.buildDocStage(s),u=c?.stage??l.stage;this.body.appendChild(u);let d=this.el(`p`,{class:`arkyc-p arkyc-hint`});this.body.appendChild(d);let f=a=>{if(this.destroy(),a){let e=URL.createObjectURL(a),t=this.el(`img`,{class:`arkyc-preview${r?` selfie`:``}`,src:e});u.replaceWith(t),this.cleanups.push(()=>URL.revokeObjectURL(e))}else u.classList.add(`arkyc-hidden`);this.clear(this.footer),d.textContent=`✓ Captured`,this.footer.appendChild(this.button(`Continue`,()=>this.handlers.onImage(a)));let o=this.button(`Retake`,()=>{this.destroy(),this.clear(this.body),this.clear(this.footer),this.renderCapture(e,t,n,r,i)});o.classList.add(`arkyc-btn-ghost`),this.footer.appendChild(o)},p=()=>void this.camera.grabFrame(s).then(f);this.camera.start(s,t).catch(()=>{if(u.classList.add(`arkyc-hidden`),a){d.textContent=`Camera access is required to scan your document. Please allow access and try again.`;return}o.click()}),r?this.runSelfieAutoCapture(s,d,p,c):(this.runDocumentAutoCapture(s,d,l,a,p),a||this.footer.appendChild(this.button(`Capture`,p)))}else if(a)this.body.appendChild(this.el(`div`,{class:`arkyc-badge err`,html:`!`})),this.body.appendChild(this.el(`p`,{class:`arkyc-p`,text:`This step needs a working camera to scan your document. Please retry on a device with a camera.`}));else{let e=this.button(`Upload photo`,()=>o.click());this.footer.appendChild(e)}if(n){let e=this.button(`Skip (demo)`,()=>this.handlers.onImage(null));e.classList.add(`arkyc-btn-ghost`),this.footer.appendChild(e)}}onCameraLive(e,t){if((e.readyState??0)>=2){t();return}e.addEventListener(`playing`,t,{once:!0})}runDocumentAutoCapture(e,t,n,r,i){let a=()=>{if(r){t.textContent=`Document scanning isn’t available on this device.`;return}this.runDocumentBrightnessCapture(e,t,n,i)},o=this.docAnalyzer;if(!o)return a();t.textContent=`Starting camera…`;let s=!1,c=!1;this.cleanups.push(()=>{s=!0}),this.onCameraLive(e,()=>{!s&&!c&&(t.textContent=`Getting ready…`)}),o.ready().then(r=>{if(c=!0,s)return;if(!r){a();return}let l=0,u=null,d=null,f=(e,t)=>e==null?t:e*.6+t*.4,p=setInterval(()=>{let r=o.analyze(e);if(!r)return;u=f(u,r.fill),d=f(d,r.edgeStrength);let{ready:a,hint:s}=W({...r,fill:u,edgeStrength:d},this.docTuning);t.textContent=s,n.setFrame(r.present?r.rect:null),n.setQuality(a?`good`:r.present?`wait`:`bad`),l=a?l+1:Math.max(0,l-1),l>=this.docTuning.hold&&(clearInterval(p),n.setQuality(`good`),i())},250);this.timers.push(p)})}runDocumentBrightnessCapture(e,t,n,r){let i=0,a=setInterval(()=>{let o=this.camera.sampleQuality(e);o&&(o.tooDark?(t.textContent=`Too dark — find better lighting`,i=0,n.setQuality(`bad`)):o.glare?(t.textContent=`Reduce glare on the document`,i=0,n.setQuality(`bad`)):(t.textContent=`Looks good — hold steady`,i+=1,n.setQuality(`good`)),i>=5&&(clearInterval(a),r()))},300);this.timers.push(a)}runSelfieAutoCapture(e,t,n,r){let i=this.analyzer,a=()=>this.footer.appendChild(this.button(`Capture`,n));if(!i){t.textContent=`Center your face, then capture`,a();return}t.textContent=`Starting camera…`;let o=!1,s=!1;this.cleanups.push(()=>{o=!0}),this.onCameraLive(e,()=>{!o&&!s&&(t.textContent=`Getting ready…`)}),i.ready().then(c=>{if(s=!0,o)return;if(!c){t.textContent=`Center your face, then capture`,a();return}let l=0,u=setInterval(()=>{let a=i.analyze(e);if(!a||!a.present){t.textContent=`Position your face in the circle`,l=0,r.setState(`wait`),r.setProgress(0);return}B(a,this.tuning)?(t.textContent=`Hold still…`,l+=1,r.setState(`good`),r.setProgress(l/4)):(t.textContent=a.scale<=this.tuning.selfieMinScale?`Move a little closer`:`Center your face`,l=0,r.setState(`wait`),r.setProgress(0)),l>=4&&(clearInterval(u),r.setState(`done`),r.setProgress(1),n())},180);this.timers.push(u)})}renderActiveLiveness(e,t,n){this.body.appendChild(this.el(`h2`,{class:`arkyc-h`,text:`Liveness check`}));let r=this.el(`p`,{class:`arkyc-p`,text:`Follow the on-screen prompts. Keep your face centred in the circle.`});if(this.body.appendChild(r),!this.camera.supported||!this.camera.canRecord){if(n){if(this.body.appendChild(this.el(`div`,{class:`arkyc-badge err`,html:`!`})),r.textContent=`This check needs camera access on a supported device. Please retry on a device with a working camera.`,t){let t=this.button(`Skip (demo)`,()=>this.handlers.onActiveLiveness(null,e));t.classList.add(`arkyc-btn-ghost`),this.footer.appendChild(t)}return}let i=this.button(`I performed the steps`,()=>this.handlers.onActiveLiveness(null,e));if(this.footer.appendChild(i),t){let t=this.button(`Skip (demo)`,()=>this.handlers.onActiveLiveness(null,e));t.classList.add(`arkyc-btn-ghost`),this.footer.appendChild(t)}return}let i=this.el(`video`,{class:`arkyc-preview selfie`}),a=this.buildFaceStage(i),o=this.buildDots(e.length);e.length>1&&this.body.appendChild(o.el),this.body.appendChild(a.stage);let s=null,c=0,l=[],u=z(e[0]??`blink`,this.tuning),d=(t=!1)=>{let n=e[c];if(!n){r.textContent=`Hold still…`;return}r.textContent=t?`✓ ${q[n]}`:`Step ${c+1} of ${e.length}: ${q[n]}`},f=()=>{a.setCue(e[c]??null),a.setState(`wait`),a.setProgress(0),o.setActive(c)},p=()=>{h.setAttribute(`disabled`,`true`),this.camera.grabFrame(i).then(e=>Promise.resolve(s?.stop()??Promise.resolve(null)).then(t=>this.handlers.onActiveLiveness(t,l,e)))},m=()=>{if(c>=e.length)return;let t=e[c];if(t&&l.push(t),o.markDone(c),c+=1,c>=e.length){p();return}u=z(e[c],this.tuning),d(),f(),c===e.length-1&&(h.textContent=`Finish`)},h=this.button(`Next`,()=>m());e.length<=1&&(h.textContent=`Finish`);let g=!1,_=()=>{g||(g=!0,this.footer.appendChild(h))};if(this.camera.start(i,`user`).then(t=>{s=this.camera.recordStart(t),d(),f();let n=this.analyzer;if(!n){_();return}let r=!1;this.cleanups.push(()=>{r=!0}),n.ready().then(t=>{if(r)return;if(!t){_();return}let o=!1,s=setInterval(()=>{if(c>=e.length){clearInterval(s);return}if(o)return;let t=n.analyze(i);if(!t)return;let r=u.feed(t);if(a.setProgress(u.progress),r){a.setState(`done`),d(!0),o=!0;let e=setTimeout(()=>{o=!1,m()},650);this.cleanups.push(()=>clearTimeout(e))}else a.setState(u.progress>0?`good`:`wait`)},160);this.timers.push(s)})}).catch(()=>{if(a.stage.classList.add(`arkyc-hidden`),n){r.textContent=`Camera access is required to continue. Please allow access and try again.`;return}this.handlers.onActiveLiveness(null,e)}),t){let t=this.button(`Skip (demo)`,()=>this.handlers.onActiveLiveness(null,e));t.classList.add(`arkyc-btn-ghost`),this.footer.appendChild(t)}}buildFaceStage(e){let t=this.el(`div`,{class:`arkyc-stage`});t.setAttribute(`data-state`,`wait`),t.appendChild(e);let n=this.el(`div`,{class:`arkyc-ring`,html:`<svg viewBox="0 0 100 100"><circle class="arkyc-ring-track" cx="50" cy="50" r="46"/><circle class="arkyc-ring-arc" cx="50" cy="50" r="46"/></svg>`});t.appendChild(n);let r=this.el(`div`,{class:`arkyc-cue`});t.appendChild(r),t.appendChild(this.el(`div`,{class:`arkyc-check`,html:se}));let i=n.querySelector(`.arkyc-ring-arc`),a=2*Math.PI*46;return i&&(i.style.strokeDasharray=String(a),i.style.strokeDashoffset=String(a)),{stage:t,setProgress:e=>{i&&(i.style.strokeDashoffset=String(a*(1-Math.max(0,Math.min(1,e)))))},setState:e=>t.setAttribute(`data-state`,e),setCue:e=>{r.className=`arkyc-cue`+(e?` show arkyc-cue-${e}`:``),r.innerHTML=e?oe[e]:``}}}buildDots(e){let t=this.el(`div`,{class:`arkyc-dots`}),n=[];for(let r=0;r<e;r+=1){let e=this.el(`div`,{class:`arkyc-dot`});n.push(e),t.appendChild(e)}return{el:t,setActive:e=>n.forEach((t,n)=>t.classList.toggle(`active`,n===e&&!t.classList.contains(`done`))),markDone:e=>{let t=n[e];t&&(t.classList.remove(`active`),t.classList.add(`done`))}}}buildDocStage(e){let t=this.el(`div`,{class:`arkyc-doc`});t.setAttribute(`data-q`,`wait`),t.appendChild(e);let n=this.el(`div`,{class:`arkyc-doc-frame`});for(let e of[`tl`,`tr`,`bl`,`br`])n.appendChild(this.el(`span`,{class:`arkyc-corner ${e}`}));return n.appendChild(this.el(`div`,{class:`arkyc-scan`})),t.appendChild(n),{stage:t,setQuality:e=>t.setAttribute(`data-q`,e),setFrame:e=>t.setAttribute(`data-detected`,e?`true`:`false`)}}renderProcessing(e){this.body.appendChild(this.el(`div`,{class:`arkyc-spinner`})),this.body.appendChild(this.el(`p`,{class:`arkyc-p`,text:e}))}renderResult(e,t,n={}){if(t)this.body.appendChild(this.el(`div`,{class:`arkyc-badge err`,html:`!`})),this.body.appendChild(this.el(`h2`,{class:`arkyc-h`,text:`Something went wrong`})),this.body.appendChild(this.el(`p`,{class:`arkyc-p`,text:t}));else if(n.terminal){let e=ae[n.status??`expired`]??J;this.body.appendChild(this.el(`div`,{class:`arkyc-badge ${e.cls}`,text:e.icon})),this.body.appendChild(this.el(`h2`,{class:`arkyc-h`,text:e.title})),this.body.appendChild(this.el(`p`,{class:`arkyc-p`,text:e.copy})),this.footer.appendChild(this.button(`Close`,()=>this.handlers.onClose()));return}else{let t={approved:{cls:`ok`,icon:`✓`,title:`Verified`,copy:`Your identity has been verified.`},requires_review:{cls:`warn`,icon:`⏳`,title:`Under review`,copy:`Your verification is being reviewed. We will be in touch shortly.`},rejected:{cls:`err`,icon:`✕`,title:`Not verified`,copy:`We could not verify your identity. Please try again.`}},n=t[e??`requires_review`]??t.requires_review;this.body.appendChild(this.el(`div`,{class:`arkyc-badge ${n.cls}`,text:n.icon})),this.body.appendChild(this.el(`h2`,{class:`arkyc-h`,text:n.title})),this.body.appendChild(this.el(`p`,{class:`arkyc-p`,text:n.copy}))}this.footer.appendChild(this.button(`Done`,()=>this.handlers.onAcknowledge()))}button(e,t,n){let r=n?`arkyc-btn ${n}`:`arkyc-btn`,i=this.el(`button`,{class:r,text:e}),a=!1;return i.addEventListener(`click`,()=>{a||(a=!0,i.setAttribute(`disabled`,`true`),i.classList.add(`arkyc-busy`),t())}),i}clear(e){for(;e.firstChild;)e.removeChild(e.firstChild)}el(e,t={}){let n=this.doc.createElement(e);for(let[e,r]of Object.entries(t))r!=null&&(e===`class`?n.className=r:e===`text`?n.textContent=r:e===`html`?n.innerHTML=r:e===`value`||e===`src`||e===`type`||e===`accept`||e===`placeholder`?n[e]=r:n.setAttribute(e,r));return n}};function ue(e){let t=e.userAgent||``;if(!t)return!1;let n=/Android|iPhone|iPad|iPod|Opera Mini|IEMobile|Mobile|BlackBerry|Windows Phone/i.test(t),r=e.platform===`MacIntel`&&(e.maxTouchPoints??0)>1;return!n&&!r}var de=l(s(((e,t)=>{var n=function(){var e=function(e,t){var r=e,a=n[t],p=null,m=0,h=null,g=[],v={},y=function(e,t){m=r*4+17,p=function(e){for(var t=Array(e),n=0;n<e;n+=1){t[n]=Array(e);for(var r=0;r<e;r+=1)t[n][r]=null}return t}(m),b(0,0),b(m-7,0),b(0,m-7),C(),S(),T(e,t),r>=7&&w(e),h??(h=O(r,a,g)),E(h,t)},b=function(e,t){for(var n=-1;n<=7;n+=1)if(!(e+n<=-1||m<=e+n))for(var r=-1;r<=7;r+=1)t+r<=-1||m<=t+r||(0<=n&&n<=6&&(r==0||r==6)||0<=r&&r<=6&&(n==0||n==6)||2<=n&&n<=4&&2<=r&&r<=4?p[e+n][t+r]=!0:p[e+n][t+r]=!1)},x=function(){for(var e=0,t=0,n=0;n<8;n+=1){y(!0,n);var r=i.getLostPoint(v);(n==0||e>r)&&(e=r,t=n)}return t},S=function(){for(var e=8;e<m-8;e+=1)p[e][6]??(p[e][6]=e%2==0);for(var t=8;t<m-8;t+=1)p[6][t]??(p[6][t]=t%2==0)},C=function(){for(var e=i.getPatternPosition(r),t=0;t<e.length;t+=1)for(var n=0;n<e.length;n+=1){var a=e[t],o=e[n];if(p[a][o]==null)for(var s=-2;s<=2;s+=1)for(var c=-2;c<=2;c+=1)s==-2||s==2||c==-2||c==2||s==0&&c==0?p[a+s][o+c]=!0:p[a+s][o+c]=!1}},w=function(e){for(var t=i.getBCHTypeNumber(r),n=0;n<18;n+=1){var a=!e&&(t>>n&1)==1;p[Math.floor(n/3)][n%3+m-8-3]=a}for(var n=0;n<18;n+=1){var a=!e&&(t>>n&1)==1;p[n%3+m-8-3][Math.floor(n/3)]=a}},T=function(e,t){for(var n=a<<3|t,r=i.getBCHTypeInfo(n),o=0;o<15;o+=1){var s=!e&&(r>>o&1)==1;o<6?p[o][8]=s:o<8?p[o+1][8]=s:p[m-15+o][8]=s}for(var o=0;o<15;o+=1){var s=!e&&(r>>o&1)==1;o<8?p[8][m-o-1]=s:o<9?p[8][15-o-1+1]=s:p[8][15-o-1]=s}p[m-8][8]=!e},E=function(e,t){for(var n=-1,r=m-1,a=7,o=0,s=i.getMaskFunction(t),c=m-1;c>0;c-=2)for(c==6&&--c;;){for(var l=0;l<2;l+=1)if(p[r][c-l]==null){var u=!1;o<e.length&&(u=(e[o]>>>a&1)==1),s(r,c-l)&&(u=!u),p[r][c-l]=u,--a,a==-1&&(o+=1,a=7)}if(r+=n,r<0||m<=r){r-=n,n=-n;break}}},D=function(e,t){for(var n=0,r=0,a=0,s=Array(t.length),c=Array(t.length),l=0;l<t.length;l+=1){var u=t[l].dataCount,d=t[l].totalCount-u;r=Math.max(r,u),a=Math.max(a,d),s[l]=Array(u);for(var f=0;f<s[l].length;f+=1)s[l][f]=255&e.getBuffer()[f+n];n+=u;var p=i.getErrorCorrectPolynomial(d),m=o(s[l],p.getLength()-1).mod(p);c[l]=Array(p.getLength()-1);for(var f=0;f<c[l].length;f+=1){var h=f+m.getLength()-c[l].length;c[l][f]=h>=0?m.getAt(h):0}}for(var g=0,f=0;f<t.length;f+=1)g+=t[f].totalCount;for(var _=Array(g),v=0,f=0;f<r;f+=1)for(var l=0;l<t.length;l+=1)f<s[l].length&&(_[v]=s[l][f],v+=1);for(var f=0;f<a;f+=1)for(var l=0;l<t.length;l+=1)f<c[l].length&&(_[v]=c[l][f],v+=1);return _},O=function(e,t,n){for(var r=s.getRSBlocks(e,t),a=c(),o=0;o<n.length;o+=1){var l=n[o];a.put(l.getMode(),4),a.put(l.getLength(),i.getLengthInBits(l.getMode(),e)),l.write(a)}for(var u=0,o=0;o<r.length;o+=1)u+=r[o].dataCount;if(a.getLengthInBits()>u*8)throw`code length overflow. (`+a.getLengthInBits()+`>`+u*8+`)`;for(a.getLengthInBits()+4<=u*8&&a.put(0,4);a.getLengthInBits()%8!=0;)a.putBit(!1);for(;!(a.getLengthInBits()>=u*8||(a.put(236,8),a.getLengthInBits()>=u*8));)a.put(17,8);return D(a,r)};v.addData=function(e,t){t=t||`Byte`;var n=null;switch(t){case`Numeric`:n=l(e);break;case`Alphanumeric`:n=u(e);break;case`Byte`:n=d(e);break;case`Kanji`:n=f(e);break;default:throw`mode:`+t}g.push(n),h=null},v.isDark=function(e,t){if(e<0||m<=e||t<0||m<=t)throw e+`,`+t;return p[e][t]},v.getModuleCount=function(){return m},v.make=function(){if(r<1){for(var e=1;e<40;e++){for(var t=s.getRSBlocks(e,a),n=c(),o=0;o<g.length;o++){var l=g[o];n.put(l.getMode(),4),n.put(l.getLength(),i.getLengthInBits(l.getMode(),e)),l.write(n)}for(var u=0,o=0;o<t.length;o++)u+=t[o].dataCount;if(n.getLengthInBits()<=u*8)break}r=e}y(!1,x())},v.createTableTag=function(e,t){e=e||2,t=t===void 0?e*4:t;var n=``;n+=`<table style="`,n+=` border-width: 0px; border-style: none;`,n+=` border-collapse: collapse;`,n+=` padding: 0px; margin: `+t+`px;`,n+=`">`,n+=`<tbody>`;for(var r=0;r<v.getModuleCount();r+=1){n+=`<tr>`;for(var i=0;i<v.getModuleCount();i+=1)n+=`<td style="`,n+=` border-width: 0px; border-style: none;`,n+=` border-collapse: collapse;`,n+=` padding: 0px; margin: 0px;`,n+=` width: `+e+`px;`,n+=` height: `+e+`px;`,n+=` background-color: `,n+=v.isDark(r,i)?`#000000`:`#ffffff`,n+=`;`,n+=`"/>`;n+=`</tr>`}return n+=`</tbody>`,n+=`</table>`,n},v.createSvgTag=function(e,t,n,r){var i={};typeof arguments[0]==`object`&&(i=arguments[0],e=i.cellSize,t=i.margin,n=i.alt,r=i.title),e=e||2,t=t===void 0?e*4:t,n=typeof n==`string`?{text:n}:n||{},n.text=n.text||null,n.id=n.text?n.id||`qrcode-description`:null,r=typeof r==`string`?{text:r}:r||{},r.text=r.text||null,r.id=r.text?r.id||`qrcode-title`:null;var a=v.getModuleCount()*e+t*2,o,s,c,l,u=``,d=`l`+e+`,0 0,`+e+` -`+e+`,0 0,-`+e+`z `;for(u+=`<svg version="1.1" xmlns="http://www.w3.org/2000/svg"`,u+=i.scalable?``:` width="`+a+`px" height="`+a+`px"`,u+=` viewBox="0 0 `+a+` `+a+`" `,u+=` preserveAspectRatio="xMinYMin meet"`,u+=r.text||n.text?` role="img" aria-labelledby="`+k([r.id,n.id].join(` `).trim())+`"`:``,u+=`>`,u+=r.text?`<title id="`+k(r.id)+`">`+k(r.text)+`</title>`:``,u+=n.text?`<description id="`+k(n.id)+`">`+k(n.text)+`</description>`:``,u+=`<rect width="100%" height="100%" fill="white" cx="0" cy="0"/>`,u+=`<path d="`,c=0;c<v.getModuleCount();c+=1)for(l=c*e+t,o=0;o<v.getModuleCount();o+=1)v.isDark(c,o)&&(s=o*e+t,u+=`M`+s+`,`+l+d);return u+=`" stroke="transparent" fill="black"/>`,u+=`</svg>`,u},v.createDataURL=function(e,t){e=e||2,t=t===void 0?e*4:t;var n=v.getModuleCount()*e+t*2,r=t,i=n-t;return _(n,n,function(t,n){if(r<=t&&t<i&&r<=n&&n<i){var a=Math.floor((t-r)/e),o=Math.floor((n-r)/e);return+!v.isDark(o,a)}else return 1})},v.createImgTag=function(e,t,n){e=e||2,t=t===void 0?e*4:t;var r=v.getModuleCount()*e+t*2,i=``;return i+=`<img`,i+=` src="`,i+=v.createDataURL(e,t),i+=`"`,i+=` width="`,i+=r,i+=`"`,i+=` height="`,i+=r,i+=`"`,n&&(i+=` alt="`,i+=k(n),i+=`"`),i+=`/>`,i};var k=function(e){for(var t=``,n=0;n<e.length;n+=1){var r=e.charAt(n);switch(r){case`<`:t+=`<`;break;case`>`:t+=`>`;break;case`&`:t+=`&`;break;case`"`:t+=`"`;break;default:t+=r;break}}return t},A=function(e){var t=1;e=e===void 0?t*2:e;var n=v.getModuleCount()*t+e*2,r=e,i=n-e,a,o,s,c,l,u={"██":`█`,"█ ":`▀`," █":`▄`," ":` `},d={"██":`▀`,"█ ":`▀`," █":` `," ":` `},f=``;for(a=0;a<n;a+=2){for(s=Math.floor((a-r)/t),c=Math.floor((a+1-r)/t),o=0;o<n;o+=1)l=`█`,r<=o&&o<i&&r<=a&&a<i&&v.isDark(s,Math.floor((o-r)/t))&&(l=` `),r<=o&&o<i&&r<=a+1&&a+1<i&&v.isDark(c,Math.floor((o-r)/t))?l+=` `:l+=`█`,f+=e<1&&a+1>=i?d[l]:u[l];f+=`
|
|
720
|
+
`;let S={background:`#ffffff`,foreground:`#0f172a`,muted:`#64748b`,border:`#e2e8f0`},C={background:`#0f172a`,foreground:`#f8fafc`,muted:`#94a3b8`,border:`#1e293b`};var w=class{constructor(e){p(this,`primaryColor`,void 0),p(this,`borderRadius`,void 0),p(this,`mode`,void 0),p(this,`logoUrl`,void 0),p(this,`name`,void 0),p(this,`showBranding`,void 0),p(this,`background`,void 0),p(this,`foreground`,void 0),p(this,`muted`,void 0),p(this,`border`,void 0),this.mode=e?.theme===`dark`?`dark`:`light`;let t=this.mode===`dark`?C:S;this.primaryColor=e?.primary_color??`#b8860b`,this.borderRadius=e?.border_radius??12,this.logoUrl=e?.logo_url??null,this.name=e?.name??null,this.showBranding=e?.show_branding!==!1,this.background=t.background,this.foreground=t.foreground,this.muted=t.muted,this.border=t.border}variables(){return[`--arkyc-primary:${this.primaryColor}`,`--arkyc-radius:${this.borderRadius}px`,`--arkyc-bg:${this.background}`,`--arkyc-fg:${this.foreground}`,`--arkyc-muted:${this.muted}`,`--arkyc-border:${this.border}`].join(`;`)}stylesheet(){return x.replace(`/* {variables} */`,`${this.variables()};`).trim()}},T=class{constructor(e=globalThis.document,t=globalThis.navigator){this.doc=e,this.nav=t,p(this,`stream`,null)}get supported(){return!!this.nav?.mediaDevices?.getUserMedia}async start(e,t){let n=await this.nav.mediaDevices.getUserMedia({video:{facingMode:t},audio:!1});return this.stream=n,e.srcObject=n,e.setAttribute(`playsinline`,`true`),e.muted=!0,await e.play().catch(()=>void 0),n}stop(){this.stream?.getTracks().forEach(e=>e.stop()),this.stream=null}get canRecord(){return globalThis.MediaRecorder!==void 0}recordStart(e){let t=[],n=new MediaRecorder(e,{mimeType:`video/webm`});return n.ondataavailable=e=>{e.data&&e.data.size>0&&t.push(e.data)},n.start(),{stop:()=>new Promise(e=>{n.onstop=()=>e(new Blob(t,{type:`video/webm`})),n.stop()})}}sampleQuality(e){let t=this.doc.createElement(`canvas`);t.width=32,t.height=32;let n=t.getContext(`2d`);if(!n||!e.videoWidth)return null;n.drawImage(e,0,0,t.width,t.height);let{data:r}=n.getImageData(0,0,t.width,t.height),i=0,a=0,o=r.length/4;for(let e=0;e<r.length;e+=4){let t=(.299*r[e]+.587*r[e+1]+.114*r[e+2])/255;i+=t,t>.92&&(a+=1)}let s=i/o;return{brightness:s,tooDark:s<.25,glare:a/o>.15}}grabFrame(e,t=.92){let n=this.doc.createElement(`canvas`);n.width=e.videoWidth||1280,n.height=e.videoHeight||720;let r=n.getContext(`2d`);return r?(r.drawImage(e,0,0,n.width,n.height),new Promise((e,r)=>{n.toBlob(t=>t?e(t):r(Error(`Failed to capture frame.`)),`image/jpeg`,t)})):Promise.reject(Error(`Canvas 2D context unavailable.`))}static fileFromInput(e){return e.files?.[0]??null}};let E={sessionTransition:`session.transition`,reviewAction:`review.action`},D=[`document`,`liveness`,`face_match`],O={methods:[`geocode_lookup`],on_fail:`review`};function k(e,t){return e?e.steps.some(e=>e.key===t&&e.enabled):D.includes(t)}function A(e){if(!e)return null;let t=e.steps.find(e=>e.key===`address`&&e.enabled);return t?{...O,...t.config??{}}:null}function ee(e){return e?k(e,`document`)&&!e.options.skip_ocr:!0}function j(e){return e?e.steps.filter(e=>e.enabled).map(e=>e.key):[...D]}let te={document:[`document_selection`,`front_capture`,`back_capture`,`ocr_processing`],address:[`address_entry`,`address_processing`],liveness:[`active_liveness`,`selfie_capture`,`passive_liveness`],face_match:[`face_match`]};var M=class e{static documentHasBack(e){return e!=null&&e!==`passport`}static stepOrder(e={}){return[`welcome`,...j(e.workflow).flatMap(e=>te[e]),`processing`,`result`]}static isStepEnabled(t,n={}){return t===`back_capture`?e.documentHasBack(n.documentType):t===`ocr_processing`?ee(n.workflow):t===`active_liveness`?n.livenessMode===`active`:t===`selfie_capture`||t===`passive_liveness`?n.livenessMode!==`active`:!0}static nextStep(t,n={}){let r=e.stepOrder(n),i=r.indexOf(t);if(i<0)return t;for(let t=i+1;t<r.length;t+=1){let i=r[t];if(e.isStepEnabled(i,n))return i}return t}static isTerminal(t){return e.TERMINAL_STATUSES.includes(t)}static statusToDecision(e){switch(e){case`approved`:return`approved`;case`rejected`:return`rejected`;case`requires_review`:return`requires_review`;default:return null}}};p(M,`STEP_ORDER`,[`welcome`,`document_selection`,`front_capture`,`back_capture`,`ocr_processing`,`active_liveness`,`selfie_capture`,`passive_liveness`,`face_match`,`processing`,`result`]),p(M,`TERMINAL_STATUSES`,[`approved`,`rejected`,`requires_review`,`expired`,`cancelled`]);let N=`0.10.20`,P=e=>`https://cdn.jsdelivr.net/npm/`+e;function F(e,t){return e?.find(e=>e.categoryName===t)?.score??0}function ne(){let e=globalThis.performance;return e?.now?e.now():0}var re=class{constructor(){p(this,`landmarker`,null),p(this,`state`,`idle`),p(this,`loading`,null)}async ready(){return this.state===`ready`?!0:this.state===`failed`?!1:(this.loading||(this.loading=this.load()),this.loading)}async load(){this.state=`loading`;try{if(typeof document>`u`)throw Error(`no document`);if(!document.createElement(`canvas`).getContext(`webgl2`))throw Error(`no webgl2`);let e=await import(P(`@mediapipe/tasks-vision@${N}/vision_bundle.mjs`)),t=await e.FilesetResolver.forVisionTasks(P(`@mediapipe/tasks-vision@${N}/wasm`));return this.landmarker=await e.FaceLandmarker.createFromOptions(t,{baseOptions:{modelAssetPath:`https://storage.googleapis.com/mediapipe-models/face_landmarker/face_landmarker/float16/1/face_landmarker.task`,delegate:`GPU`},outputFaceBlendshapes:!0,runningMode:`VIDEO`,numFaces:1}),this.state=`ready`,!0}catch{return this.state=`failed`,!1}}analyze(e){if(this.state!==`ready`||!this.landmarker||!e.videoWidth)return null;let t;try{t=this.landmarker.detectForVideo(e,ne())}catch{return null}let n=t.faceLandmarks?.[0];if(!n||n.length===0)return{present:!1,centerX:.5,centerY:.5,scale:0,turn:0,pitch:0,blink:0,smile:0};let r=1,i=0,a=1,o=0;for(let e of n)e.x<r&&(r=e.x),e.x>i&&(i=e.x),e.y<a&&(a=e.y),e.y>o&&(o=e.y);let s=Math.max(.001,o-a),c=n[1],l=n[33],u=n[263],d=n[234],f=n[454],p=n[152],m=c.x-d.x,h=f.x-c.x,g=(h-m)/Math.max(.001,m+h),_=(l.y+u.y)/2,v=(c.y-_)/Math.max(.001,p.y-_),y=t.faceBlendshapes?.[0]?.categories,b=Math.max(F(y,`eyeBlinkLeft`),F(y,`eyeBlinkRight`)),x=(F(y,`mouthSmileLeft`)+F(y,`mouthSmileRight`))/2;return{present:!0,centerX:(r+i)/2,centerY:(a+o)/2,scale:s,turn:g,pitch:v,blink:b,smile:x}}close(){try{this.landmarker?.close()}catch{}this.landmarker=null,this.state=`failed`}};function I(){return new re}let L={turn:.18,smile:.5,blinkClosed:.55,blinkOpen:.25,hold:3,nodDown:.06,nodReturn:.02,closerFactor:1.22,selfieCenterTol:.2,selfieCenterYTol:.25,selfieMinScale:.28,selfieMaxScale:.85};function R(e,t=L){let n=e=>{let n=0;return{feed(r){return n=r.present&&e(r)?n+1:0,n>=t.hold},get progress(){return Math.min(1,n/Math.max(1,t.hold))}}},r=(e,t,n)=>{let r=null,i=!1,a=!1;return{feed(o){if(!o.present)return!1;let s=e(o);if(r===null)return r=s,!1;if(t(s,r))i=!0;else if(i&&n(s,r))return a=!0,!0;return!1},get progress(){return a?1:i?.6:0}}};switch(e){case`blink`:{let e=!1,n=!1;return{feed(r){if(!r.present)return!1;if(r.blink>t.blinkClosed)e=!0;else if(e&&r.blink<t.blinkOpen)return n=!0,!0;return!1},get progress(){return n?1:e?.6:0}}}case`smile`:return n(e=>e.smile>t.smile);case`turn_left`:return n(e=>e.turn<-t.turn);case`turn_right`:return n(e=>e.turn>t.turn);case`nod`:return r(e=>e.pitch,(e,n)=>e>n+t.nodDown,(e,n)=>e<n+t.nodReturn);case`move_closer`:{let e=null,n=0;return{feed(r){return r.present?e===null?(e=r.scale,!1):(n=r.scale>e*t.closerFactor?n+1:0,n>=t.hold):!1},get progress(){return Math.min(1,n/Math.max(1,t.hold))}}}}}function z(e,t=L){return e.present&&Math.abs(e.centerX-.5)<t.selfieCenterTol&&Math.abs(e.centerY-.5)<t.selfieCenterYTol&&e.scale>t.selfieMinScale&&e.scale<t.selfieMaxScale}let B={sampleWidth:320,minFill:.18,maxFill:.97,centerTol:.22,minEdgeStrength:.1,minSharpness:8,borderMargin:.012,minBrightness:.18,hold:5};function ie(e){return[e.y,1-(e.x+e.w),1-(e.y+e.h),e.x]}function V(e,t,n){let r=t,i=-1;for(let a=t;a<n;a+=1){let t=e[a];t>i&&(i=t,r=a)}return{i:r,v:i}}function H(e,t,n){let r={present:!1,rect:{x:0,y:0,w:0,h:0},fill:0,centerX:.5,centerY:.5,edgeStrength:0,sharpness:0,brightness:0};if(t<8||n<8||e.length<t*n)return r;let i=new Float64Array(n),a=new Float64Array(t),o=0,s=0,c=0,l=0;for(let r=0;r<t*n;r+=1)l+=e[r];let u=l/(t*n*255);for(let r=1;r<n-1;r+=1)for(let n=1;n<t-1;n+=1){let l=r*t+n,u=e[l-t-1],d=e[l-t],f=e[l-t+1],p=e[l-1],m=e[l],h=e[l+1],g=e[l+t-1],_=e[l+t],v=e[l+t+1],y=f+2*h+v-(u+2*p+g),b=g+2*_+v-(u+2*d+f);i[r]+=Math.abs(b),a[n]+=Math.abs(y);let x=4*m-p-h-d-_;o+=x,s+=x*x,c+=1}let d=c?s/c-(o/c)**2:0,f=Math.max(1,Math.floor(n*.05)),p=Math.max(1,Math.floor(t*.05)),m=Math.floor(n/2),h=Math.floor(t/2),g=V(i,f,m),_=V(i,m,n-f),v=V(a,p,h),y=V(a,h,t-p),b=v.i/t,x=y.i/t,S=g.i/n,C=_.i/n,w={x:b,y:S,w:Math.max(0,x-b),h:Math.max(0,C-S)},T=Math.max(1,w.w*t),E=Math.max(1,w.h*n),D=Math.min(g.v/(T*1020),_.v/(T*1020),v.v/(E*1020),y.v/(E*1020));return{present:w.w>.12&&w.h>.12&&D>.04,rect:w,fill:w.w*w.h,centerX:(b+x)/2,centerY:(S+C)/2,edgeStrength:D,sharpness:d,brightness:u}}function U(e,t=B){return e.brightness<t.minBrightness?{ready:!1,hint:`Too dark — find better lighting`}:!e.present||e.edgeStrength<t.minEdgeStrength?{ready:!1,hint:`Fit your document inside the frame`}:e.fill>t.maxFill||Math.min(...ie(e.rect))<t.borderMargin?{ready:!1,hint:`Move back a little — fit the whole document`}:e.fill<t.minFill?{ready:!1,hint:`Move closer`}:Math.abs(e.centerX-.5)>t.centerTol||Math.abs(e.centerY-.5)>t.centerTol?{ready:!1,hint:`Center the document`}:e.sharpness<t.minSharpness?{ready:!1,hint:`Hold steady to focus`}:{ready:!0,hint:`Looks good — hold steady`}}function ae(e,t=B){return U(e,t).ready}var oe=class{constructor(e){this.tuning=e,p(this,`canvas`,null),p(this,`ctx`,null)}ready(){try{if(typeof document>`u`)return Promise.resolve(!1);let e=document.createElement(`canvas`),t=e.getContext(`2d`,{willReadFrequently:!0});return t?(this.canvas=e,this.ctx=t,Promise.resolve(!0)):Promise.resolve(!1)}catch{return Promise.resolve(!1)}}analyze(e){if(!this.ctx||!this.canvas||!e.videoWidth)return null;let t=this.tuning.sampleWidth,n=Math.max(1,Math.round(t*e.videoHeight/e.videoWidth));this.canvas.width=t,this.canvas.height=n;let r;try{this.ctx.drawImage(e,0,0,t,n),r=this.ctx.getImageData(0,0,t,n).data}catch{return null}let i=new Float32Array(t*n);for(let e=0,t=0;e<i.length;e+=1,t+=4)i[e]=.299*r[t]+.587*r[t+1]+.114*r[t+2];return H(i,t,n)}close(){this.canvas=null,this.ctx=null}};function W(e=B){return new oe(e)}let G=[{name:`United States`,iso2:`US`,flag:`🇺🇸`},{name:`Canada`,iso2:`CA`,flag:`🇨🇦`},{name:`Brazil`,iso2:`BR`,flag:`🇧🇷`},{name:`United Kingdom`,iso2:`GB`,flag:`🇬🇧`},{name:`Germany`,iso2:`DE`,flag:`🇩🇪`},{name:`France`,iso2:`FR`,flag:`🇫🇷`},{name:`China`,iso2:`CN`,flag:`🇨🇳`},{name:`Japan`,iso2:`JP`,flag:`🇯🇵`},{name:`India`,iso2:`IN`,flag:`🇮🇳`},{name:`Australia`,iso2:`AU`,flag:`🇦🇺`},{name:`South Africa`,iso2:`ZA`,flag:`🇿🇦`},{name:`Russia`,iso2:`RU`,flag:`🇷🇺`},{name:`Saudi Arabia`,iso2:`SA`,flag:`🇸🇦`},{name:`Afghanistan`,iso2:`AF`,flag:`🇦🇫`},{name:`Albania`,iso2:`AL`,flag:`🇦🇱`},{name:`Algeria`,iso2:`DZ`,flag:`🇩🇿`},{name:`Andorra`,iso2:`AD`,flag:`🇦🇩`},{name:`Angola`,iso2:`AO`,flag:`🇦🇴`},{name:`Antigua and Barbuda`,iso2:`AG`,flag:`🇦🇬`},{name:`Argentina`,iso2:`AR`,flag:`🇦🇷`},{name:`Armenia`,iso2:`AM`,flag:`🇦🇲`},{name:`Austria`,iso2:`AT`,flag:`🇦🇹`},{name:`Azerbaijan`,iso2:`AZ`,flag:`🇦🇿`},{name:`Bahamas`,iso2:`BS`,flag:`🇧🇸`},{name:`Bahrain`,iso2:`BH`,flag:`🇧🇭`},{name:`Bangladesh`,iso2:`BD`,flag:`🇧🇩`},{name:`Barbados`,iso2:`BB`,flag:`🇧🇧`},{name:`Belarus`,iso2:`BY`,flag:`🇧🇾`},{name:`Belgium`,iso2:`BE`,flag:`🇧🇪`},{name:`Belize`,iso2:`BZ`,flag:`🇧🇿`},{name:`Benin`,iso2:`BJ`,flag:`🇧🇯`},{name:`Bhutan`,iso2:`BT`,flag:`🇧🇹`},{name:`Bolivia`,iso2:`BO`,flag:`🇧🇴`},{name:`Bosnia and Herzegovina`,iso2:`BA`,flag:`🇧🇦`},{name:`Botswana`,iso2:`BW`,flag:`🇧🇼`},{name:`Brunei`,iso2:`BN`,flag:`🇧🇳`},{name:`Bulgaria`,iso2:`BG`,flag:`🇧🇬`},{name:`Burkina Faso`,iso2:`BF`,flag:`🇧🇫`},{name:`Burundi`,iso2:`BI`,flag:`🇧🇮`},{name:`Cabo Verde`,iso2:`CV`,flag:`🇨🇻`},{name:`Cambodia`,iso2:`KH`,flag:`🇰🇭`},{name:`Cameroon`,iso2:`CM`,flag:`🇨🇲`},{name:`Central African Republic`,iso2:`CF`,flag:`🇨🇫`},{name:`Chad`,iso2:`TD`,flag:`🇹🇩`},{name:`Chile`,iso2:`CL`,flag:`🇨🇱`},{name:`Colombia`,iso2:`CO`,flag:`🇨🇴`},{name:`Comoros`,iso2:`KM`,flag:`🇰🇲`},{name:`Congo (Congo-Brazzaville)`,iso2:`CG`,flag:`🇨🇬`},{name:`Congo (Congo-Kinshasa)`,iso2:`CD`,flag:`🇨🇩`},{name:`Costa Rica`,iso2:`CR`,flag:`🇨🇷`},{name:`Croatia`,iso2:`HR`,flag:`🇭🇷`},{name:`Cuba`,iso2:`CU`,flag:`🇨🇺`},{name:`Cyprus`,iso2:`CY`,flag:`🇨🇾`},{name:`Czech Republic`,iso2:`CZ`,flag:`🇨🇿`},{name:`Denmark`,iso2:`DK`,flag:`🇩🇰`},{name:`Djibouti`,iso2:`DJ`,flag:`🇩🇯`},{name:`Dominica`,iso2:`DM`,flag:`🇩🇲`},{name:`Dominican Republic`,iso2:`DO`,flag:`🇩🇴`},{name:`Ecuador`,iso2:`EC`,flag:`🇪🇨`},{name:`Egypt`,iso2:`EG`,flag:`🇪🇬`},{name:`El Salvador`,iso2:`SV`,flag:`🇸🇻`},{name:`Equatorial Guinea`,iso2:`GQ`,flag:`🇬🇶`},{name:`Eritrea`,iso2:`ER`,flag:`🇪🇷`},{name:`Estonia`,iso2:`EE`,flag:`🇪🇪`},{name:`Eswatini`,iso2:`SZ`,flag:`🇸🇿`},{name:`Ethiopia`,iso2:`ET`,flag:`🇪🇹`},{name:`Fiji`,iso2:`FJ`,flag:`🇫🇯`},{name:`Finland`,iso2:`FI`,flag:`🇫🇮`},{name:`Gabon`,iso2:`GA`,flag:`🇬🇦`},{name:`Gambia`,iso2:`GM`,flag:`🇬🇲`},{name:`Georgia`,iso2:`GE`,flag:`🇬🇪`},{name:`Ghana`,iso2:`GH`,flag:`🇬🇭`},{name:`Greece`,iso2:`GR`,flag:`🇬🇷`},{name:`Grenada`,iso2:`GD`,flag:`🇬🇩`},{name:`Guatemala`,iso2:`GT`,flag:`🇬🇹`},{name:`Guinea`,iso2:`GN`,flag:`🇬🇳`},{name:`Guinea-Bissau`,iso2:`GW`,flag:`🇬🇼`},{name:`Guyana`,iso2:`GY`,flag:`🇬🇾`},{name:`Haiti`,iso2:`HT`,flag:`🇭🇹`},{name:`Honduras`,iso2:`HN`,flag:`🇭🇳`},{name:`Hungary`,iso2:`HU`,flag:`🇭🇺`},{name:`Iceland`,iso2:`IS`,flag:`🇮🇸`},{name:`Indonesia`,iso2:`ID`,flag:`🇮🇩`},{name:`Iran`,iso2:`IR`,flag:`🇮🇷`},{name:`Iraq`,iso2:`IQ`,flag:`🇮🇶`},{name:`Ireland`,iso2:`IE`,flag:`🇮🇪`},{name:`Israel`,iso2:`IL`,flag:`🇮🇱`},{name:`Italy`,iso2:`IT`,flag:`🇮🇹`},{name:`Jamaica`,iso2:`JM`,flag:`🇯🇲`},{name:`Jordan`,iso2:`JO`,flag:`🇯🇴`},{name:`Kazakhstan`,iso2:`KZ`,flag:`🇰🇿`},{name:`Kenya`,iso2:`KE`,flag:`🇰🇪`},{name:`Kiribati`,iso2:`KI`,flag:`🇰🇮`},{name:`Kuwait`,iso2:`KW`,flag:`🇰🇼`},{name:`Kyrgyzstan`,iso2:`KG`,flag:`🇰🇬`},{name:`Laos`,iso2:`LA`,flag:`🇱🇦`},{name:`Latvia`,iso2:`LV`,flag:`🇱🇻`},{name:`Lebanon`,iso2:`LB`,flag:`🇱🇧`},{name:`Lesotho`,iso2:`LS`,flag:`🇱🇸`},{name:`Liberia`,iso2:`LR`,flag:`🇱🇷`},{name:`Libya`,iso2:`LY`,flag:`🇱🇾`},{name:`Liechtenstein`,iso2:`LI`,flag:`🇱🇮`},{name:`Lithuania`,iso2:`LT`,flag:`🇱🇹`},{name:`Luxembourg`,iso2:`LU`,flag:`🇱🇺`},{name:`Madagascar`,iso2:`MG`,flag:`🇲🇬`},{name:`Malawi`,iso2:`MW`,flag:`🇲🇼`},{name:`Malaysia`,iso2:`MY`,flag:`🇲🇾`},{name:`Maldives`,iso2:`MV`,flag:`🇲🇻`},{name:`Mali`,iso2:`ML`,flag:`🇲🇱`},{name:`Malta`,iso2:`MT`,flag:`🇲🇹`},{name:`Marshall Islands`,iso2:`MH`,flag:`🇲🇭`},{name:`Mauritania`,iso2:`MR`,flag:`🇲🇷`},{name:`Mauritius`,iso2:`MU`,flag:`🇲🇺`},{name:`Mexico`,iso2:`MX`,flag:`🇲🇽`},{name:`Micronesia`,iso2:`FM`,flag:`🇫🇲`},{name:`Moldova`,iso2:`MD`,flag:`🇲🇩`},{name:`Monaco`,iso2:`MC`,flag:`🇲🇨`},{name:`Mongolia`,iso2:`MN`,flag:`🇲🇳`},{name:`Montenegro`,iso2:`ME`,flag:`🇲🇪`},{name:`Morocco`,iso2:`MA`,flag:`🇲🇦`},{name:`Mozambique`,iso2:`MZ`,flag:`🇲🇿`},{name:`Myanmar`,iso2:`MM`,flag:`🇲🇲`},{name:`Namibia`,iso2:`NA`,flag:`🇳🇦`},{name:`Nauru`,iso2:`NR`,flag:`🇳🇷`},{name:`Nepal`,iso2:`NP`,flag:`🇳🇵`},{name:`Netherlands`,iso2:`NL`,flag:`🇳🇱`},{name:`New Zealand`,iso2:`NZ`,flag:`🇳🇿`},{name:`Nicaragua`,iso2:`NI`,flag:`🇳🇮`},{name:`Niger`,iso2:`NE`,flag:`🇳🇪`},{name:`Nigeria`,iso2:`NG`,flag:`🇳🇬`},{name:`North Korea`,iso2:`KP`,flag:`🇰🇵`},{name:`North Macedonia`,iso2:`MK`,flag:`🇲🇰`},{name:`Norway`,iso2:`NO`,flag:`🇳🇴`},{name:`Oman`,iso2:`OM`,flag:`🇴🇲`},{name:`Pakistan`,iso2:`PK`,flag:`🇵🇰`},{name:`Palau`,iso2:`PW`,flag:`🇵🇼`},{name:`Panama`,iso2:`PA`,flag:`🇵🇦`},{name:`Papua New Guinea`,iso2:`PG`,flag:`🇵🇬`},{name:`Paraguay`,iso2:`PY`,flag:`🇵🇾`},{name:`Peru`,iso2:`PE`,flag:`🇵🇪`},{name:`Philippines`,iso2:`PH`,flag:`🇵🇭`},{name:`Poland`,iso2:`PL`,flag:`🇵🇱`},{name:`Portugal`,iso2:`PT`,flag:`🇵🇹`},{name:`Qatar`,iso2:`QA`,flag:`🇶🇦`},{name:`Romania`,iso2:`RO`,flag:`🇷🇴`},{name:`Rwanda`,iso2:`RW`,flag:`🇷🇼`},{name:`Saint Kitts and Nevis`,iso2:`KN`,flag:`🇰🇳`},{name:`Saint Lucia`,iso2:`LC`,flag:`🇱🇨`},{name:`Saint Vincent and the Grenadines`,iso2:`VC`,flag:`🇻🇨`},{name:`Samoa`,iso2:`WS`,flag:`🇼🇸`},{name:`San Marino`,iso2:`SM`,flag:`🇸🇲`},{name:`Sao Tome and Principe`,iso2:`ST`,flag:`🇸🇹`},{name:`Senegal`,iso2:`SN`,flag:`🇸🇳`},{name:`Serbia`,iso2:`RS`,flag:`🇷🇸`},{name:`Seychelles`,iso2:`SC`,flag:`🇸🇨`},{name:`Sierra Leone`,iso2:`SL`,flag:`🇸🇱`},{name:`Singapore`,iso2:`SG`,flag:`🇸🇬`},{name:`Slovakia`,iso2:`SK`,flag:`🇸🇰`},{name:`Slovenia`,iso2:`SI`,flag:`🇸🇮`},{name:`Solomon Islands`,iso2:`SB`,flag:`🇸🇧`},{name:`Somalia`,iso2:`SO`,flag:`🇸🇴`},{name:`South Korea`,iso2:`KR`,flag:`🇰🇷`},{name:`South Sudan`,iso2:`SS`,flag:`🇸🇸`},{name:`Spain`,iso2:`ES`,flag:`🇪🇸`},{name:`Sri Lanka`,iso2:`LK`,flag:`🇱🇰`},{name:`Sudan`,iso2:`SD`,flag:`🇸🇩`},{name:`Suriname`,iso2:`SR`,flag:`🇸🇷`},{name:`Sweden`,iso2:`SE`,flag:`🇸🇪`},{name:`Switzerland`,iso2:`CH`,flag:`🇨🇭`},{name:`Syria`,iso2:`SY`,flag:`🇸🇾`},{name:`Tajikistan`,iso2:`TJ`,flag:`🇹🇯`},{name:`Tanzania`,iso2:`TZ`,flag:`🇹🇿`},{name:`Thailand`,iso2:`TH`,flag:`🇹🇭`},{name:`Togo`,iso2:`TG`,flag:`🇹🇬`},{name:`Tonga`,iso2:`TO`,flag:`🇹🇴`},{name:`Trinidad and Tobago`,iso2:`TT`,flag:`🇹🇹`},{name:`Tunisia`,iso2:`TN`,flag:`🇹🇳`},{name:`Turkey`,iso2:`TR`,flag:`🇹🇷`},{name:`Turkmenistan`,iso2:`TM`,flag:`🇹🇲`},{name:`Tuvalu`,iso2:`TV`,flag:`🇹🇻`},{name:`Uganda`,iso2:`UG`,flag:`🇺🇬`},{name:`Ukraine`,iso2:`UA`,flag:`🇺🇦`},{name:`United Arab Emirates`,iso2:`AE`,flag:`🇦🇪`},{name:`Uruguay`,iso2:`UY`,flag:`🇺🇾`},{name:`Uzbekistan`,iso2:`UZ`,flag:`🇺🇿`},{name:`Vanuatu`,iso2:`VU`,flag:`🇻🇺`},{name:`Venezuela`,iso2:`VE`,flag:`🇻🇪`},{name:`Vietnam`,iso2:`VN`,flag:`🇻🇳`},{name:`Yemen`,iso2:`YE`,flag:`🇾🇪`},{name:`Zambia`,iso2:`ZM`,flag:`🇿🇲`},{name:`Zimbabwe`,iso2:`ZW`,flag:`🇿🇼`},{name:`Timor-Leste`,iso2:`TL`,flag:`🇹🇱`}];function se(e){function t(t,n){for(let r of Array.isArray(n)?n:[n])r==null||r===!1||t.appendChild(typeof r==`string`?e.createTextNode(r):r)}function n(n,r={},i){let a=e.createElement(n);for(let[e,t]of Object.entries(r))if(t!=null)if(e===`on`)for(let[e,n]of Object.entries(t))a.addEventListener(e,n);else e===`class`?a.className=t:e===`text`?a.textContent=t:e===`html`?a.innerHTML=t:e===`value`||e===`src`||e===`type`||e===`accept`||e===`placeholder`?a[e]=t:a.setAttribute(e,t);return t(a,i),a}function r(e,t={}){let r=t.class??`arkyc-addr-input`;return t.choices?n(`select`,{class:r,name:t.name,autocomplete:t.autocomplete,"aria-label":t.name??e},[n(`option`,{value:``,text:e}),...t.choices.map(e=>n(`option`,{value:typeof e==`string`?e:e.value,text:typeof e==`string`?e:e.label??e.value}))]):n(`input`,{class:r,type:t.type??`text`,placeholder:e,name:t.name,autocomplete:t.autocomplete,value:t.value})}return{h:n,append:t,field:r}}let K={passport:`Passport`,id_card:`ID Card`,drivers_license:`Driver's License`,residence_permit:`Residence Permit`},q={turn_left:`Slowly turn your head to the left, and hold`,turn_right:`Slowly turn your head to the right, and hold`,blink:`Blink slowly`,smile:`Smile, and hold it`,nod:`Slowly nod your head`,move_closer:`Slowly move closer to the camera`},J={cls:`warn`,icon:`⏳`,title:`Link expired`,copy:`This verification link has expired.`},ce={approved:{cls:`ok`,icon:`✓`,title:`Already complete`,copy:`This verification has already been completed.`},rejected:{cls:`ok`,icon:`✓`,title:`Already complete`,copy:`This verification has already been completed.`},requires_review:{cls:`ok`,icon:`✓`,title:`Already complete`,copy:`This verification has already been submitted and is being reviewed.`},expired:J,cancelled:{cls:`warn`,icon:`⏳`,title:`Cancelled`,copy:`This verification was cancelled.`}},Y=e=>`<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round">${e}</svg>`,le={turn_right:Y(`<path d="M5 12h14M13 6l6 6-6 6"/>`),turn_left:Y(`<path d="M19 12H5M11 6l-6 6 6 6"/>`),nod:Y(`<path d="M12 5v14M6 13l6 6 6-6"/>`),move_closer:Y(`<circle cx="12" cy="12" r="4"/><path d="M12 2v3M12 19v3M2 12h3M19 12h3"/>`),blink:Y(`<path d="M2 12s4-7 10-7 10 7 10 7-4 7-10 7S2 12 2 12z"/><circle cx="12" cy="12" r="3"/>`),smile:Y(`<path d="M8 14s1.5 2 4 2 4-2 4-2"/><path d="M9 9h.01M15 9h.01"/>`)},ue=Y(`<path d="M20 6 9 17l-5-5"/>`),X=e=>`<svg viewBox="0 0 64 64" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round">${e}</svg>`,de={welcome:X(`<path d="M32 7 52 14v14c0 12.5-8.2 21.6-20 25.6C20.2 49.6 12 40.5 12 28V14z"/><path d="M23 30.5l6.2 6.2L41 24.5"/>`),front_capture:X(`<rect x="7" y="15" width="50" height="34" rx="5"/><circle cx="22" cy="28" r="5"/><path d="M14 42c1-5 5-7 8-7s7 2 8 7"/><path d="M38 27h12M38 34h12M38 41h8"/>`),back_capture:X(`<rect x="7" y="15" width="50" height="34" rx="5"/><rect x="7" y="20" width="50" height="6" fill="currentColor" stroke="none" opacity=".18"/><path d="M14 34h36M14 41h24"/>`),selfie_capture:X(`<path d="M10 20v-6a4 4 0 0 1 4-4h6"/><path d="M44 10h6a4 4 0 0 1 4 4v6"/><path d="M54 44v6a4 4 0 0 1-4 4h-6"/><path d="M20 54h-6a4 4 0 0 1-4-4v-6"/><circle cx="32" cy="27" r="8"/><path d="M19 50c0-7 6-11 13-11s13 4 13 11"/>`),active_liveness:X(`<circle cx="32" cy="30" r="13"/><circle cx="27" cy="27" r="1.2" fill="currentColor" stroke="none"/><circle cx="37" cy="27" r="1.2" fill="currentColor" stroke="none"/><path d="M26 34c2 2.5 10 2.5 12 0"/><path d="M13 30H6M10 26l-4 4 4 4"/><path d="M51 30h7M54 26l4 4-4 4"/>`)};var fe=class{constructor(e,t,n,r=globalThis.navigator,i=I(),a=L,o=W(),s=B){this.doc=e,this.theme=t,this.handlers=n,p(this,`root`,void 0),p(this,`body`,void 0),p(this,`footer`,void 0),p(this,`styleEl`,void 0),p(this,`brandEl`,void 0),p(this,`camera`,void 0),p(this,`analyzer`,void 0),p(this,`tuning`,void 0),p(this,`docAnalyzer`,void 0),p(this,`docTuning`,void 0),p(this,`timers`,[]),p(this,`cleanups`,[]),p(this,`dom`,void 0),this.dom=se(e),this.camera=new T(e,r),this.analyzer=i,this.tuning=a,this.docAnalyzer=o,this.docTuning=s,this.root=this.dom.h(`div`,{class:`arkyc-root`}),this.styleEl=this.dom.h(`style`,{text:t.stylesheet()}),this.root.appendChild(this.styleEl),this.brandEl=this.dom.h(`div`,{class:`arkyc-brand`}),this.fillBrand(),this.body=this.dom.h(`div`,{class:`arkyc-body`}),this.footer=this.dom.h(`div`,{class:`arkyc-footer`});let c=this.dom.h(`div`,{class:`arkyc-header`},[this.brandEl,this.dom.h(`button`,{class:`arkyc-close`,html:`×`,"aria-label":`Close`,on:{click:()=>this.handlers.onClose()}})]);this.root.appendChild(this.dom.h(`div`,{class:`arkyc-card`},[c,this.body,this.footer]))}fillBrand(){this.clear(this.brandEl);let e=Date.now()-Math.floor(600*1e3*Math.random()),t=this.theme.showBranding&&(this.theme.logoUrl||this.theme.name);this.dom.append(this.brandEl,t?[this.theme.logoUrl&&this.dom.h(`img`,{class:`arkyc-logo`,src:`${this.theme.logoUrl}?stamp=${e}`}),this.theme.name&&this.dom.h(`span`,{class:`arkyc-brand-name`,text:this.theme.name})]:this.dom.h(`p`,{class:`arkyc-title`,text:`Verify your identity`}))}applyBranding(e){this.theme=new w(e),this.styleEl.textContent=this.theme.stylesheet(),this.fillBrand()}get element(){return this.root}get cameraSupported(){return this.camera.supported}destroy(){this.timers.forEach(e=>clearInterval(e)),this.timers=[],this.cleanups.forEach(e=>e()),this.cleanups=[],this.camera.stop()}render(e){switch(this.destroy(),this.clear(this.body),this.clear(this.footer),this.root.classList.remove(`arkyc-handoff`),e.step){case`welcome`:return this.renderWelcome(e.handoffAvailable);case`document_selection`:return this.renderDocumentSelection();case`front_capture`:return this.renderCapture(`Front of document`,`environment`,e.allowSkip,!1,e.strictCapture);case`back_capture`:return this.renderCapture(`Back of document`,`environment`,e.allowSkip,!1,e.strictCapture);case`selfie_capture`:return this.renderCapture(`Take a selfie`,`user`,e.allowSkip,!0,e.strictCapture);case`active_liveness`:return this.renderActiveLiveness(e.livenessChallenges??[],e.allowSkip,e.requireLiveCamera);case`ocr_processing`:return this.renderProcessing(`Reading your document…`);case`address_entry`:return this.renderAddressForm(e.addressMethods??[]);case`address_processing`:return this.renderProcessing(`Verifying your address…`);case`passive_liveness`:return this.renderProcessing(`Checking liveness…`);case`face_match`:return this.renderProcessing(`Matching your face…`);case`processing`:return this.renderProcessing(e.statusLabel??`Finalising verification…`);case`result`:return this.renderResult(e.decision??null,e.errorMessage,{terminal:e.terminalNotice,status:e.status})}}appendArt(e){let t=de[e];t&&this.body.appendChild(this.dom.h(`div`,{class:`arkyc-illus`,html:t}))}renderWelcome(e){this.appendArt(`welcome`),this.dom.append(this.body,[this.dom.h(`h2`,{class:`arkyc-h`,text:`Verify your identity`}),this.dom.h(`p`,{class:`arkyc-p`,text:`You will need a government-issued ID and a moment to take a selfie. Your data is processed securely.`})]),this.dom.append(this.footer,[this.button(`Get started`,()=>this.handlers.onStart()),e&&this.button(`Continue on your phone`,()=>this.handlers.onUsePhone(),`arkyc-btn-ghost`)])}renderLoading(e=`Loading…`){this.destroy(),this.clear(this.body),this.clear(this.footer),this.root.classList.remove(`arkyc-handoff`),this.renderProcessing(e)}renderInstruction(e,t,n,r,i){this.destroy(),this.clear(this.body),this.clear(this.footer),this.root.classList.remove(`arkyc-handoff`),this.appendArt(e),this.dom.append(this.body,[this.dom.h(`h2`,{class:`arkyc-h`,text:t}),this.dom.h(`p`,{class:`arkyc-p`,text:n})]),this.footer.appendChild(this.button(r,i))}renderHandoff(e,t){this.destroy(),this.clear(this.body),this.clear(this.footer),this.root.classList.add(`arkyc-handoff`),this.dom.append(this.body,[this.dom.h(`h2`,{class:`arkyc-h`,text:`Continue on your phone`}),this.dom.h(`p`,{class:`arkyc-p`,text:`Scan this code with your phone camera to finish verifying there.`}),this.dom.h(`div`,{class:`arkyc-qr`,html:e}),this.dom.h(`div`,{class:`arkyc-handoff-wait`},[this.dom.h(`div`,{class:`arkyc-spinner sm`}),this.dom.h(`span`,{text:`Waiting for your phone…`})])]),t&&this.footer.appendChild(this.button(`Continue on this device`,()=>this.handlers.onContinueHere(),`arkyc-btn-ghost`))}renderDocumentSelection(){this.body.appendChild(this.dom.h(`h2`,{class:`arkyc-h`,text:`Select your document`}));let e=this.dom.field(`Country`,{class:`arkyc-btn arkyc-btn-ghost arkyc-text-center`,name:`country`,autocomplete:`country`,choices:G.map(({name:e,iso2:t,flag:n})=>({value:t,label:`${n} ${e}`}))}),t=Object.keys(K).map(t=>{let n=this.button(K[t],()=>this.handlers.onDocumentSelected(t,(e.value||``).trim().toUpperCase()));return n.classList.add(`arkyc-btn-ghost`),n});this.body.appendChild(this.dom.h(`div`,{class:`arkyc-choices`},[e,...t]))}renderCapture(e,t,n,r=!1,i=!1){let a=i&&!r,o=this.dom.h(`input`,{type:`file`,accept:`image/*`,class:`arkyc-hidden`,on:{change:()=>this.handlers.onImage(T.fileFromInput(o))}});if(this.dom.append(this.body,[this.dom.h(`h2`,{class:`arkyc-h`,text:e}),this.dom.h(`p`,{class:`arkyc-p`,text:`Position it clearly in frame, then capture.`}),o]),this.camera.supported){let s=this.dom.h(`video`,{class:`arkyc-preview${r?` selfie`:``}`}),c=r?this.buildFaceStage(s):null,l=r?null:this.buildDocStage(s),u=c?.stage??l.stage;this.body.appendChild(u);let d=this.dom.h(`p`,{class:`arkyc-p arkyc-hint`});this.body.appendChild(d);let f=a=>{if(this.destroy(),a){let e=URL.createObjectURL(a),t=this.dom.h(`img`,{class:`arkyc-preview${r?` selfie`:``}`,src:e});u.replaceWith(t),this.cleanups.push(()=>URL.revokeObjectURL(e))}else u.classList.add(`arkyc-hidden`);this.clear(this.footer),d.textContent=`✓ Captured`,this.footer.appendChild(this.button(`Continue`,()=>this.handlers.onImage(a)));let o=this.button(`Retake`,()=>{this.destroy(),this.clear(this.body),this.clear(this.footer),this.renderCapture(e,t,n,r,i)});o.classList.add(`arkyc-btn-ghost`),this.footer.appendChild(o)},p=()=>void this.camera.grabFrame(s).then(f);this.camera.start(s,t).catch(()=>{if(u.classList.add(`arkyc-hidden`),a){d.textContent=`Camera access is required to scan your document. Please allow access and try again.`;return}o.click()}),r?this.runSelfieAutoCapture(s,d,p,c):(this.runDocumentAutoCapture(s,d,l,a,p),a||this.footer.appendChild(this.button(`Capture`,p)))}else if(a)this.dom.append(this.body,[this.dom.h(`div`,{class:`arkyc-badge err`,html:`!`}),this.dom.h(`p`,{class:`arkyc-p`,text:`This step needs a working camera to scan your document. Please retry on a device with a camera.`})]);else{let e=this.button(`Upload photo`,()=>o.click());this.footer.appendChild(e)}if(n){let e=this.button(`Skip (demo)`,()=>this.handlers.onImage(null));e.classList.add(`arkyc-btn-ghost`),this.footer.appendChild(e)}}onCameraLive(e,t){if((e.readyState??0)>=2){t();return}e.addEventListener(`playing`,t,{once:!0})}runDocumentAutoCapture(e,t,n,r,i){let a=()=>{if(r){t.textContent=`Document scanning isn’t available on this device.`;return}this.runDocumentBrightnessCapture(e,t,n,i)},o=this.docAnalyzer;if(!o)return a();t.textContent=`Starting camera…`;let s=!1,c=!1;this.cleanups.push(()=>{s=!0}),this.onCameraLive(e,()=>{!s&&!c&&(t.textContent=`Getting ready…`)}),o.ready().then(r=>{if(c=!0,s)return;if(!r){a();return}let l=0,u=null,d=null,f=(e,t)=>e==null?t:e*.6+t*.4,p=setInterval(()=>{let r=o.analyze(e);if(!r)return;u=f(u,r.fill),d=f(d,r.edgeStrength);let{ready:a,hint:s}=U({...r,fill:u,edgeStrength:d},this.docTuning);t.textContent=s,n.setFrame(r.present?r.rect:null),n.setQuality(a?`good`:r.present?`wait`:`bad`),l=a?l+1:Math.max(0,l-1),l>=this.docTuning.hold&&(clearInterval(p),n.setQuality(`good`),i())},250);this.timers.push(p)})}runDocumentBrightnessCapture(e,t,n,r){let i=0,a=setInterval(()=>{let o=this.camera.sampleQuality(e);o&&(o.tooDark?(t.textContent=`Too dark — find better lighting`,i=0,n.setQuality(`bad`)):o.glare?(t.textContent=`Reduce glare on the document`,i=0,n.setQuality(`bad`)):(t.textContent=`Looks good — hold steady`,i+=1,n.setQuality(`good`)),i>=5&&(clearInterval(a),r()))},300);this.timers.push(a)}runSelfieAutoCapture(e,t,n,r){let i=this.analyzer,a=()=>this.footer.appendChild(this.button(`Capture`,n));if(!i){t.textContent=`Center your face, then capture`,a();return}t.textContent=`Starting camera…`;let o=!1,s=!1;this.cleanups.push(()=>{o=!0}),this.onCameraLive(e,()=>{!o&&!s&&(t.textContent=`Getting ready…`)}),i.ready().then(c=>{if(s=!0,o)return;if(!c){t.textContent=`Center your face, then capture`,a();return}let l=0,u=setInterval(()=>{let a=i.analyze(e);if(!a||!a.present){t.textContent=`Position your face in the circle`,l=0,r.setState(`wait`),r.setProgress(0);return}z(a,this.tuning)?(t.textContent=`Hold still…`,l+=1,r.setState(`good`),r.setProgress(l/4)):(t.textContent=a.scale<=this.tuning.selfieMinScale?`Move a little closer`:`Center your face`,l=0,r.setState(`wait`),r.setProgress(0)),l>=4&&(clearInterval(u),r.setState(`done`),r.setProgress(1),n())},180);this.timers.push(u)})}renderActiveLiveness(e,t,n){let r=this.dom.h(`p`,{class:`arkyc-p`,text:`Follow the on-screen prompts. Keep your face centred in the circle.`});if(this.dom.append(this.body,[this.dom.h(`h2`,{class:`arkyc-h`,text:`Liveness check`}),r]),!this.camera.supported||!this.camera.canRecord){if(n){if(this.body.appendChild(this.dom.h(`div`,{class:`arkyc-badge err`,html:`!`})),r.textContent=`This check needs camera access on a supported device. Please retry on a device with a working camera.`,t){let t=this.button(`Skip (demo)`,()=>this.handlers.onActiveLiveness(null,e));t.classList.add(`arkyc-btn-ghost`),this.footer.appendChild(t)}return}let i=this.button(`I performed the steps`,()=>this.handlers.onActiveLiveness(null,e));if(this.footer.appendChild(i),t){let t=this.button(`Skip (demo)`,()=>this.handlers.onActiveLiveness(null,e));t.classList.add(`arkyc-btn-ghost`),this.footer.appendChild(t)}return}let i=this.dom.h(`video`,{class:`arkyc-preview selfie`}),a=this.buildFaceStage(i),o=this.buildDots(e.length);this.dom.append(this.body,[e.length>1&&o.el,a.stage]);let s=null,c=0,l=[],u=R(e[0]??`blink`,this.tuning),d=(t=!1)=>{let n=e[c];if(!n){r.textContent=`Hold still…`;return}r.textContent=t?`✓ ${q[n]}`:`Step ${c+1} of ${e.length}: ${q[n]}`},f=()=>{a.setCue(e[c]??null),a.setState(`wait`),a.setProgress(0),o.setActive(c)},p=()=>{h.setAttribute(`disabled`,`true`),this.camera.grabFrame(i).then(e=>Promise.resolve(s?.stop()??Promise.resolve(null)).then(t=>this.handlers.onActiveLiveness(t,l,e)))},m=()=>{if(c>=e.length)return;let t=e[c];if(t&&l.push(t),o.markDone(c),c+=1,c>=e.length){p();return}u=R(e[c],this.tuning),d(),f(),c===e.length-1&&(h.textContent=`Finish`)},h=this.button(`Next`,()=>m());e.length<=1&&(h.textContent=`Finish`);let g=!1,_=()=>{g||(g=!0,this.footer.appendChild(h))};if(this.camera.start(i,`user`).then(t=>{s=this.camera.recordStart(t),d(),f();let n=this.analyzer;if(!n){_();return}let r=!1;this.cleanups.push(()=>{r=!0}),n.ready().then(t=>{if(r)return;if(!t){_();return}let o=!1,s=setInterval(()=>{if(c>=e.length){clearInterval(s);return}if(o)return;let t=n.analyze(i);if(!t)return;let r=u.feed(t);if(a.setProgress(u.progress),r){a.setState(`done`),d(!0),o=!0;let e=setTimeout(()=>{o=!1,m()},650);this.cleanups.push(()=>clearTimeout(e))}else a.setState(u.progress>0?`good`:`wait`)},160);this.timers.push(s)})}).catch(()=>{if(a.stage.classList.add(`arkyc-hidden`),n){r.textContent=`Camera access is required to continue. Please allow access and try again.`;return}this.handlers.onActiveLiveness(null,e)}),t){let t=this.button(`Skip (demo)`,()=>this.handlers.onActiveLiveness(null,e));t.classList.add(`arkyc-btn-ghost`),this.footer.appendChild(t)}}buildFaceStage(e){let t=this.dom.h(`div`,{class:`arkyc-ring`,html:`<svg viewBox="0 0 100 100"><circle class="arkyc-ring-track" cx="50" cy="50" r="46"/><circle class="arkyc-ring-arc" cx="50" cy="50" r="46"/></svg>`}),n=this.dom.h(`div`,{class:`arkyc-cue`}),r=this.dom.h(`div`,{class:`arkyc-stage`,"data-state":`wait`},[e,t,n,this.dom.h(`div`,{class:`arkyc-check`,html:ue})]),i=t.querySelector(`.arkyc-ring-arc`),a=2*Math.PI*46;return i&&(i.style.strokeDasharray=String(a),i.style.strokeDashoffset=String(a)),{stage:r,setProgress:e=>{i&&(i.style.strokeDashoffset=String(a*(1-Math.max(0,Math.min(1,e)))))},setState:e=>r.setAttribute(`data-state`,e),setCue:e=>{n.className=`arkyc-cue`+(e?` show arkyc-cue-${e}`:``),n.innerHTML=e?le[e]:``}}}buildDots(e){let t=Array.from({length:e},()=>this.dom.h(`div`,{class:`arkyc-dot`}));return{el:this.dom.h(`div`,{class:`arkyc-dots`},t),setActive:e=>t.forEach((t,n)=>t.classList.toggle(`active`,n===e&&!t.classList.contains(`done`))),markDone:e=>{let n=t[e];n&&(n.classList.remove(`active`),n.classList.add(`done`))}}}buildDocStage(e){let t=this.dom.h(`div`,{class:`arkyc-doc-frame`},[...[`tl`,`tr`,`bl`,`br`].map(e=>this.dom.h(`span`,{class:`arkyc-corner ${e}`})),this.dom.h(`div`,{class:`arkyc-scan`})]),n=this.dom.h(`div`,{class:`arkyc-doc`,"data-q":`wait`},[e,t]);return{stage:n,setQuality:e=>n.setAttribute(`data-q`,e),setFrame:e=>n.setAttribute(`data-detected`,e?`true`:`false`)}}renderProcessing(e){this.dom.append(this.body,[this.dom.h(`div`,{class:`arkyc-spinner`}),this.dom.h(`p`,{class:`arkyc-p`,text:e})])}renderResult(e,t,n={}){if(t)this.dom.append(this.body,[this.dom.h(`div`,{class:`arkyc-badge err`,html:`!`}),this.dom.h(`h2`,{class:`arkyc-h`,text:`Something went wrong`}),this.dom.h(`p`,{class:`arkyc-p`,text:t})]);else if(n.terminal){let e=ce[n.status??`expired`]??J;this.dom.append(this.body,[this.dom.h(`div`,{class:`arkyc-badge ${e.cls}`,text:e.icon}),this.dom.h(`h2`,{class:`arkyc-h`,text:e.title}),this.dom.h(`p`,{class:`arkyc-p`,text:e.copy})]),this.footer.appendChild(this.button(`Close`,()=>this.handlers.onClose()));return}else{let t={approved:{cls:`ok`,icon:`✓`,title:`Verified`,copy:`Your identity has been verified.`},requires_review:{cls:`warn`,icon:`⏳`,title:`Under review`,copy:`Your verification is being reviewed. We will be in touch shortly.`},rejected:{cls:`err`,icon:`✕`,title:`Not verified`,copy:`We could not verify your identity. Please try again.`}},n=t[e??`requires_review`]??t.requires_review;this.dom.append(this.body,[this.dom.h(`div`,{class:`arkyc-badge ${n.cls}`,text:n.icon}),this.dom.h(`h2`,{class:`arkyc-h`,text:n.title}),this.dom.h(`p`,{class:`arkyc-p`,text:n.copy})])}this.footer.appendChild(this.button(`Done`,()=>this.handlers.onAcknowledge()))}renderAddressForm(e){this.body.appendChild(this.dom.h(`h2`,{class:`arkyc-h`,text:`Your address`})),this.body.appendChild(this.dom.h(`p`,{class:`arkyc-p`,text:`Enter your residential address so we can verify it.`}));let t=this.dom.field(`Address line 1`,{autocomplete:`address-line1`,name:`street`}),n=this.dom.field(`Address line 2 (optional)`,{autocomplete:`address-line2`,name:`town`}),r=this.dom.field(`City`,{autocomplete:`address-level2`,name:`city`}),i=this.dom.field(`State / region`,{autocomplete:`address-level1`,name:`state`}),a=this.dom.field(`ZIP/Postal code`,{autocomplete:`postal-code`,name:`zip`}),o=this.dom.field(`Country`,{name:`country_iso2`,choices:G.map(e=>({value:e.iso2,label:`${e.flag} ${e.name}`}))});this.body.appendChild(this.dom.h(`div`,{class:`arkyc-addr-form`},[t,n,r,i,a,o]));let s=null;if(e.includes(`poa_document`)){let e=this.dom.h(`input`,{class:`arkyc-addr-input`,type:`file`,accept:`image/*`,on:{change:()=>s=e.files?.[0]??null}});this.dom.append(this.body,[this.dom.h(`p`,{class:`arkyc-p`,text:`Upload a proof of address (utility bill or bank statement).`}),e])}let c=!1,l=e.includes(`device_location`),u=this.button(`Continue`,()=>this.handlers.onAddress({line1:t.value.trim()||null,line2:n.value.trim()||null,city:r.value.trim()||null,region:i.value.trim()||null,postalCode:a.value.trim()||null,country:o.value.trim().toUpperCase()||null,poa:s,useLocation:c}));if(l){let e=this.dom.h(`p`,{class:`arkyc-p`}),t=this.dom.h(`input`,{type:`checkbox`,on:{change:()=>{if(!t.checked){c=!1,e.textContent=``,u.setAttribute(`disabled`,`true`);return}e.textContent=`Requesting your location…`,u.setAttribute(`disabled`,`true`),Promise.resolve(this.handlers.onShareLocation()).then(n=>{c=n,t.checked=n,n?u.removeAttribute(`disabled`):u.setAttribute(`disabled`,`true`),e.textContent=n?`Location shared ✓`:`Couldn’t access your location, allow location access to continue.`})}}});u.setAttribute(`disabled`,`true`),this.body.appendChild(this.dom.h(`label`,{class:`arkyc-addr-opt`},[t,this.dom.h(`span`,{text:`Allow access to my current location to confirm my address`})])),this.body.appendChild(e)}this.footer.appendChild(u)}button(e,t,n){let r=n?`arkyc-btn ${n}`:`arkyc-btn`,i=this.dom.h(`button`,{class:r,text:e}),a=!1;return i.addEventListener(`click`,()=>{a||(a=!0,i.setAttribute(`disabled`,`true`),i.classList.add(`arkyc-busy`),t())}),i}clear(e){for(;e.firstChild;)e.removeChild(e.firstChild)}};function pe(e){let t=e.userAgent||``;if(!t)return!1;let n=/Android|iPhone|iPad|iPod|Opera Mini|IEMobile|Mobile|BlackBerry|Windows Phone/i.test(t),r=e.platform===`MacIntel`&&(e.maxTouchPoints??0)>1;return!n&&!r}var me=l(s(((e,t)=>{var n=function(){var e=function(e,t){var r=e,a=n[t],p=null,m=0,h=null,g=[],v={},y=function(e,t){m=r*4+17,p=function(e){for(var t=Array(e),n=0;n<e;n+=1){t[n]=Array(e);for(var r=0;r<e;r+=1)t[n][r]=null}return t}(m),b(0,0),b(m-7,0),b(0,m-7),C(),S(),T(e,t),r>=7&&w(e),h??(h=O(r,a,g)),E(h,t)},b=function(e,t){for(var n=-1;n<=7;n+=1)if(!(e+n<=-1||m<=e+n))for(var r=-1;r<=7;r+=1)t+r<=-1||m<=t+r||(0<=n&&n<=6&&(r==0||r==6)||0<=r&&r<=6&&(n==0||n==6)||2<=n&&n<=4&&2<=r&&r<=4?p[e+n][t+r]=!0:p[e+n][t+r]=!1)},x=function(){for(var e=0,t=0,n=0;n<8;n+=1){y(!0,n);var r=i.getLostPoint(v);(n==0||e>r)&&(e=r,t=n)}return t},S=function(){for(var e=8;e<m-8;e+=1)p[e][6]??(p[e][6]=e%2==0);for(var t=8;t<m-8;t+=1)p[6][t]??(p[6][t]=t%2==0)},C=function(){for(var e=i.getPatternPosition(r),t=0;t<e.length;t+=1)for(var n=0;n<e.length;n+=1){var a=e[t],o=e[n];if(p[a][o]==null)for(var s=-2;s<=2;s+=1)for(var c=-2;c<=2;c+=1)s==-2||s==2||c==-2||c==2||s==0&&c==0?p[a+s][o+c]=!0:p[a+s][o+c]=!1}},w=function(e){for(var t=i.getBCHTypeNumber(r),n=0;n<18;n+=1){var a=!e&&(t>>n&1)==1;p[Math.floor(n/3)][n%3+m-8-3]=a}for(var n=0;n<18;n+=1){var a=!e&&(t>>n&1)==1;p[n%3+m-8-3][Math.floor(n/3)]=a}},T=function(e,t){for(var n=a<<3|t,r=i.getBCHTypeInfo(n),o=0;o<15;o+=1){var s=!e&&(r>>o&1)==1;o<6?p[o][8]=s:o<8?p[o+1][8]=s:p[m-15+o][8]=s}for(var o=0;o<15;o+=1){var s=!e&&(r>>o&1)==1;o<8?p[8][m-o-1]=s:o<9?p[8][15-o-1+1]=s:p[8][15-o-1]=s}p[m-8][8]=!e},E=function(e,t){for(var n=-1,r=m-1,a=7,o=0,s=i.getMaskFunction(t),c=m-1;c>0;c-=2)for(c==6&&--c;;){for(var l=0;l<2;l+=1)if(p[r][c-l]==null){var u=!1;o<e.length&&(u=(e[o]>>>a&1)==1),s(r,c-l)&&(u=!u),p[r][c-l]=u,--a,a==-1&&(o+=1,a=7)}if(r+=n,r<0||m<=r){r-=n,n=-n;break}}},D=function(e,t){for(var n=0,r=0,a=0,s=Array(t.length),c=Array(t.length),l=0;l<t.length;l+=1){var u=t[l].dataCount,d=t[l].totalCount-u;r=Math.max(r,u),a=Math.max(a,d),s[l]=Array(u);for(var f=0;f<s[l].length;f+=1)s[l][f]=255&e.getBuffer()[f+n];n+=u;var p=i.getErrorCorrectPolynomial(d),m=o(s[l],p.getLength()-1).mod(p);c[l]=Array(p.getLength()-1);for(var f=0;f<c[l].length;f+=1){var h=f+m.getLength()-c[l].length;c[l][f]=h>=0?m.getAt(h):0}}for(var g=0,f=0;f<t.length;f+=1)g+=t[f].totalCount;for(var _=Array(g),v=0,f=0;f<r;f+=1)for(var l=0;l<t.length;l+=1)f<s[l].length&&(_[v]=s[l][f],v+=1);for(var f=0;f<a;f+=1)for(var l=0;l<t.length;l+=1)f<c[l].length&&(_[v]=c[l][f],v+=1);return _},O=function(e,t,n){for(var r=s.getRSBlocks(e,t),a=c(),o=0;o<n.length;o+=1){var l=n[o];a.put(l.getMode(),4),a.put(l.getLength(),i.getLengthInBits(l.getMode(),e)),l.write(a)}for(var u=0,o=0;o<r.length;o+=1)u+=r[o].dataCount;if(a.getLengthInBits()>u*8)throw`code length overflow. (`+a.getLengthInBits()+`>`+u*8+`)`;for(a.getLengthInBits()+4<=u*8&&a.put(0,4);a.getLengthInBits()%8!=0;)a.putBit(!1);for(;!(a.getLengthInBits()>=u*8||(a.put(236,8),a.getLengthInBits()>=u*8));)a.put(17,8);return D(a,r)};v.addData=function(e,t){t=t||`Byte`;var n=null;switch(t){case`Numeric`:n=l(e);break;case`Alphanumeric`:n=u(e);break;case`Byte`:n=d(e);break;case`Kanji`:n=f(e);break;default:throw`mode:`+t}g.push(n),h=null},v.isDark=function(e,t){if(e<0||m<=e||t<0||m<=t)throw e+`,`+t;return p[e][t]},v.getModuleCount=function(){return m},v.make=function(){if(r<1){for(var e=1;e<40;e++){for(var t=s.getRSBlocks(e,a),n=c(),o=0;o<g.length;o++){var l=g[o];n.put(l.getMode(),4),n.put(l.getLength(),i.getLengthInBits(l.getMode(),e)),l.write(n)}for(var u=0,o=0;o<t.length;o++)u+=t[o].dataCount;if(n.getLengthInBits()<=u*8)break}r=e}y(!1,x())},v.createTableTag=function(e,t){e=e||2,t=t===void 0?e*4:t;var n=``;n+=`<table style="`,n+=` border-width: 0px; border-style: none;`,n+=` border-collapse: collapse;`,n+=` padding: 0px; margin: `+t+`px;`,n+=`">`,n+=`<tbody>`;for(var r=0;r<v.getModuleCount();r+=1){n+=`<tr>`;for(var i=0;i<v.getModuleCount();i+=1)n+=`<td style="`,n+=` border-width: 0px; border-style: none;`,n+=` border-collapse: collapse;`,n+=` padding: 0px; margin: 0px;`,n+=` width: `+e+`px;`,n+=` height: `+e+`px;`,n+=` background-color: `,n+=v.isDark(r,i)?`#000000`:`#ffffff`,n+=`;`,n+=`"/>`;n+=`</tr>`}return n+=`</tbody>`,n+=`</table>`,n},v.createSvgTag=function(e,t,n,r){var i={};typeof arguments[0]==`object`&&(i=arguments[0],e=i.cellSize,t=i.margin,n=i.alt,r=i.title),e=e||2,t=t===void 0?e*4:t,n=typeof n==`string`?{text:n}:n||{},n.text=n.text||null,n.id=n.text?n.id||`qrcode-description`:null,r=typeof r==`string`?{text:r}:r||{},r.text=r.text||null,r.id=r.text?r.id||`qrcode-title`:null;var a=v.getModuleCount()*e+t*2,o,s,c,l,u=``,d=`l`+e+`,0 0,`+e+` -`+e+`,0 0,-`+e+`z `;for(u+=`<svg version="1.1" xmlns="http://www.w3.org/2000/svg"`,u+=i.scalable?``:` width="`+a+`px" height="`+a+`px"`,u+=` viewBox="0 0 `+a+` `+a+`" `,u+=` preserveAspectRatio="xMinYMin meet"`,u+=r.text||n.text?` role="img" aria-labelledby="`+k([r.id,n.id].join(` `).trim())+`"`:``,u+=`>`,u+=r.text?`<title id="`+k(r.id)+`">`+k(r.text)+`</title>`:``,u+=n.text?`<description id="`+k(n.id)+`">`+k(n.text)+`</description>`:``,u+=`<rect width="100%" height="100%" fill="white" cx="0" cy="0"/>`,u+=`<path d="`,c=0;c<v.getModuleCount();c+=1)for(l=c*e+t,o=0;o<v.getModuleCount();o+=1)v.isDark(c,o)&&(s=o*e+t,u+=`M`+s+`,`+l+d);return u+=`" stroke="transparent" fill="black"/>`,u+=`</svg>`,u},v.createDataURL=function(e,t){e=e||2,t=t===void 0?e*4:t;var n=v.getModuleCount()*e+t*2,r=t,i=n-t;return _(n,n,function(t,n){if(r<=t&&t<i&&r<=n&&n<i){var a=Math.floor((t-r)/e),o=Math.floor((n-r)/e);return+!v.isDark(o,a)}else return 1})},v.createImgTag=function(e,t,n){e=e||2,t=t===void 0?e*4:t;var r=v.getModuleCount()*e+t*2,i=``;return i+=`<img`,i+=` src="`,i+=v.createDataURL(e,t),i+=`"`,i+=` width="`,i+=r,i+=`"`,i+=` height="`,i+=r,i+=`"`,n&&(i+=` alt="`,i+=k(n),i+=`"`),i+=`/>`,i};var k=function(e){for(var t=``,n=0;n<e.length;n+=1){var r=e.charAt(n);switch(r){case`<`:t+=`<`;break;case`>`:t+=`>`;break;case`&`:t+=`&`;break;case`"`:t+=`"`;break;default:t+=r;break}}return t},A=function(e){var t=1;e=e===void 0?t*2:e;var n=v.getModuleCount()*t+e*2,r=e,i=n-e,a,o,s,c,l,u={"██":`█`,"█ ":`▀`," █":`▄`," ":` `},d={"██":`▀`,"█ ":`▀`," █":` `," ":` `},f=``;for(a=0;a<n;a+=2){for(s=Math.floor((a-r)/t),c=Math.floor((a+1-r)/t),o=0;o<n;o+=1)l=`█`,r<=o&&o<i&&r<=a&&a<i&&v.isDark(s,Math.floor((o-r)/t))&&(l=` `),r<=o&&o<i&&r<=a+1&&a+1<i&&v.isDark(c,Math.floor((o-r)/t))?l+=` `:l+=`█`,f+=e<1&&a+1>=i?d[l]:u[l];f+=`
|
|
667
721
|
`}return n%2&&e>0?f.substring(0,f.length-n-1)+Array(n+1).join(`▀`):f.substring(0,f.length-1)};return v.createASCII=function(e,t){if(e=e||1,e<2)return A(t);--e,t=t===void 0?e*2:t;var n=v.getModuleCount()*e+t*2,r=t,i=n-t,a,o,s,c,l=Array(e+1).join(`██`),u=Array(e+1).join(` `),d=``,f=``;for(a=0;a<n;a+=1){for(s=Math.floor((a-r)/e),f=``,o=0;o<n;o+=1)c=1,r<=o&&o<i&&r<=a&&a<i&&v.isDark(s,Math.floor((o-r)/e))&&(c=0),f+=c?l:u;for(s=0;s<e;s+=1)d+=f+`
|
|
668
|
-
`}return d.substring(0,d.length-1)},v.renderTo2dContext=function(e,t){t=t||2;for(var n=v.getModuleCount(),r=0;r<n;r++)for(var i=0;i<n;i++)e.fillStyle=v.isDark(r,i)?`black`:`white`,e.fillRect(r*t,i*t,t,t)},v};e.stringToBytesFuncs={default:function(e){for(var t=[],n=0;n<e.length;n+=1){var r=e.charCodeAt(n);t.push(r&255)}return t}},e.stringToBytes=e.stringToBytesFuncs.default,e.createStringToBytes=function(e,t){var n=function(){for(var n=h(e),r=function(){var e=n.read();if(e==-1)throw`eof`;return e},i=0,a={};;){var o=n.read();if(o==-1)break;var s=r(),c=r(),l=r(),u=String.fromCharCode(o<<8|s);a[u]=c<<8|l,i+=1}if(i!=t)throw i+` != `+t;return a}(),r=63;return function(e){for(var t=[],i=0;i<e.length;i+=1){var a=e.charCodeAt(i);if(a<128)t.push(a);else{var o=n[e.charAt(i)];typeof o==`number`?(o&255)==o?t.push(o):(t.push(o>>>8),t.push(o&255)):t.push(r)}}return t}};var t={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8},n={L:1,M:0,Q:3,H:2},r={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7},i=function(){var e=[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],n=1335,i=7973,s=21522,c={},l=function(e){for(var t=0;e!=0;)t+=1,e>>>=1;return t};return c.getBCHTypeInfo=function(e){for(var t=e<<10;l(t)-l(n)>=0;)t^=n<<l(t)-l(n);return(e<<10|t)^s},c.getBCHTypeNumber=function(e){for(var t=e<<12;l(t)-l(i)>=0;)t^=i<<l(t)-l(i);return e<<12|t},c.getPatternPosition=function(t){return e[t-1]},c.getMaskFunction=function(e){switch(e){case r.PATTERN000:return function(e,t){return(e+t)%2==0};case r.PATTERN001:return function(e,t){return e%2==0};case r.PATTERN010:return function(e,t){return t%3==0};case r.PATTERN011:return function(e,t){return(e+t)%3==0};case r.PATTERN100:return function(e,t){return(Math.floor(e/2)+Math.floor(t/3))%2==0};case r.PATTERN101:return function(e,t){return e*t%2+e*t%3==0};case r.PATTERN110:return function(e,t){return(e*t%2+e*t%3)%2==0};case r.PATTERN111:return function(e,t){return(e*t%3+(e+t)%2)%2==0};default:throw`bad maskPattern:`+e}},c.getErrorCorrectPolynomial=function(e){for(var t=o([1],0),n=0;n<e;n+=1)t=t.multiply(o([1,a.gexp(n)],0));return t},c.getLengthInBits=function(e,n){if(1<=n&&n<10)switch(e){case t.MODE_NUMBER:return 10;case t.MODE_ALPHA_NUM:return 9;case t.MODE_8BIT_BYTE:return 8;case t.MODE_KANJI:return 8;default:throw`mode:`+e}else if(n<27)switch(e){case t.MODE_NUMBER:return 12;case t.MODE_ALPHA_NUM:return 11;case t.MODE_8BIT_BYTE:return 16;case t.MODE_KANJI:return 10;default:throw`mode:`+e}else if(n<41)switch(e){case t.MODE_NUMBER:return 14;case t.MODE_ALPHA_NUM:return 13;case t.MODE_8BIT_BYTE:return 16;case t.MODE_KANJI:return 12;default:throw`mode:`+e}else throw`type:`+n},c.getLostPoint=function(e){for(var t=e.getModuleCount(),n=0,r=0;r<t;r+=1)for(var i=0;i<t;i+=1){for(var a=0,o=e.isDark(r,i),s=-1;s<=1;s+=1)if(!(r+s<0||t<=r+s))for(var c=-1;c<=1;c+=1)i+c<0||t<=i+c||s==0&&c==0||o==e.isDark(r+s,i+c)&&(a+=1);a>5&&(n+=3+a-5)}for(var r=0;r<t-1;r+=1)for(var i=0;i<t-1;i+=1){var l=0;e.isDark(r,i)&&(l+=1),e.isDark(r+1,i)&&(l+=1),e.isDark(r,i+1)&&(l+=1),e.isDark(r+1,i+1)&&(l+=1),(l==0||l==4)&&(n+=3)}for(var r=0;r<t;r+=1)for(var i=0;i<t-6;i+=1)e.isDark(r,i)&&!e.isDark(r,i+1)&&e.isDark(r,i+2)&&e.isDark(r,i+3)&&e.isDark(r,i+4)&&!e.isDark(r,i+5)&&e.isDark(r,i+6)&&(n+=40);for(var i=0;i<t;i+=1)for(var r=0;r<t-6;r+=1)e.isDark(r,i)&&!e.isDark(r+1,i)&&e.isDark(r+2,i)&&e.isDark(r+3,i)&&e.isDark(r+4,i)&&!e.isDark(r+5,i)&&e.isDark(r+6,i)&&(n+=40);for(var u=0,i=0;i<t;i+=1)for(var r=0;r<t;r+=1)e.isDark(r,i)&&(u+=1);var d=Math.abs(100*u/t/t-50)/5;return n+=d*10,n},c}(),a=function(){for(var e=Array(256),t=Array(256),n=0;n<8;n+=1)e[n]=1<<n;for(var n=8;n<256;n+=1)e[n]=e[n-4]^e[n-5]^e[n-6]^e[n-8];for(var n=0;n<255;n+=1)t[e[n]]=n;var r={};return r.glog=function(e){if(e<1)throw`glog(`+e+`)`;return t[e]},r.gexp=function(t){for(;t<0;)t+=255;for(;t>=256;)t-=255;return e[t]},r}();function o(e,t){if(e.length===void 0)throw e.length+`/`+t;var n=function(){for(var n=0;n<e.length&&e[n]==0;)n+=1;for(var r=Array(e.length-n+t),i=0;i<e.length-n;i+=1)r[i]=e[i+n];return r}(),r={};return r.getAt=function(e){return n[e]},r.getLength=function(){return n.length},r.multiply=function(e){for(var t=Array(r.getLength()+e.getLength()-1),n=0;n<r.getLength();n+=1)for(var i=0;i<e.getLength();i+=1)t[n+i]^=a.gexp(a.glog(r.getAt(n))+a.glog(e.getAt(i)));return o(t,0)},r.mod=function(e){if(r.getLength()-e.getLength()<0)return r;for(var t=a.glog(r.getAt(0))-a.glog(e.getAt(0)),n=Array(r.getLength()),i=0;i<r.getLength();i+=1)n[i]=r.getAt(i);for(var i=0;i<e.getLength();i+=1)n[i]^=a.gexp(a.glog(e.getAt(i))+t);return o(n,0).mod(e)},r}var s=function(){var e=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12,7,37,13],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]],t=function(e,t){var n={};return n.totalCount=e,n.dataCount=t,n},r={},i=function(t,r){switch(r){case n.L:return e[(t-1)*4+0];case n.M:return e[(t-1)*4+1];case n.Q:return e[(t-1)*4+2];case n.H:return e[(t-1)*4+3];default:return}};return r.getRSBlocks=function(e,n){var r=i(e,n);if(r===void 0)throw`bad rs block @ typeNumber:`+e+`/errorCorrectionLevel:`+n;for(var a=r.length/3,o=[],s=0;s<a;s+=1)for(var c=r[s*3+0],l=r[s*3+1],u=r[s*3+2],d=0;d<c;d+=1)o.push(t(l,u));return o},r}(),c=function(){var e=[],t=0,n={};return n.getBuffer=function(){return e},n.getAt=function(t){return(e[Math.floor(t/8)]>>>7-t%8&1)==1},n.put=function(e,t){for(var r=0;r<t;r+=1)n.putBit((e>>>t-r-1&1)==1)},n.getLengthInBits=function(){return t},n.putBit=function(n){var r=Math.floor(t/8);e.length<=r&&e.push(0),n&&(e[r]|=128>>>t%8),t+=1},n},l=function(e){var n=t.MODE_NUMBER,r=e,i={};i.getMode=function(){return n},i.getLength=function(e){return r.length},i.write=function(e){for(var t=r,n=0;n+2<t.length;)e.put(a(t.substring(n,n+3)),10),n+=3;n<t.length&&(t.length-n==1?e.put(a(t.substring(n,n+1)),4):t.length-n==2&&e.put(a(t.substring(n,n+2)),7))};var a=function(e){for(var t=0,n=0;n<e.length;n+=1)t=t*10+o(e.charAt(n));return t},o=function(e){if(`0`<=e&&e<=`9`)return e.charCodeAt(0)-48;throw`illegal char :`+e};return i},u=function(e){var n=t.MODE_ALPHA_NUM,r=e,i={};i.getMode=function(){return n},i.getLength=function(e){return r.length},i.write=function(e){for(var t=r,n=0;n+1<t.length;)e.put(a(t.charAt(n))*45+a(t.charAt(n+1)),11),n+=2;n<t.length&&e.put(a(t.charAt(n)),6)};var a=function(e){if(`0`<=e&&e<=`9`)return e.charCodeAt(0)-48;if(`A`<=e&&e<=`Z`)return e.charCodeAt(0)-65+10;switch(e){case` `:return 36;case`$`:return 37;case`%`:return 38;case`*`:return 39;case`+`:return 40;case`-`:return 41;case`.`:return 42;case`/`:return 43;case`:`:return 44;default:throw`illegal char :`+e}};return i},d=function(n){var r=t.MODE_8BIT_BYTE,i=e.stringToBytes(n),a={};return a.getMode=function(){return r},a.getLength=function(e){return i.length},a.write=function(e){for(var t=0;t<i.length;t+=1)e.put(i[t],8)},a},f=function(n){var r=t.MODE_KANJI,i=e.stringToBytesFuncs.SJIS;if(!i)throw`sjis not supported.`;(function(e,t){var n=i(e);if(n.length!=2||(n[0]<<8|n[1])!=t)throw`sjis not supported.`})(`友`,38726);var a=i(n),o={};return o.getMode=function(){return r},o.getLength=function(e){return~~(a.length/2)},o.write=function(e){for(var t=a,n=0;n+1<t.length;){var r=(255&t[n])<<8|255&t[n+1];if(33088<=r&&r<=40956)r-=33088;else if(57408<=r&&r<=60351)r-=49472;else throw`illegal char at `+(n+1)+`/`+r;r=(r>>>8&255)*192+(r&255),e.put(r,13),n+=2}if(n<t.length)throw`illegal char at `+(n+1)},o},p=function(){var e=[],t={};return t.writeByte=function(t){e.push(t&255)},t.writeShort=function(e){t.writeByte(e),t.writeByte(e>>>8)},t.writeBytes=function(e,n,r){n=n||0,r=r||e.length;for(var i=0;i<r;i+=1)t.writeByte(e[i+n])},t.writeString=function(e){for(var n=0;n<e.length;n+=1)t.writeByte(e.charCodeAt(n))},t.toByteArray=function(){return e},t.toString=function(){var t=``;t+=`[`;for(var n=0;n<e.length;n+=1)n>0&&(t+=`,`),t+=e[n];return t+=`]`,t},t},m=function(){var e=0,t=0,n=0,r=``,i={},a=function(e){r+=String.fromCharCode(o(e&63))},o=function(e){if(!(e<0)){if(e<26)return 65+e;if(e<52)return 97+(e-26);if(e<62)return 48+(e-52);if(e==62)return 43;if(e==63)return 47}throw`n:`+e};return i.writeByte=function(r){for(e=e<<8|r&255,t+=8,n+=1;t>=6;)a(e>>>t-6),t-=6},i.flush=function(){if(t>0&&(a(e<<6-t),e=0,t=0),n%3!=0)for(var i=3-n%3,o=0;o<i;o+=1)r+=`=`},i.toString=function(){return r},i},h=function(e){var t=e,n=0,r=0,i=0,a={};a.read=function(){for(;i<8;){if(n>=t.length){if(i==0)return-1;throw`unexpected end of file./`+i}var e=t.charAt(n);if(n+=1,e==`=`)return i=0,-1;e.match(/^\s$/)||(r=r<<6|o(e.charCodeAt(0)),i+=6)}var a=r>>>i-8&255;return i-=8,a};var o=function(e){if(65<=e&&e<=90)return e-65;if(97<=e&&e<=122)return e-97+26;if(48<=e&&e<=57)return e-48+52;if(e==43)return 62;if(e==47)return 63;throw`c:`+e};return a},g=function(e,t){var n=e,r=t,i=Array(e*t),a={};a.setPixel=function(e,t,r){i[t*n+e]=r},a.write=function(e){e.writeString(`GIF87a`),e.writeShort(n),e.writeShort(r),e.writeByte(128),e.writeByte(0),e.writeByte(0),e.writeByte(0),e.writeByte(0),e.writeByte(0),e.writeByte(255),e.writeByte(255),e.writeByte(255),e.writeString(`,`),e.writeShort(0),e.writeShort(0),e.writeShort(n),e.writeShort(r),e.writeByte(0);var t=2,i=s(t);e.writeByte(t);for(var a=0;i.length-a>255;)e.writeByte(255),e.writeBytes(i,a,255),a+=255;e.writeByte(i.length-a),e.writeBytes(i,a,i.length-a),e.writeByte(0),e.writeString(`;`)};var o=function(e){var t=e,n=0,r=0,i={};return i.write=function(e,i){if(e>>>i)throw`length over`;for(;n+i>=8;)t.writeByte(255&(e<<n|r)),i-=8-n,e>>>=8-n,r=0,n=0;r=e<<n|r,n+=i},i.flush=function(){n>0&&t.writeByte(r)},i},s=function(e){for(var t=1<<e,n=(1<<e)+1,r=e+1,a=c(),s=0;s<t;s+=1)a.add(String.fromCharCode(s));a.add(String.fromCharCode(t)),a.add(String.fromCharCode(n));var l=p(),u=o(l);u.write(t,r);var d=0,f=String.fromCharCode(i[d]);for(d+=1;d<i.length;){var m=String.fromCharCode(i[d]);d+=1,a.contains(f+m)?f+=m:(u.write(a.indexOf(f),r),a.size()<4095&&(a.size()==1<<r&&(r+=1),a.add(f+m)),f=m)}return u.write(a.indexOf(f),r),u.write(n,r),u.flush(),l.toByteArray()},c=function(){var e={},t=0,n={};return n.add=function(r){if(n.contains(r))throw`dup key:`+r;e[r]=t,t+=1},n.size=function(){return t},n.indexOf=function(t){return e[t]},n.contains=function(t){return e[t]!==void 0},n};return a},_=function(e,t,n){for(var r=g(e,t),i=0;i<t;i+=1)for(var a=0;a<e;a+=1)r.setPixel(a,i,n(a,i));var o=p();r.write(o);for(var s=m(),c=o.toByteArray(),l=0;l<c.length;l+=1)s.writeByte(c[l]);return s.flush(),`data:image/gif;base64,`+s};return e}();(function(){n.stringToBytesFuncs[`UTF-8`]=function(e){function t(e){for(var t=[],n=0;n<e.length;n++){var r=e.charCodeAt(n);r<128?t.push(r):r<2048?t.push(192|r>>6,128|r&63):r<55296||r>=57344?t.push(224|r>>12,128|r>>6&63,128|r&63):(n++,r=65536+((r&1023)<<10|e.charCodeAt(n)&1023),t.push(240|r>>18,128|r>>12&63,128|r>>6&63,128|r&63))}return t}return t(e)}})(),(function(n){typeof define==`function`&&define.amd?define([],n):typeof e==`object`&&(t.exports=n())})(function(){return n})}))(),1);function fe(e){let t=(0,de.default)(0,`M`);return t.addData(e),t.make(),t.createSvgTag({cellSize:6,margin:4,scalable:!0})}let pe={front_capture:{title:`Front of your document`,body:`Place the front of your ID flat and fully inside the frame. We’ll capture it automatically.`},back_capture:{title:`Back of your document`,body:`Now turn your ID over and show the back, fully inside the frame.`},selfie_capture:{title:`Take a selfie`,body:`Look straight at the camera in good light and hold still — we’ll capture it automatically.`},active_liveness:{title:`Quick liveness check`,body:`Follow the on-screen prompts (such as turn your head, blink or smile). This confirms you’re really here.`}};function me(e,t){let n=e.logo_url;if(!n||!t||!/^https?:\/\//i.test(t))return e;try{let r=new URL(t),i=new URL(n,r);return i.origin===r.origin?e:{...e,logo_url:`${r.origin}${i.pathname}${i.search}${i.hash}`}}catch{return e}}var he=class{constructor(e){this.config=e,p(this,`client`,void 0),p(this,`view`,void 0),p(this,`win`,void 0),p(this,`nav`,void 0),p(this,`postToParent`,void 0),p(this,`scheduler`,void 0),p(this,`transientMs`,void 0),p(this,`pollMs`,void 0),p(this,`maxPolls`,void 0),p(this,`maxHandoffPolls`,void 0),p(this,`handoffConfig`,{enabled:!1,allow_desktop:!0,url:``}),p(this,`handoffReady`,!1),p(this,`handoffActive`,!1),p(this,`sessionId`,``),p(this,`realtimeConfig`,null),p(this,`rtClient`,null),p(this,`rtResolved`,!1),p(this,`lastStatus`,null),p(this,`listeners`,new Map),p(this,`stopWatch`,void 0),p(this,`step`,`welcome`),p(this,`documentType`,null),p(this,`country`,null),p(this,`selfie`,null),p(this,`livenessMode`,`passive`),p(this,`captureModel`,`passive`),p(this,`livenessChallenges`,[]),p(this,`workflow`,null),p(this,`result`,null),p(this,`terminalOnLoad`,!1),p(this,`instructionAcked`,!1),p(this,`pendingError`,null),p(this,`settled`,!1);let t=e.doc??globalThis.document,n=e.win??globalThis.window;if(!t||!n)throw Error(`The Arkyc widget must run in a browser environment.`);this.win=n,this.nav=e.nav??globalThis.navigator,this.client=new g({token:e.token,baseUrl:e.baseUrl,fetch:e.fetch});let r=new w(e.branding);this.view=new le(t,r,this.handlers(),e.nav??globalThis.navigator,e.faceAnalyzer,e.faceTuning,e.documentAnalyzer,e.documentTuning),this.postToParent=e.postToParent??(!!n.parent&&n.parent!==n),this.scheduler=e.scheduler??((e,t)=>setTimeout(e,t)),this.transientMs=e.transientMs??700,this.pollMs=e.pollMs??1500,this.maxPolls=e.maxPolls??40,this.maxHandoffPolls=e.maxHandoffPolls??600}get element(){return this.view.element}start(){this.view.renderLoading(),this.run(()=>this.bootstrap())}destroy(){this.view.destroy()}close(){this.finishClose()}on(e,t){let n=this.listeners.get(e)??new Set;return n.add(t),this.listeners.set(e,n),()=>n.delete(t)}hasListener(e){if(this.config.onEvent)return!0;let t=this.listeners.get(e);return!!t&&t.size>0}dispatch(e,t){this.emit(e,t),this.post(`arkyc:event`,{name:e,data:t})}emit(e,t){if(!this.hasListener(e))return;try{this.config.onEvent?.({name:e,data:t})}catch{}let n=this.listeners.get(e);if(n)for(let e of[...n])try{e(t)}catch{}}observe(e){if(e===this.lastStatus)return;let t=this.lastStatus;this.lastStatus=e,this.dispatch(E.sessionTransition,{session_id:this.sessionId,status:e,previous_status:t})}async resolveRealtime(){if(this.rtResolved)return this.rtClient;this.rtResolved=!0;let e=this.realtimeConfig;if(!e||e.transport===`polling`||e.transport===`off`||e.transport===`memory`)return null;let t=this.config.realtimeFactory??v,n=(this.config.baseUrl??``).replace(/\/$/,``);try{this.rtClient=await t(e,{authEndpoint:`${n}/v1/client/realtime/auth`,token:this.config.token})}catch{this.rtClient=null}return this.rtClient}handlers(){return{onClose:()=>this.finishClose(),onStart:()=>void this.run(()=>this.enter(this.next())),onDocumentSelected:(e,t)=>{this.documentType=e,this.country=t||null,this.run(()=>this.enter(`front_capture`))},onImage:e=>void this.run(()=>this.onImage(e)),onActiveLiveness:(e,t,n)=>void this.run(async()=>{await this.client.submitLiveness({selfie:n,video:e,mode:`active`,challenges:t,signals:this.config.signals}),await this.enter(this.next())}),onAcknowledge:()=>this.finishResult(),onUsePhone:()=>void this.run(()=>this.startHandoff()),onContinueHere:()=>{this.handoffActive=!1,this.stopWatch?.(),this.step=`welcome`,this.render()}}}async bootstrap(){if(this.settled)return;let e=await this.client.getSession();if(!this.settled){if(this.sessionId=e.id,this.realtimeConfig=e.realtime??null,this.workflow=e.workflow??null,this.config.branding==null&&e.branding&&this.view.applyBranding(me(e.branding,this.config.baseUrl)),this.observe(e.status),M.isTerminal(e.status))return this.showTerminal(e.status);this.resolveLiveness(e),e.handoff&&(this.handoffConfig=e.handoff),this.config.handoff!==!1&&ue(this.nav)&&this.handoffConfig.enabled&&this.handoffTarget()?(this.handoffReady=!0,await this.startHandoff()):(this.step=`welcome`,this.render())}}handoffTarget(){return(this.config.handoffUrl??this.handoffConfig.url??``).trim()}async startHandoff(){let e=this.handoffTarget();e&&(this.handoffActive=!0,this.view.renderHandoff(fe(this.buildHandoffUrl(e)),this.handoffConfig.allow_desktop),await this.pollHandoff())}buildHandoffUrl(e){let t=`${e}${e.includes(`?`)?`&`:`?`}token=${encodeURIComponent(this.config.token)}`,n=(this.config.baseUrl??``).trim();return/^https?:\/\//i.test(n)&&(t+=`&baseUrl=${encodeURIComponent(n)}`),t}async pollHandoff(){let e=await this.resolveRealtime();if(e){let t=await this.pushWatch(e,this.maxHandoffPolls,()=>this.handoffActive&&!this.settled);return t?(this.handoffActive=!1,this.showResult(t)):void 0}let t=0;for(let e=0;e<this.maxHandoffPolls&&this.handoffActive&&!this.settled;e++){if(await this.delay(this.pollMs),!this.handoffActive||this.settled)return;try{let e=await this.client.getSession();if(t=0,this.observe(e.status),M.isTerminal(e.status))return this.handoffActive=!1,this.showResult(e.status)}catch(e){if(e instanceof m&&e.status===401)return this.handoffActive=!1,this.showResult(`expired`);if(++t>=5)return}}}pushWatch(e,t,n){return new Promise(r=>{let i=!1,a=e=>{i||(i=!0,this.stopWatch=void 0,s(),r(e))},o=this.realtimeConfig.channel,s=e.subscribe(o,(e,t)=>{if(e!==E.sessionTransition)return;let n=t.status;this.observe(n),M.isTerminal(n)&&a(n)});this.stopWatch=()=>a(null),this.client.getSession().then(e=>{this.observe(e.status),M.isTerminal(e.status)&&a(e.status)}).catch(e=>{e instanceof m&&e.status===401&&a(`expired`)});let c=async e=>{if(!i){if(!n()||e>=t)return a(null);await this.delay(this.pollMs),c(e+1)}};c(0)})}resolveLiveness(e){this.livenessChallenges=e.liveness_challenges??[];let t=e.capture_model??`passive`;this.captureModel=t;let n=t===`active`||t===`both`;this.livenessMode=n&&(t===`active`||this.view.cameraSupported)?`active`:`passive`}async onImage(e){let t=this.config.signals;switch(this.step){case`front_capture`:return await this.client.submitDocumentFront({image:e,country:this.country,documentType:this.documentType,signals:t}),this.enter(this.next());case`back_capture`:return await this.client.submitDocumentBack({image:e,country:this.country,documentType:this.documentType}),this.enter(`ocr_processing`);case`selfie_capture`:return this.selfie=e,this.enter(`passive_liveness`)}}async enter(e){if(this.settled)return;this.step=e;let t=pe[e];if(t&&!this.instructionAcked){this.view.renderInstruction(e,t.title,t.body,t.cta??`Continue`,()=>{this.instructionAcked=!0,this.run(()=>this.enter(e))});return}switch(this.instructionAcked=!1,this.render(),e){case`ocr_processing`:return await this.delay(this.transientMs),this.enter(this.next());case`passive_liveness`:return await this.client.submitLiveness({selfie:this.selfie,signals:this.config.signals}),this.enter(this.next());case`face_match`:return await this.client.complete({signals:this.config.signals}),this.enter(this.next());case`processing`:return this.poll()}}async poll(){let e=await this.resolveRealtime();if(e){let t=await this.pushWatch(e,this.maxPolls,()=>!this.settled);return this.showResult(t??`requires_review`)}for(let e=0;e<this.maxPolls&&!this.settled;e++){let e=await this.client.getSession();if(this.observe(e.status),M.isTerminal(e.status))return this.showResult(e.status);await this.delay(this.pollMs)}this.showResult(`requires_review`)}showResult(e){this.result={status:e,decision:M.statusToDecision(e)},this.step=`result`,this.render()}showTerminal(e){this.result={status:e,decision:M.statusToDecision(e)},this.step=`result`,this.terminalOnLoad=!0,this.render()}render(){this.view.render({step:this.step,documentType:this.documentType,decision:this.result?.decision,status:this.result?.status,terminalNotice:this.terminalOnLoad,allowSkip:!!this.config.signals,livenessChallenges:this.livenessChallenges,requireLiveCamera:this.captureModel===`active`,strictCapture:this.livenessMode===`active`,handoffAvailable:this.handoffReady})}next(){return M.nextStep(this.step,{documentType:this.documentType,livenessMode:this.livenessMode,workflow:this.workflow})}delay(e){return new Promise(t=>this.scheduler(t,e))}async run(e){try{await e()}catch(e){this.fail(e)}}fail(e){if(this.settled)return;let t=e instanceof Error?e:Error(String(e));this.step=`result`,this.view.render({step:`result`,documentType:this.documentType,errorMessage:t.message}),this.pendingError=t}finishResult(){this.settled||(this.settled=!0,this.teardownRealtime(),this.pendingError?(this.post(`arkyc:error`,{error:Z(this.pendingError)}),this.dispatch(`error`,{message:this.pendingError.message}),this.config.onError?.(this.pendingError)):this.result&&(this.post(`arkyc:complete`,{payload:this.result}),this.dispatch(`complete`,this.result),this.config.onComplete?.(this.result)),this.destroy(),this.config.onSettle?.())}finishClose(){this.settled||(this.settled=!0,this.teardownRealtime(),this.post(`arkyc:close`,{}),this.dispatch(`close`),this.config.onClose?.(),this.destroy(),this.config.onSettle?.())}teardownRealtime(){this.stopWatch?.(),this.rtClient?.disconnect(),this.rtClient=null}post(e,t){if(this.postToParent)try{this.win.parent?.postMessage({type:e,...t},`*`)}catch{}}};function Z(e){return{message:e.message,name:e.name}}let ge=(e,t)=>{let n=typeof e==`string`?t.querySelector(e):e;if(!n)throw Error(`ArkycWidget.mount: container "${String(e)}" not found.`);return n},Q=(e,t)=>{if(!e.token)throw Error("ArkycWidget requires a client `token`.");return new he({token:e.token,baseUrl:e.baseUrl,handoff:e.handoff,handoffUrl:e.handoffUrl,branding:e.branding,signals:e.signals,onComplete:e.onComplete,onError:e.onError,onClose:e.onClose,onEvent:e.onEvent,onSettle:t,fetch:e.fetch,doc:e.doc,win:e.win,nav:e.nav,faceAnalyzer:e.faceAnalyzer,faceTuning:e.faceTuning,documentAnalyzer:e.documentAnalyzer,documentTuning:e.documentTuning})};var $=class{constructor(e){this.controller=e}close(){return this.controller.close()}on(e,t){return this.controller.on(e,t)}},_e=class e{static open(e){let t=e.doc??globalThis.document,n=t.createElement(`div`);n.setAttribute(`data-arkyc-widget`,``),n.style.cssText=e.fullscreen?`position:fixed;inset:0;z-index:2147483647;background:rgba(0,0,0,0.55);display:flex;align-items:center;justify-content:center;padding:0;`:`position:fixed;inset:0;z-index:2147483647;background:rgba(0,0,0,0.6);display:flex;align-items:center;justify-content:center;padding:16px;`;let r=Q(e,()=>n.remove());return r.element.classList.add(`arkyc-overlay`),e.fullscreen&&r.element.classList.add(`arkyc-fullscreen`),n.appendChild(r.element),(t.body??t.documentElement).appendChild(n),r.start(),new $(r)}static mount(e){let t=e.doc??globalThis.document,n=ge(e.container,t),r=Q(e,()=>r.element.remove());return n.appendChild(r.element),r.start(),new $(r)}static hosted(t={}){let n=t.win??globalThis.window,r=new URLSearchParams(n.location.search),i=t.token??r.get(`token`)??``,a=t.baseUrl??r.get(`baseUrl`)??void 0;return e.open({...t,token:i,baseUrl:a})}};return e.ArkycClient=g,e.ArkycWidget=_e,e.Camera=T,e.DEFAULT_DOCUMENT_TUNING=V,e.DEFAULT_TUNING=R,e.Flow=M,e.PACKAGE_NAME=`@arkyc/widget`,e.Theme=w,e.VERSION=`0.1.0`,e.WidgetApiError=m,e.WidgetHandler=$,e.analyzeDocumentGray=U,e.createDefaultDocumentAnalyzer=G,e.createDefaultFaceAnalyzer=L,e.createWidgetRealtimeClient=v,e.documentGuidance=W,e.isDocumentReady=ne,e.isSelfieReady=B,e.makeChallengeDetector=z,e})({});
|
|
722
|
+
`}return d.substring(0,d.length-1)},v.renderTo2dContext=function(e,t){t=t||2;for(var n=v.getModuleCount(),r=0;r<n;r++)for(var i=0;i<n;i++)e.fillStyle=v.isDark(r,i)?`black`:`white`,e.fillRect(r*t,i*t,t,t)},v};e.stringToBytesFuncs={default:function(e){for(var t=[],n=0;n<e.length;n+=1){var r=e.charCodeAt(n);t.push(r&255)}return t}},e.stringToBytes=e.stringToBytesFuncs.default,e.createStringToBytes=function(e,t){var n=function(){for(var n=h(e),r=function(){var e=n.read();if(e==-1)throw`eof`;return e},i=0,a={};;){var o=n.read();if(o==-1)break;var s=r(),c=r(),l=r(),u=String.fromCharCode(o<<8|s);a[u]=c<<8|l,i+=1}if(i!=t)throw i+` != `+t;return a}(),r=63;return function(e){for(var t=[],i=0;i<e.length;i+=1){var a=e.charCodeAt(i);if(a<128)t.push(a);else{var o=n[e.charAt(i)];typeof o==`number`?(o&255)==o?t.push(o):(t.push(o>>>8),t.push(o&255)):t.push(r)}}return t}};var t={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8},n={L:1,M:0,Q:3,H:2},r={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7},i=function(){var e=[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],n=1335,i=7973,s=21522,c={},l=function(e){for(var t=0;e!=0;)t+=1,e>>>=1;return t};return c.getBCHTypeInfo=function(e){for(var t=e<<10;l(t)-l(n)>=0;)t^=n<<l(t)-l(n);return(e<<10|t)^s},c.getBCHTypeNumber=function(e){for(var t=e<<12;l(t)-l(i)>=0;)t^=i<<l(t)-l(i);return e<<12|t},c.getPatternPosition=function(t){return e[t-1]},c.getMaskFunction=function(e){switch(e){case r.PATTERN000:return function(e,t){return(e+t)%2==0};case r.PATTERN001:return function(e,t){return e%2==0};case r.PATTERN010:return function(e,t){return t%3==0};case r.PATTERN011:return function(e,t){return(e+t)%3==0};case r.PATTERN100:return function(e,t){return(Math.floor(e/2)+Math.floor(t/3))%2==0};case r.PATTERN101:return function(e,t){return e*t%2+e*t%3==0};case r.PATTERN110:return function(e,t){return(e*t%2+e*t%3)%2==0};case r.PATTERN111:return function(e,t){return(e*t%3+(e+t)%2)%2==0};default:throw`bad maskPattern:`+e}},c.getErrorCorrectPolynomial=function(e){for(var t=o([1],0),n=0;n<e;n+=1)t=t.multiply(o([1,a.gexp(n)],0));return t},c.getLengthInBits=function(e,n){if(1<=n&&n<10)switch(e){case t.MODE_NUMBER:return 10;case t.MODE_ALPHA_NUM:return 9;case t.MODE_8BIT_BYTE:return 8;case t.MODE_KANJI:return 8;default:throw`mode:`+e}else if(n<27)switch(e){case t.MODE_NUMBER:return 12;case t.MODE_ALPHA_NUM:return 11;case t.MODE_8BIT_BYTE:return 16;case t.MODE_KANJI:return 10;default:throw`mode:`+e}else if(n<41)switch(e){case t.MODE_NUMBER:return 14;case t.MODE_ALPHA_NUM:return 13;case t.MODE_8BIT_BYTE:return 16;case t.MODE_KANJI:return 12;default:throw`mode:`+e}else throw`type:`+n},c.getLostPoint=function(e){for(var t=e.getModuleCount(),n=0,r=0;r<t;r+=1)for(var i=0;i<t;i+=1){for(var a=0,o=e.isDark(r,i),s=-1;s<=1;s+=1)if(!(r+s<0||t<=r+s))for(var c=-1;c<=1;c+=1)i+c<0||t<=i+c||s==0&&c==0||o==e.isDark(r+s,i+c)&&(a+=1);a>5&&(n+=3+a-5)}for(var r=0;r<t-1;r+=1)for(var i=0;i<t-1;i+=1){var l=0;e.isDark(r,i)&&(l+=1),e.isDark(r+1,i)&&(l+=1),e.isDark(r,i+1)&&(l+=1),e.isDark(r+1,i+1)&&(l+=1),(l==0||l==4)&&(n+=3)}for(var r=0;r<t;r+=1)for(var i=0;i<t-6;i+=1)e.isDark(r,i)&&!e.isDark(r,i+1)&&e.isDark(r,i+2)&&e.isDark(r,i+3)&&e.isDark(r,i+4)&&!e.isDark(r,i+5)&&e.isDark(r,i+6)&&(n+=40);for(var i=0;i<t;i+=1)for(var r=0;r<t-6;r+=1)e.isDark(r,i)&&!e.isDark(r+1,i)&&e.isDark(r+2,i)&&e.isDark(r+3,i)&&e.isDark(r+4,i)&&!e.isDark(r+5,i)&&e.isDark(r+6,i)&&(n+=40);for(var u=0,i=0;i<t;i+=1)for(var r=0;r<t;r+=1)e.isDark(r,i)&&(u+=1);var d=Math.abs(100*u/t/t-50)/5;return n+=d*10,n},c}(),a=function(){for(var e=Array(256),t=Array(256),n=0;n<8;n+=1)e[n]=1<<n;for(var n=8;n<256;n+=1)e[n]=e[n-4]^e[n-5]^e[n-6]^e[n-8];for(var n=0;n<255;n+=1)t[e[n]]=n;var r={};return r.glog=function(e){if(e<1)throw`glog(`+e+`)`;return t[e]},r.gexp=function(t){for(;t<0;)t+=255;for(;t>=256;)t-=255;return e[t]},r}();function o(e,t){if(e.length===void 0)throw e.length+`/`+t;var n=function(){for(var n=0;n<e.length&&e[n]==0;)n+=1;for(var r=Array(e.length-n+t),i=0;i<e.length-n;i+=1)r[i]=e[i+n];return r}(),r={};return r.getAt=function(e){return n[e]},r.getLength=function(){return n.length},r.multiply=function(e){for(var t=Array(r.getLength()+e.getLength()-1),n=0;n<r.getLength();n+=1)for(var i=0;i<e.getLength();i+=1)t[n+i]^=a.gexp(a.glog(r.getAt(n))+a.glog(e.getAt(i)));return o(t,0)},r.mod=function(e){if(r.getLength()-e.getLength()<0)return r;for(var t=a.glog(r.getAt(0))-a.glog(e.getAt(0)),n=Array(r.getLength()),i=0;i<r.getLength();i+=1)n[i]=r.getAt(i);for(var i=0;i<e.getLength();i+=1)n[i]^=a.gexp(a.glog(e.getAt(i))+t);return o(n,0).mod(e)},r}var s=function(){var e=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12,7,37,13],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]],t=function(e,t){var n={};return n.totalCount=e,n.dataCount=t,n},r={},i=function(t,r){switch(r){case n.L:return e[(t-1)*4+0];case n.M:return e[(t-1)*4+1];case n.Q:return e[(t-1)*4+2];case n.H:return e[(t-1)*4+3];default:return}};return r.getRSBlocks=function(e,n){var r=i(e,n);if(r===void 0)throw`bad rs block @ typeNumber:`+e+`/errorCorrectionLevel:`+n;for(var a=r.length/3,o=[],s=0;s<a;s+=1)for(var c=r[s*3+0],l=r[s*3+1],u=r[s*3+2],d=0;d<c;d+=1)o.push(t(l,u));return o},r}(),c=function(){var e=[],t=0,n={};return n.getBuffer=function(){return e},n.getAt=function(t){return(e[Math.floor(t/8)]>>>7-t%8&1)==1},n.put=function(e,t){for(var r=0;r<t;r+=1)n.putBit((e>>>t-r-1&1)==1)},n.getLengthInBits=function(){return t},n.putBit=function(n){var r=Math.floor(t/8);e.length<=r&&e.push(0),n&&(e[r]|=128>>>t%8),t+=1},n},l=function(e){var n=t.MODE_NUMBER,r=e,i={};i.getMode=function(){return n},i.getLength=function(e){return r.length},i.write=function(e){for(var t=r,n=0;n+2<t.length;)e.put(a(t.substring(n,n+3)),10),n+=3;n<t.length&&(t.length-n==1?e.put(a(t.substring(n,n+1)),4):t.length-n==2&&e.put(a(t.substring(n,n+2)),7))};var a=function(e){for(var t=0,n=0;n<e.length;n+=1)t=t*10+o(e.charAt(n));return t},o=function(e){if(`0`<=e&&e<=`9`)return e.charCodeAt(0)-48;throw`illegal char :`+e};return i},u=function(e){var n=t.MODE_ALPHA_NUM,r=e,i={};i.getMode=function(){return n},i.getLength=function(e){return r.length},i.write=function(e){for(var t=r,n=0;n+1<t.length;)e.put(a(t.charAt(n))*45+a(t.charAt(n+1)),11),n+=2;n<t.length&&e.put(a(t.charAt(n)),6)};var a=function(e){if(`0`<=e&&e<=`9`)return e.charCodeAt(0)-48;if(`A`<=e&&e<=`Z`)return e.charCodeAt(0)-65+10;switch(e){case` `:return 36;case`$`:return 37;case`%`:return 38;case`*`:return 39;case`+`:return 40;case`-`:return 41;case`.`:return 42;case`/`:return 43;case`:`:return 44;default:throw`illegal char :`+e}};return i},d=function(n){var r=t.MODE_8BIT_BYTE,i=e.stringToBytes(n),a={};return a.getMode=function(){return r},a.getLength=function(e){return i.length},a.write=function(e){for(var t=0;t<i.length;t+=1)e.put(i[t],8)},a},f=function(n){var r=t.MODE_KANJI,i=e.stringToBytesFuncs.SJIS;if(!i)throw`sjis not supported.`;(function(e,t){var n=i(e);if(n.length!=2||(n[0]<<8|n[1])!=t)throw`sjis not supported.`})(`友`,38726);var a=i(n),o={};return o.getMode=function(){return r},o.getLength=function(e){return~~(a.length/2)},o.write=function(e){for(var t=a,n=0;n+1<t.length;){var r=(255&t[n])<<8|255&t[n+1];if(33088<=r&&r<=40956)r-=33088;else if(57408<=r&&r<=60351)r-=49472;else throw`illegal char at `+(n+1)+`/`+r;r=(r>>>8&255)*192+(r&255),e.put(r,13),n+=2}if(n<t.length)throw`illegal char at `+(n+1)},o},p=function(){var e=[],t={};return t.writeByte=function(t){e.push(t&255)},t.writeShort=function(e){t.writeByte(e),t.writeByte(e>>>8)},t.writeBytes=function(e,n,r){n=n||0,r=r||e.length;for(var i=0;i<r;i+=1)t.writeByte(e[i+n])},t.writeString=function(e){for(var n=0;n<e.length;n+=1)t.writeByte(e.charCodeAt(n))},t.toByteArray=function(){return e},t.toString=function(){var t=``;t+=`[`;for(var n=0;n<e.length;n+=1)n>0&&(t+=`,`),t+=e[n];return t+=`]`,t},t},m=function(){var e=0,t=0,n=0,r=``,i={},a=function(e){r+=String.fromCharCode(o(e&63))},o=function(e){if(!(e<0)){if(e<26)return 65+e;if(e<52)return 97+(e-26);if(e<62)return 48+(e-52);if(e==62)return 43;if(e==63)return 47}throw`n:`+e};return i.writeByte=function(r){for(e=e<<8|r&255,t+=8,n+=1;t>=6;)a(e>>>t-6),t-=6},i.flush=function(){if(t>0&&(a(e<<6-t),e=0,t=0),n%3!=0)for(var i=3-n%3,o=0;o<i;o+=1)r+=`=`},i.toString=function(){return r},i},h=function(e){var t=e,n=0,r=0,i=0,a={};a.read=function(){for(;i<8;){if(n>=t.length){if(i==0)return-1;throw`unexpected end of file./`+i}var e=t.charAt(n);if(n+=1,e==`=`)return i=0,-1;e.match(/^\s$/)||(r=r<<6|o(e.charCodeAt(0)),i+=6)}var a=r>>>i-8&255;return i-=8,a};var o=function(e){if(65<=e&&e<=90)return e-65;if(97<=e&&e<=122)return e-97+26;if(48<=e&&e<=57)return e-48+52;if(e==43)return 62;if(e==47)return 63;throw`c:`+e};return a},g=function(e,t){var n=e,r=t,i=Array(e*t),a={};a.setPixel=function(e,t,r){i[t*n+e]=r},a.write=function(e){e.writeString(`GIF87a`),e.writeShort(n),e.writeShort(r),e.writeByte(128),e.writeByte(0),e.writeByte(0),e.writeByte(0),e.writeByte(0),e.writeByte(0),e.writeByte(255),e.writeByte(255),e.writeByte(255),e.writeString(`,`),e.writeShort(0),e.writeShort(0),e.writeShort(n),e.writeShort(r),e.writeByte(0);var t=2,i=s(t);e.writeByte(t);for(var a=0;i.length-a>255;)e.writeByte(255),e.writeBytes(i,a,255),a+=255;e.writeByte(i.length-a),e.writeBytes(i,a,i.length-a),e.writeByte(0),e.writeString(`;`)};var o=function(e){var t=e,n=0,r=0,i={};return i.write=function(e,i){if(e>>>i)throw`length over`;for(;n+i>=8;)t.writeByte(255&(e<<n|r)),i-=8-n,e>>>=8-n,r=0,n=0;r=e<<n|r,n+=i},i.flush=function(){n>0&&t.writeByte(r)},i},s=function(e){for(var t=1<<e,n=(1<<e)+1,r=e+1,a=c(),s=0;s<t;s+=1)a.add(String.fromCharCode(s));a.add(String.fromCharCode(t)),a.add(String.fromCharCode(n));var l=p(),u=o(l);u.write(t,r);var d=0,f=String.fromCharCode(i[d]);for(d+=1;d<i.length;){var m=String.fromCharCode(i[d]);d+=1,a.contains(f+m)?f+=m:(u.write(a.indexOf(f),r),a.size()<4095&&(a.size()==1<<r&&(r+=1),a.add(f+m)),f=m)}return u.write(a.indexOf(f),r),u.write(n,r),u.flush(),l.toByteArray()},c=function(){var e={},t=0,n={};return n.add=function(r){if(n.contains(r))throw`dup key:`+r;e[r]=t,t+=1},n.size=function(){return t},n.indexOf=function(t){return e[t]},n.contains=function(t){return e[t]!==void 0},n};return a},_=function(e,t,n){for(var r=g(e,t),i=0;i<t;i+=1)for(var a=0;a<e;a+=1)r.setPixel(a,i,n(a,i));var o=p();r.write(o);for(var s=m(),c=o.toByteArray(),l=0;l<c.length;l+=1)s.writeByte(c[l]);return s.flush(),`data:image/gif;base64,`+s};return e}();(function(){n.stringToBytesFuncs[`UTF-8`]=function(e){function t(e){for(var t=[],n=0;n<e.length;n++){var r=e.charCodeAt(n);r<128?t.push(r):r<2048?t.push(192|r>>6,128|r&63):r<55296||r>=57344?t.push(224|r>>12,128|r>>6&63,128|r&63):(n++,r=65536+((r&1023)<<10|e.charCodeAt(n)&1023),t.push(240|r>>18,128|r>>12&63,128|r>>6&63,128|r&63))}return t}return t(e)}})(),(function(n){typeof define==`function`&&define.amd?define([],n):typeof e==`object`&&(t.exports=n())})(function(){return n})}))(),1);function he(e){let t=(0,me.default)(0,`M`);return t.addData(e),t.make(),t.createSvgTag({cellSize:6,margin:4,scalable:!0})}let ge={front_capture:{title:`Front of your document`,body:`Place the front of your ID flat and fully inside the frame. We’ll capture it automatically.`},back_capture:{title:`Back of your document`,body:`Now turn your ID over and show the back, fully inside the frame.`},selfie_capture:{title:`Take a selfie`,body:`Look straight at the camera in good light and hold still — we’ll capture it automatically.`},active_liveness:{title:`Quick liveness check`,body:`Follow the on-screen prompts (such as turn your head, blink or smile). This confirms you’re really here.`}};function Z(e,t){let n=e.logo_url;if(!n||!t||!/^https?:\/\//i.test(t))return e;try{let r=new URL(t),i=new URL(n,r);return i.origin===r.origin?e:{...e,logo_url:`${r.origin}${i.pathname}${i.search}${i.hash}`}}catch{return e}}var _e=class{constructor(e){this.config=e,p(this,`client`,void 0),p(this,`view`,void 0),p(this,`win`,void 0),p(this,`nav`,void 0),p(this,`postToParent`,void 0),p(this,`scheduler`,void 0),p(this,`transientMs`,void 0),p(this,`pollMs`,void 0),p(this,`maxPolls`,void 0),p(this,`maxHandoffPolls`,void 0),p(this,`handoffConfig`,{enabled:!1,allow_desktop:!0,url:``}),p(this,`handoffReady`,!1),p(this,`handoffActive`,!1),p(this,`sessionId`,``),p(this,`realtimeConfig`,null),p(this,`rtClient`,null),p(this,`rtResolved`,!1),p(this,`lastStatus`,null),p(this,`listeners`,new Map),p(this,`stopWatch`,void 0),p(this,`step`,`welcome`),p(this,`documentType`,null),p(this,`country`,null),p(this,`selfie`,null),p(this,`livenessMode`,`passive`),p(this,`captureModel`,`passive`),p(this,`livenessChallenges`,[]),p(this,`addressData`,null),p(this,`addressCoords`,null),p(this,`workflow`,null),p(this,`result`,null),p(this,`terminalOnLoad`,!1),p(this,`instructionAcked`,!1),p(this,`pendingError`,null),p(this,`settled`,!1);let t=e.doc??globalThis.document,n=e.win??globalThis.window;if(!t||!n)throw Error(`The Arkyc widget must run in a browser environment.`);this.win=n,this.nav=e.nav??globalThis.navigator,this.client=new g({token:e.token,baseUrl:e.baseUrl,fetch:e.fetch});let r=new w(e.branding);this.view=new fe(t,r,this.handlers(),e.nav??globalThis.navigator,e.faceAnalyzer,e.faceTuning,e.documentAnalyzer,e.documentTuning),this.postToParent=e.postToParent??(!!n.parent&&n.parent!==n),this.scheduler=e.scheduler??((e,t)=>setTimeout(e,t)),this.transientMs=e.transientMs??700,this.pollMs=e.pollMs??1500,this.maxPolls=e.maxPolls??40,this.maxHandoffPolls=e.maxHandoffPolls??600}get element(){return this.view.element}start(){this.view.renderLoading(),this.run(()=>this.bootstrap())}destroy(){this.view.destroy()}close(){this.finishClose()}on(e,t){let n=this.listeners.get(e)??new Set;return n.add(t),this.listeners.set(e,n),()=>n.delete(t)}hasListener(e){if(this.config.onEvent)return!0;let t=this.listeners.get(e);return!!t&&t.size>0}dispatch(e,t){this.emit(e,t),this.post(`arkyc:event`,{name:e,data:t})}emit(e,t){if(!this.hasListener(e))return;try{this.config.onEvent?.({name:e,data:t})}catch{}let n=this.listeners.get(e);if(n)for(let e of[...n])try{e(t)}catch{}}observe(e){if(e===this.lastStatus)return;let t=this.lastStatus;this.lastStatus=e,this.dispatch(E.sessionTransition,{session_id:this.sessionId,status:e,previous_status:t})}async resolveRealtime(){if(this.rtResolved)return this.rtClient;this.rtResolved=!0;let e=this.realtimeConfig;if(!e||e.transport===`polling`||e.transport===`off`||e.transport===`memory`)return null;let t=this.config.realtimeFactory??v,n=(this.config.baseUrl??``).replace(/\/$/,``);try{this.rtClient=await t(e,{authEndpoint:`${n}/v1/client/realtime/auth`,token:this.config.token})}catch{this.rtClient=null}return this.rtClient}handlers(){return{onClose:()=>this.finishClose(),onStart:()=>void this.run(()=>this.enter(this.next())),onDocumentSelected:(e,t)=>{this.documentType=e,this.country=t||null,this.run(()=>this.enter(`front_capture`))},onImage:e=>void this.run(()=>this.onImage(e)),onActiveLiveness:(e,t,n)=>void this.run(async()=>{await this.client.submitLiveness({selfie:n,video:e,mode:`active`,challenges:t,signals:this.config.signals}),await this.enter(this.next())}),onAddress:e=>void this.run(()=>this.onAddress(e)),onShareLocation:()=>this.shareLocation(),onAcknowledge:()=>this.finishResult(),onUsePhone:()=>void this.run(()=>this.startHandoff()),onContinueHere:()=>{this.handoffActive=!1,this.stopWatch?.(),this.step=`welcome`,this.render()}}}async bootstrap(){if(this.settled)return;let e=await this.client.getSession();if(!this.settled){if(this.sessionId=e.id,this.realtimeConfig=e.realtime??null,this.workflow=e.workflow??null,this.config.branding==null&&e.branding&&this.view.applyBranding(Z(e.branding,this.config.baseUrl)),this.observe(e.status),M.isTerminal(e.status))return this.showTerminal(e.status);this.resolveLiveness(e),e.handoff&&(this.handoffConfig=e.handoff),this.config.handoff!==!1&&pe(this.nav)&&this.handoffConfig.enabled&&this.handoffTarget()?(this.handoffReady=!0,await this.startHandoff()):(this.step=`welcome`,this.render())}}handoffTarget(){return(this.config.handoffUrl??this.handoffConfig.url??``).trim()}async startHandoff(){let e=this.handoffTarget();e&&(this.handoffActive=!0,this.view.renderHandoff(he(this.buildHandoffUrl(e)),this.handoffConfig.allow_desktop),await this.pollHandoff())}buildHandoffUrl(e){let t=`${e}${e.includes(`?`)?`&`:`?`}token=${encodeURIComponent(this.config.token)}`,n=(this.config.baseUrl??``).trim();return/^https?:\/\//i.test(n)&&(t+=`&baseUrl=${encodeURIComponent(n)}`),t}async pollHandoff(){let e=await this.resolveRealtime();if(e){let t=await this.pushWatch(e,this.maxHandoffPolls,()=>this.handoffActive&&!this.settled);return t?(this.handoffActive=!1,this.showResult(t)):void 0}let t=0;for(let e=0;e<this.maxHandoffPolls&&this.handoffActive&&!this.settled;e++){if(await this.delay(this.pollMs),!this.handoffActive||this.settled)return;try{let e=await this.client.getSession();if(t=0,this.observe(e.status),M.isTerminal(e.status))return this.handoffActive=!1,this.showResult(e.status)}catch(e){if(e instanceof m&&e.status===401)return this.handoffActive=!1,this.showResult(`expired`);if(++t>=5)return}}}pushWatch(e,t,n){return new Promise(r=>{let i=!1,a=e=>{i||(i=!0,this.stopWatch=void 0,s(),r(e))},o=this.realtimeConfig.channel,s=e.subscribe(o,(e,t)=>{if(e!==E.sessionTransition)return;let n=t.status;this.observe(n),M.isTerminal(n)&&a(n)});this.stopWatch=()=>a(null),this.client.getSession().then(e=>{this.observe(e.status),M.isTerminal(e.status)&&a(e.status)}).catch(e=>{e instanceof m&&e.status===401&&a(`expired`)});let c=async e=>{if(!i){if(!n()||e>=t)return a(null);await this.delay(this.pollMs),c(e+1)}};c(0)})}resolveLiveness(e){this.livenessChallenges=e.liveness_challenges??[];let t=e.capture_model??`passive`;this.captureModel=t;let n=t===`active`||t===`both`;this.livenessMode=n&&(t===`active`||this.view.cameraSupported)?`active`:`passive`}async onImage(e){let t=this.config.signals;switch(this.step){case`front_capture`:return await this.client.submitDocumentFront({image:e,country:this.country,documentType:this.documentType,signals:t}),this.enter(this.next());case`back_capture`:return await this.client.submitDocumentBack({image:e,country:this.country,documentType:this.documentType}),this.enter(`ocr_processing`);case`selfie_capture`:return this.selfie=e,this.enter(`passive_liveness`)}}async enter(e){if(this.settled)return;this.step=e;let t=ge[e];if(t&&!this.instructionAcked){this.view.renderInstruction(e,t.title,t.body,t.cta??`Continue`,()=>{this.instructionAcked=!0,this.run(()=>this.enter(e))});return}switch(this.instructionAcked=!1,this.render(),e){case`ocr_processing`:return await this.delay(this.transientMs),this.enter(this.next());case`address_processing`:return await this.submitAddress(),this.enter(this.next());case`passive_liveness`:return await this.client.submitLiveness({selfie:this.selfie,signals:this.config.signals}),this.enter(this.next());case`face_match`:return await this.client.complete({signals:this.config.signals}),this.enter(this.next());case`processing`:return this.poll()}}async poll(){let e=await this.resolveRealtime();if(e){let t=await this.pushWatch(e,this.maxPolls,()=>!this.settled);return this.showResult(t??`requires_review`)}for(let e=0;e<this.maxPolls&&!this.settled;e++){let e=await this.client.getSession();if(this.observe(e.status),M.isTerminal(e.status))return this.showResult(e.status);await this.delay(this.pollMs)}this.showResult(`requires_review`)}showResult(e){this.result={status:e,decision:M.statusToDecision(e)},this.step=`result`,this.render()}showTerminal(e){this.result={status:e,decision:M.statusToDecision(e)},this.step=`result`,this.terminalOnLoad=!0,this.render()}render(){this.view.render({step:this.step,documentType:this.documentType,decision:this.result?.decision,status:this.result?.status,terminalNotice:this.terminalOnLoad,allowSkip:!!this.config.signals,livenessChallenges:this.livenessChallenges,requireLiveCamera:this.captureModel===`active`,strictCapture:this.livenessMode===`active`,handoffAvailable:this.handoffReady,addressMethods:A(this.workflow)?.methods??[]})}async onAddress(e){return this.addressData=e,e.useLocation?this.addressCoords||(this.addressCoords=await this.geolocate()):this.addressCoords=null,this.enter(`address_processing`)}async shareLocation(){return this.addressCoords=await this.geolocate(),!!this.addressCoords}async submitAddress(){let e=this.addressData;e&&await this.client.submitAddress({line1:e.line1,line2:e.line2,city:e.city,region:e.region,postalCode:e.postalCode,country:e.country,poa:e.poa,latitude:this.addressCoords?.latitude??null,longitude:this.addressCoords?.longitude??null,signals:this.config.signals})}geolocate(){let e=this.nav?.geolocation;return e?new Promise(t=>{e.getCurrentPosition(e=>t({latitude:e.coords.latitude,longitude:e.coords.longitude}),()=>t(null),{enableHighAccuracy:!1,timeout:1e4,maximumAge:6e4})}):Promise.resolve(null)}next(){return M.nextStep(this.step,{documentType:this.documentType,livenessMode:this.livenessMode,workflow:this.workflow})}delay(e){return new Promise(t=>this.scheduler(t,e))}async run(e){try{await e()}catch(e){this.fail(e)}}fail(e){if(this.settled)return;let t=e instanceof Error?e:Error(String(e));this.step=`result`,this.view.render({step:`result`,documentType:this.documentType,errorMessage:t.message}),this.pendingError=t}finishResult(){this.settled||(this.settled=!0,this.teardownRealtime(),this.pendingError?(this.post(`arkyc:error`,{error:ve(this.pendingError)}),this.dispatch(`error`,{message:this.pendingError.message}),this.config.onError?.(this.pendingError)):this.result&&(this.post(`arkyc:complete`,{payload:this.result}),this.dispatch(`complete`,this.result),this.config.onComplete?.(this.result)),this.destroy(),this.config.onSettle?.())}finishClose(){this.settled||(this.settled=!0,this.teardownRealtime(),this.post(`arkyc:close`,{}),this.dispatch(`close`),this.config.onClose?.(),this.destroy(),this.config.onSettle?.())}teardownRealtime(){this.stopWatch?.(),this.rtClient?.disconnect(),this.rtClient=null}post(e,t){if(this.postToParent)try{this.win.parent?.postMessage({type:e,...t},`*`)}catch{}}};function ve(e){return{message:e.message,name:e.name}}let ye=(e,t)=>{let n=typeof e==`string`?t.querySelector(e):e;if(!n)throw Error(`ArkycWidget.mount: container "${String(e)}" not found.`);return n},Q=(e,t)=>{if(!e.token)throw Error("ArkycWidget requires a client `token`.");return new _e({token:e.token,baseUrl:e.baseUrl,handoff:e.handoff,handoffUrl:e.handoffUrl,branding:e.branding,signals:e.signals,onComplete:e.onComplete,onError:e.onError,onClose:e.onClose,onEvent:e.onEvent,onSettle:t,fetch:e.fetch,doc:e.doc,win:e.win,nav:e.nav,faceAnalyzer:e.faceAnalyzer,faceTuning:e.faceTuning,documentAnalyzer:e.documentAnalyzer,documentTuning:e.documentTuning})};var $=class{constructor(e){this.controller=e}close(){return this.controller.close()}on(e,t){return this.controller.on(e,t)}},be=class e{static open(e){let t=e.doc??globalThis.document,n=t.createElement(`div`);n.setAttribute(`data-arkyc-widget`,``),n.style.cssText=e.fullscreen?`position:fixed;inset:0;z-index:2147483647;background:rgba(0,0,0,0.55);display:flex;align-items:center;justify-content:center;padding:0;`:`position:fixed;inset:0;z-index:2147483647;background:rgba(0,0,0,0.6);display:flex;align-items:center;justify-content:center;padding:16px;`;let r=Q(e,()=>n.remove());return r.element.classList.add(`arkyc-overlay`),e.fullscreen&&r.element.classList.add(`arkyc-fullscreen`),n.appendChild(r.element),(t.body??t.documentElement).appendChild(n),r.start(),new $(r)}static mount(e){let t=e.doc??globalThis.document,n=ye(e.container,t),r=Q(e,()=>r.element.remove());return n.appendChild(r.element),r.start(),new $(r)}static hosted(t={}){let n=t.win??globalThis.window,r=new URLSearchParams(n.location.search),i=t.token??r.get(`token`)??``,a=t.baseUrl??r.get(`baseUrl`)??void 0;return e.open({...t,token:i,baseUrl:a})}};return e.ArkycClient=g,e.ArkycWidget=be,e.Camera=T,e.DEFAULT_DOCUMENT_TUNING=B,e.DEFAULT_TUNING=L,e.Flow=M,e.PACKAGE_NAME=`@arkyc/widget`,e.Theme=w,e.VERSION=`0.1.0`,e.WidgetApiError=m,e.WidgetHandler=$,e.analyzeDocumentGray=H,e.createDefaultDocumentAnalyzer=W,e.createDefaultFaceAnalyzer=I,e.createWidgetRealtimeClient=v,e.documentGuidance=U,e.isDocumentReady=ae,e.isSelfieReady=z,e.makeChallengeDetector=R,e})({});
|
|
669
723
|
var ArkycWidget=Arkyc.ArkycWidget;var ArkycClient=Arkyc.ArkycClient;
|
|
670
724
|
//# sourceMappingURL=arkyc-widget.iife.global.js.map
|