xendit-components-web 0.0.7

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.umd.js","sources":["../../node_modules/.pnpm/preact@10.27.2/node_modules/preact/dist/preact.module.js","../../node_modules/.pnpm/preact@10.27.2/node_modules/preact/devtools/dist/devtools.module.js","../../node_modules/.pnpm/preact@10.27.2/node_modules/preact/debug/dist/debug.module.js","../../node_modules/.pnpm/preact@10.27.2/node_modules/preact/hooks/dist/hooks.module.js","../../node_modules/.pnpm/preact@10.27.2/node_modules/preact/compat/dist/compat.module.js","../../node_modules/.pnpm/preact@10.27.2/node_modules/preact/jsx-runtime/dist/jsxRuntime.module.js","../src/components/icon.tsx","../src/internal.ts","../src/components/accordion.tsx","../../node_modules/.pnpm/classnames@2.5.1/node_modules/classnames/index.js","../src/components/accordion-item.tsx","../src/components/session-provider.tsx","../src/utils.ts","../src/components/dropdown.tsx","../src/bff-marshal.ts","../src/components/channel-picker-group.tsx","../src/components/channel-picker.tsx","../src/private-event-types.ts","../../node_modules/.pnpm/libphonenumber-js@1.12.29/node_modules/libphonenumber-js/metadata.min.json.js","../../node_modules/.pnpm/libphonenumber-js@1.12.29/node_modules/libphonenumber-js/min/exports/withMetadataArgument.js","../../node_modules/.pnpm/libphonenumber-js@1.12.29/node_modules/libphonenumber-js/es6/tools/semver-compare.js","../../node_modules/.pnpm/libphonenumber-js@1.12.29/node_modules/libphonenumber-js/es6/helpers/isObject.js","../../node_modules/.pnpm/libphonenumber-js@1.12.29/node_modules/libphonenumber-js/es6/metadata.js","../../node_modules/.pnpm/libphonenumber-js@1.12.29/node_modules/libphonenumber-js/es6/helpers/checkNumberLength.js","../../node_modules/.pnpm/libphonenumber-js@1.12.29/node_modules/libphonenumber-js/es6/isPossible.js","../../node_modules/.pnpm/libphonenumber-js@1.12.29/node_modules/libphonenumber-js/es6/helpers/matchesEntirely.js","../../node_modules/.pnpm/libphonenumber-js@1.12.29/node_modules/libphonenumber-js/es6/helpers/getNumberType.js","../../node_modules/.pnpm/libphonenumber-js@1.12.29/node_modules/libphonenumber-js/es6/helpers/getPossibleCountriesForNumber.js","../../node_modules/.pnpm/libphonenumber-js@1.12.29/node_modules/libphonenumber-js/es6/constants.js","../../node_modules/.pnpm/libphonenumber-js@1.12.29/node_modules/libphonenumber-js/es6/helpers/stripIddPrefix.js","../../node_modules/.pnpm/libphonenumber-js@1.12.29/node_modules/libphonenumber-js/es6/helpers/getCountryByNationalNumber.js","../../node_modules/.pnpm/libphonenumber-js@1.12.29/node_modules/libphonenumber-js/es6/helpers/getCountryByCallingCode.js","../../node_modules/.pnpm/libphonenumber-js@1.12.29/node_modules/libphonenumber-js/es6/helpers/extractNationalNumber.js","../../node_modules/.pnpm/libphonenumber-js@1.12.29/node_modules/libphonenumber-js/es6/helpers/extractNationalNumberFromPossiblyIncompleteNumber.js","../../node_modules/.pnpm/libphonenumber-js@1.12.29/node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCode.js","../../node_modules/.pnpm/libphonenumber-js@1.12.29/node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js","../../node_modules/.pnpm/libphonenumber-js@1.12.29/node_modules/libphonenumber-js/es6/helpers/formatNationalNumberUsingFormat.js","../../node_modules/.pnpm/libphonenumber-js@1.12.29/node_modules/libphonenumber-js/es6/helpers/applyInternationalSeparatorStyle.js","../../node_modules/.pnpm/libphonenumber-js@1.12.29/node_modules/libphonenumber-js/es6/helpers/getIddPrefix.js","../../node_modules/.pnpm/libphonenumber-js@1.12.29/node_modules/libphonenumber-js/es6/helpers/extension/createExtensionPattern.js","../../node_modules/.pnpm/libphonenumber-js@1.12.29/node_modules/libphonenumber-js/es6/helpers/isViablePhoneNumber.js","../../node_modules/.pnpm/libphonenumber-js@1.12.29/node_modules/libphonenumber-js/es6/format.js","../../node_modules/.pnpm/libphonenumber-js@1.12.29/node_modules/libphonenumber-js/es6/helpers/RFC3966.js","../../node_modules/.pnpm/libphonenumber-js@1.12.29/node_modules/libphonenumber-js/es6/PhoneNumber.js","../../node_modules/.pnpm/libphonenumber-js@1.12.29/node_modules/libphonenumber-js/es6/isValid.js","../../node_modules/.pnpm/libphonenumber-js@1.12.29/node_modules/libphonenumber-js/es6/ParseError.js","../../node_modules/.pnpm/libphonenumber-js@1.12.29/node_modules/libphonenumber-js/es6/helpers/extension/extractExtension.js","../../node_modules/.pnpm/libphonenumber-js@1.12.29/node_modules/libphonenumber-js/es6/helpers/parseDigits.js","../../node_modules/.pnpm/libphonenumber-js@1.12.29/node_modules/libphonenumber-js/es6/parseIncompletePhoneNumber.js","../../node_modules/.pnpm/libphonenumber-js@1.12.29/node_modules/libphonenumber-js/es6/helpers/extractPhoneContext.js","../../node_modules/.pnpm/libphonenumber-js@1.12.29/node_modules/libphonenumber-js/es6/helpers/extractFormattedPhoneNumberFromPossibleRfc3966NumberUri.js","../../node_modules/.pnpm/libphonenumber-js@1.12.29/node_modules/libphonenumber-js/es6/parse.js","../../node_modules/.pnpm/libphonenumber-js@1.12.29/node_modules/libphonenumber-js/es6/parsePhoneNumberWithError_.js","../../node_modules/.pnpm/libphonenumber-js@1.12.29/node_modules/libphonenumber-js/es6/normalizeArguments.js","../../node_modules/.pnpm/libphonenumber-js@1.12.29/node_modules/libphonenumber-js/es6/parsePhoneNumber_.js","../../node_modules/.pnpm/libphonenumber-js@1.12.29/node_modules/libphonenumber-js/es6/parsePhoneNumber.js","../../node_modules/.pnpm/libphonenumber-js@1.12.29/node_modules/libphonenumber-js/es6/getCountries.js","../../node_modules/.pnpm/libphonenumber-js@1.12.29/node_modules/libphonenumber-js/es6/getExampleNumber.js","../../node_modules/.pnpm/libphonenumber-js@1.12.29/node_modules/libphonenumber-js/min/exports/parsePhoneNumber.js","../../node_modules/.pnpm/libphonenumber-js@1.12.29/node_modules/libphonenumber-js/min/exports/getCountryCallingCode.js","../src/validation.ts","../src/components/field-country.tsx","../../node_modules/.pnpm/libphonenumber-js@1.12.29/node_modules/libphonenumber-js/min/exports/getCountries.js","../src/components/field-dropdown.tsx","../src/components/form-ascociated-focus-trap.ts","../src/dom-utils.ts","../src/components/field-iframe.tsx","../../node_modules/.pnpm/libphonenumber-js@1.12.29/node_modules/libphonenumber-js/examples.mobile.json.js","../src/components/field-phone-number.tsx","../../node_modules/.pnpm/libphonenumber-js@1.12.29/node_modules/libphonenumber-js/min/exports/getExampleNumber.js","../src/data/provinces.ts","../src/components/field-province.tsx","../src/components/field-text.tsx","../src/components/field.tsx","../../node_modules/.pnpm/i18next@25.6.3_typescript@5.9.3/node_modules/i18next/dist/esm/i18next.js","../src/localization.ts","../src/components/field-group.tsx","../src/components/channel-form.tsx","../src/components/instructions-icon.tsx","../src/components/checkbox.tsx","../src/components/payment-channel.tsx","../src/networking.ts","../src/api.ts","../src/lifecycle/behavior-tree-runner.ts","../src/lifecycle/behaviors/action.ts","../src/lifecycle/behaviors/card-info.ts","../src/public-event-types.ts","../src/lifecycle/behaviors/channel.ts","../src/backend-types/payment-entity.ts","../src/lifecycle/behaviors/poll-worker.ts","../src/lifecycle/behaviors/payment-entity.ts","../src/lifecycle/behaviors/sdk.ts","../src/lifecycle/behaviors/session.ts","../src/lifecycle/behaviors/simulate-payment.ts","../src/test-data.ts","../src/lifecycle/behaviors/submission.ts","../src/lifecycle/behavior-tree.ts","../src/components/action-iframe.tsx","../src/components/dialog.tsx","../src/components/default-action-container.tsx","../src/sdk-event-manager.ts","../src/data/currencies.ts","../src/public-sdk.ts","../src/amount-format.ts","../src/index.ts","../src/styles.tsx","../src/styles.css"],"sourcesContent":["var n,l,u,t,i,r,o,e,f,c,s,a,h,p={},v=[],y=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,w=Array.isArray;function d(n,l){for(var u in l)n[u]=l[u];return n}function g(n){n&&n.parentNode&&n.parentNode.removeChild(n)}function _(l,u,t){var i,r,o,e={};for(o in u)\"key\"==o?i=u[o]:\"ref\"==o?r=u[o]:e[o]=u[o];if(arguments.length>2&&(e.children=arguments.length>3?n.call(arguments,2):t),\"function\"==typeof l&&null!=l.defaultProps)for(o in l.defaultProps)void 0===e[o]&&(e[o]=l.defaultProps[o]);return m(l,e,i,r,null)}function m(n,t,i,r,o){var e={type:n,props:t,key:i,ref:r,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:null==o?++u:o,__i:-1,__u:0};return null==o&&null!=l.vnode&&l.vnode(e),e}function b(){return{current:null}}function k(n){return n.children}function x(n,l){this.props=n,this.context=l}function S(n,l){if(null==l)return n.__?S(n.__,n.__i+1):null;for(var u;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e)return u.__e;return\"function\"==typeof n.type?S(n):null}function C(n){var l,u;if(null!=(n=n.__)&&null!=n.__c){for(n.__e=n.__c.base=null,l=0;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e){n.__e=n.__c.base=u.__e;break}return C(n)}}function M(n){(!n.__d&&(n.__d=!0)&&i.push(n)&&!$.__r++||r!=l.debounceRendering)&&((r=l.debounceRendering)||o)($)}function $(){for(var n,u,t,r,o,f,c,s=1;i.length;)i.length>s&&i.sort(e),n=i.shift(),s=i.length,n.__d&&(t=void 0,r=void 0,o=(r=(u=n).__v).__e,f=[],c=[],u.__P&&((t=d({},r)).__v=r.__v+1,l.vnode&&l.vnode(t),O(u.__P,t,r,u.__n,u.__P.namespaceURI,32&r.__u?[o]:null,f,null==o?S(r):o,!!(32&r.__u),c),t.__v=r.__v,t.__.__k[t.__i]=t,N(f,t,c),r.__e=r.__=null,t.__e!=o&&C(t)));$.__r=0}function I(n,l,u,t,i,r,o,e,f,c,s){var a,h,y,w,d,g,_,m=t&&t.__k||v,b=l.length;for(f=P(u,l,m,f,b),a=0;a<b;a++)null!=(y=u.__k[a])&&(h=-1==y.__i?p:m[y.__i]||p,y.__i=a,g=O(n,y,h,i,r,o,e,f,c,s),w=y.__e,y.ref&&h.ref!=y.ref&&(h.ref&&B(h.ref,null,y),s.push(y.ref,y.__c||w,y)),null==d&&null!=w&&(d=w),(_=!!(4&y.__u))||h.__k===y.__k?f=A(y,f,n,_):\"function\"==typeof y.type&&void 0!==g?f=g:w&&(f=w.nextSibling),y.__u&=-7);return u.__e=d,f}function P(n,l,u,t,i){var r,o,e,f,c,s=u.length,a=s,h=0;for(n.__k=new Array(i),r=0;r<i;r++)null!=(o=l[r])&&\"boolean\"!=typeof o&&\"function\"!=typeof o?(f=r+h,(o=n.__k[r]=\"string\"==typeof o||\"number\"==typeof o||\"bigint\"==typeof o||o.constructor==String?m(null,o,null,null,null):w(o)?m(k,{children:o},null,null,null):null==o.constructor&&o.__b>0?m(o.type,o.props,o.key,o.ref?o.ref:null,o.__v):o).__=n,o.__b=n.__b+1,e=null,-1!=(c=o.__i=L(o,u,f,a))&&(a--,(e=u[c])&&(e.__u|=2)),null==e||null==e.__v?(-1==c&&(i>s?h--:i<s&&h++),\"function\"!=typeof o.type&&(o.__u|=4)):c!=f&&(c==f-1?h--:c==f+1?h++:(c>f?h--:h++,o.__u|=4))):n.__k[r]=null;if(a)for(r=0;r<s;r++)null!=(e=u[r])&&0==(2&e.__u)&&(e.__e==t&&(t=S(e)),D(e,e));return t}function A(n,l,u,t){var i,r;if(\"function\"==typeof n.type){for(i=n.__k,r=0;i&&r<i.length;r++)i[r]&&(i[r].__=n,l=A(i[r],l,u,t));return l}n.__e!=l&&(t&&(l&&n.type&&!l.parentNode&&(l=S(n)),u.insertBefore(n.__e,l||null)),l=n.__e);do{l=l&&l.nextSibling}while(null!=l&&8==l.nodeType);return l}function H(n,l){return l=l||[],null==n||\"boolean\"==typeof n||(w(n)?n.some(function(n){H(n,l)}):l.push(n)),l}function L(n,l,u,t){var i,r,o,e=n.key,f=n.type,c=l[u],s=null!=c&&0==(2&c.__u);if(null===c&&null==n.key||s&&e==c.key&&f==c.type)return u;if(t>(s?1:0))for(i=u-1,r=u+1;i>=0||r<l.length;)if(null!=(c=l[o=i>=0?i--:r++])&&0==(2&c.__u)&&e==c.key&&f==c.type)return o;return-1}function T(n,l,u){\"-\"==l[0]?n.setProperty(l,null==u?\"\":u):n[l]=null==u?\"\":\"number\"!=typeof u||y.test(l)?u:u+\"px\"}function j(n,l,u,t,i){var r,o;n:if(\"style\"==l)if(\"string\"==typeof u)n.style.cssText=u;else{if(\"string\"==typeof t&&(n.style.cssText=t=\"\"),t)for(l in t)u&&l in u||T(n.style,l,\"\");if(u)for(l in u)t&&u[l]==t[l]||T(n.style,l,u[l])}else if(\"o\"==l[0]&&\"n\"==l[1])r=l!=(l=l.replace(f,\"$1\")),o=l.toLowerCase(),l=o in n||\"onFocusOut\"==l||\"onFocusIn\"==l?o.slice(2):l.slice(2),n.l||(n.l={}),n.l[l+r]=u,u?t?u.u=t.u:(u.u=c,n.addEventListener(l,r?a:s,r)):n.removeEventListener(l,r?a:s,r);else{if(\"http://www.w3.org/2000/svg\"==i)l=l.replace(/xlink(H|:h)/,\"h\").replace(/sName$/,\"s\");else if(\"width\"!=l&&\"height\"!=l&&\"href\"!=l&&\"list\"!=l&&\"form\"!=l&&\"tabIndex\"!=l&&\"download\"!=l&&\"rowSpan\"!=l&&\"colSpan\"!=l&&\"role\"!=l&&\"popover\"!=l&&l in n)try{n[l]=null==u?\"\":u;break n}catch(n){}\"function\"==typeof u||(null==u||!1===u&&\"-\"!=l[4]?n.removeAttribute(l):n.setAttribute(l,\"popover\"==l&&1==u?\"\":u))}}function F(n){return function(u){if(this.l){var t=this.l[u.type+n];if(null==u.t)u.t=c++;else if(u.t<t.u)return;return t(l.event?l.event(u):u)}}}function O(n,u,t,i,r,o,e,f,c,s){var a,h,p,v,y,_,m,b,S,C,M,$,P,A,H,L,T,j=u.type;if(null!=u.constructor)return null;128&t.__u&&(c=!!(32&t.__u),o=[f=u.__e=t.__e]),(a=l.__b)&&a(u);n:if(\"function\"==typeof j)try{if(b=u.props,S=\"prototype\"in j&&j.prototype.render,C=(a=j.contextType)&&i[a.__c],M=a?C?C.props.value:a.__:i,t.__c?m=(h=u.__c=t.__c).__=h.__E:(S?u.__c=h=new j(b,M):(u.__c=h=new x(b,M),h.constructor=j,h.render=E),C&&C.sub(h),h.props=b,h.state||(h.state={}),h.context=M,h.__n=i,p=h.__d=!0,h.__h=[],h._sb=[]),S&&null==h.__s&&(h.__s=h.state),S&&null!=j.getDerivedStateFromProps&&(h.__s==h.state&&(h.__s=d({},h.__s)),d(h.__s,j.getDerivedStateFromProps(b,h.__s))),v=h.props,y=h.state,h.__v=u,p)S&&null==j.getDerivedStateFromProps&&null!=h.componentWillMount&&h.componentWillMount(),S&&null!=h.componentDidMount&&h.__h.push(h.componentDidMount);else{if(S&&null==j.getDerivedStateFromProps&&b!==v&&null!=h.componentWillReceiveProps&&h.componentWillReceiveProps(b,M),!h.__e&&null!=h.shouldComponentUpdate&&!1===h.shouldComponentUpdate(b,h.__s,M)||u.__v==t.__v){for(u.__v!=t.__v&&(h.props=b,h.state=h.__s,h.__d=!1),u.__e=t.__e,u.__k=t.__k,u.__k.some(function(n){n&&(n.__=u)}),$=0;$<h._sb.length;$++)h.__h.push(h._sb[$]);h._sb=[],h.__h.length&&e.push(h);break n}null!=h.componentWillUpdate&&h.componentWillUpdate(b,h.__s,M),S&&null!=h.componentDidUpdate&&h.__h.push(function(){h.componentDidUpdate(v,y,_)})}if(h.context=M,h.props=b,h.__P=n,h.__e=!1,P=l.__r,A=0,S){for(h.state=h.__s,h.__d=!1,P&&P(u),a=h.render(h.props,h.state,h.context),H=0;H<h._sb.length;H++)h.__h.push(h._sb[H]);h._sb=[]}else do{h.__d=!1,P&&P(u),a=h.render(h.props,h.state,h.context),h.state=h.__s}while(h.__d&&++A<25);h.state=h.__s,null!=h.getChildContext&&(i=d(d({},i),h.getChildContext())),S&&!p&&null!=h.getSnapshotBeforeUpdate&&(_=h.getSnapshotBeforeUpdate(v,y)),L=a,null!=a&&a.type===k&&null==a.key&&(L=V(a.props.children)),f=I(n,w(L)?L:[L],u,t,i,r,o,e,f,c,s),h.base=u.__e,u.__u&=-161,h.__h.length&&e.push(h),m&&(h.__E=h.__=null)}catch(n){if(u.__v=null,c||null!=o)if(n.then){for(u.__u|=c?160:128;f&&8==f.nodeType&&f.nextSibling;)f=f.nextSibling;o[o.indexOf(f)]=null,u.__e=f}else{for(T=o.length;T--;)g(o[T]);z(u)}else u.__e=t.__e,u.__k=t.__k,n.then||z(u);l.__e(n,u,t)}else null==o&&u.__v==t.__v?(u.__k=t.__k,u.__e=t.__e):f=u.__e=q(t.__e,u,t,i,r,o,e,c,s);return(a=l.diffed)&&a(u),128&u.__u?void 0:f}function z(n){n&&n.__c&&(n.__c.__e=!0),n&&n.__k&&n.__k.forEach(z)}function N(n,u,t){for(var i=0;i<t.length;i++)B(t[i],t[++i],t[++i]);l.__c&&l.__c(u,n),n.some(function(u){try{n=u.__h,u.__h=[],n.some(function(n){n.call(u)})}catch(n){l.__e(n,u.__v)}})}function V(n){return\"object\"!=typeof n||null==n||n.__b&&n.__b>0?n:w(n)?n.map(V):d({},n)}function q(u,t,i,r,o,e,f,c,s){var a,h,v,y,d,_,m,b=i.props,k=t.props,x=t.type;if(\"svg\"==x?o=\"http://www.w3.org/2000/svg\":\"math\"==x?o=\"http://www.w3.org/1998/Math/MathML\":o||(o=\"http://www.w3.org/1999/xhtml\"),null!=e)for(a=0;a<e.length;a++)if((d=e[a])&&\"setAttribute\"in d==!!x&&(x?d.localName==x:3==d.nodeType)){u=d,e[a]=null;break}if(null==u){if(null==x)return document.createTextNode(k);u=document.createElementNS(o,x,k.is&&k),c&&(l.__m&&l.__m(t,e),c=!1),e=null}if(null==x)b===k||c&&u.data==k||(u.data=k);else{if(e=e&&n.call(u.childNodes),b=i.props||p,!c&&null!=e)for(b={},a=0;a<u.attributes.length;a++)b[(d=u.attributes[a]).name]=d.value;for(a in b)if(d=b[a],\"children\"==a);else if(\"dangerouslySetInnerHTML\"==a)v=d;else if(!(a in k)){if(\"value\"==a&&\"defaultValue\"in k||\"checked\"==a&&\"defaultChecked\"in k)continue;j(u,a,null,d,o)}for(a in k)d=k[a],\"children\"==a?y=d:\"dangerouslySetInnerHTML\"==a?h=d:\"value\"==a?_=d:\"checked\"==a?m=d:c&&\"function\"!=typeof d||b[a]===d||j(u,a,d,b[a],o);if(h)c||v&&(h.__html==v.__html||h.__html==u.innerHTML)||(u.innerHTML=h.__html),t.__k=[];else if(v&&(u.innerHTML=\"\"),I(\"template\"==t.type?u.content:u,w(y)?y:[y],t,i,r,\"foreignObject\"==x?\"http://www.w3.org/1999/xhtml\":o,e,f,e?e[0]:i.__k&&S(i,0),c,s),null!=e)for(a=e.length;a--;)g(e[a]);c||(a=\"value\",\"progress\"==x&&null==_?u.removeAttribute(\"value\"):null!=_&&(_!==u[a]||\"progress\"==x&&!_||\"option\"==x&&_!=b[a])&&j(u,a,_,b[a],o),a=\"checked\",null!=m&&m!=u[a]&&j(u,a,m,b[a],o))}return u}function B(n,u,t){try{if(\"function\"==typeof n){var i=\"function\"==typeof n.__u;i&&n.__u(),i&&null==u||(n.__u=n(u))}else n.current=u}catch(n){l.__e(n,t)}}function D(n,u,t){var i,r;if(l.unmount&&l.unmount(n),(i=n.ref)&&(i.current&&i.current!=n.__e||B(i,null,u)),null!=(i=n.__c)){if(i.componentWillUnmount)try{i.componentWillUnmount()}catch(n){l.__e(n,u)}i.base=i.__P=null}if(i=n.__k)for(r=0;r<i.length;r++)i[r]&&D(i[r],u,t||\"function\"!=typeof n.type);t||g(n.__e),n.__c=n.__=n.__e=void 0}function E(n,l,u){return this.constructor(n,u)}function G(u,t,i){var r,o,e,f;t==document&&(t=document.documentElement),l.__&&l.__(u,t),o=(r=\"function\"==typeof i)?null:i&&i.__k||t.__k,e=[],f=[],O(t,u=(!r&&i||t).__k=_(k,null,[u]),o||p,p,t.namespaceURI,!r&&i?[i]:o?null:t.firstChild?n.call(t.childNodes):null,e,!r&&i?i:o?o.__e:t.firstChild,r,f),N(e,u,f)}function J(n,l){G(n,l,J)}function K(l,u,t){var i,r,o,e,f=d({},l.props);for(o in l.type&&l.type.defaultProps&&(e=l.type.defaultProps),u)\"key\"==o?i=u[o]:\"ref\"==o?r=u[o]:f[o]=void 0===u[o]&&null!=e?e[o]:u[o];return arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):t),m(l.type,f,i||l.key,r||l.ref,null)}function Q(n){function l(n){var u,t;return this.getChildContext||(u=new Set,(t={})[l.__c]=this,this.getChildContext=function(){return t},this.componentWillUnmount=function(){u=null},this.shouldComponentUpdate=function(n){this.props.value!=n.value&&u.forEach(function(n){n.__e=!0,M(n)})},this.sub=function(n){u.add(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){u&&u.delete(n),l&&l.call(n)}}),n.children}return l.__c=\"__cC\"+h++,l.__=n,l.Provider=l.__l=(l.Consumer=function(n,l){return n.children(l)}).contextType=l,l}n=v.slice,l={__e:function(n,l,u,t){for(var i,r,o;l=l.__;)if((i=l.__c)&&!i.__)try{if((r=i.constructor)&&null!=r.getDerivedStateFromError&&(i.setState(r.getDerivedStateFromError(n)),o=i.__d),null!=i.componentDidCatch&&(i.componentDidCatch(n,t||{}),o=i.__d),o)return i.__E=i}catch(l){n=l}throw n}},u=0,t=function(n){return null!=n&&null==n.constructor},x.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!=this.state?this.__s:this.__s=d({},this.state),\"function\"==typeof n&&(n=n(d({},u),this.props)),n&&d(u,n),null!=n&&this.__v&&(l&&this._sb.push(l),M(this))},x.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),M(this))},x.prototype.render=k,i=[],o=\"function\"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,e=function(n,l){return n.__v.__b-l.__v.__b},$.__r=0,f=/(PointerCapture)$|Capture$/i,c=0,s=F(!1),a=F(!0),h=0;export{x as Component,k as Fragment,K as cloneElement,Q as createContext,_ as createElement,b as createRef,_ as h,J as hydrate,t as isValidElement,l as options,G as render,H as toChildArray};\n//# sourceMappingURL=preact.module.js.map\n","import{options as n,Fragment as o,Component as e}from\"preact\";var i;function t(o,e){return n.__a&&n.__a(e),o}null!=(i=\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof window?window:void 0)&&i.__PREACT_DEVTOOLS__&&i.__PREACT_DEVTOOLS__.attachPreact(\"10.27.2\",n,{Fragment:o,Component:e});export{t as addHookName};\n//# sourceMappingURL=devtools.module.js.map\n","import{Fragment as n,options as e,Component as o}from\"preact\";import\"preact/devtools\";var t={};function r(){t={}}function a(e){return e.type===n?\"Fragment\":\"function\"==typeof e.type?e.type.displayName||e.type.name:\"string\"==typeof e.type?e.type:\"#text\"}var i=[],s=[];function c(){return i.length>0?i[i.length-1]:null}var l=!0;function u(e){return\"function\"==typeof e.type&&e.type!=n}function f(n){for(var e=[n],o=n;null!=o.__o;)e.push(o.__o),o=o.__o;return e.reduce(function(n,e){n+=\" in \"+a(e);var o=e.__source;return o?n+=\" (at \"+o.fileName+\":\"+o.lineNumber+\")\":l&&console.warn(\"Add @babel/plugin-transform-react-jsx-source to get a more detailed component stack. Note that you should not add it to production builds of your App for bundle size reasons.\"),l=!1,n+\"\\n\"},\"\")}var d=\"function\"==typeof WeakMap;function p(n){var e=[];return n.__k?(n.__k.forEach(function(n){n&&\"function\"==typeof n.type?e.push.apply(e,p(n)):n&&\"string\"==typeof n.type&&e.push(n.type)}),e):e}function h(n){return n?\"function\"==typeof n.type?null==n.__?null!=n.__e&&null!=n.__e.parentNode?n.__e.parentNode.localName:\"\":h(n.__):n.type:\"\"}var v=o.prototype.setState;function y(n){return\"table\"===n||\"tfoot\"===n||\"tbody\"===n||\"thead\"===n||\"td\"===n||\"tr\"===n||\"th\"===n}o.prototype.setState=function(n,e){return null==this.__v&&null==this.state&&console.warn('Calling \"this.setState\" inside the constructor of a component is a no-op and might be a bug in your application. Instead, set \"this.state = {}\" directly.\\n\\n'+f(c())),v.call(this,n,e)};var m=/^(address|article|aside|blockquote|details|div|dl|fieldset|figcaption|figure|footer|form|h1|h2|h3|h4|h5|h6|header|hgroup|hr|main|menu|nav|ol|p|pre|search|section|table|ul)$/,b=o.prototype.forceUpdate;function w(n){var e=n.props,o=a(n),t=\"\";for(var r in e)if(e.hasOwnProperty(r)&&\"children\"!==r){var i=e[r];\"function\"==typeof i&&(i=\"function \"+(i.displayName||i.name)+\"() {}\"),i=Object(i)!==i||i.toString?i+\"\":Object.prototype.toString.call(i),t+=\" \"+r+\"=\"+JSON.stringify(i)}var s=e.children;return\"<\"+o+t+(s&&s.length?\">..</\"+o+\">\":\" />\")}o.prototype.forceUpdate=function(n){return null==this.__v?console.warn('Calling \"this.forceUpdate\" inside the constructor of a component is a no-op and might be a bug in your application.\\n\\n'+f(c())):null==this.__P&&console.warn('Can\\'t call \"this.forceUpdate\" on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in the componentWillUnmount method.\\n\\n'+f(this.__v)),b.call(this,n)},e.__m=function(n,e){var o=n.type,t=e.map(function(n){return n&&n.localName}).filter(Boolean);console.error('Expected a DOM node of type \"'+o+'\" but found \"'+t.join(\", \")+\"\\\" as available DOM-node(s), this is caused by the SSR'd HTML containing different DOM-nodes compared to the hydrated one.\\n\\n\"+f(n))},function(){!function(){var n=e.__b,o=e.diffed,t=e.__,r=e.vnode,a=e.__r;e.diffed=function(n){u(n)&&s.pop(),i.pop(),o&&o(n)},e.__b=function(e){u(e)&&i.push(e),n&&n(e)},e.__=function(n,e){s=[],t&&t(n,e)},e.vnode=function(n){n.__o=s.length>0?s[s.length-1]:null,r&&r(n)},e.__r=function(n){u(n)&&s.push(n),a&&a(n)}}();var n=!1,o=e.__b,r=e.diffed,c=e.vnode,l=e.__r,v=e.__e,b=e.__,g=e.__h,E=d?{useEffect:new WeakMap,useLayoutEffect:new WeakMap,lazyPropTypes:new WeakMap}:null,k=[];e.__e=function(n,e,o,t){if(e&&e.__c&&\"function\"==typeof n.then){var r=n;n=new Error(\"Missing Suspense. The throwing component was: \"+a(e));for(var i=e;i;i=i.__)if(i.__c&&i.__c.__c){n=r;break}if(n instanceof Error)throw n}try{(t=t||{}).componentStack=f(e),v(n,e,o,t),\"function\"!=typeof n.then&&setTimeout(function(){throw n})}catch(n){throw n}},e.__=function(n,e){if(!e)throw new Error(\"Undefined parent passed to render(), this is the second argument.\\nCheck if the element is available in the DOM/has the correct id.\");var o;switch(e.nodeType){case 1:case 11:case 9:o=!0;break;default:o=!1}if(!o){var t=a(n);throw new Error(\"Expected a valid HTML node as a second argument to render.\\tReceived \"+e+\" instead: render(<\"+t+\" />, \"+e+\");\")}b&&b(n,e)},e.__b=function(e){var r=e.type;if(n=!0,void 0===r)throw new Error(\"Undefined component passed to createElement()\\n\\nYou likely forgot to export your component or might have mixed up default and named imports\"+w(e)+\"\\n\\n\"+f(e));if(null!=r&&\"object\"==typeof r){if(void 0!==r.__k&&void 0!==r.__e)throw new Error(\"Invalid type passed to createElement(): \"+r+\"\\n\\nDid you accidentally pass a JSX literal as JSX twice?\\n\\n let My\"+a(e)+\" = \"+w(r)+\";\\n let vnode = <My\"+a(e)+\" />;\\n\\nThis usually happens when you export a JSX literal and not the component.\\n\\n\"+f(e));throw new Error(\"Invalid type passed to createElement(): \"+(Array.isArray(r)?\"array\":r))}if(void 0!==e.ref&&\"function\"!=typeof e.ref&&\"object\"!=typeof e.ref&&!(\"$$typeof\"in e))throw new Error('Component\\'s \"ref\" property should be a function, or an object created by createRef(), but got ['+typeof e.ref+\"] instead\\n\"+w(e)+\"\\n\\n\"+f(e));if(\"string\"==typeof e.type)for(var i in e.props)if(\"o\"===i[0]&&\"n\"===i[1]&&\"function\"!=typeof e.props[i]&&null!=e.props[i])throw new Error(\"Component's \\\"\"+i+'\" property should be a function, but got ['+typeof e.props[i]+\"] instead\\n\"+w(e)+\"\\n\\n\"+f(e));if(\"function\"==typeof e.type&&e.type.propTypes){if(\"Lazy\"===e.type.displayName&&E&&!E.lazyPropTypes.has(e.type)){var s=\"PropTypes are not supported on lazy(). Use propTypes on the wrapped component itself. \";try{var c=e.type();E.lazyPropTypes.set(e.type,!0),console.warn(s+\"Component wrapped in lazy() is \"+a(c))}catch(n){console.warn(s+\"We will log the wrapped component's name once it is loaded.\")}}var l=e.props;e.type.__f&&delete(l=function(n,e){for(var o in e)n[o]=e[o];return n}({},l)).ref,function(n,e,o,r,a){Object.keys(n).forEach(function(o){var i;try{i=n[o](e,o,r,\"prop\",null,\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\")}catch(n){i=n}i&&!(i.message in t)&&(t[i.message]=!0,console.error(\"Failed prop type: \"+i.message+(a&&\"\\n\"+a()||\"\")))})}(e.type.propTypes,l,0,a(e),function(){return f(e)})}o&&o(e)};var T,_=0;e.__r=function(e){l&&l(e),n=!0;var o=e.__c;if(o===T?_++:_=1,_>=25)throw new Error(\"Too many re-renders. This is limited to prevent an infinite loop which may lock up your browser. The component causing this is: \"+a(e));T=o},e.__h=function(e,o,t){if(!e||!n)throw new Error(\"Hook can only be invoked from render methods.\");g&&g(e,o,t)};var O=function(n,e){return{get:function(){var o=\"get\"+n+e;k&&k.indexOf(o)<0&&(k.push(o),console.warn(\"getting vnode.\"+n+\" is deprecated, \"+e))},set:function(){var o=\"set\"+n+e;k&&k.indexOf(o)<0&&(k.push(o),console.warn(\"setting vnode.\"+n+\" is not allowed, \"+e))}}},I={nodeName:O(\"nodeName\",\"use vnode.type\"),attributes:O(\"attributes\",\"use vnode.props\"),children:O(\"children\",\"use vnode.props.children\")},M=Object.create({},I);e.vnode=function(n){var e=n.props;if(null!==n.type&&null!=e&&(\"__source\"in e||\"__self\"in e)){var o=n.props={};for(var t in e){var r=e[t];\"__source\"===t?n.__source=r:\"__self\"===t?n.__self=r:o[t]=r}}n.__proto__=M,c&&c(n)},e.diffed=function(e){var o,t=e.type,i=e.__;if(e.__k&&e.__k.forEach(function(n){if(\"object\"==typeof n&&n&&void 0===n.type){var o=Object.keys(n).join(\",\");throw new Error(\"Objects are not valid as a child. Encountered an object with the keys {\"+o+\"}.\\n\\n\"+f(e))}}),e.__c===T&&(_=0),\"string\"==typeof t&&(y(t)||\"p\"===t||\"a\"===t||\"button\"===t)){var s=h(i);if(\"\"!==s&&y(t))\"table\"===t&&\"td\"!==s&&y(s)?console.error(\"Improper nesting of table. Your <table> should not have a table-node parent.\"+w(e)+\"\\n\\n\"+f(e)):\"thead\"!==t&&\"tfoot\"!==t&&\"tbody\"!==t||\"table\"===s?\"tr\"===t&&\"thead\"!==s&&\"tfoot\"!==s&&\"tbody\"!==s?console.error(\"Improper nesting of table. Your <tr> should have a <thead/tbody/tfoot> parent.\"+w(e)+\"\\n\\n\"+f(e)):\"td\"===t&&\"tr\"!==s?console.error(\"Improper nesting of table. Your <td> should have a <tr> parent.\"+w(e)+\"\\n\\n\"+f(e)):\"th\"===t&&\"tr\"!==s&&console.error(\"Improper nesting of table. Your <th> should have a <tr>.\"+w(e)+\"\\n\\n\"+f(e)):console.error(\"Improper nesting of table. Your <thead/tbody/tfoot> should have a <table> parent.\"+w(e)+\"\\n\\n\"+f(e));else if(\"p\"===t){var c=p(e).filter(function(n){return m.test(n)});c.length&&console.error(\"Improper nesting of paragraph. Your <p> should not have \"+c.join(\", \")+\" as child-elements.\"+w(e)+\"\\n\\n\"+f(e))}else\"a\"!==t&&\"button\"!==t||-1!==p(e).indexOf(t)&&console.error(\"Improper nesting of interactive content. Your <\"+t+\"> should not have other \"+(\"a\"===t?\"anchor\":\"button\")+\" tags as child-elements.\"+w(e)+\"\\n\\n\"+f(e))}if(n=!1,r&&r(e),null!=e.__k)for(var l=[],u=0;u<e.__k.length;u++){var d=e.__k[u];if(d&&null!=d.key){var v=d.key;if(-1!==l.indexOf(v)){console.error('Following component has two or more children with the same key attribute: \"'+v+'\". This may cause glitches and misbehavior in rendering process. Component: \\n\\n'+w(e)+\"\\n\\n\"+f(e));break}l.push(v)}}if(null!=e.__c&&null!=e.__c.__H){var b=e.__c.__H.__;if(b)for(var g=0;g<b.length;g+=1){var E=b[g];if(E.__H)for(var k=0;k<E.__H.length;k++)if((o=E.__H[k])!=o){var O=a(e);console.warn(\"Invalid argument passed to hook. Hooks should not be called with NaN in the dependency array. Hook index \"+g+\" in component \"+O+\" was called with NaN.\")}}}}}();export{c as getCurrentVNode,a as getDisplayName,f as getOwnerStack,r as resetPropWarnings};\n//# sourceMappingURL=debug.module.js.map\n","import{options as n}from\"preact\";var t,r,u,i,o=0,f=[],c=n,e=c.__b,a=c.__r,v=c.diffed,l=c.__c,m=c.unmount,s=c.__;function p(n,t){c.__h&&c.__h(r,n,o||t),o=0;var u=r.__H||(r.__H={__:[],__h:[]});return n>=u.__.length&&u.__.push({}),u.__[n]}function d(n){return o=1,h(D,n)}function h(n,u,i){var o=p(t++,2);if(o.t=n,!o.__c&&(o.__=[i?i(u):D(void 0,u),function(n){var t=o.__N?o.__N[0]:o.__[0],r=o.t(t,n);t!==r&&(o.__N=[r,o.__[1]],o.__c.setState({}))}],o.__c=r,!r.__f)){var f=function(n,t,r){if(!o.__c.__H)return!0;var u=o.__c.__H.__.filter(function(n){return!!n.__c});if(u.every(function(n){return!n.__N}))return!c||c.call(this,n,t,r);var i=o.__c.props!==n;return u.forEach(function(n){if(n.__N){var t=n.__[0];n.__=n.__N,n.__N=void 0,t!==n.__[0]&&(i=!0)}}),c&&c.call(this,n,t,r)||i};r.__f=!0;var c=r.shouldComponentUpdate,e=r.componentWillUpdate;r.componentWillUpdate=function(n,t,r){if(this.__e){var u=c;c=void 0,f(n,t,r),c=u}e&&e.call(this,n,t,r)},r.shouldComponentUpdate=f}return o.__N||o.__}function y(n,u){var i=p(t++,3);!c.__s&&C(i.__H,u)&&(i.__=n,i.u=u,r.__H.__h.push(i))}function _(n,u){var i=p(t++,4);!c.__s&&C(i.__H,u)&&(i.__=n,i.u=u,r.__h.push(i))}function A(n){return o=5,T(function(){return{current:n}},[])}function F(n,t,r){o=6,_(function(){if(\"function\"==typeof n){var r=n(t());return function(){n(null),r&&\"function\"==typeof r&&r()}}if(n)return n.current=t(),function(){return n.current=null}},null==r?r:r.concat(n))}function T(n,r){var u=p(t++,7);return C(u.__H,r)&&(u.__=n(),u.__H=r,u.__h=n),u.__}function q(n,t){return o=8,T(function(){return n},t)}function x(n){var u=r.context[n.__c],i=p(t++,9);return i.c=n,u?(null==i.__&&(i.__=!0,u.sub(r)),u.props.value):n.__}function P(n,t){c.useDebugValue&&c.useDebugValue(t?t(n):n)}function b(n){var u=p(t++,10),i=d();return u.__=n,r.componentDidCatch||(r.componentDidCatch=function(n,t){u.__&&u.__(n,t),i[1](n)}),[i[0],function(){i[1](void 0)}]}function g(){var n=p(t++,11);if(!n.__){for(var u=r.__v;null!==u&&!u.__m&&null!==u.__;)u=u.__;var i=u.__m||(u.__m=[0,0]);n.__=\"P\"+i[0]+\"-\"+i[1]++}return n.__}function j(){for(var n;n=f.shift();)if(n.__P&&n.__H)try{n.__H.__h.forEach(z),n.__H.__h.forEach(B),n.__H.__h=[]}catch(t){n.__H.__h=[],c.__e(t,n.__v)}}c.__b=function(n){r=null,e&&e(n)},c.__=function(n,t){n&&t.__k&&t.__k.__m&&(n.__m=t.__k.__m),s&&s(n,t)},c.__r=function(n){a&&a(n),t=0;var i=(r=n.__c).__H;i&&(u===r?(i.__h=[],r.__h=[],i.__.forEach(function(n){n.__N&&(n.__=n.__N),n.u=n.__N=void 0})):(i.__h.forEach(z),i.__h.forEach(B),i.__h=[],t=0)),u=r},c.diffed=function(n){v&&v(n);var t=n.__c;t&&t.__H&&(t.__H.__h.length&&(1!==f.push(t)&&i===c.requestAnimationFrame||((i=c.requestAnimationFrame)||w)(j)),t.__H.__.forEach(function(n){n.u&&(n.__H=n.u),n.u=void 0})),u=r=null},c.__c=function(n,t){t.some(function(n){try{n.__h.forEach(z),n.__h=n.__h.filter(function(n){return!n.__||B(n)})}catch(r){t.some(function(n){n.__h&&(n.__h=[])}),t=[],c.__e(r,n.__v)}}),l&&l(n,t)},c.unmount=function(n){m&&m(n);var t,r=n.__c;r&&r.__H&&(r.__H.__.forEach(function(n){try{z(n)}catch(n){t=n}}),r.__H=void 0,t&&c.__e(t,r.__v))};var k=\"function\"==typeof requestAnimationFrame;function w(n){var t,r=function(){clearTimeout(u),k&&cancelAnimationFrame(t),setTimeout(n)},u=setTimeout(r,35);k&&(t=requestAnimationFrame(r))}function z(n){var t=r,u=n.__c;\"function\"==typeof u&&(n.__c=void 0,u()),r=t}function B(n){var t=r;n.__c=n.__(),r=t}function C(n,t){return!n||n.length!==t.length||t.some(function(t,r){return t!==n[r]})}function D(n,t){return\"function\"==typeof t?t(n):t}export{q as useCallback,x as useContext,P as useDebugValue,y as useEffect,b as useErrorBoundary,g as useId,F as useImperativeHandle,_ as useLayoutEffect,T as useMemo,h as useReducer,A as useRef,d as useState};\n//# sourceMappingURL=hooks.module.js.map\n","import{Component as n,createElement as t,options as e,toChildArray as r,Fragment as u,render as o,hydrate as i,createContext as l,createRef as c,cloneElement as f}from\"preact\";export{Component,Fragment,createContext,createElement,createRef}from\"preact\";import{useState as a,useLayoutEffect as s,useEffect as h,useCallback as v,useContext as d,useDebugValue as m,useId as p,useImperativeHandle as y,useMemo as _,useReducer as b,useRef as S}from\"preact/hooks\";export*from\"preact/hooks\";function g(n,t){for(var e in t)n[e]=t[e];return n}function E(n,t){for(var e in n)if(\"__source\"!==e&&!(e in t))return!0;for(var r in t)if(\"__source\"!==r&&n[r]!==t[r])return!0;return!1}function C(n,t){var e=t(),r=a({t:{__:e,u:t}}),u=r[0].t,o=r[1];return s(function(){u.__=e,u.u=t,x(u)&&o({t:u})},[n,e,t]),h(function(){return x(u)&&o({t:u}),n(function(){x(u)&&o({t:u})})},[n]),e}function x(n){var t,e,r=n.u,u=n.__;try{var o=r();return!((t=u)===(e=o)&&(0!==t||1/t==1/e)||t!=t&&e!=e)}catch(n){return!0}}function R(n){n()}function w(n){return n}function k(){return[!1,R]}var I=s;function N(n,t){this.props=n,this.context=t}function M(n,e){function r(n){var t=this.props.ref,r=t==n.ref;return!r&&t&&(t.call?t(null):t.current=null),e?!e(this.props,n)||!r:E(this.props,n)}function u(e){return this.shouldComponentUpdate=r,t(n,e)}return u.displayName=\"Memo(\"+(n.displayName||n.name)+\")\",u.prototype.isReactComponent=!0,u.__f=!0,u.type=n,u}(N.prototype=new n).isPureReactComponent=!0,N.prototype.shouldComponentUpdate=function(n,t){return E(this.props,n)||E(this.state,t)};var T=e.__b;e.__b=function(n){n.type&&n.type.__f&&n.ref&&(n.props.ref=n.ref,n.ref=null),T&&T(n)};var A=\"undefined\"!=typeof Symbol&&Symbol.for&&Symbol.for(\"react.forward_ref\")||3911;function D(n){function t(t){var e=g({},t);return delete e.ref,n(e,t.ref||null)}return t.$$typeof=A,t.render=n,t.prototype.isReactComponent=t.__f=!0,t.displayName=\"ForwardRef(\"+(n.displayName||n.name)+\")\",t}var L=function(n,t){return null==n?null:r(r(n).map(t))},O={map:L,forEach:L,count:function(n){return n?r(n).length:0},only:function(n){var t=r(n);if(1!==t.length)throw\"Children.only\";return t[0]},toArray:r},F=e.__e;e.__e=function(n,t,e,r){if(n.then)for(var u,o=t;o=o.__;)if((u=o.__c)&&u.__c)return null==t.__e&&(t.__e=e.__e,t.__k=e.__k),u.__c(n,t);F(n,t,e,r)};var U=e.unmount;function V(n,t,e){return n&&(n.__c&&n.__c.__H&&(n.__c.__H.__.forEach(function(n){\"function\"==typeof n.__c&&n.__c()}),n.__c.__H=null),null!=(n=g({},n)).__c&&(n.__c.__P===e&&(n.__c.__P=t),n.__c.__e=!0,n.__c=null),n.__k=n.__k&&n.__k.map(function(n){return V(n,t,e)})),n}function W(n,t,e){return n&&e&&(n.__v=null,n.__k=n.__k&&n.__k.map(function(n){return W(n,t,e)}),n.__c&&n.__c.__P===t&&(n.__e&&e.appendChild(n.__e),n.__c.__e=!0,n.__c.__P=e)),n}function P(){this.__u=0,this.o=null,this.__b=null}function j(n){var t=n.__.__c;return t&&t.__a&&t.__a(n)}function z(n){var e,r,u;function o(o){if(e||(e=n()).then(function(n){r=n.default||n},function(n){u=n}),u)throw u;if(!r)throw e;return t(r,o)}return o.displayName=\"Lazy\",o.__f=!0,o}function B(){this.i=null,this.l=null}e.unmount=function(n){var t=n.__c;t&&t.__R&&t.__R(),t&&32&n.__u&&(n.type=null),U&&U(n)},(P.prototype=new n).__c=function(n,t){var e=t.__c,r=this;null==r.o&&(r.o=[]),r.o.push(e);var u=j(r.__v),o=!1,i=function(){o||(o=!0,e.__R=null,u?u(l):l())};e.__R=i;var l=function(){if(!--r.__u){if(r.state.__a){var n=r.state.__a;r.__v.__k[0]=W(n,n.__c.__P,n.__c.__O)}var t;for(r.setState({__a:r.__b=null});t=r.o.pop();)t.forceUpdate()}};r.__u++||32&t.__u||r.setState({__a:r.__b=r.__v.__k[0]}),n.then(i,i)},P.prototype.componentWillUnmount=function(){this.o=[]},P.prototype.render=function(n,e){if(this.__b){if(this.__v.__k){var r=document.createElement(\"div\"),o=this.__v.__k[0].__c;this.__v.__k[0]=V(this.__b,r,o.__O=o.__P)}this.__b=null}var i=e.__a&&t(u,null,n.fallback);return i&&(i.__u&=-33),[t(u,null,e.__a?null:n.children),i]};var H=function(n,t,e){if(++e[1]===e[0]&&n.l.delete(t),n.props.revealOrder&&(\"t\"!==n.props.revealOrder[0]||!n.l.size))for(e=n.i;e;){for(;e.length>3;)e.pop()();if(e[1]<e[0])break;n.i=e=e[2]}};function Z(n){return this.getChildContext=function(){return n.context},n.children}function Y(n){var e=this,r=n.h;if(e.componentWillUnmount=function(){o(null,e.v),e.v=null,e.h=null},e.h&&e.h!==r&&e.componentWillUnmount(),!e.v){for(var u=e.__v;null!==u&&!u.__m&&null!==u.__;)u=u.__;e.h=r,e.v={nodeType:1,parentNode:r,childNodes:[],__k:{__m:u.__m},contains:function(){return!0},insertBefore:function(n,t){this.childNodes.push(n),e.h.insertBefore(n,t)},removeChild:function(n){this.childNodes.splice(this.childNodes.indexOf(n)>>>1,1),e.h.removeChild(n)}}}o(t(Z,{context:e.context},n.__v),e.v)}function $(n,e){var r=t(Y,{__v:n,h:e});return r.containerInfo=e,r}(B.prototype=new n).__a=function(n){var t=this,e=j(t.__v),r=t.l.get(n);return r[0]++,function(u){var o=function(){t.props.revealOrder?(r.push(u),H(t,n,r)):u()};e?e(o):o()}},B.prototype.render=function(n){this.i=null,this.l=new Map;var t=r(n.children);n.revealOrder&&\"b\"===n.revealOrder[0]&&t.reverse();for(var e=t.length;e--;)this.l.set(t[e],this.i=[1,0,this.i]);return n.children},B.prototype.componentDidUpdate=B.prototype.componentDidMount=function(){var n=this;this.l.forEach(function(t,e){H(n,e,t)})};var q=\"undefined\"!=typeof Symbol&&Symbol.for&&Symbol.for(\"react.element\")||60103,G=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,J=/^on(Ani|Tra|Tou|BeforeInp|Compo)/,K=/[A-Z0-9]/g,Q=\"undefined\"!=typeof document,X=function(n){return(\"undefined\"!=typeof Symbol&&\"symbol\"==typeof Symbol()?/fil|che|rad/:/fil|che|ra/).test(n)};function nn(n,t,e){return null==t.__k&&(t.textContent=\"\"),o(n,t),\"function\"==typeof e&&e(),n?n.__c:null}function tn(n,t,e){return i(n,t),\"function\"==typeof e&&e(),n?n.__c:null}n.prototype.isReactComponent={},[\"componentWillMount\",\"componentWillReceiveProps\",\"componentWillUpdate\"].forEach(function(t){Object.defineProperty(n.prototype,t,{configurable:!0,get:function(){return this[\"UNSAFE_\"+t]},set:function(n){Object.defineProperty(this,t,{configurable:!0,writable:!0,value:n})}})});var en=e.event;function rn(){}function un(){return this.cancelBubble}function on(){return this.defaultPrevented}e.event=function(n){return en&&(n=en(n)),n.persist=rn,n.isPropagationStopped=un,n.isDefaultPrevented=on,n.nativeEvent=n};var ln,cn={enumerable:!1,configurable:!0,get:function(){return this.class}},fn=e.vnode;e.vnode=function(n){\"string\"==typeof n.type&&function(n){var t=n.props,e=n.type,u={},o=-1===e.indexOf(\"-\");for(var i in t){var l=t[i];if(!(\"value\"===i&&\"defaultValue\"in t&&null==l||Q&&\"children\"===i&&\"noscript\"===e||\"class\"===i||\"className\"===i)){var c=i.toLowerCase();\"defaultValue\"===i&&\"value\"in t&&null==t.value?i=\"value\":\"download\"===i&&!0===l?l=\"\":\"translate\"===c&&\"no\"===l?l=!1:\"o\"===c[0]&&\"n\"===c[1]?\"ondoubleclick\"===c?i=\"ondblclick\":\"onchange\"!==c||\"input\"!==e&&\"textarea\"!==e||X(t.type)?\"onfocus\"===c?i=\"onfocusin\":\"onblur\"===c?i=\"onfocusout\":J.test(i)&&(i=c):c=i=\"oninput\":o&&G.test(i)?i=i.replace(K,\"-$&\").toLowerCase():null===l&&(l=void 0),\"oninput\"===c&&u[i=c]&&(i=\"oninputCapture\"),u[i]=l}}\"select\"==e&&u.multiple&&Array.isArray(u.value)&&(u.value=r(t.children).forEach(function(n){n.props.selected=-1!=u.value.indexOf(n.props.value)})),\"select\"==e&&null!=u.defaultValue&&(u.value=r(t.children).forEach(function(n){n.props.selected=u.multiple?-1!=u.defaultValue.indexOf(n.props.value):u.defaultValue==n.props.value})),t.class&&!t.className?(u.class=t.class,Object.defineProperty(u,\"className\",cn)):(t.className&&!t.class||t.class&&t.className)&&(u.class=u.className=t.className),n.props=u}(n),n.$$typeof=q,fn&&fn(n)};var an=e.__r;e.__r=function(n){an&&an(n),ln=n.__c};var sn=e.diffed;e.diffed=function(n){sn&&sn(n);var t=n.props,e=n.__e;null!=e&&\"textarea\"===n.type&&\"value\"in t&&t.value!==e.value&&(e.value=null==t.value?\"\":t.value),ln=null};var hn={ReactCurrentDispatcher:{current:{readContext:function(n){return ln.__n[n.__c].props.value},useCallback:v,useContext:d,useDebugValue:m,useDeferredValue:w,useEffect:h,useId:p,useImperativeHandle:y,useInsertionEffect:I,useLayoutEffect:s,useMemo:_,useReducer:b,useRef:S,useState:a,useSyncExternalStore:C,useTransition:k}}},vn=\"18.3.1\";function dn(n){return t.bind(null,n)}function mn(n){return!!n&&n.$$typeof===q}function pn(n){return mn(n)&&n.type===u}function yn(n){return!!n&&!!n.displayName&&(\"string\"==typeof n.displayName||n.displayName instanceof String)&&n.displayName.startsWith(\"Memo(\")}function _n(n){return mn(n)?f.apply(null,arguments):n}function bn(n){return!!n.__k&&(o(null,n),!0)}function Sn(n){return n&&(n.base||1===n.nodeType&&n)||null}var gn=function(n,t){return n(t)},En=function(n,t){return n(t)},Cn=u,xn=mn,Rn={useState:a,useId:p,useReducer:b,useEffect:h,useLayoutEffect:s,useInsertionEffect:I,useTransition:k,useDeferredValue:w,useSyncExternalStore:C,startTransition:R,useRef:S,useImperativeHandle:y,useMemo:_,useCallback:v,useContext:d,useDebugValue:m,version:\"18.3.1\",Children:O,render:nn,hydrate:tn,unmountComponentAtNode:bn,createPortal:$,createElement:t,createContext:l,createFactory:dn,cloneElement:_n,createRef:c,Fragment:u,isValidElement:mn,isElement:xn,isFragment:pn,isMemo:yn,findDOMNode:Sn,Component:n,PureComponent:N,memo:M,forwardRef:D,flushSync:En,unstable_batchedUpdates:gn,StrictMode:Cn,Suspense:P,SuspenseList:B,lazy:z,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:hn};export{O as Children,N as PureComponent,Cn as StrictMode,P as Suspense,B as SuspenseList,hn as __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,_n as cloneElement,dn as createFactory,$ as createPortal,Rn as default,Sn as findDOMNode,En as flushSync,D as forwardRef,tn as hydrate,xn as isElement,pn as isFragment,yn as isMemo,mn as isValidElement,z as lazy,M as memo,nn as render,R as startTransition,bn as unmountComponentAtNode,gn as unstable_batchedUpdates,w as useDeferredValue,I as useInsertionEffect,C as useSyncExternalStore,k as useTransition,vn as version};\n//# sourceMappingURL=compat.module.js.map\n","import{options as r,Fragment as e}from\"preact\";export{Fragment}from\"preact\";var t=/[\"&<]/;function n(r){if(0===r.length||!1===t.test(r))return r;for(var e=0,n=0,o=\"\",f=\"\";n<r.length;n++){switch(r.charCodeAt(n)){case 34:f=\"&quot;\";break;case 38:f=\"&amp;\";break;case 60:f=\"&lt;\";break;default:continue}n!==e&&(o+=r.slice(e,n)),o+=f,e=n+1}return n!==e&&(o+=r.slice(e,n)),o}var o=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,f=0,i=Array.isArray;function u(e,t,n,o,i,u){t||(t={});var a,c,p=t;if(\"ref\"in p)for(c in p={},t)\"ref\"==c?a=t[c]:p[c]=t[c];var l={type:e,props:p,key:n,ref:a,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--f,__i:-1,__u:0,__source:i,__self:u};if(\"function\"==typeof e&&(a=e.defaultProps))for(c in a)void 0===p[c]&&(p[c]=a[c]);return r.vnode&&r.vnode(l),l}function a(r){var t=u(e,{tpl:r,exprs:[].slice.call(arguments,1)});return t.key=t.__v,t}var c={},p=/[A-Z]/g;function l(e,t){if(r.attr){var f=r.attr(e,t);if(\"string\"==typeof f)return f}if(t=function(r){return null!==r&&\"object\"==typeof r&&\"function\"==typeof r.valueOf?r.valueOf():r}(t),\"ref\"===e||\"key\"===e)return\"\";if(\"style\"===e&&\"object\"==typeof t){var i=\"\";for(var u in t){var a=t[u];if(null!=a&&\"\"!==a){var l=\"-\"==u[0]?u:c[u]||(c[u]=u.replace(p,\"-$&\").toLowerCase()),s=\";\";\"number\"!=typeof a||l.startsWith(\"--\")||o.test(l)||(s=\"px;\"),i=i+l+\":\"+a+s}}return e+'=\"'+n(i)+'\"'}return null==t||!1===t||\"function\"==typeof t||\"object\"==typeof t?\"\":!0===t?e:e+'=\"'+n(\"\"+t)+'\"'}function s(r){if(null==r||\"boolean\"==typeof r||\"function\"==typeof r)return null;if(\"object\"==typeof r){if(void 0===r.constructor)return r;if(i(r)){for(var e=0;e<r.length;e++)r[e]=s(r[e]);return r}}return n(\"\"+r)}export{u as jsx,l as jsxAttr,u as jsxDEV,s as jsxEscape,a as jsxTemplate,u as jsxs};\n//# sourceMappingURL=jsxRuntime.module.js.map\n","import {\n ComponentChildren,\n FunctionComponent,\n render,\n SVGAttributes,\n} from \"preact\";\n\ntype Direction = \"up\" | \"down\" | \"left\" | \"right\";\n\ntype Props = {\n name: IconName;\n size: number;\n direction?: Direction;\n className?: string;\n};\n\nconst Icon: FunctionComponent<SVGAttributes<SVGSVGElement> & Props> = (\n props,\n) => {\n const { name, size, direction } = props;\n\n let svgTransform = undefined;\n switch (direction) {\n case \"left\":\n svgTransform = \"rotate(0 12 12)\";\n break;\n case \"right\":\n svgTransform = \"rotate(180 12 12)\";\n break;\n case \"up\":\n svgTransform = \"rotate(90 12 12)\";\n break;\n case \"down\":\n svgTransform = \"rotate(-90 12 12)\";\n break;\n }\n\n return (\n <svg\n className={`xendit-icon ${props.className ?? \"\"}`}\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"none\"\n >\n {/* TODO: figure out why this doens't work. Maybe because of the self signed cert? */}\n {/* <use href={`#xendit-icon-${name}`} transform={svgTransform} /> */}\n <g transform={svgTransform}>\n {iconData.find((icon) => icon.name === name)?.node ?? null}\n </g>\n </svg>\n );\n};\n\nfunction makeIcon<T extends string>(\n id: T,\n children: ComponentChildren,\n scale: number,\n): { name: T; node: ComponentChildren } {\n return {\n name: id,\n node: (\n <g\n id={`xendit-icon-${id}`}\n transform={`scale(${1 / scale} ${1 / scale})`}\n >\n {children}\n </g>\n ),\n };\n}\n\nconst iconData = [\n makeIcon(\n \"chevron\",\n <path\n d=\"M15 19.5L7.5 12L15 4.5\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />,\n 24 / 24,\n ),\n makeIcon(\n \"check\",\n <path\n d=\"M13.5 4.5L6.5 11.5L3 8\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />,\n 16 / 24,\n ),\n makeIcon(\n \"x\",\n <>\n <path\n d=\"M18.75 5.25L5.25 18.75\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M18.75 18.75L5.25 5.25\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </>,\n 24 / 24,\n ),\n makeIcon(\n \"card\",\n <path\n fill=\"currentColor\"\n d=\"M17.5 3.75H2.5C2.16848 3.75 1.85054 3.8817 1.61612 4.11612C1.3817 4.35054 1.25 4.66848 1.25 5V15C1.25 15.3315 1.3817 15.6495 1.61612 15.8839C1.85054 16.1183 2.16848 16.25 2.5 16.25H17.5C17.8315 16.25 18.1495 16.1183 18.3839 15.8839C18.6183 15.6495 18.75 15.3315 18.75 15V5C18.75 4.66848 18.6183 4.35054 18.3839 4.11612C18.1495 3.8817 17.8315 3.75 17.5 3.75ZM10.625 13.75H9.375C9.20924 13.75 9.05027 13.6842 8.93306 13.5669C8.81585 13.4497 8.75 13.2908 8.75 13.125C8.75 12.9592 8.81585 12.8003 8.93306 12.6831C9.05027 12.5658 9.20924 12.5 9.375 12.5H10.625C10.7908 12.5 10.9497 12.5658 11.0669 12.6831C11.1842 12.8003 11.25 12.9592 11.25 13.125C11.25 13.2908 11.1842 13.4497 11.0669 13.5669C10.9497 13.6842 10.7908 13.75 10.625 13.75ZM15.625 13.75H13.125C12.9592 13.75 12.8003 13.6842 12.6831 13.5669C12.5658 13.4497 12.5 13.2908 12.5 13.125C12.5 12.9592 12.5658 12.8003 12.6831 12.6831C12.8003 12.5658 12.9592 12.5 13.125 12.5H15.625C15.7908 12.5 15.9497 12.5658 16.0669 12.6831C16.1842 12.8003 16.25 12.9592 16.25 13.125C16.25 13.2908 16.1842 13.4497 16.0669 13.5669C15.9497 13.6842 15.7908 13.75 15.625 13.75ZM2.5 6.875V5H17.5V6.875H2.5Z\"\n />,\n 20 / 24,\n ),\n makeIcon(\n \"dummy\",\n <path\n fill=\"currentColor\"\n d=\"M17.5 11.875V15C17.5 15.3315 17.3683 15.6495 17.1339 15.8839C16.8995 16.1183 16.5815 16.25 16.25 16.25H3.75C3.41848 16.25 3.10054 16.1183 2.86612 15.8839C2.6317 15.6495 2.5 15.3315 2.5 15V11.875C2.5 11.5435 2.6317 11.2255 2.86612 10.9911C3.10054 10.7567 3.41848 10.625 3.75 10.625H16.25C16.5815 10.625 16.8995 10.7567 17.1339 10.9911C17.3683 11.2255 17.5 11.5435 17.5 11.875ZM16.25 3.75H3.75C3.41848 3.75 3.10054 3.8817 2.86612 4.11612C2.6317 4.35054 2.5 4.66848 2.5 5V8.125C2.5 8.45652 2.6317 8.77446 2.86612 9.00888C3.10054 9.2433 3.41848 9.375 3.75 9.375H16.25C16.5815 9.375 16.8995 9.2433 17.1339 9.00888C17.3683 8.77446 17.5 8.45652 17.5 8.125V5C17.5 4.66848 17.3683 4.35054 17.1339 4.11612C16.8995 3.8817 16.5815 3.75 16.25 3.75Z\"\n />,\n 20 / 24,\n ),\n];\n\ntype IconName = (typeof iconData)[number][\"name\"];\n\nexport function createIconSet() {\n const iconSet = document.createElement(\"svg\");\n iconSet.id = \"xendit-icon-set\";\n iconSet.style.display = \"none\";\n render(<defs>{iconData.map((icon) => icon.node)}</defs>, iconSet);\n document.head.appendChild(iconSet);\n}\n\nexport default Icon;\n","export const internal = Symbol(\"xendit-internal\");\n","import { ComponentChildren, FunctionComponent } from \"preact\";\n\ninterface Props {\n children: ComponentChildren;\n}\n\n/**\n * @example\n * <Accordion>\n * <AccordionItem>Content</AccordionItem>\n * <AccordionItem>Content</AccordionItem>\n * </Accordion>\n */\nexport const Accordion: FunctionComponent<Props> = (props) => {\n return <div class=\"xendit-accordion\">{props.children}</div>;\n};\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import { useCallback } from \"preact/hooks\";\nimport Icon from \"./icon\";\nimport classNames from \"classnames\";\nimport {\n ComponentChildren,\n FunctionComponent,\n TargetedKeyboardEvent,\n} from \"preact\";\n\ninterface Props {\n id: number;\n title: string;\n subtitle?: string;\n disabled?: boolean;\n open: boolean;\n onClick: (id: number) => void;\n children: ComponentChildren;\n}\n\nexport const AccordionItem: FunctionComponent<Props> = (props) => {\n const { id, title, subtitle, disabled, open, onClick, children } = props;\n\n const chevronDirection = open ? \"up\" : \"down\";\n\n const toggleOpen = useCallback(() => {\n if (disabled) {\n return;\n }\n onClick(id);\n }, [disabled, onClick, id]);\n\n const handleKeyPress = useCallback(\n (event: TargetedKeyboardEvent<HTMLDivElement>) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n toggleOpen();\n event.preventDefault();\n }\n },\n [toggleOpen],\n );\n\n const handleClick = useCallback(() => {\n toggleOpen();\n }, [toggleOpen]);\n\n return (\n <div\n className={classNames(\n \"xendit-accordion-item\",\n disabled ? \"xendit-accordion-item-disabled\" : \"\",\n open ? \"xendit-accordion-item-open\" : \"xendit-accordion-item-closed\",\n )}\n >\n <div\n className=\"xendit-accordion-item-header\"\n onClick={handleClick}\n onKeyDown={handleKeyPress}\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n >\n <Icon\n className=\"xendit-accordion-item-header-icon\"\n name=\"dummy\"\n size={24}\n />\n <div className=\"xendit-accordion-item-header-title xendit-text-16 xendit-text-bold\">\n {title}\n {subtitle ? (\n <div className=\"xendit-accordion-item-header-subtitle xendit-text-14\">\n {subtitle}\n </div>\n ) : null}\n </div>\n <Icon\n className=\"xendit-accordion-item-chevron\"\n name=\"chevron\"\n size={24}\n direction={chevronDirection}\n />\n </div>\n <div className=\"xendit-accordion-item-content\" inert={!open}>\n <div className=\"xendit-accordion-item-padding\">{children}</div>\n </div>\n </div>\n );\n};\n","import { WorldState, XenditComponents } from \"../public-sdk\";\nimport { BffSession } from \"../backend-types/session\";\nimport { BffBusiness } from \"../backend-types/business\";\nimport { BffCustomer } from \"../backend-types/customer\";\nimport {\n BffChannel,\n BffChannelUiGroup,\n ChannelProperties,\n} from \"../backend-types/channel\";\nimport { internal } from \"../internal\";\nimport { BffCardDetails } from \"../backend-types/card-details\";\nimport { ComponentChildren, createContext, FunctionComponent } from \"preact\";\nimport { useContext } from \"preact/hooks\";\n\n// Create contexts\nconst SessionContext = createContext<BffSession | null>(null);\nSessionContext.displayName = \"SessionContext\";\n\nconst BusinessContext = createContext<BffBusiness | null>(null);\nBusinessContext.displayName = \"BusinessContext\";\n\nconst CustomerContext = createContext<BffCustomer | null>(null);\nCustomerContext.displayName = \"CustomerContext\";\n\nconst ChannelsContext = createContext<BffChannel[] | null>(null);\nChannelsContext.displayName = \"ChannelsContext\";\n\nconst ChannelUiGroupsContext = createContext<BffChannelUiGroup[] | null>(null);\nChannelUiGroupsContext.displayName = \"ChannelUiGroupsContext\";\n\nconst CardDetailsContext = createContext<{\n cardNumber: string | null;\n details: BffCardDetails | null;\n}>({ cardNumber: null, details: null });\nCardDetailsContext.displayName = \"CardDetailsContext\";\n\nconst SdkContext = createContext<XenditComponents | null>(null);\nSdkContext.displayName = \"SdkContext\";\n\nconst CurrentChannelContext = createContext<{\n channel: BffChannel | null;\n channelProperties: ChannelProperties | null;\n}>({\n channel: null,\n channelProperties: null,\n});\nCurrentChannelContext.displayName = \"CurrentChannelContext\";\n\n// Custom hooks for consuming contexts\nexport const useSession = () => {\n const context = useContext(SessionContext);\n if (context === null) {\n throw new Error(\"useSession must be used within a XenditSessionProvider\");\n }\n return context;\n};\n\nexport const useBusiness = () => {\n const context = useContext(BusinessContext);\n if (context === null) {\n throw new Error(\"useBusiness must be used within a XenditSessionProvider\");\n }\n return context;\n};\n\nexport const useCustomer = () => {\n const context = useContext(CustomerContext);\n if (context === null) {\n throw new Error(\"useCustomer must be used within a XenditSessionProvider\");\n }\n return context;\n};\n\nexport const useChannels = () => {\n const context = useContext(ChannelsContext);\n if (context === null) {\n throw new Error(\"useChannels must be used within a XenditSessionProvider\");\n }\n return context;\n};\n\nexport const useChannelUiGroups = () => {\n const context = useContext(ChannelUiGroupsContext);\n if (context === null) {\n throw new Error(\n \"useChannelUiGroups must be used within a XenditSessionProvider\",\n );\n }\n return context;\n};\n\nexport const useCardDetails = () => {\n const context = useContext(CardDetailsContext);\n return context;\n};\n\nexport const useSdk = () => {\n const context = useContext(SdkContext);\n if (context === null) {\n throw new Error(\"useSdk must be used within a XenditSessionProvider\");\n }\n return context;\n};\n\nexport const useCurrentChannel = () => {\n return useContext(CurrentChannelContext);\n};\n\ninterface XenditSessionProviderProps {\n children: ComponentChildren;\n data: WorldState;\n sdk: XenditComponents;\n}\n\nexport const XenditSessionProvider: FunctionComponent<\n XenditSessionProviderProps\n> = ({ children, data, sdk }) => {\n const { session, business, customer, channels, channelUiGroups } = data;\n\n const channel = sdk.getCurrentChannel()?.[internal]?.[0] ?? null;\n const channelProperties =\n sdk[internal].liveComponents.paymentChannels.get(\n sdk.getCurrentChannel()?.[internal]?.[0]?.channel_code ?? \"\",\n )?.channelProperties ?? null;\n\n return (\n <SdkContext.Provider value={sdk}>\n <CurrentChannelContext.Provider\n value={{\n channel,\n channelProperties,\n }}\n >\n <SessionContext.Provider value={session}>\n <BusinessContext.Provider value={business}>\n <CustomerContext.Provider value={customer}>\n <ChannelsContext.Provider value={channels}>\n <ChannelUiGroupsContext.Provider value={channelUiGroups}>\n <CardDetailsContext.Provider value={data.cardDetails}>\n {children}\n </CardDetailsContext.Provider>\n </ChannelUiGroupsContext.Provider>\n </ChannelsContext.Provider>\n </CustomerContext.Provider>\n </BusinessContext.Provider>\n </SessionContext.Provider>\n </CurrentChannelContext.Provider>\n </SdkContext.Provider>\n );\n};\n","import {\n BffChannel,\n ChannelFormField,\n ChannelProperties,\n} from \"./backend-types/channel\";\nimport { useLayoutEffect, useRef } from \"preact/hooks\";\nimport { BffAction } from \"./backend-types/payment-entity\";\nimport { BffSession } from \"./backend-types/session\";\nimport { internal } from \"./internal\";\n\nexport const MOCK_NETWORK_DELAY_MS = 300;\n\nexport function assert<T>(arg: unknown): asserts arg is NonNullable<T> {\n if (arg === null || arg === undefined) {\n throw new Error(\n \"Assertion failed: argument is null or undefined; this is a bug, please contact support.\",\n );\n }\n}\n\nexport function assertEquals<T>(a: unknown, b: T): asserts a is T {\n if (a !== b) {\n throw new Error(`Assertion failed; this is a bug, please contact support.`);\n }\n}\n\nexport function assertNotEquals<const A, const B extends A>(\n a: A,\n b: B,\n): asserts a is Exclude<A, B> {\n if (a === b) {\n throw new Error(`Assertion failed; this is a bug, please contact support.`);\n }\n}\n\nexport const SLEEP_MULTIPLIER = process.env.NODE_ENV === \"test\" ? 0.01 : 1;\n\nexport function sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms * SLEEP_MULTIPLIER));\n}\n\nexport class AbortError extends Error {\n constructor() {\n super(\"AbortError\");\n this.name = \"AbortError\";\n }\n}\n\nexport function isAbortError(error: unknown): error is AbortError {\n return error instanceof AbortError && error.name === \"AbortError\";\n}\n\n/**\n * A sleep function that can be cancelled via an AbortSignal.\n */\nexport function cancellableSleep(\n ms: number,\n signal: AbortSignal,\n): Promise<void> {\n return new Promise((resolve, reject) => {\n function onAbort() {\n signal.removeEventListener(\"abort\", onAbort);\n clearTimeout(timeoutId);\n reject(new AbortError());\n }\n\n const timeoutId = setTimeout(() => {\n signal.removeEventListener(\"abort\", onAbort);\n resolve();\n }, ms * SLEEP_MULTIPLIER);\n\n // already aborted\n if (signal.aborted) {\n onAbort();\n return;\n }\n\n // abort on signal\n signal.addEventListener(\"abort\", onAbort);\n });\n}\n\nexport function camelCaseToKebabCase(str: string): string {\n return str.replace(/[A-Z]/gm, (match, offset) => {\n if (offset === 0) return match.toLowerCase();\n return `-${match.toLowerCase()}`;\n });\n}\n\n/**\n * Creates an async iterator with exponential delay. Yields the attempt number.\n *\n * Use with async for (const attempt of retryLoop(100, 5)).\n *\n * Delay is mult * base ** attempt\n * e.g. mult = 100ms, tries = 5, base = 2:\n * 100ms, 200ms, 400ms, 800ms, 1600ms\n *\n * Doesn't wait in tests, unless waitInTests=true.\n */\nexport async function* retryLoop(mult: number, tries: number, base = 2) {\n // first attempt always instant\n yield 0;\n\n let sleepTime = mult;\n\n for (let i = 1; i < tries; i++) {\n sleepTime *= base;\n await sleep(sleepTime);\n yield i;\n }\n}\n\nexport function redirectCanBeHandledInIframe(action: BffAction): boolean {\n return true;\n}\n\nexport function pickAction(actions: BffAction[]): BffAction {\n return actions[0];\n}\n\nexport const MOCK_HOST_ID = \"mock\";\n\nconst hosts: Record<string, string | undefined> = {\n pl: process.env.XENDIT_CHECKOUT_UI_GATEWAY_PROD_LIVE,\n pd: process.env.XENDIT_CHECKOUT_UI_GATEWAY_PROD_DEV,\n sl: process.env.XENDIT_CHECKOUT_UI_GATEWAY_STAGING_LIVE,\n sd: process.env.XENDIT_CHECKOUT_UI_GATEWAY_STAGING_DEV,\n};\n\nexport function hostFromHostId(hostId: string): string | null {\n return hosts[hostId] ?? null;\n}\n\nexport type ParsedSdkKey = {\n sessionAuthKey: string;\n hostId: string;\n publicKey: string;\n signature: string;\n};\n\nexport function parseSdkKey(componentsSdkKey: string): ParsedSdkKey {\n if (!componentsSdkKey) {\n throw new Error(\n \"The componentsSdkKey option is missing; check the constructor parameters.\",\n );\n }\n const parts = componentsSdkKey.split(\"-\");\n if (\n parts.length < 4 ||\n (parts[2] !== MOCK_HOST_ID && hostFromHostId(parts[2]) === null)\n ) {\n throw new Error(\n \"The componentsSdkKey option has the wrong format. Ensure you pass the value returned from the `components_sdk_key` property of the `POST /sessions` response.\",\n );\n }\n\n return {\n sessionAuthKey: [parts[0], parts[1]].join(\"-\"),\n hostId: parts[2],\n publicKey: parts[3],\n signature: parts[4],\n };\n}\n\n/**\n * Return a copy of original, with properties from updates applied on top, except undefined properties.\n */\nexport function mergeIgnoringUndefined<T>(\n original: T,\n updates: Partial<{ [K in keyof T]: T[K] | undefined }>,\n): T {\n const result = { ...original };\n for (const key of Object.keys(updates) as (keyof T)[]) {\n const value = updates[key];\n if (value !== undefined) {\n result[key] = value;\n }\n }\n return result;\n}\n\nexport function usePrevious<T>(value: T) {\n const ref = useRef<T>(); // Create a ref to store the previous value\n\n useLayoutEffect(() => {\n ref.current = value; // Update the ref's current value after each render\n });\n\n // eslint-disable-next-line react-hooks/refs\n return ref.current; // Return the value stored in the ref (which is the previous value)\n}\n\n/**\n * Get the form field name for a given channel form field.\n * @param field The channel form field to get the name for.\n * @returns The form field name.\n */\nexport function formFieldName(field: ChannelFormField): string {\n let id: string;\n if (typeof field.channel_property === \"string\") {\n id = field.channel_property;\n } else {\n const keys = Object.values(field.channel_property);\n id = keys.join(\"__\");\n }\n return id;\n}\n\nexport function canBeSimulated(channel: BffChannel): boolean {\n switch (channel.pm_type) {\n case \"QR_CODE\":\n case \"VIRTUAL_ACCOUNT\":\n case \"OVER_THE_COUNTER\":\n return true;\n default:\n return false;\n }\n}\n\nexport function errorToString(error: unknown): string {\n if (error instanceof Error) {\n return error.stack ?? error.message;\n }\n if (typeof error === \"string\") {\n return error;\n }\n try {\n return `Unknown error: ${JSON.stringify(error)}`;\n } catch {\n return \"Unknown error\";\n }\n}\n\n/**\n * Modifies the input object, deleting properties with undefined values, excluding symbol properties or getters.\n */\nexport function removeUndefinedPropertiesFromObject<T extends object>(\n object: T,\n): T {\n for (const key of Object.keys(object) as (keyof T)[]) {\n if (typeof key === \"symbol\") {\n continue;\n }\n const descriptor = Object.getOwnPropertyDescriptor(object, key);\n if (descriptor === undefined) {\n continue;\n }\n if (typeof descriptor.get === \"function\") {\n continue;\n }\n if (descriptor.value === undefined) {\n delete object[key];\n }\n }\n return object;\n}\n\nexport function getValueFromChannelProperty(\n channelProperty: string | string[],\n channelProperties: ChannelProperties | null,\n) {\n let str = channelProperty;\n if (!channelProperties) {\n return undefined;\n }\n if (Array.isArray(str)) {\n throw new Error(\n \"Getting values from channel property arrays is not supported.\",\n );\n }\n\n let cursor: ChannelProperties[string] = channelProperties;\n while (true) {\n if (!cursor || typeof cursor !== \"object\" || Array.isArray(cursor)) {\n return undefined;\n }\n const dotIndex = str.indexOf(\".\");\n if (dotIndex === -1) {\n return cursor ? cursor[str] : undefined;\n } else {\n const key = str.slice(0, dotIndex);\n cursor = cursor ? cursor[key] : undefined;\n str = str.slice(dotIndex + 1);\n }\n }\n}\n\nexport function getCardNunberFromChannelProperties(\n channelProperties: ChannelProperties | null,\n) {\n const cardNumber = getValueFromChannelProperty(\n \"card_details.card_number\",\n channelProperties,\n );\n if (typeof cardNumber !== \"string\") {\n return null;\n }\n return cardNumber;\n}\n\nconst objectIdMap = new WeakMap<object, number>();\nlet objectIdCounter = 1;\nexport function objectId(object: object): string {\n if (!objectIdMap.has(object)) {\n objectIdMap.set(object, objectIdCounter++);\n }\n return objectIdMap.get(object)!.toString();\n}\n\n/**\n * useId but doesn't sometimes return the same id in different components\n */\nexport function useIdSafe(): string {\n const id = useRef(Math.random().toString(36).substring(2, 10));\n return `xendit-id-${id.current}`;\n}\n\nexport function resolvePairedChannel(\n channels: BffChannel[],\n savePaymentMethod: boolean,\n): BffChannel {\n assert(channels.length > 0);\n assert(channels.length <= 2);\n\n if (channels.length === 2) {\n if (savePaymentMethod) {\n assert(channels[1].allow_save === true);\n return channels[1];\n } else {\n assert(channels[0].allow_save === false);\n return channels[0];\n }\n } else {\n return channels[0];\n }\n}\n\nexport function satisfiesMinMax(\n session: Pick<BffSession, \"amount\" | \"session_type\">,\n channel: BffChannel,\n): boolean {\n if (session.session_type !== \"PAY\") {\n return true; // only pay sessions have min/max\n }\n\n const amount = session.amount;\n const min = channel.min_amount ?? 0;\n const max = channel.max_amount ?? Number.MAX_VALUE;\n if (amount < min || amount > max) {\n return false;\n }\n\n return true;\n}\n\nexport function lockDownInteralProperty(obj: { [internal]: unknown }) {\n // make [internal] non-enumerable\n Object.defineProperty(obj, internal, {\n enumerable: false,\n writable: false,\n configurable: false,\n value: obj[internal],\n });\n}\n\nconst RELEASED_CHANNELS: Record<string, boolean> = {\n CARDS: true,\n};\n\n// filter out channels not supported by this SDK version\nexport function removeUnreleasedChannels(channels: BffChannel[]): BffChannel[] {\n return channels.filter((channel) => RELEASED_CHANNELS[channel.channel_code]);\n}\n","import { ComponentChildren, TargetedMouseEvent } from \"preact\";\nimport {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"preact/hooks\";\nimport Icon from \"./icon\";\nimport { useIdSafe } from \"../utils\";\n\nexport type DropdownOption = {\n leadingAsset?: ComponentChildren; // e.g. flag/icon URL\n title: string; // primary line\n shortTitle?: string;\n description?: string; // secondary line\n disabled?: boolean;\n value: string;\n};\n\ntype FilteredOption = {\n option: DropdownOption;\n originalIndex: number;\n};\n\nexport type DropdownProps = {\n /** Unique id for aria attributes */\n id?: string;\n\n /** Options to render */\n options: DropdownOption[];\n\n /**\n * Called when a new option is selected.\n * Receives the selected option & its index.\n */\n onChange: (option: DropdownOption, index: number) => void;\n\n /** Optional initial selection index (uncontrolled). Default: -1 (none). */\n defaultIndex?: number;\n\n /** Optional externally-controlled selection index. If set, component becomes controlled. */\n selectedIndex?: number;\n\n /** Optional label for a11y (used in aria-labelledby). */\n label?: string;\n\n /** Placeholder text when nothing selected. */\n placeholder?: string;\n\n /** Extra class on the root container. */\n className?: string;\n};\n\nexport const Dropdown = (props: DropdownProps) => {\n const {\n id: _id,\n options,\n onChange,\n defaultIndex = -1,\n selectedIndex,\n className,\n placeholder,\n } = props;\n\n const generatedId = useIdSafe();\n const id = _id || generatedId;\n\n // Controlled vs uncontrolled selection\n const isControlled = typeof selectedIndex === \"number\";\n const [internalIndex, setInternalIndex] = useState(defaultIndex);\n const currentIndex = isControlled ? (selectedIndex as number) : internalIndex;\n\n // Active item for keyboard nav (when list open)\n const [activeIndex, setActiveIndex] = useState(\n currentIndex >= 0 ? currentIndex : 0,\n );\n const [open, setOpen] = useState(false);\n const [searchQuery, setSearchQuery] = useState(\"\");\n\n const rootRef = useRef<HTMLDivElement>(null);\n const btnRef = useRef<HTMLButtonElement>(null);\n const listRef = useRef<HTMLUListElement>(null);\n const searchInputRef = useRef<HTMLInputElement>(null);\n\n // Filter options based on search query\n const filteredOptions = useMemo(() => {\n const mapToFiltered = (\n opt: DropdownOption,\n index: number,\n ): FilteredOption => ({\n option: opt,\n originalIndex: index,\n });\n\n if (!searchQuery) {\n return options.map(mapToFiltered);\n }\n\n const filtered = options.map(mapToFiltered).filter(({ option: opt }) => {\n const query = searchQuery.toLowerCase();\n return (\n opt.title.toLowerCase().includes(query) ||\n opt.description?.toLowerCase().includes(query) ||\n opt.value.toLowerCase().includes(query)\n );\n });\n\n // Show all options if no results found\n return filtered.length > 0 ? filtered : options.map(mapToFiltered);\n }, [searchQuery, options]);\n\n // Ids for ARIA wiring\n const labelId = `${id}-label`;\n const listboxId = `${id}-listbox`;\n\n const clampedActive = Math.max(\n 0,\n Math.min(filteredOptions.length - 1, activeIndex),\n );\n const activeOptionId = filteredOptions[clampedActive]\n ? `${id}-opt-${clampedActive}`\n : `${id}-opt-none`;\n\n // Close on outside click\n useEffect(() => {\n if (!open) return;\n const onDoc = (e: MouseEvent) => {\n const root = rootRef.current;\n if (!root) return;\n if (!root.contains(e.target as Node)) setOpen(false);\n };\n document.addEventListener(\"mousedown\", onDoc);\n return () => document.removeEventListener(\"mousedown\", onDoc);\n }, [open]);\n\n // Keep active in sync with current selection when opening\n useEffect(() => {\n if (!open) return;\n if (currentIndex >= 0) setActiveIndex(currentIndex);\n }, [open, currentIndex]);\n\n const scrollActiveIntoView = useCallback((el: HTMLElement | null) => {\n el?.scrollIntoView({ block: \"end\", behavior: \"instant\" });\n }, []);\n\n const commit = useCallback(\n (index: number, disabled?: boolean) => {\n if (disabled === true) return;\n const opt = options[index];\n if (!opt) return;\n if (!isControlled) setInternalIndex(index);\n onChange(opt, index);\n setOpen(false);\n btnRef.current?.focus();\n },\n [isControlled, onChange, options],\n );\n\n const openList = useCallback(() => {\n if (!open) {\n setOpen(true);\n queueMicrotask(() => searchInputRef.current?.focus());\n }\n }, [open]);\n\n const closeList = useCallback(() => {\n if (open) {\n setOpen(false);\n setSearchQuery(\"\");\n btnRef.current?.focus();\n }\n }, [open]);\n\n const onButtonKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (\n e.key === \"ArrowDown\" ||\n e.key === \"ArrowUp\" ||\n e.key === \" \" ||\n e.key === \"Enter\"\n ) {\n e.preventDefault();\n openList();\n }\n },\n [openList],\n );\n\n const onListKeyDown = useCallback(\n (e: KeyboardEvent) => {\n // Allow normal typing in search input\n const isSearchInput =\n (e.target as HTMLElement)?.id === \"dropdown-search-input\";\n\n if (e.key === \"Escape\") {\n e.preventDefault();\n closeList();\n return;\n }\n if (e.key === \"Enter\" || e.key === \" \") {\n // Allow space in search input for typing\n if (isSearchInput && e.key === \" \") {\n return;\n }\n e.preventDefault();\n const activeItem = filteredOptions[clampedActive];\n if (activeItem) {\n commit(activeItem.originalIndex, activeItem.option.disabled);\n }\n return;\n }\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n setActiveIndex((i) => Math.min(filteredOptions.length - 1, i + 1));\n return;\n }\n if (e.key === \"ArrowUp\") {\n e.preventDefault();\n setActiveIndex((i) => Math.max(0, i - 1));\n return;\n }\n if (e.key === \"Home\") {\n e.preventDefault();\n setActiveIndex(0);\n return;\n }\n if (e.key === \"End\") {\n e.preventDefault();\n setActiveIndex(filteredOptions.length - 1);\n return;\n }\n },\n [clampedActive, closeList, commit, filteredOptions],\n );\n\n const onOptionClick = useCallback(\n (event: TargetedMouseEvent<HTMLLIElement>) => {\n commit(\n Number(event.currentTarget.dataset.index),\n Boolean(event.currentTarget.dataset.disabled),\n );\n },\n [commit],\n );\n\n const selected = currentIndex >= 0 ? options[currentIndex] : undefined;\n\n return (\n <div ref={rootRef} className={`xendit-dropdown ${className ?? \"\"}`}>\n <button\n id={id}\n ref={btnRef}\n type=\"button\"\n className={selected?.leadingAsset ? \"xendit-dropdown-has-asset\" : \"\"}\n aria-controls={listboxId}\n aria-expanded={open ? \"true\" : \"false\"}\n onClick={() => (open ? closeList() : openList())}\n onKeyDown={(e) => onButtonKeyDown(e as unknown as KeyboardEvent)}\n >\n {selected?.leadingAsset ? selected.leadingAsset : null}\n\n {selected ? (\n <span className=\"xendit-dropdown-button-title xendit-text-14\">\n {selected.shortTitle ?? selected.title}\n </span>\n ) : (\n <span className=\"xendit-dropdown-button-title xendit-text-14 xendit-text-secondary\">\n {placeholder}\n </span>\n )}\n\n <Icon\n className=\"xendit-dropdown-chevron\"\n name=\"chevron\"\n size={16}\n direction={\"down\"}\n />\n </button>\n\n {open ? (\n <div className=\"xendit-dropdown-menu\" onClick={closeList}>\n <div className=\"xendit-dropdown-search\">\n <input\n ref={searchInputRef}\n id=\"dropdown-search-input\"\n placeholder={\"Search..\"}\n value={searchQuery}\n onInput={(e) => {\n setSearchQuery((e.target as HTMLInputElement).value);\n setActiveIndex(0);\n }}\n onClick={(e) => e.stopPropagation()}\n onKeyDown={onListKeyDown}\n />\n </div>\n <ul\n ref={listRef}\n id={listboxId}\n role=\"listbox\"\n tabIndex={-1}\n aria-labelledby={labelId}\n aria-activedescendant={activeOptionId}\n onKeyDown={onListKeyDown}\n >\n {filteredOptions.map(({ option: opt, originalIndex }, i) => {\n const isSelected = originalIndex === currentIndex;\n const isActive = i === clampedActive;\n return (\n <li\n key={originalIndex}\n role=\"option\"\n data-index={originalIndex}\n data-disabled={opt.disabled ? true : undefined}\n aria-disabled={opt.disabled ? true : undefined}\n aria-selected={isSelected}\n onClick={onOptionClick}\n ref={isActive ? scrollActiveIntoView : undefined}\n >\n <div\n className={`xendit-dropdown-item xendit-text-14 ${isActive ? \"is-active\" : \"\"} ${opt.leadingAsset ? \"xendit-dropdown-has-asset\" : \"\"} ${opt.disabled ? \"xendit-dropdown-item-disabled\" : \"\"}`}\n >\n {opt.leadingAsset ? opt.leadingAsset : null}\n <div className=\"xendit-dropdown-item-text xendit-text-14\">\n <span className=\"xendit-dropdown-item-title\">\n {opt.title}\n </span>\n {opt.description && (\n <span className=\"xendit-dropdown-item-description xendit-text-12\">\n {opt.description}\n </span>\n )}\n </div>\n {isSelected ? (\n <Icon\n name=\"check\"\n size={16}\n className={\"xendit-dropdown-item-selected\"}\n />\n ) : null}\n </div>\n </li>\n );\n })}\n </ul>\n </div>\n ) : null}\n </div>\n );\n};\n","import { BffChannel, BffChannelUiGroup } from \"./backend-types/channel\";\nimport { BffCustomer } from \"./backend-types/customer\";\nimport { BffSession } from \"./backend-types/session\";\nimport { internal } from \"./internal\";\nimport {\n XenditCustomer,\n XenditPaymentChannel,\n XenditPaymentChannelGroup,\n XenditSession,\n} from \"./public-data-types\";\nimport {\n assert,\n assertEquals,\n assertNotEquals,\n lockDownInteralProperty,\n removeUndefinedPropertiesFromObject,\n satisfiesMinMax,\n} from \"./utils\";\n\ntype XenditItem = NonNullable<XenditSession[\"items\"]>[number];\n\nexport function bffSessionToPublic(bffSession: BffSession): XenditSession {\n assertNotEquals(bffSession.session_type, \"AUTHORIZATION\");\n assertEquals(bffSession.mode, \"COMPONENTS\");\n\n return removeUndefinedPropertiesFromObject<XenditSession>({\n id: bffSession.payment_session_id,\n description: bffSession.description || undefined,\n sessionType: bffSession.session_type,\n mode: bffSession.mode,\n referenceId: bffSession.reference_id,\n country: bffSession.country,\n currency: bffSession.currency,\n amount: bffSession.amount,\n channelProperties: bffSession.channel_properties || undefined,\n expiresAt: new Date(bffSession.expires_at),\n locale: bffSession.locale,\n status: bffSession.status,\n\n items: bffSession.items?.map((item) => {\n return removeUndefinedPropertiesFromObject<XenditItem>({\n type: item.type,\n referenceId: item.reference_id,\n name: item.name,\n netUnitAmount: item.net_unit_amount,\n quantity: item.quantity,\n url: item.url,\n imageUrl: item.image_url,\n category: item.category,\n subcategory: item.subcategory,\n description: item.description,\n metadata: item.metadata,\n });\n }),\n });\n}\n\nexport function bffCustomerToPublic(bffCustomer: BffCustomer): XenditCustomer {\n assertEquals(bffCustomer.type, \"INDIVIDUAL\");\n assert(bffCustomer.individual_detail);\n return {\n id: bffCustomer.id,\n type: bffCustomer.type,\n email: bffCustomer.email ?? undefined,\n mobileNumber: bffCustomer.mobile_number ?? undefined,\n individualDetail: {\n givenNames: bffCustomer.individual_detail.given_names ?? undefined,\n surname: bffCustomer.individual_detail.surname ?? undefined,\n },\n };\n}\n\ntype ChannelMarshalConfig = {\n options: {\n filter?: string | string[] | RegExp;\n filterMinMax: boolean;\n };\n pairChannels: PairChannelData;\n session: Pick<BffSession, \"amount\" | \"session_type\">;\n};\n\n/**\n * Generate public channel groups list.\n */\nexport function bffUiGroupsToPublic(\n bffChannels: BffChannel[],\n bffChannelGroups: BffChannelUiGroup[],\n marshalConfig: ChannelMarshalConfig,\n): XenditPaymentChannelGroup[] {\n const groupsByGroupId = makeGroupsByGroupId(bffChannelGroups);\n const channelsByGroupId = makeChannelsByGroupId(bffChannels, marshalConfig);\n return bffChannelGroups\n .filter((group) => channelsByGroupId[group.id]?.length)\n .map((group) => {\n return bffUiGroupToPublic(\n group,\n channelsByGroupId,\n groupsByGroupId,\n marshalConfig,\n );\n });\n}\n\n/**\n * Generate one public channel group.\n */\nexport function bffUiGroupToPublic(\n bffChannelGroup: BffChannelUiGroup,\n channelsByGroupId: Record<string, BffChannel[]>,\n groupsByGroupId: Record<string, BffChannelUiGroup>,\n marshalConfig: ChannelMarshalConfig,\n) {\n const group = removeUndefinedPropertiesFromObject<XenditPaymentChannelGroup>({\n groupId: bffChannelGroup.id,\n label: bffChannelGroup.label,\n get channels() {\n return (channelsByGroupId[bffChannelGroup.id] || []).map((channel) => {\n return bffChannelToPublic(\n channel,\n channelsByGroupId,\n groupsByGroupId,\n marshalConfig,\n );\n });\n },\n [internal]: bffChannelGroup,\n });\n\n lockDownInteralProperty(group);\n\n return group;\n}\n\n/**\n * Generate one public channel, without group data.\n */\nexport function singleBffChannelToPublic(\n bffChannel: BffChannel,\n marshalConfig: ChannelMarshalConfig,\n): XenditPaymentChannel {\n return bffChannelToPublic(bffChannel, {}, {}, marshalConfig);\n}\n\n/**\n * Generate one public channel.\n */\nexport function bffChannelToPublic(\n bffChannel: BffChannel,\n bffChannelsByGroupId: Record<string, BffChannel[]>,\n bffGroupsByGroupId: Record<string, BffChannelUiGroup>,\n marshalConfig: ChannelMarshalConfig,\n): XenditPaymentChannel {\n assert(!marshalConfig.pairChannels.paired[bffChannel.channel_code]);\n\n const channel = removeUndefinedPropertiesFromObject<XenditPaymentChannel>({\n channelCode:\n marshalConfig.pairChannels.pairs[bffChannel.channel_code]?.map(\n (ch) => ch.channel_code,\n ) ?? bffChannel.channel_code,\n brandName: bffChannel.brand_name,\n brandColor: bffChannel.brand_color,\n brandLogoUrl: bffChannel.brand_logo_url,\n get uiGroup() {\n if (!bffGroupsByGroupId[bffChannel.ui_group]) {\n throw new Error(\"UI group not found\");\n }\n return bffUiGroupToPublic(\n bffGroupsByGroupId[bffChannel.ui_group],\n bffChannelsByGroupId,\n bffGroupsByGroupId,\n marshalConfig,\n );\n },\n minAmount: bffChannel.min_amount,\n maxAmount: bffChannel.max_amount,\n cardBrands: bffChannel.card?.brands.map((b) => {\n return {\n name: b.name,\n logoUrl: b.logo_url,\n };\n }),\n [internal]: marshalConfig.pairChannels.pairs[bffChannel.channel_code] ?? [\n bffChannel,\n ],\n });\n\n lockDownInteralProperty(channel);\n\n return channel;\n}\n\n/**\n * Generate public channels list.\n */\nexport function bffChannelsToPublic(\n bffChannels: BffChannel[],\n bffChannelGroups: BffChannelUiGroup[],\n marshalConfig: ChannelMarshalConfig,\n): XenditPaymentChannel[] {\n const groupsByGroupId = makeGroupsByGroupId(bffChannelGroups);\n const channelsByGroupId = makeChannelsByGroupId(bffChannels, marshalConfig);\n return bffChannels\n .filter((ch) => {\n return channelFilterFn(ch, marshalConfig);\n })\n .map((channel) => {\n return bffChannelToPublic(\n channel,\n channelsByGroupId,\n groupsByGroupId,\n marshalConfig,\n );\n });\n}\n\n/**\n * Make a mapping of group ID to group.\n */\nfunction makeGroupsByGroupId(\n bffChannelGroups: BffChannelUiGroup[],\n): Record<string, BffChannelUiGroup> {\n const groupMap: Record<string, BffChannelUiGroup> = {};\n for (const bffGroup of bffChannelGroups) {\n groupMap[bffGroup.id] = bffGroup;\n }\n return groupMap;\n}\n\n/**\n * Return true if the channel passes the filter criteria.\n */\nfunction channelFilterFn(\n channel: BffChannel,\n marshalConfig: ChannelMarshalConfig,\n) {\n if (marshalConfig.pairChannels.paired[channel.channel_code]) {\n // channel is a second member of a pair, skip\n // TODO: users may filter out the first member of a pair, in which case we should remap the second member to the first\n return false;\n }\n\n if (\n marshalConfig.options.filterMinMax &&\n !satisfiesMinMax(marshalConfig.session, channel)\n ) {\n // min/max amount not satisfied\n return false;\n }\n\n const filter = marshalConfig.options.filter;\n if (filter && !channelCodeMatchesFilter(filter, channel.channel_code)) {\n // channel code does not match filter\n return false;\n }\n\n return true;\n}\n\n/**\n * Checks a channel code string against a filter term.\n */\nfunction channelCodeMatchesFilter(\n filter: string | string[] | RegExp,\n code: string,\n) {\n if (typeof filter === \"string\" && code === filter) {\n return true;\n }\n if (Array.isArray(filter) && filter.includes(code)) {\n return true;\n }\n if (filter instanceof RegExp && filter.test(code)) {\n return true;\n }\n return false;\n}\n\n/**\n * Create a mapping of group ID to channels in that group, applying channel filtering and removing empty groups.\n */\nexport function makeChannelsByGroupId(\n bffChannels: BffChannel[],\n marshalConfig: ChannelMarshalConfig,\n): Record<string, BffChannel[]> {\n const channelsByGroupId: Record<string, BffChannel[]> = {};\n for (const bffChannel of bffChannels) {\n if (!channelFilterFn(bffChannel, marshalConfig)) {\n continue;\n }\n const groupId = bffChannel.ui_group;\n if (!channelsByGroupId[groupId]) {\n channelsByGroupId[groupId] = [];\n }\n channelsByGroupId[groupId].push(bffChannel);\n }\n return channelsByGroupId;\n}\n\ntype PairChannelData = {\n /** Map of channel_code of first member of pair to an array containing the pair */\n pairs: Record<string, [BffChannel, BffChannel]>;\n /** Set of channel_codes of second members of pairs */\n paired: Record<string, boolean>;\n};\n\n/**\n * Finds channels that are pairs (i.e., differ only by allow_save) and groups them together.\n */\nexport function findChannelPairs(bffChannels: BffChannel[]): PairChannelData {\n const brandMap = new Map<string, BffChannel[]>();\n for (const channel of bffChannels) {\n const brandName = channel.brand_name;\n if (!brandMap.has(brandName)) {\n brandMap.set(brandName, []);\n }\n brandMap.get(brandName)!.push(channel);\n }\n\n const pairs: Record<string, [BffChannel, BffChannel]> = {};\n const paired: Record<string, boolean> = {};\n for (const [_, channels] of brandMap) {\n for (const ch of channels) {\n const isFirst = channels[0].allow_save === false;\n if (isFirst) {\n const pair = channels.find(\n (other) =>\n ch.channel_code !== other.channel_code &&\n ch.ui_group === other.ui_group &&\n other.allow_save === true,\n );\n if (pair) {\n pairs[ch.channel_code] = [ch, pair];\n paired[pair.channel_code] = true;\n }\n }\n }\n }\n\n return {\n pairs,\n paired,\n };\n}\n","import {\n useCurrentChannel,\n useChannels,\n useSdk,\n useSession,\n} from \"./session-provider\";\nimport { BffChannel, BffChannelUiGroup } from \"../backend-types/channel\";\nimport { Dropdown, DropdownOption } from \"./dropdown\";\nimport { BffSession } from \"../backend-types/session\";\nimport { satisfiesMinMax, useIdSafe, usePrevious } from \"../utils\";\nimport { useLayoutEffect, useMemo, useRef, useState } from \"preact/hooks\";\nimport { findChannelPairs, singleBffChannelToPublic } from \"../bff-marshal\";\nimport { TFunction } from \"i18next\";\nimport { FunctionComponent } from \"preact\";\n\ninterface ChannelPickerGroupProps {\n group: BffChannelUiGroup;\n open: boolean;\n}\n\nexport const ChannelPickerGroup: FunctionComponent<ChannelPickerGroupProps> = (\n props,\n) => {\n const { group, open } = props;\n\n const sdk = useSdk();\n const { t } = sdk;\n const session = useSession();\n\n const sessionType = session.session_type;\n\n const dropdownId = useIdSafe();\n\n // container for the selected channel component\n const containerRef = useRef<HTMLDivElement>(null);\n // reference to the selected channel element\n const selectedChannelElementRef = useRef<HTMLElement>(null);\n\n const sdkSelectedChannelCode =\n useCurrentChannel().channel?.channel_code ?? null;\n\n const [explicitSelectedChannel, setExplicitSelectedChannel] =\n useState<BffChannel | null>(null);\n const channels = useChannels();\n\n const pairChannelData = useMemo(() => findChannelPairs(channels), [channels]);\n const marshalConfig = useMemo(\n () => ({\n pairChannels: pairChannelData,\n session: {\n amount: session.amount,\n session_type: session.session_type,\n },\n options: { filterMinMax: false },\n }),\n [pairChannelData, session.amount, session.session_type],\n );\n\n const channelsInGroup = useMemo(() => {\n return channels.filter((ch) => {\n if (ch.ui_group !== group.id) {\n // skip channels not in this group\n return false;\n }\n if (pairChannelData.paired[ch.channel_code]) {\n // skip channels that are the second channel in a pair\n return false;\n }\n return true;\n });\n }, [channels, group.id, pairChannelData]);\n\n // Create and mount the channel component if a channel is selected\n useLayoutEffect(() => {\n if (!containerRef.current) return;\n if (explicitSelectedChannel) {\n if (open) {\n // create new channel component\n const el = sdk.createChannelComponent(\n singleBffChannelToPublic(explicitSelectedChannel, marshalConfig),\n );\n selectedChannelElementRef.current = el;\n if (el.parentElement !== containerRef.current) {\n containerRef.current.replaceChildren(el);\n } else {\n // it's already in the right place, do nothing.\n // replaceChildren would cause iframes to reload even if we do a no-op update.\n }\n }\n } else {\n containerRef.current.replaceChildren();\n }\n }, [explicitSelectedChannel, sdk, open, marshalConfig]);\n\n // when the group is opened, auto-select a channel if needed\n const previousOpen = usePrevious(open);\n useLayoutEffect(() => {\n if (open && !previousOpen) {\n // only run this when the group is opened\n if (channelsInGroup.length === 1 && explicitSelectedChannel === null) {\n // auto-select channel if this group contains only one\n setExplicitSelectedChannel(channelsInGroup[0]);\n } else if (\n explicitSelectedChannel &&\n sdkSelectedChannelCode !== explicitSelectedChannel.channel_code\n ) {\n // update sdk state to match this group's selection if this group is opened and has a selection that differs from sdk state\n sdk.setCurrentChannel(\n singleBffChannelToPublic(explicitSelectedChannel, marshalConfig),\n );\n } else if (!explicitSelectedChannel) {\n // clear sdk selection if this group is opened and this group has no selection\n sdk.setCurrentChannel(null);\n }\n }\n }, [\n channelsInGroup,\n explicitSelectedChannel,\n open,\n previousOpen,\n sdk,\n sdkSelectedChannelCode,\n marshalConfig,\n ]);\n\n // when the sdk selected channel changes, update this group's selection if needed\n const previousSdkSelectedChannelCode =\n usePrevious(sdkSelectedChannelCode) ?? null;\n useLayoutEffect(() => {\n if (sdkSelectedChannelCode !== previousSdkSelectedChannelCode) {\n // only run this when the sdk selected channel changes\n if (sdkSelectedChannelCode === null) {\n // do nothing if the selected channel is cleared, we want to collapse the group if the selection cleared rather than clearing explicitlySelectedChannel\n return;\n }\n\n if (sdkSelectedChannelCode !== explicitSelectedChannel?.channel_code) {\n // if the sdk selected channel is part of this group and is different from the user selected one, update this group selection\n const newSelected = channelsInGroup.find(\n (channel) => channel.channel_code === sdkSelectedChannelCode,\n );\n if (newSelected) {\n setExplicitSelectedChannel(newSelected);\n }\n }\n }\n }, [\n channelsInGroup,\n explicitSelectedChannel?.channel_code,\n previousSdkSelectedChannelCode,\n sdk,\n sdkSelectedChannelCode,\n ]);\n\n // Called on channel dropdown change\n const onSelectedChannelChange = (dropdownOption: DropdownOption) => {\n const selected =\n channels.find(\n (channel) => channel.channel_code === dropdownOption.value,\n ) || null;\n setExplicitSelectedChannel(selected);\n };\n\n // Create channel options for dropdown\n const channelOptions = channelsInGroup.map<DropdownOption>((channel) => ({\n leadingAsset: (\n <img\n className=\"xendit-channel-logo\"\n src={channel.brand_logo_url}\n key={channel.channel_code}\n />\n ),\n title: channel.brand_name,\n value: channel.channel_code,\n disabled: !satisfiesMinMax(session, channel),\n description: getChannelDisabledReason(t, session, channel) || undefined,\n }));\n\n // Hide dropdown for cards channel\n const hideDropdown =\n channelsInGroup.length === 1 && channelsInGroup[0].channel_code === \"CARDS\";\n\n return (\n <div className=\"xendit-channel-picker-group\">\n {hideDropdown ? null : (\n <div className=\"xendit-channel-form-field-group\">\n <label htmlFor={dropdownId} className=\"xendit-text-14\">\n {sessionType === \"SAVE\"\n ? t(\"payment_methods.add_payment_method\", {\n groupName: group.label ?? \"\",\n ns: \"session\",\n })\n : t(\"payment_methods.pay_with\")}\n </label>\n <Dropdown\n id={dropdownId}\n selectedIndex={\n channelOptions.findIndex((channel) => {\n return channel.value === explicitSelectedChannel?.channel_code;\n }) ?? 0\n }\n options={channelOptions}\n onChange={onSelectedChannelChange}\n placeholder={t(\"payment_methods.select_channel_placeholder\", {\n groupName: group.label,\n ns: \"session\",\n })}\n />\n </div>\n )}\n {explicitSelectedChannel ? <div ref={containerRef} /> : null}\n </div>\n );\n};\n\nexport function getChannelDisabledReason(\n t: TFunction<\"session\">,\n session: BffSession,\n channel: BffChannel,\n): string | null {\n if (satisfiesMinMax(session, channel)) {\n return null;\n }\n\n if (channel.min_amount && session.amount < channel.min_amount) {\n return t(\"payment_methods.channel_disabled_amount_too_small\");\n } else {\n return t(\"payment_methods.channel_disabled_amount_too_large\");\n }\n}\n","import { Accordion } from \"./accordion\";\nimport { AccordionItem } from \"./accordion-item\";\nimport {\n useCurrentChannel,\n useChannelUiGroups,\n useSession,\n useChannels,\n useSdk,\n} from \"./session-provider\";\nimport {\n useCallback,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"preact/hooks\";\nimport { FunctionComponent } from \"preact\";\nimport {\n ChannelPickerGroup,\n getChannelDisabledReason,\n} from \"./channel-picker-group\";\nimport { satisfiesMinMax, usePrevious } from \"../utils\";\nimport { BffSession } from \"../backend-types/session\";\nimport { BffChannel, BffChannelUiGroup } from \"../backend-types/channel\";\nimport { TFunction } from \"i18next\";\nimport { findChannelPairs, makeChannelsByGroupId } from \"../bff-marshal\";\n\ntype Props = object;\n\nexport const XenditChannelPicker: FunctionComponent<Props> = (props) => {\n const sdk = useSdk();\n const session = useSession();\n const channelUiGroups = useChannelUiGroups();\n const currentChannel = useCurrentChannel().channel;\n const channels = useChannels();\n const { t } = useSdk();\n\n const channelsByGroup = useMemo(() => {\n return makeChannelsByGroupId(channels, {\n options: { filterMinMax: false },\n pairChannels: findChannelPairs(channels),\n session,\n });\n }, [channels, session]);\n\n const thisRef = useRef<HTMLDivElement>(null);\n\n const [selectedGroup, setSelectedGroup] = useState<number | null>(null);\n const [\n selectedGroupWasTriggeredManually,\n setSelectedGroupWasTriggeredManually,\n ] = useState<boolean>(false);\n\n const handleSelectChannelGroup = useCallback(\n (i: number) => {\n if (selectedGroup === i) {\n const groupId = channelUiGroups[i].id;\n // this clears the selected channel if it belongs to this group\n thisRef.current?.dispatchEvent(\n new XenditClearCurrentChannelEvent(groupId),\n );\n setSelectedGroup(null);\n } else {\n setSelectedGroup(i);\n }\n setSelectedGroupWasTriggeredManually(true);\n },\n [channelUiGroups, selectedGroup],\n );\n\n const previousCurrentChannel = usePrevious(currentChannel);\n useLayoutEffect(() => {\n if (\n currentChannel !== previousCurrentChannel &&\n !selectedGroupWasTriggeredManually\n ) {\n // only run this when the current channel AND current group changes\n if (currentChannel === null) {\n // collapse the selected group when the current channel is cleared\n setSelectedGroup(null);\n } else {\n // expand the group of the newly selected channel\n const groupIndex = channelUiGroups.findIndex(\n (group) => currentChannel.ui_group === group.id,\n );\n if (groupIndex !== -1) {\n setSelectedGroup(groupIndex);\n }\n }\n }\n setSelectedGroupWasTriggeredManually(false);\n }, [\n currentChannel,\n channelUiGroups,\n previousCurrentChannel,\n selectedGroup,\n selectedGroupWasTriggeredManually,\n ]);\n\n if (sdk.getSdkStatus() !== \"ACTIVE\" || session.status !== \"ACTIVE\") {\n // clear all contents if the sdk is not initialized or crashes, or if the component is still mounted after completion or failure\n return null;\n }\n\n return (\n // FIXME: make it work without this extra div\n <div ref={thisRef}>\n <Accordion>\n {channelUiGroups\n .filter((group) => {\n // remove empty groups\n return (channelsByGroup[group.id] || []).length > 0;\n })\n .map((group, i) => {\n const open = selectedGroup === i;\n // make the group disabled if it has no enabled channels\n const disabledReason = groupHasNoEnabledChannel(\n session,\n group,\n channels,\n t,\n );\n const disabled = disabledReason !== null;\n return (\n <AccordionItem\n key={i}\n id={i}\n title={group.label}\n subtitle={disabledReason ?? undefined}\n open={open}\n disabled={disabled}\n onClick={handleSelectChannelGroup}\n >\n <ChannelPickerGroup group={group} open={open} />\n </AccordionItem>\n );\n })}\n </Accordion>\n </div>\n );\n};\n\n// returns null if the group has any enabled channels, otherwise returns the disabled reason as a string\nfunction groupHasNoEnabledChannel(\n session: BffSession,\n group: BffChannelUiGroup,\n channels: BffChannel[],\n t: TFunction<\"session\">,\n): string | null {\n let lastReason = null;\n for (const channel of channels) {\n if (channel.ui_group !== group.id) continue;\n if (satisfiesMinMax(session, channel)) {\n return null;\n }\n lastReason = getChannelDisabledReason(t, session, channel);\n }\n return lastReason;\n}\n\nexport class XenditClearCurrentChannelEvent extends Event {\n static readonly type = \"xendit-clear-current-channel\" as const;\n uiGroup: string;\n\n constructor(uiGroup: string) {\n super(XenditClearCurrentChannelEvent.type, {\n bubbles: true,\n composed: true,\n });\n this.uiGroup = uiGroup;\n }\n}\n","import { UpdatableWorldState, WorldState } from \"./public-sdk\";\n\n/**\n * @internal\n * Event fired when a session / paymentEntity / etc is changed.\n */\nexport class InternalUpdateWorldState extends Event {\n static type = \"xendit-update-world-state\" as const;\n\n constructor(public data: WorldState | UpdatableWorldState) {\n super(InternalUpdateWorldState.type, { bubbles: false });\n }\n}\n\n/**\n * @internal\n * Revalidates a field and marks it as touched.\n */\nexport class InternalInputValidateEvent extends CustomEvent<{ value: string }> {\n static type = \"xendit-internal-input-validate\" as const;\n\n constructor(value: string) {\n super(InternalInputValidateEvent.type, {\n detail: { value },\n });\n }\n}\n\n/**\n * @internal\n * Schedules a behavior tree update.\n */\nexport class InternalBehaviorTreeUpdateEvent extends Event {\n static type = \"xendit-internal-behavior-tree-update\" as const;\n\n constructor() {\n super(InternalBehaviorTreeUpdateEvent.type, {});\n }\n}\n\n/**\n * @internal\n * Schedule a rerender of all components on the next tick.\n */\nexport class InternalNeedsRerenderEvent extends Event {\n static type = \"xendit-internal-needs-rerender\" as const;\n\n constructor() {\n super(InternalNeedsRerenderEvent.type, {});\n }\n}\n","// This file is a workaround for a bug in web browsers' \"native\"\n// ES6 importing system which is uncapable of importing \"*.json\" files.\n// https://github.com/catamphetamine/libphonenumber-js/issues/239\nexport default {\"version\":4,\"country_calling_codes\":{\"1\":[\"US\",\"AG\",\"AI\",\"AS\",\"BB\",\"BM\",\"BS\",\"CA\",\"DM\",\"DO\",\"GD\",\"GU\",\"JM\",\"KN\",\"KY\",\"LC\",\"MP\",\"MS\",\"PR\",\"SX\",\"TC\",\"TT\",\"VC\",\"VG\",\"VI\"],\"7\":[\"RU\",\"KZ\"],\"20\":[\"EG\"],\"27\":[\"ZA\"],\"30\":[\"GR\"],\"31\":[\"NL\"],\"32\":[\"BE\"],\"33\":[\"FR\"],\"34\":[\"ES\"],\"36\":[\"HU\"],\"39\":[\"IT\",\"VA\"],\"40\":[\"RO\"],\"41\":[\"CH\"],\"43\":[\"AT\"],\"44\":[\"GB\",\"GG\",\"IM\",\"JE\"],\"45\":[\"DK\"],\"46\":[\"SE\"],\"47\":[\"NO\",\"SJ\"],\"48\":[\"PL\"],\"49\":[\"DE\"],\"51\":[\"PE\"],\"52\":[\"MX\"],\"53\":[\"CU\"],\"54\":[\"AR\"],\"55\":[\"BR\"],\"56\":[\"CL\"],\"57\":[\"CO\"],\"58\":[\"VE\"],\"60\":[\"MY\"],\"61\":[\"AU\",\"CC\",\"CX\"],\"62\":[\"ID\"],\"63\":[\"PH\"],\"64\":[\"NZ\"],\"65\":[\"SG\"],\"66\":[\"TH\"],\"81\":[\"JP\"],\"82\":[\"KR\"],\"84\":[\"VN\"],\"86\":[\"CN\"],\"90\":[\"TR\"],\"91\":[\"IN\"],\"92\":[\"PK\"],\"93\":[\"AF\"],\"94\":[\"LK\"],\"95\":[\"MM\"],\"98\":[\"IR\"],\"211\":[\"SS\"],\"212\":[\"MA\",\"EH\"],\"213\":[\"DZ\"],\"216\":[\"TN\"],\"218\":[\"LY\"],\"220\":[\"GM\"],\"221\":[\"SN\"],\"222\":[\"MR\"],\"223\":[\"ML\"],\"224\":[\"GN\"],\"225\":[\"CI\"],\"226\":[\"BF\"],\"227\":[\"NE\"],\"228\":[\"TG\"],\"229\":[\"BJ\"],\"230\":[\"MU\"],\"231\":[\"LR\"],\"232\":[\"SL\"],\"233\":[\"GH\"],\"234\":[\"NG\"],\"235\":[\"TD\"],\"236\":[\"CF\"],\"237\":[\"CM\"],\"238\":[\"CV\"],\"239\":[\"ST\"],\"240\":[\"GQ\"],\"241\":[\"GA\"],\"242\":[\"CG\"],\"243\":[\"CD\"],\"244\":[\"AO\"],\"245\":[\"GW\"],\"246\":[\"IO\"],\"247\":[\"AC\"],\"248\":[\"SC\"],\"249\":[\"SD\"],\"250\":[\"RW\"],\"251\":[\"ET\"],\"252\":[\"SO\"],\"253\":[\"DJ\"],\"254\":[\"KE\"],\"255\":[\"TZ\"],\"256\":[\"UG\"],\"257\":[\"BI\"],\"258\":[\"MZ\"],\"260\":[\"ZM\"],\"261\":[\"MG\"],\"262\":[\"RE\",\"YT\"],\"263\":[\"ZW\"],\"264\":[\"NA\"],\"265\":[\"MW\"],\"266\":[\"LS\"],\"267\":[\"BW\"],\"268\":[\"SZ\"],\"269\":[\"KM\"],\"290\":[\"SH\",\"TA\"],\"291\":[\"ER\"],\"297\":[\"AW\"],\"298\":[\"FO\"],\"299\":[\"GL\"],\"350\":[\"GI\"],\"351\":[\"PT\"],\"352\":[\"LU\"],\"353\":[\"IE\"],\"354\":[\"IS\"],\"355\":[\"AL\"],\"356\":[\"MT\"],\"357\":[\"CY\"],\"358\":[\"FI\",\"AX\"],\"359\":[\"BG\"],\"370\":[\"LT\"],\"371\":[\"LV\"],\"372\":[\"EE\"],\"373\":[\"MD\"],\"374\":[\"AM\"],\"375\":[\"BY\"],\"376\":[\"AD\"],\"377\":[\"MC\"],\"378\":[\"SM\"],\"380\":[\"UA\"],\"381\":[\"RS\"],\"382\":[\"ME\"],\"383\":[\"XK\"],\"385\":[\"HR\"],\"386\":[\"SI\"],\"387\":[\"BA\"],\"389\":[\"MK\"],\"420\":[\"CZ\"],\"421\":[\"SK\"],\"423\":[\"LI\"],\"500\":[\"FK\"],\"501\":[\"BZ\"],\"502\":[\"GT\"],\"503\":[\"SV\"],\"504\":[\"HN\"],\"505\":[\"NI\"],\"506\":[\"CR\"],\"507\":[\"PA\"],\"508\":[\"PM\"],\"509\":[\"HT\"],\"590\":[\"GP\",\"BL\",\"MF\"],\"591\":[\"BO\"],\"592\":[\"GY\"],\"593\":[\"EC\"],\"594\":[\"GF\"],\"595\":[\"PY\"],\"596\":[\"MQ\"],\"597\":[\"SR\"],\"598\":[\"UY\"],\"599\":[\"CW\",\"BQ\"],\"670\":[\"TL\"],\"672\":[\"NF\"],\"673\":[\"BN\"],\"674\":[\"NR\"],\"675\":[\"PG\"],\"676\":[\"TO\"],\"677\":[\"SB\"],\"678\":[\"VU\"],\"679\":[\"FJ\"],\"680\":[\"PW\"],\"681\":[\"WF\"],\"682\":[\"CK\"],\"683\":[\"NU\"],\"685\":[\"WS\"],\"686\":[\"KI\"],\"687\":[\"NC\"],\"688\":[\"TV\"],\"689\":[\"PF\"],\"690\":[\"TK\"],\"691\":[\"FM\"],\"692\":[\"MH\"],\"850\":[\"KP\"],\"852\":[\"HK\"],\"853\":[\"MO\"],\"855\":[\"KH\"],\"856\":[\"LA\"],\"880\":[\"BD\"],\"886\":[\"TW\"],\"960\":[\"MV\"],\"961\":[\"LB\"],\"962\":[\"JO\"],\"963\":[\"SY\"],\"964\":[\"IQ\"],\"965\":[\"KW\"],\"966\":[\"SA\"],\"967\":[\"YE\"],\"968\":[\"OM\"],\"970\":[\"PS\"],\"971\":[\"AE\"],\"972\":[\"IL\"],\"973\":[\"BH\"],\"974\":[\"QA\"],\"975\":[\"BT\"],\"976\":[\"MN\"],\"977\":[\"NP\"],\"992\":[\"TJ\"],\"993\":[\"TM\"],\"994\":[\"AZ\"],\"995\":[\"GE\"],\"996\":[\"KG\"],\"998\":[\"UZ\"]},\"countries\":{\"AC\":[\"247\",\"00\",\"(?:[01589]\\\\d|[46])\\\\d{4}\",[5,6]],\"AD\":[\"376\",\"00\",\"(?:1|6\\\\d)\\\\d{7}|[135-9]\\\\d{5}\",[6,8,9],[[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"[135-9]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"1\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]]]],\"AE\":[\"971\",\"00\",\"(?:[4-7]\\\\d|9[0-689])\\\\d{7}|800\\\\d{2,9}|[2-4679]\\\\d{7}\",[5,6,7,8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{2,9})\",\"$1 $2\",[\"60|8\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[236]|[479][2-8]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{5})\",\"$1 $2 $3\",[\"[479]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"]],\"0\"],\"AF\":[\"93\",\"00\",\"[2-7]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-7]\"],\"0$1\"]],\"0\"],\"AG\":[\"1\",\"011\",\"(?:268|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([457]\\\\d{6})$|1\",\"268$1\",0,\"268\"],\"AI\":[\"1\",\"011\",\"(?:264|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2457]\\\\d{6})$|1\",\"264$1\",0,\"264\"],\"AL\":[\"355\",\"00\",\"(?:700\\\\d\\\\d|900)\\\\d{3}|8\\\\d{5,7}|(?:[2-5]|6\\\\d)\\\\d{7}\",[6,7,8,9],[[\"(\\\\d{3})(\\\\d{3,4})\",\"$1 $2\",[\"80|9\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"4[2-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2358][2-5]|4\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[23578]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"6\"],\"0$1\"]],\"0\"],\"AM\":[\"374\",\"00\",\"(?:[1-489]\\\\d|55|60|77)\\\\d{6}\",[8],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]0\"],\"0 $1\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"2|3[12]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"1|47\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[3-9]\"],\"0$1\"]],\"0\"],\"AO\":[\"244\",\"00\",\"[29]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[29]\"]]]],\"AR\":[\"54\",\"00\",\"(?:11|[89]\\\\d\\\\d)\\\\d{8}|[2368]\\\\d{9}\",[10,11],[[\"(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$1 $2-$3\",[\"2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9])\",\"2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8]))|2(?:2[24-9]|3[1-59]|47)\",\"2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5[56][46]|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]\",\"2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|58|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|54(?:4|5[13-7]|6[89])|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:454|85[56])[46]|3(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]\"],\"0$1\",1],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2-$3\",[\"1\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[68]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2-$3\",[\"[23]\"],\"0$1\",1],[\"(\\\\d)(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$2 15-$3-$4\",[\"9(?:2[2-469]|3[3-578])\",\"9(?:2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9]))\",\"9(?:2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8])))|92(?:2[24-9]|3[1-59]|47)\",\"9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5(?:[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]\",\"9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|5(?:4(?:4|5[13-7]|6[89])|[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]\"],\"0$1\",0,\"$1 $2 $3-$4\"],[\"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$2 15-$3-$4\",[\"91\"],\"0$1\",0,\"$1 $2 $3-$4\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1-$2-$3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$2 15-$3-$4\",[\"9\"],\"0$1\",0,\"$1 $2 $3-$4\"]],\"0\",0,\"0?(?:(11|2(?:2(?:02?|[13]|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1267])|3(?:02?|1[467]|2[03-6]|3[13-8]|[49][2-6]|5[2-8]|[67])|4(?:7[3-578]|9)|6(?:[0136]|2[24-6]|4[6-8]?|5[15-8])|80|9(?:0[1-3]|[19]|2\\\\d|3[1-6]|4[02568]?|5[2-4]|6[2-46]|72?|8[23]?))|3(?:3(?:2[79]|6|8[2578])|4(?:0[0-24-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6[02-9]|7[126]|8[2379]?|9[1-36-8])|5(?:1|2[1245]|3[237]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|6[24]|7(?:[069]|1[1568]|2[15]|3[145]|4[13]|5[14-8]|7[2-57]|8[126])|8(?:[01]|2[15-7]|3[2578]?|4[13-6]|5[4-8]?|6[1-357-9]|7[36-8]?|8[5-8]?|9[124])))15)?\",\"9$1\"],\"AS\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|684|900)\\\\d{7}\",[10],0,\"1\",0,\"([267]\\\\d{6})$|1\",\"684$1\",0,\"684\"],\"AT\":[\"43\",\"00\",\"1\\\\d{3,12}|2\\\\d{6,12}|43(?:(?:0\\\\d|5[02-9])\\\\d{3,9}|2\\\\d{4,5}|[3467]\\\\d{4}|8\\\\d{4,6}|9\\\\d{4,7})|5\\\\d{4,12}|8\\\\d{7,12}|9\\\\d{8,12}|(?:[367]\\\\d|4[0-24-9])\\\\d{4,11}\",[4,5,6,7,8,9,10,11,12,13],[[\"(\\\\d)(\\\\d{3,12})\",\"$1 $2\",[\"1(?:11|[2-9])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})\",\"$1 $2\",[\"517\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,5})\",\"$1 $2\",[\"5[079]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,10})\",\"$1 $2\",[\"(?:31|4)6|51|6(?:48|5[0-3579]|[6-9])|7(?:20|32|8)|[89]\",\"(?:31|4)6|51|6(?:485|5[0-3579]|[6-9])|7(?:20|32|8)|[89]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3,9})\",\"$1 $2\",[\"[2-467]|5[2-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4,7})\",\"$1 $2 $3\",[\"5\"],\"0$1\"]],\"0\"],\"AU\":[\"61\",\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"1(?:[0-79]\\\\d{7}(?:\\\\d(?:\\\\d{2})?)?|8[0-24-9]\\\\d{7})|[2-478]\\\\d{8}|1\\\\d{4,7}\",[5,6,7,8,9,10,12],[[\"(\\\\d{2})(\\\\d{3,4})\",\"$1 $2\",[\"16\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"16\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"14|4\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[2378]\"],\"(0$1)\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1(?:30|[89])\"]]],\"0\",0,\"(183[12])|0\",0,0,0,[[\"(?:(?:241|349)0\\\\d\\\\d|8(?:51(?:0(?:0[03-9]|[12479]\\\\d|3[2-9]|5[0-8]|6[1-9]|8[0-7])|1(?:[0235689]\\\\d|1[0-69]|4[0-589]|7[0-47-9])|2(?:0[0-79]|[18][13579]|2[14-9]|3[0-46-9]|[4-6]\\\\d|7[89]|9[0-4])|[34]\\\\d\\\\d)|91(?:(?:[0-58]\\\\d|6[0135-9])\\\\d|7(?:0[0-24-9]|[1-9]\\\\d)|9(?:[0-46-9]\\\\d|5[0-79]))))\\\\d{3}|(?:2(?:[0-26-9]\\\\d|3[0-8]|4[02-9]|5[0135-9])|3(?:[0-3589]\\\\d|4[0-578]|6[1-9]|7[0-35-9])|7(?:[013-57-9]\\\\d|2[0-8])|8(?:55|6[0-8]|[78]\\\\d|9[02-9]))\\\\d{6}\",[9]],[\"4(?:79[01]|83[0-36-9]|95[0-3])\\\\d{5}|4(?:[0-36]\\\\d|4[047-9]|[58][0-24-9]|7[02-8]|9[0-47-9])\\\\d{6}\",[9]],[\"180(?:0\\\\d{3}|2)\\\\d{3}\",[7,10]],[\"190[0-26]\\\\d{6}\",[10]],0,0,0,[\"163\\\\d{2,6}\",[5,6,7,8,9]],[\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\",[9]],[\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\",[6,8,10,12]]],\"0011\"],\"AW\":[\"297\",\"00\",\"(?:[25-79]\\\\d\\\\d|800)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[25-9]\"]]]],\"AX\":[\"358\",\"00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))\",\"2\\\\d{4,9}|35\\\\d{4,5}|(?:60\\\\d\\\\d|800)\\\\d{4,6}|7\\\\d{5,11}|(?:[14]\\\\d|3[0-46-9]|50)\\\\d{4,8}\",[5,6,7,8,9,10,11,12],0,\"0\",0,0,0,0,\"18\",0,\"00\"],\"AZ\":[\"994\",\"00\",\"365\\\\d{6}|(?:[124579]\\\\d|60|88)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"90\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[28]|2|365|46\",\"1[28]|2|365[45]|46\",\"1[28]|2|365(?:4|5[02])|46\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[13-9]\"],\"0$1\"]],\"0\"],\"BA\":[\"387\",\"00\",\"6\\\\d{8}|(?:[35689]\\\\d|49|70)\\\\d{6}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6[1-3]|[7-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2-$3\",[\"[3-5]|6[56]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"6\"],\"0$1\"]],\"0\"],\"BB\":[\"1\",\"011\",\"(?:246|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"246$1\",0,\"246\"],\"BD\":[\"880\",\"00\",\"[1-469]\\\\d{9}|8[0-79]\\\\d{7,8}|[2-79]\\\\d{8}|[2-9]\\\\d{7}|[3-9]\\\\d{6}|[57-9]\\\\d{5}\",[6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{4,6})\",\"$1-$2\",[\"31[5-8]|[459]1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,7})\",\"$1-$2\",[\"3(?:[67]|8[013-9])|4(?:6[168]|7|[89][18])|5(?:6[128]|9)|6(?:[15]|28|4[14])|7[2-589]|8(?:0[014-9]|[12])|9[358]|(?:3[2-5]|4[235]|5[2-578]|6[0389]|76|8[3-7]|9[24])1|(?:44|66)[01346-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3,6})\",\"$1-$2\",[\"[13-9]|2[23]\"],\"0$1\"],[\"(\\\\d)(\\\\d{7,8})\",\"$1-$2\",[\"2\"],\"0$1\"]],\"0\"],\"BE\":[\"32\",\"00\",\"4\\\\d{8}|[1-9]\\\\d{7}\",[8,9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:80|9)0\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[239]|4[23]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[15-8]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"4\"],\"0$1\"]],\"0\"],\"BF\":[\"226\",\"00\",\"(?:[025-7]\\\\d|44)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[024-7]\"]]]],\"BG\":[\"359\",\"00\",\"00800\\\\d{7}|[2-7]\\\\d{6,7}|[89]\\\\d{6,8}|2\\\\d{5}\",[6,7,8,9,12],[[\"(\\\\d)(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"43[1-6]|70[1-9]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:70|8)0\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3\",[\"43[1-7]|7\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[48]|9[08]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],\"0\"],\"BH\":[\"973\",\"00\",\"[136-9]\\\\d{7}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[13679]|8[02-4679]\"]]]],\"BI\":[\"257\",\"00\",\"(?:[267]\\\\d|31)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2367]\"]]]],\"BJ\":[\"229\",\"00\",\"(?:01\\\\d|8)\\\\d{7}\",[8,10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"0\"]]]],\"BL\":[\"590\",\"00\",\"(?:590\\\\d|7090)\\\\d{5}|(?:69|80|9\\\\d)\\\\d{7}\",[9],0,\"0\",0,0,0,0,0,[[\"590(?:2[7-9]|3[3-7]|5[12]|87)\\\\d{4}\"],[\"(?:69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5])|4(?:0[89]|1[2-6]|9\\\\d)|6(?:1[016-9]|5[0-4]|[67]\\\\d))|7090[0-4])\\\\d{4}\"],[\"80[0-5]\\\\d{6}\"],0,0,0,0,0,[\"9(?:(?:39[5-7]|76[018])\\\\d|475[0-6])\\\\d{4}\"]]],\"BM\":[\"1\",\"011\",\"(?:441|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"441$1\",0,\"441\"],\"BN\":[\"673\",\"00\",\"[2-578]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-578]\"]]]],\"BO\":[\"591\",\"00(?:1\\\\d)?\",\"8001\\\\d{5}|(?:[2-467]\\\\d|50)\\\\d{6}\",[8,9],[[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"[235]|4[46]\"]],[\"(\\\\d{8})\",\"$1\",[\"[67]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]],\"0\",0,\"0(1\\\\d)?\"],\"BQ\":[\"599\",\"00\",\"(?:[34]1|7\\\\d)\\\\d{5}\",[7],0,0,0,0,0,0,\"[347]\"],\"BR\":[\"55\",\"00(?:1[245]|2[1-35]|31|4[13]|[56]5|99)\",\"[1-467]\\\\d{9,10}|55[0-46-9]\\\\d{8}|[34]\\\\d{7}|55\\\\d{7,8}|(?:5[0-46-9]|[89]\\\\d)\\\\d{7,9}\",[8,9,10,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"300|4(?:0[02]|37|86)\",\"300|4(?:0(?:0|20)|370|864)\"]],[\"(\\\\d{3})(\\\\d{2,3})(\\\\d{4})\",\"$1 $2 $3\",[\"(?:[358]|90)0\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2-$3\",[\"(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-57]\"],\"($1)\"],[\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\",\"$1 $2-$3\",[\"[16][1-9]|[2-57-9]\"],\"($1)\"]],\"0\",0,\"(?:0|90)(?:(1[245]|2[1-35]|31|4[13]|[56]5|99)(\\\\d{10,11}))?\",\"$2\"],\"BS\":[\"1\",\"011\",\"(?:242|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([3-8]\\\\d{6})$|1\",\"242$1\",0,\"242\"],\"BT\":[\"975\",\"00\",\"[178]\\\\d{7}|[2-8]\\\\d{6}\",[7,8],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-6]|7[246]|8[2-4]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[67]|[78]\"]]]],\"BW\":[\"267\",\"00\",\"(?:0800|(?:[37]|800)\\\\d)\\\\d{6}|(?:[2-6]\\\\d|90)\\\\d{5}\",[7,8,10],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"90\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[24-6]|3[15-9]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[37]\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]]],\"BY\":[\"375\",\"810\",\"(?:[12]\\\\d|33|44|902)\\\\d{7}|8(?:0[0-79]\\\\d{5,7}|[1-7]\\\\d{9})|8(?:1[0-489]|[5-79]\\\\d)\\\\d{7}|8[1-79]\\\\d{6,7}|8[0-79]\\\\d{5}|8\\\\d{5}\",[6,7,8,9,10,11],[[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"800\"],\"8 $1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,4})\",\"$1 $2 $3\",[\"800\"],\"8 $1\"],[\"(\\\\d{4})(\\\\d{2})(\\\\d{3})\",\"$1 $2-$3\",[\"1(?:5[169]|6[3-5]|7[179])|2(?:1[35]|2[34]|3[3-5])\",\"1(?:5[169]|6(?:3[1-3]|4|5[125])|7(?:1[3-9]|7[0-24-6]|9[2-7]))|2(?:1[35]|2[34]|3[3-5])\"],\"8 0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"1(?:[56]|7[467])|2[1-3]\"],\"8 0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[1-4]\"],\"8 0$1\"],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"8 $1\"]],\"8\",0,\"0|80?\",0,0,0,0,\"8~10\"],\"BZ\":[\"501\",\"00\",\"(?:0800\\\\d|[2-8])\\\\d{6}\",[7,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-8]\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1-$2-$3-$4\",[\"0\"]]]],\"CA\":[\"1\",\"011\",\"[2-9]\\\\d{9}|3\\\\d{6}\",[7,10],0,\"1\",0,0,0,0,0,[[\"(?:2(?:04|[23]6|[48]9|5[07]|63)|3(?:06|43|54|6[578]|82)|4(?:03|1[68]|[26]8|3[178]|50|74)|5(?:06|1[49]|48|79|8[147])|6(?:04|[18]3|39|47|72)|7(?:0[59]|42|53|78|8[02])|8(?:[06]7|19|25|7[39])|9(?:0[25]|42))[2-9]\\\\d{6}\",[10]],[\"\",[10]],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",[10]],[\"900[2-9]\\\\d{6}\",[10]],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|(?:5(?:2[125-9]|33|44|66|77|88)|6(?:22|33))[2-9]\\\\d{6}\",[10]],0,[\"310\\\\d{4}\",[7]],0,[\"600[2-9]\\\\d{6}\",[10]]]],\"CC\":[\"61\",\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"1(?:[0-79]\\\\d{8}(?:\\\\d{2})?|8[0-24-9]\\\\d{7})|[148]\\\\d{8}|1\\\\d{5,7}\",[6,7,8,9,10,12],0,\"0\",0,\"([59]\\\\d{7})$|0\",\"8$1\",0,0,[[\"8(?:51(?:0(?:02|31|60|89)|1(?:18|76)|223)|91(?:0(?:1[0-2]|29)|1(?:[28]2|50|79)|2(?:10|64)|3(?:[06]8|22)|4[29]8|62\\\\d|70[23]|959))\\\\d{3}\",[9]],[\"4(?:79[01]|83[0-36-9]|95[0-3])\\\\d{5}|4(?:[0-36]\\\\d|4[047-9]|[58][0-24-9]|7[02-8]|9[0-47-9])\\\\d{6}\",[9]],[\"180(?:0\\\\d{3}|2)\\\\d{3}\",[7,10]],[\"190[0-26]\\\\d{6}\",[10]],0,0,0,0,[\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\",[9]],[\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\",[6,8,10,12]]],\"0011\"],\"CD\":[\"243\",\"00\",\"(?:(?:[189]|5\\\\d)\\\\d|2)\\\\d{7}|[1-68]\\\\d{6}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"88\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"[1-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"5\"],\"0$1\"]],\"0\"],\"CF\":[\"236\",\"00\",\"(?:[27]\\\\d{3}|8776)\\\\d{4}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[278]\"]]]],\"CG\":[\"242\",\"00\",\"222\\\\d{6}|(?:0\\\\d|80)\\\\d{7}\",[9],[[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[02]\"]]]],\"CH\":[\"41\",\"00\",\"8\\\\d{11}|[2-9]\\\\d{8}\",[9,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8[047]|90\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-79]|81\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"8\"],\"0$1\"]],\"0\"],\"CI\":[\"225\",\"00\",\"[02]\\\\d{9}\",[10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d)(\\\\d{5})\",\"$1 $2 $3 $4\",[\"2\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"0\"]]]],\"CK\":[\"682\",\"00\",\"[2-578]\\\\d{4}\",[5],[[\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"[2-578]\"]]]],\"CL\":[\"56\",\"(?:0|1(?:1[0-69]|2[02-5]|5[13-58]|69|7[0167]|8[018]))0\",\"12300\\\\d{6}|6\\\\d{9,10}|[2-9]\\\\d{8}\",[9,10,11],[[\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"219\",\"2196\"],\"($1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"60|809\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"44\"]],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2[1-36]\"],\"($1)\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"9(?:10|[2-9])\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"3[2-5]|[47]|5[1-3578]|6[13-57]|8(?:0[1-8]|[1-9])\"],\"($1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"60|8\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"60\"]]]],\"CM\":[\"237\",\"00\",\"[26]\\\\d{8}|88\\\\d{6,7}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"88\"]],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[26]|88\"]]]],\"CN\":[\"86\",\"00|1(?:[12]\\\\d|79)\\\\d\\\\d00\",\"(?:(?:1[03-689]|2\\\\d)\\\\d\\\\d|6)\\\\d{8}|1\\\\d{10}|[126]\\\\d{6}(?:\\\\d(?:\\\\d{2})?)?|86\\\\d{5,6}|(?:[3-579]\\\\d|8[0-57-9])\\\\d{5,9}\",[7,8,9,10,11,12],[[\"(\\\\d{2})(\\\\d{5,6})\",\"$1 $2\",[\"(?:10|2[0-57-9])[19]|3(?:[157]|35|49|9[1-68])|4(?:1[124-9]|2[179]|6[47-9]|7|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:07|1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3|4[13]|5[1-5]|7[0-79]|9[0-35-9])|(?:4[35]|59|85)[1-9]\",\"(?:10|2[0-57-9])(?:1[02]|9[56])|8078|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\\\d|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))1\",\"10(?:1(?:0|23)|9[56])|2[0-57-9](?:1(?:00|23)|9[56])|80781|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\\\d|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))12\",\"10(?:1(?:0|23)|9[56])|2[0-57-9](?:1(?:00|23)|9[56])|807812|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\\\d|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))123\",\"10(?:1(?:0|23)|9[56])|2[0-57-9](?:1(?:00|23)|9[56])|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\\\d|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:078|1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))123\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"3(?:[157]|35|49|9[1-68])|4(?:[17]|2[179]|6[47-9]|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])|(?:4[35]|59|85)[1-9]\",\"(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))[19]\",\"85[23](?:10|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:10|9[56])\",\"85[23](?:100|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:100|9[56])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"(?:4|80)0\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"10|2(?:[02-57-9]|1[1-9])\",\"10|2(?:[02-57-9]|1[1-9])\",\"10[0-79]|2(?:[02-57-9]|1[1-79])|(?:10|21)8(?:0[1-9]|[1-9])\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"3(?:[3-59]|7[02-68])|4(?:[26-8]|3[3-9]|5[2-9])|5(?:3[03-9]|[468]|7[028]|9[2-46-9])|6|7(?:[0-247]|3[04-9]|5[0-4689]|6[2368])|8(?:[1-358]|9[1-7])|9(?:[013479]|5[1-5])|(?:[34]1|55|79|87)[02-9]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{7,8})\",\"$1 $2\",[\"9\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"80\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-578]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"1[3-9]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"[12]\"],\"0$1\",1]],\"0\",0,\"(1(?:[12]\\\\d|79)\\\\d\\\\d)|0\",0,0,0,0,\"00\"],\"CO\":[\"57\",\"00(?:4(?:[14]4|56)|[579])\",\"(?:46|60\\\\d\\\\d)\\\\d{6}|(?:1\\\\d|[39])\\\\d{9}\",[8,10,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"46\"]],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"6|90\"],\"($1)\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"3[0-357]|9[14]\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{7})\",\"$1-$2-$3\",[\"1\"],\"0$1\",0,\"$1 $2 $3\"]],\"0\",0,\"0([3579]|4(?:[14]4|56))?\"],\"CR\":[\"506\",\"00\",\"(?:8\\\\d|90)\\\\d{8}|(?:[24-8]\\\\d{3}|3005)\\\\d{4}\",[8,10],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]|8[3-9]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[89]\"]]],0,0,\"(19(?:0[0-2468]|1[09]|20|66|77|99))\"],\"CU\":[\"53\",\"119\",\"(?:[2-7]|8\\\\d\\\\d)\\\\d{7}|[2-47]\\\\d{6}|[34]\\\\d{5}\",[6,7,8,10],[[\"(\\\\d{2})(\\\\d{4,6})\",\"$1 $2\",[\"2[1-4]|[34]\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{6,7})\",\"$1 $2\",[\"7\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"[56]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"8\"],\"0$1\"]],\"0\"],\"CV\":[\"238\",\"0\",\"(?:[2-59]\\\\d\\\\d|800)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[2-589]\"]]]],\"CW\":[\"599\",\"00\",\"(?:[34]1|60|(?:7|9\\\\d)\\\\d)\\\\d{5}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[3467]\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9[4-8]\"]]],0,0,0,0,0,\"[69]\"],\"CX\":[\"61\",\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"1(?:[0-79]\\\\d{8}(?:\\\\d{2})?|8[0-24-9]\\\\d{7})|[148]\\\\d{8}|1\\\\d{5,7}\",[6,7,8,9,10,12],0,\"0\",0,\"([59]\\\\d{7})$|0\",\"8$1\",0,0,[[\"8(?:51(?:0(?:01|30|59|88)|1(?:17|46|75)|2(?:22|35))|91(?:00[6-9]|1(?:[28]1|49|78)|2(?:09|63)|3(?:12|26|75)|4(?:56|97)|64\\\\d|7(?:0[01]|1[0-2])|958))\\\\d{3}\",[9]],[\"4(?:79[01]|83[0-36-9]|95[0-3])\\\\d{5}|4(?:[0-36]\\\\d|4[047-9]|[58][0-24-9]|7[02-8]|9[0-47-9])\\\\d{6}\",[9]],[\"180(?:0\\\\d{3}|2)\\\\d{3}\",[7,10]],[\"190[0-26]\\\\d{6}\",[10]],0,0,0,0,[\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\",[9]],[\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\",[6,8,10,12]]],\"0011\"],\"CY\":[\"357\",\"00\",\"(?:[279]\\\\d|[58]0)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[257-9]\"]]]],\"CZ\":[\"420\",\"00\",\"(?:[2-578]\\\\d|60)\\\\d{7}|9\\\\d{8,11}\",[9,10,11,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-8]|9[015-7]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"96\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]]]],\"DE\":[\"49\",\"00\",\"[2579]\\\\d{5,14}|49(?:[34]0|69|8\\\\d)\\\\d\\\\d?|49(?:37|49|60|7[089]|9\\\\d)\\\\d{1,3}|49(?:2[024-9]|3[2-689]|7[1-7])\\\\d{1,8}|(?:1|[368]\\\\d|4[0-8])\\\\d{3,13}|49(?:[015]\\\\d|2[13]|31|[46][1-8])\\\\d{1,9}\",[4,5,6,7,8,9,10,11,12,13,14,15],[[\"(\\\\d{2})(\\\\d{3,13})\",\"$1 $2\",[\"3[02]|40|[68]9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,12})\",\"$1 $2\",[\"2(?:0[1-389]|1[124]|2[18]|3[14])|3(?:[35-9][15]|4[015])|906|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1\",\"2(?:0[1-389]|12[0-8])|3(?:[35-9][15]|4[015])|906|2(?:[13][14]|2[18])|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{2,11})\",\"$1 $2\",[\"[24-6]|3(?:[3569][02-46-9]|4[2-4679]|7[2-467]|8[2-46-8])|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]\",\"[24-6]|3(?:3(?:0[1-467]|2[127-9]|3[124578]|7[1257-9]|8[1256]|9[145])|4(?:2[135]|4[13578]|9[1346])|5(?:0[14]|2[1-3589]|6[1-4]|7[13468]|8[13568])|6(?:2[1-489]|3[124-6]|6[13]|7[12579]|8[1-356]|9[135])|7(?:2[1-7]|4[145]|6[1-5]|7[1-4])|8(?:21|3[1468]|6|7[1467]|8[136])|9(?:0[12479]|2[1358]|4[134679]|6[1-9]|7[136]|8[147]|9[1468]))|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]|3[68]4[1347]|3(?:47|60)[1356]|3(?:3[46]|46|5[49])[1246]|3[4579]3[1357]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"138\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{2,10})\",\"$1 $2\",[\"3\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5,11})\",\"$1 $2\",[\"181\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{4,10})\",\"$1 $2 $3\",[\"1(?:3|80)|9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7,8})\",\"$1 $2\",[\"1[67]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7,12})\",\"$1 $2\",[\"8\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{6})\",\"$1 $2\",[\"185\",\"1850\",\"18500\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{7})\",\"$1 $2\",[\"18[68]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{7})\",\"$1 $2\",[\"15[1279]\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{6})\",\"$1 $2\",[\"15[03568]\",\"15(?:[0568]|3[13])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{8})\",\"$1 $2\",[\"18\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{7,8})\",\"$1 $2 $3\",[\"1(?:6[023]|7)\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{2})(\\\\d{7})\",\"$1 $2 $3\",[\"15[279]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{8})\",\"$1 $2 $3\",[\"15\"],\"0$1\"]],\"0\"],\"DJ\":[\"253\",\"00\",\"(?:2\\\\d|77)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[27]\"]]]],\"DK\":[\"45\",\"00\",\"[2-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-9]\"]]]],\"DM\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|767|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-7]\\\\d{6})$|1\",\"767$1\",0,\"767\"],\"DO\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,0,0,0,\"8001|8[024]9\"],\"DZ\":[\"213\",\"00\",\"(?:[1-4]|[5-79]\\\\d|80)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[1-4]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-8]\"],\"0$1\"]],\"0\"],\"EC\":[\"593\",\"00\",\"1\\\\d{9,10}|(?:[2-7]|9\\\\d)\\\\d{7}\",[8,9,10,11],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2-$3\",[\"[2-7]\"],\"(0$1)\",0,\"$1-$2-$3\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],\"EE\":[\"372\",\"00\",\"8\\\\d{9}|[4578]\\\\d{7}|(?:[3-8]\\\\d|90)\\\\d{5}\",[7,8,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[369]|4[3-8]|5(?:[0-2]|5[0-478]|6[45])|7[1-9]|88\",\"[369]|4[3-8]|5(?:[02]|1(?:[0-8]|95)|5[0-478]|6(?:4[0-4]|5[1-589]))|7[1-9]|88\"]],[\"(\\\\d{4})(\\\\d{3,4})\",\"$1 $2\",[\"[45]|8(?:00|[1-49])\",\"[45]|8(?:00[1-9]|[1-49])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]]],\"EG\":[\"20\",\"00\",\"[189]\\\\d{8,9}|[24-6]\\\\d{8}|[135]\\\\d{7}\",[8,9,10],[[\"(\\\\d)(\\\\d{7,8})\",\"$1 $2\",[\"[23]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{6,7})\",\"$1 $2\",[\"1[35]|[4-6]|8[2468]|9[235-7]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{8})\",\"$1 $2\",[\"1\"],\"0$1\"]],\"0\"],\"EH\":[\"212\",\"00\",\"[5-8]\\\\d{8}\",[9],0,\"0\",0,0,0,0,\"528[89]\"],\"ER\":[\"291\",\"00\",\"[178]\\\\d{6}\",[7],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[178]\"],\"0$1\"]],\"0\"],\"ES\":[\"34\",\"00\",\"[5-9]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]00\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-9]\"]]]],\"ET\":[\"251\",\"00\",\"(?:11|[2-579]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-579]\"],\"0$1\"]],\"0\"],\"FI\":[\"358\",\"00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))\",\"[1-35689]\\\\d{4}|7\\\\d{10,11}|(?:[124-7]\\\\d|3[0-46-9])\\\\d{8}|[1-9]\\\\d{5,8}\",[5,6,7,8,9,10,11,12],[[\"(\\\\d{5})\",\"$1\",[\"20[2-59]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,7})\",\"$1 $2\",[\"(?:[1-3]0|[68])0|70[07-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4,8})\",\"$1 $2\",[\"[14]|2[09]|50|7[135]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{6,10})\",\"$1 $2\",[\"7\"],\"0$1\"],[\"(\\\\d)(\\\\d{4,9})\",\"$1 $2\",[\"(?:19|[2568])[1-8]|3(?:0[1-9]|[1-9])|9\"],\"0$1\"]],\"0\",0,0,0,0,\"1[03-79]|[2-9]\",0,\"00\"],\"FJ\":[\"679\",\"0(?:0|52)\",\"45\\\\d{5}|(?:0800\\\\d|[235-9])\\\\d{6}\",[7,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[235-9]|45\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"0\"]]],0,0,0,0,0,0,0,\"00\"],\"FK\":[\"500\",\"00\",\"[2-7]\\\\d{4}\",[5]],\"FM\":[\"691\",\"00\",\"(?:[39]\\\\d\\\\d|820)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[389]\"]]]],\"FO\":[\"298\",\"00\",\"[2-9]\\\\d{5}\",[6],[[\"(\\\\d{6})\",\"$1\",[\"[2-9]\"]]],0,0,\"(10(?:01|[12]0|88))\"],\"FR\":[\"33\",\"00\",\"[1-9]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0 $1\"],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[1-79]\"],\"0$1\"]],\"0\"],\"GA\":[\"241\",\"00\",\"(?:[067]\\\\d|11)\\\\d{6}|[2-7]\\\\d{6}\",[7,8],[[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-7]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"0\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"11|[67]\"],\"0$1\"]],0,0,\"0(11\\\\d{6}|60\\\\d{6}|61\\\\d{6}|6[256]\\\\d{6}|7[467]\\\\d{6})\",\"$1\"],\"GB\":[\"44\",\"00\",\"[1-357-9]\\\\d{9}|[18]\\\\d{8}|8\\\\d{6}\",[7,9,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"800\",\"8001\",\"80011\",\"800111\",\"8001111\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"845\",\"8454\",\"84546\",\"845464\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"800\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{4,5})\",\"$1 $2\",[\"1(?:38|5[23]|69|76|94)\",\"1(?:(?:38|69)7|5(?:24|39)|768|946)\",\"1(?:3873|5(?:242|39[4-6])|(?:697|768)[347]|9467)\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5,6})\",\"$1 $2\",[\"1(?:[2-69][02-9]|[78])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[25]|7(?:0|6[02-9])\",\"[25]|7(?:0|6(?:[03-9]|2[356]))\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"7\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1389]\"],\"0$1\"]],\"0\",0,\"0|180020\",0,0,0,[[\"(?:1(?:1(?:3(?:[0-58]\\\\d\\\\d|73[0-5])|4(?:(?:[0-5]\\\\d|70)\\\\d|69[7-9])|(?:(?:5[0-26-9]|[78][0-49])\\\\d|6(?:[0-4]\\\\d|5[01]))\\\\d)|(?:2(?:(?:0[024-9]|2[3-9]|3[3-79]|4[1-689]|[58][02-9]|6[0-47-9]|7[013-9]|9\\\\d)\\\\d|1(?:[0-7]\\\\d|8[0-3]))|(?:3(?:0\\\\d|1[0-8]|[25][02-9]|3[02-579]|[468][0-46-9]|7[1-35-79]|9[2-578])|4(?:0[03-9]|[137]\\\\d|[28][02-57-9]|4[02-69]|5[0-8]|[69][0-79])|5(?:0[1-35-9]|[16]\\\\d|2[024-9]|3[015689]|4[02-9]|5[03-9]|7[0-35-9]|8[0-468]|9[0-57-9])|6(?:0[034689]|1\\\\d|2[0-35689]|[38][013-9]|4[1-467]|5[0-69]|6[13-9]|7[0-8]|9[0-24578])|7(?:0[0246-9]|2\\\\d|3[0236-8]|4[03-9]|5[0-46-9]|6[013-9]|7[0-35-9]|8[024-9]|9[02-9])|8(?:0[35-9]|2[1-57-9]|3[02-578]|4[0-578]|5[124-9]|6[2-69]|7\\\\d|8[02-9]|9[02569])|9(?:0[02-589]|[18]\\\\d|2[02-689]|3[1-57-9]|4[2-9]|5[0-579]|6[2-47-9]|7[0-24578]|9[2-57]))\\\\d)\\\\d)|2(?:0[013478]|3[0189]|4[017]|8[0-46-9]|9[0-2])\\\\d{3})\\\\d{4}|1(?:2(?:0(?:46[1-4]|87[2-9])|545[1-79]|76(?:2\\\\d|3[1-8]|6[1-6])|9(?:7(?:2[0-4]|3[2-5])|8(?:2[2-8]|7[0-47-9]|8[3-5])))|3(?:6(?:38[2-5]|47[23])|8(?:47[04-9]|64[0157-9]))|4(?:044[1-7]|20(?:2[23]|8\\\\d)|6(?:0(?:30|5[2-57]|6[1-8]|7[2-8])|140)|8(?:052|87[1-3]))|5(?:2(?:4(?:3[2-79]|6\\\\d)|76\\\\d)|6(?:26[06-9]|686))|6(?:06(?:4\\\\d|7[4-79])|295[5-7]|35[34]\\\\d|47(?:24|61)|59(?:5[08]|6[67]|74)|9(?:55[0-4]|77[23]))|7(?:26(?:6[13-9]|7[0-7])|(?:442|688)\\\\d|50(?:2[0-3]|[3-68]2|76))|8(?:27[56]\\\\d|37(?:5[2-5]|8[239])|843[2-58])|9(?:0(?:0(?:6[1-8]|85)|52\\\\d)|3583|4(?:66[1-8]|9(?:2[01]|81))|63(?:23|3[1-4])|9561))\\\\d{3}\",[9,10]],[\"7(?:457[0-57-9]|700[01]|911[028])\\\\d{5}|7(?:[1-3]\\\\d\\\\d|4(?:[0-46-9]\\\\d|5[0-689])|5(?:0[0-8]|[13-9]\\\\d|2[0-35-9])|7(?:0[1-9]|[1-7]\\\\d|8[02-9]|9[0-689])|8(?:[014-9]\\\\d|[23][0-8])|9(?:[024-9]\\\\d|1[02-9]|3[0-689]))\\\\d{6}\",[10]],[\"80[08]\\\\d{7}|800\\\\d{6}|8001111\"],[\"(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\\\d|8[2-49]))\\\\d{7}|845464\\\\d\",[7,10]],[\"70\\\\d{8}\",[10]],0,[\"(?:3[0347]|55)\\\\d{8}\",[10]],[\"76(?:464|652)\\\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\\\d{6}\",[10]],[\"56\\\\d{8}\",[10]]],0,\" x\"],\"GD\":[\"1\",\"011\",\"(?:473|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"473$1\",0,\"473\"],\"GE\":[\"995\",\"00\",\"(?:[3-57]\\\\d\\\\d|800)\\\\d{6}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"70\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"32\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[57]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[348]\"],\"0$1\"]],\"0\"],\"GF\":[\"594\",\"00\",\"(?:[56]94\\\\d|7093)\\\\d{5}|(?:80|9\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-7]|9[47]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[89]\"],\"0$1\"]],\"0\"],\"GG\":[\"44\",\"00\",\"(?:1481|[357-9]\\\\d{3})\\\\d{6}|8\\\\d{6}(?:\\\\d{2})?\",[7,9,10],0,\"0\",0,\"([25-9]\\\\d{5})$|0|180020\",\"1481$1\",0,0,[[\"1481[25-9]\\\\d{5}\",[10]],[\"7(?:(?:781|839)\\\\d|911[17])\\\\d{5}\",[10]],[\"80[08]\\\\d{7}|800\\\\d{6}|8001111\"],[\"(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\\\d|8[0-3]))\\\\d{7}|845464\\\\d\",[7,10]],[\"70\\\\d{8}\",[10]],0,[\"(?:3[0347]|55)\\\\d{8}\",[10]],[\"76(?:464|652)\\\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\\\d{6}\",[10]],[\"56\\\\d{8}\",[10]]]],\"GH\":[\"233\",\"00\",\"(?:[235]\\\\d{3}|800)\\\\d{5}\",[8,9],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[235]\"],\"0$1\"]],\"0\"],\"GI\":[\"350\",\"00\",\"(?:[25]\\\\d|60)\\\\d{6}\",[8],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"2\"]]]],\"GL\":[\"299\",\"00\",\"(?:19|[2-689]\\\\d|70)\\\\d{4}\",[6],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"19|[2-9]\"]]]],\"GM\":[\"220\",\"00\",\"[2-9]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-9]\"]]]],\"GN\":[\"224\",\"00\",\"722\\\\d{6}|(?:3|6\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"3\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[67]\"]]]],\"GP\":[\"590\",\"00\",\"(?:590\\\\d|7090)\\\\d{5}|(?:69|80|9\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-79]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"590(?:0[1-68]|[14][0-24-9]|2[0-68]|3[1-9]|5[3-579]|[68][0-689]|7[08]|9\\\\d)\\\\d{4}\"],[\"(?:69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5])|4(?:0[89]|1[2-6]|9\\\\d)|6(?:1[016-9]|5[0-4]|[67]\\\\d))|7090[0-4])\\\\d{4}\"],[\"80[0-5]\\\\d{6}\"],0,0,0,0,0,[\"9(?:(?:39[5-7]|76[018])\\\\d|475[0-6])\\\\d{4}\"]]],\"GQ\":[\"240\",\"00\",\"222\\\\d{6}|(?:3\\\\d|55|[89]0)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[235]\"]],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[89]\"]]]],\"GR\":[\"30\",\"00\",\"5005000\\\\d{3}|8\\\\d{9,11}|(?:[269]\\\\d|70)\\\\d{8}\",[10,11,12],[[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"21|7\"]],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"2(?:2|3[2-57-9]|4[2-469]|5[2-59]|6[2-9]|7[2-69]|8[2-49])|5\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2689]\"]],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{5})\",\"$1 $2 $3\",[\"8\"]]]],\"GT\":[\"502\",\"00\",\"80\\\\d{6}|(?:1\\\\d{3}|[2-7])\\\\d{7}\",[8,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-8]\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]]]],\"GU\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|671|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"671$1\",0,\"671\"],\"GW\":[\"245\",\"00\",\"[49]\\\\d{8}|4\\\\d{6}\",[7,9],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"40\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[49]\"]]]],\"GY\":[\"592\",\"001\",\"(?:[2-8]\\\\d{3}|9008)\\\\d{3}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-9]\"]]]],\"HK\":[\"852\",\"00(?:30|5[09]|[126-9]?)\",\"8[0-46-9]\\\\d{6,7}|9\\\\d{4,7}|(?:[2-7]|9\\\\d{3})\\\\d{7}\",[5,6,7,8,9,11],[[\"(\\\\d{3})(\\\\d{2,5})\",\"$1 $2\",[\"900\",\"9003\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]|8[1-4]|9(?:0[1-9]|[1-8])\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]]],0,0,0,0,0,0,0,\"00\"],\"HN\":[\"504\",\"00\",\"8\\\\d{10}|[237-9]\\\\d{7}\",[8,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"[237-9]\"]]]],\"HR\":[\"385\",\"00\",\"[2-69]\\\\d{8}|80\\\\d{5,7}|[1-79]\\\\d{7}|6\\\\d{6}\",[7,8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"6[01]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"6|7[245]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-57]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],\"0\"],\"HT\":[\"509\",\"00\",\"[2-589]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-589]\"]]]],\"HU\":[\"36\",\"00\",\"[235-7]\\\\d{8}|[1-9]\\\\d{7}\",[8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"(06 $1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[27][2-9]|3[2-7]|4[24-9]|5[2-79]|6|8[2-57-9]|9[2-69]\"],\"(06 $1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-9]\"],\"06 $1\"]],\"06\"],\"ID\":[\"62\",\"00[89]\",\"00[1-9]\\\\d{9,14}|(?:[1-36]|8\\\\d{5})\\\\d{6}|00\\\\d{9}|[1-9]\\\\d{8,10}|[2-9]\\\\d{7}\",[7,8,9,10,11,12,13,14,15,16,17],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"15\"]],[\"(\\\\d{2})(\\\\d{5,9})\",\"$1 $2\",[\"2[124]|[36]1\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{5,7})\",\"$1 $2\",[\"800\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5,8})\",\"$1 $2\",[\"[2-79]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{3})\",\"$1-$2-$3\",[\"8[1-35-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6,8})\",\"$1 $2\",[\"1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"804\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"80\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1-$2-$3\",[\"8\"],\"0$1\"]],\"0\"],\"IE\":[\"353\",\"00\",\"(?:1\\\\d|[2569])\\\\d{6,8}|4\\\\d{6,9}|7\\\\d{8}|8\\\\d{8,9}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"2[24-9]|47|58|6[237-9]|9[35-9]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[45]0\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2569]|4[1-69]|7[14]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"70\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"81\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"4\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"IL\":[\"972\",\"0(?:0|1[2-9])\",\"1\\\\d{6}(?:\\\\d{3,5})?|[57]\\\\d{8}|[1-489]\\\\d{7}\",[7,8,9,10,11,12],[[\"(\\\\d{4})(\\\\d{3})\",\"$1-$2\",[\"125\"]],[\"(\\\\d{4})(\\\\d{2})(\\\\d{2})\",\"$1-$2-$3\",[\"121\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[2-489]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[57]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3\",[\"12\"]],[\"(\\\\d{4})(\\\\d{6})\",\"$1-$2\",[\"159\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3-$4\",[\"1[7-9]\"]],[\"(\\\\d{3})(\\\\d{1,2})(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3-$4\",[\"15\"]]],\"0\"],\"IM\":[\"44\",\"00\",\"1624\\\\d{6}|(?:[3578]\\\\d|90)\\\\d{8}\",[10],0,\"0\",0,\"([25-8]\\\\d{5})$|0|180020\",\"1624$1\",0,\"74576|(?:16|7[56])24\"],\"IN\":[\"91\",\"00\",\"(?:000800|[2-9]\\\\d\\\\d)\\\\d{7}|1\\\\d{7,12}\",[8,9,10,11,12,13],[[\"(\\\\d{8})\",\"$1\",[\"5(?:0|2[23]|3[03]|[67]1|88)\",\"5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|888)\",\"5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|8888)\"],0,1],[\"(\\\\d{4})(\\\\d{4,5})\",\"$1 $2\",[\"180\",\"1800\"],0,1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"140\"],0,1],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"11|2[02]|33|4[04]|79[1-7]|80[2-46]\",\"11|2[02]|33|4[04]|79(?:[1-6]|7[19])|80(?:[2-4]|6[0-589])\",\"11|2[02]|33|4[04]|79(?:[124-6]|3(?:[02-9]|1[0-24-9])|7(?:1|9[1-6]))|80(?:[2-4]|6[0-589])\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1(?:2[0-249]|3[0-25]|4[145]|[68]|7[1257])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|5[12]|[78]1)|6(?:12|[2-4]1|5[17]|6[13]|80)|7(?:12|3[134]|4[47]|61|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)|(?:43|59|75)[15]|(?:1[59]|29|67|72)[14]\",\"1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|674|7(?:(?:2[14]|3[34]|5[15])[2-6]|61[346]|88[0-8])|8(?:70[2-6]|84[235-7]|91[3-7])|(?:1(?:29|60|8[06])|261|552|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))[2-7]\",\"1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12(?:[2-6]|7[0-8])|74[2-7])|7(?:(?:2[14]|5[15])[2-6]|3171|61[346]|88(?:[2-7]|82))|8(?:70[2-6]|84(?:[2356]|7[19])|91(?:[3-6]|7[19]))|73[134][2-6]|(?:74[47]|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[2-6]|7[19])|(?:1(?:29|60|8[06])|261|552|6(?:[2-4]1|5[17]|6[13]|7(?:1|4[0189])|80)|7(?:12|88[01]))[2-7]\"],\"0$1\",1],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2[2457-9]|3[2-5]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1[013-9]|28|3[129]|4[1-35689]|5[29]|6[02-5]|70)|807\",\"1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2(?:[2457]|84|95)|3(?:[2-4]|55)|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1(?:[013-8]|9[6-9])|28[6-8]|3(?:17|2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4|5[0-367])|70[13-7])|807[19]\",\"1(?:[2-479]|5(?:[0236-9]|5[013-9]))|[2-5]|6(?:2(?:84|95)|355|8(?:28[235-7]|3))|73179|807(?:1|9[1-3])|(?:1552|6(?:(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|7[235689])\\\\d|8(?:[14-6]\\\\d|2[0-79]))|7(?:1(?:[013-8]\\\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\\\d|5[0-367])|70[13-7]))[2-7]\"],\"0$1\",1],[\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"[6-9]\"],\"0$1\",1],[\"(\\\\d{4})(\\\\d{2,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1(?:6|8[06])\",\"1(?:6|8[06]0)\"],0,1],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"18\"],0,1]],\"0\"],\"IO\":[\"246\",\"00\",\"3\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"3\"]]]],\"IQ\":[\"964\",\"00\",\"(?:1|7\\\\d\\\\d)\\\\d{7}|[2-6]\\\\d{7,8}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-6]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\"],\"IR\":[\"98\",\"00\",\"[1-9]\\\\d{9}|(?:[1-8]\\\\d\\\\d|9)\\\\d{3,4}\",[4,5,6,7,10],[[\"(\\\\d{4,5})\",\"$1\",[\"96\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4,5})\",\"$1 $2\",[\"(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])[12689]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-8]\"],\"0$1\"]],\"0\"],\"IS\":[\"354\",\"00|1(?:0(?:01|[12]0)|100)\",\"(?:38\\\\d|[4-9])\\\\d{6}\",[7,9],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[4-9]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"3\"]]],0,0,0,0,0,0,0,\"00\"],\"IT\":[\"39\",\"00\",\"0\\\\d{5,11}|1\\\\d{8,10}|3(?:[0-8]\\\\d{7,10}|9\\\\d{7,8})|(?:43|55|70)\\\\d{8}|8\\\\d{5}(?:\\\\d{2,4})?\",[6,7,8,9,10,11,12],[[\"(\\\\d{2})(\\\\d{4,6})\",\"$1 $2\",[\"0[26]\"]],[\"(\\\\d{3})(\\\\d{3,6})\",\"$1 $2\",[\"0[13-57-9][0159]|8(?:03|4[17]|9[2-5])\",\"0[13-57-9][0159]|8(?:03|4[17]|9(?:2|3[04]|[45][0-4]))\"]],[\"(\\\\d{4})(\\\\d{2,6})\",\"$1 $2\",[\"0(?:[13-579][2-46-8]|8[236-8])\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"894\"]],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0[26]|5\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"1(?:44|[679])|[378]|43\"]],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0[13-57-9][0159]|14\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{5})\",\"$1 $2 $3\",[\"0[26]\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"[03]\"]]],0,0,0,0,0,0,[[\"0(?:669[0-79]\\\\d{1,6}|831\\\\d{2,8})|0(?:1(?:[0159]\\\\d|[27][1-5]|31|4[1-4]|6[1356]|8[2-57])|2\\\\d\\\\d|3(?:[0159]\\\\d|2[1-4]|3[12]|[48][1-6]|6[2-59]|7[1-7])|4(?:[0159]\\\\d|[23][1-9]|4[245]|6[1-5]|7[1-4]|81)|5(?:[0159]\\\\d|2[1-5]|3[2-6]|4[1-79]|6[4-6]|7[1-578]|8[3-8])|6(?:[0-57-9]\\\\d|6[0-8])|7(?:[0159]\\\\d|2[12]|3[1-7]|4[2-46]|6[13569]|7[13-6]|8[1-59])|8(?:[0159]\\\\d|2[3-578]|3[2356]|[6-8][1-5])|9(?:[0159]\\\\d|[238][1-5]|4[12]|6[1-8]|7[1-6]))\\\\d{2,7}\"],[\"3[2-9]\\\\d{7,8}|(?:31|43)\\\\d{8}\",[9,10]],[\"80(?:0\\\\d{3}|3)\\\\d{3}\",[6,9]],[\"(?:0878\\\\d{3}|89(?:2\\\\d|3[04]|4(?:[0-4]|[5-9]\\\\d\\\\d)|5[0-4]))\\\\d\\\\d|(?:1(?:44|6[346])|89(?:38|5[5-9]|9))\\\\d{6}\",[6,8,9,10]],[\"1(?:78\\\\d|99)\\\\d{6}\",[9,10]],[\"3[2-8]\\\\d{9,10}\",[11,12]],0,0,[\"55\\\\d{8}\",[10]],[\"84(?:[08]\\\\d{3}|[17])\\\\d{3}\",[6,9]]]],\"JE\":[\"44\",\"00\",\"1534\\\\d{6}|(?:[3578]\\\\d|90)\\\\d{8}\",[10],0,\"0\",0,\"([0-24-8]\\\\d{5})$|0|180020\",\"1534$1\",0,0,[[\"1534[0-24-8]\\\\d{5}\"],[\"7(?:(?:(?:50|82)9|937)\\\\d|7(?:00[378]|97\\\\d))\\\\d{5}\"],[\"80(?:07(?:35|81)|8901)\\\\d{4}\"],[\"(?:8(?:4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|90(?:066[59]|1810|71(?:07|55)))\\\\d{4}\"],[\"701511\\\\d{4}\"],0,[\"(?:3(?:0(?:07(?:35|81)|8901)|3\\\\d{4}|4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|55\\\\d{4})\\\\d{4}\"],[\"76(?:464|652)\\\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\\\d{6}\"],[\"56\\\\d{8}\"]]],\"JM\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|658|900)\\\\d{7}\",[10],0,\"1\",0,0,0,0,\"658|876\"],\"JO\":[\"962\",\"00\",\"(?:(?:[2689]|7\\\\d)\\\\d|32|427|53)\\\\d{6}\",[8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2356]|87\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"70\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[47]\"],\"0$1\"]],\"0\"],\"JP\":[\"81\",\"010\",\"00[1-9]\\\\d{6,14}|[25-9]\\\\d{9}|(?:00|[1-9]\\\\d\\\\d)\\\\d{6}\",[8,9,10,11,12,13,14,15,16,17],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3\",[\"(?:12|57|99)0\"],\"0$1\"],[\"(\\\\d{4})(\\\\d)(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|499|5(?:76|97)|746|8(?:3[89]|47|51)|9(?:80|9[16])\",\"1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:76|97)9|7468|8(?:3(?:8[7-9]|96)|477|51[2-9])|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]\",\"1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:769|979[2-69])|7468|8(?:3(?:8[7-9]|96[2457-9])|477|51[2-9])|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"60\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"3|4(?:2[09]|7[01])|6[1-9]\",\"3|4(?:2(?:0|9[02-69])|7(?:0[019]|1))|6[1-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:1|5[45]|77|88|9[69])|2(?:2[1-37]|3[0-269]|4[59]|5|6[24]|7[1-358]|8[1369]|9[0-38])|4(?:[28][1-9]|3[0-57]|[45]|6[248]|7[2-579]|9[29])|5(?:2|3[0459]|4[0-369]|5[29]|8[02389]|9[0-389])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9[2-6])|8(?:2[124589]|3[26-9]|49|51|6|7[0-468]|8[68]|9[019])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9[1-489])\",\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2(?:[127]|3[014-9])|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9[19])|62|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|8[1-9]|9[29])|5(?:2|3(?:[045]|9[0-8])|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0-2469])|3(?:[29]|60)|49|51|6(?:[0-24]|36|5[0-3589]|7[23]|9[01459])|7[0-468]|8[68])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3[34]|4[0178]))|(?:264|837)[016-9]|2(?:57|93)[015-9]|(?:25[0468]|422|838)[01]|(?:47[59]|59[89]|8(?:6[68]|9))[019]\",\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3(?:[045]|9(?:[0-58]|6[4-9]|7[0-35689]))|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0169])|3(?:[29]|60|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[2-57-9]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|7(?:2[2-468]|3[78])|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:8294|96)[1-3]|2(?:57|93)[015-9]|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|8292|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3\",[\"[14]|[289][2-9]|5[3-9]|7[2-4679]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"800\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[25-9]\"],\"0$1\"]],\"0\",0,\"(000[2569]\\\\d{4,6})$|(?:(?:003768)0?)|0\",\"$1\"],\"KE\":[\"254\",\"000\",\"(?:[17]\\\\d\\\\d|900)\\\\d{6}|(?:2|80)0\\\\d{6,7}|[4-6]\\\\d{6,8}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{5,7})\",\"$1 $2\",[\"[24-6]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[17]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],\"0\"],\"KG\":[\"996\",\"00\",\"8\\\\d{9}|[235-9]\\\\d{8}\",[9,10],[[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"3(?:1[346]|[24-79])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[235-79]|88\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d)(\\\\d{2,3})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"KH\":[\"855\",\"00[14-9]\",\"1\\\\d{9}|[1-9]\\\\d{7,8}\",[8,9,10],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],\"KI\":[\"686\",\"00\",\"(?:[37]\\\\d|6[0-79])\\\\d{6}|(?:[2-48]\\\\d|50)\\\\d{3}\",[5,8],0,\"0\"],\"KM\":[\"269\",\"00\",\"[3478]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[3478]\"]]]],\"KN\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-7]\\\\d{6})$|1\",\"869$1\",0,\"869\"],\"KP\":[\"850\",\"00|99\",\"85\\\\d{6}|(?:19\\\\d|[2-7])\\\\d{7}\",[8,10],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-7]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"]],\"0\"],\"KR\":[\"82\",\"00(?:[125689]|3(?:[46]5|91)|7(?:00|27|3|55|6[126]))\",\"00[1-9]\\\\d{8,11}|(?:[12]|5\\\\d{3})\\\\d{7}|[13-6]\\\\d{9}|(?:[1-6]\\\\d|80)\\\\d{7}|[3-6]\\\\d{4,5}|(?:00|7)0\\\\d{8}\",[5,6,8,9,10,11,12,13,14],[[\"(\\\\d{2})(\\\\d{3,4})\",\"$1-$2\",[\"(?:3[1-3]|[46][1-4]|5[1-5])1\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"1\"]],[\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[36]0|8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"[1346]|5[1-5]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[57]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\",\"$1-$2-$3\",[\"5\"],\"0$1\"]],\"0\",0,\"0(8(?:[1-46-8]|5\\\\d\\\\d))?\"],\"KW\":[\"965\",\"00\",\"18\\\\d{5}|(?:[2569]\\\\d|41)\\\\d{6}\",[7,8],[[\"(\\\\d{4})(\\\\d{3,4})\",\"$1 $2\",[\"[169]|2(?:[235]|4[1-35-9])|52\"]],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[245]\"]]]],\"KY\":[\"1\",\"011\",\"(?:345|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"345$1\",0,\"345\"],\"KZ\":[\"7\",\"810\",\"(?:33622|8\\\\d{8})\\\\d{5}|[78]\\\\d{9}\",[10,14],0,\"8\",0,0,0,0,\"33622|7\",0,\"8~10\"],\"LA\":[\"856\",\"00\",\"[23]\\\\d{9}|3\\\\d{8}|(?:[235-8]\\\\d|41)\\\\d{6}\",[8,9,10],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2[13]|3[14]|[4-8]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"3\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[23]\"],\"0$1\"]],\"0\"],\"LB\":[\"961\",\"00\",\"[27-9]\\\\d{7}|[13-9]\\\\d{6}\",[7,8],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[13-69]|7(?:[2-57]|62|8[0-6]|9[04-9])|8[02-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[27-9]\"]]],\"0\"],\"LC\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|758|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-8]\\\\d{6})$|1\",\"758$1\",0,\"758\"],\"LI\":[\"423\",\"00\",\"[68]\\\\d{8}|(?:[2378]\\\\d|90)\\\\d{5}\",[7,9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[2379]|8(?:0[09]|7)\",\"[2379]|8(?:0(?:02|9)|7)\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"69\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]]],\"0\",0,\"(1001)|0\"],\"LK\":[\"94\",\"00\",\"[1-9]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[1-689]\"],\"0$1\"]],\"0\"],\"LR\":[\"231\",\"00\",\"(?:[2457]\\\\d|33|88)\\\\d{7}|(?:2\\\\d|[4-6])\\\\d{6}\",[7,8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"4[67]|[56]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-578]\"],\"0$1\"]],\"0\"],\"LS\":[\"266\",\"00\",\"(?:[256]\\\\d\\\\d|800)\\\\d{5}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2568]\"]]]],\"LT\":[\"370\",\"00\",\"(?:[3469]\\\\d|52|[78]0)\\\\d{6}\",[8],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"52[0-7]\"],\"(0-$1)\",1],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[7-9]\"],\"0 $1\",1],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"37|4(?:[15]|6[1-8])\"],\"(0-$1)\",1],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[3-6]\"],\"(0-$1)\",1]],\"0\",0,\"[08]\"],\"LU\":[\"352\",\"00\",\"35[013-9]\\\\d{4,8}|6\\\\d{8}|35\\\\d{2,4}|(?:[2457-9]\\\\d|3[0-46-9])\\\\d{2,9}\",[4,5,6,7,8,9,10,11],[[\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"20[2-689]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,2})\",\"$1 $2 $3 $4\",[\"2(?:[0367]|4[3-8])\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"80[01]|90[015]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"20\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,2})\",\"$1 $2 $3 $4 $5\",[\"2(?:[0367]|4[3-8])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,5})\",\"$1 $2 $3 $4\",[\"[3-57]|8[13-9]|9(?:0[89]|[2-579])|(?:2|80)[2-9]\"]]],0,0,\"(15(?:0[06]|1[12]|[35]5|4[04]|6[26]|77|88|99)\\\\d)\"],\"LV\":[\"371\",\"00\",\"(?:[268]\\\\d|78|90)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2679]|8[01]\"]]]],\"LY\":[\"218\",\"00\",\"[2-9]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{7})\",\"$1-$2\",[\"[2-9]\"],\"0$1\"]],\"0\"],\"MA\":[\"212\",\"00\",\"[5-8]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"5[45]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5})\",\"$1-$2\",[\"5(?:[19]|2[2-46-9]|3[3-9])|8(?:0[89]|92)\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1-$2\",[\"8\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1-$2\",[\"[5-7]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"5(?:(?:18|4[0679]|5[03])\\\\d|2(?:[0-25-79]\\\\d|3[1-578]|4[02-46-8]|8[0235-7])|3(?:[0-47]\\\\d|5[02-9]|6[02-8]|8[014-9]|9[3-9]))\\\\d{5}\"],[\"(?:6(?:[0-79]\\\\d|8[0-247-9])|7(?:[016-8]\\\\d|2[0-8]|5[0-5]))\\\\d{6}\"],[\"80[0-7]\\\\d{6}\"],[\"89\\\\d{7}\"],0,0,0,0,[\"(?:592(?:4[0-2]|93)|80[89]\\\\d\\\\d)\\\\d{4}\"]]],\"MC\":[\"377\",\"00\",\"(?:[3489]|[67]\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"4\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[389]\"]],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[67]\"],\"0$1\"]],\"0\"],\"MD\":[\"373\",\"00\",\"(?:[235-7]\\\\d|[89]0)\\\\d{6}\",[8],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"22|3\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[25-7]\"],\"0$1\"]],\"0\"],\"ME\":[\"382\",\"00\",\"(?:20|[3-79]\\\\d)\\\\d{6}|80\\\\d{6,7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-9]\"],\"0$1\"]],\"0\"],\"MF\":[\"590\",\"00\",\"(?:590\\\\d|7090)\\\\d{5}|(?:69|80|9\\\\d)\\\\d{7}\",[9],0,\"0\",0,0,0,0,0,[[\"590(?:0[079]|[14]3|[27][79]|3[03-7]|5[0-268]|87)\\\\d{4}\"],[\"(?:69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5])|4(?:0[89]|1[2-6]|9\\\\d)|6(?:1[016-9]|5[0-4]|[67]\\\\d))|7090[0-4])\\\\d{4}\"],[\"80[0-5]\\\\d{6}\"],0,0,0,0,0,[\"9(?:(?:39[5-7]|76[018])\\\\d|475[0-6])\\\\d{4}\"]]],\"MG\":[\"261\",\"00\",\"[23]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[23]\"],\"0$1\"]],\"0\",0,\"([24-9]\\\\d{6})$|0\",\"20$1\"],\"MH\":[\"692\",\"011\",\"329\\\\d{4}|(?:[256]\\\\d|45)\\\\d{5}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-6]\"]]],\"1\"],\"MK\":[\"389\",\"00\",\"[2-578]\\\\d{7}\",[8],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2|34[47]|4(?:[37]7|5[47]|64)\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[347]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[58]\"],\"0$1\"]],\"0\"],\"ML\":[\"223\",\"00\",\"[24-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24-9]\"]]]],\"MM\":[\"95\",\"00\",\"1\\\\d{5,7}|95\\\\d{6}|(?:[4-7]|9[0-46-9])\\\\d{6,8}|(?:2|8\\\\d)\\\\d{5,8}\",[6,7,8,9,10],[[\"(\\\\d)(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"16|2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"4(?:[2-46]|5[3-5])|5|6(?:[1-689]|7[235-7])|7(?:[0-4]|5[2-7])|8[1-5]|(?:60|86)[23]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[12]|452|678|86\",\"[12]|452|6788|86\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[4-7]|8[1-35]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4,6})\",\"$1 $2 $3\",[\"9(?:2[0-4]|[35-9]|4[137-9])\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"92\"],\"0$1\"],[\"(\\\\d)(\\\\d{5})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],\"0\"],\"MN\":[\"976\",\"001\",\"[12]\\\\d{7,9}|[5-9]\\\\d{7}\",[8,9,10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[12]1\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[5-9]\"]],[\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"[12]2[1-3]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5,6})\",\"$1 $2\",[\"[12](?:27|3[2-8]|4[2-68]|5[1-4689])\",\"[12](?:27|3[2-8]|4[2-68]|5[1-4689])[0-3]\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{4,5})\",\"$1 $2\",[\"[12]\"],\"0$1\"]],\"0\"],\"MO\":[\"853\",\"00\",\"0800\\\\d{3}|(?:28|[68]\\\\d)\\\\d{6}\",[7,8],[[\"(\\\\d{4})(\\\\d{3})\",\"$1 $2\",[\"0\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[268]\"]]]],\"MP\":[\"1\",\"011\",\"[58]\\\\d{9}|(?:67|90)0\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"670$1\",0,\"670\"],\"MQ\":[\"596\",\"00\",\"(?:596\\\\d|7091)\\\\d{5}|(?:69|[89]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-79]|8(?:0[6-9]|[36])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"MR\":[\"222\",\"00\",\"(?:[2-4]\\\\d\\\\d|800)\\\\d{5}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-48]\"]]]],\"MS\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|664|900)\\\\d{7}\",[10],0,\"1\",0,\"([34]\\\\d{6})$|1\",\"664$1\",0,\"664\"],\"MT\":[\"356\",\"00\",\"3550\\\\d{4}|(?:[2579]\\\\d\\\\d|800)\\\\d{5}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2357-9]\"]]]],\"MU\":[\"230\",\"0(?:0|[24-7]0|3[03])\",\"(?:[57]|8\\\\d\\\\d)\\\\d{7}|[2-468]\\\\d{6}\",[7,8,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-46]|8[013]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[57]\"]],[\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"8\"]]],0,0,0,0,0,0,0,\"020\"],\"MV\":[\"960\",\"0(?:0|19)\",\"(?:800|9[0-57-9]\\\\d)\\\\d{7}|[34679]\\\\d{6}\",[7,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[34679]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"]]],0,0,0,0,0,0,0,\"00\"],\"MW\":[\"265\",\"00\",\"(?:[1289]\\\\d|31|77)\\\\d{7}|1\\\\d{6}\",[7,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1[2-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[137-9]\"],\"0$1\"]],\"0\"],\"MX\":[\"52\",\"0[09]\",\"[2-9]\\\\d{9}\",[10],[[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"33|5[56]|81\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-9]\"]]],0,0,0,0,0,0,0,\"00\"],\"MY\":[\"60\",\"00\",\"1\\\\d{8,9}|(?:3\\\\d|[4-9])\\\\d{7}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3\",[\"[4-79]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1-$2 $3\",[\"1(?:[02469]|[378][1-9]|53)|8\",\"1(?:[02469]|[37][1-9]|53|8(?:[1-46-9]|5[7-9]))|8\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1-$2 $3\",[\"3\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3-$4\",[\"1(?:[367]|80)\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3\",[\"15\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2 $3\",[\"1\"],\"0$1\"]],\"0\"],\"MZ\":[\"258\",\"00\",\"(?:2|8\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2|8[2-79]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]]],\"NA\":[\"264\",\"00\",\"[68]\\\\d{7,8}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"88\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"6\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"87\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],\"0\"],\"NC\":[\"687\",\"00\",\"(?:050|[2-57-9]\\\\d\\\\d)\\\\d{3}\",[6],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1.$2.$3\",[\"[02-57-9]\"]]]],\"NE\":[\"227\",\"00\",\"[027-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"08\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[089]|2[013]|7[0467]\"]]]],\"NF\":[\"672\",\"00\",\"[13]\\\\d{5}\",[6],[[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"1[0-3]\"]],[\"(\\\\d)(\\\\d{5})\",\"$1 $2\",[\"[13]\"]]],0,0,\"([0-258]\\\\d{4})$\",\"3$1\"],\"NG\":[\"234\",\"009\",\"(?:20|9\\\\d)\\\\d{8}|[78]\\\\d{9,13}\",[10,11,12,13,14],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[7-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"20[129]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})(\\\\d{5,6})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"]],\"0\"],\"NI\":[\"505\",\"00\",\"(?:1800|[25-8]\\\\d{3})\\\\d{4}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[125-8]\"]]]],\"NL\":[\"31\",\"00\",\"(?:[124-7]\\\\d\\\\d|3(?:[02-9]\\\\d|1[0-8]))\\\\d{6}|8\\\\d{6,9}|9\\\\d{6,10}|1\\\\d{4,5}\",[5,6,7,8,9,10,11],[[\"(\\\\d{3})(\\\\d{4,7})\",\"$1 $2\",[\"[89]0\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"66\"],\"0$1\"],[\"(\\\\d)(\\\\d{8})\",\"$1 $2\",[\"6\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1[16-8]|2[259]|3[124]|4[17-9]|5[124679]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-578]|91\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],\"0\"],\"NO\":[\"47\",\"00\",\"(?:0|[2-9]\\\\d{3})\\\\d{4}\",[5,8],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-79]\"]]],0,0,0,0,0,\"[02-689]|7[0-8]\"],\"NP\":[\"977\",\"00\",\"(?:1\\\\d|9)\\\\d{9}|[1-9]\\\\d{7}\",[8,10,11],[[\"(\\\\d)(\\\\d{7})\",\"$1-$2\",[\"1[2-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1-$2\",[\"1[01]|[2-8]|9(?:[1-59]|[67][2-6])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1-$2\",[\"9\"]]],\"0\"],\"NR\":[\"674\",\"00\",\"(?:222|444|(?:55|8\\\\d)\\\\d|666|777|999)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[24-9]\"]]]],\"NU\":[\"683\",\"00\",\"(?:[4-7]|888\\\\d)\\\\d{3}\",[4,7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"8\"]]]],\"NZ\":[\"64\",\"0(?:0|161)\",\"[1289]\\\\d{9}|50\\\\d{5}(?:\\\\d{2,3})?|[27-9]\\\\d{7,8}|(?:[34]\\\\d|6[0-35-9])\\\\d{6}|8\\\\d{4,6}\",[5,6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{3,8})\",\"$1 $2\",[\"8[1-79]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"50[036-8]|8|90\",\"50(?:[0367]|88)|8|90\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"24|[346]|7[2-57-9]|9[2-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2(?:10|74)|[589]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1|2[028]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,5})\",\"$1 $2 $3\",[\"2(?:[169]|7[0-35-9])|7\"],\"0$1\"]],\"0\",0,0,0,0,0,0,\"00\"],\"OM\":[\"968\",\"00\",\"(?:1505|[279]\\\\d{3}|500)\\\\d{4}|800\\\\d{5,6}\",[7,8,9],[[\"(\\\\d{3})(\\\\d{4,6})\",\"$1 $2\",[\"[58]\"]],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"2\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[179]\"]]]],\"PA\":[\"507\",\"00\",\"(?:00800|8\\\\d{3})\\\\d{6}|[68]\\\\d{7}|[1-57-9]\\\\d{6}\",[7,8,10,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[1-57-9]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"[68]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]]],\"PE\":[\"51\",\"00|19(?:1[124]|77|90)00\",\"(?:[14-8]|9\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"80\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"1\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[4-8]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"]]],\"0\",0,0,0,0,0,0,\"00\",\" Anexo \"],\"PF\":[\"689\",\"00\",\"4\\\\d{5}(?:\\\\d{2})?|8\\\\d{7,8}\",[6,8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"44\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"4|8[7-9]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]]]],\"PG\":[\"675\",\"00|140[1-3]\",\"(?:180|[78]\\\\d{3})\\\\d{4}|(?:[2-589]\\\\d|64)\\\\d{5}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"18|[2-69]|85\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[78]\"]]],0,0,0,0,0,0,0,\"00\"],\"PH\":[\"63\",\"00\",\"(?:[2-7]|9\\\\d)\\\\d{8}|2\\\\d{5}|(?:1800|8)\\\\d{7,9}\",[6,8,9,10,11,12,13],[[\"(\\\\d)(\\\\d{5})\",\"$1 $2\",[\"2\"],\"(0$1)\"],[\"(\\\\d{4})(\\\\d{4,6})\",\"$1 $2\",[\"3(?:23|39|46)|4(?:2[3-6]|[35]9|4[26]|76)|544|88[245]|(?:52|64|86)2\",\"3(?:230|397|461)|4(?:2(?:35|[46]4|51)|396|4(?:22|63)|59[347]|76[15])|5(?:221|446)|642[23]|8(?:622|8(?:[24]2|5[13]))\"],\"(0$1)\"],[\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"346|4(?:27|9[35])|883\",\"3469|4(?:279|9(?:30|56))|8834\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-7]|8[2-8]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{4})(\\\\d{1,2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"1\"]]],\"0\"],\"PK\":[\"92\",\"00\",\"122\\\\d{6}|[24-8]\\\\d{10,11}|9(?:[013-9]\\\\d{8,10}|2(?:[01]\\\\d\\\\d|2(?:[06-8]\\\\d|1[01]))\\\\d{7})|(?:[2-8]\\\\d{3}|92(?:[0-7]\\\\d|8[1-9]))\\\\d{6}|[24-9]\\\\d{8}|[89]\\\\d{7}\",[8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{2,7})\",\"$1 $2 $3\",[\"[89]0\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"1\"]],[\"(\\\\d{3})(\\\\d{6,7})\",\"$1 $2\",[\"2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8])\",\"9(?:2[3-8]|98)|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:22|3[27-9]|4[2-6]|6[3569]|9[25-7]))[2-9]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{7,8})\",\"$1 $2\",[\"(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]\"],\"(0$1)\"],[\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"58\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"3\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[24-9]\"],\"(0$1)\"]],\"0\"],\"PL\":[\"48\",\"00\",\"(?:6|8\\\\d\\\\d)\\\\d{7}|[1-9]\\\\d{6}(?:\\\\d{2})?|[26]\\\\d{5}\",[6,7,8,9,10],[[\"(\\\\d{5})\",\"$1\",[\"19\"]],[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"11|20|64\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])1\",\"(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])19\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"64\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"21|39|45|5[0137]|6[0469]|7[02389]|8(?:0[14]|8)\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[2-8]|[2-7]|8[1-79]|9[145]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"8\"]]]],\"PM\":[\"508\",\"00\",\"[45]\\\\d{5}|(?:708|8\\\\d\\\\d)\\\\d{6}\",[6,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[45]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"PR\":[\"1\",\"011\",\"(?:[589]\\\\d\\\\d|787)\\\\d{7}\",[10],0,\"1\",0,0,0,0,\"787|939\"],\"PS\":[\"970\",\"00\",\"[2489]2\\\\d{6}|(?:1\\\\d|5)\\\\d{8}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2489]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],\"PT\":[\"351\",\"00\",\"1693\\\\d{5}|(?:[26-9]\\\\d|30)\\\\d{7}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2[12]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"16|[236-9]\"]]]],\"PW\":[\"680\",\"01[12]\",\"(?:[24-8]\\\\d\\\\d|345|900)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-9]\"]]]],\"PY\":[\"595\",\"00\",\"59\\\\d{4,6}|9\\\\d{5,10}|(?:[2-46-8]\\\\d|5[0-8])\\\\d{4,7}\",[6,7,8,9,10,11],[[\"(\\\\d{3})(\\\\d{3,6})\",\"$1 $2\",[\"[2-9]0\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"[26]1|3[289]|4[1246-8]|7[1-3]|8[1-36]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{4,5})\",\"$1 $2\",[\"2[279]|3[13-5]|4[359]|5|6(?:[34]|7[1-46-8])|7[46-8]|85\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2[14-68]|3[26-9]|4[1246-8]|6(?:1|75)|7[1-35]|8[1-36]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"87\"]],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"9(?:[5-79]|8[1-7])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-8]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"]]],\"0\"],\"QA\":[\"974\",\"00\",\"800\\\\d{4}|(?:2|800)\\\\d{6}|(?:0080|[3-7])\\\\d{7}\",[7,8,9,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"2[136]|8\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[3-7]\"]]]],\"RE\":[\"262\",\"00\",\"709\\\\d{6}|(?:26|[689]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[26-9]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"26(?:2\\\\d\\\\d|3(?:0\\\\d|1[0-6]))\\\\d{4}\"],[\"(?:69(?:2\\\\d\\\\d|3(?:[06][0-6]|1[0-3]|2[0-2]|3[0-39]|4\\\\d|5[0-5]|7[0-37]|8[0-8]|9[0-479]))|7092[0-3])\\\\d{4}\"],[\"80\\\\d{7}\"],[\"89[1-37-9]\\\\d{6}\"],0,0,0,0,[\"9(?:399[0-3]|479[0-6]|76(?:2[278]|3[0-37]))\\\\d{4}\"],[\"8(?:1[019]|2[0156]|84|90)\\\\d{6}\"]]],\"RO\":[\"40\",\"00\",\"(?:[236-8]\\\\d|90)\\\\d{7}|[23]\\\\d{5}\",[6,9],[[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"2[3-6]\",\"2[3-6]\\\\d9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"219|31\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[23]1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[236-9]\"],\"0$1\"]],\"0\",0,0,0,0,0,0,0,\" int \"],\"RS\":[\"381\",\"00\",\"38[02-9]\\\\d{6,9}|6\\\\d{7,9}|90\\\\d{4,8}|38\\\\d{5,6}|(?:7\\\\d\\\\d|800)\\\\d{3,9}|(?:[12]\\\\d|3[0-79])\\\\d{5,10}\",[6,7,8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{3,9})\",\"$1 $2\",[\"(?:2[389]|39)0|[7-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5,10})\",\"$1 $2\",[\"[1-36]\"],\"0$1\"]],\"0\"],\"RU\":[\"7\",\"810\",\"8\\\\d{13}|[347-9]\\\\d{9}\",[10,14],[[\"(\\\\d{4})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"7(?:1[0-8]|2[1-9])\",\"7(?:1(?:[0-356]2|4[29]|7|8[27])|2(?:1[23]|[2-9]2))\",\"7(?:1(?:[0-356]2|4[29]|7|8[27])|2(?:13[03-69]|62[013-9]))|72[1-57-9]2\"],\"8 ($1)\",1],[\"(\\\\d{5})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"7(?:1[0-68]|2[1-9])\",\"7(?:1(?:[06][3-6]|[18]|2[35]|[3-5][3-5])|2(?:[13][3-5]|[24-689]|7[457]))\",\"7(?:1(?:0(?:[356]|4[023])|[18]|2(?:3[013-9]|5)|3[45]|43[013-79]|5(?:3[1-8]|4[1-7]|5)|6(?:3[0-35-9]|[4-6]))|2(?:1(?:3[178]|[45])|[24-689]|3[35]|7[457]))|7(?:14|23)4[0-8]|71(?:33|45)[1-79]\"],\"8 ($1)\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"8 ($1)\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[349]|8(?:[02-7]|1[1-8])\"],\"8 ($1)\",1],[\"(\\\\d{4})(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"8\"],\"8 ($1)\"]],\"8\",0,0,0,0,0,[[\"336(?:[013-9]\\\\d|2[013-9])\\\\d{5}|(?:3(?:0[12]|4[1-35-79]|5[1-3]|65|8[1-58]|9[0145])|4(?:01|1[1356]|2[13467]|7[1-5]|8[1-7]|9[1-689])|8(?:1[1-8]|2[01]|3[13-6]|4[0-8]|5[15-7]|6[0-35-79]|7[1-37-9]))\\\\d{7}\",[10]],[\"9\\\\d{9}\",[10]],[\"8(?:0[04]|108\\\\d{3})\\\\d{7}\"],[\"80[39]\\\\d{7}\",[10]],[\"808\\\\d{7}\",[10]]],\"8~10\"],\"RW\":[\"250\",\"00\",\"(?:06|[27]\\\\d\\\\d|[89]00)\\\\d{6}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"0\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[7-9]\"],\"0$1\"]],\"0\"],\"SA\":[\"966\",\"00\",\"(?:[15]\\\\d|800|92)\\\\d{7}\",[9,10],[[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"9\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]],\"0\"],\"SB\":[\"677\",\"0[01]\",\"[6-9]\\\\d{6}|[1-6]\\\\d{4}\",[5,7],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"6[89]|7|8[4-9]|9(?:[1-8]|9[0-8])\"]]]],\"SC\":[\"248\",\"010|0[0-2]\",\"(?:[2489]\\\\d|64)\\\\d{5}\",[7],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[246]|9[57]\"]]],0,0,0,0,0,0,0,\"00\"],\"SD\":[\"249\",\"00\",\"[19]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[19]\"],\"0$1\"]],\"0\"],\"SE\":[\"46\",\"00\",\"(?:[26]\\\\d\\\\d|9)\\\\d{9}|[1-9]\\\\d{8}|[1-689]\\\\d{7}|[1-4689]\\\\d{6}|2\\\\d{5}\",[6,7,8,9,10,12],[[\"(\\\\d{2})(\\\\d{2,3})(\\\\d{2})\",\"$1-$2 $3\",[\"20\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"9(?:00|39|44|9)\"],\"0$1\",0,\"$1 $2\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})\",\"$1-$2 $3\",[\"[12][136]|3[356]|4[0246]|6[03]|90[1-9]\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d)(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"8\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2,3})(\\\\d{2})\",\"$1-$2 $3\",[\"1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[125689]|4[02-57]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d{3})(\\\\d{2,3})(\\\\d{3})\",\"$1-$2 $3\",[\"9(?:00|39|44)\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d{2})(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"1[13689]|2[0136]|3[1356]|4[0246]|54|6[03]|90[1-9]\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"10|7\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"8\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"[13-5]|2(?:[247-9]|5[0138])|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1-$2 $3 $4\",[\"9\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4 $5\",[\"[26]\"],\"0$1\",0,\"$1 $2 $3 $4 $5\"]],\"0\"],\"SG\":[\"65\",\"0[0-3]\\\\d\",\"(?:(?:1\\\\d|8)\\\\d\\\\d|7000)\\\\d{7}|[3689]\\\\d{7}\",[8,10,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[369]|8(?:0[1-9]|[1-9])\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{4})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]]]],\"SH\":[\"290\",\"00\",\"(?:[256]\\\\d|8)\\\\d{3}\",[4,5],0,0,0,0,0,0,\"[256]\"],\"SI\":[\"386\",\"00|10(?:22|66|88|99)\",\"[1-7]\\\\d{7}|8\\\\d{4,7}|90\\\\d{4,6}\",[5,6,7,8],[[\"(\\\\d{2})(\\\\d{3,6})\",\"$1 $2\",[\"8[09]|9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"59|8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[37][01]|4[0139]|51|6\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[1-57]\"],\"(0$1)\"]],\"0\",0,0,0,0,0,0,\"00\"],\"SJ\":[\"47\",\"00\",\"0\\\\d{4}|(?:[489]\\\\d|79)\\\\d{6}\",[5,8],0,0,0,0,0,0,\"79\"],\"SK\":[\"421\",\"00\",\"[2-689]\\\\d{8}|[2-59]\\\\d{6}|[2-5]\\\\d{5}\",[6,7,9],[[\"(\\\\d)(\\\\d{2})(\\\\d{3,4})\",\"$1 $2 $3\",[\"21\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[3-5][1-8]1\",\"[3-5][1-8]1[67]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1/$2 $3 $4\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[689]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1/$2 $3 $4\",[\"[3-5]\"],\"0$1\"]],\"0\"],\"SL\":[\"232\",\"00\",\"(?:[237-9]\\\\d|66)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[236-9]\"],\"(0$1)\"]],\"0\"],\"SM\":[\"378\",\"00\",\"(?:0549|[5-7]\\\\d)\\\\d{6}\",[8,10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-7]\"]],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"0\"]]],0,0,\"([89]\\\\d{5})$\",\"0549$1\"],\"SN\":[\"221\",\"00\",\"(?:[378]\\\\d|93)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[379]\"]]]],\"SO\":[\"252\",\"00\",\"[346-9]\\\\d{8}|[12679]\\\\d{7}|[1-5]\\\\d{6}|[1348]\\\\d{5}\",[6,7,8,9],[[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"8[125]\"]],[\"(\\\\d{6})\",\"$1\",[\"[134]\"]],[\"(\\\\d)(\\\\d{6})\",\"$1 $2\",[\"[15]|2[0-79]|3[0-46-8]|4[0-7]\"]],[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"(?:2|90)4|[67]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[348]|64|79|90\"]],[\"(\\\\d{2})(\\\\d{5,7})\",\"$1 $2\",[\"1|28|6[0-35-9]|7[67]|9[2-9]\"]]],\"0\"],\"SR\":[\"597\",\"00\",\"(?:[2-5]|[6-8]\\\\d|90)\\\\d{5}\",[6,7],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1-$2-$3\",[\"56\"]],[\"(\\\\d{3})(\\\\d{3})\",\"$1-$2\",[\"[2-5]\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[6-9]\"]]]],\"SS\":[\"211\",\"00\",\"[19]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[19]\"],\"0$1\"]],\"0\"],\"ST\":[\"239\",\"00\",\"(?:22|9\\\\d)\\\\d{5}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[29]\"]]]],\"SV\":[\"503\",\"00\",\"[25-7]\\\\d{7}|(?:80\\\\d|900)\\\\d{4}(?:\\\\d{4})?\",[7,8,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[89]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[25-7]\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"]]]],\"SX\":[\"1\",\"011\",\"7215\\\\d{6}|(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"(5\\\\d{6})$|1\",\"721$1\",0,\"721\"],\"SY\":[\"963\",\"00\",\"[1-359]\\\\d{8}|[1-5]\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-4]|5[1-3]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[59]\"],\"0$1\",1]],\"0\"],\"SZ\":[\"268\",\"00\",\"0800\\\\d{4}|(?:[237]\\\\d|900)\\\\d{6}\",[8,9],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[0237]\"]],[\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"9\"]]]],\"TA\":[\"290\",\"00\",\"8\\\\d{3}\",[4],0,0,0,0,0,0,\"8\"],\"TC\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|649|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-479]\\\\d{6})$|1\",\"649$1\",0,\"649\"],\"TD\":[\"235\",\"00|16\",\"(?:22|30|[689]\\\\d|77)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[236-9]\"]]],0,0,0,0,0,0,0,\"00\"],\"TG\":[\"228\",\"00\",\"[279]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[279]\"]]]],\"TH\":[\"66\",\"00[1-9]\",\"(?:001800|[2-57]|[689]\\\\d)\\\\d{7}|1\\\\d{7,9}\",[8,9,10,13],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[13-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],\"TJ\":[\"992\",\"810\",\"(?:[0-57-9]\\\\d|66)\\\\d{7}\",[9],[[\"(\\\\d{6})(\\\\d)(\\\\d{2})\",\"$1 $2 $3\",[\"331\",\"3317\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"44[02-479]|[34]7\"]],[\"(\\\\d{4})(\\\\d)(\\\\d{4})\",\"$1 $2 $3\",[\"3(?:[1245]|3[12])\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"\\\\d\"]]],0,0,0,0,0,0,0,\"8~10\"],\"TK\":[\"690\",\"00\",\"[2-47]\\\\d{3,6}\",[4,5,6,7]],\"TL\":[\"670\",\"00\",\"7\\\\d{7}|(?:[2-47]\\\\d|[89]0)\\\\d{5}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-489]|70\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"7\"]]]],\"TM\":[\"993\",\"810\",\"(?:[1-6]\\\\d|71)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"12\"],\"(8 $1)\"],[\"(\\\\d{3})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[1-5]\"],\"(8 $1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[67]\"],\"8 $1\"]],\"8\",0,0,0,0,0,0,\"8~10\"],\"TN\":[\"216\",\"00\",\"[2-57-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-57-9]\"]]]],\"TO\":[\"676\",\"00\",\"(?:0800|(?:[5-8]\\\\d\\\\d|999)\\\\d)\\\\d{3}|[2-8]\\\\d{4}\",[5,7],[[\"(\\\\d{2})(\\\\d{3})\",\"$1-$2\",[\"[2-4]|50|6[09]|7[0-24-69]|8[05]\"]],[\"(\\\\d{4})(\\\\d{3})\",\"$1 $2\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[5-9]\"]]]],\"TR\":[\"90\",\"00\",\"4\\\\d{6}|8\\\\d{11,12}|(?:[2-58]\\\\d\\\\d|900)\\\\d{7}\",[7,10,12,13],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"512|8[01589]|90\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"5(?:[0-59]|61)\",\"5(?:[0-59]|61[06])\",\"5(?:[0-59]|61[06]1)\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24][1-8]|3[1-9]\"],\"(0$1)\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{6,7})\",\"$1 $2 $3\",[\"80\"],\"0$1\",1]],\"0\"],\"TT\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-46-8]\\\\d{6})$|1\",\"868$1\",0,\"868\"],\"TV\":[\"688\",\"00\",\"(?:2|7\\\\d\\\\d|90)\\\\d{4}\",[5,6,7],[[\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"2\"]],[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"90\"]],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"7\"]]]],\"TW\":[\"886\",\"0(?:0[25-79]|19)\",\"[2-689]\\\\d{8}|7\\\\d{9,10}|[2-8]\\\\d{7}|2\\\\d{6}\",[7,8,9,10,11],[[\"(\\\\d{2})(\\\\d)(\\\\d{4})\",\"$1 $2 $3\",[\"202\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[258]0\"],\"0$1\"],[\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"[23568]|4(?:0[02-48]|[1-47-9])|7[1-9]\",\"[23568]|4(?:0[2-48]|[1-47-9])|(?:400|7)[1-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[49]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\",0,0,0,0,0,0,0,\"#\"],\"TZ\":[\"255\",\"00[056]\",\"(?:[25-8]\\\\d|41|90)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[24]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"5\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[67]\"],\"0$1\"]],\"0\"],\"UA\":[\"380\",\"00\",\"[89]\\\\d{9}|[3-9]\\\\d{8}\",[9,10],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6[12][29]|(?:3[1-8]|4[136-8]|5[12457]|6[49])2|(?:56|65)[24]\",\"6[12][29]|(?:35|4[1378]|5[12457]|6[49])2|(?:56|65)[24]|(?:3[1-46-8]|46)2[013-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6[0135689]|7[4-6])|6(?:[12][3-7]|[459])\",\"3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6(?:[015689]|3[02389])|7[4-6])|6(?:[12][3-7]|[459])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-7]|89|9[1-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],\"0\",0,0,0,0,0,0,\"0~0\"],\"UG\":[\"256\",\"00[057]\",\"800\\\\d{6}|(?:[29]0|[347]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"202\",\"2024\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[27-9]|4(?:6[45]|[7-9])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"[34]\"],\"0$1\"]],\"0\"],\"US\":[\"1\",\"011\",\"[2-9]\\\\d{9}|3\\\\d{6}\",[10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"310\"],0,1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"($1) $2-$3\",[\"[2-9]\"],0,1,\"$1-$2-$3\"]],\"1\",0,0,0,0,0,[[\"3052(?:0[0-8]|[1-9]\\\\d)\\\\d{4}|(?:2742|305[3-9])\\\\d{6}|(?:472|983)[2-47-9]\\\\d{6}|(?:2(?:0[1-35-9]|1[02-9]|2[03-57-9]|3[1459]|4[08]|5[1-46]|6[0279]|7[0269]|8[13])|3(?:0[1-47-9]|1[02-9]|2[013-79]|3[0-24679]|4[167]|5[0-2]|6[01349]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[023578]|58|6[349]|7[0589]|8[04])|5(?:0[1-57-9]|1[0235-8]|20|3[0149]|4[01]|5[179]|6[1-47]|7[0-5]|8[0256])|6(?:0[1-35-9]|1[024-9]|2[03689]|3[016]|4[0156]|5[01679]|6[0-279]|78|8[0-269])|7(?:0[1-46-8]|1[2-9]|2[04-8]|3[0-247]|4[0378]|5[47]|6[02359]|7[0-59]|8[156])|8(?:0[1-68]|1[02-8]|2[0168]|3[0-2589]|4[03578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[0146-8]|4[01357-9]|5[12469]|7[0-3589]|8[04-69]))[2-9]\\\\d{6}\"],[\"\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-9]|33|44|66|77|88)[2-9]\\\\d{6}\"],0,0,0,[\"305209\\\\d{4}\"]]],\"UY\":[\"598\",\"0(?:0|1[3-9]\\\\d)\",\"0004\\\\d{2,9}|[1249]\\\\d{7}|2\\\\d{3,4}|(?:[49]\\\\d|80)\\\\d{5}\",[4,5,6,7,8,9,10,11,12,13],[[\"(\\\\d{4,5})\",\"$1\",[\"21\"]],[\"(\\\\d{3})(\\\\d{3,4})\",\"$1 $2\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[49]0|8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[124]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"0\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3 $4\",[\"0\"]]],\"0\",0,0,0,0,0,0,\"00\",\" int. \"],\"UZ\":[\"998\",\"00\",\"(?:20|33|[5-9]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[235-9]\"]]]],\"VA\":[\"39\",\"00\",\"0\\\\d{5,10}|3[0-8]\\\\d{7,10}|55\\\\d{8}|8\\\\d{5}(?:\\\\d{2,4})?|(?:1\\\\d|39)\\\\d{7,8}\",[6,7,8,9,10,11,12],0,0,0,0,0,0,\"06698\"],\"VC\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|784|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-7]\\\\d{6})$|1\",\"784$1\",0,\"784\"],\"VE\":[\"58\",\"00\",\"[68]00\\\\d{7}|(?:[24]\\\\d|[59]0)\\\\d{8}\",[10],[[\"(\\\\d{3})(\\\\d{7})\",\"$1-$2\",[\"[24-689]\"],\"0$1\"]],\"0\"],\"VG\":[\"1\",\"011\",\"(?:284|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-578]\\\\d{6})$|1\",\"284$1\",0,\"284\"],\"VI\":[\"1\",\"011\",\"[58]\\\\d{9}|(?:34|90)0\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"340$1\",0,\"340\"],\"VN\":[\"84\",\"00\",\"[12]\\\\d{9}|[135-9]\\\\d{8}|[16]\\\\d{7}|[16-8]\\\\d{6}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"80\"],\"0$1\",1],[\"(\\\\d{4})(\\\\d{4,6})\",\"$1 $2\",[\"1\"],0,1],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"6\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[357-9]\"],\"0$1\",1],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2[48]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\",1]],\"0\"],\"VU\":[\"678\",\"00\",\"[57-9]\\\\d{6}|(?:[238]\\\\d|48)\\\\d{3}\",[5,7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[57-9]\"]]]],\"WF\":[\"681\",\"00\",\"(?:40|72|8\\\\d{4})\\\\d{4}|[89]\\\\d{5}\",[6,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[47-9]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]]]],\"WS\":[\"685\",\"0\",\"(?:[2-6]|8\\\\d{5})\\\\d{4}|[78]\\\\d{6}|[68]\\\\d{5}\",[5,6,7,10],[[\"(\\\\d{5})\",\"$1\",[\"[2-5]|6[1-9]\"]],[\"(\\\\d{3})(\\\\d{3,7})\",\"$1 $2\",[\"[68]\"]],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"7\"]]]],\"XK\":[\"383\",\"00\",\"2\\\\d{7,8}|3\\\\d{7,11}|(?:4\\\\d\\\\d|[89]00)\\\\d{5}\",[8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-4]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2|39\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7,10})\",\"$1 $2\",[\"3\"],\"0$1\"]],\"0\"],\"YE\":[\"967\",\"00\",\"(?:1|7\\\\d)\\\\d{7}|[1-7]\\\\d{6}\",[7,8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-6]|7(?:[24-6]|8[0-7])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\"],\"YT\":[\"262\",\"00\",\"7093\\\\d{5}|(?:80|9\\\\d)\\\\d{7}|(?:26|63)9\\\\d{6}\",[9],0,\"0\",0,0,0,0,0,[[\"269(?:0[0-467]|15|5[0-4]|6\\\\d|[78]0)\\\\d{4}\"],[\"(?:639(?:0[0-79]|1[019]|[267]\\\\d|3[09]|40|5[05-9]|9[04-79])|7093[5-7])\\\\d{4}\"],[\"80\\\\d{7}\"],0,0,0,0,0,[\"9(?:(?:39|47)8[01]|769\\\\d)\\\\d{4}\"]]],\"ZA\":[\"27\",\"00\",\"[1-79]\\\\d{8}|8\\\\d{4,9}\",[5,6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{3,4})\",\"$1 $2\",[\"8[1-4]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"8[1-4]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"860\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],\"0\"],\"ZM\":[\"260\",\"00\",\"800\\\\d{6}|(?:21|[579]\\\\d|63)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[28]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"[579]\"],\"0$1\"]],\"0\"],\"ZW\":[\"263\",\"00\",\"2(?:[0-57-9]\\\\d{6,8}|6[0-24-9]\\\\d{6,7})|[38]\\\\d{9}|[35-8]\\\\d{8}|[3-6]\\\\d{7}|[1-689]\\\\d{6}|[1-3569]\\\\d{5}|[1356]\\\\d{4}\",[5,6,7,8,9,10],[[\"(\\\\d{3})(\\\\d{3,5})\",\"$1 $2\",[\"2(?:0[45]|2[278]|[49]8)|3(?:[09]8|17)|6(?:[29]8|37|75)|[23][78]|(?:33|5[15]|6[68])[78]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"[49]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"80\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"24|8[13-59]|(?:2[05-79]|39|5[45]|6[15-8])2\",\"2(?:02[014]|4|[56]20|[79]2)|392|5(?:42|525)|6(?:[16-8]21|52[013])|8[13-59]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2(?:1[39]|2[0157]|[378]|[56][14])|3(?:12|29)\",\"2(?:1[39]|2[0157]|[378]|[56][14])|3(?:123|29)\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,5})\",\"$1 $2\",[\"1|2(?:0[0-36-9]|12|29|[56])|3(?:1[0-689]|[24-6])|5(?:[0236-9]|1[2-4])|6(?:[013-59]|7[0-46-9])|(?:33|55|6[68])[0-69]|(?:29|3[09]|62)[0-79]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"29[013-9]|39|54\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3,5})\",\"$1 $2\",[\"(?:25|54)8\",\"258|5483\"],\"0$1\"]],\"0\"]},\"nonGeographic\":{\"800\":[\"800\",0,\"(?:00|[1-9]\\\\d)\\\\d{6}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"\\\\d\"]]],0,0,0,0,0,0,[0,0,[\"(?:00|[1-9]\\\\d)\\\\d{6}\"]]],\"808\":[\"808\",0,\"[1-9]\\\\d{7}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[1-9]\"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,0,[\"[1-9]\\\\d{7}\"]]],\"870\":[\"870\",0,\"7\\\\d{11}|[235-7]\\\\d{8}\",[9,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[235-7]\"]]],0,0,0,0,0,0,[0,[\"(?:[356]|774[45])\\\\d{8}|7[6-8]\\\\d{7}\"],0,0,0,0,0,0,[\"2\\\\d{8}\",[9]]]],\"878\":[\"878\",0,\"10\\\\d{10}\",[12],[[\"(\\\\d{2})(\\\\d{5})(\\\\d{5})\",\"$1 $2 $3\",[\"1\"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,[\"10\\\\d{10}\"]]],\"881\":[\"881\",0,\"6\\\\d{9}|[0-36-9]\\\\d{8}\",[9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\",[\"[0-37-9]\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{5,6})\",\"$1 $2 $3\",[\"6\"]]],0,0,0,0,0,0,[0,[\"6\\\\d{9}|[0-36-9]\\\\d{8}\"]]],\"882\":[\"882\",0,\"[13]\\\\d{6}(?:\\\\d{2,5})?|[19]\\\\d{7}|(?:[25]\\\\d\\\\d|4)\\\\d{7}(?:\\\\d{2})?\",[7,8,9,10,11,12],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"16|342\"]],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"49\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"1[36]|9\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"3[23]\"]],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"16\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"10|23|3(?:[15]|4[57])|4|51\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"34\"]],[\"(\\\\d{2})(\\\\d{4,5})(\\\\d{5})\",\"$1 $2 $3\",[\"[1-35]\"]]],0,0,0,0,0,0,[0,[\"342\\\\d{4}|(?:337|49)\\\\d{6}|(?:3(?:2|47|7\\\\d{3})|50\\\\d{3})\\\\d{7}\",[7,8,9,10,12]],0,0,0,[\"348[57]\\\\d{7}\",[11]],0,0,[\"1(?:3(?:0[0347]|[13][0139]|2[035]|4[013568]|6[0459]|7[06]|8[15-8]|9[0689])\\\\d{4}|6\\\\d{5,10})|(?:345\\\\d|9[89])\\\\d{6}|(?:10|2(?:3|85\\\\d)|3(?:[15]|[69]\\\\d\\\\d)|4[15-8]|51)\\\\d{8}\"]]],\"883\":[\"883\",0,\"(?:[1-4]\\\\d|51)\\\\d{6,10}\",[8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{2,8})\",\"$1 $2 $3\",[\"[14]|2[24-689]|3[02-689]|51[24-9]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"510\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"21\"]],[\"(\\\\d{4})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"51[13]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[235]\"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,[\"(?:2(?:00\\\\d\\\\d|10)|(?:370[1-9]|51\\\\d0)\\\\d)\\\\d{7}|51(?:00\\\\d{5}|[24-9]0\\\\d{4,7})|(?:1[0-79]|2[24-689]|3[02-689]|4[0-4])0\\\\d{5,9}\"]]],\"888\":[\"888\",0,\"\\\\d{11}\",[11],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\"]],0,0,0,0,0,0,[0,0,0,0,0,0,[\"\\\\d{11}\"]]],\"979\":[\"979\",0,\"[1359]\\\\d{8}\",[9],[[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[1359]\"]]],0,0,0,0,0,0,[0,0,0,[\"[1359]\\\\d{8}\"]]]}}","// Importing from a \".js\" file is a workaround for Node.js \"ES Modules\"\r\n// importing system which is even uncapable of importing \"*.json\" files.\r\nimport metadata from '../../metadata.min.json.js'\r\n\r\nexport default function withMetadataArgument(func, _arguments) {\r\n\tvar args = Array.prototype.slice.call(_arguments)\r\n\targs.push(metadata)\r\n\treturn func.apply(this, args)\r\n}","// Copy-pasted from:\n// https://github.com/substack/semver-compare/blob/master/index.js\n//\n// Inlining this function because some users reported issues with\n// importing from `semver-compare` in a browser with ES6 \"native\" modules.\n//\n// Fixes `semver-compare` not being able to compare versions with alpha/beta/etc \"tags\".\n// https://github.com/catamphetamine/libphonenumber-js/issues/381\nexport default function (a, b) {\n a = a.split('-');\n b = b.split('-');\n var pa = a[0].split('.');\n var pb = b[0].split('.');\n for (var i = 0; i < 3; i++) {\n var na = Number(pa[i]);\n var nb = Number(pb[i]);\n if (na > nb) return 1;\n if (nb > na) return -1;\n if (!isNaN(na) && isNaN(nb)) return 1;\n if (isNaN(na) && !isNaN(nb)) return -1;\n }\n if (a[1] && b[1]) {\n return a[1] > b[1] ? 1 : a[1] < b[1] ? -1 : 0;\n }\n return !a[1] && b[1] ? 1 : a[1] && !b[1] ? -1 : 0;\n}\n//# sourceMappingURL=semver-compare.js.map","var objectConstructor = {}.constructor;\nexport default function isObject(object) {\n return object !== undefined && object !== null && object.constructor === objectConstructor;\n}\n//# sourceMappingURL=isObject.js.map","function _readOnlyError(r) { throw new TypeError('\"' + r + '\" is read-only'); }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport compare from './tools/semver-compare.js';\nimport isObject from './helpers/isObject.js';\n\n// Added \"possibleLengths\" and renamed\n// \"country_phone_code_to_countries\" to \"country_calling_codes\".\nvar V2 = '1.0.18';\n\n// Added \"idd_prefix\" and \"default_idd_prefix\".\nvar V3 = '1.2.0';\n\n// Moved `001` country code to \"nonGeographic\" section of metadata.\nvar V4 = '1.7.35';\nvar DEFAULT_EXT_PREFIX = ' ext. ';\nvar CALLING_CODE_REG_EXP = /^\\d+$/;\n\n/**\r\n * See: https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md\r\n */\nvar Metadata = /*#__PURE__*/function () {\n function Metadata(metadata) {\n _classCallCheck(this, Metadata);\n validateMetadata(metadata);\n this.metadata = metadata;\n setVersion.call(this, metadata);\n }\n return _createClass(Metadata, [{\n key: \"getCountries\",\n value: function getCountries() {\n return Object.keys(this.metadata.countries).filter(function (_) {\n return _ !== '001';\n });\n }\n }, {\n key: \"getCountryMetadata\",\n value: function getCountryMetadata(countryCode) {\n return this.metadata.countries[countryCode];\n }\n }, {\n key: \"nonGeographic\",\n value: function nonGeographic() {\n if (this.v1 || this.v2 || this.v3) return;\n // `nonGeographical` was a typo.\n // It's present in metadata generated from `1.7.35` to `1.7.37`.\n // The test case could be found by searching for \"nonGeographical\".\n return this.metadata.nonGeographic || this.metadata.nonGeographical;\n }\n }, {\n key: \"hasCountry\",\n value: function hasCountry(country) {\n return this.getCountryMetadata(country) !== undefined;\n }\n }, {\n key: \"hasCallingCode\",\n value: function hasCallingCode(callingCode) {\n if (this.getCountryCodesForCallingCode(callingCode)) {\n return true;\n }\n if (this.nonGeographic()) {\n if (this.nonGeographic()[callingCode]) {\n return true;\n }\n } else {\n // A hacky workaround for old custom metadata (generated before V4).\n var countryCodes = this.countryCallingCodes()[callingCode];\n if (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') {\n return true;\n }\n }\n }\n }, {\n key: \"isNonGeographicCallingCode\",\n value: function isNonGeographicCallingCode(callingCode) {\n if (this.nonGeographic()) {\n return this.nonGeographic()[callingCode] ? true : false;\n } else {\n return this.getCountryCodesForCallingCode(callingCode) ? false : true;\n }\n }\n\n // Deprecated.\n }, {\n key: \"country\",\n value: function country(countryCode) {\n return this.selectNumberingPlan(countryCode);\n }\n }, {\n key: \"selectNumberingPlan\",\n value: function selectNumberingPlan(countryCode, callingCode) {\n // Supports just passing `callingCode` as the first argument.\n if (countryCode && CALLING_CODE_REG_EXP.test(countryCode)) {\n callingCode = countryCode;\n countryCode = null;\n }\n if (countryCode && countryCode !== '001') {\n if (!this.hasCountry(countryCode)) {\n throw new Error(\"Unknown country: \".concat(countryCode));\n }\n this.numberingPlan = new NumberingPlan(this.getCountryMetadata(countryCode), this);\n } else if (callingCode) {\n if (!this.hasCallingCode(callingCode)) {\n throw new Error(\"Unknown calling code: \".concat(callingCode));\n }\n this.numberingPlan = new NumberingPlan(this.getNumberingPlanMetadata(callingCode), this);\n } else {\n this.numberingPlan = undefined;\n }\n return this;\n }\n }, {\n key: \"getCountryCodesForCallingCode\",\n value: function getCountryCodesForCallingCode(callingCode) {\n var countryCodes = this.countryCallingCodes()[callingCode];\n if (countryCodes) {\n // Metadata before V4 included \"non-geographic entity\" calling codes\n // inside `country_calling_codes` (for example, `\"881\":[\"001\"]`).\n // Now the semantics of `country_calling_codes` has changed:\n // it's specifically for \"countries\" now.\n // Older versions of custom metadata will simply skip parsing\n // \"non-geographic entity\" phone numbers with new versions\n // of this library: it's not considered a bug,\n // because such numbers are extremely rare,\n // and developers extremely rarely use custom metadata.\n if (countryCodes.length === 1 && countryCodes[0].length === 3) {\n return;\n }\n return countryCodes;\n }\n }\n }, {\n key: \"getCountryCodeForCallingCode\",\n value: function getCountryCodeForCallingCode(callingCode) {\n var countryCodes = this.getCountryCodesForCallingCode(callingCode);\n if (countryCodes) {\n return countryCodes[0];\n }\n }\n }, {\n key: \"getNumberingPlanMetadata\",\n value: function getNumberingPlanMetadata(callingCode) {\n var countryCode = this.getCountryCodeForCallingCode(callingCode);\n if (countryCode) {\n return this.getCountryMetadata(countryCode);\n }\n if (this.nonGeographic()) {\n var metadata = this.nonGeographic()[callingCode];\n if (metadata) {\n return metadata;\n }\n } else {\n // A hacky workaround for old custom metadata (generated before V4).\n // In that metadata, there was no concept of \"non-geographic\" metadata\n // so metadata for `001` country code was stored along with other countries.\n // The test case can be found by searching for:\n // \"should work around `nonGeographic` metadata not existing\".\n var countryCodes = this.countryCallingCodes()[callingCode];\n if (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') {\n return this.metadata.countries['001'];\n }\n }\n }\n\n // Deprecated.\n }, {\n key: \"countryCallingCode\",\n value: function countryCallingCode() {\n return this.numberingPlan.callingCode();\n }\n\n // Deprecated.\n }, {\n key: \"IDDPrefix\",\n value: function IDDPrefix() {\n return this.numberingPlan.IDDPrefix();\n }\n\n // Deprecated.\n }, {\n key: \"defaultIDDPrefix\",\n value: function defaultIDDPrefix() {\n return this.numberingPlan.defaultIDDPrefix();\n }\n\n // Deprecated.\n }, {\n key: \"nationalNumberPattern\",\n value: function nationalNumberPattern() {\n return this.numberingPlan.nationalNumberPattern();\n }\n\n // Deprecated.\n }, {\n key: \"possibleLengths\",\n value: function possibleLengths() {\n return this.numberingPlan.possibleLengths();\n }\n\n // Deprecated.\n }, {\n key: \"formats\",\n value: function formats() {\n return this.numberingPlan.formats();\n }\n\n // Deprecated.\n }, {\n key: \"nationalPrefixForParsing\",\n value: function nationalPrefixForParsing() {\n return this.numberingPlan.nationalPrefixForParsing();\n }\n\n // Deprecated.\n }, {\n key: \"nationalPrefixTransformRule\",\n value: function nationalPrefixTransformRule() {\n return this.numberingPlan.nationalPrefixTransformRule();\n }\n\n // Deprecated.\n }, {\n key: \"leadingDigits\",\n value: function leadingDigits() {\n return this.numberingPlan.leadingDigits();\n }\n\n // Deprecated.\n }, {\n key: \"hasTypes\",\n value: function hasTypes() {\n return this.numberingPlan.hasTypes();\n }\n\n // Deprecated.\n }, {\n key: \"type\",\n value: function type(_type) {\n return this.numberingPlan.type(_type);\n }\n\n // Deprecated.\n }, {\n key: \"ext\",\n value: function ext() {\n return this.numberingPlan.ext();\n }\n }, {\n key: \"countryCallingCodes\",\n value: function countryCallingCodes() {\n if (this.v1) return this.metadata.country_phone_code_to_countries;\n return this.metadata.country_calling_codes;\n }\n\n // Deprecated.\n }, {\n key: \"chooseCountryByCountryCallingCode\",\n value: function chooseCountryByCountryCallingCode(callingCode) {\n return this.selectNumberingPlan(callingCode);\n }\n }, {\n key: \"hasSelectedNumberingPlan\",\n value: function hasSelectedNumberingPlan() {\n return this.numberingPlan !== undefined;\n }\n }]);\n}();\nexport { Metadata as default };\nvar NumberingPlan = /*#__PURE__*/function () {\n function NumberingPlan(metadata, globalMetadataObject) {\n _classCallCheck(this, NumberingPlan);\n this.globalMetadataObject = globalMetadataObject;\n this.metadata = metadata;\n setVersion.call(this, globalMetadataObject.metadata);\n }\n return _createClass(NumberingPlan, [{\n key: \"callingCode\",\n value: function callingCode() {\n return this.metadata[0];\n }\n\n // Formatting information for regions which share\n // a country calling code is contained by only one region\n // for performance reasons. For example, for NANPA region\n // (\"North American Numbering Plan Administration\",\n // which includes USA, Canada, Cayman Islands, Bahamas, etc)\n // it will be contained in the metadata for `US`.\n }, {\n key: \"getDefaultCountryMetadataForRegion\",\n value: function getDefaultCountryMetadataForRegion() {\n return this.globalMetadataObject.getNumberingPlanMetadata(this.callingCode());\n }\n\n // Is always present.\n }, {\n key: \"IDDPrefix\",\n value: function IDDPrefix() {\n if (this.v1 || this.v2) return;\n return this.metadata[1];\n }\n\n // Is only present when a country supports multiple IDD prefixes.\n }, {\n key: \"defaultIDDPrefix\",\n value: function defaultIDDPrefix() {\n if (this.v1 || this.v2) return;\n return this.metadata[12];\n }\n }, {\n key: \"nationalNumberPattern\",\n value: function nationalNumberPattern() {\n if (this.v1 || this.v2) return this.metadata[1];\n return this.metadata[2];\n }\n\n // \"possible length\" data is always present in Google's metadata.\n }, {\n key: \"possibleLengths\",\n value: function possibleLengths() {\n if (this.v1) return;\n return this.metadata[this.v2 ? 2 : 3];\n }\n }, {\n key: \"_getFormats\",\n value: function _getFormats(metadata) {\n return metadata[this.v1 ? 2 : this.v2 ? 3 : 4];\n }\n\n // For countries of the same region (e.g. NANPA)\n // formats are all stored in the \"main\" country for that region.\n // E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\n }, {\n key: \"formats\",\n value: function formats() {\n var _this = this;\n var formats = this._getFormats(this.metadata) || this._getFormats(this.getDefaultCountryMetadataForRegion()) || [];\n return formats.map(function (_) {\n return new Format(_, _this);\n });\n }\n }, {\n key: \"nationalPrefix\",\n value: function nationalPrefix() {\n return this.metadata[this.v1 ? 3 : this.v2 ? 4 : 5];\n }\n }, {\n key: \"_getNationalPrefixFormattingRule\",\n value: function _getNationalPrefixFormattingRule(metadata) {\n return metadata[this.v1 ? 4 : this.v2 ? 5 : 6];\n }\n\n // For countries of the same region (e.g. NANPA)\n // national prefix formatting rule is stored in the \"main\" country for that region.\n // E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\n }, {\n key: \"nationalPrefixFormattingRule\",\n value: function nationalPrefixFormattingRule() {\n return this._getNationalPrefixFormattingRule(this.metadata) || this._getNationalPrefixFormattingRule(this.getDefaultCountryMetadataForRegion());\n }\n }, {\n key: \"_nationalPrefixForParsing\",\n value: function _nationalPrefixForParsing() {\n return this.metadata[this.v1 ? 5 : this.v2 ? 6 : 7];\n }\n }, {\n key: \"nationalPrefixForParsing\",\n value: function nationalPrefixForParsing() {\n // If `national_prefix_for_parsing` is not set explicitly,\n // then infer it from `national_prefix` (if any)\n return this._nationalPrefixForParsing() || this.nationalPrefix();\n }\n }, {\n key: \"nationalPrefixTransformRule\",\n value: function nationalPrefixTransformRule() {\n return this.metadata[this.v1 ? 6 : this.v2 ? 7 : 8];\n }\n }, {\n key: \"_getNationalPrefixIsOptionalWhenFormatting\",\n value: function _getNationalPrefixIsOptionalWhenFormatting() {\n return !!this.metadata[this.v1 ? 7 : this.v2 ? 8 : 9];\n }\n\n // For countries of the same region (e.g. NANPA)\n // \"national prefix is optional when formatting\" flag is\n // stored in the \"main\" country for that region.\n // E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\n }, {\n key: \"nationalPrefixIsOptionalWhenFormattingInNationalFormat\",\n value: function nationalPrefixIsOptionalWhenFormattingInNationalFormat() {\n return this._getNationalPrefixIsOptionalWhenFormatting(this.metadata) || this._getNationalPrefixIsOptionalWhenFormatting(this.getDefaultCountryMetadataForRegion());\n }\n }, {\n key: \"leadingDigits\",\n value: function leadingDigits() {\n return this.metadata[this.v1 ? 8 : this.v2 ? 9 : 10];\n }\n }, {\n key: \"types\",\n value: function types() {\n return this.metadata[this.v1 ? 9 : this.v2 ? 10 : 11];\n }\n }, {\n key: \"hasTypes\",\n value: function hasTypes() {\n // Versions 1.2.0 - 1.2.4: can be `[]`.\n /* istanbul ignore next */\n if (this.types() && this.types().length === 0) {\n return false;\n }\n // Versions <= 1.2.4: can be `undefined`.\n // Version >= 1.2.5: can be `0`.\n return !!this.types();\n }\n }, {\n key: \"type\",\n value: function type(_type2) {\n if (this.hasTypes() && getType(this.types(), _type2)) {\n return new Type(getType(this.types(), _type2), this);\n }\n }\n }, {\n key: \"ext\",\n value: function ext() {\n if (this.v1 || this.v2) return DEFAULT_EXT_PREFIX;\n return this.metadata[13] || DEFAULT_EXT_PREFIX;\n }\n }]);\n}();\nvar Format = /*#__PURE__*/function () {\n function Format(format, metadata) {\n _classCallCheck(this, Format);\n this._format = format;\n this.metadata = metadata;\n }\n return _createClass(Format, [{\n key: \"pattern\",\n value: function pattern() {\n return this._format[0];\n }\n }, {\n key: \"format\",\n value: function format() {\n return this._format[1];\n }\n }, {\n key: \"leadingDigitsPatterns\",\n value: function leadingDigitsPatterns() {\n return this._format[2] || [];\n }\n }, {\n key: \"nationalPrefixFormattingRule\",\n value: function nationalPrefixFormattingRule() {\n return this._format[3] || this.metadata.nationalPrefixFormattingRule();\n }\n }, {\n key: \"nationalPrefixIsOptionalWhenFormattingInNationalFormat\",\n value: function nationalPrefixIsOptionalWhenFormattingInNationalFormat() {\n return !!this._format[4] || this.metadata.nationalPrefixIsOptionalWhenFormattingInNationalFormat();\n }\n }, {\n key: \"nationalPrefixIsMandatoryWhenFormattingInNationalFormat\",\n value: function nationalPrefixIsMandatoryWhenFormattingInNationalFormat() {\n // National prefix is omitted if there's no national prefix formatting rule\n // set for this country, or when the national prefix formatting rule\n // contains no national prefix itself, or when this rule is set but\n // national prefix is optional for this phone number format\n // (and it is not enforced explicitly)\n return this.usesNationalPrefix() && !this.nationalPrefixIsOptionalWhenFormattingInNationalFormat();\n }\n\n // Checks whether national prefix formatting rule contains national prefix.\n }, {\n key: \"usesNationalPrefix\",\n value: function usesNationalPrefix() {\n return this.nationalPrefixFormattingRule() &&\n // Check that national prefix formatting rule is not a \"dummy\" one.\n !FIRST_GROUP_ONLY_PREFIX_PATTERN.test(this.nationalPrefixFormattingRule())\n // In compressed metadata, `this.nationalPrefixFormattingRule()` is `0`\n // when `national_prefix_formatting_rule` is not present.\n // So, `true` or `false` are returned explicitly here, so that\n // `0` number isn't returned.\n ? true : false;\n }\n }, {\n key: \"internationalFormat\",\n value: function internationalFormat() {\n return this._format[5] || this.format();\n }\n }]);\n}();\n/**\r\n * A pattern that is used to determine if the national prefix formatting rule\r\n * has the first group only, i.e., does not start with the national prefix.\r\n * Note that the pattern explicitly allows for unbalanced parentheses.\r\n */\nvar FIRST_GROUP_ONLY_PREFIX_PATTERN = /^\\(?\\$1\\)?$/;\nvar Type = /*#__PURE__*/function () {\n function Type(type, metadata) {\n _classCallCheck(this, Type);\n this.type = type;\n this.metadata = metadata;\n }\n return _createClass(Type, [{\n key: \"pattern\",\n value: function pattern() {\n if (this.metadata.v1) return this.type;\n return this.type[0];\n }\n }, {\n key: \"possibleLengths\",\n value: function possibleLengths() {\n if (this.metadata.v1) return;\n return this.type[1] || this.metadata.possibleLengths();\n }\n }]);\n}();\nfunction getType(types, type) {\n switch (type) {\n case 'FIXED_LINE':\n return types[0];\n case 'MOBILE':\n return types[1];\n case 'TOLL_FREE':\n return types[2];\n case 'PREMIUM_RATE':\n return types[3];\n case 'PERSONAL_NUMBER':\n return types[4];\n case 'VOICEMAIL':\n return types[5];\n case 'UAN':\n return types[6];\n case 'PAGER':\n return types[7];\n case 'VOIP':\n return types[8];\n case 'SHARED_COST':\n return types[9];\n }\n}\nexport function validateMetadata(metadata) {\n if (!metadata) {\n throw new Error('[libphonenumber-js] `metadata` argument not passed. Check your arguments.');\n }\n\n // `country_phone_code_to_countries` was renamed to `country_calling_codes` in `1.0.18`.\n // For that reason, it's not used in this detection algorithm.\n // Instead, it detects by `countries: {}` property existence.\n if (!isObject(metadata) || !isObject(metadata.countries)) {\n throw new Error(\"[libphonenumber-js] `metadata` argument was passed but it's not a valid metadata. Must be an object having `.countries` child object property. Got \".concat(isObject(metadata) ? 'an object of shape: { ' + Object.keys(metadata).join(', ') + ' }' : 'a ' + typeOf(metadata) + ': ' + metadata, \".\"));\n }\n}\n\n// Babel transforms `typeof` into some \"branches\"\n// so istanbul will show this as \"branch not covered\".\n/* istanbul ignore next */\nvar typeOf = function typeOf(_) {\n return _typeof(_);\n};\n\n/**\r\n * Returns extension prefix for a country.\r\n * @param {string} country\r\n * @param {object} metadata\r\n * @return {string?}\r\n * @example\r\n * // Returns \" ext. \"\r\n * getExtPrefix(\"US\")\r\n */\nexport function getExtPrefix(country, metadata) {\n metadata = new Metadata(metadata);\n if (metadata.hasCountry(country)) {\n return metadata.selectNumberingPlan(country).ext();\n }\n return DEFAULT_EXT_PREFIX;\n}\n\n/**\r\n * Returns \"country calling code\" for a country.\r\n * Throws an error if the country doesn't exist or isn't supported by this library.\r\n * @param {string} country\r\n * @param {object} metadata\r\n * @return {string}\r\n * @example\r\n * // Returns \"44\"\r\n * getCountryCallingCode(\"GB\")\r\n */\nexport function getCountryCallingCode(country, metadata) {\n metadata = new Metadata(metadata);\n if (metadata.hasCountry(country)) {\n return metadata.selectNumberingPlan(country).countryCallingCode();\n }\n throw new Error(\"Unknown country: \".concat(country));\n}\nexport function isSupportedCountry(country, metadata) {\n // metadata = new Metadata(metadata)\n // return metadata.hasCountry(country)\n return metadata.countries.hasOwnProperty(country);\n}\nfunction setVersion(metadata) {\n var version = metadata.version;\n if (typeof version === 'number') {\n this.v1 = version === 1;\n this.v2 = version === 2;\n this.v3 = version === 3;\n this.v4 = version === 4;\n } else {\n if (!version) {\n this.v1 = true;\n } else if (compare(version, V3) === -1) {\n this.v2 = true;\n } else if (compare(version, V4) === -1) {\n this.v3 = true;\n } else {\n this.v4 = true;\n }\n }\n}\n\n// const ISO_COUNTRY_CODE = /^[A-Z]{2}$/\n// function isCountryCode(countryCode) {\n// \treturn ISO_COUNTRY_CODE.test(countryCodeOrCountryCallingCode)\n// }\n//# sourceMappingURL=metadata.js.map","import Metadata from '../metadata.js';\nimport mergeArrays from './mergeArrays.js';\nexport default function checkNumberLength(nationalNumber, country, metadata) {\n return checkNumberLengthForType(nationalNumber, country, undefined, metadata);\n}\n\n// Checks whether a number is possible for a certain `country` based on the number length.\n//\n// This function is not supported by metadata generated with ancient versions of\n// `libphonenumber-js` (before version `1.0.18`) which didn't include \"possible lengths\".\n//\n// There was also a known issue with `checkNumberLength()` function:\n// if a number is possible only in a certain `country` among several `countries`\n// that share the same \"country calling code\", that function would check\n// the possibility of the phone number only in the \"main\" `country` for the \"country calling code\"\n// and would not check if it's actually be possible in the speciifc `country`.\n//\n// For example, \"+1310xxxx\" numbers are valid in Canada.\n// However, they are not possible in the US due to being too short.\n// Since Canada and the US share the same country calling code — \"+1\" —\n// `checkNumberLength()` function used to return not \"IS_POSSIBLE\" for \"+1310xxxx\" numbers.\n//\n// In such cases, when using \"/max\" metadata, `isValid()` could output `true`\n// but at the same time `isPossible()` could output `false`, which was contradictory.\n//\n// See https://issuetracker.google.com/issues/335892662 for the discusson in Google's issues.\n//\n// The solution suggested by Google was implemented: an optional `country` argument\n// was added to `checkNumberLength()` function. If present, that `country` will be used\n// to check phone number length for that specific `country` rather than the \"main\" country\n// for the shared \"country calling code\".\n//\nexport function checkNumberLengthForType(nationalNumber, country, type, metadata) {\n // If the exact `country` is specified, it's no necessarily already selected in `metadata`.\n // Most likely, in cases when there're multiple countries corresponding to the same\n // \"country calling code\", the \"main\" country for that \"country calling code\" will be selected.\n if (country) {\n metadata = new Metadata(metadata.metadata);\n metadata.selectNumberingPlan(country);\n }\n var type_info = metadata.type(type);\n\n // There should always be \"<possiblePengths/>\" set for every type element.\n // This is declared in the XML schema.\n // For size efficiency, where a sub-description (e.g. fixed-line)\n // has the same \"<possiblePengths/>\" as the \"general description\", this is missing,\n // so we fall back to the \"general description\". Where no numbers of the type\n // exist at all, there is one possible length (-1) which is guaranteed\n // not to match the length of any real phone number.\n var possible_lengths = type_info && type_info.possibleLengths() || metadata.possibleLengths();\n // let local_lengths = type_info && type.possibleLengthsLocal() || metadata.possibleLengthsLocal()\n\n // Metadata before version `1.0.18` didn't contain `possible_lengths`.\n if (!possible_lengths) {\n return 'IS_POSSIBLE';\n }\n if (type === 'FIXED_LINE_OR_MOBILE') {\n // No such country in metadata.\n /* istanbul ignore next */\n if (!metadata.type('FIXED_LINE')) {\n // The rare case has been encountered where no fixedLine data is available\n // (true for some non-geographic entities), so we just check mobile.\n return checkNumberLengthForType(nationalNumber, country, 'MOBILE', metadata);\n }\n var mobile_type = metadata.type('MOBILE');\n if (mobile_type) {\n // Merge the mobile data in if there was any. \"Concat\" creates a new\n // array, it doesn't edit possible_lengths in place, so we don't need a copy.\n // Note that when adding the possible lengths from mobile, we have\n // to again check they aren't empty since if they are this indicates\n // they are the same as the general desc and should be obtained from there.\n possible_lengths = mergeArrays(possible_lengths, mobile_type.possibleLengths());\n // The current list is sorted; we need to merge in the new list and\n // re-sort (duplicates are okay). Sorting isn't so expensive because\n // the lists are very small.\n\n // if (local_lengths) {\n // \tlocal_lengths = mergeArrays(local_lengths, mobile_type.possibleLengthsLocal())\n // } else {\n // \tlocal_lengths = mobile_type.possibleLengthsLocal()\n // }\n }\n }\n // If the type doesn't exist then return 'INVALID_LENGTH'.\n else if (type && !type_info) {\n return 'INVALID_LENGTH';\n }\n var actual_length = nationalNumber.length;\n\n // In `libphonenumber-js` all \"local-only\" formats are dropped for simplicity.\n // // This is safe because there is never an overlap beween the possible lengths\n // // and the local-only lengths; this is checked at build time.\n // if (local_lengths && local_lengths.indexOf(nationalNumber.length) >= 0)\n // {\n // \treturn 'IS_POSSIBLE_LOCAL_ONLY'\n // }\n\n var minimum_length = possible_lengths[0];\n if (minimum_length === actual_length) {\n return 'IS_POSSIBLE';\n }\n if (minimum_length > actual_length) {\n return 'TOO_SHORT';\n }\n if (possible_lengths[possible_lengths.length - 1] < actual_length) {\n return 'TOO_LONG';\n }\n\n // We skip the first element since we've already checked it.\n return possible_lengths.indexOf(actual_length, 1) >= 0 ? 'IS_POSSIBLE' : 'INVALID_LENGTH';\n}\n//# sourceMappingURL=checkNumberLength.js.map","import Metadata from './metadata.js';\nimport checkNumberLength from './helpers/checkNumberLength.js';\n\n/**\r\n * Checks if a phone number is \"possible\" (basically just checks its length).\r\n *\r\n * isPossible(phoneNumberInstance, { ..., v2: true }, metadata)\r\n *\r\n * isPossible({ phone: '8005553535', country: 'RU' }, { ... }, metadata)\r\n * isPossible({ phone: '8005553535', country: 'RU' }, undefined, metadata)\r\n *\r\n * @param {object|PhoneNumber} input — If `options.v2: true` flag is passed, the `input` should be a `PhoneNumber` instance. Otherwise, it should be an object of shape `{ phone: '...', country: '...' }`.\r\n * @param {object} [options]\r\n * @param {object} metadata\r\n * @return {string}\r\n */\nexport default function isPossiblePhoneNumber(input, options, metadata) {\n /* istanbul ignore if */\n if (options === undefined) {\n options = {};\n }\n metadata = new Metadata(metadata);\n if (options.v2) {\n if (!input.countryCallingCode) {\n throw new Error('Invalid phone number object passed');\n }\n metadata.selectNumberingPlan(input.countryCallingCode);\n } else {\n if (!input.phone) {\n return false;\n }\n if (input.country) {\n if (!metadata.hasCountry(input.country)) {\n throw new Error(\"Unknown country: \".concat(input.country));\n }\n metadata.selectNumberingPlan(input.country);\n } else {\n if (!input.countryCallingCode) {\n throw new Error('Invalid phone number object passed');\n }\n metadata.selectNumberingPlan(input.countryCallingCode);\n }\n }\n\n // Old metadata (< 1.0.18) had no \"possible length\" data.\n if (metadata.possibleLengths()) {\n return isPossibleNumber(input.phone || input.nationalNumber, input.country, metadata);\n } else {\n // There was a bug between `1.7.35` and `1.7.37` where \"possible_lengths\"\n // were missing for \"non-geographical\" numbering plans.\n // Just assume the number is possible in such cases:\n // it's unlikely that anyone generated their custom metadata\n // in that short period of time (one day).\n // This code can be removed in some future major version update.\n if (input.countryCallingCode && metadata.isNonGeographicCallingCode(input.countryCallingCode)) {\n // \"Non-geographic entities\" did't have `possibleLengths`\n // due to a bug in metadata generation process.\n return true;\n } else {\n throw new Error('Missing \"possibleLengths\" in metadata. Perhaps the metadata has been generated before v1.0.18.');\n }\n }\n}\nexport function isPossibleNumber(nationalNumber, country, metadata) {\n //, isInternational) {\n switch (checkNumberLength(nationalNumber, country, metadata)) {\n case 'IS_POSSIBLE':\n return true;\n // This library ignores \"local-only\" phone numbers (for simplicity).\n // See the readme for more info on what are \"local-only\" phone numbers.\n // case 'IS_POSSIBLE_LOCAL_ONLY':\n // \treturn !isInternational\n default:\n return false;\n }\n}\n//# sourceMappingURL=isPossible.js.map","/**\r\n * Checks whether the entire input sequence can be matched\r\n * against the regular expression.\r\n * @return {boolean}\r\n */\nexport default function matchesEntirely(text, regularExpressionText) {\n // If the assigning of the `''` default value is moved to the arguments above,\n // the code coverage would decrease for some weird reason.\n text = text || '';\n return new RegExp('^(?:' + regularExpressionText + ')$').test(text);\n}\n//# sourceMappingURL=matchesEntirely.js.map","function _createForOfIteratorHelperLoose(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (t) return (t = t.call(r)).next.bind(t); if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var o = 0; return function () { return o >= r.length ? { done: !0 } : { done: !1, value: r[o++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nimport Metadata from '../metadata.js';\nimport matchesEntirely from './matchesEntirely.js';\nvar NON_FIXED_LINE_PHONE_TYPES = ['MOBILE', 'PREMIUM_RATE', 'TOLL_FREE', 'SHARED_COST', 'VOIP', 'PERSONAL_NUMBER', 'PAGER', 'UAN', 'VOICEMAIL'];\n\n// Finds out national phone number type (fixed line, mobile, etc)\nexport default function getNumberType(input, options, metadata) {\n // If assigning the `{}` default value is moved to the arguments above,\n // code coverage would decrease for some weird reason.\n options = options || {};\n\n // When `parse()` returns an empty object — `{}` —\n // that means that the phone number is malformed,\n // so it can't possibly be valid.\n if (!input.country && !input.countryCallingCode) {\n return;\n }\n metadata = new Metadata(metadata);\n metadata.selectNumberingPlan(input.country, input.countryCallingCode);\n var nationalNumber = options.v2 ? input.nationalNumber : input.phone;\n\n // The following is copy-pasted from the original function:\n // https://github.com/googlei18n/libphonenumber/blob/3ea547d4fbaa2d0b67588904dfa5d3f2557c27ff/javascript/i18n/phonenumbers/phonenumberutil.js#L2835\n\n // Is this national number even valid for this country\n if (!matchesEntirely(nationalNumber, metadata.nationalNumberPattern())) {\n return;\n }\n\n // Is it fixed line number\n if (isNumberTypeEqualTo(nationalNumber, 'FIXED_LINE', metadata)) {\n // Because duplicate regular expressions are removed\n // to reduce metadata size, if \"mobile\" pattern is \"\"\n // then it means it was removed due to being a duplicate of the fixed-line pattern.\n //\n if (metadata.type('MOBILE') && metadata.type('MOBILE').pattern() === '') {\n return 'FIXED_LINE_OR_MOBILE';\n }\n\n // `MOBILE` type pattern isn't included if it matched `FIXED_LINE` one.\n // For example, for \"US\" country.\n // Old metadata (< `1.0.18`) had a specific \"types\" data structure\n // that happened to be `undefined` for `MOBILE` in that case.\n // Newer metadata (>= `1.0.18`) has another data structure that is\n // not `undefined` for `MOBILE` in that case (it's just an empty array).\n // So this `if` is just for backwards compatibility with old metadata.\n if (!metadata.type('MOBILE')) {\n return 'FIXED_LINE_OR_MOBILE';\n }\n\n // Check if the number happens to qualify as both fixed line and mobile.\n // (no such country in the minimal metadata set)\n /* istanbul ignore if */\n if (isNumberTypeEqualTo(nationalNumber, 'MOBILE', metadata)) {\n return 'FIXED_LINE_OR_MOBILE';\n }\n return 'FIXED_LINE';\n }\n for (var _iterator = _createForOfIteratorHelperLoose(NON_FIXED_LINE_PHONE_TYPES), _step; !(_step = _iterator()).done;) {\n var type = _step.value;\n if (isNumberTypeEqualTo(nationalNumber, type, metadata)) {\n return type;\n }\n }\n}\nexport function isNumberTypeEqualTo(nationalNumber, type, metadata) {\n type = metadata.type(type);\n if (!type || !type.pattern()) {\n return false;\n }\n // Check if any possible number lengths are present;\n // if so, we use them to avoid checking\n // the validation pattern if they don't match.\n // If they are absent, this means they match\n // the general description, which we have\n // already checked before a specific number type.\n if (type.possibleLengths() && type.possibleLengths().indexOf(nationalNumber.length) < 0) {\n return false;\n }\n return matchesEntirely(nationalNumber, type.pattern());\n}\n//# sourceMappingURL=getNumberType.js.map","import Metadata from '../metadata.js';\n\n/**\r\n * Returns a list of countries that the phone number could potentially belong to.\r\n * @param {string} callingCode — Calling code.\r\n * @param {string} nationalNumber — National (significant) number.\r\n * @param {object} metadata — Metadata.\r\n * @return {string[]} A list of possible countries.\r\n */\nexport default function getPossibleCountriesForNumber(callingCode, nationalNumber, metadata) {\n var _metadata = new Metadata(metadata);\n var possibleCountries = _metadata.getCountryCodesForCallingCode(callingCode);\n if (!possibleCountries) {\n return [];\n }\n return possibleCountries.filter(function (country) {\n return couldNationalNumberBelongToCountry(nationalNumber, country, metadata);\n });\n}\nfunction couldNationalNumberBelongToCountry(nationalNumber, country, metadata) {\n var _metadata = new Metadata(metadata);\n _metadata.selectNumberingPlan(country);\n if (_metadata.numberingPlan.possibleLengths().indexOf(nationalNumber.length) >= 0) {\n return true;\n }\n return false;\n}\n//# sourceMappingURL=getPossibleCountriesForNumber.js.map","// The minimum length of the national significant number.\nexport var MIN_LENGTH_FOR_NSN = 2;\n\n// The ITU says the maximum length should be 15,\n// but one can find longer numbers in Germany.\nexport var MAX_LENGTH_FOR_NSN = 17;\n\n// The maximum length of the country calling code.\nexport var MAX_LENGTH_COUNTRY_CODE = 3;\n\n// Digits accepted in phone numbers\n// (ascii, fullwidth, arabic-indic, and eastern arabic digits).\nexport var VALID_DIGITS = \"0-9\\uFF10-\\uFF19\\u0660-\\u0669\\u06F0-\\u06F9\";\n\n// `DASHES` will be right after the opening square bracket of the \"character class\"\nvar DASHES = \"-\\u2010-\\u2015\\u2212\\u30FC\\uFF0D\";\nvar SLASHES = \"\\uFF0F/\";\nvar DOTS = \"\\uFF0E.\";\nexport var WHITESPACE = \" \\xA0\\xAD\\u200B\\u2060\\u3000\";\nvar BRACKETS = \"()\\uFF08\\uFF09\\uFF3B\\uFF3D\\\\[\\\\]\";\n// export const OPENING_BRACKETS = '(\\uFF08\\uFF3B\\\\\\['\nvar TILDES = \"~\\u2053\\u223C\\uFF5E\";\n\n// Regular expression of acceptable punctuation found in phone numbers. This\n// excludes punctuation found as a leading character only. This consists of dash\n// characters, white space characters, full stops, slashes, square brackets,\n// parentheses and tildes. Full-width variants are also present.\nexport var VALID_PUNCTUATION = \"\".concat(DASHES).concat(SLASHES).concat(DOTS).concat(WHITESPACE).concat(BRACKETS).concat(TILDES);\nexport var PLUS_CHARS = \"+\\uFF0B\";\n// const LEADING_PLUS_CHARS_PATTERN = new RegExp('^[' + PLUS_CHARS + ']+')\n//# sourceMappingURL=constants.js.map","import Metadata from '../metadata.js';\nimport { VALID_DIGITS } from '../constants.js';\nvar CAPTURING_DIGIT_PATTERN = new RegExp('([' + VALID_DIGITS + '])');\nexport default function stripIddPrefix(number, country, callingCode, metadata) {\n if (!country) {\n return;\n }\n // Check if the number is IDD-prefixed.\n var countryMetadata = new Metadata(metadata);\n countryMetadata.selectNumberingPlan(country, callingCode);\n var IDDPrefixPattern = new RegExp(countryMetadata.IDDPrefix());\n if (number.search(IDDPrefixPattern) !== 0) {\n return;\n }\n // Strip IDD prefix.\n number = number.slice(number.match(IDDPrefixPattern)[0].length);\n // If there're any digits after an IDD prefix,\n // then those digits are a country calling code.\n // Since no country code starts with a `0`,\n // the code below validates that the next digit (if present) is not `0`.\n var matchedGroups = number.match(CAPTURING_DIGIT_PATTERN);\n if (matchedGroups && matchedGroups[1] != null && matchedGroups[1].length > 0) {\n if (matchedGroups[1] === '0') {\n return;\n }\n }\n return number;\n}\n//# sourceMappingURL=stripIddPrefix.js.map","function _createForOfIteratorHelperLoose(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (t) return (t = t.call(r)).next.bind(t); if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var o = 0; return function () { return o >= r.length ? { done: !0 } : { done: !1, value: r[o++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nimport Metadata from '../metadata.js';\nimport getNumberType from './getNumberType.js';\n\n// Returns the exact country that the `nationalPhoneNumber` belongs to\n// in cases of ambiguity, i.e. when multiple countries share the same \"country calling code\".\nexport default function getCountryByNationalNumber(nationalPhoneNumber, _ref) {\n var countries = _ref.countries,\n metadata = _ref.metadata;\n // Re-create `metadata` because it will be selecting a `country`.\n metadata = new Metadata(metadata);\n\n // const matchingCountries = []\n\n for (var _iterator = _createForOfIteratorHelperLoose(countries), _step; !(_step = _iterator()).done;) {\n var country = _step.value;\n metadata.selectNumberingPlan(country);\n // \"Leading digits\" patterns are only defined for about 20% of all countries.\n // By definition, matching \"leading digits\" is a sufficient but not a necessary\n // condition for a phone number to belong to a country.\n // The point of \"leading digits\" check is that it's the fastest one to get a match.\n // https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md#leading_digits\n // I'd suppose that \"leading digits\" patterns are mutually exclusive for different countries\n // because of the intended use of that feature.\n if (metadata.leadingDigits()) {\n if (nationalPhoneNumber && nationalPhoneNumber.search(metadata.leadingDigits()) === 0) {\n return country;\n }\n }\n // Else perform full validation with all of those\n // fixed-line/mobile/etc regular expressions.\n else if (getNumberType({\n phone: nationalPhoneNumber,\n country: country\n }, undefined, metadata.metadata)) {\n // When multiple countries share the same \"country calling code\",\n // type patterns aren't guaranteed to be unique among them.\n // For example, both `US` and `CA` have the same pattern for `toll_free` numbers.\n // https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/103#note_1417147572\n //\n // That means that this `if` condition could be `true` for multiple countries from the list.\n // Currently, it just returns the first one, which is also the \"main\" country for the \"country calling code\".\n // In an example with `toll_free` numbers above, `\"US\"` would be returned even though\n // it could as well be `\"CA\"`.\n //\n // There was also a time when this attempted to be overly smart\n // and kept track of all such multiple matching countries\n // and then picked the one that matched the `defaultCountry`, if provided.\n // For example, with `toll_free` numbers above, and with `defaultCountry: \"CA\"`,\n // it would've returned `\"CA\"` instead of `\"US\"`.\n // Later it turned out that such \"overly smart\" behavior turned out to be just confusing,\n // so this \"overly smart\" country detection was reverted to returning the \"main\" country\n // for the \"country calling code\".\n // https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/154\n //\n return country;\n //\n // The \"overly smart\" behavior code:\n //\n // if (defaultCountry) {\n // \tif (country === defaultCountry) {\n // \t\treturn country\n // \t} else {\n // \t\tmatchingCountries.push(country)\n // \t}\n // } else {\n // \treturn country\n // }\n }\n }\n\n // // Return the first (\"main\") one of the `matchingCountries`.\n // if (matchingCountries.length > 0) {\n // \treturn matchingCountries[0]\n // }\n}\n//# sourceMappingURL=getCountryByNationalNumber.js.map","import getCountryByNationalNumber from './getCountryByNationalNumber.js';\nvar USE_NON_GEOGRAPHIC_COUNTRY_CODE = false;\n\n// Returns the exact country for the `nationalNumber`\n// that belongs to the specified \"country calling code\".\nexport default function getCountryByCallingCode(callingCode, _ref) {\n var nationalPhoneNumber = _ref.nationalNumber,\n metadata = _ref.metadata;\n /* istanbul ignore if */\n if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n if (metadata.isNonGeographicCallingCode(callingCode)) {\n return '001';\n }\n }\n var possibleCountries = metadata.getCountryCodesForCallingCode(callingCode);\n if (!possibleCountries) {\n return;\n }\n // If there's just one country corresponding to the country code,\n // then just return it, without further phone number digits validation.\n if (possibleCountries.length === 1) {\n return possibleCountries[0];\n }\n return getCountryByNationalNumber(nationalPhoneNumber, {\n countries: possibleCountries,\n metadata: metadata.metadata\n });\n}\n//# sourceMappingURL=getCountryByCallingCode.js.map","import extractNationalNumberFromPossiblyIncompleteNumber from './extractNationalNumberFromPossiblyIncompleteNumber.js';\nimport matchesEntirely from './matchesEntirely.js';\nimport checkNumberLength from './checkNumberLength.js';\nimport getCountryByCallingCode from './getCountryByCallingCode.js';\n\n/**\r\n * Strips national prefix and carrier code from a complete phone number.\r\n * The difference from the non-\"FromCompleteNumber\" function is that\r\n * it won't extract national prefix if the resultant number is too short\r\n * to be a complete number for the selected phone numbering plan.\r\n * @param {string} number — Complete phone number digits.\r\n * @param {string?} country — Country, if known.\r\n * @param {Metadata} metadata — Metadata with a phone numbering plan selected.\r\n * @return {object} `{ nationalNumber: string, carrierCode: string? }`.\r\n */\nexport default function extractNationalNumber(number, country, metadata) {\n // Parsing national prefixes and carrier codes\n // is only required for local phone numbers\n // but some people don't understand that\n // and sometimes write international phone numbers\n // with national prefixes (or maybe even carrier codes).\n // http://ucken.blogspot.ru/2016/03/trunk-prefixes-in-skype4b.html\n // Google's original library forgives such mistakes\n // and so does this library, because it has been requested:\n // https://github.com/catamphetamine/libphonenumber-js/issues/127\n var _extractNationalNumbe = extractNationalNumberFromPossiblyIncompleteNumber(number, metadata),\n carrierCode = _extractNationalNumbe.carrierCode,\n nationalNumber = _extractNationalNumbe.nationalNumber;\n if (nationalNumber !== number) {\n if (!shouldHaveExtractedNationalPrefix(number, nationalNumber, metadata)) {\n // Don't strip the national prefix.\n return {\n nationalNumber: number\n };\n }\n // Check the national (significant) number length after extracting national prefix and carrier code.\n // Legacy generated metadata (before `1.0.18`) didn't support the \"possible lengths\" feature.\n if (metadata.numberingPlan.possibleLengths()) {\n // If an exact `country` is not specified, attempt to detect it from the assumed national number.\n if (!country) {\n country = getCountryByCallingCode(metadata.numberingPlan.callingCode(), {\n nationalNumber: nationalNumber,\n metadata: metadata\n });\n }\n\n // The number remaining after stripping the national prefix and carrier code\n // should be long enough to have a possible length for the country.\n // Otherwise, don't strip the national prefix and carrier code,\n // since the original number could be a valid number.\n // This check has been copy-pasted \"as is\" from Google's original library:\n // https://github.com/google/libphonenumber/blob/876268eb1ad6cdc1b7b5bef17fc5e43052702d57/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L3236-L3250\n // It doesn't check for the \"possibility\" of the original `number`.\n // I guess it's fine not checking that one. It works as is anyway.\n if (!isPossibleIncompleteNationalNumber(nationalNumber, country, metadata)) {\n // Don't strip the national prefix.\n return {\n nationalNumber: number\n };\n }\n }\n }\n return {\n nationalNumber: nationalNumber,\n carrierCode: carrierCode\n };\n}\n\n// In some countries, the same digit could be a national prefix\n// or a leading digit of a valid phone number.\n// For example, in Russia, national prefix is `8`,\n// and also `800 555 35 35` is a valid number\n// in which `8` is not a national prefix, but the first digit\n// of a national (significant) number.\n// Same's with Belarus:\n// `82004910060` is a valid national (significant) number,\n// but `2004910060` is not.\n// To support such cases (to prevent the code from always stripping\n// national prefix), a condition is imposed: a national prefix\n// is not extracted when the original number is \"viable\" and the\n// resultant number is not, a \"viable\" national number being the one\n// that matches `national_number_pattern`.\nfunction shouldHaveExtractedNationalPrefix(nationalNumberBefore, nationalNumberAfter, metadata) {\n // The equivalent in Google's code is:\n // https://github.com/google/libphonenumber/blob/e326fa1fc4283bb05eb35cb3c15c18f98a31af33/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L2969-L3004\n if (matchesEntirely(nationalNumberBefore, metadata.nationalNumberPattern()) && !matchesEntirely(nationalNumberAfter, metadata.nationalNumberPattern())) {\n return false;\n }\n // This \"is possible\" national number (length) check has been commented out\n // because it's superceded by the (effectively) same check done in the\n // `extractNationalNumber()` function after it calls `shouldHaveExtractedNationalPrefix()`.\n // In other words, why run the same check twice if it could only be run once.\n // // Check the national (significant) number length after extracting national prefix and carrier code.\n // // Fixes a minor \"weird behavior\" bug: https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/57\n // // (Legacy generated metadata (before `1.0.18`) didn't support the \"possible lengths\" feature).\n // if (metadata.possibleLengths()) {\n // \tif (isPossibleIncompleteNationalNumber(nationalNumberBefore, metadata) &&\n // \t\t!isPossibleIncompleteNationalNumber(nationalNumberAfter, metadata)) {\n // \t\treturn false\n // \t}\n // }\n return true;\n}\nfunction isPossibleIncompleteNationalNumber(nationalNumber, country, metadata) {\n switch (checkNumberLength(nationalNumber, country, metadata)) {\n case 'TOO_SHORT':\n case 'INVALID_LENGTH':\n // This library ignores \"local-only\" phone numbers (for simplicity).\n // See the readme for more info on what are \"local-only\" phone numbers.\n // case 'IS_POSSIBLE_LOCAL_ONLY':\n return false;\n default:\n return true;\n }\n}\n//# sourceMappingURL=extractNationalNumber.js.map","/**\r\n * Strips any national prefix (such as 0, 1) present in a\r\n * (possibly incomplete) number provided.\r\n * \"Carrier codes\" are only used in Colombia and Brazil,\r\n * and only when dialing within those countries from a mobile phone to a fixed line number.\r\n * Sometimes it won't actually strip national prefix\r\n * and will instead prepend some digits to the `number`:\r\n * for example, when number `2345678` is passed with `VI` country selected,\r\n * it will return `{ number: \"3402345678\" }`, because `340` area code is prepended.\r\n * @param {string} number — National number digits.\r\n * @param {object} metadata — Metadata with country selected.\r\n * @return {object} `{ nationalNumber: string, nationalPrefix: string? carrierCode: string? }`. Even if a national prefix was extracted, it's not necessarily present in the returned object, so don't rely on its presence in the returned object in order to find out whether a national prefix has been extracted or not.\r\n */\nexport default function extractNationalNumberFromPossiblyIncompleteNumber(number, metadata) {\n if (number && metadata.numberingPlan.nationalPrefixForParsing()) {\n // See METADATA.md for the description of\n // `national_prefix_for_parsing` and `national_prefix_transform_rule`.\n // Attempt to parse the first digits as a national prefix.\n var prefixPattern = new RegExp('^(?:' + metadata.numberingPlan.nationalPrefixForParsing() + ')');\n var prefixMatch = prefixPattern.exec(number);\n if (prefixMatch) {\n var nationalNumber;\n var carrierCode;\n // https://gitlab.com/catamphetamine/libphonenumber-js/-/blob/master/METADATA.md#national_prefix_for_parsing--national_prefix_transform_rule\n // If a `national_prefix_for_parsing` has any \"capturing groups\"\n // then it means that the national (significant) number is equal to\n // those \"capturing groups\" transformed via `national_prefix_transform_rule`,\n // and nothing could be said about the actual national prefix:\n // what is it and was it even there.\n // If a `national_prefix_for_parsing` doesn't have any \"capturing groups\",\n // then everything it matches is a national prefix.\n // To determine whether `national_prefix_for_parsing` matched any\n // \"capturing groups\", the value of the result of calling `.exec()`\n // is looked at, and if it has non-undefined values where there're\n // \"capturing groups\" in the regular expression, then it means\n // that \"capturing groups\" have been matched.\n // It's not possible to tell whether there'll be any \"capturing gropus\"\n // before the matching process, because a `national_prefix_for_parsing`\n // could exhibit both behaviors.\n var capturedGroupsCount = prefixMatch.length - 1;\n var hasCapturedGroups = capturedGroupsCount > 0 && prefixMatch[capturedGroupsCount];\n if (metadata.nationalPrefixTransformRule() && hasCapturedGroups) {\n nationalNumber = number.replace(prefixPattern, metadata.nationalPrefixTransformRule());\n // If there's more than one captured group,\n // then carrier code is the second one.\n if (capturedGroupsCount > 1) {\n carrierCode = prefixMatch[1];\n }\n }\n // If there're no \"capturing groups\",\n // or if there're \"capturing groups\" but no\n // `national_prefix_transform_rule`,\n // then just strip the national prefix from the number,\n // and possibly a carrier code.\n // Seems like there could be more.\n else {\n // `prefixBeforeNationalNumber` is the whole substring matched by\n // the `national_prefix_for_parsing` regular expression.\n // There seem to be no guarantees that it's just a national prefix.\n // For example, if there's a carrier code, it's gonna be a\n // part of `prefixBeforeNationalNumber` too.\n var prefixBeforeNationalNumber = prefixMatch[0];\n nationalNumber = number.slice(prefixBeforeNationalNumber.length);\n // If there's at least one captured group,\n // then carrier code is the first one.\n if (hasCapturedGroups) {\n carrierCode = prefixMatch[1];\n }\n }\n // Tries to guess whether a national prefix was present in the input.\n // This is not something copy-pasted from Google's library:\n // they don't seem to have an equivalent for that.\n // So this isn't an \"officially approved\" way of doing something like that.\n // But since there seems no other existing method, this library uses it.\n var nationalPrefix;\n if (hasCapturedGroups) {\n var possiblePositionOfTheFirstCapturedGroup = number.indexOf(prefixMatch[1]);\n var possibleNationalPrefix = number.slice(0, possiblePositionOfTheFirstCapturedGroup);\n // Example: an Argentinian (AR) phone number `0111523456789`.\n // `prefixMatch[0]` is `01115`, and `$1` is `11`,\n // and the rest of the phone number is `23456789`.\n // The national number is transformed via `9$1` to `91123456789`.\n // National prefix `0` is detected being present at the start.\n // if (possibleNationalPrefix.indexOf(metadata.numberingPlan.nationalPrefix()) === 0) {\n if (possibleNationalPrefix === metadata.numberingPlan.nationalPrefix()) {\n nationalPrefix = metadata.numberingPlan.nationalPrefix();\n }\n } else {\n nationalPrefix = prefixMatch[0];\n }\n return {\n nationalNumber: nationalNumber,\n nationalPrefix: nationalPrefix,\n carrierCode: carrierCode\n };\n }\n }\n return {\n nationalNumber: number\n };\n}\n//# sourceMappingURL=extractNationalNumberFromPossiblyIncompleteNumber.js.map","import stripIddPrefix from './stripIddPrefix.js';\nimport extractCountryCallingCodeFromInternationalNumberWithoutPlusSign from './extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js';\nimport Metadata from '../metadata.js';\nimport { MAX_LENGTH_COUNTRY_CODE } from '../constants.js';\n\n/**\r\n * Converts a phone number digits (possibly with a `+`)\r\n * into a calling code and the rest phone number digits.\r\n * The \"rest phone number digits\" could include\r\n * a national prefix, carrier code, and national\r\n * (significant) number.\r\n * @param {string} number — Phone number digits (possibly with a `+`).\r\n * @param {string} [country] — Country.\r\n * @param {string} [defaultCountry] — Default country.\r\n * @param {string} [defaultCallingCode] — Default calling code (some phone numbering plans are non-geographic).\r\n * @param {object} metadata\r\n * @return {object} `{ countryCallingCodeSource: string?, countryCallingCode: string?, number: string }`\r\n * @example\r\n * // Returns `{ countryCallingCode: \"1\", number: \"2133734253\" }`.\r\n * extractCountryCallingCode('2133734253', null, 'US', null, metadata)\r\n * extractCountryCallingCode('2133734253', null, null, '1', metadata)\r\n * extractCountryCallingCode('+12133734253', null, null, null, metadata)\r\n * extractCountryCallingCode('+12133734253', null, 'RU', null, metadata)\r\n */\nexport default function extractCountryCallingCode(number, country, defaultCountry, defaultCallingCode, metadata) {\n if (!number) {\n return {};\n }\n var isNumberWithIddPrefix;\n\n // If this is not an international phone number,\n // then either extract an \"IDD\" prefix, or extract a\n // country calling code from a number by autocorrecting it\n // by prepending a leading `+` in cases when it starts\n // with the country calling code.\n // https://wikitravel.org/en/International_dialling_prefix\n // https://github.com/catamphetamine/libphonenumber-js/issues/376\n if (number[0] !== '+') {\n // Convert an \"out-of-country\" dialing phone number\n // to a proper international phone number.\n var numberWithoutIDD = stripIddPrefix(number, country || defaultCountry, defaultCallingCode, metadata);\n // If an IDD prefix was stripped then\n // convert the number to international one\n // for subsequent parsing.\n if (numberWithoutIDD && numberWithoutIDD !== number) {\n isNumberWithIddPrefix = true;\n number = '+' + numberWithoutIDD;\n } else {\n // Check to see if the number starts with the country calling code\n // for the default country. If so, we remove the country calling code,\n // and do some checks on the validity of the number before and after.\n // https://github.com/catamphetamine/libphonenumber-js/issues/376\n if (country || defaultCountry || defaultCallingCode) {\n var _extractCountryCallin = extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(number, country, defaultCountry, defaultCallingCode, metadata),\n countryCallingCode = _extractCountryCallin.countryCallingCode,\n shorterNumber = _extractCountryCallin.number;\n if (countryCallingCode) {\n return {\n countryCallingCodeSource: 'FROM_NUMBER_WITHOUT_PLUS_SIGN',\n countryCallingCode: countryCallingCode,\n number: shorterNumber\n };\n }\n }\n return {\n // No need to set it to `UNSPECIFIED`. It can be just `undefined`.\n // countryCallingCodeSource: 'UNSPECIFIED',\n number: number\n };\n }\n }\n\n // `number` can only be international at this point.\n\n // Fast abortion: country codes do not begin with a '0'\n if (number[1] === '0') {\n return {};\n }\n metadata = new Metadata(metadata);\n\n // The thing with country phone codes\n // is that they are orthogonal to each other\n // i.e. there's no such country phone code A\n // for which country phone code B exists\n // where B starts with A.\n // Therefore, while scanning digits,\n // if a valid country code is found,\n // that means that it is the country code.\n //\n var i = 2;\n while (i - 1 <= MAX_LENGTH_COUNTRY_CODE && i <= number.length) {\n var _countryCallingCode = number.slice(1, i);\n if (metadata.hasCallingCode(_countryCallingCode)) {\n metadata.selectNumberingPlan(_countryCallingCode);\n return {\n countryCallingCodeSource: isNumberWithIddPrefix ? 'FROM_NUMBER_WITH_IDD' : 'FROM_NUMBER_WITH_PLUS_SIGN',\n countryCallingCode: _countryCallingCode,\n number: number.slice(i)\n };\n }\n i++;\n }\n return {};\n}\n\n// The possible values for the returned `countryCallingCodeSource` are:\n//\n// Copy-pasted from:\n// https://github.com/google/libphonenumber/blob/master/resources/phonenumber.proto\n//\n// // The source from which the country_code is derived. This is not set in the\n// // general parsing method, but in the method that parses and keeps raw_input.\n// // New fields could be added upon request.\n// enum CountryCodeSource {\n// // Default value returned if this is not set, because the phone number was\n// // created using parse, not parseAndKeepRawInput. hasCountryCodeSource will\n// // return false if this is the case.\n// UNSPECIFIED = 0;\n//\n// // The country_code is derived based on a phone number with a leading \"+\",\n// // e.g. the French number \"+33 1 42 68 53 00\".\n// FROM_NUMBER_WITH_PLUS_SIGN = 1;\n//\n// // The country_code is derived based on a phone number with a leading IDD,\n// // e.g. the French number \"011 33 1 42 68 53 00\", as it is dialled from US.\n// FROM_NUMBER_WITH_IDD = 5;\n//\n// // The country_code is derived based on a phone number without a leading\n// // \"+\", e.g. the French number \"33 1 42 68 53 00\" when defaultCountry is\n// // supplied as France.\n// FROM_NUMBER_WITHOUT_PLUS_SIGN = 10;\n//\n// // The country_code is derived NOT based on the phone number itself, but\n// // from the defaultCountry parameter provided in the parsing function by the\n// // clients. This happens mostly for numbers written in the national format\n// // (without country code). For example, this would be set when parsing the\n// // French number \"01 42 68 53 00\", when defaultCountry is supplied as\n// // France.\n// FROM_DEFAULT_COUNTRY = 20;\n// }\n//# sourceMappingURL=extractCountryCallingCode.js.map","import Metadata from '../metadata.js';\nimport matchesEntirely from './matchesEntirely.js';\nimport extractNationalNumber from './extractNationalNumber.js';\nimport checkNumberLength from './checkNumberLength.js';\nimport getCountryCallingCode from '../getCountryCallingCode.js';\n\n/**\r\n * Sometimes some people incorrectly input international phone numbers\r\n * without the leading `+`. This function corrects such input.\r\n * @param {string} number — Phone number digits.\r\n * @param {string} [country] — Exact country of the phone number.\r\n * @param {string} [defaultCountry]\r\n * @param {string} [defaultCallingCode]\r\n * @param {object} metadata\r\n * @return {object} `{ countryCallingCode: string?, number: string }`.\r\n */\nexport default function extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(number, country, defaultCountry, defaultCallingCode, metadata) {\n var countryCallingCode = country || defaultCountry ? getCountryCallingCode(country || defaultCountry, metadata) : defaultCallingCode;\n if (number.indexOf(countryCallingCode) === 0) {\n metadata = new Metadata(metadata);\n metadata.selectNumberingPlan(country || defaultCountry, countryCallingCode);\n var possibleShorterNumber = number.slice(countryCallingCode.length);\n var _extractNationalNumbe = extractNationalNumber(possibleShorterNumber, country, metadata),\n possibleShorterNationalNumber = _extractNationalNumbe.nationalNumber;\n var _extractNationalNumbe2 = extractNationalNumber(number, country, metadata),\n nationalNumber = _extractNationalNumbe2.nationalNumber;\n\n // If the number was not valid before but is valid now,\n // or if it was too long before, we consider the number\n // with the country calling code stripped to be a better result\n // and keep that instead.\n // For example, in Germany (+49), `49` is a valid area code,\n // so if a number starts with `49`, it could be both a valid\n // national German number or an international number without\n // a leading `+`.\n if (!matchesEntirely(nationalNumber, metadata.nationalNumberPattern()) && matchesEntirely(possibleShorterNationalNumber, metadata.nationalNumberPattern()) || checkNumberLength(nationalNumber, country, metadata) === 'TOO_LONG') {\n return {\n countryCallingCode: countryCallingCode,\n number: possibleShorterNumber\n };\n }\n }\n return {\n number: number\n };\n}\n//# sourceMappingURL=extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js.map","import applyInternationalSeparatorStyle from './applyInternationalSeparatorStyle.js';\n\n// This was originally set to $1 but there are some countries for which the\n// first group is not used in the national pattern (e.g. Argentina) so the $1\n// group does not match correctly. Therefore, we use `\\d`, so that the first\n// group actually used in the pattern will be matched.\nexport var FIRST_GROUP_PATTERN = /(\\$\\d)/;\nexport default function formatNationalNumberUsingFormat(number, format, _ref) {\n var useInternationalFormat = _ref.useInternationalFormat,\n withNationalPrefix = _ref.withNationalPrefix,\n carrierCode = _ref.carrierCode,\n metadata = _ref.metadata;\n var formattedNumber = number.replace(new RegExp(format.pattern()), useInternationalFormat ? format.internationalFormat() :\n // This library doesn't use `domestic_carrier_code_formatting_rule`,\n // because that one is only used when formatting phone numbers\n // for dialing from a mobile phone, and this is not a dialing library.\n // carrierCode && format.domesticCarrierCodeFormattingRule()\n // \t// First, replace the $CC in the formatting rule with the desired carrier code.\n // \t// Then, replace the $FG in the formatting rule with the first group\n // \t// and the carrier code combined in the appropriate way.\n // \t? format.format().replace(FIRST_GROUP_PATTERN, format.domesticCarrierCodeFormattingRule().replace('$CC', carrierCode))\n // \t: (\n // \t\twithNationalPrefix && format.nationalPrefixFormattingRule()\n // \t\t\t? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule())\n // \t\t\t: format.format()\n // \t)\n withNationalPrefix && format.nationalPrefixFormattingRule() ? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule()) : format.format());\n if (useInternationalFormat) {\n return applyInternationalSeparatorStyle(formattedNumber);\n }\n return formattedNumber;\n}\n//# sourceMappingURL=formatNationalNumberUsingFormat.js.map","import { VALID_PUNCTUATION } from '../constants.js';\n\n// Removes brackets and replaces dashes with spaces.\n//\n// E.g. \"(999) 111-22-33\" -> \"999 111 22 33\"\n//\n// For some reason Google's metadata contains `<intlFormat/>`s with brackets and dashes.\n// Meanwhile, there's no single opinion about using punctuation in international phone numbers.\n//\n// For example, Google's `<intlFormat/>` for USA is `+1 213-373-4253`.\n// And here's a quote from WikiPedia's \"North American Numbering Plan\" page:\n// https://en.wikipedia.org/wiki/North_American_Numbering_Plan\n//\n// \"The country calling code for all countries participating in the NANP is 1.\n// In international format, an NANP number should be listed as +1 301 555 01 00,\n// where 301 is an area code (Maryland).\"\n//\n// I personally prefer the international format without any punctuation.\n// For example, brackets are remnants of the old age, meaning that the\n// phone number part in brackets (so called \"area code\") can be omitted\n// if dialing within the same \"area\".\n// And hyphens were clearly introduced for splitting local numbers into memorizable groups.\n// For example, remembering \"5553535\" is difficult but \"555-35-35\" is much simpler.\n// Imagine a man taking a bus from home to work and seeing an ad with a phone number.\n// He has a couple of seconds to memorize that number until it passes by.\n// If it were spaces instead of hyphens the man wouldn't necessarily get it,\n// but with hyphens instead of spaces the grouping is more explicit.\n// I personally think that hyphens introduce visual clutter,\n// so I prefer replacing them with spaces in international numbers.\n// In the modern age all output is done on displays where spaces are clearly distinguishable\n// so hyphens can be safely replaced with spaces without losing any legibility.\n//\nexport default function applyInternationalSeparatorStyle(formattedNumber) {\n return formattedNumber.replace(new RegExp(\"[\".concat(VALID_PUNCTUATION, \"]+\"), 'g'), ' ').trim();\n}\n//# sourceMappingURL=applyInternationalSeparatorStyle.js.map","import Metadata from '../metadata.js';\n\n/**\r\n * Pattern that makes it easy to distinguish whether a region has a single\r\n * international dialing prefix or not. If a region has a single international\r\n * prefix (e.g. 011 in USA), it will be represented as a string that contains\r\n * a sequence of ASCII digits, and possibly a tilde, which signals waiting for\r\n * the tone. If there are multiple available international prefixes in a\r\n * region, they will be represented as a regex string that always contains one\r\n * or more characters that are not ASCII digits or a tilde.\r\n */\nvar SINGLE_IDD_PREFIX_REG_EXP = /^[\\d]+(?:[~\\u2053\\u223C\\uFF5E][\\d]+)?$/;\n\n// For regions that have multiple IDD prefixes\n// a preferred IDD prefix is returned.\nexport default function getIddPrefix(country, callingCode, metadata) {\n var countryMetadata = new Metadata(metadata);\n countryMetadata.selectNumberingPlan(country, callingCode);\n if (countryMetadata.defaultIDDPrefix()) {\n return countryMetadata.defaultIDDPrefix();\n }\n if (SINGLE_IDD_PREFIX_REG_EXP.test(countryMetadata.IDDPrefix())) {\n return countryMetadata.IDDPrefix();\n }\n}\n//# sourceMappingURL=getIddPrefix.js.map","import { VALID_DIGITS } from '../../constants.js';\n\n// The RFC 3966 format for extensions.\nvar RFC3966_EXTN_PREFIX = ';ext=';\n\n/**\r\n * Helper method for constructing regular expressions for parsing. Creates\r\n * an expression that captures up to max_length digits.\r\n * @return {string} RegEx pattern to capture extension digits.\r\n */\nvar getExtensionDigitsPattern = function getExtensionDigitsPattern(maxLength) {\n return \"([\".concat(VALID_DIGITS, \"]{1,\").concat(maxLength, \"})\");\n};\n\n/**\r\n * Helper initialiser method to create the regular-expression pattern to match\r\n * extensions.\r\n * Copy-pasted from Google's `libphonenumber`:\r\n * https://github.com/google/libphonenumber/blob/55b2646ec9393f4d3d6661b9c82ef9e258e8b829/javascript/i18n/phonenumbers/phonenumberutil.js#L759-L766\r\n * @return {string} RegEx pattern to capture extensions.\r\n */\nexport default function createExtensionPattern(purpose) {\n // We cap the maximum length of an extension based on the ambiguity of the way\n // the extension is prefixed. As per ITU, the officially allowed length for\n // extensions is actually 40, but we don't support this since we haven't seen real\n // examples and this introduces many false interpretations as the extension labels\n // are not standardized.\n /** @type {string} */\n var extLimitAfterExplicitLabel = '20';\n /** @type {string} */\n var extLimitAfterLikelyLabel = '15';\n /** @type {string} */\n var extLimitAfterAmbiguousChar = '9';\n /** @type {string} */\n var extLimitWhenNotSure = '6';\n\n /** @type {string} */\n var possibleSeparatorsBetweenNumberAndExtLabel = \"[ \\xA0\\\\t,]*\";\n // Optional full stop (.) or colon, followed by zero or more spaces/tabs/commas.\n /** @type {string} */\n var possibleCharsAfterExtLabel = \"[:\\\\.\\uFF0E]?[ \\xA0\\\\t,-]*\";\n /** @type {string} */\n var optionalExtnSuffix = \"#?\";\n\n // Here the extension is called out in more explicit way, i.e mentioning it obvious\n // patterns like \"ext.\".\n /** @type {string} */\n var explicitExtLabels = \"(?:e?xt(?:ensi(?:o\\u0301?|\\xF3))?n?|\\uFF45?\\uFF58\\uFF54\\uFF4E?|\\u0434\\u043E\\u0431|anexo)\";\n // One-character symbols that can be used to indicate an extension, and less\n // commonly used or more ambiguous extension labels.\n /** @type {string} */\n var ambiguousExtLabels = \"(?:[x\\uFF58#\\uFF03~\\uFF5E]|int|\\uFF49\\uFF4E\\uFF54)\";\n // When extension is not separated clearly.\n /** @type {string} */\n var ambiguousSeparator = \"[- ]+\";\n // This is the same as possibleSeparatorsBetweenNumberAndExtLabel, but not matching\n // comma as extension label may have it.\n /** @type {string} */\n var possibleSeparatorsNumberExtLabelNoComma = \"[ \\xA0\\\\t]*\";\n // \",,\" is commonly used for auto dialling the extension when connected. First\n // comma is matched through possibleSeparatorsBetweenNumberAndExtLabel, so we do\n // not repeat it here. Semi-colon works in Iphone and Android also to pop up a\n // button with the extension number following.\n /** @type {string} */\n var autoDiallingAndExtLabelsFound = \"(?:,{2}|;)\";\n\n /** @type {string} */\n var rfcExtn = RFC3966_EXTN_PREFIX + getExtensionDigitsPattern(extLimitAfterExplicitLabel);\n /** @type {string} */\n var explicitExtn = possibleSeparatorsBetweenNumberAndExtLabel + explicitExtLabels + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterExplicitLabel) + optionalExtnSuffix;\n /** @type {string} */\n var ambiguousExtn = possibleSeparatorsBetweenNumberAndExtLabel + ambiguousExtLabels + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterAmbiguousChar) + optionalExtnSuffix;\n /** @type {string} */\n var americanStyleExtnWithSuffix = ambiguousSeparator + getExtensionDigitsPattern(extLimitWhenNotSure) + \"#\";\n\n /** @type {string} */\n var autoDiallingExtn = possibleSeparatorsNumberExtLabelNoComma + autoDiallingAndExtLabelsFound + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterLikelyLabel) + optionalExtnSuffix;\n /** @type {string} */\n var onlyCommasExtn = possibleSeparatorsNumberExtLabelNoComma + \"(?:,)+\" + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterAmbiguousChar) + optionalExtnSuffix;\n\n // The first regular expression covers RFC 3966 format, where the extension is added\n // using \";ext=\". The second more generic where extension is mentioned with explicit\n // labels like \"ext:\". In both the above cases we allow more numbers in extension than\n // any other extension labels. The third one captures when single character extension\n // labels or less commonly used labels are used. In such cases we capture fewer\n // extension digits in order to reduce the chance of falsely interpreting two\n // numbers beside each other as a number + extension. The fourth one covers the\n // special case of American numbers where the extension is written with a hash\n // at the end, such as \"- 503#\". The fifth one is exclusively for extension\n // autodialling formats which are used when dialling and in this case we accept longer\n // extensions. The last one is more liberal on the number of commas that acts as\n // extension labels, so we have a strict cap on the number of digits in such extensions.\n return rfcExtn + \"|\" + explicitExtn + \"|\" + ambiguousExtn + \"|\" + americanStyleExtnWithSuffix + \"|\" + autoDiallingExtn + \"|\" + onlyCommasExtn;\n}\n//# sourceMappingURL=createExtensionPattern.js.map","import { MIN_LENGTH_FOR_NSN, VALID_DIGITS, VALID_PUNCTUATION, PLUS_CHARS } from '../constants.js';\nimport createExtensionPattern from './extension/createExtensionPattern.js';\n\n// Regular expression of viable phone numbers. This is location independent.\n// Checks we have at least three leading digits, and only valid punctuation,\n// alpha characters and digits in the phone number. Does not include extension\n// data. The symbol 'x' is allowed here as valid punctuation since it is often\n// used as a placeholder for carrier codes, for example in Brazilian phone\n// numbers. We also allow multiple '+' characters at the start.\n//\n// Corresponds to the following:\n// [digits]{minLengthNsn}|\n// plus_sign*\n// (([punctuation]|[star])*[digits]){3,}([punctuation]|[star]|[digits]|[alpha])*\n//\n// The first reg-ex is to allow short numbers (two digits long) to be parsed if\n// they are entered as \"15\" etc, but only if there is no punctuation in them.\n// The second expression restricts the number of digits to three or more, but\n// then allows them to be in international form, and to have alpha-characters\n// and punctuation. We split up the two reg-exes here and combine them when\n// creating the reg-ex VALID_PHONE_NUMBER_PATTERN itself so we can prefix it\n// with ^ and append $ to each branch.\n//\n// \"Note VALID_PUNCTUATION starts with a -,\n// so must be the first in the range\" (c) Google devs.\n// (wtf did they mean by saying that; probably nothing)\n//\nvar MIN_LENGTH_PHONE_NUMBER_PATTERN = '[' + VALID_DIGITS + ']{' + MIN_LENGTH_FOR_NSN + '}';\n//\n// And this is the second reg-exp:\n// (see MIN_LENGTH_PHONE_NUMBER_PATTERN for a full description of this reg-exp)\n//\nexport var VALID_PHONE_NUMBER = '[' + PLUS_CHARS + ']{0,1}' + '(?:' + '[' + VALID_PUNCTUATION + ']*' + '[' + VALID_DIGITS + ']' + '){3,}' + '[' + VALID_PUNCTUATION + VALID_DIGITS + ']*';\n\n// This regular expression isn't present in Google's `libphonenumber`\n// and is only used to determine whether the phone number being input\n// is too short for it to even consider it a \"valid\" number.\n// This is just a way to differentiate between a really invalid phone\n// number like \"abcde\" and a valid phone number that a user has just\n// started inputting, like \"+1\" or \"1\": both these cases would be\n// considered `NOT_A_NUMBER` by Google's `libphonenumber`, but this\n// library can provide a more detailed error message — whether it's\n// really \"not a number\", or is it just a start of a valid phone number.\nvar VALID_PHONE_NUMBER_START_REG_EXP = new RegExp('^' + '[' + PLUS_CHARS + ']{0,1}' + '(?:' + '[' + VALID_PUNCTUATION + ']*' + '[' + VALID_DIGITS + ']' + '){1,2}' + '$', 'i');\nexport var VALID_PHONE_NUMBER_WITH_EXTENSION = VALID_PHONE_NUMBER +\n// Phone number extensions\n'(?:' + createExtensionPattern() + ')?';\n\n// The combined regular expression for valid phone numbers:\n//\nvar VALID_PHONE_NUMBER_PATTERN = new RegExp(\n// Either a short two-digit-only phone number\n'^' + MIN_LENGTH_PHONE_NUMBER_PATTERN + '$' + '|' +\n// Or a longer fully parsed phone number (min 3 characters)\n'^' + VALID_PHONE_NUMBER_WITH_EXTENSION + '$', 'i');\n\n// Checks to see if the string of characters could possibly be a phone number at\n// all. At the moment, checks to see that the string begins with at least 2\n// digits, ignoring any punctuation commonly found in phone numbers. This method\n// does not require the number to be normalized in advance - but does assume\n// that leading non-number symbols have been removed, such as by the method\n// `extract_possible_number`.\n//\nexport default function isViablePhoneNumber(number) {\n return number.length >= MIN_LENGTH_FOR_NSN && VALID_PHONE_NUMBER_PATTERN.test(number);\n}\n\n// This is just a way to differentiate between a really invalid phone\n// number like \"abcde\" and a valid phone number that a user has just\n// started inputting, like \"+1\" or \"1\": both these cases would be\n// considered `NOT_A_NUMBER` by Google's `libphonenumber`, but this\n// library can provide a more detailed error message — whether it's\n// really \"not a number\", or is it just a start of a valid phone number.\nexport function isViablePhoneNumberStart(number) {\n return VALID_PHONE_NUMBER_START_REG_EXP.test(number);\n}\n//# sourceMappingURL=isViablePhoneNumber.js.map","// This is a port of Google Android `libphonenumber`'s\n// `phonenumberutil.js` of December 31th, 2018.\n//\n// https://github.com/googlei18n/libphonenumber/commits/master/javascript/i18n/phonenumbers/phonenumberutil.js\n\nimport matchesEntirely from './helpers/matchesEntirely.js';\nimport formatNationalNumberUsingFormat from './helpers/formatNationalNumberUsingFormat.js';\nimport Metadata, { getCountryCallingCode } from './metadata.js';\nimport getIddPrefix from './helpers/getIddPrefix.js';\nimport { formatRFC3966 } from './helpers/RFC3966.js';\nvar DEFAULT_OPTIONS = {\n formatExtension: function formatExtension(formattedNumber, extension, metadata) {\n return \"\".concat(formattedNumber).concat(metadata.ext()).concat(extension);\n }\n};\n\n/**\r\n * Formats a phone number.\r\n *\r\n * format(phoneNumberInstance, 'INTERNATIONAL', { ..., v2: true }, metadata)\r\n * format(phoneNumberInstance, 'NATIONAL', { ..., v2: true }, metadata)\r\n *\r\n * format({ phone: '8005553535', country: 'RU' }, 'INTERNATIONAL', { ... }, metadata)\r\n * format({ phone: '8005553535', country: 'RU' }, 'NATIONAL', undefined, metadata)\r\n *\r\n * @param {object|PhoneNumber} input — If `options.v2: true` flag is passed, the `input` should be a `PhoneNumber` instance. Otherwise, it should be an object of shape `{ phone: '...', country: '...' }`.\r\n * @param {string} format\r\n * @param {object} [options]\r\n * @param {object} metadata\r\n * @return {string}\r\n */\nexport default function formatNumber(input, format, options, metadata) {\n // Apply default options.\n if (options) {\n // Using ES6 \"rest spread\" syntax here didn't work with `babel`/`istanbul`\n // for some weird reason: this line of code would cause the code coverage\n // to show as not 100%. That's because `babel`/`istanbul`, for some weird reason,\n // apparently doesn't know how to properly exclude Babel polyfills from code coverage.\n //\n // options = { ...DEFAULT_OPTIONS, ...options }\n //\n options = merge({}, DEFAULT_OPTIONS, options);\n } else {\n options = DEFAULT_OPTIONS;\n }\n metadata = new Metadata(metadata);\n if (input.country && input.country !== '001') {\n // Validate `input.country`.\n if (!metadata.hasCountry(input.country)) {\n throw new Error(\"Unknown country: \".concat(input.country));\n }\n metadata.selectNumberingPlan(input.country);\n } else if (input.countryCallingCode) {\n metadata.selectNumberingPlan(input.countryCallingCode);\n } else return input.phone || '';\n var countryCallingCode = metadata.countryCallingCode();\n var nationalNumber = options.v2 ? input.nationalNumber : input.phone;\n\n // This variable should have been declared inside `case`s\n // but Babel has a bug and it says \"duplicate variable declaration\".\n var number;\n switch (format) {\n case 'NATIONAL':\n // Legacy argument support.\n // (`{ country: ..., phone: '' }`)\n if (!nationalNumber) {\n return '';\n }\n number = formatNationalNumber(nationalNumber, input.carrierCode, 'NATIONAL', metadata, options);\n return addExtension(number, input.ext, metadata, options.formatExtension);\n case 'INTERNATIONAL':\n // Legacy argument support.\n // (`{ country: ..., phone: '' }`)\n if (!nationalNumber) {\n return \"+\".concat(countryCallingCode);\n }\n number = formatNationalNumber(nationalNumber, null, 'INTERNATIONAL', metadata, options);\n number = \"+\".concat(countryCallingCode, \" \").concat(number);\n return addExtension(number, input.ext, metadata, options.formatExtension);\n case 'E.164':\n // `E.164` doesn't define \"phone number extensions\".\n return \"+\".concat(countryCallingCode).concat(nationalNumber);\n case 'RFC3966':\n return formatRFC3966({\n number: \"+\".concat(countryCallingCode).concat(nationalNumber),\n ext: input.ext\n });\n\n // For reference, here's Google's IDD formatter:\n // https://github.com/google/libphonenumber/blob/32719cf74e68796788d1ca45abc85dcdc63ba5b9/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L1546\n // Not saying that this IDD formatter replicates it 1:1, but it seems to work.\n // Who would even need to format phone numbers in IDD format anyway?\n case 'IDD':\n if (!options.fromCountry) {\n return;\n // throw new Error('`fromCountry` option not passed for IDD-prefixed formatting.')\n }\n var formattedNumber = formatIDD(nationalNumber, input.carrierCode, countryCallingCode, options.fromCountry, metadata);\n return addExtension(formattedNumber, input.ext, metadata, options.formatExtension);\n default:\n throw new Error(\"Unknown \\\"format\\\" argument passed to \\\"formatNumber()\\\": \\\"\".concat(format, \"\\\"\"));\n }\n}\nfunction formatNationalNumber(number, carrierCode, formatAs, metadata, options) {\n var format = chooseFormatForNumber(metadata.formats(), number);\n if (!format) {\n return number;\n }\n return formatNationalNumberUsingFormat(number, format, {\n useInternationalFormat: formatAs === 'INTERNATIONAL',\n withNationalPrefix: format.nationalPrefixIsOptionalWhenFormattingInNationalFormat() && options && options.nationalPrefix === false ? false : true,\n carrierCode: carrierCode,\n metadata: metadata\n });\n}\nexport function chooseFormatForNumber(availableFormats, nationalNumber) {\n // Using a `for ... of` loop here didn't work with `babel`/`istanbul`:\n // for some weird reason, it showed code coverage less than 100%.\n // That's because `babel`/`istanbul`, for some weird reason,\n // apparently doesn't know how to properly exclude Babel polyfills from code coverage.\n //\n // for (const format of availableFormats) { ... }\n //\n return pickFirstMatchingElement(availableFormats, function (format) {\n // Validate leading digits.\n // The test case for \"else path\" could be found by searching for\n // \"format.leadingDigitsPatterns().length === 0\".\n if (format.leadingDigitsPatterns().length > 0) {\n // The last leading_digits_pattern is used here, as it is the most detailed\n var lastLeadingDigitsPattern = format.leadingDigitsPatterns()[format.leadingDigitsPatterns().length - 1];\n // If leading digits don't match then move on to the next phone number format\n if (nationalNumber.search(lastLeadingDigitsPattern) !== 0) {\n return false;\n }\n }\n // Check that the national number matches the phone number format regular expression\n return matchesEntirely(nationalNumber, format.pattern());\n });\n}\nfunction addExtension(formattedNumber, ext, metadata, formatExtension) {\n return ext ? formatExtension(formattedNumber, ext, metadata) : formattedNumber;\n}\nfunction formatIDD(nationalNumber, carrierCode, countryCallingCode, fromCountry, metadata) {\n var fromCountryCallingCode = getCountryCallingCode(fromCountry, metadata.metadata);\n // When calling within the same country calling code.\n if (fromCountryCallingCode === countryCallingCode) {\n var formattedNumber = formatNationalNumber(nationalNumber, carrierCode, 'NATIONAL', metadata);\n // For NANPA regions, return the national format for these regions\n // but prefix it with the country calling code.\n if (countryCallingCode === '1') {\n return countryCallingCode + ' ' + formattedNumber;\n }\n // If regions share a country calling code, the country calling code need\n // not be dialled. This also applies when dialling within a region, so this\n // if clause covers both these cases. Technically this is the case for\n // dialling from La Reunion to other overseas departments of France (French\n // Guiana, Martinique, Guadeloupe), but not vice versa - so we don't cover\n // this edge case for now and for those cases return the version including\n // country calling code. Details here:\n // http://www.petitfute.com/voyage/225-info-pratiques-reunion\n //\n return formattedNumber;\n }\n var iddPrefix = getIddPrefix(fromCountry, undefined, metadata.metadata);\n if (iddPrefix) {\n return \"\".concat(iddPrefix, \" \").concat(countryCallingCode, \" \").concat(formatNationalNumber(nationalNumber, null, 'INTERNATIONAL', metadata));\n }\n}\nfunction merge() {\n var i = 1;\n for (var _len = arguments.length, objects = new Array(_len), _key = 0; _key < _len; _key++) {\n objects[_key] = arguments[_key];\n }\n while (i < objects.length) {\n if (objects[i]) {\n for (var key in objects[i]) {\n objects[0][key] = objects[i][key];\n }\n }\n i++;\n }\n return objects[0];\n}\nfunction pickFirstMatchingElement(elements, testFunction) {\n var i = 0;\n while (i < elements.length) {\n if (testFunction(elements[i])) {\n return elements[i];\n }\n i++;\n }\n}\n//# sourceMappingURL=format.js.map","function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\nfunction _createForOfIteratorHelperLoose(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (t) return (t = t.call(r)).next.bind(t); if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var o = 0; return function () { return o >= r.length ? { done: !0 } : { done: !1, value: r[o++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nimport isViablePhoneNumber from './isViablePhoneNumber.js';\n\n// https://www.ietf.org/rfc/rfc3966.txt\n\n/**\r\n * @param {string} text - Phone URI (RFC 3966).\r\n * @return {object} `{ ?number, ?ext }`.\r\n */\nexport function parseRFC3966(text) {\n var number;\n var ext;\n\n // Replace \"tel:\" with \"tel=\" for parsing convenience.\n text = text.replace(/^tel:/, 'tel=');\n for (var _iterator = _createForOfIteratorHelperLoose(text.split(';')), _step; !(_step = _iterator()).done;) {\n var part = _step.value;\n var _part$split = part.split('='),\n _part$split2 = _slicedToArray(_part$split, 2),\n name = _part$split2[0],\n value = _part$split2[1];\n switch (name) {\n case 'tel':\n number = value;\n break;\n case 'ext':\n ext = value;\n break;\n case 'phone-context':\n // Only \"country contexts\" are supported.\n // \"Domain contexts\" are ignored.\n if (value[0] === '+') {\n number = value + number;\n }\n break;\n }\n }\n\n // If the phone number is not viable, then abort.\n if (!isViablePhoneNumber(number)) {\n return {};\n }\n var result = {\n number: number\n };\n if (ext) {\n result.ext = ext;\n }\n return result;\n}\n\n/**\r\n * @param {object} - `{ ?number, ?extension }`.\r\n * @return {string} Phone URI (RFC 3966).\r\n */\nexport function formatRFC3966(_ref) {\n var number = _ref.number,\n ext = _ref.ext;\n if (!number) {\n return '';\n }\n if (number[0] !== '+') {\n throw new Error(\"\\\"formatRFC3966()\\\" expects \\\"number\\\" to be in E.164 format.\");\n }\n return \"tel:\".concat(number).concat(ext ? ';ext=' + ext : '');\n}\n//# sourceMappingURL=RFC3966.js.map","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport Metadata, { validateMetadata } from './metadata.js';\nimport isPossibleNumber from './isPossible.js';\nimport isValidNumber from './isValid.js';\nimport getNumberType from './helpers/getNumberType.js';\nimport getPossibleCountriesForNumber from './helpers/getPossibleCountriesForNumber.js';\nimport extractCountryCallingCode from './helpers/extractCountryCallingCode.js';\nimport isObject from './helpers/isObject.js';\nimport formatNumber from './format.js';\nvar USE_NON_GEOGRAPHIC_COUNTRY_CODE = false;\nvar PhoneNumber = /*#__PURE__*/function () {\n /**\r\n * @param {string} countryOrCountryCallingCode\r\n * @param {string} nationalNumber\r\n * @param {object} metadata — Metadata JSON\r\n * @return {PhoneNumber}\r\n */\n function PhoneNumber(countryOrCountryCallingCode, nationalNumber, metadata) {\n _classCallCheck(this, PhoneNumber);\n // Validate `countryOrCountryCallingCode` argument.\n if (!countryOrCountryCallingCode) {\n throw new TypeError('First argument is required');\n }\n if (typeof countryOrCountryCallingCode !== 'string') {\n throw new TypeError('First argument must be a string');\n }\n\n // In case of public API use: `constructor(number, metadata)`.\n // Transform the arguments from `constructor(number, metadata)` to\n // `constructor(countryOrCountryCallingCode, nationalNumber, metadata)`.\n if (countryOrCountryCallingCode[0] === '+' && !nationalNumber) {\n throw new TypeError('`metadata` argument not passed');\n }\n if (isObject(nationalNumber) && isObject(nationalNumber.countries)) {\n metadata = nationalNumber;\n var e164Number = countryOrCountryCallingCode;\n if (!E164_NUMBER_REGEXP.test(e164Number)) {\n throw new Error('Invalid `number` argument passed: must consist of a \"+\" followed by digits');\n }\n var _extractCountryCallin = extractCountryCallingCode(e164Number, undefined, undefined, undefined, metadata),\n _countryCallingCode = _extractCountryCallin.countryCallingCode,\n number = _extractCountryCallin.number;\n nationalNumber = number;\n countryOrCountryCallingCode = _countryCallingCode;\n if (!nationalNumber) {\n throw new Error('Invalid `number` argument passed: too short');\n }\n }\n\n // Validate `nationalNumber` argument.\n if (!nationalNumber) {\n throw new TypeError('`nationalNumber` argument is required');\n }\n if (typeof nationalNumber !== 'string') {\n throw new TypeError('`nationalNumber` argument must be a string');\n }\n\n // Validate `metadata` argument.\n validateMetadata(metadata);\n\n // Initialize properties.\n var _getCountryAndCountry = getCountryAndCountryCallingCode(countryOrCountryCallingCode, metadata),\n country = _getCountryAndCountry.country,\n countryCallingCode = _getCountryAndCountry.countryCallingCode;\n this.country = country;\n this.countryCallingCode = countryCallingCode;\n this.nationalNumber = nationalNumber;\n this.number = '+' + this.countryCallingCode + this.nationalNumber;\n // Exclude `metadata` property output from `PhoneNumber.toString()`\n // so that it doesn't clutter the console output of Node.js.\n // Previously, when Node.js did `console.log(new PhoneNumber(...))`,\n // it would output the whole internal structure of the `metadata` object.\n this.getMetadata = function () {\n return metadata;\n };\n }\n return _createClass(PhoneNumber, [{\n key: \"setExt\",\n value: function setExt(ext) {\n this.ext = ext;\n }\n }, {\n key: \"getPossibleCountries\",\n value: function getPossibleCountries() {\n if (this.country) {\n return [this.country];\n }\n return getPossibleCountriesForNumber(this.countryCallingCode, this.nationalNumber, this.getMetadata());\n }\n }, {\n key: \"isPossible\",\n value: function isPossible() {\n return isPossibleNumber(this, {\n v2: true\n }, this.getMetadata());\n }\n }, {\n key: \"isValid\",\n value: function isValid() {\n return isValidNumber(this, {\n v2: true\n }, this.getMetadata());\n }\n }, {\n key: \"isNonGeographic\",\n value: function isNonGeographic() {\n var metadata = new Metadata(this.getMetadata());\n return metadata.isNonGeographicCallingCode(this.countryCallingCode);\n }\n }, {\n key: \"isEqual\",\n value: function isEqual(phoneNumber) {\n return this.number === phoneNumber.number && this.ext === phoneNumber.ext;\n }\n\n // This function was originally meant to be an equivalent for `validatePhoneNumberLength()`,\n // but later it was found out that it doesn't include the possible `TOO_SHORT` result\n // returned from `parsePhoneNumberWithError()` in the original `validatePhoneNumberLength()`,\n // so eventually I simply commented out this method from the `PhoneNumber` class\n // and just left the `validatePhoneNumberLength()` function, even though that one would require\n // and additional step to also validate the actual country / calling code of the phone number.\n // validateLength() {\n // \tconst metadata = new Metadata(this.getMetadata())\n // \tmetadata.selectNumberingPlan(this.countryCallingCode)\n // \tconst result = checkNumberLength(this.nationalNumber, metadata)\n // \tif (result !== 'IS_POSSIBLE') {\n // \t\treturn result\n // \t}\n // }\n }, {\n key: \"getType\",\n value: function getType() {\n return getNumberType(this, {\n v2: true\n }, this.getMetadata());\n }\n }, {\n key: \"format\",\n value: function format(_format, options) {\n return formatNumber(this, _format, options ? _objectSpread(_objectSpread({}, options), {}, {\n v2: true\n }) : {\n v2: true\n }, this.getMetadata());\n }\n }, {\n key: \"formatNational\",\n value: function formatNational(options) {\n return this.format('NATIONAL', options);\n }\n }, {\n key: \"formatInternational\",\n value: function formatInternational(options) {\n return this.format('INTERNATIONAL', options);\n }\n }, {\n key: \"getURI\",\n value: function getURI(options) {\n return this.format('RFC3966', options);\n }\n }]);\n}();\nexport { PhoneNumber as default };\nvar isCountryCode = function isCountryCode(value) {\n return /^[A-Z]{2}$/.test(value);\n};\nfunction getCountryAndCountryCallingCode(countryOrCountryCallingCode, metadataJson) {\n var country;\n var countryCallingCode;\n var metadata = new Metadata(metadataJson);\n // If country code is passed then derive `countryCallingCode` from it.\n // Also store the country code as `.country`.\n if (isCountryCode(countryOrCountryCallingCode)) {\n country = countryOrCountryCallingCode;\n metadata.selectNumberingPlan(country);\n countryCallingCode = metadata.countryCallingCode();\n } else {\n countryCallingCode = countryOrCountryCallingCode;\n /* istanbul ignore if */\n if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n if (metadata.isNonGeographicCallingCode(countryCallingCode)) {\n country = '001';\n }\n }\n }\n return {\n country: country,\n countryCallingCode: countryCallingCode\n };\n}\nvar E164_NUMBER_REGEXP = /^\\+\\d+$/;\n//# sourceMappingURL=PhoneNumber.js.map","import Metadata from './metadata.js';\nimport matchesEntirely from './helpers/matchesEntirely.js';\nimport getNumberType from './helpers/getNumberType.js';\n\n/**\r\n * Checks if a given phone number is valid.\r\n *\r\n * isValid(phoneNumberInstance, { ..., v2: true }, metadata)\r\n *\r\n * isPossible({ phone: '8005553535', country: 'RU' }, { ... }, metadata)\r\n * isPossible({ phone: '8005553535', country: 'RU' }, undefined, metadata)\r\n *\r\n * If the `number` is a string, it will be parsed to an object,\r\n * but only if it contains only valid phone number characters (including punctuation).\r\n * If the `number` is an object, it is used as is.\r\n *\r\n * The optional `defaultCountry` argument is the default country.\r\n * I.e. it does not restrict to just that country,\r\n * e.g. in those cases where several countries share\r\n * the same phone numbering rules (NANPA, Britain, etc).\r\n * For example, even though the number `07624 369230`\r\n * belongs to the Isle of Man (\"IM\" country code)\r\n * calling `isValidNumber('07624369230', 'GB', metadata)`\r\n * still returns `true` because the country is not restricted to `GB`,\r\n * it's just that `GB` is the default one for the phone numbering rules.\r\n * For restricting the country see `isValidNumberForRegion()`\r\n * though restricting a country might not be a good idea.\r\n * https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion\r\n *\r\n * Examples:\r\n *\r\n * ```js\r\n * isValidNumber('+78005553535', metadata)\r\n * isValidNumber('8005553535', 'RU', metadata)\r\n * isValidNumber('88005553535', 'RU', metadata)\r\n * isValidNumber({ phone: '8005553535', country: 'RU' }, metadata)\r\n * ```\r\n */\nexport default function isValidNumber(input, options, metadata) {\n // If assigning the `{}` default value is moved to the arguments above,\n // code coverage would decrease for some weird reason.\n options = options || {};\n metadata = new Metadata(metadata);\n metadata.selectNumberingPlan(input.country, input.countryCallingCode);\n\n // By default, countries only have type regexps when it's required for\n // distinguishing different countries having the same `countryCallingCode`.\n if (metadata.hasTypes()) {\n return getNumberType(input, options, metadata.metadata) !== undefined;\n }\n\n // If there are no type regexps for this country in metadata then use\n // `nationalNumberPattern` as a \"better than nothing\" replacement.\n var nationalNumber = options.v2 ? input.nationalNumber : input.phone;\n return matchesEntirely(nationalNumber, metadata.nationalNumberPattern());\n}\n//# sourceMappingURL=isValid.js.map","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\nfunction _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\nfunction _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\nfunction _wrapNativeSuper(t) { var r = \"function\" == typeof Map ? new Map() : void 0; return _wrapNativeSuper = function _wrapNativeSuper(t) { if (null === t || !_isNativeFunction(t)) return t; if (\"function\" != typeof t) throw new TypeError(\"Super expression must either be null or a function\"); if (void 0 !== r) { if (r.has(t)) return r.get(t); r.set(t, Wrapper); } function Wrapper() { return _construct(t, arguments, _getPrototypeOf(this).constructor); } return Wrapper.prototype = Object.create(t.prototype, { constructor: { value: Wrapper, enumerable: !1, writable: !0, configurable: !0 } }), _setPrototypeOf(Wrapper, t); }, _wrapNativeSuper(t); }\nfunction _construct(t, e, r) { if (_isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments); var o = [null]; o.push.apply(o, e); var p = new (t.bind.apply(t, o))(); return r && _setPrototypeOf(p, r.prototype), p; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _isNativeFunction(t) { try { return -1 !== Function.toString.call(t).indexOf(\"[native code]\"); } catch (n) { return \"function\" == typeof t; } }\nfunction _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\nfunction _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\n// https://stackoverflow.com/a/46971044/970769\n// \"Breaking changes in Typescript 2.1\"\n// \"Extending built-ins like Error, Array, and Map may no longer work.\"\n// \"As a recommendation, you can manually adjust the prototype immediately after any super(...) calls.\"\n// https://github.com/Microsoft/TypeScript-wiki/blob/main/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\nvar ParseError = /*#__PURE__*/function (_Error) {\n function ParseError(code) {\n var _this;\n _classCallCheck(this, ParseError);\n _this = _callSuper(this, ParseError, [code]);\n // Set the prototype explicitly.\n // Any subclass of FooError will have to manually set the prototype as well.\n Object.setPrototypeOf(_this, ParseError.prototype);\n _this.name = _this.constructor.name;\n return _this;\n }\n _inherits(ParseError, _Error);\n return _createClass(ParseError);\n}(/*#__PURE__*/_wrapNativeSuper(Error));\nexport { ParseError as default };\n//# sourceMappingURL=ParseError.js.map","import createExtensionPattern from './createExtensionPattern.js';\n\n// Regexp of all known extension prefixes used by different regions followed by\n// 1 or more valid digits, for use when parsing.\nvar EXTN_PATTERN = new RegExp('(?:' + createExtensionPattern() + ')$', 'i');\n\n// Strips any extension (as in, the part of the number dialled after the call is\n// connected, usually indicated with extn, ext, x or similar) from the end of\n// the number, and returns it.\nexport default function extractExtension(number) {\n var start = number.search(EXTN_PATTERN);\n if (start < 0) {\n return {};\n }\n // If we find a potential extension, and the number preceding this is a viable\n // number, we assume it is an extension.\n var numberWithoutExtension = number.slice(0, start);\n var matches = number.match(EXTN_PATTERN);\n var i = 1;\n while (i < matches.length) {\n if (matches[i]) {\n return {\n number: numberWithoutExtension,\n ext: matches[i]\n };\n }\n i++;\n }\n}\n//# sourceMappingURL=extractExtension.js.map","function _createForOfIteratorHelperLoose(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (t) return (t = t.call(r)).next.bind(t); if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var o = 0; return function () { return o >= r.length ? { done: !0 } : { done: !1, value: r[o++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n// These mappings map a character (key) to a specific digit that should\n// replace it for normalization purposes. Non-European digits that\n// may be used in phone numbers are mapped to a European equivalent.\n//\n// E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\n//\nexport var DIGITS = {\n '0': '0',\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9',\n \"\\uFF10\": '0',\n // Fullwidth digit 0\n \"\\uFF11\": '1',\n // Fullwidth digit 1\n \"\\uFF12\": '2',\n // Fullwidth digit 2\n \"\\uFF13\": '3',\n // Fullwidth digit 3\n \"\\uFF14\": '4',\n // Fullwidth digit 4\n \"\\uFF15\": '5',\n // Fullwidth digit 5\n \"\\uFF16\": '6',\n // Fullwidth digit 6\n \"\\uFF17\": '7',\n // Fullwidth digit 7\n \"\\uFF18\": '8',\n // Fullwidth digit 8\n \"\\uFF19\": '9',\n // Fullwidth digit 9\n \"\\u0660\": '0',\n // Arabic-indic digit 0\n \"\\u0661\": '1',\n // Arabic-indic digit 1\n \"\\u0662\": '2',\n // Arabic-indic digit 2\n \"\\u0663\": '3',\n // Arabic-indic digit 3\n \"\\u0664\": '4',\n // Arabic-indic digit 4\n \"\\u0665\": '5',\n // Arabic-indic digit 5\n \"\\u0666\": '6',\n // Arabic-indic digit 6\n \"\\u0667\": '7',\n // Arabic-indic digit 7\n \"\\u0668\": '8',\n // Arabic-indic digit 8\n \"\\u0669\": '9',\n // Arabic-indic digit 9\n \"\\u06F0\": '0',\n // Eastern-Arabic digit 0\n \"\\u06F1\": '1',\n // Eastern-Arabic digit 1\n \"\\u06F2\": '2',\n // Eastern-Arabic digit 2\n \"\\u06F3\": '3',\n // Eastern-Arabic digit 3\n \"\\u06F4\": '4',\n // Eastern-Arabic digit 4\n \"\\u06F5\": '5',\n // Eastern-Arabic digit 5\n \"\\u06F6\": '6',\n // Eastern-Arabic digit 6\n \"\\u06F7\": '7',\n // Eastern-Arabic digit 7\n \"\\u06F8\": '8',\n // Eastern-Arabic digit 8\n \"\\u06F9\": '9' // Eastern-Arabic digit 9\n};\nexport function parseDigit(character) {\n return DIGITS[character];\n}\n\n/**\r\n * Parses phone number digits from a string.\r\n * Drops all punctuation leaving only digits.\r\n * Also converts wide-ascii and arabic-indic numerals to conventional numerals.\r\n * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n * @param {string} string\r\n * @return {string}\r\n * @example\r\n * ```js\r\n * parseDigits('8 (800) 555')\r\n * // Outputs '8800555'.\r\n * ```\r\n */\nexport default function parseDigits(string) {\n var result = '';\n // Using `.split('')` here instead of normal `for ... of`\n // because the importing application doesn't neccessarily include an ES6 polyfill.\n // The `.split('')` approach discards \"exotic\" UTF-8 characters\n // (the ones consisting of four bytes) but digits\n // (including non-European ones) don't fall into that range\n // so such \"exotic\" characters would be discarded anyway.\n for (var _iterator = _createForOfIteratorHelperLoose(string.split('')), _step; !(_step = _iterator()).done;) {\n var character = _step.value;\n var digit = parseDigit(character);\n if (digit) {\n result += digit;\n }\n }\n return result;\n}\n//# sourceMappingURL=parseDigits.js.map","function _createForOfIteratorHelperLoose(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (t) return (t = t.call(r)).next.bind(t); if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var o = 0; return function () { return o >= r.length ? { done: !0 } : { done: !1, value: r[o++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nimport { parseDigit } from './helpers/parseDigits.js';\n\n/**\r\n * Parses phone number characters from a string.\r\n * Drops all punctuation leaving only digits and the leading `+` sign (if any).\r\n * Also converts wide-ascii and arabic-indic numerals to conventional numerals.\r\n * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n * @param {string} string\r\n * @return {string}\r\n * @example\r\n * ```js\r\n * // Outputs '8800555'.\r\n * parseIncompletePhoneNumber('8 (800) 555')\r\n * // Outputs '+7800555'.\r\n * parseIncompletePhoneNumber('+7 800 555')\r\n * ```\r\n */\nexport default function parseIncompletePhoneNumber(string) {\n var result = '';\n // Using `.split('')` here instead of normal `for ... of`\n // because the importing application doesn't neccessarily include an ES6 polyfill.\n // The `.split('')` approach discards \"exotic\" UTF-8 characters\n // (the ones consisting of four bytes) but digits\n // (including non-European ones) don't fall into that range\n // so such \"exotic\" characters would be discarded anyway.\n for (var _iterator = _createForOfIteratorHelperLoose(string.split('')), _step; !(_step = _iterator()).done;) {\n var character = _step.value;\n result += parsePhoneNumberCharacter(character, result) || '';\n }\n return result;\n}\n\n/**\r\n * Parses next character while parsing phone number digits (including a `+`)\r\n * from text: discards everything except `+` and digits, and `+` is only allowed\r\n * at the start of a phone number.\r\n * For example, is used in `react-phone-number-input` where it uses\r\n * [`input-format`](https://gitlab.com/catamphetamine/input-format).\r\n * @param {string} character - Yet another character from raw input string.\r\n * @param {string?} prevParsedCharacters - Previous parsed characters.\r\n * @param {function?} eventListener - An optional \"on event\" function.\r\n * @return {string?} The parsed character.\r\n */\nexport function parsePhoneNumberCharacter(character, prevParsedCharacters, eventListener) {\n // Only allow a leading `+`.\n if (character === '+') {\n // If this `+` is not the first parsed character\n // then discard it.\n if (prevParsedCharacters) {\n // `eventListener` argument was added to this `export`ed function on Dec 26th, 2023.\n // Any 3rd-party code that used to `import` and call this function before that\n // won't be passing any `eventListener` argument.\n //\n // The addition of the `eventListener` argument was to fix the slightly-weird behavior\n // of parsing an input string when the user inputs something like `\"2+7\"\n // https://github.com/catamphetamine/react-phone-number-input/issues/437\n //\n // If the parser encounters an unexpected `+` in a string being parsed\n // then it simply discards that out-of-place `+` and any following characters.\n //\n if (typeof eventListener === 'function') {\n eventListener('end');\n }\n return;\n }\n return '+';\n }\n // Allow digits.\n return parseDigit(character);\n}\n//# sourceMappingURL=parseIncompletePhoneNumber.js.map","// When phone numbers are written in `RFC3966` format — `\"tel:+12133734253\"` —\n// they can have their \"calling code\" part written separately in a `phone-context` parameter.\n// Example: `\"tel:12133734253;phone-context=+1\"`.\n// This function parses the full phone number from the local number and the `phone-context`\n// when the `phone-context` contains a `+` sign.\n\nimport { VALID_DIGITS\n// PLUS_CHARS\n} from '../constants.js';\nexport var PLUS_SIGN = '+';\nvar RFC3966_VISUAL_SEPARATOR_ = '[\\\\-\\\\.\\\\(\\\\)]?';\nvar RFC3966_PHONE_DIGIT_ = '(' + '[' + VALID_DIGITS + ']' + '|' + RFC3966_VISUAL_SEPARATOR_ + ')';\nvar RFC3966_GLOBAL_NUMBER_DIGITS_ = '^' + '\\\\' + PLUS_SIGN + RFC3966_PHONE_DIGIT_ + '*' + '[' + VALID_DIGITS + ']' + RFC3966_PHONE_DIGIT_ + '*' + '$';\n\n/**\r\n * Regular expression of valid global-number-digits for the phone-context\r\n * parameter, following the syntax defined in RFC3966.\r\n */\nvar RFC3966_GLOBAL_NUMBER_DIGITS_PATTERN_ = new RegExp(RFC3966_GLOBAL_NUMBER_DIGITS_, 'g');\n\n// In this port of Google's library, we don't accept alpha characters in phone numbers.\n// const ALPHANUM_ = VALID_ALPHA_ + VALID_DIGITS\nvar ALPHANUM_ = VALID_DIGITS;\nvar RFC3966_DOMAINLABEL_ = '[' + ALPHANUM_ + ']+((\\\\-)*[' + ALPHANUM_ + '])*';\nvar VALID_ALPHA_ = 'a-zA-Z';\nvar RFC3966_TOPLABEL_ = '[' + VALID_ALPHA_ + ']+((\\\\-)*[' + ALPHANUM_ + '])*';\nvar RFC3966_DOMAINNAME_ = '^(' + RFC3966_DOMAINLABEL_ + '\\\\.)*' + RFC3966_TOPLABEL_ + '\\\\.?$';\n\n/**\r\n * Regular expression of valid domainname for the phone-context parameter,\r\n * following the syntax defined in RFC3966.\r\n */\nvar RFC3966_DOMAINNAME_PATTERN_ = new RegExp(RFC3966_DOMAINNAME_, 'g');\nexport var RFC3966_PREFIX_ = 'tel:';\nexport var RFC3966_PHONE_CONTEXT_ = ';phone-context=';\nexport var RFC3966_ISDN_SUBADDRESS_ = ';isub=';\n\n/**\r\n * Extracts the value of the phone-context parameter of `numberToExtractFrom`,\r\n * following the syntax defined in RFC3966.\r\n *\r\n * @param {string} numberToExtractFrom\r\n * @return {string|null} the extracted string (possibly empty), or `null` if no phone-context parameter is found.\r\n */\nexport default function extractPhoneContext(numberToExtractFrom) {\n var indexOfPhoneContext = numberToExtractFrom.indexOf(RFC3966_PHONE_CONTEXT_);\n // If no phone-context parameter is present\n if (indexOfPhoneContext < 0) {\n return null;\n }\n var phoneContextStart = indexOfPhoneContext + RFC3966_PHONE_CONTEXT_.length;\n // If phone-context parameter is empty\n if (phoneContextStart >= numberToExtractFrom.length) {\n return '';\n }\n var phoneContextEnd = numberToExtractFrom.indexOf(';', phoneContextStart);\n // If phone-context is not the last parameter\n if (phoneContextEnd >= 0) {\n return numberToExtractFrom.substring(phoneContextStart, phoneContextEnd);\n } else {\n return numberToExtractFrom.substring(phoneContextStart);\n }\n}\n\n/**\r\n * Returns whether the value of phoneContext follows the syntax defined in RFC3966.\r\n *\r\n * @param {string|null} phoneContext\r\n * @return {boolean}\r\n */\nexport function isPhoneContextValid(phoneContext) {\n if (phoneContext === null) {\n return true;\n }\n if (phoneContext.length === 0) {\n return false;\n }\n\n // Does phone-context value match pattern of global-number-digits or domainname.\n return RFC3966_GLOBAL_NUMBER_DIGITS_PATTERN_.test(phoneContext) || RFC3966_DOMAINNAME_PATTERN_.test(phoneContext);\n}\n//# sourceMappingURL=extractPhoneContext.js.map","import extractPhoneContext, { isPhoneContextValid, PLUS_SIGN, RFC3966_PREFIX_, RFC3966_PHONE_CONTEXT_, RFC3966_ISDN_SUBADDRESS_ } from './extractPhoneContext.js';\nimport ParseError from '../ParseError.js';\n\n/**\r\n * @param {string} numberToParse\r\n * @param {string} nationalNumber\r\n * @return {}\r\n */\nexport default function extractFormattedPhoneNumberFromPossibleRfc3966NumberUri(numberToParse, _ref) {\n var extractFormattedPhoneNumber = _ref.extractFormattedPhoneNumber;\n var phoneContext = extractPhoneContext(numberToParse);\n if (!isPhoneContextValid(phoneContext)) {\n throw new ParseError('NOT_A_NUMBER');\n }\n var phoneNumberString;\n if (phoneContext === null) {\n // Extract a possible number from the string passed in.\n // (this strips leading characters that could not be the start of a phone number)\n phoneNumberString = extractFormattedPhoneNumber(numberToParse) || '';\n } else {\n phoneNumberString = '';\n\n // If the phone context contains a phone number prefix, we need to capture\n // it, whereas domains will be ignored.\n if (phoneContext.charAt(0) === PLUS_SIGN) {\n phoneNumberString += phoneContext;\n }\n\n // Now append everything between the \"tel:\" prefix and the phone-context.\n // This should include the national number, an optional extension or\n // isdn-subaddress component. Note we also handle the case when \"tel:\" is\n // missing, as we have seen in some of the phone number inputs.\n // In that case, we append everything from the beginning.\n var indexOfRfc3966Prefix = numberToParse.indexOf(RFC3966_PREFIX_);\n var indexOfNationalNumber;\n // RFC 3966 \"tel:\" prefix is preset at this stage because\n // `isPhoneContextValid()` requires it to be present.\n /* istanbul ignore else */\n if (indexOfRfc3966Prefix >= 0) {\n indexOfNationalNumber = indexOfRfc3966Prefix + RFC3966_PREFIX_.length;\n } else {\n indexOfNationalNumber = 0;\n }\n var indexOfPhoneContext = numberToParse.indexOf(RFC3966_PHONE_CONTEXT_);\n phoneNumberString += numberToParse.substring(indexOfNationalNumber, indexOfPhoneContext);\n }\n\n // Delete the isdn-subaddress and everything after it if it is present.\n // Note extension won't appear at the same time with isdn-subaddress\n // according to paragraph 5.3 of the RFC3966 spec.\n var indexOfIsdn = phoneNumberString.indexOf(RFC3966_ISDN_SUBADDRESS_);\n if (indexOfIsdn > 0) {\n phoneNumberString = phoneNumberString.substring(0, indexOfIsdn);\n }\n // If both phone context and isdn-subaddress are absent but other\n // parameters are present, the parameters are left in nationalNumber.\n // This is because we are concerned about deleting content from a potential\n // number string when there is no strong evidence that the number is\n // actually written in RFC3966.\n\n if (phoneNumberString !== '') {\n return phoneNumberString;\n }\n}\n//# sourceMappingURL=extractFormattedPhoneNumberFromPossibleRfc3966NumberUri.js.map","// This is a port of Google Android `libphonenumber`'s\n// `phonenumberutil.js` of December 31th, 2018.\n//\n// https://github.com/googlei18n/libphonenumber/commits/master/javascript/i18n/phonenumbers/phonenumberutil.js\n\nimport { VALID_DIGITS, PLUS_CHARS, MIN_LENGTH_FOR_NSN, MAX_LENGTH_FOR_NSN } from './constants.js';\nimport ParseError from './ParseError.js';\nimport Metadata from './metadata.js';\nimport isViablePhoneNumber, { isViablePhoneNumberStart } from './helpers/isViablePhoneNumber.js';\nimport extractExtension from './helpers/extension/extractExtension.js';\nimport parseIncompletePhoneNumber from './parseIncompletePhoneNumber.js';\nimport getCountryCallingCode from './getCountryCallingCode.js';\nimport { isPossibleNumber } from './isPossible.js';\n// import { parseRFC3966 } from './helpers/RFC3966.js'\nimport PhoneNumber from './PhoneNumber.js';\nimport matchesEntirely from './helpers/matchesEntirely.js';\nimport extractCountryCallingCode from './helpers/extractCountryCallingCode.js';\nimport extractNationalNumber from './helpers/extractNationalNumber.js';\nimport stripIddPrefix from './helpers/stripIddPrefix.js';\nimport getCountryByCallingCode from './helpers/getCountryByCallingCode.js';\nimport extractFormattedPhoneNumberFromPossibleRfc3966NumberUri from './helpers/extractFormattedPhoneNumberFromPossibleRfc3966NumberUri.js';\n\n// We don't allow input strings for parsing to be longer than 250 chars.\n// This prevents malicious input from consuming CPU.\nvar MAX_INPUT_STRING_LENGTH = 250;\n\n// This consists of the plus symbol, digits, and arabic-indic digits.\nvar PHONE_NUMBER_START_PATTERN = new RegExp('[' + PLUS_CHARS + VALID_DIGITS + ']');\n\n// Regular expression of trailing characters that we want to remove.\n// A trailing `#` is sometimes used when writing phone numbers with extensions in US.\n// Example: \"+1 (645) 123 1234-910#\" number has extension \"910\".\nvar AFTER_PHONE_NUMBER_END_PATTERN = new RegExp('[^' + VALID_DIGITS + '#' + ']+$');\nvar USE_NON_GEOGRAPHIC_COUNTRY_CODE = false;\n\n// Examples:\n//\n// ```js\n// parse('8 (800) 555-35-35', 'RU')\n// parse('8 (800) 555-35-35', 'RU', metadata)\n// parse('8 (800) 555-35-35', { country: { default: 'RU' } })\n// parse('8 (800) 555-35-35', { country: { default: 'RU' } }, metadata)\n// parse('+7 800 555 35 35')\n// parse('+7 800 555 35 35', metadata)\n// ```\n//\n\n/**\r\n * Parses a phone number.\r\n *\r\n * parse('123456789', { defaultCountry: 'RU', v2: true }, metadata)\r\n * parse('123456789', { defaultCountry: 'RU' }, metadata)\r\n * parse('123456789', undefined, metadata)\r\n *\r\n * @param {string} input\r\n * @param {object} [options]\r\n * @param {object} metadata\r\n * @return {object|PhoneNumber?} If `options.v2: true` flag is passed, it returns a `PhoneNumber?` instance. Otherwise, returns an object of shape `{ phone: '...', country: '...' }` (or just `{}` if no phone number was parsed).\r\n */\nexport default function parse(text, options, metadata) {\n // If assigning the `{}` default value is moved to the arguments above,\n // code coverage would decrease for some weird reason.\n options = options || {};\n metadata = new Metadata(metadata);\n\n // Validate `defaultCountry`.\n if (options.defaultCountry && !metadata.hasCountry(options.defaultCountry)) {\n if (options.v2) {\n throw new ParseError('INVALID_COUNTRY');\n }\n throw new Error(\"Unknown country: \".concat(options.defaultCountry));\n }\n\n // Parse the phone number.\n var _parseInput = parseInput(text, options.v2, options.extract),\n formattedPhoneNumber = _parseInput.number,\n ext = _parseInput.ext,\n error = _parseInput.error;\n\n // If the phone number is not viable then return nothing.\n if (!formattedPhoneNumber) {\n if (options.v2) {\n if (error === 'TOO_SHORT') {\n throw new ParseError('TOO_SHORT');\n }\n throw new ParseError('NOT_A_NUMBER');\n }\n return {};\n }\n var _parsePhoneNumber = parsePhoneNumber(formattedPhoneNumber, options.defaultCountry, options.defaultCallingCode, metadata),\n country = _parsePhoneNumber.country,\n nationalNumber = _parsePhoneNumber.nationalNumber,\n countryCallingCode = _parsePhoneNumber.countryCallingCode,\n countryCallingCodeSource = _parsePhoneNumber.countryCallingCodeSource,\n carrierCode = _parsePhoneNumber.carrierCode;\n if (!metadata.hasSelectedNumberingPlan()) {\n if (options.v2) {\n throw new ParseError('INVALID_COUNTRY');\n }\n return {};\n }\n\n // Validate national (significant) number length.\n if (!nationalNumber || nationalNumber.length < MIN_LENGTH_FOR_NSN) {\n // Won't throw here because the regexp already demands length > 1.\n /* istanbul ignore if */\n if (options.v2) {\n throw new ParseError('TOO_SHORT');\n }\n // Google's demo just throws an error in this case.\n return {};\n }\n\n // Validate national (significant) number length.\n //\n // A sidenote:\n //\n // They say that sometimes national (significant) numbers\n // can be longer than `MAX_LENGTH_FOR_NSN` (e.g. in Germany).\n // https://github.com/googlei18n/libphonenumber/blob/7e1748645552da39c4e1ba731e47969d97bdb539/resources/phonenumber.proto#L36\n // Such numbers will just be discarded.\n //\n if (nationalNumber.length > MAX_LENGTH_FOR_NSN) {\n if (options.v2) {\n throw new ParseError('TOO_LONG');\n }\n // Google's demo just throws an error in this case.\n return {};\n }\n if (options.v2) {\n var phoneNumber = new PhoneNumber(countryCallingCode, nationalNumber, metadata.metadata);\n if (country) {\n phoneNumber.country = country;\n }\n if (carrierCode) {\n phoneNumber.carrierCode = carrierCode;\n }\n if (ext) {\n phoneNumber.ext = ext;\n }\n phoneNumber.__countryCallingCodeSource = countryCallingCodeSource;\n return phoneNumber;\n }\n\n // Check if national phone number pattern matches the number.\n // National number pattern is different for each country,\n // even for those ones which are part of the \"NANPA\" group.\n var valid = (options.extended ? metadata.hasSelectedNumberingPlan() : country) ? matchesEntirely(nationalNumber, metadata.nationalNumberPattern()) : false;\n if (!options.extended) {\n return valid ? result(country, nationalNumber, ext) : {};\n }\n\n // isInternational: countryCallingCode !== undefined\n\n return {\n country: country,\n countryCallingCode: countryCallingCode,\n carrierCode: carrierCode,\n valid: valid,\n possible: valid ? true : options.extended === true && metadata.possibleLengths() && isPossibleNumber(nationalNumber, country, metadata) ? true : false,\n phone: nationalNumber,\n ext: ext\n };\n}\n\n/**\r\n * Extracts a formatted phone number from text.\r\n * Doesn't guarantee that the extracted phone number\r\n * is a valid phone number (for example, doesn't validate its length).\r\n * @param {string} text\r\n * @param {boolean} [extract] — If `false`, then will parse the entire `text` as a phone number.\r\n * @param {boolean} [throwOnError] — By default, it won't throw if the text is too long.\r\n * @return {string}\r\n * @example\r\n * // Returns \"(213) 373-4253\".\r\n * extractFormattedPhoneNumber(\"Call (213) 373-4253 for assistance.\")\r\n */\nfunction _extractFormattedPhoneNumber(text, extract, throwOnError) {\n if (!text) {\n return;\n }\n if (text.length > MAX_INPUT_STRING_LENGTH) {\n if (throwOnError) {\n throw new ParseError('TOO_LONG');\n }\n return;\n }\n if (extract === false) {\n return text;\n }\n // Attempt to extract a possible number from the string passed in\n var startsAt = text.search(PHONE_NUMBER_START_PATTERN);\n if (startsAt < 0) {\n return;\n }\n return text\n // Trim everything to the left of the phone number\n .slice(startsAt)\n // Remove trailing non-numerical characters\n .replace(AFTER_PHONE_NUMBER_END_PATTERN, '');\n}\n\n/**\r\n * @param {string} text - Input.\r\n * @param {boolean} v2 - Legacy API functions don't pass `v2: true` flag.\r\n * @param {boolean} [extract] - Whether to extract a phone number from `text`, or attempt to parse the entire text as a phone number.\r\n * @return {object} `{ ?number, ?ext }`.\r\n */\nfunction parseInput(text, v2, extract) {\n // // Parse RFC 3966 phone number URI.\n // if (text && text.indexOf('tel:') === 0) {\n // \treturn parseRFC3966(text)\n // }\n // let number = extractFormattedPhoneNumber(text, extract, v2)\n var number = extractFormattedPhoneNumberFromPossibleRfc3966NumberUri(text, {\n extractFormattedPhoneNumber: function extractFormattedPhoneNumber(text) {\n return _extractFormattedPhoneNumber(text, extract, v2);\n }\n });\n // If the phone number is not viable, then abort.\n if (!number) {\n return {};\n }\n if (!isViablePhoneNumber(number)) {\n if (isViablePhoneNumberStart(number)) {\n return {\n error: 'TOO_SHORT'\n };\n }\n return {};\n }\n // Attempt to parse extension first, since it doesn't require region-specific\n // data and we want to have the non-normalised number here.\n var withExtensionStripped = extractExtension(number);\n if (withExtensionStripped.ext) {\n return withExtensionStripped;\n }\n return {\n number: number\n };\n}\n\n/**\r\n * Creates `parse()` result object.\r\n */\nfunction result(country, nationalNumber, ext) {\n var result = {\n country: country,\n phone: nationalNumber\n };\n if (ext) {\n result.ext = ext;\n }\n return result;\n}\n\n/**\r\n * Parses a viable phone number.\r\n * @param {string} formattedPhoneNumber — Example: \"(213) 373-4253\".\r\n * @param {string} [defaultCountry]\r\n * @param {string} [defaultCallingCode]\r\n * @param {Metadata} metadata\r\n * @return {object} Returns `{ country: string?, countryCallingCode: string?, nationalNumber: string? }`.\r\n */\nfunction parsePhoneNumber(formattedPhoneNumber, defaultCountry, defaultCallingCode, metadata) {\n // Extract calling code from phone number.\n var _extractCountryCallin = extractCountryCallingCode(parseIncompletePhoneNumber(formattedPhoneNumber), undefined, defaultCountry, defaultCallingCode, metadata.metadata),\n countryCallingCodeSource = _extractCountryCallin.countryCallingCodeSource,\n countryCallingCode = _extractCountryCallin.countryCallingCode,\n number = _extractCountryCallin.number;\n\n // The exact country of the phone number\n var country;\n\n // If `formattedPhoneNumber` is passed in \"international\" format,\n // choose a country by `countryCallingCode`.\n if (countryCallingCode) {\n metadata.selectNumberingPlan(countryCallingCode);\n }\n // Else, if `formattedPhoneNumber` is passed in \"national\" format,\n // then `number` is defined and `countryCallingCode` is `undefined`.\n else if (number && (defaultCountry || defaultCallingCode)) {\n metadata.selectNumberingPlan(defaultCountry, defaultCallingCode);\n if (defaultCountry) {\n country = defaultCountry;\n } else {\n /* istanbul ignore if */\n if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n if (metadata.isNonGeographicCallingCode(defaultCallingCode)) {\n country = '001';\n }\n }\n }\n countryCallingCode = defaultCallingCode || getCountryCallingCode(defaultCountry, metadata.metadata);\n } else return {};\n if (!number) {\n return {\n countryCallingCodeSource: countryCallingCodeSource,\n countryCallingCode: countryCallingCode\n };\n }\n var _extractNationalNumbe = extractNationalNumber(parseIncompletePhoneNumber(number), country, metadata),\n nationalNumber = _extractNationalNumbe.nationalNumber,\n carrierCode = _extractNationalNumbe.carrierCode;\n\n // Sometimes there are several countries\n // corresponding to the same country phone code\n // (e.g. NANPA countries all having `1` country phone code).\n // Therefore, to reliably determine the exact country,\n // national (significant) number should have been parsed first.\n //\n // When `metadata.json` is generated, all \"ambiguous\" country phone codes\n // get their countries populated with the full set of\n // \"phone number type\" regular expressions.\n //\n var exactCountry = getCountryByCallingCode(countryCallingCode, {\n nationalNumber: nationalNumber,\n metadata: metadata\n });\n if (exactCountry) {\n country = exactCountry;\n /* istanbul ignore if */\n if (exactCountry === '001') {\n // Can't happen with `USE_NON_GEOGRAPHIC_COUNTRY_CODE` being `false`.\n // If `USE_NON_GEOGRAPHIC_COUNTRY_CODE` is set to `true` for some reason,\n // then remove the \"istanbul ignore if\".\n } else {\n metadata.selectNumberingPlan(country);\n }\n }\n return {\n country: country,\n countryCallingCode: countryCallingCode,\n countryCallingCodeSource: countryCallingCodeSource,\n nationalNumber: nationalNumber,\n carrierCode: carrierCode\n };\n}\n//# sourceMappingURL=parse.js.map","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport parse from './parse.js';\nexport default function parsePhoneNumberWithError(text, options, metadata) {\n return parse(text, _objectSpread(_objectSpread({}, options), {}, {\n v2: true\n }), metadata);\n}\n//# sourceMappingURL=parsePhoneNumberWithError_.js.map","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\nimport isObject from './helpers/isObject.js';\n\n// Extracts the following properties from function arguments:\n// * input `text`\n// * `options` object\n// * `metadata` JSON\nexport default function normalizeArguments(args) {\n var _Array$prototype$slic = Array.prototype.slice.call(args),\n _Array$prototype$slic2 = _slicedToArray(_Array$prototype$slic, 4),\n arg_1 = _Array$prototype$slic2[0],\n arg_2 = _Array$prototype$slic2[1],\n arg_3 = _Array$prototype$slic2[2],\n arg_4 = _Array$prototype$slic2[3];\n var text;\n var options;\n var metadata;\n\n // If the phone number is passed as a string.\n // `parsePhoneNumber('88005553535', ...)`.\n if (typeof arg_1 === 'string') {\n text = arg_1;\n } else throw new TypeError('A text for parsing must be a string.');\n\n // If \"default country\" argument is being passed then move it to `options`.\n // `parsePhoneNumber('88005553535', 'RU', [options], metadata)`.\n if (!arg_2 || typeof arg_2 === 'string') {\n if (arg_4) {\n options = arg_3;\n metadata = arg_4;\n } else {\n options = undefined;\n metadata = arg_3;\n }\n if (arg_2) {\n options = _objectSpread({\n defaultCountry: arg_2\n }, options);\n }\n }\n // `defaultCountry` is not passed.\n // Example: `parsePhoneNumber('+78005553535', [options], metadata)`.\n else if (isObject(arg_2)) {\n if (arg_3) {\n options = arg_2;\n metadata = arg_3;\n } else {\n metadata = arg_2;\n }\n } else throw new Error(\"Invalid second argument: \".concat(arg_2));\n return {\n text: text,\n options: options,\n metadata: metadata\n };\n}\n//# sourceMappingURL=normalizeArguments.js.map","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport parsePhoneNumberWithError from './parsePhoneNumberWithError_.js';\nimport ParseError from './ParseError.js';\nimport { isSupportedCountry } from './metadata.js';\nexport default function parsePhoneNumber(text, options, metadata) {\n // Validate `defaultCountry`.\n if (options && options.defaultCountry && !isSupportedCountry(options.defaultCountry, metadata)) {\n options = _objectSpread(_objectSpread({}, options), {}, {\n defaultCountry: undefined\n });\n }\n // Parse phone number.\n try {\n return parsePhoneNumberWithError(text, options, metadata);\n } catch (error) {\n /* istanbul ignore else */\n if (error instanceof ParseError) {\n //\n } else {\n throw error;\n }\n }\n}\n//# sourceMappingURL=parsePhoneNumber_.js.map","import normalizeArguments from './normalizeArguments.js';\nimport parsePhoneNumber_ from './parsePhoneNumber_.js';\nexport default function parsePhoneNumber() {\n var _normalizeArguments = normalizeArguments(arguments),\n text = _normalizeArguments.text,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n return parsePhoneNumber_(text, options, metadata);\n}\n//# sourceMappingURL=parsePhoneNumber.js.map","import Metadata from './metadata.js';\nexport default function getCountries(metadata) {\n return new Metadata(metadata).getCountries();\n}\n//# sourceMappingURL=getCountries.js.map","import PhoneNumber from './PhoneNumber.js';\nexport default function getExampleNumber(country, examples, metadata) {\n if (examples[country]) {\n return new PhoneNumber(country, examples[country], metadata);\n }\n}\n//# sourceMappingURL=getExampleNumber.js.map","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { default as _parsePhoneNumber } from '../../core/index.js'\r\n\r\nexport function parsePhoneNumber() {\r\n\treturn withMetadataArgument(_parsePhoneNumber, arguments)\r\n}","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { getCountryCallingCode as _getCountryCallingCode } from '../../core/index.js'\r\n\r\nexport function getCountryCallingCode() {\r\n\treturn withMetadataArgument(_getCountryCallingCode, arguments)\r\n}","import {\n BffChannel,\n ChannelFormField,\n ChannelProperties,\n ChannelPropertyPrimative,\n} from \"./backend-types/channel\";\nimport parsePhoneNumberFromString from \"libphonenumber-js/min\";\nimport { filterFormFields } from \"./components/channel-form\";\nimport { BffSessionType } from \"./backend-types/session\";\nimport { LocaleKey, LocalizedString } from \"./localization\";\n\nexport type ValidationResult = {\n errorCode: LocaleKey | LocalizedString | undefined;\n};\n\nexport const validateEmail = (value: string): LocaleKey | undefined => {\n const trimmedValue = value.trim();\n // Allows letters, numbers, dots, underscores, hyphens before the @\n // Domain must be letters, numbers, hyphens (no leading/trailing hyphen)\n // TLD must be at least 2 letters\n const emailRegex =\n /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]+)*\\.[A-Za-z]{2,}$/;\n\n if (trimmedValue.length > 0 && !emailRegex.test(trimmedValue))\n return {\n localeKey: \"validation.generic_invalid\",\n };\n};\n\nexport const validatePhoneNumber = (value: string): LocaleKey | undefined => {\n const input = value?.trim();\n if (!input) {\n return undefined; // empty is allowed, the required check is done elsewhere\n }\n\n const phone = parsePhoneNumberFromString(input);\n if (!phone)\n return {\n localeKey: \"validation.generic_invalid\",\n };\n\n return phone.isValid()\n ? undefined\n : {\n localeKey: \"validation.generic_invalid\",\n };\n};\n\nexport const validatePostalCode = (value: string): LocaleKey | undefined => {\n const trimmedValue = value.trim();\n\n if (trimmedValue.length === 0) {\n // empty is allowed, the required check is done elsewhere\n return undefined;\n }\n\n // Basic validation: must contain only letters, numbers, spaces, or hyphens\n if (!/^(?![-\\s]+)[A-Za-z0-9\\s-]+$/.test(trimmedValue)) {\n return {\n localeKey: \"validation.generic_invalid\",\n };\n }\n};\n\nexport const validateText = (\n input: ChannelFormField & {\n type: { name: \"text\" };\n },\n value: string,\n): LocaleKey | LocalizedString | undefined => {\n const trimmedValue = value.trim();\n\n if (Array.isArray(input.type.regex_validators)) {\n for (const pattern of input.type.regex_validators) {\n const regex = new RegExp(sanitizeRegex(pattern.regex));\n if (!regex.test(trimmedValue)) {\n return {\n value: pattern.message,\n };\n }\n }\n }\n\n if (\n input.type.min_length !== undefined &&\n trimmedValue.length < input.type.min_length\n ) {\n return { localeKey: \"validation.text_too_short\" };\n } else if (trimmedValue.length > input.type.max_length) {\n return { localeKey: \"validation.text_too_long\" };\n }\n};\n\nfunction sanitizeRegex(pattern: string): string {\n // Remove leading and trailing slashes if present\n if (pattern.startsWith(\"/\") && pattern.endsWith(\"/\")) {\n return pattern.slice(1, -1);\n }\n return pattern;\n}\n\nexport function validate(\n input: ChannelFormField,\n value: string,\n): LocaleKey | LocalizedString | undefined {\n if (input.required && value.trim().length === 0) {\n return { localeKey: \"validation.required\" };\n }\n\n switch (input.type.name) {\n case \"credit_card_number\":\n case \"credit_card_expiry\":\n case \"credit_card_cvn\": {\n // these are encrypted, no validation\n return undefined;\n }\n case \"phone_number\":\n return validatePhoneNumber(value);\n case \"email\":\n return validateEmail(value);\n case \"postal_code\":\n return validatePostalCode(value);\n case \"text\":\n return validateText(\n input as ChannelFormField & {\n type: { name: \"text\" };\n },\n value,\n );\n case \"country\":\n case \"province\":\n case \"dropdown\": {\n // no validation required for now\n return undefined;\n }\n\n default:\n input.type satisfies never;\n throw new Error(\n `Unsupported input type: ${(input as ChannelFormField).type.name}; this is a bug, please contact support.`,\n );\n }\n}\n\nexport function channelPropertiesAreValid(\n sessionType: BffSessionType,\n channel: BffChannel,\n channelProperties: ChannelProperties | null,\n showBillingDetails: boolean,\n): boolean {\n if (!channelProperties) channelProperties = {};\n\n for (const field of filterFormFields(\n sessionType,\n channel.form,\n showBillingDetails,\n )) {\n const channelPropertyKeys = Array.isArray(field.channel_property)\n ? field.channel_property\n : [field.channel_property];\n for (const key of channelPropertyKeys) {\n let value = getChannelPropertyValue(channelProperties, key);\n if (value === undefined || value === \"\") {\n if (field.required) {\n return false;\n } else {\n value = \"\";\n }\n }\n if (typeof value !== \"string\") {\n // validation for non-string values not supported\n continue;\n }\n const error = validate(field, value);\n if (error) {\n return false;\n }\n }\n }\n\n return true;\n}\n\nexport function getChannelPropertyValue(\n channelProperties: ChannelProperties,\n key: string,\n): ChannelPropertyPrimative | ChannelPropertyPrimative[] | undefined {\n const parts = key.split(\".\");\n const value = channelProperties[parts[0]];\n if (value === undefined) {\n return undefined;\n }\n if (typeof value !== \"object\" || Array.isArray(value)) {\n if (parts.length !== 1) {\n throw new Error(\n `Attempted to read channel property \"${key}\" expecting an object but found a primitive value; this is a bug, please contact support.`,\n );\n }\n return value;\n } else {\n return getChannelPropertyValue(value, parts.slice(1).join(\".\"));\n }\n}\n","import {\n useCallback,\n useLayoutEffect,\n useRef,\n useState,\n useEffect,\n} from \"preact/hooks\";\nimport { FieldProps } from \"./field\";\nimport { CountryCode, getCountries } from \"libphonenumber-js\";\nimport { Dropdown, DropdownOption } from \"./dropdown\";\nimport { validate } from \"../validation\";\nimport { InternalInputValidateEvent } from \"../private-event-types\";\nimport { formFieldName, usePrevious } from \"../utils\";\nimport { useCardDetails } from \"./session-provider\";\nimport { FunctionComponent } from \"preact\";\n\ntype FlagIconProps = {\n countryCode: string;\n size?: number;\n};\n\nconst FlagIcon: FunctionComponent<FlagIconProps> = ({\n countryCode,\n size = 16,\n}) => {\n return (\n <div\n style={{\n width: `${size}px`,\n height: `${size}px`,\n borderRadius: \"50%\",\n backgroundImage: `url(https://assets.xendit.co/payment-session/flags/circle/${countryCode.toLowerCase()}.svg)`,\n backgroundSize: \"cover\",\n backgroundPosition: \"center\",\n }}\n />\n );\n};\n\nexport const CountryField: FunctionComponent<FieldProps> = (props) => {\n const { field, onChange, onError } = props;\n const id = formFieldName(field);\n\n const [selectedCountry, setSelectedCountry] = useState<\n CountryCode | undefined\n >(undefined);\n const selectedCountryIndex = COUNTRIES_AS_DROPDOWN_OPTIONS.findIndex(\n (option) => option.value === selectedCountry,\n );\n\n const hiddenFieldRef = useRef<HTMLInputElement>(null);\n\n const validateField = useCallback(\n (value: string) => {\n const errorCode = validate(field, value) ?? null;\n if (onError) onError(id, errorCode);\n return errorCode;\n },\n [field, id, onError],\n );\n\n useEffect(() => {\n const input = hiddenFieldRef.current;\n if (!input) return;\n const listener = (e: Event) => {\n const value = (e as CustomEvent).detail.value;\n validateField(value);\n };\n input.addEventListener(InternalInputValidateEvent.type, listener);\n return () => {\n input.removeEventListener(InternalInputValidateEvent.type, listener);\n };\n }, [id, validateField]);\n\n useOnCardCountryChange((newCountry: CountryCode) => {\n if (hiddenFieldRef.current) {\n const newOption = COUNTRIES_AS_DROPDOWN_OPTIONS.find((option) => {\n return option.value === newCountry;\n });\n if (newOption) onChangeWrapper(newOption);\n }\n });\n\n const onChangeWrapper = useCallback(\n (option: DropdownOption) => {\n setSelectedCountry(option.value as CountryCode);\n if (hiddenFieldRef.current) {\n hiddenFieldRef.current.value = option.value;\n }\n onChange();\n },\n [onChange],\n );\n\n return (\n <div>\n <input type=\"hidden\" name={id} defaultValue=\"\" ref={hiddenFieldRef} />\n <Dropdown\n id={id}\n options={COUNTRIES_AS_DROPDOWN_OPTIONS}\n onChange={onChangeWrapper}\n placeholder={field.placeholder}\n selectedIndex={selectedCountryIndex}\n />\n </div>\n );\n};\n\nexport const COUNTRIES_AS_DROPDOWN_OPTIONS = getCountries()\n .map((countryCode) => {\n const country = new Intl.DisplayNames([\"en\"], {\n type: \"region\",\n }).of(countryCode);\n\n return {\n title: country,\n value: countryCode,\n leadingAsset: <FlagIcon countryCode={countryCode} />,\n } as DropdownOption;\n })\n .sort((a, b) => a.title.localeCompare(b.title));\n\nexport function useOnCardCountryChange(fn: (newCountry: CountryCode) => void) {\n const cardDetails = useCardDetails();\n const cardDetailsCountry = cardDetails.details?.country_codes[0];\n\n // if card details changes, set country to card's country\n const previousCardDetailsCountry = usePrevious(cardDetailsCountry);\n useLayoutEffect(() => {\n if (\n cardDetailsCountry &&\n cardDetailsCountry !== previousCardDetailsCountry\n ) {\n fn(cardDetailsCountry as CountryCode);\n }\n });\n}\n","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { getCountries as _getCountries } from '../../core/index.js'\r\n\r\nexport function getCountries() {\r\n\treturn withMetadataArgument(_getCountries, arguments)\r\n}","import { FunctionComponent } from \"preact\";\nimport { ChannelFormField, FieldType } from \"../backend-types/channel\";\nimport { formFieldName } from \"../utils\";\nimport { Dropdown, DropdownOption } from \"./dropdown\";\nimport { FieldProps } from \"./field\";\n\nconst toDropdownOptions = (\n fieldOptions: (FieldType & { name: \"dropdown\" })[\"options\"],\n): DropdownOption[] => {\n return fieldOptions.map((opt) => ({\n title: opt.label,\n description: opt.subtitle,\n value: opt.value,\n }));\n};\n\nexport const DropdownField: FunctionComponent<FieldProps> = (props) => {\n const { field, onChange } = props;\n const id = formFieldName(field);\n\n if (!isDropdownField(field)) {\n throw new Error(\"DropdownField expects field.type.name to be 'dropdown'\");\n }\n\n return (\n <Dropdown\n id={id}\n placeholder={field.placeholder}\n options={toDropdownOptions(field.type.options)}\n onChange={onChange}\n />\n );\n};\n\nfunction isDropdownField(field: ChannelFormField): field is ChannelFormField & {\n type: { name: \"dropdown\" };\n} {\n return field.type.name === \"dropdown\";\n}\n","import { registerElement } from \"../dom-utils\";\n\n// prevent crash if running in node\nconst HTMLElement: (typeof window)[\"HTMLElement\"] =\n typeof window !== \"undefined\" && window.HTMLElement\n ? window.HTMLElement\n : (EventTarget as typeof HTMLElement);\n\n/**\n * https://html.spec.whatwg.org/multipage/forms.html#category-label\n * See the definition of \"labelable\".\n * This is a custom element which is labelable.\n *\n * This makes it possible to catch focus events when a label element is\n * clicked without adding any interactive elements.\n */\nexport class XenditFormAssociatedFocusTrap extends HTMLElement {\n static tag = \"xendit-form-associated-focus-trap\" as const;\n static formAssociated = true;\n private internals: ElementInternals;\n constructor() {\n super();\n this.internals = this.attachInternals();\n }\n}\nregisterElement(XenditFormAssociatedFocusTrap);\n\ndeclare module \"react/jsx-runtime\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"xendit-form-associated-focus-trap\": preact.DetailedHTMLProps<\n preact.HTMLAttributes<XenditFormAssociatedFocusTrap>,\n XenditFormAssociatedFocusTrap\n >;\n }\n }\n}\n","export function registerElement(\n element: CustomElementConstructor & { tag: string },\n) {\n if (typeof window === \"undefined\" || !window.customElements) return;\n customElements.define(element.tag, element);\n}\n\nexport function findFirstStyleOrLinkElement() {\n return document.querySelector(\"style, link\");\n}\n","import { useCallback, useEffect, useRef, useState } from \"preact/hooks\";\nimport { FieldProps } from \"./field\";\nimport { useSdk, useSession } from \"./session-provider\";\nimport {\n CardBrand,\n IframeChangeEvent,\n IframeEvent,\n} from \"../../../shared/types\";\nimport { InternalInputValidateEvent } from \"../private-event-types\";\nimport { useChannel } from \"./payment-channel\";\nimport { XenditFormAssociatedFocusTrap } from \"./form-ascociated-focus-trap\";\nimport { internal } from \"../internal\";\nimport { LocaleKey } from \"../localization\";\nimport { assert, formFieldName } from \"../utils\";\nimport { FunctionComponent } from \"preact\";\n\nconst computeFieldError = (\n state: ValidationState,\n required: boolean,\n): LocaleKey | null => {\n if (state.empty && required)\n return {\n localeKey: \"validation.required\",\n };\n if (!state.validationErrorCodes?.length) return null;\n return state.validationErrorCodes[0] ?? null;\n};\n\nconst toValidationState = (\n incoming: IframeChangeEvent | undefined,\n prev: ValidationState,\n) => {\n if (!incoming) return prev;\n return {\n valid: incoming.valid,\n empty: incoming.empty,\n validationErrorCodes: incoming.validationErrorCodes ?? [],\n };\n};\n\ntype ValidationState = {\n valid: boolean;\n empty: boolean;\n validationErrorCodes: LocaleKey[];\n};\n\n// read iframe data from environment variable\nassert(process.env.XENDIT_COMPONENTS_SECURE_IFRAME_URL);\nconst parsedIframeUrl = new URL(\n process.env.XENDIT_COMPONENTS_SECURE_IFRAME_URL,\n);\nconst IFRAME_SRC = parsedIframeUrl.toString();\nconst IFRAME_ORIGIN = parsedIframeUrl.origin;\n\nexport const IframeField: FunctionComponent<FieldProps> = (props) => {\n const { field, onChange, onError } = props;\n\n const sdk = useSdk();\n\n const id = formFieldName(field);\n const session = useSession();\n\n const iframeRef = useRef<HTMLIFrameElement>(null);\n const hiddenFieldRef = useRef<HTMLInputElement>(null);\n const [iframeEcdhPublicKey, setIframeEcdhPublicKey] = useState<\n string | undefined\n >();\n\n const [focusWithin, setFocusWithin] = useState(false);\n\n const [isTouched, setIsTouched] = useState(false);\n const [validationResult, setValidationResult] = useState<ValidationState>({\n empty: true,\n valid: false,\n validationErrorCodes: [],\n });\n\n const [cardBrand, setCardBrand] = useState<CardBrand | null>(null);\n\n const { card } = useChannel() ?? {};\n\n const handleErrorUpdate = useCallback(\n (validationState: ValidationState) => {\n const errorMessage = computeFieldError(validationState, field.required);\n if (onError) onError(id, errorMessage);\n },\n [field.required, id, onError],\n );\n\n const handleIframeEventResult = useCallback(\n (incoming?: IframeChangeEvent) => {\n setValidationResult((prev) => {\n const next = toValidationState(incoming, prev);\n if (!isTouched && incoming) return next;\n handleErrorUpdate(next);\n return next;\n });\n },\n [handleErrorUpdate, isTouched],\n );\n\n useEffect(() => {\n // listen to the Input validation event from parent form\n if (!hiddenFieldRef.current) return;\n const input = hiddenFieldRef.current;\n const listener = () => {\n handleErrorUpdate({\n empty: validationResult.empty,\n validationErrorCodes: validationResult.validationErrorCodes,\n } as ValidationState);\n setIsTouched(true);\n };\n input.addEventListener(InternalInputValidateEvent.type, listener);\n return () => {\n input.removeEventListener(InternalInputValidateEvent.type, listener);\n };\n }, [handleErrorUpdate, validationResult]);\n\n const handleEventFromIframe = useCallback(\n (event: MessageEvent) => {\n if (!iframeRef.current) return;\n\n const expectedSource = iframeRef.current.contentWindow;\n\n if (event.source !== expectedSource) {\n // this is normal, we are not the target of this message\n return;\n }\n\n if (event.origin !== IFRAME_ORIGIN) {\n // this is not normal, something fishy is happening\n return;\n }\n\n const data = event.data as IframeEvent;\n switch (data.type) {\n case \"xendit-iframe-ready\": {\n setIframeEcdhPublicKey(data.ecdhPublicKey);\n break;\n }\n case \"xendit-iframe-change\": {\n if (!hiddenFieldRef.current) return;\n\n handleIframeEventResult(data);\n setCardBrand(data.cardBrand);\n\n const encrypted = data.encrypted;\n const encryptionVersion = 1;\n const resultData = encrypted.map((enc) => {\n if (data.empty) {\n return \"\";\n }\n\n return [\n \"xendit-encrypted\",\n encryptionVersion,\n iframeEcdhPublicKey,\n enc.iv,\n enc.value,\n ].join(\"-\");\n });\n\n if (resultData.length === 0) {\n break; // should never happen\n }\n\n // fields expecting a single value are normal strings, fields expecting multiple values are json arrays\n hiddenFieldRef.current.value =\n resultData.length > 1 ? JSON.stringify(resultData) : resultData[0];\n onChange?.();\n break;\n }\n case \"xendit-iframe-focus\": {\n setFocusWithin(true);\n break;\n }\n case \"xendit-iframe-blur\": {\n if (!validationResult.empty) setIsTouched(true);\n handleIframeEventResult();\n setFocusWithin(false);\n break;\n }\n case \"xendit-iframe-failed-init\": {\n console.error(\n `Iframe field for ${field.channel_property} failed to initialize securely`,\n );\n break;\n }\n }\n },\n [\n field.channel_property,\n handleIframeEventResult,\n iframeEcdhPublicKey,\n onChange,\n validationResult.empty,\n ],\n );\n\n const giveFocusToIframe = useCallback(() => {\n if (iframeRef.current?.contentWindow) {\n iframeRef.current.contentWindow.postMessage(\n { type: \"xendit-iframe-focus\" satisfies IframeEvent[\"type\"] },\n IFRAME_ORIGIN,\n );\n }\n }, []);\n\n useEffect(() => {\n window.addEventListener(\"message\", handleEventFromIframe);\n return () => {\n window.removeEventListener(\"message\", handleEventFromIframe);\n };\n }, [handleEventFromIframe]);\n\n const iframeUrl = new URL(IFRAME_SRC);\n iframeUrl.searchParams.set(\"input_type\", field.type.name);\n iframeUrl.searchParams.set(\"embedder\", window.location.origin);\n iframeUrl.searchParams.set(\"session_id\", session.payment_session_id);\n\n iframeUrl.searchParams.set(\"pk\", sdk[internal].sdkKey.publicKey);\n iframeUrl.searchParams.set(\"sig\", sdk[internal].sdkKey.signature);\n\n // Pass appearance options if provided\n if (sdk[internal].options.iframeFieldAppearance) {\n iframeUrl.searchParams.set(\n \"appearance\",\n JSON.stringify(sdk[internal].options.iframeFieldAppearance),\n );\n }\n\n const focusClass = focusWithin ? \"xendit-field-focus\" : \"\";\n\n return (\n <>\n <div className={`xendit-iframe-container ${focusClass}`}>\n <XenditFormAssociatedFocusTrap.tag\n id={id}\n onFocus={giveFocusToIframe}\n tabIndex={-1}\n />\n <input type=\"hidden\" name={id} defaultValue=\"\" ref={hiddenFieldRef} />\n <iframe\n src={iframeUrl.toString()}\n ref={iframeRef}\n sandbox=\"allow-scripts allow-same-origin\"\n />\n {field.type.name === \"credit_card_number\" && card && (\n <CardBrands\n cardsBrandList={card.brands}\n selectedCardBrand={cardBrand}\n />\n )}\n </div>\n </>\n );\n};\n\nconst CardBrands = ({\n cardsBrandList,\n selectedCardBrand,\n}: {\n cardsBrandList: { name: string; logo_url: string }[];\n selectedCardBrand: CardBrand | null;\n}) => {\n if (!cardsBrandList) return null;\n\n const cardBrandLogo = cardsBrandList.find(\n (b) => b.name === selectedCardBrand,\n )?.logo_url;\n\n return (\n <div className=\"xendit-card-brands-list\">\n {selectedCardBrand\n ? cardBrandLogo && (\n <img\n className={\"xendit-card-brand-logo\"}\n src={cardBrandLogo}\n alt={selectedCardBrand}\n />\n )\n : cardsBrandList.map(({ name, logo_url }) => {\n return (\n <img\n className={\"xendit-card-brand-logo\"}\n src={logo_url}\n alt={name}\n key={name}\n />\n );\n })}\n </div>\n );\n};\n","// This file is a workaround for a bug in web browsers' \"native\"\n// ES6 importing system which is uncapable of importing \"*.json\" files.\n// https://github.com/catamphetamine/libphonenumber-js/issues/239\nexport default {\"AC\":\"40123\",\"AD\":\"312345\",\"AE\":\"501234567\",\"AF\":\"701234567\",\"AG\":\"2684641234\",\"AI\":\"2642351234\",\"AL\":\"672123456\",\"AM\":\"77123456\",\"AO\":\"923123456\",\"AR\":\"91123456789\",\"AS\":\"6847331234\",\"AT\":\"664123456\",\"AU\":\"412345678\",\"AW\":\"5601234\",\"AX\":\"412345678\",\"AZ\":\"401234567\",\"BA\":\"61123456\",\"BB\":\"2462501234\",\"BD\":\"1812345678\",\"BE\":\"470123456\",\"BF\":\"70123456\",\"BG\":\"43012345\",\"BH\":\"36001234\",\"BI\":\"79561234\",\"BJ\":\"0195123456\",\"BL\":\"690001234\",\"BM\":\"4413701234\",\"BN\":\"7123456\",\"BO\":\"71234567\",\"BQ\":\"3181234\",\"BR\":\"11961234567\",\"BS\":\"2423591234\",\"BT\":\"17123456\",\"BW\":\"71123456\",\"BY\":\"294911911\",\"BZ\":\"6221234\",\"CA\":\"5062345678\",\"CC\":\"412345678\",\"CD\":\"991234567\",\"CF\":\"70012345\",\"CG\":\"061234567\",\"CH\":\"781234567\",\"CI\":\"0123456789\",\"CK\":\"71234\",\"CL\":\"221234567\",\"CM\":\"671234567\",\"CN\":\"13123456789\",\"CO\":\"3211234567\",\"CR\":\"83123456\",\"CU\":\"51234567\",\"CV\":\"9911234\",\"CW\":\"95181234\",\"CX\":\"412345678\",\"CY\":\"96123456\",\"CZ\":\"601123456\",\"DE\":\"15123456789\",\"DJ\":\"77831001\",\"DK\":\"34412345\",\"DM\":\"7672251234\",\"DO\":\"8092345678\",\"DZ\":\"551234567\",\"EC\":\"991234567\",\"EE\":\"51234567\",\"EG\":\"1001234567\",\"EH\":\"650123456\",\"ER\":\"7123456\",\"ES\":\"612345678\",\"ET\":\"911234567\",\"FI\":\"412345678\",\"FJ\":\"7012345\",\"FK\":\"51234\",\"FM\":\"3501234\",\"FO\":\"211234\",\"FR\":\"612345678\",\"GA\":\"06031234\",\"GB\":\"7400123456\",\"GD\":\"4734031234\",\"GE\":\"555123456\",\"GF\":\"694201234\",\"GG\":\"7781123456\",\"GH\":\"231234567\",\"GI\":\"57123456\",\"GL\":\"221234\",\"GM\":\"3012345\",\"GN\":\"601123456\",\"GP\":\"690001234\",\"GQ\":\"222123456\",\"GR\":\"6912345678\",\"GT\":\"51234567\",\"GU\":\"6713001234\",\"GW\":\"955012345\",\"GY\":\"6091234\",\"HK\":\"51234567\",\"HN\":\"91234567\",\"HR\":\"921234567\",\"HT\":\"34101234\",\"HU\":\"201234567\",\"ID\":\"812345678\",\"IE\":\"850123456\",\"IL\":\"502345678\",\"IM\":\"7924123456\",\"IN\":\"8123456789\",\"IO\":\"3801234\",\"IQ\":\"7912345678\",\"IR\":\"9123456789\",\"IS\":\"6111234\",\"IT\":\"3123456789\",\"JE\":\"7797712345\",\"JM\":\"8762101234\",\"JO\":\"790123456\",\"JP\":\"9012345678\",\"KE\":\"712123456\",\"KG\":\"700123456\",\"KH\":\"91234567\",\"KI\":\"72001234\",\"KM\":\"3212345\",\"KN\":\"8697652917\",\"KP\":\"1921234567\",\"KR\":\"1020000000\",\"KW\":\"50012345\",\"KY\":\"3453231234\",\"KZ\":\"7710009998\",\"LA\":\"2023123456\",\"LB\":\"71123456\",\"LC\":\"7582845678\",\"LI\":\"660234567\",\"LK\":\"712345678\",\"LR\":\"770123456\",\"LS\":\"50123456\",\"LT\":\"61234567\",\"LU\":\"628123456\",\"LV\":\"21234567\",\"LY\":\"912345678\",\"MA\":\"650123456\",\"MC\":\"612345678\",\"MD\":\"62112345\",\"ME\":\"60123456\",\"MF\":\"690001234\",\"MG\":\"321234567\",\"MH\":\"2351234\",\"MK\":\"72345678\",\"ML\":\"65012345\",\"MM\":\"92123456\",\"MN\":\"88123456\",\"MO\":\"66123456\",\"MP\":\"6702345678\",\"MQ\":\"696201234\",\"MR\":\"22123456\",\"MS\":\"6644923456\",\"MT\":\"96961234\",\"MU\":\"52512345\",\"MV\":\"7712345\",\"MW\":\"991234567\",\"MX\":\"2221234567\",\"MY\":\"123456789\",\"MZ\":\"821234567\",\"NA\":\"811234567\",\"NC\":\"751234\",\"NE\":\"93123456\",\"NF\":\"381234\",\"NG\":\"8021234567\",\"NI\":\"81234567\",\"NL\":\"612345678\",\"NO\":\"40612345\",\"NP\":\"9841234567\",\"NR\":\"5551234\",\"NU\":\"8884012\",\"NZ\":\"211234567\",\"OM\":\"92123456\",\"PA\":\"61234567\",\"PE\":\"912345678\",\"PF\":\"87123456\",\"PG\":\"70123456\",\"PH\":\"9051234567\",\"PK\":\"3012345678\",\"PL\":\"512345678\",\"PM\":\"551234\",\"PR\":\"7872345678\",\"PS\":\"599123456\",\"PT\":\"912345678\",\"PW\":\"6201234\",\"PY\":\"961456789\",\"QA\":\"33123456\",\"RE\":\"692123456\",\"RO\":\"712034567\",\"RS\":\"601234567\",\"RU\":\"9123456789\",\"RW\":\"720123456\",\"SA\":\"512345678\",\"SB\":\"7421234\",\"SC\":\"2510123\",\"SD\":\"911231234\",\"SE\":\"701234567\",\"SG\":\"81234567\",\"SH\":\"51234\",\"SI\":\"31234567\",\"SJ\":\"41234567\",\"SK\":\"912123456\",\"SL\":\"25123456\",\"SM\":\"66661212\",\"SN\":\"701234567\",\"SO\":\"71123456\",\"SR\":\"7412345\",\"SS\":\"977123456\",\"ST\":\"9812345\",\"SV\":\"70123456\",\"SX\":\"7215205678\",\"SY\":\"944567890\",\"SZ\":\"76123456\",\"TA\":\"8999\",\"TC\":\"6492311234\",\"TD\":\"63012345\",\"TG\":\"90112345\",\"TH\":\"812345678\",\"TJ\":\"917123456\",\"TK\":\"7290\",\"TL\":\"77212345\",\"TM\":\"66123456\",\"TN\":\"20123456\",\"TO\":\"7715123\",\"TR\":\"5012345678\",\"TT\":\"8682911234\",\"TV\":\"901234\",\"TW\":\"912345678\",\"TZ\":\"621234567\",\"UA\":\"501234567\",\"UG\":\"712345678\",\"US\":\"2015550123\",\"UY\":\"94231234\",\"UZ\":\"912345678\",\"VA\":\"3123456789\",\"VC\":\"7844301234\",\"VE\":\"4121234567\",\"VG\":\"2843001234\",\"VI\":\"3406421234\",\"VN\":\"912345678\",\"VU\":\"5912345\",\"WF\":\"821234\",\"WS\":\"7212345\",\"XK\":\"43201234\",\"YE\":\"712345678\",\"YT\":\"639012345\",\"ZA\":\"711234567\",\"ZM\":\"955123456\",\"ZW\":\"712345678\"}","import { FieldProps } from \"./field\";\nimport { validate } from \"../validation\";\nimport { Dropdown, DropdownOption } from \"./dropdown\";\nimport { CountryCode, getCountryCallingCode } from \"libphonenumber-js/min\";\nimport {\n COUNTRIES_AS_DROPDOWN_OPTIONS,\n useOnCardCountryChange,\n} from \"./field-country\";\nimport parsePhoneNumberFromString, {\n getExampleNumber,\n PhoneNumber,\n} from \"libphonenumber-js\";\nimport examples from \"libphonenumber-js/mobile/examples\";\nimport { useSession } from \"./session-provider\";\nimport { formFieldName } from \"../utils\";\nimport { InternalInputValidateEvent } from \"../private-event-types\";\nimport {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"preact/hooks\";\nimport { FunctionComponent, TargetedEvent } from \"preact\";\n\nexport const PhoneNumberField: FunctionComponent<FieldProps> = (props) => {\n const { field, onChange, onError } = props;\n const id = formFieldName(field);\n\n const session = useSession();\n\n const hiddenFieldRef = useRef<HTMLInputElement>(null);\n const [isTouched, setIsTouched] = useState(false);\n\n const [countryCode, setCountryCode] = useState(session.country);\n const countryCodeIndex = useMemo(() => {\n const index = COUNTRIES_WITH_DIAL_CODES_AS_DROPDOWN_OPTIONS.findIndex(\n (r) => r.value === countryCode,\n );\n if (index === -1) return 0;\n return index;\n }, [countryCode]);\n const country =\n COUNTRIES_WITH_DIAL_CODES_AS_DROPDOWN_OPTIONS[countryCodeIndex];\n\n const [localNumber, setLocalNumber] = useState(\"\");\n const inputRef = useRef<HTMLInputElement>(null);\n\n const formatPhoneNumber = useCallback(\n (country: DropdownOptionWithDial, localNumber: string) => {\n const phoneNumber = sanitizePhoneNumber(country, localNumber);\n if (phoneNumber) {\n // use parsed format if parsing was successful\n return phoneNumber.number;\n } else {\n // else just concat the dial code and local number\n return `+${country.dial}${localNumber}`;\n }\n },\n [],\n );\n\n const updateValidity = useCallback(\n (nextCountry: DropdownOptionWithDial, localNumber: string) => {\n const phoneNumberString = formatPhoneNumber(nextCountry, localNumber);\n const errorCode =\n validate(field, localNumber.length ? phoneNumberString : \"\") ?? null;\n if (onError) onError(id, errorCode);\n },\n [field, formatPhoneNumber, id, onError],\n );\n\n const updateHiddenField = useCallback(\n (country: DropdownOptionWithDial, localNumber: string) => {\n if (hiddenFieldRef.current) {\n hiddenFieldRef.current.value = formatPhoneNumber(country, localNumber);\n }\n },\n [formatPhoneNumber],\n );\n\n useEffect(() => {\n const input = hiddenFieldRef.current;\n if (!input) return;\n const listener = (e: Event) => {\n const value = (e as CustomEvent).detail.value;\n updateValidity(country, value);\n };\n input.addEventListener(InternalInputValidateEvent.type, listener);\n return () => {\n input.removeEventListener(InternalInputValidateEvent.type, listener);\n };\n }, [id, updateValidity, country]);\n\n function handleLocalChange(event: TargetedEvent<HTMLInputElement>): void {\n const nextLocal = (event.target as HTMLInputElement).value;\n setLocalNumber(nextLocal);\n updateHiddenField(country, nextLocal);\n setIsTouched(true);\n updateValidity(country, nextLocal);\n onChange(); // keep parity with other fields\n }\n\n function handleCountryChange(option: DropdownOption): void {\n const nextCountry = option as DropdownOptionWithDial;\n setCountryCode(nextCountry.value as string);\n updateHiddenField(nextCountry, localNumber);\n if (isTouched) updateValidity(nextCountry, localNumber);\n onChange(); // keep parity with other fields\n }\n\n // when the user inputs a card number, update the phone number field to match\n useOnCardCountryChange((newCountry: CountryCode) => {\n const newOption = COUNTRIES_WITH_DIAL_CODES_AS_DROPDOWN_OPTIONS.find(\n (option) => option.value === newCountry,\n );\n if (newOption && newOption.value !== countryCode) {\n handleCountryChange(newOption);\n }\n });\n\n function getExampleLocalNumber() {\n return (\n getExampleNumber(country.value as CountryCode, examples)\n ?.formatInternational()\n ?.replace(\n `+${getCountryCallingCode(country.value as CountryCode)} `,\n \"\",\n ) || \"\"\n );\n }\n\n function formatForUser() {\n const phoneNumber = sanitizePhoneNumber(country, localNumber);\n if (phoneNumber) {\n const international = phoneNumber.formatInternational();\n // remove country dial code from displayed local number\n setLocalNumber(\n international.replace(\n `+${getCountryCallingCode(country.value as CountryCode)} `,\n \"\",\n ),\n );\n }\n }\n\n function handleBlur(): void {\n setIsTouched(true);\n formatForUser();\n updateValidity(country, localNumber);\n }\n\n return (\n <div className={`xendit-input-phone`}>\n <div className=\"xendit-combobox\">\n <Dropdown\n options={COUNTRIES_WITH_DIAL_CODES_AS_DROPDOWN_OPTIONS}\n selectedIndex={countryCodeIndex}\n onChange={handleCountryChange}\n />\n <input\n id={id}\n ref={inputRef}\n type=\"tel\"\n inputMode=\"tel\"\n placeholder={getExampleLocalNumber()}\n className=\"xendit-text-14 xendit-phone-number-input\"\n onBlur={handleBlur}\n onChange={handleLocalChange}\n value={localNumber}\n autoComplete=\"tel\"\n />\n </div>\n\n {/* Hidden canonical value (useful for non-JS form posts) */}\n <input type=\"hidden\" name={id} ref={hiddenFieldRef} />\n </div>\n );\n};\n\ntype DropdownOptionWithDial = DropdownOption & { dial: string };\nconst COUNTRIES_WITH_DIAL_CODES_AS_DROPDOWN_OPTIONS =\n COUNTRIES_AS_DROPDOWN_OPTIONS.map<DropdownOptionWithDial | null>(\n (country) => {\n const dial = getCountryCallingCode(country.value as CountryCode);\n if (!dial) return null;\n return {\n ...country,\n shortTitle: `+${dial}`,\n title: `${country.title} (+${dial})`,\n dial,\n };\n },\n ).filter((country): country is DropdownOptionWithDial => {\n return Boolean(country);\n });\n\nconst sanitizePhoneNumber = (\n country: DropdownOptionWithDial,\n phoneNumber: string,\n): PhoneNumber | null => {\n const parsed = parsePhoneNumberFromString(\n phoneNumber,\n country.value as CountryCode,\n );\n if (parsed && parsed.isPossible()) return parsed;\n\n return null;\n};\n","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { getExampleNumber as _getExampleNumber } from '../../core/index.js'\r\n\r\nexport function getExampleNumber() {\r\n\treturn withMetadataArgument(_getExampleNumber, arguments)\r\n}","type TitleValuePair = {\n title: string;\n value: string;\n};\n\nfunction toTitleValuePair(nameValue: {\n name: string;\n value: string;\n}): TitleValuePair {\n return {\n title: nameValue.name,\n value: nameValue.value,\n };\n}\n\n// https://gist.github.com/mshafrir/2646763\nexport const PROVINCES_US: TitleValuePair[] = [\n {\n name: \"Alabama\",\n value: \"AL\",\n },\n {\n name: \"Alaska\",\n value: \"AK\",\n },\n {\n name: \"American Samoa\",\n value: \"AS\",\n },\n {\n name: \"Arizona\",\n value: \"AZ\",\n },\n {\n name: \"Arkansas\",\n value: \"AR\",\n },\n {\n name: \"California\",\n value: \"CA\",\n },\n {\n name: \"Colorado\",\n value: \"CO\",\n },\n {\n name: \"Connecticut\",\n value: \"CT\",\n },\n {\n name: \"Delaware\",\n value: \"DE\",\n },\n {\n name: \"District Of Columbia\",\n value: \"DC\",\n },\n {\n name: \"Federated States Of Micronesia\",\n value: \"FM\",\n },\n {\n name: \"Florida\",\n value: \"FL\",\n },\n {\n name: \"Georgia\",\n value: \"GA\",\n },\n {\n name: \"Guam\",\n value: \"GU\",\n },\n {\n name: \"Hawaii\",\n value: \"HI\",\n },\n {\n name: \"Idaho\",\n value: \"ID\",\n },\n {\n name: \"Illinois\",\n value: \"IL\",\n },\n {\n name: \"Indiana\",\n value: \"IN\",\n },\n {\n name: \"Iowa\",\n value: \"IA\",\n },\n {\n name: \"Kansas\",\n value: \"KS\",\n },\n {\n name: \"Kentucky\",\n value: \"KY\",\n },\n {\n name: \"Louisiana\",\n value: \"LA\",\n },\n {\n name: \"Maine\",\n value: \"ME\",\n },\n {\n name: \"Marshall Islands\",\n value: \"MH\",\n },\n {\n name: \"Maryland\",\n value: \"MD\",\n },\n {\n name: \"Massachusetts\",\n value: \"MA\",\n },\n {\n name: \"Michigan\",\n value: \"MI\",\n },\n {\n name: \"Minnesota\",\n value: \"MN\",\n },\n {\n name: \"Mississippi\",\n value: \"MS\",\n },\n {\n name: \"Missouri\",\n value: \"MO\",\n },\n {\n name: \"Montana\",\n value: \"MT\",\n },\n {\n name: \"Nebraska\",\n value: \"NE\",\n },\n {\n name: \"Nevada\",\n value: \"NV\",\n },\n {\n name: \"New Hampshire\",\n value: \"NH\",\n },\n {\n name: \"New Jersey\",\n value: \"NJ\",\n },\n {\n name: \"New Mexico\",\n value: \"NM\",\n },\n {\n name: \"New York\",\n value: \"NY\",\n },\n {\n name: \"North Carolina\",\n value: \"NC\",\n },\n {\n name: \"North Dakota\",\n value: \"ND\",\n },\n {\n name: \"Northern Mariana Islands\",\n value: \"MP\",\n },\n {\n name: \"Ohio\",\n value: \"OH\",\n },\n {\n name: \"Oklahoma\",\n value: \"OK\",\n },\n {\n name: \"Oregon\",\n value: \"OR\",\n },\n {\n name: \"Palau\",\n value: \"PW\",\n },\n {\n name: \"Pennsylvania\",\n value: \"PA\",\n },\n {\n name: \"Puerto Rico\",\n value: \"PR\",\n },\n {\n name: \"Rhode Island\",\n value: \"RI\",\n },\n {\n name: \"South Carolina\",\n value: \"SC\",\n },\n {\n name: \"South Dakota\",\n value: \"SD\",\n },\n {\n name: \"Tennessee\",\n value: \"TN\",\n },\n {\n name: \"Texas\",\n value: \"TX\",\n },\n {\n name: \"Utah\",\n value: \"UT\",\n },\n {\n name: \"Vermont\",\n value: \"VT\",\n },\n {\n name: \"Virgin Islands\",\n value: \"VI\",\n },\n {\n name: \"Virginia\",\n value: \"VA\",\n },\n {\n name: \"Washington\",\n value: \"WA\",\n },\n {\n name: \"West Virginia\",\n value: \"WV\",\n },\n {\n name: \"Wisconsin\",\n value: \"WI\",\n },\n {\n name: \"Wyoming\",\n value: \"WY\",\n },\n].map(toTitleValuePair);\n\n// https://gist.github.com/pbojinov/a87adf559d2f7e81d86ae67e7bd883c7\nexport const PROVINCES_CA: TitleValuePair[] = [\n {\n name: \"Alberta\",\n value: \"AB\",\n },\n {\n name: \"British Columbia\",\n value: \"BC\",\n },\n {\n name: \"Manitoba\",\n value: \"MB\",\n },\n {\n name: \"New Brunswick\",\n value: \"NB\",\n },\n {\n name: \"Newfoundland and Labrador\",\n value: \"NL\",\n },\n {\n name: \"Northwest Territories\",\n value: \"NT\",\n },\n {\n name: \"Nova Scotia\",\n value: \"NS\",\n },\n {\n name: \"Nunavut\",\n value: \"NU\",\n },\n {\n name: \"Ontario\",\n value: \"ON\",\n },\n {\n name: \"Prince Edward Island\",\n value: \"PE\",\n },\n {\n name: \"Quebec\",\n value: \"QC\",\n },\n {\n name: \"Saskatchewan\",\n value: \"SK\",\n },\n {\n name: \"Yukon Territory\",\n value: \"YT\",\n },\n].map(toTitleValuePair);\n\nexport const PROVINCES_GB: TitleValuePair[] = [\n { name: \"Avon\" },\n { name: \"Bedfordshire\" },\n { name: \"Berkshire\" },\n { name: \"Buckinghamshire\" },\n { name: \"Cambridgeshire\" },\n { name: \"Cheshire\" },\n { name: \"Cleveland\" },\n { name: \"Cornwall\" },\n { name: \"Cumbria\" },\n { name: \"Derbyshire\" },\n { name: \"Devon\" },\n { name: \"Dorset\" },\n { name: \"Durham\" },\n { name: \"East Sussex\" },\n { name: \"Essex\" },\n { name: \"Gloucestershire\" },\n { name: \"Hampshire\" },\n { name: \"Herefordshire\" },\n { name: \"Hertfordshire\" },\n { name: \"Isle of Wight\" },\n { name: \"Kent\" },\n { name: \"Lancashire\" },\n { name: \"Leicestershire\" },\n { name: \"Lincolnshire\" },\n { name: \"London\" },\n { name: \"Merseyside\" },\n { name: \"Norfolk\" },\n { name: \"Northamptonshire\" },\n { name: \"Northumberland\" },\n { name: \"North Yorkshire\" },\n { name: \"Nottinghamshire\" },\n { name: \"Oxfordshire\" },\n { name: \"Rutland\" },\n { name: \"Shropshire\" },\n { name: \"Somerset\" },\n { name: \"South Yorkshire\" },\n { name: \"Staffordshire\" },\n { name: \"Suffolk\" },\n { name: \"Surrey\" },\n { name: \"Tyne and Wear\" },\n { name: \"Warwickshire\" },\n { name: \"West Midlands\" },\n { name: \"West Sussex\" },\n { name: \"West Yorkshire\" },\n { name: \"Wiltshire\" },\n { name: \"Worcestershire\" },\n { name: \"Clwyd\" },\n { name: \"Dyfed\" },\n { name: \"Gwent\" },\n { name: \"Gwynedd\" },\n { name: \"Mid Glamorgan\" },\n { name: \"Powys\" },\n { name: \"South Glamorgan\" },\n { name: \"West Glamorgan\" },\n { name: \"Aberdeenshire\" },\n { name: \"Angus\" },\n { name: \"Argyll\" },\n { name: \"Ayrshire\" },\n { name: \"Banffshire\" },\n { name: \"Berwickshire\" },\n { name: \"Bute\" },\n { name: \"Caithness\" },\n { name: \"Clackmannanshire\" },\n { name: \"Dumfriesshire\" },\n { name: \"Dunbartonshire\" },\n { name: \"East Lothian\" },\n { name: \"Fife\" },\n { name: \"Inverness-shire\" },\n { name: \"Kincardineshire\" },\n { name: \"Kinross-shire\" },\n { name: \"Kirkcudbrightshire\" },\n { name: \"Lanarkshire\" },\n { name: \"Midlothian\" },\n { name: \"Moray\" },\n { name: \"Nairnshire\" },\n { name: \"Orkney\" },\n { name: \"Peeblesshire\" },\n { name: \"Perthshire\" },\n { name: \"Renfrewshire\" },\n { name: \"Ross-shire\" },\n { name: \"Roxburghshire\" },\n { name: \"Selkirkshire\" },\n { name: \"Shetland\" },\n { name: \"Stirlingshire\" },\n { name: \"Sutherland\" },\n { name: \"West Lothian\" },\n { name: \"Wigtownshire\" },\n { name: \"Antrim\" },\n { name: \"Armagh\" },\n { name: \"Down\" },\n { name: \"Fermanagh\" },\n { name: \"Londonderry\" },\n { name: \"Tyrone\" },\n].map((province) => ({ title: province.name, value: province.name }));\n","import { useEffect, useRef, useCallback, useLayoutEffect } from \"preact/hooks\";\nimport { FieldProps } from \"./field\";\nimport { CountryCode } from \"libphonenumber-js\";\nimport { Dropdown, DropdownOption } from \"./dropdown\";\nimport { useSession } from \"./session-provider\";\nimport { PROVINCES_CA, PROVINCES_GB, PROVINCES_US } from \"../data/provinces\";\nimport { validate } from \"../validation\";\nimport { InternalInputValidateEvent } from \"../private-event-types\";\nimport {\n formFieldName,\n getValueFromChannelProperty,\n objectId,\n usePrevious,\n} from \"../utils\";\nimport { useChannel } from \"./payment-channel\";\nimport { useChannelProperties } from \"./channel-form\";\nimport { ChannelFormField, ChannelProperties } from \"../backend-types/channel\";\nimport { BffSession } from \"../backend-types/session\";\nimport { FunctionComponent, TargetedEvent } from \"preact\";\n\nexport const ProvinceField: FunctionComponent<FieldProps> = (props) => {\n const { field, onChange, onError } = props;\n const id = formFieldName(field);\n\n const session = useSession();\n const allFields = useChannel()?.form;\n const channelProperties = useChannelProperties();\n\n const hiddenFieldRef = useRef<HTMLInputElement>(null);\n\n const validateField = useCallback(\n (value: string) => {\n const errorCode = validate(field, value) ?? null;\n if (onError) onError(id, errorCode);\n return errorCode;\n },\n [field, id, onError],\n );\n\n useEffect(() => {\n const input = hiddenFieldRef.current;\n if (!input) return;\n const listener = (e: Event) => {\n const value = (e as CustomEvent).detail.value;\n validateField(value);\n };\n input.addEventListener(InternalInputValidateEvent.type, listener);\n return () => {\n input.removeEventListener(InternalInputValidateEvent.type, listener);\n };\n }, [id, validateField]);\n\n const clearValue = useCallback(() => {\n if (hiddenFieldRef.current) {\n hiddenFieldRef.current.value = \"\";\n }\n onChange();\n }, [onChange]);\n\n const onChangeDropdown = useCallback(\n (option: DropdownOption) => {\n if (hiddenFieldRef.current) {\n hiddenFieldRef.current.value = option.value;\n validateField(hiddenFieldRef.current.value);\n }\n onChange();\n },\n [onChange, validateField],\n );\n\n const onChangeInput = useCallback(\n (e: TargetedEvent<HTMLInputElement>) => {\n if (hiddenFieldRef.current) {\n hiddenFieldRef.current.value = (e.target as HTMLInputElement).value;\n validateField(hiddenFieldRef.current.value);\n }\n onChange();\n },\n [onChange, validateField],\n );\n\n // get the list of provinces for the chosen country\n const options = getProvinceList(\n getBestCountryForProvinceField(\n field,\n allFields ?? [],\n channelProperties ?? {},\n session,\n ),\n );\n\n // if the option list changes, clear the selection\n const previousOptions = usePrevious(options);\n useLayoutEffect(() => {\n if (previousOptions !== options) {\n clearValue();\n }\n }, [clearValue, options, previousOptions]);\n\n return (\n <>\n <input type=\"hidden\" name={id} defaultValue=\"\" ref={hiddenFieldRef} />\n {options ? (\n <Dropdown\n key={objectId(options)}\n id={id}\n options={options}\n onChange={onChangeDropdown}\n placeholder={field.placeholder}\n />\n ) : (\n <input\n type=\"text\"\n id={id}\n onChange={onChangeInput}\n placeholder={field.placeholder}\n className={`xendit-input xendit-text-14`}\n />\n )}\n </>\n );\n};\n\nfunction getProvinceList(country: CountryCode | null) {\n switch (country) {\n case \"US\":\n return PROVINCES_US;\n case \"CA\":\n return PROVINCES_CA;\n case \"GB\":\n return PROVINCES_GB;\n default:\n return null;\n }\n}\n\nfunction getBestCountryForProvinceField(\n thisField: ChannelFormField,\n allFields: ChannelFormField[],\n channelProperties: ChannelProperties,\n session: BffSession,\n): CountryCode {\n // country selection priority:\n // 1. previous form field\n // 3. session country\n if (allFields) {\n for (let i = 0; i < allFields.length; i++) {\n const otherField = allFields[i];\n if (i > 0 && otherField === thisField) {\n const previousField = allFields[i - 1];\n if (previousField.type.name === \"country\") {\n const country = getValueFromChannelProperty(\n previousField.channel_property,\n channelProperties,\n );\n if (country && typeof country === \"string\") {\n return country as CountryCode;\n }\n }\n }\n }\n }\n return session.country as CountryCode;\n}\n","import { ChannelFormField } from \"../backend-types/channel\";\nimport { FieldProps } from \"./field\";\nimport { validate } from \"../validation\";\nimport { InternalInputValidateEvent } from \"../private-event-types\";\nimport { formFieldName } from \"../utils\";\nimport { useCallback, useEffect, useRef, useState } from \"preact/hooks\";\nimport { FunctionComponent, TargetedEvent, TargetedFocusEvent } from \"preact\";\n\nexport const TextField: FunctionComponent<FieldProps> = (props) => {\n const { field, onChange, onError } = props;\n const id = formFieldName(field);\n const [isTouched, setIsTouched] = useState(false);\n const inputRef = useRef<HTMLInputElement>(null);\n\n function handleChange(event: TargetedEvent<HTMLInputElement>): void {\n onChange();\n if (!isTouched) return;\n const value = (event.target as HTMLInputElement).value;\n validateField(value);\n }\n\n function handleBlur(event: TargetedFocusEvent<HTMLInputElement>): void {\n const value = (event.target as HTMLInputElement).value;\n if (value) validateField(value);\n }\n\n const validateField = useCallback(\n (value: string) => {\n const errorCode = validate(field, value) ?? null;\n if (onError) onError(id, errorCode);\n setIsTouched(true);\n return errorCode;\n },\n [field, id, onError],\n );\n\n useEffect(() => {\n const input = inputRef.current;\n if (!input) return;\n const listener = (e: Event) => {\n const value = (e as CustomEvent).detail.value;\n validateField(value);\n };\n input.addEventListener(InternalInputValidateEvent.type, listener);\n return () => {\n input.removeEventListener(InternalInputValidateEvent.type, listener);\n };\n }, [id, validateField]);\n\n return (\n <>\n <input\n id={id}\n name={id}\n ref={inputRef}\n type=\"text\"\n placeholder={field.placeholder}\n className={`xendit-text-14`}\n onBlur={handleBlur}\n onChange={handleChange}\n minLength={isTextField(field) ? field.type.min_length : undefined}\n maxLength={isTextField(field) ? field.type.max_length : undefined}\n />\n </>\n );\n};\n\nfunction isTextField(field: ChannelFormField): field is ChannelFormField & {\n type: { name: \"text\" };\n} {\n return field.type.name === \"text\";\n}\n","import { FunctionComponent } from \"preact\";\nimport { ChannelFormField } from \"../backend-types/channel\";\nimport { LocaleKey, LocalizedString } from \"../localization\";\nimport { CountryField } from \"./field-country\";\nimport { DropdownField } from \"./field-dropdown\";\nimport { IframeField } from \"./field-iframe\";\nimport { PhoneNumberField } from \"./field-phone-number\";\nimport { ProvinceField } from \"./field-province\";\nimport { TextField } from \"./field-text\";\n\nexport interface FieldProps {\n field: ChannelFormField;\n onChange: () => void;\n className?: string;\n onError?: (\n fieldId: string,\n error: LocaleKey | LocalizedString | null,\n ) => void;\n}\n\nconst Field: FunctionComponent<FieldProps> = (props) => {\n const { field, className } = props;\n\n function renderInner() {\n switch (field.type.name) {\n case \"credit_card_number\":\n case \"credit_card_expiry\":\n case \"credit_card_cvn\":\n return <IframeField {...props} />;\n case \"phone_number\":\n return <PhoneNumberField {...props} />;\n case \"text\":\n case \"email\":\n case \"postal_code\":\n return <TextField {...props} />;\n case \"dropdown\":\n return <DropdownField {...props} />;\n case \"country\":\n return <CountryField {...props} />;\n case \"province\":\n return <ProvinceField {...props} />;\n }\n }\n\n return (\n <div\n className={`${className} xendit-channel-form-field xendit-form-field-span-${field.span}`}\n >\n {renderInner()}\n </div>\n );\n};\n\nexport default Field;\n","const isString = obj => typeof obj === 'string';\nconst defer = () => {\n let res;\n let rej;\n const promise = new Promise((resolve, reject) => {\n res = resolve;\n rej = reject;\n });\n promise.resolve = res;\n promise.reject = rej;\n return promise;\n};\nconst makeString = object => {\n if (object == null) return '';\n return '' + object;\n};\nconst copy = (a, s, t) => {\n a.forEach(m => {\n if (s[m]) t[m] = s[m];\n });\n};\nconst lastOfPathSeparatorRegExp = /###/g;\nconst cleanKey = key => key && key.indexOf('###') > -1 ? key.replace(lastOfPathSeparatorRegExp, '.') : key;\nconst canNotTraverseDeeper = object => !object || isString(object);\nconst getLastOfPath = (object, path, Empty) => {\n const stack = !isString(path) ? path : path.split('.');\n let stackIndex = 0;\n while (stackIndex < stack.length - 1) {\n if (canNotTraverseDeeper(object)) return {};\n const key = cleanKey(stack[stackIndex]);\n if (!object[key] && Empty) object[key] = new Empty();\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n object = object[key];\n } else {\n object = {};\n }\n ++stackIndex;\n }\n if (canNotTraverseDeeper(object)) return {};\n return {\n obj: object,\n k: cleanKey(stack[stackIndex])\n };\n};\nconst setPath = (object, path, newValue) => {\n const {\n obj,\n k\n } = getLastOfPath(object, path, Object);\n if (obj !== undefined || path.length === 1) {\n obj[k] = newValue;\n return;\n }\n let e = path[path.length - 1];\n let p = path.slice(0, path.length - 1);\n let last = getLastOfPath(object, p, Object);\n while (last.obj === undefined && p.length) {\n e = `${p[p.length - 1]}.${e}`;\n p = p.slice(0, p.length - 1);\n last = getLastOfPath(object, p, Object);\n if (last?.obj && typeof last.obj[`${last.k}.${e}`] !== 'undefined') {\n last.obj = undefined;\n }\n }\n last.obj[`${last.k}.${e}`] = newValue;\n};\nconst pushPath = (object, path, newValue, concat) => {\n const {\n obj,\n k\n } = getLastOfPath(object, path, Object);\n obj[k] = obj[k] || [];\n obj[k].push(newValue);\n};\nconst getPath = (object, path) => {\n const {\n obj,\n k\n } = getLastOfPath(object, path);\n if (!obj) return undefined;\n if (!Object.prototype.hasOwnProperty.call(obj, k)) return undefined;\n return obj[k];\n};\nconst getPathWithDefaults = (data, defaultData, key) => {\n const value = getPath(data, key);\n if (value !== undefined) {\n return value;\n }\n return getPath(defaultData, key);\n};\nconst deepExtend = (target, source, overwrite) => {\n for (const prop in source) {\n if (prop !== '__proto__' && prop !== 'constructor') {\n if (prop in target) {\n if (isString(target[prop]) || target[prop] instanceof String || isString(source[prop]) || source[prop] instanceof String) {\n if (overwrite) target[prop] = source[prop];\n } else {\n deepExtend(target[prop], source[prop], overwrite);\n }\n } else {\n target[prop] = source[prop];\n }\n }\n }\n return target;\n};\nconst regexEscape = str => str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\nvar _entityMap = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;',\n '/': '&#x2F;'\n};\nconst escape = data => {\n if (isString(data)) {\n return data.replace(/[&<>\"'\\/]/g, s => _entityMap[s]);\n }\n return data;\n};\nclass RegExpCache {\n constructor(capacity) {\n this.capacity = capacity;\n this.regExpMap = new Map();\n this.regExpQueue = [];\n }\n getRegExp(pattern) {\n const regExpFromCache = this.regExpMap.get(pattern);\n if (regExpFromCache !== undefined) {\n return regExpFromCache;\n }\n const regExpNew = new RegExp(pattern);\n if (this.regExpQueue.length === this.capacity) {\n this.regExpMap.delete(this.regExpQueue.shift());\n }\n this.regExpMap.set(pattern, regExpNew);\n this.regExpQueue.push(pattern);\n return regExpNew;\n }\n}\nconst chars = [' ', ',', '?', '!', ';'];\nconst looksLikeObjectPathRegExpCache = new RegExpCache(20);\nconst looksLikeObjectPath = (key, nsSeparator, keySeparator) => {\n nsSeparator = nsSeparator || '';\n keySeparator = keySeparator || '';\n const possibleChars = chars.filter(c => nsSeparator.indexOf(c) < 0 && keySeparator.indexOf(c) < 0);\n if (possibleChars.length === 0) return true;\n const r = looksLikeObjectPathRegExpCache.getRegExp(`(${possibleChars.map(c => c === '?' ? '\\\\?' : c).join('|')})`);\n let matched = !r.test(key);\n if (!matched) {\n const ki = key.indexOf(keySeparator);\n if (ki > 0 && !r.test(key.substring(0, ki))) {\n matched = true;\n }\n }\n return matched;\n};\nconst deepFind = (obj, path, keySeparator = '.') => {\n if (!obj) return undefined;\n if (obj[path]) {\n if (!Object.prototype.hasOwnProperty.call(obj, path)) return undefined;\n return obj[path];\n }\n const tokens = path.split(keySeparator);\n let current = obj;\n for (let i = 0; i < tokens.length;) {\n if (!current || typeof current !== 'object') {\n return undefined;\n }\n let next;\n let nextPath = '';\n for (let j = i; j < tokens.length; ++j) {\n if (j !== i) {\n nextPath += keySeparator;\n }\n nextPath += tokens[j];\n next = current[nextPath];\n if (next !== undefined) {\n if (['string', 'number', 'boolean'].indexOf(typeof next) > -1 && j < tokens.length - 1) {\n continue;\n }\n i += j - i + 1;\n break;\n }\n }\n current = next;\n }\n return current;\n};\nconst getCleanedCode = code => code?.replace('_', '-');\n\nconst consoleLogger = {\n type: 'logger',\n log(args) {\n this.output('log', args);\n },\n warn(args) {\n this.output('warn', args);\n },\n error(args) {\n this.output('error', args);\n },\n output(type, args) {\n console?.[type]?.apply?.(console, args);\n }\n};\nclass Logger {\n constructor(concreteLogger, options = {}) {\n this.init(concreteLogger, options);\n }\n init(concreteLogger, options = {}) {\n this.prefix = options.prefix || 'i18next:';\n this.logger = concreteLogger || consoleLogger;\n this.options = options;\n this.debug = options.debug;\n }\n log(...args) {\n return this.forward(args, 'log', '', true);\n }\n warn(...args) {\n return this.forward(args, 'warn', '', true);\n }\n error(...args) {\n return this.forward(args, 'error', '');\n }\n deprecate(...args) {\n return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n }\n forward(args, lvl, prefix, debugOnly) {\n if (debugOnly && !this.debug) return null;\n if (isString(args[0])) args[0] = `${prefix}${this.prefix} ${args[0]}`;\n return this.logger[lvl](args);\n }\n create(moduleName) {\n return new Logger(this.logger, {\n ...{\n prefix: `${this.prefix}:${moduleName}:`\n },\n ...this.options\n });\n }\n clone(options) {\n options = options || this.options;\n options.prefix = options.prefix || this.prefix;\n return new Logger(this.logger, options);\n }\n}\nvar baseLogger = new Logger();\n\nclass EventEmitter {\n constructor() {\n this.observers = {};\n }\n on(events, listener) {\n events.split(' ').forEach(event => {\n if (!this.observers[event]) this.observers[event] = new Map();\n const numListeners = this.observers[event].get(listener) || 0;\n this.observers[event].set(listener, numListeners + 1);\n });\n return this;\n }\n off(event, listener) {\n if (!this.observers[event]) return;\n if (!listener) {\n delete this.observers[event];\n return;\n }\n this.observers[event].delete(listener);\n }\n emit(event, ...args) {\n if (this.observers[event]) {\n const cloned = Array.from(this.observers[event].entries());\n cloned.forEach(([observer, numTimesAdded]) => {\n for (let i = 0; i < numTimesAdded; i++) {\n observer(...args);\n }\n });\n }\n if (this.observers['*']) {\n const cloned = Array.from(this.observers['*'].entries());\n cloned.forEach(([observer, numTimesAdded]) => {\n for (let i = 0; i < numTimesAdded; i++) {\n observer.apply(observer, [event, ...args]);\n }\n });\n }\n }\n}\n\nclass ResourceStore extends EventEmitter {\n constructor(data, options = {\n ns: ['translation'],\n defaultNS: 'translation'\n }) {\n super();\n this.data = data || {};\n this.options = options;\n if (this.options.keySeparator === undefined) {\n this.options.keySeparator = '.';\n }\n if (this.options.ignoreJSONStructure === undefined) {\n this.options.ignoreJSONStructure = true;\n }\n }\n addNamespaces(ns) {\n if (this.options.ns.indexOf(ns) < 0) {\n this.options.ns.push(ns);\n }\n }\n removeNamespaces(ns) {\n const index = this.options.ns.indexOf(ns);\n if (index > -1) {\n this.options.ns.splice(index, 1);\n }\n }\n getResource(lng, ns, key, options = {}) {\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n const ignoreJSONStructure = options.ignoreJSONStructure !== undefined ? options.ignoreJSONStructure : this.options.ignoreJSONStructure;\n let path;\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n } else {\n path = [lng, ns];\n if (key) {\n if (Array.isArray(key)) {\n path.push(...key);\n } else if (isString(key) && keySeparator) {\n path.push(...key.split(keySeparator));\n } else {\n path.push(key);\n }\n }\n }\n const result = getPath(this.data, path);\n if (!result && !ns && !key && lng.indexOf('.') > -1) {\n lng = path[0];\n ns = path[1];\n key = path.slice(2).join('.');\n }\n if (result || !ignoreJSONStructure || !isString(key)) return result;\n return deepFind(this.data?.[lng]?.[ns], key, keySeparator);\n }\n addResource(lng, ns, key, value, options = {\n silent: false\n }) {\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n let path = [lng, ns];\n if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n value = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n setPath(this.data, path, value);\n if (!options.silent) this.emit('added', lng, ns, key, value);\n }\n addResources(lng, ns, resources, options = {\n silent: false\n }) {\n for (const m in resources) {\n if (isString(resources[m]) || Array.isArray(resources[m])) this.addResource(lng, ns, m, resources[m], {\n silent: true\n });\n }\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n addResourceBundle(lng, ns, resources, deep, overwrite, options = {\n silent: false,\n skipCopy: false\n }) {\n let path = [lng, ns];\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n deep = resources;\n resources = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n let pack = getPath(this.data, path) || {};\n if (!options.skipCopy) resources = JSON.parse(JSON.stringify(resources));\n if (deep) {\n deepExtend(pack, resources, overwrite);\n } else {\n pack = {\n ...pack,\n ...resources\n };\n }\n setPath(this.data, path, pack);\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n removeResourceBundle(lng, ns) {\n if (this.hasResourceBundle(lng, ns)) {\n delete this.data[lng][ns];\n }\n this.removeNamespaces(ns);\n this.emit('removed', lng, ns);\n }\n hasResourceBundle(lng, ns) {\n return this.getResource(lng, ns) !== undefined;\n }\n getResourceBundle(lng, ns) {\n if (!ns) ns = this.options.defaultNS;\n return this.getResource(lng, ns);\n }\n getDataByLanguage(lng) {\n return this.data[lng];\n }\n hasLanguageSomeTranslations(lng) {\n const data = this.getDataByLanguage(lng);\n const n = data && Object.keys(data) || [];\n return !!n.find(v => data[v] && Object.keys(data[v]).length > 0);\n }\n toJSON() {\n return this.data;\n }\n}\n\nvar postProcessor = {\n processors: {},\n addPostProcessor(module) {\n this.processors[module.name] = module;\n },\n handle(processors, value, key, options, translator) {\n processors.forEach(processor => {\n value = this.processors[processor]?.process(value, key, options, translator) ?? value;\n });\n return value;\n }\n};\n\nconst PATH_KEY = Symbol('i18next/PATH_KEY');\nfunction createProxy() {\n const state = [];\n const handler = Object.create(null);\n let proxy;\n handler.get = (target, key) => {\n proxy?.revoke?.();\n if (key === PATH_KEY) return state;\n state.push(key);\n proxy = Proxy.revocable(target, handler);\n return proxy.proxy;\n };\n return Proxy.revocable(Object.create(null), handler).proxy;\n}\nfunction keysFromSelector(selector, opts) {\n const {\n [PATH_KEY]: path\n } = selector(createProxy());\n return path.join(opts?.keySeparator ?? '.');\n}\n\nconst checkedLoadedFor = {};\nconst shouldHandleAsObject = res => !isString(res) && typeof res !== 'boolean' && typeof res !== 'number';\nclass Translator extends EventEmitter {\n constructor(services, options = {}) {\n super();\n copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, this);\n this.options = options;\n if (this.options.keySeparator === undefined) {\n this.options.keySeparator = '.';\n }\n this.logger = baseLogger.create('translator');\n }\n changeLanguage(lng) {\n if (lng) this.language = lng;\n }\n exists(key, o = {\n interpolation: {}\n }) {\n const opt = {\n ...o\n };\n if (key == null) return false;\n const resolved = this.resolve(key, opt);\n if (resolved?.res === undefined) return false;\n const isObject = shouldHandleAsObject(resolved.res);\n if (opt.returnObjects === false && isObject) {\n return false;\n }\n return true;\n }\n extractFromKey(key, opt) {\n let nsSeparator = opt.nsSeparator !== undefined ? opt.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n const keySeparator = opt.keySeparator !== undefined ? opt.keySeparator : this.options.keySeparator;\n let namespaces = opt.ns || this.options.defaultNS || [];\n const wouldCheckForNsInKey = nsSeparator && key.indexOf(nsSeparator) > -1;\n const seemsNaturalLanguage = !this.options.userDefinedKeySeparator && !opt.keySeparator && !this.options.userDefinedNsSeparator && !opt.nsSeparator && !looksLikeObjectPath(key, nsSeparator, keySeparator);\n if (wouldCheckForNsInKey && !seemsNaturalLanguage) {\n const m = key.match(this.interpolator.nestingRegexp);\n if (m && m.length > 0) {\n return {\n key,\n namespaces: isString(namespaces) ? [namespaces] : namespaces\n };\n }\n const parts = key.split(nsSeparator);\n if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();\n key = parts.join(keySeparator);\n }\n return {\n key,\n namespaces: isString(namespaces) ? [namespaces] : namespaces\n };\n }\n translate(keys, o, lastKey) {\n let opt = typeof o === 'object' ? {\n ...o\n } : o;\n if (typeof opt !== 'object' && this.options.overloadTranslationOptionHandler) {\n opt = this.options.overloadTranslationOptionHandler(arguments);\n }\n if (typeof opt === 'object') opt = {\n ...opt\n };\n if (!opt) opt = {};\n if (keys == null) return '';\n if (typeof keys === 'function') keys = keysFromSelector(keys, {\n ...this.options,\n ...opt\n });\n if (!Array.isArray(keys)) keys = [String(keys)];\n const returnDetails = opt.returnDetails !== undefined ? opt.returnDetails : this.options.returnDetails;\n const keySeparator = opt.keySeparator !== undefined ? opt.keySeparator : this.options.keySeparator;\n const {\n key,\n namespaces\n } = this.extractFromKey(keys[keys.length - 1], opt);\n const namespace = namespaces[namespaces.length - 1];\n let nsSeparator = opt.nsSeparator !== undefined ? opt.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n const lng = opt.lng || this.language;\n const appendNamespaceToCIMode = opt.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n if (lng?.toLowerCase() === 'cimode') {\n if (appendNamespaceToCIMode) {\n if (returnDetails) {\n return {\n res: `${namespace}${nsSeparator}${key}`,\n usedKey: key,\n exactUsedKey: key,\n usedLng: lng,\n usedNS: namespace,\n usedParams: this.getUsedParamsDetails(opt)\n };\n }\n return `${namespace}${nsSeparator}${key}`;\n }\n if (returnDetails) {\n return {\n res: key,\n usedKey: key,\n exactUsedKey: key,\n usedLng: lng,\n usedNS: namespace,\n usedParams: this.getUsedParamsDetails(opt)\n };\n }\n return key;\n }\n const resolved = this.resolve(keys, opt);\n let res = resolved?.res;\n const resUsedKey = resolved?.usedKey || key;\n const resExactUsedKey = resolved?.exactUsedKey || key;\n const noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n const joinArrays = opt.joinArrays !== undefined ? opt.joinArrays : this.options.joinArrays;\n const handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n const needsPluralHandling = opt.count !== undefined && !isString(opt.count);\n const hasDefaultValue = Translator.hasDefaultValue(opt);\n const defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, opt.count, opt) : '';\n const defaultValueSuffixOrdinalFallback = opt.ordinal && needsPluralHandling ? this.pluralResolver.getSuffix(lng, opt.count, {\n ordinal: false\n }) : '';\n const needsZeroSuffixLookup = needsPluralHandling && !opt.ordinal && opt.count === 0;\n const defaultValue = needsZeroSuffixLookup && opt[`defaultValue${this.options.pluralSeparator}zero`] || opt[`defaultValue${defaultValueSuffix}`] || opt[`defaultValue${defaultValueSuffixOrdinalFallback}`] || opt.defaultValue;\n let resForObjHndl = res;\n if (handleAsObjectInI18nFormat && !res && hasDefaultValue) {\n resForObjHndl = defaultValue;\n }\n const handleAsObject = shouldHandleAsObject(resForObjHndl);\n const resType = Object.prototype.toString.apply(resForObjHndl);\n if (handleAsObjectInI18nFormat && resForObjHndl && handleAsObject && noObject.indexOf(resType) < 0 && !(isString(joinArrays) && Array.isArray(resForObjHndl))) {\n if (!opt.returnObjects && !this.options.returnObjects) {\n if (!this.options.returnedObjectHandler) {\n this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n }\n const r = this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, resForObjHndl, {\n ...opt,\n ns: namespaces\n }) : `key '${key} (${this.language})' returned an object instead of string.`;\n if (returnDetails) {\n resolved.res = r;\n resolved.usedParams = this.getUsedParamsDetails(opt);\n return resolved;\n }\n return r;\n }\n if (keySeparator) {\n const resTypeIsArray = Array.isArray(resForObjHndl);\n const copy = resTypeIsArray ? [] : {};\n const newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n for (const m in resForObjHndl) {\n if (Object.prototype.hasOwnProperty.call(resForObjHndl, m)) {\n const deepKey = `${newKeyToUse}${keySeparator}${m}`;\n if (hasDefaultValue && !res) {\n copy[m] = this.translate(deepKey, {\n ...opt,\n defaultValue: shouldHandleAsObject(defaultValue) ? defaultValue[m] : undefined,\n ...{\n joinArrays: false,\n ns: namespaces\n }\n });\n } else {\n copy[m] = this.translate(deepKey, {\n ...opt,\n ...{\n joinArrays: false,\n ns: namespaces\n }\n });\n }\n if (copy[m] === deepKey) copy[m] = resForObjHndl[m];\n }\n }\n res = copy;\n }\n } else if (handleAsObjectInI18nFormat && isString(joinArrays) && Array.isArray(res)) {\n res = res.join(joinArrays);\n if (res) res = this.extendTranslation(res, keys, opt, lastKey);\n } else {\n let usedDefault = false;\n let usedKey = false;\n if (!this.isValidLookup(res) && hasDefaultValue) {\n usedDefault = true;\n res = defaultValue;\n }\n if (!this.isValidLookup(res)) {\n usedKey = true;\n res = key;\n }\n const missingKeyNoValueFallbackToKey = opt.missingKeyNoValueFallbackToKey || this.options.missingKeyNoValueFallbackToKey;\n const resForMissing = missingKeyNoValueFallbackToKey && usedKey ? undefined : res;\n const updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n if (usedKey || usedDefault || updateMissing) {\n this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, key, updateMissing ? defaultValue : res);\n if (keySeparator) {\n const fk = this.resolve(key, {\n ...opt,\n keySeparator: false\n });\n if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n }\n let lngs = [];\n const fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, opt.lng || this.language);\n if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n for (let i = 0; i < fallbackLngs.length; i++) {\n lngs.push(fallbackLngs[i]);\n }\n } else if (this.options.saveMissingTo === 'all') {\n lngs = this.languageUtils.toResolveHierarchy(opt.lng || this.language);\n } else {\n lngs.push(opt.lng || this.language);\n }\n const send = (l, k, specificDefaultValue) => {\n const defaultForMissing = hasDefaultValue && specificDefaultValue !== res ? specificDefaultValue : resForMissing;\n if (this.options.missingKeyHandler) {\n this.options.missingKeyHandler(l, namespace, k, defaultForMissing, updateMissing, opt);\n } else if (this.backendConnector?.saveMissing) {\n this.backendConnector.saveMissing(l, namespace, k, defaultForMissing, updateMissing, opt);\n }\n this.emit('missingKey', l, namespace, k, res);\n };\n if (this.options.saveMissing) {\n if (this.options.saveMissingPlurals && needsPluralHandling) {\n lngs.forEach(language => {\n const suffixes = this.pluralResolver.getSuffixes(language, opt);\n if (needsZeroSuffixLookup && opt[`defaultValue${this.options.pluralSeparator}zero`] && suffixes.indexOf(`${this.options.pluralSeparator}zero`) < 0) {\n suffixes.push(`${this.options.pluralSeparator}zero`);\n }\n suffixes.forEach(suffix => {\n send([language], key + suffix, opt[`defaultValue${suffix}`] || defaultValue);\n });\n });\n } else {\n send(lngs, key, defaultValue);\n }\n }\n }\n res = this.extendTranslation(res, keys, opt, resolved, lastKey);\n if (usedKey && res === key && this.options.appendNamespaceToMissingKey) {\n res = `${namespace}${nsSeparator}${key}`;\n }\n if ((usedKey || usedDefault) && this.options.parseMissingKeyHandler) {\n res = this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey ? `${namespace}${nsSeparator}${key}` : key, usedDefault ? res : undefined, opt);\n }\n }\n if (returnDetails) {\n resolved.res = res;\n resolved.usedParams = this.getUsedParamsDetails(opt);\n return resolved;\n }\n return res;\n }\n extendTranslation(res, key, opt, resolved, lastKey) {\n if (this.i18nFormat?.parse) {\n res = this.i18nFormat.parse(res, {\n ...this.options.interpolation.defaultVariables,\n ...opt\n }, opt.lng || this.language || resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n resolved\n });\n } else if (!opt.skipInterpolation) {\n if (opt.interpolation) this.interpolator.init({\n ...opt,\n ...{\n interpolation: {\n ...this.options.interpolation,\n ...opt.interpolation\n }\n }\n });\n const skipOnVariables = isString(res) && (opt?.interpolation?.skipOnVariables !== undefined ? opt.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables);\n let nestBef;\n if (skipOnVariables) {\n const nb = res.match(this.interpolator.nestingRegexp);\n nestBef = nb && nb.length;\n }\n let data = opt.replace && !isString(opt.replace) ? opt.replace : opt;\n if (this.options.interpolation.defaultVariables) data = {\n ...this.options.interpolation.defaultVariables,\n ...data\n };\n res = this.interpolator.interpolate(res, data, opt.lng || this.language || resolved.usedLng, opt);\n if (skipOnVariables) {\n const na = res.match(this.interpolator.nestingRegexp);\n const nestAft = na && na.length;\n if (nestBef < nestAft) opt.nest = false;\n }\n if (!opt.lng && resolved && resolved.res) opt.lng = this.language || resolved.usedLng;\n if (opt.nest !== false) res = this.interpolator.nest(res, (...args) => {\n if (lastKey?.[0] === args[0] && !opt.context) {\n this.logger.warn(`It seems you are nesting recursively key: ${args[0]} in key: ${key[0]}`);\n return null;\n }\n return this.translate(...args, key);\n }, opt);\n if (opt.interpolation) this.interpolator.reset();\n }\n const postProcess = opt.postProcess || this.options.postProcess;\n const postProcessorNames = isString(postProcess) ? [postProcess] : postProcess;\n if (res != null && postProcessorNames?.length && opt.applyPostProcessor !== false) {\n res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? {\n i18nResolved: {\n ...resolved,\n usedParams: this.getUsedParamsDetails(opt)\n },\n ...opt\n } : opt, this);\n }\n return res;\n }\n resolve(keys, opt = {}) {\n let found;\n let usedKey;\n let exactUsedKey;\n let usedLng;\n let usedNS;\n if (isString(keys)) keys = [keys];\n keys.forEach(k => {\n if (this.isValidLookup(found)) return;\n const extracted = this.extractFromKey(k, opt);\n const key = extracted.key;\n usedKey = key;\n let namespaces = extracted.namespaces;\n if (this.options.fallbackNS) namespaces = namespaces.concat(this.options.fallbackNS);\n const needsPluralHandling = opt.count !== undefined && !isString(opt.count);\n const needsZeroSuffixLookup = needsPluralHandling && !opt.ordinal && opt.count === 0;\n const needsContextHandling = opt.context !== undefined && (isString(opt.context) || typeof opt.context === 'number') && opt.context !== '';\n const codes = opt.lngs ? opt.lngs : this.languageUtils.toResolveHierarchy(opt.lng || this.language, opt.fallbackLng);\n namespaces.forEach(ns => {\n if (this.isValidLookup(found)) return;\n usedNS = ns;\n if (!checkedLoadedFor[`${codes[0]}-${ns}`] && this.utils?.hasLoadedNamespace && !this.utils?.hasLoadedNamespace(usedNS)) {\n checkedLoadedFor[`${codes[0]}-${ns}`] = true;\n this.logger.warn(`key \"${usedKey}\" for languages \"${codes.join(', ')}\" won't get resolved as namespace \"${usedNS}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n }\n codes.forEach(code => {\n if (this.isValidLookup(found)) return;\n usedLng = code;\n const finalKeys = [key];\n if (this.i18nFormat?.addLookupKeys) {\n this.i18nFormat.addLookupKeys(finalKeys, key, code, ns, opt);\n } else {\n let pluralSuffix;\n if (needsPluralHandling) pluralSuffix = this.pluralResolver.getSuffix(code, opt.count, opt);\n const zeroSuffix = `${this.options.pluralSeparator}zero`;\n const ordinalPrefix = `${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;\n if (needsPluralHandling) {\n if (opt.ordinal && pluralSuffix.indexOf(ordinalPrefix) === 0) {\n finalKeys.push(key + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n }\n finalKeys.push(key + pluralSuffix);\n if (needsZeroSuffixLookup) {\n finalKeys.push(key + zeroSuffix);\n }\n }\n if (needsContextHandling) {\n const contextKey = `${key}${this.options.contextSeparator || '_'}${opt.context}`;\n finalKeys.push(contextKey);\n if (needsPluralHandling) {\n if (opt.ordinal && pluralSuffix.indexOf(ordinalPrefix) === 0) {\n finalKeys.push(contextKey + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n }\n finalKeys.push(contextKey + pluralSuffix);\n if (needsZeroSuffixLookup) {\n finalKeys.push(contextKey + zeroSuffix);\n }\n }\n }\n }\n let possibleKey;\n while (possibleKey = finalKeys.pop()) {\n if (!this.isValidLookup(found)) {\n exactUsedKey = possibleKey;\n found = this.getResource(code, ns, possibleKey, opt);\n }\n }\n });\n });\n });\n return {\n res: found,\n usedKey,\n exactUsedKey,\n usedLng,\n usedNS\n };\n }\n isValidLookup(res) {\n return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n }\n getResource(code, ns, key, options = {}) {\n if (this.i18nFormat?.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n return this.resourceStore.getResource(code, ns, key, options);\n }\n getUsedParamsDetails(options = {}) {\n const optionsKeys = ['defaultValue', 'ordinal', 'context', 'replace', 'lng', 'lngs', 'fallbackLng', 'ns', 'keySeparator', 'nsSeparator', 'returnObjects', 'returnDetails', 'joinArrays', 'postProcess', 'interpolation'];\n const useOptionsReplaceForData = options.replace && !isString(options.replace);\n let data = useOptionsReplaceForData ? options.replace : options;\n if (useOptionsReplaceForData && typeof options.count !== 'undefined') {\n data.count = options.count;\n }\n if (this.options.interpolation.defaultVariables) {\n data = {\n ...this.options.interpolation.defaultVariables,\n ...data\n };\n }\n if (!useOptionsReplaceForData) {\n data = {\n ...data\n };\n for (const key of optionsKeys) {\n delete data[key];\n }\n }\n return data;\n }\n static hasDefaultValue(options) {\n const prefix = 'defaultValue';\n for (const option in options) {\n if (Object.prototype.hasOwnProperty.call(options, option) && prefix === option.substring(0, prefix.length) && undefined !== options[option]) {\n return true;\n }\n }\n return false;\n }\n}\n\nclass LanguageUtil {\n constructor(options) {\n this.options = options;\n this.supportedLngs = this.options.supportedLngs || false;\n this.logger = baseLogger.create('languageUtils');\n }\n getScriptPartFromCode(code) {\n code = getCleanedCode(code);\n if (!code || code.indexOf('-') < 0) return null;\n const p = code.split('-');\n if (p.length === 2) return null;\n p.pop();\n if (p[p.length - 1].toLowerCase() === 'x') return null;\n return this.formatLanguageCode(p.join('-'));\n }\n getLanguagePartFromCode(code) {\n code = getCleanedCode(code);\n if (!code || code.indexOf('-') < 0) return code;\n const p = code.split('-');\n return this.formatLanguageCode(p[0]);\n }\n formatLanguageCode(code) {\n if (isString(code) && code.indexOf('-') > -1) {\n let formattedCode;\n try {\n formattedCode = Intl.getCanonicalLocales(code)[0];\n } catch (e) {}\n if (formattedCode && this.options.lowerCaseLng) {\n formattedCode = formattedCode.toLowerCase();\n }\n if (formattedCode) return formattedCode;\n if (this.options.lowerCaseLng) {\n return code.toLowerCase();\n }\n return code;\n }\n return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n }\n isSupportedCode(code) {\n if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n code = this.getLanguagePartFromCode(code);\n }\n return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;\n }\n getBestMatchFromCodes(codes) {\n if (!codes) return null;\n let found;\n codes.forEach(code => {\n if (found) return;\n const cleanedLng = this.formatLanguageCode(code);\n if (!this.options.supportedLngs || this.isSupportedCode(cleanedLng)) found = cleanedLng;\n });\n if (!found && this.options.supportedLngs) {\n codes.forEach(code => {\n if (found) return;\n const lngScOnly = this.getScriptPartFromCode(code);\n if (this.isSupportedCode(lngScOnly)) return found = lngScOnly;\n const lngOnly = this.getLanguagePartFromCode(code);\n if (this.isSupportedCode(lngOnly)) return found = lngOnly;\n found = this.options.supportedLngs.find(supportedLng => {\n if (supportedLng === lngOnly) return supportedLng;\n if (supportedLng.indexOf('-') < 0 && lngOnly.indexOf('-') < 0) return;\n if (supportedLng.indexOf('-') > 0 && lngOnly.indexOf('-') < 0 && supportedLng.substring(0, supportedLng.indexOf('-')) === lngOnly) return supportedLng;\n if (supportedLng.indexOf(lngOnly) === 0 && lngOnly.length > 1) return supportedLng;\n });\n });\n }\n if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n return found;\n }\n getFallbackCodes(fallbacks, code) {\n if (!fallbacks) return [];\n if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n if (isString(fallbacks)) fallbacks = [fallbacks];\n if (Array.isArray(fallbacks)) return fallbacks;\n if (!code) return fallbacks.default || [];\n let found = fallbacks[code];\n if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n if (!found) found = fallbacks[this.formatLanguageCode(code)];\n if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n if (!found) found = fallbacks.default;\n return found || [];\n }\n toResolveHierarchy(code, fallbackCode) {\n const fallbackCodes = this.getFallbackCodes((fallbackCode === false ? [] : fallbackCode) || this.options.fallbackLng || [], code);\n const codes = [];\n const addCode = c => {\n if (!c) return;\n if (this.isSupportedCode(c)) {\n codes.push(c);\n } else {\n this.logger.warn(`rejecting language code not found in supportedLngs: ${c}`);\n }\n };\n if (isString(code) && (code.indexOf('-') > -1 || code.indexOf('_') > -1)) {\n if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n } else if (isString(code)) {\n addCode(this.formatLanguageCode(code));\n }\n fallbackCodes.forEach(fc => {\n if (codes.indexOf(fc) < 0) addCode(this.formatLanguageCode(fc));\n });\n return codes;\n }\n}\n\nconst suffixesOrder = {\n zero: 0,\n one: 1,\n two: 2,\n few: 3,\n many: 4,\n other: 5\n};\nconst dummyRule = {\n select: count => count === 1 ? 'one' : 'other',\n resolvedOptions: () => ({\n pluralCategories: ['one', 'other']\n })\n};\nclass PluralResolver {\n constructor(languageUtils, options = {}) {\n this.languageUtils = languageUtils;\n this.options = options;\n this.logger = baseLogger.create('pluralResolver');\n this.pluralRulesCache = {};\n }\n addRule(lng, obj) {\n this.rules[lng] = obj;\n }\n clearCache() {\n this.pluralRulesCache = {};\n }\n getRule(code, options = {}) {\n const cleanedCode = getCleanedCode(code === 'dev' ? 'en' : code);\n const type = options.ordinal ? 'ordinal' : 'cardinal';\n const cacheKey = JSON.stringify({\n cleanedCode,\n type\n });\n if (cacheKey in this.pluralRulesCache) {\n return this.pluralRulesCache[cacheKey];\n }\n let rule;\n try {\n rule = new Intl.PluralRules(cleanedCode, {\n type\n });\n } catch (err) {\n if (!Intl) {\n this.logger.error('No Intl support, please use an Intl polyfill!');\n return dummyRule;\n }\n if (!code.match(/-|_/)) return dummyRule;\n const lngPart = this.languageUtils.getLanguagePartFromCode(code);\n rule = this.getRule(lngPart, options);\n }\n this.pluralRulesCache[cacheKey] = rule;\n return rule;\n }\n needsPlural(code, options = {}) {\n let rule = this.getRule(code, options);\n if (!rule) rule = this.getRule('dev', options);\n return rule?.resolvedOptions().pluralCategories.length > 1;\n }\n getPluralFormsOfKey(code, key, options = {}) {\n return this.getSuffixes(code, options).map(suffix => `${key}${suffix}`);\n }\n getSuffixes(code, options = {}) {\n let rule = this.getRule(code, options);\n if (!rule) rule = this.getRule('dev', options);\n if (!rule) return [];\n return rule.resolvedOptions().pluralCategories.sort((pluralCategory1, pluralCategory2) => suffixesOrder[pluralCategory1] - suffixesOrder[pluralCategory2]).map(pluralCategory => `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${pluralCategory}`);\n }\n getSuffix(code, count, options = {}) {\n const rule = this.getRule(code, options);\n if (rule) {\n return `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${rule.select(count)}`;\n }\n this.logger.warn(`no plural rule found for: ${code}`);\n return this.getSuffix('dev', count, options);\n }\n}\n\nconst deepFindWithDefaults = (data, defaultData, key, keySeparator = '.', ignoreJSONStructure = true) => {\n let path = getPathWithDefaults(data, defaultData, key);\n if (!path && ignoreJSONStructure && isString(key)) {\n path = deepFind(data, key, keySeparator);\n if (path === undefined) path = deepFind(defaultData, key, keySeparator);\n }\n return path;\n};\nconst regexSafe = val => val.replace(/\\$/g, '$$$$');\nclass Interpolator {\n constructor(options = {}) {\n this.logger = baseLogger.create('interpolator');\n this.options = options;\n this.format = options?.interpolation?.format || (value => value);\n this.init(options);\n }\n init(options = {}) {\n if (!options.interpolation) options.interpolation = {\n escapeValue: true\n };\n const {\n escape: escape$1,\n escapeValue,\n useRawValueToEscape,\n prefix,\n prefixEscaped,\n suffix,\n suffixEscaped,\n formatSeparator,\n unescapeSuffix,\n unescapePrefix,\n nestingPrefix,\n nestingPrefixEscaped,\n nestingSuffix,\n nestingSuffixEscaped,\n nestingOptionsSeparator,\n maxReplaces,\n alwaysFormat\n } = options.interpolation;\n this.escape = escape$1 !== undefined ? escape$1 : escape;\n this.escapeValue = escapeValue !== undefined ? escapeValue : true;\n this.useRawValueToEscape = useRawValueToEscape !== undefined ? useRawValueToEscape : false;\n this.prefix = prefix ? regexEscape(prefix) : prefixEscaped || '{{';\n this.suffix = suffix ? regexEscape(suffix) : suffixEscaped || '}}';\n this.formatSeparator = formatSeparator || ',';\n this.unescapePrefix = unescapeSuffix ? '' : unescapePrefix || '-';\n this.unescapeSuffix = this.unescapePrefix ? '' : unescapeSuffix || '';\n this.nestingPrefix = nestingPrefix ? regexEscape(nestingPrefix) : nestingPrefixEscaped || regexEscape('$t(');\n this.nestingSuffix = nestingSuffix ? regexEscape(nestingSuffix) : nestingSuffixEscaped || regexEscape(')');\n this.nestingOptionsSeparator = nestingOptionsSeparator || ',';\n this.maxReplaces = maxReplaces || 1000;\n this.alwaysFormat = alwaysFormat !== undefined ? alwaysFormat : false;\n this.resetRegExp();\n }\n reset() {\n if (this.options) this.init(this.options);\n }\n resetRegExp() {\n const getOrResetRegExp = (existingRegExp, pattern) => {\n if (existingRegExp?.source === pattern) {\n existingRegExp.lastIndex = 0;\n return existingRegExp;\n }\n return new RegExp(pattern, 'g');\n };\n this.regexp = getOrResetRegExp(this.regexp, `${this.prefix}(.+?)${this.suffix}`);\n this.regexpUnescape = getOrResetRegExp(this.regexpUnescape, `${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`);\n this.nestingRegexp = getOrResetRegExp(this.nestingRegexp, `${this.nestingPrefix}((?:[^()\"']+|\"[^\"]*\"|'[^']*'|\\\\((?:[^()]|\"[^\"]*\"|'[^']*')*\\\\))*?)${this.nestingSuffix}`);\n }\n interpolate(str, data, lng, options) {\n let match;\n let value;\n let replaces;\n const defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n const handleFormat = key => {\n if (key.indexOf(this.formatSeparator) < 0) {\n const path = deepFindWithDefaults(data, defaultData, key, this.options.keySeparator, this.options.ignoreJSONStructure);\n return this.alwaysFormat ? this.format(path, undefined, lng, {\n ...options,\n ...data,\n interpolationkey: key\n }) : path;\n }\n const p = key.split(this.formatSeparator);\n const k = p.shift().trim();\n const f = p.join(this.formatSeparator).trim();\n return this.format(deepFindWithDefaults(data, defaultData, k, this.options.keySeparator, this.options.ignoreJSONStructure), f, lng, {\n ...options,\n ...data,\n interpolationkey: k\n });\n };\n this.resetRegExp();\n const missingInterpolationHandler = options?.missingInterpolationHandler || this.options.missingInterpolationHandler;\n const skipOnVariables = options?.interpolation?.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables;\n const todos = [{\n regex: this.regexpUnescape,\n safeValue: val => regexSafe(val)\n }, {\n regex: this.regexp,\n safeValue: val => this.escapeValue ? regexSafe(this.escape(val)) : regexSafe(val)\n }];\n todos.forEach(todo => {\n replaces = 0;\n while (match = todo.regex.exec(str)) {\n const matchedVar = match[1].trim();\n value = handleFormat(matchedVar);\n if (value === undefined) {\n if (typeof missingInterpolationHandler === 'function') {\n const temp = missingInterpolationHandler(str, match, options);\n value = isString(temp) ? temp : '';\n } else if (options && Object.prototype.hasOwnProperty.call(options, matchedVar)) {\n value = '';\n } else if (skipOnVariables) {\n value = match[0];\n continue;\n } else {\n this.logger.warn(`missed to pass in variable ${matchedVar} for interpolating ${str}`);\n value = '';\n }\n } else if (!isString(value) && !this.useRawValueToEscape) {\n value = makeString(value);\n }\n const safeValue = todo.safeValue(value);\n str = str.replace(match[0], safeValue);\n if (skipOnVariables) {\n todo.regex.lastIndex += value.length;\n todo.regex.lastIndex -= match[0].length;\n } else {\n todo.regex.lastIndex = 0;\n }\n replaces++;\n if (replaces >= this.maxReplaces) {\n break;\n }\n }\n });\n return str;\n }\n nest(str, fc, options = {}) {\n let match;\n let value;\n let clonedOptions;\n const handleHasOptions = (key, inheritedOptions) => {\n const sep = this.nestingOptionsSeparator;\n if (key.indexOf(sep) < 0) return key;\n const c = key.split(new RegExp(`${sep}[ ]*{`));\n let optionsString = `{${c[1]}`;\n key = c[0];\n optionsString = this.interpolate(optionsString, clonedOptions);\n const matchedSingleQuotes = optionsString.match(/'/g);\n const matchedDoubleQuotes = optionsString.match(/\"/g);\n if ((matchedSingleQuotes?.length ?? 0) % 2 === 0 && !matchedDoubleQuotes || matchedDoubleQuotes.length % 2 !== 0) {\n optionsString = optionsString.replace(/'/g, '\"');\n }\n try {\n clonedOptions = JSON.parse(optionsString);\n if (inheritedOptions) clonedOptions = {\n ...inheritedOptions,\n ...clonedOptions\n };\n } catch (e) {\n this.logger.warn(`failed parsing options string in nesting for key ${key}`, e);\n return `${key}${sep}${optionsString}`;\n }\n if (clonedOptions.defaultValue && clonedOptions.defaultValue.indexOf(this.prefix) > -1) delete clonedOptions.defaultValue;\n return key;\n };\n while (match = this.nestingRegexp.exec(str)) {\n let formatters = [];\n clonedOptions = {\n ...options\n };\n clonedOptions = clonedOptions.replace && !isString(clonedOptions.replace) ? clonedOptions.replace : clonedOptions;\n clonedOptions.applyPostProcessor = false;\n delete clonedOptions.defaultValue;\n const keyEndIndex = /{.*}/.test(match[1]) ? match[1].lastIndexOf('}') + 1 : match[1].indexOf(this.formatSeparator);\n if (keyEndIndex !== -1) {\n formatters = match[1].slice(keyEndIndex).split(this.formatSeparator).map(elem => elem.trim()).filter(Boolean);\n match[1] = match[1].slice(0, keyEndIndex);\n }\n value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n if (value && match[0] === str && !isString(value)) return value;\n if (!isString(value)) value = makeString(value);\n if (!value) {\n this.logger.warn(`missed to resolve ${match[1]} for nesting ${str}`);\n value = '';\n }\n if (formatters.length) {\n value = formatters.reduce((v, f) => this.format(v, f, options.lng, {\n ...options,\n interpolationkey: match[1].trim()\n }), value.trim());\n }\n str = str.replace(match[0], value);\n this.regexp.lastIndex = 0;\n }\n return str;\n }\n}\n\nconst parseFormatStr = formatStr => {\n let formatName = formatStr.toLowerCase().trim();\n const formatOptions = {};\n if (formatStr.indexOf('(') > -1) {\n const p = formatStr.split('(');\n formatName = p[0].toLowerCase().trim();\n const optStr = p[1].substring(0, p[1].length - 1);\n if (formatName === 'currency' && optStr.indexOf(':') < 0) {\n if (!formatOptions.currency) formatOptions.currency = optStr.trim();\n } else if (formatName === 'relativetime' && optStr.indexOf(':') < 0) {\n if (!formatOptions.range) formatOptions.range = optStr.trim();\n } else {\n const opts = optStr.split(';');\n opts.forEach(opt => {\n if (opt) {\n const [key, ...rest] = opt.split(':');\n const val = rest.join(':').trim().replace(/^'+|'+$/g, '');\n const trimmedKey = key.trim();\n if (!formatOptions[trimmedKey]) formatOptions[trimmedKey] = val;\n if (val === 'false') formatOptions[trimmedKey] = false;\n if (val === 'true') formatOptions[trimmedKey] = true;\n if (!isNaN(val)) formatOptions[trimmedKey] = parseInt(val, 10);\n }\n });\n }\n }\n return {\n formatName,\n formatOptions\n };\n};\nconst createCachedFormatter = fn => {\n const cache = {};\n return (v, l, o) => {\n let optForCache = o;\n if (o && o.interpolationkey && o.formatParams && o.formatParams[o.interpolationkey] && o[o.interpolationkey]) {\n optForCache = {\n ...optForCache,\n [o.interpolationkey]: undefined\n };\n }\n const key = l + JSON.stringify(optForCache);\n let frm = cache[key];\n if (!frm) {\n frm = fn(getCleanedCode(l), o);\n cache[key] = frm;\n }\n return frm(v);\n };\n};\nconst createNonCachedFormatter = fn => (v, l, o) => fn(getCleanedCode(l), o)(v);\nclass Formatter {\n constructor(options = {}) {\n this.logger = baseLogger.create('formatter');\n this.options = options;\n this.init(options);\n }\n init(services, options = {\n interpolation: {}\n }) {\n this.formatSeparator = options.interpolation.formatSeparator || ',';\n const cf = options.cacheInBuiltFormats ? createCachedFormatter : createNonCachedFormatter;\n this.formats = {\n number: cf((lng, opt) => {\n const formatter = new Intl.NumberFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n }),\n currency: cf((lng, opt) => {\n const formatter = new Intl.NumberFormat(lng, {\n ...opt,\n style: 'currency'\n });\n return val => formatter.format(val);\n }),\n datetime: cf((lng, opt) => {\n const formatter = new Intl.DateTimeFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n }),\n relativetime: cf((lng, opt) => {\n const formatter = new Intl.RelativeTimeFormat(lng, {\n ...opt\n });\n return val => formatter.format(val, opt.range || 'day');\n }),\n list: cf((lng, opt) => {\n const formatter = new Intl.ListFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n })\n };\n }\n add(name, fc) {\n this.formats[name.toLowerCase().trim()] = fc;\n }\n addCached(name, fc) {\n this.formats[name.toLowerCase().trim()] = createCachedFormatter(fc);\n }\n format(value, format, lng, options = {}) {\n const formats = format.split(this.formatSeparator);\n if (formats.length > 1 && formats[0].indexOf('(') > 1 && formats[0].indexOf(')') < 0 && formats.find(f => f.indexOf(')') > -1)) {\n const lastIndex = formats.findIndex(f => f.indexOf(')') > -1);\n formats[0] = [formats[0], ...formats.splice(1, lastIndex)].join(this.formatSeparator);\n }\n const result = formats.reduce((mem, f) => {\n const {\n formatName,\n formatOptions\n } = parseFormatStr(f);\n if (this.formats[formatName]) {\n let formatted = mem;\n try {\n const valOptions = options?.formatParams?.[options.interpolationkey] || {};\n const l = valOptions.locale || valOptions.lng || options.locale || options.lng || lng;\n formatted = this.formats[formatName](mem, l, {\n ...formatOptions,\n ...options,\n ...valOptions\n });\n } catch (error) {\n this.logger.warn(error);\n }\n return formatted;\n } else {\n this.logger.warn(`there was no format function for ${formatName}`);\n }\n return mem;\n }, value);\n return result;\n }\n}\n\nconst removePending = (q, name) => {\n if (q.pending[name] !== undefined) {\n delete q.pending[name];\n q.pendingCount--;\n }\n};\nclass Connector extends EventEmitter {\n constructor(backend, store, services, options = {}) {\n super();\n this.backend = backend;\n this.store = store;\n this.services = services;\n this.languageUtils = services.languageUtils;\n this.options = options;\n this.logger = baseLogger.create('backendConnector');\n this.waitingReads = [];\n this.maxParallelReads = options.maxParallelReads || 10;\n this.readingCalls = 0;\n this.maxRetries = options.maxRetries >= 0 ? options.maxRetries : 5;\n this.retryTimeout = options.retryTimeout >= 1 ? options.retryTimeout : 350;\n this.state = {};\n this.queue = [];\n this.backend?.init?.(services, options.backend, options);\n }\n queueLoad(languages, namespaces, options, callback) {\n const toLoad = {};\n const pending = {};\n const toLoadLanguages = {};\n const toLoadNamespaces = {};\n languages.forEach(lng => {\n let hasAllNamespaces = true;\n namespaces.forEach(ns => {\n const name = `${lng}|${ns}`;\n if (!options.reload && this.store.hasResourceBundle(lng, ns)) {\n this.state[name] = 2;\n } else if (this.state[name] < 0) ; else if (this.state[name] === 1) {\n if (pending[name] === undefined) pending[name] = true;\n } else {\n this.state[name] = 1;\n hasAllNamespaces = false;\n if (pending[name] === undefined) pending[name] = true;\n if (toLoad[name] === undefined) toLoad[name] = true;\n if (toLoadNamespaces[ns] === undefined) toLoadNamespaces[ns] = true;\n }\n });\n if (!hasAllNamespaces) toLoadLanguages[lng] = true;\n });\n if (Object.keys(toLoad).length || Object.keys(pending).length) {\n this.queue.push({\n pending,\n pendingCount: Object.keys(pending).length,\n loaded: {},\n errors: [],\n callback\n });\n }\n return {\n toLoad: Object.keys(toLoad),\n pending: Object.keys(pending),\n toLoadLanguages: Object.keys(toLoadLanguages),\n toLoadNamespaces: Object.keys(toLoadNamespaces)\n };\n }\n loaded(name, err, data) {\n const s = name.split('|');\n const lng = s[0];\n const ns = s[1];\n if (err) this.emit('failedLoading', lng, ns, err);\n if (!err && data) {\n this.store.addResourceBundle(lng, ns, data, undefined, undefined, {\n skipCopy: true\n });\n }\n this.state[name] = err ? -1 : 2;\n if (err && data) this.state[name] = 0;\n const loaded = {};\n this.queue.forEach(q => {\n pushPath(q.loaded, [lng], ns);\n removePending(q, name);\n if (err) q.errors.push(err);\n if (q.pendingCount === 0 && !q.done) {\n Object.keys(q.loaded).forEach(l => {\n if (!loaded[l]) loaded[l] = {};\n const loadedKeys = q.loaded[l];\n if (loadedKeys.length) {\n loadedKeys.forEach(n => {\n if (loaded[l][n] === undefined) loaded[l][n] = true;\n });\n }\n });\n q.done = true;\n if (q.errors.length) {\n q.callback(q.errors);\n } else {\n q.callback();\n }\n }\n });\n this.emit('loaded', loaded);\n this.queue = this.queue.filter(q => !q.done);\n }\n read(lng, ns, fcName, tried = 0, wait = this.retryTimeout, callback) {\n if (!lng.length) return callback(null, {});\n if (this.readingCalls >= this.maxParallelReads) {\n this.waitingReads.push({\n lng,\n ns,\n fcName,\n tried,\n wait,\n callback\n });\n return;\n }\n this.readingCalls++;\n const resolver = (err, data) => {\n this.readingCalls--;\n if (this.waitingReads.length > 0) {\n const next = this.waitingReads.shift();\n this.read(next.lng, next.ns, next.fcName, next.tried, next.wait, next.callback);\n }\n if (err && data && tried < this.maxRetries) {\n setTimeout(() => {\n this.read.call(this, lng, ns, fcName, tried + 1, wait * 2, callback);\n }, wait);\n return;\n }\n callback(err, data);\n };\n const fc = this.backend[fcName].bind(this.backend);\n if (fc.length === 2) {\n try {\n const r = fc(lng, ns);\n if (r && typeof r.then === 'function') {\n r.then(data => resolver(null, data)).catch(resolver);\n } else {\n resolver(null, r);\n }\n } catch (err) {\n resolver(err);\n }\n return;\n }\n return fc(lng, ns, resolver);\n }\n prepareLoading(languages, namespaces, options = {}, callback) {\n if (!this.backend) {\n this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n return callback && callback();\n }\n if (isString(languages)) languages = this.languageUtils.toResolveHierarchy(languages);\n if (isString(namespaces)) namespaces = [namespaces];\n const toLoad = this.queueLoad(languages, namespaces, options, callback);\n if (!toLoad.toLoad.length) {\n if (!toLoad.pending.length) callback();\n return null;\n }\n toLoad.toLoad.forEach(name => {\n this.loadOne(name);\n });\n }\n load(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {}, callback);\n }\n reload(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {\n reload: true\n }, callback);\n }\n loadOne(name, prefix = '') {\n const s = name.split('|');\n const lng = s[0];\n const ns = s[1];\n this.read(lng, ns, 'read', undefined, undefined, (err, data) => {\n if (err) this.logger.warn(`${prefix}loading namespace ${ns} for language ${lng} failed`, err);\n if (!err && data) this.logger.log(`${prefix}loaded namespace ${ns} for language ${lng}`, data);\n this.loaded(name, err, data);\n });\n }\n saveMissing(languages, namespace, key, fallbackValue, isUpdate, options = {}, clb = () => {}) {\n if (this.services?.utils?.hasLoadedNamespace && !this.services?.utils?.hasLoadedNamespace(namespace)) {\n this.logger.warn(`did not save key \"${key}\" as the namespace \"${namespace}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n return;\n }\n if (key === undefined || key === null || key === '') return;\n if (this.backend?.create) {\n const opts = {\n ...options,\n isUpdate\n };\n const fc = this.backend.create.bind(this.backend);\n if (fc.length < 6) {\n try {\n let r;\n if (fc.length === 5) {\n r = fc(languages, namespace, key, fallbackValue, opts);\n } else {\n r = fc(languages, namespace, key, fallbackValue);\n }\n if (r && typeof r.then === 'function') {\n r.then(data => clb(null, data)).catch(clb);\n } else {\n clb(null, r);\n }\n } catch (err) {\n clb(err);\n }\n } else {\n fc(languages, namespace, key, fallbackValue, clb, opts);\n }\n }\n if (!languages || !languages[0]) return;\n this.store.addResource(languages[0], namespace, key, fallbackValue);\n }\n}\n\nconst get = () => ({\n debug: false,\n initAsync: true,\n ns: ['translation'],\n defaultNS: ['translation'],\n fallbackLng: ['dev'],\n fallbackNS: false,\n supportedLngs: false,\n nonExplicitSupportedLngs: false,\n load: 'all',\n preload: false,\n simplifyPluralSuffix: true,\n keySeparator: '.',\n nsSeparator: ':',\n pluralSeparator: '_',\n contextSeparator: '_',\n partialBundledLanguages: false,\n saveMissing: false,\n updateMissing: false,\n saveMissingTo: 'fallback',\n saveMissingPlurals: true,\n missingKeyHandler: false,\n missingInterpolationHandler: false,\n postProcess: false,\n postProcessPassResolved: false,\n returnNull: false,\n returnEmptyString: true,\n returnObjects: false,\n joinArrays: false,\n returnedObjectHandler: false,\n parseMissingKeyHandler: false,\n appendNamespaceToMissingKey: false,\n appendNamespaceToCIMode: false,\n overloadTranslationOptionHandler: args => {\n let ret = {};\n if (typeof args[1] === 'object') ret = args[1];\n if (isString(args[1])) ret.defaultValue = args[1];\n if (isString(args[2])) ret.tDescription = args[2];\n if (typeof args[2] === 'object' || typeof args[3] === 'object') {\n const options = args[3] || args[2];\n Object.keys(options).forEach(key => {\n ret[key] = options[key];\n });\n }\n return ret;\n },\n interpolation: {\n escapeValue: true,\n format: value => value,\n prefix: '{{',\n suffix: '}}',\n formatSeparator: ',',\n unescapePrefix: '-',\n nestingPrefix: '$t(',\n nestingSuffix: ')',\n nestingOptionsSeparator: ',',\n maxReplaces: 1000,\n skipOnVariables: true\n },\n cacheInBuiltFormats: true\n});\nconst transformOptions = options => {\n if (isString(options.ns)) options.ns = [options.ns];\n if (isString(options.fallbackLng)) options.fallbackLng = [options.fallbackLng];\n if (isString(options.fallbackNS)) options.fallbackNS = [options.fallbackNS];\n if (options.supportedLngs?.indexOf?.('cimode') < 0) {\n options.supportedLngs = options.supportedLngs.concat(['cimode']);\n }\n if (typeof options.initImmediate === 'boolean') options.initAsync = options.initImmediate;\n return options;\n};\n\nconst noop = () => {};\nconst bindMemberFunctions = inst => {\n const mems = Object.getOwnPropertyNames(Object.getPrototypeOf(inst));\n mems.forEach(mem => {\n if (typeof inst[mem] === 'function') {\n inst[mem] = inst[mem].bind(inst);\n }\n });\n};\nclass I18n extends EventEmitter {\n constructor(options = {}, callback) {\n super();\n this.options = transformOptions(options);\n this.services = {};\n this.logger = baseLogger;\n this.modules = {\n external: []\n };\n bindMemberFunctions(this);\n if (callback && !this.isInitialized && !options.isClone) {\n if (!this.options.initAsync) {\n this.init(options, callback);\n return this;\n }\n setTimeout(() => {\n this.init(options, callback);\n }, 0);\n }\n }\n init(options = {}, callback) {\n this.isInitializing = true;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n if (options.defaultNS == null && options.ns) {\n if (isString(options.ns)) {\n options.defaultNS = options.ns;\n } else if (options.ns.indexOf('translation') < 0) {\n options.defaultNS = options.ns[0];\n }\n }\n const defOpts = get();\n this.options = {\n ...defOpts,\n ...this.options,\n ...transformOptions(options)\n };\n this.options.interpolation = {\n ...defOpts.interpolation,\n ...this.options.interpolation\n };\n if (options.keySeparator !== undefined) {\n this.options.userDefinedKeySeparator = options.keySeparator;\n }\n if (options.nsSeparator !== undefined) {\n this.options.userDefinedNsSeparator = options.nsSeparator;\n }\n const createClassOnDemand = ClassOrObject => {\n if (!ClassOrObject) return null;\n if (typeof ClassOrObject === 'function') return new ClassOrObject();\n return ClassOrObject;\n };\n if (!this.options.isClone) {\n if (this.modules.logger) {\n baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n } else {\n baseLogger.init(null, this.options);\n }\n let formatter;\n if (this.modules.formatter) {\n formatter = this.modules.formatter;\n } else {\n formatter = Formatter;\n }\n const lu = new LanguageUtil(this.options);\n this.store = new ResourceStore(this.options.resources, this.options);\n const s = this.services;\n s.logger = baseLogger;\n s.resourceStore = this.store;\n s.languageUtils = lu;\n s.pluralResolver = new PluralResolver(lu, {\n prepend: this.options.pluralSeparator,\n simplifyPluralSuffix: this.options.simplifyPluralSuffix\n });\n const usingLegacyFormatFunction = this.options.interpolation.format && this.options.interpolation.format !== defOpts.interpolation.format;\n if (usingLegacyFormatFunction) {\n this.logger.deprecate(`init: you are still using the legacy format function, please use the new approach: https://www.i18next.com/translation-function/formatting`);\n }\n if (formatter && (!this.options.interpolation.format || this.options.interpolation.format === defOpts.interpolation.format)) {\n s.formatter = createClassOnDemand(formatter);\n if (s.formatter.init) s.formatter.init(s, this.options);\n this.options.interpolation.format = s.formatter.format.bind(s.formatter);\n }\n s.interpolator = new Interpolator(this.options);\n s.utils = {\n hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n };\n s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n s.backendConnector.on('*', (event, ...args) => {\n this.emit(event, ...args);\n });\n if (this.modules.languageDetector) {\n s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n if (s.languageDetector.init) s.languageDetector.init(s, this.options.detection, this.options);\n }\n if (this.modules.i18nFormat) {\n s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n if (s.i18nFormat.init) s.i18nFormat.init(this);\n }\n this.translator = new Translator(this.services, this.options);\n this.translator.on('*', (event, ...args) => {\n this.emit(event, ...args);\n });\n this.modules.external.forEach(m => {\n if (m.init) m.init(this);\n });\n }\n this.format = this.options.interpolation.format;\n if (!callback) callback = noop;\n if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n const codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n }\n if (!this.services.languageDetector && !this.options.lng) {\n this.logger.warn('init: no languageDetector is used and no lng is defined');\n }\n const storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n storeApi.forEach(fcName => {\n this[fcName] = (...args) => this.store[fcName](...args);\n });\n const storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n storeApiChained.forEach(fcName => {\n this[fcName] = (...args) => {\n this.store[fcName](...args);\n return this;\n };\n });\n const deferred = defer();\n const load = () => {\n const finish = (err, t) => {\n this.isInitializing = false;\n if (this.isInitialized && !this.initializedStoreOnce) this.logger.warn('init: i18next is already initialized. You should call init just once!');\n this.isInitialized = true;\n if (!this.options.isClone) this.logger.log('initialized', this.options);\n this.emit('initialized', this.options);\n deferred.resolve(t);\n callback(err, t);\n };\n if (this.languages && !this.isInitialized) return finish(null, this.t.bind(this));\n this.changeLanguage(this.options.lng, finish);\n };\n if (this.options.resources || !this.options.initAsync) {\n load();\n } else {\n setTimeout(load, 0);\n }\n return deferred;\n }\n loadResources(language, callback = noop) {\n let usedCallback = callback;\n const usedLng = isString(language) ? language : this.language;\n if (typeof language === 'function') usedCallback = language;\n if (!this.options.resources || this.options.partialBundledLanguages) {\n if (usedLng?.toLowerCase() === 'cimode' && (!this.options.preload || this.options.preload.length === 0)) return usedCallback();\n const toLoad = [];\n const append = lng => {\n if (!lng) return;\n if (lng === 'cimode') return;\n const lngs = this.services.languageUtils.toResolveHierarchy(lng);\n lngs.forEach(l => {\n if (l === 'cimode') return;\n if (toLoad.indexOf(l) < 0) toLoad.push(l);\n });\n };\n if (!usedLng) {\n const fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n fallbacks.forEach(l => append(l));\n } else {\n append(usedLng);\n }\n this.options.preload?.forEach?.(l => append(l));\n this.services.backendConnector.load(toLoad, this.options.ns, e => {\n if (!e && !this.resolvedLanguage && this.language) this.setResolvedLanguage(this.language);\n usedCallback(e);\n });\n } else {\n usedCallback(null);\n }\n }\n reloadResources(lngs, ns, callback) {\n const deferred = defer();\n if (typeof lngs === 'function') {\n callback = lngs;\n lngs = undefined;\n }\n if (typeof ns === 'function') {\n callback = ns;\n ns = undefined;\n }\n if (!lngs) lngs = this.languages;\n if (!ns) ns = this.options.ns;\n if (!callback) callback = noop;\n this.services.backendConnector.reload(lngs, ns, err => {\n deferred.resolve();\n callback(err);\n });\n return deferred;\n }\n use(module) {\n if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n if (module.type === 'backend') {\n this.modules.backend = module;\n }\n if (module.type === 'logger' || module.log && module.warn && module.error) {\n this.modules.logger = module;\n }\n if (module.type === 'languageDetector') {\n this.modules.languageDetector = module;\n }\n if (module.type === 'i18nFormat') {\n this.modules.i18nFormat = module;\n }\n if (module.type === 'postProcessor') {\n postProcessor.addPostProcessor(module);\n }\n if (module.type === 'formatter') {\n this.modules.formatter = module;\n }\n if (module.type === '3rdParty') {\n this.modules.external.push(module);\n }\n return this;\n }\n setResolvedLanguage(l) {\n if (!l || !this.languages) return;\n if (['cimode', 'dev'].indexOf(l) > -1) return;\n for (let li = 0; li < this.languages.length; li++) {\n const lngInLngs = this.languages[li];\n if (['cimode', 'dev'].indexOf(lngInLngs) > -1) continue;\n if (this.store.hasLanguageSomeTranslations(lngInLngs)) {\n this.resolvedLanguage = lngInLngs;\n break;\n }\n }\n if (!this.resolvedLanguage && this.languages.indexOf(l) < 0 && this.store.hasLanguageSomeTranslations(l)) {\n this.resolvedLanguage = l;\n this.languages.unshift(l);\n }\n }\n changeLanguage(lng, callback) {\n this.isLanguageChangingTo = lng;\n const deferred = defer();\n this.emit('languageChanging', lng);\n const setLngProps = l => {\n this.language = l;\n this.languages = this.services.languageUtils.toResolveHierarchy(l);\n this.resolvedLanguage = undefined;\n this.setResolvedLanguage(l);\n };\n const done = (err, l) => {\n if (l) {\n if (this.isLanguageChangingTo === lng) {\n setLngProps(l);\n this.translator.changeLanguage(l);\n this.isLanguageChangingTo = undefined;\n this.emit('languageChanged', l);\n this.logger.log('languageChanged', l);\n }\n } else {\n this.isLanguageChangingTo = undefined;\n }\n deferred.resolve((...args) => this.t(...args));\n if (callback) callback(err, (...args) => this.t(...args));\n };\n const setLng = lngs => {\n if (!lng && !lngs && this.services.languageDetector) lngs = [];\n const fl = isString(lngs) ? lngs : lngs && lngs[0];\n const l = this.store.hasLanguageSomeTranslations(fl) ? fl : this.services.languageUtils.getBestMatchFromCodes(isString(lngs) ? [lngs] : lngs);\n if (l) {\n if (!this.language) {\n setLngProps(l);\n }\n if (!this.translator.language) this.translator.changeLanguage(l);\n this.services.languageDetector?.cacheUserLanguage?.(l);\n }\n this.loadResources(l, err => {\n done(err, l);\n });\n };\n if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n setLng(this.services.languageDetector.detect());\n } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n if (this.services.languageDetector.detect.length === 0) {\n this.services.languageDetector.detect().then(setLng);\n } else {\n this.services.languageDetector.detect(setLng);\n }\n } else {\n setLng(lng);\n }\n return deferred;\n }\n getFixedT(lng, ns, keyPrefix) {\n const fixedT = (key, opts, ...rest) => {\n let o;\n if (typeof opts !== 'object') {\n o = this.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n } else {\n o = {\n ...opts\n };\n }\n o.lng = o.lng || fixedT.lng;\n o.lngs = o.lngs || fixedT.lngs;\n o.ns = o.ns || fixedT.ns;\n if (o.keyPrefix !== '') o.keyPrefix = o.keyPrefix || keyPrefix || fixedT.keyPrefix;\n const keySeparator = this.options.keySeparator || '.';\n let resultKey;\n if (o.keyPrefix && Array.isArray(key)) {\n resultKey = key.map(k => {\n if (typeof k === 'function') k = keysFromSelector(k, {\n ...this.options,\n ...opts\n });\n return `${o.keyPrefix}${keySeparator}${k}`;\n });\n } else {\n if (typeof key === 'function') key = keysFromSelector(key, {\n ...this.options,\n ...opts\n });\n resultKey = o.keyPrefix ? `${o.keyPrefix}${keySeparator}${key}` : key;\n }\n return this.t(resultKey, o);\n };\n if (isString(lng)) {\n fixedT.lng = lng;\n } else {\n fixedT.lngs = lng;\n }\n fixedT.ns = ns;\n fixedT.keyPrefix = keyPrefix;\n return fixedT;\n }\n t(...args) {\n return this.translator?.translate(...args);\n }\n exists(...args) {\n return this.translator?.exists(...args);\n }\n setDefaultNamespace(ns) {\n this.options.defaultNS = ns;\n }\n hasLoadedNamespace(ns, options = {}) {\n if (!this.isInitialized) {\n this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n return false;\n }\n if (!this.languages || !this.languages.length) {\n this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n return false;\n }\n const lng = options.lng || this.resolvedLanguage || this.languages[0];\n const fallbackLng = this.options ? this.options.fallbackLng : false;\n const lastLng = this.languages[this.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n const loadNotPending = (l, n) => {\n const loadState = this.services.backendConnector.state[`${l}|${n}`];\n return loadState === -1 || loadState === 0 || loadState === 2;\n };\n if (options.precheck) {\n const preResult = options.precheck(this, loadNotPending);\n if (preResult !== undefined) return preResult;\n }\n if (this.hasResourceBundle(lng, ns)) return true;\n if (!this.services.backendConnector.backend || this.options.resources && !this.options.partialBundledLanguages) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n }\n loadNamespaces(ns, callback) {\n const deferred = defer();\n if (!this.options.ns) {\n if (callback) callback();\n return Promise.resolve();\n }\n if (isString(ns)) ns = [ns];\n ns.forEach(n => {\n if (this.options.ns.indexOf(n) < 0) this.options.ns.push(n);\n });\n this.loadResources(err => {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n loadLanguages(lngs, callback) {\n const deferred = defer();\n if (isString(lngs)) lngs = [lngs];\n const preloaded = this.options.preload || [];\n const newLngs = lngs.filter(lng => preloaded.indexOf(lng) < 0 && this.services.languageUtils.isSupportedCode(lng));\n if (!newLngs.length) {\n if (callback) callback();\n return Promise.resolve();\n }\n this.options.preload = preloaded.concat(newLngs);\n this.loadResources(err => {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n dir(lng) {\n if (!lng) lng = this.resolvedLanguage || (this.languages?.length > 0 ? this.languages[0] : this.language);\n if (!lng) return 'rtl';\n try {\n const l = new Intl.Locale(lng);\n if (l && l.getTextInfo) {\n const ti = l.getTextInfo();\n if (ti && ti.direction) return ti.direction;\n }\n } catch (e) {}\n const rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam', 'ckb'];\n const languageUtils = this.services?.languageUtils || new LanguageUtil(get());\n if (lng.toLowerCase().indexOf('-latn') > 1) return 'ltr';\n return rtlLngs.indexOf(languageUtils.getLanguagePartFromCode(lng)) > -1 || lng.toLowerCase().indexOf('-arab') > 1 ? 'rtl' : 'ltr';\n }\n static createInstance(options = {}, callback) {\n const instance = new I18n(options, callback);\n instance.createInstance = I18n.createInstance;\n return instance;\n }\n cloneInstance(options = {}, callback = noop) {\n const forkResourceStore = options.forkResourceStore;\n if (forkResourceStore) delete options.forkResourceStore;\n const mergedOptions = {\n ...this.options,\n ...options,\n ...{\n isClone: true\n }\n };\n const clone = new I18n(mergedOptions);\n if (options.debug !== undefined || options.prefix !== undefined) {\n clone.logger = clone.logger.clone(options);\n }\n const membersToCopy = ['store', 'services', 'language'];\n membersToCopy.forEach(m => {\n clone[m] = this[m];\n });\n clone.services = {\n ...this.services\n };\n clone.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n if (forkResourceStore) {\n const clonedData = Object.keys(this.store.data).reduce((prev, l) => {\n prev[l] = {\n ...this.store.data[l]\n };\n prev[l] = Object.keys(prev[l]).reduce((acc, n) => {\n acc[n] = {\n ...prev[l][n]\n };\n return acc;\n }, prev[l]);\n return prev;\n }, {});\n clone.store = new ResourceStore(clonedData, mergedOptions);\n clone.services.resourceStore = clone.store;\n }\n clone.translator = new Translator(clone.services, mergedOptions);\n clone.translator.on('*', (event, ...args) => {\n clone.emit(event, ...args);\n });\n clone.init(mergedOptions, callback);\n clone.translator.options = mergedOptions;\n clone.translator.backendConnector.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n return clone;\n }\n toJSON() {\n return {\n options: this.options,\n store: this.store,\n language: this.language,\n languages: this.languages,\n resolvedLanguage: this.resolvedLanguage\n };\n }\n}\nconst instance = I18n.createInstance();\n\nconst createInstance = instance.createInstance;\nconst dir = instance.dir;\nconst init = instance.init;\nconst loadResources = instance.loadResources;\nconst reloadResources = instance.reloadResources;\nconst use = instance.use;\nconst changeLanguage = instance.changeLanguage;\nconst getFixedT = instance.getFixedT;\nconst t = instance.t;\nconst exists = instance.exists;\nconst setDefaultNamespace = instance.setDefaultNamespace;\nconst hasLoadedNamespace = instance.hasLoadedNamespace;\nconst loadNamespaces = instance.loadNamespaces;\nconst loadLanguages = instance.loadLanguages;\n\nexport { changeLanguage, createInstance, instance as default, dir, exists, getFixedT, hasLoadedNamespace, init, keysFromSelector as keyFromSelector, loadLanguages, loadNamespaces, loadResources, reloadResources, setDefaultNamespace, t, use };\n","import { ChannelFormField } from \"./backend-types/channel\";\nimport { createInstance, TFunction } from \"i18next\";\nimport en from \"./locale/en.json\";\nimport id from \"./locale/id.json\";\nimport th from \"./locale/th.json\";\nimport vi from \"./locale/vi.json\";\n\nconst DEFAULT_NAMESPACE = \"session\";\n\nexport type LocaleKey = {\n localeKey: keyof (typeof en)[typeof DEFAULT_NAMESPACE];\n};\n\nexport type LocalizedString = {\n value: string;\n};\n\n/**\n * @internal\n */\nexport const initI18n = (locale: string) => {\n const i18n = createInstance();\n i18n.init({\n lng: locale,\n fallbackLng: \"en\",\n supportedLngs: [\"en\", \"id\", \"th\", \"vi\"],\n debug: false,\n defaultNS: DEFAULT_NAMESPACE,\n interpolation: {\n escapeValue: false, // not needed for react as it escapes by default\n },\n resources: {\n en: en,\n id: id,\n th: th,\n vi: vi,\n },\n });\n return i18n;\n};\n\n// Type guard function to check if errorCode is LocaleKey\nexport const isLocaleKey = (errorCode: unknown): errorCode is LocaleKey => {\n return (\n typeof errorCode === \"object\" &&\n errorCode !== null &&\n \"localeKey\" in errorCode\n );\n};\n\n// Get localized error message\nexport const getLocalizedErrorMessage = (\n t: TFunction<\"session\">,\n errorCode: LocaleKey | LocalizedString,\n field: ChannelFormField,\n): string | null => {\n if (!errorCode) return null;\n\n if (!isLocaleKey(errorCode)) {\n return errorCode.value;\n }\n\n // Get localized message with field name interpolation using i18n key directly\n return t(errorCode.localeKey, { field: field.label });\n};\n","import { useState, useCallback } from \"preact/hooks\";\nimport { ChannelFormField } from \"../backend-types/channel\";\nimport Field from \"./field\";\nimport classNames from \"classnames\";\nimport { formFieldName } from \"../utils\";\nimport { useSdk } from \"./session-provider\";\nimport {\n getLocalizedErrorMessage,\n LocaleKey,\n LocalizedString,\n} from \"../localization\";\n\nconst CSS_CLASSES = {\n BOTTOM_LEFT_0: \"field-radius-bl-0\",\n BOTTOM_RIGHT_0: \"field-radius-br-0\",\n TOP_LEFT_0: \"field-radius-tl-0\",\n TOP_RIGHT_0: \"field-radius-tr-0\",\n COLLAPSE_RIGHT: \"field-collapse-r\",\n COLLAPSE_LEFT: \"field-collapse-l\",\n COLLAPSE_TOP: \"field-collapse-t\",\n COLLAPSE_BOTTOM: \"field-collapse-b\",\n} as const;\n\ninterface Props {\n fieldGroup: ChannelFormField[];\n groupIndex: number;\n handleFieldChanged: () => void;\n}\n\nconst FieldGroup = ({ fieldGroup, groupIndex, handleFieldChanged }: Props) => {\n const { t } = useSdk();\n\n const [fieldGroupErrors, setFieldGroupErrors] = useState<\n Record<string, LocaleKey | LocalizedString>\n >({});\n\n const fieldGroupSpans = fieldGroup.map((f) => f.span);\n const groupRowCount = Math.ceil(\n fieldGroup.reduce((agg, field) => agg + field.span, 0) / 2,\n );\n\n const calculateFieldPosition = (index: number) => {\n const fieldPositionBySpan = fieldGroupSpans\n .slice(0, index)\n .reduce((agg, span) => agg + span, 0);\n const fieldRow = index === 0 ? 0 : Math.floor(fieldPositionBySpan / 2);\n const fieldColumn = fieldPositionBySpan % 2;\n const isLastRow = fieldRow === groupRowCount - 1;\n\n return { fieldPositionBySpan, fieldRow, fieldColumn, isLastRow };\n };\n\n const getFieldClassNames = (\n field: ChannelFormField,\n index: number,\n position: ReturnType<typeof calculateFieldPosition>,\n ) => {\n const { fieldPositionBySpan, fieldRow, fieldColumn, isLastRow } = position;\n return classNames({\n [CSS_CLASSES.BOTTOM_LEFT_0]:\n groupRowCount > fieldRow + 1 || fieldPositionBySpan % 2 === 1,\n [CSS_CLASSES.BOTTOM_RIGHT_0]: !!fieldGroupSpans[index + 1],\n [CSS_CLASSES.TOP_LEFT_0]: index > 0,\n [CSS_CLASSES.TOP_RIGHT_0]:\n !(fieldRow === 0 && fieldColumn === 1) &&\n !(fieldRow === 0 && fieldColumn === 0 && field.span === 2),\n [CSS_CLASSES.COLLAPSE_RIGHT]: field.span === 1 && fieldColumn === 0,\n [CSS_CLASSES.COLLAPSE_LEFT]: field.span === 1 && fieldColumn === 1,\n [CSS_CLASSES.COLLAPSE_TOP]: fieldPositionBySpan >= 2,\n [CSS_CLASSES.COLLAPSE_BOTTOM]: !isLastRow,\n });\n };\n\n const handleFieldError = useCallback(\n (id: string, error: LocaleKey | LocalizedString | null) => {\n setFieldGroupErrors((prev) => {\n return error\n ? { ...prev, [id]: error }\n : (() => {\n const newErrors = { ...prev };\n delete newErrors[id];\n return newErrors;\n })();\n });\n },\n [],\n );\n\n const renderFirstFoundError = () => {\n const firstFieldWithError = fieldGroup.find(\n (field) => fieldGroupErrors[formFieldName(field)],\n );\n\n if (!firstFieldWithError) return null;\n\n const errorCode = fieldGroupErrors[formFieldName(firstFieldWithError)];\n if (!errorCode) return null;\n\n // Localize the error code at render time\n const localizedMessage = getLocalizedErrorMessage(\n t,\n errorCode,\n firstFieldWithError,\n );\n\n return (\n <span className=\"xendit-error-message xendit-text-12\">\n {localizedMessage}\n </span>\n );\n };\n\n const hasError = Object.keys(fieldGroupErrors).length > 0;\n\n return (\n <div className=\"xendit-channel-form-field-group\">\n <label htmlFor={formFieldName(fieldGroup[0])} className=\"xendit-text-14\">\n {fieldGroup[0].group_label ?? fieldGroup[0].label ?? \"\"}\n </label>\n <div\n key={groupIndex}\n className={`xendit-form-field-group ${hasError ? \"invalid\" : \"\"}`}\n >\n {fieldGroup.map((field, index) => {\n const position = calculateFieldPosition(index);\n const className = getFieldClassNames(field, index, position);\n\n return (\n <Field\n className={className}\n key={index}\n field={field}\n onChange={handleFieldChanged}\n onError={handleFieldError}\n />\n );\n })}\n </div>\n {hasError && renderFirstFoundError()}\n </div>\n );\n};\n\nexport default FieldGroup;\n","import { ChannelFormField, ChannelProperties } from \"../backend-types/channel\";\nimport { InternalInputValidateEvent } from \"../private-event-types\";\nimport { BffSession, BffSessionType } from \"../backend-types/session\";\nimport {\n useCallback,\n useContext,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"preact/hooks\";\nimport { useCardDetails, useSession } from \"./session-provider\";\nimport FieldGroup from \"./field-group\";\nimport { BffCardDetails } from \"../backend-types/card-details\";\nimport { usePrevious } from \"../utils\";\nimport { createContext } from \"preact\";\nimport { forwardRef } from \"react\";\n\ninterface Props {\n form: ChannelFormField[];\n onChannelPropertiesChanged: (channelProperties: ChannelProperties) => void;\n}\nexport interface ChannelFormHandle {\n validate: () => void;\n}\n\nconst ChannelForm = forwardRef<ChannelFormHandle, Props>(\n ({ form, onChannelPropertiesChanged }, ref) => {\n const session = useSession();\n const cardDetails = useCardDetails();\n const formRef = useRef<HTMLFormElement>(null);\n\n const [channelProperties, setChannelProperties] =\n useState<ChannelProperties | null>(null);\n\n useImperativeHandle(ref, () => ({\n validate() {\n const form = formRef.current;\n if (!form) return;\n Array.from(form.elements)\n .filter((el) => el instanceof HTMLInputElement)\n .forEach((input) => {\n if (!input.name) {\n // only validate inputs with a channel property name\n return;\n }\n input.dispatchEvent(new InternalInputValidateEvent(input.value));\n });\n },\n }));\n\n const getChannelProperties = useCallback((): ChannelProperties => {\n if (!formRef.current) return {};\n\n // The browser FormData collides with node's FormData, both are global, so we\n // need to make up a type for\n const formData = new FormData(formRef.current) as unknown as {\n entries: () => IterableIterator<[string, string | Blob]>;\n };\n\n return formKvToChannelProperties(formData.entries());\n }, []);\n\n const handleFieldChanged = useCallback(() => {\n if (!formRef.current) return;\n const channelProperties = getChannelProperties();\n setChannelProperties(channelProperties);\n onChannelPropertiesChanged(channelProperties);\n }, [getChannelProperties, onChannelPropertiesChanged]);\n\n const filteredForm = useFilteredFormFields(\n session,\n form,\n cardDetails.details ?? null,\n );\n\n // trigger a field changed callback when the form changes\n const previousFilteredForm = usePrevious(filteredForm);\n useEffect(() => {\n if (previousFilteredForm !== filteredForm) {\n handleFieldChanged();\n }\n }, [filteredForm, handleFieldChanged, previousFilteredForm]);\n\n const filteredFieldGroups = groupFields(filteredForm).filter(\n (group) => group.length,\n );\n\n if (filteredFieldGroups.length === 0) {\n return null;\n }\n\n return (\n <div class=\"xendit-channel-form\">\n <form ref={formRef}>\n <ChannelPropertiesContext.Provider value={channelProperties}>\n {filteredFieldGroups.map((fieldGroup, index) => (\n <FieldGroup\n key={index}\n fieldGroup={fieldGroup}\n groupIndex={index}\n handleFieldChanged={handleFieldChanged}\n />\n ))}\n </ChannelPropertiesContext.Provider>\n </form>\n </div>\n );\n },\n);\n\nexport const ChannelPropertiesContext = createContext<ChannelProperties | null>(\n null,\n);\n\nexport const useChannelProperties = (): ChannelProperties | null => {\n return useContext(ChannelPropertiesContext);\n};\n\nfunction groupFields(fields: ChannelFormField[]): ChannelFormField[][] {\n // Group fields for rendering\n const fieldGroups: ChannelFormField[][] = [[]];\n for (const field of fields) {\n if (\n field.span === 1 &&\n fieldGroups[fieldGroups.length - 1].length === 1 &&\n fieldGroups[fieldGroups.length - 1][0].span === 1\n ) {\n // join two half-width fields into one group\n fieldGroups[fieldGroups.length - 1].push(field);\n continue;\n }\n\n if (field.join) {\n // if the field should be explicitly joined, add it to the last group\n fieldGroups[fieldGroups.length - 1].push(field);\n continue;\n }\n\n // otherwise, start a new group\n fieldGroups.push([field]);\n }\n\n return fieldGroups;\n}\n\n/**\n * Convert form key/value pairs to channel properties\n * .e.g\n * Input:\n * {\n * \"k\": \"v1\",\n * \"a.b.c\": \"v2\",\n * \"z.z__a.y\": [\"v3\", \"v3\"],\n * }\n * Output:\n * {\n * k: \"v1\",\n * a: { b: { c: \"v2\", }, },\n * z: { z: \"v3\", y: \"v4\" },\n * }\n **/\nfunction formKvToChannelProperties(\n iter: IterableIterator<[string, string | Blob]>,\n): ChannelProperties {\n const obj: ChannelProperties = {};\n\n for (const [key, rawValue] of iter) {\n if (rawValue instanceof Blob) {\n continue;\n }\n\n // keys with __ represent multiple k/v pairs\n // e.g. `{\"a__b\": [\"1\", \"2\"]}` becomes `{a: \"1\", b: \"2\"}`\n const subkeys = key.split(\"__\");\n\n // if there are multiple subkeys, assume the value is a JSON array of strings\n const valueAsArray = formValueToStringArray(subkeys, rawValue);\n\n outer: for (const subkey of subkeys) {\n // split key by dot, for each part, traverse the object\n // and assign the value at the end\n // e.g. { \"branch.leaf\": \"value\" } becomes { branch: { leaf: \"value\" } }\n // cursor will be the leaf object\n const parts = subkey.split(\".\");\n let cursor = obj;\n while (parts.length > 1) {\n const part = parts.shift()!;\n let selected = cursor[part];\n if (selected === undefined) {\n // child object doesn't exist, create it\n selected = cursor[part] = {};\n }\n if (selected && typeof selected === \"object\") {\n if (Array.isArray(selected)) {\n continue outer; // should never happen\n }\n // traverse into child object\n cursor = selected;\n }\n }\n\n // assign next value to channel properties\n const nextValue = valueAsArray.length ? valueAsArray.shift() : \"\";\n cursor[parts[0]] = nextValue;\n }\n }\n\n return obj;\n}\n\n/**\n * Parse a json string[] with error handling.\n */\nfunction formValueToStringArray(subkeys: string[], value: string): string[] {\n if (subkeys.length === 0) return [];\n if (subkeys.length === 1) return [value];\n if (value === \"\") return [];\n try {\n return JSON.parse(value);\n } catch (_e) {\n return [value];\n }\n}\n\n/**\n * Takes a form and filters out fields that should not be shown based on context.\n */\nexport function useFilteredFormFields(\n session: BffSession,\n form: ChannelFormField[],\n cardInfo: BffCardDetails | null,\n) {\n const filteredForm = useMemo(() => {\n return filterFormFields(\n session.session_type,\n form,\n cardInfo?.require_billing_information ?? false,\n );\n }, [cardInfo?.require_billing_information, form, session.session_type]);\n\n return filteredForm;\n}\n\nexport function filterFormFields(\n sessionType: BffSessionType,\n form: ChannelFormField[],\n showBillingDetailsFields: boolean,\n) {\n return form.filter((field) => {\n if (field.flags?.require_billing_information) {\n // these fields should only be shown if billing details are required\n if (sessionType !== \"PAY\") return false;\n if (!showBillingDetailsFields) return false;\n }\n return true;\n });\n}\n\nexport default ChannelForm;\n","import { FunctionComponent, SVGAttributes } from \"preact\";\nimport { useLayoutEffect, useRef } from \"preact/hooks\";\n\nexport const InstructionsIcon: FunctionComponent<\n SVGAttributes<SVGSVGElement>\n> = (props) => {\n const arrowRef = useRef<SVGGElement>(null);\n const arrowSquareGroupRef = useRef<SVGGElement>(null);\n\n const supportsAnimation = HTMLElement.prototype.animate !== undefined;\n\n useLayoutEffect(() => {\n if (!supportsAnimation) {\n return;\n }\n arrowRef.current?.animate(arrowKeyFrames, arrowAnimationOptions);\n\n arrowSquareGroupRef.current?.animate(\n arrowSquareBounceKeyFrames,\n arrowSquareBounceAnimationOptions,\n );\n }, [supportsAnimation]);\n\n return (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <g opacity=\"0.5\">\n <path\n d=\"M8.79453 10.2303C7.1791 10.2303 5.86953 11.5399 5.86953 13.1553V28.9503C5.86953 31.535 7.96484 33.6303 10.5495 33.6303H26.3445C27.96 33.6303 29.2695 32.3208 29.2695 30.7053\"\n fill=\"#F1F1F1\"\n />\n <path\n d=\"M8.79453 10.2303V10.2303C7.1791 10.2303 5.86953 11.5399 5.86953 13.1553V28.9503C5.86953 31.535 7.96484 33.6303 10.5495 33.6303H26.3445C27.96 33.6303 29.2695 32.3208 29.2695 30.7053V30.7053\"\n stroke=\"#D0D0D0\"\n strokeWidth=\"1.755\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n <g ref={arrowSquareGroupRef} style={{ transformOrigin: \"20px 20px\" }}>\n <path\n d=\"M28.8177 6.00256H14.7777C12.193 6.00256 10.0977 8.09787 10.0977 10.6826V24.7226C10.0977 27.3073 12.193 29.4026 14.7777 29.4026H28.8177C31.4023 29.4026 33.4977 27.3073 33.4977 24.7226V10.6826C33.4977 8.09787 31.4024 6.00256 28.8177 6.00256Z\"\n fill=\"white\"\n stroke=\"#EDEDED\"\n strokeWidth=\"1.755\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <g style={{ transformOrigin: \"10px 30px\" }} ref={arrowRef}>\n <path\n d=\"M26.7697 20.5301V12.7301H18.9697\"\n stroke=\"#7C7C7C\"\n strokeWidth=\"1.872\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M17.4102 22.0901L26.7702 12.7301\"\n stroke=\"#7C7C7C\"\n strokeWidth=\"1.872\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n </g>\n </svg>\n );\n};\n\nconst arrowKeyFrames: Keyframe[] = [\n { transform: \"scale(0.1)\" },\n { transform: \"scale(1)\" },\n];\nconst arrowAnimationOptions: EffectTiming = {\n duration: 500,\n easing: \"ease-out\",\n};\n\nconst arrowSquareBounceKeyFrames: Keyframe[] = [\n { transform: \"rotate(0deg)\" },\n { transform: \"rotate(5deg)\" },\n { transform: \"rotate(-5deg)\" },\n { transform: \"rotate(0deg)\" },\n];\nconst arrowSquareBounceAnimationOptions: EffectTiming = {\n duration: 1000,\n easing: \"ease-out\",\n iterations: Infinity,\n delay: 2000,\n};\n","import { FunctionComponent, TargetedEvent } from \"preact\";\nimport { useIdSafe } from \"../utils\";\n\ninterface Props {\n id?: string;\n label: string;\n checked?: boolean;\n disabled?: boolean;\n onChange?: (e: TargetedEvent<HTMLInputElement>) => void;\n}\n\n/**\n * Checkbox component\n */\nexport const Checkbox: FunctionComponent<Props> = (props) => {\n const { id, label, checked, onChange, disabled } = props;\n\n const generatedId = useIdSafe();\n const htmlId = id || generatedId;\n\n const handleChange = (e: TargetedEvent<HTMLInputElement>) => {\n onChange?.(e);\n };\n\n return (\n <div className=\"xendit-checkbox\">\n <div className=\"xendit-checkbox-box\">\n <input\n id={htmlId}\n type=\"checkbox\"\n onChange={handleChange}\n checked={checked}\n disabled={disabled}\n />\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 256 256\"\n className=\"xendit-checkbox-graphic\"\n >\n <polyline\n points=\"40 144 96 200 224 72\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"16\"\n ></polyline>\n </svg>\n </div>\n <label htmlFor={htmlId} className=\"xendit-text-14\">\n {label}\n </label>\n </div>\n );\n};\n","import ChannelForm, { ChannelFormHandle } from \"./channel-form\";\nimport { useContext, useRef } from \"preact/hooks\";\nimport {\n createContext,\n FunctionComponent,\n RefObject,\n TargetedEvent,\n} from \"preact\";\nimport { BffChannel, ChannelProperties } from \"../backend-types/channel\";\nimport { InstructionsIcon } from \"./instructions-icon\";\nimport { useSdk, useSession } from \"./session-provider\";\nimport { Checkbox } from \"./checkbox\";\nimport { resolvePairedChannel } from \"../utils\";\n\nconst ChannelContext = createContext<BffChannel | null>(null);\n\nexport const useChannel = () => {\n const context = useContext(ChannelContext);\n if (context === undefined) {\n throw new Error(\"useChannel must be used within a ChannelProvider\");\n }\n return context;\n};\n\ninterface Props {\n /** The channels to use. If this has two items then the first is the non-save channel and the second is the save version. */\n channels: BffChannel[];\n savePaymentMethod: boolean;\n formRef: RefObject<ChannelFormHandle>;\n}\n\nexport const PaymentChannel: FunctionComponent<Props> = (props) => {\n const { channels, savePaymentMethod, formRef } = props;\n const divRef = useRef<HTMLDivElement>(null);\n const sdk = useSdk();\n const { t } = sdk;\n const session = useSession();\n\n // events always use channels[0] because the CachedChannelComponents are keyed by that\n const firstMemberChannel = channels[0];\n\n const hasPairedChannel = channels.length > 1;\n const resolvedChannel = resolvePairedChannel(channels, savePaymentMethod);\n\n const instructions = instructionsAsTuple(resolvedChannel.instructions);\n\n const onChannelPropertiesChanged = (channelProperties: ChannelProperties) => {\n const event = new XenditChannelPropertiesChangedEvent(\n firstMemberChannel.channel_code,\n channelProperties,\n );\n divRef.current?.dispatchEvent(event);\n };\n\n const shouldShowSaveCheckbox =\n session.allow_save_payment_method === \"OPTIONAL\" &&\n (resolvedChannel.allow_save || hasPairedChannel);\n\n const handleCheckboxChange = (e: TargetedEvent<HTMLInputElement>) => {\n const checked = (e.target as HTMLInputElement)?.checked;\n divRef.current?.dispatchEvent(\n new XenditSavePaymentMethodChangedEvent(\n firstMemberChannel.channel_code,\n checked,\n ),\n );\n };\n\n if (sdk.getSdkStatus() !== \"ACTIVE\" || session.status !== \"ACTIVE\") {\n // clear all contents if the sdk crashes or if the component is still mounted after completion or failure\n return null;\n }\n\n return (\n <ChannelContext.Provider value={resolvedChannel}>\n <div className=\"xendit-payment-channel\" ref={divRef}>\n <ChannelForm\n ref={formRef}\n form={resolvedChannel.form}\n onChannelPropertiesChanged={onChannelPropertiesChanged}\n />\n {shouldShowSaveCheckbox && (\n <Checkbox\n label={t(\"payment.save_checkbox_label\")}\n onChange={handleCheckboxChange}\n checked={savePaymentMethod}\n />\n )}\n {instructions ? (\n <div className=\"xendit-payment-channel-instructions\">\n <InstructionsIcon />\n <div className=\"xendit-payment-channel-instructions-text xendit-text-12\">\n {instructions.map((instr, i) => (\n <p\n key={i}\n className={i === 0 ? \"xendit-text-semibold\" : undefined}\n >\n {instr}\n </p>\n ))}\n </div>\n </div>\n ) : null}\n </div>\n </ChannelContext.Provider>\n );\n};\n\nfunction instructionsAsTuple(\n instructions: string[] | undefined,\n): [string, string] | null {\n if (instructions && instructions.length === 2) {\n return [instructions[0], instructions[1]] as const;\n }\n return null;\n}\n\nexport class XenditChannelPropertiesChangedEvent extends Event {\n static readonly type = \"xendit-channel-properties-changed\" as const;\n channel: string;\n channelProperties: ChannelProperties;\n\n constructor(channel: string, channelProperties: ChannelProperties) {\n super(XenditChannelPropertiesChangedEvent.type, {\n bubbles: true,\n composed: true,\n });\n this.channel = channel;\n this.channelProperties = channelProperties;\n }\n}\n\nexport class XenditSavePaymentMethodChangedEvent extends Event {\n static readonly type = \"xendit-save-payment-method-changed\" as const;\n channel: string;\n savePaymentMethod: boolean;\n\n constructor(channel: string, savePaymentMethod: boolean) {\n super(XenditSavePaymentMethodChangedEvent.type, {\n bubbles: true,\n composed: true,\n });\n this.channel = channel;\n this.savePaymentMethod = savePaymentMethod;\n }\n}\n","import { assert, hostFromHostId, MOCK_HOST_ID, ParsedSdkKey } from \"./utils\";\n\nexport type ErrorResponse = {\n error_code: string;\n message: string;\n error_content?: {\n title: string;\n message_1: string;\n message_2?: string;\n };\n};\n\nexport class NetworkError extends Error {\n constructor(public errorResponse: ErrorResponse) {\n super(errorResponse.message);\n }\n}\n\n/**\n * Encode data for x-www-form-urlencoded content type\n */\nfunction convertDataToUrlSearchParams<T extends object>(data: T) {\n const params = new URLSearchParams();\n params.append(\"payload\", JSON.stringify(data));\n return params;\n}\n\n// GET with path param\nexport function endpoint<ResponseBody, PathArg>(\n method: \"GET\",\n getPath: (pathArg: PathArg) => string,\n): (\n sdkKey: ParsedSdkKey,\n pathArg: PathArg,\n queryArg?: null,\n abortSignal?: AbortSignal,\n) => Promise<ResponseBody>;\n\n// GET with path param and query param\nexport function endpoint<ResponseBody, PathArg, QueryArg = never>(\n method: \"GET\",\n getPath: (pathArg: PathArg) => string,\n getQuery: (queryArg: QueryArg) => URLSearchParams,\n): (\n sdkKey: ParsedSdkKey,\n pathArg: PathArg,\n queryArg?: QueryArg,\n abortSignal?: AbortSignal,\n) => Promise<ResponseBody>;\n\n// POST with path param\nexport function endpoint<RequestBody, ResponseBody, PathArg>(\n method: \"POST\",\n getPath: (pathArg: PathArg) => string,\n): (\n sdkKey: ParsedSdkKey,\n requestBody: RequestBody,\n pathArg: PathArg,\n queryArg?: null,\n abortSignal?: AbortSignal,\n) => Promise<ResponseBody>;\n\n// POST with path param and query param\nexport function endpoint<RequestBody, ResponseBody, PathArg, QueryArg = never>(\n method: \"POST\",\n getPath: (pathArg: PathArg) => string,\n getQuery: (queryArg: QueryArg) => URLSearchParams,\n): (\n sdkKey: ParsedSdkKey,\n requestBody: RequestBody,\n pathArg: PathArg,\n queryArg?: QueryArg,\n abortSignal?: AbortSignal,\n) => Promise<ResponseBody>;\n\n/**\n * Declares an endpoint in checkout-ui-gateway and returns a function to call it.\n *\n * @example\n * ```\n * // declare\n * const myEndpoint = endpoint<\n * { userId: string }, // Request body type\n * { name: string; age: number }, // Response body type\n * string, // Type of arg passed to getPath\n * string, // Type of arg passed to getQuery\n * >(\n * \"POST\",\n * (pathArg) => `/api/users/${pathArg}`, // getPath function\n * (queryArg) => new UrlSearchParams({id: queryArg}) // getQuery function\n * );\n *\n * // usage\n * await myEndpoint({userId: \"123\"}, \"456\", \"789\");\n * ```\n */\nexport function endpoint(\n method: \"GET\" | \"POST\",\n getPath: (pathArg: unknown) => string,\n getQuery?: (queryArg: unknown) => URLSearchParams,\n) {\n return async function (...rest: unknown[]): Promise<unknown> {\n let sdkKey: unknown;\n let pathArg: unknown;\n let queryArg: unknown;\n let requestBody: unknown;\n let abortSignal: unknown;\n\n switch (method) {\n case \"GET\":\n [sdkKey, pathArg, queryArg, abortSignal] = rest;\n break;\n case \"POST\":\n [sdkKey, requestBody, pathArg, queryArg, abortSignal] = rest;\n break;\n default:\n throw new Error(\n `Unable to call endpoint with method ${method}; this is a bug, please contact support.`,\n );\n }\n\n const versionNumber = process.env.XENDIT_COMPONENTS_VERSION;\n assert(versionNumber);\n assert(versionNumber.startsWith(\"v\"));\n\n const hostId = (sdkKey as ParsedSdkKey).hostId;\n if (hostId === MOCK_HOST_ID) {\n throw new Error(\n \"A network request was made in mock mode; this is a bug.\",\n );\n }\n const host = hostFromHostId(hostId);\n if (!host) {\n throw new Error(\n `Unknown hostId ${hostId} in sdkKey; this is a bug, please contact support.`,\n );\n }\n\n const url = new URL(getPath(pathArg), host);\n if (getQuery && !queryArg) {\n throw new Error(\n \"Query string argument is missing; this is a bug, please contact support.\",\n );\n }\n const query = getQuery?.(queryArg) ?? new URLSearchParams();\n query.set(\"components_version\", versionNumber);\n url.search = query.toString();\n\n const options: RequestInit = {\n method,\n body: requestBody ? convertDataToUrlSearchParams(requestBody) : undefined,\n headers: {\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n },\n signal: abortSignal as AbortSignal | undefined,\n };\n\n const response = await fetch(url, options);\n if (!response.ok) {\n const errorData = (await response.json()) as ErrorResponse;\n if (!errorData || !errorData.error_code) {\n throw new Error(\"Unexpected error response from server\");\n }\n throw new NetworkError(errorData);\n }\n\n return response.json();\n };\n}\n","import { ChannelProperties } from \"./backend-types/channel\";\nimport { BffPollResponse, BffResponse } from \"./backend-types/common\";\nimport { BffCustomer } from \"./backend-types/customer\";\nimport {\n BffPaymentRequest,\n BffPaymentToken,\n} from \"./backend-types/payment-entity\";\nimport { BffCardDetails } from \"./backend-types/card-details\";\nimport { endpoint } from \"./networking\";\n\n/**\n * Initialization method, returns session, customer, business, and channels.\n */\nexport const fetchSessionData = endpoint<BffResponse, string>(\n \"GET\",\n (sessionAuthKey) => `/api/sessions/${sessionAuthKey}`,\n);\n\ntype CreatePaymentTokenRequestBody = {\n session_id: string;\n channel_code: string;\n channel_properties: ChannelProperties;\n};\n/**\n * Creates a payment token.\n */\nexport const createPaymentToken = endpoint<\n CreatePaymentTokenRequestBody,\n BffPaymentToken,\n null\n>(\"POST\", () => `/api/sessions/payment_tokens`);\n\ntype CreatePaymentRequestRequestBody = {\n session_id: string;\n channel_code: string;\n channel_properties: ChannelProperties;\n customer?: BffCustomer;\n save_payment_method?: boolean;\n};\n/**\n * Creates a payment request.\n */\nexport const createPaymentRequest = endpoint<\n CreatePaymentRequestRequestBody,\n BffPaymentRequest,\n null\n>(\"POST\", () => `/api/sessions/payment_requests`);\n\ntype SimulatePaymentRequestRequestBody = {\n channel_code: string;\n};\n/**\n * Simulates a payment request.\n */\nexport const simulatePaymentRequest = endpoint<\n SimulatePaymentRequestRequestBody,\n BffPaymentRequest,\n { sessionAuthKey: string; paymentRequestId: string }\n>(\n \"POST\",\n (pathArg) =>\n `/api/sessions/${pathArg.sessionAuthKey}/payment_requests/${pathArg.paymentRequestId}/simulate`,\n);\n\n/**\n * Polls the session for updates.\n *\n * Always returns the session.\n * If the session is active, the payment entity will be included.\n * If the session is completed, the succeeded channel will be included.\n */\nexport const pollSession = endpoint<BffPollResponse, string, string | null>(\n \"GET\",\n (sessionAuthKey) => `/api/sessions/${sessionAuthKey}/poll`,\n (tokenRequestId) =>\n new URLSearchParams(\n tokenRequestId ? { token_request_id: tokenRequestId } : {},\n ),\n);\n\ntype LookupCardDetailsRequestBody = {\n /**\n * Encrypted card number\n */\n card_number: string;\n};\n/**\n * Returns metadata about a card number.\n */\nexport const lookupCardDetails = endpoint<\n LookupCardDetailsRequestBody,\n BffCardDetails,\n string\n>(\"POST\", (sessionAuthKey) => `/api/sessions/${sessionAuthKey}/card_info`);\n","/**\n * A node in a behavior tree.\n */\nexport type BehaviorNode<BB extends object> = {\n impl: BehaviorConstructor<BB>;\n key: string;\n child: BehaviorNode<BB> | undefined;\n instance: Behavior | undefined;\n};\n\n/**\n * Creates a behavior tree node.\n *\n * Takes a constructor implementing Behavior and a unique key. Nodes that are different from the previous tree\n * are removed and replaced. \"different\" means either the constructor or the key is different.\n *\n * The BB (blackboard) is data shared between all nodes in the tree. It is mutable.\n */\nexport function behaviorNode<BB extends object>(\n impl: BehaviorConstructor<BB>,\n key?: string,\n child?: BehaviorNode<BB>,\n): BehaviorNode<BB> {\n return {\n impl,\n key: key ?? \"\",\n child,\n instance: undefined,\n };\n}\n\n/**\n * A behavior implementation constructor.\n */\nexport interface BehaviorConstructor<BB extends object> {\n new (blackboard: BB, key: string): Behavior;\n}\n\nexport interface Behavior {\n /**\n * Called when entering this behavior\n */\n enter?(): void;\n /**\n * Called when a tree is updated but this node is not changed.\n */\n update?(): void;\n /**\n * Called when exiting this behavior\n */\n exit?(): void;\n}\n\n/**\n * A behavior tree.\n * https://en.wikipedia.org/wiki/Behavior_tree_(artificial_intelligence,_robotics_and_control)\n *\n * Updating a tree diffs the nodes and calls enter on new nodes and exit on removed nodes.\n */\nexport class BehaviorTree<BB extends object> {\n root: BehaviorNode<BB> = behaviorNode(class {});\n\n // whether an update is in progress\n updating: boolean = false;\n // whether another update is requested\n again: boolean = false;\n\n constructor(\n private fn: (bb: BB) => BehaviorNode<BB>,\n public bb: BB,\n ) {}\n\n update(): void {\n // flag to scheule an update\n this.again = true;\n\n if (this.updating) {\n // if this gets called recursively, just return, the outermost call will handle it\n return;\n }\n\n let updateCount = 0;\n\n try {\n this.updating = true;\n while (this.again) {\n this.again = false;\n updateCount += 1;\n assertMaxRecursionDepth(updateCount);\n\n const prev = this.root ?? undefined;\n const next = this.fn(this.bb);\n this.root = next;\n\n updateTree(prev, next, this.bb, 0);\n }\n } finally {\n this.updating = false;\n }\n }\n\n findBehavior<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n T extends BehaviorConstructor<any>,\n >(constructor: T): InstanceType<T> | null {\n let node: BehaviorNode<BB> | undefined = this.root;\n while (node) {\n if (node.impl === constructor) {\n return node.instance ? (node.instance as InstanceType<T>) : null;\n }\n node = node.child;\n }\n return null;\n }\n}\n\nfunction assertMaxRecursionDepth(depth: number) {\n if (depth > 32) {\n throw new Error(\n \"Max recursion depth exceeded; this is a bug, please contact support.\",\n );\n }\n}\n\nfunction updateTree<BB extends object>(\n prev: BehaviorNode<BB> | undefined,\n next: BehaviorNode<BB> | undefined,\n bb: BB,\n depth: number,\n) {\n assertMaxRecursionDepth(depth);\n\n // descend down the tree until there's a change\n const isChanged =\n prev === undefined ||\n next === undefined ||\n prev.impl !== next.impl ||\n prev.key !== next.key;\n\n if (isChanged) {\n // after we find a change, exit the previous nodes\n if (prev) {\n exitSubtree(prev, depth + 1);\n }\n\n // then enter the new nodes\n if (next) {\n enterSubtree(next, bb, depth + 1);\n }\n } else {\n // the nodes are the same, copy the instance to the new tree\n if (next) {\n next.instance = prev?.instance;\n }\n if (prev) {\n prev.instance = undefined;\n }\n updateTree(prev?.child, next?.child, bb, depth + 1);\n next?.instance?.update?.();\n }\n}\n\nfunction enterSubtree<BB extends object>(\n node: BehaviorNode<BB>,\n bb: BB,\n depth: number,\n) {\n assertMaxRecursionDepth(depth);\n\n // construct instances and call enter traversing downwards\n node.instance = new node.impl(bb, node.key);\n node.instance.enter?.();\n if (node.child) {\n enterSubtree(node.child, bb, depth + 1);\n }\n}\n\nfunction exitSubtree<BB extends object>(node: BehaviorNode<BB>, depth: number) {\n assertMaxRecursionDepth(depth);\n\n // call exit traversing upwards\n if (node.child) {\n exitSubtree(node.child, depth + 1);\n }\n node.instance?.exit?.();\n node.instance = undefined;\n}\n","import { IframeActionCompleteEvent } from \"../../../../shared/types\";\nimport { InternalBehaviorTreeUpdateEvent } from \"../../private-event-types\";\nimport { BlackboardType } from \"../behavior-tree\";\nimport { Behavior } from \"../behavior-tree-runner\";\n\nexport class ActionCompletedBehavior implements Behavior {\n constructor(private bb: BlackboardType) {}\n enter() {}\n}\n\nexport class ActionRedirectBehavior implements Behavior {\n constructor(\n private bb: BlackboardType,\n private url: string,\n ) {}\n\n enter() {\n this.bb.sdkEvents.setWillRedirect();\n window.location.href = this.url;\n }\n}\n\nexport class ActionIframeBehavior implements Behavior {\n cleanupFn: ((cancelledByUser: boolean) => void) | null = null;\n\n constructor(\n private bb: BlackboardType,\n private url: string,\n ) {}\n\n enter() {\n this.cleanupFn = this.bb.sdkEvents.ensureHasActionContainer();\n this.bb.sdkEvents.populateActionContainerWithIframe(\n this.url,\n this.bb.mock,\n (event: IframeActionCompleteEvent) => {\n this.cleanupActionContainer(false);\n this.updateMocksOnIframeCompletion(event.mockStatus === \"success\");\n\n // setting actionCompleted will ensure the action UI isn't shown again\n this.bb.actionCompleted = true;\n // request immediate poll on next update\n this.bb.pollImmediatelyRequested = true;\n\n this.bb.dispatchEvent(new InternalBehaviorTreeUpdateEvent());\n },\n );\n }\n\n updateMocksOnIframeCompletion(success: boolean) {\n if (this.bb.mock) {\n if (success) {\n this.bb.sdkEvents.scheduleMockUpdate(\"ACTION_SUCCESS\");\n } else {\n this.bb.sdkEvents.scheduleMockUpdate(\"ACTION_FAILURE\");\n }\n }\n }\n\n cleanupActionContainer(cancelledByUser: boolean) {\n if (this.cleanupFn) {\n this.cleanupFn(cancelledByUser);\n this.cleanupFn = null;\n }\n }\n\n exit() {\n this.cleanupActionContainer(false);\n this.bb.sdkEvents.emptyActionContainer();\n }\n}\n","import { lookupCardDetails } from \"../../api\";\nimport { InternalUpdateWorldState } from \"../../private-event-types\";\nimport {\n AbortError,\n cancellableSleep,\n getCardNunberFromChannelProperties,\n isAbortError,\n} from \"../../utils\";\nimport { BlackboardType } from \"../behavior-tree\";\nimport { Behavior } from \"../behavior-tree-runner\";\n\nexport class CardInfoBehavior implements Behavior {\n private cardDetailsRequest: {\n cardNumber: string;\n promise: Promise<void>;\n abortController: AbortController;\n } | null = null;\n\n constructor(public bb: BlackboardType) {}\n\n enter() {\n this.lookupCardDetails();\n }\n\n update() {\n this.lookupCardDetails();\n }\n\n exit() {\n this.abortLookupCardDetails();\n }\n\n abortLookupCardDetails() {\n if (this.cardDetailsRequest) {\n this.cardDetailsRequest.abortController.abort(new AbortError());\n this.cardDetailsRequest = null;\n }\n }\n\n lookupCardDetails() {\n const cardNumber = getCardNunberFromChannelProperties(\n this.bb.channelProperties,\n );\n if (!cardNumber) {\n return;\n }\n\n // don't look up the card number if a request is in flight for the same card number\n if (this.cardDetailsRequest?.cardNumber === cardNumber) {\n return;\n }\n\n // don't look up the card number if we already have the details\n if (this.bb.world?.cardDetails?.cardNumber === cardNumber) {\n return;\n }\n\n if (this.cardDetailsRequest) {\n this.abortLookupCardDetails();\n }\n\n const abortController = new AbortController();\n const promise = cancellableSleep(300, abortController.signal) // debounce\n .then(() => {\n if (this.bb.mock) {\n // mock card details\n return {\n schemes: [\"VISA\"],\n country_codes: [\"US\"],\n require_billing_information: true,\n };\n } else {\n // real card details\n return lookupCardDetails(\n this.bb.sdkKey,\n {\n card_number: cardNumber,\n },\n this.bb.sdkKey.sessionAuthKey,\n undefined,\n abortController.signal,\n );\n }\n })\n .then((response) => {\n this.bb.dispatchEvent(\n new InternalUpdateWorldState({\n cardDetails: {\n cardNumber,\n details: response,\n },\n }),\n );\n })\n .catch((error) => {\n if (isAbortError(error)) return;\n throw error;\n });\n\n this.cardDetailsRequest = {\n cardNumber,\n promise,\n abortController,\n };\n }\n}\n","/**\n * @public\n */\nexport type XenditEventMap = {\n init: XenditInitEvent;\n\n \"submission-ready\": XenditReadyEvent;\n \"submission-not-ready\": XenditReadyEvent;\n\n \"action-begin\": XenditActionBeginEvent;\n \"action-end\": XenditActionEndEvent;\n\n \"will-redirect\": XenditWillRedirectEvent;\n\n \"session-complete\": XenditSessionCompleteEvent;\n \"session-expired-or-canceled\": XenditSessionExpiredOrCanceledEvent;\n\n \"payment-request-created\": XenditPaymentRequestCreatedEvent;\n \"payment-request-discarded\": XenditPaymentRequestDiscardedEvent;\n \"payment-token-created\": XenditPaymentTokenCreatedEvent;\n \"payment-token-discarded\": XenditPaymentTokenDiscardedEvent;\n\n \"fatal-error\": XenditFatalErrorEvent;\n};\n\n/**\n * @public\n */\nexport type XenditEventListener<\n T extends Event | XenditEventMap[keyof XenditEventMap],\n> = ((event: T) => void) | null;\n\n/**\n * @public\n * Event fired when the Session is loaded.\n */\nexport class XenditInitEvent extends Event {\n static type = \"init\" as const;\n\n constructor() {\n super(XenditInitEvent.type, {});\n }\n}\n\n/**\n * @public\n * Event fired when the SDK fails in an unrecoverable way.\n */\nexport class XenditFatalErrorEvent extends Event {\n static type = \"fatal-error\" as const;\n\n constructor(public message: string) {\n super(XenditFatalErrorEvent.type, {});\n }\n}\n\n/**\n * @public\n * Event fired when the SDK is ready to submit.\n */\nexport class XenditReadyEvent extends Event {\n static type = \"submission-ready\" as const;\n\n constructor(public channelCode: string) {\n super(XenditReadyEvent.type, {});\n }\n}\n\n/**\n * @public\n * Event fired when the SDK is not ready to submit.\n */\nexport class XenditNotReadyEvent extends Event {\n static type = \"submission-not-ready\" as const;\n\n constructor() {\n super(XenditNotReadyEvent.type, {});\n }\n}\n\n/**\n * @public\n * Event fired after submission begins.\n */\nexport class XenditSubmissionBeginEvent extends Event {\n static type = \"submission-begin\" as const;\n\n constructor() {\n super(XenditSubmissionBeginEvent.type, {});\n }\n}\n\n/**\n * @public\n * Event fired when a submission is complete or fails. Submission encompasses creation of a\n * payment request or payment token, and any actions the user needs to complete.\n *\n * Includes details about why the submission ended, and error messages if applicable.\n */\nexport class XenditSubmissionEndEvent extends Event {\n static type = \"submission-end\" as const;\n\n constructor(\n /**\n * The reason why the submission ended.\n */\n public reason: string,\n /**\n * An error message to show to the user. A title and 1-2 lines of localized text.\n */\n public userErrorMessage?: string[],\n /**\n * A detailed error message for developers.\n */\n public developerErrorMessage?: {\n /**\n * The type of error.\n * - NETWORK_ERROR: A network error occurred while creating the payment request or payment token.\n * - ERROR: Failed to created a payment request or payment token.\n * - FAILURE: A payment request or payment token transitioned to a failure state.\n */\n type: \"NETWORK_ERROR\" | \"ERROR\" | \"FAILURE\";\n /**\n * The code associated with the error.\n */\n code: string;\n },\n ) {\n super(XenditSubmissionEndEvent.type, {});\n }\n}\n\n/**\n * @public\n * Event sometimes fired after submission, if an action is required.\n */\nexport class XenditActionBeginEvent extends Event {\n static type = \"action-begin\" as const;\n\n constructor() {\n super(XenditActionBeginEvent.type, {});\n }\n}\n\n/**\n * @public\n * Event fired when an action ends, success or fail.\n */\nexport class XenditActionEndEvent extends Event {\n static type = \"action-end\" as const;\n\n constructor() {\n super(XenditActionEndEvent.type, {});\n }\n}\n\n/**\n * @public\n * Event fired when the a redirect action is about to happen.\n */\nexport class XenditWillRedirectEvent extends Event {\n static type = \"will-redirect\" as const;\n\n constructor() {\n super(XenditWillRedirectEvent.type, {});\n }\n}\n\n/**\n * @public\n * Event fired when the session is complete, meaning the payment has been processed\n * or the token has been created.\n */\nexport class XenditSessionCompleteEvent extends Event {\n static type = \"session-complete\" as const;\n\n constructor() {\n super(XenditSessionCompleteEvent.type, {});\n }\n}\n\n/**\n * @public\n * Event fired when the session has failed, meaning expired or cancelled.\n */\nexport class XenditSessionExpiredOrCanceledEvent extends Event {\n static type = \"session-expired-or-canceled\" as const;\n\n constructor() {\n super(XenditSessionExpiredOrCanceledEvent.type, {});\n }\n}\n\n/**\n * @public\n */\nexport class XenditPaymentRequestCreatedEvent extends Event {\n static type = \"payment-request-created\" as const;\n\n constructor(public paymentRequestId: string) {\n super(XenditPaymentRequestCreatedEvent.type, {});\n }\n}\n\n/**\n * @public\n */\nexport class XenditPaymentTokenCreatedEvent extends Event {\n static type = \"payment-token-created\" as const;\n\n constructor(public paymentTokenId: string) {\n super(XenditPaymentTokenCreatedEvent.type, {});\n }\n}\n\n/**\n * @public\n */\nexport class XenditPaymentRequestDiscardedEvent extends Event {\n static type = \"payment-request-discarded\" as const;\n\n constructor(public paymentRequestId: string) {\n super(XenditPaymentRequestDiscardedEvent.type, {});\n }\n}\n\n/**\n * @public\n */\nexport class XenditPaymentTokenDiscardedEvent extends Event {\n static type = \"payment-token-discarded\" as const;\n\n constructor(public paymentTokenId: string) {\n super(XenditPaymentTokenDiscardedEvent.type, {});\n }\n}\n","import {\n XenditNotReadyEvent,\n XenditReadyEvent,\n} from \"../../public-event-types\";\nimport { BlackboardType } from \"../behavior-tree\";\nimport { Behavior } from \"../behavior-tree-runner\";\n\nexport class ChannelValidBehavior implements Behavior {\n private lastChannelCode: string | null = null;\n\n constructor(private bb: BlackboardType) {}\n\n enter() {\n this.sendReadyEventIfChanged();\n }\n\n update() {\n this.sendReadyEventIfChanged();\n }\n\n sendReadyEventIfChanged() {\n const channelCode = this.bb.channel?.channel_code ?? null;\n if (channelCode && channelCode !== this.lastChannelCode) {\n this.bb.dispatchEvent(new XenditReadyEvent(channelCode));\n this.lastChannelCode = channelCode;\n }\n }\n\n exit() {\n this.bb.dispatchEvent(new XenditNotReadyEvent());\n }\n}\n\n/**\n * If this exists, submission is blocked.\n */\nexport class ChannelInvalidBehavior implements Behavior {\n constructor(\n private bb: BlackboardType,\n private channelCode: string | null,\n ) {}\n\n enter() {}\n}\n","import { Instructions } from \"./instructions\";\n\nexport type BffAction =\n | {\n type: \"PRESENT_TO_CUSTOMER\";\n descriptor: \"PAYMENT_CODE\" | \"QR_STRING\" | \"VIRTUAL_ACCOUNT_NUMBER\";\n value: string;\n action_title: string;\n action_subtitle: string;\n action_graphic: string;\n instructions?: Instructions | null;\n }\n | {\n type: \"REDIRECT_CUSTOMER\";\n descriptor: \"WEB_URL\" | \"DEEPLINK_URL\" | \"WEB_GOOGLE_PAYLINK\";\n value: string;\n }\n | {\n type: \"API_POST_REQUEST\";\n descriptor: \"CAPTURE_PAYMENT\" | \"VALIDATE_OTP\" | \"RESEND_OTP\";\n value: string;\n otp?: {\n title: string;\n instructions: string;\n };\n };\n\nexport type BffPaymentTokenStatus =\n | \"REQUIRES_ACTION\"\n | \"PENDING\"\n | \"ACTIVE\"\n | \"FAILED\"\n | \"EXPIRED\"\n | \"CANCELED\";\n\nexport type BffPaymentTokenFailureCode =\n | \"ACCOUNT_ALREADY_LINKED\"\n | \"INVALID_ACCOUNT_DETAILS\"\n | \"AUTHENTICATION_FAILED\"\n | \"CARD_DECLINED\"\n | \"CAPTURE_AMOUNT_EXCEEDED\"\n | \"INSUFFICIENT_BALANCE\"\n | \"ISSUER_UNAVAILABLE\"\n | \"CHANNEL_UNAVAILABLE\"\n | \"INVALID_MERCHANT_SETTINGS\";\n\nexport type BffPaymentToken = {\n payment_token_id: string;\n status: BffPaymentTokenStatus;\n failure_code?: BffPaymentTokenFailureCode;\n actions: BffAction[];\n channel_code: string;\n /**\n * Only returned when the payment request is created, not on polling\n */\n session_token_request_id?: string;\n};\n\nexport type BffPaymentRequestStatus =\n | \"ACCEPTING_PAYMENTS\"\n | \"REQUIRES_ACTION\"\n | \"AUTHORIZED\"\n | \"CANCELED\"\n | \"EXPIRED\"\n | \"SUCCEEDED\"\n | \"FAILED\";\n\nexport type BffPaymentRequestFailureCode =\n | \"ACCOUNT_ACCESS_BLOCKED\"\n | \"INVALID_MERCHANT_SETTINGS\"\n | \"INVALID_ACCOUNT_DETAILS\"\n | \"PAYMENT_ATTEMPT_COUNTS_EXCEEDED\"\n | \"USER_DEVICE_UNREACHABLE\"\n | \"CHANNEL_UNAVAILABLE\"\n | \"INSUFFICIENT_BALANCE\"\n | \"ACCOUNT_NOT_ACTIVATED\"\n | \"INVALID_TOKEN\"\n | \"SERVER_ERROR\"\n | \"PARTNER_TIMEOUT_ERROR\"\n | \"TIMEOUT_ERROR\"\n | \"USER_DECLINED_PAYMENT\"\n | \"USER_DID_NOT_AUTHORIZE\"\n | \"PAYMENT_REQUEST_EXPIRED\"\n | \"FAILURE_DETAILS_UNAVAILABLE\"\n | \"EXPIRED_OTP\"\n | \"INVALID_OTP\"\n | \"PAYMENT_AMOUNT_LIMITS_EXCEEDED\"\n | \"OTP_ATTEMPT_COUNTS_EXCEEDED\"\n | \"CARD_DECLINED\"\n | \"DECLINED_BY_ISSUER\"\n | \"ISSUER_UNAVAILABLE\"\n | \"INVALID_CVV\"\n | \"DECLINED_BY_PROCESSOR\"\n | \"CAPTURE_AMOUNT_EXCEEDED\"\n | \"AUTHENTICATION_FAILED\";\n\nexport type BffPaymentRequest = {\n payment_request_id: string;\n status: BffPaymentRequestStatus;\n failure_code?: BffPaymentRequestFailureCode;\n actions: BffAction[];\n channel_code: string;\n /**\n * Only returned when the payment request is created, not on polling\n */\n session_token_request_id?: string;\n};\n\nexport enum BffPaymentEntityType {\n PaymentRequest = \"REQUEST\",\n PaymentToken = \"TOKEN\",\n}\n\nexport type BffPaymentEntity =\n | {\n id: string;\n type: BffPaymentEntityType.PaymentRequest;\n entity: BffPaymentRequest;\n }\n | {\n id: string;\n type: BffPaymentEntityType.PaymentToken;\n entity: BffPaymentToken;\n };\n\nexport function toPaymentEntity(\n prOrPt: BffPaymentRequest | BffPaymentToken,\n): BffPaymentEntity {\n if (\"payment_request_id\" in prOrPt) {\n return {\n id: prOrPt.payment_request_id,\n type: BffPaymentEntityType.PaymentRequest,\n entity: prOrPt,\n };\n } else {\n return {\n id: prOrPt.payment_token_id,\n type: BffPaymentEntityType.PaymentToken,\n entity: prOrPt,\n };\n }\n}\n\nexport function getFailureCodeCopyKey<\n T extends NonNullable<\n BffPaymentRequestFailureCode | BffPaymentTokenFailureCode\n >,\n>(failureCode: T) {\n return `failure_code.${failureCode.toLowerCase() as Lowercase<T>}` as const;\n}\n\nexport function getPaymentEntityStatusCopyKey<\n T extends\n | BffPaymentEntityType.PaymentRequest\n | BffPaymentEntityType.PaymentToken,\n S extends \"FAILED\" | \"EXPIRED\" | \"CANCELED\",\n const Suffix extends string,\n>(entityType: T, status: S, suffix: Suffix) {\n const t =\n entityType === BffPaymentEntityType.PaymentRequest\n ? \"payment_request\"\n : \"payment_token\";\n return `${t}_status.${\n status.toLowerCase() as Lowercase<S>\n }.${suffix}` as const;\n}\n","import { pollSession } from \"../../api\";\nimport { BffPollResponse } from \"../../backend-types/common\";\nimport {\n BffPaymentEntity,\n toPaymentEntity,\n} from \"../../backend-types/payment-entity\";\nimport { XenditComponents, XenditComponentsTest } from \"../../public-sdk\";\nimport {\n MOCK_NETWORK_DELAY_MS,\n ParsedSdkKey,\n retryLoop,\n sleep,\n} from \"../../utils\";\n\n/**\n * Polls the session status forever until stop() is called.\n *\n * @example\n * const poller = new PollWorker(sessionId, tokenRequestId, (updatedSession) => {\n * // handle session update\n * }, () => {\n * // handle error\n * });\n *\n * poller.start();\n * // later\n * poller.stop();\n */\nexport class PollWorker {\n started = false;\n stopped = false;\n\n constructor(\n private sdkKey: ParsedSdkKey,\n private sdk: XenditComponents,\n private sessionTokenRequestId: string | null,\n private onPollResult: (\n result: BffPollResponse,\n paymentEntity: BffPaymentEntity | null,\n ) => void,\n ) {}\n\n async start() {\n if (this.stopped) {\n throw new Error(\n \"PollWorker has been stopped, make a new instance instead of calling start again\",\n );\n }\n this.started = true;\n\n // retry loop with exponential backoff\n // chart of retry times:\n // https://www.desmos.com/calculator/3sihry02vd\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n for await (const attempt of retryLoop(5000, 100, 1.06)) {\n if (this.stopped) return;\n\n let response: BffPollResponse;\n\n if (this.sdk.isMock()) {\n // mock polling\n if (\n this.sdk instanceof XenditComponentsTest &&\n this.sdk.nextMockUpdate\n ) {\n await sleep(MOCK_NETWORK_DELAY_MS); // simulate network delay\n response = this.sdk.nextMockUpdate;\n this.sdk.nextMockUpdate = null;\n } else {\n continue;\n }\n } else {\n // real polling request\n try {\n response = await pollSession(\n this.sdkKey,\n this.sdkKey.sessionAuthKey,\n this.sessionTokenRequestId,\n );\n } catch (_err) {\n // TODO: error handling\n continue;\n }\n }\n if (this.stopped) return;\n\n if (!response.session) {\n throw new Error(\"Session is not defined\"); // should be impossible\n }\n\n let paymentEntity: BffPaymentEntity | null = null;\n if (response.payment_token) {\n paymentEntity = toPaymentEntity(response.payment_token);\n } else if (response.payment_request) {\n paymentEntity = toPaymentEntity(response.payment_request);\n }\n\n this.onPollResult(response, paymentEntity);\n\n // give the caller a chance to stop before we make the next request\n await sleep(1);\n }\n }\n\n isPolling() {\n return this.started && !this.stopped;\n }\n\n stop() {\n this.started = false;\n this.stopped = true;\n }\n}\n","import { BffPollResponse } from \"../../backend-types/common\";\nimport { BffPaymentEntity } from \"../../backend-types/payment-entity\";\nimport { InternalBehaviorTreeUpdateEvent } from \"../../private-event-types\";\nimport { BlackboardType } from \"../behavior-tree\";\nimport { Behavior } from \"../behavior-tree-runner\";\nimport { PollWorker } from \"./poll-worker\";\n\nexport class PePendingBehavior implements Behavior {\n private pollWorker: PollWorker;\n constructor(private bb: BlackboardType) {\n this.pollWorker = new PollWorker(\n this.bb.sdkKey,\n this.bb.sdkEvents.sdk,\n this.bb.world?.sessionTokenRequestId ?? null,\n this.onPollResult,\n );\n }\n\n enter() {\n this.pollWorker.start();\n }\n\n exit() {\n this.pollWorker.stop();\n }\n\n onPollResult = (\n pollResponse: BffPollResponse,\n paymentEntity: BffPaymentEntity | null,\n ) => {\n this.bb.sdkEvents.updateWorld({\n session: pollResponse.session,\n paymentEntity: paymentEntity ?? undefined, // do not clear payment entity if this returns undefined/null\n succeededChannel: pollResponse.succeeded_channel ?? null, // do set succeeded channel to null if it doesn't return one\n });\n };\n}\n\nexport class PeRequiresActionBehavior implements Behavior {\n private pollWorker: PollWorker | null = null;\n public canCreateActionContainer: boolean = true;\n\n constructor(private bb: BlackboardType) {\n this.resetPolling();\n }\n\n enter() {\n this.bb.sdkEvents.setHasAction(true);\n this.canCreateActionContainer = false;\n this.pollWorker?.start();\n }\n\n update() {\n if (this.bb.pollImmediatelyRequested) {\n this.bb.pollImmediatelyRequested = false;\n this.resetPolling();\n }\n }\n\n exit() {\n this.pollWorker?.stop();\n this.bb.sdkEvents.setHasAction(false);\n\n // clear flag for next time\n this.bb.actionCompleted = false;\n }\n\n onPollResult = (\n pollResponse: BffPollResponse,\n paymentEntity: BffPaymentEntity | null,\n ) => {\n this.bb.sdkEvents.updateWorld({\n session: pollResponse.session,\n paymentEntity: paymentEntity ?? undefined, // do not clear payment entity if this returns undefined/null\n succeededChannel: pollResponse.succeeded_channel ?? null, // do set succeeded channel to null if it doesn't return one\n });\n };\n\n /**\n * Stop the current poll worker and make a new one. Start polling if the previous pollWorker was polling.\n */\n resetPolling() {\n const polling = this.pollWorker?.isPolling() ?? false;\n this.pollWorker?.stop();\n this.pollWorker = new PollWorker(\n this.bb.sdkKey,\n this.bb.sdkEvents.sdk,\n this.bb.world?.sessionTokenRequestId ?? null,\n this.onPollResult,\n );\n if (polling) {\n this.pollWorker.start();\n }\n }\n}\n\nexport class PeFailedBehavior implements Behavior {\n constructor(private bb: BlackboardType) {}\n\n enter() {\n this.bb.submissionRequested = false;\n this.bb.dispatchEvent(new InternalBehaviorTreeUpdateEvent());\n }\n}\n","import { InternalNeedsRerenderEvent } from \"../../private-event-types\";\nimport {\n XenditFatalErrorEvent,\n XenditInitEvent,\n} from \"../../public-event-types\";\nimport { BlackboardType } from \"../behavior-tree\";\nimport { Behavior } from \"../behavior-tree-runner\";\n\nexport class SdkLoadingBehavior implements Behavior {\n constructor(private bb: BlackboardType) {}\n\n enter() {\n // do nothing\n }\n}\n\nexport class SdkActiveBehavior implements Behavior {\n constructor(private bb: BlackboardType) {}\n\n enter() {\n this.bb.dispatchEvent(new XenditInitEvent());\n\n // Schedule rerender (components don't render anything if the sdk state is not active)\n this.bb.dispatchEvent(new InternalNeedsRerenderEvent());\n }\n\n exit() {\n this.bb.dispatchEvent(new InternalNeedsRerenderEvent());\n }\n}\n\nexport class SdkFatalErrorBehavior implements Behavior {\n constructor(private bb: BlackboardType) {}\n\n enter() {\n this.bb.dispatchEvent(\n new XenditFatalErrorEvent(\n this.bb.sdkFatalErrorMessage ?? \"Unknown error\",\n ),\n );\n }\n}\n","import { InternalNeedsRerenderEvent } from \"../../private-event-types\";\nimport { assert } from \"../../utils\";\nimport { BlackboardType } from \"../behavior-tree\";\nimport { Behavior } from \"../behavior-tree-runner\";\n\nexport class SessionActiveBehavior implements Behavior {\n constructor(private bb: BlackboardType) {}\n\n enter() {\n // Schedule rerender (components don't render anything if the session state is not active)\n this.bb.dispatchEvent(new InternalNeedsRerenderEvent());\n }\n\n exit() {\n this.bb.dispatchEvent(new InternalNeedsRerenderEvent());\n }\n}\n\nexport class SessionCompletedBehavior implements Behavior {\n constructor(private bb: BlackboardType) {}\n\n enter() {\n this.bb.sdkEvents.setSessionState(\"COMPLETED\");\n }\n}\n\nexport class SessionFailedBehavior implements Behavior {\n constructor(private bb: BlackboardType) {}\n\n enter() {\n assert(this.bb.world?.session);\n this.bb.sdkEvents.setSessionState(this.bb.world.session.status);\n }\n}\n","import { simulatePaymentRequest } from \"../../api\";\nimport { BffPaymentEntityType } from \"../../backend-types/payment-entity\";\nimport { InternalBehaviorTreeUpdateEvent } from \"../../private-event-types\";\nimport { AbortError, isAbortError } from \"../../utils\";\nimport { BlackboardType } from \"../behavior-tree\";\nimport { Behavior } from \"../behavior-tree-runner\";\n\nexport class SimulatePaymentBehavior implements Behavior {\n exited = false;\n\n private simulationRequest: {\n promise: Promise<void>;\n abortController: AbortController;\n } | null = null;\n\n constructor(private bb: BlackboardType) {}\n\n enter() {\n this.simulatePayment();\n }\n\n exit() {\n this.exited = true;\n this.bb.simulatePaymentRequested = false;\n this.abortSimulation();\n }\n\n abortSimulation() {\n if (this.simulationRequest) {\n this.simulationRequest.abortController.abort(new AbortError());\n this.simulationRequest = null;\n }\n }\n\n simulatePayment() {\n if (this.simulationRequest) {\n this.abortSimulation();\n }\n\n if (!this.bb.channel) {\n throw new Error(\"Channel is missing\");\n }\n if (!this.bb.world?.paymentEntity) {\n throw new Error(\"Payment entity is missing\");\n }\n if (\n this.bb.world?.paymentEntity?.type !== BffPaymentEntityType.PaymentRequest\n ) {\n throw new Error(\"Payment entity is not a payment request\");\n }\n\n const paymentRequestId = this.bb.world?.paymentEntity.id;\n const channelCode = this.bb.channel?.channel_code;\n\n if (this.bb.mock) {\n throw new Error(\"Simulate payment not supported for mock mode\");\n }\n\n const abortController = new AbortController();\n const promise = simulatePaymentRequest(\n this.bb.sdkKey,\n {\n channel_code: channelCode,\n },\n {\n sessionAuthKey: this.bb.sdkKey.sessionAuthKey,\n paymentRequestId: paymentRequestId,\n },\n undefined,\n abortController.signal,\n )\n .then(() => {\n // close the action while we wait for the payment entity to update\n this.bb.actionCompleted = true;\n this.bb.dispatchEvent(new InternalBehaviorTreeUpdateEvent());\n return undefined;\n })\n .catch((error) => {\n if (isAbortError(error)) return;\n\n // ignore if we already exited\n if (!this.exited) {\n // exit the simulate payment state and log the error\n this.bb.simulatePaymentRequested = false;\n console.error(\"Simulate Payment failed:\", error);\n }\n });\n\n this.simulationRequest = {\n promise,\n abortController,\n };\n }\n}\n","import { BffPollResponse, BffResponse } from \"./backend-types/common\";\nimport {\n BffPaymentEntity,\n BffPaymentEntityType,\n BffPaymentRequest,\n BffPaymentRequestStatus,\n BffPaymentToken,\n BffPaymentTokenStatus,\n} from \"./backend-types/payment-entity\";\nimport { assert } from \"./utils\";\n\nconst examplePublicKey =\n \"MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEyCADI5pdf6KmN8+Fxl2ES3yolUKXunNeY3gGScGNEvDcrcHAPKxIInAo5DVnDvTtYtqZvx/bu7HLeBJNMXwHhie/uyNEtT8dSaLc9bd0WSlYdxI+iUsTv2Qu0LiiPrZs\";\nconst exampleSignature =\n \"NKf7whM9meUs/eRCvG0oc180MDiyeli3kH6EQ3ZahECHsZQi5G2IpH6vk3cYMtf01Y1L4OBn1SZCOv1kwpjIUet4DJeoTwwq2nM5b+K7rD+/WFTi3AEX4NWJNkKi0a91\";\n\nexport function makeTestSdkKey() {\n return `session-${randomHexString(32)}-mock-${examplePublicKey}-${exampleSignature}`;\n}\n\nconst ONE_MONTH_IN_MS = 30 * 24 * 60 * 60 * 1000;\n\nexport function makeTestBffData(): BffResponse {\n const mockNow = new Date().toISOString();\n const mockExpiry = new Date(Date.now() + ONE_MONTH_IN_MS).toISOString();\n return {\n session: {\n payment_session_id: `ps-${randomHexString(24)}`,\n created: mockNow,\n updated: mockNow,\n status: \"ACTIVE\",\n reference_id: randomUUID(),\n description: \"Test session\",\n currency: \"IDR\",\n amount: 10000,\n country: \"ID\",\n expires_at: mockExpiry,\n session_type: \"PAY\",\n mode: \"COMPONENTS\",\n locale: \"en\",\n business_id: randomHexString(24),\n customer_id: `cust-${randomUUID()}`,\n capture_method: \"AUTOMATIC\",\n allow_save_payment_method: \"OPTIONAL\",\n items: [\n {\n reference_id: randomUUID(),\n type: \"DIGITAL_PRODUCT\",\n name: \"Item 1\",\n net_unit_amount: 50000,\n quantity: 1,\n category: \"\",\n },\n {\n reference_id: randomUUID(),\n type: \"DIGITAL_SERVICE\",\n name: \"Item 2\",\n net_unit_amount: 50000,\n quantity: 1,\n category: \"\",\n },\n ],\n },\n business: {\n name: \"Components Mock Merchant\",\n country_of_operation: \"Indonesia\",\n merchant_profile_picture_url:\n \"https://placehold.co/256x256.png?text=Logo\",\n },\n customer: {\n type: \"INDIVIDUAL\",\n id: `cust-${randomUUID()}`,\n email: \"exa**@example.com\",\n mobile_number: null,\n phone_number: null,\n individual_detail: {\n given_names: \"exa********\",\n surname: null,\n },\n business_detail: null,\n },\n channels: [\n {\n brand_name: \"Cards\",\n channel_code: \"CARDS\",\n brand_logo_url:\n \"https://assets.xendit.co/payment-session/logos/CARDS.svg\",\n ui_group: \"cards\",\n allow_pay_without_save: true,\n allow_save: true,\n brand_color: \"#000000\",\n min_amount: 5000,\n max_amount: 200000000,\n requires_customer_details: false,\n card: {\n brands: [\n {\n name: \"VISA\",\n logo_url:\n \"https://assets.xendit.co/payment-session/logos/VISA.svg\",\n },\n {\n name: \"MASTERCARD\",\n logo_url:\n \"https://assets.xendit.co/payment-session/logos/MASTERCARD.svg\",\n },\n {\n name: \"JCB\",\n logo_url:\n \"https://assets.xendit.co/payment-session/logos/JCB.svg\",\n },\n ],\n },\n form: [\n {\n group_label: \"Card Details\",\n label: \"Card Number\",\n placeholder: \"1234 1234 1234 1234\",\n type: {\n name: \"credit_card_number\",\n },\n channel_property: \"card_details.card_number\",\n required: true,\n span: 2,\n },\n {\n label: \"Card Expiry Date\",\n placeholder: \"MM/YY\",\n type: {\n name: \"credit_card_expiry\",\n },\n channel_property: [\n \"card_details.expiry_month\",\n \"card_details.expiry_year\",\n ],\n required: true,\n span: 1,\n join: true,\n },\n {\n label: \"CVN\",\n placeholder: \"CVV\",\n type: {\n name: \"credit_card_cvn\",\n },\n channel_property: \"card_details.cvn\",\n required: true,\n span: 1,\n join: true,\n },\n {\n group_label: \"Cardholder Name\",\n label: \"First Name\",\n placeholder: \"First Name\",\n type: {\n name: \"text\",\n min_length: 1,\n max_length: 50,\n regex_validators: [\n {\n regex: \"/^[a-zA-Z\\\\u00C0-\\\\u017F\\\\s]+$/\",\n message:\n \"Invalid input. Please use alphabetic characters only\",\n },\n ],\n },\n channel_property: \"card_details.cardholder_first_name\",\n required: true,\n span: 1,\n },\n {\n label: \"Last Name\",\n placeholder: \"Last Name\",\n type: {\n name: \"text\",\n min_length: 1,\n max_length: 50,\n regex_validators: [\n {\n regex: \"/^[ -~]+$/\",\n message:\n \"Invalid input. Please use alphabetic characters only\",\n },\n ],\n },\n channel_property: \"card_details.cardholder_last_name\",\n required: true,\n span: 1,\n },\n {\n label: \"Email\",\n placeholder: \"john.doe@example.com\",\n type: {\n name: \"email\",\n },\n channel_property: \"card_details.cardholder_email\",\n required: true,\n span: 2,\n },\n {\n label: \"Mobile Number\",\n placeholder: \"8000032341\",\n type: {\n name: \"phone_number\",\n },\n channel_property: \"card_details.cardholder_phone_number\",\n required: true,\n span: 2,\n },\n {\n group_label: \"Billing Address\",\n label: \"First Name\",\n placeholder: \"First Name\",\n type: {\n name: \"text\",\n max_length: 255,\n },\n channel_property: \"billing_information.first_name\",\n span: 1,\n required: true,\n flags: {\n require_billing_information: true,\n },\n },\n {\n label: \"Last Name\",\n placeholder: \"Last Name\",\n type: {\n name: \"text\",\n max_length: 255,\n },\n channel_property: \"billing_information.last_name\",\n span: 1,\n required: true,\n flags: {\n require_billing_information: true,\n },\n join: true,\n },\n {\n label: \"Email\",\n placeholder: \"Email\",\n type: {\n name: \"text\",\n max_length: 255,\n },\n channel_property: \"billing_information.email\",\n span: 2,\n required: true,\n flags: {\n require_billing_information: true,\n },\n join: true,\n },\n {\n label: \"Country\",\n placeholder: \"Country\",\n type: {\n name: \"country\",\n },\n channel_property: \"billing_information.country\",\n span: 1,\n required: true,\n flags: {\n require_billing_information: true,\n },\n join: true,\n },\n {\n label: \"Province\",\n placeholder: \"State / Province\",\n type: {\n name: \"province\",\n },\n channel_property: \"billing_information.province_state\",\n span: 1,\n required: true,\n flags: {\n require_billing_information: true,\n },\n join: true,\n },\n {\n label: \"City\",\n placeholder: \"City\",\n type: {\n name: \"text\",\n max_length: 255,\n },\n channel_property: \"billing_information.city\",\n span: 2,\n required: true,\n flags: {\n require_billing_information: true,\n },\n join: true,\n },\n {\n label: \"Address Line 1\",\n placeholder: \"Address Line 1\",\n type: {\n name: \"text\",\n max_length: 255,\n },\n channel_property: \"billing_information.street_line1\",\n span: 2,\n required: true,\n flags: {\n require_billing_information: true,\n },\n join: true,\n },\n {\n label: \"Address Line 2\",\n placeholder: \"Address Line 2\",\n type: {\n name: \"text\",\n max_length: 255,\n },\n channel_property: \"billing_information.street_line2\",\n span: 2,\n required: true,\n flags: {\n require_billing_information: true,\n },\n join: true,\n },\n {\n label: \"Postal Code\",\n placeholder: \"Postal Code\",\n type: {\n name: \"postal_code\",\n },\n channel_property: \"billing_information.postal_code\",\n span: 2,\n required: true,\n flags: {\n require_billing_information: true,\n },\n join: true,\n },\n ],\n instructions: [\n \"Mock Cards channel\",\n \"This mock channel behaves similarly to the production CARDS channel.\",\n ],\n },\n {\n brand_name: \"Mock E-Wallet Channel\",\n channel_code: \"MOCK_EWALLET\",\n brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n ui_group: \"other\",\n allow_pay_without_save: false,\n allow_save: false,\n brand_color: \"#000000\",\n min_amount: 1000,\n max_amount: 100000000,\n requires_customer_details: false,\n form: [],\n instructions: [\n \"Mock E-Wallet channel\",\n \"This mock channel behaves similarly to production E-Wallets channels with no user input.\",\n ],\n },\n {\n brand_name: \"Mock E-Wallet Channel (Phone input)\",\n channel_code: \"MOCK_EWALLET_WITH_PHONE\",\n brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n ui_group: \"other\",\n allow_pay_without_save: false,\n allow_save: false,\n brand_color: \"#000000\",\n min_amount: 1000,\n max_amount: 100000000,\n requires_customer_details: false,\n form: [\n {\n label: \"Phone Number\",\n placeholder: \"123 123 132\",\n type: {\n name: \"phone_number\",\n },\n channel_property: \"phone_number_field\",\n required: true,\n span: 2,\n },\n ],\n instructions: [\n \"Mock E-Wallet channel\",\n \"This mock channel behaves similarly to production E-Wallets channels with a phone number input.\",\n ],\n },\n {\n brand_name: \"Mock QR Channel\",\n channel_code: \"MOCK_QR\",\n brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n ui_group: \"other\",\n allow_pay_without_save: false,\n allow_save: false,\n brand_color: \"#000000\",\n min_amount: 1000,\n max_amount: 100000000,\n requires_customer_details: false,\n form: [],\n instructions: [\n \"Mock QR channel\",\n \"This mock channel behaves similarly to production QR channels.\",\n ],\n },\n {\n brand_name: \"Mock Direct Debit Channel\",\n channel_code: \"MOCK_DIRECT_DEBIT\",\n brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n ui_group: \"other\",\n allow_pay_without_save: false,\n allow_save: false,\n brand_color: \"#000000\",\n min_amount: 1000,\n max_amount: 100000000,\n requires_customer_details: false,\n form: [],\n instructions: [\n \"Mock Direct Debit channel\",\n \"This mock channel behaves similarly to production Direct Debit channels.\",\n ],\n },\n {\n brand_name: \"Mock OTC Channel\",\n channel_code: \"MOCK_OTC\",\n brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n ui_group: \"other\",\n allow_pay_without_save: false,\n allow_save: false,\n brand_color: \"#000000\",\n min_amount: 1000,\n max_amount: 100000000,\n requires_customer_details: false,\n form: [\n {\n label: \"Payer Name\",\n placeholder: \"Payer Name\",\n type: {\n name: \"text\",\n max_length: 50,\n },\n channel_property: \"payer_name\",\n required: true,\n span: 2,\n },\n ],\n instructions: [\n \"Mock OTC channel\",\n \"This mock channel behaves similarly to production OTC channels.\",\n ],\n },\n {\n brand_name: \"Input Test\",\n channel_code: \"UI_INPUT_TEST\",\n brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n ui_group: \"ui_tests\",\n allow_pay_without_save: false,\n allow_save: false,\n brand_color: \"#000000\",\n min_amount: 1000,\n max_amount: 100000000,\n requires_customer_details: false,\n form: [\n {\n label: \"Card Number (Iframe)\",\n placeholder: \"1234 1234 1234 1234\",\n type: {\n name: \"credit_card_number\",\n },\n channel_property: \"card_number\",\n required: false,\n span: 2,\n },\n {\n label: \"Card Expiry Date (Iframe)\",\n placeholder: \"MM/YY\",\n type: {\n name: \"credit_card_expiry\",\n },\n channel_property: [\"expiry_month\", \"expiry_year\"],\n required: false,\n span: 2,\n },\n {\n label: \"CVN (Iframe)\",\n placeholder: \"CVV\",\n type: {\n name: \"credit_card_cvn\",\n },\n channel_property: \"cvn\",\n required: false,\n span: 2,\n },\n {\n label: \"Text\",\n placeholder: \"Text\",\n type: {\n name: \"text\",\n max_length: 50,\n },\n channel_property: \"text_field\",\n required: false,\n span: 2,\n },\n {\n label: \"Phone Number\",\n placeholder: \"123 123 123\",\n type: {\n name: \"phone_number\",\n },\n channel_property: \"phone_number_field\",\n required: false,\n span: 2,\n },\n {\n label: \"Email\",\n placeholder: \"test@example.com\",\n type: {\n name: \"email\",\n },\n channel_property: \"email_field\",\n required: false,\n span: 2,\n },\n {\n label: \"Postal Code\",\n placeholder: \"123456\",\n type: {\n name: \"postal_code\",\n },\n channel_property: \"postal_code_field\",\n required: false,\n span: 2,\n },\n {\n label: \"Country\",\n placeholder: \"Select\",\n type: {\n name: \"country\",\n },\n channel_property: \"country_field\",\n required: false,\n span: 2,\n },\n {\n label: \"Dropdown\",\n placeholder: \"Select\",\n type: {\n name: \"dropdown\",\n options: [\n { label: \"Option 1\", value: \"option_1\" },\n { label: \"Option 2\", value: \"option_2\" },\n { label: \"Option 3\", value: \"option_3\" },\n ],\n },\n channel_property: \"dropdown_field\",\n required: false,\n span: 2,\n },\n {\n label: \"Dropdown With Icons\",\n placeholder: \"Select\",\n type: {\n name: \"dropdown\",\n options: [\n {\n label: \"Option 1\",\n value: \"option_1\",\n icon_url: \"https://placehold.co/16\",\n },\n {\n label: \"Option 2\",\n value: \"option_2\",\n icon_url: \"https://placehold.co/16\",\n },\n {\n label: \"Option 3\",\n value: \"option_3\",\n icon_url: \"https://placehold.co/16\",\n },\n ],\n },\n channel_property: \"dropdown_field_with_icons\",\n required: false,\n span: 2,\n },\n ],\n instructions: [\n \"This test demonstrates basic usage of all input types.\",\n \"All fields here are optional and blank values should pass validation.\",\n ],\n },\n {\n brand_name: \"Field Grouping Test\",\n channel_code: \"UI_FIELD_GROUPING_TEST\",\n brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n ui_group: \"ui_tests\",\n allow_pay_without_save: false,\n allow_save: false,\n brand_color: \"#000000\",\n min_amount: 1000,\n max_amount: 100000000,\n requires_customer_details: false,\n form: [\n {\n group_label: \"Vertical Grouping\",\n label: \"Top\",\n placeholder: \"Top\",\n type: {\n name: \"text\",\n max_length: 50,\n },\n channel_property: \"a1\",\n required: false,\n span: 2,\n },\n {\n label: \"Middle\",\n placeholder: \"Middle\",\n type: {\n name: \"text\",\n max_length: 50,\n },\n channel_property: \"a2\",\n required: false,\n span: 2,\n join: true,\n },\n {\n label: \"Bottom\",\n placeholder: \"Bottom\",\n type: {\n name: \"text\",\n max_length: 50,\n },\n channel_property: \"a3\",\n required: false,\n span: 2,\n join: true,\n },\n {\n group_label: \"Horizontal Grouping\",\n label: \"Text\",\n placeholder: \"Left\",\n type: {\n name: \"text\",\n max_length: 50,\n },\n channel_property: \"b1\",\n required: false,\n span: 1,\n },\n {\n label: \"Text\",\n placeholder: \"Right\",\n type: {\n name: \"text\",\n max_length: 50,\n },\n channel_property: \"b1\",\n required: false,\n span: 1,\n join: true,\n },\n {\n group_label: \"Mixed Grouping\",\n label: \"Text\",\n placeholder: \"Top Left\",\n type: {\n name: \"text\",\n max_length: 50,\n },\n channel_property: \"c1\",\n required: false,\n span: 1,\n },\n {\n label: \"Text\",\n placeholder: \"Top Right\",\n type: {\n name: \"text\",\n max_length: 50,\n },\n channel_property: \"c2\",\n required: false,\n span: 1,\n join: true,\n },\n {\n label: \"Text\",\n placeholder: \"Middle Left\",\n type: {\n name: \"text\",\n max_length: 50,\n },\n channel_property: \"c3\",\n required: false,\n span: 1,\n join: true,\n },\n {\n label: \"Text\",\n placeholder: \"Middle Right\",\n type: {\n name: \"text\",\n max_length: 50,\n },\n channel_property: \"c4\",\n required: false,\n span: 1,\n join: true,\n },\n {\n label: \"Text\",\n placeholder: \"Bottom Left\",\n type: {\n name: \"text\",\n max_length: 50,\n },\n channel_property: \"c5\",\n required: false,\n span: 1,\n join: true,\n },\n {\n label: \"Text\",\n placeholder: \"Bottom Right\",\n type: {\n name: \"text\",\n max_length: 50,\n },\n channel_property: \"c6\",\n required: false,\n span: 1,\n join: true,\n },\n ],\n instructions: [\n \"This test demonstrates field grouping.\",\n \"Fields can be 1 or 2 cells wide and can be grouped in any arrangement.\",\n ],\n },\n {\n brand_name: \"Text Validation Test\",\n channel_code: \"UI_TEXT_VALIDATION_TEST\",\n brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n ui_group: \"ui_tests\",\n allow_pay_without_save: false,\n allow_save: false,\n brand_color: \"#000000\",\n min_amount: 1000,\n max_amount: 100000000,\n requires_customer_details: false,\n form: [\n {\n label: \"Required Text Field\",\n placeholder: \"Required\",\n type: {\n name: \"text\",\n max_length: 50,\n },\n channel_property: \"required\",\n required: true,\n span: 2,\n },\n {\n label: \"Validate Minimum Length (5)\",\n placeholder: \"Min 5 characters\",\n type: {\n name: \"text\",\n min_length: 5,\n max_length: 50,\n },\n channel_property: \"min_5_chars\",\n required: false,\n span: 2,\n },\n {\n label: \"Validate Using Regexp (/^[a-zA-Z0-9]+$/)\",\n placeholder: \"Alphanumeric only\",\n type: {\n name: \"text\",\n max_length: 50,\n regex_validators: [\n {\n regex: \"/^[a-zA-Z0-9]+$/\",\n message:\n \"Invalid input. Please use alphanumeric characters only\",\n },\n ],\n },\n channel_property: \"regexp_validation\",\n required: false,\n span: 2,\n },\n ],\n instructions: [\n \"This test demonstrates text field validation.\",\n \"Fields should validate on blur or `submit()` or `revealValidationErrors()`. Blurring a blank field does not trigger validation.\",\n ],\n },\n {\n brand_name: \"State/Province Field Test\",\n channel_code: \"UI_STATE_PROVINCE_TEST\",\n brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n ui_group: \"ui_tests\",\n allow_pay_without_save: false,\n allow_save: false,\n brand_color: \"#000000\",\n min_amount: 1000,\n max_amount: 100000000,\n requires_customer_details: false,\n form: [\n {\n group_label: \"Country + State/Province Fields\",\n label: \"Country\",\n placeholder: \"Country\",\n type: {\n name: \"country\",\n },\n channel_property: \"country_field\",\n required: true,\n span: 2,\n },\n {\n label: \"State / Province\",\n placeholder: \"State / Province\",\n type: {\n name: \"province\",\n },\n channel_property: \"province_field\",\n required: true,\n span: 2,\n join: true,\n },\n {\n group_label:\n \"Country + State/Province Fields (Horizontal Grouping)\",\n label: \"Country\",\n placeholder: \"Country\",\n type: {\n name: \"country\",\n },\n channel_property: \"country_field_2\",\n required: true,\n span: 1,\n },\n {\n label: \"State / Province\",\n placeholder: \"State / Province\",\n type: {\n name: \"province\",\n },\n channel_property: \"province_field_2\",\n required: true,\n span: 1,\n join: true,\n },\n ],\n instructions: [\n \"This test demonstrates the country + state/province field combination.\",\n \"Selecting certain countries (US, CA, GB) should change the state/province field to a dropdown with predefined options.\",\n ],\n },\n {\n brand_name: \"Conditional Field Test\",\n channel_code: \"UI_CONDITIONAL_FIELD_TEST\",\n brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n ui_group: \"ui_tests\",\n allow_pay_without_save: false,\n allow_save: false,\n brand_color: \"#000000\",\n min_amount: 1000,\n max_amount: 100000000,\n requires_customer_details: false,\n form: [\n {\n label: \"Toggle Hidden Field\",\n placeholder: \"Select\",\n type: {\n name: \"dropdown\",\n options: [\n { label: \"Show\", value: \"show\" },\n { label: \"Hide\", value: \"hide\" },\n ],\n },\n channel_property: \"toggle\",\n required: true,\n span: 2,\n },\n {\n label: \"Conditional Field\",\n placeholder: \"This field is conditionally shown\",\n type: {\n name: \"text\",\n max_length: 50,\n },\n channel_property: \"conditional_field\",\n required: true,\n span: 2,\n join: true,\n display_if: [[\"toggle\", \"equals\", \"show\"]],\n },\n ],\n instructions: [\n \"This test demonstrates conditional field display based on another field's value.\",\n \"The second field should only appear if 'Show' is selected in the first field.\",\n ],\n },\n {\n brand_name: \"Save Payment Details Test\",\n channel_code: \"UI_SAVE_PAYMENT_DETAILS_TEST\",\n brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n ui_group: \"ui_tests\",\n allow_pay_without_save: true,\n allow_save: true,\n brand_color: \"#000000\",\n min_amount: 1000,\n max_amount: 100000000,\n requires_customer_details: false,\n form: [],\n instructions: [\n \"This channel supports both one-time payment and pay-and-save.\",\n \"A checkbox should be displayed.\",\n ],\n },\n {\n brand_name: \"Paired Channels Test\",\n channel_code: \"UI_PAIRED_CHANNELS_TEST_1\",\n brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n ui_group: \"ui_tests\",\n allow_pay_without_save: true,\n allow_save: false,\n brand_color: \"#000000\",\n min_amount: 1000,\n max_amount: 100000000,\n requires_customer_details: false,\n form: [\n {\n label: \"This should show if the save checkbox is unchecked\",\n placeholder: \"Unchecked\",\n type: {\n name: \"text\",\n max_length: 50,\n },\n channel_property: \"nonsave\",\n required: false,\n span: 2,\n },\n ],\n instructions: [\n \"This channel does not support save, but has a paired channel that does.\",\n \"Changing the save checkbox switches between the two channels.\",\n ],\n },\n {\n brand_name: \"Paired Channels Test\",\n channel_code: \"UI_PAIRED_CHANNELS_TEST_2\",\n brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n ui_group: \"ui_tests\",\n allow_pay_without_save: false,\n allow_save: true,\n brand_color: \"#000000\",\n min_amount: 1000,\n max_amount: 100000000,\n requires_customer_details: false,\n form: [\n {\n label: \"This should show if the save checkbox is checked\",\n placeholder: \"Checked\",\n type: {\n name: \"text\",\n max_length: 50,\n },\n channel_property: \"save\",\n required: false,\n span: 2,\n },\n ],\n instructions: [\n \"This channel can only be used for pay-and-save, but has a paired channel that supports one time payment.\",\n \"Changing the save checkbox switches between the two channels.\",\n ],\n },\n {\n brand_name: \"Banner Test\",\n channel_code: \"UI_BANNER_TEST\",\n brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n ui_group: \"ui_tests\",\n allow_pay_without_save: true,\n allow_save: false,\n brand_color: \"#000000\",\n min_amount: 1000,\n max_amount: 100000000,\n requires_customer_details: false,\n banner: {\n image_url: \"https://placehold.co/256x32.png?text=Banner\",\n alt_text: \"\",\n },\n form: [],\n instructions: [\n \"This channel has a banner image.\",\n \"It should be displayed above this text.\",\n ],\n },\n {\n brand_name: \"Single Item Test\",\n channel_code: \"GROUP_SINGLE_ITEM_TEST\",\n brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n ui_group: \"single_item\",\n allow_pay_without_save: false,\n allow_save: false,\n brand_color: \"#000000\",\n min_amount: 1000,\n max_amount: 100000000,\n requires_customer_details: false,\n form: [],\n instructions: [\n \"This channel is in a group by itself.\",\n \"The channel picker should automatically select it when the group is opened.\",\n ],\n },\n {\n brand_name: \"Disabled Group Test\",\n channel_code: \"GROUP_DISABLED_GROUP_TEST\",\n brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n ui_group: \"disabled\",\n allow_pay_without_save: false,\n allow_save: false,\n brand_color: \"#000000\",\n min_amount: 999999999,\n max_amount: 9999999999,\n requires_customer_details: false,\n form: [],\n instructions: [\n \"This channel is in a disabled group.\",\n \"Since all channels in this group are disabled, the group should not be selectable. You should never see this text because creating this channel will throw an error.\",\n ],\n },\n {\n brand_name: \"Partial Disabled Group (Enabled)\",\n channel_code: \"GROUP_PARTIAL_DISABLED_1\",\n brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n ui_group: \"partial_disabled\",\n allow_pay_without_save: false,\n allow_save: false,\n brand_color: \"#000000\",\n min_amount: 1000,\n max_amount: 100000000,\n requires_customer_details: false,\n form: [],\n instructions: [\n \"This channel is in a partially disabled group.\",\n \"This channel is enabled, but the other channel in the group is disabled. This channel should be automatically selected by the channel picker because it's the only enabled option.\",\n ],\n },\n {\n brand_name: \"Partial Disabled Group (Disabled)\",\n channel_code: \"GROUP_PARTIAL_DISABLED_2\",\n brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n ui_group: \"partial_disabled\",\n allow_pay_without_save: false,\n allow_save: false,\n brand_color: \"#000000\",\n min_amount: 999999999,\n max_amount: 9999999999,\n requires_customer_details: false,\n form: [],\n instructions: [\n \"This channel is in a partially disabled group.\",\n \"This channel is disabled. You should never see this text because creating this channel will throw an error.\",\n ],\n },\n ],\n channel_ui_groups: [\n {\n id: \"cards\",\n label: \"Mock Cards\",\n icon_url: \"https://assets.xendit.co/payment-session/logos/CARDS.svg\",\n },\n {\n id: \"other\",\n label: \"Other Mock Channels\",\n icon_url: \"https://placehold.co/48x48.png?text=Logo\",\n },\n {\n id: \"ui_tests\",\n label: \"Channel UI Test Cases\",\n icon_url: \"https://placehold.co/48x48.png?text=Logo\",\n },\n {\n id: \"single_item\",\n label: \"Mock Single Item Group\",\n icon_url: \"https://placehold.co/48x48.png?text=Logo\",\n },\n {\n id: \"disabled\",\n label: \"Mock Disabled Group\",\n icon_url: \"https://placehold.co/48x48.png?text=Logo\",\n },\n {\n id: \"partial_disabled\",\n label: \"Mock Partial Disabled Group\",\n icon_url: \"https://placehold.co/48x48.png?text=Logo\",\n },\n ],\n };\n}\n\nfunction randomBytes(length: number) {\n const arr = new Uint8Array(length);\n for (let i = 0; i < length; i++) {\n arr[i] = Math.floor(Math.random() * 256);\n }\n return arr;\n}\n\nfunction randomUUID() {\n return [\n randomHexString(8),\n randomHexString(4),\n randomHexString(4),\n randomHexString(4),\n randomHexString(12),\n ].join(\"-\");\n}\n\nfunction randomHexString(length: number) {\n assert(length % 2 === 0);\n const bytes = randomBytes(length / 2);\n return Array.from(bytes)\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n}\n\nexport function makeTestPollResponseForSuccess(\n paymentEntity: BffPaymentEntity,\n): BffPollResponse {\n const baseData = makeTestBffData();\n\n const paymentRequest =\n paymentEntity.type === BffPaymentEntityType.PaymentRequest\n ? paymentEntity.entity\n : undefined;\n const paymentToken =\n paymentEntity.type === BffPaymentEntityType.PaymentToken\n ? paymentEntity.entity\n : undefined;\n\n return {\n session: {\n ...baseData.session,\n status: \"COMPLETED\",\n payment_request_id: paymentRequest?.payment_request_id,\n payment_token_id: paymentToken?.payment_token_id,\n },\n payment_request: withPaymentEntityStatus(paymentRequest, \"SUCCEEDED\"),\n payment_token: withPaymentEntityStatus(paymentToken, \"ACTIVE\"),\n succeeded_channel: {\n channel_code: paymentEntity.entity.channel_code,\n logo_url: \"https://placehold.co/48\",\n },\n };\n}\n\nexport function makeTestPollResponseForFailure(\n paymentEntity: BffPaymentEntity,\n): BffPollResponse {\n const baseData = makeTestBffData();\n\n const paymentRequest =\n paymentEntity.type === BffPaymentEntityType.PaymentRequest\n ? paymentEntity.entity\n : undefined;\n const paymentToken =\n paymentEntity.type === BffPaymentEntityType.PaymentToken\n ? paymentEntity.entity\n : undefined;\n\n return {\n session: {\n ...baseData.session,\n status: \"ACTIVE\",\n },\n payment_request: withPaymentEntityStatus(paymentRequest, \"FAILED\"),\n payment_token: withPaymentEntityStatus(paymentToken, \"FAILED\"),\n };\n}\n\nexport function withPaymentEntityStatus<\n T extends BffPaymentRequest | BffPaymentToken | undefined,\n>(\n prOrPt: T,\n status: T extends BffPaymentRequest\n ? BffPaymentRequestStatus\n : T extends BffPaymentToken\n ? BffPaymentTokenStatus\n : undefined,\n): T {\n if (!prOrPt) return prOrPt;\n return {\n ...prOrPt,\n status: status,\n };\n}\n\nexport function makeTestPaymentRequest(channelCode: string): BffPaymentRequest {\n return {\n payment_request_id: `pr-${randomUUID()}`,\n status: \"REQUIRES_ACTION\",\n channel_code: channelCode,\n actions: [\n {\n type: \"REDIRECT_CUSTOMER\",\n descriptor: \"WEB_URL\",\n value: \"https://example.com/redirect\",\n },\n ],\n session_token_request_id: randomUUID(),\n };\n}\n\nexport function makeTestPaymentToken(channelCode: string): BffPaymentToken {\n return {\n payment_token_id: `pt-${randomUUID()}`,\n status: \"REQUIRES_ACTION\",\n channel_code: channelCode,\n actions: [\n {\n type: \"REDIRECT_CUSTOMER\",\n descriptor: \"WEB_URL\",\n value: \"https://example.com/redirect\",\n },\n ],\n session_token_request_id: randomUUID(),\n };\n}\n","import { createPaymentRequest, createPaymentToken } from \"../../api\";\nimport { ChannelProperties } from \"../../backend-types/channel\";\nimport {\n BffPaymentEntity,\n BffPaymentEntityType,\n BffPaymentRequest,\n BffPaymentRequestFailureCode,\n BffPaymentToken,\n BffPaymentTokenFailureCode,\n getFailureCodeCopyKey,\n getPaymentEntityStatusCopyKey,\n toPaymentEntity,\n} from \"../../backend-types/payment-entity\";\nimport { BffSessionType } from \"../../backend-types/session\";\nimport {\n InternalBehaviorTreeUpdateEvent,\n InternalNeedsRerenderEvent,\n} from \"../../private-event-types\";\nimport {\n XenditPaymentRequestCreatedEvent,\n XenditPaymentRequestDiscardedEvent,\n XenditPaymentTokenCreatedEvent,\n XenditPaymentTokenDiscardedEvent,\n XenditSubmissionBeginEvent,\n XenditSubmissionEndEvent,\n} from \"../../public-event-types\";\nimport { makeTestPaymentRequest, makeTestPaymentToken } from \"../../test-data\";\nimport {\n AbortError,\n assert,\n cancellableSleep,\n isAbortError,\n MOCK_NETWORK_DELAY_MS,\n ParsedSdkKey,\n} from \"../../utils\";\nimport { BlackboardType } from \"../behavior-tree\";\nimport { Behavior } from \"../behavior-tree-runner\";\nimport { NetworkError } from \"../../networking\";\nimport { TFunction } from \"i18next\";\n\nexport class SubmissionBehavior implements Behavior {\n private exited = false;\n\n private submission: {\n abortController: AbortController;\n promise: Promise<void>;\n } | null = null;\n private submissionError: Error | NetworkError | null = null;\n\n constructor(private bb: BlackboardType) {}\n\n enter() {\n this.bb.dispatchEvent(new XenditSubmissionBeginEvent());\n this.bb.sdkEvents.scheduleMockUpdate(\"NONE\");\n this.submit();\n }\n\n exit() {\n this.exited = true;\n\n assert(this.bb.world?.session);\n const t = this.bb.sdkEvents.sdk.t;\n\n // If session is not complete, discard payment entity\n const paymentEntity = this.bb.world.paymentEntity;\n if (this.bb.world.session.status !== \"COMPLETED\" && paymentEntity) {\n switch (paymentEntity.type) {\n case BffPaymentEntityType.PaymentRequest:\n this.bb.dispatchEvent(\n new XenditPaymentRequestDiscardedEvent(paymentEntity.id),\n );\n break;\n case BffPaymentEntityType.PaymentToken:\n this.bb.dispatchEvent(\n new XenditPaymentTokenDiscardedEvent(paymentEntity.id),\n );\n break;\n default:\n paymentEntity satisfies never;\n }\n this.bb.sdkEvents.updateWorld({\n paymentEntity: null,\n sessionTokenRequestId: null,\n });\n }\n\n // Determine reason for submission end\n let reason: string;\n let userErrorMessage: string[] | undefined = undefined;\n let developerErrorMessage:\n | {\n type: \"NETWORK_ERROR\" | \"ERROR\" | \"FAILURE\";\n code: string;\n }\n | undefined = undefined;\n\n if (this.bb.world.session.status !== \"ACTIVE\") {\n // if status is not active, that's why we ended submission\n reason = `SESSION_${this.bb.world.session.status}`;\n } else if (\n paymentEntity &&\n (paymentEntity.entity.status === \"FAILED\" ||\n paymentEntity.entity.status === \"CANCELED\" ||\n paymentEntity.entity.status === \"EXPIRED\")\n ) {\n // the payment entity failed, was canceled or expired\n reason = `PAYMENT_${paymentEntity.type}_${paymentEntity.entity.status}`;\n userErrorMessage = failureCodeUserErrorMessage(\n t,\n paymentEntity.type,\n paymentEntity.entity.status,\n paymentEntity.entity.failure_code,\n );\n developerErrorMessage = {\n type: \"FAILURE\",\n code: paymentEntity.entity.failure_code ?? \"UNKNOWN\",\n };\n } else if (this.submissionError) {\n // there was an error during submission\n reason = \"REQUEST_FAILED\";\n if (this.submissionError instanceof NetworkError) {\n // error code from server\n userErrorMessage = [\n this.submissionError.errorResponse.error_content?.title,\n this.submissionError.errorResponse.error_content?.message_1,\n this.submissionError.errorResponse.error_content?.message_2,\n ].filter((str) => str !== undefined);\n developerErrorMessage = {\n type: \"ERROR\",\n code: this.submissionError.errorResponse.error_code || \"UNKNOWN\",\n };\n } else {\n // unknown or network error\n userErrorMessage = defaultUserErrorMessage(t);\n developerErrorMessage = {\n type: \"NETWORK_ERROR\",\n code: \"NETWORK_ERROR\",\n };\n }\n } else if (this.submission) {\n // the submission is canceled during the request\n reason = \"REQUEST_ABORTED\";\n } else {\n // the submission was canceled during an action\n reason = \"ACTION_ABORTED\";\n }\n\n // Dispatch submission end event\n this.bb.dispatchEvent(\n new XenditSubmissionEndEvent(\n reason,\n userErrorMessage,\n developerErrorMessage,\n ),\n );\n\n // Abort ongoing submission request (the error will be ignored)\n if (this.submission) {\n this.submission?.abortController.abort(new AbortError());\n this.submission = null;\n }\n\n // Ensure submit flag is reset\n this.bb.submissionRequested = false;\n\n // Schedule rerender (to clear the inert attribute on the active component)\n this.bb.dispatchEvent(new InternalNeedsRerenderEvent());\n }\n\n private submit() {\n if (!this.bb.world?.session || !this.bb.channel) {\n throw new Error(\"Session object missing\");\n }\n\n const shouldSendSavePaymentMethod =\n this.bb.world.session.allow_save_payment_method === \"OPTIONAL\" &&\n this.bb.channel?.allow_save;\n const sessionType = this.bb.world?.session?.session_type;\n const channelCode = this.bb.channel.channel_code;\n const channelProperties = this.bb.channelProperties ?? {};\n const abortController = new AbortController();\n const promise = asyncSubmit(\n this.bb.sdkKey,\n this.bb.mock,\n sessionType,\n channelCode,\n channelProperties,\n abortController,\n shouldSendSavePaymentMethod\n ? (this.bb.savePaymentMethod ?? false)\n : undefined,\n )\n .then((paymentEntity: BffPaymentEntity) => {\n // clear abort controller since the request is complete\n this.submission = null;\n\n switch (paymentEntity.type) {\n case BffPaymentEntityType.PaymentRequest:\n this.bb.dispatchEvent(\n new XenditPaymentRequestCreatedEvent(paymentEntity.id),\n );\n break;\n case BffPaymentEntityType.PaymentToken:\n this.bb.dispatchEvent(\n new XenditPaymentTokenCreatedEvent(paymentEntity.id),\n );\n break;\n default:\n paymentEntity satisfies never;\n }\n\n // TODO: the payment-entity-created event should be sent only after the updateWorld call but that causes a behavior tree update which would cause events to fire in the wrong order\n this.bb.sdkEvents.updateWorld({\n paymentEntity,\n sessionTokenRequestId: paymentEntity.entity.session_token_request_id,\n });\n })\n .catch((error) => {\n if (isAbortError(error)) return;\n\n console.error(\"Submission failed:\", error);\n\n // avoid dispatching an event after exit\n if (!this.exited) {\n // set the error flag and exit the submission\n this.bb.submissionRequested = false;\n this.submissionError = error;\n this.bb.dispatchEvent(new InternalBehaviorTreeUpdateEvent());\n }\n });\n\n this.submission = {\n abortController,\n promise,\n };\n }\n}\n\nasync function asyncSubmit(\n sdkKey: ParsedSdkKey,\n mock: boolean,\n sessionType: BffSessionType,\n channelCode: string,\n channelProperties: ChannelProperties,\n abortController: AbortController,\n savePaymentMethod: boolean | undefined,\n): Promise<BffPaymentEntity> {\n let result: BffPaymentToken | BffPaymentRequest;\n if (mock) {\n // mock implementation\n switch (sessionType) {\n case \"PAY\": {\n await cancellableSleep(MOCK_NETWORK_DELAY_MS, abortController.signal);\n result = makeTestPaymentRequest(channelCode);\n break;\n }\n case \"SAVE\": {\n await cancellableSleep(MOCK_NETWORK_DELAY_MS, abortController.signal);\n result = makeTestPaymentToken(channelCode);\n break;\n }\n default: {\n throw new Error(`The session type ${sessionType} is not supported.`);\n }\n }\n } else {\n // real implementation\n switch (sessionType) {\n case \"PAY\": {\n result = await createPaymentRequest(\n sdkKey,\n {\n session_id: sdkKey.sessionAuthKey,\n channel_code: channelCode,\n channel_properties: channelProperties,\n save_payment_method: savePaymentMethod,\n // TODO: pass customer for VA channels\n },\n null,\n null,\n abortController.signal,\n );\n break;\n }\n case \"SAVE\": {\n result = await createPaymentToken(\n sdkKey,\n {\n session_id: sdkKey.sessionAuthKey,\n channel_code: channelCode,\n channel_properties: channelProperties,\n },\n null,\n null,\n abortController.signal,\n );\n break;\n }\n default: {\n throw new Error(`The session type ${sessionType} is not supported.`);\n }\n }\n }\n\n return toPaymentEntity(result);\n}\n\nfunction defaultUserErrorMessage(t: TFunction<\"session\">): string[] {\n return [\n t(\"default_error.title\"),\n t(\"default_error.message_1\"),\n t(\"default_error.message_2\"),\n ];\n}\n\nfunction failureCodeUserErrorMessage(\n t: TFunction<\"session\">,\n type: BffPaymentEntityType,\n status: \"FAILED\" | \"EXPIRED\" | \"CANCELED\",\n failureCode:\n | BffPaymentTokenFailureCode\n | BffPaymentRequestFailureCode\n | undefined,\n): string[] {\n const title = t(getPaymentEntityStatusCopyKey(type, status, \"title\"));\n const subtext = failureCode\n ? t(\n getFailureCodeCopyKey(failureCode),\n t(\"failure_code_unknown\", { failureCode }),\n )\n : t(getPaymentEntityStatusCopyKey(type, status, \"subtext\"));\n return [title, subtext];\n}\n","import { BffChannel, ChannelProperties } from \"../backend-types/channel\";\nimport { BffAction, BffPaymentEntity } from \"../backend-types/payment-entity\";\nimport { BffSession } from \"../backend-types/session\";\nimport { WorldState } from \"../public-sdk\";\nimport { SdkEventManager } from \"../sdk-event-manager\";\nimport {\n ParsedSdkKey,\n pickAction,\n redirectCanBeHandledInIframe,\n} from \"../utils\";\nimport { channelPropertiesAreValid } from \"../validation\";\nimport { behaviorNode } from \"./behavior-tree-runner\";\nimport {\n ActionCompletedBehavior,\n ActionIframeBehavior,\n ActionRedirectBehavior,\n} from \"./behaviors/action\";\nimport { CardInfoBehavior } from \"./behaviors/card-info\";\nimport {\n ChannelInvalidBehavior,\n ChannelValidBehavior,\n} from \"./behaviors/channel\";\nimport {\n PeFailedBehavior,\n PePendingBehavior,\n PeRequiresActionBehavior,\n} from \"./behaviors/payment-entity\";\nimport {\n SdkActiveBehavior,\n SdkFatalErrorBehavior,\n SdkLoadingBehavior,\n} from \"./behaviors/sdk\";\nimport {\n SessionActiveBehavior,\n SessionCompletedBehavior,\n SessionFailedBehavior,\n} from \"./behaviors/session\";\nimport { SimulatePaymentBehavior } from \"./behaviors/simulate-payment\";\nimport { SubmissionBehavior } from \"./behaviors/submission\";\n\nexport type SdkStatus = \"ACTIVE\" | \"LOADING\" | \"FATAL_ERROR\";\n\n/**\n * \"Blackboard\" means mutable state available to the behavior tree and all behavior instances.\n */\nexport type BlackboardType = {\n readonly mock: boolean;\n readonly sdkKey: ParsedSdkKey;\n readonly sdkEvents: SdkEventManager; // TODO: factor this out\n\n // backend state\n world: WorldState | null;\n\n // current UI state\n sdkStatus: SdkStatus;\n sdkFatalErrorMessage: string | null;\n channel: BffChannel | null;\n channelProperties: ChannelProperties | null;\n savePaymentMethod: boolean | null;\n\n // dispatch event on the SDK instance\n dispatchEvent(event: Event): boolean;\n\n // flags\n // if true, start a submission, if false abort submission\n submissionRequested: boolean;\n // if true, start simulate payment, if false abort simulate payment\n simulatePaymentRequested: boolean;\n // if true, do not show the current action UI\n actionCompleted: boolean;\n // if true, poll the payment entity immediately on the next update\n pollImmediatelyRequested: boolean;\n};\n\nexport function behaviorTreeForSdk(bb: BlackboardType) {\n switch (bb.sdkStatus) {\n case \"LOADING\": {\n return behaviorNode(SdkLoadingBehavior);\n }\n case \"ACTIVE\": {\n if (!bb.world?.session) {\n throw new Error(\"Session is required when SDK is active\");\n }\n return behaviorNode(\n SdkActiveBehavior,\n \"active\",\n behaviorTreeForSession(bb),\n );\n }\n case \"FATAL_ERROR\": {\n return behaviorNode(SdkFatalErrorBehavior);\n }\n default: {\n bb.sdkStatus satisfies never;\n throw new Error(`Unknown SDK status: ${bb.sdkStatus as SdkStatus}`);\n }\n }\n}\n\nexport function behaviorTreeForSession(bb: BlackboardType) {\n if (!bb.world?.session) {\n throw new Error(\"Session is required to create behavior tree for session\");\n }\n switch (bb.world.session.status) {\n case \"ACTIVE\": {\n return behaviorNode(\n SessionActiveBehavior,\n \"active\",\n bb.submissionRequested\n ? behaviorTreeForSubmission(bb)\n : behaviorTreeForForm(bb),\n );\n }\n case \"COMPLETED\": {\n return behaviorNode(SessionCompletedBehavior);\n }\n case \"EXPIRED\": {\n return behaviorNode(SessionFailedBehavior, bb.world.session.status);\n }\n case \"CANCELED\": {\n return behaviorNode(SessionFailedBehavior, bb.world.session.status);\n }\n default: {\n bb.world.session.status satisfies never;\n throw new Error(\n `Unknown session status: ${(bb.world.session as BffSession).status}`,\n );\n }\n }\n}\n\nexport function behaviorTreeForForm(bb: BlackboardType) {\n if (!bb.channel || !bb.world?.session) {\n return undefined;\n }\n\n const billingInformationRequired =\n bb.world.cardDetails.details?.require_billing_information ?? false;\n\n const channelPropertiesValid = channelPropertiesAreValid(\n bb.world.session.session_type,\n bb.channel,\n bb.channelProperties ?? null,\n billingInformationRequired,\n );\n\n const formValidityBehavior = channelPropertiesValid\n ? behaviorNode(ChannelValidBehavior)\n : behaviorNode(ChannelInvalidBehavior);\n\n if (bb.channel.channel_code === \"CARDS\") {\n return behaviorNode(CardInfoBehavior, \"card-info\", formValidityBehavior);\n } else {\n return formValidityBehavior;\n }\n}\n\nexport function behaviorTreeForSubmission(bb: BlackboardType) {\n if (!bb.world) {\n throw new Error(\"SDK not initialized in behaviorTreeForSubmission\");\n }\n\n return behaviorNode(\n SubmissionBehavior,\n \"submission\",\n bb.world.paymentEntity && bb.world.sessionTokenRequestId !== null\n ? behaviorTreeForPaymentEntity(bb)\n : undefined,\n );\n}\n\nexport function behaviorTreeForPaymentEntity(bb: BlackboardType) {\n if (!bb.world?.paymentEntity) {\n throw new Error(\n \"Payment entity is required to create behavior tree for payment entity\",\n );\n }\n\n switch (bb.world.paymentEntity.entity.status) {\n case \"PENDING\": {\n return behaviorNode(PePendingBehavior);\n }\n case \"REQUIRES_ACTION\": {\n return behaviorNode(\n PeRequiresActionBehavior,\n bb.world.paymentEntity.id,\n behaviorTreeForAction(bb),\n );\n }\n case \"FAILED\":\n case \"EXPIRED\":\n case \"CANCELED\": {\n return behaviorNode(PeFailedBehavior);\n }\n case \"ACCEPTING_PAYMENTS\": {\n // Never happens because sessions don't set the PR type to REUSABLE_PAYMENT_CODE\n throw new Error(\"Status ACCEPTING_PAYMENTS should not happen\");\n }\n case \"AUTHORIZED\":\n case \"ACTIVE\":\n case \"SUCCEEDED\": {\n // The payemnt entity is completed but the session is still active, it should automatically switch to completed soon\n return behaviorNode(PePendingBehavior, bb.world.paymentEntity.id);\n }\n default: {\n bb.world.paymentEntity.entity satisfies never;\n throw new Error(\n `Unknown payment entity status: ${(bb.world.paymentEntity as BffPaymentEntity).entity.status}`,\n );\n }\n }\n}\n\nexport function behaviorTreeForAction(bb: BlackboardType) {\n if (!bb.world?.paymentEntity) {\n throw new Error(\"Payment entity is missing\");\n }\n\n if (bb.actionCompleted) {\n // action completed is for when we want to close the action UI and go back to polling\n return behaviorNode(ActionCompletedBehavior);\n }\n\n if (bb.simulatePaymentRequested) {\n return behaviorNode(SimulatePaymentBehavior); // TODO: simulate action should be run in parallel with action behavior\n }\n\n const action = pickAction(bb.world.paymentEntity.entity.actions);\n switch (action.type) {\n case \"REDIRECT_CUSTOMER\": {\n switch (action.descriptor) {\n case \"WEB_URL\": {\n if (redirectCanBeHandledInIframe(action)) {\n return behaviorNode(ActionIframeBehavior, action.value);\n } else {\n return behaviorNode(ActionRedirectBehavior, action.value);\n }\n }\n case \"DEEPLINK_URL\": {\n throw new Error(\n `Unsupported action type ${action.type} ${action.descriptor}`,\n );\n }\n case \"WEB_GOOGLE_PAYLINK\": {\n throw new Error(\n `Unsupported action type ${action.type} ${action.descriptor}`,\n );\n }\n }\n break;\n }\n case \"PRESENT_TO_CUSTOMER\": {\n switch (action.descriptor) {\n case \"QR_STRING\": {\n throw new Error(\n `Unsupported action type ${action.type} ${action.descriptor}`,\n );\n }\n case \"PAYMENT_CODE\": {\n throw new Error(\n `Unsupported action type ${action.type} ${action.descriptor}`,\n );\n }\n case \"VIRTUAL_ACCOUNT_NUMBER\": {\n throw new Error(\n `Unsupported action type ${action.type} ${action.descriptor}`,\n );\n }\n }\n break;\n }\n case \"API_POST_REQUEST\": {\n switch (action.descriptor) {\n case \"CAPTURE_PAYMENT\": {\n throw new Error(\n `Unsupported action type ${action.type} ${action.descriptor}`,\n );\n }\n case \"VALIDATE_OTP\": {\n throw new Error(\n `Unsupported action type ${action.type} ${action.descriptor}`,\n );\n }\n case \"RESEND_OTP\": {\n throw new Error(\n `Unsupported action type ${action.type} ${action.descriptor}`,\n );\n }\n }\n break;\n }\n }\n action satisfies never;\n throw new Error(\n `Unknown action type: ${(action as BffAction).type} ${(action as BffAction).descriptor}`,\n );\n}\n","import { useCallback, useEffect, useRef } from \"preact/hooks\";\nimport { IframeActionCompleteEvent } from \"../../../shared/types\";\n\ntype Props = {\n url: string;\n mock: boolean;\n onIframeComplete: (event: IframeActionCompleteEvent) => void;\n};\n\nexport function ActionIframe(props: Props) {\n const { url, mock, onIframeComplete } = props;\n\n const iframeRef = useRef<HTMLIFrameElement>(null);\n\n const handleEventFromIframe = useCallback(\n (event: MessageEvent) => {\n if (!iframeRef.current) return;\n\n const expectedSource = iframeRef.current.contentWindow;\n\n if (event.source !== expectedSource) {\n // we are not the target of this message\n return;\n }\n\n if (\n event.data?.type ===\n (\"xendit-iframe-action-complete\" satisfies IframeActionCompleteEvent[\"type\"])\n ) {\n onIframeComplete(event.data as IframeActionCompleteEvent);\n }\n },\n [onIframeComplete],\n );\n\n useEffect(() => {\n window.addEventListener(\"message\", handleEventFromIframe);\n return () => {\n window.removeEventListener(\"message\", handleEventFromIframe);\n };\n }, [handleEventFromIframe]);\n\n if (mock) {\n return (\n <iframe\n ref={iframeRef}\n srcDoc={MOCK_IFRAME_SRCDOC}\n width=\"250\"\n height=\"400\"\n className=\"xendit-action-iframe\"\n />\n );\n }\n\n return (\n <iframe\n ref={iframeRef}\n src={url}\n width=\"500\"\n height=\"600\"\n // sandbox=\"allow-scripts\"\n className=\"xendit-action-iframe\"\n />\n );\n}\n\nconst MOCK_IFRAME_SRCDOC = `\n <html>\n <head>\n <title>Xendit Mock Action Iframe</title>\n </head>\n <body>\n <p>This is a mock action iframe.</p>\n <p>Click the button below to simulate completion of the action.</p>\n <button onclick=\"parent.postMessage({type: 'xendit-iframe-action-complete', mockStatus: 'success'}, '*')\">\n Simulate Success\n </button>\n <button onclick=\"parent.postMessage({type: 'xendit-iframe-action-complete', mockStatus: 'fail'}, '*')\">\n Simulate Failure\n </button>\n </body>\n </html>\n`;\n","import { useCallback, useLayoutEffect, useRef } from \"preact/hooks\";\nimport Icon from \"./icon\";\nimport {\n ComponentChildren,\n FunctionComponent,\n TargetedMouseEvent,\n} from \"preact\";\n\ntype Props = {\n /**\n * Title shown above the border.\n */\n title: string;\n /**\n * Called on close (after animation).\n */\n onClose: () => void;\n /**\n * If true, close the dialog on the next render. The animation will play then onClose will be called.\n */\n close?: boolean;\n children?: ComponentChildren;\n};\n\nexport const Dialog: FunctionComponent<Props> = (props) => {\n const { title, onClose, children } = props;\n\n const closeCalledRef = useRef(false);\n const closeAnimationPlaying = useRef(false);\n\n const dialogRef = useRef<HTMLDivElement>(null);\n const backdropRef = useRef<HTMLDivElement>(null);\n\n // call close callback only once\n const onCloseSafe = useCallback(() => {\n if (closeCalledRef.current) return;\n closeCalledRef.current = true;\n onClose();\n }, [onClose]);\n\n // play fade-out animation then call close callback\n const onCloseWithAnimation = useCallback(() => {\n if (\n !dialogRef.current ||\n !backdropRef.current ||\n closeAnimationPlaying.current\n ) {\n return;\n }\n closeAnimationPlaying.current = true;\n\n backdropRef.current.animate(backdropFadeOutKeyframes, animationOptions);\n const animation = dialogRef.current.animate(\n foregroundFadeOutKeyframes,\n animationOptions,\n );\n animation.onfinish = onCloseSafe;\n }, [onCloseSafe]);\n\n const handleBackdropClick = useCallback(\n (event: TargetedMouseEvent<HTMLDivElement>) => {\n // Close dialog only if the backdrop itself is clicked, not the dialog content\n if (event.target === event.currentTarget) {\n onCloseWithAnimation();\n }\n },\n [onCloseWithAnimation],\n );\n\n // play fade-in animation\n useLayoutEffect(() => {\n backdropRef.current?.animate(backdropFadeKeyframes, animationOptions);\n dialogRef.current?.animate(foregroundFadeKeyframes, animationOptions);\n }, []);\n\n useLayoutEffect(() => {\n if (props.close) {\n onCloseWithAnimation();\n }\n }, [props.close, onCloseWithAnimation]);\n\n return (\n <div\n className=\"xendit-dialog-backdrop\"\n onClick={handleBackdropClick}\n ref={backdropRef}\n >\n <div className=\"xendit-dialog\" ref={dialogRef}>\n <div className=\"xendit-dialog-header xendit-text-16 xendit-text-semibold\">\n {title}\n <button aria-label=\"Close\" onClick={onCloseWithAnimation}>\n <Icon name=\"x\" size={24} />\n </button>\n </div>\n <div className=\"xendit-dialog-body\">{children}</div>\n </div>\n </div>\n );\n};\n\nconst animationOptions: EffectTiming = {\n duration: 200,\n easing: \"ease-in-out\",\n fill: \"forwards\",\n};\n\nconst backdropFadeKeyframes: Keyframe[] = [\n {\n backgroundColor: \"rgba(0, 0, 0, 0)\",\n },\n {\n backgroundColor: \"rgba(0, 0, 0, 0.5)\",\n },\n];\nconst backdropFadeOutKeyframes = backdropFadeKeyframes.slice().reverse();\n\nconst foregroundFadeKeyframes: Keyframe[] = [\n {\n opacity: 0,\n transform: `scale(0.9) translateY(-20px)`,\n },\n {\n opacity: 1,\n transform: \"\",\n },\n];\nconst foregroundFadeOutKeyframes = foregroundFadeKeyframes.slice().reverse();\n","import { useLayoutEffect, useRef } from \"preact/hooks\";\nimport { XenditComponents } from \"../public-sdk\";\nimport { Dialog } from \"./dialog\";\nimport { internal } from \"../internal\";\n\ntype Props = {\n sdk: XenditComponents;\n title: string;\n close?: boolean;\n onClose: () => void;\n};\n\nexport default function DefaultActionContainer(props: Props) {\n const { sdk, title, onClose } = props;\n\n const wrapperRef = useRef<HTMLDivElement>(null);\n useLayoutEffect(() => {\n const component = sdk.createActionContainerComponent(internal);\n wrapperRef.current?.replaceChildren(component);\n return () => {\n sdk.destroyComponent(component);\n };\n }, [sdk]);\n\n return (\n <Dialog title={title} onClose={onClose} close={props.close}>\n <div ref={wrapperRef} />\n </Dialog>\n );\n}\n","import { createElement, render } from \"preact\";\nimport { BffSessionStatus } from \"./backend-types/session\";\nimport { internal } from \"./internal\";\nimport { InternalUpdateWorldState } from \"./private-event-types\";\nimport {\n XenditActionBeginEvent,\n XenditActionEndEvent,\n XenditInitEvent,\n XenditSessionCompleteEvent,\n XenditSessionExpiredOrCanceledEvent,\n XenditWillRedirectEvent,\n} from \"./public-event-types\";\nimport {\n UpdatableWorldState,\n XenditComponents,\n XenditComponentsTest,\n} from \"./public-sdk\";\nimport { ActionIframe } from \"./components/action-iframe\";\nimport DefaultActionContainer from \"./components/default-action-container\";\nimport {\n makeTestPollResponseForFailure,\n makeTestPollResponseForSuccess,\n} from \"./test-data\";\nimport { IframeActionCompleteEvent } from \"../../shared/types\";\n\nexport class SdkEventManager {\n sdk: XenditComponents;\n\n hasInFlightRequest = false;\n submitting = false;\n action = false;\n\n constructor(sdk: XenditComponents) {\n this.sdk = sdk;\n }\n\n updateWorld(data: UpdatableWorldState) {\n this.sdk.dispatchEvent(new InternalUpdateWorldState(data));\n }\n\n scheduleMockUpdate(kind: \"NONE\" | \"ACTION_SUCCESS\" | \"ACTION_FAILURE\") {\n if (this.sdk.isMock() && this.sdk instanceof XenditComponentsTest) {\n this.sdk.assertInitialized();\n switch (kind) {\n case \"NONE\":\n this.sdk.nextMockUpdate = null;\n break;\n case \"ACTION_SUCCESS\":\n if (!this.sdk[internal].worldState.paymentEntity) break;\n this.sdk.nextMockUpdate = makeTestPollResponseForSuccess(\n this.sdk[internal].worldState.paymentEntity,\n );\n break;\n case \"ACTION_FAILURE\":\n if (!this.sdk[internal].worldState.paymentEntity) break;\n this.sdk.nextMockUpdate = makeTestPollResponseForFailure(\n this.sdk[internal].worldState.paymentEntity,\n );\n break;\n }\n }\n }\n\n setInitialized() {\n this.sdk.dispatchEvent(new XenditInitEvent());\n }\n\n setHasAction(action: boolean) {\n if (this.action === action) return;\n this.action = action;\n\n if (action) {\n this.sdk.dispatchEvent(new XenditActionBeginEvent());\n } else {\n this.sdk.dispatchEvent(new XenditActionEndEvent());\n }\n }\n\n setSessionState(state: BffSessionStatus) {\n if (state === \"COMPLETED\") {\n this.sdk.dispatchEvent(new XenditSessionCompleteEvent());\n } else {\n this.sdk.dispatchEvent(new XenditSessionExpiredOrCanceledEvent());\n }\n }\n\n setWillRedirect() {\n this.sdk.dispatchEvent(new XenditWillRedirectEvent());\n }\n\n /**\n * Creates a default action container if the user has not created one already.\n * Returns a cleanup function that destroys the default action container if it was created.\n */\n ensureHasActionContainer() {\n if (this.sdk[internal].liveComponents.actionContainer) {\n // user created action container already\n // TODO: validate it's in the dom and the right size\n return () => {\n this.emptyActionContainer();\n };\n }\n\n let cleanedUp = false;\n let success = false;\n\n const container = document.createElement(\"div\");\n container.setAttribute(\"class\", \"xendit-default-action-container\");\n const props = {\n sdk: this.sdk,\n title: \"Complete your payment\",\n onClose: () => {\n cleanedUp = true;\n render(null, container);\n container.remove();\n if (!success) {\n this.sdk.abortSubmission();\n }\n },\n };\n render(createElement(DefaultActionContainer, props), container);\n document.body.appendChild(container);\n\n // Cleanup function\n // (if actionCancelledByUser is true, abort the submission after the modal closes)\n return (actionCancelledByUser: boolean) => {\n if (!actionCancelledByUser) {\n success = true;\n }\n\n if (cleanedUp) return;\n\n // make the dialog play its close animation before removing it\n render(\n createElement(DefaultActionContainer, {\n ...props,\n close: true,\n }),\n container,\n );\n };\n }\n\n emptyActionContainer() {\n const container = this.sdk[internal].liveComponents.actionContainer;\n if (container) {\n render(null, container);\n }\n }\n\n populateActionContainerWithIframe(\n url: string,\n mock: boolean,\n onIframeComplete: (event: IframeActionCompleteEvent) => void,\n ) {\n const container = this.sdk[internal].liveComponents.actionContainer;\n if (!container) {\n throw new Error(\n \"Trying to populate action container, but it is missing; A default action container should have been created. This is a bug, please contact support.\",\n );\n }\n\n render(\n createElement(ActionIframe, { url, mock, onIframeComplete }),\n container,\n );\n }\n}\n","// affects number formatting (thousands separator, decimal separator)\n// defaults to \",\" for thousands and \".\" for decimal\nexport const CURRENCY_NUMBER_FORMAT_LOCALE: Record<string, string> = {\n IDR: \"id\",\n VND: \"vi\",\n BRL: \"pt-BR\",\n RUB: \"ru\",\n CZK: \"cs\",\n RON: \"ro\",\n UAH: \"uk\",\n CLP: \"es-CL\",\n COP: \"es-CO\",\n UYU: \"es-UY\",\n ARS: \"es-AR\",\n INR: \"hi-IN\",\n NPR: \"hi-IN\",\n LKR: \"hi-IN\",\n BDT: \"hi-IN\",\n};\n\n// Heavily modified from https://gist.github.com/ksafranski/2973986\n// checked against https://documentation.infiniteblue.com/platform/Currency_formats.htm\nexport const CURRENCY_SYMBOLS: Record<string, string> = {\n USD: \"US$\",\n CAD: \"CA$\",\n EUR: \"€\",\n AFN: \"؋\",\n ALL: \"Lek\",\n AMD: \"֏\",\n ARS: \"AR$\",\n AUD: \"AU$\",\n AZN: \"₼\",\n BAM: \"KM\",\n BDT: \"৳\",\n BIF: \"FBu\",\n BND: \"BN$\",\n BOB: \"Bs\",\n BRL: \"R$\",\n BWP: \"P\",\n BYN: \"Br\",\n BZD: \"BZ$\",\n CDF: \"FrCD\",\n CHF: \"CHF\",\n CLP: \"CL$\",\n CNY: \"CN¥\",\n COP: \"CO$\",\n CRC: \"₡\",\n CVE: \"CV$\",\n CZK: \"Kč\",\n DJF: \"Fdj\",\n DKK: \"kr\",\n DOP: \"RD$\",\n ERN: \"Nfk\",\n ETB: \"Br\",\n GBP: \"£\",\n GEL: \"₾\",\n GHS: \"GH₵\",\n GNF: \"FG\",\n GTQ: \"Q\",\n HKD: \"HK$\",\n HNL: \"L\",\n HUF: \"Ft\",\n IDR: \"Rp\",\n ILS: \"₪\",\n INR: \"₹\",\n IRR: \"IRR\",\n ISK: \"kr\",\n JMD: \"J$\",\n JPY: \"¥\",\n KES: \"Ksh\",\n KHR: \"៛\",\n KMF: \"FC\",\n KRW: \"₩\",\n KZT: \"₸\",\n LKR: \"SL Re\",\n MDL: \"lei\",\n MGA: \"MGA\",\n MKD: \"MKD\",\n MMK: \"K\",\n MOP: \"MOP$\",\n MUR: \"₨\",\n MXN: \"MX$\",\n MYR: \"RM\",\n MZN: \"MTn\",\n NAD: \"N$\",\n NGN: \"₦\",\n NIO: \"C$\",\n NOK: \"kr\",\n NPR: \"रु\",\n NZD: \"NZ$\",\n PAB: \"B/.\",\n PEN: \"S/.\",\n PHP: \"₱\",\n PKR: \"₨\",\n PLN: \"zł\",\n PYG: \"₲\",\n RON: \"RON\",\n RSD: \"RSD\",\n RUB: \"₽\",\n RWF: \"FR\",\n SDG: \"SDG\",\n SEK: \"kr\",\n SGD: \"S$\",\n SOS: \"Ssh\",\n THB: \"฿\",\n TOP: \"T$\",\n TRY: \"TL\",\n TTD: \"TT$\",\n TWD: \"NT$\",\n TZS: \"TSh\",\n UAH: \"₴\",\n UGX: \"USh\",\n UYU: \"$U\",\n UZS: \"сум\",\n VND: \"₫\",\n XAF: \"FCFA\",\n XOF: \"CFA\",\n ZAR: \"R\",\n ZMW: \"K\",\n ZWL: \"ZWL$\",\n};\n\n// $ is replaced with the currency symbol, 1 is replaced with the amount\n// default \"$1\"\nexport const CURRENCY_SYMBOL_POSITION: Record<string, string> = {\n ALL: \"1 $\",\n BAM: \"1 $\",\n BYN: \"1 $\",\n CZK: \"1 $\",\n DKK: \"1 $\",\n GEL: \"1 $\",\n HUF: \"1 $\",\n ISK: \"1 $\",\n IRR: \"1 $\",\n KHR: \"1$\",\n MDL: \"1 $\",\n MKD: \"1 $\",\n NOK: \"1 $\",\n PLN: \"1 $\",\n RON: \"1 $\",\n RSD: \"1 $\",\n RUB: \"1$\",\n SEK: \"1 $\",\n UZS: \"1 $\",\n VND: \"1$\",\n};\n\n// only list currencies that have more than 2 decimals\nexport const CURRENCY_SYMBOL_DECIMALS: Record<string, number> = {\n BHD: 3,\n JOD: 3,\n KWD: 3,\n LYD: 3,\n OMR: 3,\n TND: 3,\n};\n","import {\n XenditActionBeginEvent,\n XenditActionEndEvent,\n XenditFatalErrorEvent,\n XenditEventListener,\n XenditEventMap,\n XenditInitEvent,\n XenditPaymentRequestCreatedEvent,\n XenditPaymentRequestDiscardedEvent,\n XenditPaymentTokenCreatedEvent,\n XenditPaymentTokenDiscardedEvent,\n XenditReadyEvent,\n XenditSessionCompleteEvent,\n XenditSessionExpiredOrCanceledEvent,\n XenditSubmissionBeginEvent,\n XenditSubmissionEndEvent,\n XenditWillRedirectEvent,\n} from \"./public-event-types\";\nimport {\n XenditSdkOptions as XenditComponentsOptions,\n XenditGetChannelsOptions,\n} from \"./public-options-types\";\nimport {\n XenditCustomer,\n XenditPaymentChannel,\n XenditPaymentChannelGroup,\n XenditSession,\n} from \"./public-data-types\";\nimport { internal } from \"./internal\";\nimport { createElement, createRef, RefObject, render } from \"preact\";\nimport {\n XenditChannelPicker,\n XenditClearCurrentChannelEvent,\n} from \"./components/channel-picker\";\nimport { XenditSessionProvider } from \"./components/session-provider\";\nimport {\n BffChannel,\n BffChannelUiGroup,\n ChannelProperties,\n} from \"./backend-types/channel\";\nimport {\n PaymentChannel,\n XenditChannelPropertiesChangedEvent,\n XenditSavePaymentMethodChangedEvent,\n} from \"./components/payment-channel\";\nimport { fetchSessionData } from \"./api\";\nimport { ChannelFormHandle } from \"./components/channel-form\";\nimport { BehaviorTree } from \"./lifecycle/behavior-tree-runner\";\nimport {\n behaviorTreeForSdk,\n BlackboardType,\n SdkStatus,\n} from \"./lifecycle/behavior-tree\";\nimport { BffSession } from \"./backend-types/session\";\nimport { BffBusiness } from \"./backend-types/business\";\nimport { BffCustomer } from \"./backend-types/customer\";\nimport { BffPaymentEntity } from \"./backend-types/payment-entity\";\nimport { SdkEventManager } from \"./sdk-event-manager\";\nimport { SessionActiveBehavior } from \"./lifecycle/behaviors/session\";\nimport {\n InternalBehaviorTreeUpdateEvent,\n InternalNeedsRerenderEvent,\n InternalUpdateWorldState,\n} from \"./private-event-types\";\nimport {\n BffPollResponse,\n BffResponse,\n BffSucceededChannel,\n} from \"./backend-types/common\";\nimport {\n canBeSimulated,\n errorToString,\n lockDownInteralProperty,\n mergeIgnoringUndefined,\n MOCK_NETWORK_DELAY_MS,\n ParsedSdkKey,\n parseSdkKey,\n removeUnreleasedChannels,\n resolvePairedChannel,\n satisfiesMinMax,\n sleep,\n} from \"./utils\";\nimport { makeTestSdkKey } from \"./test-data\";\nimport {\n ChannelInvalidBehavior,\n ChannelValidBehavior,\n} from \"./lifecycle/behaviors/channel\";\nimport { PeRequiresActionBehavior } from \"./lifecycle/behaviors/payment-entity\";\nimport { SubmissionBehavior } from \"./lifecycle/behaviors/submission\";\nimport {\n bffChannelsToPublic,\n bffCustomerToPublic,\n bffSessionToPublic,\n bffUiGroupsToPublic,\n findChannelPairs,\n} from \"./bff-marshal\";\nimport { BffCardDetails } from \"./backend-types/card-details\";\nimport { initI18n } from \"./localization\";\nimport { TFunction } from \"i18next\";\nimport { amountFormat } from \"./amount-format\";\n\n/**\n * @internal\n * Represents payment channel state.\n */\ntype CachedChannelComponent = {\n element: HTMLElement;\n channel: XenditPaymentChannel;\n channelProperties: ChannelProperties | null;\n channelFormRef: RefObject<ChannelFormHandle>;\n savePaymentMethod: boolean;\n};\n\n/**\n * @internal\n * The session and associated entities that we get from the backend.\n */\nexport type WorldState = {\n business: BffBusiness;\n customer: BffCustomer | null;\n session: BffSession;\n channels: BffChannel[];\n channelUiGroups: BffChannelUiGroup[];\n paymentEntity: BffPaymentEntity | null;\n sessionTokenRequestId: string | null;\n succeededChannel: BffSucceededChannel | null;\n cardDetails: {\n cardNumber: string | null;\n details: BffCardDetails | null;\n };\n};\n\n/**\n * @internal\n * Updatable parts of the world state. Nulls are written, undefineds are ignored.\n */\nexport type UpdatableWorldState = {\n [K in\n | \"session\"\n | \"paymentEntity\"\n | \"sessionTokenRequestId\"\n | \"succeededChannel\"\n | \"cardDetails\"]?: WorldState[K] | undefined;\n};\n\n/**\n * @internal\n * Used to assert that the SDK is initialized.\n */\ntype InitializedSdk = {\n [internal]: {\n worldState: WorldState;\n };\n};\n\n/**\n * @public\n */\nexport class XenditComponents extends EventTarget {\n /**\n * @internal\n */\n public t: TFunction<\"session\"> = ((str: string): string => {\n throw new Error(\"Localization used before initialization; this is a bug.\");\n }) as TFunction<\"session\">;\n\n /**\n * @internal\n */\n protected [internal]: {\n /**\n * Parsed SDK key components.\n */\n sdkKey: ParsedSdkKey;\n\n /**\n * User-provided options.\n */\n options: XenditComponentsOptions;\n\n /**\n * The session and ascociated data from the backend.\n */\n worldState: WorldState | null;\n\n /**\n * The event manager.\n */\n eventManager: SdkEventManager;\n\n /**\n * Behavior tree for state management.\n */\n behaviorTree: BehaviorTree<BlackboardType>;\n\n /**\n * Components the user has created\n */\n liveComponents: {\n channelPicker: HTMLElement | null;\n paymentChannels: Map<string, CachedChannelComponent>;\n actionContainer: HTMLElement | null;\n };\n\n /**\n * The most recently created payment channel component's channel code.\n * This is used as a key into `paymentChannelComponents`.\n */\n currentChannelCode: string | null;\n };\n\n /**\n * @public\n * Initialize the SDK for a given session.\n *\n * You can get the components sdk key from the components_sdk_key field of the\n * `POST /sessions` or `GET /session` endpoints.\n *\n * This creates an object that can be used to create UI components, that allow\n * users to make payment or save tokens, using a variety of channels, depending on\n * the session configuration.\n *\n * @example\n * ```\n * // initialize\n * const components = new XenditComponents({\n * sessionClientKey: \"your-session-client-key\",\n * });\n * ```\n */\n constructor(options: XenditComponentsOptions) {\n super();\n\n if (typeof window === \"undefined\" || typeof document === \"undefined\") {\n throw new Error(\"XenditComponents can only be instantiated in a browser\");\n }\n\n const eventManager = new SdkEventManager(this);\n const sdkKey = parseSdkKey(options.sessionClientKey);\n this[internal] = {\n sdkKey,\n options,\n worldState: null,\n eventManager,\n liveComponents: {\n channelPicker: null,\n paymentChannels: new Map(),\n actionContainer: null,\n },\n behaviorTree: new BehaviorTree<BlackboardType>(behaviorTreeForSdk, {\n sdkEvents: eventManager,\n sdkKey,\n mock: this.isMock(),\n sdkStatus: \"LOADING\",\n sdkFatalErrorMessage: null,\n channel: null,\n channelProperties: null,\n dispatchEvent: this.dispatchEvent.bind(this),\n world: null,\n submissionRequested: false,\n simulatePaymentRequested: false,\n actionCompleted: false,\n pollImmediatelyRequested: false,\n savePaymentMethod: null,\n }),\n currentChannelCode: null,\n };\n lockDownInteralProperty(this as unknown as { [internal]: unknown });\n\n this.behaviorTreeUpdate();\n\n // internal event listeners\n (this as EventTarget).addEventListener(\n InternalUpdateWorldState.type,\n this.onUpdateWorldState.bind(this),\n );\n (this as EventTarget).addEventListener(\n InternalBehaviorTreeUpdateEvent.type,\n this.behaviorTreeUpdate.bind(this),\n );\n let hasScheduledRender = false;\n (this as EventTarget).addEventListener(\n InternalNeedsRerenderEvent.type,\n () => {\n if (hasScheduledRender) return;\n hasScheduledRender = true;\n queueMicrotask(() => {\n hasScheduledRender = false;\n this.rerenderAllComponents();\n this.syncInertAttribute();\n });\n },\n );\n\n // Initialize session data asynchronously\n this.initializeAsync();\n }\n\n /**\n * @internal\n * Initialize session data asynchronously\n */\n protected async initializeAsync(): Promise<void> {\n let bff: BffResponse;\n try {\n // Fetch session data from the server\n bff = await fetchSessionData(\n this[internal].sdkKey,\n this[internal].sdkKey.sessionAuthKey,\n );\n bff.channels = removeUnreleasedChannels(bff.channels);\n } catch (error) {\n this[internal].behaviorTree.bb.sdkStatus = \"FATAL_ERROR\";\n this[internal].behaviorTree.bb.sdkFatalErrorMessage =\n errorToString(error);\n this.behaviorTreeUpdate();\n return;\n }\n\n // Update world state\n this.dispatchEvent(\n new InternalUpdateWorldState({\n business: bff.business,\n customer: bff.customer,\n session: bff.session,\n channels: bff.channels,\n channelUiGroups: bff.channel_ui_groups,\n paymentEntity: null,\n sessionTokenRequestId: null,\n succeededChannel: null,\n cardDetails: {\n cardNumber: null,\n details: null,\n },\n } satisfies WorldState),\n );\n }\n\n /**\n * @internal\n * Throws if the SDK is not initialized.\n */\n public assertInitialized(): asserts this is InitializedSdk {\n if (!this[internal].worldState) {\n throw new Error(\n \"The session data is not loaded. Listen for the `init` event. Only `createChannelPickerComponent` can be called before initialization.\",\n );\n }\n }\n\n /**\n * @internal\n */\n public isMock(): boolean {\n return false;\n }\n\n /**\n * @internal\n */\n private findChannel(channelCode: string) {\n this.assertInitialized();\n\n // TODO: use a map\n const channel = this[internal].worldState.channels.find(\n (ch) => ch.channel_code === channelCode,\n );\n return channel ?? null;\n }\n\n /**\n * @internal\n * Updates the session or other ascociated entities and syncs everything that depends on them.\n */\n private onUpdateWorldState(event: Event) {\n const data = (event as InternalUpdateWorldState).data;\n this[internal].worldState = mergeIgnoringUndefined(\n this[internal].worldState ?? ({} as WorldState),\n data,\n );\n\n // update locale\n const locale = this[internal].worldState.session.locale;\n const i18n = initI18n(locale);\n this.t = i18n.getFixedT(locale, \"session\");\n\n // update everything\n this.behaviorTreeUpdate();\n this.rerenderAllComponents();\n }\n\n /**\n * @internal\n * Updates the behavior tree with the latest world state and component state.\n */\n private behaviorTreeUpdate(): void {\n const bb = this[internal].behaviorTree.bb;\n\n if (bb.sdkStatus === \"LOADING\" && this[internal].worldState) {\n bb.sdkStatus = \"ACTIVE\";\n }\n\n bb.world = this[internal].worldState;\n\n const component = this[internal].currentChannelCode\n ? this[internal].liveComponents.paymentChannels.get(\n this[internal].currentChannelCode,\n )\n : null;\n bb.channel = component\n ? resolvePairedChannel(\n component.channel[internal],\n component.savePaymentMethod,\n )\n : null;\n bb.channelProperties = component ? component.channelProperties : null;\n bb.savePaymentMethod = component ? component.savePaymentMethod : null;\n\n try {\n this[internal].behaviorTree.update();\n } catch (error) {\n // crash handler, move to fatal error state\n this[internal].behaviorTree.bb.sdkStatus = \"FATAL_ERROR\";\n this[internal].behaviorTree.bb.sdkFatalErrorMessage =\n errorToString(error);\n this[internal].behaviorTree.update();\n }\n }\n\n /**\n * @internal\n * Return the current SDK status.\n */\n public getSdkStatus(): SdkStatus {\n // TODO: pass this as a prop into SessionProvider instead\n return this[internal].behaviorTree.bb.sdkStatus;\n }\n\n /**\n * @internal\n * Rerender everything.\n */\n private rerenderAllComponents() {\n // re-render live components\n this.renderChannelPicker();\n for (const channelCode of this[\n internal\n ].liveComponents.paymentChannels.keys()) {\n this.renderPaymentChannel(channelCode);\n }\n }\n\n /**\n * @public\n * Retrieve the xendit session object.\n */\n getSession(): XenditSession {\n this.assertInitialized();\n return bffSessionToPublic(this[internal].worldState.session);\n }\n\n /**\n * @public\n * Retrieve the customer ascociated with the session.\n */\n getCustomer(): XenditCustomer | null {\n this.assertInitialized();\n if (!this[internal].worldState.customer) return null;\n return bffCustomerToPublic(this[internal].worldState.customer);\n }\n\n /**\n * @public\n * Retrieve the list of payment channels available for this session.\n *\n * The channels are organized in a way that is appropriate to show to users.\n * You can use this to render your channel picker UI.\n *\n * You can pass `{filter: \"CHANNEL_CODE\"}` to filter channels by string or regexp.\n */\n getActiveChannelGroups(\n options?: XenditGetChannelsOptions,\n ): XenditPaymentChannelGroup[] {\n this.assertInitialized();\n return bffUiGroupsToPublic(\n this[internal].worldState.channels,\n this[internal].worldState.channelUiGroups,\n {\n options: {\n filter: options?.filter,\n filterMinMax: options?.filterMinMax ?? true,\n },\n session: this[internal].worldState.session,\n pairChannels: findChannelPairs(this[internal].worldState.channels),\n },\n );\n }\n\n /**\n * @public\n * Retrieve an unorganized list of payment channels available for this session.\n *\n * Use this when you need to search for specific channels. When rendering your UI,\n * consider using `getActiveChannelGroups` if you support many channels.\n *\n * You can pass `{filter: \"CHANNEL_CODE\"}` to filter channels by string or regexp.\n */\n getActiveChannels(\n options?: XenditGetChannelsOptions,\n ): XenditPaymentChannel[] {\n this.assertInitialized();\n return bffChannelsToPublic(\n this[internal].worldState.channels,\n this[internal].worldState.channelUiGroups,\n {\n options: {\n filter: options?.filter,\n filterMinMax: options?.filterMinMax ?? true,\n },\n session: this[internal].worldState.session,\n pairChannels: findChannelPairs(this[internal].worldState.channels),\n },\n );\n }\n\n /**\n * @public\n * Creates a drop-in UI component for selecting a channel and making payments.\n *\n * This returns a div immediately. The component will be populated after\n * initialization is complete. You should insert this div into the DOM.\n *\n * Calling this again will destroy it and return a new element. Manually\n * destroying the component is not necessary, removing it from the DOM is sufficient.\n *\n * @example\n * ```\n * const channelPickerDiv = components.createChannelPickerComponent();\n * document.querySelector(\".payment-container\").appendChild(channelPickerDiv);\n * ```\n */\n createChannelPickerComponent(): HTMLElement {\n // destroy previous instance if it exists\n if (this[internal].liveComponents.channelPicker) {\n this.destroyComponent(this[internal].liveComponents.channelPicker);\n }\n\n const container = document.createElement(\"xendit-channel-picker\");\n\n // Store the container for later population\n this[internal].liveComponents.channelPicker = container;\n\n // If initialization is complete, populate immediately\n // Otherwise, it will be populated when initializeAsync completes\n if (this[internal].worldState) {\n this.renderChannelPicker();\n }\n\n this.setupUiEventsForChannelPicker(container);\n\n return container;\n }\n\n /**\n * @internal\n * Render an existing channel picker element\n */\n private renderChannelPicker(): void {\n this.assertInitialized();\n\n const container = this[internal].liveComponents.channelPicker;\n if (!container) return;\n\n render(\n createElement(XenditSessionProvider, {\n data: this[internal].worldState,\n sdk: this,\n children: createElement(XenditChannelPicker, {}),\n }),\n container,\n );\n }\n\n /**\n * @internal\n * Handles events from the channel picker component.\n */\n private setupUiEventsForChannelPicker(container: HTMLElement): void {\n // clear current channel when the channel picker accordion is closed\n container.addEventListener(\n XenditClearCurrentChannelEvent.type,\n (_event) => {\n this.assertInitialized();\n\n // do nothing if the current channel is not in the same ui group as the event\n const event = _event as XenditClearCurrentChannelEvent;\n const currentChannelCode = this[internal].currentChannelCode;\n if (!currentChannelCode) return;\n const channel = this[internal].worldState.channels.find(\n (ch) => ch.channel_code === currentChannelCode,\n );\n if (!channel || channel.ui_group !== event.uiGroup) return;\n\n // clear active channel\n this.setCurrentChannel(null);\n },\n );\n }\n\n /**\n * @public\n * Creates a UI component for making payments with a specific channel. It will\n * contain form fields, and/or instructions for the user.\n *\n * This also makes the provided channel \"current\", the `submit` method\n * will use that channel.\n *\n * This returns a div. You should insert this div into the DOM. Creating a new\n * component multiple times for the same channel will return the same component instance.\n *\n * Destroying the component manually is not necessary, removing it from the DOM is sufficient,\n * but if you want to clear the form state, you can do so with the `destroyComponent` method.\n *\n * @example\n * ```\n * const cardsChannel = components.getActiveChannels().find(ch => ch.channelCode === \"CARDS\");\n * const paymentComponent = components.createChannelComponent(cardsChannel);\n * document.querySelector(\".payment-container\").appendChild(paymentComponent);\n * ```\n */\n createChannelComponent(\n channel: XenditPaymentChannel,\n active = true,\n ): HTMLElement {\n this.assertInitialized();\n\n if (\n !satisfiesMinMax(this[internal].worldState.session, channel[internal][0])\n ) {\n throw new Error(\n `Cannot create channel component: \\`session.amount\\` is outside of the channel's min/max amount.`,\n );\n }\n\n const channelCode = channel[internal][0].channel_code;\n\n // return previously created component if it exists\n const cachedComponent =\n this[internal].liveComponents.paymentChannels.get(channelCode);\n let container: HTMLElement;\n let channelFormRef = createRef<ChannelFormHandle>();\n\n if (cachedComponent) {\n container = cachedComponent.element;\n channelFormRef = cachedComponent.channelFormRef;\n } else {\n container = document.createElement(\"xendit-payment-channel\");\n container.setAttribute(\"inert\", \"\");\n this.setupUiEventsForPaymentChannel(container);\n\n this[internal].liveComponents.paymentChannels.set(channelCode, {\n element: container,\n channel,\n channelProperties: null,\n channelFormRef: channelFormRef,\n savePaymentMethod: false,\n });\n }\n\n this.renderPaymentChannel(channelCode);\n if (active) {\n this.setCurrentChannel(channel);\n }\n\n return container;\n }\n\n /**\n * @internal\n * Render an existing payment channel element\n */\n private renderPaymentChannel(channelCode: string): void {\n this.assertInitialized();\n\n const container =\n this[internal].liveComponents.paymentChannels.get(channelCode);\n if (!container) return;\n\n const channelObject = container.channel;\n\n render(\n createElement(XenditSessionProvider, {\n data: this[internal].worldState,\n sdk: this,\n children: createElement(PaymentChannel, {\n channels: channelObject[internal],\n savePaymentMethod: container.savePaymentMethod,\n formRef: container.channelFormRef,\n }),\n }),\n container.element,\n );\n }\n\n /**\n * @public\n * Returns the current payment channel.\n */\n getCurrentChannel() {\n const currentChannelCode = this[internal].currentChannelCode;\n if (!currentChannelCode) {\n return null;\n }\n return (\n this.getActiveChannels().find((ch) => {\n if (\n ch.channelCode === currentChannelCode ||\n (Array.isArray(ch.channelCode) &&\n ch.channelCode.includes(currentChannelCode))\n ) {\n return true;\n }\n }) ?? null\n );\n }\n\n /**\n * @public\n * Makes the given channel the current channel for submission.\n *\n * The current channel:\n * - Is interactive if it has a form (other channel components are non-interactive)\n * - Is used when `submit()` is called.\n *\n * Set to null to clear the current channel.\n */\n setCurrentChannel(channel: XenditPaymentChannel | null): void {\n const currentChannelCode = this[internal].currentChannelCode;\n\n const channelCode = channel?.[internal][0].channel_code ?? null;\n\n if (currentChannelCode === channelCode) {\n // no change\n return;\n }\n\n // if channel is not null, the component must exist\n let component: CachedChannelComponent | null = null;\n if (channel && channelCode) {\n component =\n this[internal].liveComponents.paymentChannels.get(channelCode) ?? null;\n if (!component) {\n this.createChannelComponent(channel, false);\n component =\n this[internal].liveComponents.paymentChannels.get(channelCode) ??\n null;\n }\n }\n\n this[internal].currentChannelCode = channelCode;\n this.behaviorTreeUpdate();\n this.syncInertAttribute();\n }\n\n /**\n * @internal\n * Ensure all components have the correct inert attribute. This needs to be called when the current channel changes or a submission starts or ends.\n */\n syncInertAttribute() {\n // all channel components should have `inert` unless they are the current channel and there is no submission in progress\n const hasSubmissionInProgress =\n this[internal].behaviorTree.bb.submissionRequested;\n const channelComponents = this[internal].liveComponents.paymentChannels;\n\n for (const [_, component] of channelComponents) {\n const channelCode = Array.isArray(component.channel.channelCode)\n ? component.channel.channelCode[0]\n : component.channel.channelCode;\n if (\n channelCode === this[internal].currentChannelCode &&\n !hasSubmissionInProgress\n ) {\n if (component.element.hasAttribute(\"inert\")) {\n component.element.removeAttribute(\"inert\");\n }\n } else {\n component.element.setAttribute(\"inert\", \"\");\n }\n }\n }\n\n /**\n * @internal\n * Handles events from the payment channel component.\n * - Updates channel properties when they change.\n * - Updates save payment method setting when it changes.\n */\n private setupUiEventsForPaymentChannel(container: HTMLElement): void {\n // update per-channel channel properties\n container.addEventListener(\n XenditChannelPropertiesChangedEvent.type,\n (_event) => {\n const event = _event as XenditChannelPropertiesChangedEvent;\n const channelCode = event.channel;\n const component =\n this[internal].liveComponents.paymentChannels.get(channelCode);\n if (!component) {\n return;\n }\n\n component.channelProperties = event.channelProperties;\n\n // update behavior tree (form validity may have changed)\n this.behaviorTreeUpdate();\n },\n );\n\n // update save payment method setting\n container.addEventListener(\n XenditSavePaymentMethodChangedEvent.type,\n (_event) => {\n const event = _event as XenditSavePaymentMethodChangedEvent;\n const channelCode = event.channel;\n const component =\n this[internal].liveComponents.paymentChannels.get(channelCode);\n if (!component) {\n return;\n }\n\n component.savePaymentMethod = event.savePaymentMethod;\n this.behaviorTreeUpdate();\n\n // TODO: need to re-collect all channel properties since form fields may have been added or removed\n this.rerenderAllComponents();\n },\n );\n }\n\n /**\n * @public\n *\n * Reveals any hidden validation errors in the current channel's form. Does nothing if\n * there are no validation errors to show.\n *\n * Normally, validation errors on required fields are not shown if the user did not touch them.\n */\n showValidationErrors(): void {\n const channelInvalidBehavior = this[internal].behaviorTree.findBehavior(\n ChannelInvalidBehavior,\n );\n if (!channelInvalidBehavior) {\n // form is not invalid\n return;\n }\n\n const channelCode = this[internal].currentChannelCode;\n if (!channelCode) {\n // no current channel\n return;\n }\n\n const component =\n this[internal].liveComponents.paymentChannels.get(channelCode);\n if (!component) {\n throw new Error(\n \"Current channel is set but component is missing; this is a bug, please contact support.\",\n );\n }\n\n const form = component.channelFormRef.current;\n form?.validate();\n }\n\n /**\n * @public\n * Creates a container element for rendering action UIs.\n *\n * For example, 3DS or QR codes.\n *\n * Create an action container before or during the action-begin event, and\n * the action UI will be rendered inside it.\n * Creating an action container during an action will throw an error.\n *\n * If no action container is created (or if the created container is removed from the DOM or is too small),\n * the SDK will create an action container (in a modal dialog) for you.\n */\n createActionContainerComponent(): HTMLElement;\n\n /**\n * @internal If isInternal is passed, it bypasses the action-in-progress check.\n **/\n createActionContainerComponent(isInternal: typeof internal): HTMLElement;\n\n // implementation\n createActionContainerComponent(isInternal?: typeof internal): HTMLElement {\n this.assertInitialized();\n\n if (this[internal].liveComponents.actionContainer) {\n this.destroyComponent(this[internal].liveComponents.actionContainer);\n }\n\n const requiresActionBehavior = this[internal].behaviorTree.findBehavior(\n PeRequiresActionBehavior,\n );\n if (\n isInternal !== internal &&\n requiresActionBehavior &&\n !requiresActionBehavior.canCreateActionContainer\n ) {\n throw new Error(\n \"Unable to create action container; there is an action in progress. Create an action before or during the `action-begin` event.\",\n );\n }\n\n const container = document.createElement(\"xendit-action-container\");\n\n this[internal].liveComponents.actionContainer = container;\n\n return container;\n }\n\n /**\n * @public\n * Destroys a component of any type created by the SDK. Removes it from the DOM if necessary.\n * Throws if the element is not a xendit component or if it was already destroyed.\n */\n destroyComponent(component: HTMLElement): void {\n if (!component.tagName.startsWith(\"XENDIT-\")) {\n throw new Error(\n \"Unable to destroy component; only elements created by this SDK can be destroyed.\",\n );\n }\n\n if (this[internal].liveComponents.channelPicker === component) {\n this[internal].liveComponents.channelPicker = null;\n render(null, component);\n component.remove();\n return;\n }\n\n for (const [channelCode, cachedComponent] of this[internal].liveComponents\n .paymentChannels) {\n if (cachedComponent.element === component) {\n this[internal].liveComponents.paymentChannels.delete(channelCode);\n if (this[internal].currentChannelCode === channelCode) {\n this.setCurrentChannel(null);\n }\n render(null, component);\n component.remove();\n return;\n }\n }\n\n if (this[internal].liveComponents.actionContainer === component) {\n this[internal].liveComponents.actionContainer = null;\n render(null, component);\n component.remove();\n return;\n }\n\n throw new Error(\n \"Unable to destroy component; component not found. It may have already been destroyed.\",\n );\n }\n\n /**\n * @public\n * Submit, makes a payment or saves a payment method for the current payment channel.\n *\n * Call this when your submit button is clicked. Listen to the events to know the status:\n * - `submission-begin` and `submission-end` to know when submission is in progress (you should disable your UI during this time). Submission-end also provides a reason.\n * - `action-begin` and `action-end` to know when user action is in progress\n * - `will-redirect` when the user will be redirected to another page\n * - `payment-[request|token]-[created|discarded]` informs you of the ID of the resource we create on the backend, and if/when it is discarded\n * - `session-complete` when the payment request or token is successfully created (you should redirect the user to your confirmation page)\n * - `session-expired-or-canceled` can happen at any time, but it's likely to happen on submission if the session expired or was cancelled during checkout\n * - `submission-not-ready` fires before `submission-begin` to indicate that you cannot submit while a submission is in progress\n *\n * When a submission fails, you can try again by calling `submit()` again.\n * (The `session-expired-or-canceled` and `fatal-error` events are fatal, submission failure is normal and recoverable)\n *\n * This corresponds to the endpoints:\n * - `POST /v3/payment_requests` for PAY sessions\n * - `POST /v3/payment_tokens` for SAVE sessions\n */\n submit() {\n this.assertInitialized();\n\n const sessionActiveBehavior = this[internal].behaviorTree.findBehavior(\n SessionActiveBehavior,\n );\n if (!sessionActiveBehavior) {\n throw new Error(\n \"Unable to submit; the session is not in the active state. Listen to the `session-complete` and `session-expired-or-canceled` events and display success or failure states accordingly.\",\n );\n }\n\n const channelCode = this[internal].currentChannelCode;\n if (!channelCode) {\n throw new Error(\n \"Unable to submit; there is no current payment channel. Create a payment component with `createChannelComponent` or make an existing one active with `setCurrentChannel`.\",\n );\n }\n\n const component =\n this[internal].liveComponents.paymentChannels.get(channelCode);\n if (!component) {\n throw new Error(\n \"Current channel is set but component is missing; this is a bug, please contact support.\",\n );\n }\n\n // ensure if user submits in invalid state, errors are visible\n this.showValidationErrors();\n\n const channelInvalidBehavior = this[internal].behaviorTree.findBehavior(\n ChannelInvalidBehavior,\n );\n if (channelInvalidBehavior) {\n throw new Error(\n \"Unable to submit; the form for the current channel has errors. Listen to the `submission-ready` and `submission-not-ready` events, do not allow submission while in the not-ready state.\",\n );\n }\n\n const channelValidBehavior =\n this[internal].behaviorTree.findBehavior(ChannelValidBehavior);\n if (!channelValidBehavior) {\n throw new Error(\n \"Unable to submit; the SDK is not in a valid state for submission. Listen to the `submission-ready` and `submission-not-ready` events, do not allow submission while in the not-ready state.\",\n );\n }\n\n this[internal].behaviorTree.bb.submissionRequested = true;\n this.behaviorTreeUpdate();\n\n this.syncInertAttribute();\n }\n\n /**\n * @public\n * Cancels a submission.\n *\n * If a submission is in-flight, the request is cancelled. If an action is in progress,\n * the action is aborted. Any active PaymentRequest or PaymentToken is abandoned.\n *\n * Does nothing if there is no active submission.\n */\n abortSubmission() {\n this.assertInitialized();\n\n const submissionBehavior =\n this[internal].behaviorTree.findBehavior(SubmissionBehavior);\n if (!submissionBehavior) {\n return; // no submission in progress\n }\n\n this[internal].behaviorTree.bb.submissionRequested = false;\n this.behaviorTreeUpdate();\n }\n\n /**\n * @public\n * Completes a payment in test mode.\n *\n * The session must be in test mode, and the session type must be PAY, and\n * the sdk must have an in-progress action, and the channel must be a QR, VA, or OTC channel.\n *\n * @example\n * ```\n * components.addEventListener(\"action-begin\", () => {\n * components.simulatePayment();\n * });\n * ```\n */\n simulatePayment() {\n this.assertInitialized();\n\n if (this[internal].worldState.session.session_type !== \"PAY\") {\n throw new Error(\n 'Unable to simulate payment, the session type is not \"PAY\".',\n );\n }\n\n const requiresActionBehavior = this[internal].behaviorTree.findBehavior(\n PeRequiresActionBehavior,\n );\n if (!requiresActionBehavior) {\n throw new Error(\n \"Unable to simulate payment; there is no action in progress. You can simulate payments any time between the `action-begin` and `action-end` events.\",\n );\n }\n\n const paymentEntity = this[internal].worldState.paymentEntity;\n if (!paymentEntity) {\n throw new Error(\n \"The PeRequiresActionBehavior is present but there is no payment entity. This is a bug, please contact support.\",\n );\n }\n\n const channel = this.findChannel(paymentEntity.entity.channel_code);\n\n if (!channel) {\n throw new Error(\n \"Channel not found; this is a bug, please contact support.\",\n );\n }\n\n if (!canBeSimulated(channel)) {\n throw new Error(\n \"Unable to simulate payment; the payment channel does not support simulation.\",\n );\n }\n\n this[internal].behaviorTree.bb.simulatePaymentRequested = true;\n this.behaviorTreeUpdate();\n }\n\n /**\n * @internal\n * TODO: remove this, it's for debugging\n */\n getState() {\n const channelCode = this[internal].currentChannelCode;\n const component = this[internal].liveComponents.paymentChannels.get(\n channelCode ?? \"\",\n );\n return {\n channelCode,\n channelProperties: component?.channelProperties || null,\n behaviorTree: this[internal].behaviorTree,\n };\n }\n\n /**\n * @public\n * The `init` event lets you know when the session data has been loaded.\n *\n * The `createChannelPickerComponent` method can be called before this event, but\n * most other functionaility needs to wait for this event.\n *\n * @example\n * ```\n * components.addEventListener(\"init\", () => {\n * components.getSession();\n * });\n * ```\n */\n addEventListener(\n name: \"init\",\n listener: XenditEventListener<XenditInitEvent>,\n options?: boolean | AddEventListenerOptions,\n ): void;\n\n /**\n * @public\n * The `submission-ready` and `submission-not-ready` events let you know when submission should be available.\n * If ready, you can call `submit()` to begin the payment or token creation process.\n *\n * \"submission-ready\" means a channel has been selected, and all required fields are populated,\n * and all fields are valid.\n *\n * Use this to enable/disable your submit button.\n *\n * @example\n * ```\n * components.addEventListener(\"submission-ready\", () => {\n * submitButton.disabled = false;\n * });\n * components.addEventListener(\"submission-not-ready\", () => {\n * submitButton.disabled = true;\n * });\n * ```\n */\n addEventListener(\n name: \"submission-ready\",\n listener: XenditEventListener<XenditReadyEvent>,\n options?: boolean | AddEventListenerOptions,\n ): void;\n addEventListener(\n name: \"submission-not-ready\",\n listener: XenditEventListener<XenditReadyEvent>,\n options?: boolean | AddEventListenerOptions,\n ): void;\n\n /**\n * @public\n * The `submission-begin` and `submission-end` events let you know when a submission is in progress.\n *\n * Use this to disable your UI while submission is in progress.\n *\n * In the case of successful submission, `submission-end` will be followed by `session-complete`.\n * In the case of failed submission, the SDK will return to the ready state and you can try submitting again.\n */\n addEventListener(\n name: \"submission-begin\",\n listener: XenditEventListener<XenditSubmissionBeginEvent>,\n options?: boolean | AddEventListenerOptions,\n ): void;\n addEventListener(\n name: \"submission-end\",\n listener: XenditEventListener<XenditSubmissionEndEvent>,\n options?: boolean | AddEventListenerOptions,\n ): void;\n\n /**\n * @public\n * The events `payment-request-created`, `payment-token-created`, `payment-request-discarded`, and `payment-token-discarded`\n * let you know when a payment request or payment token has been created (as part of a submission) or\n * discarded (by cancelling or failing a submission).\n */\n addEventListener(\n name: \"payment-request-created\",\n listener: XenditEventListener<XenditPaymentRequestCreatedEvent>,\n options?: boolean | AddEventListenerOptions,\n ): void;\n addEventListener(\n name: \"payment-token-created\",\n listener: XenditEventListener<XenditPaymentTokenCreatedEvent>,\n options?: boolean | AddEventListenerOptions,\n ): void;\n addEventListener(\n name: \"payment-request-discarded\",\n listener: XenditEventListener<XenditPaymentRequestDiscardedEvent>,\n options?: boolean | AddEventListenerOptions,\n ): void;\n addEventListener(\n name: \"payment-token-discarded\",\n listener: XenditEventListener<XenditPaymentTokenDiscardedEvent>,\n options?: boolean | AddEventListenerOptions,\n ): void;\n\n /**\n * @public\n * The `action-begin` and `action-end` events let you know when a user action is in progress.\n *\n * After submission, an action may be required (e.g. 3DS, redirect, QR code, etc.).\n * The SDK will control the UI for actions, you don't need to do anything.\n *\n * Avoid changing any application state while an action is in progress as it may be\n * confusing for the user or interrupt their payment attempt.\n *\n * `action-end` is fired after the action is done, successfully or not. Note that users can\n * voluntarily dismiss actions.\n */\n addEventListener(\n name: \"action-begin\",\n listener: XenditEventListener<XenditActionBeginEvent>,\n options?: boolean | AddEventListenerOptions,\n ): void;\n addEventListener(\n name: \"action-end\",\n listener: XenditEventListener<XenditActionEndEvent>,\n options?: boolean | AddEventListenerOptions,\n ): void;\n\n /**\n * @public\n * Event handler called just before the user is redirected to a third party site to\n * complete the payment.\n *\n * Since redirects are actions, this will always be preceded by an `action-begin` event.\n */\n addEventListener(\n name: \"will-redirect\",\n listener: XenditEventListener<XenditWillRedirectEvent>,\n options?: boolean | AddEventListenerOptions,\n ): void;\n\n /**\n * @public\n * Event handler called on success.\n * The payment has been made and/or the token has been created.\n */\n addEventListener(\n name: \"session-complete\",\n listener: XenditEventListener<XenditSessionCompleteEvent>,\n options?: boolean | AddEventListenerOptions,\n ): void;\n\n /**\n * @public\n * Event handler called when the session has expired or been cancelled.\n */\n addEventListener(\n name: \"session-expired-or-canceled\",\n listener: XenditEventListener<XenditSessionExpiredOrCanceledEvent>,\n options?: boolean | AddEventListenerOptions,\n ): void;\n\n /**\n * @public\n * Event handler called when something unrecoverable has happened. You should create a new\n * session and a new SDK instance.\n */\n addEventListener(\n name: \"fatal-error\",\n listener: XenditEventListener<XenditFatalErrorEvent>,\n options?: boolean | AddEventListenerOptions,\n ): void;\n\n /**\n * @public\n * Fallback overload.\n */\n addEventListener<K extends keyof XenditEventMap>(\n type: K,\n listener: (this: XenditComponents, ev: XenditEventMap[K]) => void,\n options?: boolean | AddEventListenerOptions,\n ): void;\n\n /**\n * @internal\n * Implementation.\n */\n addEventListener(\n type: string,\n listener: unknown,\n options?: boolean | AddEventListenerOptions,\n ): void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return super.addEventListener(type, listener as any, options);\n }\n\n /**\n * @public\n * Fallback overload.\n */\n removeEventListener<K extends keyof XenditEventMap>(\n type: K,\n listener: (this: XenditComponents, ev: XenditEventMap[K]) => void,\n options?: boolean | AddEventListenerOptions,\n ): void;\n\n /**\n * @internal\n * Implementation.\n */\n removeEventListener(\n type: string,\n listener: unknown,\n options?: boolean | AddEventListenerOptions,\n ): void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return super.removeEventListener(type, listener as any, options);\n }\n\n static amountFormat(amount: number, currency: string): string {\n return amountFormat(amount, currency);\n }\n}\n\n/**\n * @public\n * Test version of XenditComponents that uses mock data instead of API calls.\n * Use this class for testing and development purposes.\n *\n * The sessionClientKey option is ignored.\n *\n * @example\n * ```\n * const testSdk = new XenditComponentsTest({});\n * ```\n */\nexport class XenditComponentsTest extends XenditComponents {\n /**\n * @internal\n * The mock to apply on the next poll.\n */\n public nextMockUpdate: BffPollResponse | null = null;\n\n /**\n * @public\n * Test SDK ignores sessionClientKey and uses a mock key.\n */\n constructor(\n options: Omit<XenditComponentsOptions, \"sessionClientKey\"> & {\n sessionClientKey?: string;\n },\n ) {\n super({\n ...options,\n sessionClientKey: makeTestSdkKey(),\n });\n }\n\n /**\n * @internal\n * Override to use test data instead of making API calls\n */\n protected async initializeAsync(): Promise<void> {\n // Simulate network delay and prevent firing the init event before the constructor returns\n await sleep(MOCK_NETWORK_DELAY_MS);\n\n // Always use test data for this class\n const bff = (await import(\"./test-data\")).makeTestBffData();\n\n // Update internal data\n this.dispatchEvent(\n new InternalUpdateWorldState({\n business: bff.business,\n customer: bff.customer,\n session: bff.session,\n channels: bff.channels,\n channelUiGroups: bff.channel_ui_groups,\n paymentEntity: null,\n sessionTokenRequestId: null,\n succeededChannel: null,\n cardDetails: {\n cardNumber: null,\n details: null,\n },\n } satisfies WorldState),\n );\n }\n\n /**\n * @internal\n * Indicates that this is a mock SDK.\n */\n public isMock(): boolean {\n return true;\n }\n}\n\n// re-exports\nexport type { ChannelProperties };\n","import {\n CURRENCY_NUMBER_FORMAT_LOCALE,\n CURRENCY_SYMBOL_DECIMALS,\n CURRENCY_SYMBOL_POSITION,\n CURRENCY_SYMBOLS,\n} from \"./data/currencies\";\n\nexport function amountFormat(amount: number, currency: string): string {\n let str = \"\";\n\n const isNegative = amount < 0;\n\n // format as number with separators and 2 decimal places\n const locale = CURRENCY_NUMBER_FORMAT_LOCALE[currency] ?? \"en\";\n const decimals = CURRENCY_SYMBOL_DECIMALS[currency] ?? 2;\n\n str = new Intl.NumberFormat(locale, {\n style: \"decimal\",\n minimumFractionDigits: decimals,\n // Preserve fractional parts, if there are fractions where there shouldn't be that's\n // a backend problem and we should not suppress it.\n maximumFractionDigits: 20,\n }).format(Math.abs(amount));\n\n // remove trailing .00 or ,00 or .000 or ,000\n str = str.replace(/(\\.|,)000?$/, \"\");\n\n // add currency symbol\n if (CURRENCY_SYMBOLS[currency]) {\n const symbol = CURRENCY_SYMBOLS[currency] ?? currency;\n const positioning = CURRENCY_SYMBOL_POSITION[currency] ?? \"$1\";\n str = positioning.replace(\"$\", symbol).replace(\"1\", str);\n } else {\n str = currency + \" \" + str;\n }\n\n // add negative sign if needed\n if (isNegative) {\n str = \"-\" + str;\n }\n\n return str;\n}\n","// Must be the first import\nimport \"preact/debug\";\nimport \"preact/devtools\";\n\nimport { createIconSet } from \"./components/icon\";\nimport { createStyles } from \"./styles\";\n\nif (typeof window === \"undefined\" || typeof document === \"undefined\") {\n // do not run browser initialization in node env\n} else {\n createStyles();\n createIconSet();\n}\n\nexport * from \"./public-sdk\";\nexport * from \"./public-event-types\";\nexport * from \"./public-options-types\";\nexport * from \"./public-data-types\";\n","import { findFirstStyleOrLinkElement } from \"./dom-utils\";\nimport css from \"./styles.css\";\n\nexport function createStyles() {\n const styleElement = document.createElement(\"style\");\n styleElement.textContent = css;\n const firstStyleOrLinkElement = findFirstStyleOrLinkElement();\n if (firstStyleOrLinkElement) {\n firstStyleOrLinkElement.insertAdjacentElement(\"beforebegin\", styleElement);\n } else {\n document.head.appendChild(styleElement);\n }\n}\n","@font-face {\n font-family: \"Proxima Nova\";\n font-style: normal;\n font-weight: 300;\n font-display: swap;\n src:\n local(\"Proxima Nova Light\"),\n local(\"Proxima Nova\"),\n url(\"https://assets.xendit.co/payment-session/fonts/proxima-nova/proximanova_light.otf\")\n format(\"opentype\");\n}\n\n@font-face {\n font-family: \"Proxima Nova\";\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src:\n local(\"Proximanova Regular\"),\n local(\"Proxima Nova\"),\n url(\"https://assets.xendit.co/payment-session/fonts/proxima-nova/proximanova_regular.ttf\")\n format(\"truetype\");\n}\n\n@font-face {\n font-family: \"Proxima Nova\";\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src:\n local(\"Proxima Nova Bold\"),\n local(\"Proxima Nova\"),\n url(\"https://assets.xendit.co/payment-session/fonts/proxima-nova/proximanova_bold.otf\")\n format(\"opentype\"),\n url(\"https://assets.xendit.co/payment-session/fonts/proxima-nova/proximanova_boldit.otf\")\n format(\"opentype\"),\n url(\"https://assets.xendit.co/payment-session/fonts/proxima-nova/proximanova_extrabold.otf\")\n format(\"opentype\");\n}\n\n@font-face {\n font-family: \"Proxima Nova\";\n font-style: normal;\n font-weight: 900;\n font-display: swap;\n src:\n local(\"Proxima Nova Black\"),\n local(\"Proxima Nova\"),\n url(\"https://assets.xendit.co/payment-session/fonts/proxima-nova/proximanova_black.otf\")\n format(\"opentype\"),\n url(\"https://assets.xendit.co/payment-session/fonts/proxima-nova/proximanova_blackit.otf\")\n format(\"opentype\"),\n url(\"https://assets.xendit.co/payment-session/fonts/proxima-nova/proximanova_black.ttf\")\n format(\"truetype\");\n}\n\n/* variables */\nhtml {\n --xendit-font-family: \"Proxima Nova\", sans-serif;\n --xendit-color-primary: #1762ee;\n --xendit-color-text: #252525;\n --xendit-color-text-secondary: #585858;\n --xendit-color-text-placeholder: #7d7d7d;\n --xendit-color-disabled: #f7f7f7;\n --xendit-color-danger: #d1414d;\n --xendit-color-border: rgba(0, 0, 0, 0.05);\n --xendit-color-border-subtle: rgba(243, 243, 243);\n --xendit-color-border-default: #ededed;\n --xendit-color-background: #ffffff;\n --xendit-focus-shadow: 0px 0px 0px 2px\n color-mix(in srgb, var(--xendit-color-primary) 15%, transparent);\n --xendit-animation-duration: 0.3s;\n --xendit-animation-ease: ease-in-out;\n --xendit-radius-1: 8px;\n --xendit-z-index-focus: 2;\n\n /* Browser-specific border collapse margins */\n --xendit-border-collapse-offset: -0.5px; /* Default for Chrome/Edge */\n --xendit-border-collapse-webkit-gecko: -1.5px; /* Fix Safari and Firefox subpixel rendering */\n}\n\n/* Set default font for root components */\nxendit-channel-picker,\nxendit-action-container,\nxendit-payment-channel {\n display: block;\n unicode-bidi: isolate;\n font-family: var(--xendit-font-family, sans-serif);\n color: var(--xendit-color-text);\n}\n\n.xendit-default-action-container {\n font-family: var(--xendit-font-family, sans-serif);\n}\n\nxendit-action-container {\n background-color: var(--xendit-color-background);\n}\n\nxendit-payment-channel button,\nxendit-payment-channel textarea,\nxendit-payment-channel select,\nxendit-payment-channel input,\nxendit-payment-channel input::placeholder {\n font-family: inherit;\n}\n\nxendit-payment-channel input::placeholder,\nxendit-payment-channel textarea::placeholder,\nxendit-payment-channel select::placeholder {\n color: var(--xendit-color-text-placeholder);\n}\n\n/* Reusable typography classes */\n.xendit-text-12 {\n font-size: 12px;\n line-height: 16px;\n letter-spacing: -0.01px;\n}\n\n.xendit-text-14 {\n font-size: 14px;\n line-height: 16px;\n letter-spacing: -0.09px;\n}\n\n.xendit-text-16 {\n font-size: 16px;\n line-height: 16px;\n letter-spacing: -0.09px;\n}\n\n.xendit-text-12,\n.xendit-text-14,\n.xendit-text-16 {\n font-weight: 400;\n}\n\n.xendit-text-semibold {\n font-weight: 600;\n}\n\n.xendit-text-bold {\n font-weight: 700;\n}\n\n.xendit-text-secondary {\n color: var(--xendit-color-text-secondary);\n}\n\n/* Accordion component */\n\n.xendit-accordion {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.xendit-accordion-item {\n border: 1px solid var(--xendit-color-border);\n border-radius: 8px;\n background: var(--xendit-color-background);\n}\n\n.xendit-accordion-item-header {\n display: grid;\n grid-template-columns: auto 1fr auto;\n grid-gap: 16px;\n align-items: center;\n cursor: pointer;\n padding: 24px 16px;\n color: var(--xendit-color-text);\n border-radius: 8px;\n}\n\n.xendit-accordion-item-disabled.xendit-accordion-item {\n background-color: var(--xendit-color-disabled);\n border-color: var(--xendit-color-disabled);\n}\n\n.xendit-accordion-item-disabled .xendit-accordion-item-header {\n cursor: not-allowed;\n}\n\n.xendit-accordion-item-header-title {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.xendit-accordion-item-disabled .xendit-accordion-item-header-title,\n.xendit-accordion-item-disabled .xendit-accordion-item-header-icon {\n opacity: 0.5;\n}\n\n.xendit-accordion-item.xendit-accordion-item-open\n .xendit-accordion-item-header {\n color: var(--xendit-color-primary);\n}\n\n.xendit-accordion-item-chevron {\n color: var(--xendit-color-text);\n}\n\n.xendit-accordion-item-disabled .xendit-accordion-item-chevron {\n display: none;\n}\n\n.xendit-accordion-item-chevron g {\n transition: transform var(--xendit-animation-duration)\n var(--xendit-animation-ease);\n}\n\n.xendit-accordion-item-header:focus-visible {\n border-radius: 8px;\n box-shadow: 0px 0px 0px 2px\n color-mix(in srgb, var(--xendit-color-primary) 15%, transparent);\n outline: none;\n}\n\n.xendit-accordion-item-content {\n overflow: hidden;\n transition: height var(--xendit-animation-duration)\n var(--xendit-animation-ease);\n}\n\n.xendit-accordion-item.xendit-accordion-item-closed\n .xendit-accordion-item-content {\n height: 0;\n}\n\n.xendit-accordion-item.xendit-accordion-item-open\n .xendit-accordion-item-content {\n height: calc-size(auto, size);\n}\n\n.xendit-accordion-item-padding {\n padding: 16px;\n}\n\n/* Channel picker group */\n\n.xendit-channel-picker-group {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.xendit-channel-picker-group select {\n border: 1px solid var(--xendit-color-border);\n border-radius: 8px;\n padding: 12px;\n appearance: none;\n outline: none;\n}\n\n.xendit-channel-picker-group select:focus {\n box-shadow: 0px 0px 0px 2px\n color-mix(in srgb, var(--xendit-color-primary) 15%, transparent);\n}\n\n.xendit-channel-logo {\n width: 24px;\n height: 16px;\n margin: -5px 0;\n padding: 4px;\n border: 1px solid var(--xendit-color-border-default);\n border-radius: 4px;\n background-color: white; /* always white, not --xendit-color-background */\n object-fit: contain;\n}\n\n/* Payment channel */\n\nxendit-payment-channel[inert] {\n filter: opacity(0.5) grayscale(1);\n}\n\n.xendit-payment-channel {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.xendit-payment-channel-instructions {\n display: grid;\n grid-template-columns: auto 1fr;\n grid-gap: 12px;\n color: var(--xendit-color-text-secondary);\n}\n\n.xendit-payment-channel-instructions-text {\n display: flex;\n flex-direction: column;\n justify-content: center;\n gap: 4px;\n}\n\n.xendit-payment-channel-instructions-text p {\n margin: 0;\n}\n\n/* Forms */\n\n.xendit-channel-form {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.xendit-channel-form > form {\n display: contents;\n}\n\n.xendit-form-field-group {\n display: grid;\n grid-template-columns: repeat(2, minmax(0, 1fr));\n}\n\n.xendit-channel-form-field {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.xendit-channel-form-field-group {\n display: grid;\n gap: 8px;\n}\n\n.xendit-channel-form-field-group label {\n width: fit-content;\n cursor: pointer;\n}\n\n.xendit-form-field-group.invalid .xendit-channel-form-field input,\n.xendit-form-field-group.invalid\n .xendit-channel-form-field\n .xendit-iframe-container,\n.xendit-form-field-group.invalid .xendit-dropdown button {\n border: 1px solid var(--xendit-color-danger);\n}\n\n.xendit-channel-form-field input:not([type=\"checkbox\"]),\n.xendit-channel-form-field select,\n.xendit-channel-form-field .xendit-iframe-container {\n display: flex;\n border: 1px solid var(--xendit-color-border-subtle);\n background: var(--xendit-color-background);\n border-radius: 8px;\n padding: 12px;\n appearance: none;\n}\n\n/* TODO: Refine these class usages */\n.xendit-channel-form-field.field-radius-tl-0 input,\n.xendit-channel-form-field.field-radius-tl-0 button,\n.xendit-channel-form-field.field-radius-tl-0 .xendit-iframe-container {\n border-top-left-radius: 0;\n}\n\n.xendit-channel-form-field.field-radius-tr-0 input,\n.xendit-channel-form-field.field-radius-tr-0 button,\n.xendit-channel-form-field.field-radius-tr-0 .xendit-iframe-container {\n border-top-right-radius: 0;\n}\n\n.xendit-channel-form-field.field-radius-bl-0 input,\n.xendit-channel-form-field.field-radius-bl-0 button,\n.xendit-channel-form-field.field-radius-bl-0 .xendit-iframe-container {\n border-bottom-left-radius: 0;\n}\n\n.xendit-channel-form-field.field-radius-br-0 input,\n.xendit-channel-form-field.field-radius-br-0 button,\n.xendit-channel-form-field.field-radius-br-0 .xendit-iframe-container {\n border-bottom-right-radius: 0;\n}\n\n.xendit-channel-form-field.field-collapse-l,\n.xendit-channel-form-field.field-collapse-l {\n margin-left: var(--xendit-border-collapse-offset);\n}\n\n.xendit-channel-form-field.field-collapse-r,\n.xendit-channel-form-field.field-collapse-r {\n margin-right: var(--xendit-border-collapse-offset);\n}\n\n.xendit-channel-form-field.field-collapse-l .xendit-iframe-container {\n margin-left: calc(var(--xendit-border-collapse-offset) * 2);\n width: calc(100% + abs(var(--xendit-border-collapse-offset) * 2));\n}\n\n.xendit-channel-form-field.field-collapse-r .xendit-iframe-container {\n margin-right: 0;\n}\n\n.xendit-channel-form-field.field-collapse-t input,\n.xendit-channel-form-field.field-collapse-t button,\n.xendit-channel-form-field.field-collapse-t .xendit-iframe-container {\n margin-top: var(--xendit-border-collapse-offset);\n}\n\n.xendit-channel-form-field.field-collapse-b input,\n.xendit-channel-form-field.field-collapse-b button,\n.xendit-channel-form-field.field-collapse-b .xendit-iframe-container {\n margin-bottom: var(--xendit-border-collapse-offset);\n}\n\n/* Safari and Firefox specific adjustments */\n@supports (font: -apple-system-body) or (-moz-appearance: none) {\n .xendit-channel-form-field.field-collapse-l .xendit-iframe-container {\n margin-left: 0;\n width: 100%;\n }\n\n .xendit-channel-form-field.field-collapse-b input,\n .xendit-channel-form-field.field-collapse-b button {\n margin-bottom: var(--xendit-border-collapse-webkit-gecko);\n height: calc(100% + abs(var(--xendit-border-collapse-webkit-gecko) * 2));\n }\n}\n\n.xendit-channel-form-field.field-collapse-r .xendit-iframe-container:focus {\n border-right: none;\n}\n\n.xendit-channel-form-field.field-collapse-l .xendit-iframe-container:focus {\n border-left: none;\n}\n/* Ends TODO */\n\n.xendit-card-brand-logo {\n width: 24px;\n height: 16px;\n border: 1px solid var(--xendit-color-border-default);\n border-radius: 4px;\n padding: 4px;\n background-color: white; /* always white, not --xendit-color-background */\n}\n\n.xendit-card-brands-list {\n display: flex;\n align-items: center;\n padding: 8px 12px;\n gap: 4px;\n}\n\n.xendit-channel-form-field input:focus,\n.xendit-channel-form-field select:focus,\n.xendit-channel-form-field .xendit-iframe-container.xendit-field-focus {\n border-color: var(--xendit-color-primary);\n box-shadow: var(--xendit-focus-shadow);\n outline: none;\n z-index: var(--xendit-z-index-focus);\n}\n\n.xendit-channel-form-field button:focus {\n position: relative;\n z-index: var(--xendit-z-index-focus);\n}\n\n.xendit-channel-form-field .xendit-iframe-container {\n height: 40px;\n width: 100%;\n padding: 0;\n overflow: hidden;\n box-sizing: border-box;\n}\n\n.xendit-channel-form-field .xendit-iframe-container iframe {\n height: 40px;\n width: 100%;\n border: none;\n min-width: 0;\n}\n\n.xendit-channel-form-field.xendit-form-field-span-1 {\n grid-column: span 1;\n}\n\n.xendit-channel-form-field.xendit-form-field-span-2 {\n grid-column: span 2;\n}\n\n.xendit-checkbox {\n display: flex;\n align-items: center;\n}\n\n.xendit-checkbox-box {\n display: flex;\n}\n\n.xendit-checkbox input {\n width: 16px;\n height: 16px;\n margin: 0;\n cursor: pointer;\n}\n\n.xendit-checkbox label {\n cursor: pointer;\n padding-left: 8px;\n}\n\n.xendit-checkbox input {\n opacity: 0;\n position: absolute;\n}\n\n.xendit-checkbox input + .xendit-checkbox-graphic {\n width: 16px;\n height: 16px;\n border: 1px solid var(--xendit-color-border);\n border-radius: 4px;\n box-sizing: border-box;\n color: transparent;\n}\n\n.xendit-checkbox input:checked + .xendit-checkbox-graphic {\n color: var(--xendit-color-background);\n background-color: var(--xendit-color-primary);\n border-color: var(--xendit-color-primary);\n}\n\n/* Dialog */\n\n.xendit-dialog-backdrop {\n position: fixed;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n background: rgba(0, 0, 0, 0.5);\n display: flex;\n padding: 48px;\n justify-content: center;\n align-items: center;\n}\n\n.xendit-dialog-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n color: var(--xendit-color-background);\n padding: 8px 0;\n gap: 16px;\n line-height: 24px;\n}\n\n.xendit-dialog-header button {\n background: none;\n border: none;\n color: var(--xendit-color-background);\n cursor: pointer;\n padding: 0;\n}\n\n.xendit-dialog-body {\n display: flex;\n background-color: var(--xendit-color-background);\n border-radius: 8px;\n padding: 8px;\n}\n\n.xendit-error-message {\n color: var(--xendit-color-danger);\n}\n\n/* Phone input Dropdown */\n.xendit-input-phone .xendit-combobox {\n display: flex;\n gap: 8px;\n}\n\n.xendit-phone-number-input {\n width: 100%;\n}\n\n.xendit-input-phone .xendit-dropdown button {\n width: 64px;\n}\n\n.xendit-input-phone .xendit-dropdown button .xendit-dropdown-button-title {\n display: none;\n}\n\n.xendit-dropdown .xendit-dropdown-search input {\n padding: 8px;\n border: 1px solid var(--xendit-color-border-subtle);\n border-radius: var(--xendit-radius-1);\n box-sizing: border-box;\n}\n\n.xendit-dropdown-search input:focus {\n outline: none;\n border-color: var(--xendit-color-primary);\n box-shadow: var(--xendit-focus-shadow);\n}\n\n/* Phone input Dropdown ends */\n\n/* Dropdown */\n.xendit-dropdown button {\n width: 100%;\n display: grid;\n grid-template-columns: 1fr auto;\n align-items: center;\n gap: 8px;\n text-align: left;\n background-color: var(--xendit-color-background);\n border: 1px solid var(--xendit-color-border-subtle);\n border-radius: var(--xendit-radius-1);\n justify-content: space-between;\n padding: 12px;\n cursor: pointer;\n}\n\n.xendit-dropdown button.xendit-dropdown-has-asset {\n grid-template-columns: auto 1fr auto;\n}\n\n.xendit-dropdown button:disabled {\n background: var(--xendit-color-disabled);\n}\n\n.xendit-dropdown button:focus {\n outline: none;\n border: 1px solid var(--xendit-color-primary);\n box-shadow: 0px 0px 0px 2px #1762ee26;\n}\n\n.xendit-dropdown-menu {\n position: absolute;\n z-index: 1;\n display: flex;\n flex-direction: column;\n gap: 4px;\n max-height: 168px;\n width: 257px;\n padding: 4px;\n margin: 4px 0;\n background-color: var(--xendit-color-background);\n border: 1px solid var(--xendit-color-border);\n border-radius: var(--xendit-radius-1);\n list-style: none;\n box-shadow: 0px 4px 8px 0px #25252514;\n overflow-y: auto;\n}\n\n.xendit-dropdown-menu ul {\n list-style: none;\n padding: 4px;\n margin-top: 0;\n}\n\n.xendit-dropdown-search {\n position: sticky;\n top: 0;\n z-index: 1;\n}\n\n.xendit-dropdown-search input {\n width: 100%;\n}\n\n.xendit-dropdown-item {\n display: grid;\n grid-template-columns: 1fr auto;\n align-items: center;\n gap: 8px;\n padding: 8px 12px 8px 4px;\n border-radius: var(--xendit-radius-1);\n cursor: pointer;\n z-index: 0;\n --xendit-dropdown-item-hover-color: var(--xendit-color-background);\n --xendit-dropdown-item-hover-bg-color: var(--xendit-color-primary);\n}\n\n.xendit-dropdown-item-disabled {\n --xendit-dropdown-item-hover-color: var(--xendit-color-text);\n --xendit-dropdown-item-hover-bg-color: var(--xendit-color-disabled);\n}\n\n.xendit-dropdown-item:hover {\n background-color: var(--xendit-dropdown-item-hover-bg-color);\n}\n\n.xendit-dropdown-item:hover .xendit-dropdown-item-text,\n.xendit-dropdown-item:hover .xendit-dropdown-item-description {\n color: var(--xendit-dropdown-item-hover-color);\n}\n\n.xendit-dropdown-item-selected {\n color: var(--xendit-color-primary);\n}\n\n.xendit-dropdown-item:hover .xendit-dropdown-item-selected {\n color: var(--xendit-dropdown-item-hover-color);\n}\n\n.xendit-dropdown-item.xendit-dropdown-has-asset {\n grid-template-columns: auto 1fr auto;\n}\n\n.xendit-dropdown-item-text {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.xendit-dropdown-item-disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\n\n.xendit-dropdown-item-disabled:hover,\n.xendit-dropdown-item-disabled.is-active {\n background-color: var(--xendit-color-disabled);\n}\n\n/* Dropdown ends */\n"],"names":["n","l","u","i","r","o","e","f","c","s","a","h","p","v","y","w","Array","isArray","d","g","parentNode","removeChild","_","t","arguments","length","children","call","defaultProps","m","type","props","key","ref","__k","__","__b","__e","__c","constructor","__v","__i","__u","vnode","k","x","this","context","S","C","base","M","__d","push","$","__r","debounceRendering","sort","shift","__P","O","__n","namespaceURI","N","I","b","String","L","D","P","B","A","nextSibling","insertBefore","nodeType","H","some","T","setProperty","test","j","style","cssText","replace","toLowerCase","slice","addEventListener","removeEventListener","removeAttribute","setAttribute","F","event","prototype","render","contextType","value","__E","E","sub","state","__h","_sb","__s","getDerivedStateFromProps","componentWillMount","componentDidMount","componentWillReceiveProps","shouldComponentUpdate","componentWillUpdate","componentDidUpdate","getChildContext","getSnapshotBeforeUpdate","V","then","indexOf","z","q","diffed","forEach","map","localName","document","createTextNode","createElementNS","is","__m","data","childNodes","attributes","name","__html","innerHTML","content","current","unmount","componentWillUnmount","G","documentElement","firstChild","Q","Set","add","delete","Provider","__l","Consumer","getDerivedStateFromError","setState","componentDidCatch","forceUpdate","Promise","bind","resolve","setTimeout","globalThis","window","__PREACT_DEVTOOLS__","attachPreact","Fragment","Component","displayName","__o","reduce","__source","fileName","lineNumber","console","warn","WeakMap","apply","hasOwnProperty","Object","toString","JSON","stringify","filter","Boolean","error","join","pop","useEffect","useLayoutEffect","lazyPropTypes","Error","componentStack","propTypes","has","set","__f","keys","message","get","nodeName","create","__self","__proto__","__H","__N","every","requestAnimationFrame","clearTimeout","cancelAnimationFrame","isPureReactComponent","Symbol","for","U","W","appendChild","__a","__R","__O","createElement","fallback","revealOrder","size","Map","reverse","J","K","X","isReactComponent","defineProperty","configurable","writable","en","rn","un","cancelBubble","on","defaultPrevented","persist","isPropagationStopped","isDefaultPrevented","nativeEvent","cn","enumerable","class","fn","multiple","selected","defaultValue","className","$$typeof","an","sn","Icon","direction","svgTransform","_jsx","width","height","viewBox","fill","stroke","transform","iconData","find","icon","node","makeIcon","id","scale","_jsxs","internal","Accordion","hasOwn","classNames","classes","arg","appendClass","parseValue","includes","newClass","module","exports","default","AccordionItem","title","subtitle","disabled","open","onClick","chevronDirection","toggleOpen","useCallback","handleKeyPress","preventDefault","handleClick","onKeyDown","role","tabIndex","inert","SessionContext","createContext","BusinessContext","CustomerContext","ChannelsContext","ChannelUiGroupsContext","CardDetailsContext","cardNumber","details","SdkContext","CurrentChannelContext","channel","channelProperties","useSession","useContext","useChannels","useCardDetails","useSdk","useCurrentChannel","XenditSessionProvider","sdk","session","business","customer","channels","channelUiGroups","getCurrentChannel","liveComponents","paymentChannels","channel_code","cardDetails","MOCK_NETWORK_DELAY_MS","assert","assertEquals","sleep","ms","AbortError","super","isAbortError","cancellableSleep","signal","reject","onAbort","timeoutId","aborted","MOCK_HOST_ID","hosts","pl","pd","sl","sd","hostFromHostId","hostId","usePrevious","useRef","formFieldName","field","channel_property","values","errorToString","stack","removeUndefinedPropertiesFromObject","object","descriptor","getOwnPropertyDescriptor","undefined","getValueFromChannelProperty","channelProperty","str","cursor","dotIndex","objectIdMap","objectIdCounter","useIdSafe","Math","random","substring","resolvePairedChannel","savePaymentMethod","allow_save","satisfiesMinMax","session_type","amount","min","min_amount","max","max_amount","Number","MAX_VALUE","lockDownInteralProperty","obj","RELEASED_CHANNELS","CARDS","Dropdown","_id","options","onChange","defaultIndex","selectedIndex","placeholder","generatedId","isControlled","internalIndex","setInternalIndex","useState","currentIndex","activeIndex","setActiveIndex","setOpen","searchQuery","setSearchQuery","rootRef","btnRef","listRef","searchInputRef","filteredOptions","useMemo","mapToFiltered","opt","index","option","originalIndex","filtered","query","description","labelId","listboxId","clampedActive","activeOptionId","onDoc","root","contains","target","scrollActiveIntoView","el","scrollIntoView","block","behavior","commit","focus","openList","queueMicrotask","closeList","onButtonKeyDown","onListKeyDown","isSearchInput","activeItem","onOptionClick","currentTarget","dataset","leadingAsset","shortTitle","onInput","stopPropagation","isSelected","isActive","bffSessionToPublic","bffSession","assertNotEquals","mode","payment_session_id","sessionType","referenceId","reference_id","country","currency","channel_properties","expiresAt","Date","expires_at","locale","status","items","item","netUnitAmount","net_unit_amount","quantity","url","imageUrl","image_url","category","subcategory","metadata","bffUiGroupToPublic","bffChannelGroup","channelsByGroupId","groupsByGroupId","marshalConfig","group","groupId","label","bffChannelToPublic","singleBffChannelToPublic","bffChannel","bffChannelsByGroupId","bffGroupsByGroupId","pairChannels","paired","channelCode","pairs","ch","brandName","brand_name","brandColor","brand_color","brandLogoUrl","brand_logo_url","uiGroup","ui_group","minAmount","maxAmount","cardBrands","card","brands","logoUrl","logo_url","makeGroupsByGroupId","bffChannelGroups","groupMap","bffGroup","channelFilterFn","filterMinMax","code","RegExp","channelCodeMatchesFilter","makeChannelsByGroupId","bffChannels","findChannelPairs","brandMap","pair","other","ChannelPickerGroup","dropdownId","containerRef","selectedChannelElementRef","sdkSelectedChannelCode","explicitSelectedChannel","setExplicitSelectedChannel","pairChannelData","channelsInGroup","createChannelComponent","parentElement","replaceChildren","previousOpen","setCurrentChannel","previousSdkSelectedChannelCode","newSelected","channelOptions","src","getChannelDisabledReason","htmlFor","groupName","ns","findIndex","dropdownOption","XenditChannelPicker","useChannelUiGroups","currentChannel","channelsByGroup","thisRef","selectedGroup","setSelectedGroup","selectedGroupWasTriggeredManually","setSelectedGroupWasTriggeredManually","handleSelectChannelGroup","dispatchEvent","XenditClearCurrentChannelEvent","previousCurrentChannel","groupIndex","getSdkStatus","disabledReason","lastReason","groupHasNoEnabledChannel","Event","static","bubbles","composed","InternalUpdateWorldState","InternalInputValidateEvent","CustomEvent","detail","InternalBehaviorTreeUpdateEvent","InternalNeedsRerenderEvent","version","country_calling_codes","countries","AC","AD","AE","AF","AG","AI","AL","AM","AO","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GT","GU","GW","GY","HK","HN","HR","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TA","TC","TD","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","XK","YE","YT","ZA","ZM","ZW","nonGeographic","withMetadataArgument","func","_arguments","args","compare","split","pa","pb","na","nb","isNaN","objectConstructor","isObject","_typeof","iterator","_classCallCheck","TypeError","_createClass","_toPropertyKey","_defineProperties","toPrimitive","_toPrimitive","DEFAULT_EXT_PREFIX","CALLING_CODE_REG_EXP","Metadata","validateMetadata","setVersion","countryCode","v1","v2","v3","nonGeographical","getCountryMetadata","callingCode","getCountryCodesForCallingCode","countryCodes","countryCallingCodes","selectNumberingPlan","hasCountry","concat","numberingPlan","NumberingPlan","hasCallingCode","getNumberingPlanMetadata","getCountryCodeForCallingCode","IDDPrefix","defaultIDDPrefix","nationalNumberPattern","possibleLengths","formats","nationalPrefixForParsing","nationalPrefixTransformRule","leadingDigits","hasTypes","_type","ext","country_phone_code_to_countries","globalMetadataObject","_this","_getFormats","getDefaultCountryMetadataForRegion","Format","_getNationalPrefixFormattingRule","_nationalPrefixForParsing","nationalPrefix","_getNationalPrefixIsOptionalWhenFormatting","types","_type2","getType","Type","format","_format","nationalPrefixFormattingRule","nationalPrefixIsOptionalWhenFormattingInNationalFormat","usesNationalPrefix","FIRST_GROUP_ONLY_PREFIX_PATTERN","typeOf","getCountryCallingCode","countryCallingCode","v4","checkNumberLength","nationalNumber","type_info","possible_lengths","actual_length","minimum_length","checkNumberLengthForType","isPossibleNumber","matchesEntirely","text","regularExpressionText","_createForOfIteratorHelperLoose","next","_arrayLikeToArray","from","_unsupportedIterableToArray","done","NON_FIXED_LINE_PHONE_TYPES","getNumberType","input","phone","isNumberTypeEqualTo","pattern","_step","_iterator","getPossibleCountriesForNumber","possibleCountries","_metadata","couldNationalNumberBelongToCountry","VALID_DIGITS","VALID_PUNCTUATION","CAPTURING_DIGIT_PATTERN","getCountryByCallingCode","_ref","nationalPhoneNumber","search","getCountryByNationalNumber","extractNationalNumber","number","_extractNationalNumbe","prefixPattern","prefixMatch","exec","carrierCode","capturedGroupsCount","hasCapturedGroups","prefixBeforeNationalNumber","possiblePositionOfTheFirstCapturedGroup","extractNationalNumberFromPossiblyIncompleteNumber","nationalNumberBefore","nationalNumberAfter","shouldHaveExtractedNationalPrefix","isPossibleIncompleteNationalNumber","extractCountryCallingCode","defaultCountry","defaultCallingCode","isNumberWithIddPrefix","numberWithoutIDD","countryMetadata","IDDPrefixPattern","matchedGroups","match","stripIddPrefix","_extractCountryCallin","possibleShorterNumber","possibleShorterNationalNumber","extractCountryCallingCodeFromInternationalNumberWithoutPlusSign","shorterNumber","countryCallingCodeSource","_countryCallingCode","FIRST_GROUP_PATTERN","formatNationalNumberUsingFormat","useInternationalFormat","withNationalPrefix","formattedNumber","internationalFormat","trim","applyInternationalSeparatorStyle","SINGLE_IDD_PREFIX_REG_EXP","getExtensionDigitsPattern","maxLength","createExtensionPattern","purpose","possibleSeparatorsBetweenNumberAndExtLabel","possibleCharsAfterExtLabel","optionalExtnSuffix","possibleSeparatorsNumberExtLabelNoComma","MIN_LENGTH_PHONE_NUMBER_PATTERN","VALID_PHONE_NUMBER","VALID_PHONE_NUMBER_START_REG_EXP","VALID_PHONE_NUMBER_WITH_EXTENSION","VALID_PHONE_NUMBER_PATTERN","DEFAULT_OPTIONS","formatExtension","extension","formatNumber","_len","objects","_key","merge","addExtension","formatNationalNumber","formatRFC3966","fromCountry","fromCountryCallingCode","iddPrefix","getIddPrefix","formatIDD","formatAs","availableFormats","elements","testFunction","pickFirstMatchingElement","leadingDigitsPatterns","lastLeadingDigitsPattern","ownKeys","getOwnPropertySymbols","_objectSpread","_defineProperty","getOwnPropertyDescriptors","defineProperties","PhoneNumber","countryOrCountryCallingCode","e164Number","E164_NUMBER_REGEXP","_getCountryAndCountry","metadataJson","isCountryCode","getCountryAndCountryCallingCode","getMetadata","isNonGeographicCallingCode","isValidNumber","phoneNumber","_callSuper","_getPrototypeOf","ReferenceError","_assertThisInitialized","_possibleConstructorReturn","_isNativeReflectConstruct","Reflect","construct","_wrapNativeSuper","Function","_isNativeFunction","Wrapper","_setPrototypeOf","_construct","valueOf","setPrototypeOf","getPrototypeOf","ParseError","_Error","_inherits","EXTN_PATTERN","DIGITS","parseIncompletePhoneNumber","string","result","parsePhoneNumberCharacter","character","prevParsedCharacters","eventListener","parseDigit","RFC3966_PHONE_DIGIT_","RFC3966_GLOBAL_NUMBER_DIGITS_PATTERN_","RFC3966_DOMAINNAME_PATTERN_","RFC3966_PREFIX_","RFC3966_PHONE_CONTEXT_","extractFormattedPhoneNumberFromPossibleRfc3966NumberUri","numberToParse","phoneNumberString","extractFormattedPhoneNumber","phoneContext","numberToExtractFrom","indexOfPhoneContext","phoneContextStart","phoneContextEnd","extractPhoneContext","isPhoneContextValid","charAt","indexOfNationalNumber","indexOfRfc3966Prefix","indexOfIsdn","PHONE_NUMBER_START_PATTERN","AFTER_PHONE_NUMBER_END_PATTERN","parse","_parseInput","extract","throwOnError","startsAt","_extractFormattedPhoneNumber","isViablePhoneNumber","isViablePhoneNumberStart","withExtensionStripped","start","numberWithoutExtension","matches","extractExtension","parseInput","formattedPhoneNumber","_parsePhoneNumber","exactCountry","parsePhoneNumber","hasSelectedNumberingPlan","__countryCallingCodeSource","valid","extended","possible","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","normalizeArguments","_Array$prototype$slic2","arg_1","arg_2","arg_3","arg_4","isSupportedCountry","parsePhoneNumberWithError","_normalizeArguments","parsePhoneNumber_","getCountries","getExampleNumber","examples","_getCountryCallingCode","sanitizeRegex","startsWith","endsWith","validate","required","localeKey","parsePhoneNumberFromString","isValid","validatePhoneNumber","trimmedValue","validateEmail","validatePostalCode","regex_validators","regex","min_length","max_length","validateText","getChannelPropertyValue","parts","FlagIcon","borderRadius","backgroundImage","backgroundSize","backgroundPosition","CountryField","onError","selectedCountry","setSelectedCountry","selectedCountryIndex","COUNTRIES_AS_DROPDOWN_OPTIONS","hiddenFieldRef","validateField","errorCode","listener","useOnCardCountryChange","newCountry","newOption","onChangeWrapper","_getCountries","Intl","DisplayNames","of","localeCompare","cardDetailsCountry","country_codes","previousCardDetailsCountry","DropdownField","isDropdownField","fieldOptions","HTMLElement","EventTarget","XenditFormAssociatedFocusTrap","internals","attachInternals","element","customElements","define","tag","parsedIframeUrl","URL","IFRAME_SRC","IFRAME_ORIGIN","origin","IframeField","iframeRef","iframeEcdhPublicKey","setIframeEcdhPublicKey","focusWithin","setFocusWithin","isTouched","setIsTouched","validationResult","setValidationResult","empty","validationErrorCodes","cardBrand","setCardBrand","useChannel","handleErrorUpdate","validationState","errorMessage","handleIframeEventResult","incoming","prev","toValidationState","handleEventFromIframe","expectedSource","contentWindow","source","ecdhPublicKey","encrypted","encryptionVersion","resultData","enc","iv","giveFocusToIframe","postMessage","iframeUrl","searchParams","location","sdkKey","publicKey","signature","iframeFieldAppearance","_Fragment","onFocus","sandbox","CardBrands","cardsBrandList","selectedCardBrand","cardBrandLogo","alt","PhoneNumberField","setCountryCode","countryCodeIndex","COUNTRIES_WITH_DIAL_CODES_AS_DROPDOWN_OPTIONS","localNumber","setLocalNumber","inputRef","formatPhoneNumber","sanitizePhoneNumber","dial","updateValidity","nextCountry","updateHiddenField","handleCountryChange","inputMode","_getExampleNumber","formatInternational","onBlur","international","formatForUser","nextLocal","autoComplete","parsed","isPossible","toTitleValuePair","nameValue","PROVINCES_US","PROVINCES_CA","PROVINCES_GB","province","ProvinceField","allFields","form","useChannelProperties","clearValue","onChangeDropdown","onChangeInput","getProvinceList","thisField","otherField","previousField","getBestCountryForProvinceField","previousOptions","TextField","minLength","isTextField","Field","span","renderInner","isString","defer","res","rej","promise","makeString","lastOfPathSeparatorRegExp","cleanKey","canNotTraverseDeeper","getLastOfPath","path","Empty","stackIndex","setPath","newValue","last","getPath","deepExtend","overwrite","prop","regexEscape","_entityMap","escape","chars","looksLikeObjectPathRegExpCache","RegExpCache","capacity","regExpMap","regExpQueue","getRegExp","regExpFromCache","regExpNew","deepFind","keySeparator","tokens","nextPath","getCleanedCode","consoleLogger","log","output","Logger","concreteLogger","init","prefix","logger","debug","forward","deprecate","lvl","debugOnly","moduleName","clone","baseLogger","EventEmitter","observers","events","numListeners","off","emit","entries","observer","numTimesAdded","ResourceStore","defaultNS","ignoreJSONStructure","addNamespaces","removeNamespaces","splice","getResource","lng","addResource","silent","addResources","resources","addResourceBundle","deep","skipCopy","pack","removeResourceBundle","hasResourceBundle","getResourceBundle","getDataByLanguage","hasLanguageSomeTranslations","toJSON","postProcessor","processors","addPostProcessor","handle","translator","processor","process","PATH_KEY","keysFromSelector","selector","opts","handler","proxy","revoke","Proxy","revocable","createProxy","checkedLoadedFor","shouldHandleAsObject","Translator","services","copy","changeLanguage","language","exists","interpolation","resolved","returnObjects","extractFromKey","nsSeparator","namespaces","wouldCheckForNsInKey","seemsNaturalLanguage","userDefinedKeySeparator","userDefinedNsSeparator","possibleChars","matched","ki","looksLikeObjectPath","interpolator","nestingRegexp","translate","lastKey","overloadTranslationOptionHandler","returnDetails","namespace","appendNamespaceToCIMode","usedKey","exactUsedKey","usedLng","usedNS","usedParams","getUsedParamsDetails","resUsedKey","resExactUsedKey","joinArrays","handleAsObjectInI18nFormat","i18nFormat","handleAsObject","needsPluralHandling","count","hasDefaultValue","defaultValueSuffix","pluralResolver","getSuffix","defaultValueSuffixOrdinalFallback","ordinal","needsZeroSuffixLookup","pluralSeparator","resForObjHndl","resType","extendTranslation","usedDefault","isValidLookup","resForMissing","missingKeyNoValueFallbackToKey","updateMissing","fk","lngs","fallbackLngs","languageUtils","getFallbackCodes","fallbackLng","saveMissingTo","toResolveHierarchy","send","specificDefaultValue","defaultForMissing","missingKeyHandler","backendConnector","saveMissing","saveMissingPlurals","suffixes","getSuffixes","suffix","appendNamespaceToMissingKey","parseMissingKeyHandler","returnedObjectHandler","resTypeIsArray","newKeyToUse","deepKey","defaultVariables","skipInterpolation","skipOnVariables","nestBef","interpolate","nest","reset","postProcess","postProcessorNames","applyPostProcessor","postProcessPassResolved","i18nResolved","found","extracted","fallbackNS","needsContextHandling","codes","utils","hasLoadedNamespace","finalKeys","addLookupKeys","pluralSuffix","zeroSuffix","ordinalPrefix","contextKey","contextSeparator","possibleKey","returnNull","returnEmptyString","resourceStore","optionsKeys","useOptionsReplaceForData","LanguageUtil","supportedLngs","getScriptPartFromCode","formatLanguageCode","getLanguagePartFromCode","formattedCode","getCanonicalLocales","lowerCaseLng","cleanCode","isSupportedCode","load","nonExplicitSupportedLngs","getBestMatchFromCodes","cleanedLng","lngScOnly","lngOnly","supportedLng","fallbacks","fallbackCode","fallbackCodes","addCode","fc","suffixesOrder","zero","one","two","few","many","dummyRule","select","resolvedOptions","pluralCategories","PluralResolver","pluralRulesCache","addRule","rules","clearCache","getRule","cleanedCode","cacheKey","rule","PluralRules","err","lngPart","needsPlural","getPluralFormsOfKey","pluralCategory1","pluralCategory2","pluralCategory","prepend","deepFindWithDefaults","defaultData","getPathWithDefaults","regexSafe","val","Interpolator","escapeValue","escape$1","useRawValueToEscape","prefixEscaped","suffixEscaped","formatSeparator","unescapeSuffix","unescapePrefix","nestingPrefix","nestingPrefixEscaped","nestingSuffix","nestingSuffixEscaped","nestingOptionsSeparator","maxReplaces","alwaysFormat","resetRegExp","getOrResetRegExp","existingRegExp","lastIndex","regexp","regexpUnescape","replaces","handleFormat","interpolationkey","missingInterpolationHandler","safeValue","todo","matchedVar","temp","clonedOptions","handleHasOptions","inheritedOptions","sep","optionsString","matchedSingleQuotes","matchedDoubleQuotes","formatters","keyEndIndex","lastIndexOf","elem","createCachedFormatter","cache","optForCache","formatParams","frm","createNonCachedFormatter","Formatter","cf","cacheInBuiltFormats","formatter","NumberFormat","datetime","DateTimeFormat","relativetime","RelativeTimeFormat","range","list","ListFormat","addCached","mem","formatName","formatOptions","formatStr","optStr","rest","trimmedKey","parseInt","parseFormatStr","formatted","valOptions","Connector","backend","store","waitingReads","maxParallelReads","readingCalls","maxRetries","retryTimeout","queue","queueLoad","languages","callback","toLoad","pending","toLoadLanguages","toLoadNamespaces","hasAllNamespaces","reload","pendingCount","loaded","errors","pushPath","removePending","loadedKeys","read","fcName","tried","wait","resolver","catch","prepareLoading","loadOne","fallbackValue","isUpdate","clb","initAsync","preload","simplifyPluralSuffix","partialBundledLanguages","ret","tDescription","transformOptions","initImmediate","noop","I18n","inst","modules","external","getOwnPropertyNames","isInitialized","isClone","isInitializing","defOpts","createClassOnDemand","ClassOrObject","lu","languageDetector","detection","deferred","finish","initializedStoreOnce","loadResources","usedCallback","append","resolvedLanguage","setResolvedLanguage","reloadResources","use","li","lngInLngs","unshift","isLanguageChangingTo","setLngProps","setLng","fl","cacheUserLanguage","async","detect","getFixedT","keyPrefix","fixedT","resultKey","setDefaultNamespace","lastLng","loadNotPending","loadState","precheck","preResult","loadNamespaces","loadLanguages","preloaded","newLngs","dir","Locale","getTextInfo","ti","createInstance","instance","cloneInstance","forkResourceStore","mergedOptions","clonedData","acc","CSS_CLASSES","FieldGroup","fieldGroup","handleFieldChanged","fieldGroupErrors","setFieldGroupErrors","fieldGroupSpans","groupRowCount","ceil","agg","handleFieldError","newErrors","hasError","group_label","position","fieldPositionBySpan","fieldRow","floor","fieldColumn","isLastRow","calculateFieldPosition","CSS_CLASSES_BOTTOM_LEFT_0","CSS_CLASSES_BOTTOM_RIGHT_0","CSS_CLASSES_TOP_LEFT_0","CSS_CLASSES_TOP_RIGHT_0","CSS_CLASSES_COLLAPSE_RIGHT","CSS_CLASSES_COLLAPSE_LEFT","CSS_CLASSES_COLLAPSE_TOP","CSS_CLASSES_COLLAPSE_BOTTOM","getFieldClassNames","firstFieldWithError","localizedMessage","isLocaleKey","getLocalizedErrorMessage","renderFirstFoundError","ChannelForm","forwardRef","onChannelPropertiesChanged","formRef","setChannelProperties","useImperativeHandle","HTMLInputElement","getChannelProperties","iter","rawValue","Blob","subkeys","valueAsArray","formValueToStringArray","outer","subkey","part","nextValue","formKvToChannelProperties","FormData","filteredForm","cardInfo","filterFormFields","require_billing_information","useFilteredFormFields","previousFilteredForm","filteredFieldGroups","fields","fieldGroups","groupFields","ChannelPropertiesContext","_e","showBillingDetailsFields","flags","InstructionsIcon","arrowRef","arrowSquareGroupRef","supportsAnimation","animate","arrowKeyFrames","arrowAnimationOptions","arrowSquareBounceKeyFrames","arrowSquareBounceAnimationOptions","xmlns","opacity","strokeWidth","strokeLinecap","strokeLinejoin","transformOrigin","duration","easing","iterations","Infinity","delay","Checkbox","checked","htmlId","points","ChannelContext","PaymentChannel","divRef","firstMemberChannel","hasPairedChannel","resolvedChannel","instructions","instructionsAsTuple","shouldShowSaveCheckbox","allow_save_payment_method","XenditChannelPropertiesChangedEvent","XenditSavePaymentMethodChangedEvent","instr","NetworkError","errorResponse","convertDataToUrlSearchParams","params","URLSearchParams","endpoint","method","getQuery","pathArg","queryArg","requestBody","abortSignal","versionNumber","host","body","headers","response","fetch","ok","errorData","json","error_code","fetchSessionData","sessionAuthKey","createPaymentToken","createPaymentRequest","simulatePaymentRequest","paymentRequestId","pollSession","tokenRequestId","token_request_id","lookupCardDetails","behaviorNode","impl","child","BehaviorTree","bb","updating","again","update","updateCount","assertMaxRecursionDepth","updateTree","findBehavior","depth","exitSubtree","enterSubtree","enter","exit","ActionCompletedBehavior","ActionIframeBehavior","cleanupFn","sdkEvents","ensureHasActionContainer","populateActionContainerWithIframe","mock","cleanupActionContainer","updateMocksOnIframeCompletion","mockStatus","actionCompleted","pollImmediatelyRequested","success","scheduleMockUpdate","cancelledByUser","emptyActionContainer","CardInfoBehavior","cardDetailsRequest","abortLookupCardDetails","abortController","abort","getCardNunberFromChannelProperties","world","AbortController","schemes","card_number","XenditInitEvent","XenditFatalErrorEvent","XenditReadyEvent","XenditNotReadyEvent","XenditSubmissionBeginEvent","XenditSubmissionEndEvent","reason","userErrorMessage","developerErrorMessage","XenditActionBeginEvent","XenditActionEndEvent","XenditWillRedirectEvent","XenditSessionCompleteEvent","XenditSessionExpiredOrCanceledEvent","XenditPaymentRequestCreatedEvent","XenditPaymentTokenCreatedEvent","paymentTokenId","XenditPaymentRequestDiscardedEvent","XenditPaymentTokenDiscardedEvent","ChannelValidBehavior","lastChannelCode","sendReadyEventIfChanged","ChannelInvalidBehavior","BffPaymentEntityType","toPaymentEntity","prOrPt","payment_request_id","PaymentRequest","entity","payment_token_id","PaymentToken","getPaymentEntityStatusCopyKey","entityType","PollWorker","sessionTokenRequestId","onPollResult","started","stopped","attempt","mult","tries","sleepTime","retryLoop","isMock","XenditComponentsTest","nextMockUpdate","_err","paymentEntity","payment_token","payment_request","isPolling","stop","PePendingBehavior","pollWorker","pollResponse","updateWorld","succeededChannel","succeeded_channel","PeRequiresActionBehavior","canCreateActionContainer","resetPolling","setHasAction","polling","PeFailedBehavior","submissionRequested","SdkLoadingBehavior","SdkActiveBehavior","SdkFatalErrorBehavior","sdkFatalErrorMessage","SessionActiveBehavior","SessionCompletedBehavior","setSessionState","SessionFailedBehavior","SimulatePaymentBehavior","exited","simulationRequest","simulatePayment","simulatePaymentRequested","abortSimulation","makeTestSdkKey","randomHexString","makeTestBffData","mockNow","toISOString","mockExpiry","now","created","updated","randomUUID","business_id","customer_id","capture_method","country_of_operation","merchant_profile_picture_url","email","mobile_number","phone_number","individual_detail","given_names","surname","business_detail","allow_pay_without_save","requires_customer_details","icon_url","display_if","banner","alt_text","channel_ui_groups","bytes","arr","Uint8Array","randomBytes","padStart","makeTestPollResponseForSuccess","baseData","paymentRequest","paymentToken","withPaymentEntityStatus","makeTestPollResponseForFailure","makeTestPaymentRequest","actions","session_token_request_id","makeTestPaymentToken","SubmissionBehavior","submission","submissionError","submit","error_content","message_1","message_2","defaultUserErrorMessage","failureCode","subtext","getFailureCodeCopyKey","failureCodeUserErrorMessage","failure_code","shouldSendSavePaymentMethod","session_id","save_payment_method","asyncSubmit","behaviorTreeForSdk","sdkStatus","action","behaviorTreeForAction","behaviorTreeForPaymentEntity","behaviorTreeForSubmission","billingInformationRequired","channelPropertiesValid","showBillingDetails","channelPropertyKeys","channelPropertiesAreValid","formValidityBehavior","behaviorTreeForForm","behaviorTreeForSession","ActionIframe","onIframeComplete","srcDoc","MOCK_IFRAME_SRCDOC","Dialog","onClose","closeCalledRef","closeAnimationPlaying","dialogRef","backdropRef","onCloseSafe","onCloseWithAnimation","backdropFadeOutKeyframes","animationOptions","foregroundFadeOutKeyframes","onfinish","handleBackdropClick","backdropFadeKeyframes","foregroundFadeKeyframes","close","backgroundColor","DefaultActionContainer","wrapperRef","component","createActionContainerComponent","destroyComponent","SdkEventManager","hasInFlightRequest","submitting","kind","assertInitialized","worldState","setInitialized","setWillRedirect","actionContainer","cleanedUp","container","remove","abortSubmission","actionCancelledByUser","CURRENCY_NUMBER_FORMAT_LOCALE","IDR","VND","BRL","RUB","CZK","RON","UAH","CLP","COP","UYU","ARS","INR","NPR","LKR","BDT","CURRENCY_SYMBOLS","USD","CAD","EUR","AFN","ALL","AMD","AUD","AZN","BAM","BIF","BND","BOB","BWP","BYN","BZD","CDF","CHF","CNY","CRC","CVE","DJF","DKK","DOP","ERN","ETB","GBP","GEL","GHS","GNF","GTQ","HKD","HNL","HUF","ILS","IRR","ISK","JMD","JPY","KES","KHR","KMF","KRW","KZT","MDL","MGA","MKD","MMK","MOP","MUR","MXN","MYR","MZN","NAD","NGN","NIO","NOK","NZD","PAB","PEN","PHP","PKR","PLN","PYG","RSD","RWF","SDG","SEK","SGD","SOS","THB","TOP","TRY","TTD","TWD","TZS","UGX","UZS","XAF","XOF","ZAR","ZMW","ZWL","CURRENCY_SYMBOL_POSITION","CURRENCY_SYMBOL_DECIMALS","BHD","JOD","KWD","LYD","OMR","TND","XenditComponents","eventManager","componentsSdkKey","parseSdkKey","sessionClientKey","channelPicker","behaviorTree","currentChannelCode","behaviorTreeUpdate","onUpdateWorldState","hasScheduledRender","rerenderAllComponents","syncInertAttribute","initializeAsync","bff","findChannel","original","updates","mergeIgnoringUndefined","i18n","th","vi","initI18n","renderChannelPicker","renderPaymentChannel","getSession","getCustomer","bffCustomer","mobileNumber","individualDetail","givenNames","getActiveChannelGroups","bffUiGroupsToPublic","getActiveChannels","bffChannelsToPublic","createChannelPickerComponent","setupUiEventsForChannelPicker","_event","active","cachedComponent","channelFormRef","setupUiEventsForPaymentChannel","channelObject","hasSubmissionInProgress","channelComponents","hasAttribute","showValidationErrors","isInternal","requiresActionBehavior","tagName","pm_type","canBeSimulated","getState","amountFormat","isNegative","decimals","minimumFractionDigits","maximumFractionDigits","abs","symbol","testData","styleElement","textContent","firstStyleOrLinkElement","querySelector","insertAdjacentElement","head","createStyles","iconSet","display","createIconSet"],"mappings":"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AAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,KAAK,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,KAAK,KAAK,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,I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K,WAAWC,GAAK,aAAaC,GAAK,YAAYC,GAAK,UAAUC,GAAK,YAAYC,GAAK,YAAYC,GAAK,YAAYC,GAAK,UAAUC,GAAK,QAAQC,GAAK,UAAUC,GAAK,SAASC,GAAK,YAAYC,GAAK,WAAWC,GAAK,aAAaC,GAAK,aAAaC,GAAK,YAAYC,GAAK,YAAYC,GAAK,aAAaC,GAAK,YAAYC,GAAK,WAAWC,GAAK,SAASC,GAAK,UAAUC,GAAK,YAAYC,GAAK,YAAYC,GAAK,YAAYC,GAAK,aAAaC,GAAK,WAAWC,GAAK,aAAaC,GAAK,YAAYC,GAAK,UAAUC,GAAK,WAAWC,GAAK,WAAWC,GAAK,YAAYC,GAAK,WAAWC,GAAK,YAAYC,GAAK,YAAYC,GAAK,YAAYC,GAAK,YAAYC,GAAK,aAAaC,GAAK,aAAaC,GAAK,UAAUC,GAAK,aAAaC,GAAK,aAAaC,GAAK,UAAUC,GAAK,aAAaC,GAAK,aAAaC,GAAK,aAAaC,GAAK,YAAYC,GAAK,aAAaC,GAAK,YAAYC,GAAK,YAAYC,GAAK,WAAWC,GAAK,WAAWC,GAAK,UAAUC,GAAK,aAAaC,GAAK,aAAaC,GAAK,aAAaC,GAAK,WAAWC,GAAK,aAAaC,GAAK,aAAaC,GAAK,aAAaC,GAAK,WAAWC,GAAK,aAAaC,GAAK,YAAYC,GAAK,YAAYC,GAAK,YAAYC,GAAK,WAAWC,GAAK,WAAWC,GAAK,YAAYC,GAAK,WAAWC,GAAK,YAAYC,GAAK,YAAYC,GAAK,YAAYC,GAAK,WAAWC,GAAK,WAAWC,GAAK,YAAYC,GAAK,YAAYC,GAAK,UAAUC,GAAK,WAAWC,GAAK,WAAWC,GAAK,WAAWC,GAAK,WAAWC,GAAK,WAAWC,GAAK,aAAaC,GAAK,YAAYC,GAAK,WAAWC,GAAK,aAAaC,GAAK,WAAWC,GAAK,WAAWC,GAAK,UAAUC,GAAK,YAAYC,GAAK,aAAaC,GAAK,YAAYC,GAAK,YAAYC,GAAK,YAAYC,GAAK,SAASC,GAAK,WAAWC,GAAK,SAASC,GAAK,aAAaC,GAAK,WAAWC,GAAK,YAAYC,GAAK,WAAWC,GAAK,aAAaC,GAAK,UAAUC,GAAK,UAAUC,GAAK,YAAYC,GAAK,WAAWC,GAAK,WAAWC,GAAK,YAAYC,GAAK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MAAO,MAET,CACEkC,KAAM,cACNlC,MAAO,MAET,CACEkC,KAAM,WACNlC,MAAO,MAET,CACEkC,KAAM,uBACNlC,MAAO,MAET,CACEkC,KAAM,iCACNlC,MAAO,MAET,CACEkC,KAAM,UACNlC,MAAO,MAET,CACEkC,KAAM,UACNlC,MAAO,MAET,CACEkC,KAAM,OACNlC,MAAO,MAET,CACEkC,KAAM,SACNlC,MAAO,MAET,CACEkC,KAAM,QACNlC,MAAO,MAET,CACEkC,KAAM,WACNlC,MAAO,MAET,CACEkC,KAAM,UACNlC,MAAO,MAET,CACEkC,KAAM,OACNlC,MAAO,MAET,CACEkC,KAAM,SACNlC,MAAO,MAET,CACEkC,KAAM,WACNlC,MAAO,MAET,CACEkC,KAAM,YACNlC,MAAO,MAET,CACEkC,KAAM,QACNlC,MAAO,MAET,CACEkC,KAAM,mBACNlC,MAAO,MAET,CACEkC,KAAM,WACNlC,MAAO,MAET,CACEkC,KAAM,gBACNlC,MAAO,MAET,CACEkC,KAAM,WACNlC,MAAO,MAET,CACEkC,KAAM,YACNlC,MAAO,MAET,CACEkC,KAAM,cACNlC,MAAO,MAET,CACEkC,KAAM,WACNlC,MAAO,MAET,CACEkC,KAAM,UACNlC,MAAO,MAET,CACEkC,KAAM,WACNlC,MAAO,MAET,CACEkC,KAAM,SACNlC,MAAO,MAET,CACEkC,KAAM,gBACNlC,MAAO,MAET,CACEkC,KAAM,aACNlC,MAAO,MAET,CACEkC,KAAM,aACNlC,MAAO,MAET,CACEkC,KAAM,WACNlC,MAAO,MAET,CACEkC,KAAM,iBACNlC,MAAO,MAET,CACEkC,KAAM,eACNlC,MAAO,MAET,CACEkC,KAAM,2BACNlC,MAAO,MAET,CACEkC,KAAM,OACNlC,MAAO,MAET,CACEkC,KAAM,WACNlC,MAAO,MAET,CACEkC,KAAM,SACNlC,MAAO,MAET,CACEkC,KAAM,QACNlC,MAAO,MAET,CACEkC,KAAM,eACNlC,MAAO,MAET,CACEkC,KAAM,cACNlC,MAAO,MAET,CACEkC,KAAM,eACNlC,MAAO,MAET,CACEkC,KAAM,iBACNlC,MAA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","x_google_ignoreList":[0,1,2,3,4,5,9,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,62,67,69,74]}