@verified-network/verified-custody 0.2.4 → 0.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -2
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/style.css","../src/iosShim.ts","../src/pages/index.tsx","../src/services/store.tsx","../src/pages/ftu.tsx","../src/utils/constants.ts","../src/utils/helpers.tsx","../src/utils/config.ts","../src/pages/contact.tsx","../src/components/slider.tsx","../src/components/search.tsx","../src/components/overlays.tsx","../src/pages/otp.tsx","../src/pages/createPin.tsx","../src/services/contracts.ts","../src/components/success.tsx","../src/pages/addCosigners.tsx","../src/pages/enterPin.tsx"],"sourcesContent":["\nfunction injectStyle(css) {\n if (!css || typeof document === 'undefined') return\n\n const head = document.head || document.getElementsByTagName('head')[0]\n const style = document.createElement('style')\n style.type = 'text/css'\n \n if(head.firstChild) {\n head.insertBefore(style, head.firstChild)\n } else {\n head.appendChild(style)\n }\n\n if(style.styleSheet) {\n style.styleSheet.cssText = css\n } else {\n style.appendChild(document.createTextNode(css))\n }\n}\ninjectStyle(\"textarea:focus,input:focus{outline:none;border:none}input{appearance:textfield;-moz-appearance:textfield;outline:none;border:none;margin:0}input::placeholder{margin:0}input[type=password]::-ms-reveal{display:none}input[type=password]::-moz-password-toggle{display:none}input[type=password]::-webkit-contacts-auto-fill-button{display:none}input::-webkit-inner-spin-button,input::-webkit-outer-spin-button{-webkit-appearance:none}::-webkit-scrollbar{width:5px;height:4px}::-webkit-scrollbar-thumb{height:4px;width:5px;background-color:var(--Neutral-200, #d8d9df);border-radius:4px}::-webkit-scrollbar-thumb:hover{background-color:var(--Neutral-200, #d8d9df)}::-webkit-scrollbar-track{background:transparent;height:4px;width:5px;cursor:pointer}p{margin:0}.verified-custd-mdl-container{width:100%;height:100%;display:flex;justify-content:center;align-items:center;padding-top:20px;padding-bottom:20px;overflow-y:auto;overflow-x:hidden;position:relative}.verified-custd-mdl-startup-outter{width:100%;height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;overflow-y:auto;overflow-x:hidden;background:linear-gradient(180deg,#643fff,#381ab7)}.verified-custd-mdl-startup-outter-norm{width:100%;height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;overflow-y:auto;overflow-x:hidden;background:var(--common-white_states-main, #fff)}.verified-custd-mdl-startup{width:650px;height:fit-content;display:flex;justify-content:center;align-items:center;flex-direction:column;overflow-x:hidden;overflow-y:auto;padding-bottom:20px;border:1px solid #0F122E;border-radius:10px;position:relative}.verified-custd-mdl-loading-screen{border-radius:10px;min-height:100%;width:100%;flex-shrink:0;background:#0000004d;z-index:10;display:flex;justify-content:center;align-items:center;overflow:auto;bottom:-10px;top:0;position:absolute}.verified-custd-mdl-startup-icon-container{width:76.119%;display:flex;justify-content:center;align-items:center;position:relative;flex-direction:column;height:298px}.verified-custd-mdl-startup-icon-shadow{position:absolute;bottom:10px;right:70px;width:48.5%}.verified-custd-mdl-startup-text-container{display:inline-flex;flex-direction:column;align-items:flex-start;gap:12px;margin-right:20px;margin-left:20px}.verified-custd-mdl-startup-text-header{color:var(--Neutral-White-100, var(--common-white_states-main, #fff));font-family:Manrope;font-size:2.1rem;font-style:normal;font-weight:700;line-height:2.8125rem;margin:0}.verified-custd-mdl-startup-text-footer{color:var(--Neutral-White-100, var(--common-white_states-main, #fff));font-family:Roboto;font-size:.9rem;font-style:normal;font-weight:400;line-height:1.5rem;opacity:.8}.verified-custd-mdl-ftu-startup-button{display:inline-flex;padding:14px;justify-content:center;align-items:center;gap:var(--space-8px, 8px);border-radius:var(--space-8px, 8px);background:var(--primary-bitter-lemon-500, #cfe600);cursor:pointer;user-select:none;color:var(--Neutral-950, #0C0C0E);text-align:center;margin:20px;font-family:Roboto;font-size:16px;font-style:normal;font-weight:500;line-height:150%;outline:none;border:none}.verified-custd-mdl-startup-language{background:var(--common-white_states-main, #fff);height:100%;width:90%;max-width:700px}.verified-custd-mdl-startup-language-content-container{display:inline-flex;flex-direction:column;align-items:flex-start;gap:32px;width:100%}.verified-custd-mdl-st-language-content{display:flex;flex-direction:column;align-items:flex-start;gap:20px;align-self:stretch;width:100%}.verified-custd-mdl-st-language-text{color:var(--Neutral-950, #0c0c0e);font-family:Roboto;font-size:1.5rem;font-style:normal;font-weight:700;line-height:100%;align-self:stretch}.verified-custd-mdl-ms-search-content:hover{border-radius:var(--space-8px, 8px);border:1px solid var(--secondary-electric-violet-300, #9da3ff);background:var(--secondary-electric-violet-50, #ecefff)}.verified-custd-mdl-st-contact-input{display:flex;flex-direction:column;align-items:flex-start;gap:14px;width:100%}.verified-custd-mdl-st-contact-first-section{display:flex;width:150px;height:44px;padding-left:6px;align-items:center;border-radius:var(--space-8px, 8px);background:var(--Neutral-50, #f7f7f8);cursor:pointer;user-select:none}.verified-custd-mdl-st-contact-selection-icon{display:flex;justify-content:center;align-items:center;flex-shrink:0;border-radius:24px;cursor:pointer;user-select:none;overflow:hidden;width:28px;height:28px}.verified-custd-mdl-st-contact-selection-text{color:var(--Neutral-950, #0c0c0e);text-align:right;font-family:Roboto;font-size:.875rem;font-style:normal;font-weight:500;line-height:140%;width:40px;flex-shrink:0;cursor:pointer;user-select:none}.verified-custd-mdl-custom-blank-page{height:0}.verified-custd-mdl-startup-otp-text{display:flex;flex-direction:column;align-items:flex-start;gap:12px;align-self:stretch}.verified-custd-mdl-startup-otp-header-text{align-self:stretch;color:var(--Neutral-600, #5b5d6e);font-family:Roboto;font-size:.7rem;font-style:normal;font-weight:400;line-height:150%;max-width:100%;word-wrap:break-word}.verified-custd-mdl-otp-input-group{display:flex;align-items:flex-start;gap:var(--space-8px, 8px);width:100%}.verified-custd-mdl-otp-input{display:flex;padding:20px 12px;justify-content:center;align-items:center;gap:var(--space-8px, 8px);flex:1 0 0;align-self:stretch;border-radius:var(--space-8px, 8px);background:var(--Neutral-50, #f7f7f8);width:25%;color:var(--Neutral-950, #0C0C0E);text-align:center;font-family:Roboto;font-size:14px;font-style:normal;font-weight:500;line-height:140%}.verified-custd-mdl-otp-input-red{border-radius:8px;border:1px solid var(--Error-600, #E23636);background:var(--Neutral-50, #F7F7F8);display:flex;padding:20px 12px;justify-content:center;align-items:center;gap:var(--space-8px, 8px);flex:1 0 0;align-self:stretch;width:25%;color:var(--Neutral-950, #0C0C0E);text-align:center;font-family:Roboto;font-size:14px;font-style:normal;font-weight:500;line-height:140%}.verified-custd-mdl-otp-incorrect-text{color:var(--Error-600, #E23636);font-family:Roboto;font-size:12px;font-style:normal;font-weight:400;line-height:140%;max-width:200px;word-wrap:break-word}.verified-custd-mdl-otp-timer{display:flex;justify-content:space-between;align-items:center;align-self:stretch}.verified-custd-mdl-otp-timer-text{color:var(--Neutral-950, #0c0c0e);font-family:Roboto;font-size:.75rem;font-style:normal;font-weight:500;line-height:140%}.verified-custd-mdl-otp-timer-text-red{color:var(--Error-600, #e23636);font-family:Roboto;font-size:.75rem;font-style:normal;font-weight:500;line-height:140%}.verified-custd-mdl-otp-resend-text{color:var(--Neutral-300, #b6b7c3);font-family:Roboto;font-size:.75rem;font-style:normal;font-weight:500;line-height:140%}.verified-custd-mdl-otp-resend-text-active{color:var(--secondary-electric-violet-600, #603ff4);font-family:Roboto;font-size:.75rem;font-style:normal;font-weight:500;line-height:140%;cursor:pointer;user-select:none}.verified-custd-mdl-st-otp-icon{cursor:pointer;user-select:none}.verified-custd-mdl-startup-button{display:inline-flex;padding:14px;justify-content:center;align-items:center;gap:var(--space-8px, 8px);border-radius:var(--space-8px, 8px);background:var(--primary-bitter-lemon-500, #cfe600);cursor:pointer;user-select:none;color:var(--Neutral-950, #0C0C0E);text-align:center;opacity:0verified-custd-mdl-5;font-family:Roboto;font-size:16px;font-style:normal;font-weight:500;line-height:150%;outline:none;border:none;width:90%;max-width:500px}.verified-custd-mdl-startup-button-active{display:inline-flex;padding:14px;justify-content:center;align-items:center;gap:var(--space-8px, 8px);border-radius:var(--space-8px, 8px);background:var(--primary-bitter-lemon-500, #cfe600);cursor:pointer;user-select:none;color:var(--Neutral-950, #0C0C0E);text-align:center;font-family:Roboto;font-size:16px;font-style:normal;font-weight:500;line-height:150%;outline:none;border:none;width:90%;max-width:500px}.verified-custd-mdl-otp-input[type=password]{font-weight:900}.verified-custd-mdl-startup-button-click{border-radius:var(--space-8px, 8px);border:1px solid var(--Neutral-950, #0c0c0e);cursor:pointer;user-select:none;display:inline-flex;padding:14px;justify-content:center;align-items:center;gap:var(--space-8px, 8px);color:var(--Neutral-950, #0C0C0E);text-align:center;font-family:Roboto;font-size:16px;font-style:normal;font-weight:500;line-height:150%;outline:none;width:90%;background:transparent;max-width:500px}.verified-custd-mdl-pin-input-container-text{color:var(--Neutral-600, #5B5D6E);font-family:Roboto;font-size:14px;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-st-button-text{color:var(--Neutral-950, #0c0c0e);text-align:center;font-family:Roboto;font-size:1rem;font-style:normal;font-weight:500;line-height:150%}.verified-custd-mdl-startup-slider{display:flex;width:335px;align-items:center;gap:12px;border-radius:4px;width:100%}.verified-custd-mdl-startup-slider-line{height:4px;flex-shrink:0;border-radius:var(--space-8px, 8px);background:var(--Neutral-100, #eeeef0)}.verified-custd-mdl-startup-slider-line-active{height:4px;flex:1 0 0;border-radius:var(--space-8px, 8px);background:var(--secondary-electric-violet-600, #603ff4)}.verified-custd-mdl-startup-contact{display:inline-flex;flex-direction:column;align-items:flex-start;gap:20px;width:100%}.verified-custd-mdl-startup-contact-content{display:flex;flex-direction:column;align-items:flex-start;gap:16px;align-self:stretch}.verified-custd-mdl-startup-contact-text{color:var(--Neutral-950, #0c0c0e);font-family:Roboto;font-size:1rem;font-style:normal;font-weight:700;line-height:100%;align-self:stretch;max-width:100%;word-wrap:break-word}.verified-custd-mdl-st-contact-content-container{display:flex;align-items:flex-start;gap:var(--space-8px, 8px);width:100%}.verified-custd-mdl-st-contact-dropdown{cursor:pointer;user-select:none}.verified-custd-mdl-st-contact-second-section{display:flex;width:100%;height:44px;padding-left:6px;align-items:center;border-radius:var(--space-8px, 8px);background:var(--Neutral-50, #f7f7f8);color:var(--Neutral-950, #0C0C0E);font-family:Roboto;font-size:14px;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-st-contact-second-section::placeholder{color:var(--Neutral-300, #b6b7c3);font-family:Roboto;font-size:.875rem;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-startup-contact-footer{display:inline-flex;flex-direction:column;align-items:center;gap:12px;width:100%;margin-top:16px}.verified-custd-mdl-st-contact-footer-first-section{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;width:100%}.verified-custd-mdl-st-contact-footer-second-section{display:flex;align-items:center;justify-content:center;gap:4px;width:100%}.verified-custd-mdl-st-contact-input-error{display:flex;align-items:center;gap:4px}.verified-custd-mdl-input-error-text{color:var(--Error-600, #e23636);font-family:Roboto;font-size:.75rem;font-style:normal;font-weight:400;line-height:140%;margin:0}.verified-custd-mdl-mobille-startup-search-box-container{display:flex;flex-direction:column;align-items:flex-start;gap:6px;width:100%}.verified-custd-mdl-mobile-startup-search-box{display:flex;height:40px;align-items:center;gap:6px;border-radius:6px;border:1px solid var(--Neutral-200, #d8d9df);background:var(--Neutral-50, #f7f7f8);width:100%;overflow:hidden}.verified-custd-mdl-ms-search-box-content{height:100%;width:100%;background:transparent;color:var(--Neutral-950, #0c0c0e);font-family:Roboto;font-size:.875rem;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-ms-search-box-content::placeholder{color:var(--Neutral-400, #8f91a1);font-family:Roboto;font-size:.875rem;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-mobile-startup-search-content{display:flex;width:100%;flex-direction:column;align-items:flex-start;gap:16px;border-radius:var(--space-8px, 8px);border:1px solid var(--Neutral-50, #f7f7f8);background:var(--common-white_states-main, #fff)}.verified-custd-mdl-ms-search-content-container{display:flex;flex-direction:column;align-items:flex-start;align-self:stretch;overflow-x:hidden;overflow-y:auto}.verified-custd-mdl-ms-search-content{display:flex;padding:var(--space-8px, 8px);align-items:center;gap:19px;align-self:stretch;cursor:pointer;user-select:none;height:34px;margin-bottom:5px;border:1px solid transparent}.verified-custd-mdl-ms-search-content-active{display:flex;padding:var(--space-8px, 8px);justify-content:space-between;align-items:center;align-self:stretch;border-radius:6px;background:var(--Success-50, #f1f8ed);cursor:pointer;user-select:none}.verified-custd-mdl-ms-search-content-text-container{display:flex;align-items:center;gap:19px}.verified-custd-mdl-ms-search-content-icon{display:flex;width:28px;height:28px;justify-content:center;align-items:center;border-radius:24px;border:1px solid rgba(0,0,0,.05);background:var(--common-white_states-main, #fff);box-shadow:0 1px 4px #eee}.verified-custd-mdl-ms-search-content-text{color:var(--Neutral-950, #0c0c0e);font-family:Roboto;font-size:.775rem;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-terms-and-condition{color:var(--Neutral-400, #8f91a1);font-family:Roboto;font-size:.6rem;font-style:normal;font-weight:400;line-height:140%}.verified-custd-mdl-privacy{display:flex;align-items:center;gap:4px;margin-bottom:20px}.verified-custd-mdl-privacy-text{color:var(--Neutral-800, #40414c);font-family:Roboto;font-size:.5rem;font-style:normal;font-weight:400;line-height:1.25rem;letter-spacing:.01563rem}.verified-custd-mdl-p-p-payment-portal-amount-info-separator{display:flex;align-items:center;gap:6px;align-self:stretch;justify-content:center}.verified-custd-mdl-p-p-payment-portal-line{width:50%;height:1px;background:#eeeef0}.verified-custd-mdl-p-payment-portal-separator-text{color:var(--Neutral-700, #4a4a5a);font-family:Roboto;font-size:.75rem;font-style:normal;font-weight:400;line-height:140%;opacity:.6}.verified-custd-mdl-startup-otp-footer{display:flex;align-items:center;gap:4px;width:100%;overflow:hidden}.verified-custd-mdl-startup-otp-footer-text{color:var(--Neutral-950, #0c0c0e);font-family:Manrope;font-size:.8rem;font-style:normal;font-weight:600;line-height:100%;max-width:100%;word-wrap:break-word}.verified-custd-mdl-otp-input-container{display:flex;flex-direction:column;align-items:flex-start;gap:6px;width:100%}.verified-custd-mdl-general-web-toast-error{display:flex;align-items:center;gap:12px}.verified-custd-mdl-general-web-toast-error-container{display:flex;width:100%;flex-direction:column;align-items:flex-start;gap:10px;padding:6px}.verified-custd-mdl-general-web-toast-error-title{margin:0;color:var(--Neutral-950, #0c0c0e);font-family:Manrope;font-size:1rem;font-style:normal;font-weight:600;line-height:100%;align-self:stretch}.verified-custd-mdl-general-web-toast-error-label{align-self:stretch;color:var(--Neutral-400, #8f91a1);font-family:Roboto;font-size:.875rem;font-style:normal;font-weight:400;line-height:150%;margin:0}.verified-custd-mdl-general-web-toast-success{display:flex;padding:12px;justify-content:space-between;align-items:center;align-self:stretch;border-radius:8px;background:var(--Success-50, #f1f8ed);width:100%;height:55px;max-height:55px}.verified-custd-mdl-general-web-toast-success-cont{display:flex;align-items:center;gap:12px;width:100%}.verified-custd-mdl-general-web-toast-success-container{display:flex;width:100%;flex-direction:column;align-items:flex-start;gap:10px;padding:6px}.verified-custd-mdl-general-web-toast-success-link{display:flex;align-items:center}.verified-custd-mdl-general-web-toast-success-link-text{color:var(--secondary-electric-violet-600, #603ff4);font-family:Roboto;font-size:.875rem;font-style:normal;font-weight:700;line-height:150%;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font}.verified-custd-mdl-success-popup-content-container{display:flex;width:28.4375%;padding:24px;flex-direction:column;align-items:center;background:var(--common-white_states-main, #fff);box-shadow:0 4px 19px #0000001f;height:100%}.verified-custd-mdl-success-popup-content{display:flex;width:100%;flex-direction:column;align-items:center;gap:32px}.verified-custd-mdl-success-popup-content-text{display:flex;flex-direction:column;align-items:center;gap:12px;align-self:stretch}.verified-custd-mdl-success-popup-content-text-header{color:var(--Neutral-950, #0c0c0e);text-align:center;font-family:Manrope;font-size:1.5rem;font-style:normal;font-weight:800;line-height:140%}.verified-custd-mdl-success-popup-content-text-footer{color:var(--Neutral-600, #5b5d6e);text-align:center;font-family:Roboto;font-size:1rem;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-add-cosigner-body-icon{width:90%;max-width:90%;max-height:250px;height:250px}.verified-custd-mdl-add-cosigner-body{display:inline-flex;padding:10px;flex-direction:column;align-items:flex-start;gap:12px;border-radius:8px;background:var(--secondary-electric-violet-50, #ECEFFF)}.verified-custd-mdl-add-cosigner-body-text-cont{display:flex;align-items:center;gap:10px;width:100%}.verified-custd-mdl-add-cosigner-body-text-icon{display:flex;padding:8px;align-items:center;gap:10px;border-radius:24px;background:var(--secondary-electric-violet-200, #C2C7FF);overflow:hidden;justify-content:center;width:20px;height:20px}.verified-custd-mdl-add-cosigner-body-text-label{width:76.1%;color:var(--Neutral-600, #5B5D6E);font-family:Roboto;font-size:10px;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-add-cosigner-body-text-label-bold{color:var(--Neutral-950, #0C0C0E);font-family:Roboto;font-size:10px;font-style:normal;font-weight:500;line-height:140%}.verified-custd-mdl-add-cosigner-buttons-cont{display:inline-flex;padding:10px;align-items:flex-start;gap:10px;background:transparent;display:flex;justify-content:space-between}.verified-custd-mdl-add-cosigner-button-neut{width:45%;display:flex;padding:14px;justify-content:center;align-items:center;gap:8px;background:transparent;border-radius:8px;border:1px solid var(--Neutral-950, #0C0C0E);color:var(--Neutral-950, #0C0C0E);text-align:center;font-family:Roboto;font-size:12px;font-style:normal;font-weight:500;line-height:150%;cursor:pointer}.verified-custd-mdl-add-cosigner-button-action{width:45%;display:flex;padding:14px;justify-content:center;align-items:center;gap:8px;border-radius:8px;background:var(--primary-bitter-lemon-500, #CFE600);border:none;color:var(--Neutral-950, #0C0C0E);text-align:center;font-family:Roboto;font-size:12px;font-style:normal;font-weight:500;line-height:150%;cursor:pointer}.verified-custd-mdl-add-cosigner-more-body{display:inline-flex;padding:15px;flex-direction:column;align-items:flex-start;gap:12px;border-radius:8px;background:var(--secondary-electric-violet-50, #ECEFFF)}.verified-custd-mdl-add-cosigner-more-header-cont{display:flex;flex-direction:column;align-items:flex-start;gap:32px}.verified-custd-mdl-add-cosigner-more-title-cont{display:flex;flex-direction:column;align-items:flex-start;gap:16px;align-self:stretch}.verified-custd-mdl-add-cosigner-header-text{align-self:stretch;color:var(--Neutral-600, #5B5D6E);font-family:Roboto;font-size:12px;font-style:normal;font-weight:400;line-height:150%;margin:0}.verified-custd-mdl-add-cosigner-more-title{color:var(--Neutral-950, #0C0C0E);font-family:Manrope;font-size:18px;font-style:normal;font-weight:700;line-height:120%;margin:0}.verified-custd-mdl-add-cosigner-more-label{color:var(--Neutral-700, #4A4A5A);font-family:Roboto;font-size:14px;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-add-cosigner-more-label-link{align-self:stretch;color:var(--secondary-electric-violet-700, #4E2BD7);font-family:Roboto;font-size:12px;font-style:normal;font-weight:500;line-height:150%;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font;cursor:pointer;margin:0}.verified-custd-mdl-add-cosigner-header-info-cont{display:flex;padding:10px;flex-direction:column;align-items:flex-start;gap:12px;align-self:stretch;border-radius:8px;background:var(--Accent-100, #FFF9C1)}.verified-custd-mdl-add-cosigner-header-info-text{color:var(--Accent-800, #89490A);font-family:Roboto;font-size:10px;font-style:normal;font-weight:500;line-height:150%}.verified-custd-mdl-add-cosigner-header-info-text-bold{color:var(--Accent-800, #89490A);font-family:Roboto;font-size:10px;font-style:normal;font-weight:700;line-height:140%}.verified-custd-mdl-add-cosigner-step2-body{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin-top:20px}.verified-custd-mdl-add-cosigner-step2-body-header{display:flex;width:100%;justify-content:space-between;align-items:center}.verified-custd-mdl-add-cosigner-step2-body-header-first-text{color:var(--Neutral-950, #0C0C0E);text-align:right;font-family:Roboto;font-size:.8rem;font-style:normal;font-weight:500;line-height:150%}.verified-custd-mdl-add-cosigner-step2-body-header-second-text{color:var(--Neutral-950, #0C0C0E);text-align:right;font-family:Roboto;font-size:12px;font-style:normal;font-weight:500;line-height:140%}.verified-custd-mdl-add-cosigner-step2-body-content{display:flex;flex-direction:column;align-items:flex-start;gap:16px;width:100%}.verified-custd-mdl-add-cosigner-step2-body-content-header{display:flex;padding-top:14px;justify-content:center;align-items:center;position:relative;width:100%;flex-direction:column}.verified-custd-mdl-add-cosigner-step2-body-content-header-cont{display:flex;width:100%;padding:12px;flex-direction:column;align-items:flex-start;gap:16px}.verified-custd-mdl-add-cosigner-step2-body-content-header-label{display:flex;padding:4px 6px;align-items:flex-start;gap:10px;position:absolute;left:12px;top:-14px;border-radius:6px;background:var(--secondary-electric-violet-100, #DDE1FF)}.verified-custd-mdl-add-cosigner-step2-body-content-header-label-text{color:var(--secondary-electric-violet-900, #362689);font-family:Roboto;font-size:10px;font-style:normal;font-weight:500;line-height:140%;margin:0}.verified-custd-mdl-add-cosigner-step2-body-content-header-body{justify-content:space-between;align-self:stretch;border-radius:8px;border:1px solid var(--Neutral-100, #EEEEF0);background:var(--Neutral-50, #F7F7F8);position:relative;display:flex;padding:12px;align-items:flex-start;gap:16px}.verified-custd-mdl-a-c-2-b-content-header-body-header-cont{display:flex;align-items:center;gap:12px}.verified-custd-mdl-a-c-2-b-content-header-body-header{display:flex;flex-direction:column;align-items:flex-start;gap:6px}.verified-custd-mdl-a-c-2-b-content-header-body-title{color:var(--Neutral-950, #0C0C0E);font-family:Roboto;font-size:16px;font-style:normal;font-weight:500;line-height:150%;margin:0;max-width:150px;word-wrap:break-word;overflow-wrap:break-word}.verified-custd-mdl-a-c-2-b-content-header-body-label{color:var(--Neutral-400, #8F91A1);font-family:Roboto;font-size:12px;font-style:normal;font-weight:500;line-height:140%;margin:0;max-width:150px;word-wrap:break-word;overflow-wrap:break-word}.verified-custd-mdl-a-c-2-b-content-header-body-button{display:flex;padding:5.5px 8px;justify-content:center;align-items:center;gap:10px;border-radius:6px;border:1px solid var(--secondary-electric-violet-600, #603FF4);background:var(--secondary-electric-violet-600, #603FF4);color:var(--secondary-electric-violet-50, #ECEFFF);text-align:right;font-family:Roboto;font-size:14px;font-style:normal;font-weight:500;line-height:140%}.verified-custd-mdl-add-cosigner-step2-body-content-footer{display:flex;align-items:center;gap:4px;cursor:pointer}.verified-custd-mdl-add-cosigner-step2-body-content-footer-text{color:var(--secondary-electric-violet-600, #603FF4);text-align:right;font-family:Roboto;font-size:14px;font-style:normal;font-weight:500;line-height:150%}.verified-custd-mdl-add-cosigner-step2-add-more-body{display:flex;padding:15px;flex-direction:column;align-items:flex-start;gap:16px;border-radius:8px;border:1px solid var(--Neutral-200, #D8D9DF);min-width:90%;margin-bottom:20px;width:100%}.verified-custd-mdl-add-cosigner-step2-add-more-first{display:flex;justify-content:space-between;align-items:center;align-self:stretch;width:100%}.verified-custd-mdl-add-cosigner-step2-add-more-first-header{display:flex;align-items:flex-end;gap:5px}.verified-custd-mdl-add-cosigner-step2-add-more-first-header-text{color:var(--Neutral-950, #0C0C0E);font-family:Roboto;font-size:.7rem;font-style:normal;font-weight:500;line-height:150%}.verified-custd-mdl-add-cosigner-step2-add-more-first-footer{display:flex;padding:4px 6px;align-items:flex-start;gap:10px;border-radius:6px;background:var(--secondary-electric-violet-100, #DDE1FF)}.verified-custd-mdl-add-cosigner-step2-add-more-first-footer-text{color:var(--secondary-electric-violet-900, #362689);font-family:Roboto;font-size:10px;font-style:normal;font-weight:500;line-height:140%;margin:0}.verified-custd-mdl-add-cosigner-step2-add-more-second{display:flex;flex-direction:column;align-items:flex-start;gap:4px;width:100%}.verified-custd-mdl-add-cosigner-step2-add-more-second-input{display:flex;padding:12px;align-items:center;gap:182px;align-self:stretch;border-radius:8px;background:var(--Neutral-50, #F7F7F8);color:var(--Neutral-950, #0C0C0E);font-family:Roboto;font-size:12px;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-add-cosigner-step2-add-more-third{display:flex;align-items:flex-start;gap:24px;width:100%}.verified-custd-mdl-add-cosigner-step2-add-more-third-cont{display:flex;align-items:center;gap:4px}.verified-custd-mdl-add-cosigner-step2-add-more-third-cont-text{color:var(--Neutral-900, #383842);font-family:Roboto;font-size:13px;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-add-cosigner-step2-add-more-buttons{display:flex;align-items:flex-start;gap:16px;align-self:stretch;width:100%;background:transparent}.verified-custd-mdl-add-cosigner-step2-add-more-buttons-neut{width:50%;display:flex;padding:7.5px 12px;justify-content:center;align-items:center;gap:10px;flex:1 0 0;border-radius:8px;border:1px solid var(--secondary-electric-violet-600, #603FF4);color:var(--secondary-electric-violet-600, #603FF4);text-align:right;font-family:Roboto;font-size:14px;font-style:normal;font-weight:500;line-height:140%;background:transparent;cursor:pointer}.verified-custd-mdl-add-cosigner-step2-add-more-buttons-action{width:50%;display:flex;padding:6px 8px;justify-content:center;align-items:center;gap:10px;flex:1 0 0;align-self:stretch;border-radius:8px;border:1px solid var(--secondary-electric-violet-600, #603FF4);background:var(--secondary-electric-violet-600, #603FF4);color:var(--secondary-electric-violet-50, #ECEFFF);text-align:right;font-family:Roboto;font-size:14px;font-style:normal;font-weight:500;line-height:140%;cursor:pointer}.verified-custd-mdl-add-cosigner-step2-add-more-second-input::placeholder{color:var(--Neutral-300, #B6B7C3);font-family:Roboto;font-size:12px;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-add-cosigner-confirm-body-content{display:flex;padding-top:20px;padding-bottom:20px;flex-direction:column;justify-content:flex-start;align-items:center;gap:61px;border-radius:8px 8px 0 0;background:var(--Neutral-White-100, #FFF);width:100%;max-height:62.7%}.verified-custd-mdl-add-cosigner-confirm-body-cont{display:flex;flex-direction:column;align-items:flex-start;gap:16px;width:90%}.verified-custd-mdl-add-cosigner-confirm-body-header{display:flex;flex-direction:column;align-items:center;gap:16px}.verified-custd-mdl-add-cosigner-confirm-body-title{color:var(--Neutral-950, #0C0C0E);font-family:Manrope;font-size:16px;font-style:normal;font-weight:700;line-height:150%;margin:0}.verified-custd-mdl-add-cosigner-confirm-body-label{color:var(--Neutral-600, #5B5D6E);font-family:Roboto;font-size:12px;font-style:normal;font-weight:400;line-height:150%;margin:0}.verified-custd-mdl-add-cosigner-confirm-body-footer{display:flex;width:90%;padding:15px 15px 5px;flex-direction:column;align-items:flex-start;gap:5px;border-radius:8px;border:1px solid var(--Neutral-100, #EEEEF0);background:var(--Neutral-White-100, #FFF)}.verified-custd-mdl-add-cosigner-confirm-body-footer-ind-cont{width:100%;flex-direction:row;background:transparent;display:flex;justify-content:space-between;align-items:center;margin-bottom:3px}.verified-custd-mdl-add-cosigner-confirm-body-footer-ind{display:flex;flex-direction:column;align-items:center;gap:-6px;border-radius:2px}.verified-custd-mdl-add-cosigner-confirm-body-footer-ind-text-cont{display:flex;padding:4px 12px;justify-content:center;align-items:center;gap:10px;border-radius:6px;background:var(--secondary-electric-violet-600, #603FF4)}.verified-custd-mdl-add-cosigner-confirm-body-footer-ind-text{color:var(--Neutral-White-100, #FFF);text-align:center;font-family:Roboto;font-size:12px;font-style:normal;font-weight:500;line-height:140%;margin:0}.verified-custd-mdl-add-cosigner-confirm-body-footer-label-cont{width:100%;height:51px}.verified-custd-mdl-add-cosigner-confirm-body-footer-label-slider-cont{width:98%;height:16px;flex-shrink:0}.verified-custd-mdl-add-cosigner-confirm-body-footer-label-slider{width:100%;height:5px;flex-shrink:0;border-radius:10px;background:var(--Neutral-100, #EEEEF0)}.verified-custd-mdl-add-cosigner-confirm-body-footer-label-slider-ind{height:5px;flex-shrink:0;border-radius:10px;background:var(--secondary-electric-violet-600, #603FF4);position:relative}.verified-custd-mdl-add-cosigner-confirm-body-footer-label-slider-icon{flex-shrink:0;position:absolute;top:-5px;right:0}.verified-custd-mdl-add-cosigner-confirm-body-footer-label-text-cont{display:flex;width:100%;padding:10px 0;justify-content:space-between;align-items:center}.verified-custd-mdl-add-cosigner-confirm-body-footer-label-text{color:var(--Neutral-950, #0C0C0E);font-family:Roboto;font-size:12px;font-style:normal;font-weight:500;line-height:140%;margin:0;cursor:pointer}.verified-custd-mdl-a-c-2-b-content-header-body-header-icons{display:flex;justify-content:flex-end;align-items:center;gap:16px;margin-top:10px}.verified-custd-mdl-add-cosigner-step2-body-content-footer-dis{display:flex;align-items:center;gap:4px;margin-bottom:18px}.verified-custd-mdl-add-cosigner-step2-body-content-footer-text-dis{color:var(--Neutral-300, #B6B7C3);text-align:right;font-family:Roboto;font-size:14px;font-style:normal;font-weight:500;line-height:150%}.verified-custd-mdl-startup-contact-content-heder-cont{width:100%;display:flex;justify-content:space-between;flex-direction:row}.verified-custd-mdl-add-cosigner-confirm-body-content-outter{background:#0006;z-index:5;position:absolute;width:100%;bottom:0;right:0;left:0;height:100%;display:flex;flex-direction:column-reverse}.verified-custd-mdl-portfolio-page-content-header-button{display:flex;padding:6px 12px;align-items:center;gap:4px;border-radius:32px;background:var(--secondary-electric-violet-900, #362689);cursor:pointer;color:var(--Neutral-White-100, var(--common-white_states-main, #fff));border:none;width:fit-content;max-width:150px;font-family:Roboto;font-size:.65rem;font-style:normal;font-weight:400;line-height:140%;word-wrap:break-word;height:30px}.verified-custd-mdl-portfolio-page-content-header-button-cont{width:fit-content;height:fit-content;display:flex;flex-direction:column;gap:4px;justify-content:flex-start;position:relative}.verified-custd-mdl-portfolio-page-content-header-button-body{height:fit-content;width:fit-content;display:flex;flex-direction:column;gap:4px;border:none;border-radius:10px;background:var(--Neutral-50, #f7f7f8);padding:10px;position:absolute;top:33px;right:0}.verified-custd-mdl-portfolio-page-content-header-button-body-cont{background:none;cursor:pointer;border:1px solid transparent;padding:5px}.verified-custd-mdl-portfolio-page-content-header-button-body-cont:hover{border:1px solid #362689;background:transparent}.verified-custd-mdl-portfolio-page-content-header-button-body-text{width:110px;font-family:Roboto;font-size:.65rem;font-style:normal;font-weight:400;line-height:140%;word-wrap:break-word}\\n\");","if (typeof chrome === \"undefined\") {\r\n (window as any).chrome = {};\r\n}\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { VaultContextProvider } from \"../services/store\";\r\nimport { VerifiedCustodyProps, VerifiedWalletVault } from \"../utils/types\";\r\nimport FTUPage from \"./ftu\";\r\nimport EnterPinPage from \"./enterPin\";\r\nimport { hashTheString, loadAllGoogleFonts } from \"../utils/helpers\";\r\nimport { actionTexts, imageAssets } from \"../utils/constants\";\r\nimport { motion } from \"framer-motion\";\r\n\r\nconst VerifiedCustody = (props: VerifiedCustodyProps) => {\r\n const [fontsLoaded, setFontsLoaded] = useState<boolean>(true);\r\n\r\n const [isOnboard, setisOnboard] = useState<boolean | null>(null);\r\n\r\n const [vaultData, setVaultData] = useState<VerifiedWalletVault>({});\r\n\r\n const [isLoading, setIsLoading] = useState<boolean>(false);\r\n\r\n useEffect(() => {\r\n const PreloadGoogleFonts = () => {\r\n const isFontsLoaded = loadAllGoogleFonts(document);\r\n setFontsLoaded(isFontsLoaded);\r\n };\r\n PreloadGoogleFonts();\r\n }, []);\r\n\r\n useEffect(() => {\r\n const checkUserOnboardingStatus = () => {\r\n if (chrome?.storage?.local) {\r\n chrome.storage.local.get(\"myVault\", (res: any) => {\r\n // Existing user\r\n if (res.myVault && JSON.parse(res.myVault)?.vaultId) {\r\n setVaultData(JSON.parse(res.myVault));\r\n setisOnboard(true);\r\n }\r\n //FTU(First Time User)\r\n else setisOnboard(false);\r\n });\r\n } else if (!chrome?.storage?.local && localStorage) {\r\n const myVault = JSON.parse(localStorage.getItem(\"myVault\"));\r\n if (myVault && myVault?.vaultId) {\r\n setVaultData(myVault);\r\n setisOnboard(true);\r\n } else setisOnboard(false);\r\n } else {\r\n setisOnboard(false);\r\n }\r\n };\r\n\r\n checkUserOnboardingStatus();\r\n }, []);\r\n\r\n return (\r\n <React.Fragment>\r\n {fontsLoaded && (\r\n <VaultContextProvider>\r\n <div className=\"verified-custd-mdl-container\">\r\n {/* default blank page to capture delay??? */}\r\n {isOnboard === null && props.delayPageElement && (\r\n <React.Fragment>{props.delayPageElement} </React.Fragment>\r\n )}\r\n {/* default blank screen to capture delay??? */}\r\n {isOnboard === null && !props.delayPageElement && (\r\n <div\r\n style={\r\n props.delayPageStyle\r\n ? props.delayPageStyle\r\n : {\r\n width: \"100%\",\r\n height: \"100%\",\r\n background: \"trasparent\",\r\n border: \"none\",\r\n }\r\n }\r\n >\r\n {\" \"}\r\n </div>\r\n )}\r\n {isLoading && (\r\n <div\r\n style={{ height: \"100vh\" }} //whole page length ???\r\n className=\"verified-custd-mdl-loading-screen\"\r\n >\r\n <motion.img\r\n height=\"50px\"\r\n width=\"50px\"\r\n src={imageAssets.loadingIcon}\r\n alt=\"Loading...\"\r\n animate={{\r\n rotate: 360,\r\n scale: [1, 1.5, 1],\r\n }}\r\n transition={{\r\n duration: 2,\r\n repeat: Infinity,\r\n ease: \"linear\",\r\n }}\r\n />\r\n </div>\r\n )}\r\n {isOnboard !== null && (\r\n <React.Fragment>\r\n {/* first time users */}\r\n {!isOnboard && (\r\n <FTUPage\r\n fontsLoaded={fontsLoaded}\r\n helperFunctions={props.helperFunctions}\r\n popupView={props.popupView}\r\n action={props.action}\r\n vaultData={\r\n props.reqVaultData\r\n ? {\r\n vaultId: decodeURIComponent(\r\n props.reqVaultData?.vId ||\r\n props.reqVaultData?.vaultId\r\n ),\r\n hashedVaultId: hashTheString(\r\n decodeURIComponent(\r\n props.reqVaultData?.vId ||\r\n props.reqVaultData?.vaultId\r\n )\r\n ),\r\n hashedVaultPin: decodeURIComponent(\r\n props.reqVaultData?.vPh ||\r\n props.reqVaultData?.hashedVaultPin\r\n ),\r\n coSignerId: decodeURIComponent(\r\n props.reqVaultData?.cId\r\n ),\r\n }\r\n : null\r\n }\r\n txData={\r\n props.txData\r\n ? Object.keys(props.txData)?.map((ky) => {\r\n props.txData[ky] = decodeURIComponent(\r\n props.txData[ky]\r\n );\r\n return props.txData;\r\n })[Object.keys(props.txData)?.length - 1]\r\n : null\r\n }\r\n showLogoPage={props.showLogoPage}\r\n logoPageElement={props.logoPageElement}\r\n logoTimeoutTime={props.logoTimeoutTime}\r\n defaultCountry={props.defaultCountry}\r\n setisOnboard={setisOnboard}\r\n setIsLoading={setIsLoading}\r\n />\r\n )}\r\n\r\n {/* existing users */}\r\n {isOnboard && (\r\n <EnterPinPage\r\n fontsLoaded={fontsLoaded}\r\n setisOnboard={setisOnboard}\r\n vaultId={vaultData?.vaultId}\r\n hashedVaultId={vaultData?.hashedVaultId}\r\n encrptedPk={vaultData?.pk}\r\n vaultAddress={vaultData?.address}\r\n vaultChannel={vaultData?.channel}\r\n origin={props.origin}\r\n title={props.title}\r\n actionText={props.actionText || actionTexts[props.action]}\r\n setIsLoading={setIsLoading}\r\n newChainId={Number(props.chainId)}\r\n action={props.action}\r\n reqVaultData={\r\n props.reqVaultData\r\n ? {\r\n vaultId: decodeURIComponent(\r\n props.reqVaultData?.vId ||\r\n props.reqVaultData?.vaultId\r\n ),\r\n hashedVaultId: hashTheString(\r\n decodeURIComponent(\r\n props.reqVaultData?.vId ||\r\n props.reqVaultData?.vaultId\r\n )\r\n ),\r\n hashedVaultPin: decodeURIComponent(\r\n props.reqVaultData?.vPh ||\r\n props.reqVaultData?.hashedVaultPin\r\n ),\r\n coSignerId: decodeURIComponent(\r\n props.reqVaultData?.cId\r\n ),\r\n }\r\n : null\r\n }\r\n reqTxData={\r\n props.txData\r\n ? Object.keys(props.txData)?.map((ky) => {\r\n props.txData[ky] = decodeURIComponent(\r\n props.txData[ky]\r\n );\r\n return props.txData;\r\n })[Object.keys(props.txData)?.length - 1]\r\n : null\r\n }\r\n helperFunctions={props.helperFunctions}\r\n />\r\n )}\r\n </React.Fragment>\r\n )}\r\n </div>\r\n </VaultContextProvider>\r\n )}\r\n {!fontsLoaded && <h3>Preparing Modules...</h3>}\r\n </React.Fragment>\r\n );\r\n};\r\n\r\nexport default VerifiedCustody;\r\n","import React, { createContext, useContext, useState } from \"react\";\r\n\r\ninterface VaultStore {\r\n chainId: number | null;\r\n pk: string | null;\r\n address: string | null;\r\n signer: any;\r\n provider: any;\r\n vaultContract: any;\r\n vaultData: any;\r\n setChainId: (chainId: number | null) => void;\r\n setPk: (pk: string | null) => void;\r\n setAddress: (address: string | null) => void;\r\n setSigner: (signer: any) => void;\r\n setProvider: (provider: any) => void;\r\n setVaultContract: (vaultContract: any) => void;\r\n setVaultData: (vaultData: any) => void;\r\n}\r\n\r\nconst VaultStoreContext = createContext<VaultStore | undefined>(undefined);\r\n\r\nexport const VaultContextProvider = (props: {\r\n children: React.JSX.Element;\r\n}) => {\r\n const [chainId, setChainId] = useState<number | null>(null);\r\n const [pk, setPk] = useState<string | null>(null);\r\n const [address, setAddress] = useState<string | null>(null);\r\n const [signer, setSigner] = useState<any>(null);\r\n const [provider, setProvider] = useState<any>(null);\r\n const [vaultContract, setVaultContract] = useState<any>(null);\r\n const [vaultData, setVaultData] = useState<any>(null);\r\n const [fcmToken, setFcmToken] = useState<string | null>(null);\r\n\r\n return (\r\n <VaultStoreContext.Provider\r\n value={{\r\n chainId,\r\n pk,\r\n address,\r\n signer,\r\n provider,\r\n vaultContract,\r\n vaultData,\r\n setChainId,\r\n setPk,\r\n setAddress,\r\n setSigner,\r\n setProvider,\r\n setVaultContract,\r\n setVaultData,\r\n }}\r\n >\r\n {props.children}\r\n </VaultStoreContext.Provider>\r\n );\r\n};\r\n\r\nexport const useVaultStore = () => {\r\n const context = useContext(VaultStoreContext);\r\n if (context) {\r\n return context;\r\n } else {\r\n throw Error(\"useVaultStore must be used within VaultContextProvider\");\r\n }\r\n};\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { debounce } from \"lodash\";\r\nimport { countriesDetails, imageAssets } from \"../utils/constants\";\r\nimport { useVaultStore } from \"../services/store\";\r\nimport { initWalletAndContract, loadAllGoogleFonts } from \"../utils/helpers\";\r\nimport ContactPage from \"./contact\";\r\nimport OTPPage from \"./otp\";\r\nimport CreatePinPage from \"./createPin\";\r\nimport Success from \"../components/success\";\r\nimport AddCosignersPage from \"./addCosigners\";\r\nimport { VerifiedCustodyHelpers } from \"../utils/types\";\r\n\r\nconst FTUPage = (props: {\r\n fontsLoaded?: boolean;\r\n popupView?: boolean;\r\n action?: string;\r\n vaultData?: any;\r\n txData?: any;\r\n chainId?: number;\r\n defaultCountry?: {\r\n area: string;\r\n flag: string;\r\n name: string;\r\n };\r\n showLogoPage?: boolean;\r\n logoPageElement?: React.JSX.Element;\r\n logoTimeoutTime?: number;\r\n showStartupPage?: boolean;\r\n startupPageElement?: React.JSX.Element;\r\n setisOnboard?: (isOnboard: boolean) => void;\r\n helperFunctions?: VerifiedCustodyHelpers;\r\n setIsLoading?: (isLoading: boolean) => void;\r\n}) => {\r\n const [fontsLoaded, setFontsLoaded] = useState<boolean>(\r\n props.fontsLoaded || false\r\n );\r\n const [showLogo, setShowLogo] = useState<boolean>(\r\n props.showLogoPage || false\r\n );\r\n const [allCountries, setAllCountries] = useState([]);\r\n const [step, setStep] = useState<string>(\"2\");\r\n const [selectedCountry, setSelectedCountry] = useState(\r\n props.defaultCountry || {\r\n area: \"1\",\r\n flag: imageAssets.usaFlag,\r\n name: \"United States\",\r\n }\r\n );\r\n const [userNumberFmt, setUserNumberFmt] = useState<string>(\"\");\r\n const [userEmail, setUserEmail] = useState<string>(\"\");\r\n const [showSuccessBtn, setShowSuccessBtn] = useState<boolean>(false);\r\n const [successBtnText, setSuccessBtnText] = useState<string>(\"\");\r\n const [successBtnNeutText, setSuccessBtnNeutText] = useState<string>(\"\");\r\n const [actionHeaderText, setActionHeaderText] = useState<string>(\"\");\r\n const [actionFooterText, setActionFooterText] = useState<string>(\"\");\r\n const [successBtnFunc, setSuccessBtnFunc] = useState(null);\r\n const [successBtnNeutFunc, setSuccessBtnNeutFunc] = useState(null);\r\n\r\n const {\r\n setChainId,\r\n setAddress,\r\n setPk,\r\n setProvider,\r\n setSigner,\r\n setVaultContract,\r\n setVaultData,\r\n vaultData,\r\n } = useVaultStore();\r\n\r\n useEffect(() => {\r\n const PreloadGoogleFonts = () => {\r\n const isFontsLoaded = loadAllGoogleFonts(document);\r\n setFontsLoaded(isFontsLoaded);\r\n };\r\n if (!props.fontsLoaded) {\r\n PreloadGoogleFonts();\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n const initializeUserWalletAndContract = async () => {\r\n const walletAndContractDetails = await initWalletAndContract(\r\n props.chainId\r\n );\r\n setChainId(walletAndContractDetails.chainId);\r\n setAddress(walletAndContractDetails.address);\r\n setPk(walletAndContractDetails.pk);\r\n setProvider(walletAndContractDetails.provider);\r\n setSigner(walletAndContractDetails.signer);\r\n setVaultContract(walletAndContractDetails.vaultContract);\r\n setVaultData(walletAndContractDetails.vaultData);\r\n };\r\n initializeUserWalletAndContract();\r\n }, []);\r\n\r\n useEffect(() => {\r\n const handleLogoDisplay = debounce(\r\n () => {\r\n setShowLogo(false);\r\n },\r\n props.logoTimeoutTime ? props.logoTimeoutTime : 3000\r\n ); //3 seconds??\r\n handleLogoDisplay();\r\n }, []);\r\n\r\n useEffect(() => {\r\n const getAndFormatAllCountries = () => {\r\n const fmtCountries: any = countriesDetails\r\n .map((cnt: any) => {\r\n if (cnt) {\r\n return {\r\n name: cnt?.name,\r\n countryName: cnt?.name,\r\n officialName: cnt?.name,\r\n currencySymbol: cnt?.currency,\r\n currencyName: cnt?.currency,\r\n officialCurrencySymbol: cnt?.currency,\r\n countryCode: cnt?.code,\r\n flag: cnt?.flag,\r\n continent: cnt?.continent,\r\n phone_code: cnt?.phone_code,\r\n code: cnt?.code,\r\n };\r\n }\r\n })\r\n .flat();\r\n setAllCountries(fmtCountries?.filter((cnt: any) => cnt !== undefined));\r\n };\r\n getAndFormatAllCountries();\r\n }, []);\r\n\r\n return (\r\n <React.Fragment>\r\n {fontsLoaded && showLogo && props.logoPageElement && (\r\n <React.Fragment> {props.logoPageElement}</React.Fragment>\r\n )}\r\n {fontsLoaded && !showLogo && (\r\n <React.Fragment>\r\n {/* {step === \"1\" && props.showStartupPage && (\r\n <React.Fragment>{props.startupPageElement}</React.Fragment>\r\n )} */}\r\n {step === \"2\" && (\r\n <ContactPage\r\n setStep={setStep}\r\n setIsLoading={props.setIsLoading}\r\n setUserNumberFmt={setUserNumberFmt}\r\n userNumberFmt={userNumberFmt}\r\n setUserEmail={setUserEmail}\r\n userEmail={userEmail}\r\n setSelectedCountry={setSelectedCountry}\r\n selectedCountry={selectedCountry}\r\n allCountries={allCountries}\r\n />\r\n )}\r\n {step === \"3\" && (\r\n <OTPPage\r\n setStep={setStep}\r\n setIsLoading={props.setIsLoading}\r\n userNumberFmt={userNumberFmt}\r\n setUserNumberFmt={setUserNumberFmt}\r\n setUserEmail={setUserEmail}\r\n userEmail={userEmail}\r\n selectedCountry={selectedCountry}\r\n />\r\n )}\r\n\r\n {step === \"4\" && (\r\n <CreatePinPage\r\n setStep={setStep}\r\n setIsLoading={props.setIsLoading}\r\n setShowSuccessBtn={setShowSuccessBtn}\r\n setSuccessBtnText={setSuccessBtnText}\r\n setSuccessBtnNeutText={setSuccessBtnNeutText}\r\n setSuccessBtnFunc={setSuccessBtnFunc}\r\n setSuccessBtnNeutFunc={setSuccessBtnNeutFunc}\r\n userNumberFmt={userNumberFmt}\r\n userEmail={userEmail}\r\n selectedCountry={selectedCountry}\r\n action={props.action}\r\n vaultData={props.vaultData}\r\n txData={props.txData}\r\n setActionHeaderText={setActionHeaderText}\r\n setActionFooterText={setActionFooterText}\r\n helperFunctions={props.helperFunctions}\r\n />\r\n )}\r\n\r\n {step === \"5\" && (\r\n <Success\r\n setStep={setStep}\r\n stepToSet=\"6\"\r\n customTextHeader=\"Successful\"\r\n customTextFooter=\"Congratulations! You have successfully created a PIN to protect your account.\"\r\n action={props.action}\r\n showButton={showSuccessBtn}\r\n buttonText={successBtnText}\r\n buttonNeutText={successBtnNeutText}\r\n buttonFunc={successBtnFunc}\r\n buttonNeutFunc={successBtnNeutFunc}\r\n actionHeaderText={actionHeaderText}\r\n actionFooterText={actionFooterText}\r\n />\r\n )}\r\n\r\n {step === \"6\" && (\r\n <AddCosignersPage\r\n setStep={setStep}\r\n setIsLoading={props.setIsLoading}\r\n userNumberFmt={userNumberFmt}\r\n userEmail={userEmail}\r\n selectedCountry={selectedCountry}\r\n allCountries={allCountries}\r\n helperFunctions={props.helperFunctions}\r\n />\r\n )}\r\n\r\n {step === \"7\" && (\r\n <Success\r\n action={props.action}\r\n messageTosend={\r\n props.action === \"signRecovery\"\r\n ? {\r\n type: \"signRecovery\",\r\n value: {\r\n vaultData: props.vaultData,\r\n txData: { newUser: true, ...props.txData },\r\n },\r\n }\r\n : { type: \"closePopup\", key: \"\", value: \"\" }\r\n }\r\n customTextHeader=\"Successful\"\r\n customTextFooter=\"Congratulations! You have successfully added Co-signers to your account.\"\r\n />\r\n )}\r\n </React.Fragment>\r\n )}\r\n {!fontsLoaded && <h3>Preparing Modules...</h3>}\r\n </React.Fragment>\r\n );\r\n};\r\n\r\nexport default FTUPage;\r\n","export const defaultChainId =\r\n process.env.REACT_APP_NODE_ENV === \"production\" ? 8453 : 11155111; //Base mainnet for production or Base Sepolia for developement\r\n\r\nexport const defaultVerifiedUrl =\r\n process.env.REACT_APP_NODE_ENV === \"production\"\r\n ? \"https://wallet.verified.network\"\r\n : \"https://veripay-bac0b.web.app\";\r\n\r\nexport const allGoogleFontUrls = [\r\n \"https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap\",\r\n \"https://fonts.googleapis.com/css2?family=Manrope:wght@200..800&family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap\",\r\n \"https://fonts.googleapis.com/css2?family=Hind:wght@300;400;500;600;700&display=swap\",\r\n];\r\n\r\nexport const newTransactionEventHash =\r\n \"0x7f8d3f14b960b3bcf34baea4b46178e331b54a33e565d7d50d77cdfe9e926fe8\";\r\n\r\nexport const TwiloBaseUrl = \"https://verify-1740-4at0oa.twil.io\";\r\n\r\nexport const numberPositions = {\r\n 1: \"1st\",\r\n 2: \"2nd\",\r\n 3: \"3rd\",\r\n 4: \"4th\",\r\n 5: \"5th\",\r\n};\r\n\r\nexport const numberPositionsFmt = {\r\n 1: \"1 st\",\r\n 2: \"2 nd\",\r\n 3: \"3 rd\",\r\n 4: \"4 th\",\r\n 5: \"5 th\",\r\n};\r\n\r\nexport const actionTexts = {\r\n connect_wallet: \"connect your account\",\r\n getPk: \"recover your account details\",\r\n invitation: \"accept Co-Signer invitation\",\r\n signRecovery: \"sign account recovery\",\r\n completeRecovery: \"restore login access\",\r\n};\r\n\r\nexport const imageAssets = {\r\n successIcon:\r\n \"https://raw.githubusercontent.com/Mohzcrea8me/verified-wallet-assets/main/succes-page-icon.svg\",\r\n usaFlag:\r\n \"https://raw.githubusercontent.com/Mohzcrea8me/verified-wallet-assets/main/Flag-United-States-of-America%201.svg\",\r\n privacyTip:\r\n \"https://raw.githubusercontent.com/Mohzcrea8me/verified-wallet-assets/main/privacy_tip.svg\",\r\n addCoSignerIcon1:\r\n \"https://raw.githubusercontent.com/Mohzcrea8me/verified-wallet-assets/main/add-cosigner-icon-1.svg\",\r\n addCoSignerIcon2:\r\n \"https://raw.githubusercontent.com/Mohzcrea8me/verified-wallet-assets/main/add-cosigner-icon-2.svg\",\r\n addCoSignerIcon3:\r\n \"https://raw.githubusercontent.com/Mohzcrea8me/verified-wallet-assets/main/add-cosigner-icon-3.svg\",\r\n addCoSignerIcon4:\r\n \"https://raw.githubusercontent.com/Mohzcrea8me/verified-wallet-assets/main/add-cosigner-icon-4.svg\",\r\n pkicon:\r\n \"https://raw.githubusercontent.com/Mohzcrea8me/verified-wallet-assets/main/pk-icon.svg\",\r\n encryptedIcon:\r\n \"https://raw.githubusercontent.com/Mohzcrea8me/verified-wallet-assets/main/encrypted-icon.svg\",\r\n pinHide:\r\n \"https://raw.githubusercontent.com/Mohzcrea8me/verified-wallet-assets/main/pin-hide-icon.svg\",\r\n pinShow:\r\n \"https://raw.githubusercontent.com/Mohzcrea8me/verified-wallet-assets/main/pin-show-icon.svg\",\r\n arrowUp:\r\n \"https://raw.githubusercontent.com/Mohzcrea8me/verified-wallet-assets/main/contact-arrow-up.svg\",\r\n arrowDown:\r\n \"https://raw.githubusercontent.com/Mohzcrea8me/verified-wallet-assets/main/contact-dropdown.svg\",\r\n editBlue:\r\n \"https://raw.githubusercontent.com/Mohzcrea8me/verified-wallet-assets/main/edit.svg\",\r\n editBlack:\r\n \"https://raw.githubusercontent.com/Mohzcrea8me/verified-wallet-assets/main/edit-icon.svg\",\r\n search:\r\n \"https://raw.githubusercontent.com/Mohzcrea8me/verified-wallet-assets/main/search-icon.svg\",\r\n circleClicked:\r\n \"https://raw.githubusercontent.com/Mohzcrea8me/verified-wallet-assets/main/check-circle-icon.svg\",\r\n supervise:\r\n \"https://raw.githubusercontent.com/Mohzcrea8me/verified-wallet-assets/main/supervisor-icon.svg\",\r\n delete:\r\n \"https://raw.githubusercontent.com/Mohzcrea8me/verified-wallet-assets/main/delete-icon.svg\",\r\n pointer:\r\n \"https://raw.githubusercontent.com/Mohzcrea8me/verified-wallet-assets/main/pointer-icon.svg\",\r\n sliderDot:\r\n \"https://raw.githubusercontent.com/Mohzcrea8me/verified-wallet-assets/main/slider-icon.svg\",\r\n select:\r\n \"https://raw.githubusercontent.com/Mohzcrea8me/verified-wallet-assets/main/select-icon.svg\",\r\n selectClicked:\r\n \"https://raw.githubusercontent.com/Mohzcrea8me/verified-wallet-assets/main/select-clicked-icon.svg\",\r\n addIcon:\r\n \"https://raw.githubusercontent.com/Mohzcrea8me/verified-wallet-assets/main/plus-circle-icon.svg\",\r\n addDisableIcon:\r\n \"https://raw.githubusercontent.com/Mohzcrea8me/verified-wallet-assets/main/plus-circle-dis.svg\",\r\n errorAlert:\r\n \"https://raw.githubusercontent.com/Mohzcrea8me/verified-wallet-assets/main/error-icon.svg\",\r\n successAlert:\r\n \"https://raw.githubusercontent.com/Mohzcrea8me/verified-wallet-assets/main/success-icon.svg\",\r\n loadingIcon:\r\n \"https://raw.githubusercontent.com/Mohzcrea8me/verified-wallet-assets/main/loading-icon.png\",\r\n};\r\n\r\nexport const countriesDetails = [\r\n {\r\n name: \"Afghanistan\",\r\n code: \"AF\",\r\n currency: \"AFN\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/af.webp\",\r\n phone_code: \"93\",\r\n },\r\n {\r\n name: \"Albania\",\r\n code: \"AL\",\r\n currency: \"ALL\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/al.webp\",\r\n phone_code: \"355\",\r\n },\r\n {\r\n name: \"Algeria\",\r\n code: \"DZ\",\r\n currency: \"DZD\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/dz.webp\",\r\n phone_code: \"213\",\r\n },\r\n {\r\n name: \"American Samoa\",\r\n code: \"AS\",\r\n currency: \"USD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/as.webp\",\r\n phone_code: \"1-684\",\r\n },\r\n {\r\n name: \"Andorra\",\r\n code: \"AD\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ad.webp\",\r\n phone_code: \"376\",\r\n },\r\n {\r\n name: \"Angola\",\r\n code: \"AO\",\r\n currency: \"AOA\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ao.webp\",\r\n phone_code: \"244\",\r\n },\r\n {\r\n name: \"Anguilla\",\r\n code: \"AI\",\r\n currency: \"XCD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ai.webp\",\r\n phone_code: \"1-264\",\r\n },\r\n {\r\n name: \"Antarctica\",\r\n code: \"AQ\",\r\n currency: \"N/A\",\r\n continent: \"Antarctica\",\r\n flag: \"https://flagpedia.net/data/flags/h80/aq.webp\",\r\n phone_code: \"N/A\",\r\n },\r\n {\r\n name: \"Antigua and Barbuda\",\r\n code: \"AG\",\r\n currency: \"XCD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ag.webp\",\r\n phone_code: \"1-268\",\r\n },\r\n {\r\n name: \"Argentina\",\r\n code: \"AR\",\r\n currency: \"ARS\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ar.webp\",\r\n phone_code: \"54\",\r\n },\r\n {\r\n name: \"Armenia\",\r\n code: \"AM\",\r\n currency: \"AMD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/am.webp\",\r\n phone_code: \"374\",\r\n },\r\n {\r\n name: \"Aruba\",\r\n code: \"AW\",\r\n currency: \"AWG\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/aw.webp\",\r\n phone_code: \"297\",\r\n },\r\n {\r\n name: \"Australia\",\r\n code: \"AU\",\r\n currency: \"AUD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/au.webp\",\r\n phone_code: \"61\",\r\n },\r\n {\r\n name: \"Austria\",\r\n code: \"AT\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/at.webp\",\r\n phone_code: \"43\",\r\n },\r\n {\r\n name: \"Azerbaijan\",\r\n code: \"AZ\",\r\n currency: \"AZN\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/az.webp\",\r\n phone_code: \"994\",\r\n },\r\n {\r\n name: \"Bahamas\",\r\n code: \"BS\",\r\n currency: \"BSD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bs.webp\",\r\n phone_code: \"1-242\",\r\n },\r\n {\r\n name: \"Bahrain\",\r\n code: \"BH\",\r\n currency: \"BHD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bh.webp\",\r\n phone_code: \"973\",\r\n },\r\n {\r\n name: \"Bangladesh\",\r\n code: \"BD\",\r\n currency: \"BDT\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bd.webp\",\r\n phone_code: \"880\",\r\n },\r\n {\r\n name: \"Barbados\",\r\n code: \"BB\",\r\n currency: \"BBD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bb.webp\",\r\n phone_code: \"1-246\",\r\n },\r\n {\r\n name: \"Belarus\",\r\n code: \"BY\",\r\n currency: \"BYR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/by.webp\",\r\n phone_code: \"375\",\r\n },\r\n {\r\n name: \"Belgium\",\r\n code: \"BE\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/be.webp\",\r\n phone_code: \"32\",\r\n },\r\n {\r\n name: \"Belize\",\r\n code: \"BZ\",\r\n currency: \"BZD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bz.webp\",\r\n phone_code: \"501\",\r\n },\r\n {\r\n name: \"Benin\",\r\n code: \"BJ\",\r\n currency: \"XOF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bj.webp\",\r\n phone_code: \"229\",\r\n },\r\n {\r\n name: \"Bermuda\",\r\n code: \"BM\",\r\n currency: \"BMD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bm.webp\",\r\n phone_code: \"1-441\",\r\n },\r\n {\r\n name: \"Bhutan\",\r\n code: \"BT\",\r\n currency: \"BTN\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bt.webp\",\r\n phone_code: \"975\",\r\n },\r\n {\r\n name: \"Bolivia\",\r\n code: \"BO\",\r\n currency: \"BOB\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bo.webp\",\r\n phone_code: \"591\",\r\n },\r\n {\r\n name: \"Bosnia and Herzegovina\",\r\n code: \"BA\",\r\n currency: \"BAM\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ba.webp\",\r\n phone_code: \"387\",\r\n },\r\n {\r\n name: \"Botswana\",\r\n code: \"BW\",\r\n currency: \"BWP\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bw.webp\",\r\n phone_code: \"267\",\r\n },\r\n {\r\n name: \"Brazil\",\r\n code: \"BR\",\r\n currency: \"BRL\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/br.webp\",\r\n phone_code: \"55\",\r\n },\r\n {\r\n name: \"British Indian Ocean Territory\",\r\n code: \"IO\",\r\n currency: \"USD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/io.webp\",\r\n phone_code: \"246\",\r\n },\r\n {\r\n name: \"Brunei Darussalam\",\r\n code: \"BN\",\r\n currency: \"BND\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bn.webp\",\r\n phone_code: \"673\",\r\n },\r\n {\r\n name: \"Bulgaria\",\r\n code: \"BG\",\r\n currency: \"BGN\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bg.webp\",\r\n phone_code: \"359\",\r\n },\r\n {\r\n name: \"Burkina Faso\",\r\n code: \"BF\",\r\n currency: \"XOF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bf.webp\",\r\n phone_code: \"226\",\r\n },\r\n {\r\n name: \"Burundi\",\r\n code: \"BI\",\r\n currency: \"BIF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bi.webp\",\r\n phone_code: \"257\",\r\n },\r\n {\r\n name: \"Cambodia\",\r\n code: \"KH\",\r\n currency: \"KHR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/kh.webp\",\r\n phone_code: \"855\",\r\n },\r\n {\r\n name: \"Cameroon\",\r\n code: \"CM\",\r\n currency: \"CFA\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cm.webp\",\r\n phone_code: \"237\",\r\n },\r\n {\r\n name: \"Canada\",\r\n code: \"CA\",\r\n currency: \"CAD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ca.webp\",\r\n phone_code: \"1\",\r\n },\r\n {\r\n name: \"Cape Verde\",\r\n code: \"CV\",\r\n currency: \"CVE\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cv.webp\",\r\n phone_code: \"238\",\r\n },\r\n {\r\n name: \"Cayman Islands\",\r\n code: \"KY\",\r\n currency: \"KYD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ky.webp\",\r\n phone_code: \"1-345\",\r\n },\r\n {\r\n name: \"Central African Republic\",\r\n code: \"CF\",\r\n currency: \"XAF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cf.webp\",\r\n phone_code: \"236\",\r\n },\r\n {\r\n name: \"Chad\",\r\n code: \"TD\",\r\n currency: \"CDF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/td.webp\",\r\n phone_code: \"235\",\r\n },\r\n {\r\n name: \"Chile\",\r\n code: \"CL\",\r\n currency: \"CLP\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cl.webp\",\r\n phone_code: \"56\",\r\n },\r\n {\r\n name: \"China\",\r\n code: \"CN\",\r\n currency: \"CNY\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cn.webp\",\r\n phone_code: \"86\",\r\n },\r\n {\r\n name: \"Christmas Island\",\r\n code: \"CX\",\r\n currency: \"AUD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cx.webp\",\r\n phone_code: \"61\",\r\n },\r\n {\r\n name: \"Cocos (Keeling) Islands\",\r\n code: \"CC\",\r\n currency: \"AUD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cc.webp\",\r\n phone_code: \"61\",\r\n },\r\n {\r\n name: \"Colombia\",\r\n code: \"CO\",\r\n currency: \"COP\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/co.webp\",\r\n phone_code: \"57\",\r\n },\r\n {\r\n name: \"Comoros\",\r\n code: \"KM\",\r\n currency: \"KMF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/km.webp\",\r\n phone_code: \"269\",\r\n },\r\n {\r\n name: \"Congo (Congo-Brazzaville)\",\r\n code: \"CG\",\r\n currency: \"CDF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cg.webp\",\r\n phone_code: \"242\",\r\n },\r\n {\r\n name: \"Congo (Democratic Republic of the Congo)\",\r\n code: \"CD\",\r\n currency: \"CDF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cd.webp\",\r\n phone_code: \"243\",\r\n },\r\n {\r\n name: \"Cook Islands\",\r\n code: \"CK\",\r\n currency: \"NZD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ck.webp\",\r\n phone_code: \"682\",\r\n },\r\n {\r\n name: \"Costa Rica\",\r\n code: \"CR\",\r\n currency: \"CRC\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cr.webp\",\r\n phone_code: \"506\",\r\n },\r\n {\r\n name: \"Croatia\",\r\n code: \"HR\",\r\n currency: \"HRK\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/hr.webp\",\r\n phone_code: \"385\",\r\n },\r\n {\r\n name: \"Cuba\",\r\n code: \"CU\",\r\n currency: \"CUP\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cu.webp\",\r\n phone_code: \"53\",\r\n },\r\n {\r\n name: \"Curaçao\",\r\n code: \"CW\",\r\n currency: \"AWG\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cw.webp\",\r\n phone_code: \"599\",\r\n },\r\n {\r\n name: \"Cyprus\",\r\n code: \"CY\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cy.webp\",\r\n phone_code: \"357\",\r\n },\r\n {\r\n name: \"Czech Republic\",\r\n code: \"CZ\",\r\n currency: \"CZK\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cz.webp\",\r\n phone_code: \"420\",\r\n },\r\n {\r\n name: \"Denmark\",\r\n code: \"DK\",\r\n currency: \"DKK\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/dk.webp\",\r\n phone_code: \"45\",\r\n },\r\n {\r\n name: \"Djibouti\",\r\n code: \"DJ\",\r\n currency: \"DJF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/dj.webp\",\r\n phone_code: \"253\",\r\n },\r\n {\r\n name: \"Dominica\",\r\n code: \"DM\",\r\n currency: \"XCD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/dm.webp\",\r\n phone_code: \"1-767\",\r\n },\r\n {\r\n name: \"Dominican Republic\",\r\n code: \"DO\",\r\n currency: \"DOP\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/do.webp\",\r\n phone_code: \"1-809\",\r\n },\r\n {\r\n name: \"Ecuador\",\r\n code: \"EC\",\r\n currency: \"USD\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ec.webp\",\r\n phone_code: \"593\",\r\n },\r\n {\r\n name: \"Egypt\",\r\n code: \"EG\",\r\n currency: \"EGP\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/eg.webp\",\r\n phone_code: \"20\",\r\n },\r\n {\r\n name: \"El Salvador\",\r\n code: \"SV\",\r\n currency: \"SVC\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sv.webp\",\r\n phone_code: \"503\",\r\n },\r\n {\r\n name: \"Equatorial Guinea\",\r\n code: \"GQ\",\r\n currency: \"GNF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gq.webp\",\r\n phone_code: \"240\",\r\n },\r\n {\r\n name: \"Eritrea\",\r\n code: \"ER\",\r\n currency: \"ERN\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/er.webp\",\r\n phone_code: \"291\",\r\n },\r\n {\r\n name: \"Estonia\",\r\n code: \"EE\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ee.webp\",\r\n phone_code: \"372\",\r\n },\r\n {\r\n name: \"Eswatini\",\r\n code: \"SZ\",\r\n currency: \"SZL\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sz.webp\",\r\n phone_code: \"268\",\r\n },\r\n {\r\n name: \"Ethiopia\",\r\n code: \"ET\",\r\n currency: \"ETB\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/et.webp\",\r\n phone_code: \"251\",\r\n },\r\n {\r\n name: \"Falkland Islands\",\r\n code: \"FK\",\r\n currency: \"FKP\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/fk.webp\",\r\n phone_code: \"500\",\r\n },\r\n {\r\n name: \"Faroe Islands\",\r\n code: \"FO\",\r\n currency: \"DKK\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/fo.webp\",\r\n phone_code: \"298\",\r\n },\r\n {\r\n name: \"Fiji\",\r\n code: \"FJ\",\r\n currency: \"FJD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/fj.webp\",\r\n phone_code: \"679\",\r\n },\r\n {\r\n name: \"Finland\",\r\n code: \"FI\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/fi.webp\",\r\n phone_code: \"358\",\r\n },\r\n {\r\n name: \"France\",\r\n code: \"FR\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/fr.webp\",\r\n phone_code: \"33\",\r\n },\r\n {\r\n name: \"Gabon\",\r\n code: \"GA\",\r\n currency: \"GAB\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ga.webp\",\r\n phone_code: \"241\",\r\n },\r\n {\r\n name: \"Gambia\",\r\n code: \"GM\",\r\n currency: \"GMD\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gm.webp\",\r\n phone_code: \"220\",\r\n },\r\n {\r\n name: \"Georgia\",\r\n code: \"GE\",\r\n currency: \"GEL\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ge.webp\",\r\n phone_code: \"995\",\r\n },\r\n {\r\n name: \"Germany\",\r\n code: \"DE\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/de.webp\",\r\n phone_code: \"49\",\r\n },\r\n {\r\n name: \"Ghana\",\r\n code: \"GH\",\r\n currency: \"GHS\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gh.webp\",\r\n phone_code: \"233\",\r\n },\r\n {\r\n name: \"Greece\",\r\n code: \"GR\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gr.webp\",\r\n phone_code: \"30\",\r\n },\r\n {\r\n name: \"Greenland\",\r\n code: \"GL\",\r\n currency: \"DKK\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gl.webp\",\r\n phone_code: \"299\",\r\n },\r\n {\r\n name: \"Grenada\",\r\n code: \"GD\",\r\n currency: \"XCD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gd.webp\",\r\n phone_code: \"1-473\",\r\n },\r\n {\r\n name: \"Guadeloupe\",\r\n code: \"GP\",\r\n currency: \"EUR\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gp.webp\",\r\n phone_code: \"590\",\r\n },\r\n {\r\n name: \"Guam\",\r\n code: \"GU\",\r\n currency: \"USD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gu.webp\",\r\n phone_code: \"1-671\",\r\n },\r\n {\r\n name: \"Guatemala\",\r\n code: \"GT\",\r\n currency: \"GTQ\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gt.webp\",\r\n phone_code: \"502\",\r\n },\r\n {\r\n name: \"Guinea\",\r\n code: \"GN\",\r\n currency: \"GNF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gn.webp\",\r\n phone_code: \"224\",\r\n },\r\n {\r\n name: \"Guinea-Bissau\",\r\n code: \"GW\",\r\n currency: \"GNF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gw.webp\",\r\n phone_code: \"245\",\r\n },\r\n {\r\n name: \"Guyana\",\r\n code: \"GY\",\r\n currency: \"GYD\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gy.webp\",\r\n phone_code: \"592\",\r\n },\r\n {\r\n name: \"Haiti\",\r\n code: \"HT\",\r\n currency: \"HTG\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ht.webp\",\r\n phone_code: \"509\",\r\n },\r\n {\r\n name: \"Heard Island and McDonald Islands\",\r\n code: \"HM\",\r\n currency: \"AUD\",\r\n continent: \"Australia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/hm.webp\",\r\n phone_code: \"61\",\r\n },\r\n {\r\n name: \"Honduras\",\r\n code: \"HN\",\r\n currency: \"HNL\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/hn.webp\",\r\n phone_code: \"504\",\r\n },\r\n {\r\n name: \"Hong Kong\",\r\n code: \"HK\",\r\n currency: \"HKD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/hk.webp\",\r\n phone_code: \"852\",\r\n },\r\n {\r\n name: \"Hungary\",\r\n code: \"HU\",\r\n currency: \"HUF\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/hu.webp\",\r\n phone_code: \"36\",\r\n },\r\n {\r\n name: \"Iceland\",\r\n code: \"IS\",\r\n currency: \"ISK\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/is.webp\",\r\n phone_code: \"354\",\r\n },\r\n {\r\n name: \"India\",\r\n code: \"IN\",\r\n currency: \"INR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/in.webp\",\r\n phone_code: \"91\",\r\n },\r\n {\r\n name: \"Indonesia\",\r\n code: \"ID\",\r\n currency: \"IDR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/id.webp\",\r\n phone_code: \"62\",\r\n },\r\n {\r\n name: \"Iran\",\r\n code: \"IR\",\r\n currency: \"IRR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ir.webp\",\r\n phone_code: \"98\",\r\n },\r\n {\r\n name: \"Iraq\",\r\n code: \"IQ\",\r\n currency: \"IQD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/iq.webp\",\r\n phone_code: \"964\",\r\n },\r\n {\r\n name: \"Ireland\",\r\n code: \"IE\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ie.webp\",\r\n phone_code: \"353\",\r\n },\r\n {\r\n name: \"Israel\",\r\n code: \"IL\",\r\n currency: \"ILS\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/il.webp\",\r\n phone_code: \"972\",\r\n },\r\n {\r\n name: \"Italy\",\r\n code: \"IT\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/it.webp\",\r\n phone_code: \"39\",\r\n },\r\n {\r\n name: \"Jamaica\",\r\n code: \"JM\",\r\n currency: \"JMD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/jm.webp\",\r\n phone_code: \"1-876\",\r\n },\r\n {\r\n name: \"Japan\",\r\n code: \"JP\",\r\n currency: \"JPY\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/jp.webp\",\r\n phone_code: \"81\",\r\n },\r\n {\r\n name: \"Jordan\",\r\n code: \"JO\",\r\n currency: \"JOD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/jo.webp\",\r\n phone_code: \"962\",\r\n },\r\n {\r\n name: \"Kazakhstan\",\r\n code: \"KZ\",\r\n currency: \"KZT\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/kz.webp\",\r\n phone_code: \"7\",\r\n },\r\n {\r\n name: \"Kenya\",\r\n code: \"KE\",\r\n currency: \"KES\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ke.webp\",\r\n phone_code: \"254\",\r\n },\r\n {\r\n name: \"Kiribati\",\r\n code: \"KI\",\r\n currency: \"AUD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ki.webp\",\r\n phone_code: \"686\",\r\n },\r\n {\r\n name: \"Korea (North)\",\r\n code: \"KP\",\r\n currency: \"KPW\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/kp.webp\",\r\n phone_code: \"850\",\r\n },\r\n {\r\n name: \"Korea (South)\",\r\n code: \"KR\",\r\n currency: \"KRW\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/kr.webp\",\r\n phone_code: \"82\",\r\n },\r\n {\r\n name: \"Kuwait\",\r\n code: \"KW\",\r\n currency: \"KWD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/kw.webp\",\r\n phone_code: \"965\",\r\n },\r\n {\r\n name: \"Kyrgyzstan\",\r\n code: \"KG\",\r\n currency: \"KGS\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/kg.webp\",\r\n phone_code: \"996\",\r\n },\r\n {\r\n name: \"Laos\",\r\n code: \"LA\",\r\n currency: \"LAK\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/la.webp\",\r\n phone_code: \"856\",\r\n },\r\n {\r\n name: \"Latvia\",\r\n code: \"LV\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/lv.webp\",\r\n phone_code: \"371\",\r\n },\r\n {\r\n name: \"Lebanon\",\r\n code: \"LB\",\r\n currency: \"LBP\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/lb.webp\",\r\n phone_code: \"961\",\r\n },\r\n {\r\n name: \"Lesotho\",\r\n code: \"LS\",\r\n currency: \"LSL\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ls.webp\",\r\n phone_code: \"266\",\r\n },\r\n {\r\n name: \"Liberia\",\r\n code: \"LR\",\r\n currency: \"LRD\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/lr.webp\",\r\n phone_code: \"231\",\r\n },\r\n {\r\n name: \"Libya\",\r\n code: \"LY\",\r\n currency: \"LYD\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ly.webp\",\r\n phone_code: \"218\",\r\n },\r\n {\r\n name: \"Liechtenstein\",\r\n code: \"LI\",\r\n currency: \"CHF\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/li.webp\",\r\n phone_code: \"423\",\r\n },\r\n {\r\n name: \"Lithuania\",\r\n code: \"LT\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/lt.webp\",\r\n phone_code: \"370\",\r\n },\r\n {\r\n name: \"Luxembourg\",\r\n code: \"LU\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/lu.webp\",\r\n phone_code: \"352\",\r\n },\r\n {\r\n name: \"Macau\",\r\n code: \"MO\",\r\n currency: \"MOP\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mo.webp\",\r\n phone_code: \"853\",\r\n },\r\n {\r\n name: \"Madagascar\",\r\n code: \"MG\",\r\n currency: \"MGA\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mg.webp\",\r\n phone_code: \"261\",\r\n },\r\n {\r\n name: \"Malawi\",\r\n code: \"MW\",\r\n currency: \"MWK\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mw.webp\",\r\n phone_code: \"265\",\r\n },\r\n {\r\n name: \"Malaysia\",\r\n code: \"MY\",\r\n currency: \"MYR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/my.webp\",\r\n phone_code: \"60\",\r\n },\r\n {\r\n name: \"Maldives\",\r\n code: \"MV\",\r\n currency: \"MVR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mv.webp\",\r\n phone_code: \"960\",\r\n },\r\n {\r\n name: \"Mali\",\r\n code: \"ML\",\r\n currency: \"XOF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ml.webp\",\r\n phone_code: \"223\",\r\n },\r\n {\r\n name: \"Malta\",\r\n code: \"MT\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mt.webp\",\r\n phone_code: \"356\",\r\n },\r\n {\r\n name: \"Marshall Islands\",\r\n code: \"MH\",\r\n currency: \"USD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mh.webp\",\r\n phone_code: \"692\",\r\n },\r\n {\r\n name: \"Martinique\",\r\n code: \"MQ\",\r\n currency: \"EUR\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mq.webp\",\r\n phone_code: \"596\",\r\n },\r\n {\r\n name: \"Mauritania\",\r\n code: \"MR\",\r\n currency: \"MRU\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mr.webp\",\r\n phone_code: \"222\",\r\n },\r\n {\r\n name: \"Mauritius\",\r\n code: \"MU\",\r\n currency: \"MUR\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mu.webp\",\r\n phone_code: \"230\",\r\n },\r\n {\r\n name: \"Mayotte\",\r\n code: \"YT\",\r\n currency: \"EUR\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/yt.webp\",\r\n phone_code: \"269\",\r\n },\r\n {\r\n name: \"Mexico\",\r\n code: \"MX\",\r\n currency: \"MXN\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mx.webp\",\r\n phone_code: \"52\",\r\n },\r\n {\r\n name: \"Micronesia\",\r\n code: \"FM\",\r\n currency: \"USD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/fm.webp\",\r\n phone_code: \"691\",\r\n },\r\n {\r\n name: \"Moldova\",\r\n code: \"MD\",\r\n currency: \"MDL\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/md.webp\",\r\n phone_code: \"373\",\r\n },\r\n {\r\n name: \"Monaco\",\r\n code: \"MC\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mc.webp\",\r\n phone_code: \"377\",\r\n },\r\n {\r\n name: \"Mongolia\",\r\n code: \"MN\",\r\n currency: \"MNT\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mn.webp\",\r\n phone_code: \"976\",\r\n },\r\n {\r\n name: \"Montenegro\",\r\n code: \"ME\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/me.webp\",\r\n phone_code: \"382\",\r\n },\r\n {\r\n name: \"Montserrat\",\r\n code: \"MS\",\r\n currency: \"XCD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ms.webp\",\r\n phone_code: \"1-664\",\r\n },\r\n {\r\n name: \"Morocco\",\r\n code: \"MA\",\r\n currency: \"MAD\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ma.webp\",\r\n phone_code: \"212\",\r\n },\r\n {\r\n name: \"Mozambique\",\r\n code: \"MZ\",\r\n currency: \"MZN\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mz.webp\",\r\n phone_code: \"258\",\r\n },\r\n {\r\n name: \"Myanmar\",\r\n code: \"MM\",\r\n currency: \"MMK\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mm.webp\",\r\n phone_code: \"95\",\r\n },\r\n {\r\n name: \"Namibia\",\r\n code: \"NA\",\r\n currency: \"NAD\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/na.webp\",\r\n phone_code: \"264\",\r\n },\r\n {\r\n name: \"Nauru\",\r\n code: \"NR\",\r\n currency: \"AUD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/nr.webp\",\r\n phone_code: \"674\",\r\n },\r\n {\r\n name: \"Nepal\",\r\n code: \"NP\",\r\n currency: \"NPR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/np.webp\",\r\n phone_code: \"977\",\r\n },\r\n {\r\n name: \"Netherlands\",\r\n code: \"NL\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/nl.webp\",\r\n phone_code: \"31\",\r\n },\r\n {\r\n name: \"New Caledonia\",\r\n code: \"NC\",\r\n currency: \"XPF\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/nc.webp\",\r\n phone_code: \"687\",\r\n },\r\n {\r\n name: \"New Zealand\",\r\n code: \"NZ\",\r\n currency: \"NZD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/nz.webp\",\r\n phone_code: \"64\",\r\n },\r\n {\r\n name: \"Nicaragua\",\r\n code: \"NI\",\r\n currency: \"NIO\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ni.webp\",\r\n phone_code: \"505\",\r\n },\r\n {\r\n name: \"Niger\",\r\n code: \"NE\",\r\n currency: \"NGN\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ne.webp\",\r\n phone_code: \"227\",\r\n },\r\n {\r\n name: \"Nigeria\",\r\n code: \"NG\",\r\n currency: \"NGN\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ng.webp\",\r\n phone_code: \"234\",\r\n },\r\n {\r\n name: \"Niue\",\r\n code: \"NU\",\r\n currency: \"NZD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/nu.webp\",\r\n phone_code: \"683\",\r\n },\r\n {\r\n name: \"Norfolk Island\",\r\n code: \"NF\",\r\n currency: \"AUD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/nf.webp\",\r\n phone_code: \"672\",\r\n },\r\n {\r\n name: \"North Macedonia\",\r\n code: \"MK\",\r\n currency: \"MKD\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mk.webp\",\r\n phone_code: \"389\",\r\n },\r\n {\r\n name: \"Northern Mariana Islands\",\r\n code: \"MP\",\r\n currency: \"USD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mp.webp\",\r\n phone_code: \"1-670\",\r\n },\r\n {\r\n name: \"Norway\",\r\n code: \"NO\",\r\n currency: \"NOK\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/no.webp\",\r\n phone_code: \"47\",\r\n },\r\n {\r\n name: \"Oman\",\r\n code: \"OM\",\r\n currency: \"OMR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/om.webp\",\r\n phone_code: \"968\",\r\n },\r\n {\r\n name: \"Pakistan\",\r\n code: \"PK\",\r\n currency: \"PKR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pk.webp\",\r\n phone_code: \"92\",\r\n },\r\n {\r\n name: \"Palau\",\r\n code: \"PW\",\r\n currency: \"USD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pw.webp\",\r\n phone_code: \"680\",\r\n },\r\n {\r\n name: \"Panama\",\r\n code: \"PA\",\r\n currency: \"PAB\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pa.webp\",\r\n phone_code: \"507\",\r\n },\r\n {\r\n name: \"Papua New Guinea\",\r\n code: \"PG\",\r\n currency: \"PGK\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pg.webp\",\r\n phone_code: \"675\",\r\n },\r\n {\r\n name: \"Paraguay\",\r\n code: \"PY\",\r\n currency: \"PYG\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/py.webp\",\r\n phone_code: \"595\",\r\n },\r\n {\r\n name: \"Peru\",\r\n code: \"PE\",\r\n currency: \"PEN\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pe.webp\",\r\n phone_code: \"51\",\r\n },\r\n {\r\n name: \"Philippines\",\r\n code: \"PH\",\r\n currency: \"PHP\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ph.webp\",\r\n phone_code: \"63\",\r\n },\r\n {\r\n name: \"Pitcairn Islands\",\r\n code: \"PN\",\r\n currency: \"NZD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pn.webp\",\r\n phone_code: \"64\",\r\n },\r\n {\r\n name: \"Poland\",\r\n code: \"PL\",\r\n currency: \"PLN\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pl.webp\",\r\n phone_code: \"48\",\r\n },\r\n {\r\n name: \"Portugal\",\r\n code: \"PT\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pt.webp\",\r\n phone_code: \"351\",\r\n },\r\n {\r\n name: \"Puerto Rico\",\r\n code: \"PR\",\r\n currency: \"USD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pr.webp\",\r\n phone_code: \"1-787\",\r\n },\r\n {\r\n name: \"Qatar\",\r\n code: \"QA\",\r\n currency: \"QAR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/qa.webp\",\r\n phone_code: \"974\",\r\n },\r\n {\r\n name: \"Romania\",\r\n code: \"RO\",\r\n currency: \"RON\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ro.webp\",\r\n phone_code: \"40\",\r\n },\r\n {\r\n name: \"Russia\",\r\n code: \"RU\",\r\n currency: \"RUB\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ru.webp\",\r\n phone_code: \"7\",\r\n },\r\n {\r\n name: \"Rwanda\",\r\n code: \"RW\",\r\n currency: \"RWF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/rw.webp\",\r\n phone_code: \"250\",\r\n },\r\n {\r\n name: \"Saint Barthélemy\",\r\n code: \"BL\",\r\n currency: \"EUR\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bl.webp\",\r\n phone_code: \"590\",\r\n },\r\n {\r\n name: \"Saint Helena\",\r\n code: \"SH\",\r\n currency: \"SHP\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sh.webp\",\r\n phone_code: \"290\",\r\n },\r\n {\r\n name: \"Saint Kitts and Nevis\",\r\n code: \"KN\",\r\n currency: \"XCD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/kn.webp\",\r\n phone_code: \"1-869\",\r\n },\r\n {\r\n name: \"Saint Lucia\",\r\n code: \"LC\",\r\n currency: \"XCD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/lc.webp\",\r\n phone_code: \"1-758\",\r\n },\r\n {\r\n name: \"Saint Martin\",\r\n code: \"MF\",\r\n currency: \"EUR\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mf.webp\",\r\n phone_code: \"590\",\r\n },\r\n {\r\n name: \"Saint Pierre and Miquelon\",\r\n code: \"PM\",\r\n currency: \"EUR\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pm.webp\",\r\n phone_code: \"508\",\r\n },\r\n {\r\n name: \"Saint Vincent and the Grenadines\",\r\n code: \"VC\",\r\n currency: \"XCD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/vc.webp\",\r\n phone_code: \"1-784\",\r\n },\r\n {\r\n name: \"Samoa\",\r\n code: \"WS\",\r\n currency: \"WST\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ws.webp\",\r\n phone_code: \"685\",\r\n },\r\n {\r\n name: \"San Marino\",\r\n code: \"SM\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sm.webp\",\r\n phone_code: \"378\",\r\n },\r\n {\r\n name: \"Sao Tome and Principe\",\r\n code: \"ST\",\r\n currency: \"STN\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/st.webp\",\r\n phone_code: \"239\",\r\n },\r\n {\r\n name: \"Saudi Arabia\",\r\n code: \"SA\",\r\n currency: \"SAR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sa.webp\",\r\n phone_code: \"966\",\r\n },\r\n {\r\n name: \"Senegal\",\r\n code: \"SN\",\r\n currency: \"XOF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sn.webp\",\r\n phone_code: \"221\",\r\n },\r\n {\r\n name: \"Serbia\",\r\n code: \"RS\",\r\n currency: \"RSD\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/rs.webp\",\r\n phone_code: \"381\",\r\n },\r\n {\r\n name: \"Seychelles\",\r\n code: \"SC\",\r\n currency: \"SCR\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sc.webp\",\r\n phone_code: \"248\",\r\n },\r\n {\r\n name: \"Sierra Leone\",\r\n code: \"SL\",\r\n currency: \"SLL\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sl.webp\",\r\n phone_code: \"232\",\r\n },\r\n {\r\n name: \"Singapore\",\r\n code: \"SG\",\r\n currency: \"SGD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sg.webp\",\r\n phone_code: \"65\",\r\n },\r\n {\r\n name: \"Sint Eustatius\",\r\n code: \"SX\",\r\n currency: \"USD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sx.webp\",\r\n phone_code: \"599\",\r\n },\r\n {\r\n name: \"Sint Maarten\",\r\n code: \"SM\",\r\n currency: \"ANG\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sm.webp\",\r\n phone_code: \"1-721\",\r\n },\r\n {\r\n name: \"Slovakia\",\r\n code: \"SK\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sk.webp\",\r\n phone_code: \"421\",\r\n },\r\n {\r\n name: \"Slovenia\",\r\n code: \"SI\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/si.webp\",\r\n phone_code: \"386\",\r\n },\r\n {\r\n name: \"Solomon Islands\",\r\n code: \"SB\",\r\n currency: \"SBD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sb.webp\",\r\n phone_code: \"677\",\r\n },\r\n {\r\n name: \"Somalia\",\r\n code: \"SO\",\r\n currency: \"SOS\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/so.webp\",\r\n phone_code: \"252\",\r\n },\r\n {\r\n name: \"South Africa\",\r\n code: \"ZA\",\r\n currency: \"ZAR\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/za.webp\",\r\n phone_code: \"27\",\r\n },\r\n {\r\n name: \"South Georgia and the South Sandwich Islands\",\r\n code: \"GS\",\r\n currency: \"GBP\",\r\n continent: \"Antarctica\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gs.webp\",\r\n phone_code: \"500\",\r\n },\r\n {\r\n name: \"South Sudan\",\r\n code: \"SS\",\r\n currency: \"SSP\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ss.webp\",\r\n phone_code: \"211\",\r\n },\r\n {\r\n name: \"Spain\",\r\n code: \"ES\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/es.webp\",\r\n phone_code: \"34\",\r\n },\r\n {\r\n name: \"Sri Lanka\",\r\n code: \"LK\",\r\n currency: \"LKR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/lk.webp\",\r\n phone_code: \"94\",\r\n },\r\n {\r\n name: \"Sudan\",\r\n code: \"SD\",\r\n currency: \"SDG\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sd.webp\",\r\n phone_code: \"249\",\r\n },\r\n {\r\n name: \"Suriname\",\r\n code: \"SR\",\r\n currency: \"SRD\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sr.webp\",\r\n phone_code: \"597\",\r\n },\r\n {\r\n name: \"Svalbard and Jan Mayen\",\r\n code: \"SJ\",\r\n currency: \"NOK\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sj.webp\",\r\n phone_code: \"47\",\r\n },\r\n {\r\n name: \"Sweden\",\r\n code: \"SE\",\r\n currency: \"SEK\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/se.webp\",\r\n phone_code: \"46\",\r\n },\r\n {\r\n name: \"Switzerland\",\r\n code: \"CH\",\r\n currency: \"CHF\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ch.webp\",\r\n phone_code: \"41\",\r\n },\r\n {\r\n name: \"Syria\",\r\n code: \"SY\",\r\n currency: \"SYP\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sy.webp\",\r\n phone_code: \"963\",\r\n },\r\n {\r\n name: \"Taiwan\",\r\n code: \"TW\",\r\n currency: \"TWD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tw.webp\",\r\n phone_code: \"886\",\r\n },\r\n {\r\n name: \"Tajikistan\",\r\n code: \"TJ\",\r\n currency: \"TJS\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tj.webp\",\r\n phone_code: \"992\",\r\n },\r\n {\r\n name: \"Tanzania\",\r\n code: \"TZ\",\r\n currency: \"TZS\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tz.webp\",\r\n phone_code: \"255\",\r\n },\r\n {\r\n name: \"Thailand\",\r\n code: \"TH\",\r\n currency: \"THB\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/th.webp\",\r\n phone_code: \"66\",\r\n },\r\n {\r\n name: \"Timor-Leste\",\r\n code: \"TL\",\r\n currency: \"USD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tl.webp\",\r\n phone_code: \"670\",\r\n },\r\n {\r\n name: \"Togo\",\r\n code: \"TG\",\r\n currency: \"XOF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tg.webp\",\r\n phone_code: \"228\",\r\n },\r\n {\r\n name: \"Tokelau\",\r\n code: \"TK\",\r\n currency: \"NZD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tk.webp\",\r\n phone_code: \"690\",\r\n },\r\n {\r\n name: \"Tonga\",\r\n code: \"TO\",\r\n currency: \"TOP\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/to.webp\",\r\n phone_code: \"676\",\r\n },\r\n {\r\n name: \"Trinidad and Tobago\",\r\n code: \"TT\",\r\n currency: \"TTD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tt.webp\",\r\n phone_code: \"1-868\",\r\n },\r\n {\r\n name: \"Tunisia\",\r\n code: \"TN\",\r\n currency: \"TND\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tn.webp\",\r\n phone_code: \"216\",\r\n },\r\n {\r\n name: \"Turkey\",\r\n code: \"TR\",\r\n currency: \"TRY\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tr.webp\",\r\n phone_code: \"90\",\r\n },\r\n {\r\n name: \"Turkmenistan\",\r\n code: \"TM\",\r\n currency: \"TMT\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tm.webp\",\r\n phone_code: \"993\",\r\n },\r\n {\r\n name: \"Tuvalu\",\r\n code: \"TV\",\r\n currency: \"AUD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tv.webp\",\r\n phone_code: \"688\",\r\n },\r\n {\r\n name: \"Uganda\",\r\n code: \"UG\",\r\n currency: \"UGX\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ug.webp\",\r\n phone_code: \"256\",\r\n },\r\n {\r\n name: \"Ukraine\",\r\n code: \"UA\",\r\n currency: \"UAH\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ua.webp\",\r\n phone_code: \"380\",\r\n },\r\n {\r\n name: \"United Arab Emirates\",\r\n code: \"AE\",\r\n currency: \"AED\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ae.webp\",\r\n phone_code: \"971\",\r\n },\r\n {\r\n name: \"United Kingdom\",\r\n code: \"GB\",\r\n currency: \"GBP\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gb.webp\",\r\n phone_code: \"44\",\r\n },\r\n {\r\n name: \"United States\",\r\n code: \"US\",\r\n currency: \"USD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/us.webp\",\r\n phone_code: \"1\",\r\n },\r\n {\r\n name: \"Uruguay\",\r\n code: \"UY\",\r\n currency: \"UYU\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/uy.webp\",\r\n phone_code: \"598\",\r\n },\r\n {\r\n name: \"Uzbekistan\",\r\n code: \"UZ\",\r\n currency: \"UZS\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/uz.webp\",\r\n phone_code: \"998\",\r\n },\r\n {\r\n name: \"Vanuatu\",\r\n code: \"VU\",\r\n currency: \"VUV\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/vu.webp\",\r\n phone_code: \"678\",\r\n },\r\n {\r\n name: \"Vatican City\",\r\n code: \"VA\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/va.webp\",\r\n phone_code: \"379\",\r\n },\r\n {\r\n name: \"Venezuela\",\r\n code: \"VE\",\r\n currency: \"VES\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ve.webp\",\r\n phone_code: \"58\",\r\n },\r\n {\r\n name: \"Vietnam\",\r\n code: \"VN\",\r\n currency: \"VND\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/vn.webp\",\r\n phone_code: \"84\",\r\n },\r\n {\r\n name: \"Wallis and Futuna\",\r\n code: \"WF\",\r\n currency: \"XPF\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/wf.webp\",\r\n phone_code: \"681\",\r\n },\r\n {\r\n name: \"Western Sahara\",\r\n code: \"EH\",\r\n currency: \"MAD\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/eh.webp\",\r\n phone_code: \"212\",\r\n },\r\n {\r\n name: \"Yemen\",\r\n code: \"YE\",\r\n currency: \"YER\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ye.webp\",\r\n phone_code: \"967\",\r\n },\r\n {\r\n name: \"Zambia\",\r\n code: \"ZM\",\r\n currency: \"ZMW\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/zm.webp\",\r\n phone_code: \"260\",\r\n },\r\n {\r\n name: \"Zimbabwe\",\r\n code: \"ZW\",\r\n currency: \"ZWL\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/zw.webp\",\r\n phone_code: \"263\",\r\n },\r\n];\r\n","import {\r\n contractAddress,\r\n Custody,\r\n Provider,\r\n VerifiedWallet,\r\n} from \"@verified-network/verified-sdk\";\r\nimport {\r\n allGoogleFontUrls,\r\n defaultChainId,\r\n imageAssets,\r\n TwiloBaseUrl,\r\n} from \"./constants\";\r\nimport { ChainConfig, PaymasterConfig } from \"./config\";\r\nimport crypto from \"crypto\";\r\nimport crypt from \"crypto-js\";\r\nimport { toast } from \"react-toastify\";\r\nimport axios from \"axios\";\r\nimport { createSmartAccountClient } from \"@biconomy/account\";\r\nimport React from \"react\";\r\n\r\n/**\r\n *\r\n * @param document Any web page loaded in the browser / Dom tree\r\n */\r\nexport const loadAllGoogleFonts = (document: Document) => {\r\n const apiExists = document.querySelector(\r\n `link[href=\"https://fonts.googleapis.com\"]`\r\n );\r\n if (!apiExists) {\r\n const apiLink = document.createElement(\"link\");\r\n apiLink.rel = \"preconnect\";\r\n apiLink.href = \"https://fonts.googleapis.com\";\r\n document.head.appendChild(apiLink);\r\n }\r\n const staticExists = document.querySelector(\r\n `link[href=\"https://fonts.gstatic.com\"]`\r\n );\r\n if (!staticExists) {\r\n const staticLink = document.createElement(\"link\");\r\n staticLink.rel = \"preconnect\";\r\n staticLink.href = \"https://fonts.gstatic.com\";\r\n document.head.appendChild(staticLink);\r\n }\r\n allGoogleFontUrls.map((fontUrl) => {\r\n const fontExists = document.querySelector(`link[href=\"${fontUrl}\"]`);\r\n if (!fontExists) {\r\n const fontLink = document.createElement(\"link\");\r\n fontLink.rel = \"stylesheet\";\r\n fontLink.href = fontUrl;\r\n document.head.appendChild(fontLink);\r\n }\r\n });\r\n\r\n return true;\r\n};\r\n\r\n/**\r\n * initialize user's wallet and vault contract using existing private key or create a new wallet for user\r\n * unsupported/invalid chainId passed will automatically use default supported chainId\r\n * @param chainId\r\n * @param privateKey\r\n *\r\n */\r\nexport const initWalletAndContract = async (\r\n chainId?: number,\r\n privateKey?: string\r\n) => {\r\n try {\r\n let sender: VerifiedWallet;\r\n //import existing wallet or create new one.\r\n if (privateKey) {\r\n sender = new VerifiedWallet(privateKey);\r\n } else {\r\n const mnemonics = VerifiedWallet.generateMnemonic();\r\n sender = VerifiedWallet.importWallet(mnemonics);\r\n }\r\n\r\n //initialize provider, signer, privatekey and vault contract\r\n const cntAddresses: any = contractAddress;\r\n const _chainId =\r\n chainId &&\r\n cntAddresses[chainId]?.Custody &&\r\n ChainConfig[chainId]?.rpcUrls?.length > 0\r\n ? chainId\r\n : defaultChainId;\r\n const provider = ChainConfig[_chainId]?.rpcUrls[0];\r\n const signer = sender.setProvider(new Provider(provider));\r\n const pk = sender.privateKey;\r\n const vaultContract = new Custody(signer, cntAddresses[_chainId]?.Custody);\r\n const smartAccount = await createSmartAccountClient({\r\n signer: signer,\r\n bundlerUrl: `${PaymasterConfig.BUNDLER_URL_FIRST_SECTION}/${_chainId}/${PaymasterConfig[_chainId][\"BUNDLER_API_KEY\"]}`,\r\n biconomyPaymasterApiKey: PaymasterConfig[_chainId][\"PAYMASTER_API_KEY\"],\r\n });\r\n const address = await smartAccount.getAccountAddress();\r\n\r\n //valid return\r\n return {\r\n chainId: _chainId,\r\n address,\r\n pk,\r\n signer,\r\n provider,\r\n vaultContract,\r\n vaultData: null,\r\n };\r\n } catch (err) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\r\n \"Error while initializing user's wallet and contract: \",\r\n err\r\n );\r\n }\r\n //default return;\r\n return {\r\n chainId: null,\r\n address: null,\r\n pk: null,\r\n signer: null,\r\n provider: null,\r\n vaultContract: null,\r\n vaultData: null,\r\n };\r\n }\r\n};\r\n\r\nexport const sendOTPVerification = async (\r\n recipient: string,\r\n channel: \"sms\" | \"email\"\r\n) => {\r\n try {\r\n const data = JSON.stringify({\r\n to: recipient,\r\n channel: channel,\r\n });\r\n\r\n const response = await fetch(`${TwiloBaseUrl}/start-verify`, {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: data,\r\n });\r\n\r\n const json = await response.json();\r\n return json.success;\r\n } catch (error) {\r\n console.error(error);\r\n return false;\r\n }\r\n};\r\n\r\nexport const checkOTPVerification = async (recipient: string, code: string) => {\r\n try {\r\n const data = JSON.stringify({\r\n to: recipient,\r\n code,\r\n });\r\n\r\n const response = await fetch(`${TwiloBaseUrl}/check-verify`, {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: data,\r\n });\r\n\r\n const json = await response.json();\r\n return json.success;\r\n } catch (error) {\r\n console.error(error);\r\n return false;\r\n }\r\n};\r\n\r\nexport const hashTheString = (text: string) => {\r\n const hash = crypto.createHash(\"sha256\").update(text).digest(\"hex\");\r\n return hash.slice(0, 30); // Truncate to 30 characters\r\n};\r\n\r\nexport const encryptString = (text: string, secretKey: string) => {\r\n const encryptedAES = crypt.AES.encrypt(text, secretKey);\r\n return encryptedAES.toString();\r\n};\r\n\r\nexport const decryptString = (encryptedText: string, secretKey: string) => {\r\n var decryptedBytes = crypt.AES.decrypt(encryptedText, secretKey);\r\n var decryptedText = decryptedBytes.toString(crypt.enc.Utf8);\r\n return decryptedText;\r\n};\r\n\r\nexport const customEncryptString = (inputString: string, password: string) => {\r\n const salt = crypt.lib.WordArray.random(128 / 8);\r\n const key = crypt.PBKDF2(password, salt, {\r\n keySize: 256 / 32,\r\n iterations: 1000,\r\n });\r\n\r\n const iv = crypt.lib.WordArray.random(128 / 8);\r\n\r\n const encrypted = crypt.AES.encrypt(inputString, key, {\r\n iv: iv,\r\n padding: crypt.pad.Pkcs7,\r\n mode: crypt.mode.CBC,\r\n });\r\n\r\n const result = salt.toString() + iv.toString() + encrypted.toString();\r\n return result;\r\n};\r\n\r\nexport const customDecryptString = (\r\n encryptedString: string,\r\n password: string\r\n) => {\r\n const salt = crypt.enc.Hex.parse(encryptedString.substr(0, 32));\r\n const iv = crypt.enc.Hex.parse(encryptedString.substr(32, 32));\r\n const encrypted = encryptedString.substr(64);\r\n\r\n const key = crypt.PBKDF2(password, salt, {\r\n keySize: 256 / 32,\r\n iterations: 1000,\r\n });\r\n\r\n const decrypted = crypt.AES.decrypt(encrypted, key, {\r\n iv: iv,\r\n padding: crypt.pad.Pkcs7,\r\n mode: crypt.mode.CBC,\r\n });\r\n\r\n return decrypted.toString(crypt.enc.Utf8);\r\n};\r\n\r\nexport const getErrorToastContent = (title: string, content: string) => {\r\n return (\r\n <div className=\"verified-custd-mdl-general-web-toast-error\">\r\n <img style={{ marginLeft: \"5px\" }} src={imageAssets.errorAlert} alt=\"\" />\r\n <div className=\"verified-custd-mdl-general-web-toast-error-container\">\r\n <p className=\"verified-custd-mdl-general-web-toast-error-title\">\r\n {title}\r\n </p>\r\n <p className=\"verified-custd-mdl-general-web-toast-error-label\">\r\n {content}\r\n </p>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport const getSuccessToastContent = (\r\n title: string,\r\n content: string,\r\n link: string\r\n) => {\r\n return (\r\n <div className=\"verified-custd-mdl-general-web-toast-success\">\r\n <div className=\"verified-custd-mdl-general-web-toast-success-cont\">\r\n <img\r\n style={{ marginLeft: \"5px\" }}\r\n src={imageAssets.successAlert}\r\n alt=\"\"\r\n />\r\n <div className=\"verified-custd-mdl-general-web-toast-success-container\">\r\n <p className=\"verified-custd-mdl-general-web-toast-error-title\">\r\n {title}\r\n </p>\r\n <p className=\"verified-custd-mdl-general-web-toast-error-label\">\r\n {content}\r\n </p>\r\n </div>\r\n </div>\r\n {link?.length > 0 && (\r\n <div className=\"verified-custd-mdl-general-web-toast-success-link\">\r\n <a\r\n className=\"verified-custd-mdl-general-web-toast-success-link-text\"\r\n href={link}\r\n target=\"_blank\"\r\n rel=\"noreferrer\"\r\n >\r\n Follow your transaction.\r\n </a>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport const errorToast = (title: string, content: string) => {\r\n toast.dismiss();\r\n return toast.error(getErrorToastContent(title, content), {\r\n closeButton: false,\r\n position: \"top-center\",\r\n autoClose: 3000,\r\n hideProgressBar: false,\r\n pauseOnHover: false,\r\n draggable: false,\r\n closeOnClick: false,\r\n style: {\r\n background: \"#fef2f2\",\r\n width: \"600px\",\r\n height: \"67px\",\r\n maxHeight: \"67px\",\r\n position: \"absolute\",\r\n top: \"5px\",\r\n right: \"5px\",\r\n borderRadius: \"8px\",\r\n },\r\n icon: false,\r\n });\r\n};\r\n\r\nexport const successToast = (title: string, content: string, link: string) => {\r\n toast.dismiss();\r\n return toast.success(getSuccessToastContent(title, content, link), {\r\n closeButton: false,\r\n position: \"top-center\",\r\n autoClose: 3000,\r\n hideProgressBar: false,\r\n pauseOnHover: false,\r\n draggable: false,\r\n closeOnClick: false,\r\n style: {\r\n background: \"var(--Success-50, #F1F8ED)\",\r\n\r\n width: \"600px\",\r\n height: \"67px\",\r\n maxHeight: \"67px\",\r\n position: \"absolute\",\r\n top: \"5px\",\r\n right: \"5px\",\r\n borderRadius: \"8px\",\r\n },\r\n icon: false,\r\n });\r\n};\r\n","export const ChainConfig: any = {\r\n 1: {\r\n chainId: `0x${Number(1).toString(16)}`,\r\n chainName: \"Ethereum\",\r\n nativeCurrency: {\r\n name: \"ETH\",\r\n symbol: \"ETH\",\r\n decimals: 18,\r\n },\r\n rpcUrls: [\r\n `https://solemn-summer-patina.quiknode.pro/${process.env.REACT_APP_QUIKNODE_KEY}/`,\r\n ],\r\n blockExplorerUrls: [\"https://etherscan.io/\"],\r\n },\r\n\r\n 8453: {\r\n chainId: `0x${Number(8453).toString(16)}`,\r\n chainName: \"Base Mainnet\",\r\n nativeCurrency: {\r\n name: \"ETH\",\r\n symbol: \"ETH\",\r\n decimals: 18,\r\n },\r\n rpcUrls: [\r\n `https://red-quaint-pallet.base-mainnet.quiknode.pro/${process.env.REACT_APP_QUICKNODE_KEY}/`,\r\n ],\r\n blockExplorerUrls: [\"https://basescan.org/\"],\r\n },\r\n\r\n 100: {\r\n chainId: `0x${Number(100).toString(16)}`,\r\n chainName: \"Gnosis\",\r\n nativeCurrency: {\r\n name: \"XDAI\",\r\n symbol: \"XDAI\",\r\n decimals: 18,\r\n },\r\n rpcUrls: [\"https://rpc.gnosischain.com/\"],\r\n blockExplorerUrls: [\"https://gnosisscan.io/\"],\r\n },\r\n\r\n 11155111: {\r\n chainId: `0x${Number(11155111).toString(16)}`,\r\n chainName: \"Sepolia Test Network\",\r\n nativeCurrency: {\r\n name: \"ETH\",\r\n symbol: \"ETH\",\r\n decimals: 18,\r\n },\r\n rpcUrls: [\"https://eth-sepolia.public.blastapi.io\"],\r\n blockExplorerUrls: [\"https://sepolia.etherscan.io/\"],\r\n },\r\n\r\n 84532: {\r\n chainId: `0x${Number(84532).toString(16)}`,\r\n chainName: \"Base Sepolia\",\r\n nativeCurrency: {\r\n name: \"ETH\",\r\n symbol: \"ETH\",\r\n decimals: 18,\r\n },\r\n rpcUrls: [\"https://sepolia.base.org\"],\r\n blockExplorerUrls: [\"https://sepolia.basescan.org/\"],\r\n },\r\n};\r\n\r\nexport const PaymasterConfig: any = {\r\n BUNDLER_URL_FIRST_SECTION: \"https://bundler.biconomy.io/api/v2\",\r\n\r\n //ethereum sepolia\r\n 11155111: {\r\n PAYMASTER_API_KEY: \"BuFP2-5w-.5b3daf3a-d044-4dda-819c-4c4d8431df88\",\r\n BUNDLER_API_KEY: \"nJPK7B3ru.dd7f7861-190d-41bd-af80-6877f74b8f44\",\r\n },\r\n //polgon mainnet\r\n 137: {\r\n PAYMASTER_API_KEY: \"lDHvYk50N.30a2522e-0a9d-444b-b949-19194c1f237a\",\r\n BUNDLER_API_KEY: \"dewj2189.wh1289hU-7E49-45ic-af80-JkuxGCYRV\",\r\n },\r\n //base sepolia\r\n 84532: {\r\n PAYMASTER_API_KEY: \"jSBI-WRji.99a4dda1-1c20-42ea-9409-2724f9a0ca7e\",\r\n BUNDLER_API_KEY: \"nJPK7B3ru.dd7f7861-190d-41bd-af80-6877f74b8f44\",\r\n },\r\n\r\n //ethereum mainnet\r\n 1: {\r\n PAYMASTER_API_KEY: \"ap7LOqALI.bf68e672-47ce-40f8-8b62-ea508dcf5852\",\r\n BUNDLER_API_KEY: \"dewj402.wh1289hU-7E49-85b-af80-t6XmQ4yJs\",\r\n },\r\n\r\n //base mainnet\r\n 8453: {\r\n PAYMASTER_API_KEY: \"glRQsmuYh.5d9372ab-5063-4ecd-ac63-643fef624a73\",\r\n BUNDLER_API_KEY: \"dewj402.wh1289hU-7E49-85b-af80-t6XmQ4yJs\",\r\n },\r\n\r\n //gnosis\r\n 100: {\r\n PAYMASTER_API_KEY: \"eUYghbvi4.317a2d6d-6ee7-4a0c-b91f-43ba2699f65b\",\r\n BUNDLER_API_KEY: \"dewj402.wh1289hU-7E49-85b-af80-t6XmQ4yJs\",\r\n },\r\n};\r\n","import React, { useState } from \"react\";\r\nimport { useVaultStore } from \"../services/store\";\r\nimport { errorToast, sendOTPVerification } from \"../utils/helpers\";\r\nimport PageSlider from \"../components/slider\";\r\nimport SearchBox from \"../components/search\";\r\nimport {\r\n PrivacyOverlay,\r\n TermsAndConditionsOverlay,\r\n} from \"../components/overlays\";\r\nimport { imageAssets } from \"../utils/constants\";\r\n\r\nconst ContactPage = (props: {\r\n setStep: (step: string) => void;\r\n setIsLoading: (isLoading: boolean) => void;\r\n setUserNumberFmt: (number: string) => void;\r\n userNumberFmt: string;\r\n setUserEmail: (email: string) => void;\r\n userEmail: string;\r\n setSelectedCountry: (country: {\r\n name: string;\r\n area: string;\r\n flag: string;\r\n }) => void;\r\n selectedCountry: { name: string; area: string; flag: string };\r\n allCountries: any;\r\n}) => {\r\n const [userNumber, setUserNumber] = useState(\"\");\r\n const [userInput, setUserInput] = useState(\"\");\r\n const [searchActive, setSearchActive] = useState(false);\r\n const [sendOtpErrorText, setSendOtpErrorText] = useState(\"\");\r\n\r\n const { pk, vaultContract } = useVaultStore();\r\n\r\n const handleButtonDisplay = () => {\r\n const button = document.getElementById(\"verified-custd-mdl-contact-button\");\r\n if (button && props.selectedCountry.area && userNumber.length === 10) {\r\n setSendOtpErrorText(\"\");\r\n button.className = \"verified-custd-mdl-startup-button-active\";\r\n } else if (\r\n button &&\r\n props.userEmail?.length > 0 &&\r\n isNaN(Number(props.userEmail)) &&\r\n props.userEmail?.includes(\"@\")\r\n ) {\r\n setSendOtpErrorText(\"\");\r\n button.className = \"verified-custd-mdl-startup-button-active\";\r\n } else {\r\n setSendOtpErrorText(\"\");\r\n button!.className = \"verified-custd-mdl-startup-button\";\r\n }\r\n };\r\n\r\n const handleSendOTP = async () => {\r\n if (\r\n props.userEmail?.length > 0 &&\r\n !/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(props.userEmail)\r\n ) {\r\n setSendOtpErrorText(\"Invalid input, please check your email\");\r\n return;\r\n }\r\n\r\n const vaultId =\r\n props.userEmail?.length > 0\r\n ? props.userEmail\r\n : `+${props.selectedCountry.area}${userNumber}`;\r\n const channel = props.userEmail?.length > 0 ? \"email\" : \"sms\";\r\n\r\n if (vaultId && channel && pk && vaultContract) {\r\n props.setIsLoading(true);\r\n await sendOTPVerification(vaultId, channel).then((res: any) => {\r\n props.setIsLoading(false);\r\n if (res) {\r\n setSendOtpErrorText(\"\");\r\n props.setStep(\"3\");\r\n } else {\r\n setSendOtpErrorText(\r\n channel === \"email\"\r\n ? \"Error while sending otp to your email. Try again later.\"\r\n : \"Error while sending otp to your phone number. Try again later.\"\r\n );\r\n errorToast(\r\n \"Oops something went wrong\",\r\n props.userEmail?.length > 0\r\n ? `Input a valid email and try again.`\r\n : `Input a valid phone number and try again.`\r\n );\r\n }\r\n });\r\n }\r\n };\r\n\r\n return (\r\n <div className=\"verified-custd-mdl-startup-language\">\r\n <div className=\"verified-custd-mdl-startup-contact\">\r\n <PageSlider sliderCount={[1, 2, 3]} currentSlider=\"0\" />\r\n <div className=\"verified-custd-mdl-startup-contact-content\">\r\n <p className=\"verified-custd-mdl-startup-contact-text\">\r\n Enter your phone number\r\n </p>\r\n <div className=\"verified-custd-mdl-st-contact-input\">\r\n <div className=\"verified-custd-mdl-st-contact-content-container\">\r\n <div\r\n onClick={() => {\r\n setSearchActive(!searchActive);\r\n }}\r\n className=\"verified-custd-mdl-st-contact-first-section\"\r\n >\r\n <img\r\n onClick={() => {\r\n setSearchActive(!searchActive);\r\n }}\r\n alt=\"Country Flag\"\r\n className=\"verified-custd-mdl-st-contact-selection-icon\"\r\n src={props.selectedCountry.flag}\r\n />\r\n <p\r\n onClick={() => {\r\n setSearchActive(!searchActive);\r\n }}\r\n className=\"verified-custd-mdl-st-contact-selection-text\"\r\n >\r\n + {props.selectedCountry.area}\r\n </p>\r\n {searchActive && (\r\n <img\r\n onClick={() => {\r\n setSearchActive(!searchActive);\r\n }}\r\n alt=\"Dropdown Icon\"\r\n className=\"verified-custd-mdl-st-contact-dropdown\"\r\n src={imageAssets.arrowUp}\r\n />\r\n )}\r\n {!searchActive && (\r\n <img\r\n onClick={() => {\r\n setSearchActive(!searchActive);\r\n }}\r\n alt=\"Dropdown Icon\"\r\n className=\"verified-custd-mdl-st-contact-dropdown\"\r\n src={imageAssets.arrowDown}\r\n />\r\n )}\r\n </div>\r\n\r\n <input\r\n onInputCapture={(e: any) => {\r\n if (e.target.value === \"\") {\r\n setUserInput(userInput + \" \");\r\n } else {\r\n setUserInput(e.target.value);\r\n }\r\n const numericInput = e.target.value?.replace(/\\D/g, \"\");\r\n setUserNumber(numericInput);\r\n let formattedNumber = \"\";\r\n for (let i = 0; i < numericInput?.length; i++) {\r\n formattedNumber += numericInput[i];\r\n if ((i + 1) % 5 === 0 && i + 1 < numericInput?.length) {\r\n formattedNumber += \" \";\r\n }\r\n }\r\n props.setUserNumberFmt(formattedNumber);\r\n }}\r\n onInput={(e) => {\r\n handleButtonDisplay();\r\n }}\r\n value={props.userNumberFmt}\r\n id=\"phone-input\"\r\n type=\"text\"\r\n className=\"verified-custd-mdl-st-contact-second-section\"\r\n placeholder=\"Enter your phone number\"\r\n />\r\n </div>\r\n {searchActive && (\r\n <SearchBox\r\n pageName=\"ftu/contact\"\r\n searchContent={props.allCountries}\r\n type=\"area-code\"\r\n handleButtonDisplay={handleButtonDisplay}\r\n setSelected={props.setSelectedCountry}\r\n selected={props.selectedCountry}\r\n searchActive={searchActive}\r\n setSearchActive={setSearchActive}\r\n contentMaxHeight=\"300\"\r\n contentbottomMargin=\"300\"\r\n />\r\n )}\r\n {userNumber.length !== 10 && userInput.length > 10 && (\r\n <div className=\"verified-custd-mdl-st-contact-input-error\">\r\n <p className=\"verified-custd-mdl-input-error-text\">\r\n Invalid input, please check your phone number\r\n </p>\r\n </div>\r\n )}\r\n {sendOtpErrorText?.length > 0 && props.userEmail?.length === 0 && (\r\n <div className=\"verified-custd-mdl-st-contact-input-error\">\r\n <p className=\"verified-custd-mdl-input-error-text\">\r\n {sendOtpErrorText}\r\n </p>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n {!searchActive && (\r\n <React.Fragment>\r\n <div className=\"verified-custd-mdl-p-p-payment-portal-amount-info-separator\">\r\n <div className=\"verified-custd-mdl-p-p-payment-portal-line\"></div>\r\n <p className=\"verified-custd-mdl-p-payment-portal-separator-text\">\r\n OR\r\n </p>\r\n <div className=\"verified-custd-mdl-p-p-payment-portal-line\"></div>\r\n </div>\r\n <div className=\"verified-custd-mdl-st-contact-input\">\r\n <input\r\n onInputCapture={(e: any) => {\r\n props.setUserEmail(e.target?.value);\r\n props.setUserNumberFmt(\"\");\r\n setUserNumber(\"\");\r\n setUserInput(\"\");\r\n }}\r\n onInput={(e) => {\r\n handleButtonDisplay();\r\n }}\r\n type=\"text\"\r\n className=\"verified-custd-mdl-st-contact-second-section\"\r\n placeholder=\"Enter your email address\"\r\n />\r\n {sendOtpErrorText?.length > 0 && props.userEmail?.length > 0 && (\r\n <div className=\"verified-custd-mdl-st-contact-input-error\">\r\n <p className=\"verified-custd-mdl-input-error-text\">\r\n {sendOtpErrorText}\r\n </p>\r\n </div>\r\n )}\r\n </div>\r\n </React.Fragment>\r\n )}\r\n </div>\r\n\r\n {!searchActive && <div style={{ height: \"80px\" }}></div>}\r\n\r\n <div className=\"verified-custd-mdl-startup-contact-footer\">\r\n <div className=\"verified-custd-mdl-st-contact-footer-first-section\">\r\n <TermsAndConditionsOverlay />\r\n <button\r\n id=\"verified-custd-mdl-contact-button\"\r\n onClick={async (e: any) => {\r\n if (\r\n e.target.className.includes(\r\n \"verified-custd-mdl-startup-button\"\r\n ) &&\r\n e.target.className !== \"verified-custd-mdl-startup-button\"\r\n ) {\r\n e.target.className = \"verified-custd-mdl-startup-button-click\";\r\n await handleSendOTP();\r\n } else {\r\n const buttonElement = document.getElementsByClassName(\r\n \"verified-custd-mdl-startup-button-active\"\r\n );\r\n if (buttonElement.length > 0) {\r\n buttonElement[0].className =\r\n \"verified-custd-mdl-startup-button-click\";\r\n await handleSendOTP();\r\n }\r\n }\r\n }}\r\n className=\"verified-custd-mdl-startup-button\"\r\n >\r\n Get OTP\r\n </button>\r\n <div className=\"verified-custd-mdl-st-contact-footer-second-section\">\r\n <PrivacyOverlay />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default ContactPage;\r\n","import React from \"react\";\r\n\r\nconst PageSlider = (props: any) => {\r\n return (\r\n <div className=\"verified-custd-mdl-startup-slider\">\r\n {props.sliderCount?.length > 0 &&\r\n props.sliderCount.map((_: any, idx: number) => (\r\n <React.Fragment key={idx}>\r\n {idx <= Number(props.currentSlider) && (\r\n <div\r\n key={`active-${idx}`}\r\n style={{ width: `${100 / props.sliderCount.length}%` }}\r\n className=\"verified-custd-mdl-startup-slider-line-active\"\r\n ></div>\r\n )}\r\n {idx > Number(props.currentSlider) && (\r\n <div\r\n key={`inactive-${idx}`}\r\n style={{ width: `${100 / props.sliderCount.length}%` }}\r\n className=\"verified-custd-mdl-startup-slider-line\"\r\n ></div>\r\n )}\r\n </React.Fragment>\r\n ))}\r\n </div>\r\n );\r\n};\r\n\r\nexport default PageSlider;\r\n","import React, { useState } from \"react\";\r\nimport { imageAssets } from \"../utils/constants\";\r\n\r\nconst SearchBox = (props: any) => {\r\n const [newSearchContent, setNewSearchContent] = useState<null | [Object]>(\r\n null\r\n );\r\n\r\n return (\r\n <div className=\"verified-custd-mdl-startup-language-content-container\">\r\n <div className=\"verified-custd-mdl-st-language-content\">\r\n {props.headerText && (\r\n <p className=\"verified-custd-mdl-st-language-text\">\r\n {props.headerText}\r\n </p>\r\n )}\r\n <div className=\"verified-custd-mdl-mobille-startup-search-box-container\">\r\n <div className=\"verified-custd-mdl-mobile-startup-search-box\">\r\n <img\r\n style={{ paddingLeft: \"6px\" }}\r\n src={imageAssets.search}\r\n alt=\"Search Icon\"\r\n className=\"verified-custd-mdl-mobile-search-icon\"\r\n />\r\n <input\r\n onInputCapture={() => {\r\n if (props.type === \"language\") {\r\n props.setSelected(\"\");\r\n }\r\n }}\r\n onInput={(e: any) => {\r\n if (e.target.value === \"\") {\r\n setNewSearchContent(null);\r\n } else {\r\n if (props.type === \"language\") {\r\n setNewSearchContent(\r\n // eslint-disable-next-line array-callback-return\r\n props.searchContent.filter((src: any) => {\r\n if (\r\n src.name\r\n .toLowerCase()\r\n .includes(e.target.value.toLowerCase())\r\n ) {\r\n src.searched = e.target.value.toLowerCase();\r\n src.nameArray = src.name.split(\"\");\r\n return src;\r\n }\r\n })\r\n );\r\n } else if (props.type === \"area-code\") {\r\n setNewSearchContent(\r\n // eslint-disable-next-line array-callback-return\r\n\r\n props.searchContent.filter((src: any) => {\r\n if (\r\n src?.name\r\n ?.toLowerCase()\r\n .includes(e.target.value.toLowerCase())\r\n ) {\r\n src.searched = e.target.value.toLowerCase();\r\n src.nameArray = src?.name?.split(\"\");\r\n return src;\r\n }\r\n })\r\n );\r\n }\r\n }\r\n\r\n props.handleButtonDisplay();\r\n }}\r\n type=\"text\"\r\n className=\"verified-custd-mdl-ms-search-box-content\"\r\n placeholder=\"Search\"\r\n />\r\n </div>\r\n <div className=\"verified-custd-mdl-mobile-startup-search-content\">\r\n <div\r\n style={\r\n props.contentMaxHeight\r\n ? { maxHeight: `${props.contentMaxHeight}px` }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-ms-search-content-container\"\r\n >\r\n {!newSearchContent &&\r\n props?.searchContent?.length > 0 &&\r\n props.searchContent.map((src: any, idx: number) => (\r\n <React.Fragment key={idx}>\r\n {props.type === \"area-code\" && (\r\n <div\r\n key={idx}\r\n onClickCapture={() => {\r\n props.setSelected({\r\n area: src.phone_code,\r\n flag: src.flag,\r\n name: src.name,\r\n });\r\n }}\r\n onClick={() => {\r\n if (props.setSearchActive) {\r\n props.setSearchActive(!props.setSearchActive);\r\n }\r\n props.handleButtonDisplay();\r\n }}\r\n className=\"verified-custd-mdl-ms-search-content\"\r\n >\r\n <img\r\n src={src.flag}\r\n alt=\"Search Result Icon\"\r\n className=\"verified-custd-mdl-ms-search-content-icon\"\r\n />\r\n <p className=\"verified-custd-mdl-ms-search-content-text\">\r\n {src.name}\r\n </p>\r\n </div>\r\n )}\r\n {props.type === \"language\" && (\r\n <React.Fragment>\r\n {window.location.search !== `?${idx}` && (\r\n <div\r\n key={idx}\r\n onClickCapture={() => {\r\n props.setSelected(src.name);\r\n }}\r\n onClick={() => {\r\n props.setSelected(src.name);\r\n if (props.setSearchActive) {\r\n props.setSearchActive(!props.setSearchActive);\r\n }\r\n props.handleButtonDisplay();\r\n }}\r\n className=\"verified-custd-mdl-ms-search-content\"\r\n >\r\n <img\r\n src={src.icon}\r\n alt=\"Search Result Icon\"\r\n className=\"verified-custd-mdl-ms-search-content-icon\"\r\n />\r\n {src.label && (\r\n <p className=\"verified-custd-mdl-ms-search-content-text\">\r\n {src.name} {`(${src.label})`}\r\n </p>\r\n )}\r\n {!src.label && (\r\n <p className=\"verified-custd-mdl-ms-search-content-text\">\r\n {src.name}\r\n </p>\r\n )}\r\n </div>\r\n )}\r\n {window.location.search === `?${idx}` && (\r\n <div\r\n key={idx}\r\n onClickCapture={() => {\r\n props.setSelected(src.name);\r\n }}\r\n onClick={() => {\r\n props.setSelected(src.name);\r\n if (props.setSearchActive) {\r\n props.setSearchActive(!props.setSearchActive);\r\n }\r\n props.handleButtonDisplay();\r\n }}\r\n className=\"verified-custd-mdl-ms-search-content-active\"\r\n >\r\n <div className=\"verified-custd-mdl-ms-search-content-text-container\">\r\n <img\r\n src={src.icon}\r\n alt=\"Search Result Icon\"\r\n className=\"verified-custd-mdl-ms-search-content-icon\"\r\n />\r\n {src.label && (\r\n <p className=\"verified-custd-mdl-ms-search-content-text\">\r\n {src.name} {`(${src.label})`}\r\n </p>\r\n )}\r\n {!src.label && (\r\n <p className=\"verified-custd-mdl-ms-search-content-text\">\r\n {src.name}\r\n </p>\r\n )}\r\n </div>\r\n {props.selected && props.selected.length > 0 && (\r\n <img\r\n src={imageAssets.circleClicked}\r\n alt=\"Clicked Icon\"\r\n />\r\n )}\r\n </div>\r\n )}\r\n </React.Fragment>\r\n )}\r\n </React.Fragment>\r\n ))}\r\n\r\n {newSearchContent &&\r\n newSearchContent.length > 0 &&\r\n newSearchContent.map((src: any, idx: number) => (\r\n <React.Fragment key={idx}>\r\n {props.type === \"area-code\" && (\r\n <div\r\n key={idx}\r\n onClickCapture={() => {\r\n props.setSelected({\r\n area: src?.phone_code,\r\n flag: src?.flag,\r\n name: src?.name,\r\n });\r\n }}\r\n onClick={() => {\r\n if (props.setSearchActive) {\r\n props.setSearchActive(!props.setSearchActive);\r\n }\r\n props.handleButtonDisplay();\r\n }}\r\n className=\"verified-custd-mdl-ms-search-content\"\r\n >\r\n <img\r\n src={src?.flag}\r\n alt=\"Search Result Icon\"\r\n className=\"verified-custd-mdl-ms-search-content-icon\"\r\n />\r\n <p className=\"verified-custd-mdl-ms-search-content-text\">\r\n {src?.nameArray?.length > 0 &&\r\n src?.nameArray.map((nm: any, idx: number) => (\r\n <React.Fragment key={idx}>\r\n {!src.searched.includes(nm.toLowerCase()) && (\r\n <span\r\n key={idx}\r\n style={{\r\n color: \"#B6B7C3\",\r\n }}\r\n >\r\n {nm}\r\n </span>\r\n )}\r\n {src.searched.includes(nm.toLowerCase()) && (\r\n <span key={idx}>{nm}</span>\r\n )}\r\n </React.Fragment>\r\n ))}\r\n </p>\r\n </div>\r\n )}\r\n {props.type === \"language\" && (\r\n <React.Fragment key={idx}>\r\n {window.location.search !== `?${idx}` && (\r\n <div\r\n onClickCapture={() => {\r\n props.setSelected(src.name);\r\n }}\r\n onClick={() => {\r\n props.setSelected(src.name);\r\n if (props.setSearchActive) {\r\n props.setSearchActive(!props.setSearchActive);\r\n }\r\n props.handleButtonDisplay();\r\n }}\r\n className=\"verified-custd-mdl-ms-search-content\"\r\n >\r\n <img\r\n src={src.icon}\r\n alt=\"Search Result Icon\"\r\n className=\"verified-custd-mdl-ms-search-content-icon\"\r\n />\r\n {!src.label && (\r\n <p className=\"verified-custd-mdl-ms-search-content-text\">\r\n {src.nameArray?.length > 0 &&\r\n src.nameArray.map((nm: any, idx: number) => (\r\n <React.Fragment key={idx}>\r\n {!src.searched.includes(\r\n nm.toLowerCase()\r\n ) && (\r\n <span\r\n key={idx}\r\n style={{\r\n color: \"#B6B7C3\",\r\n }}\r\n >\r\n {nm}\r\n </span>\r\n )}\r\n {src.searched.includes(\r\n nm.toLowerCase()\r\n ) && <span key={idx}>{nm}</span>}\r\n </React.Fragment>\r\n ))}\r\n </p>\r\n )}\r\n {src.label && (\r\n <p className=\"verified-custd-mdl-ms-search-content-text\">\r\n {src.nameArray?.length > 0 &&\r\n src.nameArray.map((nm: any, idx: number) => (\r\n <React.Fragment key={idx}>\r\n {!src.searched.includes(\r\n nm.toLowerCase()\r\n ) && (\r\n <span\r\n key={idx}\r\n style={{\r\n color: \"#B6B7C3\",\r\n }}\r\n >\r\n {nm}\r\n </span>\r\n )}\r\n {src.searched.includes(\r\n nm.toLowerCase()\r\n ) && <span key={idx}>{nm}</span>}\r\n </React.Fragment>\r\n ))}\r\n {!src.searched.includes(\r\n src.label.toLowerCase()\r\n ) && (\r\n <span\r\n style={{\r\n color: \"#B6B7C3\",\r\n }}\r\n >{` (${src.label})`}</span>\r\n )}\r\n {src.searched.includes(\r\n src.label.toLowerCase()\r\n ) && <span>{` (${src.label})`}</span>}\r\n </p>\r\n )}\r\n </div>\r\n )}\r\n {window.location.search === `?${idx}` && (\r\n <div\r\n key={idx}\r\n onClickCapture={() => {\r\n props.setSelected(src.name);\r\n }}\r\n onClick={() => {\r\n props.setSelected(src.name);\r\n if (props.setSearchActive) {\r\n props.setSearchActive(!props.setSearchActive);\r\n }\r\n props.handleButtonDisplay();\r\n }}\r\n className=\"verified-custd-mdl-ms-search-content-active\"\r\n >\r\n <div className=\"verified-custd-mdl-ms-search-content-text-container\">\r\n <img\r\n src={src.icon}\r\n alt=\"Search Result Icon\"\r\n className=\"verified-custd-mdl-ms-search-content-icon\"\r\n />\r\n {src.label && (\r\n <p className=\"verified-custd-mdl-ms-search-content-text\">\r\n {src.name} {`(${src.label})`}\r\n </p>\r\n )}\r\n {!src.label && (\r\n <p className=\"verified-custd-mdl-ms-search-content-text\">\r\n {src.name}\r\n </p>\r\n )}\r\n </div>\r\n\r\n {props.selected && props.selected.length > 0 && (\r\n <img\r\n src={imageAssets.circleClicked}\r\n alt=\"Clicked Icon\"\r\n />\r\n )}\r\n </div>\r\n )}\r\n </React.Fragment>\r\n )}\r\n </React.Fragment>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default SearchBox;\r\n","import React from \"react\";\r\nimport { imageAssets } from \"../utils/constants\";\r\n\r\nexport const TermsAndConditionsOverlay = () => {\r\n return (\r\n <p className=\"verified-custd-mdl-terms-and-condition\">\r\n By proceeding, you agree with Verified Wallet{\" \"}\r\n <span style={{ color: \"#603FF4\", cursor: \"pointer\" }}>T&C</span> and{\" \"}\r\n <span style={{ color: \"#603FF4\", cursor: \"pointer\" }}>\r\n Privacy Policy.\r\n </span>\r\n </p>\r\n );\r\n};\r\n\r\nexport const LogoutOverlay = (props: {\r\n setIsLoading: (isLoading: boolean) => void;\r\n setisOnboard?: (isOnboard: boolean) => void;\r\n}) => {\r\n return (\r\n <p\r\n style={{ fontSize: \"0.7rem\" }}\r\n className=\"verified-custd-mdl-terms-and-condition\"\r\n >\r\n Want to access a different account? Click{\" \"}\r\n <span\r\n style={{ color: \"#603FF4\", cursor: \"pointer\" }}\r\n onClick={async () => {\r\n props.setIsLoading(true);\r\n if (chrome?.storage?.local) {\r\n await chrome.storage.local.remove(\"myVault\");\r\n } else if (!chrome?.storage?.local && localStorage) {\r\n localStorage.removeItem(\"myVault\");\r\n }\r\n if (props.setisOnboard) {\r\n props.setisOnboard(false);\r\n }\r\n props.setIsLoading(false);\r\n }}\r\n >\r\n Logout\r\n </span>{\" \"}\r\n to logout and login/create another account\r\n </p>\r\n );\r\n};\r\n\r\nexport const PrivacyOverlay = () => {\r\n return (\r\n <div className=\"verified-custd-mdl-privacy\">\r\n <img\r\n alt=\"Privacy Icon\"\r\n src={imageAssets.privacyTip}\r\n className=\"verified-custd-mdl-privacy-icon\"\r\n />\r\n <p className=\"verified-custd-mdl-privacy-text\">\r\n Trusted by 10M+ Investors globally\r\n </p>\r\n </div>\r\n );\r\n};\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { useVaultStore } from \"../services/store\";\r\nimport {\r\n checkOTPVerification,\r\n errorToast,\r\n sendOTPVerification,\r\n} from \"../utils/helpers\";\r\nimport PageSlider from \"../components/slider\";\r\nimport { PrivacyOverlay } from \"../components/overlays\";\r\nimport { imageAssets } from \"../utils/constants\";\r\n\r\nconst OTPPage = (props: {\r\n setStep: (step: string) => void;\r\n setIsLoading: (isLoading: boolean) => void;\r\n setUserNumberFmt: (number: string) => void;\r\n setUserEmail: (email: string) => void;\r\n selectedCountry: { name: string; area: string; flag: string };\r\n userNumberFmt: string;\r\n userEmail: string;\r\n}) => {\r\n const [searchActive, setSearchActive] = useState(false);\r\n const [countdown, setCountdown] = useState(60);\r\n const [otpIncorrect, setOtpIncorrect] = useState(false);\r\n\r\n const { pk, vaultContract } = useVaultStore();\r\n\r\n useEffect(() => {\r\n if (countdown === 0) return;\r\n\r\n const reduceCountdown = setInterval(() => {\r\n setCountdown((prevCountdown) => prevCountdown - 1);\r\n }, 1000);\r\n\r\n return () => clearInterval(reduceCountdown);\r\n }, [countdown]);\r\n\r\n //todo: add key actions to input focus change\r\n const handlleInputFocus = (currentInput: any) => {\r\n if (currentInput.value.length > 0) {\r\n const nextInput = currentInput.nextElementSibling;\r\n if (nextInput) {\r\n nextInput.focus();\r\n }\r\n } else if (currentInput.value.length === 0) {\r\n currentInput.focus();\r\n }\r\n };\r\n\r\n const handleOtpPaste = (e: any) => {\r\n const pastedText = e.clipboardData.getData(\"text\");\r\n const numbersFromText = pastedText?.replace(/\\D/g, \"\");\r\n const allOptInputs: any = document.getElementsByClassName(\"otp-input\");\r\n if (allOptInputs?.length === 4 && numbersFromText?.length > 0) {\r\n for (let i = 0; i < allOptInputs.length; i++) {\r\n if (numbersFromText[i]) {\r\n allOptInputs[i].value = numbersFromText[i];\r\n allOptInputs[i].focus();\r\n }\r\n }\r\n }\r\n };\r\n\r\n const handleOtpBackspace = (e: any) => {\r\n const previousInpput = e.target.previousElementSibling;\r\n if (previousInpput) {\r\n previousInpput.focus();\r\n }\r\n };\r\n\r\n const handleButtonDisplay = () => {\r\n const button: any = document.getElementById(\r\n \"verified-custd-mdl-otp-button\"\r\n );\r\n const otp1: any = document.getElementById(\"verified-custd-mdl-otp-input-1\");\r\n const otp2: any = document.getElementById(\"verified-custd-mdl-otp-input-2\");\r\n const otp3: any = document.getElementById(\"verified-custd-mdl-otp-input-3\");\r\n const otp4: any = document.getElementById(\"verified-custd-mdl-otp-input-4\");\r\n if (\r\n button &&\r\n otp1?.value.length > 0 &&\r\n otp2?.value.length > 0 &&\r\n otp3?.value.length > 0 &&\r\n otp4?.value.length > 0 &&\r\n !otpIncorrect\r\n ) {\r\n button.className = \"verified-custd-mdl-startup-button-active\";\r\n } else {\r\n button.className = \"verified-custd-mdl-startup-button\";\r\n }\r\n };\r\n\r\n const handleVerifyOtp = async () => {\r\n const vaultId =\r\n props.userEmail?.length > 0\r\n ? props.userEmail\r\n : `+${props.selectedCountry.area}${props.userNumberFmt?.replace(\r\n \" \",\r\n \"\"\r\n )}`;\r\n const otp1: any = document.getElementById(\"verified-custd-mdl-otp-input-1\");\r\n const otp2: any = document.getElementById(\"verified-custd-mdl-otp-input-2\");\r\n const otp3: any = document.getElementById(\"verified-custd-mdl-otp-input-3\");\r\n const otp4: any = document.getElementById(\"verified-custd-mdl-otp-input-4\");\r\n if (\r\n otp1?.value?.length > 0 &&\r\n otp2?.value?.length > 0 &&\r\n otp3?.value?.length > 0 &&\r\n otp4?.value?.length > 0 &&\r\n vaultId &&\r\n pk &&\r\n vaultContract\r\n ) {\r\n props.setIsLoading(true);\r\n const fullOtp = otp1?.value + otp2?.value + otp3?.value + otp4?.value;\r\n await checkOTPVerification(vaultId, fullOtp).then((res) => {\r\n props.setIsLoading(false);\r\n if (res) {\r\n props.setStep(\"4\");\r\n } else {\r\n setOtpIncorrect(true);\r\n }\r\n });\r\n }\r\n };\r\n\r\n const handleResendOtp = async () => {\r\n const vaultId =\r\n props.userEmail?.length > 0\r\n ? props.userEmail\r\n : `+${props.selectedCountry.area}${props.userNumberFmt?.replace(\r\n \" \",\r\n \"\"\r\n )}`;\r\n\r\n const channel = props.userEmail?.length > 0 ? \"email\" : \"sms\";\r\n\r\n if (vaultId && channel) {\r\n props.setIsLoading(true);\r\n await sendOTPVerification(vaultId, channel).then((res) => {\r\n props.setIsLoading(false);\r\n if (res) {\r\n setCountdown(60);\r\n setOtpIncorrect(false);\r\n const otp1: any = document.getElementById(\r\n \"verified-custd-mdl-otp-input-1\"\r\n );\r\n const otp2: any = document.getElementById(\r\n \"verified-custd-mdl-otp-input-2\"\r\n );\r\n const otp3: any = document.getElementById(\r\n \"verified-custd-mdl-otp-input-3\"\r\n );\r\n const otp4: any = document.getElementById(\r\n \"verified-custd-mdl-otp-input-4\"\r\n );\r\n (otp1!.value = \"\"),\r\n (otp2!.value = \"\"),\r\n (otp3!.value = \"\"),\r\n (otp4!.value = \"\");\r\n } else {\r\n errorToast(\"Oops something went wrong\", \"Unexpected error\");\r\n }\r\n });\r\n }\r\n };\r\n\r\n return (\r\n <div className=\"verified-custd-mdl-startup-language\">\r\n <div className=\"verified-custd-mdl-startup-contact\">\r\n <PageSlider sliderCount={[1, 2, 3]} currentSlider=\"0\" />\r\n <div className=\"verified-custd-mdl-startup-contact-content\">\r\n <p className=\"verified-custd-mdl-startup-contact-text\">Enter OTP</p>\r\n <div className=\"verified-custd-mdl-startup-otp-text\">\r\n <p className=\"verified-custd-mdl-startup-otp-header-text\">\r\n Enter <span style={{ color: \"#0C0C0E\" }}>4-Digit OTP</span> (One\r\n Time Password) sent to your{\" \"}\r\n {props.userNumberFmt?.length > 0\r\n ? \"phone number\"\r\n : \"email address\"}\r\n </p>\r\n <div className=\"verified-custd-mdl-startup-otp-footer\">\r\n <p className=\"verified-custd-mdl-startup-otp-footer-text\">\r\n {props.userNumberFmt?.length > 0 && (\r\n <React.Fragment>\r\n <span>(+{props.selectedCountry?.area})</span>{\" \"}\r\n <span> {props.userNumberFmt?.split(\" \")[0]}</span>{\" \"}\r\n <span> {props.userNumberFmt?.split(\" \")[1]}</span>\r\n </React.Fragment>\r\n )}\r\n {props.userEmail?.length > 0 && <span>{props.userEmail}</span>}\r\n </p>\r\n <img\r\n onClick={() => {\r\n props.setUserNumberFmt(\"\");\r\n props.setUserEmail(\"\");\r\n props.setStep(\"2\");\r\n }}\r\n src={imageAssets.editBlue}\r\n alt=\"edit-icon\"\r\n className=\"verified-custd-mdl-st-otp-icon\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"verified-custd-mdl-otp-input-container\">\r\n <div className=\"verified-custd-mdl-otp-input-group\">\r\n <input\r\n onInputCapture={(e: any) => {\r\n e.target.value = e.target.value?.replace(/\\D/g, \"\");\r\n setOtpIncorrect(false);\r\n }}\r\n onInput={(e) => {\r\n handlleInputFocus(e.target);\r\n handleButtonDisplay();\r\n }}\r\n onKeyDown={(e: any) => {\r\n if (e.key === \"Backspace\" && e.target.value === \"\") {\r\n handleOtpBackspace(e);\r\n }\r\n }}\r\n onPaste={(e) => {\r\n handleOtpPaste(e);\r\n }}\r\n className={\r\n otpIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n type=\"text\"\r\n maxLength={1}\r\n id=\"verified-custd-mdl-otp-input-1\"\r\n />\r\n <input\r\n onInputCapture={(e: any) => {\r\n e.target.value = e.target.value?.replace(/\\D/g, \"\");\r\n setOtpIncorrect(false);\r\n }}\r\n onInput={(e) => {\r\n handlleInputFocus(e.target);\r\n handleButtonDisplay();\r\n }}\r\n onKeyDown={(e: any) => {\r\n if (e.key === \"Backspace\" && e.target.value === \"\") {\r\n handleOtpBackspace(e);\r\n }\r\n }}\r\n className={\r\n otpIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n type=\"text\"\r\n maxLength={1}\r\n id=\"verified-custd-mdl-otp-input-2\"\r\n />\r\n <input\r\n onInputCapture={(e: any) => {\r\n e.target.value = e.target.value?.replace(/\\D/g, \"\");\r\n setOtpIncorrect(false);\r\n }}\r\n onInput={(e) => {\r\n handlleInputFocus(e.target);\r\n handleButtonDisplay();\r\n }}\r\n onKeyDown={(e: any) => {\r\n if (e.key === \"Backspace\" && e.target.value === \"\") {\r\n handleOtpBackspace(e);\r\n }\r\n }}\r\n className={\r\n otpIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n type=\"text\"\r\n maxLength={1}\r\n id=\"verified-custd-mdl-otp-input-3\"\r\n />\r\n <input\r\n onInputCapture={(e: any) => {\r\n e.target.value = e.target.value?.replace(/\\D/g, \"\");\r\n setOtpIncorrect(false);\r\n }}\r\n onInput={(e) => {\r\n handlleInputFocus(e.target);\r\n handleButtonDisplay();\r\n }}\r\n onKeyDown={(e: any) => {\r\n if (e.key === \"Backspace\" && e.target.value === \"\") {\r\n handleOtpBackspace(e);\r\n }\r\n }}\r\n className={\r\n otpIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n type=\"text\"\r\n maxLength={1}\r\n id=\"verified-custd-mdl-otp-input-4\"\r\n />\r\n </div>\r\n <div className=\"verified-custd-mdl-otp-timer\">\r\n {!otpIncorrect && countdown > 5 && (\r\n <p className=\"verified-custd-mdl-otp-timer-text\">\r\n <span style={{ color: \"#717286\", fontWeight: 400 }}>00:</span>\r\n {countdown}\r\n </p>\r\n )}\r\n {!otpIncorrect && countdown <= 5 && countdown > 0 && (\r\n <p className=\"verified-custd-mdl-otp-timer-text-red\">\r\n <span style={{ fontWeight: 400 }}>00:</span>\r\n {countdown}\r\n </p>\r\n )}\r\n {!otpIncorrect && countdown === 0 && (\r\n <p className=\"verified-custd-mdl-otp-resend-text\">\r\n Didn't receive an OTP ?\r\n </p>\r\n )}\r\n {otpIncorrect && (\r\n <p className=\"verified-custd-mdl-otp-incorrect-text\">\r\n Please enter the correct OTP\r\n </p>\r\n )}\r\n {!otpIncorrect && countdown > 0 && (\r\n <p className=\"verified-custd-mdl-otp-resend-text\">Resend OTP</p>\r\n )}\r\n {!otpIncorrect && countdown === 0 && (\r\n <p\r\n onClick={async () => {\r\n //clear input content\r\n const inputs: any =\r\n document.getElementsByClassName(\"otp-input\");\r\n if (inputs) {\r\n for (let i = 0; i < inputs.length; i++) {\r\n inputs[i].value = \"\";\r\n }\r\n }\r\n\r\n await handleResendOtp();\r\n }}\r\n className=\"verified-custd-mdl-otp-resend-text-active\"\r\n >\r\n Resend OTP\r\n </p>\r\n )}\r\n {otpIncorrect && (\r\n <p\r\n onClick={async () => {\r\n //clear input content\r\n const inputs: any =\r\n document.getElementsByClassName(\"otp-input\");\r\n if (inputs) {\r\n for (let i = 0; i < inputs.length; i++) {\r\n inputs[i].value = \"\";\r\n }\r\n }\r\n\r\n await handleResendOtp();\r\n }}\r\n className=\"verified-custd-mdl-otp-resend-text-active\"\r\n >\r\n Resend OTP\r\n </p>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n {!searchActive && <div style={{ height: \"100px\" }}></div>}\r\n\r\n <div className=\"verified-custd-mdl-startup-contact-footer\">\r\n <div className=\"verified-custd-mdl-st-contact-footer-first-section\">\r\n <button\r\n id=\"verified-custd-mdl-otp-button\"\r\n onClick={async (e: any) => {\r\n if (\r\n e.target.className.includes(\r\n \"verified-custd-mdl-startup-button\"\r\n ) &&\r\n e.target.className !== \"verified-custd-mdl-startup-button\"\r\n ) {\r\n e.target.className = \"verified-custd-mdl-startup-button-click\";\r\n await handleVerifyOtp();\r\n } else {\r\n const buttonElement = document.getElementsByClassName(\r\n \"verified-custd-mdl-startup-button-active\"\r\n );\r\n if (buttonElement.length > 0) {\r\n buttonElement[0].className =\r\n \"verified-custd-mdl-startup-button-click\";\r\n await handleVerifyOtp();\r\n }\r\n }\r\n }}\r\n className=\"verified-custd-mdl-startup-button\"\r\n >\r\n Proceed\r\n </button>\r\n <div className=\"verified-custd-mdl-st-contact-footer-second-section\">\r\n <PrivacyOverlay />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default OTPPage;\r\n","import React, { useState } from \"react\";\r\nimport { useVaultStore } from \"../services/store\";\r\nimport { hashTheString } from \"../utils/helpers\";\r\nimport {\r\n acceptOrRejectInvitation,\r\n checkOrCreateVault,\r\n} from \"../services/contracts\";\r\nimport PageSlider from \"../components/slider\";\r\nimport Success from \"../components/success\";\r\nimport { imageAssets } from \"../utils/constants\";\r\nimport { VerifiedCustodyHelpers } from \"../utils/types\";\r\n\r\nconst CreatePinPage = (props: {\r\n setStep: (step: string) => void;\r\n setIsLoading: (isLoading: boolean) => void;\r\n setShowSuccessBtn: (showSuccessBtn: boolean) => void;\r\n setSuccessBtnText: (successBtnText: string) => void;\r\n setSuccessBtnNeutText: (successBtnNeutText: string) => void;\r\n setSuccessBtnFunc: (successBtnFunc: any) => void;\r\n setSuccessBtnNeutFunc: (successBtnNeutFunc: any) => void;\r\n setActionHeaderText: (actionHeaderText: string) => void;\r\n setActionFooterText: (actionFooterText: string) => void;\r\n userNumberFmt: string;\r\n userEmail: string;\r\n selectedCountry: { name: string; area: string; flag: string };\r\n action?: string;\r\n vaultData?: any;\r\n txData?: any;\r\n helperFunctions?: VerifiedCustodyHelpers;\r\n}) => {\r\n const [searchActive, setSearchActive] = useState(false);\r\n const [pinIncorrect, setPinIncorrect] = useState(false);\r\n const [pinIncorrectText, setPinIncorrectText] = useState(\"\");\r\n const [pinHide, setPinHide] = useState(true); //hide pin by default\r\n const [showInvitation, setShowInvitation] = useState(false);\r\n const [showInvitationSuccess, setShowInvitationSuccess] = useState(false);\r\n const [showCustomSuccess, setShowCustomSuccess] = useState(false);\r\n const [vaultPin, setVaultPin] = useState(\"\");\r\n const [showRejectInvitation, setShowRejectInvitation] = useState(false);\r\n\r\n const { address, pk, vaultContract, setVaultData, vaultData } =\r\n useVaultStore();\r\n\r\n //todo: add key actions to input focus change\r\n const handlleInputFocus = (currentInput: any) => {\r\n if (currentInput.value.length > 0) {\r\n const nextInput = currentInput.nextElementSibling;\r\n if (nextInput) {\r\n nextInput.focus();\r\n }\r\n } else if (currentInput.value.length === 0) {\r\n currentInput.focus();\r\n }\r\n };\r\n\r\n const handleOtpBackspace = (e: any) => {\r\n const previousInpput = e.target.previousElementSibling;\r\n if (previousInpput) {\r\n previousInpput.focus();\r\n }\r\n };\r\n\r\n const handleButtonDisplay = () => {\r\n const button: any = document.getElementById(\r\n \"verified-custd-mdl-otp-button\"\r\n );\r\n const otp1: any = document.getElementById(\"verified-custd-mdl-otp-input-1\");\r\n const otp2: any = document.getElementById(\"verified-custd-mdl-otp-input-2\");\r\n const otp3: any = document.getElementById(\"verified-custd-mdl-otp-input-3\");\r\n const otp4: any = document.getElementById(\"verified-custd-mdl-otp-input-4\");\r\n const otp5: any = document.getElementById(\"verified-custd-mdl-otp-input-5\");\r\n const otp6: any = document.getElementById(\"verified-custd-mdl-otp-input-6\");\r\n const otp7: any = document.getElementById(\"verified-custd-mdl-otp-input-7\");\r\n const otp8: any = document.getElementById(\"verified-custd-mdl-otp-input-8\");\r\n if (\r\n button &&\r\n otp1?.value.length > 0 &&\r\n otp2?.value.length > 0 &&\r\n otp3?.value.length > 0 &&\r\n otp4?.value.length > 0 &&\r\n otp5?.value.length > 0 &&\r\n otp6?.value.length > 0 &&\r\n otp7?.value.length > 0 &&\r\n otp8?.value.length > 0\r\n ) {\r\n if (\r\n otp1?.value + otp2?.value + otp3?.value + otp4?.value ===\r\n otp5?.value + otp6?.value + otp7?.value + otp8?.value\r\n ) {\r\n button.className = \"verified-custd-mdl-startup-button-active\";\r\n } else {\r\n button.className = \"verified-custd-mdl-startup-button\";\r\n setPinIncorrect(true);\r\n }\r\n } else {\r\n button.className = \"verified-custd-mdl-startup-button\";\r\n }\r\n };\r\n\r\n const handleVaultManagement = async () => {\r\n if (!props.helperFunctions) {\r\n setPinIncorrectText(\r\n \"No Helper Functions. Please include all helper functions in the CreatePinPage props.\"\r\n );\r\n setPinIncorrect(true);\r\n } else {\r\n setPinIncorrectText(\"\");\r\n setPinIncorrect(false);\r\n const otp1: any = document.getElementById(\r\n \"verified-custd-mdl-otp-input-1\"\r\n );\r\n const otp2: any = document.getElementById(\r\n \"verified-custd-mdl-otp-input-2\"\r\n );\r\n const otp3: any = document.getElementById(\r\n \"verified-custd-mdl-otp-input-3\"\r\n );\r\n const otp4: any = document.getElementById(\r\n \"verified-custd-mdl-otp-input-4\"\r\n );\r\n const otp5: any = document.getElementById(\r\n \"verified-custd-mdl-otp-input-5\"\r\n );\r\n const otp6: any = document.getElementById(\r\n \"verified-custd-mdl-otp-input-6\"\r\n );\r\n const otp7: any = document.getElementById(\r\n \"verified-custd-mdl-otp-input-7\"\r\n );\r\n const otp8: any = document.getElementById(\r\n \"verified-custd-mdl-otp-input-8\"\r\n );\r\n const vaultId =\r\n props.userEmail?.length > 0\r\n ? props.userEmail\r\n : `+${props.selectedCountry.area}${props.userNumberFmt?.replace(\r\n \" \",\r\n \"\"\r\n )}`;\r\n const channel = props.userEmail?.length > 0 ? \"email\" : \"sms\";\r\n if (\r\n otp1?.value?.length > 0 &&\r\n otp2?.value?.length > 0 &&\r\n otp3?.value?.length > 0 &&\r\n otp4?.value?.length > 0 &&\r\n otp5?.value?.length > 0 &&\r\n otp6?.value?.length > 0 &&\r\n otp7?.value?.length > 0 &&\r\n otp8?.value?.length > 0 &&\r\n address &&\r\n vaultId &&\r\n channel &&\r\n pk &&\r\n vaultContract\r\n ) {\r\n props.setIsLoading(true);\r\n const vaultPin = otp1?.value + otp2?.value + otp3?.value + otp4?.value;\r\n const hashedVaultId = hashTheString(vaultId);\r\n const hashedVaultPin = hashTheString(vaultPin);\r\n\r\n await checkOrCreateVault(\r\n vaultId,\r\n hashedVaultId,\r\n vaultPin,\r\n hashedVaultPin,\r\n channel,\r\n pk,\r\n address,\r\n vaultContract,\r\n props.action,\r\n props.vaultData,\r\n props.txData\r\n ).then((res) => {\r\n props.setIsLoading(false);\r\n\r\n if (res) {\r\n setVaultData(res?.shouldStop ? {} : res);\r\n setPinIncorrectText(\"\");\r\n setPinIncorrect(false);\r\n if (props.action === \"invitation\") {\r\n setVaultPin(vaultPin);\r\n setShowInvitation(true);\r\n } else if (!res?.shouldStop) {\r\n props.setStep(\"5\");\r\n } else if (res?.shouldStop) {\r\n setShowCustomSuccess(true);\r\n }\r\n } else if (res === null) {\r\n setPinIncorrectText(\r\n \"You are an existing user. Please input the right pin to recover your account.\"\r\n );\r\n setPinIncorrect(true);\r\n } else {\r\n setPinIncorrectText(\r\n \"Unexpected error while creating account. Please try again later.\"\r\n );\r\n setPinIncorrect(true);\r\n }\r\n });\r\n }\r\n }\r\n };\r\n\r\n const handleAcceptAndRejectInvitation = async (accepted: boolean) => {\r\n const vaultId =\r\n props.userEmail?.length > 0\r\n ? props.userEmail\r\n : `+${props.selectedCountry.area}${props.userNumberFmt?.replace(\r\n \" \",\r\n \"\"\r\n )}`;\r\n const channel = props.userEmail?.length > 0 ? \"email\" : \"sms\";\r\n if (\r\n vaultPin?.length === 4 &&\r\n props?.vaultData?.hashedVaultId &&\r\n props.vaultData?.hashedVaultPin &&\r\n vaultId\r\n ) {\r\n props.setIsLoading(true);\r\n const hashedVaultId = hashTheString(vaultId);\r\n const hashedVaultPin = hashTheString(vaultPin);\r\n await acceptOrRejectInvitation(\r\n props.helperFunctions.sendCreatorAcceptance,\r\n props.helperFunctions.sendCreatorRejection,\r\n channel,\r\n hashedVaultId,\r\n hashedVaultPin,\r\n props?.vaultData?.hashedVaultId,\r\n props.vaultData?.hashedVaultPin,\r\n props.vaultData?.vaultId,\r\n vaultId,\r\n accepted,\r\n vaultContract\r\n ).then((res) => {\r\n props.setIsLoading(false);\r\n if (res && !vaultData?.isExisting) {\r\n props.setShowSuccessBtn(true);\r\n props.setSuccessBtnText(\"Continue Setting Up Your Account\");\r\n props.setSuccessBtnNeutText(\"Do It Later\");\r\n props.setActionHeaderText(\"Successful\");\r\n props.setActionFooterText(\r\n accepted\r\n ? `You have been added as a Co-Signer for ${props.vaultData?.vaultId}`\r\n : `You rejected Co-signer reject from ${props.vaultData?.vaultId}`\r\n );\r\n props.setStep(\"5\");\r\n } else if (res && vaultData?.isExisting) {\r\n setShowInvitationSuccess(true);\r\n }\r\n });\r\n }\r\n };\r\n\r\n return (\r\n <React.Fragment>\r\n {!showCustomSuccess && !showInvitation && (\r\n <div className=\"verified-custd-mdl-startup-language\">\r\n <div className=\"verified-custd-mdl-startup-contact\">\r\n <PageSlider sliderCount={[1, 2, 3]} currentSlider=\"1\" />\r\n <div className=\"verified-custd-mdl-startup-contact-content\">\r\n <p className=\"verified-custd-mdl-startup-contact-text\">\r\n Create PIN\r\n </p>\r\n <div className=\"verified-custd-mdl-startup-otp-text\">\r\n <p className=\"verified-custd-mdl-startup-otp-header-text\">\r\n Protect your blockchain assets. This PIN will be required for\r\n all transactions and logins.\r\n </p>\r\n </div>\r\n </div>\r\n <div className=\"verified-custd-mdl-otp-input-container\">\r\n <p className=\"verified-custd-mdl-pin-input-container-text\">\r\n New PIN\r\n </p>\r\n <div className=\"verified-custd-mdl-otp-input-group\">\r\n <input\r\n onInputCapture={(e: any) => {\r\n e.target.value = e.target.value?.replace(/\\D/g, \"\");\r\n setPinIncorrect(false);\r\n }}\r\n onInput={(e) => {\r\n handlleInputFocus(e.target);\r\n handleButtonDisplay();\r\n }}\r\n onKeyDown={(e: any) => {\r\n if (e.key === \"Backspace\" && e.target.value === \"\") {\r\n handleOtpBackspace(e);\r\n }\r\n }}\r\n className={\r\n pinIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n type={pinHide ? \"password\" : \"text\"}\r\n maxLength={1}\r\n id=\"verified-custd-mdl-otp-input-1\"\r\n />\r\n <input\r\n onInputCapture={(e: any) => {\r\n e.target.value = e.target.value?.replace(/\\D/g, \"\");\r\n setPinIncorrect(false);\r\n }}\r\n onInput={(e) => {\r\n handlleInputFocus(e.target);\r\n handleButtonDisplay();\r\n }}\r\n onKeyDown={(e: any) => {\r\n if (e.key === \"Backspace\" && e.target.value === \"\") {\r\n handleOtpBackspace(e);\r\n }\r\n }}\r\n className={\r\n pinIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n type={pinHide ? \"password\" : \"text\"}\r\n maxLength={1}\r\n id=\"verified-custd-mdl-otp-input-2\"\r\n />\r\n <input\r\n onInputCapture={(e: any) => {\r\n e.target.value = e.target.value?.replace(/\\D/g, \"\");\r\n setPinIncorrect(false);\r\n }}\r\n onInput={(e) => {\r\n handlleInputFocus(e.target);\r\n handleButtonDisplay();\r\n }}\r\n onKeyDown={(e: any) => {\r\n if (e.key === \"Backspace\" && e.target.value === \"\") {\r\n handleOtpBackspace(e);\r\n }\r\n }}\r\n className={\r\n pinIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n type={pinHide ? \"password\" : \"text\"}\r\n maxLength={1}\r\n id=\"verified-custd-mdl-otp-input-3\"\r\n />\r\n <input\r\n onInputCapture={(e: any) => {\r\n e.target.value = e.target.value?.replace(/\\D/g, \"\");\r\n setPinIncorrect(false);\r\n }}\r\n onInput={(e) => {\r\n handlleInputFocus(e.target);\r\n handleButtonDisplay();\r\n }}\r\n onKeyDown={(e: any) => {\r\n if (e.key === \"Backspace\" && e.target.value === \"\") {\r\n handleOtpBackspace(e);\r\n }\r\n }}\r\n className={\r\n pinIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n type={pinHide ? \"password\" : \"text\"}\r\n maxLength={1}\r\n id=\"verified-custd-mdl-otp-input-4\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <div className=\"verified-custd-mdl-otp-input-container\">\r\n <p className=\"verified-custd-mdl-pin-input-container-text\">\r\n Confirm PIN\r\n </p>\r\n <div className=\"verified-custd-mdl-otp-input-group\">\r\n <input\r\n onInputCapture={(e: any) => {\r\n e.target.value = e.target.value?.replace(/\\D/g, \"\");\r\n setPinIncorrect(false);\r\n }}\r\n onInput={(e) => {\r\n handlleInputFocus(e.target);\r\n handleButtonDisplay();\r\n }}\r\n onKeyDown={(e: any) => {\r\n if (e.key === \"Backspace\" && e.target.value === \"\") {\r\n handleOtpBackspace(e);\r\n }\r\n }}\r\n className={\r\n pinIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n type={pinHide ? \"password\" : \"text\"}\r\n maxLength={1}\r\n id=\"verified-custd-mdl-otp-input-5\"\r\n />\r\n <input\r\n onInputCapture={(e: any) => {\r\n e.target.value = e.target.value?.replace(/\\D/g, \"\");\r\n setPinIncorrect(false);\r\n }}\r\n onInput={(e) => {\r\n handlleInputFocus(e.target);\r\n handleButtonDisplay();\r\n }}\r\n onKeyDown={(e: any) => {\r\n if (e.key === \"Backspace\" && e.target.value === \"\") {\r\n handleOtpBackspace(e);\r\n }\r\n }}\r\n className={\r\n pinIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n type={pinHide ? \"password\" : \"text\"}\r\n maxLength={1}\r\n id=\"verified-custd-mdl-otp-input-6\"\r\n />\r\n <input\r\n onInputCapture={(e: any) => {\r\n e.target.value = e.target.value?.replace(/\\D/g, \"\");\r\n setPinIncorrect(false);\r\n }}\r\n onInput={(e) => {\r\n handlleInputFocus(e.target);\r\n handleButtonDisplay();\r\n }}\r\n onKeyDown={(e: any) => {\r\n if (e.key === \"Backspace\" && e.target.value === \"\") {\r\n handleOtpBackspace(e);\r\n }\r\n }}\r\n className={\r\n pinIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n type={pinHide ? \"password\" : \"text\"}\r\n maxLength={1}\r\n id=\"verified-custd-mdl-otp-input-7\"\r\n />\r\n <input\r\n onInputCapture={(e: any) => {\r\n e.target.value = e.target.value?.replace(/\\D/g, \"\");\r\n setPinIncorrect(false);\r\n }}\r\n onInput={(e) => {\r\n handlleInputFocus(e.target);\r\n handleButtonDisplay();\r\n }}\r\n onKeyDown={(e: any) => {\r\n if (e.key === \"Backspace\" && e.target.value === \"\") {\r\n handleOtpBackspace(e);\r\n }\r\n }}\r\n className={\r\n pinIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n type={pinHide ? \"password\" : \"text\"}\r\n maxLength={1}\r\n id=\"verified-custd-mdl-otp-input-8\"\r\n />\r\n </div>\r\n <div className=\"verified-custd-mdl-otp-timer\">\r\n {!pinIncorrect && <p></p>}\r\n {pinIncorrect && pinIncorrectText === \"\" && (\r\n <p className=\"verified-custd-mdl-otp-incorrect-text\">\r\n Please enter the correct pin\r\n </p>\r\n )}\r\n {pinIncorrect && pinIncorrectText?.length > 0 && (\r\n <p className=\"verified-custd-mdl-otp-incorrect-text\">\r\n {pinIncorrectText}\r\n </p>\r\n )}\r\n {!pinHide && (\r\n <img\r\n style={{ cursor: \"pointer\", width: \"24px\", height: \"24px\" }}\r\n onClick={() => setPinHide(true)}\r\n src={imageAssets.pinShow}\r\n alt=\"show pin icon\"\r\n />\r\n )}\r\n {pinHide && (\r\n <img\r\n style={{ cursor: \"pointer\", width: \"24px\", height: \"24px\" }}\r\n onClick={() => setPinHide(false)}\r\n src={imageAssets.pinHide}\r\n alt=\"hide pin icon\"\r\n />\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n {!searchActive && <div style={{ height: \"30px\" }}></div>}\r\n\r\n <div className=\"verified-custd-mdl-startup-contact-footer\">\r\n <div className=\"verified-custd-mdl-st-contact-footer-first-section\">\r\n <button\r\n id=\"verified-custd-mdl-otp-button\"\r\n onClick={async (e: any) => {\r\n if (\r\n e.target.className.includes(\r\n \"verified-custd-mdl-startup-button\"\r\n ) &&\r\n e.target.className !== \"verified-custd-mdl-startup-button\"\r\n ) {\r\n e.target.className =\r\n \"verified-custd-mdl-startup-button-click\";\r\n await handleVaultManagement();\r\n } else {\r\n const buttonElement = document.getElementsByClassName(\r\n \"verified-custd-mdl-startup-button-active\"\r\n );\r\n if (buttonElement.length > 0) {\r\n buttonElement[0].className =\r\n \"verified-custd-mdl-startup-button-click\";\r\n await handleVaultManagement();\r\n }\r\n }\r\n }}\r\n className=\"verified-custd-mdl-startup-button\"\r\n >\r\n Confirm\r\n </button>\r\n {/* <div className=\"verified-custd-mdl-st-contact-footer-second-section\">\r\n <PrivacyOverlay />\r\n </div> */}\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n\r\n {!showCustomSuccess && showInvitation && (\r\n <React.Fragment>\r\n {!showInvitationSuccess && (\r\n <div\r\n style={{ padding: \"0\", position: \"relative\" }}\r\n className=\"verified-custd-mdl-startup-language\"\r\n >\r\n <div className=\"verified-custd-mdl-startup-contact\">\r\n <PageSlider sliderCount={[1, 2, 3]} currentSlider=\"1\" />\r\n <div className=\"verified-custd-mdl-startup-contact-content\">\r\n <p className=\"verified-custd-mdl-startup-contact-text\">\r\n <b>{props.vaultData?.vaultId}</b> has requested you to be a\r\n Co-Signer\r\n </p>\r\n </div>\r\n </div>\r\n <img\r\n className=\"verified-custd-mdl-add-cosigner-body-icon\"\r\n src={imageAssets.addCoSignerIcon1}\r\n alt=\"\"\r\n />\r\n {!showRejectInvitation && (\r\n <React.Fragment>\r\n <div className=\"verified-custd-mdl-add-cosigner-more-body\">\r\n <div className=\"verified-custd-mdl-add-cosigner-more-header-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-more-title-cont\">\r\n <p className=\"verified-custd-mdl-add-cosigner-more-title\">\r\n What is a Co-Signer?\r\n </p>\r\n </div>\r\n </div>\r\n <p\r\n style={{\r\n fontSize: \"12px\",\r\n color: \"var(--Neutral-600, #5B5D6E)\",\r\n }}\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n >\r\n A Co-Signer is a person who has the right given by you to\r\n generate a new pin on your behalf incase you forget it.{\" \"}\r\n </p>\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-body-text-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-body-text-icon\">\r\n <img src={imageAssets.pkicon} alt=\"icon\" />\r\n </div>\r\n <p className=\"verified-custd-mdl-add-cosigner-body-text-label\">\r\n As a Co Signer you can help{\" \"}\r\n <span className=\"verified-custd-mdl-add-cosigner-body-text-label-bold\">\r\n reset PIN\r\n </span>\r\n </p>\r\n </div>\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-body-text-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-body-text-icon\">\r\n <img src={imageAssets.encryptedIcon} alt=\"icon\" />\r\n </div>\r\n <p className=\"verified-custd-mdl-add-cosigner-body-text-label\">\r\n Don’t worry, they{\" \"}\r\n <span className=\"verified-custd-mdl-add-cosigner-body-text-label-bold\">\r\n will not get access\r\n </span>{\" \"}\r\n to your account in any way.\r\n </p>\r\n </div>\r\n </div>\r\n <div className=\"verified-custd-mdl-add-cosigner-buttons-cont\">\r\n <button\r\n onClick={() => {\r\n setShowRejectInvitation(true);\r\n }}\r\n className=\"verified-custd-mdl-add-cosigner-button-neut\"\r\n >\r\n Reject\r\n </button>\r\n\r\n <button\r\n onClick={async () => {\r\n await handleAcceptAndRejectInvitation(true);\r\n }}\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n >\r\n Accept\r\n </button>\r\n </div>\r\n </React.Fragment>\r\n )}\r\n\r\n {showRejectInvitation && (\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-content-outter\">\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-content\">\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-header\">\r\n <p className=\"verified-custd-mdl-add-cosigner-confirm-body-title\">\r\n Are you sure you want to reject this request?\r\n </p>\r\n <p\r\n style={{\r\n fontSize: \"12px\",\r\n color: \"var(--Neutral-600, #5B5D6E)\",\r\n }}\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-label\"\r\n >\r\n Once you reject to be a co-signer for{\" \"}\r\n <b>{props.vaultData?.vaultId}</b>, you will not be\r\n able to reset the PIN for them.\r\n </p>\r\n </div>\r\n\r\n <div\r\n style={{ width: \"90%\" }}\r\n className=\"verified-custd-mdl-add-cosigner-buttons-cont\"\r\n >\r\n <button\r\n onClick={async () => {\r\n await handleAcceptAndRejectInvitation(false);\r\n }}\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n >\r\n Yes\r\n </button>\r\n\r\n <button\r\n onClick={() => {\r\n setShowRejectInvitation(false);\r\n }}\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n >\r\n No\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n\r\n {showInvitationSuccess && (\r\n <Success\r\n messageTosend={{ type: \"closePopup\", key: \"\", value: \"\" }}\r\n customTextHeader=\"Successful\"\r\n customTextFooter={\r\n !showRejectInvitation\r\n ? `You have been added as a Co-Signer for ${props.vaultData?.vaultId}`\r\n : `You rejected Co-signer reject from ${props.vaultData?.vaultId}`\r\n }\r\n />\r\n )}\r\n </React.Fragment>\r\n )}\r\n\r\n {showCustomSuccess && (\r\n <Success\r\n messageTosend={{ type: \"closePopup\", key: \"\", value: \"\" }}\r\n customTextHeader=\"Successful\"\r\n customTextFooter=\"You have successfully logged in your account.\"\r\n />\r\n )}\r\n </React.Fragment>\r\n );\r\n};\r\n\r\nexport default CreatePinPage;\r\n","import { AbiCoder, decodeBytes32String, encodeBytes32String } from \"ethers\";\r\nimport { combine, split } from \"shamir-secret-sharing\";\r\nimport {\r\n contractAddress,\r\n Custody,\r\n Provider,\r\n VerifiedWallet,\r\n} from \"@verified-network/verified-sdk\";\r\nimport { createSmartAccountClient } from \"@biconomy/account\";\r\nimport {\r\n decryptString,\r\n encryptString,\r\n errorToast,\r\n hashTheString,\r\n} from \"../utils/helpers\";\r\nimport {\r\n defaultChainId,\r\n defaultVerifiedUrl,\r\n newTransactionEventHash,\r\n numberPositions,\r\n} from \"../utils/constants\";\r\nimport { ChainConfig, PaymasterConfig } from \"../utils/config\";\r\nimport { VerifiedCustodyHelpers } from \"../utils/types\";\r\n\r\nexport const checkOrCreateVault = async (\r\n vaultId: string,\r\n hashedVaultId: string,\r\n vaultPin: string,\r\n hashedVaultPin: string,\r\n otpChannel: string,\r\n userPk: string,\r\n userAddress: string,\r\n vaultContract: any,\r\n action?: string,\r\n reqVaultData?: any,\r\n txData?: any\r\n) => {\r\n try {\r\n const vaultData = {\r\n vaultId,\r\n hashedVaultId,\r\n vaultPin,\r\n hashedVaultPin,\r\n vaultContract,\r\n };\r\n return await vaultContract\r\n .getCreator(hashedVaultId, hashedVaultPin)\r\n .then(async (res: any) => {\r\n if (res?.status === 0) {\r\n try {\r\n if (action === \"invitation\") {\r\n return { isExisting: true, ...vaultData };\r\n } else {\r\n if (chrome?.storage?.local) {\r\n const secretKey = encodeBytes32String(vaultPin);\r\n\r\n const encryptedPk = encryptString(userPk, secretKey);\r\n await chrome.storage.local.set({\r\n myVault: JSON.stringify({\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: encryptedPk,\r\n channel: otpChannel,\r\n }),\r\n });\r\n } else if (!chrome?.storage?.local && localStorage) {\r\n const secretKey = encodeBytes32String(vaultPin);\r\n\r\n const encryptedPk = encryptString(userPk, secretKey);\r\n localStorage.setItem(\r\n \"myVault\",\r\n JSON.stringify({\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: encryptedPk,\r\n channel: otpChannel,\r\n })\r\n );\r\n }\r\n if (chrome?.runtime?.sendMessage) {\r\n chrome.runtime.sendMessage({\r\n type:\r\n action && action === \"connect_wallet\"\r\n ? \"getPk\"\r\n : action && action !== \"connect_wallet\"\r\n ? action\r\n : \"getPk\",\r\n value: {\r\n vaultData:\r\n action && action === \"signRecovery\"\r\n ? reqVaultData\r\n : action && action === \"completeRecovery\"\r\n ? reqVaultData\r\n : { vaultId, hashedVaultId, hashedVaultPin },\r\n txData: txData,\r\n },\r\n });\r\n } else if (!chrome?.runtime?.sendMessage) {\r\n const event = new CustomEvent(\r\n action && action === \"connect_wallet\"\r\n ? \"getPk\"\r\n : action && action !== \"connect_wallet\"\r\n ? action\r\n : \"getPk\",\r\n {\r\n detail: {\r\n value: {\r\n vaultData:\r\n action && action === \"signRecovery\"\r\n ? reqVaultData\r\n : action && action === \"completeRecovery\"\r\n ? reqVaultData\r\n : { vaultId, hashedVaultId, hashedVaultPin },\r\n txData: txData,\r\n },\r\n },\r\n }\r\n );\r\n window.dispatchEvent(event);\r\n }\r\n }\r\n return { shouldStop: true };\r\n } catch (err) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error handling existing vault: \", err);\r\n }\r\n\r\n errorToast(\r\n \"Oops something went wrong\",\r\n \"Error fetching existing vault key(s). Try again later\"\r\n );\r\n return false;\r\n }\r\n } else if (res?.reason?.toLowerCase() === \"invalid pin\") {\r\n return null;\r\n } else if (res?.reason?.toLowerCase() === \"wallet not created\") {\r\n return await vaultContract\r\n .createVault(hashedVaultId, hashedVaultPin)\r\n .then(async (vultRes: any) => {\r\n if (vultRes?.status === 0) {\r\n return await vaultContract\r\n .confirmParticipant(\r\n hashedVaultId,\r\n hashedVaultPin,\r\n hashedVaultId,\r\n hashedVaultPin,\r\n true\r\n )\r\n .then(async (cfrmRes: any) => {\r\n if (cfrmRes?.status === 0) {\r\n try {\r\n const secretKey = encodeBytes32String(vaultPin);\r\n\r\n const encryptedPk = encryptString(userPk, secretKey);\r\n\r\n if (chrome?.storage?.local) {\r\n await chrome.storage.local.set({\r\n myVault: JSON.stringify({\r\n address: userAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: encryptedPk,\r\n channel: otpChannel,\r\n }),\r\n });\r\n } else if (!chrome?.storage?.local && localStorage) {\r\n localStorage.setItem(\r\n \"myVault\",\r\n JSON.stringify({\r\n address: userAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: encryptedPk,\r\n channel: otpChannel,\r\n })\r\n );\r\n }\r\n\r\n return vaultData;\r\n } catch (err) {\r\n errorToast(\r\n \"Oops something went wrong\",\r\n \"Error savingr new vault details. Try again later\"\r\n );\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"save vault failed: \", err);\r\n }\r\n\r\n return false;\r\n }\r\n } else {\r\n errorToast(\r\n \"Oops something went wrong\",\r\n \"Error creating pin for new vault. Try again later\"\r\n );\r\n\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"confirm pin vault failed: \", cfrmRes);\r\n }\r\n return false;\r\n }\r\n });\r\n } else {\r\n errorToast(\r\n \"Oops something went wrong\",\r\n \"Error creating new vault. Try again later\"\r\n );\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"create vault failed: \", vultRes);\r\n }\r\n\r\n return false;\r\n }\r\n });\r\n }\r\n });\r\n } catch (err) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"unexpected error: \", err);\r\n }\r\n errorToast(\r\n \"Oops something went wrong\",\r\n \"Error while creating pin. Try again later\"\r\n );\r\n return false;\r\n }\r\n};\r\n\r\nexport const validateVaultPin = async (\r\n vaultId: string,\r\n hashedVaultId: string,\r\n vaultPin: string,\r\n hashedVaultPin: string,\r\n encryptedPk: any,\r\n userAddress: string,\r\n otpChannel: \"sms\" | \"email\",\r\n newChainId?: number,\r\n chainId?: number\r\n) => {\r\n try {\r\n const secretKey = encodeBytes32String(vaultPin);\r\n\r\n const userPk = decryptString(encryptedPk, secretKey);\r\n\r\n if (userPk) {\r\n const cntAddresses: any = contractAddress;\r\n const sender = new VerifiedWallet(userPk);\r\n const _chainId =\r\n chainId &&\r\n cntAddresses[chainId]?.Custody &&\r\n ChainConfig[chainId]?.rpcUrls?.length > 0\r\n ? chainId\r\n : defaultChainId;\r\n const provider = ChainConfig[_chainId]?.rpcUrls[0];\r\n const signer = sender.setProvider(new Provider(provider));\r\n\r\n const vaultContract = new Custody(signer, cntAddresses[_chainId].Custody);\r\n\r\n if (vaultContract) {\r\n return await vaultContract\r\n .getCreator(hashedVaultId, hashedVaultPin)\r\n .then(async (res: any) => {\r\n if (res?.status === 0) {\r\n return {\r\n address: userAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: userPk,\r\n channel: otpChannel,\r\n chainId: newChainId ? newChainId : _chainId,\r\n };\r\n } else {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"Invalid pin\");\r\n }\r\n return null;\r\n }\r\n });\r\n } else {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error ggetting vault contract\");\r\n }\r\n return null;\r\n }\r\n } else {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error decrypting pk\");\r\n }\r\n return null;\r\n }\r\n } catch (err) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"unexpected error: \", err);\r\n }\r\n return null;\r\n }\r\n};\r\n\r\nexport const acceptOrRejectInvitation = async (\r\n sendCreatorAcceptance: VerifiedCustodyHelpers[\"sendCreatorAcceptance\"],\r\n sendCreatorRejection: VerifiedCustodyHelpers[\"sendCreatorRejection\"],\r\n channel: \"email\" | \"sms\",\r\n hashedCosignerId: string,\r\n hashedCosignerPin: string,\r\n hashedCreatorVaultId: string,\r\n hashedCreatorVaultPin: string,\r\n creatorVaultId: string,\r\n coSignerVaultId: string,\r\n accepted: boolean,\r\n vaultContract?: any,\r\n userPk?: string,\r\n chainId?: number\r\n) => {\r\n let contract: any;\r\n if (vaultContract) {\r\n contract = vaultContract;\r\n } else {\r\n const cntAddresses: any = contractAddress;\r\n const sender = new VerifiedWallet(userPk);\r\n const _chainId =\r\n chainId &&\r\n cntAddresses[chainId]?.Custody &&\r\n ChainConfig[chainId]?.rpcUrls?.length > 0\r\n ? chainId\r\n : defaultChainId;\r\n const provider = ChainConfig[_chainId]?.rpcUrls[0];\r\n const signer = sender.setProvider(new Provider(provider));\r\n\r\n contract = new Custody(signer, cntAddresses[_chainId].Custody);\r\n }\r\n if (contract) {\r\n return await vaultContract\r\n .confirmParticipant(\r\n hashedCreatorVaultId,\r\n hashedCosignerPin,\r\n hashedCosignerId,\r\n hashedCreatorVaultPin,\r\n accepted\r\n )\r\n .then(async (res: any) => {\r\n if (res?.status === 0) {\r\n if (accepted) {\r\n await sendCreatorAcceptance(\r\n channel,\r\n creatorVaultId,\r\n coSignerVaultId\r\n );\r\n } else {\r\n await sendCreatorRejection(\r\n channel,\r\n creatorVaultId,\r\n coSignerVaultId\r\n );\r\n }\r\n\r\n return true;\r\n } else {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"Accept or reject invitation failed with\");\r\n }\r\n return false;\r\n }\r\n })\r\n .catch((err: any) => {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"Accept or reject invitation failed with error: \", err);\r\n }\r\n return false;\r\n });\r\n } else {\r\n return false;\r\n }\r\n};\r\n\r\n// const retryCompleteVault = async () => {\r\n// failedParticipants = [...new Set(failedParticipants)]\r\n// await Promise.all(\r\n// failedParticipants.map(async (participant, idx) => {\r\n// const retryAdd = await mainService.vault.addParticipant(\r\n// vaultInfo.hashedVaultId,\r\n// vaultInfo.hashedVaultPin,\r\n// participant.hashedCosigner,\r\n// participant.share\r\n// )\r\n\r\n// if (retryAdd.status) {\r\n// // failedParticipants.push({\r\n// // creatorVaultId: ,\r\n// // fcmToken,\r\n// // cosigner,\r\n// // share: sharesArrayAsString[idx],\r\n// // })\r\n// } else {\r\n// const filtered = failedParticipants.filter(\r\n// (part) => part.cosigner !== participant.cosigner\r\n// )\r\n// failedParticipants = [...new Set(filtered)]\r\n// await sendNotification({\r\n// creator: vaultInfo.vaultId,\r\n// hashedCreator: vaultInfo.hashedVaultId,\r\n// idType: participant.idType,\r\n// email: participant.cosigner,\r\n// phoneNumber: participant.cosigner,\r\n// })\r\n// }\r\n// })\r\n// )\r\n\r\n// if (failedParticipants.length > 0) {\r\n// setIsRetry(true)\r\n// setIsLoading(false)\r\n// return\r\n// }\r\n\r\n// const addQuorum = await mainService.vault.defineQuorum(\r\n// vaultInfo.hashedVaultId,\r\n// vaultInfo.hashedVaultPin,\r\n// threshold.toString() // coming from the slider\r\n// )\r\n\r\n// if (addQuorum.status) {\r\n// return false\r\n// }\r\n// return true\r\n// }\r\n\r\nexport const completeVaultCreation = async (\r\n sendCoSignerInvitation: (\r\n channel: \"sms\" | \"email\",\r\n cosigerId: string,\r\n cretorId: string,\r\n hashedCretorPin: string\r\n ) => Promise<boolean>,\r\n sendCreatorConfirmation: (\r\n channel: \"sms\" | \"email\",\r\n cretorId: string,\r\n cosigersList: [],\r\n requiredSigners: number\r\n ) => Promise<boolean>,\r\n keyHolders: any,\r\n coSigners: any,\r\n otpChannel: \"sms\" | \"email\",\r\n KeyThreshold: number,\r\n vaultId: string,\r\n hashedVaultId: string,\r\n vaultPin: string,\r\n hashedVaultPin: string,\r\n vaultContract: any,\r\n pk: string\r\n) => {\r\n const keyShardsCount = Number(keyHolders.length);\r\n\r\n const privateKeySplits = await split(\r\n Uint8Array.from(pk.split(\"\").map((letter: string) => letter.charCodeAt(0))),\r\n Number(keyShardsCount),\r\n KeyThreshold\r\n );\r\n\r\n const sharesArrayAsString = privateKeySplits.map((share) => share.join(\",\"));\r\n\r\n let failedKeyHolders = [];\r\n let succesfulKeyHolders = [];\r\n\r\n for (let idx = 0; idx < keyHolders.length; idx++) {\r\n const participant = keyHolders[idx];\r\n await vaultContract\r\n .addParticipant(\r\n hashedVaultId,\r\n hashedVaultPin,\r\n hashTheString(participant.vaultId),\r\n sharesArrayAsString[idx]\r\n )\r\n .then(async (res: any) => {\r\n const keyHolder = {\r\n creatorVaultId: vaultId,\r\n vaultPin: vaultPin,\r\n creatorHashedVaultId: hashedVaultId,\r\n creatorHashedVaultPin: hashedVaultPin,\r\n cosigner: participant.vaultId,\r\n hashedCosigner: hashTheString(participant.vaultId),\r\n cosignerVaultIdType:\r\n participant.otpChannel === \"sms\" ? \"PHONE\" : \"EMAIL\",\r\n cosignerVaultId: participant.vaultId,\r\n share: sharesArrayAsString[idx],\r\n ...participant,\r\n };\r\n if (res?.status === 0) {\r\n succesfulKeyHolders.push(keyHolder);\r\n if (participant.vaultId !== vaultId) {\r\n await sendCoSignerInvitation(\r\n participant.otpChannel,\r\n participant.vaultId,\r\n vaultId,\r\n hashedVaultPin\r\n ).then((res) => {\r\n if (!res) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while sending cosigner invite\");\r\n }\r\n // errorToast(\"Oops somethin went wrong\", \"error while sending cosigner invite\");\r\n }\r\n });\r\n }\r\n } else {\r\n failedKeyHolders.push(keyHolder);\r\n }\r\n });\r\n }\r\n\r\n if (\r\n failedKeyHolders?.length > 0 ||\r\n succesfulKeyHolders?.length !== keyHolders?.length\r\n ) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while adding co-signers\");\r\n }\r\n errorToast(\"Oops somethin went wrong\", \"error while adding co-signers\");\r\n return false;\r\n }\r\n\r\n return await vaultContract\r\n .defineQuorum(hashedVaultId, hashedVaultPin, KeyThreshold.toString())\r\n .then(async (res: any) => {\r\n if (res?.status === 0) {\r\n const cosignersList = coSigners?.map((cng: any) => {\r\n return {\r\n name: cng?.name,\r\n email: cng?.email,\r\n phoneNumber: cng?.phoneNumber,\r\n contactType: String(cng?.otpChannel)?.toUpperCase(),\r\n position: `${numberPositions[Number(cng?.position)]} Co-Signer`,\r\n };\r\n });\r\n await sendCreatorConfirmation(\r\n otpChannel,\r\n vaultId,\r\n cosignersList,\r\n Number(KeyThreshold)\r\n ).then((res) => {\r\n if (!res) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while sending creator's confirmation\");\r\n }\r\n // errorToast(\"Oops somethin went wrong\", \"error while sending creator's confirmation\");\r\n }\r\n });\r\n\r\n return true;\r\n } else {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while saving vault keys\");\r\n }\r\n errorToast(\"Oops somethin went wrong\", \"error while saving vault keys\");\r\n return false;\r\n }\r\n });\r\n};\r\n\r\nexport const initiateVaultRecovery = async (\r\n sendCreatorInitiation: (\r\n channel: \"sms\" | \"email\",\r\n cretorId: string,\r\n hashedCretorPin: string,\r\n txId: number,\r\n requiredSigners: number\r\n ) => Promise<boolean>,\r\n hashedVaultId: string,\r\n hashedVaultPin: string,\r\n vaultId: string,\r\n vaultPin: string,\r\n encryptedPk: string,\r\n vaultChannel: \"sms\" | \"email\",\r\n chainId?: number\r\n) => {\r\n const secretKey = encodeBytes32String(vaultPin);\r\n\r\n const userPk = decryptString(encryptedPk, secretKey);\r\n\r\n if (userPk) {\r\n const cntAddresses: any = contractAddress;\r\n const sender = new VerifiedWallet(userPk);\r\n const _chainId =\r\n chainId &&\r\n cntAddresses[chainId]?.Custody &&\r\n ChainConfig[chainId]?.rpcUrls?.length > 0\r\n ? chainId\r\n : defaultChainId;\r\n const provider = ChainConfig[_chainId]?.rpcUrls[0];\r\n const signer = sender.setProvider(new Provider(provider));\r\n\r\n const vaultContract = new Custody(signer, cntAddresses[_chainId].Custody);\r\n\r\n if (vaultContract) {\r\n return await vaultContract\r\n .promptSignatures(hashedVaultId, hashedVaultPin)\r\n .then(async (res: any) => {\r\n if (res?.status === 0 && res?.response?.result?.logs) {\r\n const abiCoder = new AbiCoder();\r\n const vaultLogs = res?.response?.result?.logs?.filter(\r\n (log: any) =>\r\n log?.address?.toLowerCase() ===\r\n cntAddresses[_chainId].Custody?.toLowerCase() &&\r\n log?.topics\r\n ?.map((tp: string) => tp?.toLowerCase())\r\n ?.includes(newTransactionEventHash?.toLowerCase())\r\n );\r\n const txData = vaultLogs[0]?.data;\r\n const decodedTxData = abiCoder\r\n .decode([\"bytes32\", \"bytes32\", \"uint256\"], txData)\r\n ?.map((val, idx) =>\r\n idx < 2 ? decodeBytes32String(val) : Number(val)\r\n )\r\n .flat();\r\n const txId = decodedTxData[decodedTxData?.length - 1];\r\n await sendCreatorInitiation(\r\n vaultChannel,\r\n vaultId,\r\n hashedVaultPin,\r\n Number(txId),\r\n Number(vaultLogs?.length)\r\n );\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n })\r\n .catch((err: any) => {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while initiating vault recovery\", err);\r\n }\r\n return false;\r\n });\r\n }\r\n }\r\n};\r\n\r\nexport const signVaultRecovery = async (\r\n sendCreatorSigned: (\r\n channel: \"sms\" | \"email\",\r\n cretorId: string,\r\n coSignerId: string\r\n ) => Promise<boolean>,\r\n sendCreatorCompleted: (\r\n channel: \"sms\" | \"email\",\r\n cretorId: string,\r\n txId: number\r\n ) => Promise<boolean>,\r\n hashedVaultId: string,\r\n hashedVaultPin: string,\r\n vaultId: string,\r\n vaultPin: string,\r\n encryptedPk: string,\r\n reqVaultId: string,\r\n hashedReqId: string,\r\n hashedReqPin: string,\r\n reqTxId: string,\r\n chainId?: number\r\n) => {\r\n const secretKey = encodeBytes32String(vaultPin);\r\n\r\n const userPk = decryptString(encryptedPk, secretKey);\r\n\r\n if (userPk) {\r\n const cntAddresses: any = contractAddress;\r\n const sender = new VerifiedWallet(userPk);\r\n const _chainId =\r\n chainId &&\r\n cntAddresses[chainId]?.Custody &&\r\n ChainConfig[chainId]?.rpcUrls?.length > 0\r\n ? chainId\r\n : defaultChainId;\r\n const provider = ChainConfig[_chainId]?.rpcUrls[0];\r\n const signer = sender.setProvider(new Provider(provider));\r\n\r\n const vaultContract = new Custody(signer, cntAddresses[_chainId].Custody);\r\n\r\n if (vaultContract) {\r\n return await vaultContract\r\n .signTransaction(\r\n hashedReqId,\r\n hashedVaultPin,\r\n hashedVaultId,\r\n reqTxId,\r\n hashedReqPin\r\n )\r\n .then(async (res: any) => {\r\n if (res?.status === 0) {\r\n await sendCreatorSigned(\r\n /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(reqVaultId) ? \"email\" : \"sms\",\r\n reqVaultId,\r\n vaultId\r\n );\r\n return await vaultContract\r\n .checkQuorum(hashedReqId, hashedReqPin, hashedVaultId, reqTxId)\r\n .then(async (qRes: any) => {\r\n if (qRes?.status === 0 && qRes?.response?.result) {\r\n if (qRes?.response?.result[0] === true) {\r\n await sendCreatorCompleted(\r\n /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(reqVaultId)\r\n ? \"email\"\r\n : \"sms\",\r\n reqVaultId,\r\n Number(reqTxId)\r\n );\r\n }\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n });\r\n } else {\r\n return false;\r\n }\r\n })\r\n .catch((err: any) => {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while signing vault recovery\", err);\r\n }\r\n return false;\r\n });\r\n }\r\n }\r\n};\r\n\r\nexport const restoreVaultLogin = async (\r\n hashedVaultId: string,\r\n hashedVaultPin: string,\r\n vaultId: string,\r\n vaultPin: string,\r\n encryptedPk: string,\r\n reqTxId: string,\r\n otpChannel: \"sms\" | \"email\",\r\n chainId?: number\r\n) => {\r\n const secretKey = encodeBytes32String(vaultPin);\r\n\r\n const userPk = decryptString(encryptedPk, secretKey);\r\n\r\n if (userPk) {\r\n const cntAddresses: any = contractAddress;\r\n const sender = new VerifiedWallet(userPk);\r\n const _chainId =\r\n chainId &&\r\n cntAddresses[chainId]?.Custody &&\r\n ChainConfig[chainId]?.rpcUrls?.length > 0\r\n ? chainId\r\n : defaultChainId;\r\n const provider = ChainConfig[_chainId]?.rpcUrls[0];\r\n const signer = sender.setProvider(new Provider(provider));\r\n\r\n const vaultContract = new Custody(signer, cntAddresses[_chainId].Custody);\r\n\r\n if (vaultContract) {\r\n return await vaultContract\r\n .checkQuorum(hashedVaultId, hashedVaultPin, hashedVaultId, reqTxId)\r\n .then(async (qRes: any) => {\r\n if (qRes?.status === 0 && qRes?.response?.result) {\r\n if (qRes?.response?.result[0] === true) {\r\n return await vaultContract\r\n .signTransaction(\r\n hashedVaultId,\r\n hashedVaultPin,\r\n hashedVaultId,\r\n reqTxId,\r\n hashedVaultPin\r\n )\r\n .then(async (res: any) => {\r\n if (res?.status === 0) {\r\n return await vaultContract\r\n .getShards(hashedVaultId, hashedVaultPin, reqTxId)\r\n .then(async (res: any) => {\r\n if (res?.status === 0 && res?.response?.result) {\r\n const recoveredShrads = res?.response?.result.filter(\r\n (shrd: string) => shrd !== \"\"\r\n );\r\n if (recoveredShrads.length > 1) {\r\n //at least 2 shrads?? since minimum signers are 2??\r\n const shares = recoveredShrads.map(\r\n (shrd: string) =>\r\n new Uint8Array(shrd.split(\",\").map(Number))\r\n );\r\n\r\n const combinedShares = await combine(shares);\r\n\r\n const pk = new TextDecoder().decode(combinedShares);\r\n\r\n if (pk) {\r\n const secretKey = encodeBytes32String(vaultPin);\r\n\r\n const newEncryptedPk = encryptString(\r\n pk,\r\n secretKey\r\n );\r\n\r\n const newSender = new VerifiedWallet(pk);\r\n\r\n const newSigner = newSender.setProvider(\r\n new Provider(provider)\r\n );\r\n\r\n const smartAccount =\r\n await createSmartAccountClient({\r\n signer: newSigner,\r\n bundlerUrl: `${PaymasterConfig.BUNDLER_URL_FIRST_SECTION}/${_chainId}/${PaymasterConfig[_chainId][\"BUNDLER_API_KEY\"]}`,\r\n biconomyPaymasterApiKey:\r\n PaymasterConfig[_chainId][\r\n \"PAYMASTER_API_KEY\"\r\n ],\r\n });\r\n const newAddress =\r\n await smartAccount.getAccountAddress();\r\n if (chrome?.storage?.local) {\r\n await chrome.storage.local.remove(\"myVault\");\r\n await chrome.storage.local.set({\r\n myVault: JSON.stringify({\r\n address: newAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: newEncryptedPk,\r\n channel: otpChannel,\r\n }),\r\n });\r\n } else if (\r\n !chrome?.storage?.local &&\r\n localStorage\r\n ) {\r\n localStorage.removeItem(\"myVault\");\r\n localStorage.setItem(\r\n \"myVault\",\r\n JSON.stringify({\r\n address: newAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: newEncryptedPk,\r\n channel: otpChannel,\r\n })\r\n );\r\n }\r\n return true;\r\n }\r\n } else {\r\n return false;\r\n }\r\n } else {\r\n return false;\r\n }\r\n })\r\n .catch((err: any) => {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\r\n \"error while restoring login access\",\r\n err\r\n );\r\n }\r\n return false;\r\n });\r\n } else {\r\n return false;\r\n }\r\n });\r\n }\r\n } else {\r\n return false;\r\n }\r\n })\r\n .catch((err: any) => {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while restoring login access\", err);\r\n }\r\n return false;\r\n });\r\n } else {\r\n return false;\r\n }\r\n }\r\n};\r\n","import React from \"react\";\r\nimport { errorToast } from \"../utils/helpers\";\r\nimport { defaultVerifiedUrl, imageAssets } from \"../utils/constants\";\r\n\r\nconst Success = (props: {\r\n setStep?: (step: string) => void;\r\n stepToSet?: string;\r\n messageTosend?: { type: string; key?: string; value?: any };\r\n customTextHeader: string;\r\n customTextFooter: string;\r\n showButton?: boolean;\r\n buttonText?: string;\r\n buttonNeutText?: string;\r\n buttonFunc?: any;\r\n buttonNeutFunc?: any;\r\n action?: string;\r\n actionHeaderText?: string;\r\n actionFooterText?: string;\r\n timeoutTime?: number;\r\n}) => {\r\n const timeoutId = !props.showButton\r\n ? setTimeout(\r\n () => {\r\n if (props.messageTosend) {\r\n try {\r\n if (chrome?.runtime?.sendMessage) {\r\n chrome.runtime.sendMessage(props.messageTosend, (res) => {\r\n if (res && props.action !== \"signRecovery\") {\r\n window.close();\r\n }\r\n });\r\n } else if (!chrome?.runtime?.sendMessage) {\r\n const event = new CustomEvent(props.messageTosend?.type, {\r\n detail: {\r\n value: props.messageTosend?.value,\r\n },\r\n });\r\n window.dispatchEvent(event);\r\n }\r\n } catch (err) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error sending message: \", err);\r\n }\r\n\r\n errorToast(\r\n \"Oops something went wrong\",\r\n \"Unexpected error. Try again later\"\r\n );\r\n }\r\n }\r\n\r\n if (props.setStep && props.stepToSet) {\r\n props.setStep(props.stepToSet);\r\n }\r\n },\r\n props.timeoutTime ? props.timeoutTime : 3000\r\n )\r\n : null;\r\n\r\n const handleContinue = () => {\r\n props.setStep(\"6\");\r\n };\r\n\r\n const handleClosePopup = () => {\r\n // if (chrome.runtime) {\r\n // chrome.runtime.sendMessage({\r\n // type: \"VW_REQ\",\r\n // params: { method: \"closePopup\" },\r\n // });\r\n // }\r\n if (chrome.tabs) {\r\n chrome.tabs.update({\r\n url: \"https://wallet.verified.network\",\r\n });\r\n } else {\r\n window.location.href = \"https://wallet.verified.network\";\r\n }\r\n };\r\n\r\n return (\r\n <div\r\n style={{\r\n alignContent: \"center\",\r\n justifyContent: \"center\",\r\n position: \"relative\",\r\n height: \"100%\",\r\n width: \"90%\",\r\n }}\r\n className=\"verified-custd-mdl-success-popup-content-container\"\r\n >\r\n <div className=\"verified-custd-mdl-success-popup-content\">\r\n <img\r\n style={{ width: \"90%\" }}\r\n src={imageAssets.successIcon}\r\n alt=\"Success Icon\"\r\n />\r\n <div className=\"verified-custd-mdl-success-popup-content-text\">\r\n <p className=\"verified-custd-mdl-success-popup-content-text-header\">\r\n {!props?.showButton\r\n ? props.customTextHeader\r\n : props.actionHeaderText}\r\n </p>\r\n <p className=\"verified-custd-mdl-success-popup-content-text-footer\">\r\n {!props?.showButton\r\n ? props.customTextFooter\r\n : props.actionFooterText}\r\n </p>\r\n </div>\r\n </div>\r\n\r\n {props.showButton && props.buttonText?.length > 0 && (\r\n <button\r\n style={{ marginTop: \"10px\", fontSize: \"14px\" }}\r\n onClick={() => {\r\n if (timeoutId) {\r\n clearTimeout(timeoutId);\r\n }\r\n if (props.action === \"invitation\") {\r\n handleContinue();\r\n }\r\n }}\r\n className=\"verified-custd-mdl-startup-button-active\"\r\n >\r\n {props.buttonText}\r\n </button>\r\n )}\r\n {props.showButton && props.buttonNeutText?.length > 0 && (\r\n <button\r\n style={{ marginTop: \"10px\", fontSize: \"14px\" }}\r\n onClick={() => {\r\n if (timeoutId) {\r\n clearTimeout(timeoutId);\r\n }\r\n if (props.action === \"invitation\") {\r\n handleClosePopup();\r\n }\r\n }}\r\n className=\"verified-custd-mdl-startup-button-click\"\r\n >\r\n {props.buttonNeutText}\r\n </button>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default Success;\r\n","import React, { useState } from \"react\";\r\nimport { imageAssets, numberPositionsFmt } from \"../utils/constants\";\r\nimport { useVaultStore } from \"../services/store\";\r\nimport { completeVaultCreation } from \"../services/contracts\";\r\nimport PageSlider from \"../components/slider\";\r\nimport SearchBox from \"../components/search\";\r\nimport { VerifiedCustodyHelpers } from \"../utils/types\";\r\n\r\nconst AddCosignersPage = (props: {\r\n setStep: (step: string) => void;\r\n setIsLoading: (isLoading: boolean) => void;\r\n userNumberFmt: string;\r\n userEmail: string;\r\n selectedCountry: { name: string; area: string; flag: string };\r\n allCountries: any;\r\n defaultCountry?: {\r\n area: string;\r\n flag: string;\r\n name: string;\r\n };\r\n helperFunctions?: VerifiedCustodyHelpers;\r\n}) => {\r\n const [showLearnMore, setShowLearnMore] = useState<boolean>(false);\r\n const [learnMoreStep, setLearnMoreStep] = useState<string>(\"1\");\r\n const [cosignerStep, setCosignerStep] = useState<string>(\"1\");\r\n const [showAddMore, setShowAddMore] = useState<boolean>(false);\r\n const [addChannel, setAddChannel] = useState<string>(\"sms\");\r\n const [coSignerNumber, setCoSignerNumber] = useState<string>(\"\");\r\n const [coSignerNumberFmt, setCoSignerNumberFmt] = useState<string>(\"\");\r\n const [coSignerEmail, setCoSignerEmail] = useState<string>(\"\");\r\n const [coSignerName, setCoSignerName] = useState<string>(\"\");\r\n const [userInput, setUserInput] = useState<string>(\"\");\r\n const [searchActive, setSearchActive] = useState<boolean>(false);\r\n const [selectedCountry, setSelectedCountry] = useState(\r\n props.defaultCountry || {\r\n area: \"1\",\r\n flag: imageAssets.usaFlag,\r\n name: \"United States\",\r\n }\r\n );\r\n const [coSigners, setCosigners] = useState([]);\r\n const [showSetRule, setShowSetRule] = useState<boolean>(false);\r\n const [requiredSigners, setRequiredSigners] = useState<number>(2);\r\n const [errorText, setErrorText] = useState<string>(\"\");\r\n\r\n const { pk, vaultData, vaultContract } = useVaultStore();\r\n\r\n const handleButtonDisplay = () => {\r\n const button = document.getElementById(\"add-cosigner-button\");\r\n if (button && coSigners?.length > 0) {\r\n button.className = \"startup-button-active\";\r\n } else {\r\n button!.className = \"startup-button\";\r\n }\r\n };\r\n\r\n const handleAddCoSigner = () => {\r\n if (addChannel === \"sms\" && coSignerNumber?.length === 0) {\r\n setErrorText(\"Invalid input, please check the phone number\");\r\n return;\r\n } else if (addChannel === \"sms\" && coSignerNumber?.length !== 10) {\r\n setErrorText(\"Invalid input, please check the phone number\");\r\n return;\r\n } else if (addChannel === \"email\" && coSignerEmail?.length === 0) {\r\n setErrorText(\"Invalid input, please check the email\");\r\n return;\r\n } else if (\r\n addChannel === \"email\" &&\r\n !/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(coSignerEmail)\r\n ) {\r\n setErrorText(\"Invalid input, please check the email\");\r\n return;\r\n } else if (\r\n coSigners?.find((sig) =>\r\n sig?.otpChannel === \"sms\"\r\n ? sig?.phoneArea?.toLowerCase() + sig?.number?.toLowerCase() ===\r\n selectedCountry.area?.toLowerCase() +\r\n coSignerNumberFmt?.toLowerCase()\r\n : sig?.email?.toLowerCase() === coSignerEmail?.toLowerCase()\r\n )\r\n ) {\r\n setErrorText(\r\n addChannel === \"sms\"\r\n ? \"Invalid input, phone number is already a co-signer\"\r\n : \"Invalid input, email is already a co-signer\"\r\n );\r\n return;\r\n } else if (\r\n addChannel === \"sms\" &&\r\n selectedCountry?.area?.toLowerCase() +\r\n coSignerNumberFmt?.toLowerCase() ===\r\n props.selectedCountry.area?.toLowerCase() +\r\n props.userNumberFmt?.toLowerCase()\r\n ) {\r\n setErrorText(\"Invalid input, phone number is creator's phone number\");\r\n return;\r\n } else if (\r\n addChannel === \"email\" &&\r\n coSignerEmail?.toLowerCase() === props.userEmail?.toLowerCase()\r\n ) {\r\n setErrorText(\"Invalid input, email is creator's email\");\r\n return;\r\n }\r\n setErrorText(\"\");\r\n let coSignerLength = coSigners?.length;\r\n setCosigners((cngs) => [\r\n {\r\n name: coSignerName,\r\n email: coSignerEmail,\r\n number: coSignerNumberFmt,\r\n phoneNumber: `+${selectedCountry?.area}${coSignerNumber}`,\r\n otpChannel: addChannel,\r\n phoneArea: selectedCountry?.area,\r\n position: cngs?.length + 1,\r\n vaultId:\r\n addChannel === \"sms\"\r\n ? `+${selectedCountry?.area}${coSignerNumber}`\r\n : coSignerEmail,\r\n },\r\n ...cngs,\r\n ]);\r\n setCoSignerEmail(\"\");\r\n setCoSignerName(\"\");\r\n setCoSignerNumber(\"\");\r\n setCoSignerNumberFmt(\"\");\r\n setUserInput(\"\");\r\n if (coSignerLength + 1 === 4) {\r\n setShowAddMore(false);\r\n }\r\n };\r\n\r\n const handleCompleteVault = async () => {\r\n const keyHolders = [\r\n {\r\n otpChannel: props?.userEmail?.length > 0 ? \"email\" : \"sms\",\r\n email: props?.userEmail,\r\n phoneNumber: `+${\r\n props?.selectedCountry?.area\r\n }${props?.userNumberFmt?.replace(\" \", \"\")}`,\r\n vaultId: vaultData?.vaultId,\r\n },\r\n ...coSigners,\r\n ];\r\n\r\n if (\r\n keyHolders?.length > 0 &&\r\n coSigners?.length > 0 &&\r\n requiredSigners &&\r\n vaultData?.vaultId &&\r\n vaultData?.hashedVaultId &&\r\n vaultData?.vaultPin &&\r\n vaultData?.hashedVaultPin &&\r\n vaultContract &&\r\n pk &&\r\n props.helperFunctions?.sendCoSignerInvitation &&\r\n props.helperFunctions?.sendCreatorConfirmation\r\n ) {\r\n props.setIsLoading(true);\r\n await completeVaultCreation(\r\n props.helperFunctions.sendCoSignerInvitation,\r\n props.helperFunctions.sendCreatorConfirmation,\r\n keyHolders,\r\n coSigners,\r\n props?.userEmail?.length > 0 ? \"email\" : \"sms\",\r\n requiredSigners,\r\n vaultData.vaultId,\r\n vaultData.hashedVaultId,\r\n vaultData.vaultPin,\r\n vaultData.hashedVaultPin,\r\n vaultContract,\r\n pk\r\n ).then((res) => {\r\n props.setIsLoading(false);\r\n if (res) {\r\n props.setStep(\"7\");\r\n }\r\n });\r\n }\r\n };\r\n\r\n return (\r\n <div\r\n style={{ padding: \"0\" }}\r\n className=\"verified-custd-mdl-startup-language\"\r\n >\r\n {!showLearnMore && (\r\n <React.Fragment>\r\n {cosignerStep === \"1\" && (\r\n <React.Fragment>\r\n {\" \"}\r\n <div className=\"verified-custd-mdl-startup-contact\">\r\n <PageSlider sliderCount={[1, 2, 3]} currentSlider=\"2\" />\r\n <div className=\"verified-custd-mdl-startup-contact-content\">\r\n <p className=\"verified-custd-mdl-startup-contact-text\">\r\n We require you to add at least another Co-Signer.\r\n </p>\r\n </div>\r\n </div>\r\n <img\r\n className=\"verified-custd-mdl-add-cosigner-body-icon\"\r\n src={imageAssets.addCoSignerIcon1}\r\n alt=\"\"\r\n />\r\n <div className=\"verified-custd-mdl-add-cosigner-body\">\r\n <div className=\"verified-custd-mdl-add-cosigner-body-text-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-body-text-icon\">\r\n <img src={imageAssets.pkicon} alt=\"icon\" />\r\n </div>\r\n <p className=\"verified-custd-mdl-add-cosigner-body-text-label\">\r\n This is a blockchain based platform where{\" \"}\r\n <span className=\"verified-custd-mdl-add-cosigner-body-text-label-bold\">\r\n we do not store password keys.\r\n </span>\r\n </p>\r\n </div>\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-body-text-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-body-text-icon\">\r\n <img src={imageAssets.encryptedIcon} alt=\"icon\" />\r\n </div>\r\n <p className=\"verified-custd-mdl-add-cosigner-body-text-label\">\r\n Don’t worry, the{\" \"}\r\n <span className=\"verified-custd-mdl-add-cosigner-body-text-label-bold\">\r\n Co-Signer does not get access\r\n </span>{\" \"}\r\n to your account in any way.\r\n </p>\r\n </div>\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-body-text-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-body-text-icon\">\r\n <img src={imageAssets.supervise} alt=\"icon\" />\r\n </div>\r\n <p className=\"verified-custd-mdl-add-cosigner-body-text-label\">\r\n You can{\" \"}\r\n <span className=\"verified-custd-mdl-add-cosigner-body-text-label-bold\">\r\n be your own Co-Signer\r\n </span>{\" \"}\r\n by adding a different contact number or Email ID. to your\r\n account in any way.\r\n </p>\r\n </div>\r\n </div>\r\n <div className=\"verified-custd-mdl-add-cosigner-buttons-cont\">\r\n <button\r\n onClick={() => {\r\n setLearnMoreStep(\"1\");\r\n setShowLearnMore(true);\r\n }}\r\n className=\"verified-custd-mdl-add-cosigner-button-neut\"\r\n >\r\n Learn More\r\n </button>\r\n\r\n <button\r\n onClick={() => {\r\n setCosignerStep(\"2\");\r\n setShowAddMore(false);\r\n setShowLearnMore(false);\r\n }}\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n >\r\n Add Co-Signer\r\n </button>\r\n </div>\r\n </React.Fragment>\r\n )}\r\n\r\n {cosignerStep === \"2\" && (\r\n <React.Fragment>\r\n {\" \"}\r\n <div className=\"verified-custd-mdl-startup-contact\">\r\n <PageSlider sliderCount={[1, 2, 3]} currentSlider=\"2\" />\r\n <div\r\n style={{ gap: \"16px\" }}\r\n className=\"verified-custd-mdl-startup-contact-content\"\r\n >\r\n <p className=\"verified-custd-mdl-startup-contact-text\">\r\n Add your Co-Signers\r\n </p>\r\n <div className=\"verified-custd-mdl-startup-otp-text\">\r\n {!showSetRule && (\r\n <p className=\"verified-custd-mdl-add-cosigner-header-text\">\r\n Add a phone number/an Email ID of Co-Signer to send them\r\n a request.\r\n </p>\r\n )}\r\n <div className=\"verified-custd-mdl-add-cosigner-header-info-cont\">\r\n <p className=\"verified-custd-mdl-add-cosigner-header-info-text\">\r\n <span className=\"verified-custd-mdl-add-cosigner-header-info-text-bold\">\r\n NOTE:\r\n </span>{\" \"}\r\n You can add yourself as a Co-Signer and further add more\r\n Co-Signers to your account.\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-body\">\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-body-header\">\r\n <p className=\"verified-custd-mdl-add-cosigner-step2-body-header-first-text\">\r\n Add Co-Signers\r\n </p>\r\n\r\n <p className=\"verified-custd-mdl-add-cosigner-step2-body-header-second-text\">\r\n ({coSigners?.length + 1 < 5 ? coSigners?.length + 1 : 5}/5)\r\n </p>\r\n </div>\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-body-content\">\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-body-content-header\">\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-body\">\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-label\">\r\n <p className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-label-text\">\r\n Creator\r\n </p>\r\n </div>\r\n <div className=\"verified-custd-mdl-a-c-2-b-content-header-body-header-cont\">\r\n <div className=\"verified-custd-mdl-a-c-2-b-content-header-body-header\">\r\n <p className=\"verified-custd-mdl-a-c-2-b-content-header-body-title\">\r\n You\r\n </p>\r\n {props.userEmail?.length > 0 && (\r\n <p className=\"verified-custd-mdl-a-c-2-b-content-header-body-label\">\r\n {props.userEmail}\r\n </p>\r\n )}\r\n {props.userEmail?.length === 0 && (\r\n <p className=\"verified-custd-mdl-a-c-2-b-content-header-body-label\">\r\n (+{props.selectedCountry.area}){\" \"}\r\n {props.userNumberFmt}\r\n </p>\r\n )}\r\n </div>\r\n </div>\r\n\r\n {/* <button className=\"verified-custd-mdl-a-c-2-b-content-header-body-button\">\r\n Add Self\r\n </button> */}\r\n </div>\r\n </div>\r\n {!showSetRule &&\r\n coSigners\r\n .sort((a, b) => a?.position - b?.position)\r\n .map((cng: any, idx: number) => (\r\n <div\r\n key={idx}\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-cont\"\r\n >\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-body\">\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-label\">\r\n <p className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-label-text\">\r\n {\r\n numberPositionsFmt[cng?.position]?.split(\r\n \" \"\r\n )[0]\r\n }\r\n <sup>\r\n {\r\n numberPositionsFmt[cng?.position]?.split(\r\n \" \"\r\n )[1]\r\n }\r\n </sup>{\" \"}\r\n Co-Signer\r\n </p>\r\n </div>\r\n <div className=\"verified-custd-mdl-a-c-2-b-content-header-body-header-cont\">\r\n <div className=\"verified-custd-mdl-a-c-2-b-content-header-body-header\">\r\n <p className=\"verified-custd-mdl-a-c-2-b-content-header-body-title\">\r\n {cng?.name}\r\n </p>\r\n {cng.otpChannel === \"email\" && (\r\n <p className=\"verified-custd-mdl-a-c-2-b-content-header-body-label\">\r\n {cng.email}\r\n </p>\r\n )}\r\n {cng.otpChannel === \"sms\" && (\r\n <p className=\"verified-custd-mdl-a-c-2-b-content-header-body-label\">\r\n (+{cng?.phoneArea}) {cng.number}\r\n </p>\r\n )}\r\n </div>\r\n </div>\r\n\r\n <div className=\"verified-custd-mdl-a-c-2-b-content-header-body-header-icons\">\r\n <img\r\n style={{ cursor: \"pointer\" }}\r\n src={imageAssets.editBlack}\r\n alt=\"edit\"\r\n />\r\n <img\r\n onClickCapture={() => {\r\n setCosigners((cngs) =>\r\n cngs\r\n ?.filter((sig) =>\r\n sig?.otpChannel === \"sms\"\r\n ? sig?.phoneArea?.toLowerCase() +\r\n sig?.number?.toLowerCase() !==\r\n cng?.phoneArea?.toLowerCase() +\r\n cng?.number?.toLowerCase()\r\n : sig?.email?.toLowerCase() !==\r\n cng?.email?.toLowerCase()\r\n )\r\n ?.map((nSig, newId) => {\r\n nSig.position = newId + 1;\r\n return nSig;\r\n })\r\n );\r\n }}\r\n onClick={() => {\r\n handleButtonDisplay();\r\n }}\r\n style={{ cursor: \"pointer\" }}\r\n src={imageAssets.delete}\r\n alt=\"delete\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n ))}\r\n </div>\r\n\r\n {showSetRule && (\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-content-outter\">\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-content\">\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-header\">\r\n <p className=\"verified-custd-mdl-add-cosigner-confirm-body-title\">\r\n Specify the number of Co-Signers you need to sign\r\n off for an approval\r\n </p>\r\n <p className=\"verified-custd-mdl-add-cosigner-confirm-body-label\">\r\n By default we need 2, you can add up to 5\r\n Co-Signers as minimum sign off needed for\r\n approval.\r\n </p>\r\n </div>\r\n\r\n <div\r\n style={{ width: \"100%\" }}\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer\"\r\n >\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-ind-cont\">\r\n {new Array(coSigners?.length + 1)\r\n .fill(\"1\")\r\n .map((_: any, idx: number) => (\r\n <div\r\n style={\r\n idx + 1 === requiredSigners\r\n ? {}\r\n : {\r\n height: \"0\",\r\n width: \"0\",\r\n overflow: \"hidden\",\r\n }\r\n }\r\n key={idx}\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-ind\"\r\n >\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-ind-text-cont\">\r\n <p className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-ind-text\">\r\n {String(idx + 1)}\r\n </p>{\" \"}\r\n </div>\r\n <img\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-ind-icon\"\r\n src={imageAssets.pointer}\r\n alt=\"\"\r\n />\r\n </div>\r\n ))}\r\n </div>\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-label-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-label-slider-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-label-slider\">\r\n <div\r\n style={\r\n coSigners?.length === 1\r\n ? {\r\n width: `${\r\n 100 / coSigners?.length\r\n }%`,\r\n }\r\n : {\r\n width: `calc(${\r\n 100 / coSigners?.length\r\n }% + 12px)`,\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-label-slider-ind\"\r\n >\r\n <img\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-label-slider-icon\"\r\n src={imageAssets.sliderDot}\r\n alt=\"\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-label-text-cont\">\r\n {new Array(coSigners?.length + 1)\r\n .fill(\"1\")\r\n .map((_: any, idx: number) => (\r\n <p\r\n style={\r\n idx === coSigners?.length\r\n ? { paddingRight: \"12px\" }\r\n : idx === 0\r\n ? { paddingLeft: \"12px\" }\r\n : {}\r\n }\r\n onClick={() => {\r\n if (idx + 1 > 1) {\r\n setRequiredSigners(idx + 1);\r\n }\r\n }}\r\n key={idx}\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-label-text\"\r\n >\r\n {String(idx + 1)}\r\n </p>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <button\r\n id=\"confirm-cosigner-button\"\r\n style={{ marginBottom: \"10px\", width: \"100%\" }}\r\n onClick={async (e: any) => {\r\n if (\r\n e.target.className.includes(\"startup-button\") &&\r\n e.target.className !== \"startup-button\"\r\n ) {\r\n e.target.className = \"startup-button-click\";\r\n await handleCompleteVault();\r\n } else {\r\n const buttonElement =\r\n document.getElementsByClassName(\r\n \"startup-button-active\"\r\n );\r\n if (buttonElement.length > 0) {\r\n buttonElement[0].className =\r\n \"startup-button-click\";\r\n }\r\n await handleCompleteVault();\r\n }\r\n }}\r\n className=\"verified-custd-mdl-startup-button-active\"\r\n >\r\n Confirm\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n\r\n {showAddMore && coSigners?.length < 4 && (\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-add-more-body\">\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-add-more-first\">\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-add-more-first-header\">\r\n <p className=\"verified-custd-mdl-add-cosigner-step2-add-more-first-header-text\">\r\n Add Details\r\n </p>\r\n </div>\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-add-more-first-footer\">\r\n <p className=\"verified-custd-mdl-add-cosigner-step2-add-more-first-footer-text\">\r\n {\r\n numberPositionsFmt[coSigners?.length + 1]?.split(\r\n \" \"\r\n )[0]\r\n }\r\n <sup>\r\n {\r\n numberPositionsFmt[\r\n coSigners?.length + 1\r\n ]?.split(\" \")[1]\r\n }\r\n </sup>{\" \"}\r\n Co-Signer\r\n </p>\r\n </div>\r\n </div>\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-add-more-second\">\r\n <input\r\n onInput={(e: any) => {\r\n setCoSignerName(e.target.value);\r\n }}\r\n value={coSignerName}\r\n placeholder=\"Enter Co-signer name\"\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-second-input\"\r\n type=\"text\"\r\n />\r\n </div>\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-add-more-third\">\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-add-more-third-cont\">\r\n <img\r\n onClick={() => {\r\n setAddChannel(\"sms\");\r\n setErrorText(\"\");\r\n setCoSignerEmail(\"\");\r\n }}\r\n src={\r\n addChannel === \"sms\"\r\n ? imageAssets.selectClicked\r\n : imageAssets.select\r\n }\r\n alt=\"\"\r\n />\r\n <p className=\"verified-custd-mdl-add-cosigner-step2-add-more-third-cont-text\">\r\n Phone number\r\n </p>\r\n </div>\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-add-more-third-cont\">\r\n <img\r\n onClick={() => {\r\n setAddChannel(\"email\");\r\n setErrorText(\"\");\r\n setCoSignerNumber(\"\");\r\n setCoSignerNumberFmt(\"\");\r\n setUserInput(\"\");\r\n }}\r\n src={\r\n addChannel === \"email\"\r\n ? imageAssets.selectClicked\r\n : imageAssets.select\r\n }\r\n alt=\"\"\r\n />\r\n <p className=\"verified-custd-mdl-add-cosigner-step2-add-more-third-cont-text\">\r\n Email\r\n </p>\r\n </div>\r\n </div>\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-add-more-third\">\r\n {addChannel === \"sms\" && (\r\n <div className=\"verified-custd-mdl-st-contact-input\">\r\n <div className=\"verified-custd-mdl-st-contact-content-container\">\r\n <div\r\n onClick={() => {\r\n setSearchActive(!searchActive);\r\n }}\r\n className=\"verified-custd-mdl-st-contact-first-section\"\r\n >\r\n <img\r\n onClick={() => {\r\n setSearchActive(!searchActive);\r\n }}\r\n alt=\"Country Flag\"\r\n className=\"verified-custd-mdl-st-contact-selection-icon\"\r\n src={selectedCountry.flag}\r\n />\r\n <p\r\n onClick={() => {\r\n setSearchActive(!searchActive);\r\n }}\r\n className=\"verified-custd-mdl-st-contact-selection-text\"\r\n >\r\n + {selectedCountry.area}\r\n </p>\r\n {searchActive && (\r\n <img\r\n onClick={() => {\r\n setSearchActive(!searchActive);\r\n }}\r\n alt=\"Dropdown Icon\"\r\n className=\"verified-custd-mdl-st-contact-dropdown\"\r\n src={imageAssets.arrowUp}\r\n />\r\n )}\r\n {!searchActive && (\r\n <img\r\n onClick={() => {\r\n setSearchActive(!searchActive);\r\n }}\r\n alt=\"Dropdown Icon\"\r\n className=\"verified-custd-mdl-st-contact-dropdown\"\r\n src={imageAssets.arrowDown}\r\n />\r\n )}\r\n </div>\r\n\r\n <input\r\n onInputCapture={(e: any) => {\r\n if (e.target.value === \"\") {\r\n setUserInput(userInput + \" \");\r\n } else {\r\n setUserInput(e.target.value);\r\n }\r\n const numericInput = e.target.value?.replace(\r\n /\\D/g,\r\n \"\"\r\n );\r\n setCoSignerNumber(numericInput);\r\n let formattedNumber = \"\";\r\n for (\r\n let i = 0;\r\n i < numericInput?.length;\r\n i++\r\n ) {\r\n formattedNumber += numericInput[i];\r\n if (\r\n (i + 1) % 5 === 0 &&\r\n i + 1 < numericInput?.length\r\n ) {\r\n formattedNumber += \" \";\r\n }\r\n }\r\n setCoSignerNumberFmt(formattedNumber);\r\n setErrorText(\"\");\r\n }}\r\n onInput={(e) => {\r\n handleButtonDisplay();\r\n }}\r\n value={coSignerNumberFmt}\r\n id=\"phone-input\"\r\n type=\"text\"\r\n className=\"verified-custd-mdl-st-contact-second-section\"\r\n placeholder=\"Enter phone number\"\r\n />\r\n </div>\r\n {searchActive && (\r\n <SearchBox\r\n pageName=\"ftu/contact\"\r\n searchContent={props.allCountries}\r\n type=\"area-code\"\r\n handleButtonDisplay={handleButtonDisplay}\r\n setSelected={setSelectedCountry}\r\n selected={selectedCountry}\r\n searchActive={searchActive}\r\n setSearchActive={setSearchActive}\r\n contentMaxHeight=\"300\"\r\n contentbottomMargin=\"300\"\r\n />\r\n )}\r\n {errorText === \"\" &&\r\n coSignerNumber.length !== 10 &&\r\n userInput.length > 10 && (\r\n <div className=\"verified-custd-mdl-st-contact-input-error\">\r\n <p className=\"verified-custd-mdl-input-error-text\">\r\n Invalid input, please check the phone number\r\n </p>\r\n </div>\r\n )}\r\n {errorText !== \"\" && (\r\n <div className=\"verified-custd-mdl-st-contact-input-error\">\r\n <p className=\"verified-custd-mdl-input-error-text\">\r\n {errorText}\r\n </p>\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n {addChannel === \"email\" && (\r\n <React.Fragment>\r\n <div className=\"verified-custd-mdl-st-contact-input\">\r\n <input\r\n style={{ width: \"100%\" }}\r\n onInputCapture={(e: any) => {\r\n setCoSignerEmail(e.target.value);\r\n setErrorText(\"\");\r\n }}\r\n onInput={(e) => {\r\n handleButtonDisplay();\r\n }}\r\n value={coSignerEmail}\r\n id=\"email-input\"\r\n type=\"text\"\r\n className=\"verified-custd-mdl-st-contact-second-section\"\r\n placeholder=\"Enter email\"\r\n />\r\n {errorText !== \"\" && (\r\n <div className=\"verified-custd-mdl-st-contact-input-error\">\r\n <p className=\"verified-custd-mdl-input-error-text\">\r\n {errorText}\r\n </p>\r\n </div>\r\n )}\r\n </div>\r\n </React.Fragment>\r\n )}\r\n </div>\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-add-more-buttons\">\r\n <button\r\n onClick={() => setShowAddMore(false)}\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-buttons-neut\"\r\n >\r\n Cancel\r\n </button>\r\n <button\r\n onClickCapture={() => {\r\n handleAddCoSigner();\r\n }}\r\n onClick={() => handleButtonDisplay()}\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-buttons-action\"\r\n >\r\n Add\r\n </button>\r\n </div>\r\n </div>\r\n )}\r\n\r\n {!showAddMore && !showSetRule && coSigners?.length < 4 && (\r\n <div\r\n onClick={() => setShowAddMore(true)}\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-footer\"\r\n >\r\n <img\r\n style={{ width: \"20px\" }}\r\n src={imageAssets.addIcon}\r\n alt=\"add icon\"\r\n />\r\n <p className=\"verified-custd-mdl-add-cosigner-step2-body-content-footer-text\">\r\n Add another Co-Signer\r\n </p>\r\n </div>\r\n )}\r\n {!showAddMore && !showSetRule && coSigners?.length === 4 && (\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-body-content-footer-dis\">\r\n <img\r\n style={{ width: \"20px\" }}\r\n src={imageAssets.addDisableIcon}\r\n alt=\"add icon\"\r\n />\r\n <p className=\"verified-custd-mdl-add-cosigner-step2-body-content-footer-text-dis\">\r\n Add another Co-Signer\r\n </p>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n {!showSetRule && (\r\n <button\r\n style={\r\n !showAddMore && coSigners?.length < 4\r\n ? { marginTop: \"50px\", marginBottom: \"20px\" }\r\n : { marginBottom: \"20px\" }\r\n }\r\n id=\"add-cosigner-button\"\r\n onClick={async (e: any) => {\r\n if (\r\n e.target.className.includes(\"startup-button\") &&\r\n e.target.className !== \"startup-button\"\r\n ) {\r\n e.target.className = \"startup-button-click\";\r\n if (coSigners?.length > 0) {\r\n setRequiredSigners(2);\r\n setShowSetRule(true);\r\n setShowAddMore(false);\r\n }\r\n } else {\r\n const buttonElement = document.getElementsByClassName(\r\n \"startup-button-active\"\r\n );\r\n if (buttonElement.length > 0) {\r\n buttonElement[0].className = \"startup-button-click\";\r\n if (coSigners?.length > 0) {\r\n setRequiredSigners(2);\r\n setShowSetRule(true);\r\n setShowAddMore(false);\r\n }\r\n }\r\n }\r\n }}\r\n className=\"verified-custd-mdl-startup-button\"\r\n >\r\n Proceed\r\n </button>\r\n )}\r\n </React.Fragment>\r\n )}\r\n </React.Fragment>\r\n )}\r\n\r\n {showLearnMore && (\r\n <React.Fragment>\r\n {learnMoreStep === \"1\" && (\r\n <React.Fragment>\r\n <img\r\n className=\"verified-custd-mdl-add-cosigner-body-icon\"\r\n src={imageAssets.addCoSignerIcon2}\r\n alt=\"\"\r\n />\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-more-body\">\r\n <div className=\"verified-custd-mdl-add-cosigner-more-header-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-more-title-cont\">\r\n <p className=\"verified-custd-mdl-add-cosigner-more-title\">\r\n What is a Co-Signer?\r\n </p>\r\n </div>\r\n </div>\r\n <p className=\"verified-custd-mdl-add-cosigner-more-label\">\r\n A Co-Signer is a person who has the right given by you to\r\n generate a new pin on your behalf incase you forget it.{\" \"}\r\n </p>\r\n </div>\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-buttons-cont\">\r\n <button\r\n onClick={() => setShowLearnMore(false)}\r\n className=\"verified-custd-mdl-add-cosigner-button-neut\"\r\n >\r\n Back\r\n </button>\r\n\r\n <button\r\n onClick={() => setLearnMoreStep(\"2\")}\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n >\r\n Next\r\n </button>\r\n </div>\r\n </React.Fragment>\r\n )}\r\n\r\n {learnMoreStep === \"2\" && (\r\n <React.Fragment>\r\n <img\r\n className=\"verified-custd-mdl-add-cosigner-body-icon\"\r\n src={imageAssets.addCoSignerIcon3}\r\n alt=\"\"\r\n />\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-more-body\">\r\n <div className=\"verified-custd-mdl-add-cosigner-more-header-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-more-title-cont\">\r\n <p className=\"verified-custd-mdl-add-cosigner-more-title\">\r\n Why is it needed?\r\n </p>\r\n </div>\r\n </div>\r\n <p className=\"verified-custd-mdl-add-cosigner-more-label\">\r\n In blockchain application, it is impossible to reset a key if\r\n the PIN is forgotten you can login with the help of Co-Signer\r\n </p>\r\n </div>\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-buttons-cont\">\r\n <button\r\n onClick={() => setLearnMoreStep(\"1\")}\r\n className=\"verified-custd-mdl-add-cosigner-button-neut\"\r\n >\r\n Back\r\n </button>\r\n\r\n <button\r\n onClick={() => setLearnMoreStep(\"3\")}\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n >\r\n Next\r\n </button>\r\n </div>\r\n </React.Fragment>\r\n )}\r\n\r\n {learnMoreStep === \"3\" && (\r\n <React.Fragment>\r\n <img\r\n className=\"verified-custd-mdl-add-cosigner-body-icon\"\r\n src={imageAssets.addCoSignerIcon4}\r\n alt=\"\"\r\n />\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-more-body\">\r\n <div className=\"verified-custd-mdl-add-cosigner-more-header-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-more-title-cont\">\r\n <p className=\"verified-custd-mdl-add-cosigner-more-title\">\r\n Who can be my Co-Signer?\r\n </p>\r\n </div>\r\n </div>\r\n <p className=\"verified-custd-mdl-add-cosigner-more-label\">\r\n You can nominate your trusted acquaintances, family members\r\n and even yourself as a co-signer.\r\n </p>\r\n <p className=\"verified-custd-mdl-add-cosigner-more-label-link\">\r\n Learn More in Details\r\n </p>\r\n </div>\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-buttons-cont\">\r\n <button\r\n onClick={() => setLearnMoreStep(\"2\")}\r\n className=\"verified-custd-mdl-add-cosigner-button-neut\"\r\n >\r\n Back\r\n </button>\r\n\r\n <button\r\n onClick={() => {\r\n setCosignerStep(\"2\");\r\n setShowAddMore(false);\r\n setShowLearnMore(false);\r\n setLearnMoreStep(\"1\");\r\n }}\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n >\r\n Start\r\n </button>\r\n </div>\r\n </React.Fragment>\r\n )}\r\n </React.Fragment>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default AddCosignersPage;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { hashTheString, loadAllGoogleFonts } from \"../utils/helpers\";\r\nimport { defaultChainId, imageAssets } from \"../utils/constants\";\r\nimport {\r\n acceptOrRejectInvitation,\r\n initiateVaultRecovery,\r\n restoreVaultLogin,\r\n signVaultRecovery,\r\n validateVaultPin,\r\n} from \"../services/contracts\";\r\nimport PageSlider from \"../components/slider\";\r\nimport { LogoutOverlay, PrivacyOverlay } from \"../components/overlays\";\r\nimport Success from \"../components/success\";\r\nimport { VerifiedCustodyHelpers } from \"../utils/types\";\r\n\r\nconst EnterPinPage = (props: {\r\n fontsLoaded?: boolean;\r\n setisOnboard: (isOnboard: boolean) => void;\r\n vaultId: string;\r\n hashedVaultId: string;\r\n encrptedPk: string;\r\n vaultAddress: string;\r\n vaultChannel: \"sms\" | \"email\";\r\n actionText?: string;\r\n title?: string;\r\n origin?: string;\r\n chainId?: number;\r\n newChainId?: number;\r\n action?: string;\r\n reqVaultData?: any;\r\n reqTxData?: any;\r\n setIsLoading: (isLoading: boolean) => void;\r\n helperFunctions?: VerifiedCustodyHelpers;\r\n}) => {\r\n const [fontsLoaded, setFontsLoaded] = useState(props.fontsLoaded || false);\r\n const [pinIncorrect, setPinIncorrect] = useState(false);\r\n const [pinHide, setPinHide] = useState(true); //hide pin by default\r\n const [searchActive, setSearchActive] = useState(false);\r\n const [showSuccess, setShowSuccess] = useState(false);\r\n const [vaultData, setVaultData] = useState(null);\r\n const [chainId, setChainId] = useState(props.newChainId || defaultChainId);\r\n const [showChains, setShowChains] = useState(false);\r\n const [showInvitation, setShowInvitation] = useState(false);\r\n const [showInvitationSuccess, setShowInvitationSuccess] = useState(false);\r\n const [showRejectInvitation, setShowRejectInvitation] = useState(false);\r\n const [isAccepted, setIsAccepted] = useState(false);\r\n const [pinIncorrectText, setPinIncorrectText] = useState(\"\");\r\n\r\n useEffect(() => {\r\n const PreloadGoogleFonts = () => {\r\n const isFontsLoaded = loadAllGoogleFonts(document);\r\n setFontsLoaded(isFontsLoaded);\r\n };\r\n if (!props.fontsLoaded) {\r\n PreloadGoogleFonts();\r\n }\r\n }, []);\r\n\r\n //todo: add key actions to input focus change\r\n const handlleInputFocus = (currentInput: any) => {\r\n if (currentInput.value.length > 0) {\r\n const nextInput = currentInput.nextElementSibling;\r\n if (nextInput) {\r\n nextInput.focus();\r\n }\r\n } else if (currentInput.value.length === 0) {\r\n currentInput.focus();\r\n }\r\n };\r\n\r\n const hanlePinPaste = (e: any) => {\r\n const pastedText = e.clipboardData.getData(\"text\");\r\n const numbersFromText = pastedText?.replace(/\\D/g, \"\");\r\n const allOptInputs: any = document.getElementsByClassName(\"otp-input\");\r\n if (allOptInputs?.length === 4 && numbersFromText?.length > 0) {\r\n for (let i = 0; i < allOptInputs.length; i++) {\r\n if (numbersFromText[i]) {\r\n allOptInputs[i].value = numbersFromText[i];\r\n allOptInputs[i].focus();\r\n }\r\n }\r\n }\r\n };\r\n\r\n const hanslePinBackspace = (e: any) => {\r\n const previousInpput = e.target.previousElementSibling;\r\n if (previousInpput) {\r\n previousInpput.focus();\r\n }\r\n };\r\n\r\n const handleButtonDisplay = () => {\r\n const button: any = document.getElementById(\r\n \"verified-custd-mdl-otp-button\"\r\n );\r\n const otp1: any = document.getElementById(\"verified-custd-mdl-otp-input-1\");\r\n const otp2: any = document.getElementById(\"verified-custd-mdl-otp-input-2\");\r\n const otp3: any = document.getElementById(\"verified-custd-mdl-otp-input-3\");\r\n const otp4: any = document.getElementById(\"verified-custd-mdl-otp-input-4\");\r\n if (\r\n button &&\r\n otp1?.value.length > 0 &&\r\n otp2?.value.length > 0 &&\r\n otp3?.value.length > 0 &&\r\n otp4?.value.length > 0 &&\r\n !pinIncorrect\r\n ) {\r\n button.className = \"verified-custd-mdl-startup-button-active\";\r\n } else {\r\n button.className = \"verified-custd-mdl-startup-button\";\r\n }\r\n };\r\n\r\n const handleVerifyPin = async () => {\r\n if (!props.helperFunctions) {\r\n setPinIncorrectText(\r\n \"No Helper Functions. Please include all helper functions in the EnterPinPage props.\"\r\n );\r\n setPinIncorrect(true);\r\n } else {\r\n setPinIncorrectText(\"\");\r\n setPinIncorrect(false);\r\n const otp1: any = document.getElementById(\r\n \"verified-custd-mdl-otp-input-1\"\r\n );\r\n const otp2: any = document.getElementById(\r\n \"verified-custd-mdl-otp-input-2\"\r\n );\r\n const otp3: any = document.getElementById(\r\n \"verified-custd-mdl-otp-input-3\"\r\n );\r\n const otp4: any = document.getElementById(\r\n \"verified-custd-mdl-otp-input-4\"\r\n );\r\n if (\r\n otp1?.value?.length > 0 &&\r\n otp2?.value?.length > 0 &&\r\n otp3?.value?.length > 0 &&\r\n otp4?.value?.length > 0 &&\r\n props.hashedVaultId &&\r\n props.encrptedPk\r\n ) {\r\n props.setIsLoading(true);\r\n const fullOtp = otp1?.value + otp2?.value + otp3?.value + otp4?.value;\r\n await validateVaultPin(\r\n props.vaultId,\r\n props.hashedVaultId,\r\n fullOtp,\r\n hashTheString(fullOtp),\r\n props.encrptedPk,\r\n props.vaultAddress,\r\n props.vaultChannel,\r\n Number(chainId)\r\n ).then(async (res) => {\r\n props.setIsLoading(false);\r\n if (res) {\r\n setVaultData(res);\r\n if (\r\n props.action === \"getPk\" &&\r\n props.reqVaultData?.vaultId?.toLowerCase() ===\r\n props.vaultId?.toLowerCase()\r\n ) {\r\n props.setIsLoading(true);\r\n await initiateVaultRecovery(\r\n props.helperFunctions.sendCreatorInitiation,\r\n props.hashedVaultId,\r\n hashTheString(fullOtp),\r\n props.vaultId,\r\n fullOtp,\r\n props.encrptedPk,\r\n props.vaultChannel,\r\n Number(chainId)\r\n ).then(async (res) => {\r\n props.setIsLoading(false);\r\n if (chrome?.storage?.local) {\r\n await chrome.storage.local.remove(\"myVault\");\r\n } else if (!chrome?.storage?.local && localStorage) {\r\n localStorage.removeItem(\"myVault\");\r\n }\r\n if (res) {\r\n setShowSuccess(true);\r\n } else {\r\n setPinIncorrectText(\r\n `Account recovery failed. Verify you don't have pending account recovery process and Try again later`\r\n );\r\n setPinIncorrect(true);\r\n }\r\n });\r\n } else if (props.action === \"signRecovery\") {\r\n props.setIsLoading(true);\r\n await signVaultRecovery(\r\n props.helperFunctions.sendCreatorSigned,\r\n props.helperFunctions.sendCreatorCompleted,\r\n props.hashedVaultId,\r\n hashTheString(fullOtp),\r\n props.vaultId,\r\n fullOtp,\r\n props.encrptedPk,\r\n props.reqVaultData?.vaultId,\r\n props.reqVaultData?.hashedVaultId,\r\n props.reqVaultData?.hashedVaultPin,\r\n props.reqTxData?.id,\r\n Number(chainId)\r\n ).then(async (res) => {\r\n props.setIsLoading(false);\r\n if (\r\n !props.reqTxData?.newUser &&\r\n chrome?.storage?.local &&\r\n !props.vaultAddress\r\n ) {\r\n await chrome.storage.local.remove(\"myVault\");\r\n } else if (\r\n !props.reqTxData?.newUser &&\r\n !chrome?.storage?.local &&\r\n !props.vaultAddress &&\r\n localStorage\r\n ) {\r\n localStorage.removeItem(\"myVault\");\r\n }\r\n if (res) {\r\n setShowSuccess(true);\r\n } else {\r\n setPinIncorrectText(\r\n `Error while signing transaction; it's either you are not a valid co-signer or you had signed this particular transaction before. Verify and try again later.`\r\n );\r\n setPinIncorrect(true);\r\n }\r\n });\r\n } else if (\r\n props.action === \"completeRecovery\" &&\r\n props.reqVaultData?.vaultId?.toLowerCase() ===\r\n props.vaultId?.toLowerCase()\r\n ) {\r\n props.setIsLoading(true);\r\n await restoreVaultLogin(\r\n props.hashedVaultId,\r\n hashTheString(fullOtp),\r\n props.vaultId,\r\n fullOtp,\r\n props.encrptedPk,\r\n props.reqTxData?.id,\r\n props.vaultChannel,\r\n Number(chainId)\r\n ).then(async (res) => {\r\n props.setIsLoading(false);\r\n if (res) {\r\n setShowSuccess(true);\r\n } else {\r\n if (chrome?.storage?.local) {\r\n await chrome.storage.local.remove(\"myVault\");\r\n } else if (!chrome?.storage?.local && localStorage) {\r\n localStorage.removeItem(\"myVault\");\r\n }\r\n setPinIncorrectText(\r\n `Error while restoring login access. Verify all required co-signers had signed our account recovery and try again later.`\r\n );\r\n setPinIncorrect(true);\r\n }\r\n });\r\n } else if (\r\n props.action === \"invitation\" &&\r\n props.reqVaultData?.vaultId?.toLowerCase() !==\r\n props.vaultId?.toLowerCase() &&\r\n props.reqVaultData?.coSignerId?.toLowerCase() ===\r\n props.vaultId?.toLowerCase()\r\n ) {\r\n setPinIncorrectText(\"\");\r\n setPinIncorrect(false);\r\n setShowInvitation(true);\r\n } else if (\r\n props.action === \"invitation\" &&\r\n props.reqVaultData?.vaultId?.toLowerCase() ===\r\n props.vaultId?.toLowerCase()\r\n ) {\r\n setPinIncorrectText(\r\n `You cannot accept your own Co-Signer invitation. please logout and login to: ${props.reqVaultData?.coSignerId} account`\r\n );\r\n setPinIncorrect(true);\r\n } else if (\r\n props.action === \"invitation\" &&\r\n props.reqVaultData?.coSignerId?.toLowerCase() !==\r\n props.vaultId?.toLowerCase()\r\n ) {\r\n setPinIncorrectText(\r\n `You cannot accept this Co-Signer invitation. please logout and login to: ${props.reqVaultData?.coSignerId} account`\r\n );\r\n setPinIncorrect(true);\r\n } else if (\r\n props.action === \"getPk\" &&\r\n props.reqVaultData?.vaultId?.toLowerCase() !==\r\n props.vaultId?.toLowerCase()\r\n ) {\r\n if (chrome?.storage?.local) {\r\n await chrome.storage.local.remove(\"myVault\");\r\n } else if (!chrome?.storage?.local && localStorage) {\r\n localStorage.removeItem(\"myVault\");\r\n }\r\n setPinIncorrectText(\r\n `You are not authorized to fetch account details. please logout and login to: ${props.reqVaultData?.vaultId} account`\r\n );\r\n setPinIncorrect(true);\r\n } else if (\r\n props.action === \"completeRecovery\" &&\r\n props.reqVaultData?.vaultId?.toLowerCase() !==\r\n props.vaultId?.toLowerCase()\r\n ) {\r\n if (chrome?.storage?.local) {\r\n await chrome.storage.local.remove(\"myVault\");\r\n } else if (!chrome?.storage?.local && localStorage) {\r\n localStorage.removeItem(\"myVault\");\r\n }\r\n setPinIncorrectText(\r\n `You are not authorized to restore login access for this account. please logout and login to: ${props.reqVaultData?.vaultId} account`\r\n );\r\n setPinIncorrect(true);\r\n } else if (\r\n props.action === \"connect_wallet\" &&\r\n !props?.vaultAddress\r\n ) {\r\n setPinIncorrectText(\r\n `Incomplete account details received. This may be due to incomplete/unexpected error from last login. Please logout and login back to recover account details.`\r\n );\r\n setPinIncorrect(true);\r\n } else {\r\n setPinIncorrectText(\"\");\r\n setPinIncorrect(false);\r\n setShowSuccess(true);\r\n }\r\n } else {\r\n setPinIncorrectText(\"\");\r\n setPinIncorrect(true);\r\n }\r\n });\r\n }\r\n }\r\n };\r\n\r\n const handleAcceptAndRejectInvitation = async (accepted: boolean) => {\r\n const otp1: any = document.getElementById(\"verified-custd-mdl-otp-input-1\");\r\n const otp2: any = document.getElementById(\"verified-custd-mdl-otp-input-2\");\r\n const otp3: any = document.getElementById(\"verified-custd-mdl-otp-input-3\");\r\n const otp4: any = document.getElementById(\"verified-custd-mdl-otp-input-4\");\r\n const vaultId = props.vaultId;\r\n if (\r\n otp1?.value?.length > 0 &&\r\n otp2?.value?.length > 0 &&\r\n otp3?.value?.length > 0 &&\r\n otp4?.value?.length > 0 &&\r\n props?.reqVaultData?.hashedVaultId &&\r\n props.reqVaultData?.hashedVaultPin &&\r\n vaultId &&\r\n props.helperFunctions?.sendCreatorAcceptance &&\r\n props.helperFunctions?.sendCreatorRejection\r\n ) {\r\n props.setIsLoading(true);\r\n const vaultPin = otp1?.value + otp2?.value + otp3?.value + otp4?.value;\r\n const hashedVaultId = hashTheString(vaultId);\r\n const hashedVaultPin = hashTheString(vaultPin);\r\n await acceptOrRejectInvitation(\r\n props.helperFunctions.sendCreatorAcceptance,\r\n props.helperFunctions.sendCreatorRejection,\r\n props.vaultChannel,\r\n hashedVaultId,\r\n hashedVaultPin,\r\n props?.reqVaultData?.hashedVaultId,\r\n props.reqVaultData?.hashedVaultPin,\r\n props?.reqVaultData?.vaultId,\r\n vaultId,\r\n accepted,\r\n null,\r\n props.encrptedPk,\r\n Number(chainId)\r\n ).then((res) => {\r\n props.setIsLoading(false);\r\n if (res) {\r\n setIsAccepted(accepted);\r\n setShowInvitationSuccess(true);\r\n }\r\n });\r\n }\r\n };\r\n\r\n return (\r\n <React.Fragment>\r\n {fontsLoaded && !showInvitation && (\r\n <React.Fragment>\r\n {!showSuccess && (\r\n <div className=\"verified-custd-mdl-startup-language\">\r\n <div className=\"verified-custd-mdl-startup-contact\">\r\n <PageSlider sliderCount={[1]} currentSlider=\"0\" />\r\n <div className=\"verified-custd-mdl-startup-contact-content\">\r\n <div className=\"verified-custd-mdl-startup-contact-content-heder-cont\">\r\n <p\r\n style={{ alignSelf: \"center\" }}\r\n className=\"verified-custd-mdl-startup-contact-text\"\r\n >\r\n Enter PIN\r\n </p>\r\n {/* <div className=\"verified-custd-mdl-portfolio-page-content-header-button-cont\">\r\n <button\r\n onClick={() => setShowChains(!showChains)}\r\n className=\"verified-custd-mdl-portfolio-page-content-header-button\"\r\n >\r\n {chainConfig[chainId].chainName}\r\n <img src={expandIcon} alt=\"Expand Icon\" />\r\n </button>\r\n {showChains && (\r\n <div className=\"verified-custd-mdl-portfolio-page-content-header-button-body\">\r\n {Object.keys(chainConfig).map((chn: any) => (\r\n <div\r\n onClick={() => {\r\n setChainId(chn);\r\n setShowChains(false);\r\n }}\r\n className=\"verified-custd-mdl-portfolio-page-content-header-button-body-cont\"\r\n >\r\n <p className=\"verified-custd-mdl-portfolio-page-content-header-button-body-text\">\r\n {chainConfig[chn].chainName}\r\n </p>\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n </div> */}\r\n </div>\r\n <div className=\"verified-custd-mdl-startup-otp-text\">\r\n <p className=\"verified-custd-mdl-startup-otp-header-text\">\r\n Welcome back, please enter the{\" \"}\r\n <span style={{ color: \"#0C0C0E\" }}>4-Digit PIN</span> for\r\n your{\" \"}\r\n <span style={{ color: \"#0C0C0E\" }}>{props.vaultId}</span>{\" \"}\r\n account.\r\n </p>\r\n <div className=\"verified-custd-mdl-startup-otp-footer\">\r\n {props.actionText && (\r\n <p className=\"verified-custd-mdl-startup-otp-footer-text\">\r\n {props.actionText ? `To ${props.actionText} ` : \"\"}{\" \"}\r\n from origin: {props.origin || props.title}\r\n </p>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"verified-custd-mdl-otp-input-container\">\r\n <div className=\"verified-custd-mdl-otp-input-group\">\r\n <input\r\n onInputCapture={(e: any) => {\r\n e.target.value = e.target.value?.replace(/\\D/g, \"\");\r\n setPinIncorrect(false);\r\n }}\r\n onInput={(e) => {\r\n handlleInputFocus(e.target);\r\n handleButtonDisplay();\r\n }}\r\n onKeyDown={(e: any) => {\r\n if (e.key === \"Backspace\" && e.target.value === \"\") {\r\n hanslePinBackspace(e);\r\n }\r\n }}\r\n onPaste={(e) => {\r\n hanlePinPaste(e);\r\n }}\r\n className={\r\n pinIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n type={pinHide ? \"password\" : \"text\"}\r\n maxLength={1}\r\n id=\"verified-custd-mdl-otp-input-1\"\r\n />\r\n <input\r\n onInputCapture={(e: any) => {\r\n e.target.value = e.target.value?.replace(/\\D/g, \"\");\r\n setPinIncorrect(false);\r\n }}\r\n onInput={(e) => {\r\n handlleInputFocus(e.target);\r\n handleButtonDisplay();\r\n }}\r\n onKeyDown={(e: any) => {\r\n if (e.key === \"Backspace\" && e.target.value === \"\") {\r\n hanslePinBackspace(e);\r\n }\r\n }}\r\n className={\r\n pinIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n type={pinHide ? \"password\" : \"text\"}\r\n maxLength={1}\r\n id=\"verified-custd-mdl-otp-input-2\"\r\n />\r\n <input\r\n onInputCapture={(e: any) => {\r\n e.target.value = e.target.value?.replace(/\\D/g, \"\");\r\n setPinIncorrect(false);\r\n }}\r\n onInput={(e) => {\r\n handlleInputFocus(e.target);\r\n handleButtonDisplay();\r\n }}\r\n onKeyDown={(e: any) => {\r\n if (e.key === \"Backspace\" && e.target.value === \"\") {\r\n hanslePinBackspace(e);\r\n }\r\n }}\r\n className={\r\n pinIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n type={pinHide ? \"password\" : \"text\"}\r\n maxLength={1}\r\n id=\"verified-custd-mdl-otp-input-3\"\r\n />\r\n <input\r\n onInputCapture={(e: any) => {\r\n e.target.value = e.target.value?.replace(/\\D/g, \"\");\r\n setPinIncorrect(false);\r\n }}\r\n onInput={(e) => {\r\n handlleInputFocus(e.target);\r\n handleButtonDisplay();\r\n }}\r\n onKeyDown={(e: any) => {\r\n if (e.key === \"Backspace\" && e.target.value === \"\") {\r\n hanslePinBackspace(e);\r\n }\r\n }}\r\n className={\r\n pinIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n type={pinHide ? \"password\" : \"text\"}\r\n maxLength={1}\r\n id=\"verified-custd-mdl-otp-input-4\"\r\n />\r\n </div>\r\n <div className=\"verified-custd-mdl-otp-timer\">\r\n {pinIncorrect && pinIncorrectText === \"\" && (\r\n <p className=\"verified-custd-mdl-otp-incorrect-text\">\r\n Please enter the correct pin\r\n </p>\r\n )}\r\n {pinIncorrect && pinIncorrectText?.length > 0 && (\r\n <p className=\"verified-custd-mdl-otp-incorrect-text\">\r\n {pinIncorrectText}\r\n </p>\r\n )}\r\n {!pinIncorrect && (\r\n <p className=\"verified-custd-mdl-otp-incorrect-text\"></p>\r\n )}\r\n\r\n {!pinHide && (\r\n <img\r\n style={{\r\n cursor: \"pointer\",\r\n width: \"24px\",\r\n height: \"24px\",\r\n }}\r\n onClick={() => setPinHide(true)}\r\n src={imageAssets.pinShow}\r\n alt=\"show pin icon\"\r\n />\r\n )}\r\n {pinHide && (\r\n <img\r\n style={{\r\n cursor: \"pointer\",\r\n width: \"24px\",\r\n height: \"24px\",\r\n }}\r\n onClick={() => setPinHide(false)}\r\n src={imageAssets.pinHide}\r\n alt=\"hide pin icon\"\r\n />\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n {!searchActive && <div style={{ height: \"100px\" }}></div>}\r\n\r\n <div className=\"verified-custd-mdl-startup-contact-footer\">\r\n <div className=\"verified-custd-mdl-st-contact-footer-first-section\">\r\n <LogoutOverlay\r\n setisOnboard={props.setisOnboard}\r\n setIsLoading={props.setIsLoading}\r\n />\r\n <button\r\n id=\"verified-custd-mdl-otp-button\"\r\n onClick={async (e: any) => {\r\n if (\r\n e.target.className.includes(\r\n \"verified-custd-mdl-startup-button\"\r\n ) &&\r\n e.target.className !==\r\n \"verified-custd-mdl-startup-button\"\r\n ) {\r\n e.target.className =\r\n \"verified-custd-mdl-startup-button-click\";\r\n await handleVerifyPin();\r\n } else {\r\n const buttonElement = document.getElementsByClassName(\r\n \"verified-custd-mdl-startup-button-active\"\r\n );\r\n if (buttonElement.length > 0) {\r\n buttonElement[0].className =\r\n \"verified-custd-mdl-startup-button-click\";\r\n await handleVerifyPin();\r\n }\r\n }\r\n }}\r\n className=\"verified-custd-mdl-startup-button\"\r\n >\r\n Proceed\r\n </button>\r\n <div className=\"verified-custd-mdl-st-contact-footer-second-section\">\r\n <PrivacyOverlay />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n {showSuccess && (\r\n <Success\r\n messageTosend={\r\n props.action === \"getPk\"\r\n ? {\r\n type: \"closePopup\",\r\n key: \"\",\r\n value: \"\",\r\n }\r\n : props.action === \"signRecovery\"\r\n ? {\r\n type: \"closePopup\",\r\n key: \"\",\r\n value: \"\",\r\n }\r\n : props.action === \"completeRecovery\"\r\n ? {\r\n type: \"closePopup\",\r\n key: \"\",\r\n value: \"\",\r\n }\r\n : {\r\n type: \"vaultData\",\r\n key: \"vaultData\",\r\n value: vaultData,\r\n }\r\n }\r\n customTextHeader={\"Successful\"}\r\n customTextFooter={\r\n props.action === \"getPk\" && props.vaultChannel === \"email\"\r\n ? \"You have successfully initiated your account recovery process check your email for further instructions\"\r\n : props.action === \"getPk\" && props.vaultChannel === \"sms\"\r\n ? \"You have successfully initiated your account recovery process check your phone number messages for further instructions\"\r\n : props.action === \"signRecovery\"\r\n ? `Congratulations! You have successfully signed account recovery transaction for user: ${props.reqVaultData?.vaultId}`\r\n : props.action === \"completeRecovery\"\r\n ? `Congratulations! You have successfully restored login access for your ${props?.vaultId} account`\r\n : `Congratulations! You have successfully ${\r\n props.action === \"connect_wallet\"\r\n ? \"connected your account\"\r\n : props?.actionText\r\n ? props.actionText\r\n : \"logged in to your account.\"\r\n } `\r\n }\r\n />\r\n )}\r\n </React.Fragment>\r\n )}\r\n {fontsLoaded && showInvitation && (\r\n <React.Fragment>\r\n {!showInvitationSuccess && (\r\n <div\r\n style={{ padding: \"0\", position: \"relative\" }}\r\n className=\"verified-custd-mdl-startup-language\"\r\n >\r\n <div className=\"verified-custd-mdl-startup-contact\">\r\n <PageSlider sliderCount={[1, 2, 3]} currentSlider=\"1\" />\r\n <div className=\"verified-custd-mdl-startup-contact-content\">\r\n <p className=\"verified-custd-mdl-startup-contact-text\">\r\n <b>{props.reqVaultData?.vaultId}</b> has requested you to be\r\n a Co-Signer\r\n </p>\r\n </div>\r\n </div>\r\n <img\r\n className=\"verified-custd-mdl-add-cosigner-body-icon\"\r\n src={imageAssets.addCoSignerIcon1}\r\n alt=\"\"\r\n />\r\n {!showRejectInvitation && (\r\n <React.Fragment>\r\n <div className=\"verified-custd-mdl-add-cosigner-more-body\">\r\n <div className=\"verified-custd-mdl-add-cosigner-more-header-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-more-title-cont\">\r\n <p className=\"verified-custd-mdl-add-cosigner-more-title\">\r\n What is a Co-Signer?\r\n </p>\r\n </div>\r\n </div>\r\n <p\r\n style={{\r\n fontSize: \"12px\",\r\n color: \"var(--Neutral-600, #5B5D6E)\",\r\n }}\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n >\r\n A Co-Signer is a person who has the right given by you to\r\n generate a new pin on your behalf incase you forget it.{\" \"}\r\n </p>\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-body-text-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-body-text-icon\">\r\n <img src={imageAssets.pkicon} alt=\"icon\" />\r\n </div>\r\n <p className=\"verified-custd-mdl-add-cosigner-body-text-label\">\r\n As a Co Signer you can help{\" \"}\r\n <span className=\"verified-custd-mdl-add-cosigner-body-text-label-bold\">\r\n reset PIN\r\n </span>\r\n </p>\r\n </div>\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-body-text-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-body-text-icon\">\r\n <img src={imageAssets.encryptedIcon} alt=\"icon\" />\r\n </div>\r\n <p className=\"verified-custd-mdl-add-cosigner-body-text-label\">\r\n Don’t worry, they{\" \"}\r\n <span className=\"verified-custd-mdl-add-cosigner-body-text-label-bold\">\r\n will not get access\r\n </span>{\" \"}\r\n to your account in any way.\r\n </p>\r\n </div>\r\n </div>\r\n <div className=\"verified-custd-mdl-add-cosigner-buttons-cont\">\r\n <button\r\n onClick={() => {\r\n setShowRejectInvitation(true);\r\n }}\r\n className=\"verified-custd-mdl-add-cosigner-button-neut\"\r\n >\r\n Reject\r\n </button>\r\n\r\n <button\r\n onClick={async () => {\r\n await handleAcceptAndRejectInvitation(true);\r\n }}\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n >\r\n Accept\r\n </button>\r\n </div>\r\n </React.Fragment>\r\n )}\r\n\r\n {showRejectInvitation && (\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-content-outter\">\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-content\">\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-header\">\r\n <p className=\"verified-custd-mdl-add-cosigner-confirm-body-title\">\r\n Are you sure you want to reject this request?\r\n </p>\r\n <p\r\n style={{\r\n fontSize: \"12px\",\r\n color: \"var(--Neutral-600, #5B5D6E)\",\r\n }}\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-label\"\r\n >\r\n Once you reject to be a co-signer for{\" \"}\r\n <b>{props.reqVaultData?.vaultId}</b>, you will not be\r\n able to reset the PIN for them.\r\n </p>\r\n </div>\r\n\r\n <div\r\n style={{ width: \"90%\" }}\r\n className=\"verified-custd-mdl-add-cosigner-buttons-cont\"\r\n >\r\n <button\r\n onClick={async () => {\r\n await handleAcceptAndRejectInvitation(false);\r\n }}\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n >\r\n Yes\r\n </button>\r\n\r\n <button\r\n onClick={() => {\r\n setShowRejectInvitation(false);\r\n }}\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n >\r\n No\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n {showInvitationSuccess && (\r\n <Success\r\n messageTosend={{\r\n type: \"getPk\",\r\n key: \"vaultData\",\r\n value: vaultData,\r\n }}\r\n customTextHeader=\"Successful\"\r\n customTextFooter={\r\n isAccepted\r\n ? `You have been added as a Co-Signer for ${props.reqVaultData?.vaultId}`\r\n : `You rejected Co-signer reject from ${props.reqVaultData?.vaultId}`\r\n }\r\n />\r\n )}\r\n </React.Fragment>\r\n )}\r\n {!fontsLoaded && <h3>Preparing Modules...</h3>}\r\n </React.Fragment>\r\n );\r\n};\r\n\r\nexport default EnterPinPage;\r\n"],"mappings":"AACA,SAASA,GAAYC,EAAK,CACxB,GAAI,CAACA,GAAO,OAAO,SAAa,IAAa,OAE7C,IAAMC,EAAO,SAAS,MAAQ,SAAS,qBAAqB,MAAM,EAAE,CAAC,EAC/DC,EAAQ,SAAS,cAAc,OAAO,EAC5CA,EAAM,KAAO,WAEVD,EAAK,WACNA,EAAK,aAAaC,EAAOD,EAAK,UAAU,EAExCA,EAAK,YAAYC,CAAK,EAGrBA,EAAM,WACPA,EAAM,WAAW,QAAUF,EAE3BE,EAAM,YAAY,SAAS,eAAeF,CAAG,CAAC,CAElD,CACAD,GAAY;AAAA,CAAmj/B,ECpB3j/B,OAAO,OAAW,MACnB,OAAe,OAAS,CAAC,GCD5B,OAAOI,IAAS,aAAAC,GAAW,YAAAC,OAAgB,QCA3C,OAAOC,IAAS,iBAAAC,GAAe,cAAAC,GAAY,YAAAC,OAAgB,QAmB3D,IAAMC,GAAoBH,GAAsC,MAAS,EAE5DI,GAAwBC,GAE/B,CACJ,GAAM,CAACC,EAASC,CAAU,EAAIL,GAAwB,IAAI,EACpD,CAACM,EAAIC,CAAK,EAAIP,GAAwB,IAAI,EAC1C,CAACQ,EAASC,CAAU,EAAIT,GAAwB,IAAI,EACpD,CAACU,EAAQC,CAAS,EAAIX,GAAc,IAAI,EACxC,CAACY,EAAUC,CAAW,EAAIb,GAAc,IAAI,EAC5C,CAACc,EAAeC,CAAgB,EAAIf,GAAc,IAAI,EACtD,CAACgB,EAAWC,CAAY,EAAIjB,GAAc,IAAI,EAC9C,CAACkB,EAAUC,CAAW,EAAInB,GAAwB,IAAI,EAE5D,OACEH,GAAA,cAACI,GAAkB,SAAlB,CACC,MAAO,CACL,QAAAG,EACA,GAAAE,EACA,QAAAE,EACA,OAAAE,EACA,SAAAE,EACA,cAAAE,EACA,UAAAE,EACA,WAAAX,EACA,MAAAE,EACA,WAAAE,EACA,UAAAE,EACA,YAAAE,EACA,iBAAAE,EACA,aAAAE,CACF,GAECd,EAAM,QACT,CAEJ,EAEaiB,GAAgB,IAAM,CACjC,IAAMC,EAAUtB,GAAWE,EAAiB,EAC5C,GAAIoB,EACF,OAAOA,EAEP,MAAM,MAAM,wDAAwD,CAExE,EChEA,OAAOC,IAAS,aAAAC,GAAW,YAAAC,OAAgB,QAC3C,OAAS,YAAAC,OAAgB,SCDlB,IAAMC,GACX,QAAQ,IAAI,qBAAuB,aAAe,KAAO,SAE9CC,GACX,QAAQ,IAAI,qBAAuB,aAC/B,kCACA,gCAEOC,GAAoB,CAC/B,iJACA,8KACA,qFACF,EAEaC,GACX,qEAEWC,GAAe,qCAEfC,GAAkB,CAC7B,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,KACL,EAEaC,GAAqB,CAChC,EAAG,OACH,EAAG,OACH,EAAG,OACH,EAAG,OACH,EAAG,MACL,EAEaC,GAAc,CACzB,eAAgB,uBAChB,MAAO,+BACP,WAAY,8BACZ,aAAc,wBACd,iBAAkB,sBACpB,EAEaC,EAAc,CACzB,YACE,iGACF,QACE,kHACF,WACE,4FACF,iBACE,oGACF,iBACE,oGACF,iBACE,oGACF,iBACE,oGACF,OACE,wFACF,cACE,+FACF,QACE,8FACF,QACE,8FACF,QACE,iGACF,UACE,iGACF,SACE,qFACF,UACE,0FACF,OACE,4FACF,cACE,kGACF,UACE,gGACF,OACE,4FACF,QACE,6FACF,UACE,4FACF,OACE,4FACF,cACE,oGACF,QACE,iGACF,eACE,gGACF,WACE,2FACF,aACE,6FACF,YACE,4FACJ,EAEaC,GAAmB,CAC9B,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,iBACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,aACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,sBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,yBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,iCACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,oBACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,GACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,iBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,2BACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,mBACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,0BACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,4BACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,2CACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,iBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,qBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,oBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,mBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,gBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,gBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,oCACN,KAAM,KACN,SAAU,MACV,UAAW,YACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,GACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,gBACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,gBACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,gBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,mBACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,gBACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,iBACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,kBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,2BACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,mBACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,mBACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,GACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,sBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,wBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,4BACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,mCACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,wBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,iBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,kBACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,+CACN,KAAM,KACN,SAAU,MACV,UAAW,aACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,yBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,sBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,uBACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,iBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,gBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,GACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE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","names":["injectStyle","css","head","style","React","useEffect","useState","React","createContext","useContext","useState","VaultStoreContext","VaultContextProvider","props","chainId","setChainId","pk","setPk","address","setAddress","signer","setSigner","provider","setProvider","vaultContract","setVaultContract","vaultData","setVaultData","fcmToken","setFcmToken","useVaultStore","context","React","useEffect","useState","debounce","defaultChainId","defaultVerifiedUrl","allGoogleFontUrls","newTransactionEventHash","TwiloBaseUrl","numberPositions","numberPositionsFmt","actionTexts","imageAssets","countriesDetails","contractAddress","Custody","Provider","VerifiedWallet","ChainConfig","PaymasterConfig","crypto","crypt","toast","createSmartAccountClient","React","loadAllGoogleFonts","document","apiLink","staticLink","allGoogleFontUrls","fontUrl","fontLink","initWalletAndContract","chainId","privateKey","_a","_b","_c","_d","_e","sender","VerifiedWallet","mnemonics","cntAddresses","contractAddress","_chainId","ChainConfig","defaultChainId","provider","signer","Provider","pk","vaultContract","Custody","address","PaymasterConfig","err","sendOTPVerification","recipient","channel","data","TwiloBaseUrl","error","checkOTPVerification","code","hashTheString","text","encryptString","secretKey","decryptString","encryptedText","decryptedBytes","decryptedText","getErrorToastContent","title","content","React","imageAssets","errorToast","title","content","toast","getErrorToastContent","React","useState","React","PageSlider","props","_a","_","idx","slider_default","React","useState","SearchBox","props","_a","newSearchContent","setNewSearchContent","useState","React","imageAssets","e","src","_b","idx","_c","nm","search_default","React","TermsAndConditionsOverlay","React","LogoutOverlay","props","_a","_b","PrivacyOverlay","imageAssets","ContactPage","props","_a","_b","userNumber","setUserNumber","useState","userInput","setUserInput","searchActive","setSearchActive","sendOtpErrorText","setSendOtpErrorText","pk","vaultContract","useVaultStore","handleButtonDisplay","button","handleSendOTP","_c","vaultId","channel","sendOTPVerification","res","errorToast","React","slider_default","imageAssets","e","numericInput","formattedNumber","i","search_default","TermsAndConditionsOverlay","buttonElement","PrivacyOverlay","contact_default","React","useEffect","useState","OTPPage","props","_a","_b","_c","_d","_e","_f","searchActive","setSearchActive","useState","countdown","setCountdown","otpIncorrect","setOtpIncorrect","pk","vaultContract","useVaultStore","useEffect","reduceCountdown","prevCountdown","handlleInputFocus","currentInput","nextInput","handleOtpPaste","e","pastedText","numbersFromText","allOptInputs","handleOtpBackspace","previousInpput","handleButtonDisplay","button","otp1","otp2","otp3","otp4","handleVerifyOtp","vaultId","fullOtp","checkOTPVerification","res","handleResendOtp","channel","sendOTPVerification","errorToast","React","slider_default","imageAssets","inputs","i","buttonElement","PrivacyOverlay","otp_default","React","useState","AbiCoder","decodeBytes32String","encodeBytes32String","combine","split","contractAddress","Custody","Provider","VerifiedWallet","createSmartAccountClient","checkOrCreateVault","vaultId","hashedVaultId","vaultPin","hashedVaultPin","otpChannel","userPk","userAddress","vaultContract","action","reqVaultData","txData","vaultData","res","_a","_b","_c","_d","_e","_f","secretKey","encodeBytes32String","encryptedPk","encryptString","event","err","errorToast","vultRes","cfrmRes","validateVaultPin","newChainId","chainId","decryptString","cntAddresses","contractAddress","sender","VerifiedWallet","_chainId","ChainConfig","defaultChainId","provider","signer","Provider","Custody","acceptOrRejectInvitation","sendCreatorAcceptance","sendCreatorRejection","channel","hashedCosignerId","hashedCosignerPin","hashedCreatorVaultId","hashedCreatorVaultPin","creatorVaultId","coSignerVaultId","accepted","contract","completeVaultCreation","sendCoSignerInvitation","sendCreatorConfirmation","keyHolders","coSigners","KeyThreshold","pk","keyShardsCount","sharesArrayAsString","split","letter","share","failedKeyHolders","succesfulKeyHolders","idx","participant","hashTheString","keyHolder","cosignersList","cng","numberPositions","initiateVaultRecovery","sendCreatorInitiation","vaultChannel","_g","abiCoder","AbiCoder","vaultLogs","log","tp","newTransactionEventHash","decodedTxData","val","decodeBytes32String","txId","signVaultRecovery","sendCreatorSigned","sendCreatorCompleted","reqVaultId","hashedReqId","hashedReqPin","reqTxId","qRes","restoreVaultLogin","recoveredShrads","shrd","shares","combinedShares","combine","newEncryptedPk","newSigner","newAddress","createSmartAccountClient","PaymasterConfig","React","Success","props","_a","_b","timeoutId","_c","_d","res","event","err","errorToast","handleContinue","handleClosePopup","React","imageAssets","success_default","CreatePinPage","props","_a","_b","_c","_d","searchActive","setSearchActive","useState","pinIncorrect","setPinIncorrect","pinIncorrectText","setPinIncorrectText","pinHide","setPinHide","showInvitation","setShowInvitation","showInvitationSuccess","setShowInvitationSuccess","showCustomSuccess","setShowCustomSuccess","vaultPin","setVaultPin","showRejectInvitation","setShowRejectInvitation","address","pk","vaultContract","setVaultData","vaultData","useVaultStore","handlleInputFocus","currentInput","nextInput","handleOtpBackspace","e","previousInpput","handleButtonDisplay","button","otp1","otp2","otp3","otp4","otp5","otp6","otp7","otp8","handleVaultManagement","_e","_f","_g","_h","_i","_j","_k","vaultId","channel","hashedVaultId","hashTheString","hashedVaultPin","checkOrCreateVault","res","handleAcceptAndRejectInvitation","accepted","acceptOrRejectInvitation","React","slider_default","imageAssets","buttonElement","success_default","createPin_default","React","useState","AddCosignersPage","props","_a","_b","_c","_d","showLearnMore","setShowLearnMore","useState","learnMoreStep","setLearnMoreStep","cosignerStep","setCosignerStep","showAddMore","setShowAddMore","addChannel","setAddChannel","coSignerNumber","setCoSignerNumber","coSignerNumberFmt","setCoSignerNumberFmt","coSignerEmail","setCoSignerEmail","coSignerName","setCoSignerName","userInput","setUserInput","searchActive","setSearchActive","selectedCountry","setSelectedCountry","imageAssets","coSigners","setCosigners","showSetRule","setShowSetRule","requiredSigners","setRequiredSigners","errorText","setErrorText","pk","vaultData","vaultContract","useVaultStore","handleButtonDisplay","button","handleAddCoSigner","sig","coSignerLength","cngs","handleCompleteVault","_e","_f","keyHolders","completeVaultCreation","res","React","slider_default","a","b","cng","idx","numberPositionsFmt","nSig","newId","_","e","buttonElement","numericInput","formattedNumber","i","search_default","addCosigners_default","FTUPage","props","fontsLoaded","setFontsLoaded","useState","showLogo","setShowLogo","allCountries","setAllCountries","step","setStep","selectedCountry","setSelectedCountry","imageAssets","userNumberFmt","setUserNumberFmt","userEmail","setUserEmail","showSuccessBtn","setShowSuccessBtn","successBtnText","setSuccessBtnText","successBtnNeutText","setSuccessBtnNeutText","actionHeaderText","setActionHeaderText","actionFooterText","setActionFooterText","successBtnFunc","setSuccessBtnFunc","successBtnNeutFunc","setSuccessBtnNeutFunc","setChainId","setAddress","setPk","setProvider","setSigner","setVaultContract","setVaultData","vaultData","useVaultStore","useEffect","PreloadGoogleFonts","isFontsLoaded","loadAllGoogleFonts","walletAndContractDetails","initWalletAndContract","debounce","fmtCountries","countriesDetails","cnt","React","contact_default","otp_default","createPin_default","success_default","addCosigners_default","ftu_default","React","useEffect","useState","EnterPinPage","props","_a","_b","_c","_d","_e","fontsLoaded","setFontsLoaded","useState","pinIncorrect","setPinIncorrect","pinHide","setPinHide","searchActive","setSearchActive","showSuccess","setShowSuccess","vaultData","setVaultData","chainId","setChainId","defaultChainId","showChains","setShowChains","showInvitation","setShowInvitation","showInvitationSuccess","setShowInvitationSuccess","showRejectInvitation","setShowRejectInvitation","isAccepted","setIsAccepted","pinIncorrectText","setPinIncorrectText","useEffect","PreloadGoogleFonts","isFontsLoaded","loadAllGoogleFonts","handlleInputFocus","currentInput","nextInput","hanlePinPaste","e","pastedText","numbersFromText","allOptInputs","i","hanslePinBackspace","previousInpput","handleButtonDisplay","button","otp1","otp2","otp3","otp4","handleVerifyPin","fullOtp","validateVaultPin","hashTheString","res","_f","_g","_h","_i","_j","_k","_l","_m","_n","_o","_p","_q","_r","_s","_t","_u","_v","_w","_x","_y","_z","_A","_B","_C","_D","_E","_F","_G","_H","_I","_J","_K","initiateVaultRecovery","signVaultRecovery","restoreVaultLogin","handleAcceptAndRejectInvitation","accepted","vaultId","vaultPin","hashedVaultId","hashedVaultPin","acceptOrRejectInvitation","React","slider_default","imageAssets","LogoutOverlay","buttonElement","PrivacyOverlay","success_default","enterPin_default","motion","VerifiedCustody","props","_a","_b","_c","_d","_e","_f","_g","_h","_i","_j","_k","_l","_m","_n","_o","_p","_q","_r","fontsLoaded","setFontsLoaded","useState","isOnboard","setisOnboard","vaultData","setVaultData","isLoading","setIsLoading","useEffect","isFontsLoaded","loadAllGoogleFonts","res","myVault","React","VaultContextProvider","imageAssets","ftu_default","hashTheString","ky","enterPin_default","actionTexts","pages_default"]}
|
|
1
|
+
{"version":3,"sources":["../src/style.css","../src/iosShim.ts","../src/pages/index.tsx","../src/services/store.tsx","../src/pages/ftu.tsx","../src/utils/constants.ts","../src/utils/helpers.tsx","../src/utils/config.ts","../src/pages/contact.tsx","../src/components/slider.tsx","../src/components/search.tsx","../src/components/overlays.tsx","../src/pages/otp.tsx","../src/pages/createPin.tsx","../src/services/contracts.ts","../src/components/success.tsx","../src/pages/addCosigners.tsx","../src/pages/enterPin.tsx"],"sourcesContent":["\nfunction injectStyle(css) {\n if (!css || typeof document === 'undefined') return\n\n const head = document.head || document.getElementsByTagName('head')[0]\n const style = document.createElement('style')\n style.type = 'text/css'\n \n if(head.firstChild) {\n head.insertBefore(style, head.firstChild)\n } else {\n head.appendChild(style)\n }\n\n if(style.styleSheet) {\n style.styleSheet.cssText = css\n } else {\n style.appendChild(document.createTextNode(css))\n }\n}\ninjectStyle(\"textarea:focus,input:focus{outline:none;border:none}input{appearance:textfield;-moz-appearance:textfield;outline:none;border:none;margin:0}input::placeholder{margin:0}input[type=password]::-ms-reveal{display:none}input[type=password]::-moz-password-toggle{display:none}input[type=password]::-webkit-contacts-auto-fill-button{display:none}input::-webkit-inner-spin-button,input::-webkit-outer-spin-button{-webkit-appearance:none}::-webkit-scrollbar{width:5px;height:4px}::-webkit-scrollbar-thumb{height:4px;width:5px;background-color:var(--Neutral-200, #d8d9df);border-radius:4px}::-webkit-scrollbar-thumb:hover{background-color:var(--Neutral-200, #d8d9df)}::-webkit-scrollbar-track{background:transparent;height:4px;width:5px;cursor:pointer}p{margin:0}.verified-custd-mdl-container{width:100%;height:100%;display:flex;justify-content:center;align-items:center;padding-top:20px;padding-bottom:20px;overflow-y:auto;overflow-x:hidden;position:relative}.verified-custd-mdl-startup-outter{width:100%;height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;overflow-y:auto;overflow-x:hidden;background:linear-gradient(180deg,#643fff,#381ab7)}.verified-custd-mdl-startup-outter-norm{width:100%;height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;overflow-y:auto;overflow-x:hidden;background:var(--common-white_states-main, #fff)}.verified-custd-mdl-startup{width:650px;height:fit-content;display:flex;justify-content:center;align-items:center;flex-direction:column;overflow-x:hidden;overflow-y:auto;padding-bottom:20px;border:1px solid #0F122E;border-radius:10px;position:relative}.verified-custd-mdl-loading-screen{border-radius:10px;min-height:100%;width:100%;flex-shrink:0;background:#0000004d;z-index:10;display:flex;justify-content:center;align-items:center;overflow:auto;bottom:-10px;top:0;position:absolute}.verified-custd-mdl-startup-icon-container{width:76.119%;display:flex;justify-content:center;align-items:center;position:relative;flex-direction:column;height:298px}.verified-custd-mdl-startup-icon-shadow{position:absolute;bottom:10px;right:70px;width:48.5%}.verified-custd-mdl-startup-text-container{display:inline-flex;flex-direction:column;align-items:flex-start;gap:12px;margin-right:20px;margin-left:20px}.verified-custd-mdl-startup-text-header{color:var(--Neutral-White-100, var(--common-white_states-main, #fff));font-family:Manrope;font-size:2.1rem;font-style:normal;font-weight:700;line-height:2.8125rem;margin:0}.verified-custd-mdl-startup-text-footer{color:var(--Neutral-White-100, var(--common-white_states-main, #fff));font-family:Roboto;font-size:.9rem;font-style:normal;font-weight:400;line-height:1.5rem;opacity:.8}.verified-custd-mdl-ftu-startup-button{display:inline-flex;padding:14px;justify-content:center;align-items:center;gap:var(--space-8px, 8px);border-radius:var(--space-8px, 8px);background:var(--primary-bitter-lemon-500, #cfe600);cursor:pointer;user-select:none;color:var(--Neutral-950, #0C0C0E);text-align:center;margin:20px;font-family:Roboto;font-size:16px;font-style:normal;font-weight:500;line-height:150%;outline:none;border:none}.verified-custd-mdl-startup-language{background:var(--common-white_states-main, #fff);height:100%;width:90%;max-width:700px}.verified-custd-mdl-startup-language-content-container{display:inline-flex;flex-direction:column;align-items:flex-start;gap:32px;width:100%}.verified-custd-mdl-st-language-content{display:flex;flex-direction:column;align-items:flex-start;gap:20px;align-self:stretch;width:100%}.verified-custd-mdl-st-language-text{color:var(--Neutral-950, #0c0c0e);font-family:Roboto;font-size:1.5rem;font-style:normal;font-weight:700;line-height:100%;align-self:stretch}.verified-custd-mdl-ms-search-content:hover{border-radius:var(--space-8px, 8px);border:1px solid var(--secondary-electric-violet-300, #9da3ff);background:var(--secondary-electric-violet-50, #ecefff)}.verified-custd-mdl-st-contact-input{display:flex;flex-direction:column;align-items:flex-start;gap:14px;width:100%}.verified-custd-mdl-st-contact-first-section{display:flex;width:150px;height:44px;padding-left:6px;align-items:center;border-radius:var(--space-8px, 8px);background:var(--Neutral-50, #f7f7f8);cursor:pointer;user-select:none}.verified-custd-mdl-st-contact-selection-icon{display:flex;justify-content:center;align-items:center;flex-shrink:0;border-radius:24px;cursor:pointer;user-select:none;overflow:hidden;width:28px;height:28px}.verified-custd-mdl-st-contact-selection-text{color:var(--Neutral-950, #0c0c0e);text-align:right;font-family:Roboto;font-size:.875rem;font-style:normal;font-weight:500;line-height:140%;width:40px;flex-shrink:0;cursor:pointer;user-select:none}.verified-custd-mdl-custom-blank-page{height:0}.verified-custd-mdl-startup-otp-text{display:flex;flex-direction:column;align-items:flex-start;gap:12px;align-self:stretch}.verified-custd-mdl-startup-otp-header-text{align-self:stretch;color:var(--Neutral-600, #5b5d6e);font-family:Roboto;font-size:.7rem;font-style:normal;font-weight:400;line-height:150%;max-width:100%;word-wrap:break-word}.verified-custd-mdl-otp-input-group{display:flex;align-items:flex-start;gap:var(--space-8px, 8px);width:100%}.verified-custd-mdl-otp-input{display:flex;padding:20px 12px;justify-content:center;align-items:center;gap:var(--space-8px, 8px);flex:1 0 0;align-self:stretch;border-radius:var(--space-8px, 8px);background:var(--Neutral-50, #f7f7f8);width:25%;color:var(--Neutral-950, #0C0C0E);text-align:center;font-family:Roboto;font-size:14px;font-style:normal;font-weight:500;line-height:140%}.verified-custd-mdl-otp-input-red{border-radius:8px;border:1px solid var(--Error-600, #E23636);background:var(--Neutral-50, #F7F7F8);display:flex;padding:20px 12px;justify-content:center;align-items:center;gap:var(--space-8px, 8px);flex:1 0 0;align-self:stretch;width:25%;color:var(--Neutral-950, #0C0C0E);text-align:center;font-family:Roboto;font-size:14px;font-style:normal;font-weight:500;line-height:140%}.verified-custd-mdl-otp-incorrect-text{color:var(--Error-600, #E23636);font-family:Roboto;font-size:12px;font-style:normal;font-weight:400;line-height:140%;max-width:200px;word-wrap:break-word}.verified-custd-mdl-otp-timer{display:flex;justify-content:space-between;align-items:center;align-self:stretch}.verified-custd-mdl-otp-timer-text{color:var(--Neutral-950, #0c0c0e);font-family:Roboto;font-size:.75rem;font-style:normal;font-weight:500;line-height:140%}.verified-custd-mdl-otp-timer-text-red{color:var(--Error-600, #e23636);font-family:Roboto;font-size:.75rem;font-style:normal;font-weight:500;line-height:140%}.verified-custd-mdl-otp-resend-text{color:var(--Neutral-300, #b6b7c3);font-family:Roboto;font-size:.75rem;font-style:normal;font-weight:500;line-height:140%}.verified-custd-mdl-otp-resend-text-active{color:var(--secondary-electric-violet-600, #603ff4);font-family:Roboto;font-size:.75rem;font-style:normal;font-weight:500;line-height:140%;cursor:pointer;user-select:none}.verified-custd-mdl-st-otp-icon{cursor:pointer;user-select:none}.verified-custd-mdl-startup-button{display:inline-flex;padding:14px;justify-content:center;align-items:center;gap:var(--space-8px, 8px);border-radius:var(--space-8px, 8px);background:var(--primary-bitter-lemon-500, #cfe600);cursor:pointer;user-select:none;color:var(--Neutral-950, #0C0C0E);text-align:center;opacity:0verified-custd-mdl-5;font-family:Roboto;font-size:16px;font-style:normal;font-weight:500;line-height:150%;outline:none;border:none;width:90%;max-width:500px}.verified-custd-mdl-startup-button-active{display:inline-flex;padding:14px;justify-content:center;align-items:center;gap:var(--space-8px, 8px);border-radius:var(--space-8px, 8px);background:var(--primary-bitter-lemon-500, #cfe600);cursor:pointer;user-select:none;color:var(--Neutral-950, #0C0C0E);text-align:center;font-family:Roboto;font-size:16px;font-style:normal;font-weight:500;line-height:150%;outline:none;border:none;width:90%;max-width:500px}.verified-custd-mdl-otp-input[type=password]{font-weight:900}.verified-custd-mdl-startup-button-click{border-radius:var(--space-8px, 8px);border:1px solid var(--Neutral-950, #0c0c0e);cursor:pointer;user-select:none;display:inline-flex;padding:14px;justify-content:center;align-items:center;gap:var(--space-8px, 8px);color:var(--Neutral-950, #0C0C0E);text-align:center;font-family:Roboto;font-size:16px;font-style:normal;font-weight:500;line-height:150%;outline:none;width:90%;background:transparent;max-width:500px}.verified-custd-mdl-pin-input-container-text{color:var(--Neutral-600, #5B5D6E);font-family:Roboto;font-size:14px;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-st-button-text{color:var(--Neutral-950, #0c0c0e);text-align:center;font-family:Roboto;font-size:1rem;font-style:normal;font-weight:500;line-height:150%}.verified-custd-mdl-startup-slider{display:flex;width:335px;align-items:center;gap:12px;border-radius:4px;width:100%}.verified-custd-mdl-startup-slider-line{height:4px;flex-shrink:0;border-radius:var(--space-8px, 8px);background:var(--Neutral-100, #eeeef0)}.verified-custd-mdl-startup-slider-line-active{height:4px;flex:1 0 0;border-radius:var(--space-8px, 8px);background:var(--secondary-electric-violet-600, #603ff4)}.verified-custd-mdl-startup-contact{display:inline-flex;flex-direction:column;align-items:flex-start;gap:20px;width:100%}.verified-custd-mdl-startup-contact-content{display:flex;flex-direction:column;align-items:flex-start;gap:16px;align-self:stretch}.verified-custd-mdl-startup-contact-text{color:var(--Neutral-950, #0c0c0e);font-family:Roboto;font-size:1rem;font-style:normal;font-weight:700;line-height:100%;align-self:stretch;max-width:100%;word-wrap:break-word}.verified-custd-mdl-st-contact-content-container{display:flex;align-items:flex-start;gap:var(--space-8px, 8px);width:100%}.verified-custd-mdl-st-contact-dropdown{cursor:pointer;user-select:none}.verified-custd-mdl-st-contact-second-section{display:flex;width:100%;height:44px;padding-left:6px;align-items:center;border-radius:var(--space-8px, 8px);background:var(--Neutral-50, #f7f7f8);color:var(--Neutral-950, #0C0C0E);font-family:Roboto;font-size:14px;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-st-contact-second-section::placeholder{color:var(--Neutral-300, #b6b7c3);font-family:Roboto;font-size:.875rem;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-startup-contact-footer{display:inline-flex;flex-direction:column;align-items:center;gap:12px;width:100%;margin-top:16px}.verified-custd-mdl-st-contact-footer-first-section{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;width:100%}.verified-custd-mdl-st-contact-footer-second-section{display:flex;align-items:center;justify-content:center;gap:4px;width:100%}.verified-custd-mdl-st-contact-input-error{display:flex;align-items:center;gap:4px}.verified-custd-mdl-input-error-text{color:var(--Error-600, #e23636);font-family:Roboto;font-size:.75rem;font-style:normal;font-weight:400;line-height:140%;margin:0}.verified-custd-mdl-mobille-startup-search-box-container{display:flex;flex-direction:column;align-items:flex-start;gap:6px;width:100%}.verified-custd-mdl-mobile-startup-search-box{display:flex;height:40px;align-items:center;gap:6px;border-radius:6px;border:1px solid var(--Neutral-200, #d8d9df);background:var(--Neutral-50, #f7f7f8);width:100%;overflow:hidden}.verified-custd-mdl-ms-search-box-content{height:100%;width:100%;background:transparent;color:var(--Neutral-950, #0c0c0e);font-family:Roboto;font-size:.875rem;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-ms-search-box-content::placeholder{color:var(--Neutral-400, #8f91a1);font-family:Roboto;font-size:.875rem;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-mobile-startup-search-content{display:flex;width:100%;flex-direction:column;align-items:flex-start;gap:16px;border-radius:var(--space-8px, 8px);border:1px solid var(--Neutral-50, #f7f7f8);background:var(--common-white_states-main, #fff)}.verified-custd-mdl-ms-search-content-container{display:flex;flex-direction:column;align-items:flex-start;align-self:stretch;overflow-x:hidden;overflow-y:auto}.verified-custd-mdl-ms-search-content{display:flex;padding:var(--space-8px, 8px);align-items:center;gap:19px;align-self:stretch;cursor:pointer;user-select:none;height:34px;margin-bottom:5px;border:1px solid transparent}.verified-custd-mdl-ms-search-content-active{display:flex;padding:var(--space-8px, 8px);justify-content:space-between;align-items:center;align-self:stretch;border-radius:6px;background:var(--Success-50, #f1f8ed);cursor:pointer;user-select:none}.verified-custd-mdl-ms-search-content-text-container{display:flex;align-items:center;gap:19px}.verified-custd-mdl-ms-search-content-icon{display:flex;width:28px;height:28px;justify-content:center;align-items:center;border-radius:24px;border:1px solid rgba(0,0,0,.05);background:var(--common-white_states-main, #fff);box-shadow:0 1px 4px #eee}.verified-custd-mdl-ms-search-content-text{color:var(--Neutral-950, #0c0c0e);font-family:Roboto;font-size:.775rem;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-terms-and-condition{color:var(--Neutral-400, #8f91a1);font-family:Roboto;font-size:.6rem;font-style:normal;font-weight:400;line-height:140%}.verified-custd-mdl-privacy{display:flex;align-items:center;gap:4px;margin-bottom:20px}.verified-custd-mdl-privacy-text{color:var(--Neutral-800, #40414c);font-family:Roboto;font-size:.5rem;font-style:normal;font-weight:400;line-height:1.25rem;letter-spacing:.01563rem}.verified-custd-mdl-p-p-payment-portal-amount-info-separator{display:flex;align-items:center;gap:6px;align-self:stretch;justify-content:center}.verified-custd-mdl-p-p-payment-portal-line{width:50%;height:1px;background:#eeeef0}.verified-custd-mdl-p-payment-portal-separator-text{color:var(--Neutral-700, #4a4a5a);font-family:Roboto;font-size:.75rem;font-style:normal;font-weight:400;line-height:140%;opacity:.6}.verified-custd-mdl-startup-otp-footer{display:flex;align-items:center;gap:4px;width:100%;overflow:hidden}.verified-custd-mdl-startup-otp-footer-text{color:var(--Neutral-950, #0c0c0e);font-family:Manrope;font-size:.8rem;font-style:normal;font-weight:600;line-height:100%;max-width:100%;word-wrap:break-word}.verified-custd-mdl-otp-input-container{display:flex;flex-direction:column;align-items:flex-start;gap:6px;width:100%}.verified-custd-mdl-general-web-toast-error{display:flex;align-items:center;gap:12px}.verified-custd-mdl-general-web-toast-error-container{display:flex;width:100%;flex-direction:column;align-items:flex-start;gap:10px;padding:6px}.verified-custd-mdl-general-web-toast-error-title{margin:0;color:var(--Neutral-950, #0c0c0e);font-family:Manrope;font-size:1rem;font-style:normal;font-weight:600;line-height:100%;align-self:stretch}.verified-custd-mdl-general-web-toast-error-label{align-self:stretch;color:var(--Neutral-400, #8f91a1);font-family:Roboto;font-size:.875rem;font-style:normal;font-weight:400;line-height:150%;margin:0}.verified-custd-mdl-general-web-toast-success{display:flex;padding:12px;justify-content:space-between;align-items:center;align-self:stretch;border-radius:8px;background:var(--Success-50, #f1f8ed);width:100%;height:55px;max-height:55px}.verified-custd-mdl-general-web-toast-success-cont{display:flex;align-items:center;gap:12px;width:100%}.verified-custd-mdl-general-web-toast-success-container{display:flex;width:100%;flex-direction:column;align-items:flex-start;gap:10px;padding:6px}.verified-custd-mdl-general-web-toast-success-link{display:flex;align-items:center}.verified-custd-mdl-general-web-toast-success-link-text{color:var(--secondary-electric-violet-600, #603ff4);font-family:Roboto;font-size:.875rem;font-style:normal;font-weight:700;line-height:150%;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font}.verified-custd-mdl-success-popup-content-container{display:flex;width:28.4375%;padding:24px;flex-direction:column;align-items:center;background:var(--common-white_states-main, #fff);box-shadow:0 4px 19px #0000001f;height:100%}.verified-custd-mdl-success-popup-content{display:flex;width:100%;flex-direction:column;align-items:center;gap:32px}.verified-custd-mdl-success-popup-content-text{display:flex;flex-direction:column;align-items:center;gap:12px;align-self:stretch}.verified-custd-mdl-success-popup-content-text-header{color:var(--Neutral-950, #0c0c0e);text-align:center;font-family:Manrope;font-size:1.5rem;font-style:normal;font-weight:800;line-height:140%}.verified-custd-mdl-success-popup-content-text-footer{color:var(--Neutral-600, #5b5d6e);text-align:center;font-family:Roboto;font-size:1rem;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-add-cosigner-body-icon{width:90%;max-width:90%;max-height:250px;height:250px}.verified-custd-mdl-add-cosigner-body{display:inline-flex;padding:10px;flex-direction:column;align-items:flex-start;gap:12px;border-radius:8px;background:var(--secondary-electric-violet-50, #ECEFFF)}.verified-custd-mdl-add-cosigner-body-text-cont{display:flex;align-items:center;gap:10px;width:100%}.verified-custd-mdl-add-cosigner-body-text-icon{display:flex;padding:8px;align-items:center;gap:10px;border-radius:24px;background:var(--secondary-electric-violet-200, #C2C7FF);overflow:hidden;justify-content:center;width:20px;height:20px}.verified-custd-mdl-add-cosigner-body-text-label{width:76.1%;color:var(--Neutral-600, #5B5D6E);font-family:Roboto;font-size:10px;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-add-cosigner-body-text-label-bold{color:var(--Neutral-950, #0C0C0E);font-family:Roboto;font-size:10px;font-style:normal;font-weight:500;line-height:140%}.verified-custd-mdl-add-cosigner-buttons-cont{display:inline-flex;padding:10px;align-items:flex-start;gap:10px;background:transparent;display:flex;justify-content:space-between}.verified-custd-mdl-add-cosigner-button-neut{width:45%;display:flex;padding:14px;justify-content:center;align-items:center;gap:8px;background:transparent;border-radius:8px;border:1px solid var(--Neutral-950, #0C0C0E);color:var(--Neutral-950, #0C0C0E);text-align:center;font-family:Roboto;font-size:12px;font-style:normal;font-weight:500;line-height:150%;cursor:pointer}.verified-custd-mdl-add-cosigner-button-action{width:45%;display:flex;padding:14px;justify-content:center;align-items:center;gap:8px;border-radius:8px;background:var(--primary-bitter-lemon-500, #CFE600);border:none;color:var(--Neutral-950, #0C0C0E);text-align:center;font-family:Roboto;font-size:12px;font-style:normal;font-weight:500;line-height:150%;cursor:pointer}.verified-custd-mdl-add-cosigner-more-body{display:inline-flex;padding:15px;flex-direction:column;align-items:flex-start;gap:12px;border-radius:8px;background:var(--secondary-electric-violet-50, #ECEFFF)}.verified-custd-mdl-add-cosigner-more-header-cont{display:flex;flex-direction:column;align-items:flex-start;gap:32px}.verified-custd-mdl-add-cosigner-more-title-cont{display:flex;flex-direction:column;align-items:flex-start;gap:16px;align-self:stretch}.verified-custd-mdl-add-cosigner-header-text{align-self:stretch;color:var(--Neutral-600, #5B5D6E);font-family:Roboto;font-size:12px;font-style:normal;font-weight:400;line-height:150%;margin:0}.verified-custd-mdl-add-cosigner-more-title{color:var(--Neutral-950, #0C0C0E);font-family:Manrope;font-size:18px;font-style:normal;font-weight:700;line-height:120%;margin:0}.verified-custd-mdl-add-cosigner-more-label{color:var(--Neutral-700, #4A4A5A);font-family:Roboto;font-size:14px;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-add-cosigner-more-label-link{align-self:stretch;color:var(--secondary-electric-violet-700, #4E2BD7);font-family:Roboto;font-size:12px;font-style:normal;font-weight:500;line-height:150%;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font;cursor:pointer;margin:0}.verified-custd-mdl-add-cosigner-header-info-cont{display:flex;padding:10px;flex-direction:column;align-items:flex-start;gap:12px;align-self:stretch;border-radius:8px;background:var(--Accent-100, #FFF9C1)}.verified-custd-mdl-add-cosigner-header-info-text{color:var(--Accent-800, #89490A);font-family:Roboto;font-size:10px;font-style:normal;font-weight:500;line-height:150%}.verified-custd-mdl-add-cosigner-header-info-text-bold{color:var(--Accent-800, #89490A);font-family:Roboto;font-size:10px;font-style:normal;font-weight:700;line-height:140%}.verified-custd-mdl-add-cosigner-step2-body{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin-top:20px}.verified-custd-mdl-add-cosigner-step2-body-header{display:flex;width:100%;justify-content:space-between;align-items:center}.verified-custd-mdl-add-cosigner-step2-body-header-first-text{color:var(--Neutral-950, #0C0C0E);text-align:right;font-family:Roboto;font-size:.8rem;font-style:normal;font-weight:500;line-height:150%}.verified-custd-mdl-add-cosigner-step2-body-header-second-text{color:var(--Neutral-950, #0C0C0E);text-align:right;font-family:Roboto;font-size:12px;font-style:normal;font-weight:500;line-height:140%}.verified-custd-mdl-add-cosigner-step2-body-content{display:flex;flex-direction:column;align-items:flex-start;gap:16px;width:100%}.verified-custd-mdl-add-cosigner-step2-body-content-header{display:flex;padding-top:14px;justify-content:center;align-items:center;position:relative;width:100%;flex-direction:column}.verified-custd-mdl-add-cosigner-step2-body-content-header-cont{display:flex;width:100%;padding:12px;flex-direction:column;align-items:flex-start;gap:16px}.verified-custd-mdl-add-cosigner-step2-body-content-header-label{display:flex;padding:4px 6px;align-items:flex-start;gap:10px;position:absolute;left:12px;top:-14px;border-radius:6px;background:var(--secondary-electric-violet-100, #DDE1FF)}.verified-custd-mdl-add-cosigner-step2-body-content-header-label-text{color:var(--secondary-electric-violet-900, #362689);font-family:Roboto;font-size:10px;font-style:normal;font-weight:500;line-height:140%;margin:0}.verified-custd-mdl-add-cosigner-step2-body-content-header-body{justify-content:space-between;align-self:stretch;border-radius:8px;border:1px solid var(--Neutral-100, #EEEEF0);background:var(--Neutral-50, #F7F7F8);position:relative;display:flex;padding:12px;align-items:flex-start;gap:16px}.verified-custd-mdl-a-c-2-b-content-header-body-header-cont{display:flex;align-items:center;gap:12px}.verified-custd-mdl-a-c-2-b-content-header-body-header{display:flex;flex-direction:column;align-items:flex-start;gap:6px}.verified-custd-mdl-a-c-2-b-content-header-body-title{color:var(--Neutral-950, #0C0C0E);font-family:Roboto;font-size:16px;font-style:normal;font-weight:500;line-height:150%;margin:0;max-width:150px;word-wrap:break-word;overflow-wrap:break-word}.verified-custd-mdl-a-c-2-b-content-header-body-label{color:var(--Neutral-400, #8F91A1);font-family:Roboto;font-size:12px;font-style:normal;font-weight:500;line-height:140%;margin:0;max-width:150px;word-wrap:break-word;overflow-wrap:break-word}.verified-custd-mdl-a-c-2-b-content-header-body-button{display:flex;padding:5.5px 8px;justify-content:center;align-items:center;gap:10px;border-radius:6px;border:1px solid var(--secondary-electric-violet-600, #603FF4);background:var(--secondary-electric-violet-600, #603FF4);color:var(--secondary-electric-violet-50, #ECEFFF);text-align:right;font-family:Roboto;font-size:14px;font-style:normal;font-weight:500;line-height:140%}.verified-custd-mdl-add-cosigner-step2-body-content-footer{display:flex;align-items:center;gap:4px;cursor:pointer}.verified-custd-mdl-add-cosigner-step2-body-content-footer-text{color:var(--secondary-electric-violet-600, #603FF4);text-align:right;font-family:Roboto;font-size:14px;font-style:normal;font-weight:500;line-height:150%}.verified-custd-mdl-add-cosigner-step2-add-more-body{display:flex;padding:15px;flex-direction:column;align-items:flex-start;gap:16px;border-radius:8px;border:1px solid var(--Neutral-200, #D8D9DF);min-width:90%;margin-bottom:20px;width:100%}.verified-custd-mdl-add-cosigner-step2-add-more-first{display:flex;justify-content:space-between;align-items:center;align-self:stretch;width:100%}.verified-custd-mdl-add-cosigner-step2-add-more-first-header{display:flex;align-items:flex-end;gap:5px}.verified-custd-mdl-add-cosigner-step2-add-more-first-header-text{color:var(--Neutral-950, #0C0C0E);font-family:Roboto;font-size:.7rem;font-style:normal;font-weight:500;line-height:150%}.verified-custd-mdl-add-cosigner-step2-add-more-first-footer{display:flex;padding:4px 6px;align-items:flex-start;gap:10px;border-radius:6px;background:var(--secondary-electric-violet-100, #DDE1FF)}.verified-custd-mdl-add-cosigner-step2-add-more-first-footer-text{color:var(--secondary-electric-violet-900, #362689);font-family:Roboto;font-size:10px;font-style:normal;font-weight:500;line-height:140%;margin:0}.verified-custd-mdl-add-cosigner-step2-add-more-second{display:flex;flex-direction:column;align-items:flex-start;gap:4px;width:100%}.verified-custd-mdl-add-cosigner-step2-add-more-second-input{display:flex;padding:12px;align-items:center;gap:182px;align-self:stretch;border-radius:8px;background:var(--Neutral-50, #F7F7F8);color:var(--Neutral-950, #0C0C0E);font-family:Roboto;font-size:12px;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-add-cosigner-step2-add-more-third{display:flex;align-items:flex-start;gap:24px;width:100%}.verified-custd-mdl-add-cosigner-step2-add-more-third-cont{display:flex;align-items:center;gap:4px}.verified-custd-mdl-add-cosigner-step2-add-more-third-cont-text{color:var(--Neutral-900, #383842);font-family:Roboto;font-size:13px;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-add-cosigner-step2-add-more-buttons{display:flex;align-items:flex-start;gap:16px;align-self:stretch;width:100%;background:transparent}.verified-custd-mdl-add-cosigner-step2-add-more-buttons-neut{width:50%;display:flex;padding:7.5px 12px;justify-content:center;align-items:center;gap:10px;flex:1 0 0;border-radius:8px;border:1px solid var(--secondary-electric-violet-600, #603FF4);color:var(--secondary-electric-violet-600, #603FF4);text-align:right;font-family:Roboto;font-size:14px;font-style:normal;font-weight:500;line-height:140%;background:transparent;cursor:pointer}.verified-custd-mdl-add-cosigner-step2-add-more-buttons-action{width:50%;display:flex;padding:6px 8px;justify-content:center;align-items:center;gap:10px;flex:1 0 0;align-self:stretch;border-radius:8px;border:1px solid var(--secondary-electric-violet-600, #603FF4);background:var(--secondary-electric-violet-600, #603FF4);color:var(--secondary-electric-violet-50, #ECEFFF);text-align:right;font-family:Roboto;font-size:14px;font-style:normal;font-weight:500;line-height:140%;cursor:pointer}.verified-custd-mdl-add-cosigner-step2-add-more-second-input::placeholder{color:var(--Neutral-300, #B6B7C3);font-family:Roboto;font-size:12px;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-add-cosigner-confirm-body-content{display:flex;padding-top:20px;padding-bottom:20px;flex-direction:column;justify-content:flex-start;align-items:center;gap:61px;border-radius:8px 8px 0 0;background:var(--Neutral-White-100, #FFF);width:100%;max-height:62.7%}.verified-custd-mdl-add-cosigner-confirm-body-cont{display:flex;flex-direction:column;align-items:flex-start;gap:16px;width:90%}.verified-custd-mdl-add-cosigner-confirm-body-header{display:flex;flex-direction:column;align-items:center;gap:16px}.verified-custd-mdl-add-cosigner-confirm-body-title{color:var(--Neutral-950, #0C0C0E);font-family:Manrope;font-size:16px;font-style:normal;font-weight:700;line-height:150%;margin:0}.verified-custd-mdl-add-cosigner-confirm-body-label{color:var(--Neutral-600, #5B5D6E);font-family:Roboto;font-size:12px;font-style:normal;font-weight:400;line-height:150%;margin:0}.verified-custd-mdl-add-cosigner-confirm-body-footer{display:flex;width:90%;padding:15px 15px 5px;flex-direction:column;align-items:flex-start;gap:5px;border-radius:8px;border:1px solid var(--Neutral-100, #EEEEF0);background:var(--Neutral-White-100, #FFF)}.verified-custd-mdl-add-cosigner-confirm-body-footer-ind-cont{width:100%;flex-direction:row;background:transparent;display:flex;justify-content:space-between;align-items:center;margin-bottom:3px}.verified-custd-mdl-add-cosigner-confirm-body-footer-ind{display:flex;flex-direction:column;align-items:center;gap:-6px;border-radius:2px}.verified-custd-mdl-add-cosigner-confirm-body-footer-ind-text-cont{display:flex;padding:4px 12px;justify-content:center;align-items:center;gap:10px;border-radius:6px;background:var(--secondary-electric-violet-600, #603FF4)}.verified-custd-mdl-add-cosigner-confirm-body-footer-ind-text{color:var(--Neutral-White-100, #FFF);text-align:center;font-family:Roboto;font-size:12px;font-style:normal;font-weight:500;line-height:140%;margin:0}.verified-custd-mdl-add-cosigner-confirm-body-footer-label-cont{width:100%;height:51px}.verified-custd-mdl-add-cosigner-confirm-body-footer-label-slider-cont{width:98%;height:16px;flex-shrink:0}.verified-custd-mdl-add-cosigner-confirm-body-footer-label-slider{width:100%;height:5px;flex-shrink:0;border-radius:10px;background:var(--Neutral-100, #EEEEF0)}.verified-custd-mdl-add-cosigner-confirm-body-footer-label-slider-ind{height:5px;flex-shrink:0;border-radius:10px;background:var(--secondary-electric-violet-600, #603FF4);position:relative}.verified-custd-mdl-add-cosigner-confirm-body-footer-label-slider-icon{flex-shrink:0;position:absolute;top:-5px;right:0}.verified-custd-mdl-add-cosigner-confirm-body-footer-label-text-cont{display:flex;width:100%;padding:10px 0;justify-content:space-between;align-items:center}.verified-custd-mdl-add-cosigner-confirm-body-footer-label-text{color:var(--Neutral-950, #0C0C0E);font-family:Roboto;font-size:12px;font-style:normal;font-weight:500;line-height:140%;margin:0;cursor:pointer}.verified-custd-mdl-a-c-2-b-content-header-body-header-icons{display:flex;justify-content:flex-end;align-items:center;gap:16px;margin-top:10px}.verified-custd-mdl-add-cosigner-step2-body-content-footer-dis{display:flex;align-items:center;gap:4px;margin-bottom:18px}.verified-custd-mdl-add-cosigner-step2-body-content-footer-text-dis{color:var(--Neutral-300, #B6B7C3);text-align:right;font-family:Roboto;font-size:14px;font-style:normal;font-weight:500;line-height:150%}.verified-custd-mdl-startup-contact-content-heder-cont{width:100%;display:flex;justify-content:space-between;flex-direction:row}.verified-custd-mdl-add-cosigner-confirm-body-content-outter{background:#0006;z-index:5;position:absolute;width:100%;bottom:0;right:0;left:0;height:100%;display:flex;flex-direction:column-reverse}.verified-custd-mdl-portfolio-page-content-header-button{display:flex;padding:6px 12px;align-items:center;gap:4px;border-radius:32px;background:var(--secondary-electric-violet-900, #362689);cursor:pointer;color:var(--Neutral-White-100, var(--common-white_states-main, #fff));border:none;width:fit-content;max-width:150px;font-family:Roboto;font-size:.65rem;font-style:normal;font-weight:400;line-height:140%;word-wrap:break-word;height:30px}.verified-custd-mdl-portfolio-page-content-header-button-cont{width:fit-content;height:fit-content;display:flex;flex-direction:column;gap:4px;justify-content:flex-start;position:relative}.verified-custd-mdl-portfolio-page-content-header-button-body{height:fit-content;width:fit-content;display:flex;flex-direction:column;gap:4px;border:none;border-radius:10px;background:var(--Neutral-50, #f7f7f8);padding:10px;position:absolute;top:33px;right:0}.verified-custd-mdl-portfolio-page-content-header-button-body-cont{background:none;cursor:pointer;border:1px solid transparent;padding:5px}.verified-custd-mdl-portfolio-page-content-header-button-body-cont:hover{border:1px solid #362689;background:transparent}.verified-custd-mdl-portfolio-page-content-header-button-body-text{width:110px;font-family:Roboto;font-size:.65rem;font-style:normal;font-weight:400;line-height:140%;word-wrap:break-word}\\n\");","if (typeof chrome === \"undefined\") {\r\n (window as any).chrome = {};\r\n}\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { VaultContextProvider } from \"../services/store\";\r\nimport { VerifiedCustodyProps, VerifiedWalletVault } from \"../utils/types\";\r\nimport FTUPage from \"./ftu\";\r\nimport EnterPinPage from \"./enterPin\";\r\nimport { hashTheString, loadAllGoogleFonts } from \"../utils/helpers\";\r\nimport { actionTexts, imageAssets } from \"../utils/constants\";\r\nimport { motion } from \"framer-motion\";\r\n\r\nconst VerifiedCustody = (props: VerifiedCustodyProps) => {\r\n const [fontsLoaded, setFontsLoaded] = useState<boolean>(true);\r\n\r\n const [isOnboard, setisOnboard] = useState<boolean | null>(null);\r\n\r\n const [vaultData, setVaultData] = useState<VerifiedWalletVault>({});\r\n\r\n const [isLoading, setIsLoading] = useState<boolean>(false);\r\n\r\n useEffect(() => {\r\n const PreloadGoogleFonts = () => {\r\n const isFontsLoaded = loadAllGoogleFonts(document);\r\n setFontsLoaded(isFontsLoaded);\r\n };\r\n PreloadGoogleFonts();\r\n }, []);\r\n\r\n useEffect(() => {\r\n const checkUserOnboardingStatus = () => {\r\n if (chrome?.storage?.local) {\r\n chrome.storage.local.get(\"myVault\", (res: any) => {\r\n // Existing user\r\n if (res.myVault && JSON.parse(res.myVault)?.vaultId) {\r\n setVaultData(JSON.parse(res.myVault));\r\n setisOnboard(true);\r\n }\r\n //FTU(First Time User)\r\n else setisOnboard(false);\r\n });\r\n } else if (!chrome?.storage?.local && localStorage) {\r\n const myVault = JSON.parse(localStorage.getItem(\"myVault\"));\r\n if (myVault && myVault?.vaultId) {\r\n setVaultData(myVault);\r\n setisOnboard(true);\r\n } else setisOnboard(false);\r\n } else {\r\n setisOnboard(false);\r\n }\r\n };\r\n\r\n checkUserOnboardingStatus();\r\n }, []);\r\n\r\n return (\r\n <React.Fragment>\r\n {fontsLoaded && (\r\n <VaultContextProvider>\r\n <div className=\"verified-custd-mdl-container\">\r\n {/* default blank page to capture delay??? */}\r\n {isOnboard === null && props.delayPageElement && (\r\n <React.Fragment>{props.delayPageElement} </React.Fragment>\r\n )}\r\n {/* default blank screen to capture delay??? */}\r\n {isOnboard === null && !props.delayPageElement && (\r\n <div\r\n style={\r\n props.delayPageStyle\r\n ? props.delayPageStyle\r\n : {\r\n width: \"100%\",\r\n height: \"100%\",\r\n background: \"trasparent\",\r\n border: \"none\",\r\n }\r\n }\r\n >\r\n {\" \"}\r\n </div>\r\n )}\r\n {isLoading && (\r\n <div\r\n style={{ height: \"100vh\" }} //whole page length ???\r\n className=\"verified-custd-mdl-loading-screen\"\r\n >\r\n <motion.img\r\n height=\"50px\"\r\n width=\"50px\"\r\n src={imageAssets.loadingIcon}\r\n alt=\"Loading...\"\r\n animate={{\r\n rotate: 360,\r\n scale: [1, 1.5, 1],\r\n }}\r\n transition={{\r\n duration: 2,\r\n repeat: Infinity,\r\n ease: \"linear\",\r\n }}\r\n />\r\n </div>\r\n )}\r\n {isOnboard !== null && (\r\n <React.Fragment>\r\n {/* first time users */}\r\n {!isOnboard && (\r\n <FTUPage\r\n fontsLoaded={fontsLoaded}\r\n helperFunctions={props.helperFunctions}\r\n popupView={props.popupView}\r\n action={props.action}\r\n vaultData={\r\n props.reqVaultData\r\n ? {\r\n vaultId: decodeURIComponent(\r\n props.reqVaultData?.vId ||\r\n props.reqVaultData?.vaultId\r\n ),\r\n hashedVaultId: hashTheString(\r\n decodeURIComponent(\r\n props.reqVaultData?.vId ||\r\n props.reqVaultData?.vaultId\r\n )\r\n ),\r\n hashedVaultPin: decodeURIComponent(\r\n props.reqVaultData?.vPh ||\r\n props.reqVaultData?.hashedVaultPin\r\n ),\r\n coSignerId: decodeURIComponent(\r\n props.reqVaultData?.cId\r\n ),\r\n }\r\n : null\r\n }\r\n txData={\r\n props.txData\r\n ? Object.keys(props.txData)?.map((ky) => {\r\n props.txData[ky] = decodeURIComponent(\r\n props.txData[ky]\r\n );\r\n return props.txData;\r\n })[Object.keys(props.txData)?.length - 1]\r\n : null\r\n }\r\n showLogoPage={props.showLogoPage}\r\n logoPageElement={props.logoPageElement}\r\n logoTimeoutTime={props.logoTimeoutTime}\r\n defaultCountry={props.defaultCountry}\r\n setisOnboard={setisOnboard}\r\n setIsLoading={setIsLoading}\r\n />\r\n )}\r\n\r\n {/* existing users */}\r\n {isOnboard && (\r\n <EnterPinPage\r\n fontsLoaded={fontsLoaded}\r\n setisOnboard={setisOnboard}\r\n vaultId={vaultData?.vaultId}\r\n hashedVaultId={vaultData?.hashedVaultId}\r\n encrptedPk={vaultData?.pk}\r\n vaultAddress={vaultData?.address}\r\n vaultChannel={vaultData?.channel}\r\n origin={props.origin}\r\n title={props.title}\r\n actionText={props.actionText || actionTexts[props.action]}\r\n setIsLoading={setIsLoading}\r\n newChainId={Number(props.chainId)}\r\n action={props.action}\r\n reqVaultData={\r\n props.reqVaultData\r\n ? {\r\n vaultId: decodeURIComponent(\r\n props.reqVaultData?.vId ||\r\n props.reqVaultData?.vaultId\r\n ),\r\n hashedVaultId: hashTheString(\r\n decodeURIComponent(\r\n props.reqVaultData?.vId ||\r\n props.reqVaultData?.vaultId\r\n )\r\n ),\r\n hashedVaultPin: decodeURIComponent(\r\n props.reqVaultData?.vPh ||\r\n props.reqVaultData?.hashedVaultPin\r\n ),\r\n coSignerId: decodeURIComponent(\r\n props.reqVaultData?.cId\r\n ),\r\n }\r\n : null\r\n }\r\n reqTxData={\r\n props.txData\r\n ? Object.keys(props.txData)?.map((ky) => {\r\n props.txData[ky] = decodeURIComponent(\r\n props.txData[ky]\r\n );\r\n return props.txData;\r\n })[Object.keys(props.txData)?.length - 1]\r\n : null\r\n }\r\n helperFunctions={props.helperFunctions}\r\n />\r\n )}\r\n </React.Fragment>\r\n )}\r\n </div>\r\n </VaultContextProvider>\r\n )}\r\n {!fontsLoaded && <h3>Preparing Modules...</h3>}\r\n </React.Fragment>\r\n );\r\n};\r\n\r\nexport default VerifiedCustody;\r\n","import React, { createContext, useContext, useState } from \"react\";\r\n\r\ninterface VaultStore {\r\n chainId: number | null;\r\n pk: string | null;\r\n address: string | null;\r\n signer: any;\r\n provider: any;\r\n vaultContract: any;\r\n vaultData: any;\r\n setChainId: (chainId: number | null) => void;\r\n setPk: (pk: string | null) => void;\r\n setAddress: (address: string | null) => void;\r\n setSigner: (signer: any) => void;\r\n setProvider: (provider: any) => void;\r\n setVaultContract: (vaultContract: any) => void;\r\n setVaultData: (vaultData: any) => void;\r\n}\r\n\r\nconst VaultStoreContext = createContext<VaultStore | undefined>(undefined);\r\n\r\nexport const VaultContextProvider = (props: {\r\n children: React.JSX.Element;\r\n}) => {\r\n const [chainId, setChainId] = useState<number | null>(null);\r\n const [pk, setPk] = useState<string | null>(null);\r\n const [address, setAddress] = useState<string | null>(null);\r\n const [signer, setSigner] = useState<any>(null);\r\n const [provider, setProvider] = useState<any>(null);\r\n const [vaultContract, setVaultContract] = useState<any>(null);\r\n const [vaultData, setVaultData] = useState<any>(null);\r\n const [fcmToken, setFcmToken] = useState<string | null>(null);\r\n\r\n return (\r\n <VaultStoreContext.Provider\r\n value={{\r\n chainId,\r\n pk,\r\n address,\r\n signer,\r\n provider,\r\n vaultContract,\r\n vaultData,\r\n setChainId,\r\n setPk,\r\n setAddress,\r\n setSigner,\r\n setProvider,\r\n setVaultContract,\r\n setVaultData,\r\n }}\r\n >\r\n {props.children}\r\n </VaultStoreContext.Provider>\r\n );\r\n};\r\n\r\nexport const useVaultStore = () => {\r\n const context = useContext(VaultStoreContext);\r\n if (context) {\r\n return context;\r\n } else {\r\n throw Error(\"useVaultStore must be used within VaultContextProvider\");\r\n }\r\n};\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { debounce } from \"lodash\";\r\nimport { countriesDetails, imageAssets } from \"../utils/constants\";\r\nimport { useVaultStore } from \"../services/store\";\r\nimport { initWalletAndContract, loadAllGoogleFonts } from \"../utils/helpers\";\r\nimport ContactPage from \"./contact\";\r\nimport OTPPage from \"./otp\";\r\nimport CreatePinPage from \"./createPin\";\r\nimport Success from \"../components/success\";\r\nimport AddCosignersPage from \"./addCosigners\";\r\nimport { VerifiedCustodyHelpers } from \"../utils/types\";\r\n\r\nconst FTUPage = (props: {\r\n fontsLoaded?: boolean;\r\n popupView?: boolean;\r\n action?: string;\r\n vaultData?: any;\r\n txData?: any;\r\n chainId?: number;\r\n defaultCountry?: {\r\n area: string;\r\n flag: string;\r\n name: string;\r\n };\r\n showLogoPage?: boolean;\r\n logoPageElement?: React.JSX.Element;\r\n logoTimeoutTime?: number;\r\n showStartupPage?: boolean;\r\n startupPageElement?: React.JSX.Element;\r\n setisOnboard?: (isOnboard: boolean) => void;\r\n helperFunctions?: VerifiedCustodyHelpers;\r\n setIsLoading?: (isLoading: boolean) => void;\r\n}) => {\r\n const [fontsLoaded, setFontsLoaded] = useState<boolean>(\r\n props.fontsLoaded || false\r\n );\r\n const [showLogo, setShowLogo] = useState<boolean>(\r\n props.showLogoPage || false\r\n );\r\n const [allCountries, setAllCountries] = useState([]);\r\n const [step, setStep] = useState<string>(\"2\");\r\n const [selectedCountry, setSelectedCountry] = useState(\r\n props.defaultCountry || {\r\n area: \"1\",\r\n flag: imageAssets.usaFlag,\r\n name: \"United States\",\r\n }\r\n );\r\n const [userNumberFmt, setUserNumberFmt] = useState<string>(\"\");\r\n const [userEmail, setUserEmail] = useState<string>(\"\");\r\n const [showSuccessBtn, setShowSuccessBtn] = useState<boolean>(false);\r\n const [successBtnText, setSuccessBtnText] = useState<string>(\"\");\r\n const [successBtnNeutText, setSuccessBtnNeutText] = useState<string>(\"\");\r\n const [actionHeaderText, setActionHeaderText] = useState<string>(\"\");\r\n const [actionFooterText, setActionFooterText] = useState<string>(\"\");\r\n const [successBtnFunc, setSuccessBtnFunc] = useState(null);\r\n const [successBtnNeutFunc, setSuccessBtnNeutFunc] = useState(null);\r\n\r\n const {\r\n setChainId,\r\n setAddress,\r\n setPk,\r\n setProvider,\r\n setSigner,\r\n setVaultContract,\r\n setVaultData,\r\n vaultData,\r\n } = useVaultStore();\r\n\r\n useEffect(() => {\r\n const PreloadGoogleFonts = () => {\r\n const isFontsLoaded = loadAllGoogleFonts(document);\r\n setFontsLoaded(isFontsLoaded);\r\n };\r\n if (!props.fontsLoaded) {\r\n PreloadGoogleFonts();\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n const initializeUserWalletAndContract = async () => {\r\n const walletAndContractDetails = await initWalletAndContract(\r\n props.chainId\r\n );\r\n setChainId(walletAndContractDetails.chainId);\r\n setAddress(walletAndContractDetails.address);\r\n setPk(walletAndContractDetails.pk);\r\n setProvider(walletAndContractDetails.provider);\r\n setSigner(walletAndContractDetails.signer);\r\n setVaultContract(walletAndContractDetails.vaultContract);\r\n setVaultData(walletAndContractDetails.vaultData);\r\n };\r\n initializeUserWalletAndContract();\r\n }, []);\r\n\r\n useEffect(() => {\r\n const handleLogoDisplay = debounce(\r\n () => {\r\n setShowLogo(false);\r\n },\r\n props.logoTimeoutTime ? props.logoTimeoutTime : 3000\r\n ); //3 seconds??\r\n handleLogoDisplay();\r\n }, []);\r\n\r\n useEffect(() => {\r\n const getAndFormatAllCountries = () => {\r\n const fmtCountries: any = countriesDetails\r\n .map((cnt: any) => {\r\n if (cnt) {\r\n return {\r\n name: cnt?.name,\r\n countryName: cnt?.name,\r\n officialName: cnt?.name,\r\n currencySymbol: cnt?.currency,\r\n currencyName: cnt?.currency,\r\n officialCurrencySymbol: cnt?.currency,\r\n countryCode: cnt?.code,\r\n flag: cnt?.flag,\r\n continent: cnt?.continent,\r\n phone_code: cnt?.phone_code,\r\n code: cnt?.code,\r\n };\r\n }\r\n })\r\n .flat();\r\n setAllCountries(fmtCountries?.filter((cnt: any) => cnt !== undefined));\r\n };\r\n getAndFormatAllCountries();\r\n }, []);\r\n\r\n return (\r\n <React.Fragment>\r\n {fontsLoaded && showLogo && props.logoPageElement && (\r\n <React.Fragment> {props.logoPageElement}</React.Fragment>\r\n )}\r\n {fontsLoaded && !showLogo && (\r\n <React.Fragment>\r\n {/* {step === \"1\" && props.showStartupPage && (\r\n <React.Fragment>{props.startupPageElement}</React.Fragment>\r\n )} */}\r\n {step === \"2\" && (\r\n <ContactPage\r\n setStep={setStep}\r\n setIsLoading={props.setIsLoading}\r\n setUserNumberFmt={setUserNumberFmt}\r\n userNumberFmt={userNumberFmt}\r\n setUserEmail={setUserEmail}\r\n userEmail={userEmail}\r\n setSelectedCountry={setSelectedCountry}\r\n selectedCountry={selectedCountry}\r\n allCountries={allCountries}\r\n />\r\n )}\r\n {step === \"3\" && (\r\n <OTPPage\r\n setStep={setStep}\r\n setIsLoading={props.setIsLoading}\r\n userNumberFmt={userNumberFmt}\r\n setUserNumberFmt={setUserNumberFmt}\r\n setUserEmail={setUserEmail}\r\n userEmail={userEmail}\r\n selectedCountry={selectedCountry}\r\n />\r\n )}\r\n\r\n {step === \"4\" && (\r\n <CreatePinPage\r\n setStep={setStep}\r\n setIsLoading={props.setIsLoading}\r\n setShowSuccessBtn={setShowSuccessBtn}\r\n setSuccessBtnText={setSuccessBtnText}\r\n setSuccessBtnNeutText={setSuccessBtnNeutText}\r\n setSuccessBtnFunc={setSuccessBtnFunc}\r\n setSuccessBtnNeutFunc={setSuccessBtnNeutFunc}\r\n userNumberFmt={userNumberFmt}\r\n userEmail={userEmail}\r\n selectedCountry={selectedCountry}\r\n action={props.action}\r\n vaultData={props.vaultData}\r\n txData={props.txData}\r\n setActionHeaderText={setActionHeaderText}\r\n setActionFooterText={setActionFooterText}\r\n helperFunctions={props.helperFunctions}\r\n />\r\n )}\r\n\r\n {step === \"5\" && (\r\n <Success\r\n setStep={setStep}\r\n stepToSet=\"6\"\r\n customTextHeader=\"Successful\"\r\n customTextFooter=\"Congratulations! You have successfully created a PIN to protect your account.\"\r\n action={props.action}\r\n showButton={showSuccessBtn}\r\n buttonText={successBtnText}\r\n buttonNeutText={successBtnNeutText}\r\n buttonFunc={successBtnFunc}\r\n buttonNeutFunc={successBtnNeutFunc}\r\n actionHeaderText={actionHeaderText}\r\n actionFooterText={actionFooterText}\r\n />\r\n )}\r\n\r\n {step === \"6\" && (\r\n <AddCosignersPage\r\n setStep={setStep}\r\n setIsLoading={props.setIsLoading}\r\n userNumberFmt={userNumberFmt}\r\n userEmail={userEmail}\r\n selectedCountry={selectedCountry}\r\n allCountries={allCountries}\r\n helperFunctions={props.helperFunctions}\r\n />\r\n )}\r\n\r\n {step === \"7\" && (\r\n <Success\r\n action={props.action}\r\n messageTosend={\r\n props.action === \"signRecovery\"\r\n ? {\r\n type: \"signRecovery\",\r\n value: {\r\n vaultData: props.vaultData,\r\n txData: { newUser: true, ...props.txData },\r\n },\r\n }\r\n : { type: \"closePopup\", key: \"\", value: \"\" }\r\n }\r\n customTextHeader=\"Successful\"\r\n customTextFooter=\"Congratulations! You have successfully added Co-signers to your account.\"\r\n />\r\n )}\r\n </React.Fragment>\r\n )}\r\n {!fontsLoaded && <h3>Preparing Modules...</h3>}\r\n </React.Fragment>\r\n );\r\n};\r\n\r\nexport default FTUPage;\r\n","export const defaultChainId =\r\n process.env.REACT_APP_NODE_ENV === \"production\" ? 8453 : 11155111; //Base mainnet for production or Base Sepolia for developement\r\n\r\nexport const defaultVerifiedUrl =\r\n process.env.REACT_APP_NODE_ENV === \"production\"\r\n ? \"https://wallet.verified.network\"\r\n : \"https://veripay-bac0b.web.app\";\r\n\r\nexport const allGoogleFontUrls = [\r\n \"https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap\",\r\n \"https://fonts.googleapis.com/css2?family=Manrope:wght@200..800&family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap\",\r\n \"https://fonts.googleapis.com/css2?family=Hind:wght@300;400;500;600;700&display=swap\",\r\n];\r\n\r\nexport const newTransactionEventHash =\r\n \"0x7f8d3f14b960b3bcf34baea4b46178e331b54a33e565d7d50d77cdfe9e926fe8\";\r\n\r\nexport const TwiloBaseUrl = \"https://verify-1740-4at0oa.twil.io\";\r\n\r\nexport const numberPositions = {\r\n 1: \"1st\",\r\n 2: \"2nd\",\r\n 3: \"3rd\",\r\n 4: \"4th\",\r\n 5: \"5th\",\r\n};\r\n\r\nexport const numberPositionsFmt = {\r\n 1: \"1 st\",\r\n 2: \"2 nd\",\r\n 3: \"3 rd\",\r\n 4: \"4 th\",\r\n 5: \"5 th\",\r\n};\r\n\r\nexport const actionTexts = {\r\n connect_wallet: \"connect your account\",\r\n getPk: \"recover your account details\",\r\n invitation: \"accept Co-Signer invitation\",\r\n signRecovery: \"sign account recovery\",\r\n completeRecovery: \"restore login access\",\r\n};\r\n\r\nexport const imageAssets = {\r\n successIcon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/succes-page-icon.svg\",\r\n usaFlag:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/Flag-United-States-of-America%201.svg\",\r\n privacyTip:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/privacy_tip.svg\",\r\n addCoSignerIcon1:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/add-cosigner-icon-1.svg\",\r\n addCoSignerIcon2:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/add-cosigner-icon-2.svg\",\r\n addCoSignerIcon3:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/add-cosigner-icon-3.svg\",\r\n addCoSignerIcon4:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/add-cosigner-icon-4.svg\",\r\n pkicon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/pk-icon.svg\",\r\n encryptedIcon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/encrypted-icon.svg\",\r\n pinHide:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/pin-hide-icon.svg\",\r\n pinShow:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/pin-show-icon.svg\",\r\n arrowUp:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/contact-arrow-up.svg\",\r\n arrowDown:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/contact-dropdown.svg\",\r\n editBlue:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/edit.svg\",\r\n editBlack:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/edit-icon.svg\",\r\n search:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/search-icon.svg\",\r\n circleClicked:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/check-circle-icon.svg\",\r\n supervise:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/supervisor-icon.svg\",\r\n delete:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/delete-icon.svg\",\r\n pointer:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/pointer-icon.svg\",\r\n sliderDot:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/slider-icon.svg\",\r\n select:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/select-icon.svg\",\r\n selectClicked:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/select-clicked-icon.svg\",\r\n addIcon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/plus-circle-icon.svg\",\r\n addDisableIcon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/plus-circle-dis.svg\",\r\n errorAlert:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/error-icon.svg\",\r\n successAlert:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/success-icon.svg\",\r\n loadingIcon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/loading-icon.png\",\r\n};\r\n\r\nexport const countriesDetails = [\r\n {\r\n name: \"Afghanistan\",\r\n code: \"AF\",\r\n currency: \"AFN\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/af.webp\",\r\n phone_code: \"93\",\r\n },\r\n {\r\n name: \"Albania\",\r\n code: \"AL\",\r\n currency: \"ALL\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/al.webp\",\r\n phone_code: \"355\",\r\n },\r\n {\r\n name: \"Algeria\",\r\n code: \"DZ\",\r\n currency: \"DZD\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/dz.webp\",\r\n phone_code: \"213\",\r\n },\r\n {\r\n name: \"American Samoa\",\r\n code: \"AS\",\r\n currency: \"USD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/as.webp\",\r\n phone_code: \"1-684\",\r\n },\r\n {\r\n name: \"Andorra\",\r\n code: \"AD\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ad.webp\",\r\n phone_code: \"376\",\r\n },\r\n {\r\n name: \"Angola\",\r\n code: \"AO\",\r\n currency: \"AOA\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ao.webp\",\r\n phone_code: \"244\",\r\n },\r\n {\r\n name: \"Anguilla\",\r\n code: \"AI\",\r\n currency: \"XCD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ai.webp\",\r\n phone_code: \"1-264\",\r\n },\r\n {\r\n name: \"Antarctica\",\r\n code: \"AQ\",\r\n currency: \"N/A\",\r\n continent: \"Antarctica\",\r\n flag: \"https://flagpedia.net/data/flags/h80/aq.webp\",\r\n phone_code: \"N/A\",\r\n },\r\n {\r\n name: \"Antigua and Barbuda\",\r\n code: \"AG\",\r\n currency: \"XCD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ag.webp\",\r\n phone_code: \"1-268\",\r\n },\r\n {\r\n name: \"Argentina\",\r\n code: \"AR\",\r\n currency: \"ARS\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ar.webp\",\r\n phone_code: \"54\",\r\n },\r\n {\r\n name: \"Armenia\",\r\n code: \"AM\",\r\n currency: \"AMD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/am.webp\",\r\n phone_code: \"374\",\r\n },\r\n {\r\n name: \"Aruba\",\r\n code: \"AW\",\r\n currency: \"AWG\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/aw.webp\",\r\n phone_code: \"297\",\r\n },\r\n {\r\n name: \"Australia\",\r\n code: \"AU\",\r\n currency: \"AUD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/au.webp\",\r\n phone_code: \"61\",\r\n },\r\n {\r\n name: \"Austria\",\r\n code: \"AT\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/at.webp\",\r\n phone_code: \"43\",\r\n },\r\n {\r\n name: \"Azerbaijan\",\r\n code: \"AZ\",\r\n currency: \"AZN\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/az.webp\",\r\n phone_code: \"994\",\r\n },\r\n {\r\n name: \"Bahamas\",\r\n code: \"BS\",\r\n currency: \"BSD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bs.webp\",\r\n phone_code: \"1-242\",\r\n },\r\n {\r\n name: \"Bahrain\",\r\n code: \"BH\",\r\n currency: \"BHD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bh.webp\",\r\n phone_code: \"973\",\r\n },\r\n {\r\n name: \"Bangladesh\",\r\n code: \"BD\",\r\n currency: \"BDT\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bd.webp\",\r\n phone_code: \"880\",\r\n },\r\n {\r\n name: \"Barbados\",\r\n code: \"BB\",\r\n currency: \"BBD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bb.webp\",\r\n phone_code: \"1-246\",\r\n },\r\n {\r\n name: \"Belarus\",\r\n code: \"BY\",\r\n currency: \"BYR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/by.webp\",\r\n phone_code: \"375\",\r\n },\r\n {\r\n name: \"Belgium\",\r\n code: \"BE\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/be.webp\",\r\n phone_code: \"32\",\r\n },\r\n {\r\n name: \"Belize\",\r\n code: \"BZ\",\r\n currency: \"BZD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bz.webp\",\r\n phone_code: \"501\",\r\n },\r\n {\r\n name: \"Benin\",\r\n code: \"BJ\",\r\n currency: \"XOF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bj.webp\",\r\n phone_code: \"229\",\r\n },\r\n {\r\n name: \"Bermuda\",\r\n code: \"BM\",\r\n currency: \"BMD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bm.webp\",\r\n phone_code: \"1-441\",\r\n },\r\n {\r\n name: \"Bhutan\",\r\n code: \"BT\",\r\n currency: \"BTN\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bt.webp\",\r\n phone_code: \"975\",\r\n },\r\n {\r\n name: \"Bolivia\",\r\n code: \"BO\",\r\n currency: \"BOB\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bo.webp\",\r\n phone_code: \"591\",\r\n },\r\n {\r\n name: \"Bosnia and Herzegovina\",\r\n code: \"BA\",\r\n currency: \"BAM\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ba.webp\",\r\n phone_code: \"387\",\r\n },\r\n {\r\n name: \"Botswana\",\r\n code: \"BW\",\r\n currency: \"BWP\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bw.webp\",\r\n phone_code: \"267\",\r\n },\r\n {\r\n name: \"Brazil\",\r\n code: \"BR\",\r\n currency: \"BRL\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/br.webp\",\r\n phone_code: \"55\",\r\n },\r\n {\r\n name: \"British Indian Ocean Territory\",\r\n code: \"IO\",\r\n currency: \"USD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/io.webp\",\r\n phone_code: \"246\",\r\n },\r\n {\r\n name: \"Brunei Darussalam\",\r\n code: \"BN\",\r\n currency: \"BND\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bn.webp\",\r\n phone_code: \"673\",\r\n },\r\n {\r\n name: \"Bulgaria\",\r\n code: \"BG\",\r\n currency: \"BGN\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bg.webp\",\r\n phone_code: \"359\",\r\n },\r\n {\r\n name: \"Burkina Faso\",\r\n code: \"BF\",\r\n currency: \"XOF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bf.webp\",\r\n phone_code: \"226\",\r\n },\r\n {\r\n name: \"Burundi\",\r\n code: \"BI\",\r\n currency: \"BIF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bi.webp\",\r\n phone_code: \"257\",\r\n },\r\n {\r\n name: \"Cambodia\",\r\n code: \"KH\",\r\n currency: \"KHR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/kh.webp\",\r\n phone_code: \"855\",\r\n },\r\n {\r\n name: \"Cameroon\",\r\n code: \"CM\",\r\n currency: \"CFA\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cm.webp\",\r\n phone_code: \"237\",\r\n },\r\n {\r\n name: \"Canada\",\r\n code: \"CA\",\r\n currency: \"CAD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ca.webp\",\r\n phone_code: \"1\",\r\n },\r\n {\r\n name: \"Cape Verde\",\r\n code: \"CV\",\r\n currency: \"CVE\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cv.webp\",\r\n phone_code: \"238\",\r\n },\r\n {\r\n name: \"Cayman Islands\",\r\n code: \"KY\",\r\n currency: \"KYD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ky.webp\",\r\n phone_code: \"1-345\",\r\n },\r\n {\r\n name: \"Central African Republic\",\r\n code: \"CF\",\r\n currency: \"XAF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cf.webp\",\r\n phone_code: \"236\",\r\n },\r\n {\r\n name: \"Chad\",\r\n code: \"TD\",\r\n currency: \"CDF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/td.webp\",\r\n phone_code: \"235\",\r\n },\r\n {\r\n name: \"Chile\",\r\n code: \"CL\",\r\n currency: \"CLP\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cl.webp\",\r\n phone_code: \"56\",\r\n },\r\n {\r\n name: \"China\",\r\n code: \"CN\",\r\n currency: \"CNY\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cn.webp\",\r\n phone_code: \"86\",\r\n },\r\n {\r\n name: \"Christmas Island\",\r\n code: \"CX\",\r\n currency: \"AUD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cx.webp\",\r\n phone_code: \"61\",\r\n },\r\n {\r\n name: \"Cocos (Keeling) Islands\",\r\n code: \"CC\",\r\n currency: \"AUD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cc.webp\",\r\n phone_code: \"61\",\r\n },\r\n {\r\n name: \"Colombia\",\r\n code: \"CO\",\r\n currency: \"COP\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/co.webp\",\r\n phone_code: \"57\",\r\n },\r\n {\r\n name: \"Comoros\",\r\n code: \"KM\",\r\n currency: \"KMF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/km.webp\",\r\n phone_code: \"269\",\r\n },\r\n {\r\n name: \"Congo (Congo-Brazzaville)\",\r\n code: \"CG\",\r\n currency: \"CDF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cg.webp\",\r\n phone_code: \"242\",\r\n },\r\n {\r\n name: \"Congo (Democratic Republic of the Congo)\",\r\n code: \"CD\",\r\n currency: \"CDF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cd.webp\",\r\n phone_code: \"243\",\r\n },\r\n {\r\n name: \"Cook Islands\",\r\n code: \"CK\",\r\n currency: \"NZD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ck.webp\",\r\n phone_code: \"682\",\r\n },\r\n {\r\n name: \"Costa Rica\",\r\n code: \"CR\",\r\n currency: \"CRC\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cr.webp\",\r\n phone_code: \"506\",\r\n },\r\n {\r\n name: \"Croatia\",\r\n code: \"HR\",\r\n currency: \"HRK\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/hr.webp\",\r\n phone_code: \"385\",\r\n },\r\n {\r\n name: \"Cuba\",\r\n code: \"CU\",\r\n currency: \"CUP\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cu.webp\",\r\n phone_code: \"53\",\r\n },\r\n {\r\n name: \"Curaçao\",\r\n code: \"CW\",\r\n currency: \"AWG\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cw.webp\",\r\n phone_code: \"599\",\r\n },\r\n {\r\n name: \"Cyprus\",\r\n code: \"CY\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cy.webp\",\r\n phone_code: \"357\",\r\n },\r\n {\r\n name: \"Czech Republic\",\r\n code: \"CZ\",\r\n currency: \"CZK\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cz.webp\",\r\n phone_code: \"420\",\r\n },\r\n {\r\n name: \"Denmark\",\r\n code: \"DK\",\r\n currency: \"DKK\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/dk.webp\",\r\n phone_code: \"45\",\r\n },\r\n {\r\n name: \"Djibouti\",\r\n code: \"DJ\",\r\n currency: \"DJF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/dj.webp\",\r\n phone_code: \"253\",\r\n },\r\n {\r\n name: \"Dominica\",\r\n code: \"DM\",\r\n currency: \"XCD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/dm.webp\",\r\n phone_code: \"1-767\",\r\n },\r\n {\r\n name: \"Dominican Republic\",\r\n code: \"DO\",\r\n currency: \"DOP\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/do.webp\",\r\n phone_code: \"1-809\",\r\n },\r\n {\r\n name: \"Ecuador\",\r\n code: \"EC\",\r\n currency: \"USD\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ec.webp\",\r\n phone_code: \"593\",\r\n },\r\n {\r\n name: \"Egypt\",\r\n code: \"EG\",\r\n currency: \"EGP\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/eg.webp\",\r\n phone_code: \"20\",\r\n },\r\n {\r\n name: \"El Salvador\",\r\n code: \"SV\",\r\n currency: \"SVC\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sv.webp\",\r\n phone_code: \"503\",\r\n },\r\n {\r\n name: \"Equatorial Guinea\",\r\n code: \"GQ\",\r\n currency: \"GNF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gq.webp\",\r\n phone_code: \"240\",\r\n },\r\n {\r\n name: \"Eritrea\",\r\n code: \"ER\",\r\n currency: \"ERN\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/er.webp\",\r\n phone_code: \"291\",\r\n },\r\n {\r\n name: \"Estonia\",\r\n code: \"EE\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ee.webp\",\r\n phone_code: \"372\",\r\n },\r\n {\r\n name: \"Eswatini\",\r\n code: \"SZ\",\r\n currency: \"SZL\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sz.webp\",\r\n phone_code: \"268\",\r\n },\r\n {\r\n name: \"Ethiopia\",\r\n code: \"ET\",\r\n currency: \"ETB\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/et.webp\",\r\n phone_code: \"251\",\r\n },\r\n {\r\n name: \"Falkland Islands\",\r\n code: \"FK\",\r\n currency: \"FKP\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/fk.webp\",\r\n phone_code: \"500\",\r\n },\r\n {\r\n name: \"Faroe Islands\",\r\n code: \"FO\",\r\n currency: \"DKK\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/fo.webp\",\r\n phone_code: \"298\",\r\n },\r\n {\r\n name: \"Fiji\",\r\n code: \"FJ\",\r\n currency: \"FJD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/fj.webp\",\r\n phone_code: \"679\",\r\n },\r\n {\r\n name: \"Finland\",\r\n code: \"FI\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/fi.webp\",\r\n phone_code: \"358\",\r\n },\r\n {\r\n name: \"France\",\r\n code: \"FR\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/fr.webp\",\r\n phone_code: \"33\",\r\n },\r\n {\r\n name: \"Gabon\",\r\n code: \"GA\",\r\n currency: \"GAB\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ga.webp\",\r\n phone_code: \"241\",\r\n },\r\n {\r\n name: \"Gambia\",\r\n code: \"GM\",\r\n currency: \"GMD\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gm.webp\",\r\n phone_code: \"220\",\r\n },\r\n {\r\n name: \"Georgia\",\r\n code: \"GE\",\r\n currency: \"GEL\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ge.webp\",\r\n phone_code: \"995\",\r\n },\r\n {\r\n name: \"Germany\",\r\n code: \"DE\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/de.webp\",\r\n phone_code: \"49\",\r\n },\r\n {\r\n name: \"Ghana\",\r\n code: \"GH\",\r\n currency: \"GHS\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gh.webp\",\r\n phone_code: \"233\",\r\n },\r\n {\r\n name: \"Greece\",\r\n code: \"GR\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gr.webp\",\r\n phone_code: \"30\",\r\n },\r\n {\r\n name: \"Greenland\",\r\n code: \"GL\",\r\n currency: \"DKK\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gl.webp\",\r\n phone_code: \"299\",\r\n },\r\n {\r\n name: \"Grenada\",\r\n code: \"GD\",\r\n currency: \"XCD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gd.webp\",\r\n phone_code: \"1-473\",\r\n },\r\n {\r\n name: \"Guadeloupe\",\r\n code: \"GP\",\r\n currency: \"EUR\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gp.webp\",\r\n phone_code: \"590\",\r\n },\r\n {\r\n name: \"Guam\",\r\n code: \"GU\",\r\n currency: \"USD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gu.webp\",\r\n phone_code: \"1-671\",\r\n },\r\n {\r\n name: \"Guatemala\",\r\n code: \"GT\",\r\n currency: \"GTQ\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gt.webp\",\r\n phone_code: \"502\",\r\n },\r\n {\r\n name: \"Guinea\",\r\n code: \"GN\",\r\n currency: \"GNF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gn.webp\",\r\n phone_code: \"224\",\r\n },\r\n {\r\n name: \"Guinea-Bissau\",\r\n code: \"GW\",\r\n currency: \"GNF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gw.webp\",\r\n phone_code: \"245\",\r\n },\r\n {\r\n name: \"Guyana\",\r\n code: \"GY\",\r\n currency: \"GYD\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gy.webp\",\r\n phone_code: \"592\",\r\n },\r\n {\r\n name: \"Haiti\",\r\n code: \"HT\",\r\n currency: \"HTG\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ht.webp\",\r\n phone_code: \"509\",\r\n },\r\n {\r\n name: \"Heard Island and McDonald Islands\",\r\n code: \"HM\",\r\n currency: \"AUD\",\r\n continent: \"Australia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/hm.webp\",\r\n phone_code: \"61\",\r\n },\r\n {\r\n name: \"Honduras\",\r\n code: \"HN\",\r\n currency: \"HNL\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/hn.webp\",\r\n phone_code: \"504\",\r\n },\r\n {\r\n name: \"Hong Kong\",\r\n code: \"HK\",\r\n currency: \"HKD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/hk.webp\",\r\n phone_code: \"852\",\r\n },\r\n {\r\n name: \"Hungary\",\r\n code: \"HU\",\r\n currency: \"HUF\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/hu.webp\",\r\n phone_code: \"36\",\r\n },\r\n {\r\n name: \"Iceland\",\r\n code: \"IS\",\r\n currency: \"ISK\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/is.webp\",\r\n phone_code: \"354\",\r\n },\r\n {\r\n name: \"India\",\r\n code: \"IN\",\r\n currency: \"INR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/in.webp\",\r\n phone_code: \"91\",\r\n },\r\n {\r\n name: \"Indonesia\",\r\n code: \"ID\",\r\n currency: \"IDR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/id.webp\",\r\n phone_code: \"62\",\r\n },\r\n {\r\n name: \"Iran\",\r\n code: \"IR\",\r\n currency: \"IRR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ir.webp\",\r\n phone_code: \"98\",\r\n },\r\n {\r\n name: \"Iraq\",\r\n code: \"IQ\",\r\n currency: \"IQD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/iq.webp\",\r\n phone_code: \"964\",\r\n },\r\n {\r\n name: \"Ireland\",\r\n code: \"IE\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ie.webp\",\r\n phone_code: \"353\",\r\n },\r\n {\r\n name: \"Israel\",\r\n code: \"IL\",\r\n currency: \"ILS\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/il.webp\",\r\n phone_code: \"972\",\r\n },\r\n {\r\n name: \"Italy\",\r\n code: \"IT\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/it.webp\",\r\n phone_code: \"39\",\r\n },\r\n {\r\n name: \"Jamaica\",\r\n code: \"JM\",\r\n currency: \"JMD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/jm.webp\",\r\n phone_code: \"1-876\",\r\n },\r\n {\r\n name: \"Japan\",\r\n code: \"JP\",\r\n currency: \"JPY\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/jp.webp\",\r\n phone_code: \"81\",\r\n },\r\n {\r\n name: \"Jordan\",\r\n code: \"JO\",\r\n currency: \"JOD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/jo.webp\",\r\n phone_code: \"962\",\r\n },\r\n {\r\n name: \"Kazakhstan\",\r\n code: \"KZ\",\r\n currency: \"KZT\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/kz.webp\",\r\n phone_code: \"7\",\r\n },\r\n {\r\n name: \"Kenya\",\r\n code: \"KE\",\r\n currency: \"KES\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ke.webp\",\r\n phone_code: \"254\",\r\n },\r\n {\r\n name: \"Kiribati\",\r\n code: \"KI\",\r\n currency: \"AUD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ki.webp\",\r\n phone_code: \"686\",\r\n },\r\n {\r\n name: \"Korea (North)\",\r\n code: \"KP\",\r\n currency: \"KPW\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/kp.webp\",\r\n phone_code: \"850\",\r\n },\r\n {\r\n name: \"Korea (South)\",\r\n code: \"KR\",\r\n currency: \"KRW\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/kr.webp\",\r\n phone_code: \"82\",\r\n },\r\n {\r\n name: \"Kuwait\",\r\n code: \"KW\",\r\n currency: \"KWD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/kw.webp\",\r\n phone_code: \"965\",\r\n },\r\n {\r\n name: \"Kyrgyzstan\",\r\n code: \"KG\",\r\n currency: \"KGS\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/kg.webp\",\r\n phone_code: \"996\",\r\n },\r\n {\r\n name: \"Laos\",\r\n code: \"LA\",\r\n currency: \"LAK\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/la.webp\",\r\n phone_code: \"856\",\r\n },\r\n {\r\n name: \"Latvia\",\r\n code: \"LV\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/lv.webp\",\r\n phone_code: \"371\",\r\n },\r\n {\r\n name: \"Lebanon\",\r\n code: \"LB\",\r\n currency: \"LBP\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/lb.webp\",\r\n phone_code: \"961\",\r\n },\r\n {\r\n name: \"Lesotho\",\r\n code: \"LS\",\r\n currency: \"LSL\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ls.webp\",\r\n phone_code: \"266\",\r\n },\r\n {\r\n name: \"Liberia\",\r\n code: \"LR\",\r\n currency: \"LRD\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/lr.webp\",\r\n phone_code: \"231\",\r\n },\r\n {\r\n name: \"Libya\",\r\n code: \"LY\",\r\n currency: \"LYD\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ly.webp\",\r\n phone_code: \"218\",\r\n },\r\n {\r\n name: \"Liechtenstein\",\r\n code: \"LI\",\r\n currency: \"CHF\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/li.webp\",\r\n phone_code: \"423\",\r\n },\r\n {\r\n name: \"Lithuania\",\r\n code: \"LT\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/lt.webp\",\r\n phone_code: \"370\",\r\n },\r\n {\r\n name: \"Luxembourg\",\r\n code: \"LU\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/lu.webp\",\r\n phone_code: \"352\",\r\n },\r\n {\r\n name: \"Macau\",\r\n code: \"MO\",\r\n currency: \"MOP\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mo.webp\",\r\n phone_code: \"853\",\r\n },\r\n {\r\n name: \"Madagascar\",\r\n code: \"MG\",\r\n currency: \"MGA\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mg.webp\",\r\n phone_code: \"261\",\r\n },\r\n {\r\n name: \"Malawi\",\r\n code: \"MW\",\r\n currency: \"MWK\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mw.webp\",\r\n phone_code: \"265\",\r\n },\r\n {\r\n name: \"Malaysia\",\r\n code: \"MY\",\r\n currency: \"MYR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/my.webp\",\r\n phone_code: \"60\",\r\n },\r\n {\r\n name: \"Maldives\",\r\n code: \"MV\",\r\n currency: \"MVR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mv.webp\",\r\n phone_code: \"960\",\r\n },\r\n {\r\n name: \"Mali\",\r\n code: \"ML\",\r\n currency: \"XOF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ml.webp\",\r\n phone_code: \"223\",\r\n },\r\n {\r\n name: \"Malta\",\r\n code: \"MT\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mt.webp\",\r\n phone_code: \"356\",\r\n },\r\n {\r\n name: \"Marshall Islands\",\r\n code: \"MH\",\r\n currency: \"USD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mh.webp\",\r\n phone_code: \"692\",\r\n },\r\n {\r\n name: \"Martinique\",\r\n code: \"MQ\",\r\n currency: \"EUR\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mq.webp\",\r\n phone_code: \"596\",\r\n },\r\n {\r\n name: \"Mauritania\",\r\n code: \"MR\",\r\n currency: \"MRU\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mr.webp\",\r\n phone_code: \"222\",\r\n },\r\n {\r\n name: \"Mauritius\",\r\n code: \"MU\",\r\n currency: \"MUR\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mu.webp\",\r\n phone_code: \"230\",\r\n },\r\n {\r\n name: \"Mayotte\",\r\n code: \"YT\",\r\n currency: \"EUR\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/yt.webp\",\r\n phone_code: \"269\",\r\n },\r\n {\r\n name: \"Mexico\",\r\n code: \"MX\",\r\n currency: \"MXN\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mx.webp\",\r\n phone_code: \"52\",\r\n },\r\n {\r\n name: \"Micronesia\",\r\n code: \"FM\",\r\n currency: \"USD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/fm.webp\",\r\n phone_code: \"691\",\r\n },\r\n {\r\n name: \"Moldova\",\r\n code: \"MD\",\r\n currency: \"MDL\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/md.webp\",\r\n phone_code: \"373\",\r\n },\r\n {\r\n name: \"Monaco\",\r\n code: \"MC\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mc.webp\",\r\n phone_code: \"377\",\r\n },\r\n {\r\n name: \"Mongolia\",\r\n code: \"MN\",\r\n currency: \"MNT\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mn.webp\",\r\n phone_code: \"976\",\r\n },\r\n {\r\n name: \"Montenegro\",\r\n code: \"ME\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/me.webp\",\r\n phone_code: \"382\",\r\n },\r\n {\r\n name: \"Montserrat\",\r\n code: \"MS\",\r\n currency: \"XCD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ms.webp\",\r\n phone_code: \"1-664\",\r\n },\r\n {\r\n name: \"Morocco\",\r\n code: \"MA\",\r\n currency: \"MAD\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ma.webp\",\r\n phone_code: \"212\",\r\n },\r\n {\r\n name: \"Mozambique\",\r\n code: \"MZ\",\r\n currency: \"MZN\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mz.webp\",\r\n phone_code: \"258\",\r\n },\r\n {\r\n name: \"Myanmar\",\r\n code: \"MM\",\r\n currency: \"MMK\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mm.webp\",\r\n phone_code: \"95\",\r\n },\r\n {\r\n name: \"Namibia\",\r\n code: \"NA\",\r\n currency: \"NAD\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/na.webp\",\r\n phone_code: \"264\",\r\n },\r\n {\r\n name: \"Nauru\",\r\n code: \"NR\",\r\n currency: \"AUD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/nr.webp\",\r\n phone_code: \"674\",\r\n },\r\n {\r\n name: \"Nepal\",\r\n code: \"NP\",\r\n currency: \"NPR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/np.webp\",\r\n phone_code: \"977\",\r\n },\r\n {\r\n name: \"Netherlands\",\r\n code: \"NL\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/nl.webp\",\r\n phone_code: \"31\",\r\n },\r\n {\r\n name: \"New Caledonia\",\r\n code: \"NC\",\r\n currency: \"XPF\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/nc.webp\",\r\n phone_code: \"687\",\r\n },\r\n {\r\n name: \"New Zealand\",\r\n code: \"NZ\",\r\n currency: \"NZD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/nz.webp\",\r\n phone_code: \"64\",\r\n },\r\n {\r\n name: \"Nicaragua\",\r\n code: \"NI\",\r\n currency: \"NIO\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ni.webp\",\r\n phone_code: \"505\",\r\n },\r\n {\r\n name: \"Niger\",\r\n code: \"NE\",\r\n currency: \"NGN\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ne.webp\",\r\n phone_code: \"227\",\r\n },\r\n {\r\n name: \"Nigeria\",\r\n code: \"NG\",\r\n currency: \"NGN\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ng.webp\",\r\n phone_code: \"234\",\r\n },\r\n {\r\n name: \"Niue\",\r\n code: \"NU\",\r\n currency: \"NZD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/nu.webp\",\r\n phone_code: \"683\",\r\n },\r\n {\r\n name: \"Norfolk Island\",\r\n code: \"NF\",\r\n currency: \"AUD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/nf.webp\",\r\n phone_code: \"672\",\r\n },\r\n {\r\n name: \"North Macedonia\",\r\n code: \"MK\",\r\n currency: \"MKD\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mk.webp\",\r\n phone_code: \"389\",\r\n },\r\n {\r\n name: \"Northern Mariana Islands\",\r\n code: \"MP\",\r\n currency: \"USD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mp.webp\",\r\n phone_code: \"1-670\",\r\n },\r\n {\r\n name: \"Norway\",\r\n code: \"NO\",\r\n currency: \"NOK\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/no.webp\",\r\n phone_code: \"47\",\r\n },\r\n {\r\n name: \"Oman\",\r\n code: \"OM\",\r\n currency: \"OMR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/om.webp\",\r\n phone_code: \"968\",\r\n },\r\n {\r\n name: \"Pakistan\",\r\n code: \"PK\",\r\n currency: \"PKR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pk.webp\",\r\n phone_code: \"92\",\r\n },\r\n {\r\n name: \"Palau\",\r\n code: \"PW\",\r\n currency: \"USD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pw.webp\",\r\n phone_code: \"680\",\r\n },\r\n {\r\n name: \"Panama\",\r\n code: \"PA\",\r\n currency: \"PAB\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pa.webp\",\r\n phone_code: \"507\",\r\n },\r\n {\r\n name: \"Papua New Guinea\",\r\n code: \"PG\",\r\n currency: \"PGK\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pg.webp\",\r\n phone_code: \"675\",\r\n },\r\n {\r\n name: \"Paraguay\",\r\n code: \"PY\",\r\n currency: \"PYG\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/py.webp\",\r\n phone_code: \"595\",\r\n },\r\n {\r\n name: \"Peru\",\r\n code: \"PE\",\r\n currency: \"PEN\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pe.webp\",\r\n phone_code: \"51\",\r\n },\r\n {\r\n name: \"Philippines\",\r\n code: \"PH\",\r\n currency: \"PHP\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ph.webp\",\r\n phone_code: \"63\",\r\n },\r\n {\r\n name: \"Pitcairn Islands\",\r\n code: \"PN\",\r\n currency: \"NZD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pn.webp\",\r\n phone_code: \"64\",\r\n },\r\n {\r\n name: \"Poland\",\r\n code: \"PL\",\r\n currency: \"PLN\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pl.webp\",\r\n phone_code: \"48\",\r\n },\r\n {\r\n name: \"Portugal\",\r\n code: \"PT\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pt.webp\",\r\n phone_code: \"351\",\r\n },\r\n {\r\n name: \"Puerto Rico\",\r\n code: \"PR\",\r\n currency: \"USD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pr.webp\",\r\n phone_code: \"1-787\",\r\n },\r\n {\r\n name: \"Qatar\",\r\n code: \"QA\",\r\n currency: \"QAR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/qa.webp\",\r\n phone_code: \"974\",\r\n },\r\n {\r\n name: \"Romania\",\r\n code: \"RO\",\r\n currency: \"RON\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ro.webp\",\r\n phone_code: \"40\",\r\n },\r\n {\r\n name: \"Russia\",\r\n code: \"RU\",\r\n currency: \"RUB\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ru.webp\",\r\n phone_code: \"7\",\r\n },\r\n {\r\n name: \"Rwanda\",\r\n code: \"RW\",\r\n currency: \"RWF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/rw.webp\",\r\n phone_code: \"250\",\r\n },\r\n {\r\n name: \"Saint Barthélemy\",\r\n code: \"BL\",\r\n currency: \"EUR\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bl.webp\",\r\n phone_code: \"590\",\r\n },\r\n {\r\n name: \"Saint Helena\",\r\n code: \"SH\",\r\n currency: \"SHP\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sh.webp\",\r\n phone_code: \"290\",\r\n },\r\n {\r\n name: \"Saint Kitts and Nevis\",\r\n code: \"KN\",\r\n currency: \"XCD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/kn.webp\",\r\n phone_code: \"1-869\",\r\n },\r\n {\r\n name: \"Saint Lucia\",\r\n code: \"LC\",\r\n currency: \"XCD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/lc.webp\",\r\n phone_code: \"1-758\",\r\n },\r\n {\r\n name: \"Saint Martin\",\r\n code: \"MF\",\r\n currency: \"EUR\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mf.webp\",\r\n phone_code: \"590\",\r\n },\r\n {\r\n name: \"Saint Pierre and Miquelon\",\r\n code: \"PM\",\r\n currency: \"EUR\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pm.webp\",\r\n phone_code: \"508\",\r\n },\r\n {\r\n name: \"Saint Vincent and the Grenadines\",\r\n code: \"VC\",\r\n currency: \"XCD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/vc.webp\",\r\n phone_code: \"1-784\",\r\n },\r\n {\r\n name: \"Samoa\",\r\n code: \"WS\",\r\n currency: \"WST\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ws.webp\",\r\n phone_code: \"685\",\r\n },\r\n {\r\n name: \"San Marino\",\r\n code: \"SM\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sm.webp\",\r\n phone_code: \"378\",\r\n },\r\n {\r\n name: \"Sao Tome and Principe\",\r\n code: \"ST\",\r\n currency: \"STN\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/st.webp\",\r\n phone_code: \"239\",\r\n },\r\n {\r\n name: \"Saudi Arabia\",\r\n code: \"SA\",\r\n currency: \"SAR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sa.webp\",\r\n phone_code: \"966\",\r\n },\r\n {\r\n name: \"Senegal\",\r\n code: \"SN\",\r\n currency: \"XOF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sn.webp\",\r\n phone_code: \"221\",\r\n },\r\n {\r\n name: \"Serbia\",\r\n code: \"RS\",\r\n currency: \"RSD\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/rs.webp\",\r\n phone_code: \"381\",\r\n },\r\n {\r\n name: \"Seychelles\",\r\n code: \"SC\",\r\n currency: \"SCR\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sc.webp\",\r\n phone_code: \"248\",\r\n },\r\n {\r\n name: \"Sierra Leone\",\r\n code: \"SL\",\r\n currency: \"SLL\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sl.webp\",\r\n phone_code: \"232\",\r\n },\r\n {\r\n name: \"Singapore\",\r\n code: \"SG\",\r\n currency: \"SGD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sg.webp\",\r\n phone_code: \"65\",\r\n },\r\n {\r\n name: \"Sint Eustatius\",\r\n code: \"SX\",\r\n currency: \"USD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sx.webp\",\r\n phone_code: \"599\",\r\n },\r\n {\r\n name: \"Sint Maarten\",\r\n code: \"SM\",\r\n currency: \"ANG\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sm.webp\",\r\n phone_code: \"1-721\",\r\n },\r\n {\r\n name: \"Slovakia\",\r\n code: \"SK\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sk.webp\",\r\n phone_code: \"421\",\r\n },\r\n {\r\n name: \"Slovenia\",\r\n code: \"SI\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/si.webp\",\r\n phone_code: \"386\",\r\n },\r\n {\r\n name: \"Solomon Islands\",\r\n code: \"SB\",\r\n currency: \"SBD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sb.webp\",\r\n phone_code: \"677\",\r\n },\r\n {\r\n name: \"Somalia\",\r\n code: \"SO\",\r\n currency: \"SOS\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/so.webp\",\r\n phone_code: \"252\",\r\n },\r\n {\r\n name: \"South Africa\",\r\n code: \"ZA\",\r\n currency: \"ZAR\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/za.webp\",\r\n phone_code: \"27\",\r\n },\r\n {\r\n name: \"South Georgia and the South Sandwich Islands\",\r\n code: \"GS\",\r\n currency: \"GBP\",\r\n continent: \"Antarctica\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gs.webp\",\r\n phone_code: \"500\",\r\n },\r\n {\r\n name: \"South Sudan\",\r\n code: \"SS\",\r\n currency: \"SSP\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ss.webp\",\r\n phone_code: \"211\",\r\n },\r\n {\r\n name: \"Spain\",\r\n code: \"ES\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/es.webp\",\r\n phone_code: \"34\",\r\n },\r\n {\r\n name: \"Sri Lanka\",\r\n code: \"LK\",\r\n currency: \"LKR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/lk.webp\",\r\n phone_code: \"94\",\r\n },\r\n {\r\n name: \"Sudan\",\r\n code: \"SD\",\r\n currency: \"SDG\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sd.webp\",\r\n phone_code: \"249\",\r\n },\r\n {\r\n name: \"Suriname\",\r\n code: \"SR\",\r\n currency: \"SRD\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sr.webp\",\r\n phone_code: \"597\",\r\n },\r\n {\r\n name: \"Svalbard and Jan Mayen\",\r\n code: \"SJ\",\r\n currency: \"NOK\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sj.webp\",\r\n phone_code: \"47\",\r\n },\r\n {\r\n name: \"Sweden\",\r\n code: \"SE\",\r\n currency: \"SEK\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/se.webp\",\r\n phone_code: \"46\",\r\n },\r\n {\r\n name: \"Switzerland\",\r\n code: \"CH\",\r\n currency: \"CHF\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ch.webp\",\r\n phone_code: \"41\",\r\n },\r\n {\r\n name: \"Syria\",\r\n code: \"SY\",\r\n currency: \"SYP\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sy.webp\",\r\n phone_code: \"963\",\r\n },\r\n {\r\n name: \"Taiwan\",\r\n code: \"TW\",\r\n currency: \"TWD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tw.webp\",\r\n phone_code: \"886\",\r\n },\r\n {\r\n name: \"Tajikistan\",\r\n code: \"TJ\",\r\n currency: \"TJS\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tj.webp\",\r\n phone_code: \"992\",\r\n },\r\n {\r\n name: \"Tanzania\",\r\n code: \"TZ\",\r\n currency: \"TZS\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tz.webp\",\r\n phone_code: \"255\",\r\n },\r\n {\r\n name: \"Thailand\",\r\n code: \"TH\",\r\n currency: \"THB\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/th.webp\",\r\n phone_code: \"66\",\r\n },\r\n {\r\n name: \"Timor-Leste\",\r\n code: \"TL\",\r\n currency: \"USD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tl.webp\",\r\n phone_code: \"670\",\r\n },\r\n {\r\n name: \"Togo\",\r\n code: \"TG\",\r\n currency: \"XOF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tg.webp\",\r\n phone_code: \"228\",\r\n },\r\n {\r\n name: \"Tokelau\",\r\n code: \"TK\",\r\n currency: \"NZD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tk.webp\",\r\n phone_code: \"690\",\r\n },\r\n {\r\n name: \"Tonga\",\r\n code: \"TO\",\r\n currency: \"TOP\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/to.webp\",\r\n phone_code: \"676\",\r\n },\r\n {\r\n name: \"Trinidad and Tobago\",\r\n code: \"TT\",\r\n currency: \"TTD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tt.webp\",\r\n phone_code: \"1-868\",\r\n },\r\n {\r\n name: \"Tunisia\",\r\n code: \"TN\",\r\n currency: \"TND\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tn.webp\",\r\n phone_code: \"216\",\r\n },\r\n {\r\n name: \"Turkey\",\r\n code: \"TR\",\r\n currency: \"TRY\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tr.webp\",\r\n phone_code: \"90\",\r\n },\r\n {\r\n name: \"Turkmenistan\",\r\n code: \"TM\",\r\n currency: \"TMT\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tm.webp\",\r\n phone_code: \"993\",\r\n },\r\n {\r\n name: \"Tuvalu\",\r\n code: \"TV\",\r\n currency: \"AUD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tv.webp\",\r\n phone_code: \"688\",\r\n },\r\n {\r\n name: \"Uganda\",\r\n code: \"UG\",\r\n currency: \"UGX\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ug.webp\",\r\n phone_code: \"256\",\r\n },\r\n {\r\n name: \"Ukraine\",\r\n code: \"UA\",\r\n currency: \"UAH\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ua.webp\",\r\n phone_code: \"380\",\r\n },\r\n {\r\n name: \"United Arab Emirates\",\r\n code: \"AE\",\r\n currency: \"AED\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ae.webp\",\r\n phone_code: \"971\",\r\n },\r\n {\r\n name: \"United Kingdom\",\r\n code: \"GB\",\r\n currency: \"GBP\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gb.webp\",\r\n phone_code: \"44\",\r\n },\r\n {\r\n name: \"United States\",\r\n code: \"US\",\r\n currency: \"USD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/us.webp\",\r\n phone_code: \"1\",\r\n },\r\n {\r\n name: \"Uruguay\",\r\n code: \"UY\",\r\n currency: \"UYU\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/uy.webp\",\r\n phone_code: \"598\",\r\n },\r\n {\r\n name: \"Uzbekistan\",\r\n code: \"UZ\",\r\n currency: \"UZS\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/uz.webp\",\r\n phone_code: \"998\",\r\n },\r\n {\r\n name: \"Vanuatu\",\r\n code: \"VU\",\r\n currency: \"VUV\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/vu.webp\",\r\n phone_code: \"678\",\r\n },\r\n {\r\n name: \"Vatican City\",\r\n code: \"VA\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/va.webp\",\r\n phone_code: \"379\",\r\n },\r\n {\r\n name: \"Venezuela\",\r\n code: \"VE\",\r\n currency: \"VES\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ve.webp\",\r\n phone_code: \"58\",\r\n },\r\n {\r\n name: \"Vietnam\",\r\n code: \"VN\",\r\n currency: \"VND\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/vn.webp\",\r\n phone_code: \"84\",\r\n },\r\n {\r\n name: \"Wallis and Futuna\",\r\n code: \"WF\",\r\n currency: \"XPF\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/wf.webp\",\r\n phone_code: \"681\",\r\n },\r\n {\r\n name: \"Western Sahara\",\r\n code: \"EH\",\r\n currency: \"MAD\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/eh.webp\",\r\n phone_code: \"212\",\r\n },\r\n {\r\n name: \"Yemen\",\r\n code: \"YE\",\r\n currency: \"YER\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ye.webp\",\r\n phone_code: \"967\",\r\n },\r\n {\r\n name: \"Zambia\",\r\n code: \"ZM\",\r\n currency: \"ZMW\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/zm.webp\",\r\n phone_code: \"260\",\r\n },\r\n {\r\n name: \"Zimbabwe\",\r\n code: \"ZW\",\r\n currency: \"ZWL\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/zw.webp\",\r\n phone_code: \"263\",\r\n },\r\n];\r\n","import {\r\n contractAddress,\r\n Custody,\r\n Provider,\r\n VerifiedWallet,\r\n} from \"@verified-network/verified-sdk\";\r\nimport {\r\n allGoogleFontUrls,\r\n defaultChainId,\r\n imageAssets,\r\n TwiloBaseUrl,\r\n} from \"./constants\";\r\nimport { ChainConfig, PaymasterConfig } from \"./config\";\r\nimport crypto from \"crypto\";\r\nimport crypt from \"crypto-js\";\r\nimport { toast } from \"react-toastify\";\r\nimport axios from \"axios\";\r\nimport { createSmartAccountClient } from \"@biconomy/account\";\r\nimport React from \"react\";\r\n\r\n/**\r\n *\r\n * @param document Any web page loaded in the browser / Dom tree\r\n */\r\nexport const loadAllGoogleFonts = (document: Document) => {\r\n const apiExists = document.querySelector(\r\n `link[href=\"https://fonts.googleapis.com\"]`\r\n );\r\n if (!apiExists) {\r\n const apiLink = document.createElement(\"link\");\r\n apiLink.rel = \"preconnect\";\r\n apiLink.href = \"https://fonts.googleapis.com\";\r\n document.head.appendChild(apiLink);\r\n }\r\n const staticExists = document.querySelector(\r\n `link[href=\"https://fonts.gstatic.com\"]`\r\n );\r\n if (!staticExists) {\r\n const staticLink = document.createElement(\"link\");\r\n staticLink.rel = \"preconnect\";\r\n staticLink.href = \"https://fonts.gstatic.com\";\r\n document.head.appendChild(staticLink);\r\n }\r\n allGoogleFontUrls.map((fontUrl) => {\r\n const fontExists = document.querySelector(`link[href=\"${fontUrl}\"]`);\r\n if (!fontExists) {\r\n const fontLink = document.createElement(\"link\");\r\n fontLink.rel = \"stylesheet\";\r\n fontLink.href = fontUrl;\r\n document.head.appendChild(fontLink);\r\n }\r\n });\r\n\r\n return true;\r\n};\r\n\r\n/**\r\n * initialize user's wallet and vault contract using existing private key or create a new wallet for user\r\n * unsupported/invalid chainId passed will automatically use default supported chainId\r\n * @param chainId\r\n * @param privateKey\r\n *\r\n */\r\nexport const initWalletAndContract = async (\r\n chainId?: number,\r\n privateKey?: string\r\n) => {\r\n try {\r\n let sender: VerifiedWallet;\r\n //import existing wallet or create new one.\r\n if (privateKey) {\r\n sender = new VerifiedWallet(privateKey);\r\n } else {\r\n const mnemonics = VerifiedWallet.generateMnemonic();\r\n sender = VerifiedWallet.importWallet(mnemonics);\r\n }\r\n\r\n //initialize provider, signer, privatekey and vault contract\r\n const cntAddresses: any = contractAddress;\r\n const _chainId =\r\n chainId &&\r\n cntAddresses[chainId]?.Custody &&\r\n ChainConfig[chainId]?.rpcUrls?.length > 0\r\n ? chainId\r\n : defaultChainId;\r\n const provider = ChainConfig[_chainId]?.rpcUrls[0];\r\n const signer = sender.setProvider(new Provider(provider));\r\n const pk = sender.privateKey;\r\n const vaultContract = new Custody(signer, cntAddresses[_chainId]?.Custody);\r\n const smartAccount = await createSmartAccountClient({\r\n signer: signer,\r\n bundlerUrl: `${PaymasterConfig.BUNDLER_URL_FIRST_SECTION}/${_chainId}/${PaymasterConfig[_chainId][\"BUNDLER_API_KEY\"]}`,\r\n biconomyPaymasterApiKey: PaymasterConfig[_chainId][\"PAYMASTER_API_KEY\"],\r\n });\r\n const address = await smartAccount.getAccountAddress();\r\n\r\n //valid return\r\n return {\r\n chainId: _chainId,\r\n address,\r\n pk,\r\n signer,\r\n provider,\r\n vaultContract,\r\n vaultData: null,\r\n };\r\n } catch (err) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\r\n \"Error while initializing user's wallet and contract: \",\r\n err\r\n );\r\n }\r\n //default return;\r\n return {\r\n chainId: null,\r\n address: null,\r\n pk: null,\r\n signer: null,\r\n provider: null,\r\n vaultContract: null,\r\n vaultData: null,\r\n };\r\n }\r\n};\r\n\r\nexport const sendOTPVerification = async (\r\n recipient: string,\r\n channel: \"sms\" | \"email\"\r\n) => {\r\n try {\r\n const data = JSON.stringify({\r\n to: recipient,\r\n channel: channel,\r\n });\r\n\r\n const response = await fetch(`${TwiloBaseUrl}/start-verify`, {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: data,\r\n });\r\n\r\n const json = await response.json();\r\n return json.success;\r\n } catch (error) {\r\n console.error(error);\r\n return false;\r\n }\r\n};\r\n\r\nexport const checkOTPVerification = async (recipient: string, code: string) => {\r\n try {\r\n const data = JSON.stringify({\r\n to: recipient,\r\n code,\r\n });\r\n\r\n const response = await fetch(`${TwiloBaseUrl}/check-verify`, {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: data,\r\n });\r\n\r\n const json = await response.json();\r\n return json.success;\r\n } catch (error) {\r\n console.error(error?.message);\r\n return false;\r\n }\r\n};\r\n\r\nexport const hashTheString = (text: string) => {\r\n const hash = crypto.createHash(\"sha256\").update(text).digest(\"hex\");\r\n return hash.slice(0, 30); // Truncate to 30 characters\r\n};\r\n\r\nexport const encryptString = (text: string, secretKey: string) => {\r\n const encryptedAES = crypt.AES.encrypt(text, secretKey);\r\n return encryptedAES.toString();\r\n};\r\n\r\nexport const decryptString = (encryptedText: string, secretKey: string) => {\r\n var decryptedBytes = crypt.AES.decrypt(encryptedText, secretKey);\r\n var decryptedText = decryptedBytes.toString(crypt.enc.Utf8);\r\n return decryptedText;\r\n};\r\n\r\nexport const customEncryptString = (inputString: string, password: string) => {\r\n const salt = crypt.lib.WordArray.random(128 / 8);\r\n const key = crypt.PBKDF2(password, salt, {\r\n keySize: 256 / 32,\r\n iterations: 1000,\r\n });\r\n\r\n const iv = crypt.lib.WordArray.random(128 / 8);\r\n\r\n const encrypted = crypt.AES.encrypt(inputString, key, {\r\n iv: iv,\r\n padding: crypt.pad.Pkcs7,\r\n mode: crypt.mode.CBC,\r\n });\r\n\r\n const result = salt.toString() + iv.toString() + encrypted.toString();\r\n return result;\r\n};\r\n\r\nexport const customDecryptString = (\r\n encryptedString: string,\r\n password: string\r\n) => {\r\n const salt = crypt.enc.Hex.parse(encryptedString.substr(0, 32));\r\n const iv = crypt.enc.Hex.parse(encryptedString.substr(32, 32));\r\n const encrypted = encryptedString.substr(64);\r\n\r\n const key = crypt.PBKDF2(password, salt, {\r\n keySize: 256 / 32,\r\n iterations: 1000,\r\n });\r\n\r\n const decrypted = crypt.AES.decrypt(encrypted, key, {\r\n iv: iv,\r\n padding: crypt.pad.Pkcs7,\r\n mode: crypt.mode.CBC,\r\n });\r\n\r\n return decrypted.toString(crypt.enc.Utf8);\r\n};\r\n\r\nexport const getErrorToastContent = (title: string, content: string) => {\r\n return (\r\n <div className=\"verified-custd-mdl-general-web-toast-error\">\r\n <img style={{ marginLeft: \"5px\" }} src={imageAssets.errorAlert} alt=\"\" />\r\n <div className=\"verified-custd-mdl-general-web-toast-error-container\">\r\n <p className=\"verified-custd-mdl-general-web-toast-error-title\">\r\n {title}\r\n </p>\r\n <p className=\"verified-custd-mdl-general-web-toast-error-label\">\r\n {content}\r\n </p>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport const getSuccessToastContent = (\r\n title: string,\r\n content: string,\r\n link: string\r\n) => {\r\n return (\r\n <div className=\"verified-custd-mdl-general-web-toast-success\">\r\n <div className=\"verified-custd-mdl-general-web-toast-success-cont\">\r\n <img\r\n style={{ marginLeft: \"5px\" }}\r\n src={imageAssets.successAlert}\r\n alt=\"\"\r\n />\r\n <div className=\"verified-custd-mdl-general-web-toast-success-container\">\r\n <p className=\"verified-custd-mdl-general-web-toast-error-title\">\r\n {title}\r\n </p>\r\n <p className=\"verified-custd-mdl-general-web-toast-error-label\">\r\n {content}\r\n </p>\r\n </div>\r\n </div>\r\n {link?.length > 0 && (\r\n <div className=\"verified-custd-mdl-general-web-toast-success-link\">\r\n <a\r\n className=\"verified-custd-mdl-general-web-toast-success-link-text\"\r\n href={link}\r\n target=\"_blank\"\r\n rel=\"noreferrer\"\r\n >\r\n Follow your transaction.\r\n </a>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport const errorToast = (title: string, content: string) => {\r\n toast.dismiss();\r\n return toast.error(getErrorToastContent(title, content), {\r\n closeButton: false,\r\n position: \"top-center\",\r\n autoClose: 3000,\r\n hideProgressBar: false,\r\n pauseOnHover: false,\r\n draggable: false,\r\n closeOnClick: false,\r\n style: {\r\n background: \"#fef2f2\",\r\n width: \"600px\",\r\n height: \"67px\",\r\n maxHeight: \"67px\",\r\n position: \"absolute\",\r\n top: \"5px\",\r\n right: \"5px\",\r\n borderRadius: \"8px\",\r\n },\r\n icon: false,\r\n });\r\n};\r\n\r\nexport const successToast = (title: string, content: string, link: string) => {\r\n toast.dismiss();\r\n return toast.success(getSuccessToastContent(title, content, link), {\r\n closeButton: false,\r\n position: \"top-center\",\r\n autoClose: 3000,\r\n hideProgressBar: false,\r\n pauseOnHover: false,\r\n draggable: false,\r\n closeOnClick: false,\r\n style: {\r\n background: \"var(--Success-50, #F1F8ED)\",\r\n\r\n width: \"600px\",\r\n height: \"67px\",\r\n maxHeight: \"67px\",\r\n position: \"absolute\",\r\n top: \"5px\",\r\n right: \"5px\",\r\n borderRadius: \"8px\",\r\n },\r\n icon: false,\r\n });\r\n};\r\n","export const ChainConfig: any = {\r\n 1: {\r\n chainId: `0x${Number(1).toString(16)}`,\r\n chainName: \"Ethereum\",\r\n nativeCurrency: {\r\n name: \"ETH\",\r\n symbol: \"ETH\",\r\n decimals: 18,\r\n },\r\n rpcUrls: [\r\n `https://solemn-summer-patina.quiknode.pro/${process.env.REACT_APP_QUIKNODE_KEY}/`,\r\n ],\r\n blockExplorerUrls: [\"https://etherscan.io/\"],\r\n },\r\n\r\n 8453: {\r\n chainId: `0x${Number(8453).toString(16)}`,\r\n chainName: \"Base Mainnet\",\r\n nativeCurrency: {\r\n name: \"ETH\",\r\n symbol: \"ETH\",\r\n decimals: 18,\r\n },\r\n rpcUrls: [\r\n `https://red-quaint-pallet.base-mainnet.quiknode.pro/${process.env.REACT_APP_QUICKNODE_KEY}/`,\r\n ],\r\n blockExplorerUrls: [\"https://basescan.org/\"],\r\n },\r\n\r\n 100: {\r\n chainId: `0x${Number(100).toString(16)}`,\r\n chainName: \"Gnosis\",\r\n nativeCurrency: {\r\n name: \"XDAI\",\r\n symbol: \"XDAI\",\r\n decimals: 18,\r\n },\r\n rpcUrls: [\"https://rpc.gnosischain.com/\"],\r\n blockExplorerUrls: [\"https://gnosisscan.io/\"],\r\n },\r\n\r\n 11155111: {\r\n chainId: `0x${Number(11155111).toString(16)}`,\r\n chainName: \"Sepolia Test Network\",\r\n nativeCurrency: {\r\n name: \"ETH\",\r\n symbol: \"ETH\",\r\n decimals: 18,\r\n },\r\n rpcUrls: [\"https://eth-sepolia.public.blastapi.io\"],\r\n blockExplorerUrls: [\"https://sepolia.etherscan.io/\"],\r\n },\r\n\r\n 84532: {\r\n chainId: `0x${Number(84532).toString(16)}`,\r\n chainName: \"Base Sepolia\",\r\n nativeCurrency: {\r\n name: \"ETH\",\r\n symbol: \"ETH\",\r\n decimals: 18,\r\n },\r\n rpcUrls: [\"https://sepolia.base.org\"],\r\n blockExplorerUrls: [\"https://sepolia.basescan.org/\"],\r\n },\r\n};\r\n\r\nexport const PaymasterConfig: any = {\r\n BUNDLER_URL_FIRST_SECTION: \"https://bundler.biconomy.io/api/v2\",\r\n\r\n //ethereum sepolia\r\n 11155111: {\r\n PAYMASTER_API_KEY: \"BuFP2-5w-.5b3daf3a-d044-4dda-819c-4c4d8431df88\",\r\n BUNDLER_API_KEY: \"nJPK7B3ru.dd7f7861-190d-41bd-af80-6877f74b8f44\",\r\n },\r\n //polgon mainnet\r\n 137: {\r\n PAYMASTER_API_KEY: \"lDHvYk50N.30a2522e-0a9d-444b-b949-19194c1f237a\",\r\n BUNDLER_API_KEY: \"dewj2189.wh1289hU-7E49-45ic-af80-JkuxGCYRV\",\r\n },\r\n //base sepolia\r\n 84532: {\r\n PAYMASTER_API_KEY: \"jSBI-WRji.99a4dda1-1c20-42ea-9409-2724f9a0ca7e\",\r\n BUNDLER_API_KEY: \"nJPK7B3ru.dd7f7861-190d-41bd-af80-6877f74b8f44\",\r\n },\r\n\r\n //ethereum mainnet\r\n 1: {\r\n PAYMASTER_API_KEY: \"ap7LOqALI.bf68e672-47ce-40f8-8b62-ea508dcf5852\",\r\n BUNDLER_API_KEY: \"dewj402.wh1289hU-7E49-85b-af80-t6XmQ4yJs\",\r\n },\r\n\r\n //base mainnet\r\n 8453: {\r\n PAYMASTER_API_KEY: \"glRQsmuYh.5d9372ab-5063-4ecd-ac63-643fef624a73\",\r\n BUNDLER_API_KEY: \"dewj402.wh1289hU-7E49-85b-af80-t6XmQ4yJs\",\r\n },\r\n\r\n //gnosis\r\n 100: {\r\n PAYMASTER_API_KEY: \"eUYghbvi4.317a2d6d-6ee7-4a0c-b91f-43ba2699f65b\",\r\n BUNDLER_API_KEY: \"dewj402.wh1289hU-7E49-85b-af80-t6XmQ4yJs\",\r\n },\r\n};\r\n","import React, { useState } from \"react\";\r\nimport { useVaultStore } from \"../services/store\";\r\nimport { errorToast, sendOTPVerification } from \"../utils/helpers\";\r\nimport PageSlider from \"../components/slider\";\r\nimport SearchBox from \"../components/search\";\r\nimport {\r\n PrivacyOverlay,\r\n TermsAndConditionsOverlay,\r\n} from \"../components/overlays\";\r\nimport { imageAssets } from \"../utils/constants\";\r\n\r\nconst ContactPage = (props: {\r\n setStep: (step: string) => void;\r\n setIsLoading: (isLoading: boolean) => void;\r\n setUserNumberFmt: (number: string) => void;\r\n userNumberFmt: string;\r\n setUserEmail: (email: string) => void;\r\n userEmail: string;\r\n setSelectedCountry: (country: {\r\n name: string;\r\n area: string;\r\n flag: string;\r\n }) => void;\r\n selectedCountry: { name: string; area: string; flag: string };\r\n allCountries: any;\r\n}) => {\r\n const [userNumber, setUserNumber] = useState(\"\");\r\n const [userInput, setUserInput] = useState(\"\");\r\n const [searchActive, setSearchActive] = useState(false);\r\n const [sendOtpErrorText, setSendOtpErrorText] = useState(\"\");\r\n\r\n const { pk, vaultContract } = useVaultStore();\r\n\r\n const handleButtonDisplay = () => {\r\n const button = document.getElementById(\"verified-custd-mdl-contact-button\");\r\n if (button && props.selectedCountry.area && userNumber.length === 10) {\r\n setSendOtpErrorText(\"\");\r\n button.className = \"verified-custd-mdl-startup-button-active\";\r\n } else if (\r\n button &&\r\n props.userEmail?.length > 0 &&\r\n isNaN(Number(props.userEmail)) &&\r\n props.userEmail?.includes(\"@\")\r\n ) {\r\n setSendOtpErrorText(\"\");\r\n button.className = \"verified-custd-mdl-startup-button-active\";\r\n } else {\r\n setSendOtpErrorText(\"\");\r\n button!.className = \"verified-custd-mdl-startup-button\";\r\n }\r\n };\r\n\r\n const handleSendOTP = async () => {\r\n if (\r\n props.userEmail?.length > 0 &&\r\n !/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(props.userEmail)\r\n ) {\r\n setSendOtpErrorText(\"Invalid input, please check your email\");\r\n return;\r\n }\r\n\r\n const vaultId =\r\n props.userEmail?.length > 0\r\n ? props.userEmail\r\n : `+${props.selectedCountry.area}${userNumber}`;\r\n const channel = props.userEmail?.length > 0 ? \"email\" : \"sms\";\r\n\r\n if (vaultId && channel && pk && vaultContract) {\r\n props.setIsLoading(true);\r\n await sendOTPVerification(vaultId, channel).then((res: any) => {\r\n props.setIsLoading(false);\r\n if (res) {\r\n setSendOtpErrorText(\"\");\r\n props.setStep(\"3\");\r\n } else {\r\n setSendOtpErrorText(\r\n channel === \"email\"\r\n ? \"Error while sending otp to your email. Try again later.\"\r\n : \"Error while sending otp to your phone number. Try again later.\"\r\n );\r\n errorToast(\r\n \"Oops something went wrong\",\r\n props.userEmail?.length > 0\r\n ? `Input a valid email and try again.`\r\n : `Input a valid phone number and try again.`\r\n );\r\n }\r\n });\r\n }\r\n };\r\n\r\n return (\r\n <div className=\"verified-custd-mdl-startup-language\">\r\n <div className=\"verified-custd-mdl-startup-contact\">\r\n <PageSlider sliderCount={[1, 2, 3]} currentSlider=\"0\" />\r\n <div className=\"verified-custd-mdl-startup-contact-content\">\r\n <p className=\"verified-custd-mdl-startup-contact-text\">\r\n Enter your phone number\r\n </p>\r\n <div className=\"verified-custd-mdl-st-contact-input\">\r\n <div className=\"verified-custd-mdl-st-contact-content-container\">\r\n <div\r\n onClick={() => {\r\n setSearchActive(!searchActive);\r\n }}\r\n className=\"verified-custd-mdl-st-contact-first-section\"\r\n >\r\n <img\r\n onClick={() => {\r\n setSearchActive(!searchActive);\r\n }}\r\n alt=\"Country Flag\"\r\n className=\"verified-custd-mdl-st-contact-selection-icon\"\r\n src={props.selectedCountry.flag}\r\n />\r\n <p\r\n onClick={() => {\r\n setSearchActive(!searchActive);\r\n }}\r\n className=\"verified-custd-mdl-st-contact-selection-text\"\r\n >\r\n + {props.selectedCountry.area}\r\n </p>\r\n {searchActive && (\r\n <img\r\n onClick={() => {\r\n setSearchActive(!searchActive);\r\n }}\r\n alt=\"Dropdown Icon\"\r\n className=\"verified-custd-mdl-st-contact-dropdown\"\r\n src={imageAssets.arrowUp}\r\n />\r\n )}\r\n {!searchActive && (\r\n <img\r\n onClick={() => {\r\n setSearchActive(!searchActive);\r\n }}\r\n alt=\"Dropdown Icon\"\r\n className=\"verified-custd-mdl-st-contact-dropdown\"\r\n src={imageAssets.arrowDown}\r\n />\r\n )}\r\n </div>\r\n\r\n <input\r\n onInputCapture={(e: any) => {\r\n if (e.target.value === \"\") {\r\n setUserInput(userInput + \" \");\r\n } else {\r\n setUserInput(e.target.value);\r\n }\r\n const numericInput = e.target.value?.replace(/\\D/g, \"\");\r\n setUserNumber(numericInput);\r\n let formattedNumber = \"\";\r\n for (let i = 0; i < numericInput?.length; i++) {\r\n formattedNumber += numericInput[i];\r\n if ((i + 1) % 5 === 0 && i + 1 < numericInput?.length) {\r\n formattedNumber += \" \";\r\n }\r\n }\r\n props.setUserNumberFmt(formattedNumber);\r\n }}\r\n onInput={(e) => {\r\n handleButtonDisplay();\r\n }}\r\n value={props.userNumberFmt}\r\n id=\"phone-input\"\r\n type=\"text\"\r\n className=\"verified-custd-mdl-st-contact-second-section\"\r\n placeholder=\"Enter your phone number\"\r\n />\r\n </div>\r\n {searchActive && (\r\n <SearchBox\r\n pageName=\"ftu/contact\"\r\n searchContent={props.allCountries}\r\n type=\"area-code\"\r\n handleButtonDisplay={handleButtonDisplay}\r\n setSelected={props.setSelectedCountry}\r\n selected={props.selectedCountry}\r\n searchActive={searchActive}\r\n setSearchActive={setSearchActive}\r\n contentMaxHeight=\"300\"\r\n contentbottomMargin=\"300\"\r\n />\r\n )}\r\n {userNumber.length !== 10 && userInput.length > 10 && (\r\n <div className=\"verified-custd-mdl-st-contact-input-error\">\r\n <p className=\"verified-custd-mdl-input-error-text\">\r\n Invalid input, please check your phone number\r\n </p>\r\n </div>\r\n )}\r\n {sendOtpErrorText?.length > 0 && props.userEmail?.length === 0 && (\r\n <div className=\"verified-custd-mdl-st-contact-input-error\">\r\n <p className=\"verified-custd-mdl-input-error-text\">\r\n {sendOtpErrorText}\r\n </p>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n {!searchActive && (\r\n <React.Fragment>\r\n <div className=\"verified-custd-mdl-p-p-payment-portal-amount-info-separator\">\r\n <div className=\"verified-custd-mdl-p-p-payment-portal-line\"></div>\r\n <p className=\"verified-custd-mdl-p-payment-portal-separator-text\">\r\n OR\r\n </p>\r\n <div className=\"verified-custd-mdl-p-p-payment-portal-line\"></div>\r\n </div>\r\n <div className=\"verified-custd-mdl-st-contact-input\">\r\n <input\r\n onInputCapture={(e: any) => {\r\n props.setUserEmail(e.target?.value);\r\n props.setUserNumberFmt(\"\");\r\n setUserNumber(\"\");\r\n setUserInput(\"\");\r\n }}\r\n onInput={(e) => {\r\n handleButtonDisplay();\r\n }}\r\n type=\"text\"\r\n className=\"verified-custd-mdl-st-contact-second-section\"\r\n placeholder=\"Enter your email address\"\r\n />\r\n {sendOtpErrorText?.length > 0 && props.userEmail?.length > 0 && (\r\n <div className=\"verified-custd-mdl-st-contact-input-error\">\r\n <p className=\"verified-custd-mdl-input-error-text\">\r\n {sendOtpErrorText}\r\n </p>\r\n </div>\r\n )}\r\n </div>\r\n </React.Fragment>\r\n )}\r\n </div>\r\n\r\n {!searchActive && <div style={{ height: \"80px\" }}></div>}\r\n\r\n <div className=\"verified-custd-mdl-startup-contact-footer\">\r\n <div className=\"verified-custd-mdl-st-contact-footer-first-section\">\r\n <TermsAndConditionsOverlay />\r\n <button\r\n id=\"verified-custd-mdl-contact-button\"\r\n onClick={async (e: any) => {\r\n if (\r\n e.target.className.includes(\r\n \"verified-custd-mdl-startup-button\"\r\n ) &&\r\n e.target.className !== \"verified-custd-mdl-startup-button\"\r\n ) {\r\n e.target.className = \"verified-custd-mdl-startup-button-click\";\r\n await handleSendOTP();\r\n } else {\r\n const buttonElement = document.getElementsByClassName(\r\n \"verified-custd-mdl-startup-button-active\"\r\n );\r\n if (buttonElement.length > 0) {\r\n buttonElement[0].className =\r\n \"verified-custd-mdl-startup-button-click\";\r\n await handleSendOTP();\r\n }\r\n }\r\n }}\r\n className=\"verified-custd-mdl-startup-button\"\r\n >\r\n Get OTP\r\n </button>\r\n <div className=\"verified-custd-mdl-st-contact-footer-second-section\">\r\n <PrivacyOverlay />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default ContactPage;\r\n","import React from \"react\";\r\n\r\nconst PageSlider = (props: any) => {\r\n return (\r\n <div className=\"verified-custd-mdl-startup-slider\">\r\n {props.sliderCount?.length > 0 &&\r\n props.sliderCount.map((_: any, idx: number) => (\r\n <React.Fragment key={idx}>\r\n {idx <= Number(props.currentSlider) && (\r\n <div\r\n key={`active-${idx}`}\r\n style={{ width: `${100 / props.sliderCount.length}%` }}\r\n className=\"verified-custd-mdl-startup-slider-line-active\"\r\n ></div>\r\n )}\r\n {idx > Number(props.currentSlider) && (\r\n <div\r\n key={`inactive-${idx}`}\r\n style={{ width: `${100 / props.sliderCount.length}%` }}\r\n className=\"verified-custd-mdl-startup-slider-line\"\r\n ></div>\r\n )}\r\n </React.Fragment>\r\n ))}\r\n </div>\r\n );\r\n};\r\n\r\nexport default PageSlider;\r\n","import React, { useState } from \"react\";\r\nimport { imageAssets } from \"../utils/constants\";\r\n\r\nconst SearchBox = (props: any) => {\r\n const [newSearchContent, setNewSearchContent] = useState<null | [Object]>(\r\n null\r\n );\r\n\r\n return (\r\n <div className=\"verified-custd-mdl-startup-language-content-container\">\r\n <div className=\"verified-custd-mdl-st-language-content\">\r\n {props.headerText && (\r\n <p className=\"verified-custd-mdl-st-language-text\">\r\n {props.headerText}\r\n </p>\r\n )}\r\n <div className=\"verified-custd-mdl-mobille-startup-search-box-container\">\r\n <div className=\"verified-custd-mdl-mobile-startup-search-box\">\r\n <img\r\n style={{ paddingLeft: \"6px\" }}\r\n src={imageAssets.search}\r\n alt=\"Search Icon\"\r\n className=\"verified-custd-mdl-mobile-search-icon\"\r\n />\r\n <input\r\n onInputCapture={() => {\r\n if (props.type === \"language\") {\r\n props.setSelected(\"\");\r\n }\r\n }}\r\n onInput={(e: any) => {\r\n if (e.target.value === \"\") {\r\n setNewSearchContent(null);\r\n } else {\r\n if (props.type === \"language\") {\r\n setNewSearchContent(\r\n // eslint-disable-next-line array-callback-return\r\n props.searchContent.filter((src: any) => {\r\n if (\r\n src.name\r\n .toLowerCase()\r\n .includes(e.target.value.toLowerCase())\r\n ) {\r\n src.searched = e.target.value.toLowerCase();\r\n src.nameArray = src.name.split(\"\");\r\n return src;\r\n }\r\n })\r\n );\r\n } else if (props.type === \"area-code\") {\r\n setNewSearchContent(\r\n // eslint-disable-next-line array-callback-return\r\n\r\n props.searchContent.filter((src: any) => {\r\n if (\r\n src?.name\r\n ?.toLowerCase()\r\n .includes(e.target.value.toLowerCase())\r\n ) {\r\n src.searched = e.target.value.toLowerCase();\r\n src.nameArray = src?.name?.split(\"\");\r\n return src;\r\n }\r\n })\r\n );\r\n }\r\n }\r\n\r\n props.handleButtonDisplay();\r\n }}\r\n type=\"text\"\r\n className=\"verified-custd-mdl-ms-search-box-content\"\r\n placeholder=\"Search\"\r\n />\r\n </div>\r\n <div className=\"verified-custd-mdl-mobile-startup-search-content\">\r\n <div\r\n style={\r\n props.contentMaxHeight\r\n ? { maxHeight: `${props.contentMaxHeight}px` }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-ms-search-content-container\"\r\n >\r\n {!newSearchContent &&\r\n props?.searchContent?.length > 0 &&\r\n props.searchContent.map((src: any, idx: number) => (\r\n <React.Fragment key={idx}>\r\n {props.type === \"area-code\" && (\r\n <div\r\n key={idx}\r\n onClickCapture={() => {\r\n props.setSelected({\r\n area: src.phone_code,\r\n flag: src.flag,\r\n name: src.name,\r\n });\r\n }}\r\n onClick={() => {\r\n if (props.setSearchActive) {\r\n props.setSearchActive(!props.setSearchActive);\r\n }\r\n props.handleButtonDisplay();\r\n }}\r\n className=\"verified-custd-mdl-ms-search-content\"\r\n >\r\n <img\r\n src={src.flag}\r\n alt=\"Search Result Icon\"\r\n className=\"verified-custd-mdl-ms-search-content-icon\"\r\n />\r\n <p className=\"verified-custd-mdl-ms-search-content-text\">\r\n {src.name}\r\n </p>\r\n </div>\r\n )}\r\n {props.type === \"language\" && (\r\n <React.Fragment>\r\n {window.location.search !== `?${idx}` && (\r\n <div\r\n key={idx}\r\n onClickCapture={() => {\r\n props.setSelected(src.name);\r\n }}\r\n onClick={() => {\r\n props.setSelected(src.name);\r\n if (props.setSearchActive) {\r\n props.setSearchActive(!props.setSearchActive);\r\n }\r\n props.handleButtonDisplay();\r\n }}\r\n className=\"verified-custd-mdl-ms-search-content\"\r\n >\r\n <img\r\n src={src.icon}\r\n alt=\"Search Result Icon\"\r\n className=\"verified-custd-mdl-ms-search-content-icon\"\r\n />\r\n {src.label && (\r\n <p className=\"verified-custd-mdl-ms-search-content-text\">\r\n {src.name} {`(${src.label})`}\r\n </p>\r\n )}\r\n {!src.label && (\r\n <p className=\"verified-custd-mdl-ms-search-content-text\">\r\n {src.name}\r\n </p>\r\n )}\r\n </div>\r\n )}\r\n {window.location.search === `?${idx}` && (\r\n <div\r\n key={idx}\r\n onClickCapture={() => {\r\n props.setSelected(src.name);\r\n }}\r\n onClick={() => {\r\n props.setSelected(src.name);\r\n if (props.setSearchActive) {\r\n props.setSearchActive(!props.setSearchActive);\r\n }\r\n props.handleButtonDisplay();\r\n }}\r\n className=\"verified-custd-mdl-ms-search-content-active\"\r\n >\r\n <div className=\"verified-custd-mdl-ms-search-content-text-container\">\r\n <img\r\n src={src.icon}\r\n alt=\"Search Result Icon\"\r\n className=\"verified-custd-mdl-ms-search-content-icon\"\r\n />\r\n {src.label && (\r\n <p className=\"verified-custd-mdl-ms-search-content-text\">\r\n {src.name} {`(${src.label})`}\r\n </p>\r\n )}\r\n {!src.label && (\r\n <p className=\"verified-custd-mdl-ms-search-content-text\">\r\n {src.name}\r\n </p>\r\n )}\r\n </div>\r\n {props.selected && props.selected.length > 0 && (\r\n <img\r\n src={imageAssets.circleClicked}\r\n alt=\"Clicked Icon\"\r\n />\r\n )}\r\n </div>\r\n )}\r\n </React.Fragment>\r\n )}\r\n </React.Fragment>\r\n ))}\r\n\r\n {newSearchContent &&\r\n newSearchContent.length > 0 &&\r\n newSearchContent.map((src: any, idx: number) => (\r\n <React.Fragment key={idx}>\r\n {props.type === \"area-code\" && (\r\n <div\r\n key={idx}\r\n onClickCapture={() => {\r\n props.setSelected({\r\n area: src?.phone_code,\r\n flag: src?.flag,\r\n name: src?.name,\r\n });\r\n }}\r\n onClick={() => {\r\n if (props.setSearchActive) {\r\n props.setSearchActive(!props.setSearchActive);\r\n }\r\n props.handleButtonDisplay();\r\n }}\r\n className=\"verified-custd-mdl-ms-search-content\"\r\n >\r\n <img\r\n src={src?.flag}\r\n alt=\"Search Result Icon\"\r\n className=\"verified-custd-mdl-ms-search-content-icon\"\r\n />\r\n <p className=\"verified-custd-mdl-ms-search-content-text\">\r\n {src?.nameArray?.length > 0 &&\r\n src?.nameArray.map((nm: any, idx: number) => (\r\n <React.Fragment key={idx}>\r\n {!src.searched.includes(nm.toLowerCase()) && (\r\n <span\r\n key={idx}\r\n style={{\r\n color: \"#B6B7C3\",\r\n }}\r\n >\r\n {nm}\r\n </span>\r\n )}\r\n {src.searched.includes(nm.toLowerCase()) && (\r\n <span key={idx}>{nm}</span>\r\n )}\r\n </React.Fragment>\r\n ))}\r\n </p>\r\n </div>\r\n )}\r\n {props.type === \"language\" && (\r\n <React.Fragment key={idx}>\r\n {window.location.search !== `?${idx}` && (\r\n <div\r\n onClickCapture={() => {\r\n props.setSelected(src.name);\r\n }}\r\n onClick={() => {\r\n props.setSelected(src.name);\r\n if (props.setSearchActive) {\r\n props.setSearchActive(!props.setSearchActive);\r\n }\r\n props.handleButtonDisplay();\r\n }}\r\n className=\"verified-custd-mdl-ms-search-content\"\r\n >\r\n <img\r\n src={src.icon}\r\n alt=\"Search Result Icon\"\r\n className=\"verified-custd-mdl-ms-search-content-icon\"\r\n />\r\n {!src.label && (\r\n <p className=\"verified-custd-mdl-ms-search-content-text\">\r\n {src.nameArray?.length > 0 &&\r\n src.nameArray.map((nm: any, idx: number) => (\r\n <React.Fragment key={idx}>\r\n {!src.searched.includes(\r\n nm.toLowerCase()\r\n ) && (\r\n <span\r\n key={idx}\r\n style={{\r\n color: \"#B6B7C3\",\r\n }}\r\n >\r\n {nm}\r\n </span>\r\n )}\r\n {src.searched.includes(\r\n nm.toLowerCase()\r\n ) && <span key={idx}>{nm}</span>}\r\n </React.Fragment>\r\n ))}\r\n </p>\r\n )}\r\n {src.label && (\r\n <p className=\"verified-custd-mdl-ms-search-content-text\">\r\n {src.nameArray?.length > 0 &&\r\n src.nameArray.map((nm: any, idx: number) => (\r\n <React.Fragment key={idx}>\r\n {!src.searched.includes(\r\n nm.toLowerCase()\r\n ) && (\r\n <span\r\n key={idx}\r\n style={{\r\n color: \"#B6B7C3\",\r\n }}\r\n >\r\n {nm}\r\n </span>\r\n )}\r\n {src.searched.includes(\r\n nm.toLowerCase()\r\n ) && <span key={idx}>{nm}</span>}\r\n </React.Fragment>\r\n ))}\r\n {!src.searched.includes(\r\n src.label.toLowerCase()\r\n ) && (\r\n <span\r\n style={{\r\n color: \"#B6B7C3\",\r\n }}\r\n >{` (${src.label})`}</span>\r\n )}\r\n {src.searched.includes(\r\n src.label.toLowerCase()\r\n ) && <span>{` (${src.label})`}</span>}\r\n </p>\r\n )}\r\n </div>\r\n )}\r\n {window.location.search === `?${idx}` && (\r\n <div\r\n key={idx}\r\n onClickCapture={() => {\r\n props.setSelected(src.name);\r\n }}\r\n onClick={() => {\r\n props.setSelected(src.name);\r\n if (props.setSearchActive) {\r\n props.setSearchActive(!props.setSearchActive);\r\n }\r\n props.handleButtonDisplay();\r\n }}\r\n className=\"verified-custd-mdl-ms-search-content-active\"\r\n >\r\n <div className=\"verified-custd-mdl-ms-search-content-text-container\">\r\n <img\r\n src={src.icon}\r\n alt=\"Search Result Icon\"\r\n className=\"verified-custd-mdl-ms-search-content-icon\"\r\n />\r\n {src.label && (\r\n <p className=\"verified-custd-mdl-ms-search-content-text\">\r\n {src.name} {`(${src.label})`}\r\n </p>\r\n )}\r\n {!src.label && (\r\n <p className=\"verified-custd-mdl-ms-search-content-text\">\r\n {src.name}\r\n </p>\r\n )}\r\n </div>\r\n\r\n {props.selected && props.selected.length > 0 && (\r\n <img\r\n src={imageAssets.circleClicked}\r\n alt=\"Clicked Icon\"\r\n />\r\n )}\r\n </div>\r\n )}\r\n </React.Fragment>\r\n )}\r\n </React.Fragment>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default SearchBox;\r\n","import React from \"react\";\r\nimport { imageAssets } from \"../utils/constants\";\r\n\r\nexport const TermsAndConditionsOverlay = () => {\r\n return (\r\n <p className=\"verified-custd-mdl-terms-and-condition\">\r\n By proceeding, you agree with Verified Wallet{\" \"}\r\n <span style={{ color: \"#603FF4\", cursor: \"pointer\" }}>T&C</span> and{\" \"}\r\n <span style={{ color: \"#603FF4\", cursor: \"pointer\" }}>\r\n Privacy Policy.\r\n </span>\r\n </p>\r\n );\r\n};\r\n\r\nexport const LogoutOverlay = (props: {\r\n setIsLoading: (isLoading: boolean) => void;\r\n setisOnboard?: (isOnboard: boolean) => void;\r\n}) => {\r\n return (\r\n <p\r\n style={{ fontSize: \"0.7rem\" }}\r\n className=\"verified-custd-mdl-terms-and-condition\"\r\n >\r\n Want to access a different account? Click{\" \"}\r\n <span\r\n style={{ color: \"#603FF4\", cursor: \"pointer\" }}\r\n onClick={async () => {\r\n props.setIsLoading(true);\r\n if (chrome?.storage?.local) {\r\n await chrome.storage.local.remove(\"myVault\");\r\n } else if (!chrome?.storage?.local && localStorage) {\r\n localStorage.removeItem(\"myVault\");\r\n }\r\n if (props.setisOnboard) {\r\n props.setisOnboard(false);\r\n }\r\n props.setIsLoading(false);\r\n }}\r\n >\r\n Logout\r\n </span>{\" \"}\r\n to logout and login/create another account\r\n </p>\r\n );\r\n};\r\n\r\nexport const PrivacyOverlay = () => {\r\n return (\r\n <div className=\"verified-custd-mdl-privacy\">\r\n <img\r\n alt=\"Privacy Icon\"\r\n src={imageAssets.privacyTip}\r\n className=\"verified-custd-mdl-privacy-icon\"\r\n />\r\n <p className=\"verified-custd-mdl-privacy-text\">\r\n Trusted by 10M+ Investors globally\r\n </p>\r\n </div>\r\n );\r\n};\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { useVaultStore } from \"../services/store\";\r\nimport {\r\n checkOTPVerification,\r\n errorToast,\r\n sendOTPVerification,\r\n} from \"../utils/helpers\";\r\nimport PageSlider from \"../components/slider\";\r\nimport { PrivacyOverlay } from \"../components/overlays\";\r\nimport { imageAssets } from \"../utils/constants\";\r\n\r\nconst OTPPage = (props: {\r\n setStep: (step: string) => void;\r\n setIsLoading: (isLoading: boolean) => void;\r\n setUserNumberFmt: (number: string) => void;\r\n setUserEmail: (email: string) => void;\r\n selectedCountry: { name: string; area: string; flag: string };\r\n userNumberFmt: string;\r\n userEmail: string;\r\n}) => {\r\n const [searchActive, setSearchActive] = useState(false);\r\n const [countdown, setCountdown] = useState(60);\r\n const [otpIncorrect, setOtpIncorrect] = useState(false);\r\n\r\n const { pk, vaultContract } = useVaultStore();\r\n\r\n useEffect(() => {\r\n if (countdown === 0) return;\r\n\r\n const reduceCountdown = setInterval(() => {\r\n setCountdown((prevCountdown) => prevCountdown - 1);\r\n }, 1000);\r\n\r\n return () => clearInterval(reduceCountdown);\r\n }, [countdown]);\r\n\r\n //todo: add key actions to input focus change\r\n const handlleInputFocus = (currentInput: any) => {\r\n if (currentInput.value.length > 0) {\r\n const nextInput = currentInput.nextElementSibling;\r\n if (nextInput) {\r\n nextInput.focus();\r\n }\r\n } else if (currentInput.value.length === 0) {\r\n currentInput.focus();\r\n }\r\n };\r\n\r\n const handleOtpPaste = (e: any) => {\r\n const pastedText = e.clipboardData.getData(\"text\");\r\n const numbersFromText = pastedText?.replace(/\\D/g, \"\");\r\n const allOptInputs: any = document.getElementsByClassName(\"otp-input\");\r\n if (allOptInputs?.length === 4 && numbersFromText?.length > 0) {\r\n for (let i = 0; i < allOptInputs.length; i++) {\r\n if (numbersFromText[i]) {\r\n allOptInputs[i].value = numbersFromText[i];\r\n allOptInputs[i].focus();\r\n }\r\n }\r\n }\r\n };\r\n\r\n const handleOtpBackspace = (e: any) => {\r\n const previousInpput = e.target.previousElementSibling;\r\n if (previousInpput) {\r\n previousInpput.focus();\r\n }\r\n };\r\n\r\n const handleButtonDisplay = () => {\r\n const button: any = document.getElementById(\r\n \"verified-custd-mdl-otp-button\"\r\n );\r\n const otp1: any = document.getElementById(\"verified-custd-mdl-otp-input-1\");\r\n const otp2: any = document.getElementById(\"verified-custd-mdl-otp-input-2\");\r\n const otp3: any = document.getElementById(\"verified-custd-mdl-otp-input-3\");\r\n const otp4: any = document.getElementById(\"verified-custd-mdl-otp-input-4\");\r\n if (\r\n button &&\r\n otp1?.value.length > 0 &&\r\n otp2?.value.length > 0 &&\r\n otp3?.value.length > 0 &&\r\n otp4?.value.length > 0 &&\r\n !otpIncorrect\r\n ) {\r\n button.className = \"verified-custd-mdl-startup-button-active\";\r\n } else {\r\n button.className = \"verified-custd-mdl-startup-button\";\r\n }\r\n };\r\n\r\n const handleVerifyOtp = async () => {\r\n const vaultId =\r\n props.userEmail?.length > 0\r\n ? props.userEmail\r\n : `+${props.selectedCountry.area}${props.userNumberFmt?.replace(\r\n \" \",\r\n \"\"\r\n )}`;\r\n const otp1: any = document.getElementById(\"verified-custd-mdl-otp-input-1\");\r\n const otp2: any = document.getElementById(\"verified-custd-mdl-otp-input-2\");\r\n const otp3: any = document.getElementById(\"verified-custd-mdl-otp-input-3\");\r\n const otp4: any = document.getElementById(\"verified-custd-mdl-otp-input-4\");\r\n if (\r\n otp1?.value?.length > 0 &&\r\n otp2?.value?.length > 0 &&\r\n otp3?.value?.length > 0 &&\r\n otp4?.value?.length > 0 &&\r\n vaultId &&\r\n pk &&\r\n vaultContract\r\n ) {\r\n props.setIsLoading(true);\r\n const fullOtp = otp1?.value + otp2?.value + otp3?.value + otp4?.value;\r\n await checkOTPVerification(vaultId, String(fullOtp)).then((res) => {\r\n props.setIsLoading(false);\r\n if (res) {\r\n props.setStep(\"4\");\r\n } else {\r\n setOtpIncorrect(true);\r\n }\r\n });\r\n }\r\n };\r\n\r\n const handleResendOtp = async () => {\r\n const vaultId =\r\n props.userEmail?.length > 0\r\n ? props.userEmail\r\n : `+${props.selectedCountry.area}${props.userNumberFmt?.replace(\r\n \" \",\r\n \"\"\r\n )}`;\r\n\r\n const channel = props.userEmail?.length > 0 ? \"email\" : \"sms\";\r\n\r\n if (vaultId && channel) {\r\n props.setIsLoading(true);\r\n await sendOTPVerification(vaultId, channel).then((res) => {\r\n props.setIsLoading(false);\r\n if (res) {\r\n setCountdown(60);\r\n setOtpIncorrect(false);\r\n const otp1: any = document.getElementById(\r\n \"verified-custd-mdl-otp-input-1\"\r\n );\r\n const otp2: any = document.getElementById(\r\n \"verified-custd-mdl-otp-input-2\"\r\n );\r\n const otp3: any = document.getElementById(\r\n \"verified-custd-mdl-otp-input-3\"\r\n );\r\n const otp4: any = document.getElementById(\r\n \"verified-custd-mdl-otp-input-4\"\r\n );\r\n (otp1!.value = \"\"),\r\n (otp2!.value = \"\"),\r\n (otp3!.value = \"\"),\r\n (otp4!.value = \"\");\r\n } else {\r\n errorToast(\"Oops something went wrong\", \"Unexpected error\");\r\n }\r\n });\r\n }\r\n };\r\n\r\n return (\r\n <div className=\"verified-custd-mdl-startup-language\">\r\n <div className=\"verified-custd-mdl-startup-contact\">\r\n <PageSlider sliderCount={[1, 2, 3]} currentSlider=\"0\" />\r\n <div className=\"verified-custd-mdl-startup-contact-content\">\r\n <p className=\"verified-custd-mdl-startup-contact-text\">Enter OTP</p>\r\n <div className=\"verified-custd-mdl-startup-otp-text\">\r\n <p className=\"verified-custd-mdl-startup-otp-header-text\">\r\n Enter <span style={{ color: \"#0C0C0E\" }}>4-Digit OTP</span> (One\r\n Time Password) sent to your{\" \"}\r\n {props.userNumberFmt?.length > 0\r\n ? \"phone number\"\r\n : \"email address\"}\r\n </p>\r\n <div className=\"verified-custd-mdl-startup-otp-footer\">\r\n <p className=\"verified-custd-mdl-startup-otp-footer-text\">\r\n {props.userNumberFmt?.length > 0 && (\r\n <React.Fragment>\r\n <span>(+{props.selectedCountry?.area})</span>{\" \"}\r\n <span> {props.userNumberFmt?.split(\" \")[0]}</span>{\" \"}\r\n <span> {props.userNumberFmt?.split(\" \")[1]}</span>\r\n </React.Fragment>\r\n )}\r\n {props.userEmail?.length > 0 && <span>{props.userEmail}</span>}\r\n </p>\r\n <img\r\n onClick={() => {\r\n props.setUserNumberFmt(\"\");\r\n props.setUserEmail(\"\");\r\n props.setStep(\"2\");\r\n }}\r\n src={imageAssets.editBlue}\r\n alt=\"edit-icon\"\r\n className=\"verified-custd-mdl-st-otp-icon\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"verified-custd-mdl-otp-input-container\">\r\n <div className=\"verified-custd-mdl-otp-input-group\">\r\n <input\r\n onInputCapture={(e: any) => {\r\n e.target.value = e.target.value?.replace(/\\D/g, \"\");\r\n setOtpIncorrect(false);\r\n }}\r\n onInput={(e) => {\r\n handlleInputFocus(e.target);\r\n handleButtonDisplay();\r\n }}\r\n onKeyDown={(e: any) => {\r\n if (e.key === \"Backspace\" && e.target.value === \"\") {\r\n handleOtpBackspace(e);\r\n }\r\n }}\r\n onPaste={(e) => {\r\n handleOtpPaste(e);\r\n }}\r\n className={\r\n otpIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n type=\"text\"\r\n maxLength={1}\r\n id=\"verified-custd-mdl-otp-input-1\"\r\n />\r\n <input\r\n onInputCapture={(e: any) => {\r\n e.target.value = e.target.value?.replace(/\\D/g, \"\");\r\n setOtpIncorrect(false);\r\n }}\r\n onInput={(e) => {\r\n handlleInputFocus(e.target);\r\n handleButtonDisplay();\r\n }}\r\n onKeyDown={(e: any) => {\r\n if (e.key === \"Backspace\" && e.target.value === \"\") {\r\n handleOtpBackspace(e);\r\n }\r\n }}\r\n className={\r\n otpIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n type=\"text\"\r\n maxLength={1}\r\n id=\"verified-custd-mdl-otp-input-2\"\r\n />\r\n <input\r\n onInputCapture={(e: any) => {\r\n e.target.value = e.target.value?.replace(/\\D/g, \"\");\r\n setOtpIncorrect(false);\r\n }}\r\n onInput={(e) => {\r\n handlleInputFocus(e.target);\r\n handleButtonDisplay();\r\n }}\r\n onKeyDown={(e: any) => {\r\n if (e.key === \"Backspace\" && e.target.value === \"\") {\r\n handleOtpBackspace(e);\r\n }\r\n }}\r\n className={\r\n otpIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n type=\"text\"\r\n maxLength={1}\r\n id=\"verified-custd-mdl-otp-input-3\"\r\n />\r\n <input\r\n onInputCapture={(e: any) => {\r\n e.target.value = e.target.value?.replace(/\\D/g, \"\");\r\n setOtpIncorrect(false);\r\n }}\r\n onInput={(e) => {\r\n handlleInputFocus(e.target);\r\n handleButtonDisplay();\r\n }}\r\n onKeyDown={(e: any) => {\r\n if (e.key === \"Backspace\" && e.target.value === \"\") {\r\n handleOtpBackspace(e);\r\n }\r\n }}\r\n className={\r\n otpIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n type=\"text\"\r\n maxLength={1}\r\n id=\"verified-custd-mdl-otp-input-4\"\r\n />\r\n </div>\r\n <div className=\"verified-custd-mdl-otp-timer\">\r\n {!otpIncorrect && countdown > 5 && (\r\n <p className=\"verified-custd-mdl-otp-timer-text\">\r\n <span style={{ color: \"#717286\", fontWeight: 400 }}>00:</span>\r\n {countdown}\r\n </p>\r\n )}\r\n {!otpIncorrect && countdown <= 5 && countdown > 0 && (\r\n <p className=\"verified-custd-mdl-otp-timer-text-red\">\r\n <span style={{ fontWeight: 400 }}>00:</span>\r\n {countdown}\r\n </p>\r\n )}\r\n {!otpIncorrect && countdown === 0 && (\r\n <p className=\"verified-custd-mdl-otp-resend-text\">\r\n Didn't receive an OTP ?\r\n </p>\r\n )}\r\n {otpIncorrect && (\r\n <p className=\"verified-custd-mdl-otp-incorrect-text\">\r\n Please enter the correct OTP\r\n </p>\r\n )}\r\n {!otpIncorrect && countdown > 0 && (\r\n <p className=\"verified-custd-mdl-otp-resend-text\">Resend OTP</p>\r\n )}\r\n {!otpIncorrect && countdown === 0 && (\r\n <p\r\n onClick={async () => {\r\n //clear input content\r\n const inputs: any =\r\n document.getElementsByClassName(\"otp-input\");\r\n if (inputs) {\r\n for (let i = 0; i < inputs.length; i++) {\r\n inputs[i].value = \"\";\r\n }\r\n }\r\n\r\n await handleResendOtp();\r\n }}\r\n className=\"verified-custd-mdl-otp-resend-text-active\"\r\n >\r\n Resend OTP\r\n </p>\r\n )}\r\n {otpIncorrect && (\r\n <p\r\n onClick={async () => {\r\n //clear input content\r\n const inputs: any =\r\n document.getElementsByClassName(\"otp-input\");\r\n if (inputs) {\r\n for (let i = 0; i < inputs.length; i++) {\r\n inputs[i].value = \"\";\r\n }\r\n }\r\n\r\n await handleResendOtp();\r\n }}\r\n className=\"verified-custd-mdl-otp-resend-text-active\"\r\n >\r\n Resend OTP\r\n </p>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n {!searchActive && <div style={{ height: \"100px\" }}></div>}\r\n\r\n <div className=\"verified-custd-mdl-startup-contact-footer\">\r\n <div className=\"verified-custd-mdl-st-contact-footer-first-section\">\r\n <button\r\n id=\"verified-custd-mdl-otp-button\"\r\n onClick={async (e: any) => {\r\n if (\r\n e.target.className.includes(\r\n \"verified-custd-mdl-startup-button\"\r\n ) &&\r\n e.target.className !== \"verified-custd-mdl-startup-button\"\r\n ) {\r\n e.target.className = \"verified-custd-mdl-startup-button-click\";\r\n await handleVerifyOtp();\r\n } else {\r\n const buttonElement = document.getElementsByClassName(\r\n \"verified-custd-mdl-startup-button-active\"\r\n );\r\n if (buttonElement.length > 0) {\r\n buttonElement[0].className =\r\n \"verified-custd-mdl-startup-button-click\";\r\n await handleVerifyOtp();\r\n }\r\n }\r\n }}\r\n className=\"verified-custd-mdl-startup-button\"\r\n >\r\n Proceed\r\n </button>\r\n <div className=\"verified-custd-mdl-st-contact-footer-second-section\">\r\n <PrivacyOverlay />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default OTPPage;\r\n","import React, { useState } from \"react\";\r\nimport { useVaultStore } from \"../services/store\";\r\nimport { hashTheString } from \"../utils/helpers\";\r\nimport {\r\n acceptOrRejectInvitation,\r\n checkOrCreateVault,\r\n} from \"../services/contracts\";\r\nimport PageSlider from \"../components/slider\";\r\nimport Success from \"../components/success\";\r\nimport { imageAssets } from \"../utils/constants\";\r\nimport { VerifiedCustodyHelpers } from \"../utils/types\";\r\n\r\nconst CreatePinPage = (props: {\r\n setStep: (step: string) => void;\r\n setIsLoading: (isLoading: boolean) => void;\r\n setShowSuccessBtn: (showSuccessBtn: boolean) => void;\r\n setSuccessBtnText: (successBtnText: string) => void;\r\n setSuccessBtnNeutText: (successBtnNeutText: string) => void;\r\n setSuccessBtnFunc: (successBtnFunc: any) => void;\r\n setSuccessBtnNeutFunc: (successBtnNeutFunc: any) => void;\r\n setActionHeaderText: (actionHeaderText: string) => void;\r\n setActionFooterText: (actionFooterText: string) => void;\r\n userNumberFmt: string;\r\n userEmail: string;\r\n selectedCountry: { name: string; area: string; flag: string };\r\n action?: string;\r\n vaultData?: any;\r\n txData?: any;\r\n helperFunctions?: VerifiedCustodyHelpers;\r\n}) => {\r\n const [searchActive, setSearchActive] = useState(false);\r\n const [pinIncorrect, setPinIncorrect] = useState(false);\r\n const [pinIncorrectText, setPinIncorrectText] = useState(\"\");\r\n const [pinHide, setPinHide] = useState(true); //hide pin by default\r\n const [showInvitation, setShowInvitation] = useState(false);\r\n const [showInvitationSuccess, setShowInvitationSuccess] = useState(false);\r\n const [showCustomSuccess, setShowCustomSuccess] = useState(false);\r\n const [vaultPin, setVaultPin] = useState(\"\");\r\n const [showRejectInvitation, setShowRejectInvitation] = useState(false);\r\n\r\n const { address, pk, vaultContract, setVaultData, vaultData } =\r\n useVaultStore();\r\n\r\n //todo: add key actions to input focus change\r\n const handlleInputFocus = (currentInput: any) => {\r\n if (currentInput.value.length > 0) {\r\n const nextInput = currentInput.nextElementSibling;\r\n if (nextInput) {\r\n nextInput.focus();\r\n }\r\n } else if (currentInput.value.length === 0) {\r\n currentInput.focus();\r\n }\r\n };\r\n\r\n const handleOtpBackspace = (e: any) => {\r\n const previousInpput = e.target.previousElementSibling;\r\n if (previousInpput) {\r\n previousInpput.focus();\r\n }\r\n };\r\n\r\n const handleButtonDisplay = () => {\r\n const button: any = document.getElementById(\r\n \"verified-custd-mdl-otp-button\"\r\n );\r\n const otp1: any = document.getElementById(\"verified-custd-mdl-otp-input-1\");\r\n const otp2: any = document.getElementById(\"verified-custd-mdl-otp-input-2\");\r\n const otp3: any = document.getElementById(\"verified-custd-mdl-otp-input-3\");\r\n const otp4: any = document.getElementById(\"verified-custd-mdl-otp-input-4\");\r\n const otp5: any = document.getElementById(\"verified-custd-mdl-otp-input-5\");\r\n const otp6: any = document.getElementById(\"verified-custd-mdl-otp-input-6\");\r\n const otp7: any = document.getElementById(\"verified-custd-mdl-otp-input-7\");\r\n const otp8: any = document.getElementById(\"verified-custd-mdl-otp-input-8\");\r\n if (\r\n button &&\r\n otp1?.value.length > 0 &&\r\n otp2?.value.length > 0 &&\r\n otp3?.value.length > 0 &&\r\n otp4?.value.length > 0 &&\r\n otp5?.value.length > 0 &&\r\n otp6?.value.length > 0 &&\r\n otp7?.value.length > 0 &&\r\n otp8?.value.length > 0\r\n ) {\r\n if (\r\n otp1?.value + otp2?.value + otp3?.value + otp4?.value ===\r\n otp5?.value + otp6?.value + otp7?.value + otp8?.value\r\n ) {\r\n button.className = \"verified-custd-mdl-startup-button-active\";\r\n } else {\r\n button.className = \"verified-custd-mdl-startup-button\";\r\n setPinIncorrect(true);\r\n }\r\n } else {\r\n button.className = \"verified-custd-mdl-startup-button\";\r\n }\r\n };\r\n\r\n const handleVaultManagement = async () => {\r\n if (!props.helperFunctions) {\r\n setPinIncorrectText(\r\n \"No Helper Functions. Please include all helper functions in the CreatePinPage props.\"\r\n );\r\n setPinIncorrect(true);\r\n } else {\r\n setPinIncorrectText(\"\");\r\n setPinIncorrect(false);\r\n const otp1: any = document.getElementById(\r\n \"verified-custd-mdl-otp-input-1\"\r\n );\r\n const otp2: any = document.getElementById(\r\n \"verified-custd-mdl-otp-input-2\"\r\n );\r\n const otp3: any = document.getElementById(\r\n \"verified-custd-mdl-otp-input-3\"\r\n );\r\n const otp4: any = document.getElementById(\r\n \"verified-custd-mdl-otp-input-4\"\r\n );\r\n const otp5: any = document.getElementById(\r\n \"verified-custd-mdl-otp-input-5\"\r\n );\r\n const otp6: any = document.getElementById(\r\n \"verified-custd-mdl-otp-input-6\"\r\n );\r\n const otp7: any = document.getElementById(\r\n \"verified-custd-mdl-otp-input-7\"\r\n );\r\n const otp8: any = document.getElementById(\r\n \"verified-custd-mdl-otp-input-8\"\r\n );\r\n const vaultId =\r\n props.userEmail?.length > 0\r\n ? props.userEmail\r\n : `+${props.selectedCountry.area}${props.userNumberFmt?.replace(\r\n \" \",\r\n \"\"\r\n )}`;\r\n const channel = props.userEmail?.length > 0 ? \"email\" : \"sms\";\r\n if (\r\n otp1?.value?.length > 0 &&\r\n otp2?.value?.length > 0 &&\r\n otp3?.value?.length > 0 &&\r\n otp4?.value?.length > 0 &&\r\n otp5?.value?.length > 0 &&\r\n otp6?.value?.length > 0 &&\r\n otp7?.value?.length > 0 &&\r\n otp8?.value?.length > 0 &&\r\n address &&\r\n vaultId &&\r\n channel &&\r\n pk &&\r\n vaultContract\r\n ) {\r\n props.setIsLoading(true);\r\n const vaultPin = otp1?.value + otp2?.value + otp3?.value + otp4?.value;\r\n const hashedVaultId = hashTheString(vaultId);\r\n const hashedVaultPin = hashTheString(vaultPin);\r\n\r\n await checkOrCreateVault(\r\n vaultId,\r\n hashedVaultId,\r\n vaultPin,\r\n hashedVaultPin,\r\n channel,\r\n pk,\r\n address,\r\n vaultContract,\r\n props.action,\r\n props.vaultData,\r\n props.txData\r\n ).then((res) => {\r\n props.setIsLoading(false);\r\n\r\n if (res) {\r\n setVaultData(res?.shouldStop ? {} : res);\r\n setPinIncorrectText(\"\");\r\n setPinIncorrect(false);\r\n if (props.action === \"invitation\") {\r\n setVaultPin(vaultPin);\r\n setShowInvitation(true);\r\n } else if (!res?.shouldStop) {\r\n props.setStep(\"5\");\r\n } else if (res?.shouldStop) {\r\n setShowCustomSuccess(true);\r\n }\r\n } else if (res === null) {\r\n setPinIncorrectText(\r\n \"You are an existing user. Please input the right pin to recover your account.\"\r\n );\r\n setPinIncorrect(true);\r\n } else {\r\n setPinIncorrectText(\r\n \"Unexpected error while creating account. Please try again later.\"\r\n );\r\n setPinIncorrect(true);\r\n }\r\n });\r\n }\r\n }\r\n };\r\n\r\n const handleAcceptAndRejectInvitation = async (accepted: boolean) => {\r\n const vaultId =\r\n props.userEmail?.length > 0\r\n ? props.userEmail\r\n : `+${props.selectedCountry.area}${props.userNumberFmt?.replace(\r\n \" \",\r\n \"\"\r\n )}`;\r\n const channel = props.userEmail?.length > 0 ? \"email\" : \"sms\";\r\n if (\r\n vaultPin?.length === 4 &&\r\n props?.vaultData?.hashedVaultId &&\r\n props.vaultData?.hashedVaultPin &&\r\n vaultId\r\n ) {\r\n props.setIsLoading(true);\r\n const hashedVaultId = hashTheString(vaultId);\r\n const hashedVaultPin = hashTheString(vaultPin);\r\n await acceptOrRejectInvitation(\r\n props.helperFunctions.sendCreatorAcceptance,\r\n props.helperFunctions.sendCreatorRejection,\r\n channel,\r\n hashedVaultId,\r\n hashedVaultPin,\r\n props?.vaultData?.hashedVaultId,\r\n props.vaultData?.hashedVaultPin,\r\n props.vaultData?.vaultId,\r\n vaultId,\r\n accepted,\r\n vaultContract\r\n ).then((res) => {\r\n props.setIsLoading(false);\r\n if (res && !vaultData?.isExisting) {\r\n props.setShowSuccessBtn(true);\r\n props.setSuccessBtnText(\"Continue Setting Up Your Account\");\r\n props.setSuccessBtnNeutText(\"Do It Later\");\r\n props.setActionHeaderText(\"Successful\");\r\n props.setActionFooterText(\r\n accepted\r\n ? `You have been added as a Co-Signer for ${props.vaultData?.vaultId}`\r\n : `You rejected Co-signer reject from ${props.vaultData?.vaultId}`\r\n );\r\n props.setStep(\"5\");\r\n } else if (res && vaultData?.isExisting) {\r\n setShowInvitationSuccess(true);\r\n }\r\n });\r\n }\r\n };\r\n\r\n return (\r\n <React.Fragment>\r\n {!showCustomSuccess && !showInvitation && (\r\n <div className=\"verified-custd-mdl-startup-language\">\r\n <div className=\"verified-custd-mdl-startup-contact\">\r\n <PageSlider sliderCount={[1, 2, 3]} currentSlider=\"1\" />\r\n <div className=\"verified-custd-mdl-startup-contact-content\">\r\n <p className=\"verified-custd-mdl-startup-contact-text\">\r\n Create PIN\r\n </p>\r\n <div className=\"verified-custd-mdl-startup-otp-text\">\r\n <p className=\"verified-custd-mdl-startup-otp-header-text\">\r\n Protect your blockchain assets. This PIN will be required for\r\n all transactions and logins.\r\n </p>\r\n </div>\r\n </div>\r\n <div className=\"verified-custd-mdl-otp-input-container\">\r\n <p className=\"verified-custd-mdl-pin-input-container-text\">\r\n New PIN\r\n </p>\r\n <div className=\"verified-custd-mdl-otp-input-group\">\r\n <input\r\n onInputCapture={(e: any) => {\r\n e.target.value = e.target.value?.replace(/\\D/g, \"\");\r\n setPinIncorrect(false);\r\n }}\r\n onInput={(e) => {\r\n handlleInputFocus(e.target);\r\n handleButtonDisplay();\r\n }}\r\n onKeyDown={(e: any) => {\r\n if (e.key === \"Backspace\" && e.target.value === \"\") {\r\n handleOtpBackspace(e);\r\n }\r\n }}\r\n className={\r\n pinIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n type={pinHide ? \"password\" : \"text\"}\r\n maxLength={1}\r\n id=\"verified-custd-mdl-otp-input-1\"\r\n />\r\n <input\r\n onInputCapture={(e: any) => {\r\n e.target.value = e.target.value?.replace(/\\D/g, \"\");\r\n setPinIncorrect(false);\r\n }}\r\n onInput={(e) => {\r\n handlleInputFocus(e.target);\r\n handleButtonDisplay();\r\n }}\r\n onKeyDown={(e: any) => {\r\n if (e.key === \"Backspace\" && e.target.value === \"\") {\r\n handleOtpBackspace(e);\r\n }\r\n }}\r\n className={\r\n pinIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n type={pinHide ? \"password\" : \"text\"}\r\n maxLength={1}\r\n id=\"verified-custd-mdl-otp-input-2\"\r\n />\r\n <input\r\n onInputCapture={(e: any) => {\r\n e.target.value = e.target.value?.replace(/\\D/g, \"\");\r\n setPinIncorrect(false);\r\n }}\r\n onInput={(e) => {\r\n handlleInputFocus(e.target);\r\n handleButtonDisplay();\r\n }}\r\n onKeyDown={(e: any) => {\r\n if (e.key === \"Backspace\" && e.target.value === \"\") {\r\n handleOtpBackspace(e);\r\n }\r\n }}\r\n className={\r\n pinIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n type={pinHide ? \"password\" : \"text\"}\r\n maxLength={1}\r\n id=\"verified-custd-mdl-otp-input-3\"\r\n />\r\n <input\r\n onInputCapture={(e: any) => {\r\n e.target.value = e.target.value?.replace(/\\D/g, \"\");\r\n setPinIncorrect(false);\r\n }}\r\n onInput={(e) => {\r\n handlleInputFocus(e.target);\r\n handleButtonDisplay();\r\n }}\r\n onKeyDown={(e: any) => {\r\n if (e.key === \"Backspace\" && e.target.value === \"\") {\r\n handleOtpBackspace(e);\r\n }\r\n }}\r\n className={\r\n pinIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n type={pinHide ? \"password\" : \"text\"}\r\n maxLength={1}\r\n id=\"verified-custd-mdl-otp-input-4\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <div className=\"verified-custd-mdl-otp-input-container\">\r\n <p className=\"verified-custd-mdl-pin-input-container-text\">\r\n Confirm PIN\r\n </p>\r\n <div className=\"verified-custd-mdl-otp-input-group\">\r\n <input\r\n onInputCapture={(e: any) => {\r\n e.target.value = e.target.value?.replace(/\\D/g, \"\");\r\n setPinIncorrect(false);\r\n }}\r\n onInput={(e) => {\r\n handlleInputFocus(e.target);\r\n handleButtonDisplay();\r\n }}\r\n onKeyDown={(e: any) => {\r\n if (e.key === \"Backspace\" && e.target.value === \"\") {\r\n handleOtpBackspace(e);\r\n }\r\n }}\r\n className={\r\n pinIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n type={pinHide ? \"password\" : \"text\"}\r\n maxLength={1}\r\n id=\"verified-custd-mdl-otp-input-5\"\r\n />\r\n <input\r\n onInputCapture={(e: any) => {\r\n e.target.value = e.target.value?.replace(/\\D/g, \"\");\r\n setPinIncorrect(false);\r\n }}\r\n onInput={(e) => {\r\n handlleInputFocus(e.target);\r\n handleButtonDisplay();\r\n }}\r\n onKeyDown={(e: any) => {\r\n if (e.key === \"Backspace\" && e.target.value === \"\") {\r\n handleOtpBackspace(e);\r\n }\r\n }}\r\n className={\r\n pinIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n type={pinHide ? \"password\" : \"text\"}\r\n maxLength={1}\r\n id=\"verified-custd-mdl-otp-input-6\"\r\n />\r\n <input\r\n onInputCapture={(e: any) => {\r\n e.target.value = e.target.value?.replace(/\\D/g, \"\");\r\n setPinIncorrect(false);\r\n }}\r\n onInput={(e) => {\r\n handlleInputFocus(e.target);\r\n handleButtonDisplay();\r\n }}\r\n onKeyDown={(e: any) => {\r\n if (e.key === \"Backspace\" && e.target.value === \"\") {\r\n handleOtpBackspace(e);\r\n }\r\n }}\r\n className={\r\n pinIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n type={pinHide ? \"password\" : \"text\"}\r\n maxLength={1}\r\n id=\"verified-custd-mdl-otp-input-7\"\r\n />\r\n <input\r\n onInputCapture={(e: any) => {\r\n e.target.value = e.target.value?.replace(/\\D/g, \"\");\r\n setPinIncorrect(false);\r\n }}\r\n onInput={(e) => {\r\n handlleInputFocus(e.target);\r\n handleButtonDisplay();\r\n }}\r\n onKeyDown={(e: any) => {\r\n if (e.key === \"Backspace\" && e.target.value === \"\") {\r\n handleOtpBackspace(e);\r\n }\r\n }}\r\n className={\r\n pinIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n type={pinHide ? \"password\" : \"text\"}\r\n maxLength={1}\r\n id=\"verified-custd-mdl-otp-input-8\"\r\n />\r\n </div>\r\n <div className=\"verified-custd-mdl-otp-timer\">\r\n {!pinIncorrect && <p></p>}\r\n {pinIncorrect && pinIncorrectText === \"\" && (\r\n <p className=\"verified-custd-mdl-otp-incorrect-text\">\r\n Please enter the correct pin\r\n </p>\r\n )}\r\n {pinIncorrect && pinIncorrectText?.length > 0 && (\r\n <p className=\"verified-custd-mdl-otp-incorrect-text\">\r\n {pinIncorrectText}\r\n </p>\r\n )}\r\n {!pinHide && (\r\n <img\r\n style={{ cursor: \"pointer\", width: \"24px\", height: \"24px\" }}\r\n onClick={() => setPinHide(true)}\r\n src={imageAssets.pinShow}\r\n alt=\"show pin icon\"\r\n />\r\n )}\r\n {pinHide && (\r\n <img\r\n style={{ cursor: \"pointer\", width: \"24px\", height: \"24px\" }}\r\n onClick={() => setPinHide(false)}\r\n src={imageAssets.pinHide}\r\n alt=\"hide pin icon\"\r\n />\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n {!searchActive && <div style={{ height: \"30px\" }}></div>}\r\n\r\n <div className=\"verified-custd-mdl-startup-contact-footer\">\r\n <div className=\"verified-custd-mdl-st-contact-footer-first-section\">\r\n <button\r\n id=\"verified-custd-mdl-otp-button\"\r\n onClick={async (e: any) => {\r\n if (\r\n e.target.className.includes(\r\n \"verified-custd-mdl-startup-button\"\r\n ) &&\r\n e.target.className !== \"verified-custd-mdl-startup-button\"\r\n ) {\r\n e.target.className =\r\n \"verified-custd-mdl-startup-button-click\";\r\n await handleVaultManagement();\r\n } else {\r\n const buttonElement = document.getElementsByClassName(\r\n \"verified-custd-mdl-startup-button-active\"\r\n );\r\n if (buttonElement.length > 0) {\r\n buttonElement[0].className =\r\n \"verified-custd-mdl-startup-button-click\";\r\n await handleVaultManagement();\r\n }\r\n }\r\n }}\r\n className=\"verified-custd-mdl-startup-button\"\r\n >\r\n Confirm\r\n </button>\r\n {/* <div className=\"verified-custd-mdl-st-contact-footer-second-section\">\r\n <PrivacyOverlay />\r\n </div> */}\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n\r\n {!showCustomSuccess && showInvitation && (\r\n <React.Fragment>\r\n {!showInvitationSuccess && (\r\n <div\r\n style={{ padding: \"0\", position: \"relative\" }}\r\n className=\"verified-custd-mdl-startup-language\"\r\n >\r\n <div className=\"verified-custd-mdl-startup-contact\">\r\n <PageSlider sliderCount={[1, 2, 3]} currentSlider=\"1\" />\r\n <div className=\"verified-custd-mdl-startup-contact-content\">\r\n <p className=\"verified-custd-mdl-startup-contact-text\">\r\n <b>{props.vaultData?.vaultId}</b> has requested you to be a\r\n Co-Signer\r\n </p>\r\n </div>\r\n </div>\r\n <img\r\n className=\"verified-custd-mdl-add-cosigner-body-icon\"\r\n src={imageAssets.addCoSignerIcon1}\r\n alt=\"\"\r\n />\r\n {!showRejectInvitation && (\r\n <React.Fragment>\r\n <div className=\"verified-custd-mdl-add-cosigner-more-body\">\r\n <div className=\"verified-custd-mdl-add-cosigner-more-header-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-more-title-cont\">\r\n <p className=\"verified-custd-mdl-add-cosigner-more-title\">\r\n What is a Co-Signer?\r\n </p>\r\n </div>\r\n </div>\r\n <p\r\n style={{\r\n fontSize: \"12px\",\r\n color: \"var(--Neutral-600, #5B5D6E)\",\r\n }}\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n >\r\n A Co-Signer is a person who has the right given by you to\r\n generate a new pin on your behalf incase you forget it.{\" \"}\r\n </p>\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-body-text-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-body-text-icon\">\r\n <img src={imageAssets.pkicon} alt=\"icon\" />\r\n </div>\r\n <p className=\"verified-custd-mdl-add-cosigner-body-text-label\">\r\n As a Co Signer you can help{\" \"}\r\n <span className=\"verified-custd-mdl-add-cosigner-body-text-label-bold\">\r\n reset PIN\r\n </span>\r\n </p>\r\n </div>\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-body-text-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-body-text-icon\">\r\n <img src={imageAssets.encryptedIcon} alt=\"icon\" />\r\n </div>\r\n <p className=\"verified-custd-mdl-add-cosigner-body-text-label\">\r\n Don’t worry, they{\" \"}\r\n <span className=\"verified-custd-mdl-add-cosigner-body-text-label-bold\">\r\n will not get access\r\n </span>{\" \"}\r\n to your account in any way.\r\n </p>\r\n </div>\r\n </div>\r\n <div className=\"verified-custd-mdl-add-cosigner-buttons-cont\">\r\n <button\r\n onClick={() => {\r\n setShowRejectInvitation(true);\r\n }}\r\n className=\"verified-custd-mdl-add-cosigner-button-neut\"\r\n >\r\n Reject\r\n </button>\r\n\r\n <button\r\n onClick={async () => {\r\n await handleAcceptAndRejectInvitation(true);\r\n }}\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n >\r\n Accept\r\n </button>\r\n </div>\r\n </React.Fragment>\r\n )}\r\n\r\n {showRejectInvitation && (\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-content-outter\">\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-content\">\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-header\">\r\n <p className=\"verified-custd-mdl-add-cosigner-confirm-body-title\">\r\n Are you sure you want to reject this request?\r\n </p>\r\n <p\r\n style={{\r\n fontSize: \"12px\",\r\n color: \"var(--Neutral-600, #5B5D6E)\",\r\n }}\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-label\"\r\n >\r\n Once you reject to be a co-signer for{\" \"}\r\n <b>{props.vaultData?.vaultId}</b>, you will not be\r\n able to reset the PIN for them.\r\n </p>\r\n </div>\r\n\r\n <div\r\n style={{ width: \"90%\" }}\r\n className=\"verified-custd-mdl-add-cosigner-buttons-cont\"\r\n >\r\n <button\r\n onClick={async () => {\r\n await handleAcceptAndRejectInvitation(false);\r\n }}\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n >\r\n Yes\r\n </button>\r\n\r\n <button\r\n onClick={() => {\r\n setShowRejectInvitation(false);\r\n }}\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n >\r\n No\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n\r\n {showInvitationSuccess && (\r\n <Success\r\n messageTosend={{ type: \"closePopup\", key: \"\", value: \"\" }}\r\n customTextHeader=\"Successful\"\r\n customTextFooter={\r\n !showRejectInvitation\r\n ? `You have been added as a Co-Signer for ${props.vaultData?.vaultId}`\r\n : `You rejected Co-signer reject from ${props.vaultData?.vaultId}`\r\n }\r\n />\r\n )}\r\n </React.Fragment>\r\n )}\r\n\r\n {showCustomSuccess && (\r\n <Success\r\n messageTosend={{ type: \"closePopup\", key: \"\", value: \"\" }}\r\n customTextHeader=\"Successful\"\r\n customTextFooter=\"You have successfully logged in your account.\"\r\n />\r\n )}\r\n </React.Fragment>\r\n );\r\n};\r\n\r\nexport default CreatePinPage;\r\n","import { AbiCoder, decodeBytes32String, encodeBytes32String } from \"ethers\";\r\nimport { combine, split } from \"shamir-secret-sharing\";\r\nimport {\r\n contractAddress,\r\n Custody,\r\n Provider,\r\n VerifiedWallet,\r\n} from \"@verified-network/verified-sdk\";\r\nimport { createSmartAccountClient } from \"@biconomy/account\";\r\nimport {\r\n decryptString,\r\n encryptString,\r\n errorToast,\r\n hashTheString,\r\n} from \"../utils/helpers\";\r\nimport {\r\n defaultChainId,\r\n defaultVerifiedUrl,\r\n newTransactionEventHash,\r\n numberPositions,\r\n} from \"../utils/constants\";\r\nimport { ChainConfig, PaymasterConfig } from \"../utils/config\";\r\nimport { VerifiedCustodyHelpers } from \"../utils/types\";\r\n\r\nexport const checkOrCreateVault = async (\r\n vaultId: string,\r\n hashedVaultId: string,\r\n vaultPin: string,\r\n hashedVaultPin: string,\r\n otpChannel: string,\r\n userPk: string,\r\n userAddress: string,\r\n vaultContract: any,\r\n action?: string,\r\n reqVaultData?: any,\r\n txData?: any\r\n) => {\r\n try {\r\n const vaultData = {\r\n vaultId,\r\n hashedVaultId,\r\n vaultPin,\r\n hashedVaultPin,\r\n vaultContract,\r\n };\r\n return await vaultContract\r\n .getCreator(hashedVaultId, hashedVaultPin)\r\n .then(async (res: any) => {\r\n if (res?.status === 0) {\r\n try {\r\n if (action === \"invitation\") {\r\n return { isExisting: true, ...vaultData };\r\n } else {\r\n if (chrome?.storage?.local) {\r\n const secretKey = encodeBytes32String(vaultPin);\r\n\r\n const encryptedPk = encryptString(userPk, secretKey);\r\n await chrome.storage.local.set({\r\n myVault: JSON.stringify({\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: encryptedPk,\r\n channel: otpChannel,\r\n }),\r\n });\r\n } else if (!chrome?.storage?.local && localStorage) {\r\n const secretKey = encodeBytes32String(vaultPin);\r\n\r\n const encryptedPk = encryptString(userPk, secretKey);\r\n localStorage.setItem(\r\n \"myVault\",\r\n JSON.stringify({\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: encryptedPk,\r\n channel: otpChannel,\r\n })\r\n );\r\n }\r\n if (chrome?.runtime?.sendMessage) {\r\n chrome.runtime.sendMessage({\r\n type:\r\n action && action === \"connect_wallet\"\r\n ? \"getPk\"\r\n : action && action !== \"connect_wallet\"\r\n ? action\r\n : \"getPk\",\r\n value: {\r\n vaultData:\r\n action && action === \"signRecovery\"\r\n ? reqVaultData\r\n : action && action === \"completeRecovery\"\r\n ? reqVaultData\r\n : { vaultId, hashedVaultId, hashedVaultPin },\r\n txData: txData,\r\n },\r\n });\r\n } else if (!chrome?.runtime?.sendMessage) {\r\n const event = new CustomEvent(\r\n action && action === \"connect_wallet\"\r\n ? \"getPk\"\r\n : action && action !== \"connect_wallet\"\r\n ? action\r\n : \"getPk\",\r\n {\r\n detail: {\r\n value: {\r\n vaultData:\r\n action && action === \"signRecovery\"\r\n ? reqVaultData\r\n : action && action === \"completeRecovery\"\r\n ? reqVaultData\r\n : { vaultId, hashedVaultId, hashedVaultPin },\r\n txData: txData,\r\n },\r\n },\r\n }\r\n );\r\n window.dispatchEvent(event);\r\n }\r\n }\r\n return { shouldStop: true };\r\n } catch (err) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error handling existing vault: \", err);\r\n }\r\n\r\n errorToast(\r\n \"Oops something went wrong\",\r\n \"Error fetching existing vault key(s). Try again later\"\r\n );\r\n return false;\r\n }\r\n } else if (res?.reason?.toLowerCase() === \"invalid pin\") {\r\n return null;\r\n } else if (res?.reason?.toLowerCase() === \"wallet not created\") {\r\n return await vaultContract\r\n .createVault(hashedVaultId, hashedVaultPin)\r\n .then(async (vultRes: any) => {\r\n if (vultRes?.status === 0) {\r\n return await vaultContract\r\n .confirmParticipant(\r\n hashedVaultId,\r\n hashedVaultPin,\r\n hashedVaultId,\r\n hashedVaultPin,\r\n true\r\n )\r\n .then(async (cfrmRes: any) => {\r\n if (cfrmRes?.status === 0) {\r\n try {\r\n const secretKey = encodeBytes32String(vaultPin);\r\n\r\n const encryptedPk = encryptString(userPk, secretKey);\r\n\r\n if (chrome?.storage?.local) {\r\n await chrome.storage.local.set({\r\n myVault: JSON.stringify({\r\n address: userAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: encryptedPk,\r\n channel: otpChannel,\r\n }),\r\n });\r\n } else if (!chrome?.storage?.local && localStorage) {\r\n localStorage.setItem(\r\n \"myVault\",\r\n JSON.stringify({\r\n address: userAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: encryptedPk,\r\n channel: otpChannel,\r\n })\r\n );\r\n }\r\n\r\n return vaultData;\r\n } catch (err) {\r\n errorToast(\r\n \"Oops something went wrong\",\r\n \"Error savingr new vault details. Try again later\"\r\n );\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"save vault failed: \", err);\r\n }\r\n\r\n return false;\r\n }\r\n } else {\r\n errorToast(\r\n \"Oops something went wrong\",\r\n \"Error creating pin for new vault. Try again later\"\r\n );\r\n\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"confirm pin vault failed: \", cfrmRes);\r\n }\r\n return false;\r\n }\r\n });\r\n } else {\r\n errorToast(\r\n \"Oops something went wrong\",\r\n \"Error creating new vault. Try again later\"\r\n );\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"create vault failed: \", vultRes);\r\n }\r\n\r\n return false;\r\n }\r\n });\r\n }\r\n });\r\n } catch (err) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"unexpected error: \", err);\r\n }\r\n errorToast(\r\n \"Oops something went wrong\",\r\n \"Error while creating pin. Try again later\"\r\n );\r\n return false;\r\n }\r\n};\r\n\r\nexport const validateVaultPin = async (\r\n vaultId: string,\r\n hashedVaultId: string,\r\n vaultPin: string,\r\n hashedVaultPin: string,\r\n encryptedPk: any,\r\n userAddress: string,\r\n otpChannel: \"sms\" | \"email\",\r\n newChainId?: number,\r\n chainId?: number\r\n) => {\r\n try {\r\n const secretKey = encodeBytes32String(vaultPin);\r\n\r\n const userPk = decryptString(encryptedPk, secretKey);\r\n\r\n if (userPk) {\r\n const cntAddresses: any = contractAddress;\r\n const sender = new VerifiedWallet(userPk);\r\n const _chainId =\r\n chainId &&\r\n cntAddresses[chainId]?.Custody &&\r\n ChainConfig[chainId]?.rpcUrls?.length > 0\r\n ? chainId\r\n : defaultChainId;\r\n const provider = ChainConfig[_chainId]?.rpcUrls[0];\r\n const signer = sender.setProvider(new Provider(provider));\r\n\r\n const vaultContract = new Custody(signer, cntAddresses[_chainId].Custody);\r\n\r\n if (vaultContract) {\r\n return await vaultContract\r\n .getCreator(hashedVaultId, hashedVaultPin)\r\n .then(async (res: any) => {\r\n if (res?.status === 0) {\r\n return {\r\n address: userAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: userPk,\r\n channel: otpChannel,\r\n chainId: newChainId ? newChainId : _chainId,\r\n };\r\n } else {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"Invalid pin\");\r\n }\r\n return null;\r\n }\r\n });\r\n } else {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error ggetting vault contract\");\r\n }\r\n return null;\r\n }\r\n } else {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error decrypting pk\");\r\n }\r\n return null;\r\n }\r\n } catch (err) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"unexpected error: \", err);\r\n }\r\n return null;\r\n }\r\n};\r\n\r\nexport const acceptOrRejectInvitation = async (\r\n sendCreatorAcceptance: VerifiedCustodyHelpers[\"sendCreatorAcceptance\"],\r\n sendCreatorRejection: VerifiedCustodyHelpers[\"sendCreatorRejection\"],\r\n channel: \"email\" | \"sms\",\r\n hashedCosignerId: string,\r\n hashedCosignerPin: string,\r\n hashedCreatorVaultId: string,\r\n hashedCreatorVaultPin: string,\r\n creatorVaultId: string,\r\n coSignerVaultId: string,\r\n accepted: boolean,\r\n vaultContract?: any,\r\n userPk?: string,\r\n chainId?: number\r\n) => {\r\n let contract: any;\r\n if (vaultContract) {\r\n contract = vaultContract;\r\n } else {\r\n const cntAddresses: any = contractAddress;\r\n const sender = new VerifiedWallet(userPk);\r\n const _chainId =\r\n chainId &&\r\n cntAddresses[chainId]?.Custody &&\r\n ChainConfig[chainId]?.rpcUrls?.length > 0\r\n ? chainId\r\n : defaultChainId;\r\n const provider = ChainConfig[_chainId]?.rpcUrls[0];\r\n const signer = sender.setProvider(new Provider(provider));\r\n\r\n contract = new Custody(signer, cntAddresses[_chainId].Custody);\r\n }\r\n if (contract) {\r\n return await vaultContract\r\n .confirmParticipant(\r\n hashedCreatorVaultId,\r\n hashedCosignerPin,\r\n hashedCosignerId,\r\n hashedCreatorVaultPin,\r\n accepted\r\n )\r\n .then(async (res: any) => {\r\n if (res?.status === 0) {\r\n if (accepted) {\r\n await sendCreatorAcceptance(\r\n channel,\r\n creatorVaultId,\r\n coSignerVaultId\r\n );\r\n } else {\r\n await sendCreatorRejection(\r\n channel,\r\n creatorVaultId,\r\n coSignerVaultId\r\n );\r\n }\r\n\r\n return true;\r\n } else {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"Accept or reject invitation failed with\");\r\n }\r\n return false;\r\n }\r\n })\r\n .catch((err: any) => {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"Accept or reject invitation failed with error: \", err);\r\n }\r\n return false;\r\n });\r\n } else {\r\n return false;\r\n }\r\n};\r\n\r\n// const retryCompleteVault = async () => {\r\n// failedParticipants = [...new Set(failedParticipants)]\r\n// await Promise.all(\r\n// failedParticipants.map(async (participant, idx) => {\r\n// const retryAdd = await mainService.vault.addParticipant(\r\n// vaultInfo.hashedVaultId,\r\n// vaultInfo.hashedVaultPin,\r\n// participant.hashedCosigner,\r\n// participant.share\r\n// )\r\n\r\n// if (retryAdd.status) {\r\n// // failedParticipants.push({\r\n// // creatorVaultId: ,\r\n// // fcmToken,\r\n// // cosigner,\r\n// // share: sharesArrayAsString[idx],\r\n// // })\r\n// } else {\r\n// const filtered = failedParticipants.filter(\r\n// (part) => part.cosigner !== participant.cosigner\r\n// )\r\n// failedParticipants = [...new Set(filtered)]\r\n// await sendNotification({\r\n// creator: vaultInfo.vaultId,\r\n// hashedCreator: vaultInfo.hashedVaultId,\r\n// idType: participant.idType,\r\n// email: participant.cosigner,\r\n// phoneNumber: participant.cosigner,\r\n// })\r\n// }\r\n// })\r\n// )\r\n\r\n// if (failedParticipants.length > 0) {\r\n// setIsRetry(true)\r\n// setIsLoading(false)\r\n// return\r\n// }\r\n\r\n// const addQuorum = await mainService.vault.defineQuorum(\r\n// vaultInfo.hashedVaultId,\r\n// vaultInfo.hashedVaultPin,\r\n// threshold.toString() // coming from the slider\r\n// )\r\n\r\n// if (addQuorum.status) {\r\n// return false\r\n// }\r\n// return true\r\n// }\r\n\r\nexport const completeVaultCreation = async (\r\n sendCoSignerInvitation: (\r\n channel: \"sms\" | \"email\",\r\n cosigerId: string,\r\n cretorId: string,\r\n hashedCretorPin: string\r\n ) => Promise<boolean>,\r\n sendCreatorConfirmation: (\r\n channel: \"sms\" | \"email\",\r\n cretorId: string,\r\n cosigersList: [],\r\n requiredSigners: number\r\n ) => Promise<boolean>,\r\n keyHolders: any,\r\n coSigners: any,\r\n otpChannel: \"sms\" | \"email\",\r\n KeyThreshold: number,\r\n vaultId: string,\r\n hashedVaultId: string,\r\n vaultPin: string,\r\n hashedVaultPin: string,\r\n vaultContract: any,\r\n pk: string\r\n) => {\r\n const keyShardsCount = Number(keyHolders.length);\r\n\r\n const privateKeySplits = await split(\r\n Uint8Array.from(pk.split(\"\").map((letter: string) => letter.charCodeAt(0))),\r\n Number(keyShardsCount),\r\n KeyThreshold\r\n );\r\n\r\n const sharesArrayAsString = privateKeySplits.map((share) => share.join(\",\"));\r\n\r\n let failedKeyHolders = [];\r\n let succesfulKeyHolders = [];\r\n\r\n for (let idx = 0; idx < keyHolders.length; idx++) {\r\n const participant = keyHolders[idx];\r\n await vaultContract\r\n .addParticipant(\r\n hashedVaultId,\r\n hashedVaultPin,\r\n hashTheString(participant.vaultId),\r\n sharesArrayAsString[idx]\r\n )\r\n .then(async (res: any) => {\r\n const keyHolder = {\r\n creatorVaultId: vaultId,\r\n vaultPin: vaultPin,\r\n creatorHashedVaultId: hashedVaultId,\r\n creatorHashedVaultPin: hashedVaultPin,\r\n cosigner: participant.vaultId,\r\n hashedCosigner: hashTheString(participant.vaultId),\r\n cosignerVaultIdType:\r\n participant.otpChannel === \"sms\" ? \"PHONE\" : \"EMAIL\",\r\n cosignerVaultId: participant.vaultId,\r\n share: sharesArrayAsString[idx],\r\n ...participant,\r\n };\r\n if (res?.status === 0) {\r\n succesfulKeyHolders.push(keyHolder);\r\n if (participant.vaultId !== vaultId) {\r\n await sendCoSignerInvitation(\r\n participant.otpChannel,\r\n participant.vaultId,\r\n vaultId,\r\n hashedVaultPin\r\n ).then((res) => {\r\n if (!res) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while sending cosigner invite\");\r\n }\r\n // errorToast(\"Oops somethin went wrong\", \"error while sending cosigner invite\");\r\n }\r\n });\r\n }\r\n } else {\r\n failedKeyHolders.push(keyHolder);\r\n }\r\n });\r\n }\r\n\r\n if (\r\n failedKeyHolders?.length > 0 ||\r\n succesfulKeyHolders?.length !== keyHolders?.length\r\n ) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while adding co-signers\");\r\n }\r\n errorToast(\"Oops somethin went wrong\", \"error while adding co-signers\");\r\n return false;\r\n }\r\n\r\n return await vaultContract\r\n .defineQuorum(hashedVaultId, hashedVaultPin, KeyThreshold.toString())\r\n .then(async (res: any) => {\r\n if (res?.status === 0) {\r\n const cosignersList = coSigners?.map((cng: any) => {\r\n return {\r\n name: cng?.name,\r\n email: cng?.email,\r\n phoneNumber: cng?.phoneNumber,\r\n contactType: String(cng?.otpChannel)?.toUpperCase(),\r\n position: `${numberPositions[Number(cng?.position)]} Co-Signer`,\r\n };\r\n });\r\n await sendCreatorConfirmation(\r\n otpChannel,\r\n vaultId,\r\n cosignersList,\r\n Number(KeyThreshold)\r\n ).then((res) => {\r\n if (!res) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while sending creator's confirmation\");\r\n }\r\n // errorToast(\"Oops somethin went wrong\", \"error while sending creator's confirmation\");\r\n }\r\n });\r\n\r\n return true;\r\n } else {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while saving vault keys\");\r\n }\r\n errorToast(\"Oops somethin went wrong\", \"error while saving vault keys\");\r\n return false;\r\n }\r\n });\r\n};\r\n\r\nexport const initiateVaultRecovery = async (\r\n sendCreatorInitiation: (\r\n channel: \"sms\" | \"email\",\r\n cretorId: string,\r\n hashedCretorPin: string,\r\n txId: number,\r\n requiredSigners: number\r\n ) => Promise<boolean>,\r\n hashedVaultId: string,\r\n hashedVaultPin: string,\r\n vaultId: string,\r\n vaultPin: string,\r\n encryptedPk: string,\r\n vaultChannel: \"sms\" | \"email\",\r\n chainId?: number\r\n) => {\r\n const secretKey = encodeBytes32String(vaultPin);\r\n\r\n const userPk = decryptString(encryptedPk, secretKey);\r\n\r\n if (userPk) {\r\n const cntAddresses: any = contractAddress;\r\n const sender = new VerifiedWallet(userPk);\r\n const _chainId =\r\n chainId &&\r\n cntAddresses[chainId]?.Custody &&\r\n ChainConfig[chainId]?.rpcUrls?.length > 0\r\n ? chainId\r\n : defaultChainId;\r\n const provider = ChainConfig[_chainId]?.rpcUrls[0];\r\n const signer = sender.setProvider(new Provider(provider));\r\n\r\n const vaultContract = new Custody(signer, cntAddresses[_chainId].Custody);\r\n\r\n if (vaultContract) {\r\n return await vaultContract\r\n .promptSignatures(hashedVaultId, hashedVaultPin)\r\n .then(async (res: any) => {\r\n if (res?.status === 0 && res?.response?.result?.logs) {\r\n const abiCoder = new AbiCoder();\r\n const vaultLogs = res?.response?.result?.logs?.filter(\r\n (log: any) =>\r\n log?.address?.toLowerCase() ===\r\n cntAddresses[_chainId].Custody?.toLowerCase() &&\r\n log?.topics\r\n ?.map((tp: string) => tp?.toLowerCase())\r\n ?.includes(newTransactionEventHash?.toLowerCase())\r\n );\r\n const txData = vaultLogs[0]?.data;\r\n const decodedTxData = abiCoder\r\n .decode([\"bytes32\", \"bytes32\", \"uint256\"], txData)\r\n ?.map((val, idx) =>\r\n idx < 2 ? decodeBytes32String(val) : Number(val)\r\n )\r\n .flat();\r\n const txId = decodedTxData[decodedTxData?.length - 1];\r\n await sendCreatorInitiation(\r\n vaultChannel,\r\n vaultId,\r\n hashedVaultPin,\r\n Number(txId),\r\n Number(vaultLogs?.length)\r\n );\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n })\r\n .catch((err: any) => {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while initiating vault recovery\", err);\r\n }\r\n return false;\r\n });\r\n }\r\n }\r\n};\r\n\r\nexport const signVaultRecovery = async (\r\n sendCreatorSigned: (\r\n channel: \"sms\" | \"email\",\r\n cretorId: string,\r\n coSignerId: string\r\n ) => Promise<boolean>,\r\n sendCreatorCompleted: (\r\n channel: \"sms\" | \"email\",\r\n cretorId: string,\r\n txId: number\r\n ) => Promise<boolean>,\r\n hashedVaultId: string,\r\n hashedVaultPin: string,\r\n vaultId: string,\r\n vaultPin: string,\r\n encryptedPk: string,\r\n reqVaultId: string,\r\n hashedReqId: string,\r\n hashedReqPin: string,\r\n reqTxId: string,\r\n chainId?: number\r\n) => {\r\n const secretKey = encodeBytes32String(vaultPin);\r\n\r\n const userPk = decryptString(encryptedPk, secretKey);\r\n\r\n if (userPk) {\r\n const cntAddresses: any = contractAddress;\r\n const sender = new VerifiedWallet(userPk);\r\n const _chainId =\r\n chainId &&\r\n cntAddresses[chainId]?.Custody &&\r\n ChainConfig[chainId]?.rpcUrls?.length > 0\r\n ? chainId\r\n : defaultChainId;\r\n const provider = ChainConfig[_chainId]?.rpcUrls[0];\r\n const signer = sender.setProvider(new Provider(provider));\r\n\r\n const vaultContract = new Custody(signer, cntAddresses[_chainId].Custody);\r\n\r\n if (vaultContract) {\r\n return await vaultContract\r\n .signTransaction(\r\n hashedReqId,\r\n hashedVaultPin,\r\n hashedVaultId,\r\n reqTxId,\r\n hashedReqPin\r\n )\r\n .then(async (res: any) => {\r\n if (res?.status === 0) {\r\n await sendCreatorSigned(\r\n /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(reqVaultId) ? \"email\" : \"sms\",\r\n reqVaultId,\r\n vaultId\r\n );\r\n return await vaultContract\r\n .checkQuorum(hashedReqId, hashedReqPin, hashedVaultId, reqTxId)\r\n .then(async (qRes: any) => {\r\n if (qRes?.status === 0 && qRes?.response?.result) {\r\n if (qRes?.response?.result[0] === true) {\r\n await sendCreatorCompleted(\r\n /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(reqVaultId)\r\n ? \"email\"\r\n : \"sms\",\r\n reqVaultId,\r\n Number(reqTxId)\r\n );\r\n }\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n });\r\n } else {\r\n return false;\r\n }\r\n })\r\n .catch((err: any) => {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while signing vault recovery\", err);\r\n }\r\n return false;\r\n });\r\n }\r\n }\r\n};\r\n\r\nexport const restoreVaultLogin = async (\r\n hashedVaultId: string,\r\n hashedVaultPin: string,\r\n vaultId: string,\r\n vaultPin: string,\r\n encryptedPk: string,\r\n reqTxId: string,\r\n otpChannel: \"sms\" | \"email\",\r\n chainId?: number\r\n) => {\r\n const secretKey = encodeBytes32String(vaultPin);\r\n\r\n const userPk = decryptString(encryptedPk, secretKey);\r\n\r\n if (userPk) {\r\n const cntAddresses: any = contractAddress;\r\n const sender = new VerifiedWallet(userPk);\r\n const _chainId =\r\n chainId &&\r\n cntAddresses[chainId]?.Custody &&\r\n ChainConfig[chainId]?.rpcUrls?.length > 0\r\n ? chainId\r\n : defaultChainId;\r\n const provider = ChainConfig[_chainId]?.rpcUrls[0];\r\n const signer = sender.setProvider(new Provider(provider));\r\n\r\n const vaultContract = new Custody(signer, cntAddresses[_chainId].Custody);\r\n\r\n if (vaultContract) {\r\n return await vaultContract\r\n .checkQuorum(hashedVaultId, hashedVaultPin, hashedVaultId, reqTxId)\r\n .then(async (qRes: any) => {\r\n if (qRes?.status === 0 && qRes?.response?.result) {\r\n if (qRes?.response?.result[0] === true) {\r\n return await vaultContract\r\n .signTransaction(\r\n hashedVaultId,\r\n hashedVaultPin,\r\n hashedVaultId,\r\n reqTxId,\r\n hashedVaultPin\r\n )\r\n .then(async (res: any) => {\r\n if (res?.status === 0) {\r\n return await vaultContract\r\n .getShards(hashedVaultId, hashedVaultPin, reqTxId)\r\n .then(async (res: any) => {\r\n if (res?.status === 0 && res?.response?.result) {\r\n const recoveredShrads = res?.response?.result.filter(\r\n (shrd: string) => shrd !== \"\"\r\n );\r\n if (recoveredShrads.length > 1) {\r\n //at least 2 shrads?? since minimum signers are 2??\r\n const shares = recoveredShrads.map(\r\n (shrd: string) =>\r\n new Uint8Array(shrd.split(\",\").map(Number))\r\n );\r\n\r\n const combinedShares = await combine(shares);\r\n\r\n const pk = new TextDecoder().decode(combinedShares);\r\n\r\n if (pk) {\r\n const secretKey = encodeBytes32String(vaultPin);\r\n\r\n const newEncryptedPk = encryptString(\r\n pk,\r\n secretKey\r\n );\r\n\r\n const newSender = new VerifiedWallet(pk);\r\n\r\n const newSigner = newSender.setProvider(\r\n new Provider(provider)\r\n );\r\n\r\n const smartAccount =\r\n await createSmartAccountClient({\r\n signer: newSigner,\r\n bundlerUrl: `${PaymasterConfig.BUNDLER_URL_FIRST_SECTION}/${_chainId}/${PaymasterConfig[_chainId][\"BUNDLER_API_KEY\"]}`,\r\n biconomyPaymasterApiKey:\r\n PaymasterConfig[_chainId][\r\n \"PAYMASTER_API_KEY\"\r\n ],\r\n });\r\n const newAddress =\r\n await smartAccount.getAccountAddress();\r\n if (chrome?.storage?.local) {\r\n await chrome.storage.local.remove(\"myVault\");\r\n await chrome.storage.local.set({\r\n myVault: JSON.stringify({\r\n address: newAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: newEncryptedPk,\r\n channel: otpChannel,\r\n }),\r\n });\r\n } else if (\r\n !chrome?.storage?.local &&\r\n localStorage\r\n ) {\r\n localStorage.removeItem(\"myVault\");\r\n localStorage.setItem(\r\n \"myVault\",\r\n JSON.stringify({\r\n address: newAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: newEncryptedPk,\r\n channel: otpChannel,\r\n })\r\n );\r\n }\r\n return true;\r\n }\r\n } else {\r\n return false;\r\n }\r\n } else {\r\n return false;\r\n }\r\n })\r\n .catch((err: any) => {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\r\n \"error while restoring login access\",\r\n err\r\n );\r\n }\r\n return false;\r\n });\r\n } else {\r\n return false;\r\n }\r\n });\r\n }\r\n } else {\r\n return false;\r\n }\r\n })\r\n .catch((err: any) => {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while restoring login access\", err);\r\n }\r\n return false;\r\n });\r\n } else {\r\n return false;\r\n }\r\n }\r\n};\r\n","import React from \"react\";\r\nimport { errorToast } from \"../utils/helpers\";\r\nimport { defaultVerifiedUrl, imageAssets } from \"../utils/constants\";\r\n\r\nconst Success = (props: {\r\n setStep?: (step: string) => void;\r\n stepToSet?: string;\r\n messageTosend?: { type: string; key?: string; value?: any };\r\n customTextHeader: string;\r\n customTextFooter: string;\r\n showButton?: boolean;\r\n buttonText?: string;\r\n buttonNeutText?: string;\r\n buttonFunc?: any;\r\n buttonNeutFunc?: any;\r\n action?: string;\r\n actionHeaderText?: string;\r\n actionFooterText?: string;\r\n timeoutTime?: number;\r\n}) => {\r\n const timeoutId = !props.showButton\r\n ? setTimeout(\r\n () => {\r\n if (props.messageTosend) {\r\n try {\r\n if (chrome?.runtime?.sendMessage) {\r\n chrome.runtime.sendMessage(props.messageTosend, (res) => {\r\n if (res && props.action !== \"signRecovery\") {\r\n window.close();\r\n }\r\n });\r\n } else if (!chrome?.runtime?.sendMessage) {\r\n const event = new CustomEvent(props.messageTosend?.type, {\r\n detail: {\r\n value: props.messageTosend?.value,\r\n },\r\n });\r\n window.dispatchEvent(event);\r\n }\r\n } catch (err) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error sending message: \", err);\r\n }\r\n\r\n errorToast(\r\n \"Oops something went wrong\",\r\n \"Unexpected error. Try again later\"\r\n );\r\n }\r\n }\r\n\r\n if (props.setStep && props.stepToSet) {\r\n props.setStep(props.stepToSet);\r\n }\r\n },\r\n props.timeoutTime ? props.timeoutTime : 3000\r\n )\r\n : null;\r\n\r\n const handleContinue = () => {\r\n props.setStep(\"6\");\r\n };\r\n\r\n const handleClosePopup = () => {\r\n // if (chrome.runtime) {\r\n // chrome.runtime.sendMessage({\r\n // type: \"VW_REQ\",\r\n // params: { method: \"closePopup\" },\r\n // });\r\n // }\r\n if (chrome.tabs) {\r\n chrome.tabs.update({\r\n url: \"https://wallet.verified.network\",\r\n });\r\n } else {\r\n window.location.href = \"https://wallet.verified.network\";\r\n }\r\n };\r\n\r\n return (\r\n <div\r\n style={{\r\n alignContent: \"center\",\r\n justifyContent: \"center\",\r\n position: \"relative\",\r\n height: \"100%\",\r\n width: \"90%\",\r\n }}\r\n className=\"verified-custd-mdl-success-popup-content-container\"\r\n >\r\n <div className=\"verified-custd-mdl-success-popup-content\">\r\n <img\r\n style={{ width: \"90%\" }}\r\n src={imageAssets.successIcon}\r\n alt=\"Success Icon\"\r\n />\r\n <div className=\"verified-custd-mdl-success-popup-content-text\">\r\n <p className=\"verified-custd-mdl-success-popup-content-text-header\">\r\n {!props?.showButton\r\n ? props.customTextHeader\r\n : props.actionHeaderText}\r\n </p>\r\n <p className=\"verified-custd-mdl-success-popup-content-text-footer\">\r\n {!props?.showButton\r\n ? props.customTextFooter\r\n : props.actionFooterText}\r\n </p>\r\n </div>\r\n </div>\r\n\r\n {props.showButton && props.buttonText?.length > 0 && (\r\n <button\r\n style={{ marginTop: \"10px\", fontSize: \"14px\" }}\r\n onClick={() => {\r\n if (timeoutId) {\r\n clearTimeout(timeoutId);\r\n }\r\n if (props.action === \"invitation\") {\r\n handleContinue();\r\n }\r\n }}\r\n className=\"verified-custd-mdl-startup-button-active\"\r\n >\r\n {props.buttonText}\r\n </button>\r\n )}\r\n {props.showButton && props.buttonNeutText?.length > 0 && (\r\n <button\r\n style={{ marginTop: \"10px\", fontSize: \"14px\" }}\r\n onClick={() => {\r\n if (timeoutId) {\r\n clearTimeout(timeoutId);\r\n }\r\n if (props.action === \"invitation\") {\r\n handleClosePopup();\r\n }\r\n }}\r\n className=\"verified-custd-mdl-startup-button-click\"\r\n >\r\n {props.buttonNeutText}\r\n </button>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default Success;\r\n","import React, { useState } from \"react\";\r\nimport { imageAssets, numberPositionsFmt } from \"../utils/constants\";\r\nimport { useVaultStore } from \"../services/store\";\r\nimport { completeVaultCreation } from \"../services/contracts\";\r\nimport PageSlider from \"../components/slider\";\r\nimport SearchBox from \"../components/search\";\r\nimport { VerifiedCustodyHelpers } from \"../utils/types\";\r\n\r\nconst AddCosignersPage = (props: {\r\n setStep: (step: string) => void;\r\n setIsLoading: (isLoading: boolean) => void;\r\n userNumberFmt: string;\r\n userEmail: string;\r\n selectedCountry: { name: string; area: string; flag: string };\r\n allCountries: any;\r\n defaultCountry?: {\r\n area: string;\r\n flag: string;\r\n name: string;\r\n };\r\n helperFunctions?: VerifiedCustodyHelpers;\r\n}) => {\r\n const [showLearnMore, setShowLearnMore] = useState<boolean>(false);\r\n const [learnMoreStep, setLearnMoreStep] = useState<string>(\"1\");\r\n const [cosignerStep, setCosignerStep] = useState<string>(\"1\");\r\n const [showAddMore, setShowAddMore] = useState<boolean>(false);\r\n const [addChannel, setAddChannel] = useState<string>(\"sms\");\r\n const [coSignerNumber, setCoSignerNumber] = useState<string>(\"\");\r\n const [coSignerNumberFmt, setCoSignerNumberFmt] = useState<string>(\"\");\r\n const [coSignerEmail, setCoSignerEmail] = useState<string>(\"\");\r\n const [coSignerName, setCoSignerName] = useState<string>(\"\");\r\n const [userInput, setUserInput] = useState<string>(\"\");\r\n const [searchActive, setSearchActive] = useState<boolean>(false);\r\n const [selectedCountry, setSelectedCountry] = useState(\r\n props.defaultCountry || {\r\n area: \"1\",\r\n flag: imageAssets.usaFlag,\r\n name: \"United States\",\r\n }\r\n );\r\n const [coSigners, setCosigners] = useState([]);\r\n const [showSetRule, setShowSetRule] = useState<boolean>(false);\r\n const [requiredSigners, setRequiredSigners] = useState<number>(2);\r\n const [errorText, setErrorText] = useState<string>(\"\");\r\n\r\n const { pk, vaultData, vaultContract } = useVaultStore();\r\n\r\n const handleButtonDisplay = () => {\r\n const button = document.getElementById(\"add-cosigner-button\");\r\n if (button && coSigners?.length > 0) {\r\n button.className = \"startup-button-active\";\r\n } else {\r\n button!.className = \"startup-button\";\r\n }\r\n };\r\n\r\n const handleAddCoSigner = () => {\r\n if (addChannel === \"sms\" && coSignerNumber?.length === 0) {\r\n setErrorText(\"Invalid input, please check the phone number\");\r\n return;\r\n } else if (addChannel === \"sms\" && coSignerNumber?.length !== 10) {\r\n setErrorText(\"Invalid input, please check the phone number\");\r\n return;\r\n } else if (addChannel === \"email\" && coSignerEmail?.length === 0) {\r\n setErrorText(\"Invalid input, please check the email\");\r\n return;\r\n } else if (\r\n addChannel === \"email\" &&\r\n !/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(coSignerEmail)\r\n ) {\r\n setErrorText(\"Invalid input, please check the email\");\r\n return;\r\n } else if (\r\n coSigners?.find((sig) =>\r\n sig?.otpChannel === \"sms\"\r\n ? sig?.phoneArea?.toLowerCase() + sig?.number?.toLowerCase() ===\r\n selectedCountry.area?.toLowerCase() +\r\n coSignerNumberFmt?.toLowerCase()\r\n : sig?.email?.toLowerCase() === coSignerEmail?.toLowerCase()\r\n )\r\n ) {\r\n setErrorText(\r\n addChannel === \"sms\"\r\n ? \"Invalid input, phone number is already a co-signer\"\r\n : \"Invalid input, email is already a co-signer\"\r\n );\r\n return;\r\n } else if (\r\n addChannel === \"sms\" &&\r\n selectedCountry?.area?.toLowerCase() +\r\n coSignerNumberFmt?.toLowerCase() ===\r\n props.selectedCountry.area?.toLowerCase() +\r\n props.userNumberFmt?.toLowerCase()\r\n ) {\r\n setErrorText(\"Invalid input, phone number is creator's phone number\");\r\n return;\r\n } else if (\r\n addChannel === \"email\" &&\r\n coSignerEmail?.toLowerCase() === props.userEmail?.toLowerCase()\r\n ) {\r\n setErrorText(\"Invalid input, email is creator's email\");\r\n return;\r\n }\r\n setErrorText(\"\");\r\n let coSignerLength = coSigners?.length;\r\n setCosigners((cngs) => [\r\n {\r\n name: coSignerName,\r\n email: coSignerEmail,\r\n number: coSignerNumberFmt,\r\n phoneNumber: `+${selectedCountry?.area}${coSignerNumber}`,\r\n otpChannel: addChannel,\r\n phoneArea: selectedCountry?.area,\r\n position: cngs?.length + 1,\r\n vaultId:\r\n addChannel === \"sms\"\r\n ? `+${selectedCountry?.area}${coSignerNumber}`\r\n : coSignerEmail,\r\n },\r\n ...cngs,\r\n ]);\r\n setCoSignerEmail(\"\");\r\n setCoSignerName(\"\");\r\n setCoSignerNumber(\"\");\r\n setCoSignerNumberFmt(\"\");\r\n setUserInput(\"\");\r\n if (coSignerLength + 1 === 4) {\r\n setShowAddMore(false);\r\n }\r\n };\r\n\r\n const handleCompleteVault = async () => {\r\n const keyHolders = [\r\n {\r\n otpChannel: props?.userEmail?.length > 0 ? \"email\" : \"sms\",\r\n email: props?.userEmail,\r\n phoneNumber: `+${\r\n props?.selectedCountry?.area\r\n }${props?.userNumberFmt?.replace(\" \", \"\")}`,\r\n vaultId: vaultData?.vaultId,\r\n },\r\n ...coSigners,\r\n ];\r\n\r\n if (\r\n keyHolders?.length > 0 &&\r\n coSigners?.length > 0 &&\r\n requiredSigners &&\r\n vaultData?.vaultId &&\r\n vaultData?.hashedVaultId &&\r\n vaultData?.vaultPin &&\r\n vaultData?.hashedVaultPin &&\r\n vaultContract &&\r\n pk &&\r\n props.helperFunctions?.sendCoSignerInvitation &&\r\n props.helperFunctions?.sendCreatorConfirmation\r\n ) {\r\n props.setIsLoading(true);\r\n await completeVaultCreation(\r\n props.helperFunctions.sendCoSignerInvitation,\r\n props.helperFunctions.sendCreatorConfirmation,\r\n keyHolders,\r\n coSigners,\r\n props?.userEmail?.length > 0 ? \"email\" : \"sms\",\r\n requiredSigners,\r\n vaultData.vaultId,\r\n vaultData.hashedVaultId,\r\n vaultData.vaultPin,\r\n vaultData.hashedVaultPin,\r\n vaultContract,\r\n pk\r\n ).then((res) => {\r\n props.setIsLoading(false);\r\n if (res) {\r\n props.setStep(\"7\");\r\n }\r\n });\r\n }\r\n };\r\n\r\n return (\r\n <div\r\n style={{ padding: \"0\" }}\r\n className=\"verified-custd-mdl-startup-language\"\r\n >\r\n {!showLearnMore && (\r\n <React.Fragment>\r\n {cosignerStep === \"1\" && (\r\n <React.Fragment>\r\n {\" \"}\r\n <div className=\"verified-custd-mdl-startup-contact\">\r\n <PageSlider sliderCount={[1, 2, 3]} currentSlider=\"2\" />\r\n <div className=\"verified-custd-mdl-startup-contact-content\">\r\n <p className=\"verified-custd-mdl-startup-contact-text\">\r\n We require you to add at least another Co-Signer.\r\n </p>\r\n </div>\r\n </div>\r\n <img\r\n className=\"verified-custd-mdl-add-cosigner-body-icon\"\r\n src={imageAssets.addCoSignerIcon1}\r\n alt=\"\"\r\n />\r\n <div className=\"verified-custd-mdl-add-cosigner-body\">\r\n <div className=\"verified-custd-mdl-add-cosigner-body-text-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-body-text-icon\">\r\n <img src={imageAssets.pkicon} alt=\"icon\" />\r\n </div>\r\n <p className=\"verified-custd-mdl-add-cosigner-body-text-label\">\r\n This is a blockchain based platform where{\" \"}\r\n <span className=\"verified-custd-mdl-add-cosigner-body-text-label-bold\">\r\n we do not store password keys.\r\n </span>\r\n </p>\r\n </div>\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-body-text-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-body-text-icon\">\r\n <img src={imageAssets.encryptedIcon} alt=\"icon\" />\r\n </div>\r\n <p className=\"verified-custd-mdl-add-cosigner-body-text-label\">\r\n Don’t worry, the{\" \"}\r\n <span className=\"verified-custd-mdl-add-cosigner-body-text-label-bold\">\r\n Co-Signer does not get access\r\n </span>{\" \"}\r\n to your account in any way.\r\n </p>\r\n </div>\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-body-text-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-body-text-icon\">\r\n <img src={imageAssets.supervise} alt=\"icon\" />\r\n </div>\r\n <p className=\"verified-custd-mdl-add-cosigner-body-text-label\">\r\n You can{\" \"}\r\n <span className=\"verified-custd-mdl-add-cosigner-body-text-label-bold\">\r\n be your own Co-Signer\r\n </span>{\" \"}\r\n by adding a different contact number or Email ID. to your\r\n account in any way.\r\n </p>\r\n </div>\r\n </div>\r\n <div className=\"verified-custd-mdl-add-cosigner-buttons-cont\">\r\n <button\r\n onClick={() => {\r\n setLearnMoreStep(\"1\");\r\n setShowLearnMore(true);\r\n }}\r\n className=\"verified-custd-mdl-add-cosigner-button-neut\"\r\n >\r\n Learn More\r\n </button>\r\n\r\n <button\r\n onClick={() => {\r\n setCosignerStep(\"2\");\r\n setShowAddMore(false);\r\n setShowLearnMore(false);\r\n }}\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n >\r\n Add Co-Signer\r\n </button>\r\n </div>\r\n </React.Fragment>\r\n )}\r\n\r\n {cosignerStep === \"2\" && (\r\n <React.Fragment>\r\n {\" \"}\r\n <div className=\"verified-custd-mdl-startup-contact\">\r\n <PageSlider sliderCount={[1, 2, 3]} currentSlider=\"2\" />\r\n <div\r\n style={{ gap: \"16px\" }}\r\n className=\"verified-custd-mdl-startup-contact-content\"\r\n >\r\n <p className=\"verified-custd-mdl-startup-contact-text\">\r\n Add your Co-Signers\r\n </p>\r\n <div className=\"verified-custd-mdl-startup-otp-text\">\r\n {!showSetRule && (\r\n <p className=\"verified-custd-mdl-add-cosigner-header-text\">\r\n Add a phone number/an Email ID of Co-Signer to send them\r\n a request.\r\n </p>\r\n )}\r\n <div className=\"verified-custd-mdl-add-cosigner-header-info-cont\">\r\n <p className=\"verified-custd-mdl-add-cosigner-header-info-text\">\r\n <span className=\"verified-custd-mdl-add-cosigner-header-info-text-bold\">\r\n NOTE:\r\n </span>{\" \"}\r\n You can add yourself as a Co-Signer and further add more\r\n Co-Signers to your account.\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-body\">\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-body-header\">\r\n <p className=\"verified-custd-mdl-add-cosigner-step2-body-header-first-text\">\r\n Add Co-Signers\r\n </p>\r\n\r\n <p className=\"verified-custd-mdl-add-cosigner-step2-body-header-second-text\">\r\n ({coSigners?.length + 1 < 5 ? coSigners?.length + 1 : 5}/5)\r\n </p>\r\n </div>\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-body-content\">\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-body-content-header\">\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-body\">\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-label\">\r\n <p className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-label-text\">\r\n Creator\r\n </p>\r\n </div>\r\n <div className=\"verified-custd-mdl-a-c-2-b-content-header-body-header-cont\">\r\n <div className=\"verified-custd-mdl-a-c-2-b-content-header-body-header\">\r\n <p className=\"verified-custd-mdl-a-c-2-b-content-header-body-title\">\r\n You\r\n </p>\r\n {props.userEmail?.length > 0 && (\r\n <p className=\"verified-custd-mdl-a-c-2-b-content-header-body-label\">\r\n {props.userEmail}\r\n </p>\r\n )}\r\n {props.userEmail?.length === 0 && (\r\n <p className=\"verified-custd-mdl-a-c-2-b-content-header-body-label\">\r\n (+{props.selectedCountry.area}){\" \"}\r\n {props.userNumberFmt}\r\n </p>\r\n )}\r\n </div>\r\n </div>\r\n\r\n {/* <button className=\"verified-custd-mdl-a-c-2-b-content-header-body-button\">\r\n Add Self\r\n </button> */}\r\n </div>\r\n </div>\r\n {!showSetRule &&\r\n coSigners\r\n .sort((a, b) => a?.position - b?.position)\r\n .map((cng: any, idx: number) => (\r\n <div\r\n key={idx}\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-cont\"\r\n >\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-body\">\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-label\">\r\n <p className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-label-text\">\r\n {\r\n numberPositionsFmt[cng?.position]?.split(\r\n \" \"\r\n )[0]\r\n }\r\n <sup>\r\n {\r\n numberPositionsFmt[cng?.position]?.split(\r\n \" \"\r\n )[1]\r\n }\r\n </sup>{\" \"}\r\n Co-Signer\r\n </p>\r\n </div>\r\n <div className=\"verified-custd-mdl-a-c-2-b-content-header-body-header-cont\">\r\n <div className=\"verified-custd-mdl-a-c-2-b-content-header-body-header\">\r\n <p className=\"verified-custd-mdl-a-c-2-b-content-header-body-title\">\r\n {cng?.name}\r\n </p>\r\n {cng.otpChannel === \"email\" && (\r\n <p className=\"verified-custd-mdl-a-c-2-b-content-header-body-label\">\r\n {cng.email}\r\n </p>\r\n )}\r\n {cng.otpChannel === \"sms\" && (\r\n <p className=\"verified-custd-mdl-a-c-2-b-content-header-body-label\">\r\n (+{cng?.phoneArea}) {cng.number}\r\n </p>\r\n )}\r\n </div>\r\n </div>\r\n\r\n <div className=\"verified-custd-mdl-a-c-2-b-content-header-body-header-icons\">\r\n <img\r\n style={{ cursor: \"pointer\" }}\r\n src={imageAssets.editBlack}\r\n alt=\"edit\"\r\n />\r\n <img\r\n onClickCapture={() => {\r\n setCosigners((cngs) =>\r\n cngs\r\n ?.filter((sig) =>\r\n sig?.otpChannel === \"sms\"\r\n ? sig?.phoneArea?.toLowerCase() +\r\n sig?.number?.toLowerCase() !==\r\n cng?.phoneArea?.toLowerCase() +\r\n cng?.number?.toLowerCase()\r\n : sig?.email?.toLowerCase() !==\r\n cng?.email?.toLowerCase()\r\n )\r\n ?.map((nSig, newId) => {\r\n nSig.position = newId + 1;\r\n return nSig;\r\n })\r\n );\r\n }}\r\n onClick={() => {\r\n handleButtonDisplay();\r\n }}\r\n style={{ cursor: \"pointer\" }}\r\n src={imageAssets.delete}\r\n alt=\"delete\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n ))}\r\n </div>\r\n\r\n {showSetRule && (\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-content-outter\">\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-content\">\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-header\">\r\n <p className=\"verified-custd-mdl-add-cosigner-confirm-body-title\">\r\n Specify the number of Co-Signers you need to sign\r\n off for an approval\r\n </p>\r\n <p className=\"verified-custd-mdl-add-cosigner-confirm-body-label\">\r\n By default we need 2, you can add up to 5\r\n Co-Signers as minimum sign off needed for\r\n approval.\r\n </p>\r\n </div>\r\n\r\n <div\r\n style={{ width: \"100%\" }}\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer\"\r\n >\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-ind-cont\">\r\n {new Array(coSigners?.length + 1)\r\n .fill(\"1\")\r\n .map((_: any, idx: number) => (\r\n <div\r\n style={\r\n idx + 1 === requiredSigners\r\n ? {}\r\n : {\r\n height: \"0\",\r\n width: \"0\",\r\n overflow: \"hidden\",\r\n }\r\n }\r\n key={idx}\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-ind\"\r\n >\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-ind-text-cont\">\r\n <p className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-ind-text\">\r\n {String(idx + 1)}\r\n </p>{\" \"}\r\n </div>\r\n <img\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-ind-icon\"\r\n src={imageAssets.pointer}\r\n alt=\"\"\r\n />\r\n </div>\r\n ))}\r\n </div>\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-label-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-label-slider-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-label-slider\">\r\n <div\r\n style={\r\n coSigners?.length === 1\r\n ? {\r\n width: `${\r\n 100 / coSigners?.length\r\n }%`,\r\n }\r\n : {\r\n width: `calc(${\r\n 100 / coSigners?.length\r\n }% + 12px)`,\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-label-slider-ind\"\r\n >\r\n <img\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-label-slider-icon\"\r\n src={imageAssets.sliderDot}\r\n alt=\"\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-label-text-cont\">\r\n {new Array(coSigners?.length + 1)\r\n .fill(\"1\")\r\n .map((_: any, idx: number) => (\r\n <p\r\n style={\r\n idx === coSigners?.length\r\n ? { paddingRight: \"12px\" }\r\n : idx === 0\r\n ? { paddingLeft: \"12px\" }\r\n : {}\r\n }\r\n onClick={() => {\r\n if (idx + 1 > 1) {\r\n setRequiredSigners(idx + 1);\r\n }\r\n }}\r\n key={idx}\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-label-text\"\r\n >\r\n {String(idx + 1)}\r\n </p>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <button\r\n id=\"confirm-cosigner-button\"\r\n style={{ marginBottom: \"10px\", width: \"100%\" }}\r\n onClick={async (e: any) => {\r\n if (\r\n e.target.className.includes(\"startup-button\") &&\r\n e.target.className !== \"startup-button\"\r\n ) {\r\n e.target.className = \"startup-button-click\";\r\n await handleCompleteVault();\r\n } else {\r\n const buttonElement =\r\n document.getElementsByClassName(\r\n \"startup-button-active\"\r\n );\r\n if (buttonElement.length > 0) {\r\n buttonElement[0].className =\r\n \"startup-button-click\";\r\n }\r\n await handleCompleteVault();\r\n }\r\n }}\r\n className=\"verified-custd-mdl-startup-button-active\"\r\n >\r\n Confirm\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n\r\n {showAddMore && coSigners?.length < 4 && (\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-add-more-body\">\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-add-more-first\">\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-add-more-first-header\">\r\n <p className=\"verified-custd-mdl-add-cosigner-step2-add-more-first-header-text\">\r\n Add Details\r\n </p>\r\n </div>\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-add-more-first-footer\">\r\n <p className=\"verified-custd-mdl-add-cosigner-step2-add-more-first-footer-text\">\r\n {\r\n numberPositionsFmt[coSigners?.length + 1]?.split(\r\n \" \"\r\n )[0]\r\n }\r\n <sup>\r\n {\r\n numberPositionsFmt[\r\n coSigners?.length + 1\r\n ]?.split(\" \")[1]\r\n }\r\n </sup>{\" \"}\r\n Co-Signer\r\n </p>\r\n </div>\r\n </div>\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-add-more-second\">\r\n <input\r\n onInput={(e: any) => {\r\n setCoSignerName(e.target.value);\r\n }}\r\n value={coSignerName}\r\n placeholder=\"Enter Co-signer name\"\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-second-input\"\r\n type=\"text\"\r\n />\r\n </div>\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-add-more-third\">\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-add-more-third-cont\">\r\n <img\r\n onClick={() => {\r\n setAddChannel(\"sms\");\r\n setErrorText(\"\");\r\n setCoSignerEmail(\"\");\r\n }}\r\n src={\r\n addChannel === \"sms\"\r\n ? imageAssets.selectClicked\r\n : imageAssets.select\r\n }\r\n alt=\"\"\r\n />\r\n <p className=\"verified-custd-mdl-add-cosigner-step2-add-more-third-cont-text\">\r\n Phone number\r\n </p>\r\n </div>\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-add-more-third-cont\">\r\n <img\r\n onClick={() => {\r\n setAddChannel(\"email\");\r\n setErrorText(\"\");\r\n setCoSignerNumber(\"\");\r\n setCoSignerNumberFmt(\"\");\r\n setUserInput(\"\");\r\n }}\r\n src={\r\n addChannel === \"email\"\r\n ? imageAssets.selectClicked\r\n : imageAssets.select\r\n }\r\n alt=\"\"\r\n />\r\n <p className=\"verified-custd-mdl-add-cosigner-step2-add-more-third-cont-text\">\r\n Email\r\n </p>\r\n </div>\r\n </div>\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-add-more-third\">\r\n {addChannel === \"sms\" && (\r\n <div className=\"verified-custd-mdl-st-contact-input\">\r\n <div className=\"verified-custd-mdl-st-contact-content-container\">\r\n <div\r\n onClick={() => {\r\n setSearchActive(!searchActive);\r\n }}\r\n className=\"verified-custd-mdl-st-contact-first-section\"\r\n >\r\n <img\r\n onClick={() => {\r\n setSearchActive(!searchActive);\r\n }}\r\n alt=\"Country Flag\"\r\n className=\"verified-custd-mdl-st-contact-selection-icon\"\r\n src={selectedCountry.flag}\r\n />\r\n <p\r\n onClick={() => {\r\n setSearchActive(!searchActive);\r\n }}\r\n className=\"verified-custd-mdl-st-contact-selection-text\"\r\n >\r\n + {selectedCountry.area}\r\n </p>\r\n {searchActive && (\r\n <img\r\n onClick={() => {\r\n setSearchActive(!searchActive);\r\n }}\r\n alt=\"Dropdown Icon\"\r\n className=\"verified-custd-mdl-st-contact-dropdown\"\r\n src={imageAssets.arrowUp}\r\n />\r\n )}\r\n {!searchActive && (\r\n <img\r\n onClick={() => {\r\n setSearchActive(!searchActive);\r\n }}\r\n alt=\"Dropdown Icon\"\r\n className=\"verified-custd-mdl-st-contact-dropdown\"\r\n src={imageAssets.arrowDown}\r\n />\r\n )}\r\n </div>\r\n\r\n <input\r\n onInputCapture={(e: any) => {\r\n if (e.target.value === \"\") {\r\n setUserInput(userInput + \" \");\r\n } else {\r\n setUserInput(e.target.value);\r\n }\r\n const numericInput = e.target.value?.replace(\r\n /\\D/g,\r\n \"\"\r\n );\r\n setCoSignerNumber(numericInput);\r\n let formattedNumber = \"\";\r\n for (\r\n let i = 0;\r\n i < numericInput?.length;\r\n i++\r\n ) {\r\n formattedNumber += numericInput[i];\r\n if (\r\n (i + 1) % 5 === 0 &&\r\n i + 1 < numericInput?.length\r\n ) {\r\n formattedNumber += \" \";\r\n }\r\n }\r\n setCoSignerNumberFmt(formattedNumber);\r\n setErrorText(\"\");\r\n }}\r\n onInput={(e) => {\r\n handleButtonDisplay();\r\n }}\r\n value={coSignerNumberFmt}\r\n id=\"phone-input\"\r\n type=\"text\"\r\n className=\"verified-custd-mdl-st-contact-second-section\"\r\n placeholder=\"Enter phone number\"\r\n />\r\n </div>\r\n {searchActive && (\r\n <SearchBox\r\n pageName=\"ftu/contact\"\r\n searchContent={props.allCountries}\r\n type=\"area-code\"\r\n handleButtonDisplay={handleButtonDisplay}\r\n setSelected={setSelectedCountry}\r\n selected={selectedCountry}\r\n searchActive={searchActive}\r\n setSearchActive={setSearchActive}\r\n contentMaxHeight=\"300\"\r\n contentbottomMargin=\"300\"\r\n />\r\n )}\r\n {errorText === \"\" &&\r\n coSignerNumber.length !== 10 &&\r\n userInput.length > 10 && (\r\n <div className=\"verified-custd-mdl-st-contact-input-error\">\r\n <p className=\"verified-custd-mdl-input-error-text\">\r\n Invalid input, please check the phone number\r\n </p>\r\n </div>\r\n )}\r\n {errorText !== \"\" && (\r\n <div className=\"verified-custd-mdl-st-contact-input-error\">\r\n <p className=\"verified-custd-mdl-input-error-text\">\r\n {errorText}\r\n </p>\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n {addChannel === \"email\" && (\r\n <React.Fragment>\r\n <div className=\"verified-custd-mdl-st-contact-input\">\r\n <input\r\n style={{ width: \"100%\" }}\r\n onInputCapture={(e: any) => {\r\n setCoSignerEmail(e.target.value);\r\n setErrorText(\"\");\r\n }}\r\n onInput={(e) => {\r\n handleButtonDisplay();\r\n }}\r\n value={coSignerEmail}\r\n id=\"email-input\"\r\n type=\"text\"\r\n className=\"verified-custd-mdl-st-contact-second-section\"\r\n placeholder=\"Enter email\"\r\n />\r\n {errorText !== \"\" && (\r\n <div className=\"verified-custd-mdl-st-contact-input-error\">\r\n <p className=\"verified-custd-mdl-input-error-text\">\r\n {errorText}\r\n </p>\r\n </div>\r\n )}\r\n </div>\r\n </React.Fragment>\r\n )}\r\n </div>\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-add-more-buttons\">\r\n <button\r\n onClick={() => setShowAddMore(false)}\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-buttons-neut\"\r\n >\r\n Cancel\r\n </button>\r\n <button\r\n onClickCapture={() => {\r\n handleAddCoSigner();\r\n }}\r\n onClick={() => handleButtonDisplay()}\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-buttons-action\"\r\n >\r\n Add\r\n </button>\r\n </div>\r\n </div>\r\n )}\r\n\r\n {!showAddMore && !showSetRule && coSigners?.length < 4 && (\r\n <div\r\n onClick={() => setShowAddMore(true)}\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-footer\"\r\n >\r\n <img\r\n style={{ width: \"20px\" }}\r\n src={imageAssets.addIcon}\r\n alt=\"add icon\"\r\n />\r\n <p className=\"verified-custd-mdl-add-cosigner-step2-body-content-footer-text\">\r\n Add another Co-Signer\r\n </p>\r\n </div>\r\n )}\r\n {!showAddMore && !showSetRule && coSigners?.length === 4 && (\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-body-content-footer-dis\">\r\n <img\r\n style={{ width: \"20px\" }}\r\n src={imageAssets.addDisableIcon}\r\n alt=\"add icon\"\r\n />\r\n <p className=\"verified-custd-mdl-add-cosigner-step2-body-content-footer-text-dis\">\r\n Add another Co-Signer\r\n </p>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n {!showSetRule && (\r\n <button\r\n style={\r\n !showAddMore && coSigners?.length < 4\r\n ? { marginTop: \"50px\", marginBottom: \"20px\" }\r\n : { marginBottom: \"20px\" }\r\n }\r\n id=\"add-cosigner-button\"\r\n onClick={async (e: any) => {\r\n if (\r\n e.target.className.includes(\"startup-button\") &&\r\n e.target.className !== \"startup-button\"\r\n ) {\r\n e.target.className = \"startup-button-click\";\r\n if (coSigners?.length > 0) {\r\n setRequiredSigners(2);\r\n setShowSetRule(true);\r\n setShowAddMore(false);\r\n }\r\n } else {\r\n const buttonElement = document.getElementsByClassName(\r\n \"startup-button-active\"\r\n );\r\n if (buttonElement.length > 0) {\r\n buttonElement[0].className = \"startup-button-click\";\r\n if (coSigners?.length > 0) {\r\n setRequiredSigners(2);\r\n setShowSetRule(true);\r\n setShowAddMore(false);\r\n }\r\n }\r\n }\r\n }}\r\n className=\"verified-custd-mdl-startup-button\"\r\n >\r\n Proceed\r\n </button>\r\n )}\r\n </React.Fragment>\r\n )}\r\n </React.Fragment>\r\n )}\r\n\r\n {showLearnMore && (\r\n <React.Fragment>\r\n {learnMoreStep === \"1\" && (\r\n <React.Fragment>\r\n <img\r\n className=\"verified-custd-mdl-add-cosigner-body-icon\"\r\n src={imageAssets.addCoSignerIcon2}\r\n alt=\"\"\r\n />\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-more-body\">\r\n <div className=\"verified-custd-mdl-add-cosigner-more-header-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-more-title-cont\">\r\n <p className=\"verified-custd-mdl-add-cosigner-more-title\">\r\n What is a Co-Signer?\r\n </p>\r\n </div>\r\n </div>\r\n <p className=\"verified-custd-mdl-add-cosigner-more-label\">\r\n A Co-Signer is a person who has the right given by you to\r\n generate a new pin on your behalf incase you forget it.{\" \"}\r\n </p>\r\n </div>\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-buttons-cont\">\r\n <button\r\n onClick={() => setShowLearnMore(false)}\r\n className=\"verified-custd-mdl-add-cosigner-button-neut\"\r\n >\r\n Back\r\n </button>\r\n\r\n <button\r\n onClick={() => setLearnMoreStep(\"2\")}\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n >\r\n Next\r\n </button>\r\n </div>\r\n </React.Fragment>\r\n )}\r\n\r\n {learnMoreStep === \"2\" && (\r\n <React.Fragment>\r\n <img\r\n className=\"verified-custd-mdl-add-cosigner-body-icon\"\r\n src={imageAssets.addCoSignerIcon3}\r\n alt=\"\"\r\n />\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-more-body\">\r\n <div className=\"verified-custd-mdl-add-cosigner-more-header-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-more-title-cont\">\r\n <p className=\"verified-custd-mdl-add-cosigner-more-title\">\r\n Why is it needed?\r\n </p>\r\n </div>\r\n </div>\r\n <p className=\"verified-custd-mdl-add-cosigner-more-label\">\r\n In blockchain application, it is impossible to reset a key if\r\n the PIN is forgotten you can login with the help of Co-Signer\r\n </p>\r\n </div>\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-buttons-cont\">\r\n <button\r\n onClick={() => setLearnMoreStep(\"1\")}\r\n className=\"verified-custd-mdl-add-cosigner-button-neut\"\r\n >\r\n Back\r\n </button>\r\n\r\n <button\r\n onClick={() => setLearnMoreStep(\"3\")}\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n >\r\n Next\r\n </button>\r\n </div>\r\n </React.Fragment>\r\n )}\r\n\r\n {learnMoreStep === \"3\" && (\r\n <React.Fragment>\r\n <img\r\n className=\"verified-custd-mdl-add-cosigner-body-icon\"\r\n src={imageAssets.addCoSignerIcon4}\r\n alt=\"\"\r\n />\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-more-body\">\r\n <div className=\"verified-custd-mdl-add-cosigner-more-header-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-more-title-cont\">\r\n <p className=\"verified-custd-mdl-add-cosigner-more-title\">\r\n Who can be my Co-Signer?\r\n </p>\r\n </div>\r\n </div>\r\n <p className=\"verified-custd-mdl-add-cosigner-more-label\">\r\n You can nominate your trusted acquaintances, family members\r\n and even yourself as a co-signer.\r\n </p>\r\n <p className=\"verified-custd-mdl-add-cosigner-more-label-link\">\r\n Learn More in Details\r\n </p>\r\n </div>\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-buttons-cont\">\r\n <button\r\n onClick={() => setLearnMoreStep(\"2\")}\r\n className=\"verified-custd-mdl-add-cosigner-button-neut\"\r\n >\r\n Back\r\n </button>\r\n\r\n <button\r\n onClick={() => {\r\n setCosignerStep(\"2\");\r\n setShowAddMore(false);\r\n setShowLearnMore(false);\r\n setLearnMoreStep(\"1\");\r\n }}\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n >\r\n Start\r\n </button>\r\n </div>\r\n </React.Fragment>\r\n )}\r\n </React.Fragment>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default AddCosignersPage;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { hashTheString, loadAllGoogleFonts } from \"../utils/helpers\";\r\nimport { defaultChainId, imageAssets } from \"../utils/constants\";\r\nimport {\r\n acceptOrRejectInvitation,\r\n initiateVaultRecovery,\r\n restoreVaultLogin,\r\n signVaultRecovery,\r\n validateVaultPin,\r\n} from \"../services/contracts\";\r\nimport PageSlider from \"../components/slider\";\r\nimport { LogoutOverlay, PrivacyOverlay } from \"../components/overlays\";\r\nimport Success from \"../components/success\";\r\nimport { VerifiedCustodyHelpers } from \"../utils/types\";\r\n\r\nconst EnterPinPage = (props: {\r\n fontsLoaded?: boolean;\r\n setisOnboard: (isOnboard: boolean) => void;\r\n vaultId: string;\r\n hashedVaultId: string;\r\n encrptedPk: string;\r\n vaultAddress: string;\r\n vaultChannel: \"sms\" | \"email\";\r\n actionText?: string;\r\n title?: string;\r\n origin?: string;\r\n chainId?: number;\r\n newChainId?: number;\r\n action?: string;\r\n reqVaultData?: any;\r\n reqTxData?: any;\r\n setIsLoading: (isLoading: boolean) => void;\r\n helperFunctions?: VerifiedCustodyHelpers;\r\n}) => {\r\n const [fontsLoaded, setFontsLoaded] = useState(props.fontsLoaded || false);\r\n const [pinIncorrect, setPinIncorrect] = useState(false);\r\n const [pinHide, setPinHide] = useState(true); //hide pin by default\r\n const [searchActive, setSearchActive] = useState(false);\r\n const [showSuccess, setShowSuccess] = useState(false);\r\n const [vaultData, setVaultData] = useState(null);\r\n const [chainId, setChainId] = useState(props.newChainId || defaultChainId);\r\n const [showChains, setShowChains] = useState(false);\r\n const [showInvitation, setShowInvitation] = useState(false);\r\n const [showInvitationSuccess, setShowInvitationSuccess] = useState(false);\r\n const [showRejectInvitation, setShowRejectInvitation] = useState(false);\r\n const [isAccepted, setIsAccepted] = useState(false);\r\n const [pinIncorrectText, setPinIncorrectText] = useState(\"\");\r\n\r\n useEffect(() => {\r\n const PreloadGoogleFonts = () => {\r\n const isFontsLoaded = loadAllGoogleFonts(document);\r\n setFontsLoaded(isFontsLoaded);\r\n };\r\n if (!props.fontsLoaded) {\r\n PreloadGoogleFonts();\r\n }\r\n }, []);\r\n\r\n //todo: add key actions to input focus change\r\n const handlleInputFocus = (currentInput: any) => {\r\n if (currentInput.value.length > 0) {\r\n const nextInput = currentInput.nextElementSibling;\r\n if (nextInput) {\r\n nextInput.focus();\r\n }\r\n } else if (currentInput.value.length === 0) {\r\n currentInput.focus();\r\n }\r\n };\r\n\r\n const hanlePinPaste = (e: any) => {\r\n const pastedText = e.clipboardData.getData(\"text\");\r\n const numbersFromText = pastedText?.replace(/\\D/g, \"\");\r\n const allOptInputs: any = document.getElementsByClassName(\"otp-input\");\r\n if (allOptInputs?.length === 4 && numbersFromText?.length > 0) {\r\n for (let i = 0; i < allOptInputs.length; i++) {\r\n if (numbersFromText[i]) {\r\n allOptInputs[i].value = numbersFromText[i];\r\n allOptInputs[i].focus();\r\n }\r\n }\r\n }\r\n };\r\n\r\n const hanslePinBackspace = (e: any) => {\r\n const previousInpput = e.target.previousElementSibling;\r\n if (previousInpput) {\r\n previousInpput.focus();\r\n }\r\n };\r\n\r\n const handleButtonDisplay = () => {\r\n const button: any = document.getElementById(\r\n \"verified-custd-mdl-otp-button\"\r\n );\r\n const otp1: any = document.getElementById(\"verified-custd-mdl-otp-input-1\");\r\n const otp2: any = document.getElementById(\"verified-custd-mdl-otp-input-2\");\r\n const otp3: any = document.getElementById(\"verified-custd-mdl-otp-input-3\");\r\n const otp4: any = document.getElementById(\"verified-custd-mdl-otp-input-4\");\r\n if (\r\n button &&\r\n otp1?.value.length > 0 &&\r\n otp2?.value.length > 0 &&\r\n otp3?.value.length > 0 &&\r\n otp4?.value.length > 0 &&\r\n !pinIncorrect\r\n ) {\r\n button.className = \"verified-custd-mdl-startup-button-active\";\r\n } else {\r\n button.className = \"verified-custd-mdl-startup-button\";\r\n }\r\n };\r\n\r\n const handleVerifyPin = async () => {\r\n if (!props.helperFunctions) {\r\n setPinIncorrectText(\r\n \"No Helper Functions. Please include all helper functions in the EnterPinPage props.\"\r\n );\r\n setPinIncorrect(true);\r\n } else {\r\n setPinIncorrectText(\"\");\r\n setPinIncorrect(false);\r\n const otp1: any = document.getElementById(\r\n \"verified-custd-mdl-otp-input-1\"\r\n );\r\n const otp2: any = document.getElementById(\r\n \"verified-custd-mdl-otp-input-2\"\r\n );\r\n const otp3: any = document.getElementById(\r\n \"verified-custd-mdl-otp-input-3\"\r\n );\r\n const otp4: any = document.getElementById(\r\n \"verified-custd-mdl-otp-input-4\"\r\n );\r\n if (\r\n otp1?.value?.length > 0 &&\r\n otp2?.value?.length > 0 &&\r\n otp3?.value?.length > 0 &&\r\n otp4?.value?.length > 0 &&\r\n props.hashedVaultId &&\r\n props.encrptedPk\r\n ) {\r\n props.setIsLoading(true);\r\n const fullOtp = otp1?.value + otp2?.value + otp3?.value + otp4?.value;\r\n await validateVaultPin(\r\n props.vaultId,\r\n props.hashedVaultId,\r\n fullOtp,\r\n hashTheString(fullOtp),\r\n props.encrptedPk,\r\n props.vaultAddress,\r\n props.vaultChannel,\r\n Number(chainId)\r\n ).then(async (res) => {\r\n props.setIsLoading(false);\r\n if (res) {\r\n setVaultData(res);\r\n if (\r\n props.action === \"getPk\" &&\r\n props.reqVaultData?.vaultId?.toLowerCase() ===\r\n props.vaultId?.toLowerCase()\r\n ) {\r\n props.setIsLoading(true);\r\n await initiateVaultRecovery(\r\n props.helperFunctions.sendCreatorInitiation,\r\n props.hashedVaultId,\r\n hashTheString(fullOtp),\r\n props.vaultId,\r\n fullOtp,\r\n props.encrptedPk,\r\n props.vaultChannel,\r\n Number(chainId)\r\n ).then(async (res) => {\r\n props.setIsLoading(false);\r\n if (chrome?.storage?.local) {\r\n await chrome.storage.local.remove(\"myVault\");\r\n } else if (!chrome?.storage?.local && localStorage) {\r\n localStorage.removeItem(\"myVault\");\r\n }\r\n if (res) {\r\n setShowSuccess(true);\r\n } else {\r\n setPinIncorrectText(\r\n `Account recovery failed. Verify you don't have pending account recovery process and Try again later`\r\n );\r\n setPinIncorrect(true);\r\n }\r\n });\r\n } else if (props.action === \"signRecovery\") {\r\n props.setIsLoading(true);\r\n await signVaultRecovery(\r\n props.helperFunctions.sendCreatorSigned,\r\n props.helperFunctions.sendCreatorCompleted,\r\n props.hashedVaultId,\r\n hashTheString(fullOtp),\r\n props.vaultId,\r\n fullOtp,\r\n props.encrptedPk,\r\n props.reqVaultData?.vaultId,\r\n props.reqVaultData?.hashedVaultId,\r\n props.reqVaultData?.hashedVaultPin,\r\n props.reqTxData?.id,\r\n Number(chainId)\r\n ).then(async (res) => {\r\n props.setIsLoading(false);\r\n if (\r\n !props.reqTxData?.newUser &&\r\n chrome?.storage?.local &&\r\n !props.vaultAddress\r\n ) {\r\n await chrome.storage.local.remove(\"myVault\");\r\n } else if (\r\n !props.reqTxData?.newUser &&\r\n !chrome?.storage?.local &&\r\n !props.vaultAddress &&\r\n localStorage\r\n ) {\r\n localStorage.removeItem(\"myVault\");\r\n }\r\n if (res) {\r\n setShowSuccess(true);\r\n } else {\r\n setPinIncorrectText(\r\n `Error while signing transaction; it's either you are not a valid co-signer or you had signed this particular transaction before. Verify and try again later.`\r\n );\r\n setPinIncorrect(true);\r\n }\r\n });\r\n } else if (\r\n props.action === \"completeRecovery\" &&\r\n props.reqVaultData?.vaultId?.toLowerCase() ===\r\n props.vaultId?.toLowerCase()\r\n ) {\r\n props.setIsLoading(true);\r\n await restoreVaultLogin(\r\n props.hashedVaultId,\r\n hashTheString(fullOtp),\r\n props.vaultId,\r\n fullOtp,\r\n props.encrptedPk,\r\n props.reqTxData?.id,\r\n props.vaultChannel,\r\n Number(chainId)\r\n ).then(async (res) => {\r\n props.setIsLoading(false);\r\n if (res) {\r\n setShowSuccess(true);\r\n } else {\r\n if (chrome?.storage?.local) {\r\n await chrome.storage.local.remove(\"myVault\");\r\n } else if (!chrome?.storage?.local && localStorage) {\r\n localStorage.removeItem(\"myVault\");\r\n }\r\n setPinIncorrectText(\r\n `Error while restoring login access. Verify all required co-signers had signed our account recovery and try again later.`\r\n );\r\n setPinIncorrect(true);\r\n }\r\n });\r\n } else if (\r\n props.action === \"invitation\" &&\r\n props.reqVaultData?.vaultId?.toLowerCase() !==\r\n props.vaultId?.toLowerCase() &&\r\n props.reqVaultData?.coSignerId?.toLowerCase() ===\r\n props.vaultId?.toLowerCase()\r\n ) {\r\n setPinIncorrectText(\"\");\r\n setPinIncorrect(false);\r\n setShowInvitation(true);\r\n } else if (\r\n props.action === \"invitation\" &&\r\n props.reqVaultData?.vaultId?.toLowerCase() ===\r\n props.vaultId?.toLowerCase()\r\n ) {\r\n setPinIncorrectText(\r\n `You cannot accept your own Co-Signer invitation. please logout and login to: ${props.reqVaultData?.coSignerId} account`\r\n );\r\n setPinIncorrect(true);\r\n } else if (\r\n props.action === \"invitation\" &&\r\n props.reqVaultData?.coSignerId?.toLowerCase() !==\r\n props.vaultId?.toLowerCase()\r\n ) {\r\n setPinIncorrectText(\r\n `You cannot accept this Co-Signer invitation. please logout and login to: ${props.reqVaultData?.coSignerId} account`\r\n );\r\n setPinIncorrect(true);\r\n } else if (\r\n props.action === \"getPk\" &&\r\n props.reqVaultData?.vaultId?.toLowerCase() !==\r\n props.vaultId?.toLowerCase()\r\n ) {\r\n if (chrome?.storage?.local) {\r\n await chrome.storage.local.remove(\"myVault\");\r\n } else if (!chrome?.storage?.local && localStorage) {\r\n localStorage.removeItem(\"myVault\");\r\n }\r\n setPinIncorrectText(\r\n `You are not authorized to fetch account details. please logout and login to: ${props.reqVaultData?.vaultId} account`\r\n );\r\n setPinIncorrect(true);\r\n } else if (\r\n props.action === \"completeRecovery\" &&\r\n props.reqVaultData?.vaultId?.toLowerCase() !==\r\n props.vaultId?.toLowerCase()\r\n ) {\r\n if (chrome?.storage?.local) {\r\n await chrome.storage.local.remove(\"myVault\");\r\n } else if (!chrome?.storage?.local && localStorage) {\r\n localStorage.removeItem(\"myVault\");\r\n }\r\n setPinIncorrectText(\r\n `You are not authorized to restore login access for this account. please logout and login to: ${props.reqVaultData?.vaultId} account`\r\n );\r\n setPinIncorrect(true);\r\n } else if (\r\n props.action === \"connect_wallet\" &&\r\n !props?.vaultAddress\r\n ) {\r\n setPinIncorrectText(\r\n `Incomplete account details received. This may be due to incomplete/unexpected error from last login. Please logout and login back to recover account details.`\r\n );\r\n setPinIncorrect(true);\r\n } else {\r\n setPinIncorrectText(\"\");\r\n setPinIncorrect(false);\r\n setShowSuccess(true);\r\n }\r\n } else {\r\n setPinIncorrectText(\"\");\r\n setPinIncorrect(true);\r\n }\r\n });\r\n }\r\n }\r\n };\r\n\r\n const handleAcceptAndRejectInvitation = async (accepted: boolean) => {\r\n const otp1: any = document.getElementById(\"verified-custd-mdl-otp-input-1\");\r\n const otp2: any = document.getElementById(\"verified-custd-mdl-otp-input-2\");\r\n const otp3: any = document.getElementById(\"verified-custd-mdl-otp-input-3\");\r\n const otp4: any = document.getElementById(\"verified-custd-mdl-otp-input-4\");\r\n const vaultId = props.vaultId;\r\n if (\r\n otp1?.value?.length > 0 &&\r\n otp2?.value?.length > 0 &&\r\n otp3?.value?.length > 0 &&\r\n otp4?.value?.length > 0 &&\r\n props?.reqVaultData?.hashedVaultId &&\r\n props.reqVaultData?.hashedVaultPin &&\r\n vaultId &&\r\n props.helperFunctions?.sendCreatorAcceptance &&\r\n props.helperFunctions?.sendCreatorRejection\r\n ) {\r\n props.setIsLoading(true);\r\n const vaultPin = otp1?.value + otp2?.value + otp3?.value + otp4?.value;\r\n const hashedVaultId = hashTheString(vaultId);\r\n const hashedVaultPin = hashTheString(vaultPin);\r\n await acceptOrRejectInvitation(\r\n props.helperFunctions.sendCreatorAcceptance,\r\n props.helperFunctions.sendCreatorRejection,\r\n props.vaultChannel,\r\n hashedVaultId,\r\n hashedVaultPin,\r\n props?.reqVaultData?.hashedVaultId,\r\n props.reqVaultData?.hashedVaultPin,\r\n props?.reqVaultData?.vaultId,\r\n vaultId,\r\n accepted,\r\n null,\r\n props.encrptedPk,\r\n Number(chainId)\r\n ).then((res) => {\r\n props.setIsLoading(false);\r\n if (res) {\r\n setIsAccepted(accepted);\r\n setShowInvitationSuccess(true);\r\n }\r\n });\r\n }\r\n };\r\n\r\n return (\r\n <React.Fragment>\r\n {fontsLoaded && !showInvitation && (\r\n <React.Fragment>\r\n {!showSuccess && (\r\n <div className=\"verified-custd-mdl-startup-language\">\r\n <div className=\"verified-custd-mdl-startup-contact\">\r\n <PageSlider sliderCount={[1]} currentSlider=\"0\" />\r\n <div className=\"verified-custd-mdl-startup-contact-content\">\r\n <div className=\"verified-custd-mdl-startup-contact-content-heder-cont\">\r\n <p\r\n style={{ alignSelf: \"center\" }}\r\n className=\"verified-custd-mdl-startup-contact-text\"\r\n >\r\n Enter PIN\r\n </p>\r\n {/* <div className=\"verified-custd-mdl-portfolio-page-content-header-button-cont\">\r\n <button\r\n onClick={() => setShowChains(!showChains)}\r\n className=\"verified-custd-mdl-portfolio-page-content-header-button\"\r\n >\r\n {chainConfig[chainId].chainName}\r\n <img src={expandIcon} alt=\"Expand Icon\" />\r\n </button>\r\n {showChains && (\r\n <div className=\"verified-custd-mdl-portfolio-page-content-header-button-body\">\r\n {Object.keys(chainConfig).map((chn: any) => (\r\n <div\r\n onClick={() => {\r\n setChainId(chn);\r\n setShowChains(false);\r\n }}\r\n className=\"verified-custd-mdl-portfolio-page-content-header-button-body-cont\"\r\n >\r\n <p className=\"verified-custd-mdl-portfolio-page-content-header-button-body-text\">\r\n {chainConfig[chn].chainName}\r\n </p>\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n </div> */}\r\n </div>\r\n <div className=\"verified-custd-mdl-startup-otp-text\">\r\n <p className=\"verified-custd-mdl-startup-otp-header-text\">\r\n Welcome back, please enter the{\" \"}\r\n <span style={{ color: \"#0C0C0E\" }}>4-Digit PIN</span> for\r\n your{\" \"}\r\n <span style={{ color: \"#0C0C0E\" }}>{props.vaultId}</span>{\" \"}\r\n account.\r\n </p>\r\n <div className=\"verified-custd-mdl-startup-otp-footer\">\r\n {props.actionText && (\r\n <p className=\"verified-custd-mdl-startup-otp-footer-text\">\r\n {props.actionText ? `To ${props.actionText} ` : \"\"}{\" \"}\r\n from origin: {props.origin || props.title}\r\n </p>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"verified-custd-mdl-otp-input-container\">\r\n <div className=\"verified-custd-mdl-otp-input-group\">\r\n <input\r\n onInputCapture={(e: any) => {\r\n e.target.value = e.target.value?.replace(/\\D/g, \"\");\r\n setPinIncorrect(false);\r\n }}\r\n onInput={(e) => {\r\n handlleInputFocus(e.target);\r\n handleButtonDisplay();\r\n }}\r\n onKeyDown={(e: any) => {\r\n if (e.key === \"Backspace\" && e.target.value === \"\") {\r\n hanslePinBackspace(e);\r\n }\r\n }}\r\n onPaste={(e) => {\r\n hanlePinPaste(e);\r\n }}\r\n className={\r\n pinIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n type={pinHide ? \"password\" : \"text\"}\r\n maxLength={1}\r\n id=\"verified-custd-mdl-otp-input-1\"\r\n />\r\n <input\r\n onInputCapture={(e: any) => {\r\n e.target.value = e.target.value?.replace(/\\D/g, \"\");\r\n setPinIncorrect(false);\r\n }}\r\n onInput={(e) => {\r\n handlleInputFocus(e.target);\r\n handleButtonDisplay();\r\n }}\r\n onKeyDown={(e: any) => {\r\n if (e.key === \"Backspace\" && e.target.value === \"\") {\r\n hanslePinBackspace(e);\r\n }\r\n }}\r\n className={\r\n pinIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n type={pinHide ? \"password\" : \"text\"}\r\n maxLength={1}\r\n id=\"verified-custd-mdl-otp-input-2\"\r\n />\r\n <input\r\n onInputCapture={(e: any) => {\r\n e.target.value = e.target.value?.replace(/\\D/g, \"\");\r\n setPinIncorrect(false);\r\n }}\r\n onInput={(e) => {\r\n handlleInputFocus(e.target);\r\n handleButtonDisplay();\r\n }}\r\n onKeyDown={(e: any) => {\r\n if (e.key === \"Backspace\" && e.target.value === \"\") {\r\n hanslePinBackspace(e);\r\n }\r\n }}\r\n className={\r\n pinIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n type={pinHide ? \"password\" : \"text\"}\r\n maxLength={1}\r\n id=\"verified-custd-mdl-otp-input-3\"\r\n />\r\n <input\r\n onInputCapture={(e: any) => {\r\n e.target.value = e.target.value?.replace(/\\D/g, \"\");\r\n setPinIncorrect(false);\r\n }}\r\n onInput={(e) => {\r\n handlleInputFocus(e.target);\r\n handleButtonDisplay();\r\n }}\r\n onKeyDown={(e: any) => {\r\n if (e.key === \"Backspace\" && e.target.value === \"\") {\r\n hanslePinBackspace(e);\r\n }\r\n }}\r\n className={\r\n pinIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n type={pinHide ? \"password\" : \"text\"}\r\n maxLength={1}\r\n id=\"verified-custd-mdl-otp-input-4\"\r\n />\r\n </div>\r\n <div className=\"verified-custd-mdl-otp-timer\">\r\n {pinIncorrect && pinIncorrectText === \"\" && (\r\n <p className=\"verified-custd-mdl-otp-incorrect-text\">\r\n Please enter the correct pin\r\n </p>\r\n )}\r\n {pinIncorrect && pinIncorrectText?.length > 0 && (\r\n <p className=\"verified-custd-mdl-otp-incorrect-text\">\r\n {pinIncorrectText}\r\n </p>\r\n )}\r\n {!pinIncorrect && (\r\n <p className=\"verified-custd-mdl-otp-incorrect-text\"></p>\r\n )}\r\n\r\n {!pinHide && (\r\n <img\r\n style={{\r\n cursor: \"pointer\",\r\n width: \"24px\",\r\n height: \"24px\",\r\n }}\r\n onClick={() => setPinHide(true)}\r\n src={imageAssets.pinShow}\r\n alt=\"show pin icon\"\r\n />\r\n )}\r\n {pinHide && (\r\n <img\r\n style={{\r\n cursor: \"pointer\",\r\n width: \"24px\",\r\n height: \"24px\",\r\n }}\r\n onClick={() => setPinHide(false)}\r\n src={imageAssets.pinHide}\r\n alt=\"hide pin icon\"\r\n />\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n {!searchActive && <div style={{ height: \"100px\" }}></div>}\r\n\r\n <div className=\"verified-custd-mdl-startup-contact-footer\">\r\n <div className=\"verified-custd-mdl-st-contact-footer-first-section\">\r\n <LogoutOverlay\r\n setisOnboard={props.setisOnboard}\r\n setIsLoading={props.setIsLoading}\r\n />\r\n <button\r\n id=\"verified-custd-mdl-otp-button\"\r\n onClick={async (e: any) => {\r\n if (\r\n e.target.className.includes(\r\n \"verified-custd-mdl-startup-button\"\r\n ) &&\r\n e.target.className !==\r\n \"verified-custd-mdl-startup-button\"\r\n ) {\r\n e.target.className =\r\n \"verified-custd-mdl-startup-button-click\";\r\n await handleVerifyPin();\r\n } else {\r\n const buttonElement = document.getElementsByClassName(\r\n \"verified-custd-mdl-startup-button-active\"\r\n );\r\n if (buttonElement.length > 0) {\r\n buttonElement[0].className =\r\n \"verified-custd-mdl-startup-button-click\";\r\n await handleVerifyPin();\r\n }\r\n }\r\n }}\r\n className=\"verified-custd-mdl-startup-button\"\r\n >\r\n Proceed\r\n </button>\r\n <div className=\"verified-custd-mdl-st-contact-footer-second-section\">\r\n <PrivacyOverlay />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n {showSuccess && (\r\n <Success\r\n messageTosend={\r\n props.action === \"getPk\"\r\n ? {\r\n type: \"closePopup\",\r\n key: \"\",\r\n value: \"\",\r\n }\r\n : props.action === \"signRecovery\"\r\n ? {\r\n type: \"closePopup\",\r\n key: \"\",\r\n value: \"\",\r\n }\r\n : props.action === \"completeRecovery\"\r\n ? {\r\n type: \"closePopup\",\r\n key: \"\",\r\n value: \"\",\r\n }\r\n : {\r\n type: \"vaultData\",\r\n key: \"vaultData\",\r\n value: vaultData,\r\n }\r\n }\r\n customTextHeader={\"Successful\"}\r\n customTextFooter={\r\n props.action === \"getPk\" && props.vaultChannel === \"email\"\r\n ? \"You have successfully initiated your account recovery process check your email for further instructions\"\r\n : props.action === \"getPk\" && props.vaultChannel === \"sms\"\r\n ? \"You have successfully initiated your account recovery process check your phone number messages for further instructions\"\r\n : props.action === \"signRecovery\"\r\n ? `Congratulations! You have successfully signed account recovery transaction for user: ${props.reqVaultData?.vaultId}`\r\n : props.action === \"completeRecovery\"\r\n ? `Congratulations! You have successfully restored login access for your ${props?.vaultId} account`\r\n : `Congratulations! You have successfully ${\r\n props.action === \"connect_wallet\"\r\n ? \"connected your account\"\r\n : props?.actionText\r\n ? props.actionText\r\n : \"logged in to your account.\"\r\n } `\r\n }\r\n />\r\n )}\r\n </React.Fragment>\r\n )}\r\n {fontsLoaded && showInvitation && (\r\n <React.Fragment>\r\n {!showInvitationSuccess && (\r\n <div\r\n style={{ padding: \"0\", position: \"relative\" }}\r\n className=\"verified-custd-mdl-startup-language\"\r\n >\r\n <div className=\"verified-custd-mdl-startup-contact\">\r\n <PageSlider sliderCount={[1, 2, 3]} currentSlider=\"1\" />\r\n <div className=\"verified-custd-mdl-startup-contact-content\">\r\n <p className=\"verified-custd-mdl-startup-contact-text\">\r\n <b>{props.reqVaultData?.vaultId}</b> has requested you to be\r\n a Co-Signer\r\n </p>\r\n </div>\r\n </div>\r\n <img\r\n className=\"verified-custd-mdl-add-cosigner-body-icon\"\r\n src={imageAssets.addCoSignerIcon1}\r\n alt=\"\"\r\n />\r\n {!showRejectInvitation && (\r\n <React.Fragment>\r\n <div className=\"verified-custd-mdl-add-cosigner-more-body\">\r\n <div className=\"verified-custd-mdl-add-cosigner-more-header-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-more-title-cont\">\r\n <p className=\"verified-custd-mdl-add-cosigner-more-title\">\r\n What is a Co-Signer?\r\n </p>\r\n </div>\r\n </div>\r\n <p\r\n style={{\r\n fontSize: \"12px\",\r\n color: \"var(--Neutral-600, #5B5D6E)\",\r\n }}\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n >\r\n A Co-Signer is a person who has the right given by you to\r\n generate a new pin on your behalf incase you forget it.{\" \"}\r\n </p>\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-body-text-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-body-text-icon\">\r\n <img src={imageAssets.pkicon} alt=\"icon\" />\r\n </div>\r\n <p className=\"verified-custd-mdl-add-cosigner-body-text-label\">\r\n As a Co Signer you can help{\" \"}\r\n <span className=\"verified-custd-mdl-add-cosigner-body-text-label-bold\">\r\n reset PIN\r\n </span>\r\n </p>\r\n </div>\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-body-text-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-body-text-icon\">\r\n <img src={imageAssets.encryptedIcon} alt=\"icon\" />\r\n </div>\r\n <p className=\"verified-custd-mdl-add-cosigner-body-text-label\">\r\n Don’t worry, they{\" \"}\r\n <span className=\"verified-custd-mdl-add-cosigner-body-text-label-bold\">\r\n will not get access\r\n </span>{\" \"}\r\n to your account in any way.\r\n </p>\r\n </div>\r\n </div>\r\n <div className=\"verified-custd-mdl-add-cosigner-buttons-cont\">\r\n <button\r\n onClick={() => {\r\n setShowRejectInvitation(true);\r\n }}\r\n className=\"verified-custd-mdl-add-cosigner-button-neut\"\r\n >\r\n Reject\r\n </button>\r\n\r\n <button\r\n onClick={async () => {\r\n await handleAcceptAndRejectInvitation(true);\r\n }}\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n >\r\n Accept\r\n </button>\r\n </div>\r\n </React.Fragment>\r\n )}\r\n\r\n {showRejectInvitation && (\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-content-outter\">\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-content\">\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-header\">\r\n <p className=\"verified-custd-mdl-add-cosigner-confirm-body-title\">\r\n Are you sure you want to reject this request?\r\n </p>\r\n <p\r\n style={{\r\n fontSize: \"12px\",\r\n color: \"var(--Neutral-600, #5B5D6E)\",\r\n }}\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-label\"\r\n >\r\n Once you reject to be a co-signer for{\" \"}\r\n <b>{props.reqVaultData?.vaultId}</b>, you will not be\r\n able to reset the PIN for them.\r\n </p>\r\n </div>\r\n\r\n <div\r\n style={{ width: \"90%\" }}\r\n className=\"verified-custd-mdl-add-cosigner-buttons-cont\"\r\n >\r\n <button\r\n onClick={async () => {\r\n await handleAcceptAndRejectInvitation(false);\r\n }}\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n >\r\n Yes\r\n </button>\r\n\r\n <button\r\n onClick={() => {\r\n setShowRejectInvitation(false);\r\n }}\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n >\r\n No\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n {showInvitationSuccess && (\r\n <Success\r\n messageTosend={{\r\n type: \"getPk\",\r\n key: \"vaultData\",\r\n value: vaultData,\r\n }}\r\n customTextHeader=\"Successful\"\r\n customTextFooter={\r\n isAccepted\r\n ? `You have been added as a Co-Signer for ${props.reqVaultData?.vaultId}`\r\n : `You rejected Co-signer reject from ${props.reqVaultData?.vaultId}`\r\n }\r\n />\r\n )}\r\n </React.Fragment>\r\n )}\r\n {!fontsLoaded && <h3>Preparing Modules...</h3>}\r\n </React.Fragment>\r\n );\r\n};\r\n\r\nexport default EnterPinPage;\r\n"],"mappings":"AACA,SAASA,GAAYC,EAAK,CACxB,GAAI,CAACA,GAAO,OAAO,SAAa,IAAa,OAE7C,IAAMC,EAAO,SAAS,MAAQ,SAAS,qBAAqB,MAAM,EAAE,CAAC,EAC/DC,EAAQ,SAAS,cAAc,OAAO,EAC5CA,EAAM,KAAO,WAEVD,EAAK,WACNA,EAAK,aAAaC,EAAOD,EAAK,UAAU,EAExCA,EAAK,YAAYC,CAAK,EAGrBA,EAAM,WACPA,EAAM,WAAW,QAAUF,EAE3BE,EAAM,YAAY,SAAS,eAAeF,CAAG,CAAC,CAElD,CACAD,GAAY;AAAA,CAAmj/B,ECpB3j/B,OAAO,OAAW,MACnB,OAAe,OAAS,CAAC,GCD5B,OAAOI,IAAS,aAAAC,GAAW,YAAAC,OAAgB,QCA3C,OAAOC,IAAS,iBAAAC,GAAe,cAAAC,GAAY,YAAAC,OAAgB,QAmB3D,IAAMC,GAAoBH,GAAsC,MAAS,EAE5DI,GAAwBC,GAE/B,CACJ,GAAM,CAACC,EAASC,CAAU,EAAIL,GAAwB,IAAI,EACpD,CAACM,EAAIC,CAAK,EAAIP,GAAwB,IAAI,EAC1C,CAACQ,EAASC,CAAU,EAAIT,GAAwB,IAAI,EACpD,CAACU,EAAQC,CAAS,EAAIX,GAAc,IAAI,EACxC,CAACY,EAAUC,CAAW,EAAIb,GAAc,IAAI,EAC5C,CAACc,EAAeC,CAAgB,EAAIf,GAAc,IAAI,EACtD,CAACgB,EAAWC,CAAY,EAAIjB,GAAc,IAAI,EAC9C,CAACkB,EAAUC,CAAW,EAAInB,GAAwB,IAAI,EAE5D,OACEH,GAAA,cAACI,GAAkB,SAAlB,CACC,MAAO,CACL,QAAAG,EACA,GAAAE,EACA,QAAAE,EACA,OAAAE,EACA,SAAAE,EACA,cAAAE,EACA,UAAAE,EACA,WAAAX,EACA,MAAAE,EACA,WAAAE,EACA,UAAAE,EACA,YAAAE,EACA,iBAAAE,EACA,aAAAE,CACF,GAECd,EAAM,QACT,CAEJ,EAEaiB,GAAgB,IAAM,CACjC,IAAMC,EAAUtB,GAAWE,EAAiB,EAC5C,GAAIoB,EACF,OAAOA,EAEP,MAAM,MAAM,wDAAwD,CAExE,EChEA,OAAOC,IAAS,aAAAC,GAAW,YAAAC,OAAgB,QAC3C,OAAS,YAAAC,OAAgB,SCDlB,IAAMC,GACX,QAAQ,IAAI,qBAAuB,aAAe,KAAO,SAE9CC,GACX,QAAQ,IAAI,qBAAuB,aAC/B,kCACA,gCAEOC,GAAoB,CAC/B,iJACA,8KACA,qFACF,EAEaC,GACX,qEAEWC,GAAe,qCAEfC,GAAkB,CAC7B,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,KACL,EAEaC,GAAqB,CAChC,EAAG,OACH,EAAG,OACH,EAAG,OACH,EAAG,OACH,EAAG,MACL,EAEaC,GAAc,CACzB,eAAgB,uBAChB,MAAO,+BACP,WAAY,8BACZ,aAAc,wBACd,iBAAkB,sBACpB,EAEaC,EAAc,CACzB,YACE,iGACF,QACE,kHACF,WACE,4FACF,iBACE,oGACF,iBACE,oGACF,iBACE,oGACF,iBACE,oGACF,OACE,wFACF,cACE,+FACF,QACE,8FACF,QACE,8FACF,QACE,iGACF,UACE,iGACF,SACE,qFACF,UACE,0FACF,OACE,4FACF,cACE,kGACF,UACE,gGACF,OACE,4FACF,QACE,6FACF,UACE,4FACF,OACE,4FACF,cACE,oGACF,QACE,iGACF,eACE,gGACF,WACE,2FACF,aACE,6FACF,YACE,4FACJ,EAEaC,GAAmB,CAC9B,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,iBACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,aACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,sBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,yBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,iCACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,oBACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,GACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,iBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,2BACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,mBACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,0BACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,4BACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,2CACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,iBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,qBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,oBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,mBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,gBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,gBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,oCACN,KAAM,KACN,SAAU,MACV,UAAW,YACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,GACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,gBACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,gBACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,gBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,mBACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,gBACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,iBACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,kBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,2BACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,mBACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,mBACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,GACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,sBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,wBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,4BACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,mCACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,wBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,iBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,kBACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,+CACN,KAAM,KACN,SAAU,MACV,UAAW,aACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,yBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,sBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,uBACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,iBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,gBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,GACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,oBACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,iBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,CACF,EC/6DA,OACE,mBAAAC,GACA,WAAAC,GACA,YAAAC,GACA,kBAAAC,OACK,iCCLA,IAAMC,GAAmB,CAC9B,EAAG,CACD,QAAS,MACT,UAAW,WACX,eAAgB,CACd,KAAM,MACN,OAAQ,MACR,SAAU,EACZ,EACA,QAAS,CACP,6CAA6C,QAAQ,IAAI,sBAAsB,GACjF,EACA,kBAAmB,CAAC,uBAAuB,CAC7C,EAEA,KAAM,CACJ,QAAS,SACT,UAAW,eACX,eAAgB,CACd,KAAM,MACN,OAAQ,MACR,SAAU,EACZ,EACA,QAAS,CACP,uDAAuD,QAAQ,IAAI,uBAAuB,GAC5F,EACA,kBAAmB,CAAC,uBAAuB,CAC7C,EAEA,IAAK,CACH,QAAS,OACT,UAAW,SACX,eAAgB,CACd,KAAM,OACN,OAAQ,OACR,SAAU,EACZ,EACA,QAAS,CAAC,8BAA8B,EACxC,kBAAmB,CAAC,wBAAwB,CAC9C,EAEA,SAAU,CACR,QAAS,WACT,UAAW,uBACX,eAAgB,CACd,KAAM,MACN,OAAQ,MACR,SAAU,EACZ,EACA,QAAS,CAAC,wCAAwC,EAClD,kBAAmB,CAAC,+BAA+B,CACrD,EAEA,MAAO,CACL,QAAS,UACT,UAAW,eACX,eAAgB,CACd,KAAM,MACN,OAAQ,MACR,SAAU,EACZ,EACA,QAAS,CAAC,0BAA0B,EACpC,kBAAmB,CAAC,+BAA+B,CACrD,CACF,EAEaC,GAAuB,CAClC,0BAA2B,qCAG3B,SAAU,CACR,kBAAmB,iDACnB,gBAAiB,gDACnB,EAEA,IAAK,CACH,kBAAmB,iDACnB,gBAAiB,4CACnB,EAEA,MAAO,CACL,kBAAmB,iDACnB,gBAAiB,gDACnB,EAGA,EAAG,CACD,kBAAmB,iDACnB,gBAAiB,0CACnB,EAGA,KAAM,CACJ,kBAAmB,iDACnB,gBAAiB,0CACnB,EAGA,IAAK,CACH,kBAAmB,iDACnB,gBAAiB,0CACnB,CACF,EDzFA,OAAOC,OAAY,SACnB,OAAOC,OAAW,YAClB,OAAS,SAAAC,OAAa,iBAEtB,OAAS,4BAAAC,OAAgC,oBACzC,OAAOC,OAAW,QAMX,IAAMC,GAAsBC,GAAuB,CAIxD,GAAI,CAHcA,EAAS,cACzB,2CACF,EACgB,CACd,IAAMC,EAAUD,EAAS,cAAc,MAAM,EAC7CC,EAAQ,IAAM,aACdA,EAAQ,KAAO,+BACfD,EAAS,KAAK,YAAYC,CAAO,CACnC,CAIA,GAAI,CAHiBD,EAAS,cAC5B,wCACF,EACmB,CACjB,IAAME,EAAaF,EAAS,cAAc,MAAM,EAChDE,EAAW,IAAM,aACjBA,EAAW,KAAO,4BAClBF,EAAS,KAAK,YAAYE,CAAU,CACtC,CACA,OAAAC,GAAkB,IAAKC,GAAY,CAEjC,GAAI,CADeJ,EAAS,cAAc,cAAcI,CAAO,IAAI,EAClD,CACf,IAAMC,EAAWL,EAAS,cAAc,MAAM,EAC9CK,EAAS,IAAM,aACfA,EAAS,KAAOD,EAChBJ,EAAS,KAAK,YAAYK,CAAQ,CACpC,CACF,CAAC,EAEM,EACT,EASaC,GAAwB,MACnCC,EACAC,IACG,CAlEL,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAmEE,GAAI,CACF,IAAIC,EAEJ,GAAIN,EACFM,EAAS,IAAIC,GAAeP,CAAU,MACjC,CACL,IAAMQ,EAAYD,GAAe,iBAAiB,EAClDD,EAASC,GAAe,aAAaC,CAAS,CAChD,CAGA,IAAMC,EAAoBC,GACpBC,EACJZ,KACAE,EAAAQ,EAAaV,CAAO,IAApB,MAAAE,EAAuB,YACvBE,GAAAD,EAAAU,GAAYb,CAAO,IAAnB,YAAAG,EAAsB,UAAtB,YAAAC,EAA+B,QAAS,EACpCJ,EACAc,GACAC,GAAWV,EAAAQ,GAAYD,CAAQ,IAApB,YAAAP,EAAuB,QAAQ,GAC1CW,EAAST,EAAO,YAAY,IAAIU,GAASF,CAAQ,CAAC,EAClDG,EAAKX,EAAO,WACZY,EAAgB,IAAIC,GAAQJ,GAAQV,EAAAI,EAAaE,CAAQ,IAArB,YAAAN,EAAwB,OAAO,EAMnEe,EAAU,MALK,MAAM/B,GAAyB,CAClD,OAAQ0B,EACR,WAAY,GAAGM,GAAgB,yBAAyB,IAAIV,CAAQ,IAAIU,GAAgBV,CAAQ,EAAE,eAAkB,GACpH,wBAAyBU,GAAgBV,CAAQ,EAAE,iBACrD,CAAC,GACkC,kBAAkB,EAGrD,MAAO,CACL,QAASA,EACT,QAAAS,EACA,GAAAH,EACA,OAAAF,EACA,SAAAD,EACA,cAAAI,EACA,UAAW,IACb,CACF,OAASI,EAAK,CACZ,OAAI,QAAQ,IAAI,qBAAuB,cACrC,QAAQ,MACN,wDACAA,CACF,EAGK,CACL,QAAS,KACT,QAAS,KACT,GAAI,KACJ,OAAQ,KACR,SAAU,KACV,cAAe,KACf,UAAW,IACb,CACF,CACF,EAEaC,GAAsB,MACjCC,EACAC,IACG,CACH,GAAI,CACF,IAAMC,EAAO,KAAK,UAAU,CAC1B,GAAIF,EACJ,QAASC,CACX,CAAC,EAWD,OADa,MARI,MAAM,MAAM,GAAGE,EAAY,gBAAiB,CAC3D,OAAQ,OACR,QAAS,CACP,eAAgB,kBAClB,EACA,KAAMD,CACR,CAAC,GAE2B,KAAK,GACrB,OACd,OAASE,EAAO,CACd,eAAQ,MAAMA,CAAK,EACZ,EACT,CACF,EAEaC,GAAuB,MAAOL,EAAmBM,IAAiB,CAC7E,GAAI,CACF,IAAMJ,EAAO,KAAK,UAAU,CAC1B,GAAIF,EACJ,KAAAM,CACF,CAAC,EAWD,OADa,MARI,MAAM,MAAM,GAAGH,EAAY,gBAAiB,CAC3D,OAAQ,OACR,QAAS,CACP,eAAgB,kBAClB,EACA,KAAMD,CACR,CAAC,GAE2B,KAAK,GACrB,OACd,OAASE,EAAO,CACd,eAAQ,MAAMA,GAAA,YAAAA,EAAO,OAAO,EACrB,EACT,CACF,EAEaG,GAAiBC,GACf9C,GAAO,WAAW,QAAQ,EAAE,OAAO8C,CAAI,EAAE,OAAO,KAAK,EACtD,MAAM,EAAG,EAAE,EAGZC,GAAgB,CAACD,EAAcE,IACrB/C,GAAM,IAAI,QAAQ6C,EAAME,CAAS,EAClC,SAAS,EAGlBC,GAAgB,CAACC,EAAuBF,IAAsB,CACzE,IAAIG,EAAiBlD,GAAM,IAAI,QAAQiD,EAAeF,CAAS,EAC3DI,EAAgBD,EAAe,SAASlD,GAAM,IAAI,IAAI,EAC1D,OAAOmD,CACT,EA2CO,IAAMC,GAAuB,CAACC,EAAeC,IAEhDC,GAAA,cAAC,OAAI,UAAU,8CACbA,GAAA,cAAC,OAAI,MAAO,CAAE,WAAY,KAAM,EAAG,IAAKC,EAAY,WAAY,IAAI,GAAG,EACvED,GAAA,cAAC,OAAI,UAAU,wDACbA,GAAA,cAAC,KAAE,UAAU,oDACVF,CACH,EACAE,GAAA,cAAC,KAAE,UAAU,oDACVD,CACH,CACF,CACF,EA0CG,IAAMG,GAAa,CAACC,EAAeC,KACxCC,GAAM,QAAQ,EACPA,GAAM,MAAMC,GAAqBH,EAAOC,CAAO,EAAG,CACvD,YAAa,GACb,SAAU,aACV,UAAW,IACX,gBAAiB,GACjB,aAAc,GACd,UAAW,GACX,aAAc,GACd,MAAO,CACL,WAAY,UACZ,MAAO,QACP,OAAQ,OACR,UAAW,OACX,SAAU,WACV,IAAK,MACL,MAAO,MACP,aAAc,KAChB,EACA,KAAM,EACR,CAAC,GEnTH,OAAOG,GAAS,YAAAC,OAAgB,QCAhC,OAAOC,OAAW,QAElB,IAAMC,GAAcC,GAAe,CAFnC,IAAAC,EAGE,OACEH,GAAA,cAAC,OAAI,UAAU,uCACZG,EAAAD,EAAM,cAAN,YAAAC,EAAmB,QAAS,GAC3BD,EAAM,YAAY,IAAI,CAACE,EAAQC,IAC7BL,GAAA,cAACA,GAAM,SAAN,CAAe,IAAKK,GAClBA,GAAO,OAAOH,EAAM,aAAa,GAChCF,GAAA,cAAC,OACC,IAAK,UAAUK,CAAG,GAClB,MAAO,CAAE,MAAO,GAAG,IAAMH,EAAM,YAAY,MAAM,GAAI,EACrD,UAAU,gDACX,EAEFG,EAAM,OAAOH,EAAM,aAAa,GAC/BF,GAAA,cAAC,OACC,IAAK,YAAYK,CAAG,GACpB,MAAO,CAAE,MAAO,GAAG,IAAMH,EAAM,YAAY,MAAM,GAAI,EACrD,UAAU,yCACX,CAEL,CACD,CACL,CAEJ,EAEOI,GAAQL,GC5Bf,OAAOM,GAAS,YAAAC,OAAgB,QAGhC,IAAMC,GAAaC,GAAe,CAHlC,IAAAC,EAIE,GAAM,CAACC,EAAkBC,CAAmB,EAAIC,GAC9C,IACF,EAEA,OACEC,EAAA,cAAC,OAAI,UAAU,yDACbA,EAAA,cAAC,OAAI,UAAU,0CACZL,EAAM,YACLK,EAAA,cAAC,KAAE,UAAU,uCACVL,EAAM,UACT,EAEFK,EAAA,cAAC,OAAI,UAAU,2DACbA,EAAA,cAAC,OAAI,UAAU,gDACbA,EAAA,cAAC,OACC,MAAO,CAAE,YAAa,KAAM,EAC5B,IAAKC,EAAY,OACjB,IAAI,cACJ,UAAU,wCACZ,EACAD,EAAA,cAAC,SACC,eAAgB,IAAM,CAChBL,EAAM,OAAS,YACjBA,EAAM,YAAY,EAAE,CAExB,EACA,QAAUO,GAAW,CACfA,EAAE,OAAO,QAAU,GACrBJ,EAAoB,IAAI,EAEpBH,EAAM,OAAS,WACjBG,EAEEH,EAAM,cAAc,OAAQQ,GAAa,CACvC,GACEA,EAAI,KACD,YAAY,EACZ,SAASD,EAAE,OAAO,MAAM,YAAY,CAAC,EAExC,OAAAC,EAAI,SAAWD,EAAE,OAAO,MAAM,YAAY,EAC1CC,EAAI,UAAYA,EAAI,KAAK,MAAM,EAAE,EAC1BA,CAEX,CAAC,CACH,EACSR,EAAM,OAAS,aACxBG,EAGEH,EAAM,cAAc,OAAQQ,GAAa,CArD/D,IAAAP,EAAAQ,EAsDwB,IACER,EAAAO,GAAA,YAAAA,EAAK,OAAL,MAAAP,EACI,cACD,SAASM,EAAE,OAAO,MAAM,YAAY,GAEvC,OAAAC,EAAI,SAAWD,EAAE,OAAO,MAAM,YAAY,EAC1CC,EAAI,WAAYC,EAAAD,GAAA,YAAAA,EAAK,OAAL,YAAAC,EAAW,MAAM,IAC1BD,CAEX,CAAC,CACH,EAIJR,EAAM,oBAAoB,CAC5B,EACA,KAAK,OACL,UAAU,2CACV,YAAY,SACd,CACF,EACAK,EAAA,cAAC,OAAI,UAAU,oDACbA,EAAA,cAAC,OACC,MACEL,EAAM,iBACF,CAAE,UAAW,GAAGA,EAAM,gBAAgB,IAAK,EAC3C,CAAC,EAEP,UAAU,kDAET,CAACE,KACAD,EAAAD,GAAA,YAAAA,EAAO,gBAAP,YAAAC,EAAsB,QAAS,GAC/BD,EAAM,cAAc,IAAI,CAACQ,EAAUE,IACjCL,EAAA,cAACA,EAAM,SAAN,CAAe,IAAKK,GAClBV,EAAM,OAAS,aACdK,EAAA,cAAC,OACC,IAAKK,EACL,eAAgB,IAAM,CACpBV,EAAM,YAAY,CAChB,KAAMQ,EAAI,WACV,KAAMA,EAAI,KACV,KAAMA,EAAI,IACZ,CAAC,CACH,EACA,QAAS,IAAM,CACTR,EAAM,iBACRA,EAAM,gBAAgB,CAACA,EAAM,eAAe,EAE9CA,EAAM,oBAAoB,CAC5B,EACA,UAAU,wCAEVK,EAAA,cAAC,OACC,IAAKG,EAAI,KACT,IAAI,qBACJ,UAAU,4CACZ,EACAH,EAAA,cAAC,KAAE,UAAU,6CACVG,EAAI,IACP,CACF,EAEDR,EAAM,OAAS,YACdK,EAAA,cAACA,EAAM,SAAN,KACE,OAAO,SAAS,SAAW,IAAIK,CAAG,IACjCL,EAAA,cAAC,OACC,IAAKK,EACL,eAAgB,IAAM,CACpBV,EAAM,YAAYQ,EAAI,IAAI,CAC5B,EACA,QAAS,IAAM,CACbR,EAAM,YAAYQ,EAAI,IAAI,EACtBR,EAAM,iBACRA,EAAM,gBAAgB,CAACA,EAAM,eAAe,EAE9CA,EAAM,oBAAoB,CAC5B,EACA,UAAU,wCAEVK,EAAA,cAAC,OACC,IAAKG,EAAI,KACT,IAAI,qBACJ,UAAU,4CACZ,EACCA,EAAI,OACHH,EAAA,cAAC,KAAE,UAAU,6CACVG,EAAI,KAAK,IAAE,IAAIA,EAAI,KAAK,GAC3B,EAED,CAACA,EAAI,OACJH,EAAA,cAAC,KAAE,UAAU,6CACVG,EAAI,IACP,CAEJ,EAED,OAAO,SAAS,SAAW,IAAIE,CAAG,IACjCL,EAAA,cAAC,OACC,IAAKK,EACL,eAAgB,IAAM,CACpBV,EAAM,YAAYQ,EAAI,IAAI,CAC5B,EACA,QAAS,IAAM,CACbR,EAAM,YAAYQ,EAAI,IAAI,EACtBR,EAAM,iBACRA,EAAM,gBAAgB,CAACA,EAAM,eAAe,EAE9CA,EAAM,oBAAoB,CAC5B,EACA,UAAU,+CAEVK,EAAA,cAAC,OAAI,UAAU,uDACbA,EAAA,cAAC,OACC,IAAKG,EAAI,KACT,IAAI,qBACJ,UAAU,4CACZ,EACCA,EAAI,OACHH,EAAA,cAAC,KAAE,UAAU,6CACVG,EAAI,KAAK,IAAE,IAAIA,EAAI,KAAK,GAC3B,EAED,CAACA,EAAI,OACJH,EAAA,cAAC,KAAE,UAAU,6CACVG,EAAI,IACP,CAEJ,EACCR,EAAM,UAAYA,EAAM,SAAS,OAAS,GACzCK,EAAA,cAAC,OACC,IAAKC,EAAY,cACjB,IAAI,eACN,CAEJ,CAEJ,CAEJ,CACD,EAEFJ,GACCA,EAAiB,OAAS,GAC1BA,EAAiB,IAAI,CAACM,EAAUE,IAAa,CArM7D,IAAAT,EAAAQ,EAAAE,EAsMkB,OAAAN,EAAA,cAACA,EAAM,SAAN,CAAe,IAAKK,GAClBV,EAAM,OAAS,aACdK,EAAA,cAAC,OACC,IAAKK,EACL,eAAgB,IAAM,CACpBV,EAAM,YAAY,CAChB,KAAMQ,GAAA,YAAAA,EAAK,WACX,KAAMA,GAAA,YAAAA,EAAK,KACX,KAAMA,GAAA,YAAAA,EAAK,IACb,CAAC,CACH,EACA,QAAS,IAAM,CACTR,EAAM,iBACRA,EAAM,gBAAgB,CAACA,EAAM,eAAe,EAE9CA,EAAM,oBAAoB,CAC5B,EACA,UAAU,wCAEVK,EAAA,cAAC,OACC,IAAKG,GAAA,YAAAA,EAAK,KACV,IAAI,qBACJ,UAAU,4CACZ,EACAH,EAAA,cAAC,KAAE,UAAU,+CACVJ,EAAAO,GAAA,YAAAA,EAAK,YAAL,YAAAP,EAAgB,QAAS,IACxBO,GAAA,YAAAA,EAAK,UAAU,IAAI,CAACI,EAASF,IAC3BL,EAAA,cAACA,EAAM,SAAN,CAAe,IAAKK,GAClB,CAACF,EAAI,SAAS,SAASI,EAAG,YAAY,CAAC,GACtCP,EAAA,cAAC,QACC,IAAKK,EACL,MAAO,CACL,MAAO,SACT,GAECE,CACH,EAEDJ,EAAI,SAAS,SAASI,EAAG,YAAY,CAAC,GACrCP,EAAA,cAAC,QAAK,IAAKK,GAAME,CAAG,CAExB,GAEN,CACF,EAEDZ,EAAM,OAAS,YACdK,EAAA,cAACA,EAAM,SAAN,CAAe,IAAKK,GAClB,OAAO,SAAS,SAAW,IAAIA,CAAG,IACjCL,EAAA,cAAC,OACC,eAAgB,IAAM,CACpBL,EAAM,YAAYQ,EAAI,IAAI,CAC5B,EACA,QAAS,IAAM,CACbR,EAAM,YAAYQ,EAAI,IAAI,EACtBR,EAAM,iBACRA,EAAM,gBAAgB,CAACA,EAAM,eAAe,EAE9CA,EAAM,oBAAoB,CAC5B,EACA,UAAU,wCAEVK,EAAA,cAAC,OACC,IAAKG,EAAI,KACT,IAAI,qBACJ,UAAU,4CACZ,EACC,CAACA,EAAI,OACJH,EAAA,cAAC,KAAE,UAAU,+CACVI,EAAAD,EAAI,YAAJ,YAAAC,EAAe,QAAS,GACvBD,EAAI,UAAU,IAAI,CAACI,EAASF,IAC1BL,EAAA,cAACA,EAAM,SAAN,CAAe,IAAKK,GAClB,CAACF,EAAI,SAAS,SACbI,EAAG,YAAY,CACjB,GACEP,EAAA,cAAC,QACC,IAAKK,EACL,MAAO,CACL,MAAO,SACT,GAECE,CACH,EAEDJ,EAAI,SAAS,SACZI,EAAG,YAAY,CACjB,GAAKP,EAAA,cAAC,QAAK,IAAKK,GAAME,CAAG,CAC3B,CACD,CACL,EAEDJ,EAAI,OACHH,EAAA,cAAC,KAAE,UAAU,+CACVM,EAAAH,EAAI,YAAJ,YAAAG,EAAe,QAAS,GACvBH,EAAI,UAAU,IAAI,CAACI,EAASF,IAC1BL,EAAA,cAACA,EAAM,SAAN,CAAe,IAAKK,GAClB,CAACF,EAAI,SAAS,SACbI,EAAG,YAAY,CACjB,GACEP,EAAA,cAAC,QACC,IAAKK,EACL,MAAO,CACL,MAAO,SACT,GAECE,CACH,EAEDJ,EAAI,SAAS,SACZI,EAAG,YAAY,CACjB,GAAKP,EAAA,cAAC,QAAK,IAAKK,GAAME,CAAG,CAC3B,CACD,EACF,CAACJ,EAAI,SAAS,SACbA,EAAI,MAAM,YAAY,CACxB,GACEH,EAAA,cAAC,QACC,MAAO,CACL,MAAO,SACT,GACA,KAAKG,EAAI,KAAK,GAAI,EAErBA,EAAI,SAAS,SACZA,EAAI,MAAM,YAAY,CACxB,GAAKH,EAAA,cAAC,YAAM,KAAKG,EAAI,KAAK,GAAI,CAChC,CAEJ,EAED,OAAO,SAAS,SAAW,IAAIE,CAAG,IACjCL,EAAA,cAAC,OACC,IAAKK,EACL,eAAgB,IAAM,CACpBV,EAAM,YAAYQ,EAAI,IAAI,CAC5B,EACA,QAAS,IAAM,CACbR,EAAM,YAAYQ,EAAI,IAAI,EACtBR,EAAM,iBACRA,EAAM,gBAAgB,CAACA,EAAM,eAAe,EAE9CA,EAAM,oBAAoB,CAC5B,EACA,UAAU,+CAEVK,EAAA,cAAC,OAAI,UAAU,uDACbA,EAAA,cAAC,OACC,IAAKG,EAAI,KACT,IAAI,qBACJ,UAAU,4CACZ,EACCA,EAAI,OACHH,EAAA,cAAC,KAAE,UAAU,6CACVG,EAAI,KAAK,IAAE,IAAIA,EAAI,KAAK,GAC3B,EAED,CAACA,EAAI,OACJH,EAAA,cAAC,KAAE,UAAU,6CACVG,EAAI,IACP,CAEJ,EAECR,EAAM,UAAYA,EAAM,SAAS,OAAS,GACzCK,EAAA,cAAC,OACC,IAAKC,EAAY,cACjB,IAAI,eACN,CAEJ,CAEJ,CAEJ,EACD,CACL,CACF,CACF,CACF,CACF,CAEJ,EAEOO,GAAQd,GC5Xf,OAAOe,OAAW,QAGX,IAAMC,GAA4B,IAErCC,GAAA,cAAC,KAAE,UAAU,0CAAyC,gDACN,IAC9CA,GAAA,cAAC,QAAK,MAAO,CAAE,MAAO,UAAW,OAAQ,SAAU,GAAG,KAAG,EAAO,OAAK,IACrEA,GAAA,cAAC,QAAK,MAAO,CAAE,MAAO,UAAW,OAAQ,SAAU,GAAG,iBAEtD,CACF,EAISC,GAAiBC,GAK1BF,GAAA,cAAC,KACC,MAAO,CAAE,SAAU,QAAS,EAC5B,UAAU,0CACX,4CAC2C,IAC1CA,GAAA,cAAC,QACC,MAAO,CAAE,MAAO,UAAW,OAAQ,SAAU,EAC7C,QAAS,SAAY,CA3B7B,IAAAG,EAAAC,EA4BUF,EAAM,aAAa,EAAI,GACnBC,EAAA,2BAAQ,UAAR,MAAAA,EAAiB,MACnB,MAAM,OAAO,QAAQ,MAAM,OAAO,SAAS,EAClC,GAACC,EAAA,2BAAQ,UAAR,MAAAA,EAAiB,QAAS,cACpC,aAAa,WAAW,SAAS,EAE/BF,EAAM,cACRA,EAAM,aAAa,EAAK,EAE1BA,EAAM,aAAa,EAAK,CAC1B,GACD,QAED,EAAQ,IAAI,4CAEd,EAISG,GAAiB,IAE1BL,GAAA,cAAC,OAAI,UAAU,8BACbA,GAAA,cAAC,OACC,IAAI,eACJ,IAAKM,EAAY,WACjB,UAAU,kCACZ,EACAN,GAAA,cAAC,KAAE,UAAU,mCAAkC,oCAE/C,CACF,EH/CJ,IAAMO,GAAeC,GAcf,CAzBN,IAAAC,EAAAC,EA0BE,GAAM,CAACC,EAAYC,CAAa,EAAIC,GAAS,EAAE,EACzC,CAACC,EAAWC,CAAY,EAAIF,GAAS,EAAE,EACvC,CAACG,EAAcC,CAAe,EAAIJ,GAAS,EAAK,EAChD,CAACK,EAAkBC,CAAmB,EAAIN,GAAS,EAAE,EAErD,CAAE,GAAAO,EAAI,cAAAC,CAAc,EAAIC,GAAc,EAEtCC,EAAsB,IAAM,CAjCpC,IAAAd,EAAAC,EAkCI,IAAMc,EAAS,SAAS,eAAe,mCAAmC,EACtEA,GAAUhB,EAAM,gBAAgB,MAAQG,EAAW,SAAW,IAIhEa,KACAf,EAAAD,EAAM,YAAN,YAAAC,EAAiB,QAAS,GAC1B,MAAM,OAAOD,EAAM,SAAS,CAAC,KAC7BE,EAAAF,EAAM,YAAN,MAAAE,EAAiB,SAAS,OAN1BS,EAAoB,EAAE,EACtBK,EAAO,UAAY,6CAUnBL,EAAoB,EAAE,EACtBK,EAAQ,UAAY,oCAExB,EAEMC,EAAgB,SAAY,CApDpC,IAAAhB,EAAAC,EAAAgB,EAqDI,KACEjB,EAAAD,EAAM,YAAN,YAAAC,EAAiB,QAAS,GAC1B,CAAC,6BAA6B,KAAKD,EAAM,SAAS,EAClD,CACAW,EAAoB,wCAAwC,EAC5D,MACF,CAEA,IAAMQ,IACJjB,EAAAF,EAAM,YAAN,YAAAE,EAAiB,QAAS,EACtBF,EAAM,UACN,IAAIA,EAAM,gBAAgB,IAAI,GAAGG,CAAU,GAC3CiB,IAAUF,EAAAlB,EAAM,YAAN,YAAAkB,EAAiB,QAAS,EAAI,QAAU,MAEpDC,GAAWC,GAAWR,GAAMC,IAC9Bb,EAAM,aAAa,EAAI,EACvB,MAAMqB,GAAoBF,EAASC,CAAO,EAAE,KAAME,GAAa,CArErE,IAAArB,EAsEQD,EAAM,aAAa,EAAK,EACpBsB,GACFX,EAAoB,EAAE,EACtBX,EAAM,QAAQ,GAAG,IAEjBW,EACES,IAAY,QACR,0DACA,gEACN,EACAG,GACE,8BACAtB,EAAAD,EAAM,YAAN,YAAAC,EAAiB,QAAS,EACtB,qCACA,2CACN,EAEJ,CAAC,EAEL,EAEA,OACEuB,EAAA,cAAC,OAAI,UAAU,uCACbA,EAAA,cAAC,OAAI,UAAU,sCACbA,EAAA,cAACC,GAAA,CAAW,YAAa,CAAC,EAAG,EAAG,CAAC,EAAG,cAAc,IAAI,EACtDD,EAAA,cAAC,OAAI,UAAU,8CACbA,EAAA,cAAC,KAAE,UAAU,2CAA0C,yBAEvD,EACAA,EAAA,cAAC,OAAI,UAAU,uCACbA,EAAA,cAAC,OAAI,UAAU,mDACbA,EAAA,cAAC,OACC,QAAS,IAAM,CACbf,EAAgB,CAACD,CAAY,CAC/B,EACA,UAAU,+CAEVgB,EAAA,cAAC,OACC,QAAS,IAAM,CACbf,EAAgB,CAACD,CAAY,CAC/B,EACA,IAAI,eACJ,UAAU,+CACV,IAAKR,EAAM,gBAAgB,KAC7B,EACAwB,EAAA,cAAC,KACC,QAAS,IAAM,CACbf,EAAgB,CAACD,CAAY,CAC/B,EACA,UAAU,gDACX,KACIR,EAAM,gBAAgB,IAC3B,EACCQ,GACCgB,EAAA,cAAC,OACC,QAAS,IAAM,CACbf,EAAgB,CAACD,CAAY,CAC/B,EACA,IAAI,gBACJ,UAAU,yCACV,IAAKkB,EAAY,QACnB,EAED,CAAClB,GACAgB,EAAA,cAAC,OACC,QAAS,IAAM,CACbf,EAAgB,CAACD,CAAY,CAC/B,EACA,IAAI,gBACJ,UAAU,yCACV,IAAKkB,EAAY,UACnB,CAEJ,EAEAF,EAAA,cAAC,SACC,eAAiBG,GAAW,CAlJ5C,IAAA1B,EAmJsB0B,EAAE,OAAO,QAAU,GACrBpB,EAAaD,EAAY,GAAG,EAE5BC,EAAaoB,EAAE,OAAO,KAAK,EAE7B,IAAMC,GAAe3B,EAAA0B,EAAE,OAAO,QAAT,YAAA1B,EAAgB,QAAQ,MAAO,IACpDG,EAAcwB,CAAY,EAC1B,IAAIC,EAAkB,GACtB,QAASC,EAAI,EAAGA,GAAIF,GAAA,YAAAA,EAAc,QAAQE,IACxCD,GAAmBD,EAAaE,CAAC,GAC5BA,EAAI,GAAK,IAAM,GAAKA,EAAI,GAAIF,GAAA,YAAAA,EAAc,UAC7CC,GAAmB,KAGvB7B,EAAM,iBAAiB6B,CAAe,CACxC,EACA,QAAUF,GAAM,CACdZ,EAAoB,CACtB,EACA,MAAOf,EAAM,cACb,GAAG,cACH,KAAK,OACL,UAAU,+CACV,YAAY,0BACd,CACF,EACCQ,GACCgB,EAAA,cAACO,GAAA,CACC,SAAS,cACT,cAAe/B,EAAM,aACrB,KAAK,YACL,oBAAqBe,EACrB,YAAaf,EAAM,mBACnB,SAAUA,EAAM,gBAChB,aAAcQ,EACd,gBAAiBC,EACjB,iBAAiB,MACjB,oBAAoB,MACtB,EAEDN,EAAW,SAAW,IAAMG,EAAU,OAAS,IAC9CkB,EAAA,cAAC,OAAI,UAAU,6CACbA,EAAA,cAAC,KAAE,UAAU,uCAAsC,+CAEnD,CACF,GAEDd,GAAA,YAAAA,EAAkB,QAAS,KAAKT,EAAAD,EAAM,YAAN,YAAAC,EAAiB,UAAW,GAC3DuB,EAAA,cAAC,OAAI,UAAU,6CACbA,EAAA,cAAC,KAAE,UAAU,uCACVd,CACH,CACF,CAEJ,CACF,EACC,CAACF,GACAgB,EAAA,cAACA,EAAM,SAAN,KACCA,EAAA,cAAC,OAAI,UAAU,+DACbA,EAAA,cAAC,OAAI,UAAU,6CAA6C,EAC5DA,EAAA,cAAC,KAAE,UAAU,sDAAqD,IAElE,EACAA,EAAA,cAAC,OAAI,UAAU,6CAA6C,CAC9D,EACAA,EAAA,cAAC,OAAI,UAAU,uCACbA,EAAA,cAAC,SACC,eAAiBG,GAAW,CAtN5C,IAAA1B,EAuNkBD,EAAM,cAAaC,EAAA0B,EAAE,SAAF,YAAA1B,EAAU,KAAK,EAClCD,EAAM,iBAAiB,EAAE,EACzBI,EAAc,EAAE,EAChBG,EAAa,EAAE,CACjB,EACA,QAAUoB,GAAM,CACdZ,EAAoB,CACtB,EACA,KAAK,OACL,UAAU,+CACV,YAAY,2BACd,GACCL,GAAA,YAAAA,EAAkB,QAAS,KAAKR,EAAAF,EAAM,YAAN,YAAAE,EAAiB,QAAS,GACzDsB,EAAA,cAAC,OAAI,UAAU,6CACbA,EAAA,cAAC,KAAE,UAAU,uCACVd,CACH,CACF,CAEJ,CACF,CAEJ,EAEC,CAACF,GAAgBgB,EAAA,cAAC,OAAI,MAAO,CAAE,OAAQ,MAAO,EAAG,EAElDA,EAAA,cAAC,OAAI,UAAU,6CACbA,EAAA,cAAC,OAAI,UAAU,sDACbA,EAAA,cAACQ,GAAA,IAA0B,EAC3BR,EAAA,cAAC,UACC,GAAG,oCACH,QAAS,MAAOG,GAAW,CACzB,GACEA,EAAE,OAAO,UAAU,SACjB,mCACF,GACAA,EAAE,OAAO,YAAc,oCAEvBA,EAAE,OAAO,UAAY,0CACrB,MAAMV,EAAc,MACf,CACL,IAAMgB,EAAgB,SAAS,uBAC7B,0CACF,EACIA,EAAc,OAAS,IACzBA,EAAc,CAAC,EAAE,UACf,0CACF,MAAMhB,EAAc,EAExB,CACF,EACA,UAAU,qCACX,SAED,EACAO,EAAA,cAAC,OAAI,UAAU,uDACbA,EAAA,cAACU,GAAA,IAAe,CAClB,CACF,CACF,CACF,CAEJ,EAEOC,GAAQpC,GIvRf,OAAOqC,GAAS,aAAAC,GAAW,YAAAC,OAAgB,QAW3C,IAAMC,GAAWC,GAQX,CAnBN,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAoBE,GAAM,CAACC,EAAcC,CAAe,EAAIC,GAAS,EAAK,EAChD,CAACC,EAAWC,CAAY,EAAIF,GAAS,EAAE,EACvC,CAACG,EAAcC,CAAe,EAAIJ,GAAS,EAAK,EAEhD,CAAE,GAAAK,EAAI,cAAAC,CAAc,EAAIC,GAAc,EAE5CC,GAAU,IAAM,CACd,GAAIP,IAAc,EAAG,OAErB,IAAMQ,EAAkB,YAAY,IAAM,CACxCP,EAAcQ,GAAkBA,EAAgB,CAAC,CACnD,EAAG,GAAI,EAEP,MAAO,IAAM,cAAcD,CAAe,CAC5C,EAAG,CAACR,CAAS,CAAC,EAGd,IAAMU,EAAqBC,GAAsB,CAC/C,GAAIA,EAAa,MAAM,OAAS,EAAG,CACjC,IAAMC,EAAYD,EAAa,mBAC3BC,GACFA,EAAU,MAAM,CAEpB,MAAWD,EAAa,MAAM,SAAW,GACvCA,EAAa,MAAM,CAEvB,EAEME,EAAkBC,GAAW,CACjC,IAAMC,EAAaD,EAAE,cAAc,QAAQ,MAAM,EAC3CE,EAAkBD,GAAA,YAAAA,EAAY,QAAQ,MAAO,IAC7CE,EAAoB,SAAS,uBAAuB,WAAW,EACrE,IAAIA,GAAA,YAAAA,EAAc,UAAW,IAAKD,GAAA,YAAAA,EAAiB,QAAS,EAC1D,QAAS,EAAI,EAAG,EAAIC,EAAa,OAAQ,IACnCD,EAAgB,CAAC,IACnBC,EAAa,CAAC,EAAE,MAAQD,EAAgB,CAAC,EACzCC,EAAa,CAAC,EAAE,MAAM,EAI9B,EAEMC,EAAsBJ,GAAW,CACrC,IAAMK,EAAiBL,EAAE,OAAO,uBAC5BK,GACFA,EAAe,MAAM,CAEzB,EAEMC,EAAsB,IAAM,CAChC,IAAMC,EAAc,SAAS,eAC3B,+BACF,EACMC,EAAY,SAAS,eAAe,gCAAgC,EACpEC,EAAY,SAAS,eAAe,gCAAgC,EACpEC,EAAY,SAAS,eAAe,gCAAgC,EACpEC,EAAY,SAAS,eAAe,gCAAgC,EAExEJ,IACAC,GAAA,YAAAA,EAAM,MAAM,QAAS,IACrBC,GAAA,YAAAA,EAAM,MAAM,QAAS,IACrBC,GAAA,YAAAA,EAAM,MAAM,QAAS,IACrBC,GAAA,YAAAA,EAAM,MAAM,QAAS,GACrB,CAACvB,EAEDmB,EAAO,UAAY,2CAEnBA,EAAO,UAAY,mCAEvB,EAEMK,EAAkB,SAAY,CA3FtC,IAAAnC,EAAAC,EAAAC,GAAAC,EAAAC,EAAAC,EA4FI,IAAM+B,IACJpC,EAAAD,EAAM,YAAN,YAAAC,EAAiB,QAAS,EACtBD,EAAM,UACN,IAAIA,EAAM,gBAAgB,IAAI,IAAGE,EAAAF,EAAM,gBAAN,YAAAE,EAAqB,QACpD,IACA,GACD,GACD8B,EAAY,SAAS,eAAe,gCAAgC,EACpEC,EAAY,SAAS,eAAe,gCAAgC,EACpEC,EAAY,SAAS,eAAe,gCAAgC,EACpEC,EAAY,SAAS,eAAe,gCAAgC,EAC1E,KACEhC,GAAA6B,GAAA,YAAAA,EAAM,QAAN,YAAA7B,GAAa,QAAS,KACtBC,EAAA6B,GAAA,YAAAA,EAAM,QAAN,YAAA7B,EAAa,QAAS,KACtBC,EAAA6B,GAAA,YAAAA,EAAM,QAAN,YAAA7B,EAAa,QAAS,KACtBC,EAAA6B,GAAA,YAAAA,EAAM,QAAN,YAAA7B,EAAa,QAAS,GACtB+B,GACAvB,GACAC,EACA,CACAf,EAAM,aAAa,EAAI,EACvB,IAAMsC,GAAUN,GAAA,YAAAA,EAAM,QAAQC,GAAA,YAAAA,EAAM,QAAQC,GAAA,YAAAA,EAAM,QAAQC,GAAA,YAAAA,EAAM,OAChE,MAAMI,GAAqBF,EAAS,OAAOC,CAAO,CAAC,EAAE,KAAME,GAAQ,CACjExC,EAAM,aAAa,EAAK,EACpBwC,EACFxC,EAAM,QAAQ,GAAG,EAEjBa,EAAgB,EAAI,CAExB,CAAC,CACH,CACF,EAEM4B,EAAkB,SAAY,CA7HtC,IAAAxC,EAAAC,EAAAC,EA8HI,IAAMkC,IACJpC,EAAAD,EAAM,YAAN,YAAAC,EAAiB,QAAS,EACtBD,EAAM,UACN,IAAIA,EAAM,gBAAgB,IAAI,IAAGE,EAAAF,EAAM,gBAAN,YAAAE,EAAqB,QACpD,IACA,GACD,GAEDwC,IAAUvC,EAAAH,EAAM,YAAN,YAAAG,EAAiB,QAAS,EAAI,QAAU,MAEpDkC,GAAWK,IACb1C,EAAM,aAAa,EAAI,EACvB,MAAM2C,GAAoBN,EAASK,CAAO,EAAE,KAAMF,GAAQ,CAExD,GADAxC,EAAM,aAAa,EAAK,EACpBwC,EAAK,CACP7B,EAAa,EAAE,EACfE,EAAgB,EAAK,EACrB,IAAMmB,EAAY,SAAS,eACzB,gCACF,EACMC,GAAY,SAAS,eACzB,gCACF,EACMC,EAAY,SAAS,eACzB,gCACF,EACMC,EAAY,SAAS,eACzB,gCACF,EACCH,EAAM,MAAQ,GACZC,GAAM,MAAQ,GACdC,EAAM,MAAQ,GACdC,EAAM,MAAQ,EACnB,MACES,GAAW,4BAA6B,kBAAkB,CAE9D,CAAC,EAEL,EAEA,OACEC,EAAA,cAAC,OAAI,UAAU,uCACbA,EAAA,cAAC,OAAI,UAAU,sCACbA,EAAA,cAACC,GAAA,CAAW,YAAa,CAAC,EAAG,EAAG,CAAC,EAAG,cAAc,IAAI,EACtDD,EAAA,cAAC,OAAI,UAAU,8CACbA,EAAA,cAAC,KAAE,UAAU,2CAA0C,WAAS,EAChEA,EAAA,cAAC,OAAI,UAAU,uCACbA,EAAA,cAAC,KAAE,UAAU,8CAA6C,SAClDA,EAAA,cAAC,QAAK,MAAO,CAAE,MAAO,SAAU,GAAG,aAAW,EAAO,oCAC/B,MAC3B5C,EAAAD,EAAM,gBAAN,YAAAC,EAAqB,QAAS,EAC3B,eACA,eACN,EACA4C,EAAA,cAAC,OAAI,UAAU,yCACbA,EAAA,cAAC,KAAE,UAAU,gDACV3C,EAAAF,EAAM,gBAAN,YAAAE,EAAqB,QAAS,GAC7B2C,EAAA,cAACA,EAAM,SAAN,KACCA,EAAA,cAAC,YAAK,MAAG1C,EAAAH,EAAM,kBAAN,YAAAG,EAAuB,KAAK,GAAC,EAAQ,IAC9C0C,EAAA,cAAC,YAAK,KAAEzC,EAAAJ,EAAM,gBAAN,YAAAI,EAAqB,MAAM,KAAK,EAAG,EAAQ,IACnDyC,EAAA,cAAC,YAAK,KAAExC,EAAAL,EAAM,gBAAN,YAAAK,EAAqB,MAAM,KAAK,EAAG,CAC7C,IAEDC,EAAAN,EAAM,YAAN,YAAAM,EAAiB,QAAS,GAAKuC,EAAA,cAAC,YAAM7C,EAAM,SAAU,CACzD,EACA6C,EAAA,cAAC,OACC,QAAS,IAAM,CACb7C,EAAM,iBAAiB,EAAE,EACzBA,EAAM,aAAa,EAAE,EACrBA,EAAM,QAAQ,GAAG,CACnB,EACA,IAAK+C,EAAY,SACjB,IAAI,YACJ,UAAU,iCACZ,CACF,CACF,CACF,EACAF,EAAA,cAAC,OAAI,UAAU,0CACbA,EAAA,cAAC,OAAI,UAAU,sCACbA,EAAA,cAAC,SACC,eAAiBrB,GAAW,CA/M1C,IAAAvB,EAgNgBuB,EAAE,OAAO,OAAQvB,EAAAuB,EAAE,OAAO,QAAT,YAAAvB,EAAgB,QAAQ,MAAO,IAChDY,EAAgB,EAAK,CACvB,EACA,QAAUW,GAAM,CACdJ,EAAkBI,EAAE,MAAM,EAC1BM,EAAoB,CACtB,EACA,UAAYN,GAAW,CACjBA,EAAE,MAAQ,aAAeA,EAAE,OAAO,QAAU,IAC9CI,EAAmBJ,CAAC,CAExB,EACA,QAAUA,GAAM,CACdD,EAAeC,CAAC,CAClB,EACA,UACEZ,EACI,mCACA,+BAEN,KAAK,OACL,UAAW,EACX,GAAG,iCACL,EACAiC,EAAA,cAAC,SACC,eAAiBrB,GAAW,CAzO1C,IAAAvB,EA0OgBuB,EAAE,OAAO,OAAQvB,EAAAuB,EAAE,OAAO,QAAT,YAAAvB,EAAgB,QAAQ,MAAO,IAChDY,EAAgB,EAAK,CACvB,EACA,QAAUW,GAAM,CACdJ,EAAkBI,EAAE,MAAM,EAC1BM,EAAoB,CACtB,EACA,UAAYN,GAAW,CACjBA,EAAE,MAAQ,aAAeA,EAAE,OAAO,QAAU,IAC9CI,EAAmBJ,CAAC,CAExB,EACA,UACEZ,EACI,mCACA,+BAEN,KAAK,OACL,UAAW,EACX,GAAG,iCACL,EACAiC,EAAA,cAAC,SACC,eAAiBrB,GAAW,CAhQ1C,IAAAvB,EAiQgBuB,EAAE,OAAO,OAAQvB,EAAAuB,EAAE,OAAO,QAAT,YAAAvB,EAAgB,QAAQ,MAAO,IAChDY,EAAgB,EAAK,CACvB,EACA,QAAUW,GAAM,CACdJ,EAAkBI,EAAE,MAAM,EAC1BM,EAAoB,CACtB,EACA,UAAYN,GAAW,CACjBA,EAAE,MAAQ,aAAeA,EAAE,OAAO,QAAU,IAC9CI,EAAmBJ,CAAC,CAExB,EACA,UACEZ,EACI,mCACA,+BAEN,KAAK,OACL,UAAW,EACX,GAAG,iCACL,EACAiC,EAAA,cAAC,SACC,eAAiBrB,GAAW,CAvR1C,IAAAvB,EAwRgBuB,EAAE,OAAO,OAAQvB,EAAAuB,EAAE,OAAO,QAAT,YAAAvB,EAAgB,QAAQ,MAAO,IAChDY,EAAgB,EAAK,CACvB,EACA,QAAUW,GAAM,CACdJ,EAAkBI,EAAE,MAAM,EAC1BM,EAAoB,CACtB,EACA,UAAYN,GAAW,CACjBA,EAAE,MAAQ,aAAeA,EAAE,OAAO,QAAU,IAC9CI,EAAmBJ,CAAC,CAExB,EACA,UACEZ,EACI,mCACA,+BAEN,KAAK,OACL,UAAW,EACX,GAAG,iCACL,CACF,EACAiC,EAAA,cAAC,OAAI,UAAU,gCACZ,CAACjC,GAAgBF,EAAY,GAC5BmC,EAAA,cAAC,KAAE,UAAU,qCACXA,EAAA,cAAC,QAAK,MAAO,CAAE,MAAO,UAAW,WAAY,GAAI,GAAG,KAAG,EACtDnC,CACH,EAED,CAACE,GAAgBF,GAAa,GAAKA,EAAY,GAC9CmC,EAAA,cAAC,KAAE,UAAU,yCACXA,EAAA,cAAC,QAAK,MAAO,CAAE,WAAY,GAAI,GAAG,KAAG,EACpCnC,CACH,EAED,CAACE,GAAgBF,IAAc,GAC9BmC,EAAA,cAAC,KAAE,UAAU,sCAAqC,yBAElD,EAEDjC,GACCiC,EAAA,cAAC,KAAE,UAAU,yCAAwC,8BAErD,EAED,CAACjC,GAAgBF,EAAY,GAC5BmC,EAAA,cAAC,KAAE,UAAU,sCAAqC,YAAU,EAE7D,CAACjC,GAAgBF,IAAc,GAC9BmC,EAAA,cAAC,KACC,QAAS,SAAY,CAEnB,IAAMG,EACJ,SAAS,uBAAuB,WAAW,EAC7C,GAAIA,EACF,QAASC,EAAI,EAAGA,EAAID,EAAO,OAAQC,IACjCD,EAAOC,CAAC,EAAE,MAAQ,GAItB,MAAMR,EAAgB,CACxB,EACA,UAAU,6CACX,YAED,EAED7B,GACCiC,EAAA,cAAC,KACC,QAAS,SAAY,CAEnB,IAAMG,EACJ,SAAS,uBAAuB,WAAW,EAC7C,GAAIA,EACF,QAASC,EAAI,EAAGA,EAAID,EAAO,OAAQC,IACjCD,EAAOC,CAAC,EAAE,MAAQ,GAItB,MAAMR,EAAgB,CACxB,EACA,UAAU,6CACX,YAED,CAEJ,CACF,CACF,EAEC,CAAClC,GAAgBsC,EAAA,cAAC,OAAI,MAAO,CAAE,OAAQ,OAAQ,EAAG,EAEnDA,EAAA,cAAC,OAAI,UAAU,6CACbA,EAAA,cAAC,OAAI,UAAU,sDACbA,EAAA,cAAC,UACC,GAAG,gCACH,QAAS,MAAOrB,GAAW,CACzB,GACEA,EAAE,OAAO,UAAU,SACjB,mCACF,GACAA,EAAE,OAAO,YAAc,oCAEvBA,EAAE,OAAO,UAAY,0CACrB,MAAMY,EAAgB,MACjB,CACL,IAAMc,EAAgB,SAAS,uBAC7B,0CACF,EACIA,EAAc,OAAS,IACzBA,EAAc,CAAC,EAAE,UACf,0CACF,MAAMd,EAAgB,EAE1B,CACF,EACA,UAAU,qCACX,SAED,EACAS,EAAA,cAAC,OAAI,UAAU,uDACbA,EAAA,cAACM,GAAA,IAAe,CAClB,CACF,CACF,CACF,CAEJ,EAEOC,GAAQrD,GCzZf,OAAOsD,GAAS,YAAAC,OAAgB,QCAhC,OAAS,YAAAC,GAAU,uBAAAC,GAAqB,uBAAAC,OAA2B,SACnE,OAAS,WAAAC,GAAS,SAAAC,OAAa,wBAC/B,OACE,mBAAAC,GACA,WAAAC,GACA,YAAAC,GACA,kBAAAC,OACK,iCACP,OAAS,4BAAAC,OAAgC,oBAgBlC,IAAMC,GAAqB,MAChCC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,IACG,CACH,GAAI,CACF,IAAMC,EAAY,CAChB,QAAAX,EACA,cAAAC,EACA,SAAAC,EACA,eAAAC,EACA,cAAAI,CACF,EACA,OAAO,MAAMA,EACV,WAAWN,EAAeE,CAAc,EACxC,KAAK,MAAOS,GAAa,CA/ChC,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAgDQ,IAAIN,GAAA,YAAAA,EAAK,UAAW,EAClB,GAAI,CACF,GAAIJ,IAAW,aACb,MAAO,CAAE,WAAY,GAAM,GAAGG,CAAU,EAExC,IAAIE,EAAA,2BAAQ,UAAR,MAAAA,EAAiB,MAAO,CAC1B,IAAMM,EAAYC,GAAoBlB,CAAQ,EAExCmB,EAAcC,GAAcjB,EAAQc,CAAS,EACnD,MAAM,OAAO,QAAQ,MAAM,IAAI,CAC7B,QAAS,KAAK,UAAU,CACtB,QAAAnB,EACA,cAAeC,EACf,GAAIoB,EACJ,QAASjB,CACX,CAAC,CACH,CAAC,CACH,SAAW,GAACU,EAAA,2BAAQ,UAAR,MAAAA,EAAiB,QAAS,aAAc,CAClD,IAAMK,EAAYC,GAAoBlB,CAAQ,EAExCmB,EAAcC,GAAcjB,EAAQc,CAAS,EACnD,aAAa,QACX,UACA,KAAK,UAAU,CACb,QAAAnB,EACA,cAAeC,EACf,GAAIoB,EACJ,QAASjB,CACX,CAAC,CACH,CACF,CACA,IAAIW,EAAA,2BAAQ,UAAR,MAAAA,EAAiB,YACnB,OAAO,QAAQ,YAAY,CACzB,KACEP,GAAUA,IAAW,iBACjB,QACAA,GAAUA,IAAW,iBACrBA,EACA,QACN,MAAO,CACL,UACEA,GAAUA,IAAW,gBAEjBA,GAAUA,IAAW,mBADrBC,EAGA,CAAE,QAAAT,EAAS,cAAAC,EAAe,eAAAE,CAAe,EAC/C,OAAQO,CACV,CACF,CAAC,UACQ,GAACM,EAAA,2BAAQ,UAAR,MAAAA,EAAiB,aAAa,CACxC,IAAMO,EAAQ,IAAI,YAChBf,GAAUA,IAAW,iBACjB,QACAA,GAAUA,IAAW,iBACrBA,EACA,QACJ,CACE,OAAQ,CACN,MAAO,CACL,UACEA,GAAUA,IAAW,gBAEjBA,GAAUA,IAAW,mBADrBC,EAGA,CAAE,QAAAT,EAAS,cAAAC,EAAe,eAAAE,CAAe,EAC/C,OAAQO,CACV,CACF,CACF,CACF,EACA,OAAO,cAAca,CAAK,CAC5B,CAEF,MAAO,CAAE,WAAY,EAAK,CAC5B,OAASC,EAAK,CACZ,OAAI,QAAQ,IAAI,qBAAuB,cACrC,QAAQ,MAAM,kCAAmCA,CAAG,EAGtDC,GACE,4BACA,uDACF,EACO,EACT,KACK,MAAIR,EAAAL,GAAA,YAAAA,EAAK,SAAL,YAAAK,EAAa,iBAAkB,cACxC,OAAO,KACF,KAAIC,EAAAN,GAAA,YAAAA,EAAK,SAAL,YAAAM,EAAa,iBAAkB,qBACxC,OAAO,MAAMX,EACV,YAAYN,EAAeE,CAAc,EACzC,KAAK,MAAOuB,IACPA,GAAA,YAAAA,EAAS,UAAW,EACf,MAAMnB,EACV,mBACCN,EACAE,EACAF,EACAE,EACA,EACF,EACC,KAAK,MAAOwB,GAAiB,CApJhD,IAAAd,EAAAC,EAqJoB,IAAIa,GAAA,YAAAA,EAAS,UAAW,EACtB,GAAI,CACF,IAAMR,EAAYC,GAAoBlB,CAAQ,EAExCmB,EAAcC,GAAcjB,EAAQc,CAAS,EAEnD,OAAIN,EAAA,2BAAQ,UAAR,MAAAA,EAAiB,MACnB,MAAM,OAAO,QAAQ,MAAM,IAAI,CAC7B,QAAS,KAAK,UAAU,CACtB,QAASP,EACT,QAAAN,EACA,cAAeC,EACf,GAAIoB,EACJ,QAASjB,CACX,CAAC,CACH,CAAC,EACQ,GAACU,EAAA,2BAAQ,UAAR,MAAAA,EAAiB,QAAS,cACpC,aAAa,QACX,UACA,KAAK,UAAU,CACb,QAASR,EACT,QAAAN,EACA,cAAeC,EACf,GAAIoB,EACJ,QAASjB,CACX,CAAC,CACH,EAGKO,CACT,OAASa,EAAK,CACZ,OAAAC,GACE,4BACA,kDACF,EACI,QAAQ,IAAI,qBAAuB,cACrC,QAAQ,MAAM,sBAAuBD,CAAG,EAGnC,EACT,KAEA,QAAAC,GACE,4BACA,mDACF,EAEI,QAAQ,IAAI,qBAAuB,cACrC,QAAQ,MAAM,6BAA8BE,CAAO,EAE9C,EAEX,CAAC,GAEHF,GACE,4BACA,2CACF,EACI,QAAQ,IAAI,qBAAuB,cACrC,QAAQ,MAAM,wBAAyBC,CAAO,EAGzC,GAEV,EAEP,CAAC,CACL,OAASF,EAAK,CACZ,OAAI,QAAQ,IAAI,qBAAuB,cACrC,QAAQ,MAAM,qBAAsBA,CAAG,EAEzCC,GACE,4BACA,2CACF,EACO,EACT,CACF,EAEaG,GAAmB,MAC9B5B,EACAC,EACAC,EACAC,EACAkB,EACAf,EACAF,EACAyB,EACAC,IACG,CA9OL,IAAAjB,EAAAC,EAAAC,EAAAC,EA+OE,GAAI,CACF,IAAMG,EAAYC,GAAoBlB,CAAQ,EAExCG,EAAS0B,GAAcV,EAAaF,CAAS,EAEnD,GAAId,EAAQ,CACV,IAAM2B,EAAoBC,GACpBC,EAAS,IAAIC,GAAe9B,CAAM,EAClC+B,EACJN,KACAjB,EAAAmB,EAAaF,CAAO,IAApB,MAAAjB,EAAuB,YACvBE,GAAAD,EAAAuB,GAAYP,CAAO,IAAnB,YAAAhB,EAAsB,UAAtB,YAAAC,EAA+B,QAAS,EACpCe,EACAQ,GACAC,GAAWvB,EAAAqB,GAAYD,CAAQ,IAApB,YAAApB,EAAuB,QAAQ,GAC1CwB,EAASN,EAAO,YAAY,IAAIO,GAASF,CAAQ,CAAC,EAElDhC,EAAgB,IAAImC,GAAQF,EAAQR,EAAaI,CAAQ,EAAE,OAAO,EAExE,OAAI7B,EACK,MAAMA,EACV,WAAWN,EAAeE,CAAc,EACxC,KAAK,MAAOS,IACPA,GAAA,YAAAA,EAAK,UAAW,EACX,CACL,QAASN,EACT,QAAAN,EACA,cAAeC,EACf,GAAII,EACJ,QAASD,EACT,QAASyB,GAA0BO,CACrC,GAEI,QAAQ,IAAI,qBAAuB,cACrC,QAAQ,MAAM,aAAa,EAEtB,KAEV,GAEC,QAAQ,IAAI,qBAAuB,cACrC,QAAQ,MAAM,+BAA+B,EAExC,KAEX,KACE,QAAI,QAAQ,IAAI,qBAAuB,cACrC,QAAQ,MAAM,qBAAqB,EAE9B,IAEX,OAASZ,EAAK,CACZ,OAAI,QAAQ,IAAI,qBAAuB,cACrC,QAAQ,MAAM,qBAAsBA,CAAG,EAElC,IACT,CACF,EAEamB,GAA2B,MACtCC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACA9C,EACAF,EACAyB,IACG,CAxTL,IAAAjB,EAAAC,EAAAC,EAAAC,EAyTE,IAAIsC,EACJ,GAAI/C,EACF+C,EAAW/C,MACN,CACL,IAAMyB,EAAoBC,GACpBC,EAAS,IAAIC,GAAe9B,CAAM,EAClC+B,EACJN,KACAjB,EAAAmB,EAAaF,CAAO,IAApB,MAAAjB,EAAuB,YACvBE,GAAAD,EAAAuB,GAAYP,CAAO,IAAnB,YAAAhB,EAAsB,UAAtB,YAAAC,EAA+B,QAAS,EACpCe,EACAQ,GACAC,GAAWvB,EAAAqB,GAAYD,CAAQ,IAApB,YAAApB,EAAuB,QAAQ,GAC1CwB,EAASN,EAAO,YAAY,IAAIO,GAASF,CAAQ,CAAC,EAExDe,EAAW,IAAIZ,GAAQF,EAAQR,EAAaI,CAAQ,EAAE,OAAO,CAC/D,CACA,OAAIkB,EACK,MAAM/C,EACV,mBACC0C,EACAD,EACAD,EACAG,EACAG,CACF,EACC,KAAK,MAAOzC,IACPA,GAAA,YAAAA,EAAK,UAAW,GACdyC,EACF,MAAMT,EACJE,EACAK,EACAC,CACF,EAEA,MAAMP,EACJC,EACAK,EACAC,CACF,EAGK,KAEH,QAAQ,IAAI,qBAAuB,cACrC,QAAQ,MAAM,yCAAyC,EAElD,GAEV,EACA,MAAO5B,IACF,QAAQ,IAAI,qBAAuB,cACrC,QAAQ,MAAM,kDAAmDA,CAAG,EAE/D,GACR,EAEI,EAEX,EAsDa+B,GAAwB,MACnCC,EAMAC,EAMAC,EACAC,EACAvD,EACAwD,EACA5D,EACAC,EACAC,EACAC,EACAI,EACAsD,IACG,CACH,IAAMC,EAAiB,OAAOJ,EAAW,MAAM,EAQzCK,GANmB,MAAMC,GAC7B,WAAW,KAAKH,EAAG,MAAM,EAAE,EAAE,IAAKI,GAAmBA,EAAO,WAAW,CAAC,CAAC,CAAC,EAC1E,OAAOH,CAAc,EACrBF,CACF,GAE6C,IAAKM,GAAUA,EAAM,KAAK,GAAG,CAAC,EAEvEC,EAAmB,CAAC,EACpBC,EAAsB,CAAC,EAE3B,QAASC,EAAM,EAAGA,EAAMX,EAAW,OAAQW,IAAO,CAChD,IAAMC,EAAcZ,EAAWW,CAAG,EAClC,MAAM9D,EACH,eACCN,EACAE,EACAoE,GAAcD,EAAY,OAAO,EACjCP,EAAoBM,CAAG,CACzB,EACC,KAAK,MAAOzD,GAAa,CACxB,IAAM4D,EAAY,CAChB,eAAgBxE,EAChB,SAAUE,EACV,qBAAsBD,EACtB,sBAAuBE,EACvB,SAAUmE,EAAY,QACtB,eAAgBC,GAAcD,EAAY,OAAO,EACjD,oBACEA,EAAY,aAAe,MAAQ,QAAU,QAC/C,gBAAiBA,EAAY,QAC7B,MAAOP,EAAoBM,CAAG,EAC9B,GAAGC,CACL,GACI1D,GAAA,YAAAA,EAAK,UAAW,GAClBwD,EAAoB,KAAKI,CAAS,EAC9BF,EAAY,UAAYtE,GAC1B,MAAMwD,EACJc,EAAY,WACZA,EAAY,QACZtE,EACAG,CACF,EAAE,KAAMS,GAAQ,CACTA,GACC,QAAQ,IAAI,qBAAuB,cACrC,QAAQ,MAAM,qCAAqC,CAIzD,CAAC,GAGHuD,EAAiB,KAAKK,CAAS,CAEnC,CAAC,CACL,CAEA,OACEL,GAAA,YAAAA,EAAkB,QAAS,IAC3BC,GAAA,YAAAA,EAAqB,WAAWV,GAAA,YAAAA,EAAY,SAExC,QAAQ,IAAI,qBAAuB,cACrC,QAAQ,MAAM,+BAA+B,EAE/CjC,GAAW,2BAA4B,+BAA+B,EAC/D,IAGF,MAAMlB,EACV,aAAaN,EAAeE,EAAgByD,EAAa,SAAS,CAAC,EACnE,KAAK,MAAOhD,GAAa,CACxB,IAAIA,GAAA,YAAAA,EAAK,UAAW,EAAG,CACrB,IAAM6D,EAAgBd,GAAA,YAAAA,EAAW,IAAKe,GAAa,CA5gB3D,IAAA7D,EA6gBU,MAAO,CACL,KAAM6D,GAAA,YAAAA,EAAK,KACX,MAAOA,GAAA,YAAAA,EAAK,MACZ,YAAaA,GAAA,YAAAA,EAAK,YAClB,aAAa7D,EAAA,OAAO6D,GAAA,YAAAA,EAAK,UAAU,IAAtB,YAAA7D,EAAyB,cACtC,SAAU,GAAG8D,GAAgB,OAAOD,GAAA,YAAAA,EAAK,QAAQ,CAAC,CAAC,YACrD,CACF,GACA,aAAMjB,EACJrD,EACAJ,EACAyE,EACA,OAAOb,CAAY,CACrB,EAAE,KAAMhD,GAAQ,CACTA,GACC,QAAQ,IAAI,qBAAuB,cACrC,QAAQ,MAAM,4CAA4C,CAIhE,CAAC,EAEM,EACT,KACE,QAAI,QAAQ,IAAI,qBAAuB,cACrC,QAAQ,MAAM,+BAA+B,EAE/Ca,GAAW,2BAA4B,+BAA+B,EAC/D,EAEX,CAAC,CACL,EAEamD,GAAwB,MACnCC,EAOA5E,EACAE,EACAH,EACAE,EACAmB,EACAyD,EACAhD,IACG,CA7jBL,IAAAjB,EAAAC,EAAAC,EAAAC,EA8jBE,IAAMG,EAAYC,GAAoBlB,CAAQ,EAExCG,EAAS0B,GAAcV,EAAaF,CAAS,EAEnD,GAAId,EAAQ,CACV,IAAM2B,EAAoBC,GACpBC,EAAS,IAAIC,GAAe9B,CAAM,EAClC+B,EACJN,KACAjB,EAAAmB,EAAaF,CAAO,IAApB,MAAAjB,EAAuB,YACvBE,GAAAD,EAAAuB,GAAYP,CAAO,IAAnB,YAAAhB,EAAsB,UAAtB,YAAAC,EAA+B,QAAS,EACpCe,EACAQ,GACAC,GAAWvB,EAAAqB,GAAYD,CAAQ,IAApB,YAAApB,EAAuB,QAAQ,GAC1CwB,EAASN,EAAO,YAAY,IAAIO,GAASF,CAAQ,CAAC,EAElDhC,EAAgB,IAAImC,GAAQF,EAAQR,EAAaI,CAAQ,EAAE,OAAO,EAExE,GAAI7B,EACF,OAAO,MAAMA,EACV,iBAAiBN,EAAeE,CAAc,EAC9C,KAAK,MAAOS,GAAa,CAnlBlC,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA6D,EAolBU,IAAInE,GAAA,YAAAA,EAAK,UAAW,KAAKE,GAAAD,EAAAD,GAAA,YAAAA,EAAK,WAAL,YAAAC,EAAe,SAAf,MAAAC,EAAuB,MAAM,CACpD,IAAMkE,GAAW,IAAIC,GACfC,GAAYjE,GAAAD,GAAAD,EAAAH,GAAA,YAAAA,EAAK,WAAL,YAAAG,EAAe,SAAf,YAAAC,EAAuB,OAAvB,YAAAC,EAA6B,OAC5CkE,GAAU,CAvlBzB,IAAAtE,EAAAC,GAAAC,EAAAC,GAAAC,EAwlBgB,QAAAJ,EAAAsE,GAAA,YAAAA,EAAK,UAAL,YAAAtE,EAAc,mBACZC,GAAAkB,EAAaI,CAAQ,EAAE,UAAvB,YAAAtB,GAAgC,kBAClCG,GAAAF,EAAAoE,GAAA,YAAAA,EAAK,SAAL,YAAApE,EACI,IAAKqE,GAAeA,GAAA,YAAAA,EAAI,iBAD5B,YAAAnE,EAEI,UAASD,GAAAqE,KAAA,YAAArE,GAAyB,kBAEpCN,GAASQ,EAAAgE,EAAU,CAAC,IAAX,YAAAhE,EAAc,KACvBoE,GAAgBP,EAAAC,GACnB,OAAO,CAAC,UAAW,UAAW,SAAS,EAAGtE,CAAM,IAD7B,YAAAqE,EAElB,IAAI,CAACQ,EAAKlB,IACVA,EAAM,EAAImB,GAAoBD,CAAG,EAAI,OAAOA,CAAG,GAEhD,OACGE,EAAOH,GAAcA,GAAA,YAAAA,EAAe,QAAS,CAAC,EACpD,aAAMT,EACJC,EACA9E,EACAG,EACA,OAAOsF,CAAI,EACX,OAAOP,GAAA,YAAAA,EAAW,MAAM,CAC1B,EACO,EACT,KACE,OAAO,EAEX,CAAC,EACA,MAAO1D,IACF,QAAQ,IAAI,qBAAuB,cACrC,QAAQ,MAAM,wCAAyCA,CAAG,EAErD,GACR,CAEP,CACF,EAEakE,GAAoB,MAC/BC,EAKAC,EAKA3F,EACAE,EACAH,EACAE,EACAmB,EACAwE,EACAC,EACAC,EACAC,EACAlE,IACG,CAjpBL,IAAAjB,EAAAC,EAAAC,EAAAC,EAkpBE,IAAMG,EAAYC,GAAoBlB,CAAQ,EAExCG,EAAS0B,GAAcV,EAAaF,CAAS,EAEnD,GAAId,EAAQ,CACV,IAAM2B,EAAoBC,GACpBC,EAAS,IAAIC,GAAe9B,CAAM,EAClC+B,EACJN,KACAjB,EAAAmB,EAAaF,CAAO,IAApB,MAAAjB,EAAuB,YACvBE,GAAAD,EAAAuB,GAAYP,CAAO,IAAnB,YAAAhB,EAAsB,UAAtB,YAAAC,EAA+B,QAAS,EACpCe,EACAQ,GACAC,GAAWvB,EAAAqB,GAAYD,CAAQ,IAApB,YAAApB,EAAuB,QAAQ,GAC1CwB,EAASN,EAAO,YAAY,IAAIO,GAASF,CAAQ,CAAC,EAElDhC,EAAgB,IAAImC,GAAQF,EAAQR,EAAaI,CAAQ,EAAE,OAAO,EAExE,GAAI7B,EACF,OAAO,MAAMA,EACV,gBACCuF,EACA3F,EACAF,EACA+F,EACAD,CACF,EACC,KAAK,MAAOnF,IACPA,GAAA,YAAAA,EAAK,UAAW,GAClB,MAAM+E,EACJ,6BAA6B,KAAKE,CAAU,EAAI,QAAU,MAC1DA,EACA7F,CACF,EACO,MAAMO,EACV,YAAYuF,EAAaC,EAAc9F,EAAe+F,CAAO,EAC7D,KAAK,MAAOC,GAAc,CAtrBzC,IAAApF,EAAAC,EAurBgB,OAAImF,GAAA,YAAAA,EAAM,UAAW,KAAKpF,EAAAoF,GAAA,YAAAA,EAAM,WAAN,MAAApF,EAAgB,WACpCC,EAAAmF,GAAA,YAAAA,EAAM,WAAN,YAAAnF,EAAgB,OAAO,MAAO,IAChC,MAAM8E,EACJ,6BAA6B,KAAKC,CAAU,EACxC,QACA,MACJA,EACA,OAAOG,CAAO,CAChB,EAEK,IAEA,EAEX,CAAC,GAEI,EAEV,EACA,MAAOxE,IACF,QAAQ,IAAI,qBAAuB,cACrC,QAAQ,MAAM,qCAAsCA,CAAG,EAElD,GACR,CAEP,CACF,EAEa0E,GAAoB,MAC/BjG,EACAE,EACAH,EACAE,EACAmB,EACA2E,EACA5F,EACA0B,IACG,CA7tBL,IAAAjB,EAAAC,EAAAC,EAAAC,EA8tBE,IAAMG,EAAYC,GAAoBlB,CAAQ,EAExCG,EAAS0B,GAAcV,EAAaF,CAAS,EAEnD,GAAId,EAAQ,CACV,IAAM2B,EAAoBC,GACpBC,EAAS,IAAIC,GAAe9B,CAAM,EAClC+B,EACJN,KACAjB,EAAAmB,EAAaF,CAAO,IAApB,MAAAjB,EAAuB,YACvBE,GAAAD,EAAAuB,GAAYP,CAAO,IAAnB,YAAAhB,EAAsB,UAAtB,YAAAC,EAA+B,QAAS,EACpCe,EACAQ,GACAC,GAAWvB,EAAAqB,GAAYD,CAAQ,IAApB,YAAApB,EAAuB,QAAQ,GAC1CwB,EAASN,EAAO,YAAY,IAAIO,GAASF,CAAQ,CAAC,EAElDhC,EAAgB,IAAImC,GAAQF,EAAQR,EAAaI,CAAQ,EAAE,OAAO,EAExE,OAAI7B,EACK,MAAMA,EACV,YAAYN,EAAeE,EAAgBF,EAAe+F,CAAO,EACjE,KAAK,MAAOC,GAAc,CAnvBnC,IAAApF,EAAAC,EAovBU,IAAImF,GAAA,YAAAA,EAAM,UAAW,KAAKpF,EAAAoF,GAAA,YAAAA,EAAM,WAAN,MAAApF,EAAgB,SACxC,KAAIC,EAAAmF,GAAA,YAAAA,EAAM,WAAN,YAAAnF,EAAgB,OAAO,MAAO,GAChC,OAAO,MAAMP,EACV,gBACCN,EACAE,EACAF,EACA+F,EACA7F,CACF,EACC,KAAK,MAAOS,IACPA,GAAA,YAAAA,EAAK,UAAW,EACX,MAAML,EACV,UAAUN,EAAeE,EAAgB6F,CAAO,EAChD,KAAK,MAAOpF,GAAa,CAlwBhD,IAAAC,EAAAC,EAAAC,EAAAC,GAmwBwB,IAAIJ,GAAA,YAAAA,EAAK,UAAW,KAAKC,EAAAD,GAAA,YAAAA,EAAK,WAAL,MAAAC,EAAe,QAAQ,CAC9C,IAAMsF,GAAkBrF,EAAAF,GAAA,YAAAA,EAAK,WAAL,YAAAE,EAAe,OAAO,OAC3CsF,GAAiBA,IAAS,IAE7B,GAAID,EAAgB,OAAS,EAAG,CAE9B,IAAME,EAASF,EAAgB,IAC5BC,GACC,IAAI,WAAWA,EAAK,MAAM,GAAG,EAAE,IAAI,MAAM,CAAC,CAC9C,EAEME,EAAiB,MAAMC,GAAQF,CAAM,EAErCxC,EAAK,IAAI,YAAY,EAAE,OAAOyC,CAAc,EAElD,GAAIzC,EAAI,CACN,IAAM1C,EAAYC,GAAoBlB,CAAQ,EAExCsG,EAAiBlF,GACrBuC,EACA1C,CACF,EAIMsF,EAFY,IAAItE,GAAe0B,CAAE,EAEX,YAC1B,IAAIpB,GAASF,CAAQ,CACvB,EAWMmE,EACJ,MATA,MAAMC,GAAyB,CAC7B,OAAQF,EACR,WAAY,GAAGG,GAAgB,yBAAyB,IAAIxE,CAAQ,IAAIwE,GAAgBxE,CAAQ,EAAE,eAAkB,GACpH,wBACEwE,GAAgBxE,CAAQ,EACtB,iBAEN,CAAC,GAEkB,kBAAkB,EACvC,OAAIrB,EAAA,2BAAQ,UAAR,MAAAA,EAAiB,OACnB,MAAM,OAAO,QAAQ,MAAM,OAAO,SAAS,EAC3C,MAAM,OAAO,QAAQ,MAAM,IAAI,CAC7B,QAAS,KAAK,UAAU,CACtB,QAAS2F,EACT,QAAA1G,EACA,cAAeC,EACf,GAAIuG,EACJ,QAASpG,CACX,CAAC,CACH,CAAC,GAED,GAACY,GAAA,2BAAQ,UAAR,MAAAA,GAAiB,QAClB,eAEA,aAAa,WAAW,SAAS,EACjC,aAAa,QACX,UACA,KAAK,UAAU,CACb,QAAS0F,EACT,QAAA1G,EACA,cAAeC,EACf,GAAIuG,EACJ,QAASpG,CACX,CAAC,CACH,GAEK,EACT,CACF,KACE,OAAO,EAEX,KACE,OAAO,EAEX,CAAC,EACA,MAAOoB,IACF,QAAQ,IAAI,qBAAuB,cACrC,QAAQ,MACN,qCACAA,CACF,EAEK,GACR,EAEI,EAEV,MAGL,OAAO,EAEX,CAAC,EACA,MAAOA,IACF,QAAQ,IAAI,qBAAuB,cACrC,QAAQ,MAAM,qCAAsCA,CAAG,EAElD,GACR,EAEI,EAEX,CACF,EC32BA,OAAOqF,OAAW,QAIlB,IAAMC,GAAWC,GAeX,CAnBN,IAAAC,EAAAC,EAoBE,IAAMC,EAAaH,EAAM,WAqCrB,KApCA,WACE,IAAM,CAtBd,IAAAC,EAAAC,EAAAE,EAAAC,EAuBU,GAAIL,EAAM,cACR,GAAI,CACF,IAAIC,EAAA,2BAAQ,UAAR,MAAAA,EAAiB,YACnB,OAAO,QAAQ,YAAYD,EAAM,cAAgBM,GAAQ,CACnDA,GAAON,EAAM,SAAW,gBAC1B,OAAO,MAAM,CAEjB,CAAC,UACQ,GAACE,EAAA,2BAAQ,UAAR,MAAAA,EAAiB,aAAa,CACxC,IAAMK,EAAQ,IAAI,aAAYH,EAAAJ,EAAM,gBAAN,YAAAI,EAAqB,KAAM,CACvD,OAAQ,CACN,OAAOC,EAAAL,EAAM,gBAAN,YAAAK,EAAqB,KAC9B,CACF,CAAC,EACD,OAAO,cAAcE,CAAK,CAC5B,CACF,OAASC,EAAK,CACR,QAAQ,IAAI,qBAAuB,cACrC,QAAQ,MAAM,0BAA2BA,CAAG,EAG9CC,GACE,4BACA,mCACF,CACF,CAGET,EAAM,SAAWA,EAAM,WACzBA,EAAM,QAAQA,EAAM,SAAS,CAEjC,EACAA,EAAM,YAAcA,EAAM,YAAc,GAC1C,EAGEU,EAAiB,IAAM,CAC3BV,EAAM,QAAQ,GAAG,CACnB,EAEMW,EAAmB,IAAM,CAOzB,OAAO,KACT,OAAO,KAAK,OAAO,CACjB,IAAK,iCACP,CAAC,EAED,OAAO,SAAS,KAAO,iCAE3B,EAEA,OACEC,GAAA,cAAC,OACC,MAAO,CACL,aAAc,SACd,eAAgB,SAChB,SAAU,WACV,OAAQ,OACR,MAAO,KACT,EACA,UAAU,sDAEVA,GAAA,cAAC,OAAI,UAAU,4CACbA,GAAA,cAAC,OACC,MAAO,CAAE,MAAO,KAAM,EACtB,IAAKC,EAAY,YACjB,IAAI,eACN,EACAD,GAAA,cAAC,OAAI,UAAU,iDACbA,GAAA,cAAC,KAAE,UAAU,wDACTZ,GAAA,MAAAA,EAAO,WAELA,EAAM,iBADNA,EAAM,gBAEZ,EACAY,GAAA,cAAC,KAAE,UAAU,wDACTZ,GAAA,MAAAA,EAAO,WAELA,EAAM,iBADNA,EAAM,gBAEZ,CACF,CACF,EAECA,EAAM,cAAcC,EAAAD,EAAM,aAAN,YAAAC,EAAkB,QAAS,GAC9CW,GAAA,cAAC,UACC,MAAO,CAAE,UAAW,OAAQ,SAAU,MAAO,EAC7C,QAAS,IAAM,CACTT,GACF,aAAaA,CAAS,EAEpBH,EAAM,SAAW,cACnBU,EAAe,CAEnB,EACA,UAAU,4CAETV,EAAM,UACT,EAEDA,EAAM,cAAcE,EAAAF,EAAM,iBAAN,YAAAE,EAAsB,QAAS,GAClDU,GAAA,cAAC,UACC,MAAO,CAAE,UAAW,OAAQ,SAAU,MAAO,EAC7C,QAAS,IAAM,CACTT,GACF,aAAaA,CAAS,EAEpBH,EAAM,SAAW,cACnBW,EAAiB,CAErB,EACA,UAAU,2CAETX,EAAM,cACT,CAEJ,CAEJ,EAEOc,GAAQf,GFtIf,IAAMgB,GAAiBC,GAiBjB,CA7BN,IAAAC,EAAAC,EAAAC,EAAAC,EA8BE,GAAM,CAACC,EAAcC,CAAe,EAAIC,GAAS,EAAK,EAChD,CAACC,EAAcC,CAAe,EAAIF,GAAS,EAAK,EAChD,CAACG,EAAkBC,CAAmB,EAAIJ,GAAS,EAAE,EACrD,CAACK,EAASC,CAAU,EAAIN,GAAS,EAAI,EACrC,CAACO,EAAgBC,CAAiB,EAAIR,GAAS,EAAK,EACpD,CAACS,EAAuBC,CAAwB,EAAIV,GAAS,EAAK,EAClE,CAACW,EAAmBC,CAAoB,EAAIZ,GAAS,EAAK,EAC1D,CAACa,EAAUC,CAAW,EAAId,GAAS,EAAE,EACrC,CAACe,EAAsBC,CAAuB,EAAIhB,GAAS,EAAK,EAEhE,CAAE,QAAAiB,EAAS,GAAAC,EAAI,cAAAC,EAAe,aAAAC,EAAc,UAAAC,CAAU,EAC1DC,GAAc,EAGVC,EAAqBC,GAAsB,CAC/C,GAAIA,EAAa,MAAM,OAAS,EAAG,CACjC,IAAMC,EAAYD,EAAa,mBAC3BC,GACFA,EAAU,MAAM,CAEpB,MAAWD,EAAa,MAAM,SAAW,GACvCA,EAAa,MAAM,CAEvB,EAEME,EAAsBC,GAAW,CACrC,IAAMC,EAAiBD,EAAE,OAAO,uBAC5BC,GACFA,EAAe,MAAM,CAEzB,EAEMC,EAAsB,IAAM,CAChC,IAAMC,EAAc,SAAS,eAC3B,+BACF,EACMC,EAAY,SAAS,eAAe,gCAAgC,EACpEC,GAAY,SAAS,eAAe,gCAAgC,EACpEC,EAAY,SAAS,eAAe,gCAAgC,EACpEC,GAAY,SAAS,eAAe,gCAAgC,EACpEC,EAAY,SAAS,eAAe,gCAAgC,EACpEC,EAAY,SAAS,eAAe,gCAAgC,EACpEC,EAAY,SAAS,eAAe,gCAAgC,EACpEC,EAAY,SAAS,eAAe,gCAAgC,EAExER,IACAC,GAAA,YAAAA,EAAM,MAAM,QAAS,IACrBC,IAAA,YAAAA,GAAM,MAAM,QAAS,IACrBC,GAAA,YAAAA,EAAM,MAAM,QAAS,IACrBC,IAAA,YAAAA,GAAM,MAAM,QAAS,IACrBC,GAAA,YAAAA,EAAM,MAAM,QAAS,IACrBC,GAAA,YAAAA,EAAM,MAAM,QAAS,IACrBC,GAAA,YAAAA,EAAM,MAAM,QAAS,IACrBC,GAAA,YAAAA,EAAM,MAAM,QAAS,GAGnBP,GAAA,YAAAA,EAAM,QAAQC,IAAA,YAAAA,GAAM,QAAQC,GAAA,YAAAA,EAAM,QAAQC,IAAA,YAAAA,GAAM,UAChDC,GAAA,YAAAA,EAAM,QAAQC,GAAA,YAAAA,EAAM,QAAQC,GAAA,YAAAA,EAAM,QAAQC,GAAA,YAAAA,EAAM,OAEhDR,EAAO,UAAY,4CAEnBA,EAAO,UAAY,oCACnB5B,EAAgB,EAAI,GAGtB4B,EAAO,UAAY,mCAEvB,EAEMS,EAAwB,SAAY,CAnG5C,IAAA7C,EAAAC,EAAAC,GAAAC,EAAA2C,GAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAoGI,GAAI,CAACrD,EAAM,gBACTW,EACE,sFACF,EACAF,EAAgB,EAAI,MACf,CACLE,EAAoB,EAAE,EACtBF,EAAgB,EAAK,EACrB,IAAM6B,EAAY,SAAS,eACzB,gCACF,EACMC,EAAY,SAAS,eACzB,gCACF,EACMC,EAAY,SAAS,eACzB,gCACF,EACMC,EAAY,SAAS,eACzB,gCACF,EACMC,EAAY,SAAS,eACzB,gCACF,EACMC,EAAY,SAAS,eACzB,gCACF,EACMC,GAAY,SAAS,eACzB,gCACF,EACMC,GAAY,SAAS,eACzB,gCACF,EACMS,KACJrD,EAAAD,EAAM,YAAN,YAAAC,EAAiB,QAAS,EACtBD,EAAM,UACN,IAAIA,EAAM,gBAAgB,IAAI,IAAGE,EAAAF,EAAM,gBAAN,YAAAE,EAAqB,QACpD,IACA,GACD,GACDqD,KAAUpD,GAAAH,EAAM,YAAN,YAAAG,GAAiB,QAAS,EAAI,QAAU,MACxD,KACEC,EAAAkC,GAAA,YAAAA,EAAM,QAAN,YAAAlC,EAAa,QAAS,KACtB2C,GAAAR,GAAA,YAAAA,EAAM,QAAN,YAAAQ,GAAa,QAAS,KACtBC,EAAAR,GAAA,YAAAA,EAAM,QAAN,YAAAQ,EAAa,QAAS,KACtBC,EAAAR,GAAA,YAAAA,EAAM,QAAN,YAAAQ,EAAa,QAAS,KACtBC,EAAAR,GAAA,YAAAA,EAAM,QAAN,YAAAQ,EAAa,QAAS,KACtBC,EAAAR,GAAA,YAAAA,EAAM,QAAN,YAAAQ,EAAa,QAAS,KACtBC,EAAAR,IAAA,YAAAA,GAAM,QAAN,YAAAQ,EAAa,QAAS,KACtBC,EAAAR,IAAA,YAAAA,GAAM,QAAN,YAAAQ,EAAa,QAAS,GACtB7B,GACA8B,IACAC,IACA9B,GACAC,EACA,CACA1B,EAAM,aAAa,EAAI,EACvB,IAAMoB,IAAWkB,GAAA,YAAAA,EAAM,QAAQC,GAAA,YAAAA,EAAM,QAAQC,GAAA,YAAAA,EAAM,QAAQC,GAAA,YAAAA,EAAM,OAC3De,GAAgBC,GAAcH,EAAO,EACrCI,GAAiBD,GAAcrC,EAAQ,EAE7C,MAAMuC,GACJL,GACAE,GACApC,GACAsC,GACAH,GACA9B,EACAD,EACAE,EACA1B,EAAM,OACNA,EAAM,UACNA,EAAM,MACR,EAAE,KAAM4D,IAAQ,CACd5D,EAAM,aAAa,EAAK,EAEpB4D,IACFjC,EAAaiC,IAAA,MAAAA,GAAK,WAAa,CAAC,EAAIA,EAAG,EACvCjD,EAAoB,EAAE,EACtBF,EAAgB,EAAK,EACjBT,EAAM,SAAW,cACnBqB,EAAYD,EAAQ,EACpBL,EAAkB,EAAI,GACZ6C,IAAA,MAAAA,GAAK,WAENA,IAAA,MAAAA,GAAK,YACdzC,EAAqB,EAAI,EAFzBnB,EAAM,QAAQ,GAAG,GAIV4D,KAAQ,MACjBjD,EACE,+EACF,EACAF,EAAgB,EAAI,IAEpBE,EACE,kEACF,EACAF,EAAgB,EAAI,EAExB,CAAC,CACH,CACF,CACF,EAEMoD,GAAkC,MAAOC,GAAsB,CA3MvE,IAAA7D,EAAAC,GAAAC,EAAAC,EAAA2C,EAAAC,EAAAC,EAAAC,EA4MI,IAAMI,IACJrD,EAAAD,EAAM,YAAN,YAAAC,EAAiB,QAAS,EACtBD,EAAM,UACN,IAAIA,EAAM,gBAAgB,IAAI,IAAGE,GAAAF,EAAM,gBAAN,YAAAE,GAAqB,QACpD,IACA,GACD,GACDqD,KAAUpD,EAAAH,EAAM,YAAN,YAAAG,EAAiB,QAAS,EAAI,QAAU,MACxD,IACEiB,GAAA,YAAAA,EAAU,UAAW,KACrBhB,EAAAJ,GAAA,YAAAA,EAAO,YAAP,MAAAI,EAAkB,kBAClB2C,EAAA/C,EAAM,YAAN,MAAA+C,EAAiB,iBACjBO,EACA,CACAtD,EAAM,aAAa,EAAI,EACvB,IAAMwD,EAAgBC,GAAcH,CAAO,EACrCI,EAAiBD,GAAcrC,CAAQ,EAC7C,MAAM2C,GACJ/D,EAAM,gBAAgB,sBACtBA,EAAM,gBAAgB,qBACtBuD,GACAC,EACAE,GACAV,EAAAhD,GAAA,YAAAA,EAAO,YAAP,YAAAgD,EAAkB,eAClBC,EAAAjD,EAAM,YAAN,YAAAiD,EAAiB,gBACjBC,EAAAlD,EAAM,YAAN,YAAAkD,EAAiB,QACjBI,EACAQ,EACApC,CACF,EAAE,KAAMkC,GAAQ,CAzOtB,IAAA3D,EAAAC,EA0OQF,EAAM,aAAa,EAAK,EACpB4D,GAAO,EAAChC,GAAA,MAAAA,EAAW,aACrB5B,EAAM,kBAAkB,EAAI,EAC5BA,EAAM,kBAAkB,kCAAkC,EAC1DA,EAAM,sBAAsB,aAAa,EACzCA,EAAM,oBAAoB,YAAY,EACtCA,EAAM,oBACJ8D,EACI,2CAA0C7D,EAAAD,EAAM,YAAN,YAAAC,EAAiB,OAAO,GAClE,uCAAsCC,EAAAF,EAAM,YAAN,YAAAE,EAAiB,OAAO,EACpE,EACAF,EAAM,QAAQ,GAAG,GACR4D,IAAOhC,GAAA,MAAAA,EAAW,aAC3BX,EAAyB,EAAI,CAEjC,CAAC,CACH,CACF,EAEA,OACE+C,EAAA,cAACA,EAAM,SAAN,KACE,CAAC9C,GAAqB,CAACJ,GACtBkD,EAAA,cAAC,OAAI,UAAU,uCACbA,EAAA,cAAC,OAAI,UAAU,sCACbA,EAAA,cAACC,GAAA,CAAW,YAAa,CAAC,EAAG,EAAG,CAAC,EAAG,cAAc,IAAI,EACtDD,EAAA,cAAC,OAAI,UAAU,8CACbA,EAAA,cAAC,KAAE,UAAU,2CAA0C,YAEvD,EACAA,EAAA,cAAC,OAAI,UAAU,uCACbA,EAAA,cAAC,KAAE,UAAU,8CAA6C,4FAG1D,CACF,CACF,EACAA,EAAA,cAAC,OAAI,UAAU,0CACbA,EAAA,cAAC,KAAE,UAAU,+CAA8C,SAE3D,EACAA,EAAA,cAAC,OAAI,UAAU,sCACbA,EAAA,cAAC,SACC,eAAiB9B,GAAW,CApR9C,IAAAjC,EAqRoBiC,EAAE,OAAO,OAAQjC,EAAAiC,EAAE,OAAO,QAAT,YAAAjC,EAAgB,QAAQ,MAAO,IAChDQ,EAAgB,EAAK,CACvB,EACA,QAAUyB,GAAM,CACdJ,EAAkBI,EAAE,MAAM,EAC1BE,EAAoB,CACtB,EACA,UAAYF,GAAW,CACjBA,EAAE,MAAQ,aAAeA,EAAE,OAAO,QAAU,IAC9CD,EAAmBC,CAAC,CAExB,EACA,UACE1B,EACI,mCACA,+BAEN,KAAMI,EAAU,WAAa,OAC7B,UAAW,EACX,GAAG,iCACL,EACAoD,EAAA,cAAC,SACC,eAAiB9B,GAAW,CA3S9C,IAAAjC,EA4SoBiC,EAAE,OAAO,OAAQjC,EAAAiC,EAAE,OAAO,QAAT,YAAAjC,EAAgB,QAAQ,MAAO,IAChDQ,EAAgB,EAAK,CACvB,EACA,QAAUyB,GAAM,CACdJ,EAAkBI,EAAE,MAAM,EAC1BE,EAAoB,CACtB,EACA,UAAYF,GAAW,CACjBA,EAAE,MAAQ,aAAeA,EAAE,OAAO,QAAU,IAC9CD,EAAmBC,CAAC,CAExB,EACA,UACE1B,EACI,mCACA,+BAEN,KAAMI,EAAU,WAAa,OAC7B,UAAW,EACX,GAAG,iCACL,EACAoD,EAAA,cAAC,SACC,eAAiB9B,GAAW,CAlU9C,IAAAjC,EAmUoBiC,EAAE,OAAO,OAAQjC,EAAAiC,EAAE,OAAO,QAAT,YAAAjC,EAAgB,QAAQ,MAAO,IAChDQ,EAAgB,EAAK,CACvB,EACA,QAAUyB,GAAM,CACdJ,EAAkBI,EAAE,MAAM,EAC1BE,EAAoB,CACtB,EACA,UAAYF,GAAW,CACjBA,EAAE,MAAQ,aAAeA,EAAE,OAAO,QAAU,IAC9CD,EAAmBC,CAAC,CAExB,EACA,UACE1B,EACI,mCACA,+BAEN,KAAMI,EAAU,WAAa,OAC7B,UAAW,EACX,GAAG,iCACL,EACAoD,EAAA,cAAC,SACC,eAAiB9B,GAAW,CAzV9C,IAAAjC,EA0VoBiC,EAAE,OAAO,OAAQjC,EAAAiC,EAAE,OAAO,QAAT,YAAAjC,EAAgB,QAAQ,MAAO,IAChDQ,EAAgB,EAAK,CACvB,EACA,QAAUyB,GAAM,CACdJ,EAAkBI,EAAE,MAAM,EAC1BE,EAAoB,CACtB,EACA,UAAYF,GAAW,CACjBA,EAAE,MAAQ,aAAeA,EAAE,OAAO,QAAU,IAC9CD,EAAmBC,CAAC,CAExB,EACA,UACE1B,EACI,mCACA,+BAEN,KAAMI,EAAU,WAAa,OAC7B,UAAW,EACX,GAAG,iCACL,CACF,CACF,EAEAoD,EAAA,cAAC,OAAI,UAAU,0CACbA,EAAA,cAAC,KAAE,UAAU,+CAA8C,aAE3D,EACAA,EAAA,cAAC,OAAI,UAAU,sCACbA,EAAA,cAAC,SACC,eAAiB9B,GAAW,CAxX9C,IAAAjC,EAyXoBiC,EAAE,OAAO,OAAQjC,EAAAiC,EAAE,OAAO,QAAT,YAAAjC,EAAgB,QAAQ,MAAO,IAChDQ,EAAgB,EAAK,CACvB,EACA,QAAUyB,GAAM,CACdJ,EAAkBI,EAAE,MAAM,EAC1BE,EAAoB,CACtB,EACA,UAAYF,GAAW,CACjBA,EAAE,MAAQ,aAAeA,EAAE,OAAO,QAAU,IAC9CD,EAAmBC,CAAC,CAExB,EACA,UACE1B,EACI,mCACA,+BAEN,KAAMI,EAAU,WAAa,OAC7B,UAAW,EACX,GAAG,iCACL,EACAoD,EAAA,cAAC,SACC,eAAiB9B,GAAW,CA/Y9C,IAAAjC,EAgZoBiC,EAAE,OAAO,OAAQjC,EAAAiC,EAAE,OAAO,QAAT,YAAAjC,EAAgB,QAAQ,MAAO,IAChDQ,EAAgB,EAAK,CACvB,EACA,QAAUyB,GAAM,CACdJ,EAAkBI,EAAE,MAAM,EAC1BE,EAAoB,CACtB,EACA,UAAYF,GAAW,CACjBA,EAAE,MAAQ,aAAeA,EAAE,OAAO,QAAU,IAC9CD,EAAmBC,CAAC,CAExB,EACA,UACE1B,EACI,mCACA,+BAEN,KAAMI,EAAU,WAAa,OAC7B,UAAW,EACX,GAAG,iCACL,EACAoD,EAAA,cAAC,SACC,eAAiB9B,GAAW,CAta9C,IAAAjC,EAuaoBiC,EAAE,OAAO,OAAQjC,EAAAiC,EAAE,OAAO,QAAT,YAAAjC,EAAgB,QAAQ,MAAO,IAChDQ,EAAgB,EAAK,CACvB,EACA,QAAUyB,GAAM,CACdJ,EAAkBI,EAAE,MAAM,EAC1BE,EAAoB,CACtB,EACA,UAAYF,GAAW,CACjBA,EAAE,MAAQ,aAAeA,EAAE,OAAO,QAAU,IAC9CD,EAAmBC,CAAC,CAExB,EACA,UACE1B,EACI,mCACA,+BAEN,KAAMI,EAAU,WAAa,OAC7B,UAAW,EACX,GAAG,iCACL,EACAoD,EAAA,cAAC,SACC,eAAiB9B,GAAW,CA7b9C,IAAAjC,EA8boBiC,EAAE,OAAO,OAAQjC,EAAAiC,EAAE,OAAO,QAAT,YAAAjC,EAAgB,QAAQ,MAAO,IAChDQ,EAAgB,EAAK,CACvB,EACA,QAAUyB,GAAM,CACdJ,EAAkBI,EAAE,MAAM,EAC1BE,EAAoB,CACtB,EACA,UAAYF,GAAW,CACjBA,EAAE,MAAQ,aAAeA,EAAE,OAAO,QAAU,IAC9CD,EAAmBC,CAAC,CAExB,EACA,UACE1B,EACI,mCACA,+BAEN,KAAMI,EAAU,WAAa,OAC7B,UAAW,EACX,GAAG,iCACL,CACF,EACAoD,EAAA,cAAC,OAAI,UAAU,gCACZ,CAACxD,GAAgBwD,EAAA,cAAC,QAAE,EACpBxD,GAAgBE,IAAqB,IACpCsD,EAAA,cAAC,KAAE,UAAU,yCAAwC,8BAErD,EAEDxD,IAAgBE,GAAA,YAAAA,EAAkB,QAAS,GAC1CsD,EAAA,cAAC,KAAE,UAAU,yCACVtD,CACH,EAED,CAACE,GACAoD,EAAA,cAAC,OACC,MAAO,CAAE,OAAQ,UAAW,MAAO,OAAQ,OAAQ,MAAO,EAC1D,QAAS,IAAMnD,EAAW,EAAI,EAC9B,IAAKqD,EAAY,QACjB,IAAI,gBACN,EAEDtD,GACCoD,EAAA,cAAC,OACC,MAAO,CAAE,OAAQ,UAAW,MAAO,OAAQ,OAAQ,MAAO,EAC1D,QAAS,IAAMnD,EAAW,EAAK,EAC/B,IAAKqD,EAAY,QACjB,IAAI,gBACN,CAEJ,CACF,CACF,EAEC,CAAC7D,GAAgB2D,EAAA,cAAC,OAAI,MAAO,CAAE,OAAQ,MAAO,EAAG,EAElDA,EAAA,cAAC,OAAI,UAAU,6CACbA,EAAA,cAAC,OAAI,UAAU,sDACbA,EAAA,cAAC,UACC,GAAG,gCACH,QAAS,MAAO9B,GAAW,CACzB,GACEA,EAAE,OAAO,UAAU,SACjB,mCACF,GACAA,EAAE,OAAO,YAAc,oCAEvBA,EAAE,OAAO,UACP,0CACF,MAAMY,EAAsB,MACvB,CACL,IAAMqB,EAAgB,SAAS,uBAC7B,0CACF,EACIA,EAAc,OAAS,IACzBA,EAAc,CAAC,EAAE,UACf,0CACF,MAAMrB,EAAsB,EAEhC,CACF,EACA,UAAU,qCACX,SAED,CAIF,CACF,CACF,EAGD,CAAC5B,GAAqBJ,GACrBkD,EAAA,cAACA,EAAM,SAAN,KACE,CAAChD,GACAgD,EAAA,cAAC,OACC,MAAO,CAAE,QAAS,IAAK,SAAU,UAAW,EAC5C,UAAU,uCAEVA,EAAA,cAAC,OAAI,UAAU,sCACbA,EAAA,cAACC,GAAA,CAAW,YAAa,CAAC,EAAG,EAAG,CAAC,EAAG,cAAc,IAAI,EACtDD,EAAA,cAAC,OAAI,UAAU,8CACbA,EAAA,cAAC,KAAE,UAAU,2CACXA,EAAA,cAAC,UAAG/D,EAAAD,EAAM,YAAN,YAAAC,EAAiB,OAAQ,EAAI,sCAEnC,CACF,CACF,EACA+D,EAAA,cAAC,OACC,UAAU,4CACV,IAAKE,EAAY,iBACjB,IAAI,GACN,EACC,CAAC5C,GACA0C,EAAA,cAACA,EAAM,SAAN,KACCA,EAAA,cAAC,OAAI,UAAU,6CACbA,EAAA,cAAC,OAAI,UAAU,oDACbA,EAAA,cAAC,OAAI,UAAU,mDACbA,EAAA,cAAC,KAAE,UAAU,8CAA6C,sBAE1D,CACF,CACF,EACAA,EAAA,cAAC,KACC,MAAO,CACL,SAAU,OACV,MAAO,6BACT,EACA,UAAU,8CACX,oHAEyD,GAC1D,EAEAA,EAAA,cAAC,OAAI,UAAU,kDACbA,EAAA,cAAC,OAAI,UAAU,kDACbA,EAAA,cAAC,OAAI,IAAKE,EAAY,OAAQ,IAAI,OAAO,CAC3C,EACAF,EAAA,cAAC,KAAE,UAAU,mDAAkD,8BACjC,IAC5BA,EAAA,cAAC,QAAK,UAAU,wDAAuD,WAEvE,CACF,CACF,EAEAA,EAAA,cAAC,OAAI,UAAU,kDACbA,EAAA,cAAC,OAAI,UAAU,kDACbA,EAAA,cAAC,OAAI,IAAKE,EAAY,cAAe,IAAI,OAAO,CAClD,EACAF,EAAA,cAAC,KAAE,UAAU,mDAAkD,yBAC3C,IAClBA,EAAA,cAAC,QAAK,UAAU,wDAAuD,qBAEvE,EAAQ,IAAI,6BAEd,CACF,CACF,EACAA,EAAA,cAAC,OAAI,UAAU,gDACbA,EAAA,cAAC,UACC,QAAS,IAAM,CACbzC,EAAwB,EAAI,CAC9B,EACA,UAAU,+CACX,QAED,EAEAyC,EAAA,cAAC,UACC,QAAS,SAAY,CACnB,MAAMH,GAAgC,EAAI,CAC5C,EACA,UAAU,iDACX,QAED,CACF,CACF,EAGDvC,GACC0C,EAAA,cAAC,OAAI,UAAU,+DACbA,EAAA,cAAC,OAAI,UAAU,wDACbA,EAAA,cAAC,OAAI,UAAU,qDACbA,EAAA,cAAC,OAAI,UAAU,uDACbA,EAAA,cAAC,KAAE,UAAU,sDAAqD,+CAElE,EACAA,EAAA,cAAC,KACC,MAAO,CACL,SAAU,OACV,MAAO,6BACT,EACA,UAAU,sDACX,wCACuC,IACtCA,EAAA,cAAC,UAAG9D,EAAAF,EAAM,YAAN,YAAAE,EAAiB,OAAQ,EAAI,mDAEnC,CACF,EAEA8D,EAAA,cAAC,OACC,MAAO,CAAE,MAAO,KAAM,EACtB,UAAU,gDAEVA,EAAA,cAAC,UACC,QAAS,SAAY,CACnB,MAAMH,GAAgC,EAAK,CAC7C,EACA,UAAU,iDACX,KAED,EAEAG,EAAA,cAAC,UACC,QAAS,IAAM,CACbzC,EAAwB,EAAK,CAC/B,EACA,UAAU,iDACX,IAED,CACF,CACF,CACF,CACF,CAEJ,EAGDP,GACCgD,EAAA,cAACI,GAAA,CACC,cAAe,CAAE,KAAM,aAAc,IAAK,GAAI,MAAO,EAAG,EACxD,iBAAiB,aACjB,iBACG9C,EAEG,uCAAsClB,EAAAJ,EAAM,YAAN,YAAAI,EAAiB,OAAO,GAD9D,2CAA0CD,EAAAH,EAAM,YAAN,YAAAG,EAAiB,OAAO,GAG1E,CAEJ,EAGDe,GACC8C,EAAA,cAACI,GAAA,CACC,cAAe,CAAE,KAAM,aAAc,IAAK,GAAI,MAAO,EAAG,EACxD,iBAAiB,aACjB,iBAAiB,gDACnB,CAEJ,CAEJ,EAEOC,GAAQtE,GG/rBf,OAAOuE,GAAS,YAAAC,OAAgB,QAQhC,IAAMC,GAAoBC,GAapB,CArBN,IAAAC,EAAAC,EAAAC,EAAAC,EAsBE,GAAM,CAACC,EAAeC,CAAgB,EAAIC,GAAkB,EAAK,EAC3D,CAACC,EAAeC,CAAgB,EAAIF,GAAiB,GAAG,EACxD,CAACG,EAAcC,CAAe,EAAIJ,GAAiB,GAAG,EACtD,CAACK,EAAaC,CAAc,EAAIN,GAAkB,EAAK,EACvD,CAACO,EAAYC,CAAa,EAAIR,GAAiB,KAAK,EACpD,CAACS,EAAgBC,CAAiB,EAAIV,GAAiB,EAAE,EACzD,CAACW,EAAmBC,CAAoB,EAAIZ,GAAiB,EAAE,EAC/D,CAACa,EAAeC,CAAgB,EAAId,GAAiB,EAAE,EACvD,CAACe,EAAcC,CAAe,EAAIhB,GAAiB,EAAE,EACrD,CAACiB,EAAWC,CAAY,EAAIlB,GAAiB,EAAE,EAC/C,CAACmB,EAAcC,CAAe,EAAIpB,GAAkB,EAAK,EACzD,CAACqB,EAAiBC,CAAkB,EAAItB,GAC5CP,EAAM,gBAAkB,CACtB,KAAM,IACN,KAAM8B,EAAY,QAClB,KAAM,eACR,CACF,EACM,CAACC,EAAWC,CAAY,EAAIzB,GAAS,CAAC,CAAC,EACvC,CAAC0B,EAAaC,EAAc,EAAI3B,GAAkB,EAAK,EACvD,CAAC4B,EAAiBC,CAAkB,EAAI7B,GAAiB,CAAC,EAC1D,CAAC8B,EAAWC,CAAY,EAAI/B,GAAiB,EAAE,EAE/C,CAAE,GAAAgC,EAAI,UAAAC,EAAW,cAAAC,EAAc,EAAIC,GAAc,EAEjDC,EAAsB,IAAM,CAChC,IAAMC,EAAS,SAAS,eAAe,qBAAqB,EACxDA,IAAUb,GAAA,YAAAA,EAAW,QAAS,EAChCa,EAAO,UAAY,wBAEnBA,EAAQ,UAAY,gBAExB,EAEMC,GAAoB,IAAM,CAxDlC,IAAA5C,EAAAC,EAAAC,EAAAC,EAyDI,GAAIU,IAAe,QAASE,GAAA,YAAAA,EAAgB,UAAW,EAAG,CACxDsB,EAAa,8CAA8C,EAC3D,MACF,SAAWxB,IAAe,QAASE,GAAA,YAAAA,EAAgB,UAAW,GAAI,CAChEsB,EAAa,8CAA8C,EAC3D,MACF,SAAWxB,IAAe,UAAWM,GAAA,YAAAA,EAAe,UAAW,EAAG,CAChEkB,EAAa,uCAAuC,EACpD,MACF,SACExB,IAAe,SACf,CAAC,6BAA6B,KAAKM,CAAa,EAChD,CACAkB,EAAa,uCAAuC,EACpD,MACF,SACEP,GAAA,MAAAA,EAAW,KAAMe,GAAK,CAzE5B,IAAA7C,EAAAC,GAAAC,GAAAC,GA0EQ,OAAA0C,GAAA,YAAAA,EAAK,cAAe,QAChB7C,EAAA6C,GAAA,YAAAA,EAAK,YAAL,YAAA7C,EAAgB,iBAAgBC,GAAA4C,GAAA,YAAAA,EAAK,SAAL,YAAA5C,GAAa,mBAC7CC,GAAAyB,EAAgB,OAAhB,YAAAzB,GAAsB,gBACpBe,GAAA,YAAAA,EAAmB,iBACrBd,GAAA0C,GAAA,YAAAA,EAAK,QAAL,YAAA1C,GAAY,kBAAkBgB,GAAA,YAAAA,EAAe,iBAEnD,CACAkB,EACExB,IAAe,MACX,qDACA,6CACN,EACA,MACF,SACEA,IAAe,SACfb,EAAA2B,GAAA,YAAAA,EAAiB,OAAjB,YAAA3B,EAAuB,gBACrBiB,GAAA,YAAAA,EAAmB,mBACnBhB,EAAAF,EAAM,gBAAgB,OAAtB,YAAAE,EAA4B,iBAC1BC,EAAAH,EAAM,gBAAN,YAAAG,EAAqB,eACzB,CACAmC,EAAa,uDAAuD,EACpE,MACF,SACExB,IAAe,UACfM,GAAA,YAAAA,EAAe,mBAAkBhB,EAAAJ,EAAM,YAAN,YAAAI,EAAiB,eAClD,CACAkC,EAAa,yCAAyC,EACtD,MACF,CACAA,EAAa,EAAE,EACf,IAAIS,EAAiBhB,GAAA,YAAAA,EAAW,OAChCC,EAAcgB,GAAS,CACrB,CACE,KAAM1B,EACN,MAAOF,EACP,OAAQF,EACR,YAAa,IAAIU,GAAA,YAAAA,EAAiB,IAAI,GAAGZ,CAAc,GACvD,WAAYF,EACZ,UAAWc,GAAA,YAAAA,EAAiB,KAC5B,UAAUoB,GAAA,YAAAA,EAAM,QAAS,EACzB,QACElC,IAAe,MACX,IAAIc,GAAA,YAAAA,EAAiB,IAAI,GAAGZ,CAAc,GAC1CI,CACR,EACA,GAAG4B,CACL,CAAC,EACD3B,EAAiB,EAAE,EACnBE,EAAgB,EAAE,EAClBN,EAAkB,EAAE,EACpBE,EAAqB,EAAE,EACvBM,EAAa,EAAE,EACXsB,EAAiB,IAAM,GACzBlC,EAAe,EAAK,CAExB,EAEMoC,EAAsB,SAAY,CAnI1C,IAAAhD,EAAAC,EAAAC,EAAAC,EAAA8C,EAAAC,EAoII,IAAMC,EAAa,CACjB,CACE,aAAYnD,EAAAD,GAAA,YAAAA,EAAO,YAAP,YAAAC,EAAkB,QAAS,EAAI,QAAU,MACrD,MAAOD,GAAA,YAAAA,EAAO,UACd,YAAa,KACXE,EAAAF,GAAA,YAAAA,EAAO,kBAAP,YAAAE,EAAwB,IAC1B,IAAGC,EAAAH,GAAA,YAAAA,EAAO,gBAAP,YAAAG,EAAsB,QAAQ,IAAK,GAAG,GACzC,QAASqC,GAAA,YAAAA,EAAW,OACtB,EACA,GAAGT,CACL,GAGEqB,GAAA,YAAAA,EAAY,QAAS,IACrBrB,GAAA,YAAAA,EAAW,QAAS,GACpBI,IACAK,GAAA,MAAAA,EAAW,WACXA,GAAA,MAAAA,EAAW,iBACXA,GAAA,MAAAA,EAAW,YACXA,GAAA,MAAAA,EAAW,iBACXC,IACAF,KACAnC,EAAAJ,EAAM,kBAAN,MAAAI,EAAuB,2BACvB8C,EAAAlD,EAAM,kBAAN,MAAAkD,EAAuB,2BAEvBlD,EAAM,aAAa,EAAI,EACvB,MAAMqD,GACJrD,EAAM,gBAAgB,uBACtBA,EAAM,gBAAgB,wBACtBoD,EACArB,IACAoB,EAAAnD,GAAA,YAAAA,EAAO,YAAP,YAAAmD,EAAkB,QAAS,EAAI,QAAU,MACzChB,EACAK,EAAU,QACVA,EAAU,cACVA,EAAU,SACVA,EAAU,eACVC,GACAF,CACF,EAAE,KAAMe,IAAQ,CACdtD,EAAM,aAAa,EAAK,EACpBsD,IACFtD,EAAM,QAAQ,GAAG,CAErB,CAAC,EAEL,EAEA,OACEuD,EAAA,cAAC,OACC,MAAO,CAAE,QAAS,GAAI,EACtB,UAAU,uCAET,CAAClD,GACAkD,EAAA,cAACA,EAAM,SAAN,KACE7C,IAAiB,KAChB6C,EAAA,cAACA,EAAM,SAAN,KACE,IACDA,EAAA,cAAC,OAAI,UAAU,sCACbA,EAAA,cAACC,GAAA,CAAW,YAAa,CAAC,EAAG,EAAG,CAAC,EAAG,cAAc,IAAI,EACtDD,EAAA,cAAC,OAAI,UAAU,8CACbA,EAAA,cAAC,KAAE,UAAU,2CAA0C,mDAEvD,CACF,CACF,EACAA,EAAA,cAAC,OACC,UAAU,4CACV,IAAKzB,EAAY,iBACjB,IAAI,GACN,EACAyB,EAAA,cAAC,OAAI,UAAU,wCACbA,EAAA,cAAC,OAAI,UAAU,kDACbA,EAAA,cAAC,OAAI,UAAU,kDACbA,EAAA,cAAC,OAAI,IAAKzB,EAAY,OAAQ,IAAI,OAAO,CAC3C,EACAyB,EAAA,cAAC,KAAE,UAAU,mDAAkD,4CACnB,IAC1CA,EAAA,cAAC,QAAK,UAAU,wDAAuD,gCAEvE,CACF,CACF,EAEAA,EAAA,cAAC,OAAI,UAAU,kDACbA,EAAA,cAAC,OAAI,UAAU,kDACbA,EAAA,cAAC,OAAI,IAAKzB,EAAY,cAAe,IAAI,OAAO,CAClD,EACAyB,EAAA,cAAC,KAAE,UAAU,mDAAkD,wBAC5C,IACjBA,EAAA,cAAC,QAAK,UAAU,wDAAuD,+BAEvE,EAAQ,IAAI,6BAEd,CACF,EAEAA,EAAA,cAAC,OAAI,UAAU,kDACbA,EAAA,cAAC,OAAI,UAAU,kDACbA,EAAA,cAAC,OAAI,IAAKzB,EAAY,UAAW,IAAI,OAAO,CAC9C,EACAyB,EAAA,cAAC,KAAE,UAAU,mDAAkD,UACrD,IACRA,EAAA,cAAC,QAAK,UAAU,wDAAuD,uBAEvE,EAAQ,IAAI,+EAGd,CACF,CACF,EACAA,EAAA,cAAC,OAAI,UAAU,gDACbA,EAAA,cAAC,UACC,QAAS,IAAM,CACb9C,EAAiB,GAAG,EACpBH,EAAiB,EAAI,CACvB,EACA,UAAU,+CACX,YAED,EAEAiD,EAAA,cAAC,UACC,QAAS,IAAM,CACb5C,EAAgB,GAAG,EACnBE,EAAe,EAAK,EACpBP,EAAiB,EAAK,CACxB,EACA,UAAU,iDACX,eAED,CACF,CACF,EAGDI,IAAiB,KAChB6C,EAAA,cAACA,EAAM,SAAN,KACE,IACDA,EAAA,cAAC,OAAI,UAAU,sCACbA,EAAA,cAACC,GAAA,CAAW,YAAa,CAAC,EAAG,EAAG,CAAC,EAAG,cAAc,IAAI,EACtDD,EAAA,cAAC,OACC,MAAO,CAAE,IAAK,MAAO,EACrB,UAAU,8CAEVA,EAAA,cAAC,KAAE,UAAU,2CAA0C,qBAEvD,EACAA,EAAA,cAAC,OAAI,UAAU,uCACZ,CAACtB,GACAsB,EAAA,cAAC,KAAE,UAAU,+CAA8C,qEAG3D,EAEFA,EAAA,cAAC,OAAI,UAAU,oDACbA,EAAA,cAAC,KAAE,UAAU,oDACXA,EAAA,cAAC,QAAK,UAAU,yDAAwD,OAExE,EAAQ,IAAI,sFAGd,CACF,CACF,CACF,CACF,EACAA,EAAA,cAAC,OAAI,UAAU,8CACbA,EAAA,cAAC,OAAI,UAAU,qDACbA,EAAA,cAAC,KAAE,UAAU,gEAA+D,gBAE5E,EAEAA,EAAA,cAAC,KAAE,UAAU,iEAAgE,KACzExB,GAAA,YAAAA,EAAW,QAAS,EAAI,GAAIA,GAAA,YAAAA,EAAW,QAAS,EAAI,EAAE,KAC1D,CACF,EAEAwB,EAAA,cAAC,OAAI,UAAU,sDACbA,EAAA,cAAC,OAAI,UAAU,6DACbA,EAAA,cAAC,OAAI,UAAU,kEACbA,EAAA,cAAC,OAAI,UAAU,kEACbA,EAAA,cAAC,OAAI,UAAU,mEACbA,EAAA,cAAC,KAAE,UAAU,wEAAuE,SAEpF,CACF,EACAA,EAAA,cAAC,OAAI,UAAU,8DACbA,EAAA,cAAC,OAAI,UAAU,yDACbA,EAAA,cAAC,KAAE,UAAU,wDAAuD,KAEpE,IACCtD,EAAAD,EAAM,YAAN,YAAAC,EAAiB,QAAS,GACzBsD,EAAA,cAAC,KAAE,UAAU,wDACVvD,EAAM,SACT,IAEDE,EAAAF,EAAM,YAAN,YAAAE,EAAiB,UAAW,GAC3BqD,EAAA,cAAC,KAAE,UAAU,wDAAuD,KAC/DvD,EAAM,gBAAgB,KAAK,IAAE,IAC/BA,EAAM,aACT,CAEJ,CACF,CAKF,CACF,EACC,CAACiC,GACAF,EACG,KAAK,CAAC0B,EAAGC,KAAMD,GAAA,YAAAA,EAAG,WAAWC,GAAA,YAAAA,EAAG,SAAQ,EACxC,IAAI,CAACC,EAAUC,IAAa,CA1VrD,IAAA3D,EAAAC,EA2V0B,OAAAqD,EAAA,cAAC,OACC,IAAKK,EACL,UAAU,kEAEVL,EAAA,cAAC,OAAI,UAAU,kEACbA,EAAA,cAAC,OAAI,UAAU,mEACbA,EAAA,cAAC,KAAE,UAAU,yEAETtD,EAAA4D,GAAmBF,GAAA,YAAAA,EAAK,QAAQ,IAAhC,YAAA1D,EAAmC,MACjC,KACA,GAEJsD,EAAA,cAAC,YAEGrD,EAAA2D,GAAmBF,GAAA,YAAAA,EAAK,QAAQ,IAAhC,YAAAzD,EAAmC,MACjC,KACA,EAEN,EAAO,IAAI,WAEb,CACF,EACAqD,EAAA,cAAC,OAAI,UAAU,8DACbA,EAAA,cAAC,OAAI,UAAU,yDACbA,EAAA,cAAC,KAAE,UAAU,wDACVI,GAAA,YAAAA,EAAK,IACR,EACCA,EAAI,aAAe,SAClBJ,EAAA,cAAC,KAAE,UAAU,wDACVI,EAAI,KACP,EAEDA,EAAI,aAAe,OAClBJ,EAAA,cAAC,KAAE,UAAU,wDAAuD,KAC/DI,GAAA,YAAAA,EAAK,UAAU,KAAGA,EAAI,MAC3B,CAEJ,CACF,EAEAJ,EAAA,cAAC,OAAI,UAAU,+DACbA,EAAA,cAAC,OACC,MAAO,CAAE,OAAQ,SAAU,EAC3B,IAAKzB,EAAY,UACjB,IAAI,OACN,EACAyB,EAAA,cAAC,OACC,eAAgB,IAAM,CACpBvB,EAAcgB,GAAM,CA3YxD,IAAA/C,EA4YsC,OAAAA,EAAA+C,GAAA,YAAAA,EACI,OAAQF,GAAK,CA7YvD,IAAA7C,GAAAC,GAAAC,GAAAC,GAAA8C,GAAAC,GA8Y0C,OAAAL,GAAA,YAAAA,EAAK,cAAe,QAChB7C,GAAA6C,GAAA,YAAAA,EAAK,YAAL,YAAA7C,GAAgB,iBACdC,GAAA4C,GAAA,YAAAA,EAAK,SAAL,YAAA5C,GAAa,mBACfC,GAAAwD,GAAA,YAAAA,EAAK,YAAL,YAAAxD,GAAgB,iBACdC,GAAAuD,GAAA,YAAAA,EAAK,SAAL,YAAAvD,GAAa,iBACf8C,GAAAJ,GAAA,YAAAA,EAAK,QAAL,YAAAI,GAAY,mBACZC,GAAAQ,GAAA,YAAAA,EAAK,QAAL,YAAAR,GAAY,mBARpB,YAAAlD,EAUI,IAAI,CAAC6D,EAAMC,MACXD,EAAK,SAAWC,GAAQ,EACjBD,IAEb,CACF,EACA,QAAS,IAAM,CACbnB,EAAoB,CACtB,EACA,MAAO,CAAE,OAAQ,SAAU,EAC3B,IAAKb,EAAY,OACjB,IAAI,SACN,CACF,CACF,CACF,EACD,CACP,EAECG,GACCsB,EAAA,cAAC,OAAI,UAAU,+DACbA,EAAA,cAAC,OAAI,UAAU,wDACbA,EAAA,cAAC,OAAI,UAAU,qDACbA,EAAA,cAAC,OAAI,UAAU,uDACbA,EAAA,cAAC,KAAE,UAAU,sDAAqD,uEAGlE,EACAA,EAAA,cAAC,KAAE,UAAU,sDAAqD,+FAIlE,CACF,EAEAA,EAAA,cAAC,OACC,MAAO,CAAE,MAAO,MAAO,EACvB,UAAU,uDAEVA,EAAA,cAAC,OAAI,UAAU,gEACZ,IAAI,OAAMxB,GAAA,YAAAA,EAAW,QAAS,CAAC,EAC7B,KAAK,GAAG,EACR,IAAI,CAACiC,EAAQJ,IACZL,EAAA,cAAC,OACC,MACEK,EAAM,IAAMzB,EACR,CAAC,EACD,CACE,OAAQ,IACR,MAAO,IACP,SAAU,QACZ,EAEN,IAAKyB,EACL,UAAU,2DAEVL,EAAA,cAAC,OAAI,UAAU,qEACbA,EAAA,cAAC,KAAE,UAAU,gEACV,OAAOK,EAAM,CAAC,CACjB,EAAK,GACP,EACAL,EAAA,cAAC,OACC,UAAU,+DACV,IAAKzB,EAAY,QACjB,IAAI,GACN,CACF,CACD,CACL,EAEAyB,EAAA,cAAC,OAAI,UAAU,kEACbA,EAAA,cAAC,OAAI,UAAU,yEACbA,EAAA,cAAC,OAAI,UAAU,oEACbA,EAAA,cAAC,OACC,OACExB,GAAA,YAAAA,EAAW,UAAW,EAClB,CACE,MAAO,GACL,KAAMA,GAAA,YAAAA,EAAW,OACnB,GACF,EACA,CACE,MAAO,QACL,KAAMA,GAAA,YAAAA,EAAW,OACnB,WACF,EAEN,UAAU,wEAEVwB,EAAA,cAAC,OACC,UAAU,wEACV,IAAKzB,EAAY,UACjB,IAAI,GACN,CACF,CACF,CACF,EAEAyB,EAAA,cAAC,OAAI,UAAU,uEACZ,IAAI,OAAMxB,GAAA,YAAAA,EAAW,QAAS,CAAC,EAC7B,KAAK,GAAG,EACR,IAAI,CAACiC,EAAQJ,IACZL,EAAA,cAAC,KACC,MACEK,KAAQ7B,GAAA,YAAAA,EAAW,QACf,CAAE,aAAc,MAAO,EACvB6B,IAAQ,EACR,CAAE,YAAa,MAAO,EACtB,CAAC,EAEP,QAAS,IAAM,CACTA,EAAM,EAAI,GACZxB,EAAmBwB,EAAM,CAAC,CAE9B,EACA,IAAKA,EACL,UAAU,kEAET,OAAOA,EAAM,CAAC,CACjB,CACD,CACL,CACF,CACF,EAEAL,EAAA,cAAC,UACC,GAAG,0BACH,MAAO,CAAE,aAAc,OAAQ,MAAO,MAAO,EAC7C,QAAS,MAAOU,GAAW,CACzB,GACEA,EAAE,OAAO,UAAU,SAAS,gBAAgB,GAC5CA,EAAE,OAAO,YAAc,iBAEvBA,EAAE,OAAO,UAAY,uBACrB,MAAMhB,EAAoB,MACrB,CACL,IAAMiB,EACJ,SAAS,uBACP,uBACF,EACEA,EAAc,OAAS,IACzBA,EAAc,CAAC,EAAE,UACf,wBAEJ,MAAMjB,EAAoB,CAC5B,CACF,EACA,UAAU,4CACX,SAED,CACF,CACF,CACF,EAGDrC,IAAemB,GAAA,YAAAA,EAAW,QAAS,GAClCwB,EAAA,cAAC,OAAI,UAAU,uDACbA,EAAA,cAAC,OAAI,UAAU,wDACbA,EAAA,cAAC,OAAI,UAAU,+DACbA,EAAA,cAAC,KAAE,UAAU,oEAAmE,aAEhF,CACF,EAEAA,EAAA,cAAC,OAAI,UAAU,+DACbA,EAAA,cAAC,KAAE,UAAU,qEAETpD,EAAA0D,IAAmB9B,GAAA,YAAAA,EAAW,QAAS,CAAC,IAAxC,YAAA5B,EAA2C,MACzC,KACA,GAEJoD,EAAA,cAAC,YAEGnD,EAAAyD,IACE9B,GAAA,YAAAA,EAAW,QAAS,CACtB,IAFA,YAAA3B,EAEG,MAAM,KAAK,EAElB,EAAO,IAAI,WAEb,CACF,CACF,EAEAmD,EAAA,cAAC,OAAI,UAAU,yDACbA,EAAA,cAAC,SACC,QAAUU,GAAW,CACnB1C,EAAgB0C,EAAE,OAAO,KAAK,CAChC,EACA,MAAO3C,EACP,YAAY,uBACZ,UAAU,8DACV,KAAK,OACP,CACF,EAEAiC,EAAA,cAAC,OAAI,UAAU,wDACbA,EAAA,cAAC,OAAI,UAAU,6DACbA,EAAA,cAAC,OACC,QAAS,IAAM,CACbxC,EAAc,KAAK,EACnBuB,EAAa,EAAE,EACfjB,EAAiB,EAAE,CACrB,EACA,IACEP,IAAe,MACXgB,EAAY,cACZA,EAAY,OAElB,IAAI,GACN,EACAyB,EAAA,cAAC,KAAE,UAAU,kEAAiE,cAE9E,CACF,EACAA,EAAA,cAAC,OAAI,UAAU,6DACbA,EAAA,cAAC,OACC,QAAS,IAAM,CACbxC,EAAc,OAAO,EACrBuB,EAAa,EAAE,EACfrB,EAAkB,EAAE,EACpBE,EAAqB,EAAE,EACvBM,EAAa,EAAE,CACjB,EACA,IACEX,IAAe,QACXgB,EAAY,cACZA,EAAY,OAElB,IAAI,GACN,EACAyB,EAAA,cAAC,KAAE,UAAU,kEAAiE,OAE9E,CACF,CACF,EAEAA,EAAA,cAAC,OAAI,UAAU,wDACZzC,IAAe,OACdyC,EAAA,cAAC,OAAI,UAAU,uCACbA,EAAA,cAAC,OAAI,UAAU,mDACbA,EAAA,cAAC,OACC,QAAS,IAAM,CACb5B,EAAgB,CAACD,CAAY,CAC/B,EACA,UAAU,+CAEV6B,EAAA,cAAC,OACC,QAAS,IAAM,CACb5B,EAAgB,CAACD,CAAY,CAC/B,EACA,IAAI,eACJ,UAAU,+CACV,IAAKE,EAAgB,KACvB,EACA2B,EAAA,cAAC,KACC,QAAS,IAAM,CACb5B,EAAgB,CAACD,CAAY,CAC/B,EACA,UAAU,gDACX,KACIE,EAAgB,IACrB,EACCF,GACC6B,EAAA,cAAC,OACC,QAAS,IAAM,CACb5B,EAAgB,CAACD,CAAY,CAC/B,EACA,IAAI,gBACJ,UAAU,yCACV,IAAKI,EAAY,QACnB,EAED,CAACJ,GACA6B,EAAA,cAAC,OACC,QAAS,IAAM,CACb5B,EAAgB,CAACD,CAAY,CAC/B,EACA,IAAI,gBACJ,UAAU,yCACV,IAAKI,EAAY,UACnB,CAEJ,EAEAyB,EAAA,cAAC,SACC,eAAiBU,GAAW,CAprB5D,IAAAhE,EAqrBsCgE,EAAE,OAAO,QAAU,GACrBxC,EAAaD,EAAY,GAAG,EAE5BC,EAAawC,EAAE,OAAO,KAAK,EAE7B,IAAME,GAAelE,EAAAgE,EAAE,OAAO,QAAT,YAAAhE,EAAgB,QACnC,MACA,IAEFgB,EAAkBkD,CAAY,EAC9B,IAAIC,EAAkB,GACtB,QACMC,EAAI,EACRA,GAAIF,GAAA,YAAAA,EAAc,QAClBE,IAEAD,GAAmBD,EAAaE,CAAC,GAE9BA,EAAI,GAAK,IAAM,GAChBA,EAAI,GAAIF,GAAA,YAAAA,EAAc,UAEtBC,GAAmB,KAGvBjD,EAAqBiD,CAAe,EACpC9B,EAAa,EAAE,CACjB,EACA,QAAU2B,GAAM,CACdtB,EAAoB,CACtB,EACA,MAAOzB,EACP,GAAG,cACH,KAAK,OACL,UAAU,+CACV,YAAY,qBACd,CACF,EACCQ,GACC6B,EAAA,cAACe,GAAA,CACC,SAAS,cACT,cAAetE,EAAM,aACrB,KAAK,YACL,oBAAqB2C,EACrB,YAAad,EACb,SAAUD,EACV,aAAcF,EACd,gBAAiBC,EACjB,iBAAiB,MACjB,oBAAoB,MACtB,EAEDU,IAAc,IACbrB,EAAe,SAAW,IAC1BQ,EAAU,OAAS,IACjB+B,EAAA,cAAC,OAAI,UAAU,6CACbA,EAAA,cAAC,KAAE,UAAU,uCAAsC,8CAEnD,CACF,EAEHlB,IAAc,IACbkB,EAAA,cAAC,OAAI,UAAU,6CACbA,EAAA,cAAC,KAAE,UAAU,uCACVlB,CACH,CACF,CAEJ,EAEDvB,IAAe,SACdyC,EAAA,cAACA,EAAM,SAAN,KACCA,EAAA,cAAC,OAAI,UAAU,uCACbA,EAAA,cAAC,SACC,MAAO,CAAE,MAAO,MAAO,EACvB,eAAiBU,GAAW,CAC1B5C,EAAiB4C,EAAE,OAAO,KAAK,EAC/B3B,EAAa,EAAE,CACjB,EACA,QAAU2B,GAAM,CACdtB,EAAoB,CACtB,EACA,MAAOvB,EACP,GAAG,cACH,KAAK,OACL,UAAU,+CACV,YAAY,cACd,EACCiB,IAAc,IACbkB,EAAA,cAAC,OAAI,UAAU,6CACbA,EAAA,cAAC,KAAE,UAAU,uCACVlB,CACH,CACF,CAEJ,CACF,CAEJ,EAEAkB,EAAA,cAAC,OAAI,UAAU,0DACbA,EAAA,cAAC,UACC,QAAS,IAAM1C,EAAe,EAAK,EACnC,UAAU,+DACX,QAED,EACA0C,EAAA,cAAC,UACC,eAAgB,IAAM,CACpBV,GAAkB,CACpB,EACA,QAAS,IAAMF,EAAoB,EACnC,UAAU,iEACX,KAED,CACF,CACF,EAGD,CAAC/B,GAAe,CAACqB,IAAeF,GAAA,YAAAA,EAAW,QAAS,GACnDwB,EAAA,cAAC,OACC,QAAS,IAAM1C,EAAe,EAAI,EAClC,UAAU,6DAEV0C,EAAA,cAAC,OACC,MAAO,CAAE,MAAO,MAAO,EACvB,IAAKzB,EAAY,QACjB,IAAI,WACN,EACAyB,EAAA,cAAC,KAAE,UAAU,kEAAiE,uBAE9E,CACF,EAED,CAAC3C,GAAe,CAACqB,IAAeF,GAAA,YAAAA,EAAW,UAAW,GACrDwB,EAAA,cAAC,OAAI,UAAU,iEACbA,EAAA,cAAC,OACC,MAAO,CAAE,MAAO,MAAO,EACvB,IAAKzB,EAAY,eACjB,IAAI,WACN,EACAyB,EAAA,cAAC,KAAE,UAAU,sEAAqE,uBAElF,CACF,CAEJ,CACF,EACC,CAACtB,GACAsB,EAAA,cAAC,UACC,MACE,CAAC3C,IAAemB,GAAA,YAAAA,EAAW,QAAS,EAChC,CAAE,UAAW,OAAQ,aAAc,MAAO,EAC1C,CAAE,aAAc,MAAO,EAE7B,GAAG,sBACH,QAAS,MAAOkC,GAAW,CACzB,GACEA,EAAE,OAAO,UAAU,SAAS,gBAAgB,GAC5CA,EAAE,OAAO,YAAc,iBAEvBA,EAAE,OAAO,UAAY,wBACjBlC,GAAA,YAAAA,EAAW,QAAS,IACtBK,EAAmB,CAAC,EACpBF,GAAe,EAAI,EACnBrB,EAAe,EAAK,OAEjB,CACL,IAAMqD,EAAgB,SAAS,uBAC7B,uBACF,EACIA,EAAc,OAAS,IACzBA,EAAc,CAAC,EAAE,UAAY,wBACzBnC,GAAA,YAAAA,EAAW,QAAS,IACtBK,EAAmB,CAAC,EACpBF,GAAe,EAAI,EACnBrB,EAAe,EAAK,GAG1B,CACF,EACA,UAAU,qCACX,SAED,CAEJ,CAEJ,EAGDR,GACCkD,EAAA,cAACA,EAAM,SAAN,KACE/C,IAAkB,KACjB+C,EAAA,cAACA,EAAM,SAAN,KACCA,EAAA,cAAC,OACC,UAAU,4CACV,IAAKzB,EAAY,iBACjB,IAAI,GACN,EAEAyB,EAAA,cAAC,OAAI,UAAU,6CACbA,EAAA,cAAC,OAAI,UAAU,oDACbA,EAAA,cAAC,OAAI,UAAU,mDACbA,EAAA,cAAC,KAAE,UAAU,8CAA6C,sBAE1D,CACF,CACF,EACAA,EAAA,cAAC,KAAE,UAAU,8CAA6C,oHAEA,GAC1D,CACF,EAEAA,EAAA,cAAC,OAAI,UAAU,gDACbA,EAAA,cAAC,UACC,QAAS,IAAMjD,EAAiB,EAAK,EACrC,UAAU,+CACX,MAED,EAEAiD,EAAA,cAAC,UACC,QAAS,IAAM9C,EAAiB,GAAG,EACnC,UAAU,iDACX,MAED,CACF,CACF,EAGDD,IAAkB,KACjB+C,EAAA,cAACA,EAAM,SAAN,KACCA,EAAA,cAAC,OACC,UAAU,4CACV,IAAKzB,EAAY,iBACjB,IAAI,GACN,EAEAyB,EAAA,cAAC,OAAI,UAAU,6CACbA,EAAA,cAAC,OAAI,UAAU,oDACbA,EAAA,cAAC,OAAI,UAAU,mDACbA,EAAA,cAAC,KAAE,UAAU,8CAA6C,mBAE1D,CACF,CACF,EACAA,EAAA,cAAC,KAAE,UAAU,8CAA6C,6HAG1D,CACF,EAEAA,EAAA,cAAC,OAAI,UAAU,gDACbA,EAAA,cAAC,UACC,QAAS,IAAM9C,EAAiB,GAAG,EACnC,UAAU,+CACX,MAED,EAEA8C,EAAA,cAAC,UACC,QAAS,IAAM9C,EAAiB,GAAG,EACnC,UAAU,iDACX,MAED,CACF,CACF,EAGDD,IAAkB,KACjB+C,EAAA,cAACA,EAAM,SAAN,KACCA,EAAA,cAAC,OACC,UAAU,4CACV,IAAKzB,EAAY,iBACjB,IAAI,GACN,EAEAyB,EAAA,cAAC,OAAI,UAAU,6CACbA,EAAA,cAAC,OAAI,UAAU,oDACbA,EAAA,cAAC,OAAI,UAAU,mDACbA,EAAA,cAAC,KAAE,UAAU,8CAA6C,0BAE1D,CACF,CACF,EACAA,EAAA,cAAC,KAAE,UAAU,8CAA6C,+FAG1D,EACAA,EAAA,cAAC,KAAE,UAAU,mDAAkD,uBAE/D,CACF,EAEAA,EAAA,cAAC,OAAI,UAAU,gDACbA,EAAA,cAAC,UACC,QAAS,IAAM9C,EAAiB,GAAG,EACnC,UAAU,+CACX,MAED,EAEA8C,EAAA,cAAC,UACC,QAAS,IAAM,CACb5C,EAAgB,GAAG,EACnBE,EAAe,EAAK,EACpBP,EAAiB,EAAK,EACtBG,EAAiB,GAAG,CACtB,EACA,UAAU,iDACX,OAED,CACF,CACF,CAEJ,CAEJ,CAEJ,EAEO8D,GAAQxE,GZ/+Bf,IAAMyE,GAAWC,GAoBX,CACJ,GAAM,CAACC,EAAaC,CAAc,EAAIC,GACpCH,EAAM,aAAe,EACvB,EACM,CAACI,EAAUC,CAAW,EAAIF,GAC9BH,EAAM,cAAgB,EACxB,EACM,CAACM,EAAcC,CAAe,EAAIJ,GAAS,CAAC,CAAC,EAC7C,CAACK,EAAMC,CAAO,EAAIN,GAAiB,GAAG,EACtC,CAACO,EAAiBC,CAAkB,EAAIR,GAC5CH,EAAM,gBAAkB,CACtB,KAAM,IACN,KAAMY,EAAY,QAClB,KAAM,eACR,CACF,EACM,CAACC,EAAeC,CAAgB,EAAIX,GAAiB,EAAE,EACvD,CAACY,EAAWC,CAAY,EAAIb,GAAiB,EAAE,EAC/C,CAACc,EAAgBC,CAAiB,EAAIf,GAAkB,EAAK,EAC7D,CAACgB,EAAgBC,CAAiB,EAAIjB,GAAiB,EAAE,EACzD,CAACkB,EAAoBC,CAAqB,EAAInB,GAAiB,EAAE,EACjE,CAACoB,EAAkBC,CAAmB,EAAIrB,GAAiB,EAAE,EAC7D,CAACsB,EAAkBC,CAAmB,EAAIvB,GAAiB,EAAE,EAC7D,CAACwB,EAAgBC,CAAiB,EAAIzB,GAAS,IAAI,EACnD,CAAC0B,EAAoBC,EAAqB,EAAI3B,GAAS,IAAI,EAE3D,CACJ,WAAA4B,EACA,WAAAC,EACA,MAAAC,EACA,YAAAC,EACA,UAAAC,EACA,iBAAAC,EACA,aAAAC,GACA,UAAAC,CACF,EAAIC,GAAc,EAElB,OAAAC,GAAU,IAAM,CACd,IAAMC,GAAqB,IAAM,CAC/B,IAAMC,EAAgBC,GAAmB,QAAQ,EACjDzC,EAAewC,CAAa,CAC9B,EACK1C,EAAM,aACTyC,GAAmB,CAEvB,EAAG,CAAC,CAAC,EAELD,GAAU,IAAM,EAC0B,SAAY,CAClD,IAAMI,EAA2B,MAAMC,GACrC7C,EAAM,OACR,EACA+B,EAAWa,EAAyB,OAAO,EAC3CZ,EAAWY,EAAyB,OAAO,EAC3CX,EAAMW,EAAyB,EAAE,EACjCV,EAAYU,EAAyB,QAAQ,EAC7CT,EAAUS,EAAyB,MAAM,EACzCR,EAAiBQ,EAAyB,aAAa,EACvDP,GAAaO,EAAyB,SAAS,CACjD,GACgC,CAClC,EAAG,CAAC,CAAC,EAELJ,GAAU,IAAM,CACYM,GACxB,IAAM,CACJzC,EAAY,EAAK,CACnB,EACAL,EAAM,gBAAkBA,EAAM,gBAAkB,GAClD,EACkB,CACpB,EAAG,CAAC,CAAC,EAELwC,GAAU,IAAM,EACmB,IAAM,CACrC,IAAMO,EAAoBC,GACvB,IAAKC,GAAa,CACjB,GAAIA,EACF,MAAO,CACL,KAAMA,GAAA,YAAAA,EAAK,KACX,YAAaA,GAAA,YAAAA,EAAK,KAClB,aAAcA,GAAA,YAAAA,EAAK,KACnB,eAAgBA,GAAA,YAAAA,EAAK,SACrB,aAAcA,GAAA,YAAAA,EAAK,SACnB,uBAAwBA,GAAA,YAAAA,EAAK,SAC7B,YAAaA,GAAA,YAAAA,EAAK,KAClB,KAAMA,GAAA,YAAAA,EAAK,KACX,UAAWA,GAAA,YAAAA,EAAK,UAChB,WAAYA,GAAA,YAAAA,EAAK,WACjB,KAAMA,GAAA,YAAAA,EAAK,IACb,CAEJ,CAAC,EACA,KAAK,EACR1C,EAAgBwC,GAAA,YAAAA,EAAc,OAAQE,GAAaA,IAAQ,OAAU,CACvE,GACyB,CAC3B,EAAG,CAAC,CAAC,EAGHC,GAAA,cAACA,GAAM,SAAN,KACEjD,GAAeG,GAAYJ,EAAM,iBAChCkD,GAAA,cAACA,GAAM,SAAN,KAAe,IAAElD,EAAM,eAAgB,EAEzCC,GAAe,CAACG,GACf8C,GAAA,cAACA,GAAM,SAAN,KAIE1C,IAAS,KACR0C,GAAA,cAACC,GAAA,CACC,QAAS1C,EACT,aAAcT,EAAM,aACpB,iBAAkBc,EAClB,cAAeD,EACf,aAAcG,EACd,UAAWD,EACX,mBAAoBJ,EACpB,gBAAiBD,EACjB,aAAcJ,EAChB,EAEDE,IAAS,KACR0C,GAAA,cAACE,GAAA,CACC,QAAS3C,EACT,aAAcT,EAAM,aACpB,cAAea,EACf,iBAAkBC,EAClB,aAAcE,EACd,UAAWD,EACX,gBAAiBL,EACnB,EAGDF,IAAS,KACR0C,GAAA,cAACG,GAAA,CACC,QAAS5C,EACT,aAAcT,EAAM,aACpB,kBAAmBkB,EACnB,kBAAmBE,EACnB,sBAAuBE,EACvB,kBAAmBM,EACnB,sBAAuBE,GACvB,cAAejB,EACf,UAAWE,EACX,gBAAiBL,EACjB,OAAQV,EAAM,OACd,UAAWA,EAAM,UACjB,OAAQA,EAAM,OACd,oBAAqBwB,EACrB,oBAAqBE,EACrB,gBAAiB1B,EAAM,gBACzB,EAGDQ,IAAS,KACR0C,GAAA,cAACI,GAAA,CACC,QAAS7C,EACT,UAAU,IACV,iBAAiB,aACjB,iBAAiB,gFACjB,OAAQT,EAAM,OACd,WAAYiB,EACZ,WAAYE,EACZ,eAAgBE,EAChB,WAAYM,EACZ,eAAgBE,EAChB,iBAAkBN,EAClB,iBAAkBE,EACpB,EAGDjB,IAAS,KACR0C,GAAA,cAACK,GAAA,CACC,QAAS9C,EACT,aAAcT,EAAM,aACpB,cAAea,EACf,UAAWE,EACX,gBAAiBL,EACjB,aAAcJ,EACd,gBAAiBN,EAAM,gBACzB,EAGDQ,IAAS,KACR0C,GAAA,cAACI,GAAA,CACC,OAAQtD,EAAM,OACd,cACEA,EAAM,SAAW,eACb,CACE,KAAM,eACN,MAAO,CACL,UAAWA,EAAM,UACjB,OAAQ,CAAE,QAAS,GAAM,GAAGA,EAAM,MAAO,CAC3C,CACF,EACA,CAAE,KAAM,aAAc,IAAK,GAAI,MAAO,EAAG,EAE/C,iBAAiB,aACjB,iBAAiB,2EACnB,CAEJ,EAED,CAACC,GAAeiD,GAAA,cAAC,UAAG,sBAAoB,CAC3C,CAEJ,EAEOM,GAAQzD,GajPf,OAAO0D,GAAS,aAAAC,GAAW,YAAAC,OAAgB,QAe3C,IAAMC,GAAgBC,GAkBhB,CAjCN,IAAAC,EAAAC,EAAAC,GAAAC,EAAAC,GAkCE,GAAM,CAACC,EAAaC,CAAc,EAAIC,GAASR,EAAM,aAAe,EAAK,EACnE,CAACS,EAAcC,CAAe,EAAIF,GAAS,EAAK,EAChD,CAACG,EAASC,CAAU,EAAIJ,GAAS,EAAI,EACrC,CAACK,EAAcC,CAAe,EAAIN,GAAS,EAAK,EAChD,CAACO,EAAaC,CAAc,EAAIR,GAAS,EAAK,EAC9C,CAACS,EAAWC,CAAY,EAAIV,GAAS,IAAI,EACzC,CAACW,EAASC,CAAU,EAAIZ,GAASR,EAAM,YAAcqB,EAAc,EACnE,CAACC,EAAYC,CAAa,EAAIf,GAAS,EAAK,EAC5C,CAACgB,EAAgBC,CAAiB,EAAIjB,GAAS,EAAK,EACpD,CAACkB,EAAuBC,CAAwB,EAAInB,GAAS,EAAK,EAClE,CAACoB,EAAsBC,CAAuB,EAAIrB,GAAS,EAAK,EAChE,CAACsB,EAAYC,CAAa,EAAIvB,GAAS,EAAK,EAC5C,CAACwB,EAAkBC,CAAmB,EAAIzB,GAAS,EAAE,EAE3D0B,GAAU,IAAM,CACd,IAAMC,EAAqB,IAAM,CAC/B,IAAMC,EAAgBC,GAAmB,QAAQ,EACjD9B,EAAe6B,CAAa,CAC9B,EACKpC,EAAM,aACTmC,EAAmB,CAEvB,EAAG,CAAC,CAAC,EAGL,IAAMG,EAAqBC,GAAsB,CAC/C,GAAIA,EAAa,MAAM,OAAS,EAAG,CACjC,IAAMC,EAAYD,EAAa,mBAC3BC,GACFA,EAAU,MAAM,CAEpB,MAAWD,EAAa,MAAM,SAAW,GACvCA,EAAa,MAAM,CAEvB,EAEME,GAAiBC,GAAW,CAChC,IAAMC,EAAaD,EAAE,cAAc,QAAQ,MAAM,EAC3CE,EAAkBD,GAAA,YAAAA,EAAY,QAAQ,MAAO,IAC7CE,EAAoB,SAAS,uBAAuB,WAAW,EACrE,IAAIA,GAAA,YAAAA,EAAc,UAAW,IAAKD,GAAA,YAAAA,EAAiB,QAAS,EAC1D,QAASE,EAAI,EAAGA,EAAID,EAAa,OAAQC,IACnCF,EAAgBE,CAAC,IACnBD,EAAaC,CAAC,EAAE,MAAQF,EAAgBE,CAAC,EACzCD,EAAaC,CAAC,EAAE,MAAM,EAI9B,EAEMC,EAAsBL,GAAW,CACrC,IAAMM,EAAiBN,EAAE,OAAO,uBAC5BM,GACFA,EAAe,MAAM,CAEzB,EAEMC,EAAsB,IAAM,CAChC,IAAMC,EAAc,SAAS,eAC3B,+BACF,EACMC,EAAY,SAAS,eAAe,gCAAgC,EACpEC,EAAY,SAAS,eAAe,gCAAgC,EACpEC,EAAY,SAAS,eAAe,gCAAgC,EACpEC,EAAY,SAAS,eAAe,gCAAgC,EAExEJ,IACAC,GAAA,YAAAA,EAAM,MAAM,QAAS,IACrBC,GAAA,YAAAA,EAAM,MAAM,QAAS,IACrBC,GAAA,YAAAA,EAAM,MAAM,QAAS,IACrBC,GAAA,YAAAA,EAAM,MAAM,QAAS,GACrB,CAAC7C,EAEDyC,EAAO,UAAY,2CAEnBA,EAAO,UAAY,mCAEvB,EAEMK,EAAkB,SAAY,CAjHtC,IAAAtD,EAAAC,EAAAC,EAAAC,EAkHI,GAAI,CAACJ,EAAM,gBACTiC,EACE,qFACF,EACAvB,EAAgB,EAAI,MACf,CACLuB,EAAoB,EAAE,EACtBvB,EAAgB,EAAK,EACrB,IAAMyC,EAAY,SAAS,eACzB,gCACF,EACMC,EAAY,SAAS,eACzB,gCACF,EACMC,EAAY,SAAS,eACzB,gCACF,EACMC,EAAY,SAAS,eACzB,gCACF,EACA,KACErD,EAAAkD,GAAA,YAAAA,EAAM,QAAN,YAAAlD,EAAa,QAAS,KACtBC,EAAAkD,GAAA,YAAAA,EAAM,QAAN,YAAAlD,EAAa,QAAS,KACtBC,EAAAkD,GAAA,YAAAA,EAAM,QAAN,YAAAlD,EAAa,QAAS,KACtBC,EAAAkD,GAAA,YAAAA,EAAM,QAAN,YAAAlD,EAAa,QAAS,GACtBJ,EAAM,eACNA,EAAM,WACN,CACAA,EAAM,aAAa,EAAI,EACvB,IAAMwD,GAAUL,GAAA,YAAAA,EAAM,QAAQC,GAAA,YAAAA,EAAM,QAAQC,GAAA,YAAAA,EAAM,QAAQC,GAAA,YAAAA,EAAM,OAChE,MAAMG,GACJzD,EAAM,QACNA,EAAM,cACNwD,EACAE,GAAcF,CAAO,EACrBxD,EAAM,WACNA,EAAM,aACNA,EAAM,aACN,OAAOmB,CAAO,CAChB,EAAE,KAAK,MAAOwC,GAAQ,CAzJ9B,IAAA1D,EAAAC,EAAAC,GAAAC,GAAAC,GAAAuD,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GA0JU3F,EAAM,aAAa,EAAK,EACpB2D,GACFzC,EAAayC,CAAG,EAEd3D,EAAM,SAAW,WACjBE,GAAAD,EAAAD,EAAM,eAAN,YAAAC,EAAoB,UAApB,YAAAC,EAA6B,mBAC3BC,GAAAH,EAAM,UAAN,YAAAG,GAAe,gBAEjBH,EAAM,aAAa,EAAI,EACvB,MAAM4F,GACJ5F,EAAM,gBAAgB,sBACtBA,EAAM,cACN0D,GAAcF,CAAO,EACrBxD,EAAM,QACNwD,EACAxD,EAAM,WACNA,EAAM,aACN,OAAOmB,CAAO,CAChB,EAAE,KAAK,MAAOwC,IAAQ,CA5KpC,IAAA1D,GAAAC,GA6KgBF,EAAM,aAAa,EAAK,GACpBC,GAAA,2BAAQ,UAAR,MAAAA,GAAiB,MACnB,MAAM,OAAO,QAAQ,MAAM,OAAO,SAAS,EAClC,GAACC,GAAA,2BAAQ,UAAR,MAAAA,GAAiB,QAAS,cACpC,aAAa,WAAW,SAAS,EAE/ByD,GACF3C,EAAe,EAAI,GAEnBiB,EACE,qGACF,EACAvB,EAAgB,EAAI,EAExB,CAAC,GACQV,EAAM,SAAW,gBAC1BA,EAAM,aAAa,EAAI,EACvB,MAAM6F,GACJ7F,EAAM,gBAAgB,kBACtBA,EAAM,gBAAgB,qBACtBA,EAAM,cACN0D,GAAcF,CAAO,EACrBxD,EAAM,QACNwD,EACAxD,EAAM,YACNI,GAAAJ,EAAM,eAAN,YAAAI,GAAoB,SACpBC,GAAAL,EAAM,eAAN,YAAAK,GAAoB,eACpBuD,GAAA5D,EAAM,eAAN,YAAA4D,GAAoB,gBACpBC,GAAA7D,EAAM,YAAN,YAAA6D,GAAiB,GACjB,OAAO1C,CAAO,CAChB,EAAE,KAAK,MAAOwC,IAAQ,CA3MpC,IAAA1D,GAAAC,GAAAC,GAAAC,GA4MgBJ,EAAM,aAAa,EAAK,EAEtB,GAACC,GAAAD,EAAM,YAAN,MAAAC,GAAiB,YAClBC,GAAA,2BAAQ,UAAR,MAAAA,GAAiB,QACjB,CAACF,EAAM,aAEP,MAAM,OAAO,QAAQ,MAAM,OAAO,SAAS,EAE3C,GAACG,GAAAH,EAAM,YAAN,MAAAG,GAAiB,UAClB,GAACC,GAAA,2BAAQ,UAAR,MAAAA,GAAiB,QAClB,CAACJ,EAAM,cACP,cAEA,aAAa,WAAW,SAAS,EAE/B2D,GACF3C,EAAe,EAAI,GAEnBiB,EACE,+JACF,EACAvB,EAAgB,EAAI,EAExB,CAAC,GAEDV,EAAM,SAAW,sBACjB+D,IAAAD,GAAA9D,EAAM,eAAN,YAAA8D,GAAoB,UAApB,YAAAC,GAA6B,mBAC3BC,GAAAhE,EAAM,UAAN,YAAAgE,GAAe,gBAEjBhE,EAAM,aAAa,EAAI,EACvB,MAAM8F,GACJ9F,EAAM,cACN0D,GAAcF,CAAO,EACrBxD,EAAM,QACNwD,EACAxD,EAAM,YACNiE,GAAAjE,EAAM,YAAN,YAAAiE,GAAiB,GACjBjE,EAAM,aACN,OAAOmB,CAAO,CAChB,EAAE,KAAK,MAAOwC,IAAQ,CAnPpC,IAAA1D,GAAAC,GAoPgBF,EAAM,aAAa,EAAK,EACpB2D,GACF3C,EAAe,EAAI,IAEff,GAAA,2BAAQ,UAAR,MAAAA,GAAiB,MACnB,MAAM,OAAO,QAAQ,MAAM,OAAO,SAAS,EAClC,GAACC,GAAA,2BAAQ,UAAR,MAAAA,GAAiB,QAAS,cACpC,aAAa,WAAW,SAAS,EAEnC+B,EACE,yHACF,EACAvB,EAAgB,EAAI,EAExB,CAAC,GAEDV,EAAM,SAAW,gBACjBmE,IAAAD,GAAAlE,EAAM,eAAN,YAAAkE,GAAoB,UAApB,YAAAC,GAA6B,mBAC3BC,GAAApE,EAAM,UAAN,YAAAoE,GAAe,kBACjBE,IAAAD,GAAArE,EAAM,eAAN,YAAAqE,GAAoB,aAApB,YAAAC,GAAgC,mBAC9BC,GAAAvE,EAAM,UAAN,YAAAuE,GAAe,gBAEjBtC,EAAoB,EAAE,EACtBvB,EAAgB,EAAK,EACrBe,EAAkB,EAAI,GAEtBzB,EAAM,SAAW,gBACjByE,IAAAD,GAAAxE,EAAM,eAAN,YAAAwE,GAAoB,UAApB,YAAAC,GAA6B,mBAC3BC,GAAA1E,EAAM,UAAN,YAAA0E,GAAe,gBAEjBzC,EACE,iFAAgF0C,GAAA3E,EAAM,eAAN,YAAA2E,GAAoB,UAAU,UAChH,EACAjE,EAAgB,EAAI,GAEpBV,EAAM,SAAW,gBACjB6E,IAAAD,GAAA5E,EAAM,eAAN,YAAA4E,GAAoB,aAApB,YAAAC,GAAgC,mBAC9BC,GAAA9E,EAAM,UAAN,YAAA8E,GAAe,gBAEjB7C,EACE,6EAA4E8C,GAAA/E,EAAM,eAAN,YAAA+E,GAAoB,UAAU,UAC5G,EACArE,EAAgB,EAAI,GAEpBV,EAAM,SAAW,WACjBiF,IAAAD,GAAAhF,EAAM,eAAN,YAAAgF,GAAoB,UAApB,YAAAC,GAA6B,mBAC3BC,GAAAlF,EAAM,UAAN,YAAAkF,GAAe,iBAEbC,GAAA,2BAAQ,UAAR,MAAAA,GAAiB,MACnB,MAAM,OAAO,QAAQ,MAAM,OAAO,SAAS,EAClC,GAACC,GAAA,2BAAQ,UAAR,MAAAA,GAAiB,QAAS,cACpC,aAAa,WAAW,SAAS,EAEnCnD,EACE,iFAAgFoD,GAAArF,EAAM,eAAN,YAAAqF,GAAoB,OAAO,UAC7G,EACA3E,EAAgB,EAAI,GAEpBV,EAAM,SAAW,sBACjBuF,IAAAD,GAAAtF,EAAM,eAAN,YAAAsF,GAAoB,UAApB,YAAAC,GAA6B,mBAC3BC,GAAAxF,EAAM,UAAN,YAAAwF,GAAe,iBAEbC,GAAA,2BAAQ,UAAR,MAAAA,GAAiB,MACnB,MAAM,OAAO,QAAQ,MAAM,OAAO,SAAS,EAClC,GAACC,GAAA,2BAAQ,UAAR,MAAAA,GAAiB,QAAS,cACpC,aAAa,WAAW,SAAS,EAEnCzD,EACE,iGAAgG0D,GAAA3F,EAAM,eAAN,YAAA2F,GAAoB,OAAO,UAC7H,EACAjF,EAAgB,EAAI,GAEpBV,EAAM,SAAW,kBACjB,EAACA,GAAA,MAAAA,EAAO,eAERiC,EACE,+JACF,EACAvB,EAAgB,EAAI,IAEpBuB,EAAoB,EAAE,EACtBvB,EAAgB,EAAK,EACrBM,EAAe,EAAI,KAGrBiB,EAAoB,EAAE,EACtBvB,EAAgB,EAAI,EAExB,CAAC,CACH,CACF,CACF,EAEMqF,EAAkC,MAAOC,GAAsB,CAjVvE,IAAA/F,EAAAC,EAAAC,EAAAC,EAAAC,EAAAuD,EAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAkVI,IAAMd,EAAY,SAAS,eAAe,gCAAgC,EACpEC,EAAY,SAAS,eAAe,gCAAgC,EACpEC,EAAY,SAAS,eAAe,gCAAgC,EACpEC,EAAY,SAAS,eAAe,gCAAgC,EACpE2C,EAAUjG,EAAM,QACtB,KACEC,EAAAkD,GAAA,YAAAA,EAAM,QAAN,YAAAlD,EAAa,QAAS,KACtBC,EAAAkD,GAAA,YAAAA,EAAM,QAAN,YAAAlD,EAAa,QAAS,KACtBC,EAAAkD,GAAA,YAAAA,EAAM,QAAN,YAAAlD,EAAa,QAAS,KACtBC,EAAAkD,GAAA,YAAAA,EAAM,QAAN,YAAAlD,EAAa,QAAS,KACtBC,EAAAL,GAAA,YAAAA,EAAO,eAAP,MAAAK,EAAqB,kBACrBuD,EAAA5D,EAAM,eAAN,MAAA4D,EAAoB,iBACpBqC,KACApC,GAAA7D,EAAM,kBAAN,MAAA6D,GAAuB,0BACvBC,GAAA9D,EAAM,kBAAN,MAAA8D,GAAuB,sBACvB,CACA9D,EAAM,aAAa,EAAI,EACvB,IAAMkG,IAAW/C,GAAA,YAAAA,EAAM,QAAQC,GAAA,YAAAA,EAAM,QAAQC,GAAA,YAAAA,EAAM,QAAQC,GAAA,YAAAA,EAAM,OAC3D6C,GAAgBzC,GAAcuC,CAAO,EACrCG,GAAiB1C,GAAcwC,EAAQ,EAC7C,MAAMG,GACJrG,EAAM,gBAAgB,sBACtBA,EAAM,gBAAgB,qBACtBA,EAAM,aACNmG,GACAC,IACArC,GAAA/D,GAAA,YAAAA,EAAO,eAAP,YAAA+D,GAAqB,eACrBC,GAAAhE,EAAM,eAAN,YAAAgE,GAAoB,gBACpBC,GAAAjE,GAAA,YAAAA,EAAO,eAAP,YAAAiE,GAAqB,QACrBgC,EACAD,EACA,KACAhG,EAAM,WACN,OAAOmB,CAAO,CAChB,EAAE,KAAMwC,IAAQ,CACd3D,EAAM,aAAa,EAAK,EACpB2D,KACF5B,EAAciE,CAAQ,EACtBrE,EAAyB,EAAI,EAEjC,CAAC,CACH,CACF,EAEA,OACE2E,EAAA,cAACA,EAAM,SAAN,KACEhG,GAAe,CAACkB,GACf8E,EAAA,cAACA,EAAM,SAAN,KACE,CAACvF,GACAuF,EAAA,cAAC,OAAI,UAAU,uCACbA,EAAA,cAAC,OAAI,UAAU,sCACbA,EAAA,cAACC,GAAA,CAAW,YAAa,CAAC,CAAC,EAAG,cAAc,IAAI,EAChDD,EAAA,cAAC,OAAI,UAAU,8CACbA,EAAA,cAAC,OAAI,UAAU,yDACbA,EAAA,cAAC,KACC,MAAO,CAAE,UAAW,QAAS,EAC7B,UAAU,2CACX,WAED,CA2BF,EACAA,EAAA,cAAC,OAAI,UAAU,uCACbA,EAAA,cAAC,KAAE,UAAU,8CAA6C,iCACzB,IAC/BA,EAAA,cAAC,QAAK,MAAO,CAAE,MAAO,SAAU,GAAG,aAAW,EAAO,YAChD,IACLA,EAAA,cAAC,QAAK,MAAO,CAAE,MAAO,SAAU,GAAItG,EAAM,OAAQ,EAAQ,IAAI,UAEhE,EACAsG,EAAA,cAAC,OAAI,UAAU,yCACZtG,EAAM,YACLsG,EAAA,cAAC,KAAE,UAAU,8CACVtG,EAAM,WAAa,MAAMA,EAAM,UAAU,IAAM,GAAI,IAAI,gBAC1CA,EAAM,QAAUA,EAAM,KACtC,CAEJ,CACF,CACF,EACAsG,EAAA,cAAC,OAAI,UAAU,0CACbA,EAAA,cAAC,OAAI,UAAU,sCACbA,EAAA,cAAC,SACC,eAAiB5D,GAAW,CA9blD,IAAAzC,EA+bwByC,EAAE,OAAO,OAAQzC,EAAAyC,EAAE,OAAO,QAAT,YAAAzC,EAAgB,QAAQ,MAAO,IAChDS,EAAgB,EAAK,CACvB,EACA,QAAUgC,GAAM,CACdJ,EAAkBI,EAAE,MAAM,EAC1BO,EAAoB,CACtB,EACA,UAAYP,GAAW,CACjBA,EAAE,MAAQ,aAAeA,EAAE,OAAO,QAAU,IAC9CK,EAAmBL,CAAC,CAExB,EACA,QAAUA,GAAM,CACdD,GAAcC,CAAC,CACjB,EACA,UACEjC,EACI,mCACA,+BAEN,KAAME,EAAU,WAAa,OAC7B,UAAW,EACX,GAAG,iCACL,EACA2F,EAAA,cAAC,SACC,eAAiB5D,GAAW,CAxdlD,IAAAzC,EAydwByC,EAAE,OAAO,OAAQzC,EAAAyC,EAAE,OAAO,QAAT,YAAAzC,EAAgB,QAAQ,MAAO,IAChDS,EAAgB,EAAK,CACvB,EACA,QAAUgC,GAAM,CACdJ,EAAkBI,EAAE,MAAM,EAC1BO,EAAoB,CACtB,EACA,UAAYP,GAAW,CACjBA,EAAE,MAAQ,aAAeA,EAAE,OAAO,QAAU,IAC9CK,EAAmBL,CAAC,CAExB,EACA,UACEjC,EACI,mCACA,+BAEN,KAAME,EAAU,WAAa,OAC7B,UAAW,EACX,GAAG,iCACL,EACA2F,EAAA,cAAC,SACC,eAAiB5D,GAAW,CA/elD,IAAAzC,EAgfwByC,EAAE,OAAO,OAAQzC,EAAAyC,EAAE,OAAO,QAAT,YAAAzC,EAAgB,QAAQ,MAAO,IAChDS,EAAgB,EAAK,CACvB,EACA,QAAUgC,GAAM,CACdJ,EAAkBI,EAAE,MAAM,EAC1BO,EAAoB,CACtB,EACA,UAAYP,GAAW,CACjBA,EAAE,MAAQ,aAAeA,EAAE,OAAO,QAAU,IAC9CK,EAAmBL,CAAC,CAExB,EACA,UACEjC,EACI,mCACA,+BAEN,KAAME,EAAU,WAAa,OAC7B,UAAW,EACX,GAAG,iCACL,EACA2F,EAAA,cAAC,SACC,eAAiB5D,GAAW,CAtgBlD,IAAAzC,EAugBwByC,EAAE,OAAO,OAAQzC,EAAAyC,EAAE,OAAO,QAAT,YAAAzC,EAAgB,QAAQ,MAAO,IAChDS,EAAgB,EAAK,CACvB,EACA,QAAUgC,GAAM,CACdJ,EAAkBI,EAAE,MAAM,EAC1BO,EAAoB,CACtB,EACA,UAAYP,GAAW,CACjBA,EAAE,MAAQ,aAAeA,EAAE,OAAO,QAAU,IAC9CK,EAAmBL,CAAC,CAExB,EACA,UACEjC,EACI,mCACA,+BAEN,KAAME,EAAU,WAAa,OAC7B,UAAW,EACX,GAAG,iCACL,CACF,EACA2F,EAAA,cAAC,OAAI,UAAU,gCACZ7F,GAAgBuB,IAAqB,IACpCsE,EAAA,cAAC,KAAE,UAAU,yCAAwC,8BAErD,EAED7F,IAAgBuB,GAAA,YAAAA,EAAkB,QAAS,GAC1CsE,EAAA,cAAC,KAAE,UAAU,yCACVtE,CACH,EAED,CAACvB,GACA6F,EAAA,cAAC,KAAE,UAAU,wCAAwC,EAGtD,CAAC3F,GACA2F,EAAA,cAAC,OACC,MAAO,CACL,OAAQ,UACR,MAAO,OACP,OAAQ,MACV,EACA,QAAS,IAAM1F,EAAW,EAAI,EAC9B,IAAK4F,EAAY,QACjB,IAAI,gBACN,EAED7F,GACC2F,EAAA,cAAC,OACC,MAAO,CACL,OAAQ,UACR,MAAO,OACP,OAAQ,MACV,EACA,QAAS,IAAM1F,EAAW,EAAK,EAC/B,IAAK4F,EAAY,QACjB,IAAI,gBACN,CAEJ,CACF,CACF,EAEC,CAAC3F,GAAgByF,EAAA,cAAC,OAAI,MAAO,CAAE,OAAQ,OAAQ,EAAG,EAEnDA,EAAA,cAAC,OAAI,UAAU,6CACbA,EAAA,cAAC,OAAI,UAAU,sDACbA,EAAA,cAACG,GAAA,CACC,aAAczG,EAAM,aACpB,aAAcA,EAAM,aACtB,EACAsG,EAAA,cAAC,UACC,GAAG,gCACH,QAAS,MAAO5D,GAAW,CACzB,GACEA,EAAE,OAAO,UAAU,SACjB,mCACF,GACAA,EAAE,OAAO,YACP,oCAEFA,EAAE,OAAO,UACP,0CACF,MAAMa,EAAgB,MACjB,CACL,IAAMmD,EAAgB,SAAS,uBAC7B,0CACF,EACIA,EAAc,OAAS,IACzBA,EAAc,CAAC,EAAE,UACf,0CACF,MAAMnD,EAAgB,EAE1B,CACF,EACA,UAAU,qCACX,SAED,EACA+C,EAAA,cAAC,OAAI,UAAU,uDACbA,EAAA,cAACK,GAAA,IAAe,CAClB,CACF,CACF,CACF,EAED5F,GACCuF,EAAA,cAACM,GAAA,CACC,cACE5G,EAAM,SAAW,QACb,CACE,KAAM,aACN,IAAK,GACL,MAAO,EACT,EACAA,EAAM,SAAW,eACjB,CACE,KAAM,aACN,IAAK,GACL,MAAO,EACT,EACAA,EAAM,SAAW,mBACjB,CACE,KAAM,aACN,IAAK,GACL,MAAO,EACT,EACA,CACE,KAAM,YACN,IAAK,YACL,MAAOiB,CACT,EAEN,iBAAkB,aAClB,iBACEjB,EAAM,SAAW,SAAWA,EAAM,eAAiB,QAC/C,0GACAA,EAAM,SAAW,SAAWA,EAAM,eAAiB,MACnD,0HACAA,EAAM,SAAW,eACjB,yFAAwFC,EAAAD,EAAM,eAAN,YAAAC,EAAoB,OAAO,GACnHD,EAAM,SAAW,mBACjB,yEAAyEA,GAAA,YAAAA,EAAO,OAAO,WACvF,0CACEA,EAAM,SAAW,iBACb,yBACAA,GAAA,MAAAA,EAAO,WACPA,EAAM,WACN,4BACN,IAER,CAEJ,EAEDM,GAAekB,GACd8E,EAAA,cAACA,EAAM,SAAN,KACE,CAAC5E,GACA4E,EAAA,cAAC,OACC,MAAO,CAAE,QAAS,IAAK,SAAU,UAAW,EAC5C,UAAU,uCAEVA,EAAA,cAAC,OAAI,UAAU,sCACbA,EAAA,cAACC,GAAA,CAAW,YAAa,CAAC,EAAG,EAAG,CAAC,EAAG,cAAc,IAAI,EACtDD,EAAA,cAAC,OAAI,UAAU,8CACbA,EAAA,cAAC,KAAE,UAAU,2CACXA,EAAA,cAAC,UAAGpG,EAAAF,EAAM,eAAN,YAAAE,EAAoB,OAAQ,EAAI,sCAEtC,CACF,CACF,EACAoG,EAAA,cAAC,OACC,UAAU,4CACV,IAAKE,EAAY,iBACjB,IAAI,GACN,EACC,CAAC5E,GACA0E,EAAA,cAACA,EAAM,SAAN,KACCA,EAAA,cAAC,OAAI,UAAU,6CACbA,EAAA,cAAC,OAAI,UAAU,oDACbA,EAAA,cAAC,OAAI,UAAU,mDACbA,EAAA,cAAC,KAAE,UAAU,8CAA6C,sBAE1D,CACF,CACF,EACAA,EAAA,cAAC,KACC,MAAO,CACL,SAAU,OACV,MAAO,6BACT,EACA,UAAU,8CACX,oHAEyD,GAC1D,EAEAA,EAAA,cAAC,OAAI,UAAU,kDACbA,EAAA,cAAC,OAAI,UAAU,kDACbA,EAAA,cAAC,OAAI,IAAKE,EAAY,OAAQ,IAAI,OAAO,CAC3C,EACAF,EAAA,cAAC,KAAE,UAAU,mDAAkD,8BACjC,IAC5BA,EAAA,cAAC,QAAK,UAAU,wDAAuD,WAEvE,CACF,CACF,EAEAA,EAAA,cAAC,OAAI,UAAU,kDACbA,EAAA,cAAC,OAAI,UAAU,kDACbA,EAAA,cAAC,OAAI,IAAKE,EAAY,cAAe,IAAI,OAAO,CAClD,EACAF,EAAA,cAAC,KAAE,UAAU,mDAAkD,yBAC3C,IAClBA,EAAA,cAAC,QAAK,UAAU,wDAAuD,qBAEvE,EAAQ,IAAI,6BAEd,CACF,CACF,EACAA,EAAA,cAAC,OAAI,UAAU,gDACbA,EAAA,cAAC,UACC,QAAS,IAAM,CACbzE,EAAwB,EAAI,CAC9B,EACA,UAAU,+CACX,QAED,EAEAyE,EAAA,cAAC,UACC,QAAS,SAAY,CACnB,MAAMP,EAAgC,EAAI,CAC5C,EACA,UAAU,iDACX,QAED,CACF,CACF,EAGDnE,GACC0E,EAAA,cAAC,OAAI,UAAU,+DACbA,EAAA,cAAC,OAAI,UAAU,wDACbA,EAAA,cAAC,OAAI,UAAU,qDACbA,EAAA,cAAC,OAAI,UAAU,uDACbA,EAAA,cAAC,KAAE,UAAU,sDAAqD,+CAElE,EACAA,EAAA,cAAC,KACC,MAAO,CACL,SAAU,OACV,MAAO,6BACT,EACA,UAAU,sDACX,wCACuC,IACtCA,EAAA,cAAC,UAAGnG,GAAAH,EAAM,eAAN,YAAAG,GAAoB,OAAQ,EAAI,mDAEtC,CACF,EAEAmG,EAAA,cAAC,OACC,MAAO,CAAE,MAAO,KAAM,EACtB,UAAU,gDAEVA,EAAA,cAAC,UACC,QAAS,SAAY,CACnB,MAAMP,EAAgC,EAAK,CAC7C,EACA,UAAU,iDACX,KAED,EAEAO,EAAA,cAAC,UACC,QAAS,IAAM,CACbzE,EAAwB,EAAK,CAC/B,EACA,UAAU,iDACX,IAED,CACF,CACF,CACF,CACF,CAEJ,EAEDH,GACC4E,EAAA,cAACM,GAAA,CACC,cAAe,CACb,KAAM,QACN,IAAK,YACL,MAAO3F,CACT,EACA,iBAAiB,aACjB,iBACEa,EACI,2CAA0C1B,EAAAJ,EAAM,eAAN,YAAAI,EAAoB,OAAO,GACrE,uCAAsCC,GAAAL,EAAM,eAAN,YAAAK,GAAoB,OAAO,GAEzE,CAEJ,EAED,CAACC,GAAegG,EAAA,cAAC,UAAG,sBAAoB,CAC3C,CAEJ,EAEOO,GAAQ9G,Gf7zBf,OAAS,UAAA+G,OAAc,gBAEvB,IAAMC,GAAmBC,GAAgC,CATzD,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAUE,GAAM,CAACC,EAAaC,CAAc,EAAIC,GAAkB,EAAI,EAEtD,CAACC,EAAWC,CAAY,EAAIF,GAAyB,IAAI,EAEzD,CAACG,EAAWC,CAAY,EAAIJ,GAA8B,CAAC,CAAC,EAE5D,CAACK,EAAWC,CAAY,EAAIN,GAAkB,EAAK,EAEzD,OAAAO,GAAU,IAAM,EACa,IAAM,CAC/B,IAAMC,GAAgBC,GAAmB,QAAQ,EACjDV,EAAeS,EAAa,CAC9B,GACmB,CACrB,EAAG,CAAC,CAAC,EAELD,GAAU,IAAM,EACoB,IAAM,CA3B5C,IAAA3B,GAAAC,EA4BM,IAAID,GAAA,2BAAQ,UAAR,MAAAA,GAAiB,MACnB,OAAO,QAAQ,MAAM,IAAI,UAAY8B,GAAa,CA7B1D,IAAA9B,EA+Bc8B,EAAI,WAAW9B,EAAA,KAAK,MAAM8B,EAAI,OAAO,IAAtB,MAAA9B,EAAyB,UAC1CwB,EAAa,KAAK,MAAMM,EAAI,OAAO,CAAC,EACpCR,EAAa,EAAI,GAGdA,EAAa,EAAK,CACzB,CAAC,UACQ,GAACrB,EAAA,2BAAQ,UAAR,MAAAA,EAAiB,QAAS,aAAc,CAClD,IAAM8B,EAAU,KAAK,MAAM,aAAa,QAAQ,SAAS,CAAC,EACtDA,IAAWA,GAAA,MAAAA,EAAS,UACtBP,EAAaO,CAAO,EACpBT,EAAa,EAAI,GACZA,EAAa,EAAK,CAC3B,MACEA,EAAa,EAAK,CAEtB,GAE0B,CAC5B,EAAG,CAAC,CAAC,EAGHU,GAAA,cAACA,GAAM,SAAN,KACEd,GACCc,GAAA,cAACC,GAAA,KACCD,GAAA,cAAC,OAAI,UAAU,gCAEZX,IAAc,MAAQtB,EAAM,kBAC3BiC,GAAA,cAACA,GAAM,SAAN,KAAgBjC,EAAM,iBAAiB,GAAC,EAG1CsB,IAAc,MAAQ,CAACtB,EAAM,kBAC5BiC,GAAA,cAAC,OACC,MACEjC,EAAM,eACFA,EAAM,eACN,CACE,MAAO,OACP,OAAQ,OACR,WAAY,aACZ,OAAQ,MACV,GAGL,GACH,EAED0B,GACCO,GAAA,cAAC,OACC,MAAO,CAAE,OAAQ,OAAQ,EACzB,UAAU,qCAEVA,GAAA,cAACnC,GAAO,IAAP,CACC,OAAO,OACP,MAAM,OACN,IAAKqC,EAAY,YACjB,IAAI,aACJ,QAAS,CACP,OAAQ,IACR,MAAO,CAAC,EAAG,IAAK,CAAC,CACnB,EACA,WAAY,CACV,SAAU,EACV,OAAQ,IACR,KAAM,QACR,EACF,CACF,EAEDb,IAAc,MACbW,GAAA,cAACA,GAAM,SAAN,KAEE,CAACX,GACAW,GAAA,cAACG,GAAA,CACC,YAAajB,EACb,gBAAiBnB,EAAM,gBACvB,UAAWA,EAAM,UACjB,OAAQA,EAAM,OACd,UACEA,EAAM,aACF,CACE,QAAS,qBACPC,EAAAD,EAAM,eAAN,YAAAC,EAAoB,QAClBC,EAAAF,EAAM,eAAN,YAAAE,EAAoB,QACxB,EACA,cAAemC,GACb,qBACElC,EAAAH,EAAM,eAAN,YAAAG,EAAoB,QAClBC,EAAAJ,EAAM,eAAN,YAAAI,EAAoB,QACxB,CACF,EACA,eAAgB,qBACdC,EAAAL,EAAM,eAAN,YAAAK,EAAoB,QAClBC,EAAAN,EAAM,eAAN,YAAAM,EAAoB,eACxB,EACA,WAAY,oBACVC,EAAAP,EAAM,eAAN,YAAAO,EAAoB,GACtB,CACF,EACA,KAEN,OACEP,EAAM,QACFS,EAAA,OAAO,KAAKT,EAAM,MAAM,IAAxB,YAAAS,EAA2B,IAAK6B,IAC9BtC,EAAM,OAAOsC,CAAE,EAAI,mBACjBtC,EAAM,OAAOsC,CAAE,CACjB,EACOtC,EAAM,WACZQ,EAAA,OAAO,KAAKR,EAAM,MAAM,IAAxB,YAAAQ,EAA2B,QAAS,GACvC,KAEN,aAAcR,EAAM,aACpB,gBAAiBA,EAAM,gBACvB,gBAAiBA,EAAM,gBACvB,eAAgBA,EAAM,eACtB,aAAcuB,EACd,aAAcI,EAChB,EAIDL,GACCW,GAAA,cAACM,GAAA,CACC,YAAapB,EACb,aAAcI,EACd,QAASC,GAAA,YAAAA,EAAW,QACpB,cAAeA,GAAA,YAAAA,EAAW,cAC1B,WAAYA,GAAA,YAAAA,EAAW,GACvB,aAAcA,GAAA,YAAAA,EAAW,QACzB,aAAcA,GAAA,YAAAA,EAAW,QACzB,OAAQxB,EAAM,OACd,MAAOA,EAAM,MACb,WAAYA,EAAM,YAAcwC,GAAYxC,EAAM,MAAM,EACxD,aAAc2B,EACd,WAAY,OAAO3B,EAAM,OAAO,EAChC,OAAQA,EAAM,OACd,aACEA,EAAM,aACF,CACE,QAAS,qBACPU,EAAAV,EAAM,eAAN,YAAAU,EAAoB,QAClBC,EAAAX,EAAM,eAAN,YAAAW,EAAoB,QACxB,EACA,cAAe0B,GACb,qBACEzB,EAAAZ,EAAM,eAAN,YAAAY,EAAoB,QAClBC,EAAAb,EAAM,eAAN,YAAAa,EAAoB,QACxB,CACF,EACA,eAAgB,qBACdC,EAAAd,EAAM,eAAN,YAAAc,EAAoB,QAClBC,EAAAf,EAAM,eAAN,YAAAe,EAAoB,eACxB,EACA,WAAY,oBACVC,EAAAhB,EAAM,eAAN,YAAAgB,EAAoB,GACtB,CACF,EACA,KAEN,UACEhB,EAAM,QACFkB,EAAA,OAAO,KAAKlB,EAAM,MAAM,IAAxB,YAAAkB,EAA2B,IAAKoB,IAC9BtC,EAAM,OAAOsC,CAAE,EAAI,mBACjBtC,EAAM,OAAOsC,CAAE,CACjB,EACOtC,EAAM,WACZiB,EAAA,OAAO,KAAKjB,EAAM,MAAM,IAAxB,YAAAiB,EAA2B,QAAS,GACvC,KAEN,gBAAiBjB,EAAM,gBACzB,CAEJ,CAEJ,CACF,EAED,CAACmB,GAAec,GAAA,cAAC,UAAG,sBAAoB,CAC3C,CAEJ,EAEOQ,GAAQ1C","names":["injectStyle","css","head","style","React","useEffect","useState","React","createContext","useContext","useState","VaultStoreContext","VaultContextProvider","props","chainId","setChainId","pk","setPk","address","setAddress","signer","setSigner","provider","setProvider","vaultContract","setVaultContract","vaultData","setVaultData","fcmToken","setFcmToken","useVaultStore","context","React","useEffect","useState","debounce","defaultChainId","defaultVerifiedUrl","allGoogleFontUrls","newTransactionEventHash","TwiloBaseUrl","numberPositions","numberPositionsFmt","actionTexts","imageAssets","countriesDetails","contractAddress","Custody","Provider","VerifiedWallet","ChainConfig","PaymasterConfig","crypto","crypt","toast","createSmartAccountClient","React","loadAllGoogleFonts","document","apiLink","staticLink","allGoogleFontUrls","fontUrl","fontLink","initWalletAndContract","chainId","privateKey","_a","_b","_c","_d","_e","sender","VerifiedWallet","mnemonics","cntAddresses","contractAddress","_chainId","ChainConfig","defaultChainId","provider","signer","Provider","pk","vaultContract","Custody","address","PaymasterConfig","err","sendOTPVerification","recipient","channel","data","TwiloBaseUrl","error","checkOTPVerification","code","hashTheString","text","encryptString","secretKey","decryptString","encryptedText","decryptedBytes","decryptedText","getErrorToastContent","title","content","React","imageAssets","errorToast","title","content","toast","getErrorToastContent","React","useState","React","PageSlider","props","_a","_","idx","slider_default","React","useState","SearchBox","props","_a","newSearchContent","setNewSearchContent","useState","React","imageAssets","e","src","_b","idx","_c","nm","search_default","React","TermsAndConditionsOverlay","React","LogoutOverlay","props","_a","_b","PrivacyOverlay","imageAssets","ContactPage","props","_a","_b","userNumber","setUserNumber","useState","userInput","setUserInput","searchActive","setSearchActive","sendOtpErrorText","setSendOtpErrorText","pk","vaultContract","useVaultStore","handleButtonDisplay","button","handleSendOTP","_c","vaultId","channel","sendOTPVerification","res","errorToast","React","slider_default","imageAssets","e","numericInput","formattedNumber","i","search_default","TermsAndConditionsOverlay","buttonElement","PrivacyOverlay","contact_default","React","useEffect","useState","OTPPage","props","_a","_b","_c","_d","_e","_f","searchActive","setSearchActive","useState","countdown","setCountdown","otpIncorrect","setOtpIncorrect","pk","vaultContract","useVaultStore","useEffect","reduceCountdown","prevCountdown","handlleInputFocus","currentInput","nextInput","handleOtpPaste","e","pastedText","numbersFromText","allOptInputs","handleOtpBackspace","previousInpput","handleButtonDisplay","button","otp1","otp2","otp3","otp4","handleVerifyOtp","vaultId","fullOtp","checkOTPVerification","res","handleResendOtp","channel","sendOTPVerification","errorToast","React","slider_default","imageAssets","inputs","i","buttonElement","PrivacyOverlay","otp_default","React","useState","AbiCoder","decodeBytes32String","encodeBytes32String","combine","split","contractAddress","Custody","Provider","VerifiedWallet","createSmartAccountClient","checkOrCreateVault","vaultId","hashedVaultId","vaultPin","hashedVaultPin","otpChannel","userPk","userAddress","vaultContract","action","reqVaultData","txData","vaultData","res","_a","_b","_c","_d","_e","_f","secretKey","encodeBytes32String","encryptedPk","encryptString","event","err","errorToast","vultRes","cfrmRes","validateVaultPin","newChainId","chainId","decryptString","cntAddresses","contractAddress","sender","VerifiedWallet","_chainId","ChainConfig","defaultChainId","provider","signer","Provider","Custody","acceptOrRejectInvitation","sendCreatorAcceptance","sendCreatorRejection","channel","hashedCosignerId","hashedCosignerPin","hashedCreatorVaultId","hashedCreatorVaultPin","creatorVaultId","coSignerVaultId","accepted","contract","completeVaultCreation","sendCoSignerInvitation","sendCreatorConfirmation","keyHolders","coSigners","KeyThreshold","pk","keyShardsCount","sharesArrayAsString","split","letter","share","failedKeyHolders","succesfulKeyHolders","idx","participant","hashTheString","keyHolder","cosignersList","cng","numberPositions","initiateVaultRecovery","sendCreatorInitiation","vaultChannel","_g","abiCoder","AbiCoder","vaultLogs","log","tp","newTransactionEventHash","decodedTxData","val","decodeBytes32String","txId","signVaultRecovery","sendCreatorSigned","sendCreatorCompleted","reqVaultId","hashedReqId","hashedReqPin","reqTxId","qRes","restoreVaultLogin","recoveredShrads","shrd","shares","combinedShares","combine","newEncryptedPk","newSigner","newAddress","createSmartAccountClient","PaymasterConfig","React","Success","props","_a","_b","timeoutId","_c","_d","res","event","err","errorToast","handleContinue","handleClosePopup","React","imageAssets","success_default","CreatePinPage","props","_a","_b","_c","_d","searchActive","setSearchActive","useState","pinIncorrect","setPinIncorrect","pinIncorrectText","setPinIncorrectText","pinHide","setPinHide","showInvitation","setShowInvitation","showInvitationSuccess","setShowInvitationSuccess","showCustomSuccess","setShowCustomSuccess","vaultPin","setVaultPin","showRejectInvitation","setShowRejectInvitation","address","pk","vaultContract","setVaultData","vaultData","useVaultStore","handlleInputFocus","currentInput","nextInput","handleOtpBackspace","e","previousInpput","handleButtonDisplay","button","otp1","otp2","otp3","otp4","otp5","otp6","otp7","otp8","handleVaultManagement","_e","_f","_g","_h","_i","_j","_k","vaultId","channel","hashedVaultId","hashTheString","hashedVaultPin","checkOrCreateVault","res","handleAcceptAndRejectInvitation","accepted","acceptOrRejectInvitation","React","slider_default","imageAssets","buttonElement","success_default","createPin_default","React","useState","AddCosignersPage","props","_a","_b","_c","_d","showLearnMore","setShowLearnMore","useState","learnMoreStep","setLearnMoreStep","cosignerStep","setCosignerStep","showAddMore","setShowAddMore","addChannel","setAddChannel","coSignerNumber","setCoSignerNumber","coSignerNumberFmt","setCoSignerNumberFmt","coSignerEmail","setCoSignerEmail","coSignerName","setCoSignerName","userInput","setUserInput","searchActive","setSearchActive","selectedCountry","setSelectedCountry","imageAssets","coSigners","setCosigners","showSetRule","setShowSetRule","requiredSigners","setRequiredSigners","errorText","setErrorText","pk","vaultData","vaultContract","useVaultStore","handleButtonDisplay","button","handleAddCoSigner","sig","coSignerLength","cngs","handleCompleteVault","_e","_f","keyHolders","completeVaultCreation","res","React","slider_default","a","b","cng","idx","numberPositionsFmt","nSig","newId","_","e","buttonElement","numericInput","formattedNumber","i","search_default","addCosigners_default","FTUPage","props","fontsLoaded","setFontsLoaded","useState","showLogo","setShowLogo","allCountries","setAllCountries","step","setStep","selectedCountry","setSelectedCountry","imageAssets","userNumberFmt","setUserNumberFmt","userEmail","setUserEmail","showSuccessBtn","setShowSuccessBtn","successBtnText","setSuccessBtnText","successBtnNeutText","setSuccessBtnNeutText","actionHeaderText","setActionHeaderText","actionFooterText","setActionFooterText","successBtnFunc","setSuccessBtnFunc","successBtnNeutFunc","setSuccessBtnNeutFunc","setChainId","setAddress","setPk","setProvider","setSigner","setVaultContract","setVaultData","vaultData","useVaultStore","useEffect","PreloadGoogleFonts","isFontsLoaded","loadAllGoogleFonts","walletAndContractDetails","initWalletAndContract","debounce","fmtCountries","countriesDetails","cnt","React","contact_default","otp_default","createPin_default","success_default","addCosigners_default","ftu_default","React","useEffect","useState","EnterPinPage","props","_a","_b","_c","_d","_e","fontsLoaded","setFontsLoaded","useState","pinIncorrect","setPinIncorrect","pinHide","setPinHide","searchActive","setSearchActive","showSuccess","setShowSuccess","vaultData","setVaultData","chainId","setChainId","defaultChainId","showChains","setShowChains","showInvitation","setShowInvitation","showInvitationSuccess","setShowInvitationSuccess","showRejectInvitation","setShowRejectInvitation","isAccepted","setIsAccepted","pinIncorrectText","setPinIncorrectText","useEffect","PreloadGoogleFonts","isFontsLoaded","loadAllGoogleFonts","handlleInputFocus","currentInput","nextInput","hanlePinPaste","e","pastedText","numbersFromText","allOptInputs","i","hanslePinBackspace","previousInpput","handleButtonDisplay","button","otp1","otp2","otp3","otp4","handleVerifyPin","fullOtp","validateVaultPin","hashTheString","res","_f","_g","_h","_i","_j","_k","_l","_m","_n","_o","_p","_q","_r","_s","_t","_u","_v","_w","_x","_y","_z","_A","_B","_C","_D","_E","_F","_G","_H","_I","_J","_K","initiateVaultRecovery","signVaultRecovery","restoreVaultLogin","handleAcceptAndRejectInvitation","accepted","vaultId","vaultPin","hashedVaultId","hashedVaultPin","acceptOrRejectInvitation","React","slider_default","imageAssets","LogoutOverlay","buttonElement","PrivacyOverlay","success_default","enterPin_default","motion","VerifiedCustody","props","_a","_b","_c","_d","_e","_f","_g","_h","_i","_j","_k","_l","_m","_n","_o","_p","_q","_r","fontsLoaded","setFontsLoaded","useState","isOnboard","setisOnboard","vaultData","setVaultData","isLoading","setIsLoading","useEffect","isFontsLoaded","loadAllGoogleFonts","res","myVault","React","VaultContextProvider","imageAssets","ftu_default","hashTheString","ky","enterPin_default","actionTexts","pages_default"]}
|