@sekyro/web 0.1.0-rc.7 → 0.1.0-rc.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/CHANGELOG.md +87 -0
  2. package/LICENSE +25 -16
  3. package/README.md +3 -5
  4. package/THIRD-PARTY-NOTICES.txt +154 -0
  5. package/dist/background-monitor-A7FKJOAG.js +1 -0
  6. package/dist/capture-session-doc-YBE3UMJJ.js +1 -0
  7. package/dist/{capture-session-v3-Okq0EQHG.d.ts → capture-session-v3-CQK-G-qX.d.ts} +72 -3
  8. package/dist/{capture-session-v3-UQU_WjO2.d.cts → capture-session-v3-Dvob-uH2.d.cts} +72 -3
  9. package/dist/chunk-4RS2YIL4.js +1 -0
  10. package/dist/chunk-7V2M6Y2W.js +1 -0
  11. package/dist/chunk-7ZCZY3ZP.js +1 -0
  12. package/dist/chunk-A3FUGHAH.js +2 -0
  13. package/dist/chunk-BPE5NSQ2.js +1 -0
  14. package/dist/chunk-CJHMFPL6.js +1 -0
  15. package/dist/chunk-DFTCAWMP.js +1 -0
  16. package/dist/chunk-DK5YPBDQ.js +1 -0
  17. package/dist/chunk-DQWW4OCK.js +1 -0
  18. package/dist/chunk-FHJ7HO3M.js +1 -0
  19. package/dist/chunk-G6LKLN4U.js +1 -0
  20. package/dist/chunk-GI3UFGRQ.js +1 -0
  21. package/dist/{chunk-IYUOYINS.js → chunk-LQ7C44JG.js} +1 -1
  22. package/dist/chunk-M43ET4NJ.js +1 -0
  23. package/dist/chunk-MXWLCDFX.js +1 -0
  24. package/dist/chunk-MY6EXEL2.js +1 -0
  25. package/dist/chunk-O5WKNZ2C.js +1 -0
  26. package/dist/chunk-OKWG3PVH.js +1 -0
  27. package/dist/chunk-POIQGEZM.js +1 -0
  28. package/dist/chunk-RI3E7GBN.js +1 -0
  29. package/dist/chunk-RNRFHUJA.js +1 -0
  30. package/dist/chunk-RVHAKRAI.js +1 -0
  31. package/dist/chunk-SMKCBUJL.js +1 -0
  32. package/dist/chunk-TDLIXFDT.js +1 -0
  33. package/dist/chunk-XLN5OT25.js +1 -0
  34. package/dist/chunk-YDQBVWXG.js +1 -0
  35. package/dist/chunk-YPG7CB4O.js +1 -0
  36. package/dist/client/index.cjs +1 -1
  37. package/dist/client/index.d.cts +13 -3
  38. package/dist/client/index.d.ts +13 -3
  39. package/dist/client/index.js +1 -1
  40. package/dist/core/index.cjs +1 -1
  41. package/dist/core/index.d.cts +3 -3
  42. package/dist/core/index.d.ts +3 -3
  43. package/dist/core/index.js +1 -1
  44. package/dist/core/ocr/worker.bundle.js +42 -0
  45. package/dist/core/ocr/worker.cjs +42 -0
  46. package/dist/core/ocr/worker.d.cts +84 -0
  47. package/dist/core/ocr/worker.d.ts +84 -0
  48. package/dist/core/ocr/worker.js +41 -0
  49. package/dist/core/v3/detect-worker.cjs +1 -1
  50. package/dist/core/v3/detect-worker.d.cts +1 -1
  51. package/dist/core/v3/detect-worker.d.ts +1 -1
  52. package/dist/core/v3/detect-worker.js +1 -1
  53. package/dist/create-document-capture-T4APHJMY.js +1 -0
  54. package/dist/create-portrait-capture-B57GE5FU.js +1 -0
  55. package/dist/create-verification-C0AVIcVW.d.ts +2787 -0
  56. package/dist/create-verification-DoFpgzok.d.cts +2787 -0
  57. package/dist/{detect-worker-CKXHlXx9.d.cts → detect-worker-DclNxkZT.d.cts} +6 -0
  58. package/dist/{detect-worker-CKXHlXx9.d.ts → detect-worker-DclNxkZT.d.ts} +6 -0
  59. package/dist/detector-scanic-YCDNLCGV.js +1 -0
  60. package/dist/icao-gate-D8qm1O2t.d.cts +1655 -0
  61. package/dist/icao-gate-D8qm1O2t.d.ts +1655 -0
  62. package/dist/icao-gate-PWBMKRGC.js +1 -0
  63. package/dist/icao-tuning-4GGVX6B4.js +1 -0
  64. package/dist/index.cjs +1 -1
  65. package/dist/index.d.cts +52 -6
  66. package/dist/index.d.ts +52 -6
  67. package/dist/index.js +1 -1
  68. package/dist/internal/index.cjs +1 -1
  69. package/dist/internal/index.d.cts +345 -308
  70. package/dist/internal/index.d.ts +345 -308
  71. package/dist/internal/index.js +1 -1
  72. package/dist/keyframe-rank-YAJLYJYF.js +1 -0
  73. package/dist/landmarker-KB7LVXAU.js +1 -0
  74. package/dist/mrz-band-VYHOTDHY.js +1 -0
  75. package/dist/plan-runner-UBK4B4CG.js +1 -0
  76. package/dist/segmenter-USLNBX65.js +1 -0
  77. package/dist/turnstile-FATNZ4AG.js +1 -0
  78. package/package.json +22 -4
  79. package/sbom.cdx.json +8 -8
  80. package/dist/chunk-B45J4KC3.js +0 -1
  81. package/dist/chunk-BMA36W2W.js +0 -1
  82. package/dist/chunk-P7ECRN47.js +0 -1
  83. package/dist/chunk-YOB4ZTYN.js +0 -1
  84. package/dist/chunk-YQBK6OIM.js +0 -1
  85. package/dist/create-verification-C2JhOO6Y.d.cts +0 -533
  86. package/dist/create-verification-CGazwtAh.d.ts +0 -533
  87. package/dist/detector-scanic-VQFFXKTL.js +0 -1
  88. package/dist/hosted-client-kBeq-mnJ.d.cts +0 -602
  89. package/dist/hosted-client-kBeq-mnJ.d.ts +0 -602
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";var Xt=Object.create;var ne=Object.defineProperty;var $t=Object.getOwnPropertyDescriptor;var Zt=Object.getOwnPropertyNames;var jt=Object.getPrototypeOf,Qt=Object.prototype.hasOwnProperty;var Jt=(t,e)=>{for(var n in e)ne(t,n,{get:e[n],enumerable:!0})},$e=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Zt(e))!Qt.call(t,i)&&i!==n&&ne(t,i,{get:()=>e[i],enumerable:!(r=$t(e,i))||r.enumerable});return t};var en=(t,e,n)=>(n=t!=null?Xt(jt(t)):{},$e(e||!t||!t.__esModule?ne(n,"default",{value:t,enumerable:!0}):n,t)),tn=t=>$e(ne({},"__esModule",{value:!0}),t);var kr={};Jt(kr,{DEFAULT_API_ORIGIN:()=>Ke,HostedApiError:()=>_,KNOWN_CODES:()=>He,SEKYRO_EVENTS:()=>Be,createLivenessCapture:()=>Mt,createVerification:()=>Kt,getLivenessAssetsStatus:()=>wt,hasMultipleCameras:()=>Dt,isKnownCode:()=>Pt,openHosted:()=>Bt,preloadLivenessAssets:()=>St,queryCameraPermission:()=>At,releaseLivenessAssets:()=>Et,subscribeCameraPermission:()=>Ot,subscribeLivenessAssets:()=>_t});module.exports=tn(kr);function Ze(t,e){return{video:{width:{ideal:1280,max:1280},height:{ideal:720,max:720},facingMode:e,frameRate:{ideal:24,max:30}},audio:!1}}function N(){return typeof window>"u"||typeof navigator>"u"?!1:window.innerWidth<=768||/Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(String(navigator.userAgent??""))}var nn=["video/mp4;codecs=avc1.42E01E,mp4a.40.2","video/mp4;codecs=avc1.42E01E","video/mp4","video/webm;codecs=vp9,opus","video/webm;codecs=vp9","video/webm;codecs=vp8,opus","video/webm;codecs=vp8","video/webm"];function je(){let t=globalThis.MediaRecorder;return!t||typeof t.isTypeSupported!="function"?"":nn.find(e=>t.isTypeSupported(e))??""}var Qe="video/webm";function Je(t){if(t instanceof TypeError)return"insecure";switch(t?.name??""){case"NotAllowedError":case"PermissionDeniedError":return"permission";case"NotFoundError":case"DevicesNotFoundError":return"notfound";case"NotReadableError":case"TrackStartError":return"inuse";case"OverconstrainedError":case"ConstraintNotSatisfiedError":return"overconstrained";default:return"generic"}}function et(){let t=globalThis;if(typeof t.window<"u"&&t.window.isSecureContext===!1)return"INSECURE_CONTEXT";let e=t.navigator?.mediaDevices;return!e||typeof e.getUserMedia!="function"?"UNSUPPORTED":"OK"}function tt(){let t=globalThis.MediaRecorder;return typeof t<"u"&&typeof t.isTypeSupported=="function"}var Te=8*1024*1024;function re(t){return t.size>Te}var nt="0.1.0-rc.7";var rt="sekyro.did",it;function st(){let t=globalThis.crypto;try{if(typeof t?.randomUUID=="function")return t.randomUUID()}catch{}try{if(typeof t?.getRandomValues=="function"){let e=t.getRandomValues(new Uint8Array(16));return Array.from(e,n=>n.toString(16).padStart(2,"0")).join("")}}catch{}}function rn(){try{let t=localStorage.getItem(rt);if(t)return t;let e=st();return e!==void 0&&localStorage.setItem(rt,e),e}catch{return it??(it=st()),it}}async function sn(){let t=globalThis.crypto?.subtle;if(!t)return"";let e=navigator,n=JSON.stringify([e.userAgent,e.platform,e.hardwareConcurrency??null,e.deviceMemory??null,e.maxTouchPoints??0,screen.width,screen.height,screen.colorDepth,globalThis.devicePixelRatio??1,Intl.DateTimeFormat().resolvedOptions().timeZone,e.languages?.join(",")??e.language]),r=await t.digest("SHA-256",new TextEncoder().encode(n));return Array.from(new Uint8Array(r),i=>i.toString(16).padStart(2,"0")).join("").slice(0,32)}function on(t){let e=new TextEncoder().encode(t),n="";for(let r of e)n+=String.fromCharCode(r);return btoa(n).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function an(t){let e,n;return{timezone(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone?.slice(0,64)||void 0}catch{return}},noteCameraLabel(r){r&&(e=r.slice(0,128))},async deviceHeader(){try{n??(n=sn().catch(()=>""));let r=[];navigator.webdriver&&r.push("webdriver"),/HeadlessChrome/.test(navigator.userAgent)&&r.push("headless");let i=await n,s=rn(),o={v:1,platform:"web",sdk:t.sdk.slice(0,64),ids:[...s?[{kind:"web_local",value:s.slice(0,128)}]:[],...i?[{kind:"web_fp",value:i}]:[]],screen:{w:screen.width,h:screen.height,dpr:globalThis.devicePixelRatio??1},...e?{cameraLabel:e}:{},...r.length?{signals:r}:{}};return on(JSON.stringify(o))}catch{return}}}}var ke=Symbol.for("sekyro.web.clientContext"),Re=globalThis,ie=Re[ke]??(Re[ke]=an({sdk:`@sekyro/web@${nt}`}));function ot(t){try{let e=t.getVideoTracks?.()[0];e&&ie.noteCameraLabel(e.label)}catch{}}var cn=2500,un=1e3,ln=1500,at=25e5,A=class extends Error{constructor(e,n){super(n??e),this.kind=e}},se=class{constructor(){this.recorder=null;this.stream=null;this.chunks=[];this.bytes=0;this.hardStopTimer=null;this.graceTimer=null;this.settled=!1}clearTimers(){this.hardStopTimer&&clearTimeout(this.hardStopTimer),this.graceTimer&&clearTimeout(this.graceTimer),this.hardStopTimer=null,this.graceTimer=null}record(e,n){if(this.recorder&&!this.settled)return Promise.reject(new A("generic","record() called while a recording is in flight \u2014 ClipRecorder handles one recording at a time"));this.recorder=null,this.clearTimers(),this.chunks=[],this.bytes=0,this.settled=!1,this.stream=e;let r=je();return new Promise((i,s)=>{let o;try{o=new MediaRecorder(e,r?{mimeType:r,videoBitsPerSecond:at}:{videoBitsPerSecond:at})}catch{try{o=new MediaRecorder(e)}catch{s(new A("unsupported"));return}}this.recorder=o;let a=l=>{this.settled||(this.settled=!0,this.clearTimers(),l())},c=()=>a(()=>{let l=o.mimeType||r||Qe,u=new Blob(this.chunks,{type:l});if(re(u)){s(new A("cliptoolarge"));return}i({blob:u,mimeType:l})});o.ondataavailable=l=>{l.data&&l.data.size&&(this.chunks.push(l.data),this.bytes+=l.data.size,this.bytes>Te&&a(()=>{try{o.state!=="inactive"&&o.stop()}catch{}s(new A("cliptoolarge"))}))},o.onstop=c,o.onerror=()=>a(()=>s(new A("generic")));try{o.start(un)}catch{a(()=>s(new A("generic")));return}this.hardStopTimer=setTimeout(()=>{if(this.settled||n?.(),o.state!=="inactive"){try{o.stop()}catch{c()}this.graceTimer=setTimeout(c,ln)}else c()},cn)})}stop(e){this.clearTimers();let n=this.recorder;if(n&&n.state!=="inactive")try{n.stop()}catch{}this.recorder=null,(e??this.stream)?.getTracks().forEach(i=>i.stop()),this.stream=null}};function ct(t,e,n=.92){return new Promise((r,i)=>{let s=t.videoWidth,o=t.videoHeight;if(!s||!o){i(new Error("video-not-ready"));return}let a=e.getContext("2d");if(!a){i(new Error("no-2d-context"));return}e.width=s,e.height=o,a.scale(-1,1),a.drawImage(t,-s,0),e.toBlob(c=>c?r(c):i(new Error("empty-keyframe")),"image/jpeg",n)})}var ut=1e4,oe=class t{constructor(e,n){this.tier="blaze";this.inner=e,n!==void 0&&(this.fallbackReason=n)}static async create(e,n){let r=await import("@mediapipe/tasks-vision"),i=await r.FilesetResolver.forVisionTasks(e),s=await r.FaceDetector.createFromOptions(i,{baseOptions:{modelAssetPath:`${e}/blaze_face_short_range.tflite`,delegate:"CPU"},runningMode:"IMAGE"});return new t(s,n)}async detect(e,n,r){let i;try{i=this.inner.detect(e).detections}catch{return null}let s=dn(i);if(s?.boundingBox===void 0)return null;let o=W(e),a=pn(s.keypoints,o),c={box:{x:s.boundingBox.originX,y:s.boundingBox.originY,width:s.boundingBox.width,height:s.boundingBox.height},...a!==void 0?{eyes:a}:{},score:s.categories[0]?.score??0};return ae(c,e,n,r)}destroy(){try{this.inner.close()}catch{}}};function dn(t){let e,n=-1;for(let r of t){let i=r.categories[0]?.score??0;i>n&&(e=r,n=i)}return e}function pn(t,e){let n=t?.[0],r=t?.[1];if(n===void 0||r===void 0)return;let i=a=>({x:a.x*e.width,y:a.y*e.height}),[s,o]=[i(n),i(r)];return s.x<=o.x?{left:s,right:o}:{left:o,right:s}}function mn(){if(typeof OffscreenCanvas=="function")return new OffscreenCanvas(2,2);let t=document.createElement("canvas");return t.width=2,t.height=2,t}async function lt(){let t=globalThis.FaceDetector;if(typeof t!="function")return{ok:!1,reason:"unsupported"};try{let e=new t({fastMode:!0,maxDetectedFaces:1});return await e.detect(mn()),{ok:!0,instance:e}}catch(e){return{ok:!1,reason:`smoke_failed:${e instanceof Error?e.message:String(e)}`}}}var ce=class{constructor(e,n){this.tier="native";this.inner=e,n!==void 0&&(this.fallbackReason=n)}async detect(e,n,r){let i;try{i=await this.inner.detect(e)}catch{return null}let s=i[0];if(s===void 0)return null;let o=fn(s.landmarks),a={box:{x:s.boundingBox.x,y:s.boundingBox.y,width:s.boundingBox.width,height:s.boundingBox.height},...o!==void 0?{eyes:o}:{},score:1};return ae(a,e,n,r)}destroy(){}};function fn(t){if(t===void 0)return;let e=t.filter(i=>i.type==="eye").map(i=>i.locations[0]).filter(i=>i!==void 0),[n,r]=e;if(!(n===void 0||r===void 0))return n.x<=r.x?{left:n,right:r}:{left:r,right:n}}var Me="/models-v3",hn=["native","blaze"],G=class extends Error{constructor(e){super(`no detector tier available (${e})`),this.name="DetectorLadderError",this.fallbackReason=e}};function W(t){let e=t;if(typeof e.videoWidth=="number"&&e.videoWidth>0)return{width:e.videoWidth,height:e.videoHeight??0};if(typeof e.naturalWidth=="number"&&e.naturalWidth>0)return{width:e.naturalWidth,height:e.naturalHeight??0};let n=typeof e.width=="number"?e.width:0,r=typeof e.height=="number"?e.height:0;return{width:n,height:r}}function ae(t,e,n,r){let i=W(e),s=i.width>0?n/i.width:1,o=i.height>0?r/i.height:1,a=c=>({x:c.x*s,y:c.y*o});return{box:{x:t.box.x*s,y:t.box.y*o,width:t.box.width*s,height:t.box.height*o},...t.eyes!==void 0?{eyes:{left:a(t.eyes.left),right:a(t.eyes.right)}}:{},score:t.score}}function yn(t){return t instanceof Error?t.message:String(t)}async function R(t){let e=t.preferred??hn,n=[];for(let r of e){if(r==="native"){let i=await lt();if(i.ok)return new ce(i.instance,xe(n));n.push(`native:${i.reason}`);continue}try{return await vn(oe.create(t.v3AssetBaseUrl??Me,xe(n)),t.blazeInitTimeoutMs??ut)}catch(i){n.push(i instanceof ue?"blaze:blaze_init_timeout":`blaze:${yn(i)}`)}}throw new G(xe(n)??"no_tier_available")}function xe(t){return t.length>0?t.join("; "):void 0}var ue=class extends Error{};function vn(t,e){return new Promise((n,r)=>{let i=setTimeout(()=>{r(new ue(`init exceeded ${e}ms`)),t.then(s=>s.destroy(),()=>{})},e);t.then(s=>{clearTimeout(i),n(s)},s=>{clearTimeout(i),r(s)})})}var L=1;function dt(){return typeof OffscreenCanvas=="function"&&typeof createImageBitmap=="function"&&typeof Worker=="function"}function gn(t,e={}){let n=e.createDetector??R,r=null;t.onmessage=i=>{let s=i.data;if(s.v!==L){s.bitmap?.close?.();return}if(s.type==="init"){n(s.options).then(o=>{r=o;let a={v:L,type:"ready",tier:o.tier,...o.fallbackReason!==void 0?{fallbackReason:o.fallbackReason}:{}};t.postMessage(a)});return}if(s.type==="detect"){let o=a=>{let c={v:L,type:"result",id:s.id,observation:a};t.postMessage(c),s.bitmap.close?.()};if(r===null){o(null);return}r.detect(s.bitmap,s.streamWidth,s.streamHeight).then(o,()=>o(null))}}}typeof self<"u"&&typeof self.importScripts=="function"&&gn(self);var le=class t{constructor(e,n){this.pending=new Map;this.nextId=1;this.worker=e,this.tier=n.tier,n.fallbackReason!==void 0&&(this.fallbackReason=n.fallbackReason),e.addEventListener("message",r=>{let i=r.data;if(i.v!==L||i.type!=="result")return;let s=this.pending.get(i.id);this.pending.delete(i.id),s?.(i.observation)})}static create(e,n,r=1e4){return new Promise((i,s)=>{let o=setTimeout(()=>{e.removeEventListener("message",a),e.terminate(),s(new Error(`worker detector not ready within ${r}ms`))},r),a=l=>{let u=l.data;u.v!==L||u.type!=="ready"||(clearTimeout(o),e.removeEventListener("message",a),i(new t(e,u)))};e.addEventListener("message",a);let c={v:L,type:"init",options:n};e.postMessage(c)})}async detect(e,n,r){let i;try{typeof ImageBitmap<"u"&&e instanceof ImageBitmap?i=e:typeof createImageBitmap=="function"?i=await createImageBitmap(e):i=e}catch{return null}let s=this.nextId;return this.nextId+=1,new Promise(o=>{this.pending.set(s,o);let a={v:L,type:"detect",id:s,bitmap:i,streamWidth:n,streamHeight:r};this.worker.postMessage(a,[i])})}destroy(){for(let e of this.pending.values())e(null);this.pending.clear(),this.worker.terminate()}};var bn=Object.freeze({LOW:Object.freeze({cadenceHz:5,inputWidth:128,animations:"reduced"}),MID:Object.freeze({cadenceHz:8,inputWidth:160,animations:"full"}),HIGH:Object.freeze({cadenceHz:10,inputWidth:192,animations:"full"})}),Sn=new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11]);function pt(){let t=typeof navigator>"u"?void 0:navigator,e=!1;try{e=typeof WebAssembly<"u"&&WebAssembly.validate(Sn)}catch{e=!1}return{cores:t?.hardwareConcurrency??2,memGB:t?.deviceMemory??null,simd:e}}function mt(t){let e=t.memGB??4;return t.cores<4||e<3?"LOW":t.cores>=8&&e>=6?"HIGH":"MID"}var Ie=["LOW","MID","HIGH"],de=class{constructor(e){this.samples=[];this.adjusted=!1;this.current=e}get deviceClass(){return this.current}get profile(){return bn[this.current]}record(e){if(this.adjusted||this.samples.length>=10)return this.current;if(this.samples.push(e),this.samples.length<10)return this.current;this.adjusted=!0;let n=this.samples.reduce((r,i)=>r+i,0)/this.samples.length;if(n>70)this.current="LOW";else if(n<25){let r=Ie.indexOf(this.current);this.current=Ie[Math.min(Ie.length-1,r+1)]??this.current}return this.current}};var pe=class{constructor(e){this.timer=null;this.frameCallbackId=null;this.running=!1;this.busy=!1;this.lastRunAt=Number.NEGATIVE_INFINITY;this.degradeCount=0;this.durations=[];this.options=e,this.periodMs=1e3/e.cadenceHz}start(){if(this.running)return;this.running=!0;let e=this.options.video;if(typeof e?.requestVideoFrameCallback=="function"){let n=()=>{this.running&&(this.frameCallbackId=e.requestVideoFrameCallback?.(()=>{this.frameCallbackId=null,this.now()-this.lastRunAt>=this.periodMs&&this.tick(),n()}))};n();return}this.timer=setInterval(()=>this.tick(),this.periodMs)}stop(){this.running=!1,this.timer!==null&&(clearInterval(this.timer),this.timer=null),this.frameCallbackId!==null&&(this.options.video?.cancelVideoFrameCallback?.(this.frameCallbackId),this.frameCallbackId=null)}stats(){let e=this.durations.length===0?0:this.durations.reduce((n,r)=>n+r,0)/this.durations.length;return{degradeCount:this.degradeCount,meanDetectMs:e}}now(){return this.options.now?.()??performance.now()}tick(){if(!this.running)return;if(this.busy){this.degradeCount+=1;return}this.busy=!0,this.lastRunAt=this.now();let e=this.now();this.options.run().catch(()=>{}).finally(()=>{this.busy=!1,this.durations.push(this.now()-e),this.durations.length>20&&this.durations.shift()})}};var me=[100,190],wn=64;function ft(t,e){return .299*(t[e]??0)+.587*(t[e+1]??0)+.114*(t[e+2]??0)}function Ae(t){let{data:e,width:n,height:r}=t,i=n*r;if(i===0)return 0;let s=0;for(let o=0;o<i;o+=1)s+=ft(e,o*4);return s/i}function Oe(t){let{data:e,width:n,height:r}=t;if(n<3||r<3)return 0;let i=new Float32Array(n*r);for(let u=0;u<i.length;u+=1)i[u]=ft(e,u*4);let s=0,o=0,a=0;for(let u=1;u<r-1;u+=1)for(let p=1;p<n-1;p+=1){let f=u*n+p,v=(i[f-n]??0)+(i[f-1]??0)+(i[f+1]??0)+(i[f+n]??0)-4*(i[f]??0);s+=v,o+=v*v,a+=1}if(a===0)return 0;let c=s/a,l=o/a-c*c;return Math.min(1,Math.max(0,l)/180)}function ht(t){let e=Ae(t),[n,r]=me,i=e<n?n-e:e>r?e-r:0;return Math.max(0,1-i/wn)}var _n=Object.freeze({Q_GOOD:.6,RISE_PER_S:.9,FALL_PER_S:.25,CENTER_FALLOFF_IOD_MULTIPLE:1.35,BOX_EYE_OFFSET_FACTOR:.12,IOD_BOX_PROXY_FACTOR:.42,SIZE_IDEAL_MIN:.12,SIZE_IDEAL_MAX:.3,SIZE_HARD_MIN:.08,SIZE_HARD_MAX:.45,ROLL_MAX_DEG:25,MOTION_VELOCITY_IOD_PER_S:.5,MOTION_TAU_S:.4,MOTION_DEADBAND_IOD_PER_S:.1,READY_WINDOW_MS:500,GUIDE_SIZE:.6,GUIDE_CENTERING:.6,GUIDE_POSE:.6,GUIDE_EXPOSURE:.6,GUIDE_SHARPNESS:.35,GUIDE_MOTION:.5}),U=t=>Math.min(1,Math.max(0,t)),fe=class{constructor(e={}){this.p=0;this.lastTickAt=null;this.lastCenter=null;this.velocityEma=0;this.qWindow=[];this.lastSizeDirection="ideal";this.t={..._n,...e}}reset(){this.p=0,this.lastTickAt=null,this.lastCenter=null,this.velocityEma=0,this.qWindow=[],this.lastSizeDirection="ideal"}tick(e){let{observation:n,quality:r,timestampMs:i}=e,s=this.lastTickAt===null?0:Math.max(0,(i-this.lastTickAt)/1e3);this.lastTickAt=i;let o={presence:0,centering:0,size:0,pose:0,sharpness:U(r.sharpness),exposure:U(r.exposure),motion:1};if(n!==null){o.presence=1;let u=this.geometryOf(n,e);o.centering=u.centering,o.size=u.size,o.pose=u.pose,o.motion=this.motionOf(u.center,u.iod,i)}else this.lastCenter=null,this.velocityEma=0;let a=Math.min(o.presence,o.centering,o.size,o.pose,o.sharpness,o.exposure,o.motion);this.p=U(this.p+(a>=this.t.Q_GOOD?this.t.RISE_PER_S*a:-this.t.FALL_PER_S*(1-a))*s),this.qWindow.push({at:i,q:a}),this.qWindow=this.qWindow.filter(u=>u.at>=i-this.t.READY_WINDOW_MS);let c=this.qWindow.map(u=>u.q);if(c.length>=3){let u=Math.min(...c),p=c.indexOf(u);c=c.filter((f,v)=>v!==p)}let l=this.p>=1&&c.every(u=>u>=this.t.Q_GOOD);return{at:i,q:a,p:this.p,factors:o,guidanceKey:this.guidanceOf(o,r,a),ready:l,accepted:a>=this.t.Q_GOOD}}geometryOf(e,n){let{box:r,eyes:i}=e,s={x:n.frameWidth/2,y:n.frameHeight/2},o=Math.min(n.frameWidth,n.frameHeight),a=i!==void 0?{x:(i.left.x+i.right.x)/2,y:(i.left.y+i.right.y)/2}:{x:r.x+r.width/2,y:r.y+r.height/2-this.t.BOX_EYE_OFFSET_FACTOR*r.height},c=i!==void 0?Math.hypot(i.right.x-i.left.x,i.right.y-i.left.y):this.t.IOD_BOX_PROXY_FACTOR*r.width,l=Math.hypot(a.x-s.x,a.y-s.y),u=c<=0?0:1-U(l/(this.t.CENTER_FALLOFF_IOD_MULTIPLE*c)),p=o>0?c/o:0;this.lastSizeDirection=p<this.t.SIZE_IDEAL_MIN?"far":p>this.t.SIZE_IDEAL_MAX?"close":"ideal";let f;p<this.t.SIZE_HARD_MIN||p>this.t.SIZE_HARD_MAX?f=0:p<this.t.SIZE_IDEAL_MIN?f=(p-this.t.SIZE_HARD_MIN)/(this.t.SIZE_IDEAL_MIN-this.t.SIZE_HARD_MIN):p>this.t.SIZE_IDEAL_MAX?f=(this.t.SIZE_HARD_MAX-p)/(this.t.SIZE_HARD_MAX-this.t.SIZE_IDEAL_MAX):f=1;let v=1;if(i!==void 0){let y=Math.abs(Math.atan2(i.right.y-i.left.y,i.right.x-i.left.x))*180/Math.PI;v=1-U(y/this.t.ROLL_MAX_DEG)}return{center:a,iod:c,centering:u,size:f,pose:v}}motionOf(e,n,r){let i=this.lastCenter;if(this.lastCenter={...e,at:r},i===null||n<=0)return 1;let s=(r-i.at)/1e3;if(s<=0)return 1;let o=Math.hypot(e.x-i.x,e.y-i.y)/n/s;o<=this.t.MOTION_DEADBAND_IOD_PER_S&&(o=0);let a=1-Math.exp(-s/this.t.MOTION_TAU_S);return this.velocityEma=a*o+(1-a)*this.velocityEma,1-U(this.velocityEma/this.t.MOTION_VELOCITY_IOD_PER_S)}guidanceOf(e,n,r){if(e.presence<=0)return"fcv3.no_face";if(e.size<this.t.GUIDE_SIZE)return this.sizeGuidance();if(e.centering<this.t.GUIDE_CENTERING)return"fcv3.center_face";if(e.pose<this.t.GUIDE_POSE)return"fcv3.straighten";if(e.exposure<this.t.GUIDE_EXPOSURE)return this.exposureGuidance(n);if(e.sharpness<this.t.GUIDE_SHARPNESS)return"fcv3.steady_camera";if(e.motion<this.t.GUIDE_MOTION)return"fcv3.hold_still";if(r<this.t.Q_GOOD){let i=[["size",this.sizeGuidance()],["centering","fcv3.center_face"],["pose","fcv3.straighten"],["exposure",this.exposureGuidance(n)],["sharpness","fcv3.steady_camera"],["motion","fcv3.hold_still"]],s=i[0];for(let o of i)e[o[0]]<e[s[0]]&&(s=o);return s[1]}return"fcv3.hold_still"}sizeGuidance(){return this.lastSizeDirection==="far"?"fcv3.come_closer":"fcv3.move_back"}exposureGuidance(e){let n=(me[0]+me[1])/2;return e.meanLuma<n?"fcv3.more_light":"fcv3.too_bright"}};var De=4,En=600,yt={sharpness:1,exposure:1,meanLuma:128},he=class{constructor(e){this.handlers=new Map;this.stateValue="idle";this.attempt=0;this.stream=null;this.detector=null;this.scheduler=null;this.gate=null;this.profiler=null;this.lastGuidanceKey=null;this.positioningStartedAt=0;this.cameraRequestedAt=null;this.cameraReadyAt=null;this.faceAcquiredAt=null;this.captureCompleteAt=null;this.fired=!1;this.carriedDegrade=0;this.carriedMeans=[];this.snapshotCanvas=null;this.options=e,this.facing=e.facingMode??"user"}get state(){return this.stateValue}on(e,n){let r=this.handlers.get(e);return r||(r=new Set,this.handlers.set(e,r)),r.add(n),()=>r?.delete(n)}emit(e,n){for(let r of[...this.handlers.get(e)??[]])r(n)}async start(e={}){e.facingMode!==void 0&&(this.facing=e.facingMode),this.attempt+=1,await this.run(this.attempt)}get facingMode(){return this.facing}retry(){this.teardownAttempt(),this.start()}switchCamera(){this.facing=this.facing==="user"?"environment":"user",this.teardownAttempt(),this.start()}destroy(){this.attempt+=1,this.teardownAttempt(),this.detector?.destroy(),this.detector=null,this.options.video.srcObject=null}async run(e){let{options:n}=this;this.fired=!1,this.lastGuidanceKey=null,this.carriedDegrade=0,this.carriedMeans=[],this.cameraRequestedAt=null,this.cameraReadyAt=null,this.faceAcquiredAt=null,this.captureCompleteAt=null,this.setState("preflight");let r=et();if(r!=="OK"){this.fail(r==="INSECURE_CONTEXT"?"insecure":"unsupported");return}this.setState("acquiring");let i=n.getUserMedia??(c=>navigator.mediaDevices.getUserMedia(c)),s;this.cameraRequestedAt=this.now();try{s=await i(Ze(N(),this.facing))}catch(c){if(e!==this.attempt)return;this.fail(Je(c));return}if(ot(s),e!==this.attempt){for(let c of s.getTracks())c.stop();return}if(this.stream=s,n.video.srcObject=s,await n.video.play().catch(()=>{}),e!==this.attempt)return;if(this.cameraReadyAt=this.now(),this.detector===null){let c={...n.v3AssetBaseUrl!==void 0?{v3AssetBaseUrl:n.v3AssetBaseUrl}:{}},l=n.createDetector??(n.createWorker!==void 0&&dt()?async()=>{try{return await le.create(n.createWorker(),c)}catch{return R(c)}}:()=>R(c)),u;try{u=await l()}catch(p){e===this.attempt&&this.fail("models",p instanceof G?p.fallbackReason:Tn(p));return}if(e!==this.attempt){u.destroy();return}this.detector=u,this.options.telemetry?.({type:"detector",tier:u.tier,...u.fallbackReason!==void 0?{fallbackReason:u.fallbackReason}:{}})}let o=pt(),a=n.deviceClass??mt(o);this.profiler=new de(a),this.options.telemetry?.({type:"profile",staticClass:a,activeClass:this.profiler.deviceClass,simd:o.simd}),this.gate=new fe(n.thresholds??{}),this.setState("positioning"),this.positioningStartedAt=this.now(),this.startScheduler(e)}get animations(){return this.profiler?.profile.animations??"full"}startScheduler(e){let n=this.profiler;if(n===null)return;if(this.scheduler!==null){let i=this.scheduler.stats();this.carriedDegrade+=i.degradeCount,i.meanDetectMs>0&&this.carriedMeans.push(i.meanDetectMs),this.scheduler.stop()}let r=new pe({cadenceHz:n.profile.cadenceHz,video:this.options.video,...this.options.now!==void 0?{now:this.options.now}:{},run:()=>this.detectTick(e)});this.scheduler=r,r.start()}async detectTick(e){let{detector:n,gate:r,profiler:i}=this,s=this.options.video;if(e!==this.attempt||n===null||r===null||i===null||this.fired||s.videoWidth===0)return;let o=i.deviceClass,a=this.now(),c=this.options.makeSnapshot?.(s,i.profile.inputWidth)??this.defaultSnapshot(s,i.profile.inputWidth),l=null;try{l=await n.detect(c,s.videoWidth,s.videoHeight)}catch{l=null}if(e!==this.attempt||this.fired)return;i.record(this.now()-a),i.deviceClass!==o&&this.startScheduler(e);let u=l===null?yt:this.options.measureQuality?.(s,l.box)??this.defaultQuality(s,l.box),p=r.tick({timestampMs:this.now(),observation:l,quality:u,frameWidth:s.videoWidth,frameHeight:s.videoHeight});p.accepted&&this.faceAcquiredAt===null&&(this.faceAcquiredAt=p.at),this.emit("checks",{engine:"v3",progress:p.p,q:p.q,factors:p.factors,attempt:e}),p.guidanceKey!==this.lastGuidanceKey&&(this.lastGuidanceKey=p.guidanceKey,this.emit("guidance",{key:p.guidanceKey})),p.ready&&this.stateValue==="positioning"&&(this.fired=!0,this.captureCompleteAt=p.at,this.fire(e))}async fire(e){let{options:n}=this,r=this.scheduler;r?.stop();let i=r?.stats()??{degradeCount:0,meanDetectMs:0},s=[...this.carriedMeans,...i.meanDetectMs>0?[i.meanDetectMs]:[]];n.telemetry?.({type:"fired",timeToGateMs:this.now()-this.positioningStartedAt,degradeCount:this.carriedDegrade+i.degradeCount,meanDetectMs:s.length===0?0:s.reduce((y,g)=>y+g,0)/s.length});let o=n.mode??"clip",a=this.collectKeyframes(e);if(o==="photo"){let y=await a;if(e!==this.attempt)return;if(y===null){this.fail("generic");return}this.finishCapture({keyframe:y.blob,previewDataUrl:y.previewDataUrl});return}this.setState("recording");let c=n.createRecorder?.()??new se,l=this.stream;if(l===null){this.fail("generic");return}let u=null;a.then(y=>{u=y},()=>{});let p=()=>{e===this.attempt&&u!==null&&this.emit("frozen",{previewDataUrl:u.previewDataUrl})},f,v;try{[f,v]=await Promise.all([c.record(l,p),a])}catch(y){if(e!==this.attempt)return;let g=y.kind;this.fail(g==="cliptoolarge"?"cliptoolarge":"recorder");return}if(e===this.attempt){if(re(f.blob)){this.fail("cliptoolarge");return}if(v===null){this.fail("generic");return}this.finishCapture({clip:f.blob,clipMimeType:f.mimeType,keyframe:v.blob,previewDataUrl:v.previewDataUrl})}}async collectKeyframes(e){let n=this.options.captureKeyframe??(s=>this.defaultKeyframe(s)),r=En/(De-1),i=null;for(let s=0;s<De;s+=1){if(e!==this.attempt)return i;try{let o=await n(this.options.video);(i===null||o.sharpness>i.sharpness)&&(i=o)}catch{}s<De-1&&await Cn(r)}return i}finishCapture(e){this.stopTracks(),this.setState("captured");let n=this.captureTiming();this.emit("artifacts",n===void 0?e:{...e,timing:n})}captureTiming(){let e=(o,a)=>o!==null&&a!==null?Math.max(0,Math.round(a-o)):void 0,n=e(this.cameraRequestedAt,this.cameraReadyAt),r=e(this.cameraReadyAt,this.faceAcquiredAt),i=e(this.faceAcquiredAt,this.captureCompleteAt),s={...n!==void 0?{cameraReadyMs:n}:{},...r!==void 0?{faceAcquireMs:r}:{},...i!==void 0?{captureMs:i}:{}};return Object.keys(s).length>0?s:void 0}async defaultKeyframe(e){let n=document.createElement("canvas"),r=await ct(e,n),i=n.toDataURL("image/jpeg",.92);return{blob:r,previewDataUrl:i,sharpness:this.centerSharpness(e)}}defaultSnapshot(e,n){try{let r=this.snapshotCanvas??document.createElement("canvas"),i=n/Math.max(1,e.videoWidth),s=Math.max(1,Math.round(e.videoWidth*i)),o=Math.max(1,Math.round(e.videoHeight*i)),a=r.getContext("2d");return a===null?e:(r.width!==s&&(r.width=s),r.height!==o&&(r.height=o),a.drawImage(e,0,0,s,o),this.snapshotCanvas=r,r)}catch{return e}}defaultQuality(e,n){let r=vt(e,n,96);return r===null?yt:{sharpness:Oe(r),exposure:ht(r),meanLuma:Ae(r)}}centerSharpness(e){let n=W(e),r=vt(e,{x:n.width*.25,y:n.height*.25,width:n.width*.5,height:n.height*.5},96);return r===null?0:Oe(r)}teardownAttempt(){this.scheduler?.stop(),this.scheduler=null,this.gate=null,this.stopTracks()}stopTracks(){if(this.stream!==null){for(let e of this.stream.getTracks())e.stop();this.stream=null}}fail(e,n){this.scheduler?.stop(),this.stopTracks(),this.setState("error"),this.options.telemetry?.({type:"error",kind:e,...n!==void 0?{fallbackReason:n}:{}}),this.emit("error",{kind:e,retryable:e!=="insecure"&&e!=="unsupported"})}setState(e){this.stateValue=e,this.emit("statechange",{state:e})}now(){return this.options.now?.()??performance.now()}};function Cn(t){return new Promise(e=>setTimeout(e,t))}function Tn(t){return t instanceof Error?t.message:String(t)}function vt(t,e,n){try{let r=document.createElement("canvas"),i=n/Math.max(1,e.width);r.width=Math.max(1,Math.round(e.width*i)),r.height=Math.max(1,Math.round(e.height*i));let s=r.getContext("2d");return s===null?null:(s.drawImage(t,e.x,e.y,e.width,e.height,0,0,r.width,r.height),s.getImageData(0,0,r.width,r.height))}catch{return null}}function ye(){let t=new Map;return{on(e,n){let r=t.get(e);r===void 0&&(r=new Set,t.set(e,r));let i=n;return r.add(i),()=>{r?.delete(i)}},emit(e,n){let r=t.get(e);if(r!==void 0)for(let i of[...r])i(n)},clear(){t.clear()}}}var kn=12e4,gt=13e4,Rn=3e3,xn=1200,ve=Symbol.for("@sekyro/web.preload.v1");function be(){let t=globalThis;return t[ve]??(t[ve]=new Map),t[ve]}function q(t){let e=(t??Me).replace(/\/+$/,"");return e===""?"/":e}function bt(t){let e=be(),n=e.get(t);return n===void 0&&(n={status:"idle",promise:null,scheduled:null,detectorPromise:null,detector:null,listeners:new Set},e.set(t,n)),n}function ge(t,e){if(t.status!==e){t.status=e;for(let n of[...t.listeners])n(e)}}var Mn=t=>R({preferred:["blaze"],v3AssetBaseUrl:t,blazeInitTimeoutMs:kn}),In=Mn;function An(){return typeof window<"u"&&typeof navigator<"u"&&typeof navigator.mediaDevices?.getUserMedia=="function"}function On(){return navigator.connection?.saveData===!0}function Dn(t){let e=window;if(typeof e.requestIdleCallback=="function"){let r=e.requestIdleCallback(t,{timeout:Rn});return()=>e.cancelIdleCallback?.(r)}let n=setTimeout(t,xn);return()=>clearTimeout(n)}function Pn(t,e){let n,r=new Promise(a=>{n=a}),i=!1,s=()=>{},o={promise:r,settle:a=>{i||(i=!0,s(),t.scheduled===o&&(t.scheduled=null),n(a))}};return t.scheduled=o,s=Dn(()=>{i||o.settle(Pe(t,e))}),r}function Pe(t,e){if((t.status==="loading"||t.status==="ready")&&t.promise!==null)return t.promise;ge(t,"loading");let n=new Promise(a=>a(In(e)));t.detectorPromise=n;let r,i=new Promise((a,c)=>{r=setTimeout(()=>{n.then(l=>l.destroy(),()=>{}),c(new Error(`detector preload exceeded ${gt} ms`))},gt)}),o=Promise.race([n,i]).then(a=>t.detectorPromise!==n?(a.destroy(),t.status):(t.detector=a,ge(t,"ready"),"ready"),a=>(t.detectorPromise===n&&(t.detectorPromise=null,t.detector=null,ge(t,"failed"),console.warn("[@sekyro/web] face-detector preload failed:",a)),t.status)).finally(()=>clearTimeout(r));return t.promise=o,t.scheduled?.settle(o),o}function St(t={}){if(!An())return Promise.resolve("idle");let e=q(t.assetBaseUrl),n=bt(e);return t.respectSaveData===!0&&On()?Promise.resolve(n.status):(n.status==="loading"||n.status==="ready")&&n.promise!==null?n.promise:t.idle===!0?n.scheduled?.promise??Pn(n,e):Pe(n,e)}function wt(t){return be().get(q(t))?.status??"idle"}function _t(t,e){let n=bt(q(e));return n.listeners.add(t),()=>{n.listeners.delete(t)}}function Et(t){let e=be().get(q(t));e!==void 0&&(e.scheduled?.settle("idle"),e.detector?.destroy(),e.detector=null,e.detectorPromise=null,e.promise=null,ge(e,"idle"))}function Ln(t){return{get tier(){return t.tier},get fallbackReason(){return t.fallbackReason},detect:(...e)=>t.detect(...e),destroy:()=>{}}}function Ct(t){let e=q(t),n=be().get(e);if(!(n===void 0||n.detector===null&&n.detectorPromise===null&&n.scheduled===null))return async()=>{n.scheduled!==null&&Pe(n,e);let r=n.promise;for(;n.detector===null&&r!==null&&(await r,n.promise!==r);)r=n.promise;return n.detector!==null?Ln(n.detector):R({v3AssetBaseUrl:e})}}function Tt(){if(typeof navigator>"u"||!("wakeLock"in navigator))return null;let t=navigator.wakeLock;return typeof t?.request=="function"?t:null}function kt(){return typeof document>"u"||document.visibilityState==="visible"}function Rt(t){try{t.release().catch(()=>{})}catch{}}function xt(t={}){if(t.enabled===!1)return{setActive:()=>{}};let e=!1,n=null,r=!1,i=!1,s=()=>{if(!e||r||n!==null&&!n.released)return;let c=Tt();if(c===null||!kt())return;let l;try{l=c.request("screen")}catch{return}r=!0,l.then(u=>{if(r=!1,!e){Rt(u);return}n=u,u.addEventListener?.("release",()=>{n===u&&(n=null)})},()=>{r=!1})},o=()=>{kt()&&s()},a=c=>{typeof document>"u"||c===i||(i=c,c?document.addEventListener("visibilitychange",o):document.removeEventListener("visibilitychange",o))};return{setActive:c=>{if(e=c,c){if(Tt()===null)return;a(!0),s();return}if(a(!1),n!==null){let l=n;n=null,Rt(l)}}}}function Vn(t){switch(t){case"fcv3.no_face":case"fcv3.center_face":case"fcv3.straighten":return"center";case"fcv3.come_closer":return"closer";case"fcv3.move_back":return"farther";case"fcv3.more_light":case"fcv3.too_bright":return"light";case"fcv3.hold_still":case"fcv3.steady_camera":return"still";default:return null}}function Hn(t){switch(t){case"preflight":case"acquiring":return"starting";case"positioning":return"gating";case"idle":case"recording":case"captured":case"error":return t;default:{let e=t;throw new Error(`mapEngineState: unhandled state ${e}`)}}}function Fn(t){switch(t){case"permission":case"notfound":case"inuse":case"insecure":case"unsupported":return t;case"overconstrained":case"generic":case"models":case"cliptoolarge":case"recorder":return"generic";default:{let e=t;throw new Error(`mapErrorKind: unhandled kind ${e}`)}}}function Le(t,e={}){let n=e.now??(()=>performance.now()),r=ye(),i=!tt(),s=e.engineOptions,o=s?.createDetector===void 0&&s?.createWorker===void 0?{createDetector:()=>{let m=Ct(t.assetBaseUrl);return m!==void 0?m():R(t.assetBaseUrl!==void 0?{v3AssetBaseUrl:t.assetBaseUrl}:{})}}:{},a={video:t.video,mode:i?"photo":"clip",...t.facing!==void 0?{facingMode:t.facing}:{},...t.assetBaseUrl!==void 0?{v3AssetBaseUrl:t.assetBaseUrl}:{},...e.engineOptions??{},...o},c=e.createEngine?.(a)??new he(a),l="idle",u=null,p=0,f=!1,v="full",y=null,g=null,C=0,D=0,V=()=>{t.video.videoWidth>0&&t.video.videoHeight>0&&(C=t.video.videoWidth,D=t.video.videoHeight)},K=xt({enabled:t.keepScreenAwake!==!1}),P=m=>{l=m,K.setActive(m==="starting"||m==="gating"||m==="recording"),r.emit("state",m)},H=()=>r.emit("gate",{progress:p,hint:u,faceDetected:f}),B=()=>{let m=c.animations??"full";m!==v&&(v=m,r.emit("profile",{animations:v}))},J=[c.on("statechange",({state:m})=>{let E=Hn(m);E==="starting"&&l!=="starting"&&(u=null,p=0,f=!1,y=null,g=null,C=0,D=0),P(E),B(),E==="recording"&&(V(),y=n(),u="hold",p=1,H())}),c.on("checks",m=>{V(),p=m.progress,f=m.factors.presence>0,H(),B()}),c.on("guidance",({key:m})=>{u=Vn(m),H()}),c.on("frozen",({previewDataUrl:m})=>{g=n(),r.emit("frozen",{previewDataUrl:m})}),c.on("artifacts",m=>{let E=y!==null&&g!==null?Math.max(0,Math.round(g-y)):void 0;r.emit("captured",{keyframe:m.keyframe,...m.clip!==void 0?{clip:m.clip}:{},...m.clipMimeType!==void 0?{clipMime:m.clipMimeType}:{},width:t.video.videoWidth||C,height:t.video.videoHeight||D,...E!==void 0?{clipMs:E}:{},captureChannel:N()?"mobile":"desktop",...i?{degraded:"NO_RECORDER"}:{},engine:"v3",...m.timing?.cameraReadyMs!==void 0?{cameraReadyMs:m.timing.cameraReadyMs}:{},...m.timing?.faceAcquireMs!==void 0?{faceAcquireMs:m.timing.faceAcquireMs}:{},...m.timing?.captureMs!==void 0?{captureMs:m.timing.captureMs}:{}})}),c.on("error",({kind:m,retryable:E})=>{r.emit("error",{kind:Fn(m),retryable:E})})];return{handle:{get state(){return l},on:(m,E)=>r.on(m,E),start:m=>c.start(m?.facing!==void 0?{facingMode:m.facing}:{}),retry:()=>c.retry(),switchCamera:()=>c.switchCamera(),destroy:()=>{for(let m of J)m();K.setActive(!1),c.destroy(),r.clear()}},setFlowState:m=>{l!==m&&P(m)}}}function Mt(t){return Le(t).handle}async function It(){try{return typeof navigator>"u"||typeof navigator.permissions?.query!="function"?null:await navigator.permissions.query({name:"camera"})}catch{return null}}function Ve(t){return t==="granted"||t==="prompt"||t==="denied"?t:"unknown"}async function At(){let t=await It();return t===null?"unknown":Ve(t.state)}function Ot(t){let e=!1,n=null,r=()=>{!e&&n!==null&&t(Ve(n.state))};return It().then(i=>{e||(n=i,t(i===null?"unknown":Ve(i.state)),i?.addEventListener?.("change",r))}),()=>{e=!0,n?.removeEventListener?.("change",r)}}async function Dt(){if(typeof navigator>"u")return!1;let t=String(navigator.userAgent??"");if(/Android|iPhone|iPad|iPod/i.test(t)||/Macintosh/.test(t)&&(navigator.maxTouchPoints??0)>1)return!0;try{return(await navigator.mediaDevices?.enumerateDevices?.()??[]).filter(n=>n.kind==="videoinput").length>=2}catch{return!1}}var He=["session_token_invalid","session_token_required","session_token_session_mismatch","session_not_found","rate_limit_exceeded","consent_required","session_not_active","check_not_found","check_already_finalized","check_out_of_order","check_type_unsupported","force_outcome_forbidden","attestation_invalid","inference_unavailable","mobile_required","nni_locked","method_required","method_locked","document_nni_mismatch","media_content_type_not_allowed","media_too_large","media_key_invalid","media_key_forbidden","media_not_found","media_unreadable","media_session_invalid","idempotency_key_collision","idempotency_in_progress","idempotency_key_required","validation_error","internal_error","unknown_error","upload_failed","network_error","timeout"];function Pt(t){return He.includes(t)}var _=class extends Error{constructor(e){super(e.message),this.name="HostedApiError",this.status=e.status,this.code=e.code,e.retryAfterSeconds!==void 0&&(this.retryAfterSeconds=e.retryAfterSeconds)}};var Nn=3e4,Un=9e5,Kn=200,Bn=5,Wn=400;function z(t){return(t.split(";")[0]??"").trim()}var Gn={liveness:"clipKey",face_match:"imageKey",doc_ocr:"imageKey"},Se=class{constructor(e){this.sessionId=null;this.bootstrap=null;this.apiOrigin=e.apiOrigin.replace(/\/+$/,""),this.sessionToken=e.sessionToken;let n=e.fetch;this.fetchImpl=(r,i)=>(n??globalThis.fetch).call(globalThis,r,i),this.requestTimeoutMs=e.requestTimeoutMs??Nn,this.retryAttempts=e.inProgressRetry?.attempts??Bn,this.retryDelayMs=e.inProgressRetry?.delayMs??Wn}async getSession(){let e=await this.api("GET","/hosted/session");return this.sessionId=e.sessionId,e}async recordConsent(e){return this.api("POST","/hosted/consent",{body:{locale:e}})}async selectMethod(e){let n=await this.api("POST","/hosted/method",{body:{method:e}});return this.sessionId=n.sessionId,n}async presign(e,n,r){let i=await this.ensureSessionId(),s={kind:e,contentType:z(n),contentLength:r};return this.api("POST",`/sessions/${i}/media`,{body:s})}async uploadToSpaces(e,n,r){let i;try{i=await this.fetchImpl(e,{method:"PUT",headers:{"content-type":z(r)},body:n,signal:AbortSignal.timeout(Un)})}catch(s){throw Lt(s)}if(!i.ok){let s=(await i.text().catch(()=>"")).slice(0,Kn);throw new _({status:i.status,code:"upload_failed",message:`media upload failed (HTTP ${i.status})${s?`: ${s}`:""}`})}}async completeMedia(e){let n=await this.ensureSessionId();return this.api("POST",`/sessions/${n}/media/complete`,{body:{key:e}})}async submitCheck(e,n,r={}){let i=await this.ensureSessionId(),s={input:n,...r.forceOutcome!==void 0?{forceOutcome:r.forceOutcome}:{}};return this.api("POST",`/sessions/${i}/checks/${e}`,{body:s,...r.idempotencyKey!==void 0?{idempotencyKey:r.idempotencyKey}:{}})}async uploadAndSubmit(e,n,r,i={}){let s=z(n.contentType),o=await this.presign(n.kind,s,n.blob.size);await this.uploadToSpaces(o.uploadUrl,n.blob,s);let a=await this.completeMedia(o.key),c={...r,[Gn[e]]:a.key};return this.submitCheck(e,c,i)}async ensureSessionId(){return this.sessionId!==null?this.sessionId:(this.bootstrap??(this.bootstrap=this.getSession().finally(()=>{this.bootstrap=null})),(await this.bootstrap).sessionId)}async api(e,n,r={}){let i=`${this.apiOrigin}/api/v2${n}`,s={"x-session-token":this.sessionToken};r.body!==void 0&&(s["content-type"]="application/json"),r.idempotencyKey!==void 0&&(s["x-idempotency-key"]=r.idempotencyKey);try{let o=ie.timezone();o!==void 0&&(s["sekyro-client-timezone"]=o)}catch{}try{let o=await ie.deviceHeader();o!==void 0&&(s["sekyro-client-device"]=o)}catch{}for(let o=0;;o++){let a;try{a=await this.fetchImpl(i,{method:e,headers:s,...r.body!==void 0?{body:JSON.stringify(r.body)}:{},signal:AbortSignal.timeout(this.requestTimeoutMs)})}catch(l){throw Lt(l)}if(a.ok){let l;try{l=await a.json()}catch{throw new _({status:a.status,code:"unknown_error",message:`response body was not valid JSON (HTTP ${a.status})`})}return qn(l)}let c=await zn(a);if(c.code==="idempotency_in_progress"&&o<this.retryAttempts){this.retryDelayMs>0&&await Yn(this.retryDelayMs);continue}throw c}}};function Lt(t){if((typeof t=="object"&&t!==null?t.name:void 0)==="TimeoutError")return new _({status:0,code:"timeout",message:"request timed out"});let n=t instanceof Error?t.message:String(t);return new _({status:0,code:"network_error",message:`network request failed: ${n}`})}function qn(t){return t!==null&&typeof t=="object"&&"success"in t&&"data"in t?t.data:t}async function zn(t){let e="unknown_error",n=`request failed (HTTP ${t.status})`,r=Number.NaN;try{let o=await t.json();if(o!==null&&typeof o=="object"){let a=o;typeof a.code=="string"&&a.code.length>0&&(e=a.code),typeof a.message=="string"&&a.message.length>0&&(n=a.message),typeof a.retryAfterSeconds=="number"&&(r=a.retryAfterSeconds)}}catch{}let i=t.headers.get("retry-after"),s=i===null?Math.floor(r):Number.parseInt(i,10);return new _({status:t.status,code:e,message:n,...Number.isFinite(s)&&s>=0?{retryAfterSeconds:s}:{}})}function Yn(t){return new Promise(e=>setTimeout(e,t))}var Xn=new Set(["no_face","media_unreadable","clip_too_short","no_face_source","side_missing","unreadable","registry_unavailable","otp_mismatch","otp_expired","otp_send_failed","document_type_not_accepted","age_unverifiable","liveness_inconclusive","match_inconclusive","document_authenticity"]);function $(t){let e=t.methodChoice;return e===void 0||!e.available||e.selected!==null||O(t)?.checkType==="phone_otp"?null:e}var $n=new Set(["liveness","face_match"]);function Z(t){return t!==void 0&&(t.state==="pending"||t.state==="input_required")}function M(t){return t.status!=="created"&&t.status!=="in_progress"}function O(t){return t.steps.find(e=>Z(e))}function I(t,e){return t.steps.find(n=>n.checkType===e)}function Fe(t,e){let n=e.steps.find(i=>i.checkType==="liveness"),r=e.steps.find(i=>i.checkType==="face_match");return I(t,"face_match")?.state==="pending"&&(n?.state==="passed"||n?.state==="review")&&r!==void 0&&r.state!=="pending"&&r.state!=="skipped"}function Vt(t,e,n){let r=new Map(t.steps.map(o=>[o.checkType,o])),i=n==="liveness"&&Fe(t,e),s=e.steps.map(o=>{let a=r.get(o.checkType),c=a?.attemptsRemaining??0,l={...a??{},checkType:o.checkType,state:o.state,attemptsRemaining:o.checkType===n||o.checkType==="face_match"&&i?Math.max(0,c-1):c};return o.reason!==void 0?l.reason=o.reason:delete l.reason,o.attemptsExhausted!==void 0?l.attemptsExhausted=o.attemptsExhausted:delete l.attemptsExhausted,l});return{...t,status:e.status,outcome:e.outcome,failureReason:e.failureReason,steps:s,expiresAt:e.expiresAt}}function x(t,e){return e===void 0?{sessionId:t,status:"unavailable"}:{sessionId:t,status:"unavailable",reason:e}}function Y(t,e,n){return n===void 0?{sessionId:t,status:e}:{sessionId:t,status:e,reason:n}}function Ne(t,e){let{sessionId:n}=t;switch(t.status){case"completed":return t.outcome==="approved"?{sessionId:n,status:"approved"}:t.outcome==="review"?Y(n,"review",X(t,"review")):Y(n,"rejected",X(t,"failed"));case"failed":{let i=Y(n,"rejected",t.failureReason??X(t,"failed"));return t.failureReason==="device_cooldown"&&t.retryAfter!==void 0&&(i.retryAfter=t.retryAfter),i}case"review_pending":return Y(n,"review",X(t,"review"));case"expired":return x(n);case"created":case"in_progress":break;default:{let i=t.status;throw new Error(`mapSessionResult: unhandled status ${i}`)}}let r=t.steps.find(i=>$n.has(i.checkType)&&i.state==="input_required"&&i.reason!==void 0);if(r?.reason==="mobile_required")return x(n,"mobile_required");if(r?.reason!==void 0){let i=e.autoRetry&&Xn.has(r.reason)&&r.attemptsRemaining>0;return{sessionId:n,status:i?"retry":"rejected",reason:r.reason,attemptsRemaining:r.attemptsRemaining}}return O(t)===void 0&&t.steps.some(i=>i.state==="review")?Y(n,"review",X(t,"review")):x(n)}function X(t,e){return t.steps.find(n=>n.state===e&&n.reason!==void 0)?.reason}var Zn=["video/webm","video/mp4"],Ht="image/jpeg",jn=2,Qn=1e3,Jn=1e4,er=3,tr=10,nr=30,rr=3,ir=new Set(["network_error","timeout","upload_failed","unknown_error","rate_limit_exceeded"]),sr=new Set(["session_not_active","check_not_found","check_already_finalized","check_out_of_order"]),j=class extends Error{constructor(){super("verification destroyed"),this.name="FlowCancelledError"}};function or(t){let e=t.steps.findIndex(r=>r.checkType==="liveness");return e<0?!1:t.steps.slice(e+1).find(r=>Z(r))?.checkType==="face_match"}var Q=class extends Error{constructor(e){super(e),this.name="AttestationError"}};async function we(t,e,n={}){let r=t.uuid(),i=!1,s=!1,o=0,a=0;for(;;)try{return await e(t.client,r)}catch(c){if(c instanceof Q){if(s)throw c;s=!0,n.onAttestationInvalid?.(),r=t.uuid();continue}if(!(c instanceof _))throw c;if(c.code==="consent_required"&&!i){i=!0,await t.ensureConsent({force:!0}),r=t.uuid();continue}if(c.code==="attestation_invalid"&&!s){s=!0,n.onAttestationInvalid?.(),r=t.uuid();continue}if(c.code==="inference_unavailable"&&a<er){a+=1;let l=Math.min(c.retryAfterSeconds??tr,nr);t.onBusy?.({attempt:a,retryAfterSeconds:l}),await t.sleep(l*1e3),n.onAttestationInvalid?.(),r=t.uuid();continue}if(ir.has(c.code)&&o<jn){o+=1;let l=c.retryAfterSeconds!==void 0?c.retryAfterSeconds*1e3:void 0;await t.sleep(l!==void 0?Math.min(l,Jn):Qn);continue}throw c}}var ar=new Set(["passed","review","processing","skipped"]);async function Ft(t){let{artifacts:e}=t,n=e.clip,r=z(e.clipMime??"");if(e.degraded==="NO_RECORDER"||n===void 0||!Zn.includes(r))return{kind:"unavailable",reason:"no_recorder"};let i=cr(t,e.keyframe),s=ur(t,n,r,i),o=lr(t,i),a=!1,c=!1,l=!0,u=0;for(;;){if(t.isCancelled())return{kind:"cancelled"};let p=t.getView();if(M(p))return{kind:"settled"};let f=O(p)?.checkType,v=f==="liveness"&&!a?"liveness":f==="face_match"&&!c&&l?"face_match":null;if(v===null)return{kind:"settled"};if(v==="liveness"&&e.captureChannel==="desktop"&&I(p,"liveness")?.requiresMobile===!0)return{kind:"unavailable",reason:"mobile_required"};try{if(v==="liveness"){a=!0;let y=await s();if(t.isCancelled())return{kind:"cancelled"};c=Fe(p,y),t.applySubmit(y,"liveness");let g=I(t.getView(),"liveness")?.state;l=g===void 0||ar.has(g)}else{c=!0;let y=await o();if(t.isCancelled())return{kind:"cancelled"};t.applySubmit(y,"face_match")}}catch(y){if(t.isCancelled()||y instanceof j)return{kind:"cancelled"};let g=pr(y);if(g.kind!=="resync"||u>=rr)return g;u+=1,await t.refreshView()}}}function cr(t,e){let n=null,r=null,i=()=>n!==null?Promise.resolve(n):(r??(r=(async()=>{let s=await t.client.presign("image",Ht,e.size);return await t.client.uploadToSpaces(s.uploadUrl,e,Ht),n=(await t.client.completeMedia(s.key)).key,n})().finally(()=>{r=null})),r);return{ensure:i,attempt:()=>i().catch(()=>null),current:()=>n}}function ur(t,e,n,r){let i=null,s,o=null;return()=>we(t,async(a,c)=>{if(i===null||s===void 0){if(t.isCancelled())throw new j;s===void 0&&!or(t.getView())&&(s=null),t.onPhase("uploading");let[l,u]=await Promise.all([i!==null?Promise.resolve(i):(async()=>{let p=await a.presign("clip",n,e.size);return await a.uploadToSpaces(p.uploadUrl,e,n),(await a.completeMedia(p.key)).key})(),s!==void 0?Promise.resolve(s===null?null:s.imageKey):r.attempt()]);i=l,s===void 0&&(s=u===null?null:{imageKey:u})}if(o===null)try{o=await t.getAttestation()}catch(l){throw new Q(l instanceof Error?l.message:String(l))}return t.onPhase("checking"),a.submitCheck("liveness",{clipKey:i,attestation:o,captureChannel:t.artifacts.captureChannel,capture:dr(t.artifacts),...s!==null?{faceMatch:s}:{}},{idempotencyKey:c})},{onAttestationInvalid:()=>{o=null}})}function lr(t,e){return()=>we(t,async(n,r)=>{if(e.current()===null){if(t.isCancelled())throw new j;t.onPhase("uploading")}let i=await e.ensure();return t.onPhase("checking"),n.submitCheck("face_match",{imageKey:i},{idempotencyKey:r})})}function dr(t){return{...t.engine!==void 0?{engine:t.engine}:{},width:t.width,height:t.height,...t.clipMs!==void 0?{clipMs:t.clipMs}:{},...t.cameraReadyMs!==void 0?{cameraReadyMs:t.cameraReadyMs}:{},...t.faceAcquireMs!==void 0?{faceAcquireMs:t.faceAcquireMs}:{},...t.captureMs!==void 0?{captureMs:t.captureMs}:{}}}function pr(t){if(t instanceof Q)return{kind:"unavailable",reason:"attestation"};if(t instanceof _){if(t.code==="attestation_invalid")return{kind:"unavailable",reason:"attestation"};if(t.code==="method_required")return{kind:"unavailable",reason:"method_required"};if(t.code==="inference_unavailable")return{kind:"unavailable",reason:"inference_unavailable"};if(t.code==="mobile_required")return{kind:"unavailable",reason:"mobile_required"};if(sr.has(t.code))return{kind:"resync"}}return{kind:"unavailable",reason:"network"}}var mr="https://challenges.cloudflare.com/turnstile/v0/api.js";function Nt(){return window.turnstile}var _e=null;function fr(){return _e??(_e=new Promise((t,e)=>{let n=Nt();if(n){t(n);return}let r=document.createElement("script");r.src=mr,r.async=!0,r.onload=()=>{let i=Nt();i?t(i):(_e=null,e(new Error("Turnstile script loaded but exposed no API")))},r.onerror=()=>{_e=null,r.remove(),e(new Error("Turnstile script failed to load"))},document.head.appendChild(r)})),_e}function Ue(){return new Error("Turnstile challenge aborted")}async function Ut(t,e={}){let n=e.timeoutMs??3e4,r=e.signal;if(r?.aborted)throw Ue();let i=await fr();if(r?.aborted)throw Ue();let s=document.createElement("div");document.body.appendChild(s);let o,a,c;try{return await new Promise((l,u)=>{if(a=setTimeout(()=>u(new Error(`Turnstile challenge timed out (${n} ms)`)),n),r!==void 0&&(c=()=>u(Ue()),r.addEventListener("abort",c,{once:!0})),o=i.render(s,{sitekey:t,execution:"execute",appearance:"execute",callback:l,"error-callback":p=>{u(new Error(`Turnstile challenge failed${p?` (${p})`:""}`))}}),o===void 0){u(new Error("Turnstile render returned no widget id"));return}i.execute(o)})}finally{if(clearTimeout(a),r!==void 0&&c!==void 0&&r.removeEventListener("abort",c),o!==void 0)try{i.remove(o)}catch{}s.remove()}}var Ke="https://api.sekyro.ai",hr=5e3,yr=1500,vr=10;function gr(t){return new Promise(e=>setTimeout(e,t))}function br(){let t=globalThis.crypto;if(t!==void 0&&typeof t.randomUUID=="function")return t.randomUUID();let e=new Uint8Array(16);if(t!==void 0&&typeof t.getRandomValues=="function")t.getRandomValues(e);else for(let r=0;r<16;r+=1)e[r]=Math.floor(Math.random()*256);e[6]=(e[6]??0)&15|64,e[8]=(e[8]??0)&63|128;let n=[...e].map(r=>r.toString(16).padStart(2,"0")).join("");return`${n.slice(0,8)}-${n.slice(8,12)}-${n.slice(12,16)}-${n.slice(16,20)}-${n.slice(20)}`}function Kt(t){return Sr(t,{})}function Sr(t,e){let n=t.apiOrigin??Ke,r=t.autoRetry??!0,i=t.rearm??"auto",s=e.client??new Se({apiOrigin:n,sessionToken:t.clientToken,...t.fetch!==void 0?{fetch:t.fetch}:{}}),o=e.sleep??gr,a=e.uuid??br,c=e.getTurnstileToken??Ut,l=ye(),u=!1,p=new AbortController,f=null,v=null,y=d=>{f=d,l.emit("view",d)},g=()=>f!==null?Promise.resolve(f):(v??(v=s.getSession().then(d=>(y(d),d)).finally(()=>{v=null})),v),C=async()=>{let d=await s.getSession();return y(d),d},D=(d,h)=>{f!==null&&y(Vt(f,d,h))},V=null,K=async d=>{let h=await g();!d&&h.consentRecorded||(await s.recordConsent(t.locale),f!==null&&y({...f,consentRecorded:!0}))},P=d=>d?.force===!0?K(!0):(V??(V=K(!1).finally(()=>{V=null})),V),H={client:s,ensureConsent:d=>P(d),sleep:o,uuid:a,onBusy:d=>{u||l.emit("busy",d)}},B=!1,J=d=>{if(d.status==="approved"||d.status==="rejected"||d.status==="review"){if(B)return;B=!0}l.emit("result",d)},Ee=async d=>{let h=f;d&&(h=await C().catch(()=>f));let S=h===null?null:$(h);return S!==null&&!u&&l.emit("method",S),S!==null},m=null,E=!1,We=!1,Ge=()=>we(H,(d,h)=>d.submitCheck("population_registry",{},{idempotencyKey:h})),qe=d=>d.nniBound===!0||I(d,"population_registry")?.nniFromDocument===!0,Wt=async()=>{try{let d=await g();if(M(d)||$(d)!==null||O(d)?.checkType!=="population_registry")return;if(!qe(d)&&I(d,"population_registry")?.nniFromDocument===void 0&&(d=await C()),!qe(d)){We=!0;return}await P(),D(await Ge(),"population_registry");let h=f===null?void 0:I(f,"population_registry");if(h?.state==="input_required"&&h.reason==="registry_unavailable"&&h.attemptsRemaining>0){if(await o(hr),u)return;D(await Ge(),"population_registry")}}catch(d){if(d instanceof _&&d.code==="method_required"){await C().catch(()=>{});return}E=!0;return}f!==null&&M(f)&&J(Ne(f,{autoRetry:r}))},ze=()=>(m??(m=Wt()),m),Gt=async()=>{let h=(await g()).turnstileSiteKey;return h===null?{sandbox:!0}:{channel:"hosted_web",siteKey:h,turnstileToken:await c(h,{signal:p.signal})}},T=null,Ye=Promise.resolve(),Ce=0,qt=async()=>{let d=await g();for(let h=0;h<vr&&!u&&!M(d)&&O(d)===void 0&&d.steps.some(S=>S.state==="processing")&&(await o(yr),!u);h+=1)d=await C();return d},zt=async(d,h,S)=>{let{capture:k}=d,w=()=>u,ee=()=>d.alive&&d.attempt===S,Xe=b=>{ee()&&k.setFlowState(b)},F=b=>{if(!w()&&(J(b),!!ee())){if(b.status==="retry"&&i==="auto"){k.handle.retry();return}k.setFlowState("done")}};if(h.degraded==="NO_RECORDER"){let b=f?.sessionId??(await g().catch(()=>null))?.sessionId??"";F(x(b,"no_recorder"));return}Xe("uploading");try{if(await ze(),w())return;let b=await g();if(!M(b)&&$(b)!==null){await Ee(!1),F(x(b.sessionId,"method_required"));return}if(!M(b)){if(O(b)?.checkType==="population_registry"){F(x(b.sessionId,We?"nni_unbound":E?"network":"registry_unavailable"));return}if(await P(),w())return;let te=await Ft({...H,artifacts:h,getAttestation:Gt,getView:()=>f??b,refreshView:C,applySubmit:D,onPhase:Xe,isCancelled:w});if(w())return;if(te.kind==="unavailable"){if(te.reason==="method_required"&&await Ee(!0),w())return;F(x(b.sessionId,te.reason));return}te.kind==="resync"&&await C(),b=await qt()}F(Ne(b,{autoRetry:r}))}catch{if(w())return;F(x(f?.sessionId??"","network"))}},Yt=(d,h)=>{let S=d.attempt;Ce>0&&d.alive&&d.capture.setFlowState("uploading"),Ce+=1,Ye=Ye.then(()=>zt(d,h,S)).finally(()=>{Ce-=1}).catch(()=>{})};return{consent:()=>P(),startRegistry:ze,methodChoice:async()=>{if(u)return null;try{let d=await g();return u?null:$(d)}catch{return null}},selectMethod:async d=>{let h=await s.selectMethod(d);u||y(h)},mobileRequired:async()=>{if(u)return!1;try{let d=await g();if(u||M(d))return!1;let h=I(d,"liveness");return Z(h)&&h?.requiresMobile===!0&&!N()}catch{return!1}},liveness:d=>{T?.capture.handle.destroy(),T!==null&&(T.alive=!1);let h=Le(d,e.capture),S={capture:h,alive:!0,attempt:0};T=S,h.handle.on("state",w=>{w==="starting"&&(S.attempt+=1)}),h.handle.on("captured",w=>{Promise.resolve().then(()=>Yt(S,w))});let k=h.handle;return{get state(){return k.state},on:(w,ee)=>k.on(w,ee),start:w=>k.start(w),retry:()=>k.retry(),switchCamera:()=>k.switchCamera(),destroy:()=>{S.alive=!1,T===S&&(T=null),k.destroy()}}},voiceClips:async()=>{if(u)return null;try{let d=await g();return u?null:d.voice??null}catch{return null}},on:(d,h)=>l.on(d,h),destroy:()=>{u=!0,p.abort(),T!==null&&(T.alive=!1,T.capture.handle.destroy(),T=null),l.clear()}}}var Be=["session.completed","session.failed","session.review_pending","session.expired","session.cancelled"],wr="sekyro-verify",_r="width=480,height=720,noopener=false",Er=new Set(Be);function Cr(t){if(t===null||typeof t!="object")return!1;let e=t;return e.source==="sekyro"&&e.version===1&&typeof e.sessionId=="string"&&typeof e.event=="string"&&Er.has(e.event)}function Tr(t){let e=new URL(t.hostedUrl).origin,n=window.open(t.hostedUrl,wr,_r);if(!n)return{error:"popup_blocked"};let r=i=>{if(i.source!==n||i.origin!==e||!Cr(i.data))return;let{source:s,version:o,event:a,sessionId:c}=i.data;t.onEvent({source:s,version:o,event:a,sessionId:c})};return window.addEventListener("message",r),{close(){window.removeEventListener("message",r),n.close()}}}function Bt(t,e){return e.mode==="redirect"?(window.location.assign(t),{close(){}}):Tr({hostedUrl:t,onEvent:e.onEvent??(()=>{})})}0&&(module.exports={DEFAULT_API_ORIGIN,HostedApiError,KNOWN_CODES,SEKYRO_EVENTS,createLivenessCapture,createVerification,getLivenessAssetsStatus,hasMultipleCameras,isKnownCode,openHosted,preloadLivenessAssets,queryCameraPermission,releaseLivenessAssets,subscribeCameraPermission,subscribeLivenessAssets});
1
+ "use strict";var qA=Object.create;var Vt=Object.defineProperty;var WA=Object.getOwnPropertyDescriptor;var zA=Object.getOwnPropertyNames;var XA=Object.getPrototypeOf,jA=Object.prototype.hasOwnProperty;var J=(e,t)=>()=>(e&&(t=e(e=0)),t);var ue=(e,t)=>{for(var n in t)Vt(e,n,{get:t[n],enumerable:!0})},Fo=(e,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of zA(t))!jA.call(e,o)&&o!==n&&Vt(e,o,{get:()=>t[o],enumerable:!(i=WA(t,o))||i.enumerable});return e};var Jt=(e,t,n)=>(n=e!=null?qA(XA(e)):{},Fo(t||!e||!e.__esModule?Vt(n,"default",{value:e,enumerable:!0}):n,e)),ZA=e=>Fo(Vt({},"__esModule",{value:!0}),e);function Po(e,t){return{video:{width:{ideal:1280,max:1280},height:{ideal:720,max:720},facingMode:t,frameRate:{ideal:24,max:30}},audio:!1}}function Ve(){return typeof window>"u"||typeof navigator>"u"?!1:window.innerWidth<=768||/Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(String(navigator.userAgent??""))}var Yt=J(()=>{"use strict"});function No(){let e=globalThis.MediaRecorder;return!e||typeof e.isTypeSupported!="function"?"":$A.find(t=>e.isTypeSupported(t))??""}function tt(e){if(e instanceof TypeError)return"insecure";switch(e?.name??""){case"NotAllowedError":case"PermissionDeniedError":return"permission";case"NotFoundError":case"DevicesNotFoundError":return"notfound";case"NotReadableError":case"TrackStartError":return"inuse";case"OverconstrainedError":case"ConstraintNotSatisfiedError":return"overconstrained";default:return"generic"}}function Oo(){let e=globalThis;if(typeof e.window<"u"&&e.window.isSecureContext===!1)return"INSECURE_CONTEXT";let t=e.navigator?.mediaDevices;return!t||typeof t.getUserMedia!="function"?"UNSUPPORTED":"OK"}function Ho(){let e=globalThis.MediaRecorder;return typeof e<"u"&&typeof e.isTypeSupported=="function"}function Kt(e){return e.size>jn}var $A,Go,jn,nt=J(()=>{"use strict";$A=["video/mp4;codecs=avc1.42E01E,mp4a.40.2","video/mp4;codecs=avc1.42E01E","video/mp4","video/webm;codecs=vp9,opus","video/webm;codecs=vp9","video/webm;codecs=vp8,opus","video/webm;codecs=vp8","video/webm"];Go="video/webm";jn=8*1024*1024});var Uo,Vo=J(()=>{"use strict";Uo="0.1.0-rc.8"});function Ko(){let e=globalThis.crypto;try{if(typeof e?.randomUUID=="function")return e.randomUUID()}catch{}try{if(typeof e?.getRandomValues=="function"){let t=e.getRandomValues(new Uint8Array(16));return Array.from(t,n=>n.toString(16).padStart(2,"0")).join("")}}catch{}}function ec(){try{let e=localStorage.getItem(Jo);if(e)return e;let t=Ko();return t!==void 0&&localStorage.setItem(Jo,t),t}catch{return Yo??(Yo=Ko()),Yo}}async function tc(){let e=globalThis.crypto?.subtle;if(!e)return"";let t=navigator,n=JSON.stringify([t.userAgent,t.platform,t.hardwareConcurrency??null,t.deviceMemory??null,t.maxTouchPoints??0,screen.width,screen.height,screen.colorDepth,globalThis.devicePixelRatio??1,Intl.DateTimeFormat().resolvedOptions().timeZone,t.languages?.join(",")??t.language]),i=await e.digest("SHA-256",new TextEncoder().encode(n));return Array.from(new Uint8Array(i),o=>o.toString(16).padStart(2,"0")).join("").slice(0,32)}function nc(e){let t=new TextEncoder().encode(e),n="";for(let i of t)n+=String.fromCharCode(i);return btoa(n).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function ic(e){let t,n;return{timezone(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone?.slice(0,64)||void 0}catch{return}},noteCameraLabel(i){i&&(t=i.slice(0,128))},async deviceHeader(){try{n??(n=tc().catch(()=>""));let i=[];navigator.webdriver&&i.push("webdriver"),/HeadlessChrome/.test(navigator.userAgent)&&i.push("headless");let o=await n,r=ec(),a={v:1,platform:"web",sdk:e.sdk.slice(0,64),ids:[...r?[{kind:"web_local",value:r.slice(0,128)}]:[],...o?[{kind:"web_fp",value:o}]:[]],screen:{w:screen.width,h:screen.height,dpr:globalThis.devicePixelRatio??1},...t?{cameraLabel:t}:{},...i.length?{signals:i}:{}};return nc(JSON.stringify(a))}catch{return}}}}function Wt(e){try{let t=e.getVideoTracks?.()[0];t&&qt.noteCameraLabel(t.label)}catch{}}var Jo,Yo,Zn,$n,qt,zt=J(()=>{"use strict";Vo();Jo="sekyro.did";Zn=Symbol.for("sekyro.web.clientContext"),$n=globalThis,qt=$n[Zn]??($n[Zn]=ic({sdk:`@sekyro/web@${Uo}`}))});var oc,rc,ac,qo,ve,Xt,Wo=J(()=>{"use strict";nt();oc=2500,rc=1e3,ac=1500,qo=25e5,ve=class extends Error{constructor(t,n){super(n??t),this.kind=t}},Xt=class{constructor(){this.recorder=null;this.stream=null;this.chunks=[];this.bytes=0;this.hardStopTimer=null;this.graceTimer=null;this.settled=!1}clearTimers(){this.hardStopTimer&&clearTimeout(this.hardStopTimer),this.graceTimer&&clearTimeout(this.graceTimer),this.hardStopTimer=null,this.graceTimer=null}record(t,n){if(this.recorder&&!this.settled)return Promise.reject(new ve("generic","record() called while a recording is in flight \u2014 ClipRecorder handles one recording at a time"));this.recorder=null,this.clearTimers(),this.chunks=[],this.bytes=0,this.settled=!1,this.stream=t;let i=No();return new Promise((o,r)=>{let a;try{a=new MediaRecorder(t,i?{mimeType:i,videoBitsPerSecond:qo}:{videoBitsPerSecond:qo})}catch{try{a=new MediaRecorder(t)}catch{r(new ve("unsupported"));return}}this.recorder=a;let s=c=>{this.settled||(this.settled=!0,this.clearTimers(),c())},A=()=>s(()=>{let c=a.mimeType||i||Go,l=new Blob(this.chunks,{type:c});if(l.size===0){r(new ve("generic","empty clip"));return}if(Kt(l)){r(new ve("cliptoolarge"));return}o({blob:l,mimeType:c})});a.ondataavailable=c=>{c.data&&c.data.size&&(this.chunks.push(c.data),this.bytes+=c.data.size,this.bytes>jn&&s(()=>{try{a.state!=="inactive"&&a.stop()}catch{}r(new ve("cliptoolarge"))}))},a.onstop=A,a.onerror=()=>s(()=>r(new ve("generic")));try{a.start(rc)}catch{s(()=>r(new ve("generic")));return}this.hardStopTimer=setTimeout(()=>{if(this.settled||n?.(),a.state!=="inactive"){try{a.stop()}catch{A()}this.graceTimer=setTimeout(A,ac)}else A()},oc)})}stop(t){this.clearTimers();let n=this.recorder;if(n&&n.state!=="inactive")try{n.stop()}catch{}this.recorder=null,(t??this.stream)?.getTracks().forEach(o=>o.stop()),this.stream=null}}});function zo(e,t,n=.92){return new Promise((i,o)=>{let r=e.videoWidth,a=e.videoHeight;if(!r||!a){o(new Error("video-not-ready"));return}let s=t.getContext("2d");if(!s){o(new Error("no-2d-context"));return}t.width=r,t.height=a,s.scale(-1,1),s.drawImage(e,-r,0),t.toBlob(A=>A?i(A):o(new Error("empty-keyframe")),"image/jpeg",n)})}var Xo=J(()=>{"use strict"});function sc(e){let t,n=-1;for(let i of e){let o=i.categories[0]?.score??0;o>n&&(t=i,n=o)}return t}function Ac(e,t){let n=e?.[0],i=e?.[1];if(n===void 0||i===void 0)return;let o=s=>({x:s.x*t.width,y:s.y*t.height}),[r,a]=[o(n),o(i)];return r.x<=a.x?{left:r,right:a}:{left:a,right:r}}var jo,jt,Zo=J(()=>{"use strict";Je();jo=1e4,jt=class e{constructor(t,n){this.tier="blaze";this.inner=t,n!==void 0&&(this.fallbackReason=n)}static async create(t,n){let i=await import("@mediapipe/tasks-vision"),o=await i.FilesetResolver.forVisionTasks(t),r=await i.FaceDetector.createFromOptions(o,{baseOptions:{modelAssetPath:`${t}/blaze_face_short_range.tflite`,delegate:"CPU"},runningMode:"IMAGE"});return new e(r,n)}async detect(t,n,i){let o;try{o=this.inner.detect(t).detections}catch{return null}let r=sc(o);if(r?.boundingBox===void 0)return null;let a=ht(t),s=Ac(r.keypoints,a),A=r.keypoints?.[2],c={box:{x:r.boundingBox.originX,y:r.boundingBox.originY,width:r.boundingBox.width,height:r.boundingBox.height},...s!==void 0?{eyes:s}:{},...A!==void 0?{nose:{x:A.x*a.width,y:A.y*a.height}}:{},score:r.categories[0]?.score??0};return Zt(c,t,n,i)}destroy(){try{this.inner.close()}catch{}}}});function cc(){if(typeof OffscreenCanvas=="function")return new OffscreenCanvas(2,2);let e=document.createElement("canvas");return e.width=2,e.height=2,e}async function $o(){let e=globalThis.FaceDetector;if(typeof e!="function")return{ok:!1,reason:"unsupported"};try{let t=new e({fastMode:!0,maxDetectedFaces:1});return await t.detect(cc()),{ok:!0,instance:t}}catch(t){return{ok:!1,reason:`smoke_failed:${t instanceof Error?t.message:String(t)}`}}}function lc(e){if(e===void 0)return;let t=e.filter(o=>o.type==="eye").map(o=>o.locations[0]).filter(o=>o!==void 0),[n,i]=t;if(!(n===void 0||i===void 0))return n.x<=i.x?{left:n,right:i}:{left:i,right:n}}var $t,er=J(()=>{"use strict";Je();$t=class{constructor(t,n){this.tier="native";this.inner=t,n!==void 0&&(this.fallbackReason=n)}async detect(t,n,i){let o;try{o=await this.inner.detect(t)}catch{return null}let r=o[0];if(r===void 0)return null;let a=lc(r.landmarks),s={box:{x:r.boundingBox.x,y:r.boundingBox.y,width:r.boundingBox.width,height:r.boundingBox.height},...a!==void 0?{eyes:a}:{},score:1};return Zt(s,t,n,i)}destroy(){}}});function ht(e){let t=e;if(typeof t.videoWidth=="number"&&t.videoWidth>0)return{width:t.videoWidth,height:t.videoHeight??0};if(typeof t.naturalWidth=="number"&&t.naturalWidth>0)return{width:t.naturalWidth,height:t.naturalHeight??0};let n=typeof t.width=="number"?t.width:0,i=typeof t.height=="number"?t.height:0;return{width:n,height:i}}function Zt(e,t,n,i){let o=ht(t),r=o.width>0?n/o.width:1,a=o.height>0?i/o.height:1,s=A=>({x:A.x*r,y:A.y*a});return{box:{x:e.box.x*r,y:e.box.y*a,width:e.box.width*r,height:e.box.height*a},...e.eyes!==void 0?{eyes:{left:s(e.eyes.left),right:s(e.eyes.right)}}:{},...e.nose!==void 0?{nose:s(e.nose)}:{},score:e.score}}function dc(e){return e instanceof Error?e.message:String(e)}async function Qe(e){let t=e.preferred??uc,n=[];for(let i of t){if(i==="native"){let o=await $o();if(o.ok)return new $t(o.instance,ei(n));n.push(`native:${o.reason}`);continue}try{return await gc(jt.create(e.v3AssetBaseUrl??ti,ei(n)),e.blazeInitTimeoutMs??jo)}catch(o){n.push(o instanceof en?"blaze:blaze_init_timeout":`blaze:${dc(o)}`)}}throw new pt(ei(n)??"no_tier_available")}function ei(e){return e.length>0?e.join("; "):void 0}function gc(e,t){return new Promise((n,i)=>{let o=setTimeout(()=>{i(new en(`init exceeded ${t}ms`)),e.then(r=>r.destroy(),()=>{})},t);e.then(r=>{clearTimeout(o),n(r)},r=>{clearTimeout(o),i(r)})})}var ti,uc,pt,en,Je=J(()=>{"use strict";Zo();er();ti="/models-v3",uc=["native","blaze"],pt=class extends Error{constructor(t){super(`no detector tier available (${t})`),this.name="DetectorLadderError",this.fallbackReason=t}};en=class extends Error{}});function tr(){return typeof OffscreenCanvas=="function"&&typeof createImageBitmap=="function"&&typeof Worker=="function"}function mc(e,t={}){let n=t.createDetector??Qe,i=null;e.onmessage=o=>{let r=o.data;if(r.v!==Ye){r.bitmap?.close?.();return}if(r.type==="init"){n(r.options).then(a=>{i=a;let s={v:Ye,type:"ready",tier:a.tier,...a.fallbackReason!==void 0?{fallbackReason:a.fallbackReason}:{}};e.postMessage(s)});return}if(r.type==="detect"){let a=s=>{let A={v:Ye,type:"result",id:r.id,observation:s};e.postMessage(A),r.bitmap.close?.()};if(i===null){a(null);return}i.detect(r.bitmap,r.streamWidth,r.streamHeight).then(a,()=>a(null))}}}var Ye,tn,nr=J(()=>{"use strict";Je();Ye=1;typeof self<"u"&&typeof self.importScripts=="function"&&mc(self);tn=class e{constructor(t,n){this.pending=new Map;this.nextId=1;this.worker=t,this.tier=n.tier,n.fallbackReason!==void 0&&(this.fallbackReason=n.fallbackReason),t.addEventListener("message",i=>{let o=i.data;if(o.v!==Ye||o.type!=="result")return;let r=this.pending.get(o.id);this.pending.delete(o.id),r?.(o.observation)})}static create(t,n,i=1e4){return new Promise((o,r)=>{let a=setTimeout(()=>{t.removeEventListener("message",s),t.terminate(),r(new Error(`worker detector not ready within ${i}ms`))},i),s=c=>{let l=c.data;l.v!==Ye||l.type!=="ready"||(clearTimeout(a),t.removeEventListener("message",s),o(new e(t,l)))};t.addEventListener("message",s);let A={v:Ye,type:"init",options:n};t.postMessage(A)})}async detect(t,n,i){let o;try{typeof ImageBitmap<"u"&&t instanceof ImageBitmap?o=t:typeof createImageBitmap=="function"?o=await createImageBitmap(t):o=t}catch{return null}let r=this.nextId;return this.nextId+=1,new Promise(a=>{this.pending.set(r,a);let s={v:Ye,type:"detect",id:r,bitmap:o,streamWidth:n,streamHeight:i};this.worker.postMessage(s,[o])})}destroy(){for(let t of this.pending.values())t(null);this.pending.clear(),this.worker.terminate()}}});function on(){let e=typeof navigator>"u"?void 0:navigator,t=!1;try{t=typeof WebAssembly<"u"&&WebAssembly.validate(pc)}catch{t=!1}return{cores:e?.hardwareConcurrency??2,memGB:e?.deviceMemory??null,simd:t}}function rn(e){let t=e.memGB??4;return e.cores<4||t<3?"LOW":e.cores>=8&&t>=6?"HIGH":"MID"}var hc,pc,ni,nn,ii=J(()=>{"use strict";hc=Object.freeze({LOW:Object.freeze({cadenceHz:5,inputWidth:128,animations:"reduced"}),MID:Object.freeze({cadenceHz:8,inputWidth:160,animations:"full"}),HIGH:Object.freeze({cadenceHz:10,inputWidth:192,animations:"full"})}),pc=new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11]);ni=["LOW","MID","HIGH"],nn=class{constructor(t){this.samples=[];this.adjusted=!1;this.current=t}get deviceClass(){return this.current}get profile(){return hc[this.current]}record(t){if(this.adjusted||this.samples.length>=10)return this.current;if(this.samples.push(t),this.samples.length<10)return this.current;this.adjusted=!0;let n=this.samples.reduce((i,o)=>i+o,0)/this.samples.length;if(n>70)this.current="LOW";else if(n<25){let i=ni.indexOf(this.current);this.current=ni[Math.min(ni.length-1,i+1)]??this.current}return this.current}}});var an,ir=J(()=>{"use strict";an=class{constructor(t){this.timer=null;this.frameCallbackId=null;this.running=!1;this.busy=!1;this.lastRunAt=Number.NEGATIVE_INFINITY;this.degradeCount=0;this.durations=[];this.options=t,this.periodMs=1e3/t.cadenceHz}start(){if(this.running)return;this.running=!0;let t=this.options.video;if(typeof t?.requestVideoFrameCallback=="function"){let n=()=>{this.running&&(this.frameCallbackId=t.requestVideoFrameCallback?.(()=>{this.frameCallbackId=null,this.now()-this.lastRunAt>=this.periodMs&&this.tick(),n()}))};n();return}this.timer=setInterval(()=>this.tick(),this.periodMs)}stop(){this.running=!1,this.timer!==null&&(clearInterval(this.timer),this.timer=null),this.frameCallbackId!==null&&(this.options.video?.cancelVideoFrameCallback?.(this.frameCallbackId),this.frameCallbackId=null)}stats(){let t=this.durations.length===0?0:this.durations.reduce((n,i)=>n+i,0)/this.durations.length;return{degradeCount:this.degradeCount,meanDetectMs:t}}now(){return this.options.now?.()??performance.now()}tick(){if(!this.running)return;if(this.busy){this.degradeCount+=1;return}this.busy=!0,this.lastRunAt=this.now();let t=this.now();this.options.run().catch(()=>{}).finally(()=>{this.busy=!1,this.durations.push(this.now()-t),this.durations.length>20&&this.durations.shift()})}}});function or(e,t){return .299*(e[t]??0)+.587*(e[t+1]??0)+.114*(e[t+2]??0)}function Ke(e){let{data:t,width:n,height:i}=e,o=n*i;if(o===0)return 0;let r=0;for(let a=0;a<o;a+=1)r+=or(t,a*4);return r/o}function we(e){let{data:t,width:n,height:i}=e;if(n<3||i<3)return 0;let o=new Float32Array(n*i);for(let l=0;l<o.length;l+=1)o[l]=or(t,l*4);let r=0,a=0,s=0;for(let l=1;l<i-1;l+=1)for(let d=1;d<n-1;d+=1){let m=l*n+d,h=(o[m-n]??0)+(o[m-1]??0)+(o[m+1]??0)+(o[m+n]??0)-4*(o[m]??0);r+=h,a+=h*h,s+=1}if(s===0)return 0;let A=r/s,c=a/s-A*A;return Math.min(1,Math.max(0,c)/180)}function it(e){let t=Ke(e),[n,i]=Se,o=t<n?n-t:t>i?t-i:0;return Math.max(0,1-o/fc)}var Se,fc,qe=J(()=>{"use strict";Se=[100,190],fc=64});var Ic,ot,sn,rr=J(()=>{"use strict";qe();Ic=Object.freeze({Q_GOOD:.6,RISE_PER_S:.9,FALL_PER_S:.25,CENTER_FALLOFF_IOD_MULTIPLE:1.35,BOX_EYE_OFFSET_FACTOR:.12,IOD_BOX_PROXY_FACTOR:.42,SIZE_IDEAL_MIN:.12,SIZE_IDEAL_MAX:.3,SIZE_HARD_MIN:.08,SIZE_HARD_MAX:.45,ROLL_MAX_DEG:25,MOTION_VELOCITY_IOD_PER_S:.5,MOTION_TAU_S:.4,MOTION_DEADBAND_IOD_PER_S:.1,READY_WINDOW_MS:500,GUIDE_SIZE:.6,GUIDE_CENTERING:.6,GUIDE_POSE:.6,GUIDE_EXPOSURE:.6,GUIDE_SHARPNESS:.35,GUIDE_MOTION:.5}),ot=e=>Math.min(1,Math.max(0,e)),sn=class{constructor(t={}){this.p=0;this.lastTickAt=null;this.lastCenter=null;this.velocityEma=0;this.qWindow=[];this.lastSizeDirection="ideal";this.t={...Ic,...t}}reset(){this.p=0,this.lastTickAt=null,this.lastCenter=null,this.velocityEma=0,this.qWindow=[],this.lastSizeDirection="ideal"}tick(t){let{observation:n,quality:i,timestampMs:o}=t,r=this.lastTickAt===null?0:Math.max(0,(o-this.lastTickAt)/1e3);this.lastTickAt=o;let a={presence:0,centering:0,size:0,pose:0,sharpness:ot(i.sharpness),exposure:ot(i.exposure),motion:1};if(n!==null){a.presence=1;let l=this.geometryOf(n,t);a.centering=l.centering,a.size=l.size,a.pose=l.pose,a.motion=this.motionOf(l.center,l.iod,o)}else this.lastCenter=null,this.velocityEma=0;let s=Math.min(a.presence,a.centering,a.size,a.pose,a.sharpness,a.exposure,a.motion);this.p=ot(this.p+(s>=this.t.Q_GOOD?this.t.RISE_PER_S*s:-this.t.FALL_PER_S*(1-s))*r),this.qWindow.push({at:o,q:s}),this.qWindow=this.qWindow.filter(l=>l.at>=o-this.t.READY_WINDOW_MS);let A=this.qWindow.map(l=>l.q);if(A.length>=3){let l=Math.min(...A),d=A.indexOf(l);A=A.filter((m,h)=>h!==d)}let c=this.p>=1&&A.every(l=>l>=this.t.Q_GOOD);return{at:o,q:s,p:this.p,factors:a,guidanceKey:this.guidanceOf(a,i,s),ready:c,accepted:s>=this.t.Q_GOOD}}geometryOf(t,n){let{box:i,eyes:o}=t,r={x:n.frameWidth/2,y:n.frameHeight/2},a=Math.min(n.frameWidth,n.frameHeight),s=o!==void 0?{x:(o.left.x+o.right.x)/2,y:(o.left.y+o.right.y)/2}:{x:i.x+i.width/2,y:i.y+i.height/2-this.t.BOX_EYE_OFFSET_FACTOR*i.height},A=o!==void 0?Math.hypot(o.right.x-o.left.x,o.right.y-o.left.y):this.t.IOD_BOX_PROXY_FACTOR*i.width,c=Math.hypot(s.x-r.x,s.y-r.y),l=A<=0?0:1-ot(c/(this.t.CENTER_FALLOFF_IOD_MULTIPLE*A)),d=a>0?A/a:0;this.lastSizeDirection=d<this.t.SIZE_IDEAL_MIN?"far":d>this.t.SIZE_IDEAL_MAX?"close":"ideal";let m;d<this.t.SIZE_HARD_MIN||d>this.t.SIZE_HARD_MAX?m=0:d<this.t.SIZE_IDEAL_MIN?m=(d-this.t.SIZE_HARD_MIN)/(this.t.SIZE_IDEAL_MIN-this.t.SIZE_HARD_MIN):d>this.t.SIZE_IDEAL_MAX?m=(this.t.SIZE_HARD_MAX-d)/(this.t.SIZE_HARD_MAX-this.t.SIZE_IDEAL_MAX):m=1;let h=1;if(o!==void 0){let u=Math.abs(Math.atan2(o.right.y-o.left.y,o.right.x-o.left.x))*180/Math.PI;h=1-ot(u/this.t.ROLL_MAX_DEG)}return{center:s,iod:A,centering:l,size:m,pose:h}}motionOf(t,n,i){let o=this.lastCenter;if(this.lastCenter={...t,at:i},o===null||n<=0)return 1;let r=(i-o.at)/1e3;if(r<=0)return 1;let a=Math.hypot(t.x-o.x,t.y-o.y)/n/r;a<=this.t.MOTION_DEADBAND_IOD_PER_S&&(a=0);let s=1-Math.exp(-r/this.t.MOTION_TAU_S);return this.velocityEma=s*a+(1-s)*this.velocityEma,1-ot(this.velocityEma/this.t.MOTION_VELOCITY_IOD_PER_S)}guidanceOf(t,n,i){if(t.presence<=0)return"fcv3.no_face";if(t.size<this.t.GUIDE_SIZE)return this.sizeGuidance();if(t.centering<this.t.GUIDE_CENTERING)return"fcv3.center_face";if(t.pose<this.t.GUIDE_POSE)return"fcv3.straighten";if(t.exposure<this.t.GUIDE_EXPOSURE)return this.exposureGuidance(n);if(t.sharpness<this.t.GUIDE_SHARPNESS)return"fcv3.steady_camera";if(t.motion<this.t.GUIDE_MOTION)return"fcv3.hold_still";if(i<this.t.Q_GOOD){let o=[["size",this.sizeGuidance()],["centering","fcv3.center_face"],["pose","fcv3.straighten"],["exposure",this.exposureGuidance(n)],["sharpness","fcv3.steady_camera"],["motion","fcv3.hold_still"]],r=o[0];for(let a of o)t[a[0]]<t[r[0]]&&(r=a);return r[1]}return"fcv3.hold_still"}sizeGuidance(){return this.lastSizeDirection==="far"?"fcv3.come_closer":"fcv3.move_back"}exposureGuidance(t){let n=(Se[0]+Se[1])/2;return t.meanLuma<n?"fcv3.more_light":"fcv3.too_bright"}}});function yc(e){if(e.accepted)return null;if(e.factors.presence<=0)return"no_face";let t="size";for(let n of Cc)e.factors[n]<e.factors[t]&&(t=n);return t}var Cc,An,ar=J(()=>{"use strict";Cc=["size","centering","pose","exposure","sharpness","motion"];An=class{constructor(){this.blocked={};this.acceptedMs=0;this.ticks=0;this.lastAt=null}record(t){let n=this.lastAt===null?0:Math.max(0,t.at-this.lastAt);this.lastAt=t.at,this.ticks+=1;let i=yc(t);if(i===null){this.acceptedMs+=n;return}let o=this.blocked[i]??{count:0,ms:0};o.count+=1,o.ms+=n,this.blocked[i]=o}summary(){let t={};for(let[n,i]of Object.entries(this.blocked))t[n]={count:i.count,ms:Math.round(i.ms)};return{blocked:t,acceptedMs:Math.round(this.acceptedMs),ticks:this.ticks}}}});var mr={};ue(mr,{RANK_CANDIDATES:()=>Ec,RANK_TOLERANCE:()=>cn,RANK_WINDOW_MS:()=>bc,ROLL_ZERO_DEG:()=>Qc,SHARPNESS_REPORT_MAX:()=>dr,YAW_REPORT_MAX:()=>ur,YAW_ZERO_IOD:()=>Bc,collectRankedKeyframes:()=>gr,default:()=>wc,featuresOf:()=>cr,frontalOf:()=>Ar,rankKeyframes:()=>lr});function Ar(e){let t=e.eyes;if(t===void 0)return{frontal:1,yaw:null,roll:null};let n=t.right.x-t.left.x,i=t.right.y-t.left.y,o=n*n+i*i;if(o===0)return{frontal:1,yaw:null,roll:null};let r=Math.abs(Math.atan2(i,Math.abs(n))*180/Math.PI),a=sr(1-r/30),s=null,A=e.nose;if(A!==void 0){let c=(t.left.x+t.right.x)/2,l=(t.left.y+t.right.y)/2;s=Math.abs(((A.x-c)*n+(A.y-l)*i)/o),a*=sr(1-s/.5)}return{frontal:a,yaw:s,roll:r}}function cr(e,t){return e===null?{face:!1,frontal:0,yaw:null,roll:null,eyes:null,score:0,sharpness:t}:{face:!0,...Ar(e),eyes:null,score:e.score,sharpness:t}}function lr(e){let t=e.map((o,r)=>r),n=(o,r)=>{let a=Number.NEGATIVE_INFINITY;for(let s of t)a=Math.max(a,o(e[s]));t=t.filter(s=>o(e[s])>=a-r)};n(o=>o.frontal,cn.frontal),n(o=>o.eyes??1,cn.eyes),n(o=>o.score,cn.score);let i=-1;for(let o of t)(i===-1||e[o].sharpness>e[i].sharpness)&&(i=o);return i}function Sc(e){return{face:e.face,frontal:rt(e.frontal),...e.yaw!==null?{yaw:Math.min(rt(e.yaw),ur)}:{},...e.roll!==null?{roll:rt(e.roll)}:{},...e.eyes!==null?{eyes:rt(e.eyes)}:{},score:rt(e.score),sharpness:Math.min(rt(e.sharpness),dr)}}async function gr(e,t){let{options:n}=e,i=n.video,o=n.now??(()=>performance.now()),r=n.captureKeyframe??(m=>e.defaultKeyframe(m)),a=600/3,s=[],A=[],c=0;for(let m=0;m<4;m+=1){if(t!==e.attempt)return null;let h=e.detector,u=Promise.resolve(null),f,p=0;try{if(h!==null){let Q=e.profiler?.profile.inputWidth??160,k=n.makeSnapshot?.(i,Q)??e.defaultSnapshot(i,Q);f=r(i).then(b=>(p=o(),b));let I=o();u=h.detect(k,i.videoWidth,i.videoHeight).then(b=>(c+=o()-I,b),()=>null)}else f=r(i).then(Q=>(p=o(),Q));let[C,w]=await Promise.all([f,u]);s.push(C),A.push(cr(w,C.sharpness))}catch{f?.catch(()=>{})}let g=p>0?Math.max(0,o()-p):0;m<3&&await new Promise(C=>setTimeout(C,Math.max(0,a-g)))}if(t!==e.attempt)return null;let l=lr(A);if(l===-1)return null;let d=0;A.forEach((m,h)=>{m.sharpness>A[d].sharpness&&(d=h)});try{n.telemetry?.({type:"keyframe",tier:e.detector?.tier??null,chosen:l,sharpest:d,detectMs:Math.round(c),candidates:A.map(Sc)})}catch{}return s[l]??null}var Ec,bc,Bc,Qc,cn,sr,rt,ur,dr,wc,hr=J(()=>{"use strict";Ec=4,bc=600,Bc=.5,Qc=30,cn={frontal:.1,eyes:.1,score:.05},sr=e=>e<0?0:e>1?1:e;rt=e=>Number.isFinite(e)?Math.round(e*1e3)/1e3:0,ur=99,dr=999999;wc=gr});function xc(e){return new Promise(t=>setTimeout(t,e))}function Dc(e){return e instanceof Error?e.message:String(e)}function fr(e,t,n){try{let i=document.createElement("canvas"),o=n/Math.max(1,t.width);i.width=Math.max(1,Math.round(t.width*o)),i.height=Math.max(1,Math.round(t.height*o));let r=i.getContext("2d");return r===null?null:(r.drawImage(e,t.x,t.y,t.width,t.height,0,0,i.width,i.height),r.getImageData(0,0,i.width,i.height))}catch{return null}}var kc,oi,Mc,pr,ln,ri,Ir=J(()=>{"use strict";zt();Yt();Wo();Xo();nt();Je();nr();ii();ir();rr();qe();ar();kc=1e3,oi=4,Mc=600,pr={sharpness:1,exposure:1,meanLuma:128},ln=class{constructor(t){this.handlers=new Map;this.stateValue="idle";this.attempt=0;this.stream=null;this.detector=null;this.scheduler=null;this.gate=null;this.profiler=null;this.lastGuidanceKey=null;this.positioningStartedAt=0;this.cameraRequestedAt=null;this.cameraReadyAt=null;this.faceAcquiredAt=null;this.captureCompleteAt=null;this.fired=!1;this.carriedDegrade=0;this.carriedMeans=[];this.blockStats=null;this.lastGateSnapshotAt=Number.NEGATIVE_INFINITY;this.snapshotCanvas=null;this.options=t,this.facing=t.facingMode??"user"}get state(){return this.stateValue}on(t,n){let i=this.handlers.get(t);return i||(i=new Set,this.handlers.set(t,i)),i.add(n),()=>i?.delete(n)}emit(t,n){for(let i of[...this.handlers.get(t)??[]])i(n)}async start(t={}){t.facingMode!==void 0&&(this.facing=t.facingMode),this.attempt+=1,await this.run(this.attempt)}get facingMode(){return this.facing}retry(){this.teardownAttempt(),this.start()}switchCamera(){this.facing=this.facing==="user"?"environment":"user",this.teardownAttempt(),this.start()}destroy(){this.attempt+=1,this.teardownAttempt(),this.detector?.destroy(),this.detector=null,this.options.video.srcObject=null}async run(t){let{options:n}=this;this.fired=!1,this.lastGuidanceKey=null,this.carriedDegrade=0,this.carriedMeans=[],this.cameraRequestedAt=null,this.cameraReadyAt=null,this.faceAcquiredAt=null,this.captureCompleteAt=null,this.setState("preflight");let i=Oo();if(i!=="OK"){this.fail(i==="INSECURE_CONTEXT"?"insecure":"unsupported");return}this.setState("acquiring");let o=n.getUserMedia??(A=>navigator.mediaDevices.getUserMedia(A)),r;this.cameraRequestedAt=this.now();try{r=await o(Po(Ve(),this.facing))}catch(A){if(t!==this.attempt)return;this.fail(tt(A));return}if(Wt(r),t!==this.attempt){for(let A of r.getTracks())A.stop();return}if(this.stream=r,n.video.srcObject=r,await n.video.play().catch(()=>{}),t!==this.attempt)return;if(this.cameraReadyAt=this.now(),this.detector===null){let A={...n.v3AssetBaseUrl!==void 0?{v3AssetBaseUrl:n.v3AssetBaseUrl}:{}},c=n.createDetector??(n.createWorker!==void 0&&tr()?async()=>{try{return await tn.create(n.createWorker(),A)}catch{return Qe(A)}}:()=>Qe(A)),l;try{l=await c()}catch(d){t===this.attempt&&this.fail("models",d instanceof pt?d.fallbackReason:Dc(d));return}if(t!==this.attempt){l.destroy();return}this.detector=l,this.options.telemetry?.({type:"detector",tier:l.tier,fallbackReason:l.fallbackReason})}let a=on(),s=n.deviceClass??rn(a);this.profiler=new nn(s),this.options.telemetry?.({type:"profile",staticClass:s,activeClass:this.profiler.deviceClass,simd:a.simd}),this.gate=new sn(n.thresholds??{}),this.blockStats=new An,this.lastGateSnapshotAt=this.now(),n.rankKeyframes?.()&&Promise.resolve().then(()=>(hr(),mr)).then(A=>ri=A,()=>{}),this.setState("positioning"),this.positioningStartedAt=this.now(),this.startScheduler(t)}get animations(){return this.profiler?.profile.animations??"full"}startScheduler(t){let n=this.profiler;if(n===null)return;if(this.scheduler!==null){let o=this.scheduler.stats();this.carriedDegrade+=o.degradeCount,o.meanDetectMs>0&&this.carriedMeans.push(o.meanDetectMs),this.scheduler.stop()}let i=new an({cadenceHz:n.profile.cadenceHz,video:this.options.video,now:this.options.now,run:()=>this.detectTick(t)});this.scheduler=i,i.start()}async detectTick(t){let{detector:n,gate:i,profiler:o}=this,r=this.options.video;if(t!==this.attempt||n===null||i===null||o===null||this.fired||r.videoWidth===0)return;let a=o.deviceClass,s=this.now(),A=this.options.makeSnapshot?.(r,o.profile.inputWidth)??this.defaultSnapshot(r,o.profile.inputWidth),c=null;try{c=await n.detect(A,r.videoWidth,r.videoHeight)}catch{c=null}if(t!==this.attempt||this.fired)return;o.record(this.now()-s),o.deviceClass!==a&&this.startScheduler(t);let l=c===null?pr:this.options.measureQuality?.(r,c.box)??this.defaultQuality(r,c.box),d=i.tick({timestampMs:this.now(),observation:c,quality:l,frameWidth:r.videoWidth,frameHeight:r.videoHeight});d.accepted&&this.faceAcquiredAt===null&&(this.faceAcquiredAt=d.at),this.blockStats?.record(d),!d.ready&&d.at-this.lastGateSnapshotAt>=kc&&(this.lastGateSnapshotAt=d.at,this.reportGate(!1)),this.emit("checks",{engine:"v3",progress:d.p,q:d.q,factors:d.factors,attempt:t}),d.guidanceKey!==this.lastGuidanceKey&&(this.lastGuidanceKey=d.guidanceKey,this.emit("guidance",{key:d.guidanceKey})),d.ready&&this.stateValue==="positioning"&&(this.fired=!0,this.captureCompleteAt=d.at,this.fire(t))}async fire(t){let{options:n}=this,i=this.scheduler;i?.stop(),this.reportGate(!0);let o=i?.stats()??{degradeCount:0,meanDetectMs:0},r=[...this.carriedMeans,...o.meanDetectMs>0?[o.meanDetectMs]:[]];n.telemetry?.({type:"fired",timeToGateMs:this.now()-this.positioningStartedAt,degradeCount:this.carriedDegrade+o.degradeCount,meanDetectMs:r.length===0?0:r.reduce((u,f)=>u+f,0)/r.length});let a=n.mode??"clip",s=n.rankKeyframes?.()&&ri?ri.default(this,t).catch(()=>this.collectKeyframes(t)):this.collectKeyframes(t);if(a==="photo"){let u=await s;if(t!==this.attempt)return;if(u===null){this.fail("generic");return}this.finishCapture({keyframe:u.blob,previewDataUrl:u.previewDataUrl});return}this.setState("recording");let A=n.createRecorder?.()??new Xt,c=this.stream;if(c===null){this.fail("generic");return}let l=null;s.then(u=>{l=u},()=>{});let d=()=>{t===this.attempt&&l!==null&&this.emit("frozen",{previewDataUrl:l.previewDataUrl})},m,h;try{[m,h]=await Promise.all([A.record(c,d),s])}catch(u){if(t!==this.attempt)return;let f=u.kind;this.fail(f==="cliptoolarge"?"cliptoolarge":"recorder");return}if(t===this.attempt){if(Kt(m.blob)){this.fail("cliptoolarge");return}if(h===null){this.fail("generic");return}this.finishCapture({clip:m.blob,clipMimeType:m.mimeType,keyframe:h.blob,previewDataUrl:h.previewDataUrl})}}async collectKeyframes(t){let n=this.options.captureKeyframe??(r=>this.defaultKeyframe(r)),i=Mc/(oi-1),o=null;for(let r=0;r<oi;r+=1){if(t!==this.attempt)return o;try{let a=await n(this.options.video);(o===null||a.sharpness>o.sharpness)&&(o=a)}catch{}r<oi-1&&await xc(i)}return o}finishCapture(t){this.stopTracks(),this.setState("captured");let n=this.captureTiming();this.emit("artifacts",n===void 0?t:{...t,timing:n})}captureTiming(){let t=(a,s)=>a!==null&&s!==null?Math.max(0,Math.round(s-a)):void 0,n=t(this.cameraRequestedAt,this.cameraReadyAt),i=t(this.cameraReadyAt,this.faceAcquiredAt),o=t(this.faceAcquiredAt,this.captureCompleteAt),r={...n!==void 0?{cameraReadyMs:n}:{},...i!==void 0?{faceAcquireMs:i}:{},...o!==void 0?{captureMs:o}:{}};return Object.keys(r).length>0?r:void 0}async defaultKeyframe(t){let n=document.createElement("canvas"),i=await zo(t,n),o=n.toDataURL("image/jpeg",.92);return{blob:i,previewDataUrl:o,sharpness:this.centerSharpness(t)}}defaultSnapshot(t,n){try{let i=this.snapshotCanvas??document.createElement("canvas"),o=n/Math.max(1,t.videoWidth),r=Math.max(1,Math.round(t.videoWidth*o)),a=Math.max(1,Math.round(t.videoHeight*o)),s=i.getContext("2d");return s===null?t:(i.width!==r&&(i.width=r),i.height!==a&&(i.height=a),s.drawImage(t,0,0,r,a),this.snapshotCanvas=i,i)}catch{return t}}defaultQuality(t,n){let i=fr(t,n,96);return i===null?pr:{sharpness:we(i),exposure:it(i),meanLuma:Ke(i)}}centerSharpness(t){let n=ht(t),i=fr(t,{x:n.width*.25,y:n.height*.25,width:n.width*.5,height:n.height*.5},96);return i===null?0:we(i)}teardownAttempt(){this.scheduler?.stop(),this.scheduler=null,this.reportGate(!0),this.gate=null,this.stopTracks()}reportGate(t){let n=this.blockStats,i=this.profiler;if(n===null||i===null)return;let o=n.summary();t&&(this.blockStats=null),o.ticks!==0&&this.options.telemetry?.({type:"gate",final:t,activeClass:i.deviceClass,cadenceHz:i.profile.cadenceHz,...o})}stopTracks(){if(this.stream!==null){for(let t of this.stream.getTracks())t.stop();this.stream=null}}fail(t,n){this.scheduler?.stop(),this.reportGate(!0),this.stopTracks(),this.setState("error"),this.options.telemetry?.({type:"error",kind:t,fallbackReason:n}),this.emit("error",{kind:t,retryable:t!=="insecure"&&t!=="unsupported"})}setState(t){this.stateValue=t,this.emit("statechange",{state:t})}now(){return this.options.now?.()??performance.now()}}});function Pe(){let e=new Map;return{on(t,n){let i=e.get(t);i===void 0&&(i=new Set,e.set(t,i));let o=n;return i.add(o),()=>{i?.delete(o)}},emit(t,n){let i=e.get(t);if(i!==void 0)for(let o of[...i])o(n)},clear(){e.clear()}}}var ft=J(()=>{"use strict"});function gn(){let e=globalThis;return e[un]??(e[un]=new Map),e[un]}function It(e){let t=(e??ti).replace(/\/+$/,"");return t===""?"/":t}function yr(e){let t=gn(),n=t.get(e);return n===void 0&&(n={status:"idle",promise:null,scheduled:null,detectorPromise:null,detector:null,listeners:new Set},t.set(e,n)),n}function dn(e,t){if(e.status!==t){e.status=t;for(let n of[...e.listeners])n(t)}}function Fc(){return typeof window<"u"&&typeof navigator<"u"&&typeof navigator.mediaDevices?.getUserMedia=="function"}function Pc(){return navigator.connection?.saveData===!0}function Nc(e){let t=window;if(typeof t.requestIdleCallback=="function"){let i=t.requestIdleCallback(e,{timeout:Rc});return()=>t.cancelIdleCallback?.(i)}let n=setTimeout(e,Tc);return()=>clearTimeout(n)}function Gc(e,t){let n,i=new Promise(s=>{n=s}),o=!1,r=()=>{},a={promise:i,settle:s=>{o||(o=!0,r(),e.scheduled===a&&(e.scheduled=null),n(s))}};return e.scheduled=a,r=Nc(()=>{o||a.settle(ai(e,t))}),i}function ai(e,t){if((e.status==="loading"||e.status==="ready")&&e.promise!==null)return e.promise;dn(e,"loading");let n=new Promise(s=>s(Lc(t)));e.detectorPromise=n;let i,o=new Promise((s,A)=>{i=setTimeout(()=>{n.then(c=>c.destroy(),()=>{}),A(new Error(`detector preload exceeded ${Cr} ms`))},Cr)}),a=Promise.race([n,o]).then(s=>e.detectorPromise!==n?(s.destroy(),e.status):(e.detector=s,dn(e,"ready"),"ready"),s=>(e.detectorPromise===n&&(e.detectorPromise=null,e.detector=null,dn(e,"failed"),console.warn("[@sekyro/web] face-detector preload failed:",s)),e.status)).finally(()=>clearTimeout(i));return e.promise=a,e.scheduled?.settle(a),a}function Er(e={}){if(!Fc())return Promise.resolve("idle");let t=It(e.assetBaseUrl),n=yr(t);return e.respectSaveData===!0&&Pc()?Promise.resolve(n.status):(n.status==="loading"||n.status==="ready")&&n.promise!==null?n.promise:e.idle===!0?n.scheduled?.promise??Gc(n,t):ai(n,t)}function br(e){return gn().get(It(e))?.status??"idle"}function Br(e,t){let n=yr(It(t));return n.listeners.add(e),()=>{n.listeners.delete(e)}}function Qr(e){let t=gn().get(It(e));t!==void 0&&(t.scheduled?.settle("idle"),t.detector?.destroy(),t.detector=null,t.detectorPromise=null,t.promise=null,dn(t,"idle"))}function Oc(e){return{get tier(){return e.tier},get fallbackReason(){return e.fallbackReason},detect:(...t)=>e.detect(...t),destroy:()=>{}}}function Sr(e){let t=It(e),n=gn().get(t);if(!(n===void 0||n.detector===null&&n.detectorPromise===null&&n.scheduled===null))return async()=>{n.scheduled!==null&&ai(n,t);let i=n.promise;for(;n.detector===null&&i!==null&&(await i,n.promise!==i);)i=n.promise;return n.detector!==null?Oc(n.detector):Qe({v3AssetBaseUrl:t})}}var vc,Cr,Rc,Tc,un,_c,Lc,si=J(()=>{"use strict";Je();vc=12e4,Cr=13e4,Rc=3e3,Tc=1200,un=Symbol.for("@sekyro/web.preload.v1");_c=e=>Qe({preferred:["blaze"],v3AssetBaseUrl:e,blazeInitTimeoutMs:vc}),Lc=_c});function wr(){if(typeof navigator>"u"||!("wakeLock"in navigator))return null;let e=navigator.wakeLock;return typeof e?.request=="function"?e:null}function kr(){return typeof document>"u"||document.visibilityState==="visible"}function Mr(e){try{e.release().catch(()=>{})}catch{}}function at(e={}){if(e.enabled===!1)return{setActive:()=>{}};let t=!1,n=null,i=!1,o=!1,r=()=>{if(!t||i||n!==null&&!n.released)return;let A=wr();if(A===null||!kr())return;let c;try{c=A.request("screen")}catch{return}i=!0,c.then(l=>{if(i=!1,!t){Mr(l);return}n=l,l.addEventListener?.("release",()=>{n===l&&(n=null)})},()=>{i=!1})},a=()=>{kr()&&r()},s=A=>{typeof document>"u"||A===o||(o=A,A?document.addEventListener("visibilitychange",a):document.removeEventListener("visibilitychange",a))};return{setActive:A=>{if(t=A,A){if(wr()===null)return;s(!0),r();return}if(s(!1),n!==null){let c=n;n=null,Mr(c)}}}}var mn=J(()=>{"use strict"});function Hc(e){switch(e){case"fcv3.no_face":case"fcv3.center_face":case"fcv3.straighten":return"center";case"fcv3.come_closer":return"closer";case"fcv3.move_back":return"farther";case"fcv3.more_light":case"fcv3.too_bright":return"light";case"fcv3.hold_still":case"fcv3.steady_camera":return"still";default:return null}}function Uc(e){switch(e){case"preflight":case"acquiring":return"starting";case"positioning":return"gating";default:return e}}function Ai(e){switch(e){case"permission":case"notfound":case"inuse":case"insecure":case"unsupported":return e;default:{let t=e;return"generic"}}}function ci(e,t={},n){let i=t.now??(()=>performance.now()),o=Pe(),r=!Ho(),a=t.engineOptions,s=a?.createDetector===void 0&&a?.createWorker===void 0?{createDetector:()=>{let L=Sr(e.assetBaseUrl);return L!==void 0?L():Qe({v3AssetBaseUrl:e.assetBaseUrl})}}:{},A={video:e.video,mode:r?"photo":"clip",rankKeyframes:n,facingMode:e.facing,v3AssetBaseUrl:e.assetBaseUrl,...t.engineOptions??{},...s},c=t.createEngine?.(A)??new ln(A),l="idle",d=null,m=0,h=!1,u="full",f=null,p=null,g=0,C=0,w=()=>{e.video.videoWidth>0&&e.video.videoHeight>0&&(g=e.video.videoWidth,C=e.video.videoHeight)},Q=at({enabled:e.keepScreenAwake!==!1}),k=L=>{l=L,Q.setActive(L==="starting"||L==="gating"||L==="recording"),o.emit("state",L)},I=()=>o.emit("gate",{progress:m,hint:d,faceDetected:h}),b=()=>{let L=c.animations??"full";L!==u&&(u=L,o.emit("profile",{animations:u}))},v=[c.on("statechange",({state:L})=>{let q=Uc(L);q==="starting"&&l!=="starting"&&(d=null,m=0,h=!1,f=null,p=null,g=0,C=0),k(q),b(),q==="recording"&&(w(),f=i(),d="hold",m=1,I())}),c.on("checks",L=>{w(),m=L.progress,h=L.factors.presence>0,I(),b()}),c.on("guidance",({key:L})=>{d=Hc(L),I()}),c.on("frozen",({previewDataUrl:L})=>{p=i(),o.emit("frozen",{previewDataUrl:L})}),c.on("artifacts",L=>{let q=f!==null&&p!==null?Math.max(0,Math.round(p-f)):void 0;o.emit("captured",{keyframe:L.keyframe,...L.clip!==void 0?{clip:L.clip}:{},...L.clipMimeType!==void 0?{clipMime:L.clipMimeType}:{},width:e.video.videoWidth||g,height:e.video.videoHeight||C,...q!==void 0?{clipMs:q}:{},captureChannel:Ve()?"mobile":"desktop",...r?{degraded:"NO_RECORDER"}:{},engine:"v3",...L.timing})}),c.on("error",({kind:L,retryable:q})=>{o.emit("error",{kind:Ai(L),retryable:q})})];return{handle:{get state(){return l},on:(L,q)=>o.on(L,q),start:L=>c.start({facingMode:L?.facing}),retry:()=>c.retry(),switchCamera:()=>c.switchCamera(),destroy:()=>{for(let L of v)L();Q.setActive(!1),c.destroy(),o.clear()}},setFlowState:L=>{l!==L&&k(L)}}}function xr(e){return ci(e).handle}var hn=J(()=>{"use strict";Yt();nt();Ir();Je();ft();si();mn()});function _r(e){return ui.includes(e)}var ui,ce,st=J(()=>{"use strict";ui=["session_token_invalid","session_token_required","session_token_session_mismatch","session_not_found","rate_limit_exceeded","consent_required","session_not_active","check_not_found","check_already_finalized","check_out_of_order","check_type_unsupported","force_outcome_forbidden","attestation_invalid","platform_unregistered","app_attest_invalid","too_many_challenges","inference_unavailable","mobile_required","nni_locked","method_required","method_locked","document_nni_mismatch","media_content_type_not_allowed","media_too_large","media_key_invalid","media_key_forbidden","media_not_found","media_unreadable","media_session_invalid","idempotency_key_collision","idempotency_in_progress","idempotency_key_required","validation_error","internal_error","unknown_error","upload_failed","network_error","timeout","method_not_offered","nfc_outcome_not_accepted","contact_locked","identity_confirm_required","identity_confirm_locked"];ce=class extends Error{constructor(t){super(t.message),this.name="HostedApiError",this.status=t.status,this.code=t.code,t.retryAfterSeconds!==void 0&&(this.retryAfterSeconds=t.retryAfterSeconds)}}});function At(e){return(e.split(";")[0]??"").trim()}function di(e){if((typeof e=="object"&&e!==null?e.name:void 0)==="TimeoutError")return new ce({status:0,code:"timeout",message:"request timed out"});let n=e instanceof Error?e.message:String(e);return new ce({status:0,code:"network_error",message:`network request failed: ${n}`})}function Xc(e){return e!==null&&typeof e=="object"&&"success"in e&&"data"in e?e.data:e}async function jc(e){let t="unknown_error",n=`request failed (HTTP ${e.status})`,i=Number.NaN;try{let a=await e.json();if(a!==null&&typeof a=="object"){let s=a;typeof s.code=="string"&&s.code.length>0&&(t=s.code),typeof s.message=="string"&&s.message.length>0&&(n=s.message),typeof s.retryAfterSeconds=="number"&&(i=s.retryAfterSeconds)}}catch{}let o=e.headers.get("retry-after"),r=o===null?Math.floor(i):Number.parseInt(o,10);return new ce({status:e.status,code:t,message:n,...Number.isFinite(r)&&r>=0?{retryAfterSeconds:r}:{}})}function Zc(e){return new Promise(t=>setTimeout(t,e))}var Vc,Lr,Jc,Yc,Kc,qc,Wc,zc,pn,gi=J(()=>{"use strict";zt();st();Vc=6e4,Lr=4,Jc=3e4,Yc=9e5,Kc=200,qc=5,Wc=400;zc={liveness:"clipKey",face_match:"imageKey",doc_ocr:"imageKey"},pn=class{constructor(t){this.sessionId=null;this.bootstrap=null;this.captureNonces=[];this.captureFetch=null;this.apiOrigin=t.apiOrigin.replace(/\/+$/,""),this.sessionToken=t.sessionToken;let n=t.fetch;this.fetchImpl=(i,o)=>(n??globalThis.fetch).call(globalThis,i,o),this.requestTimeoutMs=t.requestTimeoutMs??Jc,this.retryAttempts=t.inProgressRetry?.attempts??qc,this.retryDelayMs=t.inProgressRetry?.delayMs??Wc}async getSession(){let t=await this.api("GET","/hosted/session");return this.sessionId=t.sessionId,t}async recordConsent(t){return this.api("POST","/hosted/consent",{body:{locale:t}})}async selectMethod(t){let n=await this.api("POST","/hosted/method",{body:{method:t}});return this.sessionId=n.sessionId,n}async selectContact(t){return this.api("POST","/hosted/contact",{body:{channel:t}})}async confirmIdentity(t){return this.api("POST","/hosted/identity/confirm",{body:{decision:t}})}async identityPortrait(){return this.api("GET","/hosted/identity/portrait",{blob:!0})}async presign(t,n,i){let o=await this.ensureSessionId(),r={kind:t,contentType:At(n),contentLength:i};return this.api("POST",`/sessions/${o}/media`,{body:r})}armCapture(t=2){this.fillCaptureNonces(t)}async presignCapture(t,n,i,o={}){let r=await this.ensureSessionId(),a=await this.takeCaptureNonce(),s=a===void 0?void 0:{nonce:a,...o.engine!==void 0?{engine:o.engine.slice(0,32)}:{},...o.durationMs!==void 0&&Number.isFinite(o.durationMs)?{captureMs:Math.min(36e5,Math.max(0,Math.round(o.durationMs)))}:{}},A={kind:t,contentType:At(n),contentLength:i,...s!==void 0?{capture:s}:{}};return this.api("POST",`/sessions/${r}/media`,{body:A})}async takeCaptureNonce(){let t=()=>{let n=Date.now();return this.captureNonces=this.captureNonces.filter(i=>i.expiresAt-Vc>n),this.captureNonces.shift()?.nonce};for(let n=0;n<2;n++){let i=t();if(i!==void 0)return i;await this.fillCaptureNonces(1)}return t()}fillCaptureNonces(t){return this.captureFetch??(this.captureFetch=(async()=>{try{let n=await this.ensureSessionId(),i=await this.api("POST",`/sessions/${n}/media/capture-nonces`,{body:{count:Math.min(Lr,Math.max(1,t))}}),o=Date.now()+Math.max(0,i.expiresIn)*1e3;for(let r of Array.isArray(i.nonces)?i.nonces:[])typeof r=="string"&&r.length>0&&this.captureNonces.push({nonce:r,expiresAt:o});this.captureNonces=this.captureNonces.slice(-Lr)}catch{}})().finally(()=>{this.captureFetch=null})),this.captureFetch}async uploadToSpaces(t,n,i){let o;try{o=await this.fetchImpl(t,{method:"PUT",headers:{"content-type":At(i)},body:n,signal:AbortSignal.timeout(Yc)})}catch(r){throw di(r)}if(!o.ok){let r=(await o.text().catch(()=>"")).slice(0,Kc);throw new ce({status:o.status,code:"upload_failed",message:`media upload failed (HTTP ${o.status})${r?`: ${r}`:""}`})}}async completeMedia(t){let n=await this.ensureSessionId();return this.api("POST",`/sessions/${n}/media/complete`,{body:{key:t}})}async submitCheck(t,n,i={}){let o=await this.ensureSessionId(),r={input:n,...i.forceOutcome!==void 0?{forceOutcome:i.forceOutcome}:{}};return this.api("POST",`/sessions/${o}/checks/${t}`,{body:r,...i.idempotencyKey!==void 0?{idempotencyKey:i.idempotencyKey}:{}})}async uploadAndSubmit(t,n,i,o={}){let r=At(n.contentType),a=await this.presign(n.kind,r,n.blob.size);await this.uploadToSpaces(a.uploadUrl,n.blob,r);let s=await this.completeMedia(a.key),A={...i,[zc[t]]:s.key};return this.submitCheck(t,A,o)}async ensureSessionId(){return this.sessionId!==null?this.sessionId:(this.bootstrap??(this.bootstrap=this.getSession().finally(()=>{this.bootstrap=null})),(await this.bootstrap).sessionId)}async api(t,n,i={}){let o=`${this.apiOrigin}/api/v2${n}`,r={"x-session-token":this.sessionToken};i.body!==void 0&&(r["content-type"]="application/json"),i.idempotencyKey!==void 0&&(r["x-idempotency-key"]=i.idempotencyKey);try{let a=qt.timezone();a!==void 0&&(r["sekyro-client-timezone"]=a)}catch{}try{let a=await qt.deviceHeader();a!==void 0&&(r["sekyro-client-device"]=a)}catch{}for(let a=0;;a++){let s;try{s=await this.fetchImpl(o,{method:t,headers:r,...i.body!==void 0?{body:JSON.stringify(i.body)}:{},cache:"no-store",signal:AbortSignal.timeout(this.requestTimeoutMs)})}catch(c){throw di(c)}if(s.ok){if(i.blob===!0)try{return await s.blob()}catch(l){throw di(l)}let c;try{c=await s.json()}catch{throw new ce({status:s.status,code:"unknown_error",message:`response body was not valid JSON (HTTP ${s.status})`})}return Xc(c)}let A=await jc(s);if(A.code==="idempotency_in_progress"&&a<this.retryAttempts){this.retryDelayMs>0&&await Zc(this.retryDelayMs);continue}throw A}}}});function Re(e){let t=e.methodChoice;if(t===void 0||!t.available||t.selected!==null)return null;let n=Ie(e)?.checkType;return n==="phone_otp"||n==="email_otp"?null:t}function Et(e){return e!==void 0&&(e.state==="pending"||e.state==="input_required")}function pe(e){return e.status!=="created"&&e.status!=="in_progress"}function Ie(e){return e.steps.find(t=>Et(t))}function Te(e,t){return e.steps.find(n=>n.checkType===t)}function mi(e,t){let n=t.steps.find(o=>o.checkType==="liveness"),i=t.steps.find(o=>o.checkType==="face_match");return Te(e,"face_match")?.state==="pending"&&(n?.state==="passed"||n?.state==="review")&&i!==void 0&&i.state!=="pending"&&i.state!=="skipped"}function Fr(e,t,n){let i=new Map(e.steps.map(a=>[a.checkType,a])),o=n==="liveness"&&mi(e,t),r=t.steps.map(a=>{let s=i.get(a.checkType),A=s?.attemptsRemaining??0,c={...s??{},checkType:a.checkType,state:a.state,attemptsRemaining:a.checkType===n||a.checkType==="face_match"&&o?Math.max(0,A-1):A};return a.reason!==void 0?c.reason=a.reason:delete c.reason,a.attemptsExhausted!==void 0?c.attemptsExhausted=a.attemptsExhausted:delete c.attemptsExhausted,c});return{...e,status:t.status,outcome:t.outcome,failureReason:t.failureReason,steps:r,expiresAt:t.expiresAt}}function ke(e,t){return t===void 0?{sessionId:e,status:"unavailable"}:{sessionId:e,status:"unavailable",reason:t}}function Ct(e,t,n){return n===void 0?{sessionId:e,status:t}:{sessionId:e,status:t,reason:n}}function We(e,t){let{sessionId:n}=e;switch(e.status){case"completed":return e.outcome==="approved"?{sessionId:n,status:"approved"}:e.outcome==="review"?Ct(n,"review",yt(e,"review")):Ct(n,"rejected",yt(e,"failed"));case"failed":{let r=Ct(n,"rejected",e.failureReason??yt(e,"failed"));return e.failureReason==="device_cooldown"&&e.retryAfter!==void 0&&(r.retryAfter=e.retryAfter),r}case"review_pending":return Ct(n,"review",yt(e,"review"));case"expired":return ke(n);case"created":case"in_progress":break;default:{let r=e.status;throw new Error(`mapSessionResult: unhandled status ${r}`)}}let i=e.steps.find(r=>el.has(r.checkType)&&r.state==="input_required"&&r.reason!==void 0);if(i?.reason==="mobile_required")return ke(n,"mobile_required");if(i?.reason!==void 0){let r=t.autoRetry&&$c.has(i.reason)&&i.attemptsRemaining>0;return{sessionId:n,status:r?"retry":"rejected",reason:i.reason,attemptsRemaining:i.attemptsRemaining}}let o=Ie(e);return o===void 0&&e.steps.some(r=>r.state==="review")?Ct(n,"review",yt(e,"review")):o?.checkType==="portrait_icao"?ke(n,"portrait_required"):ke(n)}function yt(e,t){return e.steps.find(n=>n.state===t&&n.reason!==void 0)?.reason}var $c,el,bt=J(()=>{"use strict";$c=new Set(["no_face","media_unreadable","clip_too_short","no_face_source","side_missing","unreadable","registry_unavailable","otp_mismatch","otp_expired","otp_send_failed","document_type_not_accepted","age_unverifiable","nationality_unreadable","liveness_inconclusive","match_inconclusive","document_authenticity","probe_not_from_liveness","chip_read_failed","chip_access_denied","chip_parse_failed","icao_pose","icao_eyes","icao_mouth","icao_occlusion","icao_lighting","icao_background","icao_resolution","portrait_not_from_liveness","nni_recheck","device_integrity_failed","eid_identifier_invalid","eid_code_invalid","eid_code_expired","eid_unavailable","eid_resend_too_soon"]);el=new Set(["liveness","face_match"])});function Ne(e,t,n,i,o){return e.presignCapture!==void 0?e.presignCapture(t,n,i,o):e.presign(t,n,i)}function Nr(e){return{...e?.engine!==void 0?{engine:e.engine}:{},...e?.clipMs!==void 0?{durationMs:e.clipMs}:{}}}function ul(e){let t=e.steps.findIndex(i=>i.checkType==="liveness");return t<0?!1:e.steps.slice(t+1).find(i=>Et(i))?.checkType==="face_match"}async function ct(e,t,n={}){let i=e.uuid(),o=!1,r=!1,a=0,s=0;for(;;)try{return await t(e.client,i)}catch(A){if(A instanceof Qt){if(r)throw A;r=!0,n.onAttestationInvalid?.(),i=e.uuid();continue}if(!(A instanceof ce))throw A;if(A.code==="consent_required"&&!o){o=!0,await e.ensureConsent({force:!0}),i=e.uuid();continue}if(A.code==="attestation_invalid"&&!r){r=!0,n.onAttestationInvalid?.(),i=e.uuid();continue}if(A.code==="inference_unavailable"&&s<rl){s+=1;let c=Math.min(A.retryAfterSeconds??al,sl);e.onBusy?.({attempt:s,retryAfterSeconds:c}),await e.sleep(c*1e3),n.onAttestationInvalid?.(),i=e.uuid();continue}if(cl.has(A.code)&&a<nl){a+=1;let c=A.retryAfterSeconds!==void 0?A.retryAfterSeconds*1e3:void 0;await e.sleep(c!==void 0?Math.min(c,ol):il);continue}throw A}}async function Gr(e){let{artifacts:t}=e,n=t.clip,i=At(t.clipMime??"");if(t.degraded==="NO_RECORDER"||n===void 0||!tl.includes(i))return{kind:"unavailable",reason:"no_recorder"};e.client.armCapture?.(2);let o=gl(e,t.keyframe),r=ml(e,n,i,o),a=hl(e,o),s=!1,A=!1,c=!0,l=0;for(;;){if(e.isCancelled())return{kind:"cancelled"};let d=e.getView();if(pe(d))return{kind:"settled"};let m=Ie(d)?.checkType,h=m==="liveness"&&!s?"liveness":m==="face_match"&&!A&&c?"face_match":null;if(h===null)return{kind:"settled"};if(h==="liveness"&&t.captureChannel==="desktop"&&Te(d,"liveness")?.requiresMobile===!0)return{kind:"unavailable",reason:"mobile_required"};try{if(h==="liveness"){s=!0;let u=await r();if(e.isCancelled())return{kind:"cancelled"};A=mi(d,u),e.applySubmit(u,"liveness");let f=Te(e.getView(),"liveness")?.state;c=f===void 0||dl.has(f)}else{A=!0;let u=await a();if(e.isCancelled())return{kind:"cancelled"};e.applySubmit(u,"face_match")}}catch(u){if(e.isCancelled()||u instanceof Bt)return{kind:"cancelled"};let f=fl(u);if(f.kind!=="resync"||l>=Al)return f;l+=1,await e.refreshView()}}}function gl(e,t){let n=null,i=null,o=()=>n!==null?Promise.resolve(n):(i??(i=(async()=>{let r=await Ne(e.client,"image",Pr,t.size,Nr(e.artifacts));return await e.client.uploadToSpaces(r.uploadUrl,t,Pr),n=(await e.client.completeMedia(r.key)).key,e.onKeyframePromoted?.(n),n})().finally(()=>{i=null})),i);return{ensure:o,attempt:()=>o().catch(()=>null),current:()=>n}}function ml(e,t,n,i){let o=null,r,a=null;return()=>ct(e,async(s,A)=>{if(o===null||r===void 0){if(e.isCancelled())throw new Bt;r===void 0&&!ul(e.getView())&&(r=null),e.onPhase("uploading");let[c,l]=await Promise.all([o!==null?Promise.resolve(o):(async()=>{let d=await Ne(s,"clip",n,t.size,Nr(e.artifacts));return await s.uploadToSpaces(d.uploadUrl,t,n),(await s.completeMedia(d.key)).key})(),r!==void 0?Promise.resolve(r===null?null:r.imageKey):i.attempt()]);o=c,r===void 0&&(r=l===null?null:{imageKey:l})}if(a===null)try{a=await e.getAttestation()}catch(c){throw new Qt(c instanceof Error?c.message:String(c))}return e.onPhase("checking"),s.submitCheck("liveness",{clipKey:o,attestation:a,captureChannel:e.artifacts.captureChannel,capture:pl(e.artifacts),...r!==null?{faceMatch:r}:{}},{idempotencyKey:A})},{onAttestationInvalid:()=>{a=null}})}function hl(e,t){return()=>ct(e,async(n,i)=>{if(t.current()===null){if(e.isCancelled())throw new Bt;e.onPhase("uploading")}let o=await t.ensure();return e.onPhase("checking"),n.submitCheck("face_match",{imageKey:o},{idempotencyKey:i})})}function pl(e){return{...e.engine!==void 0?{engine:e.engine}:{},width:e.width,height:e.height,...e.clipMs!==void 0?{clipMs:e.clipMs}:{},...e.cameraReadyMs!==void 0?{cameraReadyMs:e.cameraReadyMs}:{},...e.faceAcquireMs!==void 0?{faceAcquireMs:e.faceAcquireMs}:{},...e.captureMs!==void 0?{captureMs:e.captureMs}:{}}}function fl(e){if(e instanceof Qt)return{kind:"unavailable",reason:"attestation"};if(e instanceof ce){if(e.code==="attestation_invalid")return{kind:"unavailable",reason:"attestation"};if(e.code==="method_required")return{kind:"unavailable",reason:"method_required"};if(e.code==="inference_unavailable")return{kind:"unavailable",reason:"inference_unavailable"};if(e.code==="mobile_required")return{kind:"unavailable",reason:"mobile_required"};if(ll.has(e.code))return{kind:"resync"}}return{kind:"unavailable",reason:"network"}}var tl,Pr,nl,il,ol,rl,al,sl,Al,cl,ll,Bt,Qt,dl,lt=J(()=>{"use strict";st();gi();bt();tl=["video/webm","video/mp4"],Pr="image/jpeg",nl=2,il=1e3,ol=1e4,rl=3,al=10,sl=30,Al=3,cl=new Set(["network_error","timeout","upload_failed","unknown_error","rate_limit_exceeded"]),ll=new Set(["session_not_active","check_not_found","check_already_finalized","check_out_of_order","identity_confirm_required"]),Bt=class extends Error{constructor(){super("verification destroyed"),this.name="FlowCancelledError"}};Qt=class extends Error{constructor(t){super(t),this.name="AttestationError"}};dl=new Set(["passed","review","processing","skipped"])});var Vr={};ue(Vr,{TURNSTILE_EXECUTE_TIMEOUT_MS:()=>Il,TURNSTILE_SCRIPT_SRC:()=>Hr,executeTurnstile:()=>yl,loadTurnstile:()=>Ur,resetTurnstileForTests:()=>Cl});function Or(){return window.turnstile}function Cl(){St=null}function Ur(){return St??(St=new Promise((e,t)=>{let n=Or();if(n){e(n);return}let i=document.createElement("script");i.src=Hr,i.async=!0,i.onload=()=>{let o=Or();o?e(o):(St=null,t(new Error("Turnstile script loaded but exposed no API")))},i.onerror=()=>{St=null,i.remove(),t(new Error("Turnstile script failed to load"))},document.head.appendChild(i)})),St}function hi(){return new Error("Turnstile challenge aborted")}async function yl(e,t={}){let n=t.timeoutMs??3e4,i=t.signal;if(i?.aborted)throw hi();let o=await Ur();if(i?.aborted)throw hi();let r=document.createElement("div");document.body.appendChild(r);let a,s,A;try{return await new Promise((c,l)=>{if(s=setTimeout(()=>l(new Error(`Turnstile challenge timed out (${n} ms)`)),n),i!==void 0&&(A=()=>l(hi()),i.addEventListener("abort",A,{once:!0})),a=o.render(r,{sitekey:e,execution:"execute",appearance:"execute",callback:c,"error-callback":d=>{l(new Error(`Turnstile challenge failed${d?` (${d})`:""}`))}}),a===void 0){l(new Error("Turnstile render returned no widget id"));return}o.execute(a)})}finally{if(clearTimeout(s),i!==void 0&&A!==void 0&&i.removeEventListener("abort",A),a!==void 0)try{o.remove(a)}catch{}r.remove()}}var Hr,Il,St,Jr=J(()=>{"use strict";Hr="https://challenges.cloudflare.com/turnstile/v0/api.js",Il=3e4;St=null});function Yr(e){return pi[e==="card"?"ID-1":e]}function fn(e,t){return El[e].some(n=>Math.abs(t-pi[n].center)<=pi[n].tolerance)}function Kr(e){let t=Bl.find(n=>n.docType===e);return t===void 0||t.format==="ID-1"?"card":t.format}var pi,El,bl,Bl,wt=J(()=>{"use strict";pi={"ID-1":{center:1.586,tolerance:.15},"ID-2":{center:1.419,tolerance:.12},"ID-3":{center:1.42,tolerance:.2}},El={"ID-1":["ID-1"],"ID-2":["ID-2"],"ID-3":["ID-3"],card:["ID-1","ID-2"]};bl=[{docType:"carte_identite",format:"ID-1",sides:["recto","verso"],mrz:"td1",portraitSide:"recto",aspectRatio:1.586,identifierSource:"mrz"},{docType:"passport",format:"ID-3",sides:["single"],mrz:"td3",portraitSide:"single",aspectRatio:1.42,identifierSource:"mrz"}],Bl=[...bl,{docType:"residence_permit",format:"ID-1",sides:["recto","verso"],mrz:"td1",portraitSide:"recto",aspectRatio:1.586,identifierSource:"mrz"}]});function Sl(e){let{width:t,height:n,data:i}=e;if(t<16||n<16)return-1;let o=new Uint8Array(t*n);for(let a=0,s=0;a<o.length;a+=1,s+=4)o[a]=Math.round(.299*(i[s]??0)+.587*(i[s+1]??0)+.114*(i[s+2]??0));let r=-1;for(let[a,s]of Ql){let A=new Uint32Array(256),c=new Float64Array(256),l=0;for(let p=1;p<n-1;p+=1){let g=p*t,C=(p+s)*t,w=(p-s)*t;for(let Q=1;Q<t-1;Q+=1){let k=o[C+Q+a]??0,I=o[w+Q-a]??0,b=Math.abs(k-I);A[b]=(A[b]??0)+1,c[b]=(c[b]??0)+Math.abs(k+I-2*(o[g+Q]??0)),l+=1}}let d=Math.max(1,Math.floor(l/20)),m=0,h=0,u=0;for(let p=255;p>=0&&m<d;p-=1){let g=A[p]??0;m+=g,h+=g*p,u+=c[p]??0}if(h===0)return 0;let f=u/h;r=r<0?f:Math.min(r,f)}return r}function kt(e,t,n,i=wl){if(e===null||t.width<=0||t.height<=0)return null;let o=[e.topLeft,e.topRight,e.bottomRight,e.bottomLeft],r=n.width/t.width,a=n.height/t.height,s=Math.min(...o.map(g=>g.x))*r,A=Math.max(...o.map(g=>g.x))*r,c=Math.min(...o.map(g=>g.y))*a,l=Math.max(...o.map(g=>g.y))*a,d=(A-s)*i,m=(l-c)*i,h=Math.max(0,Math.floor(s-d)),u=Math.max(0,Math.floor(c-m)),f=Math.min(n.width,Math.ceil(A+d)),p=Math.min(n.height,Math.ceil(l+m));return f-h<16||p-u<16?null:{x:h,y:u,width:f-h,height:p-u}}function In(e,t){let n=t??{x:0,y:0,width:e.width,height:e.height},i=Math.min(1,1e3/Math.max(n.width,n.height)),o=Math.max(1,Math.round(n.width*i)),r=Math.max(1,Math.round(n.height*i)),a=document.createElement("canvas");a.width=o,a.height=r;try{let s=a.getContext("2d",{willReadFrequently:!0});return s===null?-1:(s.imageSmoothingQuality="high",s.drawImage(e,n.x,n.y,n.width,n.height,0,0,o,r),Sl(s.getImageData(0,0,o,r)))}catch{return-1}finally{a.width=0,a.height=0}}var Ql,wl,fi=J(()=>{"use strict";Ql=[[1,0],[0,1],[1,1],[1,-1]];wl=.06});function Ml(e){let{deviceMemory:t,effectiveType:n,saveData:i,downlinkMbps:o,sourceLongEdge:r}=e,a=i===!0||n==="slow-2g"||n==="2g"||o!=null&&o>0&&o<1,s=t!=null&&t<=2,A=n==="4g"||o!=null&&o>=5,c=t!=null&&t>=6,l;a||s?l="low":A&&c?l="good":l="mid";let d=kl[l],m=r&&r>0?Math.min(d.maxLongEdge,r):d.maxLongEdge;return{tier:l,...d,maxLongEdge:m}}function qr(e){let t={};try{let n=navigator;typeof n.deviceMemory=="number"&&(t.deviceMemory=n.deviceMemory);let i=n.connection;i&&(t.effectiveType=i.effectiveType,t.saveData=i.saveData,t.downlinkMbps=i.downlink)}catch{}return typeof e=="number"&&e>0&&(t.sourceLongEdge=e),Ml(t)}function xl(e,t,n){let i=Math.min(1,Math.max(0,(e-.28)/.21999999999999997)),o=(t+n)/2;return Math.max(t,n-i*(n-o))}function Dl(e,t,n){let i=Math.max(e,t),o=i>0?Math.min(1,n/i):1;return{width:Math.max(1,Math.round(e*o)),height:Math.max(1,Math.round(t*o))}}async function vl(e,t){let n=t.startQ,i=await e(n);for(let o=0;o<4&&!(i.size<=t.budgetBytes||n<=t.qMin);o++)n=Math.max(t.qMin,n-.08),i=await e(n);return{blob:i,quality:n}}async function Wr(e,t,n,i,o){if(t<=0||n<=0)return null;let{width:r,height:a}=Dl(t,n,i.maxLongEdge),s=document.createElement("canvas");s.width=r,s.height=a;let A=s.getContext("2d");if(!A)return null;A.drawImage(e,0,0,r,a);let c=h=>new Promise((u,f)=>{s.toBlob(p=>p?u(p):f(new Error("canvas toBlob returned null")),"image/jpeg",h)}),l=xl(o,i.qMin,i.qMax),{blob:d,quality:m}=await vl(c,{startQ:l,qMin:i.qMin,budgetBytes:i.payloadTargetBytes}).finally(()=>{s.width=0,s.height=0});if(d.size>5242880)throw new Error("encoded document exceeds the 5242880-byte media cap");return{blob:d,quality:m,width:r,height:a}}var kl,zr=J(()=>{"use strict";kl={low:{maxLongEdge:1920,payloadTargetBytes:7e5,qMin:.7,qMax:.92},mid:{maxLongEdge:2240,payloadTargetBytes:12e5,qMin:.7,qMax:.92},good:{maxLongEdge:2560,payloadTargetBytes:16e5,qMin:.7,qMax:.92}}});async function Xr(e){let t=qr(Math.max(e.width,e.height)),n=await Wr(e,e.width,e.height,t,.5);if(n===null)throw new Error("canvas encode unavailable");return{blob:n.blob,width:n.width,height:n.height}}var jr=J(()=>{"use strict";zr()});function Ci(e,t){return{layout:e,phase:"framing",captured:{},pending:[],lastCaptureAt:t,lastReportAt:t,manualShutter:!1,restPhase:"framing",readSides:[],needFlip:!1,flipped:!1,flipTimeoutSpent:!1,timeoutCapture:!1,lastShotByTimeout:!1}}function Ii(e,t){return e.lastCaptureAt>=0&&e.lastReportAt>=0?e:{...e,lastCaptureAt:e.lastCaptureAt<0?t:e.lastCaptureAt,lastReportAt:e.lastReportAt<0?t:e.lastReportAt}}function Rl(e,t,n){if(e.phase==="result")return{...e,lastReportAt:n};let i=!t.present||e.captureArea!==void 0&&t.areaFrac<.6*e.captureArea,{flipped:o,awaySince:r}=e;i&&(r=r??n),r!==void 0&&n-r>=250&&(o=!0),i||(r=void 0);let a=e.flipTimeoutSpent&&!(o&&!e.flipped),s={...e,lastReportAt:n,flipped:o,awaySince:r,flipTimeoutSpent:a,lastArea:t.areaFrac};if(!$r(e))return s;if(e.needFlip&&!o){if(!t.ready)return{...s,phase:e.restPhase,goodSince:void 0};let A=e.lastShot!==void 0&&e.pending.includes(e.lastShot);if(a||A)return{...s,goodSince:void 0,phase:e.restPhase};let c=e.goodSince??n;return n-c>=1800?{...s,goodSince:c,phase:"capturing",flipTimeoutSpent:!0,timeoutCapture:!0}:{...s,goodSince:c,phase:e.restPhase}}return t.ready?{...s,phase:"capturing",goodSince:e.goodSince??n}:{...s,goodSince:void 0,phase:t.locking?"locking":e.restPhase}}function Tl(e,t){if(!$r(e)||e.manualShutter)return e;let n=t-e.lastReportAt>=2e3,i=t-e.lastCaptureAt>=6e3;return n||i?{...e,manualShutter:!0}:e}function _l(e,t,n){let i=e.layout==="singlePage",o=i?{recto:t}:e.captured,r=i?[]:[...e.pending,t],a={...e,captured:o,pending:r,lastShot:t,lastCaptureAt:n,lastReportAt:-1,manualShutter:!1,goodSince:void 0,notice:void 0,awaySince:void 0,flipped:!1,lastShotByTimeout:e.timeoutCapture,timeoutCapture:!1,captureArea:e.lastArea};return i||yi({captured:o,pending:r})>=2?{...a,phase:"reading",restPhase:"framing",current:void 0,needFlip:!1}:{...a,phase:"flipCue",restPhase:"flipCue",current:void 0,needFlip:!0}}function ea(e,t,n){return e.pending.includes(t)?{...e,pending:e.pending.filter(i=>i!==t),lastShot:e.lastShot===t?void 0:e.lastShot,phase:e.phase==="capturing"?e.phase:"flipCue",restPhase:"flipCue",current:Zr(n),needFlip:!0,flipTimeoutSpent:!0,goodSince:void 0,manualShutter:!0,notice:"same_face",lastCaptureAt:-1,lastReportAt:-1}:e}function Ll(e,t,n){if(!e.pending.includes(t))return e;if(e.captured[n]!==void 0)return ea(e,t,n);let i=e.pending.filter(A=>A!==t),o={...e,pending:i,captured:{...e.captured,[n]:t}};if(yi(o)!==1||e.layout==="singlePage")return o;let r=Zr(n),a=r==="recto"&&e.restPhase==="reaskRecto"?"reaskRecto":"flipCue",s=e.phase==="flipCue"||e.phase==="reaskRecto"||e.phase==="framing";return{...o,restPhase:a,current:r,phase:s?a:e.phase}}function Fl(e,t){let n=t.id??e.captured[t.side],i={...e.captured};(t.id===void 0||i[t.side]===t.id)&&delete i[t.side];let o=e.pending.filter(c=>c!==n),r=e.layout==="twoSided"&&yi({captured:i,pending:o})>0,a=e.lastShotByTimeout||n===e.lastShot!==e.flipped,s=r&&!a,A=s?t.side==="recto"?"reaskRecto":"flipCue":"framing";return{...e,captured:i,pending:o,readSides:e.readSides.filter(c=>c!==t.side),lastShot:e.lastShot===n?void 0:e.lastShot,notice:t.issue,goodSince:void 0,manualShutter:!1,phase:A,restPhase:A,current:t.side,needFlip:s,flipped:!1,flipTimeoutSpent:!1,awaySince:void 0,lastCaptureAt:-1,lastReportAt:-1}}function ta(e,t){switch(t.type){case"report":return Rl(Ii(e,t.at),t.report,t.at);case"tick":return Tl(Ii(e,t.at),t.at);case"captured":return _l(Ii(e,t.at),t.id,t.at);case"captureFailed":return{...e,phase:e.restPhase,goodSince:void 0,lastCaptureAt:t.at,manualShutter:!0,timeoutCapture:!1};case"classified":return Ll(e,t.id,t.side);case"duplicate":return ea(e,t.id,t.side);case"readOk":{let n=e.readSides.includes(t.side)?e.readSides:[...e.readSides,t.side],i=["recto","verso"].filter(r=>e.captured[r]!==void 0),o=e.phase==="reading"&&e.pending.length===0&&i.every(r=>n.includes(r));return{...e,readSides:n,flipTimeoutSpent:!1,phase:o?"result":e.phase}}case"readFailed":return Fl(e,t);case"clockRestart":return e.lastCaptureAt<0&&e.lastReportAt<0&&e.awaySince===void 0?e:{...e,awaySince:void 0,lastCaptureAt:-1,lastReportAt:-1};case"retake":return{...Ci(e.layout,-1),lastCaptureAt:-1,lastReportAt:-1};default:return e}}var Zr,$r,yi,na=J(()=>{"use strict";Zr=e=>e==="recto"?"verso":"recto",$r=e=>e.phase==="framing"||e.phase==="locking"||e.phase==="flipCue"||e.phase==="reaskRecto",yi=e=>(e.captured.recto!==void 0?1:0)+(e.captured.verso!==void 0?1:0)+e.pending.length});var oa={};ue(oa,{MRZ_BAND_DEFAULTS:()=>ia,detectMrzBand:()=>Ei});function Ei(e,t={}){let n={...ia,...t},{data:i,width:o,height:r}=e;if(o<32||r<32)return null;let a=new Array(r).fill(!1),s=new Float32Array(r),A=new Int32Array(r).fill(o),c=new Int32Array(r).fill(-1),l=o/Cn,d=new Array(Cn);for(let I=0;I<r;I++){let b=0;d.fill(!1);let v=I*o*4,O=.299*(i[v]??0)+.587*(i[v+1]??0)+.114*(i[v+2]??0);for(let q=1;q<o;q++){let Z=v+q*4,R=.299*(i[Z]??0)+.587*(i[Z+1]??0)+.114*(i[Z+2]??0);Math.abs(R-O)>=n.EDGE_LUMA_DELTA&&(b+=1,d[Math.min(Cn-1,Math.floor(q/l))]=!0,q<A[I]&&(A[I]=q),q>c[I]&&(c[I]=q)),O=R}s[I]=b/o;let L=d.filter(Boolean).length/Cn;a[I]=s[I]>=n.MIN_ROW_DENSITY&&L>=n.MIN_COLUMN_COVERAGE&&c[I]-A[I]>=n.MIN_WIDTH_FRAC*o}let m=null,h=-1,u=-1,f=0,p=I=>{if(h<0)return;let b=I-h+1;b>=n.MIN_HEIGHT_FRAC*r&&b<=n.MAX_HEIGHT_FRAC*r&&f>=4&&(m===null||f>m.rows)&&(m={top:h,bottom:I,rows:f}),h=-1,f=0};for(let I=0;I<r;I++)a[I]&&(h<0?h=I:I-u>n.ROW_MERGE_GAP&&(p(u),h=I),u=I,f+=1);if(p(u),m===null)return null;let g=m,C=o,w=-1,Q=0,k=0;for(let I=g.top;I<=g.bottom;I++)a[I]&&(A[I]<C&&(C=A[I]),c[I]>w&&(w=c[I]),Q+=s[I],k+=1);return w-C<n.MIN_WIDTH_FRAC*o?null:{x:C,y:g.top,width:w-C,height:g.bottom-g.top+1,density:k>0?Q/k:0}}var ia,Cn,bi=J(()=>{"use strict";ia=Object.freeze({EDGE_LUMA_DELTA:40,MIN_ROW_DENSITY:.08,MIN_COLUMN_COVERAGE:.6,MIN_WIDTH_FRAC:.55,MIN_HEIGHT_FRAC:.02,MAX_HEIGHT_FRAC:.16,ROW_MERGE_GAP:18}),Cn=12});function Pl(e,t,n=!1){let i=e(t);return i===null?"recto":!n||i.y+i.height/2>=t.height/2?"verso":"recto"}async function Nl(e,t=!1){let{detectMrzBand:n}=await Promise.resolve().then(()=>(bi(),oa));return Pl(n,e,t)}async function Bi(e,t=480,n,i=n!=null){let o=n??{x:0,y:0,width:e.width,height:e.height},r=Math.max(1,Math.round(o.height/o.width*t)),a=document.createElement("canvas");a.width=t,a.height=r;try{let s=a.getContext("2d");return s===null?"recto":(s.drawImage(e,o.x,o.y,o.width,o.height,0,0,t,r),await Nl(s.getImageData(0,0,t,r),i))}finally{a.width=0,a.height=0}}var ra=J(()=>{"use strict"});function Gl(e,t){let n=e.lineBoxes;if(n.length===0)return{lineCount:0,detected:!1,fill:0,offsetX:0,offsetY:0,centers:[]};let i=Math.min(...n.map(s=>s[0])),o=Math.max(...n.map(s=>s[0]+s[2])),r=Math.min(...n.map(s=>s[1])),a=Math.max(...n.map(s=>s[1]+s[3]));return{lineCount:n.length,detected:n.length>=t.minLines,fill:o-i,offsetX:(i+o)/2-.5,offsetY:(r+a)/2-.5,centers:n.map(s=>[s[0]+s[2]/2,s[1]+s[3]/2])}}function Ol(e,t){if(e.centers.length===0||t.centers.length===0)return Number.POSITIVE_INFINITY;let n=0;for(let[i,o]of t.centers){let r=Number.POSITIVE_INFINITY;for(let[a,s]of e.centers)r=Math.min(r,Math.hypot(i-a,o-s));n+=r}return n/t.centers.length}var Qi,yn,aa=J(()=>{"use strict";Qi=Object.freeze({minLines:4,fillMin:.55,fillMax:.98,offsetMax:.12,steadyFillDelta:.04,steadyOffsetDelta:.03,layoutShiftMax:.025,lineCountDelta:1,lockMs:600,steadyMs:900,minFrames:3});yn=class{constructor(t=Qi){this.t=t;this.last=null;this.goodSince=null;this.steadySince=null;this.frames=0}offer(t,n,i={glareOk:!0,sharpOk:!0}){let o=this.t,r=Gl(t,o),a=this.last;this.last=r;let s=r.fill>=o.fillMin&&r.fill<=o.fillMax,A=Math.abs(r.offsetX)<=o.offsetMax&&Math.abs(r.offsetY)<=o.offsetMax,c=a!==null&&a.detected&&Math.abs(r.lineCount-a.lineCount)<=o.lineCountDelta&&Ol(a,r)<=o.layoutShiftMax,l=r.detected&&i.glareOk&&i.sharpOk&&s&&c&&a!==null&&Math.abs(r.fill-a.fill)<=o.steadyFillDelta&&Math.abs(r.offsetX-a.offsetX)<=o.steadyOffsetDelta&&Math.abs(r.offsetY-a.offsetY)<=o.steadyOffsetDelta,d=l&&A,m=r.detected?i.glareOk?r.fill<o.fillMin?"closer":r.fill>o.fillMax?"farther":A?i.sharpOk?void 0:"blurry":"center":"glare":void 0;return l?(this.frames++,this.steadySince??(this.steadySince=n),this.goodSince=d?this.goodSince??n:null,(this.goodSince!==null&&n-this.goodSince>=o.lockMs||n-this.steadySince>=o.steadyMs)&&this.frames>=o.minFrames?{state:"locked"}:{state:"locking",...m?{hint:m}:{}}):(this.goodSince=null,this.steadySince=null,this.frames=r.detected?1:0,{state:r.detected?"locking":"searching",...m?{hint:m}:{}})}reset(){this.last=null,this.goodSince=null,this.steadySince=null,this.frames=0}}});var En,sa=J(()=>{"use strict";En=class{constructor(t=2){this.stableReads=t;this.last=null;this.run=0}offer(t){return t===null?(this.reset(),!1):(this.run=t===this.last?this.run+1:1,this.last=t,this.run>=this.stableReads)}reset(){this.last=null,this.run=0}}});function Ul(e){return e<=250?"fast":e<=600?"mid":"slow"}function Aa(e,t,n){let i=e.y+e.h*t,o=Math.min(n,e.y+e.h*1.05);return{x:e.x,y:i,w:e.w,h:Math.max(1,o-i)}}var wi,ki,Hl,Si,bn,Bn=J(()=>{"use strict";aa();sa();wi=Object.freeze({...Qi,minIntervalMs:150,maxWidthPx:480,detectorLimit:960,searchTimeoutMs:12e3}),ki=Object.freeze({detectorLimit:960,bandMaxWidthPx:1280,minBandWidthPx:900,bandTop:.55,minIntervalMs:150,stableReads:2,profileReads:5,maxReadMs:1200,searchTimeoutMs:12e3}),Hl=(e,t,n)=>createImageBitmap(e,Math.round(t.x),Math.round(t.y),Math.max(1,Math.round(t.w)),Math.max(1,Math.round(t.h)),{resizeWidth:Math.max(1,Math.round(Math.min(t.w,n))),resizeQuality:"high"}),Si=(e,t)=>{if(e.length===0)return 0;let n=[...e].sort((i,o)=>i-o);return n[Math.min(n.length-1,Math.floor(n.length*t))]};bn=class{constructor(t){this.o=t;this.engine=null;this.gen=0;this.inFlight=!1;this.lastReadAt=Number.NEGATIVE_INFINITY;this.firstSeen=null;this.reads=0;this.times=[];this.mrzState={state:"searching"};this.lockState={state:"searching"};this.fallback=null;this.lockOff=!1;this.lockError=!1;this.fired=null;this.valid=null;this.faceMode="off";this.disabled=!1;this.crop=t.crop??Hl,this.mrzGate=new En(t.liveMrz?.stableReads??2),this.lockGate=new yn(t.textLock??wi)}setEngine(t){this.engine=t}get bandTop(){return this.o.liveMrz?.bandTop??ki.bandTop}get hasEngine(){return this.engine!==null&&!this.disabled}reset(){this.gen++,this.inFlight=!1,this.lastReadAt=Number.NEGATIVE_INFINITY,this.firstSeen=null,this.reads=0,this.times=[],this.mrzGate.reset(),this.lockGate.reset(),this.mrzState={state:"searching"},this.lockState={state:"searching"},this.fallback=null,this.lockOff=!1,this.lockError=!1,this.fired=null,this.valid=null,this.faceMode="off"}rearmFace(){this.gen++,this.inFlight=!1,this.lastReadAt=Number.NEGATIVE_INFINITY,this.mrzGate.reset(),this.lockGate.reset(),this.fired=null,this.valid=null,this.fallback===null&&(this.mrzState={state:"searching"}),this.lockOff||(this.lockState={state:"searching"})}liveCapture(){return this.fired?.via==="live_mrz"?this.valid:null}modeFor(t){return this.engine===null||this.disabled?"off":t.mrzFace&&this.o.liveMrz!==null&&this.fallback===null?"live_mrz":this.o.textLock!==null&&!this.lockOff?"text_lock":"off"}tick(t){let n=this.modeFor(t);return n!=="off"&&(this.faceMode=n),this.fired!==null?{ready:!0,via:this.fired.via,suspendQuality:this.fired.via==="live_mrz",mode:n,...this.states()}:n==="live_mrz"?this.liveTick(t,this.o.liveMrz):n==="text_lock"?this.lockTick(t,this.o.textLock):{ready:!1,suspendQuality:!1,mode:n,...this.states()}}states(){return{...this.faceMode==="live_mrz"||this.fallback!==null?{mrz:this.fallback!==null?{state:"fallback",reason:this.fallback}:this.mrzState}:{},...this.faceMode==="text_lock"?{lock:this.lockState}:{}}}canRead(t,n){let i=this.engine;return i!==null&&!this.inFlight&&!i.busy&&t-this.lastReadAt>=n}fall(t){this.fallback=t,this.mrzGate.reset()}liveTick(t,n){let i=()=>this.fallback!==null?{ready:!1,suspendQuality:!1,mode:"live_mrz",mrz:{state:"fallback",reason:this.fallback}}:{ready:!1,suspendQuality:!0,mode:"live_mrz",mrz:this.mrzState};if(!t.present||t.band===null)return this.mrzGate.reset(),this.mrzState={state:"searching"},i();if(this.firstSeen??(this.firstSeen=t.atMs),t.atMs-this.firstSeen>n.searchTimeoutMs)return this.fall("timeout"),i();if(t.band.w<n.minBandWidthPx)return t.card!==null&&t.card.w<n.minBandWidthPx?(this.fall("unsupported"),i()):(this.mrzState={state:"reading",coach:t.portrait?"turnSideways":"moveCloser"},{ready:!1,suspendQuality:!1,mode:"live_mrz",mrz:this.mrzState});if(!this.canRead(t.atMs,n.minIntervalMs))return i();this.inFlight=!0,this.lastReadAt=t.atMs;let o=this.gen,r=this.engine,a=t.glareOk?t.sharpOk?void 0:"holdStill":"glare";return this.crop(t.video,t.band,n.bandMaxWidthPx).then(s=>r.bandRead(s,n.detectorLimit)).then(s=>{if(o===this.gen){if(this.reads++,this.times.push(s.ms),this.times.length>8&&this.times.shift(),this.reads>=n.profileReads&&Si(this.times,.5)>n.maxReadMs)return this.fall("slow");if(this.mrzGate.offer(s.valid?s.digest??null:null)&&s.format&&s.digest){this.valid={format:s.format,...s.documentCode!==void 0?{documentCode:s.documentCode}:{},digest:s.digest,lineCount:s.lineCount,framesToValid:this.reads,msToValid:Math.round(t.atMs-(this.firstSeen??t.atMs))},this.mrzState={state:"valid",format:s.format},this.fired={via:"live_mrz",at:t.atMs};return}this.mrzState={state:"reading",...a?{coach:a}:{},...s.format?{format:s.format}:{}}}}).catch(()=>{o===this.gen&&this.fall("error")}).finally(()=>{o===this.gen&&(this.inFlight=!1)}),i()}lockTick(t,n){let i=()=>({ready:!1,suspendQuality:!1,mode:"text_lock",lock:this.lockState,...this.fallback!==null?{mrz:{state:"fallback",reason:this.fallback}}:{}});if(!t.present||t.card===null)return this.lockGate.reset(),this.lockState={state:"searching"},i();if(this.firstSeen??(this.firstSeen=t.atMs),t.atMs-this.firstSeen>n.searchTimeoutMs)return this.lockOff=!0,i();if(!this.canRead(t.atMs,n.minIntervalMs))return i();this.inFlight=!0,this.lastReadAt=t.atMs;let o=this.gen,r=this.engine,a={glareOk:t.glareOk,sharpOk:t.sharpOk};return this.crop(t.video,t.card,n.maxWidthPx).then(s=>r.layoutRead(s,n.detectorLimit)).then(s=>{if(o!==this.gen)return;this.reads++,this.times.push(s.ms),this.times.length>8&&this.times.shift();let A=this.lockGate.offer(s,t.atMs,a);this.lockState=A.state==="locked"?{state:"locked"}:{state:A.state,...A.hint?{hint:A.hint}:{}},A.state==="locked"&&(this.fired={via:"text_lock",at:t.atMs})}).catch(()=>{o===this.gen&&(this.lockOff=!0,this.lockError=!0)}).finally(()=>{o===this.gen&&(this.inFlight=!1)}),i()}disable(){this.disabled=!0,this.reset()}report(t,n,i){let o=this.faceMode;if(o==="off")return null;let r=Si(this.times,.5),a={capture:t,mode:o,reads:this.reads,...this.times.length>0?{readP50Ms:Math.round(r),readP90Ms:Math.round(Si(this.times,.9)),deviceClass:Ul(r)}:{}};return o==="live_mrz"?this.fired?.via==="live_mrz"&&this.valid!==null&&n==="live_mrz"?{...a,outcome:"valid",format:this.valid.format,framesToValid:this.valid.framesToValid,msToValid:this.valid.msToValid}:this.fallback!==null?{...a,outcome:this.fallback}:{...a,outcome:i-(this.firstSeen??i)>=(this.o.liveMrz?.searchTimeoutMs??1/0)?"timeout":"off"}:this.fired?.via==="text_lock"?{...a,outcome:"locked",framesToLock:Math.max(1,this.reads),msToLock:Math.round(this.fired.at-(this.firstSeen??this.fired.at))}:{...a,outcome:this.lockError?"error":this.lockOff?"timeout":"off"}}}});async function ca(e,t,n,i){let o=i.decode??(A=>createImageBitmap(A)),r=async()=>e.stillRead(await o(t),i.region??[0,0,1,1],i.detectorLimit),a;try{a=await r()}catch{try{await new Promise(A=>setTimeout(A,i.retryMs??300)),a=await r()}catch{return null}}let s=a.mrzBox;return s===void 0?null:{engine:i.engine,source:"live_mrz",format:n.format,lineCount:Mi(n.lineCount,2,3),checkDigitsValid:!0,stillConfirmed:a.valid&&a.digest===n.digest,band:[Qn(s[0]),Qn(s[1]),Qn(Math.min(s[2],1-s[0])),Qn(Math.min(s[3],1-s[1]))],digest:n.digest,framesToValid:Mi(n.framesToValid,1,1e3),msToValid:Mi(n.msToValid,0,12e4)}}var Mi,Qn,la=J(()=>{"use strict";Mi=(e,t,n)=>Math.min(n,Math.max(t,Math.round(e))),Qn=e=>Math.round(Math.min(1,Math.max(0,e))*1e4)/1e4});function ua(e,t=globalThis){let n=t.WebAssembly?.validate;if(typeof n!="function")return{ok:!1,reason:"simd"};try{if(!n.call(t.WebAssembly,Vl)||!n.call(t.WebAssembly,Jl))return{ok:!1,reason:"simd"}}catch{return{ok:!1,reason:"simd"}}if(typeof t.Worker!="function")return{ok:!1,reason:"worker"};if(typeof t.createImageBitmap!="function")return{ok:!1,reason:"bitmap"};let i=t.navigator?.deviceMemory;return typeof i=="number"&&i<e.minDeviceMemoryGb?{ok:!1,reason:"memory"}:{ok:!0}}function da(e=globalThis){let t=e.navigator?.connection;return t?.saveData===!0||["slow-2g","2g","3g"].includes(t?.effectiveType??"")}var Vl,Jl,ga=J(()=>{"use strict";Vl=new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11]),Jl=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,7,1,5,0,6,64,11,11])});function ma(){let e=t=>(t.close(),Promise.reject(new Ce("unsupported")));return{ready:Promise.resolve("unsupported"),busy:!1,bandRead:e,stillRead:e,layoutRead:e,dispose:()=>{}}}function ha(e){let t;try{if(e.createWorker)t=e.createWorker();else if(e.workerUrl!==void 0)t=new Worker(e.workerUrl,{type:"module",name:"sekyro-ocr"});else return ma()}catch{return ma()}let n=new Map,i=0,o=!1,r=!1,a=!1;t.addEventListener("message",p=>{let g=p.data,C=n.get(g.id);C&&(n.delete(g.id),C.resolve(g))});let s=()=>{for(let p of n.values())p.reject(new Ce("error"));n.clear(),c()};t.addEventListener("error",s),t.addEventListener("messageerror",s);function A(p,g=[]){if(o)return Promise.reject(new Ce("disposed"));let C=++i;return new Promise((w,Q)=>{n.set(C,{resolve:w,reject:Q});try{t.postMessage({...p,id:C},g)}catch{n.delete(C),Q(new Ce("error"))}})}function c(){if(!o){o=!0;try{t.postMessage({id:++i,kind:"dispose"})}catch{}t.terminate();for(let p of n.values())p.reject(new Ce("disposed"));n.clear()}}let l=(async()=>{let p=await A({kind:"init",baseUrl:e.baseUrl,salt:e.salt,detectorLimit:e.tuning.detectorLimit,maxDownloadMs:e.tuning.maxDownloadMs});if(p.kind==="failed")return p.reason;if(p.kind!=="ready")return"error";let g=await A({kind:"warmup"});return g.kind!=="ready"?"error":{warmupMs:g.warmupMs,downloadMs:p.downloadMs,cached:p.cached}})().catch(()=>"error"),d,m=new Promise(p=>{d=setTimeout(()=>p("timeout"),e.tuning.loadTimeoutMs)}),h=Promise.race([l,m]).then(p=>(clearTimeout(d),typeof p=="string"?c():a=!0,o&&typeof p!="string"?"error":p));(e.page===void 0?globalThis.addEventListener?globalThis:null:e.page)?.addEventListener("pagehide",c,{once:!0});async function f(p,g,C){if(o)throw g.close(),new Ce("disposed");if(!a)throw g.close(),new Ce("not_ready");if(r)throw g.close(),new Ce("busy");r=!0;let w;try{let Q=new Promise((I,b)=>{w=setTimeout(()=>{b(new Ce("timeout")),c()},e.tuning.readTimeoutMs??1e4)}),k=await Promise.race([A(p,[g]),Q]);if(k.kind===C){let{id:I,...b}=k;return b}throw new Ce(k.kind==="error"?k.code:k.kind==="failed"?k.reason:"error")}finally{clearTimeout(w),r=!1}}return{ready:h,get busy(){return r},bandRead:(p,g=e.tuning.detectorLimit)=>f({kind:"band",bitmap:p,detectorLimit:g},p,"band"),stillRead:(p,g,C=e.tuning.detectorLimit)=>f({kind:"still",bitmap:p,region:g,detectorLimit:C},p,"band"),layoutRead:(p,g)=>f({kind:"layout",bitmap:p,detectorLimit:g},p,"layout"),dispose:c}}var Ce,pa=J(()=>{"use strict";Ce=class extends Error{constructor(t){super(t),this.name="OcrEngineError",this.code=t}}});function Ca(e,t={}){let n=xi(e),i=xi(n.liveMrz),o=xi(n.frontLock),r=Ia(t.engine??Mt),a=t.mode==="off",s=p=>p.enabled===!0?p.arm==="live"?"live":"control":null,A=s(i),c=s(o),l=(p,g)=>!a&&g==="live"&&Ia(p.minEngine??Mt)<=r,d=ki,m=l(i,A)?{detectorLimit:ge(i.detectorLimit,320,1600,d.detectorLimit),bandMaxWidthPx:ge(i.bandMaxWidthPx,320,4096,d.bandMaxWidthPx),minBandWidthPx:ge(i.minBandWidthPx,0,4096,d.minBandWidthPx),bandTop:ge(i.bandTop,0,.95,d.bandTop),minIntervalMs:ge(i.minIntervalMs,0,5e3,d.minIntervalMs),stableReads:Math.round(ge(i.stableReads,1,10,d.stableReads)),profileReads:Math.round(ge(i.profileReads,1,100,d.profileReads)),maxReadMs:ge(i.maxReadMs,50,6e4,d.maxReadMs),searchTimeoutMs:ge(i.searchTimeoutMs,1e3,12e4,d.searchTimeoutMs),hint:fa(i.hint,!0),stillConfirm:fa(i.stillConfirm,!0)}:null,h=wi,u=(p,g,C)=>ge(o[p],g,C,h[p]),f=l(o,c)?{minLines:Math.round(u("minLines",1,50)),fillMin:u("fillMin",0,1),fillMax:u("fillMax",0,2),offsetMax:u("offsetMax",0,1),steadyFillDelta:u("steadyFillDelta",0,1),steadyOffsetDelta:u("steadyOffsetDelta",0,1),layoutShiftMax:u("layoutShiftMax",0,1),lineCountDelta:Math.round(u("lineCountDelta",0,50)),lockMs:u("lockMs",0,3e4),steadyMs:u("steadyMs",0,3e4),minFrames:Math.round(u("minFrames",1,100)),minIntervalMs:u("minIntervalMs",0,5e3),maxWidthPx:u("maxWidthPx",160,2048),detectorLimit:u("detectorLimit",320,1600),searchTimeoutMs:u("searchTimeoutMs",1e3,12e4)}:null;return{enabled:m!==null||f!==null,liveMrz:m,textLock:f,liveMrzArm:A,frontLockArm:c,load:{detectorLimit:m?.detectorLimit??f?.detectorLimit??d.detectorLimit,loadTimeoutMs:ge(i.loadTimeoutMs,1e3,12e4,2e4),maxDownloadMs:ge(i.maxDownloadMs,1e3,12e4,2e4),minDeviceMemoryGb:ge(i.minDeviceMemoryGb,0,64,2)},reportSampleRate:ge(i.reportSampleRate,0,1,1)}}function ya(e,t){return e.enabled?!(t.probe??ua)({minDeviceMemoryGb:e.load.minDeviceMemoryGb}).ok||(t.slow??da)()?{ok:!1,reason:"unsupported"}:{ok:!0,engine:ha({baseUrl:t.baseUrl,salt:t.salt,tuning:{detectorLimit:e.load.detectorLimit,maxDownloadMs:e.load.maxDownloadMs,loadTimeoutMs:e.load.loadTimeoutMs},...t.workerUrl!==void 0?{workerUrl:t.workerUrl}:{},...t.createWorker!==void 0?{createWorker:t.createWorker}:{},...t.page!==void 0?{page:t.page}:{}})}:{ok:!1,reason:"off"}}function Yl(e=typeof navigator<"u"?navigator.userAgent:""){return/SamsungBrowser\//.test(e)?"samsung":/Firefox\/|FxiOS\//.test(e)?"firefox":/Chrome\/|CriOS\/|Chromium\//.test(e)&&!/Edg\/|OPR\//.test(e)?"chrome":/Safari\//.test(e)&&/Version\/|Mobile\//.test(e)&&!/Chrome\/|CriOS\//.test(e)?"safari":"other"}function Ea(e){let t=e.assist??null,n=e.load!==null&&e.load!==void 0&&typeof e.load=="object"?e.load:null,i=typeof e.load=="string"?e.load:null,o=t!==null?t.outcome:i==="unsupported"||i==="download"||i==="integrity"?i:i==="error"||i==="timeout"?"error":"off",r={kind:"live_mrz",platform:"web",engine:e.engine??Mt,arm:e.arm,capture:e.capture,outcome:o,reads:Di(t?.reads??0,0,1e4)??0,browser:e.browser??Yl()},a=(s,A)=>{A!==void 0&&(r[s]=A)};return a("format",t?.format),a("framesToValid",Di(t?.framesToValid,1,1e4)),a("msToValid",ze(t?.msToValid)),a("framesToLock",Di(t?.framesToLock,1,1e4)),a("msToLock",ze(t?.msToLock)),a("msToCapture",ze(e.msToCapture)),a("readP50Ms",ze(t?.readP50Ms)),a("readP90Ms",ze(t?.readP90Ms)),a("deviceClass",t?.deviceClass),n!==null&&(a("warmupMs",ze(n.warmupMs)),a("downloadMs",ze(n.downloadMs)),a("cached",n.cached)),a("stillConfirmed",e.stillConfirmed),a("typeMismatch",e.typeMismatch),r}function vi(e,t){return e===void 0?!1:t==="passport"?e!=="TD3":e==="TD3"}var Mt,xi,ge,fa,Ia,ze,Di,ba=J(()=>{"use strict";ga();Bn();pa();Mt="sekyro-ocr-1",xi=e=>e!==null&&typeof e=="object"?e:{},ge=(e,t,n,i)=>typeof e=="number"&&Number.isFinite(e)&&e>=t&&e<=n?e:i,fa=(e,t)=>typeof e=="boolean"?e:t,Ia=e=>{let t=typeof e=="string"?/^sekyro-ocr-(\d{1,4})$/.exec(e):null;return t?Number(t[1]):Number.POSITIVE_INFINITY};ze=e=>e===void 0||!Number.isFinite(e)?void 0:Math.min(6e5,Math.max(0,Math.round(e))),Di=(e,t,n)=>e===void 0||!Number.isFinite(e)?void 0:Math.min(n,Math.max(t,Math.round(e)))});function Ba(e){return e.framing==="no_document"?"sensing":e.framing==="too_far"?"too_far":e.framing==="too_close"?"too_close":e.framing==="edge_clipped"?"edge_clipped":e.framing==="wrong_shape"?"wrong_shape":e.framing==="tilted"?"tilted":e.lighting==="too_dark"?"too_dark":e.lighting==="too_bright"?"too_bright":e.glare==="glare"?"glare":e.blur==="blurry"?"blurry":"hold_still"}var Sn,wn,Qa=J(()=>{"use strict";Sn=Object.freeze({sensing:{key:"sensing",reticle:"searching",minDurationMs:900},too_far:{key:"too_far",reticle:"coaching",minDurationMs:1400},too_close:{key:"too_close",reticle:"coaching",minDurationMs:1400},edge_clipped:{key:"edge_clipped",reticle:"coaching",minDurationMs:1400},wrong_shape:{key:"wrong_shape",reticle:"coaching",minDurationMs:1400},tilted:{key:"tilted",reticle:"coaching",minDurationMs:1400},too_dark:{key:"too_dark",reticle:"coaching",minDurationMs:1400},too_bright:{key:"too_bright",reticle:"coaching",minDurationMs:1400},blurry:{key:"blurry",reticle:"coaching",minDurationMs:1400},focus_far:{key:"focus_far",reticle:"coaching",minDurationMs:1600},glare:{key:"glare",reticle:"coaching",minDurationMs:1400},hold_still:{key:"hold_still",reticle:"locking",minDurationMs:900},processing:{key:"processing",reticle:"processing",minDurationMs:800},side_captured:{key:"side_captured",reticle:"flip",minDurationMs:2600},captured:{key:"captured",reticle:"done",minDurationMs:800}});wn=class{constructor(t=2600,n=.35){this.windowMs=t;this.decayPerSecond=n;this.votes=[];this.current=Sn.sensing;this.currentSinceMs=null}reset(){this.votes=[],this.current=Sn.sensing,this.currentSinceMs=null}force(t,n){return this.votes=[],this.current=Sn[t],this.currentSinceMs=n,this.current}tick(t,n){if(this.currentSinceMs===null&&(this.currentSinceMs=n),this.votes.push({key:t,atMs:n}),this.votes=this.votes.filter(a=>n-a.atMs<=this.windowMs),n-this.currentSinceMs<this.current.minDurationMs)return this.current;let i=new Map;for(let a of this.votes){let s=(n-a.atMs)/1e3,A=this.decayPerSecond**s;i.set(a.key,(i.get(a.key)??0)+A)}let o=this.current.key,r=-1;for(let[a,s]of i)s>r&&(r=s,o=a);return o!==this.current.key&&(this.current=Sn[o],this.currentSinceMs=n),this.current}}});function Li(e,t,n){let i=[e.topLeft,e.topRight,e.bottomRight,e.bottomLeft],o=0;for(let a=0;a<4;a++){let s=i[a],A=i[(a+1)%4];o+=s.x*A.y-A.x*s.y}let r=t*n;return r>0?Math.abs(o/2)/r:0}function Kl(e,t){let n=Ti(e),i=Ti(t),o=Math.max(n.x1,i.x1),r=Math.max(n.y1,i.y1),a=Math.min(n.x2,i.x2),s=Math.min(n.y2,i.y2),A=Math.max(0,a-o)*Math.max(0,s-r),c=(n.x2-n.x1)*(n.y2-n.y1),l=(i.x2-i.x1)*(i.y2-i.y1),d=c+l-A;return d>0?A/d:0}function Mn(e){let t=Ti(e);return{width:t.x2-t.x1,height:t.y2-t.y1}}function Ti(e){let t=[e.topLeft,e.topRight,e.bottomRight,e.bottomLeft];return{x1:Math.min(...t.map(n=>n.x)),y1:Math.min(...t.map(n=>n.y)),x2:Math.max(...t.map(n=>n.x)),y2:Math.max(...t.map(n=>n.y))}}function ql(e){let t=Math.hypot(e.topRight.x-e.topLeft.x,e.topRight.y-e.topLeft.y),n=Math.hypot(e.bottomRight.x-e.bottomLeft.x,e.bottomRight.y-e.bottomLeft.y),i=Math.hypot(e.bottomLeft.x-e.topLeft.x,e.bottomLeft.y-e.topLeft.y),o=Math.hypot(e.bottomRight.x-e.topRight.x,e.bottomRight.y-e.topRight.y),r=(t+n)/2,a=(i+o)/2;return r<=0||a<=0?0:Math.max(r,a)/Math.min(r,a)}var Xe,_i,Ri,kn,xn=J(()=>{"use strict";qe();wt();Xe=480,_i=Object.freeze({MIN_AREA_FRAC:.15,EDGE_CLIP_MARGIN_PX:4,STABLE_TICKS:3,IOU_STABLE_MIN:.85,RISE_PER_S:.9,FALL_PER_S:.25,GUIDE_EXPOSURE:.6,GUIDE_SHARPNESS:.35,ID3_BAND_MIN_WIDTH_FRAC:.55,ID3_BAND_ASPECT_MIN:4,ID3_BAND_ASPECT_MAX:40}),Ri=e=>Math.min(1,Math.max(0,e));kn=class{constructor(t,n={}){this.p=0;this.lastTickAt=null;this.lastQuad=null;this.streak=0;this.format=t,this.t={..._i,...n}}reset(){this.p=0,this.lastTickAt=null,this.lastQuad=null,this.streak=0}tick(t){let{quad:n,quality:i,timestampMs:o}=t,r=this.lastTickAt===null?0:Math.max(0,(o-this.lastTickAt)/1e3);this.lastTickAt=o;let a=null;if(n===null)a="dcv1.no_doc";else if(this.format==="ID-3"){let u=Mn(n),f=u.height>0?u.width/u.height:0;u.width<this.t.ID3_BAND_MIN_WIDTH_FRAC*t.frameWidth?a="dcv1.come_closer":this.edgeClipped(n,t.frameWidth,t.frameHeight)?a="dcv1.fit_document":(f<this.t.ID3_BAND_ASPECT_MIN||f>this.t.ID3_BAND_ASPECT_MAX)&&(a="dcv1.wrong_shape")}else Li(n,t.frameWidth,t.frameHeight)<this.t.MIN_AREA_FRAC?a="dcv1.come_closer":this.edgeClipped(n,t.frameWidth,t.frameHeight)?a="dcv1.fit_document":fn(this.format,ql(n))||(a="dcv1.wrong_shape");let s=a===null,A=Ri(i.exposure)>=this.t.GUIDE_EXPOSURE,c=Ri(i.sharpness)>=this.t.GUIDE_SHARPNESS,l=A&&c;if(s&&l&&n!==null){let u=this.lastQuad===null||Kl(n,this.lastQuad)>=this.t.IOU_STABLE_MIN;this.streak=u?this.streak+1:1}else this.streak=0;this.lastQuad=n;let d=s&&l;this.p=Ri(this.p+(d?this.t.RISE_PER_S:-this.t.FALL_PER_S)*r);let m=d&&this.streak>=this.t.STABLE_TICKS,h;if(a!==null)h=a;else if(A)c?h="dcv1.hold_still":h="dcv1.steady";else{let u=(Se[0]+Se[1])/2;h=i.meanLuma<u?"dcv1.more_light":"dcv1.too_bright"}return{at:o,quad:n,plausible:s,p:this.p,guidanceKey:h,ready:m,stableTicks:this.streak}}edgeClipped(t,n,i){let o=this.t.EDGE_CLIP_MARGIN_PX;return[t.topLeft,t.topRight,t.bottomRight,t.bottomLeft].some(a=>a.x<=o||a.y<=o||a.x>=n-o||a.y>=i-o)}}});function wa(e){let{data:t,width:n,height:i}=e,o=n*i;if(o===0)return 0;let r=0;for(let a=0;a<o;a++){let s=a*4;.299*(t[s]??0)+.587*(t[s+1]??0)+.114*(t[s+2]??0)>=252&&r++}return r/o}function zl(e){let t=(A,c)=>Math.hypot(c.x-A.x,c.y-A.y),n=t(e.topLeft,e.topRight),i=t(e.bottomLeft,e.bottomRight),o=t(e.topLeft,e.bottomLeft),r=t(e.topRight,e.bottomRight),a=Math.max(n,i)/Math.max(1e-6,Math.min(n,i)),s=Math.max(o,r)/Math.max(1e-6,Math.min(o,r));return Math.max(a,s)}function ka(e){let t={..._i,...e.thresholds},n=Wl,{quad:i,frameWidth:o,frameHeight:r,measures:a}=e,s=e.format==="ID-3",A="ok";if(i===null)A="no_document";else if(s){let m=Mn(i),h=o>0?m.width/o:0,u=m.height>0?m.width/m.height:0;h<t.ID3_BAND_MIN_WIDTH_FRAC?A="too_far":Sa(i,o,r,t.EDGE_CLIP_MARGIN_PX)?A="edge_clipped":(u<t.ID3_BAND_ASPECT_MIN||u>t.ID3_BAND_ASPECT_MAX)&&(A="wrong_shape")}else{let m=Li(i,o,r),h=Mn(i),u=Math.max(h.width,h.height)/Math.max(1e-6,Math.min(h.width,h.height));m<t.MIN_AREA_FRAC?A="too_far":m>n.MAX_AREA_FRAC?A="too_close":Sa(i,o,r,t.EDGE_CLIP_MARGIN_PX)?A="edge_clipped":fn(e.format,u)?zl(i)>n.TILT_MAX_SIDE_RATIO&&(A="tilted"):A="wrong_shape"}let c=a.exposure>=t.GUIDE_EXPOSURE?"ok":a.meanLuma<(Se[0]+Se[1])/2?"too_dark":"too_bright",l=a.sharpness>=t.GUIDE_SHARPNESS?"ok":"blurry",d=a.specularFraction>=n.GLARE_MAX_SPECULAR_FRAC?"glare":"ok";return{framing:A,lighting:c,blur:l,glare:d,acceptable:A==="ok"&&c==="ok"&&l==="ok"&&d==="ok"}}function Sa(e,t,n,i){return[e.topLeft,e.topRight,e.bottomRight,e.bottomLeft].some(r=>r.x<=i||r.y<=i||r.x>=t-i||r.y>=n-i)}var Wl,Ma=J(()=>{"use strict";qe();wt();xn();Wl=Object.freeze({MAX_AREA_FRAC:.92,TILT_MAX_SIDE_RATIO:1.3,GLARE_MAX_SPECULAR_FRAC:.025})});function Ge(e){let t=[e.topLeft.x,e.topRight.x,e.bottomRight.x,e.bottomLeft.x],n=[e.topLeft.y,e.topRight.y,e.bottomRight.y,e.bottomLeft.y],i=Math.min(...t),o=Math.min(...n);return{x:i,y:o,width:Math.max(...t)-i,height:Math.max(...n)-o}}function Ra(e,t){let n=Math.max(0,Math.floor(e.x)),i=Math.max(0,Math.floor(e.y)),o=Math.min(t.width,Math.ceil(e.x+e.width)),r=Math.min(t.height,Math.ceil(e.y+e.height));return o-n<16||r-i<16?null:{x:n,y:i,width:o-n,height:r-i}}function Zl(e,t,n){if(e===null||t.width<=0||t.height<=0)return null;let i=Ge(e);if(i.width<=0||i.height<=0)return null;let o=n==="ID-3"?{x:i.x-i.width*xt.side,y:i.y-i.width*xt.above,width:i.width*(1+2*xt.side),height:i.height+i.width*(xt.above+xt.below)}:{x:i.x-i.width*Dn,y:i.y-i.height*Dn,width:i.width*(1+2*Dn),height:i.height*(1+2*Dn)};return Ra(o,t)}function Fi(e,t,n){let i=Math.max(e,t);return i>0?Math.min(1,n/i):1}function Pi(e,t,n,i,o=jl){let r=t.width>0?n.width/t.width:1,a=t.height>0?n.height/t.height:1,s=e===null?null:{topLeft:{x:e.topLeft.x*r,y:e.topLeft.y*a},topRight:{x:e.topRight.x*r,y:e.topRight.y*a},bottomRight:{x:e.bottomRight.x*r,y:e.bottomRight.y*a},bottomLeft:{x:e.bottomLeft.x*r,y:e.bottomLeft.y*a}},A=Zl(s,n,i)??{x:0,y:0,width:n.width,height:n.height},c=Fi(A.width,A.height,o),l=Math.max(1,Math.round(A.width*c)),d=Math.max(1,Math.round(A.height*c)),m=null;if(s!==null){let h=Ge(s);m=Ra({x:(h.x-A.x)*c,y:(h.y-A.y)*c,width:h.width*c,height:h.height*c},{width:l,height:d})}return{crop:A,width:l,height:d,docRegion:m}}function Ta(e,t,n,i=Xl){if(n==="LOW")return null;let o=e?.width?.max,r=e?.height?.max;if(typeof o!="number"||typeof r!="number"||o<=0||r<=0)return null;let a=Math.max(o,r),s=Math.min(o,r),A=Math.min(a,Math.max(i.width,i.height)),c=Math.min(s,Math.min(i.width,i.height));return A<=Math.max(t.width,t.height)?null:{width:{ideal:A},height:{ideal:c}}}function _a(e){let t={},n=e?.imageWidth,i=e?.imageHeight;if(typeof n?.max=="number"&&n.max>0){let o=typeof i?.max=="number"&&i.max>0?n.max/i.max:1.3333333333333333,r=o>=1?xa:xa*o,a=Math.min(n.max,Math.floor(r)),s=typeof n.step=="number"&&n.step>0?n.step:1,A=typeof n.min=="number"?n.min:0;a=Math.max(A,A+Math.floor((a-A)/s)*s),t.imageWidth=a}return e?.fillLightMode?.includes("off")===!0&&(t.fillLightMode="off"),t}function La(e,t){if(e.width<=0||e.height<=0||t.width<=0||t.height<=0)return!1;let n=e.width>e.height,i=t.width>t.height;return n!==i&&e.width!==e.height&&t.width!==t.height?!1:Math.max(e.width,e.height)>=1.2*Math.max(t.width,t.height)}function Fa(e,t,n,i){if(n===null)return!1;let o=Ge(e),r=Ge(n);if(t.width<=0||i.width<=0)return!1;let a=o.width/t.width,s=r.width/i.width;return s>0&&a>=.6*s&&a<=1.25*s}var Da,Xl,xa,jl,va,Dn,xt,Ni=J(()=>{"use strict";Da=Object.freeze({width:1920,height:1080}),Xl=Object.freeze({width:3840,height:2160}),xa=4096,jl=2560,va=640,Dn=.15,xt=Object.freeze({side:.2,above:.9,below:.3})});function Ga(){let e=globalThis.ImageCapture;return typeof e=="function"?e:null}function eu(e){return/AppleWebKit\//.test(e)&&!/(Chrome|Chromium|Edg|OPR)\//.test(e)}function Oa(e,t=typeof navigator>"u"?"":navigator.userAgent){return Ga()!==null&&!eu(t)&&e!=null&&e.kind==="video"&&e.readyState==="live"}function Na(e,t){return new Promise((n,i)=>{let o=setTimeout(()=>i(new Error("takePhoto timed out")),t);e.then(r=>{clearTimeout(o),n(r)},r=>{clearTimeout(o),i(r)})})}function Gi(e,t){let n=document.createElement("canvas");return n.width=e,n.height=t,n}function tu(e,t){return new Promise((n,i)=>{e.toBlob(o=>o?n(o):i(new Error("toBlob failed")),"image/jpeg",t)})}async function Ha(e,t,n,i,o){let r=Gi(n,i),a=Gi(1,1);try{let s=r.getContext("2d");if(s===null)throw new Error("2d context unavailable");s.imageSmoothingQuality="high",s.drawImage(e,t.x,t.y,t.width,t.height,0,0,n,i);let A=await tu(r,$l),c=o===null?null:kt({topLeft:{x:o.x,y:o.y},topRight:{x:o.x+o.width,y:o.y},bottomRight:{x:o.x+o.width,y:o.y+o.height},bottomLeft:{x:o.x,y:o.y+o.height}},{width:n,height:i},{width:n,height:i}),l=In(r,c),d=Fi(n,i,va);return a.width=Math.max(1,Math.round(n*d)),a.height=Math.max(1,Math.round(i*d)),a.getContext("2d")?.drawImage(r,0,0,a.width,a.height),{blob:A,previewDataUrl:a.toDataURL("image/jpeg",.85),sharpness:l}}finally{r.width=0,r.height=0,a.width=0,a.height=0}}function nu(e,t){let n=Math.min(1,t/e.width),i=Gi(Math.max(1,Math.round(e.width*n)),Math.max(1,Math.round(e.height*n)));try{let o=i.getContext("2d",{willReadFrequently:!0});return o===null?null:(o.imageSmoothingQuality="high",o.drawImage(e,0,0,i.width,i.height),o.getImageData(0,0,i.width,i.height))}finally{i.width=0,i.height=0}}async function Ua(e,t,n,i){let o={width:Math.max(1,e.videoWidth),height:Math.max(1,e.videoHeight)},r=Pi(t,n,o,i);return{...await Ha(e,r.crop,r.width,r.height,r.docRegion),docRegion:r.docRegion,source:"video",width:r.width,height:r.height}}async function Va(e,t,n,i,o){let r=Ga();if(r===null)return null;let a=null;try{let s=new r(o.track),A=await Na(s.getPhotoCapabilities?.()??Promise.resolve({}),Pa).catch(()=>({})),c=await Na(s.takePhoto(_a(A)),Pa);a=await createImageBitmap(c);let l={width:e.videoWidth,height:e.videoHeight};if(!La(a,l))return null;let d=nu(a,o.detectWidth),m=null;d!==null&&t!==null&&(m=await o.detect(d).catch(()=>null));let h=d??{width:a.width,height:a.height};m!==null&&!Fa(m,h,t,n)&&(m=null);let u=Pi(m,h,a,i);return{...await Ha(a,u.crop,u.width,u.height,u.docRegion),docRegion:u.docRegion,source:"photo",width:u.width,height:u.height}}catch{return null}finally{a?.close()}}var Pa,$l,Ja=J(()=>{"use strict";fi();Ni();Pa=3500,$l=.92});function qa(e){let t=vn,n=e!==null&&typeof e=="object"?e:{},i=n.fillDistanceM!==null&&typeof n.fillDistanceM=="object"?n.fillDistanceM:{},o=(r,a)=>typeof r=="boolean"?r:a;return{width:me(n.width,640,7680)??t.width,height:me(n.height,480,4320)??t.height,lensSelection:o(n.lensSelection,t.lensSelection),continuousFocus:o(n.continuousFocus,t.continuousFocus),refocusBeforePhotoMs:me(n.refocusBeforePhotoMs,0,2e3)??t.refocusBeforePhotoMs,zoomMax:me(n.zoomMax,1,5)??t.zoomMax,zoomNoFocusInfo:me(n.zoomNoFocusInfo,1,5)??t.zoomNoFocusInfo,zoomMinSourcePx:me(n.zoomMinSourcePx,0,8e3)??t.zoomMinSourcePx,fillDistanceM:{id1:me(i.id1,.03,1)??t.fillDistanceM.id1,id3:me(i.id3,.03,1)??t.fillDistanceM.id3},focusMarginFrac:me(n.focusMarginFrac,0,2)??t.focusMarginFrac,stillSharpnessMin:me(n.stillSharpnessMin,0,10)??t.stillSharpnessMin,stillRefusalsMax:me(n.stillRefusalsMax,0,10)??t.stillRefusalsMax,focusFarFillFrac:me(n.focusFarFillFrac,0,1)??t.focusFarFillFrac,noDocFarHintMs:me(n.noDocFarHintMs,0,6e4)??t.noDocFarHintMs,zoomFallbackMs:me(n.zoomFallbackMs,0,12e4)??t.zoomFallbackMs}}function iu(e){let t=e.toLowerCase();return t===""?"unknown":/front|facing front|user|selfie|face ?time/.test(t)?"front":/ultra|0\.5x|wide angle/.test(t)?"ultra":/tele|zoom|periscope|[2-9]x/.test(t)?"tele":/depth|tof|infrared|\bir\b|truedepth|lidar|macro|monochrome|mono\b/.test(t)?"depth":/dual|triple/.test(t)?"virtual":/back|rear|environment|facing back|arrière|خلفية/.test(t)?"main":"unknown"}function ou(e){let t=/camera2?\s*(\d+)/i.exec(e);return t?Number(t[1]):Number.POSITIVE_INFINITY}function ru(e){let t={main:0,virtual:1,ultra:9,tele:9,depth:9,front:9,unknown:9};return e.filter(n=>(n.kind===void 0||n.kind==="videoinput")&&n.deviceId!=="").map((n,i)=>({id:n.deviceId,kind:iu(n.label),index:ou(n.label),i})).filter(n=>t[n.kind]<9).sort((n,i)=>t[n.kind]-t[i.kind]||n.index-i.index||n.i-i.i).map(n=>n.id)}function au(){try{let e=globalThis.localStorage?.getItem(Oi);return typeof e=="string"&&e!==""?e:null}catch{return null}}function Ya(e){try{e===null?globalThis.localStorage?.removeItem(Oi):globalThis.localStorage?.setItem(Oi,e)}catch{}}function Ui(e,t,n){if(!Rn(e,"single-shot"))return null;let i=o=>Math.min(1,Math.max(0,Number.isFinite(o)?o:.5));return{focusMode:"single-shot",pointsOfInterest:[{x:i(t),y:i(n)}]}}function Wa(e,t,n,i=vn){let o=e?.zoom?.min,r=e?.zoom?.max;if(typeof r!="number"||r<=1)return 1;let a=n==="ID-3"?i.fillDistanceM.id3:i.fillDistanceM.id1,s=e?.focusDistance?.min,A;if(typeof s=="number"&&s>0&&s<1){if(A=s*(1+i.focusMarginFrac)/a,A<=1.05)return 1}else{if(Math.min(t.width,t.height)<i.zoomMinSourcePx)return 1;A=i.zoomNoFocusInfo}let c=Math.min(A,i.zoomMax,r);typeof o=="number"&&(c=Math.max(c,o));let l=e?.zoom?.step;return typeof l=="number"&&l>0&&(c=Math.round(c/l)*l),c>1.01?Number(c.toFixed(2)):1}function Hi(e){try{return e.getVideoTracks?.()[0]}catch{return}}function Ka(e){if(e!==null)for(let t of e.getTracks())t.stop()}function su(e){try{let t=Hi(e)?.getCapabilities?.();return!Array.isArray(t?.focusMode)||t.focusMode.includes("continuous")}catch{return!0}}async function za(e){let t=r=>({audio:!1,video:{...r,width:{ideal:e.base.width},height:{ideal:e.base.height}}}),n=r=>e.getUserMedia(t({deviceId:{exact:r}})),i=()=>e.getUserMedia(t({facingMode:{ideal:"environment"}}));if(e.lensSelection){let r=au();if(r!==null)try{return{stream:await n(r),lens:"stored"}}catch{Ya(null)}}let o=await i();if(!e.lensSelection||e.enumerateDevices===void 0)return{stream:o,lens:"default"};try{let r=ru(await e.enumerateDevices()).slice(0,Au);if(r.length===0)return{stream:o,lens:"default"};let a=null;for(let s of r){let A=o!==null?Hi(o)?.getSettings?.().deviceId:void 0;if(o===null||A!==s){Ka(o),o=null;try{o=await n(s)}catch{continue}}if(a??(a=s),su(o))return Ya(s),{stream:o,lens:"selected"}}if(o!==null&&a!==null&&Hi(o)?.getSettings?.().deviceId===a)return{stream:o,lens:"selected"};if(Ka(o),o=null,a!==null)try{return{stream:await n(a),lens:"selected"}}catch{}return{stream:await i(),lens:"default"}}catch{return{stream:o??await i(),lens:"default"}}}var vn,me,Oi,Rn,Au,Vi=J(()=>{"use strict";vn=Object.freeze({width:3840,height:2160,lensSelection:!0,continuousFocus:!0,refocusBeforePhotoMs:350,zoomMax:2,zoomNoFocusInfo:1.5,zoomMinSourcePx:2160,fillDistanceM:Object.freeze({id1:.11,id3:.15}),focusMarginFrac:.2,stillSharpnessMin:.16,stillRefusalsMax:2,focusFarFillFrac:.45,noDocFarHintMs:1500,zoomFallbackMs:8e3}),me=(e,t,n)=>typeof e=="number"&&Number.isFinite(e)&&e>=t&&e<=n?e:void 0;Oi="sekyro.doc.camera";Rn=(e,t)=>Array.isArray(e?.focusMode)&&e.focusMode.includes(t);Au=3});function ja(e,t,n,i=.06){let o=Math.max(e.width/n,e.height),r=o*n,a=(e.width-r)/2,s=(e.height-o)/2,A=Oe((t.x-t.width*i-a)/r),c=Oe((t.y-t.height*i-s)/o),l=Oe((t.x+t.width*(1+i)-a)/r),d=Oe((t.y+t.height*(1+i)-s)/o);return{x:A,y:c,width:l-A,height:d-c}}function Za(e,t,n={}){let i=n.edgePeakFrac??0,{width:o,height:r,data:a}=e;if(o<=0||r<=0)return Dt;let s=Oe(t.x),A=Oe(t.y),c={x:s,y:A,width:Math.max(0,Oe(t.x+t.width)-s),height:Math.max(0,Oe(t.y+t.height)-A)};if(c.width<=0||c.height<=0)return Dt;let l=c.x*o,d=c.y*r,m=(c.x+c.width)*o,h=(c.y+c.height)*r,u=(m-l)*.15,f=(h-d)*.15,p=(te,ne,fe)=>Math.min(fe,Math.max(ne,te)),g=p(Math.floor(l-u),0,o-1),C=p(Math.floor(d-f),0,r-1),w=p(Math.ceil(m+u),g+1,o),Q=p(Math.ceil(h+f),C+1,r),k=Math.max(1,Math.ceil(Math.max(w-g,Q-C)/320)),I=Math.floor((w-g+k-1)/k),b=Math.floor((Q-C+k-1)/k);if(I<3||b<3)return Dt;let v=new Int32Array(I*b);for(let te=0;te<b;te++){let ne=C+te*k;for(let fe=0;fe<I;fe++){let Be=(ne*o+g+fe*k)*4;v[te*I+fe]=(a[Be]??0)*77+(a[Be+1]??0)*150+(a[Be+2]??0)*29>>8}}let O=(te,ne)=>(te-ne-.5)/k,L=O(l,g),q=O(m,g),Z=O(d,C),R=O(h,C),E=(m-l)/k,y=(h-d)/k,x=p(Math.ceil(L),0,I-1),N=p(Math.floor(q),x,I-1),U=p(Math.ceil(Z),0,b-1),M=p(Math.floor(R),U,b-1),B=0,D=0,P=0,H=0,F=0,G=0;for(let te=U;te<=M;te++)for(let ne=x;ne<=N;ne++){let fe=v[te*I+ne];if(B+=fe,fe>=248&&D++,P++,ne>=1&&ne<I-1&&te>=1&&te<b-1){let Be=v[te*I+ne-1]+v[te*I+ne+1]+v[(te-1)*I+ne]+v[(te+1)*I+ne]-4*fe;H+=Be,F+=Be*Be,G++}}let V=P>0?B/P:0,W=P>0?D/P:0,z=G>0?H/G:0,X=G>0?Math.max(0,F/G-z*z):0,S=new Float64Array(I),_=new Float64Array(b);for(let te=0;te<b;te++)for(let ne=1;ne<I-1;ne++)S[ne]=S[ne]+Math.abs(v[te*I+ne+1]-v[te*I+ne-1]);for(let te=1;te<b-1;te++)for(let ne=0;ne<I;ne++)_[te]=_[te]+Math.abs(v[(te+1)*I+ne]-v[(te-1)*I+ne]);let K=Tn(S,!0,L,i),$=Tn(S,!1,q,i),T=Tn(_,!0,Z,i),Y=Tn(_,!1,R,i),j=($.position-K.position)/E,ie=(Y.position-T.position)/y,ee=ie>0?j/ie:0,oe=((K.position+$.position)/2-(L+q)/2)/E,le=((T.position+Y.position)/2-(Z+R)/2)/y,se=Xa(S),Ae=Xa(_),Ee=se<=0||Ae<=0?0:Math.min(Math.min(K.value,$.value)/se,Math.min(T.value,Y.value)/Ae),be=(te,ne)=>ne+(te+.5)*k,je=W,Ze=0;{let te=($.position-K.position)*.06,ne=(Y.position-T.position)*.06,fe=p(Math.ceil(K.position+te),0,I-1),Be=p(Math.floor($.position-te),0,I-1),JA=p(Math.ceil(T.position+ne),0,b-1),To=p(Math.floor(Y.position-ne),0,b-1),_o=0,Ut=0,Lo=0;for(let $e=JA;$e<=To;$e++)for(let et=fe;et<=Be;et++){Ut++;let mt=v[$e*I+et];mt>=248&&_o++;let YA=et+2<=Be?v[$e*I+et+2]:mt,KA=$e+2<=To?v[($e+2)*I+et]:mt;(Math.abs(YA-mt)>=24||Math.abs(KA-mt)>=24)&&Lo++}Ut>=16&&(je=_o/Ut,Ze=Lo/Ut)}return{brightness:V,glare:W,cardGlare:je,sharpness:X,fill:j,shape:ee,content:Ze,offsetX:oe,offsetY:le,edgeConfidence:Ee,box:{left:be(K.position,g),right:be($.position,g),top:be(T.position,C),bottom:be(Y.position,C)}}}function Tn(e,t,n,i){let o=e.length,r=Math.max(1,Math.floor(o*.45)),a=t?1:Math.max(1,o-1-r),s=t?Math.min(o-2,r):o-2,A=a;for(let h=a;h<=s;h++)e[h]>e[A]&&(A=h);if(i>0&&i<1){let h=e[A]*i,u=A,f=Math.abs(A-n);for(let p=a;p<=s;p++){let g=e[p];if(g<h||g<(e[p-1]??0)||g<(e[p+1]??0))continue;let C=Math.abs(p-n);C<f&&(u=p,f=C)}A=u}let c=A>0?e[A-1]:0,l=e[A],d=A<o-1?e[A+1]:0,m=c+l+d;return{position:m>0?A+(d-c)/m:A,value:l}}function Xa(e){if(e.length<3)return 0;let t=0;for(let n=1;n<e.length-1;n++)t+=e[n];return t/(e.length-2)}function $a(e){let t=e.box;return t===null||t.right-t.left<4||t.bottom-t.top<4?null:{topLeft:{x:t.left,y:t.top},topRight:{x:t.right,y:t.top},bottomRight:{x:t.right,y:t.bottom},bottomLeft:{x:t.left,y:t.bottom}}}function es(e){let t=e!==null&&typeof e=="object"?e:{},n={...vt};for(let i of Object.keys(vt)){let o=t[i];typeof o=="number"&&Number.isFinite(o)&&o>=0&&o<=1e6&&(n[i]=o)}return n}var Dt,Oe,vt,_n,Ji=J(()=>{"use strict";Dt=Object.freeze({brightness:0,glare:0,cardGlare:0,sharpness:0,fill:0,shape:0,content:0,offsetX:0,offsetY:0,edgeConfidence:0,box:null}),Oe=e=>Math.min(1,Math.max(0,e));vt=Object.freeze({fillMin:.82,fillMax:1.06,offsetMax:.06,glareMax:.025,sharpnessMin:180,edgeConfidenceMin:1.6,darkBrightness:70,lockMs:450,steadyMs:900,steadyFillMin:.45,steadyFillMax:1.3,steadyFillDelta:.06,steadyOffsetDelta:.04,steadyRefMs:100,edgePeakFrac:.4,shapeTolerance:.2,contentMin:.1});_n=class{constructor(t=vt){this.t=t;this.goodSince=null;this.steadySince=null;this.last=null}reset(){this.goodSince=null,this.steadySince=null,this.last=null}tick(t,n){let i=this.t,o=i.shapeTolerance<=0||Math.abs(t.shape-1)<=i.shapeTolerance,r=t.edgeConfidence>=i.edgeConfidenceMin&&o&&t.content>=i.contentMin,a=t.fill>=i.fillMin&&t.fill<=i.fillMax,s=Math.abs(t.offsetX)<=i.offsetMax&&Math.abs(t.offsetY)<=i.offsetMax,A=t.cardGlare<=i.glareMax,c=t.sharpness>=i.sharpnessMin,l=this.last;this.last={fill:t.fill,offsetX:t.offsetX,offsetY:t.offsetY,at:n};let d=l!==null&&i.steadyRefMs>0?Math.min(3,Math.max(1,(n-l.at)/i.steadyRefMs)):1,m=r&&A&&c&&t.fill>=i.steadyFillMin&&t.fill<=i.steadyFillMax&&l!==null&&Math.abs(t.fill-l.fill)<=i.steadyFillDelta*d&&Math.abs(t.offsetX-l.offsetX)<=i.steadyOffsetDelta*d&&Math.abs(t.offsetY-l.offsetY)<=i.steadyOffsetDelta*d,h=r&&a&&s&&A&&c,u;if(r?A?t.fill<i.fillMin?u="too_small":t.fill>i.fillMax?u="too_big":c?s?u="locking":u="off_center":u="blurry":u="glare":u="no_card",h){if(m&&(this.steadySince??(this.steadySince=n)),this.goodSince??(this.goodSince=n),n-this.goodSince>=i.lockMs)return{detected:r,ready:!0,via:"good",blocker:"locking"};let f=this.steadySince!==null&&n-this.steadySince>=i.steadyMs;return{detected:r,ready:f,via:f?"steady":null,blocker:"locking"}}if(this.goodSince=null,m){this.steadySince??(this.steadySince=n);let f=n-this.steadySince>=i.steadyMs;return{detected:r,ready:f,via:f?"steady":null,blocker:f?"locking":"steadying"}}return this.steadySince=null,{detected:r,ready:!1,via:null,blocker:u}}}});var ts={};ue(ts,{default:()=>lu,initMlDetector:()=>cu});function cu(){throw new Error("scanic ML detector is not vendored (classical pipeline only)")}var lu,ns=J(()=>{"use strict";lu={}});function gu(e,t={}){let n=t.width||Math.sqrt(e.length),i=t.height||e.length/n,o=t.mode!==void 0?t.mode:1,r=t.method!==void 0?t.method:2,a=t.minArea||uu,s=n+2,A=i+2,c=new Int32Array(s*A);for(let h=0;h<i;h++)for(let u=0;u<n;u++)e[h*n+u]>0&&(c[(h+1)*s+(u+1)]=1);let l=[],d=2;for(let h=1;h<=i;h++)for(let u=1;u<=n;u++){let f=c[h*s+u],p=c[h*s+(u-1)],g=null,C=!1,w=-1;if(f===1&&p===0?(C=!0,g={x:u,y:h},w=2):f===0&&p>=1&&p!==-1&&p===1&&(C=!1,g={x:u-1,y:h},w=6),g){if(o===0&&!C){c[g.y*s+g.x]=-1;continue}let Q=d++,k=mu(c,s,A,g,w,Q);if(k&&k.length>0){let I=k;r===2&&(I=hu(k));let b=I.map(v=>({x:v.x-1,y:v.y-1}));if(b.length>=(r===2?4:du)){let v={id:Q,points:b,isOuter:C};l.push(v)}}else c[g.y*s+g.x]===1&&(c[g.y*s+g.x]=Q)}}l.forEach(h=>{h.area=(function(u){let f=0,p=u.length;if(p<3)return 0;for(let g=0;g<p;g++){let C=(g+1)%p;f+=u[g].x*u[C].y,f-=u[C].x*u[g].y}return Math.abs(f)/2})(h.points),h.boundingBox=(function(u){if(u.length===0)return{minX:0,minY:0,maxX:0,maxY:0};let f=u[0].x,p=u[0].y,g=u[0].x,C=u[0].y;for(let w=1;w<u.length;w++){let Q=u[w];f=Math.min(f,Q.x),p=Math.min(p,Q.y),g=Math.max(g,Q.x),C=Math.max(C,Q.y)}return{minX:f,minY:p,maxX:g,maxY:C}})(h.points)});let m=l.filter(h=>h.area>=a);return m.sort((h,u)=>u.area-h.area),t.debug&&(t.debug.labels=c,t.debug.rawContours=l,t.debug.finalContours=m),m}function mu(e,t,n,i,o,r){let a=[],s=new Set,A=i.x,c=i.y,l=A,d=c,m=-1;e[d*t+l]=r;let h=0,u=t*n,f=[0,1,1,1,0,-1,-1,-1],p=[-1,-1,0,1,1,1,0,-1];for(;h++<u;){let g;if(m===-1){let I=!1;for(let b=0;b<8;b++){g=o+b&7;let v=A+f[g],O=c+p[g];if(v>=0&&v<t&&O>=0&&O<n&&e[O*t+v]>0){I=!0;break}}if(!I)return null}else g=m+2&7;let C=-1,w=-1;for(let I=0;I<8;I++){let b=g+I&7,v=A+f[b],O=c+p[b];if(v>=0&&v<t&&O>=0&&O<n&&e[O*t+v]>0){C=v,w=O,m=b+4&7;break}}if(C===-1){a.length===0&&a.push({x:A,y:c});break}let Q=c*t+A;if(s.has(Q))return a;a.push({x:A,y:c}),s.add(Q);let k=w*t+C;if(e[k]===1&&(e[k]=r),A=C,c=w,A===l&&c===d)break}return h>=u?null:a}function hu(e){let t=e.length;if(t<=2)return e;let n=[],i=e[t-1],o=e[0],r=i,a=o,s=e[1],A=a.x-r.x,c=a.y-r.y,l=s.x-a.x,d=s.y-a.y;A*d!==c*l&&n.push(a);for(let m=1;m<t-1;m++)r=e[m-1],a=e[m],s=e[m+1],A=a.x-r.x,c=a.y-r.y,l=s.x-a.x,d=s.y-a.y,A*d!==c*l&&n.push(a);if(r=e[t-2],a=i,s=o,A=a.x-r.x,c=a.y-r.y,l=s.x-a.x,d=s.y-a.y,A*d!==c*l&&n.push(a),n.length===0){if(t===1)return[e[0]];if(t===2)return e;let m=0,h=1,u=o.x,f=o.y;for(let p=1;p<t;p++){let g=e[p],C=g.x-u,w=g.y-f,Q=C*C+w*w;Q>m&&(m=Q,h=p)}return[o,e[h]]}return n}function qi(e,t=1){if(e.length<=2)return e;let n=0,i=0,o=e[0],r=e[e.length-1];for(let a=1;a<e.length-1;a++){let s=pu(e[a],o,r);s>n&&(n=s,i=a)}if(n>t){let a=qi(e.slice(0,i+1),t),s=qi(e.slice(i),t);return a.slice(0,-1).concat(s)}return[o,r]}function pu(e,t,n){let i=n.x-t.x,o=n.y-t.y,r=i*i+o*o;if(r===0)return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2));let a=((e.x-t.x)*i+(e.y-t.y)*o)/r,s,A;a<0?(s=t.x,A=t.y):a>1?(s=n.x,A=n.y):(s=t.x+a*i,A=t.y+a*o);let c=e.x-s,l=e.y-A;return Math.sqrt(c*c+l*l)}function cs(e,t=.02){return qi(e,t*(function(n){let i=0,o=n.length;if(o<2)return 0;for(let r=0;r<o;r++){let a=(r+1)%o,s=n[r].x-n[a].x,A=n[r].y-n[a].y;i+=Math.sqrt(s*s+A*A)}return i})(e))}function Wi(e,t){return Math.hypot(t.x-e.x,t.y-e.y)}function is(e){let t=0,n=0;for(let i of e)t+=i.x,n+=i.y;return{x:t/e.length,y:n/e.length}}function fu(e,t={}){if(!e||!e.points||e.points.length<4)return null;let n=t.epsilon||.02,i=(function(r,a){if(!r||r.length<4)return null;let s=[a,1.3*a,1.6*a,2*a],A=new Set;for(let c of s){let l=Math.min(.12,c),d=l.toFixed(4);if(A.has(d))continue;A.add(d);let m=Iu(cs(r,l));if(m&&m.length===4)return m}return null})(e.points,n),o;return i&&i.length===4?o=(function(r){if(r.length!==4)return null;let a=is(r),s=[...r].sort((d,m)=>Math.atan2(d.y-a.y,d.x-a.x)-Math.atan2(m.y-a.y,m.x-a.x)),A=1/0,c=0;for(let d=0;d<4;d++){let m=s[d].x+s[d].y;m<A&&(A=m,c=d)}let l=[s[c],s[(c+1)%4],s[(c+2)%4],s[(c+3)%4]];return{topLeft:l[0],topRight:l[1],bottomRight:l[2],bottomLeft:l[3]}})(i):(o=(function(r){if(!r||r.length<4)return null;let a=is(r),s=null,A=null,c=null,l=null,d=0,m=0,h=0,u=0;for(let f of r){let p=Wi(f,a);f.x<a.x&&f.y<a.y?p>d&&(s=f,d=p):f.x>a.x&&f.y<a.y?p>m&&(A=f,m=p):f.x>a.x&&f.y>a.y?p>h&&(c=f,h=p):f.x<a.x&&f.y>a.y&&p>u&&(l=f,u=p)}return s&&A&&c&&l?{topLeft:s,topRight:A,bottomRight:c,bottomLeft:l}:null})(e.points),o&&o.topLeft&&o.topRight&&o.bottomRight&&o.bottomLeft||(o=(function(r){if(!r||r.length===0)return null;let a=r[0],s=r[0],A=r[0],c=r[0],l=a.x+a.y,d=s.x-s.y,m=A.x+A.y,h=c.x-c.y;for(let u=1;u<r.length;u++){let f=r[u],p=f.x+f.y,g=f.x-f.y;p<l&&(l=p,a=f),p>m&&(m=p,A=f),g>d&&(d=g,s=f),g<h&&(h=g,c=f)}return{topLeft:a,topRight:s,bottomRight:A,bottomLeft:c}})(e.points))),o&&o.topLeft&&o.topRight&&o.bottomRight&&o.bottomLeft?o:null}function Iu(e){if(!e||e.length<4)return null;if(e.length===4)return e;if(e.length>8)return null;let t=(function(n,i){if(!n||n.length===0)return[];let o=[];for(let r of n)(o.length===0||Wi(r,o[o.length-1])>i)&&o.push(r);return o.length>2&&Wi(o[0],o[o.length-1])<=i&&o.pop(),o})(e,6);return t.length===4?t:(t.length,null)}function ls(){return Tt!==null&&Tt.byteLength!==0||(Tt=new Uint8Array(ae.memory.buffer)),Tt}function Yi(e,t){let n=t(1*e.length,1)>>>0;return ls().set(e,n/1),_e=e.length,n}function Fn(e,t){return e>>>=0,ls().subarray(e/1,e/1+t)}function us(){return _t!==null&&_t.byteLength!==0||(_t=new Float32Array(ae.memory.buffer)),_t}function Cu(e,t,n,i,o){let r=(function(c,l){let d=l(4*c.length,4)>>>0;return us().set(c,d/4),_e=c.length,d})(e,ae.__wbindgen_malloc),a=_e,s=ae.hysteresis_thresholding(r,a,t,n,i,o);var A=Fn(s[0],s[1]).slice();return ae.__wbindgen_free(s[0],1*s[1],1),A}function os(e,t){let n=t(2*e.length,2)>>>0;return(Lt!==null&&Lt.byteLength!==0||(Lt=new Uint16Array(ae.memory.buffer)),Lt).set(e,n/2),_e=e.length,n}function yu(e,t,n,i,o){let r=os(e,ae.__wbindgen_malloc),a=_e,s=os(t,ae.__wbindgen_malloc),A=_e,c=ae.non_maximum_suppression(r,a,s,A,n,i,o);var l,d,m=(l=c[0],d=c[1],l>>>=0,us().subarray(l/4,l/4+d)).slice();return ae.__wbindgen_free(c[0],4*c[1],4),m}async function ds(e){if(ae!==void 0)return ae;if(e!==void 0&&Object.getPrototypeOf(e)===Object.prototype&&({module_or_path:e}=e),e===void 0)throw new Error("scanic: WASM module bytes must be passed to init().");let t=(function(){let o={wbg:{}};return o.wbg.__wbindgen_init_externref_table=function(){let r=ae.__wbindgen_export_0,a=r.grow(4);r.set(0,void 0),r.set(a+0,void 0),r.set(a+1,null),r.set(a+2,!0),r.set(a+3,!1)},o})();(typeof e=="string"||typeof Request=="function"&&e instanceof Request||typeof URL=="function"&&e instanceof URL)&&(e=fetch(e));let{instance:n,module:i}=await(async function(o,r){if(typeof Response=="function"&&o instanceof Response){if(typeof WebAssembly.instantiateStreaming=="function")try{return await WebAssembly.instantiateStreaming(o,r)}catch(s){if(o.headers.get("Content-Type")=="application/wasm")throw s}let a=await o.arrayBuffer();return await WebAssembly.instantiate(a,r)}{let a=await WebAssembly.instantiate(o,r);return a instanceof WebAssembly.Instance?{instance:a,module:o}:a}})(await e,t);return(function(o,r){return ae=o.exports,ds.__wbindgen_wasm_module=r,_t=null,Lt=null,Tt=null,ae.__wbindgen_start(),ae})(n,i)}function Eu(e){if(typeof atob=="function"){let t=atob(e),n=new Uint8Array(t.length);for(let i=0;i<t.length;i++)n[i]=t.charCodeAt(i);return n}return Uint8Array.from(Buffer.from(e,"base64"))}async function bu(){if(!(function(){if(Ki!==null)return Ki;let e=!1;if(typeof WebAssembly=="object"&&typeof WebAssembly.validate=="function"){let t=new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11]),n=new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,111,3,2,1,0,10,6,1,4,0,208,111,11]);try{e=WebAssembly.validate(t)&&WebAssembly.validate(n)}catch{e=!1}}return Ki=e,e})())throw new Error("scanic: WebAssembly features required by the WASM module (reference-types, SIMD) are unavailable in this engine; using the JavaScript fallback.");return await ds({module_or_path:Eu("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JAAgAiABIAJqIgFLBEBBAEEAEC0ACyADQQRqIAAoAgAiAiAAKAIEQQggASACQQF0IgIgASACSxsiASABQQhNGyIBQQFBARARIAMoAgRBAUYEQCADKAIIIAMoAgwQLQALIAMoAgghAiAAIAE2AgAgACACNgIEIANBEGokAAt5AQF/IwBBIGsiAiQAAn8gACgCAEGAgICAeEcEQCABIAAoAgQgACgCCBAwDAELIAJBEGogACgCDCgCACIAQQhqKQIANwMAIAJBGGogAEEQaikCADcDACACIAApAgA3AwggASgCACABKAIEIAJBCGoQBwsgAkEgaiQAC2kBA38jAEEQayIBJAAgAUEEaiAAKAIAIgIgACgCBEEEIAJBAXQiAiACQQRNGyICQQRBBBARIAEoAgRBAUYEQCABKAIIIAEoAgwQLQALIAEoAgghAyAAIAI2AgAgACADNgIEIAFBEGokAAtpAQN/IwBBEGsiASQAIAFBBGogACgCACICIAAoAgRBBCACQQF0IgIgAkEETRsiAkEEQQgQESABKAIEQQFGBEAgASgCCCABKAIMEC0ACyABKAIIIQMgACACNgIAIAAgAzYCBCABQRBqJAALaQEDfyMAQRBrIgEkACABQQRqIAAoAgAiAiAAKAIEQQQgAkEBdCICIAJBBE0bIgJBAkECEBEgASgCBEEBRgRAIAEoAgggASgCDBAtAAsgASgCCCEDIAAgAjYCACAAIAM2AgQgAUEQaiQACxIAIwBBMGsiACQAIABBMGokAAtoAgF/AX4jAEEwayIDJAAgAyABNgIEIAMgADYCACADQQI2AgwgA0Hkl8AANgIIIANCAjcCFCADQoCAgIAwIgQgA62ENwMoIAMgBCADQQRqrYQ3AyAgAyADQSBqNgIQIANBCGogAhAmAAtHAQF/IAAoAgAgACgCCCIDayACSQRAIAAgAyACEBIgACgCCCEDCyACBEAgACgCBCADaiABIAL8CgAACyAAIAIgA2o2AghBAAtEAQJ/IAEoAgQhAiABKAIAIQNBCEEEEDUiAUUEQEEEQQgQOQALIAEgAjYCBCABIAM2AgAgAEHcksAANgIEIAAgATYCAAvGAgACQCAAIAJNBEAgACABTSABIAJLcg0BIwBBMGsiAiQAIAIgATYCBCACIAA2AgAgAkECNgIMIAJB2JbAADYCCCACQgI3AhQgAiACQQRqrUKAgICAMIQ3AyggAiACrUKAgICAMIQ3AyAgAiACQSBqNgIQIAJBCGogAxAmAAsjAEEwayIBJAAgASACNgIEIAEgADYCACABQQI2AgwgAUH8lsAANgIIIAFCAjcCFCABIAFBBGqtQoCAgIAwhDcDKCABIAGtQoCAgIAwhDcDICABIAFBIGo2AhAgAUEIaiADECYACyMAQTBrIgAkACAAIAI2AgQgACABNgIAIABBAjYCDCAAQaSWwAA2AgggAEICNwIUIAAgAEEEaq1CgICAgDCENwMoIAAgAK1CgICAgDCENwMgIAAgAEEgajYCECAAQQhqIAMQJgALQQEBfyMAQSBrIgMkACADQQA2AhAgA0EBNgIEIANCBDcCCCADIAE2AhwgAyAANgIYIAMgA0EYajYCACADIAIQJgALywwBD38jAEEQayIOJAAgCCEMIAkhFiAKIRdBACEIQQAhCSMAQdAAayILJAAgC0EIaiAAIhggASITIAIiCiADIAYgBxAEIAtBFGogCygCDCIZIAsoAhAgAiADEAUgAiADbCIBQQF0IQACfwJAAkAgAUEASCAAQf7///8HS3JFBEAgAEUNAUECIQggAEECEDUiAg0CCyAIIAAQLQALIAtBADYCKCALQoCAgIAgNwIgIAtBADYCNCALQoCAgIAgNwIsQQIhCEEBDAELIAtBADYCKCALIAI2AiQgCyABNgIgAkACQCAAQQIQNSIIBEAgC0EANgI0IAsgCDYCMCALIAE2AixBASABRQ0DGkEAIQAgCygCGCEIIAsoAhwhBiABIQIDQCAAIAZJBEAgCC8BACENIAsoAigiCSALKAIgRgRAIAtBIGoQFgsgCygCJCAJQQF0aiANOwEAIAsgCUEBajYCKCAAQQFqIAZPDQMgCEECai8BACENIAsoAjQiCSALKAIsRgRAIAtBLGoQFgsgCygCMCAJQQF0aiANOwEAIAsgCUEBaiIJNgI0IAhBBGohCCAAQQJqIQAgAkEBayICDQEMBAsLIAAgBkGckMAAEBgAC0ECIAAQLQALIABBAWogBkGskMAAEBgACyALKAIwIQhBAAshECALQThqIAsoAiQgCygCKCAIIAkgCiADIAxBAEcQAyALKAJAIQ8gCygCPCEUAkACQAJ/IBAEQEEBIQ1BAAwBCyABQQEQNiINRQ0BIAELIRUgC0EANgJMIAtCgICAgMAANwJEAkACQAJAAkACQCAKQQNrQX1LDQAgA0EBayIRQQJJDQAgBSAFlCAFIAwbIQUgBCAElCAEIAwbIQRBAiEAQQEhCQNAIAAhAiAJIApsIQxBAiEAQQEhCANAIAghBiAAIQggBiAMaiIAIA9PDQUCQCAFIBQgAEECdGoqAgAiB18EQCAAIAFPDQUgACANakECOgAAIAsoAkwiACALKAJERgRAIAtBxABqEBULIAsoAkggAEEDdGoiEiAJNgIEIBIgBjYCACALIABBAWo2AkwMAQsgBCAHX0UNACAAIAFPDQUgACANakEBOgAACyAIQQFqIgAgCkcNAAsgAiACIBFJIgZqIQAgAiEJIAYNAAsgCygCTCICRQ0AA0BBfyEJIAsgAkEBayICNgJMIAsoAkggAkEDdGoiACgCBCEPIAAoAgAhEQNAAkAgCSAPaiIGRSADIAZNcg0AIAYgCmwhEkF/IQADQAJAIAAgCXJFDQAgACARaiIIRSAIIApPcg0AIAEgCCASaiIMSwRAIAwgDWoiDC0AAEEBRw0BIAxBAjoAACALKAJMIgIgCygCREYEQCALQcQAahAVCyALKAJIIAJBA3RqIgwgBjYCBCAMIAg2AgAgCyACQQFqIgI2AkwMAQsgDCABQdyPwAAQGAALIABBAUYiCA0BQQEgAEEBaiAIGyIAQQFMDQALCyAJQQFGIgBFBEBBASAJQQFqIAAbIglBAUwNAQsLIAINAAsLIBAEQEEAIQhBASEJDAQLIAFBARA2IgkEQEEAIQAgAUEBRwRAIAFB/v///wdxIQIDQCAAIA1qIgYtAABBAkYEQCAAIAlqQf8BOgAACyAGQQFqLQAAQQJGBEAgACAJakEBakH/AToAAAsgAiAAQQJqIgBHDQALCwJAIAFBAXFFDQAgACANai0AAEECRw0AIAAgCWpB/wE6AAALIAEhCAwECwwECyAAIAFBjJDAABAYAAsgACABQfyPwAAQGAALIAAgD0Hsj8AAEBgACyALKAJEIgAEQCALKAJIIABBA3QQNAsgFQRAIA0gFRA0CwJAAkAgFkUEQCAJIQAMAQtBASEAIBBFBEAgAUEBEDYiAEUNAgsgCSABIAogAyAXIAAgARACIAhFDQAgCSAIEDQLIAsoAjgiAgRAIBQgAkECdBA0CyALKAIsIgIEQCALKAIwIAJBAXQQNAsgCygCICICBEAgCygCJCACQQF0EDQLIAsoAhQiAgRAIAsoAhggAkEBdBA0CyALKAIIIgIEQCAZIAIQNAsgEwRAIBggExA0CyAOIAE2AgQgDiAANgIAIAtB0ABqJAAMAgsLQQEgARAtAAsgDigCACAOKAIEIA5BEGokAAs4AAJAIAJBgIDEAEYNACAAIAIgASgCEBECAEUNAEEBDwsgA0UEQEEADwsgACADQQAgASgCDBEDAAs2AQF/IwBBIGsiASQAIAFBADYCGCABQQE2AgwgAUGol8AANgIIIAFCBDcCECABQQhqIAAQJgALyAEBAn8jAEEQayIIJAAjAEEQayIHJAAgB0EEaiAAIAEgAiADIAQgBSAGQQBHEAMgAwRAIAIgA0EBdBA0CyABBEAgACABQQF0EDQLAkAgBygCBCIBIAcoAgwiAE0EQCAHKAIIIQEMAQsgAUECdCECIAcoAgghAyAARQRAQQQhASADIAIQNAwBCyADIAJBBCAAQQJ0IgIQMSIBDQBBBCACEC0ACyAIIAA2AgQgCCABNgIAIAdBEGokACAIKAIAIAgoAgQgCEEQaiQAC6YBAQJ/IwBBEGsiByQAIwBBEGsiBiQAIAZBBGogACABIAIgAyAEIAUQBCABBEAgACABEDQLAkAgBigCBCICIAYoAgwiAE0EQCAGKAIIIQEMAQsgBigCCCEDIABFBEBBASEBIAMgAhA0DAELIAMgAkEBIAAQMSIBDQBBASAAEC0ACyAHIAA2AgQgByABNgIAIAZBEGokACAHKAIAIAcoAgQgB0EQaiQAC9YVAhZ/AX0jAEEQayITJAAgACEWIAEhEkEAIQAjAEEQayIGJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADIAIiCGwiCUEASA0AQQEhCiAJBEBBASEAIAlBARA1IgpFDQELIAkEQCAKQQEgCfwLAAtBgMAAQQQQNSIRBEAgBkEANgIMIAYgETYCCCAGQYAINgIEIANBAWsiGEECSQ0LIAhBAWshFyAIQQJrIg5BAnYhGSAOQXxxIhtBAXIhFCAOQQRPBEAgCEECdCIaIBlBBHRqIBZqQQRqIQ8gCCAKaiELIBYgGmohDEEAIQJBAiEAQQEhBwNAIAAhECAHIAhsIgEgF2oiACABQQFqIgNJIAAgEktyDQsgACAJSw0JQQAhAEEBIQEgDCEDA0AgACAOTw0IIA4gAGsiDUEAIA0gDk0bQQFqIQ0CQCAFIANBBGoqAgAiHF8EQCAAIAtqQQFqQQI6AAAgBigCBCACRgRAIAZBBGoQFSAGKAIIIRELIBEgAkEDdGoiFSAHNgIEIBUgAEEBajYCACAGIAJBAWoiAjYCDAwBCyAEIBxfRQ0AIAAgC2pBAWpBADoAAAsgDUECRg0HAkAgBSADQQhqKgIAIhxfBEAgACALakECakECOgAAIAYoAgQgAkYEQCAGQQRqEBULIAYoAggiESACQQN0aiIVIAc2AgQgFSAAQQJqNgIAIAYgAkEBaiICNgIMDAELIAQgHF9FDQAgACALakECakEAOgAACyANQQNGDQUCQCAFIANBDGoqAgAiHF8EQCAAIAtqQQNqQQI6AAAgBigCBCACRgRAIAZBBGoQFQsgBigCCCIRIAJBA3RqIhUgBzYCBCAVIABBA2o2AgAgBiACQQFqIgI2AgwMAQsgBCAcX0UNACAAIAtqQQNqQQA6AAALIA1BBEYNBiABIQ0CQCAFIANBEGoiAyoCACIcXwRAIAAgC2pBBGpBAjoAACAGKAIEIAJGBEAgBkEEahAVCyAGKAIIIhEgAkEDdGoiASAHNgIEIAEgAEEEajYCACAGIAJBAWoiAjYCDAwBCyAEIBxfRQ0AIAAgC2pBBGpBADoAAAsgDUEBaiEBIABBBGohACANIBlJDQALIA8hAyAUIQEgDiAbRwRAA0AgASEAAkAgBSADKgIAIhxfBEAgACALakECOgAAIAYoAgQgAkYEQCAGQQRqEBULIAYoAggiESACQQN0aiIBIAc2AgQgASAANgIAIAYgAkEBaiICNgIMDAELIAQgHF9FDQAgACALakEAOgAACyADQQRqIQMgAEEBaiEBIAAgDkkNAAsLIA8gGmohDyAIIAtqIQsgDCAaaiEMIBAgECAYSSIBaiEAIBAhByABDQALDAsLAkAgDiAbRwRAIAhBAnQiDCAZQQR0aiAWakEEaiEHIAggCmohC0EAIQJBAiEAQQEhDwwBCyAIQQFqIQMgCEEBdEEBayEHQQAhAkECIQADQCACIAdqIgEgAiADakkgASASS3INCiABIAlLDQggAiAIaiECIAAgGEkgAEEBaiEADQALDAwLA0AgACEQIAggD2wiASAXaiIAIAFBAWoiA0kgACASS3INCiAAIAlLDQggByEDIBQhAQNAIAEhAAJAIAMqAgAiHCAFYEUEQCAEIBxfRQ0BIAAgC2pBADoAAAwBCyAAIAtqQQI6AAAgBigCBCACRgRAIAZBBGoQFSAGKAIIIRELIBEgAkEDdGoiASAPNgIEIAEgADYCACAGIAJBAWoiAjYCDAsgA0EEaiEDIABBAWohASAAIA5JDQALIAcgDGohByAIIAtqIQsgECAQIBhJIgFqIQAgECEPIAENAAsMCgtBBEGAwAAQLQALIAAgCRAtAAsgAEECaiEADAILIABBA2ohAAwBCyAAQQFqIQALIAAgDkHQicAAEBgACyACIAhqQQFqIQMgCEEBdCACakEBayEACyADIAAgCUHAicAAEBsACyACIAhqQQFqIQMgCEEBdCACakEBayEACyADIAAgEkHgicAAEBsACyACRQ0AIAhBAWohD0EBIAhrIRAgCEF/cyEUIAgEQCAGKAIIIQEDQCAGIAJBAWsiADYCDCAGKAIEIQwCQCABIABBA3QiDWoiAygCBCAIbCADKAIAaiIDIBRqIgcgCU8NACAHIApqIgstAAANACALQQI6AAAgASANaiIAIAcgCG4iDTYCBCAAIAcgCCANbGs2AgAgBiACNgIMIAIhAAsCQCADIAhrIgIgCU8NACACIApqIgctAAANACAHQQI6AAAgAiACIAhuIgIgCGxrIQcgACAMRgRAIAZBBGoQFSAGKAIIIQELIAEgAEEDdGoiDCACNgIEIAwgBzYCACAGIABBAWoiADYCDAsCQCADIBBqIgIgCU8NACACIApqIgctAAANACAHQQI6AAAgAiACIAhuIgIgCGxrIQcgBigCBCAARgRAIAZBBGoQFQsgBigCCCIBIABBA3RqIgwgAjYCBCAMIAc2AgAgBiAAQQFqIgA2AgwLAkAgA0EBayICIAlPDQAgAiAKaiIHLQAADQAgB0ECOgAAIAIgAiAIbiICIAhsayEHIAYoAgQgAEYEQCAGQQRqEBULIAYoAggiASAAQQN0aiIMIAI2AgQgDCAHNgIAIAYgAEEBaiIANgIMCwJAIANBAWoiAiAJTw0AIAIgCmoiBy0AAA0AIAdBAjoAACACIAIgCG4iAiAIbGshByAGKAIEIABGBEAgBkEEahAVCyAGKAIIIgEgAEEDdGoiDCACNgIEIAwgBzYCACAGIABBAWoiADYCDAsCQCADIBdqIgIgCU8NACACIApqIgctAAANACAHQQI6AAAgAiACIAhuIgIgCGxrIQcgBigCBCAARgRAIAZBBGoQFQsgBigCCCIBIABBA3RqIgwgAjYCBCAMIAc2AgAgBiAAQQFqIgA2AgwLAkAgAyAIaiICIAlPDQAgAiAKaiIHLQAADQAgB0ECOgAAIAIgAiAIbiICIAhsayEHIAYoAgQgAEYEQCAGQQRqEBULIAYoAggiASAAQQN0aiIMIAI2AgQgDCAHNgIAIAYgAEEBaiIANgIMCyAJIAMgD2oiAk0EQCAAIgINAQwDCyACIApqIgMtAAAEQCAAIgINAQwDCyADQQI6AAAgAiACIAhuIgIgCGxrIQMgBigCBCAARgRAIAZBBGoQFQsgBigCCCIBIABBA3RqIgcgAjYCBCAHIAM2AgAgBiAAQQFqIgI2AgwgAg0ACwwBCyAGKAIIIAJBA3RqQQhrIQEDQCAJIAEoAgAiACAUaiIDSwRAIAMgCmoiAy0AAEUNAwsgACAJTyIHRQRAIAAgCmoiAy0AAEUNAwsgCSAAIBBqIgNLBEAgAyAKaiIDLQAARQ0DCyAJIABBAWsiA0sEQCADIApqIgMtAABFDQMLIAkgAEEBaiIDSwRAIAMgCmoiAy0AAEUNAwsgCSAAIBdqIgNLBEAgAyAKaiIDLQAARQ0DCyAHRQRAIAAgCmoiAy0AAEUNAwsgCSAAIA9qIgBLBEAgACAKaiIDLQAARQ0DCyABQQhrIQEgAkEBayICDQALCyAGKAIEIgAEQCAGKAIIIABBA3QQNAsgEgRAIBYgEkECdBA0CyATIAk2AgQgEyAKNgIAIAZBEGokAAwBCyADQQI6AABBsInAABAfAAsgEygCACATKAIEIBNBEGokAAvoDgIUfwF9IwBBEGsiEiQAIAAhFSABIRNBACEBIwBBEGsiByQAAkACQAJAAkACQAJAAkACQAJAIAIgA2wiCEEASA0AQQEhDEEBIQkCQCAIBEBBASENIAhBARA2IgxFDQIgCEEBEDUiCUUNAQsgCARAIAlBASAI/AsAC0GAwABBBBA1IgsEQCAHQQA2AgwgByALNgIIIAdBgAg2AgQgAkEBayIWQQJJDQcgA0EBayIXQQJJDQcgAiAMaiEUIAIgCWohD0ECIAJrIRggAkECdCIZIBVqQQRqIRAgAiERQQIhAEEBIQoDQCAAIQMgECENQQEhAANAIAAgEWoiDiATTw0HAkAgBSANKgIAIhpfBEAgCCAOTQ0HIAAgD2pBAjoAACAAIBRqQf8BOgAAIAcoAgQgBkYEQCAHQQRqEBUgBygCCCELCyALIAZBA3RqIgEgCjYCBCABIAA2AgAgByAGQQFqIgY2AgwgBiEBDAELIAQgGl9FDQAgCCAOTQ0HIAAgD2pBADoAAAsgDUEEaiENIBggAEEBaiIAakEBRw0ACyAQIBlqIRAgAiAUaiEUIAIgD2ohDyACIBFqIREgAyADIBdJIg1qIQAgAyEKIA0NAAsgAUUNByACQQFqIQ1BASACayEQIAJBf3MhESACRQ0GA0AgByABQQFrIgA2AgwgBygCBCEKAkAgCyAAQQN0Ig5qIgMoAgQgAmwgAygCAGoiAyARaiIGIAhPDQAgBiAJaiIPLQAADQAgD0ECOgAAIAYgDGpB/wE6AAAgBygCCCILIA5qIgAgBiACbiIONgIEIAAgBiACIA5sazYCACAHIAE2AgwgASEACwJAIAMgAmsiASAITw0AIAEgCWoiBi0AAA0AIAZBAjoAACABIAxqQf8BOgAAIAEgASACbiIBIAJsayEGIAAgCkYEQCAHQQRqEBULIAcoAggiCyAAQQN0aiIKIAE2AgQgCiAGNgIAIAcgAEEBaiIANgIMCwJAIAMgEGoiASAITw0AIAEgCWoiBi0AAA0AIAZBAjoAACABIAxqQf8BOgAAIAEgASACbiIBIAJsayEGIAcoAgQgAEYEQCAHQQRqEBULIAcoAggiCyAAQQN0aiIKIAE2AgQgCiAGNgIAIAcgAEEBaiIANgIMCwJAIANBAWsiASAITw0AIAEgCWoiBi0AAA0AIAZBAjoAACABIAxqQf8BOgAAIAEgASACbiIBIAJsayEGIAcoAgQgAEYEQCAHQQRqEBULIAcoAggiCyAAQQN0aiIKIAE2AgQgCiAGNgIAIAcgAEEBaiIANgIMCwJAIANBAWoiASAITw0AIAEgCWoiBi0AAA0AIAZBAjoAACABIAxqQf8BOgAAIAEgASACbiIBIAJsayEGIAcoAgQgAEYEQCAHQQRqEBULIAcoAggiCyAAQQN0aiIKIAE2AgQgCiAGNgIAIAcgAEEBaiIANgIMCwJAIAMgFmoiASAITw0AIAEgCWoiBi0AAA0AIAZBAjoAACABIAxqQf8BOgAAIAEgASACbiIBIAJsayEGIAcoAgQgAEYEQCAHQQRqEBULIAcoAggiCyAAQQN0aiIKIAE2AgQgCiAGNgIAIAcgAEEBaiIANgIMCwJAIAIgA2oiASAITw0AIAEgCWoiBi0AAA0AIAZBAjoAACABIAxqQf8BOgAAIAEgASACbiIBIAJsayEGIAcoAgQgAEYEQCAHQQRqEBULIAcoAggiCyAAQQN0aiIKIAE2AgQgCiAGNgIAIAcgAEEBaiIANgIMCyAIIAMgDWoiAU0EQCAAIgENAQwJCyABIAlqIgMtAAAEQCAAIgENAQwJCyADQQI6AAAgASAMakH/AToAACABIAEgAm4iASACbGshAyAHKAIEIABGBEAgB0EEahAVCyAHKAIIIgsgAEEDdGoiBiABNgIEIAYgAzYCACAHIABBAWoiATYCDCABDQALDAcLQQRBgMAAEC0AC0EBIAgQLQALIA0gCBAtAAsgDiAIQaCKwAAQGAALIA4gCEGQisAAEBgACyAOIBNBgIrAABAYAAsgCyABQQN0akEIayEKA0AgByABQQFrIgE2AgwgCCAKKAIAIgIgEWoiAEsEQCAAIAlqIgYtAABFDQQLIAIgCE8iA0UEQCACIAlqIgYtAABFDQMLIAggAiAQaiIASwRAIAAgCWoiBi0AAEUNBAsgCCACQQFrIgBLBEAgACAJaiIGLQAARQ0ECyAIIAJBAWoiAEsEQCAAIAlqIgYtAABFDQQLIAggAiAWaiIASwRAIAAgCWoiBi0AAEUNBAsgA0UEQCACIAlqIgYtAABFDQMLIAggAiANaiIASwRAIAAgCWoiBi0AAEUNBAsgCkEIayEKIAENAAsLIAcoAgQiAARAIAcoAgggAEEDdBA0CyAIBEAgCSAIEDQLIBMEQCAVIBNBAnQQNAsgEiAINgIEIBIgDDYCACAHQRBqJAAMAgsgAiEACyAGQQI6AAAgACAMakH/AToAAEHwicAAEB8ACyASKAIAIBIoAgQgEkEQaiQACy8AAkAgAWlBAUYgAEGAgICAeCABa01xRQ0AIAAEQCAAIAEQNSIBRQ0BCyABDwsAC4ABAQR/IwBBEGsiBSQAAkACQCACIANsIgZBAEgNAAJAIAZFBEBBASEHDAELQQEhCCAGQQEQNiIHRQ0BCyAAIAEgAiADIAQgByAGEAIgAQRAIAAgARA0CyAFIAY2AgQgBSAHNgIADAELIAggBhAtAAsgBSgCACAFKAIEIAVBEGokAAv6AQICfwF+IwBBEGsiAiQAIAJBATsBDCACIAE2AgggAiAANgIEIwBBEGsiASQAIAJBBGoiACkCACEEIAEgADYCDCABIAQ3AgQjAEEQayIAJAAgAUEEaiIBKAIAIgIoAgwhAwJAAkACQAJAIAIoAgQOAgABAgsgAw0BQQEhAkEAIQMMAgsgAw0AIAIoAgAiAigCBCEDIAIoAgAhAgwBCyAAQYCAgIB4NgIAIAAgATYCDCAAQcCSwAAgASgCBCABKAIIIgAtAAggAC0ACRAPAAsgACADNgIEIAAgAjYCACAAQaSSwAAgASgCBCABKAIIIgAtAAggAC0ACRAPAAuuAQECfyMAQRBrIgUkACMAQRBrIgQkACAEQQRqIAAgASACIAMQBSABBEAgACABEDQLAkAgBCgCBCIBIAQoAgwiAE0EQCAEKAIIIQEMAQsgAUEBdCECIAQoAgghAyAARQRAQQIhASADIAIQNAwBCyADIAJBAiAAQQF0IgIQMSIBDQBBAiACEC0ACyAFIAA2AgQgBSABNgIAIARBEGokACAFKAIAIAUoAgQgBUEQaiQAC6AEAQd/IwBBEGsiBCQAIAAhBkEAIQACQCABRQRAQQEhBQwBCyABQQEQNiIFBEAgAUEISQ0BIAFBA3YhBwNAAkACQCAAIAFPDQAgACAFaiICQX9BACAAIAZqIgMtAABBAkYbOgAAIAEgAEEBaksEQCACQQFqQX9BACADQQFqLQAAQQJGGzoAACABIABBAmpLBEAgAkECakF/QQAgA0ECai0AAEECRhs6AAAgASAAQQNqSwRAIAJBA2pBf0EAIANBA2otAABBAkYbOgAAIAEgAEEEaksEQCACQQRqQX9BACADQQRqLQAAQQJGGzoAACABIABBBWpLBEAgAkEFakF/QQAgA0EFai0AAEECRhs6AAAgASAAQQZqSwRAIAJBBmpBf0EAIANBBmotAABBAkYbOgAAIABBB2oiCCABSQ0HIAghAAwGCyAAQQZqIQAMBQsgAEEFaiEADAQLIABBBGohAAwDCyAAQQNqIQAMAgsgAEECaiEADAELIABBAWohAAsgACABQaCJwAAQGAALIAJBB2pBf0EAIANBB2otAABBAkYbOgAAIABBCGohACAHQQFrIgcNAAsMAQtBASABEC0ACyABIAFB+P///wdxIgBHBEADQCAAIAVqQX9BACAAIAZqLQAAQQJGGzoAACAAQQFqIgAgAUkNAAsLIAEEQCAGIAEQNAsgBCABNgIEIAQgBTYCACAEKAIAIAQoAgQgBEEQaiQACyUBAX8gACgCACIBQYCAgIB4ckGAgICAeEcEQCAAKAIEIAEQNAsLFwEBfyAAKAIAIgEEQCAAKAIEIAEQNAsLHwAgAEEIakGwkcAAKQIANwIAIABBqJHAACkCADcCAAsfACAAQQhqQcCRwAApAgA3AgAgAEG4kcAAKQIANwIAC0MAIAAEQCAAIAEQOQALIwBBIGsiACQAIABBADYCGCAAQQE2AgwgAEGQlMAANgIIIABCBDcCECAAQQhqQZiUwAAQJgALHAAgAEEANgIQIABCADcCCCAAQoCAgIDAADcCAAsNACABBEAgACABEDQLCxYAIAAoAgAgASACIAAoAgQoAgwRAwAL5wYBBX8CfwJAAkACQAJAAkACQAJAIABBBGsiBygCACIIQXhxIgRBBEEIIAhBA3EiBRsgAWpPBEAgBUEAIAFBJ2oiBiAESRsNAQJAIAJBCU8EQCACIAMQCSICDQFBAAwKC0EAIQIgA0HM/3tLDQhBECADQQtqQXhxIANBC0kbIQEgAEEIayEGIAVFBEAgBkUgAUGAAklyIAQgAWtBgIAISyABIARPcnINByAADAoLIAQgBmohBQJAIAEgBEsEQCAFQcybwAAoAgBGDQFByJvAACgCACAFRwRAIAUoAgQiCEECcQ0JIAhBeHEiCCAEaiIEIAFJDQkgBSAIEAogBCABayIFQRBPBEAgByABIAcoAgBBAXFyQQJyNgIAIAEgBmoiASAFQQNyNgIEIAQgBmoiBCAEKAIEQQFyNgIEIAEgBRAIDAkLIAcgBCAHKAIAQQFxckECcjYCACAEIAZqIgEgASgCBEEBcjYCBAwIC0HAm8AAKAIAIARqIgQgAUkNCAJAIAQgAWsiBUEPTQRAIAcgCEEBcSAEckECcjYCACAEIAZqIgEgASgCBEEBcjYCBEEAIQVBACEBDAELIAcgASAIQQFxckECcjYCACABIAZqIgEgBUEBcjYCBCAEIAZqIgQgBTYCACAEIAQoAgRBfnE2AgQLQcibwAAgATYCAEHAm8AAIAU2AgAMBwsgBCABayIEQQ9NDQYgByABIAhBAXFyQQJyNgIAIAEgBmoiASAEQQNyNgIEIAUgBSgCBEEBcjYCBCABIAQQCAwGC0HEm8AAKAIAIARqIgQgAUsNBAwGCyADIAEgASADSxsiAwRAIAIgACAD/AoAAAsgBygCACIDQXhxIgcgAUEEQQggA0EDcSIDG2pJDQIgA0UgBiAHT3INBkGsk8AAQS5B3JPAABAcAAtB7JLAAEEuQZyTwAAQHAALQayTwABBLkHck8AAEBwAC0HsksAAQS5BnJPAABAcAAsgByABIAhBAXFyQQJyNgIAIAEgBmoiBSAEIAFrIgFBAXI2AgRBxJvAACABNgIAQcybwAAgBTYCAAsgBkUNACAADAMLIAMQASIBRQ0BIANBfEF4IAcoAgAiAkEDcRsgAkF4cWoiAiACIANLGyICBEAgASAAIAL8CgAACyABIQILIAAQBgsgAgsLEAAgASAAKAIAIAAoAgQQMAsTACAAQdySwAA2AgQgACABNgIAC18BAn8CQAJAIABBBGsoAgAiAkF4cSIDQQRBCCACQQNxIgIbIAFqTwRAIAJBACADIAFBJ2pLGw0BIAAQBgwCC0HsksAAQS5BnJPAABAcAAtBrJPAAEEuQdyTwAAQHAALCxkAAn8gAUEJTwRAIAEgABAJDAELIAAQAQsLPgACQAJ/IAFBCU8EQCABIAAQCQwBCyAAEAELIgFFDQAgAUEEay0AAEEDcUUgAEVyDQAgAUEAIAD8CwALIAELDQAgAEGMksAAIAEQBwsMACAAIAEpAgA3AwALGQAgACABQeSbwAAoAgAiAEECIAAbEQAAAAsJACAAQQA2AgALC48YAgBBgIDAAAv8F2Fzc2VydGlvbiBmYWlsZWQ6IG1pbiA8PSBtYXhzcmMvY2FubnkucnMAc3JjL2h5c3RlcmVzaXMucnMAc3JjL2dhdXNzaWFuX2JsdXIucnMAL3J1c3RjL2RlZDVjMDZjZjIxZDJiOTNiZmZkNWQ4ODRhYTZlOTY5MzRlZTQyMzQvbGlicmFyeS9jb3JlL3NyYy9jbXAucnMAc3JjL2dyYWRpZW50X2NhbGN1bGF0aW9uLnJzAHNyYy9kaWxhdGlvbi5ycwBzcmMvbm9uX21heGltdW1fc3VwcHJlc3Npb24ucnMAbGlicmFyeS9hbGxvYy9zcmMvcmF3X3ZlYy9tb2QucnMAL3J1c3QvZGVwcy9kbG1hbGxvYy0wLjIuMTAvc3JjL2RsbWFsbG9jLnJzAGxpYnJhcnkvc3RkL3NyYy9hbGxvYy5ycwAvdXNyL2xvY2FsL2NhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9vbmNlX2NlbGwtMS4yMS4zL3NyYy9saWIucnMAAFAAEABHAAAAQgQAAAkAAAA7ABAAFAAAAPsAAAAfAAAAOwAQABQAAAAtAQAAGQAAADsAEAAUAAAAHwEAAA0AAAA7ABAAFAAAACABAAANAAAAOwAQABQAAAAhAQAADQAAADsAEAAUAAAAIgEAAA0AAAA7ABAAFAAAAE8AAAAbAAAAOwAQABQAAABQAAAAHwAAADsAEAAUAAAAeAAAABkAAAA7ABAAFAAAAGIAAAAhAAAAOwAQABQAAABFAQAAHwAAADsAEAAUAAAAfAEAAB8AAAA7ABAAFAAAAH4BAAAdAAAAOwAQABQAAAB/AQAAHAAAADsAEAAUAAAAUAEAAB8AAAA7ABAAFAAAAHIBAAAdAAAAOwAQABQAAABzAQAAHAAAADsAEAAUAAAAdAEAABwAAAA7ABAAFAAAAGgBAAANAAAAOwAQABQAAABpAQAADQAAADsAEAAUAAAAagEAAA0AAAA7ABAAFAAAAGsBAAANAAAAOwAQABQAAABHAQAAHQAAADsAEAAUAAAASQEAABwAAAA7ABAAFAAAAI8AAAAbAAAAOwAQABQAAACQAAAAHwAAADsAEAAUAAAAkwAAACIAAAA7ABAAFAAAAJUAAAAiAAAAOwAQABQAAAC9AAAALwAAADsAEAAUAAAAvgAAAC0AAAA7ABAAFAAAAL8AAAAtAAAAOwAQABQAAACfAAAAEQAAADsAEAAUAAAAoAAAABEAAAA7ABAAFAAAAKEAAAARAAAAOwAQABQAAACnAAAAEQAAADsAEAAUAAAA2AAAABsAAAA7ABAAFAAAANkAAAAfAAAAOwAQABQAAADgAAAAGQAAAEtlcm5lbCBzaXplIG11c3QgYmUgb2RkIGFuZCBncmVhdGVyIHRoYW4gMAAAFAQQACoAAAA7ABAAFAAAAJQBAAAJAAAASW5wdXQgYXJyYXkgc2l6ZSBkb2Vzbid0IG1hdGNoIHdpZHRoICogaGVpZ2h0AAAAWAQQAC0AAAA7ABAAFAAAAJEBAAAJAAAAKQAQABEAAACHAAAAHgAAACkAEAARAAAAaAAAABoAAAApABAAEQAAACQAAAAnAAAAKQAQABEAAAAtAAAAGwAAACkAEAARAAAAIwAAACQAAAApABAAEQAAANkAAAAaAAAAKQAQABEAAACyAAAAFwAAACkAEAARAAAAuwAAABkAAAApABAAEQAAALYAAAAZAAAAYXNzZXJ0aW9uIGZhaWxlZDogbWluIDw9IG1heFAAEABHAAAAQgQAAAkAAACYABAAGwAAAA8AAAAWAAAAmAAQABsAAAAQAAAAFgAAAJgAEAAbAAAAEQAAABYAAACYABAAGwAAABIAAAAWAAAAmAAQABsAAAATAAAAFgAAAJgAEAAbAAAAFAAAABYAAACYABAAGwAAABUAAAAWAAAAmAAQABsAAAAWAAAAFgAAAJgAEAAbAAAAHAAAABMAAACYABAAGwAAAB0AAAATAAAAtAAQAA8AAABkAAAADQAAALQAEAAPAAAAXwAAAB8AAAC0ABAADwAAAFQAAAANAAAAtAAQAA8AAABPAAAAHwAAALQAEAAPAAAAMwAAAA0AAAC0ABAADwAAAC4AAAAfAAAAtAAQAA8AAAAeAAAAEQAAALQAEAAPAAAAGQAAABsAAADEABAAHgAAAFoAAAAgAAAAxAAQAB4AAABhAAAAFgAAAMQAEAAeAAAAYgAAABYAAADEABAAHgAAAHkAAAAqAAAAxAAQAB4AAAB6AAAAKgAAAMQAEAAeAAAAdgAAACoAAADEABAAHgAAAHcAAAAqAAAAxAAQAB4AAABxAAAAJgAAAMQAEAAeAAAAcgAAACYAAADEABAAHgAAAG4AAAAmAAAAxAAQAB4AAABvAAAAJgAAAMQAEAAeAAAALgAAABIAAADEABAAHgAAADIAAAANAAAAxAAQAB4AAAAwAAAADQAAAMQAEAAeAAAAEwAAABMAAADEABAAHgAAABQAAAATAAAAxAAQAB4AAAAVAAAAEwAAAMQAEAAeAAAAFgAAABMAAADEABAAHgAAABkAAAATAAAAxAAQAB4AAAAaAAAAEwAAAMQAEAAeAAAAGwAAABMAAADEABAAHgAAABwAAAATAAAAHAAQAAwAAAAoAAAAIAAAABwAEAAMAAAAEgAAABcAAAAcABAADAAAABcAAAAZAAAAHAAQAAwAAAAUAAAAGQAAABwAEAAMAAAAUQAAAB4AAAAcABAADAAAAFIAAAAeAAAATGF6eSBpbnN0YW5jZSBoYXMgcHJldmlvdXNseSBiZWVuIHBvaXNvbmVkAAA8CBAAKgAAAEgBEABaAAAACAMAABkAAAByZWVudHJhbnQgaW5pdAAAgAgQAA4AAABIARAAWgAAAHoCAAANAAAAfP2LMlfmV/kC30S/40jnr21dy9YsUOtjeEGmV3Ebi7ltZW1vcnkgYWxsb2NhdGlvbiBvZiAgYnl0ZXMgZmFpbGVkAADICBAAFQAAAN0IEAANAAAALwEQABgAAABkAQAACQAAAAQAAAAMAAAABAAAAAUAAAAGAAAABwAAAAAAAAAIAAAABAAAAAgAAAAJAAAACgAAAAsAAAAMAAAAEAAAAAQAAAANAAAADgAAAA8AAAAQAAAAAAAAAAgAAAAEAAAAEQAAAGFzc2VydGlvbiBmYWlsZWQ6IHBzaXplID49IHNpemUgKyBtaW5fb3ZlcmhlYWQAAAQBEAAqAAAAsQQAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA8PSBzaXplICsgbWF4X292ZXJoZWFkAAAEARAAKgAAALcEAAANAAAABAAAAAwAAAAEAAAAEgAAAGNhcGFjaXR5IG92ZXJmbG93AAAA/AkQABEAAADjABAAIAAAABwAAAAFAAAAMDAwMTAyMDMwNDA1MDYwNzA4MDkxMDExMTIxMzE0MTUxNjE3MTgxOTIwMjEyMjIzMjQyNTI2MjcyODI5MzAzMTMyMzMzNDM1MzYzNzM4Mzk0MDQxNDI0MzQ0NDU0NjQ3NDg0OTUwNTE1MjUzNTQ1NTU2NTc1ODU5NjA2MTYyNjM2NDY1NjY2NzY4Njk3MDcxNzI3Mzc0NzU3Njc3Nzg3OTgwODE4MjgzODQ4NTg2ODc4ODg5OTA5MTkyOTM5NDk1OTY5Nzk4OTlyYW5nZSBlbmQgaW5kZXggIG91dCBvZiByYW5nZSBmb3Igc2xpY2Ugb2YgbGVuZ3RoIAAA8AoQABAAAAAACxAAIgAAAHNsaWNlIGluZGV4IHN0YXJ0cyBhdCAgYnV0IGVuZHMgYXQgADQLEAAWAAAASgsQAA0AAAByYW5nZSBzdGFydCBpbmRleCAAAGgLEAASAAAAAAsQACIAAABhdHRlbXB0IHRvIGRpdmlkZSBieSB6ZXJvAAAAjAsQABkAAABpbmRleCBvdXQgb2YgYm91bmRzOiB0aGUgbGVuIGlzICBidXQgdGhlIGluZGV4IGlzIAAAsAsQACAAAADQCxAAEgAAAAAAAD8AAAC/AEGUmMAACwEBAHwJcHJvZHVjZXJzAghsYW5ndWFnZQEEUnVzdAAMcHJvY2Vzc2VkLWJ5AwVydXN0Yx0xLjkyLjAgKGRlZDVjMDZjZiAyMDI1LTEyLTA4KQZ3YWxydXMGMC4yMy4zDHdhc20tYmluZGdlbhMwLjIuMTAwICgyNDA1ZWMyYjQpAHQPdGFyZ2V0X2ZlYXR1cmVzBysPbXV0YWJsZS1nbG9iYWxzKxNub250cmFwcGluZy1mcHRvaW50KwdzaW1kMTI4KwtidWxrLW1lbW9yeSsIc2lnbi1leHQrD3JlZmVyZW5jZS10eXBlcysKbXVsdGl2YWx1ZQ==")})}function Rt(){return Ln||(Ln=bu().catch(e=>{throw Ln=null,e})),Ln}function Bu(e,t,n,i=5,o=0){o===0&&(o=.3*(.5*(i-1)-1)+.8);let r=Math.floor(i/2),a=(function(c,l){let d=new Float32Array(c),m=Math.floor(c/2),h=0;for(let u=0;u<c;u++){let f=u-m;d[u]=Math.exp(-f*f/(2*l*l)),h+=d[u]}for(let u=0;u<c;u++)d[u]/=h;return d})(i,o),s=new Uint8ClampedArray(t*n),A=new Uint8ClampedArray(t*n);for(let c=0;c<n;c++){let l=c*t;for(let d=0;d<t;d++){let m=0;for(let h=-r;h<=r;h++)m+=e[l+Math.min(t-1,Math.max(0,d+h))]*a[r+h];s[l+d]=m}}for(let c=0;c<t;c++)for(let l=0;l<n;l++){let d=0;for(let m=-r;m<=r;m++)d+=s[Math.min(n-1,Math.max(0,l+m))*t+c]*a[r+m];A[l*t+c]=Math.round(d)}return A}function as(e,t,n,i,o){let r=new Uint8Array(t*n),a=[];for(let c=1;c<n-1;c++)for(let l=1;l<t-1;l++){let d=c*t+l,m=e[d];m>=o?(r[d]=2,a.push({x:l,y:c})):r[d]=m>=i?0:1}for(let c=0;c<t;c++)r[c]=1,r[(n-1)*t+c]=1;for(let c=1;c<n-1;c++)r[c*t]=1,r[c*t+t-1]=1;let s=[-1,0,1,-1,1,-1,0,1],A=[-1,-1,-1,0,0,1,1,1];for(;a.length>0;){let{x:c,y:l}=a.pop();for(let d=0;d<8;d++){let m=c+s[d],h=l+A[d],u=h*t+m;r[u]===0&&(r[u]=2,a.push({x:m,y:h}))}}return r}async function Qu(e,t={}){let n=!(!t.debug||t.debug._timingsOnly),i=[],o=performance.now(),r,a,s;if(t.skipGrayscale)r=t.width,a=t.height,s=e,n&&(t.debug.grayscale=s);else{r=e.width,a=e.height;let R=performance.now();s=(function(y){let{width:x,height:N,data:U}=y,M=new Uint8ClampedArray(x*N);for(let B=0,D=0;B<U.length;B+=4,D++)M[D]=54*U[B]+183*U[B+1]+19*U[B+2]>>8;return M})(e);let E=performance.now();i.push({step:"Grayscale",ms:(E-R).toFixed(2)}),n&&(t.debug.grayscale=s)}let A=t.lowThreshold!==void 0?t.lowThreshold:null,c=t.highThreshold!==void 0?t.highThreshold:null;if(A===null||c===null){let E=new Uint32Array(1024),y=0;for(let M=1;M<a-1;M++)for(let B=1;B<r-1;B++){let D=M*r+B,P=-s[D-r-1]+s[D-r+1]-2*s[D-1]+2*s[D+1]-s[D+r-1]+s[D+r+1],H=-s[D-r-1]-2*s[D-r]-s[D-r+1]+s[D+r-1]+2*s[D+r]+s[D+r+1],F=Math.abs(P)+Math.abs(H);F>=1024&&(F=1023),F>0&&(E[F]++,y++)}let x=Math.round(.7*y),N=0,U=75;for(let M=1;M<1024;M++)if(N+=E[M],N>=x){U=M;break}A===null&&(A=Math.max(5,Math.round(.5*U))),c===null&&(c=Math.min(500,Math.round(1.5*U)))}let l=t.kernelSize||5,d=t.sigma||0,m=t.L2gradient!==void 0&&t.L2gradient,h=t.applyDilation===void 0||t.applyDilation,u=t.dilationKernelSize||5,f=t.useWasmHysteresis!==void 0&&t.useWasmHysteresis,p=t.useWasmFullCanny!==void 0&&t.useWasmFullCanny;if(A>=c&&([A,c]=[c,A]),p)try{await Rt();let R=performance.now(),E=new Uint8ClampedArray((function(N,U,M,B,D,P,H,F,G,V){let W=Yi(N,ae.__wbindgen_malloc),z=_e,X=ae.canny_edge_detector_full(W,z,U,M,B,D,P,H,F,G,V);var S=Fn(X[0],X[1]).slice();return ae.__wbindgen_free(X[0],1*X[1],1),S})(s,r,a,A,c,l,d,m,h,u)),y=(performance.now()-R).toFixed(2);i.push({step:"Edge Processing (WASM)",ms:y}),n&&(t.debug.finalEdges=E),t.debug?t.debug.timings=i:t.debug={timings:i};let x=performance.now();return i.unshift({step:"Edge Detection Total",ms:(x-o).toFixed(2)}),E}catch(R){rs||(rs=!0,R instanceof Error?R.message:String(R))}let g,C,w,Q,k,I;g=performance.now();try{await Rt(),w=(function(R,E,y,x,N){let U=Yi(R,ae.__wbindgen_malloc),M=_e,B=ae.blur(U,M,E,y,x,N);var D=Fn(B[0],B[1]).slice();return ae.__wbindgen_free(B[0],1*B[1],1),D})(s,r,a,l,d)}catch{w=Bu(s,r,a,l,d)}C=performance.now(),i.push({step:"Gaussian Blur",ms:(C-g).toFixed(2)}),n&&(t.debug.blurred=w),g=performance.now();{let R=(function(E,y,x){let N=new Int16Array(y*x),U=new Int16Array(y*x);for(let M=1;M<x-1;M++){let B=M*y,D=(M-1)*y,P=(M+1)*y;for(let H=1;H<y-1;H++){let F=B+H,G=E[D+H-1],V=E[D+H],W=E[D+H+1],z=E[B+H-1],X=E[B+H+1],S=E[P+H-1],_=E[P+H],K=E[P+H+1],$=W-G+2*(X-z)+(K-S),T=S+2*_+K-(G+2*V+W);N[F]=$,U[F]=T}}return{dx:N,dy:U}})(w,r,a);Q=R.dx,k=R.dy}C=performance.now(),i.push({step:"Gradients",ms:(C-g).toFixed(2)}),g=performance.now();try{await Rt(),I=await yu(Q,k,r,a,m)}catch{I=(function(R,E,y,x,N){let U=new Float32Array(y*x),M=new Float32Array(y*x);for(let B=0;B<R.length;B++){let D=R[B],P=E[B];U[B]=N?Math.sqrt(D*D+P*P):Math.abs(D)+Math.abs(P)}for(let B=1;B<x-1;B++)for(let D=1;D<y-1;D++){let P=B*y+D,H=U[P];if(H===0){M[P]=0;continue}let F=R[P],G=E[P],V=0,W=0,z=Math.abs(F),X=Math.abs(G);if(X>2.4142*z)V=U[P-y],W=U[P+y];else if(z>2.4142*X)V=U[P-1],W=U[P+1];else{let S=(F^G)<0?-1:1;G>0?(V=U[(B-1)*y+(D-S)],W=U[(B+1)*y+(D+S)]):(V=U[(B+1)*y+(D-S)],W=U[(B-1)*y+(D+S)]),F>0&&G>0||F<0&&G<0?(V=U[(B-1)*y+(D+1)],W=U[(B+1)*y+(D-1)]):(V=U[(B-1)*y+(D-1)],W=U[(B+1)*y+(D+1)])}M[P]=H>=V&&H>=W?H:0}return M})(Q,k,r,a,m)}C=performance.now(),i.push({step:"Non-Max Suppression",ms:(C-g).toFixed(2)}),g=performance.now();let b=m?A*A:A,v=m?c*c:c,O;if(f)try{await Rt(),O=Cu(I,r,a,b,v)}catch{O=as(I,r,a,b,v)}else O=as(I,r,a,b,v);C=performance.now(),i.push({step:"Hysteresis",ms:(C-g).toFixed(2)}),g=performance.now();let L=new Uint8ClampedArray(r*a);for(let R=0;R<O.length;R++)L[R]=O[R]===2?255:0;C=performance.now(),i.push({step:"Binary Image",ms:(C-g).toFixed(2)}),g=performance.now();let q=L;if(h)try{await Rt(),q=(function(R,E,y,x){let N=Yi(R,ae.__wbindgen_malloc),U=_e,M=ae.dilate(N,U,E,y,x);var B=Fn(M[0],M[1]).slice();return ae.__wbindgen_free(M[0],1*M[1],1),B})(L,r,a,u)}catch{q=(function(R,E,y,x=5){let N=Math.floor(x/2),U=new Uint8ClampedArray(E*y),M=new Uint8ClampedArray(E*y);for(let B=0;B<y;B++){let D=B*E;for(let P=0;P<E;P++){let H=0;for(let F=-N;F<=N;F++){let G=P+F;if(G>=0&&G<E){let V=R[D+G];V>H&&(H=V)}}U[D+P]=H}}for(let B=0;B<E;B++)for(let D=0;D<y;D++){let P=0;for(let H=-N;H<=N;H++){let F=D+H;if(F>=0&&F<y){let G=U[F*E+B];G>P&&(P=G)}}M[D*E+B]=P}return M})(L,r,a,u)}if(C=performance.now(),i.push({step:"Dilation",ms:(C-g).toFixed(2)}),n){t.debug.dx=Q,t.debug.dy=k;let R=new Float32Array(r*a);for(let E=0;E<Q.length;E++){let y=Q[E],x=k[E];R[E]=m?Math.sqrt(y*y+x*x):Math.abs(y)+Math.abs(x)}t.debug.magnitude=R,t.debug.suppressed=I,t.debug.edgeMap=O,t.debug.cannyEdges=L,t.debug.finalEdges=q}t.debug?t.debug.timings=i:t.debug||(t.debug={timings:i});let Z=performance.now();return i.unshift({step:"Edge Detection Total",ms:(Z-o).toFixed(2)}),q}function Ft(e){return e<=0?0:e>=1?1:e}function Pt(e,t){return Math.hypot(e.x-t.x,e.y-t.y)}function ss(e){return[Pt(e.topLeft,e.topRight),Pt(e.topRight,e.bottomRight),Pt(e.bottomRight,e.bottomLeft),Pt(e.bottomLeft,e.topLeft)]}function Su(e){let t=(function(i){let o=[i.topLeft,i.topRight,i.bottomRight,i.bottomLeft],r=[];for(let a=0;a<o.length;a++){let s=o[(a+o.length-1)%o.length],A=o[a],c=o[(a+1)%o.length],l=s.x-A.x,d=s.y-A.y,m=c.x-A.x,h=c.y-A.y,u=l*m+d*h,f=Math.max(1e-6,Math.hypot(l,d)*Math.hypot(m,h)),p=Math.max(-1,Math.min(1,u/f));r.push(180*Math.acos(p)/Math.PI)}return r})(e),n=0;for(let i of t)n+=Ft(1-Math.abs(i-90)/55);return n/Math.max(1,t.length)}function As(e,t){let n=Number(t.isValid)-Number(e.isValid);if(n!==0)return n;let i=t.confidence-e.confidence;if(!(Math.abs(i)<.015)&&i!==0)return i;let o=Math.abs((e.approxCount??99)-4)-Math.abs((t.approxCount??99)-4);if(o!==0)return o;let r=(t.rightAngleScore??0)-(e.rightAngleScore??0);if(Math.abs(r)>1e-6)return r;let a=Math.abs(1-(e.contourFitRatio??1))-Math.abs(1-(t.contourFitRatio??1));return Math.abs(a)>1e-6?a:i||t.score-e.score||t.coverageRatio-e.coverageRatio||t.area-e.area}function wu(e,t,n,i,o={}){let r=o.epsilon||.02,a=cs(e.points,r).length,s=fu(e,{epsilon:r});if(!s)return{contour:e,corners:null,score:0,confidence:0,isValid:!1,area:e.area||0,fillRatio:0,coverageRatio:0,cornersArea:0,approxCount:a,convex:!1,edgeSupport:0,aspectRatio:1/0,minSide:0,rightAngleScore:0,oppositeSideConsistency:0,contourFitRatio:0,contourFitScore:0};let A=n*i,c=e.area||0,l=e.boundingBox||{minX:0,minY:0,maxX:0,maxY:0},d=c/Math.max(1,(l.maxX-l.minX+1)*(l.maxY-l.minY+1)),m=(function(F){if(!F)return 0;let G=[F.topLeft,F.topRight,F.bottomRight,F.bottomLeft],V=0;for(let W=0;W<G.length;W++){let z=(W+1)%G.length;V+=G[W].x*G[z].y-G[z].x*G[W].y}return Math.abs(V)/2})(s),h=m/Math.max(1,A),u=ss(s),f=Math.min(...u),p=(u[0]+u[2])/2,g=(u[1]+u[3])/2,C=p>g?p/Math.max(1e-6,g):g/Math.max(1e-6,p),w=(function(F){let G=[F.topLeft,F.topRight,F.bottomRight,F.bottomLeft],V=[];for(let z=0;z<G.length;z++){let X=G[z],S=G[(z+1)%G.length],_=G[(z+2)%G.length],K=(S.x-X.x)*(_.y-S.y)-(S.y-X.y)*(_.x-S.x);Math.abs(K)<1e-6||V.push(Math.sign(K))}if(V.length<3)return!1;let W=V[0];return V.every(z=>z===W)})(s),Q=(function(F,G,V,W){if(!F?.points||F.points.length===0)return 0;let z=Math.max(1,Math.floor(F.points.length/240)),X=0,S=0;for(let _=0;_<F.points.length;_+=z){let K=F.points[_],$=Math.max(0,Math.min(V-1,0|K.x)),T=Math.max(0,Math.min(W-1,0|K.y));X++;let Y=!1;for(let j=-1;j<=1&&!Y;j++){let ie=T+j;if(!(ie<0||ie>=W))for(let ee=-1;ee<=1;ee++){let oe=$+ee;if(!(oe<0||oe>=V)&&G[ie*V+oe]>0){Y=!0;break}}}Y&&S++}return X===0?0:S/X})(e,t,n,i),k=Su(s),I=(function(F){let G=ss(F);return(Math.min(G[0],G[2])/Math.max(1e-6,Math.max(G[0],G[2]))+Math.min(G[1],G[3])/Math.max(1e-6,Math.max(G[1],G[3])))/2})(s),b=c/Math.max(1,m),v=Ft(1-Math.abs(b-1)/.55),O=a===4?1:a===5?.9:a===6?.7:a<=8?.5:.28,L=Ft(c/Math.max(1,.4*A)),q=Ft((d-.08)/.72),Z=Ft((h-.03)/.82),R=o.minDocumentSideRatio!==void 0?o.minDocumentSideRatio:.06,E=o.minDocumentCoverageRatio!==void 0?o.minDocumentCoverageRatio:.04,y=o.maxDocumentAspectRatio!==void 0?o.maxDocumentAspectRatio:8,x=o.minDocumentFillRatio!==void 0?o.minDocumentFillRatio:.07,N=o.minContourFitRatio!==void 0?o.minContourFitRatio:.11,U=o.maxContourFitRatio!==void 0?o.maxContourFitRatio:1.2,M=o.minRightAngleScore!==void 0?o.minRightAngleScore:.42,B=o.minOppositeSideConsistency!==void 0?o.minOppositeSideConsistency:.3,D=Math.min(n,i)*R,P=(function(F,G=6){let V=[F?.topLeft,F?.topRight,F?.bottomRight,F?.bottomLeft];if(V.some(W=>!W||!Number.isFinite(W.x)||!Number.isFinite(W.y)))return!1;for(let W=0;W<V.length;W++)for(let z=W+1;z<V.length;z++)if(Pt(V[W],V[z])<G)return!1;return!0})(s)&&w&&f>=D&&h>=E&&C<=y&&d>=x&&b>=N&&b<=U&&k>=M&&I>=B,H=.22*L+.14*q+.15*O+.08*(w?1:0)+.08*Q+.13*Z+.1*k+.05*I+.05*v;return{contour:e,corners:s,score:H,confidence:P?H:.33*H,isValid:P,area:c,fillRatio:d,coverageRatio:h,cornersArea:m,approxCount:a,convex:w,edgeSupport:Q,aspectRatio:C,minSide:f,rightAngleScore:k,oppositeSideConsistency:I,contourFitRatio:b,contourFitScore:v}}async function ku(e,t,n,i,o={}){let r=o.debug?{}:{_timingsOnly:!0},a=[];r&&!r._timingsOnly&&(r.preprocessing={scaledDimensions:{width:t,height:n},scaleFactor:i,maxProcessingDimension:o.maxProcessingDimension||800});let s=(function(g={}){let C=g.dilationKernelSize||3,w=g.dilationIterations||1,Q=g.applyDilation===void 0||g.applyDilation,k=[{name:"default",lowThreshold:g.lowThreshold,highThreshold:g.highThreshold,dilationKernelSize:C,dilationIterations:w,applyDilation:Q}];if(g.enableDetectionCascade===!1)return k;k.push({name:"connect-edges",lowThreshold:g.lowThreshold,highThreshold:g.highThreshold,dilationKernelSize:Math.max(C,5),dilationIterations:Math.max(w,2),applyDilation:!0}),k.push({name:"no-dilation",lowThreshold:g.lowThreshold,highThreshold:g.highThreshold,dilationKernelSize:C,dilationIterations:w,applyDilation:!1}),g.lowThreshold===void 0&&g.highThreshold===void 0&&k.push({name:"fixed-mid-thresholds",lowThreshold:60,highThreshold:180,dilationKernelSize:C,dilationIterations:w,applyDilation:Q});let I=[],b=new Set;for(let v of k){let O=[v.lowThreshold,v.highThreshold,v.dilationKernelSize,v.dilationIterations,v.applyDilation].join(":");b.has(O)||(b.add(O),I.push(v))}return I})(o),A=[],c=async(g,C)=>{let w=g.name||`pass-${C+1}`,Q=C===0?"":` (${w})`,k=o.debug?{}:{_timingsOnly:!0},I=await Qu(e,{width:t,height:n,lowThreshold:g.lowThreshold,highThreshold:g.highThreshold,dilationKernelSize:g.dilationKernelSize,dilationIterations:g.dilationIterations,applyDilation:g.applyDilation,debug:k,skipGrayscale:!0,useWasmBlur:!0,useWasmHysteresis:o.useWasmHysteresis,useWasmFullCanny:o.useWasmFullCanny});k.timings&&k.timings.forEach(q=>{q.step!=="Edge Detection Total"&&a.push({step:`${q.step}${Q}`,ms:q.ms})});let b=performance.now(),v=gu(I,{minArea:(o.minArea||1e3)/(i*i),width:t,height:n});a.push({step:`Find Contours${Q}`,ms:(performance.now()-b).toFixed(2)}),b=performance.now();let{best:O,candidates:L}=(function(q,Z,R,E,y={}){let x=y.maxCandidateContours||12,N=q.slice(0,x).map((U,M)=>({rankByArea:M,...wu(U,Z,R,E,y)})).sort(As);return{best:N[0]||null,candidates:N}})(v,I,t,n,o);return a.push({step:`Corner Detection${Q}`,ms:(performance.now()-b).toFixed(2)}),{name:w,params:{lowThreshold:g.lowThreshold,highThreshold:g.highThreshold,dilationKernelSize:g.dilationKernelSize,dilationIterations:g.dilationIterations,applyDilation:g.applyDilation},contours:v,best:O,candidates:L}},l=await c(s[0],0);if(A.push(l),(function(g,C={}){if(C.enableDetectionCascade===!1)return!1;if(!g||!g.corners)return!0;let w=C.minCascadeTriggerConfidence!==void 0?C.minCascadeTriggerConfidence:.68;return!g.isValid||g.confidence<w||g.approxCount>5||g.rightAngleScore<.55||g.contourFitRatio<.14})(l.best,o))for(let g=1;g<s.length;g++)A.push(await c(s[g],g));let d=[];for(let g of A)for(let C of g.candidates)d.push({...C,passName:g.name,passParams:g.params});d.sort(As);let m=d[0]||null,h=d;if(!m||!m.corners)return{success:!1,message:"No document detected",debug:r._timingsOnly?null:r,timings:a};r&&!r._timingsOnly&&(r.passes=A.map(g=>({name:g.name,params:g.params,contourCount:g.contours.length,bestCandidate:g.best?{score:g.best.score,confidence:g.best.confidence,isValid:g.best.isValid,approxCount:g.best.approxCount,coverageRatio:g.best.coverageRatio,fillRatio:g.best.fillRatio,rightAngleScore:g.best.rightAngleScore,contourFitRatio:g.best.contourFitRatio}:null})),r.candidates=h.map(g=>({passName:g.passName,rankByArea:g.rankByArea,area:g.area,fillRatio:g.fillRatio,coverageRatio:g.coverageRatio,cornersArea:g.cornersArea,approxCount:g.approxCount,convex:g.convex,edgeSupport:g.edgeSupport,aspectRatio:g.aspectRatio,minSide:g.minSide,rightAngleScore:g.rightAngleScore,oppositeSideConsistency:g.oppositeSideConsistency,contourFitRatio:g.contourFitRatio,contourFitScore:g.contourFitScore,score:g.score,confidence:g.confidence,isValid:g.isValid})),r.selectedCandidate=h[0]?{passName:h[0].passName,rankByArea:h[0].rankByArea,area:h[0].area,fillRatio:h[0].fillRatio,coverageRatio:h[0].coverageRatio,approxCount:h[0].approxCount,edgeSupport:h[0].edgeSupport,aspectRatio:h[0].aspectRatio,minSide:h[0].minSide,rightAngleScore:h[0].rightAngleScore,oppositeSideConsistency:h[0].oppositeSideConsistency,contourFitRatio:h[0].contourFitRatio,score:h[0].score,confidence:h[0].confidence,isValid:h[0].isValid}:null);let u=m.corners,f=m.contour,p=u;return i!==1&&(p={topLeft:{x:u.topLeft.x*i,y:u.topLeft.y*i},topRight:{x:u.topRight.x*i,y:u.topRight.y*i},bottomRight:{x:u.bottomRight.x*i,y:u.bottomRight.y*i},bottomLeft:{x:u.bottomLeft.x*i,y:u.bottomLeft.y*i}}),{success:!0,contour:f,corners:p,confidence:m.confidence,debug:r._timingsOnly?null:r,timings:a}}function Mu(e,t,n){let{topLeft:i,topRight:o,bottomRight:r,bottomLeft:a}=n,s=Math.hypot(r.x-a.x,r.y-a.y),A=Math.hypot(o.x-i.x,o.y-i.y),c=Math.round(Math.max(s,A)),l=Math.hypot(o.x-r.x,o.y-r.y),d=Math.hypot(i.x-a.x,i.y-a.y),m=Math.round(Math.max(l,d));e.canvas.width=c,e.canvas.height=m,(function(h,u,f,p,g){let C=u&&typeof u.width=="number"&&typeof u.height=="number"&&u.data,w=u.width||u.naturalWidth,Q=u.height||u.naturalHeight,k=document.createElement("canvas");k.width=w,k.height=Q;let I=k.getContext("2d",{willReadFrequently:!0});C?I.putImageData(u,0,0):I.drawImage(u,0,0,w,Q);let b=I.getImageData(0,0,w,Q).data,v=(function(P){let H=P[0][0],F=P[0][1],G=P[0][2],V=P[1][0],W=P[1][1],z=P[1][2],X=P[2][0],S=P[2][1],_=P[2][2],K=W*_-z*S,$=-(V*_-z*X),T=V*S-W*X,Y=-(F*_-G*S),j=H*_-G*X,ie=-(H*S-F*X),ee=F*z-G*W,oe=-(H*z-G*V),le=H*W-F*V,se=H*K+F*$+G*T;if(se===0)throw new Error("Singular matrix");return[[K/se,Y/se,ee/se],[$/se,j/se,oe/se],[T/se,ie/se,le/se]]})(f),O=v[0][0],L=v[0][1],q=v[0][2],Z=v[1][0],R=v[1][1],E=v[1][2],y=v[2][0],x=v[2][1],N=v[2][2],U=h.createImageData(p,g),M=U.data,B=w-1,D=Q-1;for(let P=0;P<g;P++){let H=L*P+q,F=R*P+E,G=x*P+N;for(let V=0;V<p;V++){let W=1/(y*V+G),z=(O*V+H)*W,X=(Z*V+F)*W,S=z<0?0:z>B?B:z,_=X<0?0:X>D?D:X,K=0|S,$=0|_,T=K<B?K+1:K,Y=$<D?$+1:$,j=S-K,ie=_-$,ee=1-j,oe=1-ie,le=ee*oe,se=j*oe,Ae=ee*ie,Ee=j*ie,be=$*w+K<<2,je=$*w+T<<2,Ze=Y*w+K<<2,te=Y*w+T<<2,ne=P*p+V<<2;M[ne]=b[be]*le+b[je]*se+b[Ze]*Ae+b[te]*Ee+.5|0,M[ne+1]=b[be+1]*le+b[je+1]*se+b[Ze+1]*Ae+b[te+1]*Ee+.5|0,M[ne+2]=b[be+2]*le+b[je+2]*se+b[Ze+2]*Ae+b[te+2]*Ee+.5|0,M[ne+3]=255}}h.putImageData(U,0,0)})(e,t,(function(h,u){let f=(function(p,g){let C=p.length,w=p[0].length,Q=p.map(b=>b.slice()),k=g.slice();for(let b=0;b<w;b++){let v=b;for(let O=b+1;O<C;O++)Math.abs(Q[O][b])>Math.abs(Q[v][b])&&(v=O);[Q[b],Q[v]]=[Q[v],Q[b]],[k[b],k[v]]=[k[v],k[b]];for(let O=b+1;O<C;O++){let L=Q[O][b]/Q[b][b];for(let q=b;q<w;q++)Q[O][q]-=L*Q[b][q];k[O]-=L*k[b]}}let I=new Array(w);for(let b=w-1;b>=0;b--){let v=k[b];for(let O=b+1;O<w;O++)v-=Q[b][O]*I[O];I[b]=v/Q[b][b]}return I})((function(p){let g=[];for(let C=0;C<4;C++){let[w,Q]=p[C];g.push([w,Q,1,0,0,0,-w*u[C][0],-Q*u[C][0]]),g.push([0,0,0,w,Q,1,-w*u[C][1],-Q*u[C][1]])}return g})(h),[u[0][0],u[0][1],u[1][0],u[1][1],u[2][0],u[2][1],u[3][0],u[3][1]]);return[[f[0],f[1],f[2]],[f[3],f[4],f[5]],[f[6],f[7],1]]})([[i.x,i.y],[o.x,o.y],[r.x,r.y],[a.x,a.y]],[[0,0],[c-1,0],[c-1,m-1],[0,m-1]]),c,m)}async function gs(e,t={}){let n=[],i=performance.now(),o=t.mode||"detect",r=t.output||"canvas",a=t.maxProcessingDimension||800,s,A,c,l;if((t.detector||"classical")==="ml"){A=performance.now();let{detectDocumentMl:m}=await Promise.resolve().then(()=>(ns(),ts));s=await m(e,t.ml||{}),n.push({step:"ML Detection Total",ms:(performance.now()-A).toFixed(2)}),s.timings&&s.timings.forEach(h=>n.push(h))}else{A=performance.now();let{grayscaleData:m,scaleFactor:h,scaledDimensions:u}=await(async function(f,p=800){let g,C,w=f&&typeof f.width=="number"&&typeof f.height=="number"&&f.data;if(w)g=f.width,C=f.height;else{if(!f)throw new Error("No image provided");g=f.width||f.naturalWidth,C=f.height||f.naturalHeight}let Q=Math.max(g,C),k,I,b;if(Q<=p)k=g,I=C,b=1;else{let E=p/Q;k=Math.round(g*E),I=Math.round(C*E),b=1/E}let v=typeof OffscreenCanvas<"u",O=v?new OffscreenCanvas(k,I):document.createElement("canvas");v||(O.width=k,O.height=I);let L=O.getContext("2d",{willReadFrequently:!0});if(L.imageSmoothingEnabled=!0,L.imageSmoothingQuality="medium",w){let E=v?new OffscreenCanvas(g,C):document.createElement("canvas");v||(E.width=g,E.height=C),E.getContext("2d").putImageData(f,0,0),L.drawImage(E,0,0,g,C,0,0,k,I)}else L.drawImage(f,0,0,g,C,0,0,k,I);let q=L.getImageData(0,0,k,I),Z=q.data,R=new Uint8ClampedArray(k*I);for(let E=0,y=0;E<Z.length;E+=4,y++){let x=54*Z[E]+183*Z[E+1]+19*Z[E+2]>>8;R[y]=x,Z[E]=Z[E+1]=Z[E+2]=x}return{grayscaleData:R,imageData:q,scaleFactor:b,originalDimensions:{width:g,height:C},scaledDimensions:{width:k,height:I}}})(e,a);n.push({step:"Image Prep + Scale + Gray",ms:(performance.now()-A).toFixed(2)}),s=await ku(m,u.width,u.height,h,t),s.timings&&s.timings.forEach(f=>n.push(f))}if(!s.success){let m=performance.now();return n.unshift({step:"Total",ms:(m-i).toFixed(2)}),{output:null,corners:null,contour:null,confidence:s.confidence||null,score:s.score??null,debug:s.debug,success:!1,message:s.message||"No document detected",timings:n}}o==="detect"?l=null:o==="extract"&&(A=performance.now(),c=document.createElement("canvas"),Mu(c.getContext("2d"),e,s.corners),n.push({step:"Perspective Transform",ms:(performance.now()-A).toFixed(2)})),o!=="detect"&&c&&(A=performance.now(),l=r==="canvas"?c:r==="imagedata"?c.getContext("2d").getImageData(0,0,c.width,c.height):r==="dataurl"?c.toDataURL():c,n.push({step:"Output Conversion",ms:(performance.now()-A).toFixed(2)}));let d=performance.now();return n.unshift({step:"Total",ms:(d-i).toFixed(2)}),{output:l,corners:s.corners,contour:s.contour??null,confidence:s.confidence||null,score:s.score??null,debug:s.debug,success:!0,message:"Document detected",timings:n}}var ae,uu,du,Tt,_e,_t,Lt,Ln,rs,Ki,ms=J(()=>{"use strict";uu=1e3,du=10;Tt=null;_e=0;_t=null;Lt=null;Ln=null,rs=!1,Ki=null});var zi={};ue(zi,{DOC_DETECT_MIN_CONFIDENCE:()=>hs,DOC_DETECT_WIDTH:()=>Xe,SCANIC_VERSION:()=>xu,detectQuad:()=>Du});async function Du(e){let t=await gs(e,{mode:"detect",detector:"classical",maxProcessingDimension:Xe});return!t.success||t.corners===null||typeof t.confidence=="number"&&t.confidence<hs?null:t.corners}var xu,hs,Xi=J(()=>{"use strict";ms();xn();xu="1.5.0",hs=.35});var $i={};ue($i,{CAPTURE_CANDIDATE_SPACING_MS:()=>Es,CAPTURE_EXTRA_CANDIDATES:()=>ys,CaptureSessionDoc:()=>ji,DOC_CADENCE_HZ:()=>Is,DOC_SHUTTER_DEFAULTS:()=>Nn,passportBandOf:()=>Cs,resolveDocShutterTuning:()=>Zi,warmDocDetector:()=>Tu});async function vu(e){return Nt===null&&(Nt=(await Promise.resolve().then(()=>(Xi(),zi))).detectQuad),Nt(e)}async function Ru(e){let t=Ei(e);return t===null?null:{topLeft:{x:t.x,y:t.y},topRight:{x:t.x+t.width,y:t.y},bottomRight:{x:t.x+t.width,y:t.y+t.height},bottomLeft:{x:t.x,y:t.y+t.height}}}function Tu(){Nt===null&&Promise.resolve().then(()=>(Xi(),zi)).then(e=>{Nt=e.detectQuad}).catch(()=>{})}function Zi(e){let t=e!==null&&typeof e=="object"?e:{},n=(i,o,r)=>typeof i=="number"&&Number.isFinite(i)&&i>=o&&i<=r?i:void 0;return{manualShutterMs:n(t.manualShutterMs,1e3,6e4)??Nn.manualShutterMs,detectedNoLockMs:n(t.steadyMs,300,3e4)!==void 0?t.steadyMs+(n(t.lockMs,0,1e4)??450):Nn.detectedNoLockMs}}function Cs(e,t,n,i,o){let r=Math.min(i,e.width*1.06*t),a=Math.min(o,Math.max(e.height*1.6*n,r/5)),s=(e.y+e.height/2)*n,A=Math.max(0,Math.min(i-r,(e.x-e.width*.03)*t)),c=Math.max(0,Math.min(o-a,s-a/2));return{x:A,y:c,w:r,h:a}}function ps(e,t){let n=e.x*t.width,i=e.y*t.height,o=(e.x+e.width)*t.width,r=(e.y+e.height)*t.height;return{topLeft:{x:n,y:i},topRight:{x:o,y:i},bottomRight:{x:o,y:r},bottomLeft:{x:n,y:r}}}function _u(e,t,n){let i=Ge(e);return t.width<=0||t.height<=0?0:n==="ID-3"?i.width/t.width:i.width*i.height/(t.width*t.height)}function fs(e,t){let n=e.videoWidth,i=e.videoHeight;if(n===0||i===0)return null;let o=Math.min(1,t/n),r=Math.round(n*o),a=Math.round(i*o),s=document.createElement("canvas");s.width=r,s.height=a;let A=s.getContext("2d",{willReadFrequently:!0});return A===null?null:(n/Math.max(1,r)>4&&(A.imageSmoothingQuality="high"),A.drawImage(e,0,0,r,a),A.getImageData(0,0,r,a))}function Pn(e,t){let n=[t.topLeft.x,t.topRight.x,t.bottomRight.x,t.bottomLeft.x],i=[t.topLeft.y,t.topRight.y,t.bottomRight.y,t.bottomLeft.y],o=Math.max(0,Math.floor(Math.min(...n))),r=Math.max(0,Math.floor(Math.min(...i))),a=Math.min(e.width,Math.ceil(Math.max(...n))),s=Math.min(e.height,Math.ceil(Math.max(...i))),A=Math.max(1,a-o),c=Math.max(1,s-r),l=new Uint8ClampedArray(A*c*4);for(let d=0;d<c;d++){let m=((r+d)*e.width+o)*4;l.set(e.data.subarray(m,m+A*4),d*A*4)}return{data:l,width:A,height:c,colorSpace:e.colorSpace}}function Fu(e,t){return e==="glare"?"glare":e==="too_small"?"too_far":e==="too_big"?"too_close":t?"too_dark":e==="blurry"?"blurry":e==="off_center"?"edge_clipped":e==="no_card"?"sensing":"hold_still"}var Nt,Is,Nn,ji,ys,Es,Lu,Pu,Gn=J(()=>{"use strict";zt();nt();ii();qe();Qa();Ma();xn();bi();Ja();Vi();Ni();Ji();wt();Bn();Nt=null;Is=Object.freeze({LOW:3,MID:5,HIGH:6}),Nn=Object.freeze({manualShutterMs:6e3,detectedNoLockMs:1950});ji=class e{constructor(t){this.torchOn=!1;this.stillRefusals=0;this.zoom=1;this.positioningSince=null;this.detectedSince=null;this.lastSeenAt=null;this.lastGuideQuad=null;this.lastOcrReady=null;this.shutterOffered=!1;this.stats=e.freshStats();this.handlers=new Map;this.stream=null;this.timer=null;this.state="idle";this.lastGuidance=null;this.attempt=0;this.capturing=!1;this.feedback=new wn;this.lastFeedbackKey=null;this.lastQuad=null;this.lastDetect=null;this.opts=t,this.gate=new kn(t.format??"ID-1",t.thresholds);let n=t.deviceClass??rn(on());this.deviceClass=n,this.camera=t.camera??vn,this.shutterTuning=t.shutter??Nn,this.guideTuning=t.guideLock??vt,this.guideLock=new _n(this.guideTuning),this.cadenceMs=1e3/Is[n]}on(t,n){let i=this.handlers.get(t);return i||(i=new Set,this.handlers.set(t,i)),i.add(n),()=>i?.delete(n)}emit(t,n){for(let i of[...this.handlers.get(t)??[]])i(n)}async start(){let t=++this.attempt;this.gate.reset(),this.resetSide(),this.feedback.reset(),this.lastFeedbackKey=null,this.lastGuidance=null,this.capturing=!1,this.setState("preflight");try{let n=this.opts.getUserMedia??(r=>navigator.mediaDevices.getUserMedia(r));this.setState("acquiring");let i=this.opts.enumerateDevices??(this.opts.getUserMedia===void 0&&typeof navigator<"u"&&navigator.mediaDevices?.enumerateDevices?()=>navigator.mediaDevices.enumerateDevices():void 0),o=await za({getUserMedia:n,...i!==void 0?{enumerateDevices:i}:{},lensSelection:this.camera.lensSelection,base:Da});if(this.stream=o.stream,Wt(this.stream),t!==this.attempt){for(let r of this.stream.getTracks())r.stop();return}if(this.opts.upgradeResolution!==!1&&await this.upgradeResolution(),t!==this.attempt||(await this.applyFocusAndZoom(),t!==this.attempt))return;this.opts.video.srcObject=this.stream,await this.opts.video.play().catch(()=>{}),this.setState("positioning"),this.scheduleTick(t)}catch(n){let i=tt(n);this.setState("error"),this.emit("error",{kind:i,retryable:!0})}}rearm(t){t!==void 0&&(this.opts.side=t),this.gate.reset(),this.resetSide(),this.feedback.reset(),this.lastFeedbackKey=null,this.lastGuidance=null,this.capturing=!1,this.stillRefusals=0,this.state==="captured"&&(this.setState("positioning"),this.scheduleTick(this.attempt))}async captureNow(){if(this.state!=="positioning"||this.capturing)return;let t=this.opts.video,n=this.lastDetect?.width??Math.max(1,t.videoWidth),i=this.lastDetect?.height??Math.max(1,t.videoHeight),o=this.lastQuad??this.lastGuideQuad??{topLeft:{x:0,y:0},topRight:{x:n,y:0},bottomRight:{x:n,y:i},bottomLeft:{x:0,y:i}},r=(this.opts.now??(()=>performance.now()))(),a=this.feedback.force("processing",r);this.lastFeedbackKey=a.key,this.emit("feedback",a),await this.fire(this.attempt,this.lastOcrReady!==null?this.lastOcrReady.quad:o,{width:n,height:i,tickSharpness:this.lastDetect?.tickSharpness??0},this.lastOcrReady?.via??"manual")}captureReport(){let t=this.stats;return{...this.opts.side!==void 0?{side:this.opts.side}:{},format:this.opts.format??"ID-1",deviceClass:this.deviceClass,video:{width:this.opts.video.videoWidth||0,height:this.opts.video.videoHeight||0},zoom:this.zoom,...t.zoomFallbackAtMs!==void 0?{zoomFallbackAtMs:t.zoomFallbackAtMs}:{},...t.msToCapture!==void 0?{msToCapture:t.msToCapture}:{},...t.via!==void 0?{via:t.via}:{},...t.shutterAtMs!==void 0?{shutterAtMs:t.shutterAtMs}:{},...t.shutterReason!==void 0?{shutterReason:t.shutterReason}:{},ticks:t.ticks,quadFraming:{...t.quadFraming},qualityBlockers:{...t.qualityBlockers},guideBlockers:{...t.guideBlockers},stillRefusals:t.stillRefusals,...this.ocrReport()}}ocrReport(){let t=this.opts.ocr;if(t===void 0)return{};let n=(this.opts.format??"ID-1")==="ID-3"||this.opts.side==="single"?"single":this.opts.side==="verso"?"verso":"recto",i=t.report(n,this.stats.via,(this.opts.now??(()=>performance.now()))());return i===null?{}:{ocr:i}}static freshStats(){return{ticks:0,quadFraming:{},qualityBlockers:{},guideBlockers:{},stillRefusals:0}}setGuide(t){t===void 0?delete this.opts.guide:this.opts.guide=t,this.guideLock.reset()}guideRegion(t){let n=t.width/Math.max(1,t.height),i=this.opts.guide;if(i!==void 0&&i.viewAspect>0){let s={width:i.viewAspect,height:1},A={x:i.rect.x*i.viewAspect,y:i.rect.y,width:i.rect.width*i.viewAspect,height:i.rect.height};return ja(s,A,n,0)}let o=Yr(this.opts.format??"ID-1").center,r=.86,a=r*n/o;return a>.84&&(a=.84,r=a*o/n),{x:(1-r)/2,y:(1-a)/2,width:r,height:a}}resetSide(){this.positioningSince=null,this.detectedSince=null,this.lastSeenAt=null,this.guideLock.reset(),this.lastGuideQuad=null,this.lastOcrReady=null,this.opts.ocr?.reset(),this.stats=e.freshStats(),this.shutterOffered&&(this.shutterOffered=!1,this.emit("shutter",{available:!1}))}withdrawShutter(){this.shutterOffered&&(this.shutterOffered=!1,this.emit("shutter",{available:!1}))}zoomFallback(t){let n=this.videoTrack();if(n===null||this.zoom<=1)return;let i=this.focusCaps(),o=typeof i?.zoom?.min=="number"?Math.max(i.zoom.min,1):1;this.zoom=o,this.stats.zoomFallbackAtMs=Math.round(t-(this.positioningSince??t)),this.guideLock.reset(),this.gate.reset(),n.applyConstraints({advanced:[{zoom:o}]}).catch(()=>{})}offerShutter(t,n){this.shutterOffered||(this.shutterOffered=!0,this.stats.shutterAtMs=Math.round(n-(this.positioningSince??n)),this.stats.shutterReason=t,this.emit("shutter",{available:!0,reason:t}))}torchAvailable(){try{return this.stream?.getVideoTracks?.()[0]?.getCapabilities?.()?.torch===!0}catch{return!1}}async setTorch(t){this.torchOn=t;try{await this.stream?.getVideoTracks?.()[0]?.applyConstraints({advanced:[{torch:t}]})}catch{}}destroy(){if(this.attempt+=1,this.timer!==null&&(this.opts.clearTimer??clearTimeout)(this.timer),this.timer=null,this.stream)for(let t of this.stream.getTracks())t.stop();this.stream=null,this.opts.video.srcObject=null}async upgradeResolution(){try{let t=this.stream?.getVideoTracks?.()[0];if(t===void 0)return;let n=t.getSettings?.()??{},i=Ta(t.getCapabilities?.(),{width:n.width??0,height:n.height??0},this.deviceClass,{width:this.camera.width,height:this.camera.height});i!==null&&await t.applyConstraints(i)}catch{}}focusCaps(){try{return this.videoTrack()?.getCapabilities?.()??null}catch{return null}}async applyFocusAndZoom(){let t=this.videoTrack();if(t===null)return;let n=this.focusCaps();this.camera.continuousFocus&&Rn(n,"continuous")&&await t.applyConstraints({advanced:[{focusMode:"continuous"}]}).catch(()=>{});let i={width:0,height:0};try{let r=t.getSettings?.()??{};i={width:r.width??0,height:r.height??0}}catch{}let o=Wa(n,i,this.opts.format??"ID-1",this.camera);if(o>1)try{await t.applyConstraints({advanced:[{zoom:o}]}),this.zoom=o}catch{this.zoom=1}}async focusAt(t,n){let i=this.videoTrack(),o=Ui(this.focusCaps(),t,n);if(!(i===null||o===null))try{await i.applyConstraints({advanced:[o]}),(this.opts.setTimer??setTimeout)(()=>{this.restoreContinuous()},1500)}catch{}}async restoreContinuous(){let t=this.videoTrack();t===null||!this.camera.continuousFocus||!Rn(this.focusCaps(),"continuous")||await t.applyConstraints({advanced:[{focusMode:"continuous"}]}).catch(()=>{})}async refocusOn(t,n){let i=this.camera.refocusBeforePhotoMs,o=this.videoTrack();if(i<=0||o===null||n.width<=0||n.height<=0)return;let r=Ge(t),a=Ui(this.focusCaps(),(r.x+r.width/2)/n.width,(r.y+r.height/2)/n.height);if(a!==null)try{await o.applyConstraints({advanced:[a]});let s=this.opts.setTimer??setTimeout;await new Promise(A=>{s(()=>A(),i)})}catch{}}videoTrack(){try{return this.stream?.getVideoTracks?.()[0]??null}catch{return null}}async takeStill(t,n,i){if(this.opts.captureStill!==void 0)return this.opts.captureStill(this.opts.video,t,n);let o=this.opts.format??"ID-1",r=this.videoTrack();if(i&&this.opts.photoCapture!==!1&&this.deviceClass!=="LOW"&&!this.torchOn&&r!==null&&Oa(r)){await this.refocusOn(t,n);let a=await Va(this.opts.video,t,n,o,{track:r,detect:this.detector(),detectWidth:Xe});if(this.restoreContinuous(),a!==null)return a}return Ua(this.opts.video,t,n,o)}detector(){return this.opts.detect??((this.opts.format??"ID-1")==="ID-3"?Ru:vu)}setState(t){this.state=t,this.emit("statechange",{state:t})}scheduleTick(t){let n=this.opts.setTimer??setTimeout;this.timer=n(()=>{this.tick(t)},this.cadenceMs)}async tick(t){if(t!==this.attempt||this.state!=="positioning"||this.capturing)return;let n=this.opts.now??(()=>performance.now()),i=this.opts.grabDetectFrame??fs,o=this.detector(),r=i(this.opts.video,Xe);if(r===null){this.scheduleTick(t);return}let a=null;try{a=await o(r)}catch{a=null}if(t!==this.attempt)return;let s=a!==null?Pn(r,a):r,A=n(),c={sharpness:we(s),exposure:it(s),meanLuma:Ke(s),specularFraction:wa(s)},l=ka({format:this.opts.format??"ID-1",quad:a,frameWidth:r.width,frameHeight:r.height,measures:c,...this.opts.thresholds!==void 0?{thresholds:this.opts.thresholds}:{}}),d=this.gate.tick({timestampMs:A,quad:a,quality:c,frameWidth:r.width,frameHeight:r.height}),h=(this.opts.format??"ID-1")!=="ID-3"?Za(r,this.guideRegion(r),{edgePeakFrac:this.guideTuning.edgePeakFrac}):Dt,u=this.guideLock.tick(h,A);this.lastGuideQuad=u.detected?$a(h):null;let f=this.capturing?null:this.ocrTick(r,a,h,u.detected,l,A);this.positioningSince??(this.positioningSince=A);let p=this.stats;if(p.ticks+=1,p.quadFraming[l.framing]=(p.quadFraming[l.framing]??0)+1,l.framing==="ok"&&!d.ready){let L=l.lighting!=="ok"?l.lighting:l.glare!=="ok"?"glare":l.blur!=="ok"?"blurry":"steadying";p.qualityBlockers[L]=(p.qualityBlockers[L]??0)+1}p.guideBlockers[u.blocker]=(p.guideBlockers[u.blocker]??0)+1,a!==null||u.detected?(this.detectedSince??(this.detectedSince=A),this.lastSeenAt=A):this.detectedSince=null,this.lastSeenAt!==null&&A-this.lastSeenAt<=Pu?A-this.positioningSince>=this.shutterTuning.manualShutterMs?this.offerShutter("timeout",A):f?.suspendQuality!==!0&&this.detectedSince!==null&&A-this.detectedSince>=this.shutterTuning.detectedNoLockMs&&this.offerShutter("detected_no_lock",A):this.withdrawShutter();let w=A-(this.lastSeenAt??this.positioningSince);this.zoom>1&&this.camera.zoomFallbackMs>0&&w>=this.camera.zoomFallbackMs&&this.zoomFallback(A),this.emit("checks",{engine:"docv1",p:d.p,plausible:d.plausible,stableTicks:d.stableTicks,quad:d.quad,frameWidth:r.width,frameHeight:r.height,analysis:l,ready:f?.suspendQuality!==!0&&(d.ready&&a!==null||u.ready&&this.lastGuideQuad!==null)||this.lastOcrReady!==null,guide:{detected:u.detected,blocker:u.blocker,fill:h.fill,shape:h.shape,content:h.content,offsetX:h.offsetX,offsetY:h.offsetY},...f!==null&&f.mode!=="off"?{ocr:{mode:f.mode,...f.mrz?{mrz:f.mrz}:{},...f.lock?{lock:f.lock}:{}}}:f?.mrz?{ocr:{mode:f.mode,mrz:f.mrz}}:{}}),this.lastQuad=d.plausible?a:null,this.lastDetect={width:r.width,height:r.height,tickSharpness:c.sharpness};let Q=Ba(l);l.framing!=="ok"&&u.detected&&(Q=Fu(u.blocker,h.brightness<this.guideTuning.darkBrightness)),Q==="blurry"&&a!==null&&_u(a,r,this.opts.format??"ID-1")>=this.camera.focusFarFillFrac&&(Q="focus_far"),Q==="sensing"&&this.zoom>1&&this.camera.noDocFarHintMs>0&&w>=this.camera.noDocFarHintMs&&(Q="focus_far");let k=this.feedback.tick(Q,A);if(k.key!==this.lastFeedbackKey&&(this.lastFeedbackKey=k.key,this.emit("feedback",k)),d.guidanceKey!==this.lastGuidance&&(this.lastGuidance=d.guidanceKey,this.emit("guidance",{key:d.guidanceKey})),this.capturing)return;let I=f?.suspendQuality!==!0,b=I&&d.ready&&a!==null,v=I&&u.ready&&this.lastGuideQuad!==null,O=this.lastOcrReady;if(O!==null&&this.opts.autoCapture!==!1){let L=this.feedback.force("processing",A);this.lastFeedbackKey=L.key,this.emit("feedback",L);let q=we(Pn(r,O.quad));await this.fire(t,O.quad,{width:r.width,height:r.height,tickSharpness:q},O.via);return}if((b||v)&&this.opts.autoCapture!==!1){let L=this.feedback.force("processing",A);this.lastFeedbackKey=L.key,this.emit("feedback",L);let q=v?this.lastGuideQuad:a,Z=v?u.via==="steady"?"guide_steady":"guide_good":"quad",R=v?we(Pn(r,q)):c.sharpness;await this.fire(t,q,{width:r.width,height:r.height,tickSharpness:R},Z);return}this.scheduleTick(t)}async fire(t,n,i,o){this.capturing=!0;let r=this.opts.grabDetectFrame??fs,a=this.opts.setTimer??setTimeout,s={width:i.width,height:i.height};try{let A={still:await this.takeStill(n,s,!0),sharpness:i.tickSharpness};if(t!==this.attempt)return;let c=A.still.source==="photo"?0:ys;for(let m=0;m<c;m++){if(await new Promise(f=>{a(()=>f(),Es)}),t!==this.attempt)return;let h=r(this.opts.video,Xe);if(h===null)continue;let u=we(Pn(h,n));if(u>A.sharpness*Lu){let f=await this.takeStill(n,s,!1);if(t!==this.attempt)return;A={still:f,sharpness:u}}}if(t!==this.attempt)return;let l=A.still.sharpness;if(this.opts.autoCapture!==!1&&o!=="manual"&&typeof l=="number"&&l>=0&&l<this.camera.stillSharpnessMin&&this.stillRefusals<this.camera.stillRefusalsMax){this.stillRefusals+=1,this.stats.stillRefusals+=1,this.guideLock.reset(),this.lastOcrReady=null,(o==="text_lock"||o==="live_mrz")&&this.opts.ocr?.rearmFace();let m=(this.opts.now??(()=>performance.now()))(),h=this.feedback.force("focus_far",m);this.lastFeedbackKey=h.key,this.emit("feedback",h),this.capturing=!1,this.gate.reset(),this.scheduleTick(t);return}this.stillRefusals=0;let d=(this.opts.now??(()=>performance.now()))();this.stats.via=o,this.stats.msToCapture=Math.round(d-(this.positioningSince??d)),this.shutterOffered&&(this.shutterOffered=!1,this.emit("shutter",{available:!1})),this.setState("captured"),this.emit("artifacts",{keyframe:A.still.blob,previewDataUrl:A.still.previewDataUrl,...this.opts.side!==void 0?{side:this.opts.side}:{},...A.still.docRegion!==void 0?{docRegion:A.still.docRegion}:{},...(()=>{let m=o==="live_mrz"?this.opts.ocr?.liveCapture():null;return m?{liveMrz:m}:{}})()})}catch{if(t!==this.attempt)return;this.capturing=!1,this.gate.reset(),this.guideLock.reset(),this.lastOcrReady=null,(o==="text_lock"||o==="live_mrz")&&this.opts.ocr?.rearmFace(),this.scheduleTick(t)}}ocrTick(t,n,i,o,r,a){let s=this.opts.ocr,A=this.opts.video;if(s===void 0||!s.hasEngine)return this.lastOcrReady=null,null;let c=A.videoWidth,l=A.videoHeight;if(c<=0||l<=0||t.width<=0||t.height<=0)return null;let m=(this.opts.format??"ID-1")==="ID-3",h=this.guideRegion(t),u={x:h.x*c,y:h.y*l,w:h.width*c,h:h.height*l},f=c/t.width,p=l/t.height,g;m&&n!==null?g=Cs(Ge(n),f,p,c,l):g=Aa(u,s.bandTop,l);let C=m?r.glare==="ok":i.cardGlare<=this.guideTuning.glareMax,w=m?r.blur==="ok":i.sharpness>=this.guideTuning.sharpnessMin,Q=s.tick({atMs:a,video:A,mrzFace:m||this.opts.side==="verso"||this.opts.side==="single",present:m||n!==null||o,card:u,band:g,portrait:l>c,glareOk:C,sharpOk:w});if(Q.ready&&Q.via!==void 0){let k=m?n??ps(h,t):this.lastGuideQuad??ps(h,t);this.lastOcrReady={quad:k,via:Q.via}}else this.lastOcrReady=null;return Q}};ys=2,Es=260,Lu=1.08;Pu=1200});var Bs={};ue(Bs,{SAME_FACE_MAX_DROPS:()=>bs,createDocumentCapture:()=>Vu,createDocumentCaptureInternal:()=>On,warmDocumentCapture:()=>Uu});async function Gu(e){let t=await Promise.resolve().then(()=>(Gn(),$i));return new t.CaptureSessionDoc(e)}function Ou(e){return{topLeft:{x:e.x,y:e.y},topRight:{x:e.x+e.width,y:e.y},bottomRight:{x:e.x+e.width,y:e.y+e.height},bottomLeft:{x:e.x,y:e.y+e.height}}}function Hu(e,t,n){let i=[e.topLeft,e.topRight,e.bottomRight,e.bottomLeft],o=0;for(let r=0;r<i.length;r+=1){let a=i[r],s=i[(r+1)%i.length];o+=a.x*s.y-s.x*a.y}return t>0&&n>0?Math.abs(o)/2/(t*n):0}function Uu(){Promise.resolve().then(()=>(Gn(),$i)).then(e=>e.warmDocDetector()).catch(()=>{})}function Vu(e){return On(e,{}).handle}function On(e,t){let n=Pe(),i=at({enabled:e.keepScreenAwake!==!1}),o=t.decode??(S=>createImageBitmap(S)),r=t.blurRefuseSharpnessMax??.16,a=t.now??(()=>performance.now()),s=e.documentType==="passport"||e.side==="single",A=Ci(s?"singlePage":"twoSided",a());if(!s&&(e.side==="recto"||e.side==="verso")){let S=e.side==="recto"?"verso":"recto";A={...A,captured:{[S]:"server"},readSides:[S],current:e.side,phase:"flipCue",restPhase:"flipCue"}}let c="idle",l=null,d=null,m=!0,h=0,u=0,f=!1,p=!1,g="",C=null,w,Q=null,k=[],I=t.webOcr!==void 0?Ca(t.webOcr.captureDocument,{mode:e.liveMrz?.mode??"auto"}):null,b=null,v=I===null||!I.enabled?"off":null,O=null,L=null,q=new WeakMap,Z="";if(I!==null&&I.enabled&&t.webOcr!==void 0){let S=t.webOcr,_=ya(I,{baseUrl:e.liveMrz?.assetBaseUrl??S.baseUrl,salt:S.salt,...e.liveMrz?.workerUrl!==void 0?{workerUrl:e.liveMrz.workerUrl}:{},...S.createWorker!==void 0?{createWorker:S.createWorker}:{}});if(_.ok){b=_.engine;let K=new bn({textLock:I.textLock,liveMrz:I.liveMrz});O=K;let $=_.engine;$.ready.then(T=>{v=T,typeof T!="string"&&m&&K.setEngine($)})}else v=_.reason}let R=S=>{let _=JSON.stringify(S);_!==Z&&(Z=_,n.emit("mrz",S))},E=(S,_)=>{let K=t.webOcr?.reports;if(K===void 0||I===null||S===void 0)return;let $=S.format==="ID-3"||S.side==="single"?"single":S.side==="verso"?"verso":"recto",T=$!=="recto"?I.liveMrzArm??I.frontLockArm:I.frontLockArm;if(T===null||Math.random()>=I.reportSampleRate)return;let Y=S.via==="live_mrz"?L:null,j=()=>{let ie=Y?.value??null;K([Ea({arm:T,capture:$,assist:S.ocr??null,load:T==="control"?"off":v,...S.msToCapture!==void 0?{msToCapture:S.msToCapture}:{},...ie!==null&&ie.stillConfirmed!==void 0?{stillConfirmed:ie.stillConfirmed}:{},..._!==void 0?{typeMismatch:vi(_.format,e.documentType==="passport"?"passport":"card")}:{}})])};Y!==null&&Y.value===null?Promise.race([Y.promise,new Promise(ie=>setTimeout(ie,3e3))]).then(j):j()},y=S=>{!m||S===c||(c=S,i.setActive(S==="starting"||S==="scanning"),n.emit("state",S))},x=(S,_)=>_===void 0?null:s?"single":S.captured.recto===_?"recto":S.captured.verso===_?"verso":null,N=S=>({phase:S.phase,captured:s?S.captured.recto!==void 0?["single"]:[]:["recto","verso"].filter(_=>S.captured[_]!==void 0),expected:s?null:S.current??null,notice:S.notice??null,lastShot:x(S,S.lastShot),manualShutter:S.manualShutter,torchAvailable:l?.torchAvailable()??!1,torch:p}),U=()=>{let S=l;S!==null&&S.captureNow().catch(()=>M({type:"captureFailed",at:a()}))};function M(S){if(!m)return;let _=A;A=ta(A,S),A.phase==="capturing"&&_.phase!=="capturing"&&Promise.resolve().then(U),A.phase==="result"&&_.phase!=="result"&&(y("done"),B());let K=N(A),$=JSON.stringify(K);$!==g&&(g=$,n.emit("scan",K))}function B(){Q!==null&&clearInterval(Q),Q=null;for(let S of k.splice(0))S();l?.destroy(),l=null,i.setActive(!1)}let D=()=>l?.captureReport?.(),P=!1,H=(S,_)=>{if(!(S===void 0||t.onFaceReport===void 0))try{t.onFaceReport(S,_)}catch{}},F=S=>{Z="",!(l===null||A.phase==="reading"||A.phase==="result")&&(P=!1,l.rearm(s?"single":A.current??S))},G=async(S,_,K,$)=>{if(L=null,$!==void 0&&b!==null&&I?.liveMrz?.hint===!0){let ee={promise:ca(b,S,$,{engine:Mt,detectorLimit:I.liveMrz.detectorLimit}).catch(()=>null),value:null};ee.promise.then(oe=>{ee.value=oe}),L=ee}$!==void 0&&vi($.format,e.documentType==="passport"?"passport":"card")&&R({state:"mismatch",format:$.format});let T=D();H(T,"captured"),P=!0,E(T,$);let Y=K===void 0?C:K===null?null:{quad:Ou(K),frameWidth:0,frameHeight:0,inStill:!0},j={decoded:null},ie=()=>(j.decoded??(j.decoded=Promise.resolve().then(()=>o(S)).catch(()=>null)),j.decoded);try{await V(S,_,Y,ie,L)}finally{j.decoded!==null&&(await j.decoded)?.close()}},V=async(S,_,K,$,T)=>{let Y=`shot-${h+=1}`;if(M({type:"captured",id:Y,at:a()}),e.haptics!==!1)try{globalThis.navigator?.vibrate?.(30)}catch{}if(!f&&r>0){let ee=await(t.measureSharpness!==void 0?t.measureSharpness(S,K):$().then(oe=>oe===null?-1:In(oe,kt(K?.quad??null,K?.inStill===!0?oe:{width:K?.frameWidth??0,height:K?.frameHeight??0},oe)))).catch(()=>-1);if(!m)return;if(Number.isFinite(ee)&&ee>=0&&ee<r){f=!0;let oe=s?"recto":A.current??(A.captured.recto===void 0?"recto":"verso");M({type:"readFailed",side:oe,id:Y,issue:"blurry"}),F(oe);return}}f=!1;let j;if(s)j="single";else{let ee=A.current,oe=await(t.classify!==void 0?t.classify(S):$().then(le=>le===null?ee??"recto":K?.inStill===!0?Bi(le,480,null,!0):Bi(le,480,kt(K?.quad??null,{width:K?.frameWidth??0,height:K?.frameHeight??0},le)))).catch(()=>ee??"recto");if(!m)return;if(A.captured[oe]!==void 0&&u<bs){u+=1,M({type:"duplicate",id:Y,side:oe}),F(oe==="recto"?"verso":"recto");return}j=A.captured[oe]!==void 0&&ee!==void 0?ee:oe,u=0,M({type:"classified",id:Y,side:j})}let ie=j==="verso"?"verso":"recto";try{let ee=t.encode!==void 0?await t.encode(S):await $().then(oe=>{if(oe===null)throw new Error("the still could not be decoded");return Xr(oe)});if(!m)return;T!==null&&q.set(ee.blob,T),n.emit("captured",{image:ee.blob,side:j,documentType:e.documentType,...e.issuer!==void 0?{issuer:e.issuer}:{},width:ee.width,height:ee.height,previewDataUrl:_}),t.deferRead!==!0&&M({type:"readOk",side:ie})}catch{M({type:"readFailed",side:ie,id:Y,issue:"technical"}),n.emit("error",{kind:"generic",retryable:!0})}F(ie==="recto"?"verso":"recto")},W=S=>{k.push(S.on("statechange",({state:_})=>{_==="preflight"||_==="acquiring"?y("starting"):_==="positioning"?y("scanning"):_==="captured"?y("captured"):_==="error"&&y("error")}),S.on("feedback",({key:_,reticle:K})=>n.emit("feedback",{key:_,reticle:K})),S.on("checks",_=>{n.emit("gate",{progress:_.p,quad:_.quad,frameWidth:_.frameWidth,frameHeight:_.frameHeight,..._.guide!==void 0?{guide:{detected:_.guide.detected,fill:_.guide.fill,offsetX:_.guide.offsetX??0,offsetY:_.guide.offsetY??0}}:{}});let K=_.ocr?.mrz;K!==void 0&&(K.state==="fallback"?R({state:"fallback",reason:K.reason}):K.state==="valid"?R({state:"valid",format:K.format}):K.state==="reading"?R({state:"reading",...K.format?{format:K.format}:{},...K.coach?{coach:K.coach}:{}}):R({state:"searching"}));let $=_.quad===null?0:Hu(_.quad,_.frameWidth,_.frameHeight);C=_.quad===null?null:{quad:_.quad,frameWidth:_.frameWidth,frameHeight:_.frameHeight},M({type:"report",report:{present:_.quad!==null&&_.plausible||_.guide?.detected===!0,ready:_.ready===!0,locking:_.p>=.5,areaFrac:$},at:a()})}),S.on("error",({kind:_,retryable:K})=>n.emit("error",{kind:Ai(_),retryable:K})),S.on("artifacts",_=>{G(_.keyframe,_.previewDataUrl,_.docRegion,_.liveMrz)}))},z=()=>(d??(d=(async()=>{if(m){if(l===null){let S=await(t.createEngine??Gu)({...t.engineOptions??{},...w!==void 0?{guide:w}:{},video:e.video,format:Kr(e.documentType),side:s?"single":e.side??"recto",autoCapture:!1,...O!==null?{ocr:O}:{}});if(!m){S.destroy();return}l=S,W(S);let _=t.tickMs??500;_>0&&(Q=setInterval(()=>M({type:"tick",at:a()}),_))}M({type:"clockRestart"}),I!==null&&I.liveMrzArm==="live"&&(v==="unsupported"||v==="off")&&R({state:"fallback",reason:v}),await l.start()}})().finally(()=>{d=null})),d);return{handle:{get state(){return c},on:(S,_)=>n.on(S,_),start:z,retry:()=>{if(l===null&&A.phase==="result"){M({type:"retake"}),u=0,f=!1,z();return}if(l!==null&&c!=="error"){M({type:"retake"}),u=0,f=!1,l.rearm(s?"single":void 0);return}z()},setSide:S=>{s||S==="single"||(A.current!==S&&(A={...A,current:S}),M({type:"clockRestart"}),A.phase!=="reading"&&A.phase!=="result"&&l?.rearm(S))},shutter:U,focusAt:(S,_)=>{l?.focusAt?.(S,_)},setGuide:S=>{w=S,l?.setGuide?.(S)},setTorch:S=>{p=S,l?.setTorch(S),M({type:"tick",at:a()})},destroy:()=>{if(m&&l!==null&&c!=="done"){let S=D();!P&&S!==void 0&&S.ticks>0&&H(S,"abandoned"),E(S,void 0)}m=!1,B(),O?.setEngine(null),b?.dispose(),b=null,n.clear()}},setFlowState:S=>{(A.phase==="reading"||A.phase==="result")&&y(S==="done"&&A.phase!=="result"?"scanning":S)},settle:(S,_)=>{let K=S==="verso"?"verso":"recto";M(_.ok?{type:"readOk",side:K}:{type:"readFailed",side:K,issue:_.issue}),_.ok||F(K)},takeDeviceRead:S=>q.get(S.image)?.value??null}}var bs,eo=J(()=>{"use strict";hn();mn();wt();ft();fi();jr();na();ra();Bn();la();ba();bs=2});var Qs,Ss=J(()=>{"use strict";Qs=["AD","AE","AF","AG","AI","AL","AM","AO","AQ","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BV","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT","GU","GW","GY","HK","HM","HN","HR","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PN","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TC","TD","TF","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","XK","YE","YT","ZA","ZM","ZW"]});function to(e,t){let n=e.byIssuer?.[t]??e.default;return Ju.filter(i=>n==="*"||n.includes(i))}function ws(e,t=Qs){return[...new Set([...t,...Object.keys(e.byIssuer??{})])].filter(i=>to(e,i).length>0).sort()}function ks(e){if(e.acceptedDocuments)return e.acceptedDocuments;let t=e.acceptedDocumentTypes?.length?[...e.acceptedDocumentTypes]:["carte_identite","passport"];return{default:[],byIssuer:{MR:t}}}var Ju,no=J(()=>{"use strict";Ss();Ju=["carte_identite","passport","residence_permit"]});function Me(e){let t=e?.portrait,n=t?.icao,i=t?.purpose==="id_document";return n==null?i?{policy:"reject",profile:"id_document"}:null:{policy:n.policy==="alert"&&!i?"alert":"reject",profile:i||n.profile==="id_document"?"id_document":"selfie"}}function Hn(e){return{...e.baselineEyeOpenness!==void 0?{baselineEyeOpenness:e.baselineEyeOpenness}:{},criteria:e.verdict??{},...e.backgroundCheck!==void 0?{backgroundCheck:e.backgroundCheck}:{}}}var ut=J(()=>{"use strict"});function xs(e){let t=Number.POSITIVE_INFINITY,n=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY,o=Number.NEGATIVE_INFINITY;for(let r of e)r.x<t&&(t=r.x),r.y<n&&(n=r.y),r.x>i&&(i=r.x),r.y>o&&(o=r.y);return e.length===0?{x:0,y:0,width:0,height:0}:{x:t,y:n,width:i-t,height:o-n}}function Vn(e,t,n){if(e.length<468)return null;let i=m=>{let h=e[m];return{x:h.x*t,y:h.y*n}},o=[0,1].map(m=>{let h=e.length>Ms[1]?i(Ms[m]):null,[u,f]=Yu[m];return h??Ds(i(u),i(f))}),r=Ku.map(m=>xs(m.map(i))),a=[];for(let m=0;m<Math.min(e.length,468);m+=1)a.push(i(m));let[s,A]=o,c=s.x>A.x,l=c?A:s,d=c?s:A;return{leftEye:l,rightEye:d,iod:Math.hypot(d.x-l.x,d.y-l.y),box:xs(a),nose:i(qu),leftEyeBox:c?r[1]:r[0],rightEyeBox:c?r[0]:r[1]}}function vs(e,t="column"){if(e.length<16||e.some(m=>!Number.isFinite(m)))return null;let n=(m,h)=>t==="column"?e[h*4+m]:e[m*4+h],i=Math.hypot(n(0,0),n(1,0),n(2,0))||1,o=n(0,0)/i,r=n(1,0)/i,a=n(2,0)/i,s=n(2,1)/i,A=n(2,2)/i,c=Math.asin(Math.max(-1,Math.min(1,-a)))*Un,l=Math.atan2(s,A)*Un,d=Math.atan2(r,o)*Un;return{yaw:c,pitch:l,roll:d}}function Rs(e){return Math.atan2(e.rightEye.y-e.leftEye.y,e.rightEye.x-e.leftEye.x)*Un}function Gt(e){let t=io,n=e.iod>=t.iodMin&&e.iod<=t.iodMax?1:t.iodMin/Math.max(e.iod,1e-6),i=t.width/n,o=t.height/n,r=Ds(e.leftEye,e.rightEye);return{x:r.x-t.eyeX/t.width*i,y:r.y-t.eyeY/t.height*o,width:i,height:o}}function Ts(e,t,n){let i=Math.max(0,-e.x),o=Math.max(0,-e.y),r=Math.max(0,e.x+e.width-t),a=Math.max(0,e.y+e.height-n);return Math.max((i+r)/e.width,(o+a)/e.height)}function _s(e,t,n,i){let o=Gt(e),r=o.x+o.width/2,a=o.y+o.height/2,s=io.width/io.height,A=Math.max(o.height*i.margin,i.minHeight,i.minWidth/s);A=Math.min(A,n,t/s);let c=A*s,l=Math.min(Math.max(r-c/2,0),Math.max(0,t-c)),d=Math.min(Math.max(a-A/2,0),Math.max(0,n-A));return{x:Math.round(l),y:Math.round(d),width:Math.round(c),height:Math.round(A)}}var Ms,Yu,Ku,qu,Ds,Un,io,Jn=J(()=>{"use strict";Ms=[468,473],Yu=[[33,133],[362,263]],Ku=[[33,7,163,144,145,153,154,155,133,173,157,158,159,160,161,246],[362,382,381,380,374,373,390,249,263,466,388,387,386,385,384,398]],qu=1;Ds=(e,t)=>({x:(e.x+t.x)/2,y:(e.y+t.y)/2});Un=180/Math.PI;io={width:480,height:640,eyeX:240,eyeY:289,iodMin:120,iodMax:160}});var Ns={};ue(Ns,{ICAO_GATE_CRITERIA:()=>dt,createIcaoGate:()=>ao,eyeOpenness:()=>ro,judgeIcao:()=>Fs,percentile:()=>Ps,scoreFrame:()=>oo});function Fs(e,t){let n=e.pose,i;if(n!==null){let u=n.pitch-t.pitchOffsetDeg,f=Math.max(Math.abs(n.yaw),Math.abs(u),Math.abs(n.roll));i=Math.abs(n.yaw)<=t.yawDeg&&Math.abs(u)<=t.pitchDeg&&Math.abs(n.roll)<=t.rollDeg?ye(f):he(f,"pose")}else i={...He(!1,"pose"),value:e.eyeLineRoll??null};let o=He(!1,"eyes");if(e.eyes!==null){let u=e.baseline,f=Math.min(e.eyes.left,e.eyes.right),p=Math.max(1-t.eyes.blinkMax,u!==null&&u>0&&u<=1?t.eyes.relativeMin*u:0),g=u!==null&&u>0?f/u:null;o=f>=p-1e-9?ye(g):he(g,"eyes")}let r=He(!1,"mouth");if(e.mouth!==null){let{jawOpen:u,smile:f,pucker:p}=e.mouth,g=Math.max(u/t.mouth.jawOpenMax,f/t.mouth.smileMax,p/t.mouth.puckerMax);r=u<=t.mouth.jawOpenMax&&f<=t.mouth.smileMax&&p<=t.mouth.puckerMax?ye(g):he(g,"mouth")}let a=e.lighting,s=He(!0,"lighting");if(a!==null){let[u,f]=t.lighting.faceLuma,[p,g]=t.lighting.halfRatio;s=a.faceLuma<u||a.faceLuma>f||a.clipped>t.lighting.clippedMax?he(a.faceLuma,"lighting"):a.halfRatio<p||a.halfRatio>g?he(a.halfRatio,"lighting_side"):ye(a.faceLuma)}let A=e.uniformity,c=e.background,l=t.background.required?A!=null&&t.backgroundCheck.enabled?A.uniform?ye(A.colorStd):he(A.colorStd,"background"):c===null?He(!0,"background"):c.luma>=t.background.lumaMin&&c.sd<=t.background.lumaSdMax?ye(c.luma):he(c.luma,"background"):He(!0,"background"),d=t.resolution,m=Math.min(e.frameWidth,e.frameHeight)>=d.minWidth&&Math.max(e.frameWidth,e.frameHeight)>=d.minHeight,h=e.iod>=d.minIodPx&&m?ye(e.iod):he(e.iod,"resolution");return{pose:i,eyes:o,mouth:r,lighting:s,background:l,resolution:h}}function ro(e){let t=e?.eyeBlinkLeft,n=e?.eyeBlinkRight;return typeof t!="number"||typeof n!="number"?null:{left:1-t,right:1-n,blinkLeft:t,blinkRight:n}}function Ps(e,t){if(e.length===0)return null;let n=[...e].sort((o,r)=>o-r),i=Math.min(n.length-1,Math.max(0,Math.ceil(t*n.length)-1));return n[i]}function oo(e,t,n){let i={},o=e.geometry;if(e.faces!==1||o===null){let u=e.faces>1?he(e.faces,"multiple_faces"):he(e.faces,"no_face");for(let f of dt)i[f]=f==="face"?u:He(!1,"no_face");return{results:i,pose:null}}i.face=ye(1);let r=Gt(o),a=Ts(r,e.frameWidth,e.frameHeight);i.framing=r.height>e.frameHeight*1.02||r.width>e.frameWidth*1.02?he(a,"too_close"):a>.02?he(a,"center"):ye(a);let s=e.matrix!=null?vs(e.matrix):null,A=ro(e.blendshapes),c=e.blendshapes,l=e.stats??null,d=Fs({pose:s,eyeLineRoll:Math.abs(Rs(o)),eyes:A,baseline:n,mouth:c==null?null:{jawOpen:c.jawOpen??0,smile:Math.max(c.mouthSmileLeft??0,c.mouthSmileRight??0),pucker:c.mouthPucker??0},lighting:l?.lighting??null,background:l?.background??null,uniformity:e.backgroundCheck??null,iod:o.iod,frameWidth:e.frameWidth,frameHeight:e.frameHeight},t);Object.assign(i,d);let m=l?.eyeSpecular??null;i.glare=m===null?He(!0,"glare"):m<=t.glare.specularMax?ye(m):he(m,"glare");let h=l?.sharpness??null;return i.sharpness=h===null||h>=t.sharpnessMin?ye(h):he(h,"hold_still"),{results:i,pose:s}}function ao(e,t={}){let n=t.policy==="alert",i=new Map,o=0,r=null,a=null,s={},A=[],c=null,l=null,d=m=>{if(A=A.filter(u=>m-u.at<=e.baseline.windowMs),A.length<e.baseline.minSamples)return null;let h=Ps(A.map(u=>u.open),e.baseline.percentile);return h===null||h<=0?null:Math.min(1,h)};return{push(m,h){let u=oo(m,e,null),f=ro(m.blendshapes);f!==null&&u.results.face.pass&&u.results.pose.pass&&A.push({at:h,open:(f.left+f.right)/2});let p=d(h),{results:g,pose:C}=oo(m,e,p);for(let R of dt)g[R].pass&&(R!=="eyes"||p!==null)?i.has(R)||i.set(R,h):i.delete(R);let w=R=>{let E=i.get(R);return E!==void 0&&h-E>=e.holdMs};dt.filter(R=>!Ls.has(R)).every(w)?r??(r=h):r=null;let I=R=>R==="background"&&m.backgroundCheck!=null?e.backgroundCheck.timeoutMs:e.softGraceMs,b=R=>Ls.has(R)&&!g[R].pass&&r!==null&&h-r>=I(R),v=dt.map(R=>({criterion:R,pass:g[R].pass,held:w(R),waived:b(R),value:g[R].value,coach:g[R].pass?null:g[R].coach}));o=v.every(R=>R.pass||R.waived)?o+1:0;let L=v.find(R=>!R.pass&&!R.waived)??null,q=v.filter(R=>R.held||R.waived).length;g.face.pass&&g.framing.pass?a??(a=h):a=null;let Z=v.every(R=>R.held||R.waived)&&o>=e.holdFrames||n&&a!==null&&h-a>=e.alertGraceMs;s={};for(let R of dt){let E=Wu[R];E!==void 0&&g[R].none!==!0&&(s[E]=(s[E]??!0)&&g[R].pass)}return l=m.backgroundCheck??null,c={criteria:v,coach:L?.coach??"hold",failing:L?.criterion??null,progress:q/v.length,ready:Z,baseline:p,pose:C},c},last:()=>c,summary(){let m={criteria:{}};if(c===null)return m;m.verdict={...s},c.baseline!==null&&Math.round(c.baseline*1e3)>0&&(m.baselineEyeOpenness=Math.round(c.baseline*1e3)/1e3);for(let h of c.criteria){let u=h.value===null||!Number.isFinite(h.value)?null:Math.round(h.value*1e3)/1e3;m.criteria[h.criterion]=h.waived?{pass:h.pass,value:u,waived:!0}:{pass:h.pass,value:u}}if(l!==null&&e.background.required){let{pixels:h,...u}=l;m.backgroundCheck=u}return m},reset(){i.clear(),o=0,r=null,a=null,s={},c=null,l=null}}}var dt,Ls,ye,he,He,Wu,so=J(()=>{"use strict";Jn();dt=["face","framing","pose","eyes","mouth","glare","lighting","background","resolution","sharpness"],Ls=new Set(["glare","background"]),ye=e=>({pass:!0,value:e,coach:null}),he=(e,t)=>({pass:!1,value:e,coach:t}),He=(e,t)=>({pass:e,value:null,coach:e?null:t,none:!0});Wu={pose:"pose",eyes:"eyes",mouth:"mouth",glare:"glare",lighting:"lighting",background:"background",framing:"resolution",resolution:"resolution"}});function Xu(e,t,n){let{x:i,y:o,width:r,height:a}=e;if(n)return[{x:i-1.5*r,y:o-.8*a,width:4*r,height:2.8*a}];let s=o-.4*a,A=1.4*a;return[{x:i-.9*r,y:s,width:.75*r,height:A},{x:i+1.15*r,y:s,width:.75*r,height:A}].map(c=>{let l=Math.max(0,c.x),d=Math.min(t.width,c.x+c.width);return{x:l,y:c.y,width:Math.max(0,d-l),height:c.height}})}function Gs(e,t,n,i=Yn){let o=n!==null&&n.width>0&&n.height>0,r=Xu(t,e,o),a=r.reduce((B,D)=>B+Math.max(0,D.width)*Math.max(0,D.height),0);if(a<=0)return null;let s=Math.max(1,Math.floor(Math.sqrt(a/zu))),A=o?n.data instanceof Float32Array?1:1/255:1,c=(B,D)=>{if(!o)return!1;let P=gt(B/e.width*n.width-.5,0,n.width-1),H=gt(D/e.height*n.height-.5,0,n.height-1);return n.data[H*n.width+P]*A>=i.maskThreshold},l=B=>.299*e.data[B]+.587*e.data[B+1]+.114*e.data[B+2],d=0,m=[0,0,0],h=[0,0,0],u=0,f=0,p=0,g=0,C=0,w=0,Q=0,k=0,I=0,b=0,v=Math.min(...r.map(B=>B.x)),O=Math.max(...r.map(B=>B.x+B.width)),L=Math.min(...r.map(B=>B.y)),q=Math.max(...r.map(B=>B.y+B.height)),Z=(v+O)/2,R=(L+q)/2;for(let B of r){let D=gt(B.x,0,e.width),P=gt(B.x+B.width,0,e.width),H=gt(B.y,0,e.height),F=gt(B.y+B.height,0,e.height);for(let G=H;G<F;G+=s)for(let V=D;V<P;V+=s){if(c(V,G))continue;let W=(G*e.width+V)*4;for(let X=0;X<3;X+=1){let S=e.data[W+X];m[X]=m[X]+S,h[X]=h[X]+S*S}d+=1;let z=l(W);V<Z?(p+=z,g+=1):(C+=z,w+=1),G<R?(Q+=z,k+=1):(I+=z,b+=1);for(let[X,S]of[[V+s,G],[V,G+s]])X>=P||S>=F||c(X,S)||(u+=1,Math.abs(l((S*e.width+X)*4)-z)>i.edgeLuma&&(f+=1))}}if(d<i.minPixels)return null;let E=0;for(let B=0;B<3;B+=1){let D=m[B]/d;E+=Math.max(0,h[B]/d-D*D)}let y=Math.sqrt(E/3),x=u===0?0:f/u,N=(B,D)=>D===0?null:B/D,U=(B,D)=>B===null||D===null?0:Math.abs(B-D)/255,M=Math.max(U(N(p,g),N(C,w)),U(N(Q,k),N(I,b)));return{method:o?"segmenter":"strip",uniform:y<=i.maxColorStd&&x<=i.maxEdgeDensity&&M<=i.maxGradient,colorStd:Math.round(y*10)/10,edgeDensity:Math.round(x*1e3)/1e3,gradient:Math.round(M*1e3)/1e3,pixels:d}}function Os(e){let t=e!==null&&typeof e=="object"?e:{},n=Yn,i=(o,r,a,s)=>typeof o=="number"&&Number.isFinite(o)&&o>=a&&o<=s?o:r;return{enabled:typeof t.enabled=="boolean"?t.enabled:n.enabled,hz:i(t.hz,n.hz,.5,15),segmenterTimeoutMs:i(t.segmenterTimeoutMs,n.segmenterTimeoutMs,0,6e4),segmenterBudgetMs:i(t.segmenterBudgetMs,n.segmenterBudgetMs,1,2e3),maskThreshold:i(t.maskThreshold,n.maskThreshold,0,1),maxColorStd:i(t.maxColorStd,n.maxColorStd,0,255),maxEdgeDensity:i(t.maxEdgeDensity,n.maxEdgeDensity,0,1),edgeLuma:i(t.edgeLuma,n.edgeLuma,0,255),maxGradient:i(t.maxGradient,n.maxGradient,0,1),minPixels:i(t.minPixels,n.minPixels,1,1e6),timeoutMs:i(t.timeoutMs,n.timeoutMs,0,6e4)}}var Yn,zu,gt,Ao=J(()=>{"use strict";Yn={enabled:!0,hz:3,segmenterTimeoutMs:8e3,segmenterBudgetMs:120,maskThreshold:.5,maxColorStd:28,maxEdgeDensity:.08,edgeLuma:24,maxGradient:.18,minPixels:300,timeoutMs:4e3},zu=12e3,gt=(e,t,n)=>Math.min(n,Math.max(t,Math.round(e)))});var Hs,Us=J(()=>{"use strict";Hs={id_document:{pose:{yawDeg:7,pitchDeg:7,rollDeg:5,pitchOffsetDeg:4},eyes:{relativeMin:.62,blinkMax:.48},mouth:{jawOpenMax:.13,smileMax:.28,puckerMax:.28},lighting:{faceLuma:[95,185],halfRatio:[.77,1.31],clippedMax:.015},background:{required:!0,lumaMin:165,lumaSdMax:20},resolution:{minIodPx:110,minWidth:480,minHeight:640}},selfie:{pose:{yawDeg:7,pitchDeg:7,rollDeg:7,pitchOffsetDeg:4},eyes:{relativeMin:.62,blinkMax:.48},mouth:{jawOpenMax:.13,smileMax:.28,puckerMax:.28},lighting:{faceLuma:[95,185],halfRatio:[.77,1.31],clippedMax:.015},background:{required:!1,lumaMin:165,lumaSdMax:20},resolution:{minIodPx:100,minWidth:480,minHeight:640}}}});var Ks={};ue(Ks,{ICAO_FALLBACK:()=>Ys,resolveIcaoTuning:()=>co});function Js(e){let t=Hs[e];return{profile:e,backgroundCheck:Yn,...t.pose,holdMs:500,alertGraceMs:3e3,eyes:{...t.eyes},mouth:{...t.mouth},lighting:{...t.lighting,faceLuma:[t.lighting.faceLuma[0],t.lighting.faceLuma[1]],halfRatio:[t.lighting.halfRatio[0],t.lighting.halfRatio[1]]},background:{...t.background},resolution:{...t.resolution},holdFrames:3,cadenceHz:10,baseline:{windowMs:3e3,minSamples:6,percentile:.8},sharpnessMin:.25,glare:{specularMax:.01},softGraceMs:4e3,cropMargin:1.25,camera:{width:1920,height:1080}}}function re(e,t,n,i){return typeof e=="number"&&Number.isFinite(e)&&e>=n&&e<=i?e:t}function Vs(e,t,n,i){if(!Array.isArray(e)||e.length!==2)return[t[0],t[1]];let[o,r]=e,a=re(o,Number.NaN,n,i),s=re(r,Number.NaN,n,i);return Number.isNaN(a)||Number.isNaN(s)||a>s?[t[0],t[1]]:[a,s]}function Le(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)?e:{}}function co(e,t){let n=Le(e),i=n.profile==="selfie"?"selfie":"id_document",o=i==="selfie"?Js(i):Ys,r=Le(n.eyes),a=Le(n.mouth),s=Le(n.lighting),A=Le(n.background),c=Le(n.resolution),l=Le(n.baseline),d=Le(n.glare),m=Le(n.camera),h=typeof A.required=="boolean"?A.required:o.background.required,u=Os(n.backgroundCheck);return{profile:i,yawDeg:re(n.yawDeg,o.yawDeg,1,45),pitchDeg:re(n.pitchDeg,o.pitchDeg,1,45),pitchOffsetDeg:re(n.pitchOffsetDeg,o.pitchOffsetDeg,-20,20),rollDeg:re(n.rollDeg,o.rollDeg,1,45),holdMs:re(n.holdMs,o.holdMs,0,5e3),alertGraceMs:re(n.alertGraceMs,o.alertGraceMs,0,6e4),eyes:{relativeMin:re(r.relativeMin,o.eyes.relativeMin,0,1),blinkMax:re(r.blinkMax,o.eyes.blinkMax,0,1)},mouth:{jawOpenMax:re(a.jawOpenMax,o.mouth.jawOpenMax,0,1),smileMax:re(a.smileMax,o.mouth.smileMax,0,1),puckerMax:re(a.puckerMax,o.mouth.puckerMax,0,1)},lighting:{faceLuma:Vs(s.faceLuma,o.lighting.faceLuma,0,255),halfRatio:Vs(s.halfRatio,o.lighting.halfRatio,0,10),clippedMax:re(s.clippedMax,o.lighting.clippedMax,0,1)},background:{required:h,lumaMin:re(A.lumaMin,o.background.lumaMin,0,255),lumaSdMax:re(A.lumaSdMax,o.background.lumaSdMax,0,255)},resolution:{minIodPx:re(c.minIodPx,o.resolution.minIodPx,1,2e3),minWidth:re(c.minWidth,o.resolution.minWidth,1,8e3),minHeight:re(c.minHeight,o.resolution.minHeight,1,8e3)},holdFrames:Math.round(re(n.holdFrames,o.holdFrames,1,60)),cadenceHz:re(n.cadenceHz,o.cadenceHz,1,30),baseline:{windowMs:re(l.windowMs,o.baseline.windowMs,200,3e4),minSamples:Math.round(re(l.minSamples,o.baseline.minSamples,1,300)),percentile:re(l.percentile,o.baseline.percentile,.5,1)},sharpnessMin:re(n.sharpnessMin,o.sharpnessMin,0,1),glare:{specularMax:re(d.specularMax,o.glare.specularMax,0,1)},softGraceMs:re(n.softGraceMs,o.softGraceMs,0,6e4),cropMargin:re(n.cropMargin,o.cropMargin,1,2),camera:{width:Math.round(re(m.width,o.camera.width,320,4096)),height:Math.round(re(m.height,o.camera.height,240,4096))},backgroundCheck:h?u:{...u,enabled:!1},tuningVersion:typeof t=="string"&&ju.test(t)?t:null}}var Ys,ju,lo=J(()=>{"use strict";Ao();Us();Ys=Js("id_document"),ju=/^[A-Za-z0-9._-]{1,64}$/});function qs(e){let{data:t,width:n,height:i}=e,o=new Uint8Array(n*i);for(let r=0,a=0;r<o.length;r+=1,a+=4)o[r]=Math.round(.299*(t[a]??0)+.587*(t[a+1]??0)+.114*(t[a+2]??0));return{data:o,width:n,height:i}}function uo(e,t){return{x0:Math.max(0,Math.floor(e.x)),y0:Math.max(0,Math.floor(e.y)),x1:Math.min(t.width,Math.ceil(e.x+e.width)),y1:Math.min(t.height,Math.ceil(e.y+e.height))}}function Ot(e,t,n){let i=uo(t,e),o=n===void 0?null:uo(n,e),r=0,a=0,s=0,A=0;for(let l=i.y0;l<i.y1;l+=1)for(let d=i.x0;d<i.x1;d+=1){if(o!==null&&d>=o.x0&&d<o.x1&&l>=o.y0&&l<o.y1)continue;let m=e.data[l*e.width+d];r+=1,a+=m,s+=m*m,m>=Zu&&(A+=1)}if(r===0)return{mean:0,sd:0,clipped:0,count:0};let c=a/r;return{mean:c,sd:Math.sqrt(Math.max(0,s/r-c*c)),clipped:A/r,count:r}}function Ws(e){let{box:t}=e,i=(e.leftEye.y+e.rightEye.y)/2-.1*t.height,o=t.y+.85*t.height;return{x:t.x+.15*t.width,y:i,width:.7*t.width,height:Math.max(1,o-i)}}function td(e,t){let n=Ws(t),i=Ot(e,n);if(i.count===0)return null;let o=Math.min(Math.max(t.nose.x,n.x+1),n.x+n.width-1),r=Ot(e,{x:n.x,y:n.y,width:o-n.x,height:n.height}),a=Ot(e,{x:o,y:n.y,width:n.x+n.width-o,height:n.height}),s=a.mean>0?r.mean/a.mean:r.mean>0?Number.POSITIVE_INFINITY:1;return{faceLuma:i.mean,halfRatio:s,clipped:i.clipped}}function nd(e,t){let n=0,i=0;for(let o of[t.leftEyeBox,t.rightEyeBox]){let r=o.width*.15,a=o.height*.5,s=Ot(e,{x:o.x-r,y:o.y-a,width:o.width+2*r,height:o.height+2*a});n+=s.count,i+=s.clipped*s.count}return n===0?null:i/n}function id(e,t){let n=Gt(t),{box:i}=t,o={x:i.x-.2*i.width,y:n.y,width:1.4*i.width,height:i.y+i.height-n.y},r=0,a=0,s=0;for(let c of[n.x,n.x+.8*n.width]){let l=Ot(e,{x:c,y:n.y+.04*n.height,width:.2*n.width,height:.25*n.height},o);r+=l.count,a+=l.mean*l.count,s+=(l.sd*l.sd+l.mean*l.mean)*l.count}if(r===0)return null;let A=a/r;return{luma:A,sd:Math.sqrt(Math.max(0,s/r-A*A)),count:r}}function od(e,t){let n=uo(Ws(t),e),i=Math.max(1,Math.floor(Math.max(n.x1-n.x0,n.y1-n.y0)/ed)),o=(c,l)=>e.data[l*e.width+c],r=0,a=0,s=0;for(let c=n.y0+i;c<n.y1-i;c+=i)for(let l=n.x0+i;l<n.x1-i;l+=i){let d=o(l,c-i)+o(l-i,c)+o(l+i,c)+o(l,c+i)-4*o(l,c);r+=1,a+=d,s+=d*d}if(r===0)return null;let A=a/r;return Math.min(1,Math.max(0,s/r-A*A)/$u)}function zs(e,t){return{lighting:td(e,t),eyeSpecular:nd(e,t),background:id(e,t),sharpness:od(e,t)}}var Zu,$u,ed,Xs=J(()=>{"use strict";Jn();Zu=250,$u=180,ed=96});var $s={};ue($s,{LANDMARKER_INIT_TIMEOUT_MS:()=>go,LANDMARKER_MODEL:()=>js,createFaceLandmarker:()=>mo,facesOf:()=>Zs});function Zs(e){let t=[],n=e.faceLandmarks??[];for(let i=0;i<n.length;i+=1){let o=n[i]??[],r=e.faceBlendshapes?.[i]?.categories,a=null;if(r!==void 0){a={};for(let A of r)a[A.categoryName]=A.score}let s=e.facialTransformationMatrixes?.[i]?.data;t.push({landmarks:o.map(A=>({x:A.x,y:A.y})),blendshapes:a,matrix:s!==void 0&&s.length>=16?[...s]:null})}return t}async function mo(e){let t=e.replace(/\/+$/,""),n=await import("@mediapipe/tasks-vision"),i=await n.FilesetResolver.forVisionTasks(t),o=await n.FaceLandmarker.createFromOptions(i,{baseOptions:{modelAssetPath:`${t}/${js}`,delegate:"CPU"},runningMode:"VIDEO",numFaces:2,outputFaceBlendshapes:!0,outputFacialTransformationMatrixes:!0});return{detect(r,a){try{return Zs(o.detectForVideo(r,a))}catch{return[]}},close(){try{o.close()}catch{}}}}var go,js,ho=J(()=>{"use strict";go=2e4,js="face_landmarker.task"});var nA={};ue(nA,{SEGMENTER_MODEL:()=>eA,createSelfieSegmenter:()=>rd,personMaskOf:()=>tA});function tA(e){if(e===void 0||e.length===0)return null;let t=e.length===1,n=e[0],i=Float32Array.from(n.getAsFloat32Array());if(!t)for(let o=0;o<i.length;o+=1)i[o]=1-i[o];return{data:i,width:n.width,height:n.height}}async function rd(e){let t=e.replace(/\/+$/,""),n=await import("@mediapipe/tasks-vision"),i=await n.FilesetResolver.forVisionTasks(t),o=await n.ImageSegmenter.createFromOptions(i,{baseOptions:{modelAssetPath:`${t}/${eA}`,delegate:"CPU"},runningMode:"VIDEO",outputConfidenceMasks:!0,outputCategoryMask:!1});return{segment(r,a){try{let s=o.segmentForVideo(r,a);try{return tA(s.confidenceMasks)}finally{s.close?.()}}catch{return null}},close(){try{o.close()}catch{}}}}var eA,iA=J(()=>{"use strict";eA="selfie_segmenter.tflite"});var oA={};ue(oA,{createBackgroundMonitor:()=>po});function po(e){let t=e.tuning,n=e.now??(()=>performance.now()),i=null,o=!1,r=!1,a=Number.NEGATIVE_INFINITY,s=null,A=0,c=null,l=null,d=0,m=!1,h=()=>{if(m||!t.enabled)return;m=!0;let u=(e.createSegmenter??(f=>Promise.resolve().then(()=>(iA(),nA)).then(p=>p.createSelfieSegmenter(f))))(e.assetBaseUrl);l=setTimeout(()=>{i===null&&(o=!0)},t.segmenterTimeoutMs),u.then(f=>{l!==null&&clearTimeout(l),r||o?f.close():i=f},()=>{l!==null&&clearTimeout(l),o=!0})};return{measure(u,f,p,g){if(!t.enabled||u.pixels===null)return null;h();let C=n();if(C-a<1e3/t.hz)return s;a=C;let w=u.width/Math.max(1,p),Q=u.height/Math.max(1,g),k={x:f.x*w,y:f.y*Q,width:f.width*w,height:f.height*Q},I=null;if(i!==null&&!o){let b=Math.max(C,A+1);A=b;let v=n();I=i.segment(u.source,b);let O=n()-v;d+=1,d>ad&&(c=c===null?O:c*.7+O*.3),c!==null&&c>t.segmenterBudgetMs&&(o=!0,i.close(),i=null)}return s=Gs(u.pixels,k,I,t),s},close(){r=!0,l!==null&&clearTimeout(l),i?.close(),i=null}}}var ad,fo=J(()=>{"use strict";Ao();ad=2});var bo={};ue(bo,{ANALYSIS_LONG_EDGE:()=>rA,PORTRAIT_JPEG_QUALITY:()=>sA,STILL_MAX_HEIGHT:()=>aA,createPortraitCaptureInternal:()=>Eo,defaultGrabber:()=>AA,observe:()=>cA,warmPortraitCapture:()=>ud});function Io(e){return{width:e.videoWidth||0,height:e.videoHeight||0}}function Co(e,t){if(typeof document<"u"){let n=document.createElement("canvas");return n.width=e,n.height=t,n}return typeof OffscreenCanvas=="function"?new OffscreenCanvas(e,t):null}function AA(){let e=null;return(t,n)=>{let{width:i,height:o}=Io(t);if(i===0||o===0)return null;let r=n===null?1:Math.min(1,n/Math.max(i,o)),a=Math.round(i*r),s=Math.round(o*r),A;n===null?A=Co(a,s):((e===null||e.width!==a||e.height!==s)&&(e=Co(a,s)),A=e);let c=A?.getContext("2d",{willReadFrequently:!0});if(A==null||c==null)return null;c.drawImage(t,0,0,a,s);let l=null;try{l=c.getImageData(0,0,a,s)}catch{l=null}return{source:A,width:a,height:s,pixels:l}}}async function Ad(e,t,n,i){let o=Math.round(n*t.width/t.height),r=Co(o,n),a=r?.getContext("2d");if(r==null||a==null)throw new Error("canvas unavailable");return a.fillStyle="#fff",a.fillRect(0,0,o,n),a.drawImage(e.source,t.x,t.y,t.width,t.height,0,0,o,n),"convertToBlob"in r?r.convertToBlob({type:"image/jpeg",quality:i}):new Promise((s,A)=>{r.toBlob(c=>c===null?A(new Error("encode failed")):s(c),"image/jpeg",i)})}function cd(e,t,n){return new Promise((i,o)=>{let r=setTimeout(()=>{o(new yo(`init exceeded ${t}ms`)),e.then(n,()=>{})},t);e.then(a=>{clearTimeout(r),i(a)},a=>{clearTimeout(r),o(a)})})}function ld(e){let t=tt(e),n=t==="overconstrained"?"generic":t;return{kind:n,retryable:n!=="insecure"&&n!=="unsupported"}}function cA(e,t,n,i){let o=e.length===1?e[0]:void 0,r=o===void 0?null:Vn(o.landmarks,n,i),a=null;if(o!==void 0&&t.pixels!==null){let s=Vn(o.landmarks,t.width,t.height),A=qs(t.pixels);s!==null&&(a=zs(A,s))}return{frameWidth:n,frameHeight:i,faces:e.length,geometry:r,matrix:o?.matrix??null,blendshapes:o?.blendshapes??null,stats:a}}function Eo(e,t={}){let n=co(e.tuning,e.tuningVersion),i=Pe(),o=t.now??(()=>performance.now()),r=t.setTimer??((M,B)=>setTimeout(M,B)),a=t.clearTimer??(M=>clearTimeout(M)),s=t.grabFrame??AA(),A=t.encodeRegion??Ad,c=t.getUserMedia??(M=>navigator.mediaDevices.getUserMedia(M)),l=t.createLandmarker??mo,d=e.assetBaseUrl??sd,m=at({enabled:e.keepScreenAwake!==!1}),h=ao(n,{policy:e.policy??"reject"}),u=e.video,f=po({tuning:n.backgroundCheck,assetBaseUrl:d,...t.createSegmenter!==void 0?{createSegmenter:t.createSegmenter}:{},now:o}),p="idle",g=null,C=null,w=null,Q=!1,k=!1,I=0,b=0,v=[],O=M=>{p===M||k||(p=M,m.setActive(M==="starting"||M==="gating"),i.emit("state",M))},L=()=>{w!==null&&a(w),w=null},q=()=>{L();for(let M of g?.getTracks()??[])M.stop();g=null;try{u.srcObject=null}catch{}},Z=M=>{q(),O("error"),i.emit("error",M)},R=()=>{let M=Math.max(o(),b+1);return b=M,M},E=async M=>{let B=s(u,null),{width:D,height:P}=B??Io(u);if(B===null||C===null){h.reset();return}let H=C.detect(B.source,R()),F=(H.length===1?H:v.length===1?v:[])[0],G=F===void 0?null:Vn(F.landmarks,D,P);if(G===null){h.reset();return}let V=_s(G,D,P,{margin:n.cropMargin,minWidth:n.resolution.minWidth,minHeight:n.resolution.minHeight}),W=Math.max(n.resolution.minHeight,Math.min(V.height,aA)),z=await A(B,V,W,sA);if(k||M!==I)return;let X={image:z,width:Math.round(W*V.width/V.height),height:W,gate:h.summary()};n.tuningVersion!==null&&(X.tuningVersion=n.tuningVersion),L(),O("captured"),i.emit("captured",X)},y=async M=>{if(!(k||M!==I||p!=="gating"||C===null)){if(!Q){Q=!0;try{let B=s(u,rA);if(B!==null){let{width:D,height:P}=Io(u),H=C.detect(B.source,R());v=H;let F=cA(H,B,D||B.width,P||B.height);F.geometry!==null&&n.background.required&&(F.backgroundCheck=f.measure(B,F.geometry.box,D||B.width,P||B.height));let G=h.push(F,o());if(k||M!==I||(i.emit("gate",G),G.ready&&(await E(M),p!=="gating")))return}}catch{}finally{Q=!1}}!k&&M===I&&p==="gating"&&(w=r(()=>{y(M)},1e3/n.cadenceHz))}},x=()=>cd(l(d),2e4,M=>M.close()),N=async()=>{if(k||p==="starting"||p==="gating")return;I+=1;let M=I;if(h.reset(),O("starting"),g===null&&t.getUserMedia===void 0&&(typeof navigator>"u"||typeof navigator.mediaDevices?.getUserMedia!="function")){Z({kind:typeof window<"u"&&window.isSecureContext===!1?"insecure":"unsupported",retryable:!1});return}let B=C!==null?Promise.resolve(C):x();B.catch(()=>{});try{if(g===null){if(g=await c({video:{facingMode:"user",width:{ideal:n.camera.width},height:{ideal:n.camera.height}},audio:!1}),k||M!==I){for(let D of g.getTracks())D.stop();k&&(g=null);return}u.srcObject=g,u.muted=!0,u.playsInline=!0,await u.play().catch(()=>{})}}catch(D){!k&&M===I&&Z(ld(D));return}try{C=await B}catch{!k&&M===I&&Z({kind:"generic",retryable:!0});return}k||M!==I||(O("gating"),y(M))};return{handle:{get state(){return p},on:(M,B)=>i.on(M,B),start:N,retry:()=>{if(!k){if(g!==null&&C!==null&&p!=="error"){I+=1;let M=I;L(),h.reset(),O("gating"),y(M);return}p="idle",N()}},destroy:()=>{k||(I+=1,q(),m.setActive(!1),k=!0,C?.close(),C=null,f.close(),i.clear())}},setFlowState:M=>{(p==="captured"||p==="uploading"||p==="checking"||p==="done"&&M==="done")&&O(M)}}}function ud(){import("@mediapipe/tasks-vision").catch(()=>{})}var sd,rA,aA,sA,yo,Kn=J(()=>{"use strict";mn();nt();Jn();Xs();so();lo();ft();ho();fo();sd="/models-v3",rA=640,aA=1600,sA=.92;yo=class extends Error{}});function md(e,t){try{gA??(gA=document.createElement("canvas"));let n=gA,i=96/Math.max(1,t.width);n.width=Math.max(1,Math.round(t.width*i)),n.height=Math.max(1,Math.round(t.height*i));let o=n.getContext("2d");if(o===null)return dA;o.drawImage(e,t.x,t.y,t.width,t.height,0,0,n.width,n.height);let r=o.getImageData(0,0,n.width,n.height);return{sharpness:we(r),exposure:it(r),meanLuma:Ke(r)}}catch{return dA}}async function hd(e,t){let n=e.source;return"convertToBlob"in n?n.convertToBlob({type:"image/jpeg",quality:t}):new Promise((i,o)=>{n.toBlob(r=>r===null?o(new Error("encode failed")):i(r),"image/jpeg",t)})}function mA(e,t={}){let n=t.now??(()=>performance.now()),i=t.setTimer??((y,x)=>setTimeout(y,x)),o=t.clearTimer??(y=>clearTimeout(y)),r=t.encode??hd,a=t.quality??md,s=e.tuningVersion??null,A=new Set,c=!1,l=e.video??null,d=null,m=t.grabFrame??null,h=null,u=1e3/lA,f=null,p=null,g=!1,C=!1,w=Number.NEGATIVE_INFINITY,Q=null,k=0,I=null,b=null,v=Promise.all([Promise.resolve().then(()=>(so(),Ns)),Promise.resolve().then(()=>(lo(),Ks)),Promise.resolve().then(()=>(Kn(),bo)),Promise.resolve().then(()=>(ho(),$s)),Promise.resolve().then(()=>(fo(),oA))]).then(async([y,x,N,U,M])=>{let B=x.resolveIcaoTuning(e.tuning,e.tuningVersion??void 0);B.background.required&&(p=M.createBackgroundMonitor({tuning:B.backgroundCheck,assetBaseUrl:e.assetBaseUrl??"/models-v3",...t.createSegmenter!==void 0?{createSegmenter:t.createSegmenter}:{},now:n})),d=y.createIcaoGate(B,{policy:e.policy??"reject"}),m??(m=N.defaultGrabber()),h=N.observe,u=1e3/Math.min(lA,B.cadenceHz);let D=(t.createLandmarker??U.createFaceLandmarker)(e.assetBaseUrl??"/models-v3"),P=await new Promise((H,F)=>{let G=setTimeout(()=>{F(new Error("landmarker init timeout")),D.then(V=>V.close(),()=>{})},U.LANDMARKER_INIT_TIMEOUT_MS);D.then(V=>{clearTimeout(G),H(V)},V=>{clearTimeout(G),F(V)})});c?P.close():f=P}).catch(()=>{g=!0}),O=y=>{for(let x of A)x({holding:C||g,update:y})},L=()=>{if(Q=null,!(c||f===null||d===null||m===null||h===null||l===null)){if(n()-w>uA){O(null);return}try{let y=m(l,dd);if(y!==null){let x=Math.max(n(),k+1);k=x;let N=f.detect(y.source,x),U=l.videoWidth||y.width,M=l.videoHeight||y.height,B=h(N,y,U,M);B.geometry!==null&&p!==null&&(B.backgroundCheck=p.measure(y,B.geometry.box,U,M));let D=d.push(B,n());C=D.ready,O(D)}}catch{}Q=i(L,u)}},q=()=>{let y=n()-w>uA;w=n(),y&&(d?.reset(),C=!1,I=null,b=null),Q===null&&f!==null&&!c&&(Q=i(L,0))},Z=()=>{let y=m===null||l===null?null:m(l,null);if(y===null||d===null||Math.max(y.width,y.height)<e.still.minLongSidePx)return Promise.resolve(null);let x=d.summary();return r(y,e.still.jpegQuality).then(N=>({image:N,width:y.width,height:y.height,gate:x}),()=>null)},R=null;return{engineOptions:{measureQuality:(y,x)=>{l=y,q();let N=a(y,x);return C||g?N:{...N,sharpness:0}},telemetry:y=>{if(y.type!=="fired"||c)return;I=Z();let x=R;x!==null&&I.then(N=>N===null?void 0:x(N).catch(()=>{})),C=!1,Q!==null&&o(Q),Q=null,w=Number.NEGATIVE_INFINITY}},decorate:y=>{let x=new WeakMap,N=new Map,U=P=>{let H=x.get(P);return H===void 0&&(H=(async()=>{let F=await Ne(y,"image","image/jpeg",P.image.size,{engine:"portrait"});return await y.uploadToSpaces(F.uploadUrl,P.image,"image/jpeg"),(await y.completeMedia(F.key)).key})(),H.catch(()=>x.delete(P)),x.set(P,H)),H};R=U;let M=async P=>{let H;try{H=await U(P)}catch(F){let G=F?.code;if(typeof G=="string"&&gd.has(G))throw F;return null}return{media:{portrait:H},gate:Hn(P.gate),...s!==null?{tuningVersion:s}:{}}},B=y.submitCheck.bind(y),D=(async(P,H,F)=>{if(P!=="liveness")return B(P,H,F);let G=F?.idempotencyKey,V=G===void 0?void 0:N.get(G);if(V===void 0){let X=I;V=X===null?Promise.resolve(null):X.then(S=>S===null?null:M(S)),G!==void 0&&(N.set(G,V),V.catch(()=>N.delete(G)))}let W=await V;if(W===null)return B("liveness",H,F);let z=await B("liveness",{...H,portraitIcao:W},F);return b=W,z});return new Proxy(y,{get(P,H){if(H==="submitCheck")return D;let F=Reflect.get(P,H);return typeof F=="function"?F.bind(P):F}})},onGate:y=>(A.add(y),()=>A.delete(y)),lastPortraitInput:()=>b,destroy:()=>{c=!0,I=null,b=null,Q!==null&&o(Q),Q=null,A.clear(),v.then(()=>{f?.close(),f=null,p?.close(),p=null})}}}var dd,gd,lA,uA,dA,gA,hA=J(()=>{"use strict";lt();ut();qe();dd=640,gd=new Set(["network_error","timeout","upload_failed","unknown_error","rate_limit_exceeded"]),lA=6,uA=1500,dA={sharpness:1,exposure:1,meanLuma:128},gA=null});function Ue(e){return e.section??yd[e.checkType]??null}function Ed(e){let t={sessionId:e.sessionId,orgName:e.orgName,returning:e.returning===!0,consentRecorded:e.consentRecorded,expiresAt:e.expiresAt,sections:[]};for(let n of e.steps){let i=Ue(n);i!==null&&!t.sections.includes(i)&&t.sections.push(i)}return e.branding!==void 0&&(t.branding=e.branding),t}function bd(e){let t={attemptsRemaining:e.attemptsRemaining,attemptsExhausted:e.attemptsExhausted===!0};return e.reason!==void 0&&(t.reason=e.reason),t}function Bd(e,t){let n=e.otpChoice;if(n===void 0||n.locked||n.selected===null)return;let i=t==="phone_otp"?"email":"phone";return n.options.includes(i)?i:void 0}function Qd(e,t,n,i){let o=t.checkType==="email_otp",r=(o?t.emailOtp:t.otp)??{},a=o?t.emailOtp?.emailSource:t.otp?.numberSource,s=a!==void 0&&Cd.has(a)?a:o?"prefilled_or_entered":"user_entered",A=typeof r.sentToMasked=="string"&&r.sentToMasked.length>0,c=Bd(e,o?"email_otp":"phone_otp"),l={key:t.checkType,context:n,section:Ue(t),phase:A?"verify":"send",canSwitch:c!==void 0,...i},d=o?{kind:"email_otp",...l,emailSource:s,needsEmail:s!=="prefilled"}:{kind:"phone_otp",...l,numberSource:s,needsPhone:s!=="prefilled",channels:(t.otp?.channels??[]).filter(m=>m==="whatsapp"||m==="sms")};return c!==void 0&&(d.switchChannel=c),A&&(d.sentToMasked=r.sentToMasked),!o&&t.otp?.channel!==void 0&&(d.channel=t.otp.channel),r.expiresAt!==void 0&&(d.codeExpiresAt=r.expiresAt),r.resendAvailableAt!==void 0&&(d.resendAvailableAt=r.resendAvailableAt),d}function Sd(e,t,n,i){let o=e.nniBound===!0?"bound":t.nniFromDocument===!0?"document":"typed",r=o==="typed"&&t.state==="input_required"&&t.reason==="nni_recheck",a=t.reason==="nni_not_found"&&t.state==="input_required"&&!i.attemptsExhausted&&e.methodChoice?.available===!0&&e.methodChoice.options.includes("document_photo");return{kind:"registry",key:"registry",context:n,section:Ue(t),state:t.state==="input_required"?"input_required":"pending",source:o,recheck:r,canUseDocument:a,...i}}function wd(e,t,n,i){let o=[...t.acceptedSides??[]];return{kind:"document",key:"document",context:n,section:Ue(t),side:o.includes("recto")?"verso":"recto",acceptedSides:o,documents:ks(e),...i}}function kd(e){let t=e.steps.find(n=>n.checkType==="liveness");return t?.state==="passed"||t?.state==="review"}function pA(e,t,n,i,o){let r=t.icao?.report;return{kind:"portrait",key:`portrait:${o}`,context:n,section:Ue(t),phase:o,report:Array.isArray(r)?r:null,review:t.state==="review",tuning:e.capture?.icao??null,tuningVersion:e.capture?.tuningVersion??null,icao:Me(e),retakeOnly:o==="capture"&&t.state==="input_required"&&e.capture?.livePhoto?.oneCapture===!0&&kd(e),...i}}function Md(e,t){let n=e.capture?.livePhoto;if(n?.oneCapture!==!0)return null;let i=e.steps.find(r=>r.checkType==="portrait_icao"),o=n.still??Bo;return{icao:t==="liveness"&&Me(e)!==null&&i!==void 0&&i.state==="pending"&&i.reason===void 0,still:{minLongSidePx:o.minLongSidePx??Bo.minLongSidePx,jpegQuality:o.jpegQuality??Bo.jpegQuality}}}function xd(e,t,n,i){let o=t.eid,r=Ue(t);if(o===void 0||o.challenge!=="app_code")return{kind:"unsupported",key:"unsupported:eid_auth",context:n,section:r,checkType:"eid_auth",reason:"update_required"};let a=e.methodChoice,s=a?.available===!0?a.options.find(l=>fd.includes(l)):void 0,A=s!==void 0&&t.state==="input_required"&&(t.reason!==void 0&&Id.has(t.reason)||t.attemptsExhausted===!0||t.attemptsRemaining===0||t.reason==="eid_resend_limit"&&o.awaiting!=="code"),c={kind:"eid",key:"eid",context:n,section:r,provider:o.provider,providerName:o.providerName,country:o.country,challenge:"app_code",phase:o.awaiting==="code"?"code":"identifier",identifierBound:o.identifierBound===!0,canUseCamera:A,afterPass:o.afterPass==="continue"?"continue":"end",...i};return A&&(c.cameraMethod=s),o.expiresAt!==void 0&&(c.codeExpiresAt=o.expiresAt),o.resendAvailableAt!==void 0&&(c.resendAvailableAt=o.resendAvailableAt),o.resendsRemaining!==void 0&&(c.resendsRemaining=o.resendsRemaining),o.codeAttemptsRemaining!==void 0&&(c.codeAttemptsRemaining=o.codeAttemptsRemaining),c}function Dd(e,t){if(t.checkType!=="face_match"||t.reason!==void 0)return null;let n=e.steps.find(i=>i.checkType==="portrait_icao");return n!==void 0&&(n.state==="passed"||n.state==="review")?n:null}function vd(e){return e.steps.some(t=>t.attemptsExhausted===!0)}function Rd(e,t){let n=e.failureReason,i;n===fA?i="platform_unsupported":e.status==="expired"?i="expired":e.status==="review_pending"?i="review":e.status==="completed"&&e.outcome==="approved"?i="approved":e.status==="completed"&&e.outcome==="review"?i="review":n==="device_cooldown"?i="cooldown":n!==void 0?i="policy_stop":vd(e)?i="attempts_exhausted":i="rejected";let o=i==="platform_unsupported"?{sessionId:e.sessionId,status:"unavailable"}:We(e,{autoRetry:!1}),r={kind:"result",key:"result",context:t,section:null,display:i,result:o};return n!==void 0&&(r.failureReason=n),e.retryAfter!==void 0&&(r.retryAfter=e.retryAfter),r}function Td(e,t){let n=e.identitySummary;if(n==null)return null;let i={kind:"identity_summary",key:"identity_summary",context:t,section:"identity",summaryKind:n.kind==="partial"?"partial":n.kind??"full",source:n.source,portraitAvailable:n.portrait?.available===!0,retakeAvailable:n.retakeAvailable===!0};for(let o of _d){let r=n[o];typeof r=="string"&&r!==""&&(i[o]=r)}return i}function Fe(e,t={}){let n=Ed(e);if(pe(e)||e.failureReason===fA)return Rd(e,n);let i=Td(e,n);if(i!==null)return i;let o=Re(e);if(o!==null){let c=o.options.filter(d=>pd.includes(d));if(c.length===0)return{kind:"unsupported",key:"unsupported:method",context:n,section:"identity",checkType:"method",reason:"platform_unsupported"};let l={kind:"method",key:"method",context:n,section:"identity",options:c};return c.includes("national_eid")&&o.nationalEid!==void 0&&(l.nationalEid=o.nationalEid),l}let r=Ie(e);if(r===void 0){let c=e.steps.find(l=>l.state==="processing");return{kind:"processing",key:"processing",context:n,section:c===void 0?null:Ue(c),stalled:!1}}let a=bd(r),s=r.checkType,A=Ue(r);switch(s){case"phone_otp":case"email_otp":{let c=e.otpChoice;return c!==void 0&&c.selected===null&&!c.locked?{kind:"contact_choice",key:"contact_choice",context:n,section:A,options:c.options.filter(l=>l==="phone"||l==="email"),selected:null,locked:!1}:Qd(e,r,n,a)}case"population_registry":return Sd(e,r,n,a);case"eid_auth":return xd(e,r,n,a);case"doc_ocr":return wd(e,r,n,a);case"portrait_icao":return pA(e,r,n,a,"capture");case"liveness":case"face_match":{let c=Dd(e,r);if(c!==null)return pA(e,c,n,a,"match");let l=r.requiresMobile===!0,d=Me(e);return l&&t.isMobile===!1?{kind:"mobile_required",key:"mobile_required",context:n,section:A,checkType:s}:{kind:"liveness",key:"biometric",context:n,section:A,mode:s==="face_match"?"selfie":"liveness",requiresMobile:l,instructions:d===null?"standard":"icao",icao:d,livePhoto:Md(e,s),...a}}default:return{kind:"unsupported",key:`unsupported:${s}`,context:n,section:A,checkType:s,reason:s==="nfc_chip"?"platform_unsupported":"update_required"}}}var pd,fd,Id,fA,Cd,yd,Bo,_d,qn=J(()=>{"use strict";ut();no();bt();pd=["national_number","document_photo","national_eid"],fd=["national_number","document_photo"],Id=new Set(["eid_not_enrolled","eid_unavailable","eid_locked"]),fA="platform_unsupported",Cd=new Set(["prefilled","user_entered","prefilled_or_entered"]),yd={phone_otp:"contact",email_otp:"contact",eid_auth:"identity",doc_ocr:"identity",nfc_chip:"identity",population_registry:"identity",liveness:"live_photo",portrait_icao:"live_photo",face_match:"live_photo"};Bo={minLongSidePx:1280,jpegQuality:.95};_d=["fullName","birthDate","birthYear","nationality","documentType","documentNumberMasked","nniMasked","expiryDate","retakeTarget"]});function IA(e){let t=null,n=Promise.resolve(),i=!1,o=null,r=null,a=null,s=!1,A=()=>{t?.controller.handle.destroy(),t=null},c=()=>{let h=e.currentView(),u=h===null?null:Fe(h,{isMobile:e.isMobile()});return u?.kind==="portrait"?u:null},l=async(h,u)=>{if(e.destroyed())return;u.setFlowState("uploading"),i=!1;let f=null;try{await e.runner().submit("portrait_icao",async(g,C)=>{if(f===null){let Q=await Ne(g,"image","image/jpeg",h.image.size,{engine:"portrait"});await g.uploadToSpaces(Q.uploadUrl,h.image,"image/jpeg"),f=(await g.completeMedia(Q.key)).key}u.setFlowState("checking");let w={media:{portrait:f},gate:Hn(h.gate),...h.tuningVersion!==void 0?{tuningVersion:h.tuningVersion}:{}};return g.submitCheck("portrait_icao",w,{idempotencyKey:C})},()=>{o=f})}catch{i=!0}if(u.setFlowState("done"),e.destroyed())return;let p=c();(p===null||p.phase!=="capture")&&t?.controller===u&&A(),e.runner().republish()},d=h=>e.runner().submit("face_match",(u,f)=>u.submitCheck("face_match",o!==null?{imageKey:o}:{},{idempotencyKey:f})).then(()=>{},()=>{i=!0,h()});return{bind:(h,u)=>{if(h.phase==="match")return A(),r!==h.attemptsRemaining&&!i&&(r=h.attemptsRemaining,d(u)),{...h,uploadFailed:i,resubmit:()=>(i=!1,r=h.attemptsRemaining,u(),d(u)),capture:()=>{throw new Error("the portrait was already accepted")}};r=null;let f=e.keptPortraitInput?.()??null;return f!==null&&(s||f!==a&&h.report===null&&h.reason===void 0&&!h.retakeOnly)?(s||(a=f,s=!0,e.runner().submit("portrait_icao",(p,g)=>p.submitCheck("portrait_icao",f,{idempotencyKey:g}),()=>{o=f.media.portrait}).catch(()=>{}).finally(()=>{s=!1,u()})),{kind:"processing",key:"processing",context:h.context,section:h.section,stalled:!1,refresh:()=>Promise.resolve()}):{...h,uploadFailed:i,resubmit:()=>Promise.resolve(),capture:p=>{if(t!==null&&t.video===p.video)return t.controller.handle;A(),i=!1;let g=Eo({video:p.video,tuning:h.tuning,tuningVersion:h.tuningVersion,...h.icao!=null?{policy:h.icao.policy}:{},...p.keepScreenAwake!==void 0?{keepScreenAwake:p.keepScreenAwake}:{},...p.assetBaseUrl!==void 0?{assetBaseUrl:p.assetBaseUrl}:{}},e.internals);return t={video:p.video,controller:g},g.handle.on("captured",C=>{n=n.then(()=>l(C,g)).catch(()=>{})}),g.handle}}},destroy:A}}var CA=J(()=>{"use strict";ut();Kn();lt();qn()});var de,xe,Qo=J(()=>{"use strict";de=class extends Error{constructor(t,n){super(`invalid ${t} (${n})`),this.name="InvalidInputError",this.field=t,this.kind=n}},xe=class extends Error{constructor(t,n){super(`invalid ${t} (${n})`),this.name="OtpInputError",this.field=t,this.kind=n}}});function So(e){return/^\d{10}$/.test(e)&&Number(e)%97===1}function wo(e){let t="";for(let n of e){let i=n.codePointAt(0)??0;i>=1632&&i<=1641?t+=String(i-1632):i>=1776&&i<=1785?t+=String(i-1776):n!==" "&&n!=="-"&&n!=="\xA0"&&(t+=n)}return t}var yA=J(()=>{"use strict";Qo()});function bA(e){let t=!1,n=null,i="",o=!1,r=!1,a=!1,s={},A={},c=new Set,l=!1,d=null,m="idle",h=new Map,u=new Map,f=(E,y,x)=>{let N=`${E}.${y}`,U=h.get(N);if(U!==void 0)return U;let M=u.get(E),B=(M===void 0?x():M.then(x)).finally(()=>{h.delete(N)});h.set(N,B);let D=B.then(()=>{},()=>{});return u.set(E,D),D.then(()=>{u.get(E)===D&&u.delete(E)}),B},p=async(E,y,x)=>{await e.ensureConsent();try{await ct(e.runtime,y)}catch(N){if(N instanceof ce&&EA.has(N.code)){await e.refreshView();return}throw N}x?.(),e.destroyed()||await e.refreshView()},g=async E=>{await e.ensureConsent();let y;try{try{y=await E(e.runtime.client)}catch(x){if(!(x instanceof ce)||x.code!=="consent_required")throw x;await e.runtime.ensureConsent({force:!0}),y=await E(e.runtime.client)}}catch(x){if(x instanceof ce&&EA.has(x.code)){await e.refreshView();return}throw x}e.destroyed()||(y!==void 0&&e.setView!==void 0?e.setView(y):await e.refreshView())},C=E=>f("contact",`select:${E}`,()=>g(y=>y.selectContact===void 0?Promise.reject(new Error("contact choice is not available in this build")):y.selectContact(E))),w=E=>f("identity",E,()=>g(y=>y.confirmIdentity===void 0?Promise.reject(new Error("identity confirmation is not available in this build")):y.confirmIdentity(E))),Q=async E=>{await e.ensureConsent();try{await e.selectMethod(E)}catch(y){if(!(y instanceof ce)||y.code!=="consent_required")throw y;await e.runtime.ensureConsent({force:!0}),await e.selectMethod(E)}},k=(E,y)=>{let x=E.kind,N=x==="phone_otp",U=N?"phone":"email",M={action:"send"};if(N?E.needsPhone:E.needsEmail){let B=y[U]??A[x],D=N?B?.replace(/[\s().-]/g,""):B?.trim();if(D===void 0||!(N?Pd:Od).test(D))return Promise.reject(N?new de("phone","format"):new xe("email","format"));M[U]=D}if(N){let B=E.channels,D=y.channel??(B.length===1?B[0]:void 0);if(B.length>0){if(D===void 0)return Promise.reject(new xe("channel","required"));if(!B.includes(D))return Promise.reject(new xe("channel","unavailable"))}D!==void 0&&(M.channel=D)}return f(x,"send",()=>p(x,(B,D)=>B.submitCheck(x,M,{idempotencyKey:D}),()=>{s[x]=e.now(),M[U]!==void 0&&(A[x]=M[U])}))},I=(E,y)=>Nd.test(y)?f(E,"verify",()=>p(E,(x,N)=>x.submitCheck(E,{action:"verify",code:y},{idempotencyKey:N}))):Promise.reject(new de("code","format")),b=(E,y)=>f("eid_auth",E,()=>p("eid_auth",(x,N)=>x.submitCheck("eid_auth",y,{idempotencyKey:N}))),v=(E,y)=>{if(E.identifierBound)return b("start",{action:"start"});let x=wo(y??"");if(E.country==="MR"){if(!/^\d{10}$/.test(x))return Promise.reject(new de("nni","format"));if(!So(x))return Promise.reject(new de("nni","check_digit"))}else if(x==="")return Promise.reject(new de("nni","format"));return b("start",{action:"start",identifier:x})},O=E=>{switch(E.kind){case"phone_otp":case"email_otp":{let y={...E,send:(N={})=>k(E,N),verify:N=>I(E.kind,N),switchTo:()=>E.canSwitch&&E.switchChannel!==void 0?C(E.switchChannel):Promise.reject(new RangeError("this session has no other contact option"))},x=s[E.kind];return y.resendAvailableAt===void 0&&x!==void 0&&(y.resendAvailableAt=new Date(x+Fd).toISOString()),y}case"eid":return{...E,start:y=>v(E,y),verify:y=>Gd.test(y)?b("verify",{action:"verify",code:y}):Promise.reject(new de("code","format")),resend:()=>E.resendsRemaining===0?Promise.reject(new RangeError("no new code can be sent for this session")):b("resend",{action:"resend"}),useCamera:()=>E.canUseCamera&&E.cameraMethod!==void 0?f("method","useCamera",()=>Q(E.cameraMethod)):Promise.reject(new RangeError("the camera path is not offered"))};case"method":return{...E,select:y=>E.options.includes(y)?f("method","select",()=>Q(y)):Promise.reject(new RangeError(`method ${String(y)} is not offered`))};case"registry":return{...E,submitNni:y=>{if(E.source!=="typed")return Promise.reject(new RangeError("this session already holds the NNI"));let x=wo(y);return/^\d{10}$/.test(x)?So(x)?f("population_registry","submitNni",()=>p("population_registry",(N,U)=>N.submitCheck("population_registry",{nni:x},{idempotencyKey:U}),()=>{d=`\u2022\u2022\u2022\u2022\u2022\u2022${x.slice(-4)}`})):Promise.reject(new de("nni","check_digit")):Promise.reject(new de("nni","format"))},confirm:()=>f("population_registry","confirm",()=>p("population_registry",(y,x)=>y.submitCheck("population_registry",{},{idempotencyKey:x}))),useDocument:()=>E.canUseDocument?f("method","useDocument",()=>Q("document_photo")):Promise.reject(new RangeError("the document method is not offered"))};case"document":return e.bindDocument!==void 0?e.bindDocument(E,R):{...E,issuer:null,documentType:null,captureSide:null,selectDocument:()=>{throw new Error("document capture is not available in this build")},capture:()=>{throw new Error("document capture is not available in this build")}};case"portrait":return e.bindPortrait!==void 0?e.bindPortrait(E,R):{...E,uploadFailed:!1,resubmit:()=>Promise.resolve(),capture:()=>{throw new Error("portrait capture is not available in this build")}};case"contact_choice":return{...E,select:y=>E.options.includes(y)?C(y):Promise.reject(new RangeError(`contact ${String(y)} is not offered`))};case"identity_summary":return{...E,...E.nniMasked===void 0&&E.summaryKind==="partial"&&d!==null?{nniMasked:d}:{},portrait:async()=>{let y=e.runtime.client;if(!E.portraitAvailable||y.identityPortrait===void 0)return null;try{return await y.identityPortrait()}catch{return null}},confirm:()=>w("confirm"),retake:()=>E.retakeAvailable?w("retake"):Promise.reject(new RangeError("no retake is left"))};case"liveness":return{...E,capture:y=>e.liveness(y),onLivePhoto:y=>E.livePhoto?.icao===!0&&e.onLivePhoto!==void 0?e.onLivePhoto(y):()=>{}};case"mobile_required":case"processing":return{...E,refresh:async()=>{o=!1,await e.refreshView()}};case"unsupported":case"result":return{...E};default:{let y=E;throw new Error(`runner: unhandled step ${JSON.stringify(y)}`)}}},L=async()=>{if(!r){r=!0;try{for(let E of Ld){if(await e.sleep(E),!t||e.destroyed())return;let y=await e.refreshView().catch(()=>null);if(y!==null&&Fe(y,{isMobile:e.isMobile()}).kind!=="processing")return}o=!0,R()}finally{r=!1}}},q=E=>{if(E.kind!=="liveness"||E.mode!=="selfie")return null;let y={kind:"processing",key:"processing",context:E.context,section:E.section,stalled:!1};if(m==="inflight")return y;if(!l||m==="done")return null;let x=e.keptFaceKey?.()??null;return x===null?null:(m="inflight",p("face_match",(N,U)=>N.submitCheck("face_match",{imageKey:x},{idempotencyKey:U}),()=>{m="done"}).then(()=>{m==="inflight"&&(m="done",R())},()=>{m="done",R()}),y)},Z=(E,y=!1)=>{if(!t||e.destroyed()||e.chainBusy())return;let x=Fe(E,{isMobile:e.isMobile()});x.kind==="registry"&&x.recheck&&(l=!0,m="idle"),x=q(x)??x,x.kind==="processing"?x.stalled=o:o=!1;let N=O(x),U=JSON.stringify(N);x.kind==="registry"&&x.source==="document"&&x.state==="pending"&&!c.has("registry")&&(c.add("registry"),N.confirm().catch(M=>{(!(M instanceof ce)||Hd.has(M.code))&&c.delete("registry")})),!(!y&&U===i)&&(i=U,n=N,e.emitStep(N),x.kind==="processing"&&!o&&m!=="inflight"&&L(),x.kind==="result"&&!a&&(a=!0,e.emitResult(x.result)))};function R(){let E=e.currentView();E!==null&&Z(E,!0)}return{run:async()=>{if(e.destroyed())throw new Error("verification destroyed");t=!0;let E=await e.ensureView();return n===null&&Z(E),n??O(Fe(E,{isMobile:e.isMobile()}))},current:()=>n,onView:E=>Z(E),onChainIdle:()=>{let E=e.currentView();E!==null&&Z(E)},republish:R,submit:p}}var Ld,Fd,Pd,Nd,Gd,Od,EA,Hd,BA=J(()=>{"use strict";st();lt();yA();qn();Ld=[1e3,2e3,4e3,8e3,15e3],Fd=3e4,Pd=/^\+[1-9]\d{7,14}$/,Nd=/^\d{6}$/,Gd=/^\d{6}$/,Od=/^[^\s@]+@[^\s@]+\.[^\s@]+$/,EA=new Set(["session_not_active","check_not_found","check_already_finalized","check_out_of_order","method_required","contact_locked","identity_confirm_required","identity_confirm_locked"]),Hd=new Set(["network_error","timeout","upload_failed","unknown_error","rate_limit_exceeded"])});var Ht,QA=J(()=>{"use strict";Ht={fp12:"08390000c48a",engine:"sekyro-ocr-1",precision:"fp32",files:{"sekyro-ocr.wasm":{bytes:3550608,sha256:"c15968a6de3d2225e2fdbf36d71a9214c2910419056c6878444fd2d0567bb748",tier:"live",contentType:"application/wasm"},"sekyro-ocr.mjs":{bytes:4270,sha256:"209a78d96ca53344996a0c2300aed4ff8a5c69e142713216975a2840eec08cac",tier:"bundled",contentType:"text/javascript"},"det.param":{bytes:24252,sha256:"c39ba0b1195e8ad37cfc5bdd7acedcfc1d9cb901e7b8eb1c9c4f6e5a66c04eb3",tier:"live",contentType:"text/plain"},"det.bin":{bytes:4685856,sha256:"652bafe366565109a1a5766caf482bc46f01481f8044d3a785bd9a1be67c63bb",tier:"live",contentType:"application/octet-stream"},"mrz-rec.param":{bytes:3510,sha256:"bc69b1b9683e35f6605b21001fadeb81468063459c00c0fc83c67c139f23df01",tier:"live",contentType:"text/plain"},"mrz-rec.bin":{bytes:494196,sha256:"de93a2aa2f08670cc7dedd17ba378d2f5d7cf6ae409054a9eac863a02c2febae",tier:"live",contentType:"application/octet-stream"},"mrz_dict.txt":{bytes:73,sha256:"b19858a4de2ccbbbdd4b53982188ea2c7664013183bbd1ae9d20ab52c661f97f",tier:"live",contentType:"text/plain"},"latin-rec.param":{bytes:19602,sha256:"2ae30dfdc7ee482c6cbbc0419c16ee125e880e9eaf69053d61953694bb0fcf4c",tier:"lazy",contentType:"text/plain"},"latin-rec.bin":{bytes:10750388,sha256:"f91ebdcf4d6b58c58a87704160e59d07ae56bc2d5021eae09d095c5a20bf7525",tier:"lazy",contentType:"application/octet-stream"},"ppocr_keys_v1.txt":{bytes:26249,sha256:"28b2362ad4ab2dc38769aa72feb535e3a9ddb3fd2a7585a05920e6393b1dc7f7",tier:"lazy",contentType:"text/plain"},"arabic-rec.param":{bytes:9858,sha256:"4e5cc85667dfaaa0c67d3f308400645a578c08bd43f952cab6c55b7bce143ea9",tier:"lazy",contentType:"text/plain"},"arabic-rec.bin":{bytes:8853572,sha256:"5acc3265a1738dc31316258383830d5dbdfa5e8ebc2e710f9001f832ecfbffb0",tier:"lazy",contentType:"application/octet-stream"},"arabic_dict.txt":{bytes:405,sha256:"637c27c88512c22089bef927b34ada08f748dc132ac70facd68d8202384c2726",tier:"lazy",contentType:"text/plain"}}}});function SA(e,t){return e==="hosted"?"/models-ocr":t==="live"?"https://assets.sekyro.ai/sdk/web/ocr":"https://assets-staging.sekyro.ai/sdk/web/ocr"}var Pp,Np,wA=J(()=>{"use strict";QA();Pp=Object.keys(Ht.files).filter(e=>Ht.files[e].tier==="live"),Np=Object.keys(Ht.files).filter(e=>Ht.files[e].tier==="lazy")});var MA={};ue(MA,{createPlanRunner:()=>Vd,sdkAssetBase:()=>kA});function Ud(e){let t=e;if(typeof t.apiOrigin!="string"||typeof t.sessionToken!="string")return;let n=`${t.apiOrigin}/api/v2/hosted/capture-reports`,i=t.sessionToken;return o=>{try{fetch(n,{method:"POST",headers:{"content-type":"application/json","x-session-token":i},body:JSON.stringify({reports:o}),keepalive:!0}).catch(()=>{})}catch{}}}function kA(e){let t=e.apiOrigin;return SA("sdk",typeof t=="string"&&/staging|sandbox|localhost/.test(t)?"sandbox":"live")}function Vd(e){let t=null,n=null,i=null,o=Promise.resolve(),r=()=>{i?.flow.handle.destroy(),i=null},a=async(p,g)=>{if(e.destroyed())return;g.setFlowState("uploading");let C=null,w,Q=!1;try{await t.submit("doc_ocr",async(v,O)=>{if(C===null){let L=await Ne(v,"image","image/jpeg",p.image.size,{engine:"document"});await v.uploadToSpaces(L.uploadUrl,p.image,"image/jpeg"),C=(await v.completeMedia(L.key)).key}return g.setFlowState("checking"),w===void 0&&(w=g.takeDeviceRead(p)),v.submitCheck("doc_ocr",{imageKey:C,side:p.side,...w!==null?{deviceRead:w}:{}},{idempotencyKey:O})})}catch{Q=!0}finally{g.setFlowState("done")}if(e.destroyed())return;if(Q){g.settle(p.side,{ok:!1,issue:"technical"});return}let k=e.currentView(),I=k===null?null:Fe(k,{isMobile:e.isMobile()});if(I?.kind!=="document"){g.settle(p.side,{ok:!0}),i?.flow===g?r():g.handle.destroy();return}if(I.reason==="document_type_not_accepted"){n=null,i?.flow===g&&r(),t.republish();return}p.side==="single"||I.acceptedSides.includes(p.side)||I.reason==="side_missing"?(g.settle(p.side,{ok:!0}),n?.documentType!=="passport"&&g.handle.setSide(I.side)):g.settle(p.side,{ok:!1,issue:"reread"})},s=(p,g)=>({...p,issuer:n?.issuer??null,documentType:n?.documentType??null,captureSide:n===null?null:n.documentType==="passport"?"single":p.side,selectDocument:(C,w)=>{if(!ws(p.documents).includes(C)||!to(p.documents,C).includes(w))throw new RangeError(`${w} from ${C} is not accepted`);(n?.issuer!==C||n.documentType!==w)&&r(),n={issuer:C,documentType:w},g()},capture:C=>{if(n===null)throw new Error("selectDocument() first");if(i!==null&&i.video===C.video)return i.flow.handle;r();let w=n,Q=w.documentType==="passport"?"single":p.acceptedSides.length>0?p.side:void 0,k=On({video:C.video,documentType:w.documentType,issuer:w.issuer,...Q!==void 0?{side:Q}:{},...C.keepScreenAwake!==void 0?{keepScreenAwake:C.keepScreenAwake}:{},...C.liveMrz!==void 0?{liveMrz:C.liveMrz}:{}},{...e.documentInternals??{},...(()=>{let I=e.currentView()?.capture?.document,b=e.documentInternals?.blurRefuseSharpnessMax??I?.scan?.blurRefuseSharpnessMax;return{engineOptions:{camera:qa(I?.camera),shutter:Zi(I?.scan),guideLock:es(I?.guide),...e.documentInternals?.engineOptions??{}},...typeof b=="number"&&Number.isFinite(b)&&b>=0&&b<=1?{blurRefuseSharpnessMax:b}:{}}})(),deferRead:!0,...(()=>{let I=e.currentView();if(I===null||e.documentInternals?.webOcr!==void 0)return{};let b=Ud(e.runtime.client);return{webOcr:{captureDocument:I.capture?.document,salt:I.sessionId,baseUrl:kA(e.runtime.client),...b!==void 0?{reports:b}:{}}}})()});return i={video:C.video,flow:k},k.handle.on("captured",I=>{o=o.then(()=>a(I,k)).catch(()=>{})}),k.handle}}),A=null,c=null,l=new Set,d=e.runtime.client;e.runtime.client=new Proxy(d,{get(p,g){if(g==="submitCheck")return(c??p).submitCheck.bind(c??p);let C=Reflect.get(p,g);return typeof C=="function"?C.bind(p):C}});let m=()=>{A?.destroy(),A=null,c=null},h=p=>{let g=e.currentView(),C=g===null?null:Fe(g,{isMobile:e.isMobile()});if(g===null||C?.kind!=="liveness"||C.livePhoto?.icao!==!0)return;if(A===null){let I=mA({tuning:g.capture?.icao??null,tuningVersion:g.capture?.tuningVersion??null,...C.icao!=null?{policy:C.icao.policy}:{},still:C.livePhoto.still,...p.assetBaseUrl!==void 0?{assetBaseUrl:p.assetBaseUrl}:{}},e.livePhotoInternals);A=I,c=I.decorate(d),I.onGate(b=>{for(let v of l)v(b)})}let w=A,Q=e.baseCapture??{},k=Q.engineOptions?.telemetry;return{...Q,engineOptions:{...Q.engineOptions??{},measureQuality:w.engineOptions.measureQuality,telemetry:I=>{k?.(I),w.engineOptions.telemetry(I)}}}},u=IA({keptPortraitInput:()=>A?.lastPortraitInput()??null,runner:()=>t,currentView:e.currentView,destroyed:e.destroyed,isMobile:e.isMobile,...e.portraitInternals!==void 0?{internals:e.portraitInternals}:{}}),f=bA({...e,bindDocument:s,bindPortrait:u.bind,onLivePhoto:p=>(l.add(p),()=>l.delete(p))});return t=f,{...f,captureInternals:h,destroy:()=>{r(),u.destroy(),m(),l.clear()}}}var xA=J(()=>{"use strict";eo();no();Vi();Gn();Ji();hA();CA();lt();BA();qn();wA()});var xg={};ue(xg,{DEFAULT_API_ORIGIN:()=>ko,DOCUMENT_TYPE_ORDER:()=>hg,HostedApiError:()=>ce,ISSUER_CODES:()=>Wn,InvalidInputError:()=>de,KNOWN_CODES:()=>ui,OtpInputError:()=>xe,PLATFORM_UNSUPPORTED:()=>Xn,SEKYRO_EVENTS:()=>Ro,WEB_IDENTITY_METHODS:()=>vo,acceptedIssuers:()=>fg,acceptedTypesFor:()=>pg,createDocumentCapture:()=>yg,createLivenessCapture:()=>xr,createPortraitCapture:()=>bg,createVerification:()=>DA,deriveStep:()=>FA,flagOf:()=>Cg,getLivenessAssetsStatus:()=>br,hasMultipleCameras:()=>Tr,icaoPolicyOf:()=>Me,isKnownCode:()=>_r,isValidNni:()=>vA,normalizeNni:()=>RA,openHosted:()=>VA,preloadLivenessAssets:()=>Er,queryCameraPermission:()=>vr,releaseLivenessAssets:()=>Qr,resolveAcceptedDocuments:()=>Ig,sectionOf:()=>De,subscribeCameraPermission:()=>Rr,subscribeLivenessAssets:()=>Br,warmDocumentCapture:()=>Eg,warmPortraitCapture:()=>Bg});module.exports=ZA(xg);hn();si();async function Dr(){try{return typeof navigator>"u"||typeof navigator.permissions?.query!="function"?null:await navigator.permissions.query({name:"camera"})}catch{return null}}function li(e){return e==="granted"||e==="prompt"||e==="denied"?e:"unknown"}async function vr(){let e=await Dr();return e===null?"unknown":li(e.state)}function Rr(e){let t=!1,n=null,i=()=>{!t&&n!==null&&e(li(n.state))};return Dr().then(o=>{t||(n=o,e(o===null?"unknown":li(o.state)),o?.addEventListener?.("change",i))}),()=>{t=!0,n?.removeEventListener?.("change",i)}}async function Tr(){if(typeof navigator>"u")return!1;let e=String(navigator.userAgent??"");if(/Android|iPhone|iPad|iPod/i.test(e)||/Macintosh/.test(e)&&(navigator.maxTouchPoints??0)>1)return!0;try{return(await navigator.mediaDevices?.enumerateDevices?.()??[]).filter(n=>n.kind==="videoinput").length>=2}catch{return!1}}st();gi();Yt();hn();ft();lt();bt();var ko="https://api.sekyro.ai",Jd=5e3,Yd=1500,Kd=10;function qd(e){return new Promise(t=>setTimeout(t,e))}function Wd(){let e=globalThis.crypto;if(e!==void 0&&typeof e.randomUUID=="function")return e.randomUUID();let t=new Uint8Array(16);if(e!==void 0&&typeof e.getRandomValues=="function")e.getRandomValues(t);else for(let i=0;i<16;i+=1)t[i]=Math.floor(Math.random()*256);t[6]=(t[6]??0)&15|64,t[8]=(t[8]??0)&63|128;let n=[...t].map(i=>i.toString(16).padStart(2,"0")).join("");return`${n.slice(0,8)}-${n.slice(8,12)}-${n.slice(12,16)}-${n.slice(16,20)}-${n.slice(20)}`}function DA(e){return zd(e,{})}function zd(e,t){let n=e.apiOrigin??ko,i=e.autoRetry??!0,o=e.rearm??"auto",r=t.client??new pn({apiOrigin:n,sessionToken:e.clientToken,...e.fetch!==void 0?{fetch:e.fetch}:{}}),a=t.sleep??qd,s=t.uuid??Wd,A=t.getTurnstileToken??((T,Y)=>Promise.resolve().then(()=>(Jr(),Vr)).then(j=>j.executeTurnstile(T,Y))),c=Pe(),l=null,d=null,m=!1,h=new AbortController,u=null,f=null,p=T=>{u=T,c.emit("view",T),l?.onView(T)},g=()=>u!==null?Promise.resolve(u):(f??(f=r.getSession().then(T=>(p(T),T)).finally(()=>{f=null})),f),C=async()=>{let T=await r.getSession();return p(T),T},w=(T,Y)=>{u!==null&&p(Fr(u,T,Y))},Q=null,k=async T=>{let Y=await g();!T&&Y.consentRecorded||(await r.recordConsent(e.locale),u!==null&&p({...u,consentRecorded:!0}))},I=T=>T?.force===!0?k(!0):(Q??(Q=k(!1).finally(()=>{Q=null})),Q),b={client:r,ensureConsent:T=>I(T),sleep:a,uuid:s,onBusy:T=>{m||c.emit("busy",T)}},v=!1,O=null,L=T=>{if(T.status==="approved"||T.status==="rejected"||T.status==="review"){if(v)return;v=!0}O=JSON.stringify(T),c.emit("result",T)},q=T=>{O!==JSON.stringify(T)&&L(T)},Z=async T=>{let Y=u;T&&(Y=await C().catch(()=>u));let j=Y===null?null:Re(Y);return j!==null&&!m&&c.emit("method",j),j!==null},R=null,E=!1,y=!1,x=()=>ct(b,(T,Y)=>T.submitCheck("population_registry",{},{idempotencyKey:Y})),N=T=>T.nniBound===!0||Te(T,"population_registry")?.nniFromDocument===!0,U=async()=>{try{let T=await g();if(pe(T)||Re(T)!==null||Ie(T)?.checkType!=="population_registry")return;if(!N(T)&&Te(T,"population_registry")?.nniFromDocument===void 0&&(T=await C()),!N(T)){y=!0;return}await I(),w(await x(),"population_registry");let Y=u===null?void 0:Te(u,"population_registry");if(Y?.state==="input_required"&&Y.reason==="registry_unavailable"&&Y.attemptsRemaining>0){if(await a(Jd),m)return;w(await x(),"population_registry")}}catch(T){if(T instanceof ce&&T.code==="method_required"){await C().catch(()=>{});return}E=!0;return}u!==null&&pe(u)&&L(We(u,{autoRetry:i}))},M=()=>(R??(R=U()),R),B=async()=>{let Y=(await g()).turnstileSiteKey;return Y===null?{sandbox:!0}:{channel:"hosted_web",siteKey:Y,turnstileToken:await A(Y,{signal:h.signal})}},D=null,P=Promise.resolve(),H=0,F=async()=>{let T=await g();for(let Y=0;Y<Kd&&!m&&!pe(T)&&Ie(T)===void 0&&T.steps.some(j=>j.state==="processing")&&(await a(Yd),!m);Y+=1)T=await C();return T},G=async(T,Y,j)=>{let{capture:ie}=T,ee=()=>m,oe=()=>T.alive&&T.attempt===j,le=Ae=>{oe()&&ie.setFlowState(Ae)},se=Ae=>{if(!ee()&&(L(Ae),!!oe())){if(Ae.status==="retry"&&o==="auto"){ie.handle.retry();return}ie.setFlowState("done")}};if(Y.degraded==="NO_RECORDER"){let Ae=u?.sessionId??(await g().catch(()=>null))?.sessionId??"";se(ke(Ae,"no_recorder"));return}le("uploading");try{if(await M(),ee())return;let Ae=await g();if(!pe(Ae)&&Re(Ae)!==null){await Z(!1),se(ke(Ae.sessionId,"method_required"));return}if(!pe(Ae)){if(Ie(Ae)?.checkType==="population_registry"){se(ke(Ae.sessionId,y?"nni_unbound":E?"network":"registry_unavailable"));return}if(await I(),ee())return;let Ee=await Gr({...b,artifacts:Y,getAttestation:B,getView:()=>u??Ae,refreshView:C,applySubmit:w,onPhase:le,isCancelled:ee,onKeyframePromoted:be=>{d=be}});if(ee())return;if(Ee.kind==="unavailable"){if(Ee.reason==="method_required"&&await Z(!0),ee())return;se(ke(Ae.sessionId,Ee.reason));return}Ee.kind==="resync"&&await C(),Ae=await F()}se(We(Ae,{autoRetry:i}))}catch{if(ee())return;se(ke(u?.sessionId??"","network"))}},V=(T,Y)=>{let j=T.attempt;H>0&&T.alive&&T.capture.setFlowState("uploading"),H+=1,P=P.then(()=>G(T,Y,j)).finally(()=>{H-=1,H===0&&l?.onChainIdle()}).catch(()=>{})},W=T=>{D?.capture.handle.destroy(),D!==null&&(D.alive=!1);let Y=ci(T,l?.captureInternals?.(T)??t.capture,()=>u?.capture?.liveness?.keyframe?.rank===!0),j={capture:Y,alive:!0,attempt:0};D=j,Y.handle.on("state",ee=>{ee==="starting"&&(j.attempt+=1)}),Y.handle.on("captured",ee=>{Promise.resolve().then(()=>V(j,ee))});let ie=Y.handle;return{get state(){return ie.state},on:(ee,oe)=>ie.on(ee,oe),start:ee=>ie.start(ee),retry:()=>ie.retry(),switchCamera:()=>ie.switchCamera(),destroy:()=>{j.alive=!1,D===j&&(D=null),ie.destroy()}}},z=async()=>{if(m)return null;try{let T=await g();return m?null:Re(T)}catch{return null}},X=async()=>{if(m)return!1;try{let T=await g();if(m||pe(T))return!1;let Y=Te(T,"liveness");return Et(Y)&&Y?.requiresMobile===!0&&!Ve()}catch{return!1}},S=async()=>{if(m)return!1;try{let T=await g();return!m&&T.returning===!0}catch{return!1}},_=async T=>{let Y=await r.selectMethod(T);m||p(Y)},K=null,$=()=>(K??(K=Promise.resolve().then(()=>(xA(),MA)).then(T=>{let Y=T.createPlanRunner({runtime:b,currentView:()=>u,ensureView:g,refreshView:C,ensureConsent:()=>I(),selectMethod:_,liveness:W,chainBusy:()=>H>0,destroyed:()=>m,sleep:a,isMobile:Ve,now:t.now??Date.now,keptFaceKey:()=>d,setView:p,baseCapture:t.capture,emitStep:j=>{m||c.emit("step",j)},emitResult:q,...t.document!==void 0?{documentInternals:t.document}:{},...t.portrait!==void 0?{portraitInternals:t.portrait}:{},livePhotoInternals:t.livePhoto});return l=Y,Y})),K);return{consent:()=>I(),startRegistry:M,methodChoice:z,selectMethod:_,mobileRequired:X,returning:S,liveness:W,run:async()=>{if(m)throw new Error("verification destroyed");return(await $()).run()},currentStep:()=>l?.current()??null,voiceClips:async()=>{if(m)return null;try{let T=await g();return m?null:T.voice??null}catch{return null}},on:(T,Y)=>c.on(T,Y),destroy:()=>{m=!0,h.abort(),l?.destroy(),D!==null&&(D.alive=!1,D.capture.handle.destroy(),D=null),c.clear()}}}Qo();function vA(e){return/^\d{10}$/.test(e)&&Number(e)%97===1}function RA(e){let t="";for(let n of e){let i=n.codePointAt(0)??0;i>=1632&&i<=1641?t+=String(i-1632):i>=1776&&i<=1785?t+=String(i-1776):n!==" "&&n!=="-"&&n!=="\xA0"&&(t+=n)}return t}ut();var Wn=["AD","AE","AF","AG","AI","AL","AM","AO","AQ","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BV","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT","GU","GW","GY","HK","HM","HN","HR","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PN","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TC","TD","TF","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","XK","YE","YT","ZA","ZM","ZW"];var Mo=["carte_identite","passport","residence_permit"];function xo(e,t){let n=e.byIssuer?.[t]??e.default;return Mo.filter(i=>n==="*"||n.includes(i))}function TA(e,t=Wn){return[...new Set([...t,...Object.keys(e.byIssuer??{})])].filter(i=>xo(e,i).length>0).sort()}function zn(e){if(e.acceptedDocuments)return e.acceptedDocuments;let t=e.acceptedDocumentTypes?.length?[...e.acceptedDocumentTypes]:["carte_identite","passport"];return{default:[],byIssuer:{MR:t}}}function _A(e){return/^[A-Z]{2}$/.test(e)?String.fromCodePoint(...[...e].map(t=>127462+t.charCodeAt(0)-65)):""}bt();var vo=["national_number","document_photo","national_eid"],jd=["national_number","document_photo"],Zd=new Set(["eid_not_enrolled","eid_unavailable","eid_locked"]),Xn="platform_unsupported",$d=new Set(["prefilled","user_entered","prefilled_or_entered"]),eg={phone_otp:"contact",email_otp:"contact",eid_auth:"identity",doc_ocr:"identity",nfc_chip:"identity",population_registry:"identity",liveness:"live_photo",portrait_icao:"live_photo",face_match:"live_photo"};function De(e){return e.section??eg[e.checkType]??null}function tg(e){let t={sessionId:e.sessionId,orgName:e.orgName,returning:e.returning===!0,consentRecorded:e.consentRecorded,expiresAt:e.expiresAt,sections:[]};for(let n of e.steps){let i=De(n);i!==null&&!t.sections.includes(i)&&t.sections.push(i)}return e.branding!==void 0&&(t.branding=e.branding),t}function ng(e){let t={attemptsRemaining:e.attemptsRemaining,attemptsExhausted:e.attemptsExhausted===!0};return e.reason!==void 0&&(t.reason=e.reason),t}function ig(e,t){let n=e.otpChoice;if(n===void 0||n.locked||n.selected===null)return;let i=t==="phone_otp"?"email":"phone";return n.options.includes(i)?i:void 0}function og(e,t,n,i){let o=t.checkType==="email_otp",r=(o?t.emailOtp:t.otp)??{},a=o?t.emailOtp?.emailSource:t.otp?.numberSource,s=a!==void 0&&$d.has(a)?a:o?"prefilled_or_entered":"user_entered",A=typeof r.sentToMasked=="string"&&r.sentToMasked.length>0,c=ig(e,o?"email_otp":"phone_otp"),l={key:t.checkType,context:n,section:De(t),phase:A?"verify":"send",canSwitch:c!==void 0,...i},d=o?{kind:"email_otp",...l,emailSource:s,needsEmail:s!=="prefilled"}:{kind:"phone_otp",...l,numberSource:s,needsPhone:s!=="prefilled",channels:(t.otp?.channels??[]).filter(m=>m==="whatsapp"||m==="sms")};return c!==void 0&&(d.switchChannel=c),A&&(d.sentToMasked=r.sentToMasked),!o&&t.otp?.channel!==void 0&&(d.channel=t.otp.channel),r.expiresAt!==void 0&&(d.codeExpiresAt=r.expiresAt),r.resendAvailableAt!==void 0&&(d.resendAvailableAt=r.resendAvailableAt),d}function rg(e,t,n,i){let o=e.nniBound===!0?"bound":t.nniFromDocument===!0?"document":"typed",r=o==="typed"&&t.state==="input_required"&&t.reason==="nni_recheck",a=t.reason==="nni_not_found"&&t.state==="input_required"&&!i.attemptsExhausted&&e.methodChoice?.available===!0&&e.methodChoice.options.includes("document_photo");return{kind:"registry",key:"registry",context:n,section:De(t),state:t.state==="input_required"?"input_required":"pending",source:o,recheck:r,canUseDocument:a,...i}}function ag(e,t,n,i){let o=[...t.acceptedSides??[]];return{kind:"document",key:"document",context:n,section:De(t),side:o.includes("recto")?"verso":"recto",acceptedSides:o,documents:zn(e),...i}}function sg(e){let t=e.steps.find(n=>n.checkType==="liveness");return t?.state==="passed"||t?.state==="review"}function LA(e,t,n,i,o){let r=t.icao?.report;return{kind:"portrait",key:`portrait:${o}`,context:n,section:De(t),phase:o,report:Array.isArray(r)?r:null,review:t.state==="review",tuning:e.capture?.icao??null,tuningVersion:e.capture?.tuningVersion??null,icao:Me(e),retakeOnly:o==="capture"&&t.state==="input_required"&&e.capture?.livePhoto?.oneCapture===!0&&sg(e),...i}}var Do={minLongSidePx:1280,jpegQuality:.95};function Ag(e,t){let n=e.capture?.livePhoto;if(n?.oneCapture!==!0)return null;let i=e.steps.find(r=>r.checkType==="portrait_icao"),o=n.still??Do;return{icao:t==="liveness"&&Me(e)!==null&&i!==void 0&&i.state==="pending"&&i.reason===void 0,still:{minLongSidePx:o.minLongSidePx??Do.minLongSidePx,jpegQuality:o.jpegQuality??Do.jpegQuality}}}function cg(e,t,n,i){let o=t.eid,r=De(t);if(o===void 0||o.challenge!=="app_code")return{kind:"unsupported",key:"unsupported:eid_auth",context:n,section:r,checkType:"eid_auth",reason:"update_required"};let a=e.methodChoice,s=a?.available===!0?a.options.find(l=>jd.includes(l)):void 0,A=s!==void 0&&t.state==="input_required"&&(t.reason!==void 0&&Zd.has(t.reason)||t.attemptsExhausted===!0||t.attemptsRemaining===0||t.reason==="eid_resend_limit"&&o.awaiting!=="code"),c={kind:"eid",key:"eid",context:n,section:r,provider:o.provider,providerName:o.providerName,country:o.country,challenge:"app_code",phase:o.awaiting==="code"?"code":"identifier",identifierBound:o.identifierBound===!0,canUseCamera:A,afterPass:o.afterPass==="continue"?"continue":"end",...i};return A&&(c.cameraMethod=s),o.expiresAt!==void 0&&(c.codeExpiresAt=o.expiresAt),o.resendAvailableAt!==void 0&&(c.resendAvailableAt=o.resendAvailableAt),o.resendsRemaining!==void 0&&(c.resendsRemaining=o.resendsRemaining),o.codeAttemptsRemaining!==void 0&&(c.codeAttemptsRemaining=o.codeAttemptsRemaining),c}function lg(e,t){if(t.checkType!=="face_match"||t.reason!==void 0)return null;let n=e.steps.find(i=>i.checkType==="portrait_icao");return n!==void 0&&(n.state==="passed"||n.state==="review")?n:null}function ug(e){return e.steps.some(t=>t.attemptsExhausted===!0)}function dg(e,t){let n=e.failureReason,i;n===Xn?i="platform_unsupported":e.status==="expired"?i="expired":e.status==="review_pending"?i="review":e.status==="completed"&&e.outcome==="approved"?i="approved":e.status==="completed"&&e.outcome==="review"?i="review":n==="device_cooldown"?i="cooldown":n!==void 0?i="policy_stop":ug(e)?i="attempts_exhausted":i="rejected";let o=i==="platform_unsupported"?{sessionId:e.sessionId,status:"unavailable"}:We(e,{autoRetry:!1}),r={kind:"result",key:"result",context:t,section:null,display:i,result:o};return n!==void 0&&(r.failureReason=n),e.retryAfter!==void 0&&(r.retryAfter=e.retryAfter),r}function gg(e,t){let n=e.identitySummary;if(n==null)return null;let i={kind:"identity_summary",key:"identity_summary",context:t,section:"identity",summaryKind:n.kind==="partial"?"partial":n.kind??"full",source:n.source,portraitAvailable:n.portrait?.available===!0,retakeAvailable:n.retakeAvailable===!0};for(let o of mg){let r=n[o];typeof r=="string"&&r!==""&&(i[o]=r)}return i}var mg=["fullName","birthDate","birthYear","nationality","documentType","documentNumberMasked","nniMasked","expiryDate","retakeTarget"];function FA(e,t={}){let n=tg(e);if(pe(e)||e.failureReason===Xn)return dg(e,n);let i=gg(e,n);if(i!==null)return i;let o=Re(e);if(o!==null){let c=o.options.filter(d=>vo.includes(d));if(c.length===0)return{kind:"unsupported",key:"unsupported:method",context:n,section:"identity",checkType:"method",reason:"platform_unsupported"};let l={kind:"method",key:"method",context:n,section:"identity",options:c};return c.includes("national_eid")&&o.nationalEid!==void 0&&(l.nationalEid=o.nationalEid),l}let r=Ie(e);if(r===void 0){let c=e.steps.find(l=>l.state==="processing");return{kind:"processing",key:"processing",context:n,section:c===void 0?null:De(c),stalled:!1}}let a=ng(r),s=r.checkType,A=De(r);switch(s){case"phone_otp":case"email_otp":{let c=e.otpChoice;return c!==void 0&&c.selected===null&&!c.locked?{kind:"contact_choice",key:"contact_choice",context:n,section:A,options:c.options.filter(l=>l==="phone"||l==="email"),selected:null,locked:!1}:og(e,r,n,a)}case"population_registry":return rg(e,r,n,a);case"eid_auth":return cg(e,r,n,a);case"doc_ocr":return ag(e,r,n,a);case"portrait_icao":return LA(e,r,n,a,"capture");case"liveness":case"face_match":{let c=lg(e,r);if(c!==null)return LA(e,c,n,a,"match");let l=r.requiresMobile===!0,d=Me(e);return l&&t.isMobile===!1?{kind:"mobile_required",key:"mobile_required",context:n,section:A,checkType:s}:{kind:"liveness",key:"biometric",context:n,section:A,mode:s==="face_match"?"selfie":"liveness",requiresMobile:l,instructions:d===null?"standard":"icao",icao:d,livePhoto:Ag(e,s),...a}}default:return{kind:"unsupported",key:`unsupported:${s}`,context:n,section:A,checkType:s,reason:s==="nfc_chip"?"platform_unsupported":"update_required"}}}var hg=Mo,pg=xo,fg=TA,Ig=zn,Cg=_A;var PA=()=>Promise.resolve().then(()=>(eo(),Bs));function NA(e){let t=null,n=null,i=!1,o=null,r=null,a=[],s=(c,l)=>{c.off=l.on(c.event,c.handler)},A=()=>(n??(n=PA().then(c=>{if(i)return null;let l=c.createDocumentCaptureInternal(e,{}).handle;for(let d of a)d.removed||s(d,l);return o!==null&&l.setSide(o),r!==null&&l.setGuide(r.guide),t=l,l})),n);return{get state(){return t?.state??"idle"},on:(c,l)=>{let d={event:c,handler:l,off:null,removed:!1};return a.push(d),t!==null&&s(d,t),()=>{d.removed=!0,d.off?.()}},start:async()=>{let c=await A();c!==null&&!i&&await c.start()},retry:()=>{t!==null?t.retry():A().then(c=>c?.start())},setSide:c=>{t!==null?t.setSide(c):o=c},shutter:()=>t?.shutter(),setTorch:c=>t?.setTorch(c),focusAt:(c,l)=>t?.focusAt(c,l),setGuide:c=>{t!==null?t.setGuide(c):r={guide:c}},destroy:()=>{i=!0,t?.destroy(),t=null,a.length=0}}}function GA(){PA().then(e=>e.warmDocumentCapture()).catch(()=>{})}function yg(e){return NA(e)}function Eg(){GA()}var OA=()=>Promise.resolve().then(()=>(Kn(),bo));function HA(e){let t=null,n=null,i=!1,o=[],r=(s,A)=>{s.off=A.on(s.event,s.handler)},a=()=>(n??(n=OA().then(s=>{if(i)return null;let A=s.createPortraitCaptureInternal(e).handle;for(let c of o)c.removed||r(c,A);return t=A,A})),n);return{get state(){return t?.state??"idle"},on:(s,A)=>{let c={event:s,handler:A,off:null,removed:!1};return o.push(c),t!==null&&r(c,t),()=>{c.removed=!0,c.off?.()}},start:async()=>{let s=await a();s!==null&&!i&&await s.start()},retry:()=>{t!==null?t.retry():a().then(s=>s?.start())},destroy:()=>{i=!0,t?.destroy(),t=null,o.length=0}}}function UA(){OA().then(e=>e.warmPortraitCapture()).catch(()=>{})}function bg(e){return HA(e)}function Bg(){UA()}var Ro=["session.completed","session.failed","session.review_pending","session.expired","session.cancelled"],Qg="sekyro-verify",Sg="width=480,height=720,noopener=false",wg=new Set(Ro);function kg(e){if(e===null||typeof e!="object")return!1;let t=e;return t.source==="sekyro"&&t.version===1&&typeof t.sessionId=="string"&&typeof t.event=="string"&&wg.has(t.event)}function Mg(e){let t=new URL(e.hostedUrl).origin,n=window.open(e.hostedUrl,Qg,Sg);if(!n)return{error:"popup_blocked"};let i=o=>{if(o.source!==n||o.origin!==t||!kg(o.data))return;let{source:r,version:a,event:s,sessionId:A}=o.data;e.onEvent({source:r,version:a,event:s,sessionId:A})};return window.addEventListener("message",i),{close(){window.removeEventListener("message",i),n.close()}}}function VA(e,t){return t.mode==="redirect"?(window.location.assign(e),{close(){}}):Mg({hostedUrl:e,onEvent:t.onEvent??(()=>{})})}st();ut();0&&(module.exports={DEFAULT_API_ORIGIN,DOCUMENT_TYPE_ORDER,HostedApiError,ISSUER_CODES,InvalidInputError,KNOWN_CODES,OtpInputError,PLATFORM_UNSUPPORTED,SEKYRO_EVENTS,WEB_IDENTITY_METHODS,acceptedIssuers,acceptedTypesFor,createDocumentCapture,createLivenessCapture,createPortraitCapture,createVerification,deriveStep,flagOf,getLivenessAssetsStatus,hasMultipleCameras,icaoPolicyOf,isKnownCode,isValidNni,normalizeNni,openHosted,preloadLivenessAssets,queryCameraPermission,releaseLivenessAssets,resolveAcceptedDocuments,sectionOf,subscribeCameraPermission,subscribeLivenessAssets,warmDocumentCapture,warmPortraitCapture});