From 81830a58ab3030600346456d99181f52f75b9550 Mon Sep 17 00:00:00 2001 From: Mike Alhayek Date: Fri, 5 Jun 2026 18:29:51 -0700 Subject: [PATCH 01/20] Add international telephone text field editor Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- CrestApps.OrchardCore.slnx | 1 + src/CrestApps.Docs/docs/changelog/v2.0.0.md | 1 + .../docs/modules/content-fields.md | 45 + src/CrestApps.Docs/docs/modules/index.md | 1 + .../docs/omnichannel/management.md | 3 +- .../Assets.json | 70 + .../css/international-telephone-editor.css | 13 + .../js/international-telephone-editor.js | 50 + ...CrestApps.OrchardCore.ContentFields.csproj | 29 + .../Manifest.cs | 23 + .../README.md | 12 + .../ResourceManagementOptionsConfiguration.cs | 58 + .../Startup.cs | 15 + ...xtField-InternationalTelephone.Edit.cshtml | 39 + ...Field-InternationalTelephone.Option.cshtml | 4 + .../Views/_ViewImports.cshtml | 5 + .../package-lock.json | 19 + .../package.json | 7 + .../scripts/international-telephone-editor.js | 46 + .../international-telephone-editor.min.js | 1 + .../styles/international-telephone-editor.css | 13 + .../international-telephone-editor.min.css | 1 + .../intl-tel-input/css/intlTelInput.css | 1263 ++ .../intl-tel-input/css/intlTelInput.min.css | 1 + .../vendors/intl-tel-input/img/flags.webp | Bin 0 -> 50980 bytes .../vendors/intl-tel-input/img/flags@2x.webp | Bin 0 -> 120877 bytes .../vendors/intl-tel-input/img/globe.webp | Bin 0 -> 909 bytes .../vendors/intl-tel-input/img/globe@2x.webp | Bin 0 -> 2439 bytes .../js/intlTelInputWithUtils.js | 10452 ++++++++++++++++ .../js/intlTelInputWithUtils.min.js | 31 + .../Manifest.cs | 1 + .../Migrations/ContactMethodMigrations.cs | 21 +- ...stApps.OrchardCore.Cms.Core.Targets.csproj | 1 + 33 files changed, 12224 insertions(+), 2 deletions(-) create mode 100644 src/CrestApps.Docs/docs/modules/content-fields.md create mode 100644 src/Modules/CrestApps.OrchardCore.ContentFields/Assets.json create mode 100644 src/Modules/CrestApps.OrchardCore.ContentFields/Assets/css/international-telephone-editor.css create mode 100644 src/Modules/CrestApps.OrchardCore.ContentFields/Assets/js/international-telephone-editor.js create mode 100644 src/Modules/CrestApps.OrchardCore.ContentFields/CrestApps.OrchardCore.ContentFields.csproj create mode 100644 src/Modules/CrestApps.OrchardCore.ContentFields/Manifest.cs create mode 100644 src/Modules/CrestApps.OrchardCore.ContentFields/README.md create mode 100644 src/Modules/CrestApps.OrchardCore.ContentFields/ResourceManagementOptionsConfiguration.cs create mode 100644 src/Modules/CrestApps.OrchardCore.ContentFields/Startup.cs create mode 100644 src/Modules/CrestApps.OrchardCore.ContentFields/Views/TextField-InternationalTelephone.Edit.cshtml create mode 100644 src/Modules/CrestApps.OrchardCore.ContentFields/Views/TextField-InternationalTelephone.Option.cshtml create mode 100644 src/Modules/CrestApps.OrchardCore.ContentFields/Views/_ViewImports.cshtml create mode 100644 src/Modules/CrestApps.OrchardCore.ContentFields/package-lock.json create mode 100644 src/Modules/CrestApps.OrchardCore.ContentFields/package.json create mode 100644 src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/scripts/international-telephone-editor.js create mode 100644 src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/scripts/international-telephone-editor.min.js create mode 100644 src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/styles/international-telephone-editor.css create mode 100644 src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/styles/international-telephone-editor.min.css create mode 100644 src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/vendors/intl-tel-input/css/intlTelInput.css create mode 100644 src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/vendors/intl-tel-input/css/intlTelInput.min.css create mode 100644 src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/vendors/intl-tel-input/img/flags.webp create mode 100644 src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/vendors/intl-tel-input/img/flags@2x.webp create mode 100644 src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/vendors/intl-tel-input/img/globe.webp create mode 100644 src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/vendors/intl-tel-input/img/globe@2x.webp create mode 100644 src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/vendors/intl-tel-input/js/intlTelInputWithUtils.js create mode 100644 src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/vendors/intl-tel-input/js/intlTelInputWithUtils.min.js diff --git a/CrestApps.OrchardCore.slnx b/CrestApps.OrchardCore.slnx index 94ebfb303..a6fb0717c 100644 --- a/CrestApps.OrchardCore.slnx +++ b/CrestApps.OrchardCore.slnx @@ -58,6 +58,7 @@ + diff --git a/src/CrestApps.Docs/docs/changelog/v2.0.0.md b/src/CrestApps.Docs/docs/changelog/v2.0.0.md index b7a004fb4..8d5ca5afb 100644 --- a/src/CrestApps.Docs/docs/changelog/v2.0.0.md +++ b/src/CrestApps.Docs/docs/changelog/v2.0.0.md @@ -111,6 +111,7 @@ Large parts of the reusable AI infrastructure are no longer implemented only ins - Azure AI Search index editors for **AI Documents** and **AI Memory** now normalize their built-in managed mappings on load and update so repeated edits do not keep appending duplicate `Content`, `Embedding`, and related managed fields, while custom mappings remain preserved - The **Clear saved AI memory** action in the current user's profile editor now uses Orchard Core's standard admin confirmation dialog and clears the user's saved memory entries by filtering the store's persisted records for the current user before removing the corresponding indexed AI memory documents - Content Transfer content-type settings now default **Allow Bulk Import** and **Allow Bulk Export** to enabled, so content types participate by default and can explicitly opt out by turning either setting off +- Added a new `CrestApps.OrchardCore.ContentFields` module with an `InternationalTelephone` `TextField` editor powered by `intl-tel-input`, and Omnichannel Management now migrates `PhoneNumberInfoPart.Number` to use that editor ### Typed AI deployments replace legacy deployment selectors diff --git a/src/CrestApps.Docs/docs/modules/content-fields.md b/src/CrestApps.Docs/docs/modules/content-fields.md new file mode 100644 index 000000000..94003a506 --- /dev/null +++ b/src/CrestApps.Docs/docs/modules/content-fields.md @@ -0,0 +1,45 @@ +--- +sidebar_label: Content Fields +sidebar_position: 2 +title: Content Fields +description: Adds custom Orchard Core content field editors maintained by CrestApps. +--- + +| | | +| --- | --- | +| **Feature Name** | CrestApps Content Fields | +| **Feature ID** | `CrestApps.OrchardCore.ContentFields` | + +Provides custom Orchard Core content field editors maintained by CrestApps. + +## Overview + +This module adds reusable editor variants for Orchard Core content fields without changing the underlying field types. + +It follows Orchard Core's custom editor convention by shipping both: + +- `TextField-InternationalTelephone.Option.cshtml` +- `TextField-InternationalTelephone.Edit.cshtml` + +## Included editors + +### InternationalTelephone (`TextField`) + +The `InternationalTelephone` editor uses the `intl-tel-input` library to provide: + +- country-aware phone number entry +- international formatting while editing +- normalization back to E.164 on submit +- local copied assets with CDN fallbacks through Orchard resource manifests + +Use it from the content definition UI or through migrations with: + +```csharp +.WithEditor("InternationalTelephone") +``` + +## Notes + +- The underlying field type stays `TextField`. +- Existing values stored in E.164 format continue to edit correctly. +- The Omnichannel Management module now depends on this feature for `PhoneNumberInfoPart.Number`. diff --git a/src/CrestApps.Docs/docs/modules/index.md b/src/CrestApps.Docs/docs/modules/index.md index 6d7b82fa3..582c97b57 100644 --- a/src/CrestApps.Docs/docs/modules/index.md +++ b/src/CrestApps.Docs/docs/modules/index.md @@ -14,6 +14,7 @@ CrestApps provides a set of standard modules that enhance core Orchard Core CMS | Module | Feature ID | Description | |--------|-----------|-------------| | [Content Access Control](content-access-control) | `CrestApps.OrchardCore.ContentAccessControl` | Role-based content access restrictions | +| [Content Fields](content-fields) | `CrestApps.OrchardCore.ContentFields` | Custom Orchard Core content field editors | | [Content Transfer](content-transfer) | `CrestApps.OrchardCore.ContentTransfer` | Bulk Excel import and export for content items | | [Recipes](recipes) | `CrestApps.OrchardCore.Recipes` | JSON-Schema support for Orchard Core recipes | | [Resources](resources) | `CrestApps.OrchardCore.Resources` | Shared scripts and stylesheets | diff --git a/src/CrestApps.Docs/docs/omnichannel/management.md b/src/CrestApps.Docs/docs/omnichannel/management.md index e5eb0f805..d167918eb 100644 --- a/src/CrestApps.Docs/docs/omnichannel/management.md +++ b/src/CrestApps.Docs/docs/omnichannel/management.md @@ -90,6 +90,8 @@ In Orchard Core Admin: 4. Add any fields/parts you need (phone number, email, lead status, custom fields, etc.). 5. Create/import contact items. +If you use the built-in `PhoneNumberInfoPart`, the `Number` field now uses the `InternationalTelephone` TextField editor from `CrestApps.OrchardCore.ContentFields`, which provides country-aware entry and stores submitted values in international format. + ### 3) Create your Subject content type 1. Go to `Content` → `Content Definition` → `Content Types`. @@ -203,4 +205,3 @@ The page also includes a **Page size** selector so managers can review more than | **Set Instructions** | Set instruction text for all selected activities. Instructions are notes the agent reads before completing the task. | | **Set Urgency Level** | Update the urgency level for all selected activities. | | **Change Subject** | Change the subject content type for all selected activities. | - diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/Assets.json b/src/Modules/CrestApps.OrchardCore.ContentFields/Assets.json new file mode 100644 index 000000000..e028ff3f6 --- /dev/null +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/Assets.json @@ -0,0 +1,70 @@ +[ + { + "inputs": [ + "Assets/js/international-telephone-editor.js" + ], + "output": "wwwroot/scripts/international-telephone-editor.js" + }, + { + "inputs": [ + "Assets/css/international-telephone-editor.css" + ], + "output": "wwwroot/styles/international-telephone-editor.css" + }, + { + "copy": true, + "inputs": [ + "node_modules/intl-tel-input/build/js/intlTelInputWithUtils.js" + ], + "output": "wwwroot/vendors/intl-tel-input/js/intlTelInputWithUtils.js" + }, + { + "copy": true, + "inputs": [ + "node_modules/intl-tel-input/build/js/intlTelInputWithUtils.min.js" + ], + "output": "wwwroot/vendors/intl-tel-input/js/intlTelInputWithUtils.min.js" + }, + { + "copy": true, + "inputs": [ + "node_modules/intl-tel-input/build/css/intlTelInput.css" + ], + "output": "wwwroot/vendors/intl-tel-input/css/intlTelInput.css" + }, + { + "copy": true, + "inputs": [ + "node_modules/intl-tel-input/build/css/intlTelInput.min.css" + ], + "output": "wwwroot/vendors/intl-tel-input/css/intlTelInput.min.css" + }, + { + "copy": true, + "inputs": [ + "node_modules/intl-tel-input/build/img/flags.webp" + ], + "output": "wwwroot/vendors/intl-tel-input/img/flags.webp" + }, + { + "copy": true, + "inputs": [ + "node_modules/intl-tel-input/build/img/flags@2x.webp" + ], + "output": "wwwroot/vendors/intl-tel-input/img/flags@2x.webp" + }, + { + "copy": true, + "inputs": [ + "node_modules/intl-tel-input/build/img/globe.webp" + ], + "output": "wwwroot/vendors/intl-tel-input/img/globe.webp" + }, + { + "copy": true, + "inputs": [ + "node_modules/intl-tel-input/build/img/globe@2x.webp" + ], + "output": "wwwroot/vendors/intl-tel-input/img/globe@2x.webp" + } +] diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/Assets/css/international-telephone-editor.css b/src/Modules/CrestApps.OrchardCore.ContentFields/Assets/css/international-telephone-editor.css new file mode 100644 index 000000000..49a6ca2c4 --- /dev/null +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/Assets/css/international-telephone-editor.css @@ -0,0 +1,13 @@ +.content-field-international-telephone .iti, +.content-field-international-telephone .iti--inline-dropdown, +.content-field-international-telephone .iti__tel-input { + width: 100%; +} + +.content-field-international-telephone .iti { + display: block; +} + +.content-field-international-telephone .iti__tel-input { + min-height: calc(1.5em + 0.75rem + 2px); +} diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/Assets/js/international-telephone-editor.js b/src/Modules/CrestApps.OrchardCore.ContentFields/Assets/js/international-telephone-editor.js new file mode 100644 index 000000000..2b88f248f --- /dev/null +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/Assets/js/international-telephone-editor.js @@ -0,0 +1,50 @@ +(function () { + const selector = '[data-intl-tel-input="true"]'; + + function initializeInput(input) { + if (!window.intlTelInput || input.dataset.intlTelInputInitialized === 'true') { + return; + } + + input.dataset.intlTelInputInitialized = 'true'; + + const telephoneInput = window.intlTelInput(input, { + containerClass: 'w-100', + dropdownParent: document.body, + numberDisplayFormat: 'INTERNATIONAL', + strictMode: true + }); + + if (input.disabled) { + telephoneInput.setDisabled(true); + } + else if (input.readOnly) { + telephoneInput.setReadonly(true); + } + + if (input.form) { + input.form.addEventListener('submit', function () { + if (!input.value) { + return; + } + + const normalizedNumber = telephoneInput.getNumber(); + + if (normalizedNumber) { + input.value = normalizedNumber; + } + }); + } + } + + function initialize() { + document.querySelectorAll(selector).forEach(initializeInput); + } + + if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', initialize, { once: true }); + return; + } + + initialize(); +})(); diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/CrestApps.OrchardCore.ContentFields.csproj b/src/Modules/CrestApps.OrchardCore.ContentFields/CrestApps.OrchardCore.ContentFields.csproj new file mode 100644 index 000000000..d68a92ff2 --- /dev/null +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/CrestApps.OrchardCore.ContentFields.csproj @@ -0,0 +1,29 @@ + + + + $(MSBuildProjectName) + true + CrestApps OrchardCore Content Fields Module + + $(CrestAppsDescription) + + Adds custom Orchard Core content field editors maintained by CrestApps. + + $(PackageTags) OrchardCoreCMS Content Fields + + + + + + + + + + + + + + + + + diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/Manifest.cs b/src/Modules/CrestApps.OrchardCore.ContentFields/Manifest.cs new file mode 100644 index 000000000..3117962fe --- /dev/null +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/Manifest.cs @@ -0,0 +1,23 @@ +using CrestApps.OrchardCore; +using OrchardCore.Modules.Manifest; + +[assembly: Module( + Name = "CrestApps Content Fields", + Author = CrestAppsManifestConstants.Author, + Website = CrestAppsManifestConstants.Website, + Version = CrestAppsManifestConstants.Version, + Description = "Adds custom Orchard Core content field editors maintained by CrestApps.", + Category = "Content", + IsAlwaysEnabled = false +)] + +[assembly: Feature( + Name = "CrestApps Content Fields", + Id = "CrestApps.OrchardCore.ContentFields", + Category = "Content", + Description = "Adds custom Orchard Core content field editors maintained by CrestApps.", + Dependencies = + [ + "OrchardCore.ContentFields", + ] +)] diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/README.md b/src/Modules/CrestApps.OrchardCore.ContentFields/README.md new file mode 100644 index 000000000..b3b28975f --- /dev/null +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/README.md @@ -0,0 +1,12 @@ +# CrestApps.OrchardCore.ContentFields + +Provides custom Orchard Core content field editors maintained by CrestApps. + +## Features + +- Adds the `InternationalTelephone` editor for Orchard Core `TextField` +- Bundles the `intl-tel-input` library and supporting assets + +## Usage + +Enable the **CrestApps Content Fields** feature, then choose the `InternationalTelephone` editor on a `TextField` definition or through a data migration with `.WithEditor("InternationalTelephone")`. diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/ResourceManagementOptionsConfiguration.cs b/src/Modules/CrestApps.OrchardCore.ContentFields/ResourceManagementOptionsConfiguration.cs new file mode 100644 index 000000000..1d83717b0 --- /dev/null +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/ResourceManagementOptionsConfiguration.cs @@ -0,0 +1,58 @@ +using Microsoft.Extensions.Options; +using OrchardCore.ResourceManagement; + +namespace CrestApps.OrchardCore.ContentFields; + +internal sealed class ResourceManagementOptionsConfiguration : IConfigureOptions +{ + private static readonly ResourceManifest _manifest; + + static ResourceManagementOptionsConfiguration() + { + _manifest = new ResourceManifest(); + + _manifest + .DefineStyle("intl-tel-input") + .SetUrl( + "~/CrestApps.OrchardCore.ContentFields/vendors/intl-tel-input/css/intlTelInput.min.css", + "~/CrestApps.OrchardCore.ContentFields/vendors/intl-tel-input/css/intlTelInput.css") + .SetCdn( + "https://cdn.jsdelivr.net/npm/intl-tel-input@25.12.4/build/css/intlTelInput.min.css", + "https://cdn.jsdelivr.net/npm/intl-tel-input@25.12.4/build/css/intlTelInput.css") + .SetVersion("25.12.4"); + + _manifest + .DefineStyle("international-telephone-editor") + .SetUrl( + "~/CrestApps.OrchardCore.ContentFields/styles/international-telephone-editor.min.css", + "~/CrestApps.OrchardCore.ContentFields/styles/international-telephone-editor.css") + .SetVersion("1.0.0"); + + _manifest + .DefineScript("intl-tel-input") + .SetUrl( + "~/CrestApps.OrchardCore.ContentFields/vendors/intl-tel-input/js/intlTelInputWithUtils.min.js", + "~/CrestApps.OrchardCore.ContentFields/vendors/intl-tel-input/js/intlTelInputWithUtils.js") + .SetCdn( + "https://cdn.jsdelivr.net/npm/intl-tel-input@25.12.4/build/js/intlTelInputWithUtils.min.js", + "https://cdn.jsdelivr.net/npm/intl-tel-input@25.12.4/build/js/intlTelInputWithUtils.js") + .SetVersion("25.12.4"); + + _manifest + .DefineScript("international-telephone-editor") + .SetUrl( + "~/CrestApps.OrchardCore.ContentFields/scripts/international-telephone-editor.min.js", + "~/CrestApps.OrchardCore.ContentFields/scripts/international-telephone-editor.js") + .SetDependencies("intl-tel-input") + .SetVersion("1.0.0"); + } + + /// + /// Configures the resource manifests for this feature. + /// + /// The resource management options. + public void Configure(ResourceManagementOptions options) + { + options.ResourceManifests.Add(_manifest); + } +} diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/Startup.cs b/src/Modules/CrestApps.OrchardCore.ContentFields/Startup.cs new file mode 100644 index 000000000..514d438d5 --- /dev/null +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/Startup.cs @@ -0,0 +1,15 @@ +using Microsoft.Extensions.DependencyInjection; +using OrchardCore.Modules; + +namespace CrestApps.OrchardCore.ContentFields; + +/// +/// Registers services and configuration for this feature. +/// +public sealed class Startup : StartupBase +{ + public override void ConfigureServices(IServiceCollection services) + { + services.AddResourceConfiguration(); + } +} diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/Views/TextField-InternationalTelephone.Edit.cshtml b/src/Modules/CrestApps.OrchardCore.ContentFields/Views/TextField-InternationalTelephone.Edit.cshtml new file mode 100644 index 000000000..517df5935 --- /dev/null +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/Views/TextField-InternationalTelephone.Edit.cshtml @@ -0,0 +1,39 @@ +@model OrchardCore.ContentFields.ViewModels.EditTextFieldViewModel +@using OrchardCore.ContentFields +@using OrchardCore.ContentFields.Settings +@using OrchardCore.ContentManagement.Metadata.Models +@using OrchardCore.Localization.Data +@using OrchardCore.Mvc.Utilities +@inject IDataLocalizer D +@{ + var settings = Model.PartFieldDefinition.GetSettings(); + string localizedFieldName = D[Model.PartFieldDefinition.DisplayName(), DataLocalizationContext.ContentField(Model.PartFieldDefinition.PartDefinition.Name)]; +} + +@if (settings.Type == FieldBehaviorType.GeneratedHidden) +{ + + + return; +} + +
+ +
+ + + @if (!string.IsNullOrEmpty(settings.Hint)) + { + @settings.Hint + } +
+
+ + + + diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/Views/TextField-InternationalTelephone.Option.cshtml b/src/Modules/CrestApps.OrchardCore.ContentFields/Views/TextField-InternationalTelephone.Option.cshtml new file mode 100644 index 000000000..6428462ae --- /dev/null +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/Views/TextField-InternationalTelephone.Option.cshtml @@ -0,0 +1,4 @@ +@{ + string currentEditor = Model.Editor; +} + diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/Views/_ViewImports.cshtml b/src/Modules/CrestApps.OrchardCore.ContentFields/Views/_ViewImports.cshtml new file mode 100644 index 000000000..252fd654b --- /dev/null +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/Views/_ViewImports.cshtml @@ -0,0 +1,5 @@ +@inherits OrchardCore.DisplayManagement.Razor.RazorPage + +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers +@addTagHelper *, OrchardCore.DisplayManagement +@addTagHelper *, OrchardCore.ResourceManagement diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/package-lock.json b/src/Modules/CrestApps.OrchardCore.ContentFields/package-lock.json new file mode 100644 index 000000000..689efee47 --- /dev/null +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/package-lock.json @@ -0,0 +1,19 @@ +{ + "name": "crestapps.orchardcore.content-fields", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "crestapps.orchardcore.content-fields", + "dependencies": { + "intl-tel-input": "25.12.4" + } + }, + "node_modules/intl-tel-input": { + "version": "25.12.4", + "resolved": "https://registry.npmjs.org/intl-tel-input/-/intl-tel-input-25.12.4.tgz", + "integrity": "sha512-IpS4wlKFAXeJd3lO9ALGfjEwzCLAuxsGozG9olCq08whXfTML1c8iD41TVXhWM0OaGFasRnjPjHmxNmsGdJ+VA==", + "license": "MIT" + } + } +} diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/package.json b/src/Modules/CrestApps.OrchardCore.ContentFields/package.json new file mode 100644 index 000000000..09da74735 --- /dev/null +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/package.json @@ -0,0 +1,7 @@ +{ + "name": "crestapps.orchardcore.content-fields", + "private": true, + "dependencies": { + "intl-tel-input": "25.12.4" + } +} diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/scripts/international-telephone-editor.js b/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/scripts/international-telephone-editor.js new file mode 100644 index 000000000..436276365 --- /dev/null +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/scripts/international-telephone-editor.js @@ -0,0 +1,46 @@ +/* +** NOTE: This file is generated by Gulp and should not be edited directly! +** Any changes made directly to this file will be overwritten next time its asset group is processed by Gulp. +*/ + +(function () { + var selector = '[data-intl-tel-input="true"]'; + function initializeInput(input) { + if (!window.intlTelInput || input.dataset.intlTelInputInitialized === 'true') { + return; + } + input.dataset.intlTelInputInitialized = 'true'; + var telephoneInput = window.intlTelInput(input, { + containerClass: 'w-100', + dropdownParent: document.body, + numberDisplayFormat: 'INTERNATIONAL', + strictMode: true + }); + if (input.disabled) { + telephoneInput.setDisabled(true); + } else if (input.readOnly) { + telephoneInput.setReadonly(true); + } + if (input.form) { + input.form.addEventListener('submit', function () { + if (!input.value) { + return; + } + var normalizedNumber = telephoneInput.getNumber(); + if (normalizedNumber) { + input.value = normalizedNumber; + } + }); + } + } + function initialize() { + document.querySelectorAll(selector).forEach(initializeInput); + } + if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', initialize, { + once: true + }); + return; + } + initialize(); +})(); \ No newline at end of file diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/scripts/international-telephone-editor.min.js b/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/scripts/international-telephone-editor.min.js new file mode 100644 index 000000000..0c2ce903b --- /dev/null +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/scripts/international-telephone-editor.min.js @@ -0,0 +1 @@ +!function(){function t(t){if(window.intlTelInput&&"true"!==t.dataset.intlTelInputInitialized){t.dataset.intlTelInputInitialized="true";var e=window.intlTelInput(t,{containerClass:"w-100",dropdownParent:document.body,numberDisplayFormat:"INTERNATIONAL",strictMode:!0});t.disabled?e.setDisabled(!0):t.readOnly&&e.setReadonly(!0),t.form&&t.form.addEventListener("submit",function(){if(t.value){var n=e.getNumber();n&&(t.value=n)}})}}function e(){document.querySelectorAll('[data-intl-tel-input="true"]').forEach(t)}"loading"!==document.readyState?e():document.addEventListener("DOMContentLoaded",e,{once:!0})}(); diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/styles/international-telephone-editor.css b/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/styles/international-telephone-editor.css new file mode 100644 index 000000000..49a6ca2c4 --- /dev/null +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/styles/international-telephone-editor.css @@ -0,0 +1,13 @@ +.content-field-international-telephone .iti, +.content-field-international-telephone .iti--inline-dropdown, +.content-field-international-telephone .iti__tel-input { + width: 100%; +} + +.content-field-international-telephone .iti { + display: block; +} + +.content-field-international-telephone .iti__tel-input { + min-height: calc(1.5em + 0.75rem + 2px); +} diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/styles/international-telephone-editor.min.css b/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/styles/international-telephone-editor.min.css new file mode 100644 index 000000000..9333346d4 --- /dev/null +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/styles/international-telephone-editor.min.css @@ -0,0 +1 @@ +.content-field-international-telephone .iti,.content-field-international-telephone .iti--inline-dropdown,.content-field-international-telephone .iti__tel-input{width:100%}.content-field-international-telephone .iti{display:block}.content-field-international-telephone .iti__tel-input{min-height:calc(1.5em + .75rem + 2px)} diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/vendors/intl-tel-input/css/intlTelInput.css b/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/vendors/intl-tel-input/css/intlTelInput.css new file mode 100644 index 000000000..9f90fb189 --- /dev/null +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/vendors/intl-tel-input/css/intlTelInput.css @@ -0,0 +1,1263 @@ +:root { + --iti-hover-color: rgba(0, 0, 0, 0.05); + --iti-border-color: #ccc; + --iti-dialcode-color: #999; + --iti-dropdown-bg: white; + --iti-search-icon-color: #999; + --iti-spacer-horizontal: 8px; + --iti-flag-height: 12px; + --iti-flag-width: 16px; + --iti-border-width: 1px; + --iti-arrow-height: 4px; + --iti-arrow-width: 6px; + --iti-triangle-border: calc(var(--iti-arrow-width) / 2); + --iti-arrow-padding: 6px; + --iti-arrow-color: #555; + --iti-path-flags-1x: url("../img/flags.webp"); + --iti-path-flags-2x: url("../img/flags@2x.webp"); + --iti-path-globe-1x: url("../img/globe.webp"); + --iti-path-globe-2x: url("../img/globe@2x.webp"); + --iti-flag-sprite-width: 3904px; + --iti-flag-sprite-height: 12px; + --iti-mobile-popup-margin: 30px; +} + +.iti { + position: relative; + display: inline-block; +} +.iti * { + box-sizing: border-box; +} +.iti__a11y-text { + width: 1px; + height: 1px; + clip: rect(1px, 1px, 1px, 1px); + overflow: hidden; + position: absolute; +} +.iti input.iti__tel-input, +.iti input.iti__tel-input[type=text], +.iti input.iti__tel-input[type=tel] { + position: relative; + z-index: 0; + margin: 0 !important; +} +.iti__country-container { + position: absolute; + top: 0; + bottom: 0; + left: 0; + padding: var(--iti-border-width); +} +.iti__selected-country { + z-index: 1; + position: relative; + display: flex; + align-items: center; + height: 100%; + background: none; + border: 0; + margin: 0; + padding: 0; + font-family: inherit; + font-size: inherit; + color: inherit; + border-radius: 0; + font-weight: inherit; + line-height: inherit; + text-decoration: none; +} +.iti__selected-country-primary { + display: flex; + align-items: center; + height: 100%; + padding: 0 var(--iti-arrow-padding) 0 var(--iti-spacer-horizontal); +} +.iti__arrow { + margin-left: var(--iti-arrow-padding); + width: 0; + height: 0; + border-left: var(--iti-triangle-border) solid transparent; + border-right: var(--iti-triangle-border) solid transparent; + border-top: var(--iti-arrow-height) solid var(--iti-arrow-color); +} +.iti__arrow--up { + border-top: none; + border-bottom: var(--iti-arrow-height) solid var(--iti-arrow-color); +} +.iti__dropdown-content { + border-radius: 3px; + background-color: var(--iti-dropdown-bg); +} +.iti--inline-dropdown .iti__dropdown-content { + position: absolute; + z-index: 2; + margin-top: 3px; + margin-left: calc(var(--iti-border-width) * -1); + border: var(--iti-border-width) solid var(--iti-border-color); + box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2); +} +.iti__search-input { + width: 100%; + border-width: 0; + border-radius: 3px; + padding-left: 30px; + padding-right: 28px; +} +[dir=rtl] .iti__search-input { + padding-left: inherit; + padding-right: 30px; + background-position: right 8px center; +} +.iti__search-input + .iti__country-list { + border-top: 1px solid var(--iti-border-color); +} +.iti__search-input::-webkit-search-cancel-button { + appearance: none; +} +.iti__search-input-wrapper { + position: relative; + display: flex; + align-items: center; +} +.iti__search-icon { + position: absolute; + left: 8px; + display: flex; + pointer-events: none; +} +[dir=rtl] .iti__search-icon { + left: auto; + right: 8px; +} +.iti__search-icon-svg { + stroke: var(--iti-search-icon-color); + fill: none; + stroke-width: 3; +} +.iti__search-clear { + position: absolute; + right: 4px; + background: transparent; + border: 0; + border-radius: 3px; + cursor: pointer; + padding: 4px; + display: flex; + align-items: center; + justify-content: center; + transition: background-color 0.15s ease; + width: 24px; + height: 24px; +} +.iti__search-clear .iti__search-clear-x { + stroke-width: 2; +} +.iti__search-clear .iti__search-clear-bg { + fill: var(--iti-search-icon-color); +} +[dir=rtl] .iti__search-clear { + right: auto; + left: 4px; +} +.iti__search-clear:hover, .iti__search-clear:focus-visible { + background: var(--iti-hover-color); + outline: none; +} +.iti__no-results { + text-align: center; + padding: 30px 0; +} +.iti__country-list { + list-style: none; + padding: 0; + margin: 0; + cursor: pointer; + overflow-y: scroll; + -webkit-overflow-scrolling: touch; +} +.iti--inline-dropdown .iti__country-list { + max-height: 185px; +} +.iti--flexible-dropdown-width .iti__country-list { + white-space: nowrap; +} +@media (max-width: 500px) { + .iti--flexible-dropdown-width .iti__country-list { + white-space: normal; + } +} +.iti__country { + display: flex; + align-items: center; + padding: 8px var(--iti-spacer-horizontal); + outline: none; +} +.iti__dial-code { + color: var(--iti-dialcode-color); +} +.iti__country.iti__highlight { + background-color: var(--iti-hover-color); +} +.iti__country-list .iti__flag, .iti__country-name { + margin-right: var(--iti-spacer-horizontal); +} +[dir=rtl] .iti__country-list .iti__flag, [dir=rtl] .iti__country-name { + margin-right: 0; + margin-left: var(--iti-spacer-horizontal); +} +.iti--allow-dropdown .iti__country-container:not(:has(+ input[disabled])):not(:has(+ input[readonly])) button.iti__selected-country { + cursor: pointer; +} +.iti--allow-dropdown .iti__country-container:not(:has(+ input[disabled])):not(:has(+ input[readonly])) .iti__selected-country-primary:hover, +.iti--allow-dropdown .iti__country-container:not(:has(+ input[disabled])):not(:has(+ input[readonly])) .iti__selected-country:has(+ .iti__dropdown-content:hover) .iti__selected-country-primary { + background-color: var(--iti-hover-color); +} +.iti .iti__selected-dial-code { + margin-left: 4px; +} +.iti--container { + position: fixed; + top: -1000px; + left: -1000px; + z-index: 1060; + padding: var(--iti-border-width); +} +.iti--container:hover { + cursor: pointer; +} +.iti__hide { + display: none; +} +.iti__v-hide { + visibility: hidden; +} + +.iti--fullscreen-popup.iti--container { + background-color: rgba(0, 0, 0, 0.5); + top: 0; + bottom: 0; + left: 0; + right: 0; + position: fixed; + padding: var(--iti-mobile-popup-margin); + display: flex; + flex-direction: column; + justify-content: flex-start; +} +.iti--fullscreen-popup .iti__dropdown-content { + display: flex; + flex-direction: column; + max-height: 100%; + position: relative; +} +.iti--fullscreen-popup .iti__country { + padding: 10px 10px; + line-height: 1.5em; +} + +.iti__flag { + --iti-flag-offset: 100px; + height: var(--iti-flag-height); + width: var(--iti-flag-width); + border-radius: 1px; + box-shadow: 0px 0px 1px 0px #888; + background-image: var(--iti-path-flags-1x); + background-repeat: no-repeat; + background-position: var(--iti-flag-offset) 0; + background-size: var(--iti-flag-sprite-width) var(--iti-flag-sprite-height); +} + +.iti__ac { + --iti-flag-offset: 0px; +} + +.iti__ad { + --iti-flag-offset: -16px; +} + +.iti__ae { + --iti-flag-offset: -32px; +} + +.iti__af { + --iti-flag-offset: -48px; +} + +.iti__ag { + --iti-flag-offset: -64px; +} + +.iti__ai { + --iti-flag-offset: -80px; +} + +.iti__al { + --iti-flag-offset: -96px; +} + +.iti__am { + --iti-flag-offset: -112px; +} + +.iti__ao { + --iti-flag-offset: -128px; +} + +.iti__ar { + --iti-flag-offset: -144px; +} + +.iti__as { + --iti-flag-offset: -160px; +} + +.iti__at { + --iti-flag-offset: -176px; +} + +.iti__au { + --iti-flag-offset: -192px; +} + +.iti__aw { + --iti-flag-offset: -208px; +} + +.iti__ax { + --iti-flag-offset: -224px; +} + +.iti__az { + --iti-flag-offset: -240px; +} + +.iti__ba { + --iti-flag-offset: -256px; +} + +.iti__bb { + --iti-flag-offset: -272px; +} + +.iti__bd { + --iti-flag-offset: -288px; +} + +.iti__be { + --iti-flag-offset: -304px; +} + +.iti__bf { + --iti-flag-offset: -320px; +} + +.iti__bg { + --iti-flag-offset: -336px; +} + +.iti__bh { + --iti-flag-offset: -352px; +} + +.iti__bi { + --iti-flag-offset: -368px; +} + +.iti__bj { + --iti-flag-offset: -384px; +} + +.iti__bl { + --iti-flag-offset: -400px; +} + +.iti__bm { + --iti-flag-offset: -416px; +} + +.iti__bn { + --iti-flag-offset: -432px; +} + +.iti__bo { + --iti-flag-offset: -448px; +} + +.iti__bq { + --iti-flag-offset: -464px; +} + +.iti__br { + --iti-flag-offset: -480px; +} + +.iti__bs { + --iti-flag-offset: -496px; +} + +.iti__bt { + --iti-flag-offset: -512px; +} + +.iti__bw { + --iti-flag-offset: -528px; +} + +.iti__by { + --iti-flag-offset: -544px; +} + +.iti__bz { + --iti-flag-offset: -560px; +} + +.iti__ca { + --iti-flag-offset: -576px; +} + +.iti__cc { + --iti-flag-offset: -592px; +} + +.iti__cd { + --iti-flag-offset: -608px; +} + +.iti__cf { + --iti-flag-offset: -624px; +} + +.iti__cg { + --iti-flag-offset: -640px; +} + +.iti__ch { + --iti-flag-offset: -656px; +} + +.iti__ci { + --iti-flag-offset: -672px; +} + +.iti__ck { + --iti-flag-offset: -688px; +} + +.iti__cl { + --iti-flag-offset: -704px; +} + +.iti__cm { + --iti-flag-offset: -720px; +} + +.iti__cn { + --iti-flag-offset: -736px; +} + +.iti__co { + --iti-flag-offset: -752px; +} + +.iti__cr { + --iti-flag-offset: -768px; +} + +.iti__cu { + --iti-flag-offset: -784px; +} + +.iti__cv { + --iti-flag-offset: -800px; +} + +.iti__cw { + --iti-flag-offset: -816px; +} + +.iti__cx { + --iti-flag-offset: -832px; +} + +.iti__cy { + --iti-flag-offset: -848px; +} + +.iti__cz { + --iti-flag-offset: -864px; +} + +.iti__de { + --iti-flag-offset: -880px; +} + +.iti__dj { + --iti-flag-offset: -896px; +} + +.iti__dk { + --iti-flag-offset: -912px; +} + +.iti__dm { + --iti-flag-offset: -928px; +} + +.iti__do { + --iti-flag-offset: -944px; +} + +.iti__dz { + --iti-flag-offset: -960px; +} + +.iti__ec { + --iti-flag-offset: -976px; +} + +.iti__ee { + --iti-flag-offset: -992px; +} + +.iti__eg { + --iti-flag-offset: -1008px; +} + +.iti__eh { + --iti-flag-offset: -1024px; +} + +.iti__er { + --iti-flag-offset: -1040px; +} + +.iti__es { + --iti-flag-offset: -1056px; +} + +.iti__et { + --iti-flag-offset: -1072px; +} + +.iti__fi { + --iti-flag-offset: -1088px; +} + +.iti__fj { + --iti-flag-offset: -1104px; +} + +.iti__fk { + --iti-flag-offset: -1120px; +} + +.iti__fm { + --iti-flag-offset: -1136px; +} + +.iti__fo { + --iti-flag-offset: -1152px; +} + +.iti__fr { + --iti-flag-offset: -1168px; +} + +.iti__ga { + --iti-flag-offset: -1184px; +} + +.iti__gb { + --iti-flag-offset: -1200px; +} + +.iti__gd { + --iti-flag-offset: -1216px; +} + +.iti__ge { + --iti-flag-offset: -1232px; +} + +.iti__gf { + --iti-flag-offset: -1248px; +} + +.iti__gg { + --iti-flag-offset: -1264px; +} + +.iti__gh { + --iti-flag-offset: -1280px; +} + +.iti__gi { + --iti-flag-offset: -1296px; +} + +.iti__gl { + --iti-flag-offset: -1312px; +} + +.iti__gm { + --iti-flag-offset: -1328px; +} + +.iti__gn { + --iti-flag-offset: -1344px; +} + +.iti__gp { + --iti-flag-offset: -1360px; +} + +.iti__gq { + --iti-flag-offset: -1376px; +} + +.iti__gr { + --iti-flag-offset: -1392px; +} + +.iti__gt { + --iti-flag-offset: -1408px; +} + +.iti__gu { + --iti-flag-offset: -1424px; +} + +.iti__gw { + --iti-flag-offset: -1440px; +} + +.iti__gy { + --iti-flag-offset: -1456px; +} + +.iti__hk { + --iti-flag-offset: -1472px; +} + +.iti__hn { + --iti-flag-offset: -1488px; +} + +.iti__hr { + --iti-flag-offset: -1504px; +} + +.iti__ht { + --iti-flag-offset: -1520px; +} + +.iti__hu { + --iti-flag-offset: -1536px; +} + +.iti__id { + --iti-flag-offset: -1552px; +} + +.iti__ie { + --iti-flag-offset: -1568px; +} + +.iti__il { + --iti-flag-offset: -1584px; +} + +.iti__im { + --iti-flag-offset: -1600px; +} + +.iti__in { + --iti-flag-offset: -1616px; +} + +.iti__io { + --iti-flag-offset: -1632px; +} + +.iti__iq { + --iti-flag-offset: -1648px; +} + +.iti__ir { + --iti-flag-offset: -1664px; +} + +.iti__is { + --iti-flag-offset: -1680px; +} + +.iti__it { + --iti-flag-offset: -1696px; +} + +.iti__je { + --iti-flag-offset: -1712px; +} + +.iti__jm { + --iti-flag-offset: -1728px; +} + +.iti__jo { + --iti-flag-offset: -1744px; +} + +.iti__jp { + --iti-flag-offset: -1760px; +} + +.iti__ke { + --iti-flag-offset: -1776px; +} + +.iti__kg { + --iti-flag-offset: -1792px; +} + +.iti__kh { + --iti-flag-offset: -1808px; +} + +.iti__ki { + --iti-flag-offset: -1824px; +} + +.iti__km { + --iti-flag-offset: -1840px; +} + +.iti__kn { + --iti-flag-offset: -1856px; +} + +.iti__kp { + --iti-flag-offset: -1872px; +} + +.iti__kr { + --iti-flag-offset: -1888px; +} + +.iti__kw { + --iti-flag-offset: -1904px; +} + +.iti__ky { + --iti-flag-offset: -1920px; +} + +.iti__kz { + --iti-flag-offset: -1936px; +} + +.iti__la { + --iti-flag-offset: -1952px; +} + +.iti__lb { + --iti-flag-offset: -1968px; +} + +.iti__lc { + --iti-flag-offset: -1984px; +} + +.iti__li { + --iti-flag-offset: -2000px; +} + +.iti__lk { + --iti-flag-offset: -2016px; +} + +.iti__lr { + --iti-flag-offset: -2032px; +} + +.iti__ls { + --iti-flag-offset: -2048px; +} + +.iti__lt { + --iti-flag-offset: -2064px; +} + +.iti__lu { + --iti-flag-offset: -2080px; +} + +.iti__lv { + --iti-flag-offset: -2096px; +} + +.iti__ly { + --iti-flag-offset: -2112px; +} + +.iti__ma { + --iti-flag-offset: -2128px; +} + +.iti__mc { + --iti-flag-offset: -2144px; +} + +.iti__md { + --iti-flag-offset: -2160px; +} + +.iti__me { + --iti-flag-offset: -2176px; +} + +.iti__mf { + --iti-flag-offset: -2192px; +} + +.iti__mg { + --iti-flag-offset: -2208px; +} + +.iti__mh { + --iti-flag-offset: -2224px; +} + +.iti__mk { + --iti-flag-offset: -2240px; +} + +.iti__ml { + --iti-flag-offset: -2256px; +} + +.iti__mm { + --iti-flag-offset: -2272px; +} + +.iti__mn { + --iti-flag-offset: -2288px; +} + +.iti__mo { + --iti-flag-offset: -2304px; +} + +.iti__mp { + --iti-flag-offset: -2320px; +} + +.iti__mq { + --iti-flag-offset: -2336px; +} + +.iti__mr { + --iti-flag-offset: -2352px; +} + +.iti__ms { + --iti-flag-offset: -2368px; +} + +.iti__mt { + --iti-flag-offset: -2384px; +} + +.iti__mu { + --iti-flag-offset: -2400px; +} + +.iti__mv { + --iti-flag-offset: -2416px; +} + +.iti__mw { + --iti-flag-offset: -2432px; +} + +.iti__mx { + --iti-flag-offset: -2448px; +} + +.iti__my { + --iti-flag-offset: -2464px; +} + +.iti__mz { + --iti-flag-offset: -2480px; +} + +.iti__na { + --iti-flag-offset: -2496px; +} + +.iti__nc { + --iti-flag-offset: -2512px; +} + +.iti__ne { + --iti-flag-offset: -2528px; +} + +.iti__nf { + --iti-flag-offset: -2544px; +} + +.iti__ng { + --iti-flag-offset: -2560px; +} + +.iti__ni { + --iti-flag-offset: -2576px; +} + +.iti__nl { + --iti-flag-offset: -2592px; +} + +.iti__no { + --iti-flag-offset: -2608px; +} + +.iti__np { + --iti-flag-offset: -2624px; +} + +.iti__nr { + --iti-flag-offset: -2640px; +} + +.iti__nu { + --iti-flag-offset: -2656px; +} + +.iti__nz { + --iti-flag-offset: -2672px; +} + +.iti__om { + --iti-flag-offset: -2688px; +} + +.iti__pa { + --iti-flag-offset: -2704px; +} + +.iti__pe { + --iti-flag-offset: -2720px; +} + +.iti__pf { + --iti-flag-offset: -2736px; +} + +.iti__pg { + --iti-flag-offset: -2752px; +} + +.iti__ph { + --iti-flag-offset: -2768px; +} + +.iti__pk { + --iti-flag-offset: -2784px; +} + +.iti__pl { + --iti-flag-offset: -2800px; +} + +.iti__pm { + --iti-flag-offset: -2816px; +} + +.iti__pr { + --iti-flag-offset: -2832px; +} + +.iti__ps { + --iti-flag-offset: -2848px; +} + +.iti__pt { + --iti-flag-offset: -2864px; +} + +.iti__pw { + --iti-flag-offset: -2880px; +} + +.iti__py { + --iti-flag-offset: -2896px; +} + +.iti__qa { + --iti-flag-offset: -2912px; +} + +.iti__re { + --iti-flag-offset: -2928px; +} + +.iti__ro { + --iti-flag-offset: -2944px; +} + +.iti__rs { + --iti-flag-offset: -2960px; +} + +.iti__ru { + --iti-flag-offset: -2976px; +} + +.iti__rw { + --iti-flag-offset: -2992px; +} + +.iti__sa { + --iti-flag-offset: -3008px; +} + +.iti__sb { + --iti-flag-offset: -3024px; +} + +.iti__sc { + --iti-flag-offset: -3040px; +} + +.iti__sd { + --iti-flag-offset: -3056px; +} + +.iti__se { + --iti-flag-offset: -3072px; +} + +.iti__sg { + --iti-flag-offset: -3088px; +} + +.iti__sh { + --iti-flag-offset: -3104px; +} + +.iti__si { + --iti-flag-offset: -3120px; +} + +.iti__sj { + --iti-flag-offset: -3136px; +} + +.iti__sk { + --iti-flag-offset: -3152px; +} + +.iti__sl { + --iti-flag-offset: -3168px; +} + +.iti__sm { + --iti-flag-offset: -3184px; +} + +.iti__sn { + --iti-flag-offset: -3200px; +} + +.iti__so { + --iti-flag-offset: -3216px; +} + +.iti__sr { + --iti-flag-offset: -3232px; +} + +.iti__ss { + --iti-flag-offset: -3248px; +} + +.iti__st { + --iti-flag-offset: -3264px; +} + +.iti__sv { + --iti-flag-offset: -3280px; +} + +.iti__sx { + --iti-flag-offset: -3296px; +} + +.iti__sy { + --iti-flag-offset: -3312px; +} + +.iti__sz { + --iti-flag-offset: -3328px; +} + +.iti__tc { + --iti-flag-offset: -3344px; +} + +.iti__td { + --iti-flag-offset: -3360px; +} + +.iti__tg { + --iti-flag-offset: -3376px; +} + +.iti__th { + --iti-flag-offset: -3392px; +} + +.iti__tj { + --iti-flag-offset: -3408px; +} + +.iti__tk { + --iti-flag-offset: -3424px; +} + +.iti__tl { + --iti-flag-offset: -3440px; +} + +.iti__tm { + --iti-flag-offset: -3456px; +} + +.iti__tn { + --iti-flag-offset: -3472px; +} + +.iti__to { + --iti-flag-offset: -3488px; +} + +.iti__tr { + --iti-flag-offset: -3504px; +} + +.iti__tt { + --iti-flag-offset: -3520px; +} + +.iti__tv { + --iti-flag-offset: -3536px; +} + +.iti__tw { + --iti-flag-offset: -3552px; +} + +.iti__tz { + --iti-flag-offset: -3568px; +} + +.iti__ua { + --iti-flag-offset: -3584px; +} + +.iti__ug { + --iti-flag-offset: -3600px; +} + +.iti__us { + --iti-flag-offset: -3616px; +} + +.iti__uy { + --iti-flag-offset: -3632px; +} + +.iti__uz { + --iti-flag-offset: -3648px; +} + +.iti__va { + --iti-flag-offset: -3664px; +} + +.iti__vc { + --iti-flag-offset: -3680px; +} + +.iti__ve { + --iti-flag-offset: -3696px; +} + +.iti__vg { + --iti-flag-offset: -3712px; +} + +.iti__vi { + --iti-flag-offset: -3728px; +} + +.iti__vn { + --iti-flag-offset: -3744px; +} + +.iti__vu { + --iti-flag-offset: -3760px; +} + +.iti__wf { + --iti-flag-offset: -3776px; +} + +.iti__ws { + --iti-flag-offset: -3792px; +} + +.iti__xk { + --iti-flag-offset: -3808px; +} + +.iti__ye { + --iti-flag-offset: -3824px; +} + +.iti__yt { + --iti-flag-offset: -3840px; +} + +.iti__za { + --iti-flag-offset: -3856px; +} + +.iti__zm { + --iti-flag-offset: -3872px; +} + +.iti__zw { + --iti-flag-offset: -3888px; +} + +.iti__globe { + background-image: var(--iti-path-globe-1x); + background-size: contain; + background-position: right; + box-shadow: none; + height: 19px; +} + +@media (min-resolution: 2x) { + .iti__flag { + background-image: var(--iti-path-flags-2x); + } + .iti__globe { + background-image: var(--iti-path-globe-2x); + } +} \ No newline at end of file diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/vendors/intl-tel-input/css/intlTelInput.min.css b/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/vendors/intl-tel-input/css/intlTelInput.min.css new file mode 100644 index 000000000..757e69f9b --- /dev/null +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/vendors/intl-tel-input/css/intlTelInput.min.css @@ -0,0 +1 @@ +:root{--iti-hover-color:rgba(0, 0, 0, 0.05);--iti-border-color:#ccc;--iti-dialcode-color:#999;--iti-dropdown-bg:white;--iti-search-icon-color:#999;--iti-spacer-horizontal:8px;--iti-flag-height:12px;--iti-flag-width:16px;--iti-border-width:1px;--iti-arrow-height:4px;--iti-arrow-width:6px;--iti-triangle-border:calc(var(--iti-arrow-width) / 2);--iti-arrow-padding:6px;--iti-arrow-color:#555;--iti-path-flags-1x:url("../img/flags.webp");--iti-path-flags-2x:url("../img/flags@2x.webp");--iti-path-globe-1x:url("../img/globe.webp");--iti-path-globe-2x:url("../img/globe@2x.webp");--iti-flag-sprite-width:3904px;--iti-flag-sprite-height:12px;--iti-mobile-popup-margin:30px}.iti{position:relative;display:inline-block}.iti *{box-sizing:border-box}.iti__a11y-text{width:1px;height:1px;clip:rect(1px,1px,1px,1px);overflow:hidden;position:absolute}.iti input.iti__tel-input,.iti input.iti__tel-input[type=tel],.iti input.iti__tel-input[type=text]{position:relative;z-index:0;margin:0!important}.iti__country-container{position:absolute;top:0;bottom:0;left:0;padding:var(--iti-border-width)}.iti__selected-country{z-index:1;position:relative;display:flex;align-items:center;height:100%;background:0 0;border:0;margin:0;padding:0;font-family:inherit;font-size:inherit;color:inherit;border-radius:0;font-weight:inherit;line-height:inherit;text-decoration:none}.iti__selected-country-primary{display:flex;align-items:center;height:100%;padding:0 var(--iti-arrow-padding) 0 var(--iti-spacer-horizontal)}.iti__arrow{margin-left:var(--iti-arrow-padding);width:0;height:0;border-left:var(--iti-triangle-border) solid transparent;border-right:var(--iti-triangle-border) solid transparent;border-top:var(--iti-arrow-height) solid var(--iti-arrow-color)}.iti__arrow--up{border-top:none;border-bottom:var(--iti-arrow-height) solid var(--iti-arrow-color)}.iti__dropdown-content{border-radius:3px;background-color:var(--iti-dropdown-bg)}.iti--inline-dropdown .iti__dropdown-content{position:absolute;z-index:2;margin-top:3px;margin-left:calc(var(--iti-border-width) * -1);border:var(--iti-border-width) solid var(--iti-border-color);box-shadow:1px 1px 4px rgba(0,0,0,.2)}.iti__search-input{width:100%;border-width:0;border-radius:3px;padding-left:30px;padding-right:28px}[dir=rtl] .iti__search-input{padding-left:inherit;padding-right:30px;background-position:right 8px center}.iti__search-input+.iti__country-list{border-top:1px solid var(--iti-border-color)}.iti__search-input::-webkit-search-cancel-button{appearance:none}.iti__search-input-wrapper{position:relative;display:flex;align-items:center}.iti__search-icon{position:absolute;left:8px;display:flex;pointer-events:none}[dir=rtl] .iti__search-icon{left:auto;right:8px}.iti__search-icon-svg{stroke:var(--iti-search-icon-color);fill:none;stroke-width:3}.iti__search-clear{position:absolute;right:4px;background:0 0;border:0;border-radius:3px;cursor:pointer;padding:4px;display:flex;align-items:center;justify-content:center;transition:background-color .15s ease;width:24px;height:24px}.iti__search-clear .iti__search-clear-x{stroke-width:2}.iti__search-clear .iti__search-clear-bg{fill:var(--iti-search-icon-color)}[dir=rtl] .iti__search-clear{right:auto;left:4px}.iti__search-clear:focus-visible,.iti__search-clear:hover{background:var(--iti-hover-color);outline:0}.iti__no-results{text-align:center;padding:30px 0}.iti__country-list{list-style:none;padding:0;margin:0;cursor:pointer;overflow-y:scroll;-webkit-overflow-scrolling:touch}.iti--inline-dropdown .iti__country-list{max-height:185px}.iti--flexible-dropdown-width .iti__country-list{white-space:nowrap}@media (max-width:500px){.iti--flexible-dropdown-width .iti__country-list{white-space:normal}}.iti__country{display:flex;align-items:center;padding:8px var(--iti-spacer-horizontal);outline:0}.iti__dial-code{color:var(--iti-dialcode-color)}.iti__country.iti__highlight{background-color:var(--iti-hover-color)}.iti__country-list .iti__flag,.iti__country-name{margin-right:var(--iti-spacer-horizontal)}[dir=rtl] .iti__country-list .iti__flag,[dir=rtl] .iti__country-name{margin-right:0;margin-left:var(--iti-spacer-horizontal)}.iti--allow-dropdown .iti__country-container:not(:has(+ input[disabled])):not(:has(+ input[readonly])) button.iti__selected-country{cursor:pointer}.iti--allow-dropdown .iti__country-container:not(:has(+ input[disabled])):not(:has(+ input[readonly])) .iti__selected-country-primary:hover,.iti--allow-dropdown .iti__country-container:not(:has(+ input[disabled])):not(:has(+ input[readonly])) .iti__selected-country:has(+ .iti__dropdown-content:hover) .iti__selected-country-primary{background-color:var(--iti-hover-color)}.iti .iti__selected-dial-code{margin-left:4px}.iti--container{position:fixed;top:-1000px;left:-1000px;z-index:1060;padding:var(--iti-border-width)}.iti--container:hover{cursor:pointer}.iti__hide{display:none}.iti__v-hide{visibility:hidden}.iti--fullscreen-popup.iti--container{background-color:rgba(0,0,0,.5);top:0;bottom:0;left:0;right:0;position:fixed;padding:var(--iti-mobile-popup-margin);display:flex;flex-direction:column;justify-content:flex-start}.iti--fullscreen-popup .iti__dropdown-content{display:flex;flex-direction:column;max-height:100%;position:relative}.iti--fullscreen-popup .iti__country{padding:10px 10px;line-height:1.5em}.iti__flag{--iti-flag-offset:100px;height:var(--iti-flag-height);width:var(--iti-flag-width);border-radius:1px;box-shadow:0 0 1px 0 #888;background-image:var(--iti-path-flags-1x);background-repeat:no-repeat;background-position:var(--iti-flag-offset) 0;background-size:var(--iti-flag-sprite-width) var(--iti-flag-sprite-height)}.iti__ac{--iti-flag-offset:0px}.iti__ad{--iti-flag-offset:-16px}.iti__ae{--iti-flag-offset:-32px}.iti__af{--iti-flag-offset:-48px}.iti__ag{--iti-flag-offset:-64px}.iti__ai{--iti-flag-offset:-80px}.iti__al{--iti-flag-offset:-96px}.iti__am{--iti-flag-offset:-112px}.iti__ao{--iti-flag-offset:-128px}.iti__ar{--iti-flag-offset:-144px}.iti__as{--iti-flag-offset:-160px}.iti__at{--iti-flag-offset:-176px}.iti__au{--iti-flag-offset:-192px}.iti__aw{--iti-flag-offset:-208px}.iti__ax{--iti-flag-offset:-224px}.iti__az{--iti-flag-offset:-240px}.iti__ba{--iti-flag-offset:-256px}.iti__bb{--iti-flag-offset:-272px}.iti__bd{--iti-flag-offset:-288px}.iti__be{--iti-flag-offset:-304px}.iti__bf{--iti-flag-offset:-320px}.iti__bg{--iti-flag-offset:-336px}.iti__bh{--iti-flag-offset:-352px}.iti__bi{--iti-flag-offset:-368px}.iti__bj{--iti-flag-offset:-384px}.iti__bl{--iti-flag-offset:-400px}.iti__bm{--iti-flag-offset:-416px}.iti__bn{--iti-flag-offset:-432px}.iti__bo{--iti-flag-offset:-448px}.iti__bq{--iti-flag-offset:-464px}.iti__br{--iti-flag-offset:-480px}.iti__bs{--iti-flag-offset:-496px}.iti__bt{--iti-flag-offset:-512px}.iti__bw{--iti-flag-offset:-528px}.iti__by{--iti-flag-offset:-544px}.iti__bz{--iti-flag-offset:-560px}.iti__ca{--iti-flag-offset:-576px}.iti__cc{--iti-flag-offset:-592px}.iti__cd{--iti-flag-offset:-608px}.iti__cf{--iti-flag-offset:-624px}.iti__cg{--iti-flag-offset:-640px}.iti__ch{--iti-flag-offset:-656px}.iti__ci{--iti-flag-offset:-672px}.iti__ck{--iti-flag-offset:-688px}.iti__cl{--iti-flag-offset:-704px}.iti__cm{--iti-flag-offset:-720px}.iti__cn{--iti-flag-offset:-736px}.iti__co{--iti-flag-offset:-752px}.iti__cr{--iti-flag-offset:-768px}.iti__cu{--iti-flag-offset:-784px}.iti__cv{--iti-flag-offset:-800px}.iti__cw{--iti-flag-offset:-816px}.iti__cx{--iti-flag-offset:-832px}.iti__cy{--iti-flag-offset:-848px}.iti__cz{--iti-flag-offset:-864px}.iti__de{--iti-flag-offset:-880px}.iti__dj{--iti-flag-offset:-896px}.iti__dk{--iti-flag-offset:-912px}.iti__dm{--iti-flag-offset:-928px}.iti__do{--iti-flag-offset:-944px}.iti__dz{--iti-flag-offset:-960px}.iti__ec{--iti-flag-offset:-976px}.iti__ee{--iti-flag-offset:-992px}.iti__eg{--iti-flag-offset:-1008px}.iti__eh{--iti-flag-offset:-1024px}.iti__er{--iti-flag-offset:-1040px}.iti__es{--iti-flag-offset:-1056px}.iti__et{--iti-flag-offset:-1072px}.iti__fi{--iti-flag-offset:-1088px}.iti__fj{--iti-flag-offset:-1104px}.iti__fk{--iti-flag-offset:-1120px}.iti__fm{--iti-flag-offset:-1136px}.iti__fo{--iti-flag-offset:-1152px}.iti__fr{--iti-flag-offset:-1168px}.iti__ga{--iti-flag-offset:-1184px}.iti__gb{--iti-flag-offset:-1200px}.iti__gd{--iti-flag-offset:-1216px}.iti__ge{--iti-flag-offset:-1232px}.iti__gf{--iti-flag-offset:-1248px}.iti__gg{--iti-flag-offset:-1264px}.iti__gh{--iti-flag-offset:-1280px}.iti__gi{--iti-flag-offset:-1296px}.iti__gl{--iti-flag-offset:-1312px}.iti__gm{--iti-flag-offset:-1328px}.iti__gn{--iti-flag-offset:-1344px}.iti__gp{--iti-flag-offset:-1360px}.iti__gq{--iti-flag-offset:-1376px}.iti__gr{--iti-flag-offset:-1392px}.iti__gt{--iti-flag-offset:-1408px}.iti__gu{--iti-flag-offset:-1424px}.iti__gw{--iti-flag-offset:-1440px}.iti__gy{--iti-flag-offset:-1456px}.iti__hk{--iti-flag-offset:-1472px}.iti__hn{--iti-flag-offset:-1488px}.iti__hr{--iti-flag-offset:-1504px}.iti__ht{--iti-flag-offset:-1520px}.iti__hu{--iti-flag-offset:-1536px}.iti__id{--iti-flag-offset:-1552px}.iti__ie{--iti-flag-offset:-1568px}.iti__il{--iti-flag-offset:-1584px}.iti__im{--iti-flag-offset:-1600px}.iti__in{--iti-flag-offset:-1616px}.iti__io{--iti-flag-offset:-1632px}.iti__iq{--iti-flag-offset:-1648px}.iti__ir{--iti-flag-offset:-1664px}.iti__is{--iti-flag-offset:-1680px}.iti__it{--iti-flag-offset:-1696px}.iti__je{--iti-flag-offset:-1712px}.iti__jm{--iti-flag-offset:-1728px}.iti__jo{--iti-flag-offset:-1744px}.iti__jp{--iti-flag-offset:-1760px}.iti__ke{--iti-flag-offset:-1776px}.iti__kg{--iti-flag-offset:-1792px}.iti__kh{--iti-flag-offset:-1808px}.iti__ki{--iti-flag-offset:-1824px}.iti__km{--iti-flag-offset:-1840px}.iti__kn{--iti-flag-offset:-1856px}.iti__kp{--iti-flag-offset:-1872px}.iti__kr{--iti-flag-offset:-1888px}.iti__kw{--iti-flag-offset:-1904px}.iti__ky{--iti-flag-offset:-1920px}.iti__kz{--iti-flag-offset:-1936px}.iti__la{--iti-flag-offset:-1952px}.iti__lb{--iti-flag-offset:-1968px}.iti__lc{--iti-flag-offset:-1984px}.iti__li{--iti-flag-offset:-2000px}.iti__lk{--iti-flag-offset:-2016px}.iti__lr{--iti-flag-offset:-2032px}.iti__ls{--iti-flag-offset:-2048px}.iti__lt{--iti-flag-offset:-2064px}.iti__lu{--iti-flag-offset:-2080px}.iti__lv{--iti-flag-offset:-2096px}.iti__ly{--iti-flag-offset:-2112px}.iti__ma{--iti-flag-offset:-2128px}.iti__mc{--iti-flag-offset:-2144px}.iti__md{--iti-flag-offset:-2160px}.iti__me{--iti-flag-offset:-2176px}.iti__mf{--iti-flag-offset:-2192px}.iti__mg{--iti-flag-offset:-2208px}.iti__mh{--iti-flag-offset:-2224px}.iti__mk{--iti-flag-offset:-2240px}.iti__ml{--iti-flag-offset:-2256px}.iti__mm{--iti-flag-offset:-2272px}.iti__mn{--iti-flag-offset:-2288px}.iti__mo{--iti-flag-offset:-2304px}.iti__mp{--iti-flag-offset:-2320px}.iti__mq{--iti-flag-offset:-2336px}.iti__mr{--iti-flag-offset:-2352px}.iti__ms{--iti-flag-offset:-2368px}.iti__mt{--iti-flag-offset:-2384px}.iti__mu{--iti-flag-offset:-2400px}.iti__mv{--iti-flag-offset:-2416px}.iti__mw{--iti-flag-offset:-2432px}.iti__mx{--iti-flag-offset:-2448px}.iti__my{--iti-flag-offset:-2464px}.iti__mz{--iti-flag-offset:-2480px}.iti__na{--iti-flag-offset:-2496px}.iti__nc{--iti-flag-offset:-2512px}.iti__ne{--iti-flag-offset:-2528px}.iti__nf{--iti-flag-offset:-2544px}.iti__ng{--iti-flag-offset:-2560px}.iti__ni{--iti-flag-offset:-2576px}.iti__nl{--iti-flag-offset:-2592px}.iti__no{--iti-flag-offset:-2608px}.iti__np{--iti-flag-offset:-2624px}.iti__nr{--iti-flag-offset:-2640px}.iti__nu{--iti-flag-offset:-2656px}.iti__nz{--iti-flag-offset:-2672px}.iti__om{--iti-flag-offset:-2688px}.iti__pa{--iti-flag-offset:-2704px}.iti__pe{--iti-flag-offset:-2720px}.iti__pf{--iti-flag-offset:-2736px}.iti__pg{--iti-flag-offset:-2752px}.iti__ph{--iti-flag-offset:-2768px}.iti__pk{--iti-flag-offset:-2784px}.iti__pl{--iti-flag-offset:-2800px}.iti__pm{--iti-flag-offset:-2816px}.iti__pr{--iti-flag-offset:-2832px}.iti__ps{--iti-flag-offset:-2848px}.iti__pt{--iti-flag-offset:-2864px}.iti__pw{--iti-flag-offset:-2880px}.iti__py{--iti-flag-offset:-2896px}.iti__qa{--iti-flag-offset:-2912px}.iti__re{--iti-flag-offset:-2928px}.iti__ro{--iti-flag-offset:-2944px}.iti__rs{--iti-flag-offset:-2960px}.iti__ru{--iti-flag-offset:-2976px}.iti__rw{--iti-flag-offset:-2992px}.iti__sa{--iti-flag-offset:-3008px}.iti__sb{--iti-flag-offset:-3024px}.iti__sc{--iti-flag-offset:-3040px}.iti__sd{--iti-flag-offset:-3056px}.iti__se{--iti-flag-offset:-3072px}.iti__sg{--iti-flag-offset:-3088px}.iti__sh{--iti-flag-offset:-3104px}.iti__si{--iti-flag-offset:-3120px}.iti__sj{--iti-flag-offset:-3136px}.iti__sk{--iti-flag-offset:-3152px}.iti__sl{--iti-flag-offset:-3168px}.iti__sm{--iti-flag-offset:-3184px}.iti__sn{--iti-flag-offset:-3200px}.iti__so{--iti-flag-offset:-3216px}.iti__sr{--iti-flag-offset:-3232px}.iti__ss{--iti-flag-offset:-3248px}.iti__st{--iti-flag-offset:-3264px}.iti__sv{--iti-flag-offset:-3280px}.iti__sx{--iti-flag-offset:-3296px}.iti__sy{--iti-flag-offset:-3312px}.iti__sz{--iti-flag-offset:-3328px}.iti__tc{--iti-flag-offset:-3344px}.iti__td{--iti-flag-offset:-3360px}.iti__tg{--iti-flag-offset:-3376px}.iti__th{--iti-flag-offset:-3392px}.iti__tj{--iti-flag-offset:-3408px}.iti__tk{--iti-flag-offset:-3424px}.iti__tl{--iti-flag-offset:-3440px}.iti__tm{--iti-flag-offset:-3456px}.iti__tn{--iti-flag-offset:-3472px}.iti__to{--iti-flag-offset:-3488px}.iti__tr{--iti-flag-offset:-3504px}.iti__tt{--iti-flag-offset:-3520px}.iti__tv{--iti-flag-offset:-3536px}.iti__tw{--iti-flag-offset:-3552px}.iti__tz{--iti-flag-offset:-3568px}.iti__ua{--iti-flag-offset:-3584px}.iti__ug{--iti-flag-offset:-3600px}.iti__us{--iti-flag-offset:-3616px}.iti__uy{--iti-flag-offset:-3632px}.iti__uz{--iti-flag-offset:-3648px}.iti__va{--iti-flag-offset:-3664px}.iti__vc{--iti-flag-offset:-3680px}.iti__ve{--iti-flag-offset:-3696px}.iti__vg{--iti-flag-offset:-3712px}.iti__vi{--iti-flag-offset:-3728px}.iti__vn{--iti-flag-offset:-3744px}.iti__vu{--iti-flag-offset:-3760px}.iti__wf{--iti-flag-offset:-3776px}.iti__ws{--iti-flag-offset:-3792px}.iti__xk{--iti-flag-offset:-3808px}.iti__ye{--iti-flag-offset:-3824px}.iti__yt{--iti-flag-offset:-3840px}.iti__za{--iti-flag-offset:-3856px}.iti__zm{--iti-flag-offset:-3872px}.iti__zw{--iti-flag-offset:-3888px}.iti__globe{background-image:var(--iti-path-globe-1x);background-size:contain;background-position:right;box-shadow:none;height:19px}@media (min-resolution:2x){.iti__flag{background-image:var(--iti-path-flags-2x)}.iti__globe{background-image:var(--iti-path-globe-2x)}} \ No newline at end of file diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/vendors/intl-tel-input/img/flags.webp b/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/vendors/intl-tel-input/img/flags.webp new file mode 100644 index 0000000000000000000000000000000000000000..21ca3c73ba4470ba10cefe969ea871b236d60eb8 GIT binary patch literal 50980 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

EGe6{epojWXz5iqrLxkvUi(Bq(l3Hx{?NctSb(p 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 mUJ9&?FP|v?6W^g~zEdGCBq@YLu literal 0 HcmV?d00001 diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/vendors/intl-tel-input/img/globe.webp b/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/vendors/intl-tel-input/img/globe.webp new file mode 100644 index 0000000000000000000000000000000000000000..9bc5ffbf168be0132b30d863e1784f36d84ed68f GIT binary patch literal 909 zcmY+C-*1ai7{|M5tX9U*j@qmew8T~`wpp{$vNms1TTQc?5v?v0+v>+c%;;RYal@^I z#NFJuktHPJg2@uD+{t$B*1zEM&3SVg$@jkU5_Wp4KUS(l-``Z%S6rMi zzd}8Z{{nU#o`923p9S0C?Akjt8-04S)NHCnO#K0GytgYlaCY8gk1+S2+HC(|5*>l= zdVuiSIYf1!jdX$|YIP8Th1It$*y2!AJEo)DhTGxZi-<3VEDm2qOAu7F%dZzEG1`Z< z=62gs%0`+{*=7WlL?+}lg(2)NTnHgWf4Y1R*EztPu}fpPPBCio|F+s=Y8hYTa%tc^ zNj%sX--3VrglIDZZ+kGb@zKPaZFQfGb_VV@lKft_6@o&Gh9A>+H3s)4h%(UPsComN z;QEI`{7}R$5sY5H^5^}tV@{OVffJ9ButprwMK5J_`-h>v(x&nE!|vJ6JO+NgZqlqD z!nUpc)mQZw4!J%lVK4CpFSkD1pxCib02VsLfZ=vOCnIIskLY9uqvk+{ShH zAZ*O&EoJq=so}oFlG>fpMeF&hvp`mdGPt9jp45<9eR72<@^LsBY@Wf~M_Fk22XiAp A=>Px# literal 0 HcmV?d00001 diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/vendors/intl-tel-input/img/globe@2x.webp b/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/vendors/intl-tel-input/img/globe@2x.webp new file mode 100644 index 0000000000000000000000000000000000000000..8bfd7a37be9f3b2eeccb41aa5fca7383ef000a92 GIT binary patch literal 2439 zcmZWr>rdNN7%sG3xl;-h3Jk`8aajr1ald!K3YC^JN(+pO%1!Q*i)9qDWm${{WBjr& zept++iJDE#LQLGU#0AtWy2WTf$27)de$#)!=i&YNE5zh^pZ9&wIX%B~-t(LTZhKqX zpkAZtYi)6PTvZMy;-cJt9zF;+wuAFv+4;Y`52qsPG{PY@oz1rYaID{IXq(NlU&a7k zxr}m-S69ts*^#`s$9WvSfOMG3;1{2~^Y!+uG)%$8gheF4U4c~@K*<+I2jH5FptPor zR?UU#^{2PPUe;^SpxJ#>Ll5W-r@*5yi>XbCOvzCvY=|=}!~5YnC-qD$7igyfpwnZSI+Vwq4!- z?691>x2206D^LEbu(V~1t9PhF5Dc9MZH9vS43psBJ_d2swJ<>!T!@;LDH}mUGOGn} z$qTFie{*nC3+{xOHbBv^u-4K)ZhVL!I13UWrzXk-=i2BVmWIrn9t4-C&PW^G8es-1|aHg!K$ms zh-^Xp(+42^bcQ}9uskAtTwQT9#lc(Shw%m}Wk3Y*6$!m4F*r(%B&c7bCIsGB;gg4~ zbFqyfw!QbL=^0Prh|klIyL1l8dTC+3<=~5Nzd}4X56Xl!!2qg?m1B7*3`IW6(`kHy zj^ZSe0-sO$UG*SR&gE>#0CTX7hh>5By{TepxhY_p-vj3KlLdk2Tal7c>zu^qrP!&& zHfsR91{1K&|LCS9UCMrYxzZGA14kKp!JLv}?V-Sd#8UCX={3d{URjP(mU6WF*zuoK zdy18_GQ>y|S4l-pNJ{Z0ZUm?}`n`=2-x%usTlyr>A;)mAk)* zSfG4R&AGE?ZnK|bwCrXRk4;c0u9xrqC727gAZ;AD;`UP$Kx9uW_-r>QRa!>>eEZ8O zmXxm!z&|Nz+-jnJf17VW09KpZ4hDujW-~jvgnZ}sSNq^?e5HWHJGuAK<4+K`^RSfL zjA;MG{P#~o;5L2HU3KF=M1E=k$d6||0gjx7bp*dtwpt;5VBTqE9p_EAQz9V5Z1w%SsIbH}iY!#-=i%7uJuI1WBPg5AYrGms)1|&EO zXM|C?$^~KZdAh7fl9!+O`K?7)=P&|+KPKhy-wnR;I}Zk^2!NY$D3=i7Ip4(Y9e6AM vEUGxR6Mh7sya7GT9Q)&qtk_h3lUf5b-+cZC95*rzi%JKv_N@u5d#>hRr$h@L literal 0 HcmV?d00001 diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/vendors/intl-tel-input/js/intlTelInputWithUtils.js b/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/vendors/intl-tel-input/js/intlTelInputWithUtils.js new file mode 100644 index 000000000..525b3b898 --- /dev/null +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/vendors/intl-tel-input/js/intlTelInputWithUtils.js @@ -0,0 +1,10452 @@ +/* + * International Telephone Input v25.12.4 + * https://github.com/jackocnr/intl-tel-input.git + * Licensed under the MIT license + */ + +// UMD +(function(factory) { + if (typeof module === 'object' && module.exports) { + module.exports = factory(); + } else { + window.intlTelInput = factory(); + } +}(() => { + +var factoryOutput = (() => { + var __defProp = Object.defineProperty; + var __getOwnPropDesc = Object.getOwnPropertyDescriptor; + var __getOwnPropNames = Object.getOwnPropertyNames; + var __hasOwnProp = Object.prototype.hasOwnProperty; + var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); + }; + var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; + }; + var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + + // src/js/intl-tel-input/intlTelInputWithUtils.ts + var intlTelInputWithUtils_exports = {}; + __export(intlTelInputWithUtils_exports, { + default: () => intlTelInputWithUtils_default + }); + + // src/js/intl-tel-input/data.ts + var rawCountryData = [ + [ + "af", + // Afghanistan + "93", + 0, + null, + "0" + ], + [ + "ax", + // Åland Islands + "358", + 1, + ["18", "4"], + // (4 is a mobile range shared with FI) + "0" + ], + [ + "al", + // Albania + "355", + 0, + null, + "0" + ], + [ + "dz", + // Algeria + "213", + 0, + null, + "0" + ], + [ + "as", + // American Samoa + "1", + 5, + ["684"], + "1" + ], + [ + "ad", + // Andorra + "376" + ], + [ + "ao", + // Angola + "244" + ], + [ + "ai", + // Anguilla + "1", + 6, + ["264"], + "1" + ], + [ + "ag", + // Antigua and Barbuda + "1", + 7, + ["268"], + "1" + ], + [ + "ar", + // Argentina + "54", + 0, + null, + "0" + ], + [ + "am", + // Armenia + "374", + 0, + null, + "0" + ], + [ + "aw", + // Aruba + "297" + ], + [ + "ac", + // Ascension Island + "247" + ], + [ + "au", + // Australia + "61", + 0, + ["4"], + // (mobile range shared with CX and CC) + "0" + ], + [ + "at", + // Austria + "43", + 0, + null, + "0" + ], + [ + "az", + // Azerbaijan + "994", + 0, + null, + "0" + ], + [ + "bs", + // Bahamas + "1", + 8, + ["242"], + "1" + ], + [ + "bh", + // Bahrain + "973" + ], + [ + "bd", + // Bangladesh + "880", + 0, + null, + "0" + ], + [ + "bb", + // Barbados + "1", + 9, + ["246"], + "1" + ], + [ + "by", + // Belarus + "375", + 0, + null, + "8" + ], + [ + "be", + // Belgium + "32", + 0, + null, + "0" + ], + [ + "bz", + // Belize + "501" + ], + [ + "bj", + // Benin + "229" + ], + [ + "bm", + // Bermuda + "1", + 10, + ["441"], + "1" + ], + [ + "bt", + // Bhutan + "975" + ], + [ + "bo", + // Bolivia + "591", + 0, + null, + "0" + ], + [ + "ba", + // Bosnia and Herzegovina + "387", + 0, + null, + "0" + ], + [ + "bw", + // Botswana + "267" + ], + [ + "br", + // Brazil + "55", + 0, + null, + "0" + ], + [ + "io", + // British Indian Ocean Territory + "246" + ], + [ + "vg", + // British Virgin Islands + "1", + 11, + ["284"], + "1" + ], + [ + "bn", + // Brunei + "673" + ], + [ + "bg", + // Bulgaria + "359", + 0, + null, + "0" + ], + [ + "bf", + // Burkina Faso + "226" + ], + [ + "bi", + // Burundi + "257" + ], + [ + "kh", + // Cambodia + "855", + 0, + null, + "0" + ], + [ + "cm", + // Cameroon + "237" + ], + [ + "ca", + // Canada + "1", + 1, + ["204", "226", "236", "249", "250", "257", "263", "289", "306", "343", "354", "365", "367", "368", "382", "403", "416", "418", "428", "431", "437", "438", "450", "468", "474", "506", "514", "519", "548", "579", "581", "584", "587", "604", "613", "639", "647", "672", "683", "705", "709", "742", "753", "778", "780", "782", "807", "819", "825", "867", "873", "879", "902", "905", "942"], + "1" + ], + [ + "cv", + // Cape Verde + "238" + ], + [ + "bq", + // Caribbean Netherlands + "599", + 1, + ["3", "4", "7"] + ], + [ + "ky", + // Cayman Islands + "1", + 12, + ["345"], + "1" + ], + [ + "cf", + // Central African Republic + "236" + ], + [ + "td", + // Chad + "235" + ], + [ + "cl", + // Chile + "56" + ], + [ + "cn", + // China + "86", + 0, + null, + "0" + ], + [ + "cx", + // Christmas Island + "61", + 2, + ["4", "89164"], + // (4 is a mobile range shared with AU and CC) + "0" + ], + [ + "cc", + // Cocos (Keeling) Islands + "61", + 1, + ["4", "89162"], + // (4 is a mobile range shared with AU and CX) + "0" + ], + [ + "co", + // Colombia + "57", + 0, + null, + "0" + ], + [ + "km", + // Comoros + "269" + ], + [ + "cg", + // Congo (Brazzaville) + "242" + ], + [ + "cd", + // Congo (Kinshasa) + "243", + 0, + null, + "0" + ], + [ + "ck", + // Cook Islands + "682" + ], + [ + "cr", + // Costa Rica + "506" + ], + [ + "ci", + // Côte d'Ivoire + "225" + ], + [ + "hr", + // Croatia + "385", + 0, + null, + "0" + ], + [ + "cu", + // Cuba + "53", + 0, + null, + "0" + ], + [ + "cw", + // Curaçao + "599", + 0 + ], + [ + "cy", + // Cyprus + "357" + ], + [ + "cz", + // Czech Republic + "420" + ], + [ + "dk", + // Denmark + "45" + ], + [ + "dj", + // Djibouti + "253" + ], + [ + "dm", + // Dominica + "1", + 13, + ["767"], + "1" + ], + [ + "do", + // Dominican Republic + "1", + 2, + ["809", "829", "849"], + "1" + ], + [ + "ec", + // Ecuador + "593", + 0, + null, + "0" + ], + [ + "eg", + // Egypt + "20", + 0, + null, + "0" + ], + [ + "sv", + // El Salvador + "503" + ], + [ + "gq", + // Equatorial Guinea + "240" + ], + [ + "er", + // Eritrea + "291", + 0, + null, + "0" + ], + [ + "ee", + // Estonia + "372" + ], + [ + "sz", + // Eswatini + "268" + ], + [ + "et", + // Ethiopia + "251", + 0, + null, + "0" + ], + [ + "fk", + // Falkland Islands (Malvinas) + "500" + ], + [ + "fo", + // Faroe Islands + "298" + ], + [ + "fj", + // Fiji + "679" + ], + [ + "fi", + // Finland + "358", + 0, + ["4"], + // (mobile range shared with AX) + "0" + ], + [ + "fr", + // France + "33", + 0, + null, + "0" + ], + [ + "gf", + // French Guiana + "594", + 0, + null, + "0" + ], + [ + "pf", + // French Polynesia + "689" + ], + [ + "ga", + // Gabon + "241" + ], + [ + "gm", + // Gambia + "220" + ], + [ + "ge", + // Georgia + "995", + 0, + null, + "0" + ], + [ + "de", + // Germany + "49", + 0, + null, + "0" + ], + [ + "gh", + // Ghana + "233", + 0, + null, + "0" + ], + [ + "gi", + // Gibraltar + "350" + ], + [ + "gr", + // Greece + "30" + ], + [ + "gl", + // Greenland + "299" + ], + [ + "gd", + // Grenada + "1", + 14, + ["473"], + "1" + ], + [ + "gp", + // Guadeloupe + "590", + 0, + null, + "0" + ], + [ + "gu", + // Guam + "1", + 15, + ["671"], + "1" + ], + [ + "gt", + // Guatemala + "502" + ], + [ + "gg", + // Guernsey + "44", + 1, + ["1481", "7781", "7839", "7911"], + "0" + ], + [ + "gn", + // Guinea + "224" + ], + [ + "gw", + // Guinea-Bissau + "245" + ], + [ + "gy", + // Guyana + "592" + ], + [ + "ht", + // Haiti + "509" + ], + [ + "hn", + // Honduras + "504" + ], + [ + "hk", + // Hong Kong SAR China + "852" + ], + [ + "hu", + // Hungary + "36", + 0, + null, + "06" + ], + [ + "is", + // Iceland + "354" + ], + [ + "in", + // India + "91", + 0, + null, + "0" + ], + [ + "id", + // Indonesia + "62", + 0, + null, + "0" + ], + [ + "ir", + // Iran + "98", + 0, + null, + "0" + ], + [ + "iq", + // Iraq + "964", + 0, + null, + "0" + ], + [ + "ie", + // Ireland + "353", + 0, + null, + "0" + ], + [ + "im", + // Isle of Man + "44", + 2, + ["1624", "74576", "7524", "7624", "7924"], + "0" + ], + [ + "il", + // Israel + "972", + 0, + null, + "0" + ], + [ + "it", + // Italy + "39", + 0, + ["3"] + // (mobile range shared with VA) + ], + [ + "jm", + // Jamaica + "1", + 4, + ["658", "876"], + "1" + ], + [ + "jp", + // Japan + "81", + 0, + null, + "0" + ], + [ + "je", + // Jersey + "44", + 3, + ["1534", "7509", "7700", "7797", "7829", "7937"], + "0" + ], + [ + "jo", + // Jordan + "962", + 0, + null, + "0" + ], + [ + "kz", + // Kazakhstan + "7", + 1, + ["33", "7"], + // (33 is shared with RU) + "8" + ], + [ + "ke", + // Kenya + "254", + 0, + null, + "0" + ], + [ + "ki", + // Kiribati + "686", + 0, + null, + "0" + ], + [ + "xk", + // Kosovo + "383", + 0, + null, + "0" + ], + [ + "kw", + // Kuwait + "965" + ], + [ + "kg", + // Kyrgyzstan + "996", + 0, + null, + "0" + ], + [ + "la", + // Laos + "856", + 0, + null, + "0" + ], + [ + "lv", + // Latvia + "371" + ], + [ + "lb", + // Lebanon + "961", + 0, + null, + "0" + ], + [ + "ls", + // Lesotho + "266" + ], + [ + "lr", + // Liberia + "231", + 0, + null, + "0" + ], + [ + "ly", + // Libya + "218", + 0, + null, + "0" + ], + [ + "li", + // Liechtenstein + "423", + 0, + null, + "0" + ], + [ + "lt", + // Lithuania + "370", + 0, + null, + "0" + ], + [ + "lu", + // Luxembourg + "352" + ], + [ + "mo", + // Macao SAR China + "853" + ], + [ + "mg", + // Madagascar + "261", + 0, + null, + "0" + ], + [ + "mw", + // Malawi + "265", + 0, + null, + "0" + ], + [ + "my", + // Malaysia + "60", + 0, + null, + "0" + ], + [ + "mv", + // Maldives + "960" + ], + [ + "ml", + // Mali + "223" + ], + [ + "mt", + // Malta + "356" + ], + [ + "mh", + // Marshall Islands + "692", + 0, + null, + "1" + ], + [ + "mq", + // Martinique + "596", + 0, + null, + "0" + ], + [ + "mr", + // Mauritania + "222" + ], + [ + "mu", + // Mauritius + "230" + ], + [ + "yt", + // Mayotte + "262", + 1, + ["269", "639"], + "0" + ], + [ + "mx", + // Mexico + "52" + ], + [ + "fm", + // Micronesia + "691" + ], + [ + "md", + // Moldova + "373", + 0, + null, + "0" + ], + [ + "mc", + // Monaco + "377", + 0, + null, + "0" + ], + [ + "mn", + // Mongolia + "976", + 0, + null, + "0" + ], + [ + "me", + // Montenegro + "382", + 0, + null, + "0" + ], + [ + "ms", + // Montserrat + "1", + 16, + ["664"], + "1" + ], + [ + "ma", + // Morocco + "212", + 0, + ["6", "7"], + // (mobile ranges shared with EH) + "0" + ], + [ + "mz", + // Mozambique + "258" + ], + [ + "mm", + // Myanmar (Burma) + "95", + 0, + null, + "0" + ], + [ + "na", + // Namibia + "264", + 0, + null, + "0" + ], + [ + "nr", + // Nauru + "674" + ], + [ + "np", + // Nepal + "977", + 0, + null, + "0" + ], + [ + "nl", + // Netherlands + "31", + 0, + null, + "0" + ], + [ + "nc", + // New Caledonia + "687" + ], + [ + "nz", + // New Zealand + "64", + 0, + null, + "0" + ], + [ + "ni", + // Nicaragua + "505" + ], + [ + "ne", + // Niger + "227" + ], + [ + "ng", + // Nigeria + "234", + 0, + null, + "0" + ], + [ + "nu", + // Niue + "683" + ], + [ + "nf", + // Norfolk Island + "672" + ], + [ + "kp", + // North Korea + "850", + 0, + null, + "0" + ], + [ + "mk", + // North Macedonia + "389", + 0, + null, + "0" + ], + [ + "mp", + // Northern Mariana Islands + "1", + 17, + ["670"], + "1" + ], + [ + "no", + // Norway + "47", + 0, + ["4", "9"] + // (mobile ranges shared with SJ) + ], + [ + "om", + // Oman + "968" + ], + [ + "pk", + // Pakistan + "92", + 0, + null, + "0" + ], + [ + "pw", + // Palau + "680" + ], + [ + "ps", + // Palestinian Territories + "970", + 0, + null, + "0" + ], + [ + "pa", + // Panama + "507" + ], + [ + "pg", + // Papua New Guinea + "675" + ], + [ + "py", + // Paraguay + "595", + 0, + null, + "0" + ], + [ + "pe", + // Peru + "51", + 0, + null, + "0" + ], + [ + "ph", + // Philippines + "63", + 0, + null, + "0" + ], + [ + "pl", + // Poland + "48" + ], + [ + "pt", + // Portugal + "351" + ], + [ + "pr", + // Puerto Rico + "1", + 3, + ["787", "939"], + "1" + ], + [ + "qa", + // Qatar + "974" + ], + [ + "re", + // Réunion + "262", + 0, + null, + "0" + ], + [ + "ro", + // Romania + "40", + 0, + null, + "0" + ], + [ + "ru", + // Russia + "7", + 0, + ["33"], + // (shared with KZ) + "8" + ], + [ + "rw", + // Rwanda + "250", + 0, + null, + "0" + ], + [ + "ws", + // Samoa + "685" + ], + [ + "sm", + // San Marino + "378" + ], + [ + "st", + // São Tomé & Príncipe + "239" + ], + [ + "sa", + // Saudi Arabia + "966", + 0, + null, + "0" + ], + [ + "sn", + // Senegal + "221" + ], + [ + "rs", + // Serbia + "381", + 0, + null, + "0" + ], + [ + "sc", + // Seychelles + "248" + ], + [ + "sl", + // Sierra Leone + "232", + 0, + null, + "0" + ], + [ + "sg", + // Singapore + "65" + ], + [ + "sx", + // Sint Maarten + "1", + 21, + ["721"], + "1" + ], + [ + "sk", + // Slovakia + "421", + 0, + null, + "0" + ], + [ + "si", + // Slovenia + "386", + 0, + null, + "0" + ], + [ + "sb", + // Solomon Islands + "677" + ], + [ + "so", + // Somalia + "252", + 0, + null, + "0" + ], + [ + "za", + // South Africa + "27", + 0, + null, + "0" + ], + [ + "kr", + // South Korea + "82", + 0, + null, + "0" + ], + [ + "ss", + // South Sudan + "211", + 0, + null, + "0" + ], + [ + "es", + // Spain + "34" + ], + [ + "lk", + // Sri Lanka + "94", + 0, + null, + "0" + ], + [ + "bl", + // St. Barthélemy + "590", + 1, + null, + "0" + ], + [ + "sh", + // St. Helena + "290" + ], + [ + "kn", + // St. Kitts & Nevis + "1", + 18, + ["869"], + "1" + ], + [ + "lc", + // St. Lucia + "1", + 19, + ["758"], + "1" + ], + [ + "mf", + // St. Martin + "590", + 2, + null, + "0" + ], + [ + "pm", + // St. Pierre & Miquelon + "508", + 0, + null, + "0" + ], + [ + "vc", + // St. Vincent & Grenadines + "1", + 20, + ["784"], + "1" + ], + [ + "sd", + // Sudan + "249", + 0, + null, + "0" + ], + [ + "sr", + // Suriname + "597" + ], + [ + "sj", + // Svalbard & Jan Mayen + "47", + 1, + ["4", "79", "9"] + // (4 and 9 are mobile ranges shared with NO) + ], + [ + "se", + // Sweden + "46", + 0, + null, + "0" + ], + [ + "ch", + // Switzerland + "41", + 0, + null, + "0" + ], + [ + "sy", + // Syria + "963", + 0, + null, + "0" + ], + [ + "tw", + // Taiwan + "886", + 0, + null, + "0" + ], + [ + "tj", + // Tajikistan + "992" + ], + [ + "tz", + // Tanzania + "255", + 0, + null, + "0" + ], + [ + "th", + // Thailand + "66", + 0, + null, + "0" + ], + [ + "tl", + // Timor-Leste + "670" + ], + [ + "tg", + // Togo + "228" + ], + [ + "tk", + // Tokelau + "690" + ], + [ + "to", + // Tonga + "676" + ], + [ + "tt", + // Trinidad & Tobago + "1", + 22, + ["868"], + "1" + ], + [ + "tn", + // Tunisia + "216" + ], + [ + "tr", + // Turkey + "90", + 0, + null, + "0" + ], + [ + "tm", + // Turkmenistan + "993", + 0, + null, + "8" + ], + [ + "tc", + // Turks & Caicos Islands + "1", + 23, + ["649"], + "1" + ], + [ + "tv", + // Tuvalu + "688" + ], + [ + "vi", + // U.S. Virgin Islands + "1", + 24, + ["340"], + "1" + ], + [ + "ug", + // Uganda + "256", + 0, + null, + "0" + ], + [ + "ua", + // Ukraine + "380", + 0, + null, + "0" + ], + [ + "ae", + // United Arab Emirates + "971", + 0, + null, + "0" + ], + [ + "gb", + // United Kingdom + "44", + 0, + null, + "0" + ], + [ + "us", + // United States + "1", + 0, + null, + "1" + ], + [ + "uy", + // Uruguay + "598", + 0, + null, + "0" + ], + [ + "uz", + // Uzbekistan + "998" + ], + [ + "vu", + // Vanuatu + "678" + ], + [ + "va", + // Vatican City + "39", + 1, + ["06698", "3"] + // (3 is a mobile range shared with IT) + ], + [ + "ve", + // Venezuela + "58", + 0, + null, + "0" + ], + [ + "vn", + // Vietnam + "84", + 0, + null, + "0" + ], + [ + "wf", + // Wallis & Futuna + "681" + ], + [ + "eh", + // Western Sahara + "212", + 1, + ["5288", "5289", "6", "7"], + // (6 and 7 are mobile ranges shared with MA) + "0" + ], + [ + "ye", + // Yemen + "967", + 0, + null, + "0" + ], + [ + "zm", + // Zambia + "260", + 0, + null, + "0" + ], + [ + "zw", + // Zimbabwe + "263", + 0, + null, + "0" + ] + ]; + var allCountries = []; + for (const c of rawCountryData) { + allCountries.push({ + name: "", + // populated in the plugin + iso2: c[0], + dialCode: c[1], + priority: c[2] || 0, + areaCodes: c[3] || null, + nodeById: {}, + // populated by the plugin + nationalPrefix: c[4] || null, + normalisedName: "", + // populated in the plugin + initials: "", + // populated in the plugin + dialCodePlus: "" + // populated in the plugin + }); + } + var data_default = allCountries; + + // src/js/intl-tel-input/i18n/en/countries.ts + var countryTranslations = { + ad: "Andorra", + ae: "United Arab Emirates", + af: "Afghanistan", + ag: "Antigua & Barbuda", + ai: "Anguilla", + al: "Albania", + am: "Armenia", + ao: "Angola", + ar: "Argentina", + as: "American Samoa", + at: "Austria", + au: "Australia", + aw: "Aruba", + ax: "\xC5land Islands", + az: "Azerbaijan", + ba: "Bosnia & Herzegovina", + bb: "Barbados", + bd: "Bangladesh", + be: "Belgium", + bf: "Burkina Faso", + bg: "Bulgaria", + bh: "Bahrain", + bi: "Burundi", + bj: "Benin", + bl: "St. Barth\xE9lemy", + bm: "Bermuda", + bn: "Brunei", + bo: "Bolivia", + bq: "Caribbean Netherlands", + br: "Brazil", + bs: "Bahamas", + bt: "Bhutan", + bw: "Botswana", + by: "Belarus", + bz: "Belize", + ca: "Canada", + cc: "Cocos (Keeling) Islands", + cd: "Congo - Kinshasa", + cf: "Central African Republic", + cg: "Congo - Brazzaville", + ch: "Switzerland", + ci: "C\xF4te d\u2019Ivoire", + ck: "Cook Islands", + cl: "Chile", + cm: "Cameroon", + cn: "China", + co: "Colombia", + cr: "Costa Rica", + cu: "Cuba", + cv: "Cape Verde", + cw: "Cura\xE7ao", + cx: "Christmas Island", + cy: "Cyprus", + cz: "Czechia", + de: "Germany", + dj: "Djibouti", + dk: "Denmark", + dm: "Dominica", + do: "Dominican Republic", + dz: "Algeria", + ec: "Ecuador", + ee: "Estonia", + eg: "Egypt", + eh: "Western Sahara", + er: "Eritrea", + es: "Spain", + et: "Ethiopia", + fi: "Finland", + fj: "Fiji", + fk: "Falkland Islands", + fm: "Micronesia", + fo: "Faroe Islands", + fr: "France", + ga: "Gabon", + gb: "United Kingdom", + gd: "Grenada", + ge: "Georgia", + gf: "French Guiana", + gg: "Guernsey", + gh: "Ghana", + gi: "Gibraltar", + gl: "Greenland", + gm: "Gambia", + gn: "Guinea", + gp: "Guadeloupe", + gq: "Equatorial Guinea", + gr: "Greece", + gt: "Guatemala", + gu: "Guam", + gw: "Guinea-Bissau", + gy: "Guyana", + hk: "Hong Kong SAR China", + hn: "Honduras", + hr: "Croatia", + ht: "Haiti", + hu: "Hungary", + id: "Indonesia", + ie: "Ireland", + il: "Israel", + im: "Isle of Man", + in: "India", + io: "British Indian Ocean Territory", + iq: "Iraq", + ir: "Iran", + is: "Iceland", + it: "Italy", + je: "Jersey", + jm: "Jamaica", + jo: "Jordan", + jp: "Japan", + ke: "Kenya", + kg: "Kyrgyzstan", + kh: "Cambodia", + ki: "Kiribati", + km: "Comoros", + kn: "St. Kitts & Nevis", + kp: "North Korea", + kr: "South Korea", + kw: "Kuwait", + ky: "Cayman Islands", + kz: "Kazakhstan", + la: "Laos", + lb: "Lebanon", + lc: "St. Lucia", + li: "Liechtenstein", + lk: "Sri Lanka", + lr: "Liberia", + ls: "Lesotho", + lt: "Lithuania", + lu: "Luxembourg", + lv: "Latvia", + ly: "Libya", + ma: "Morocco", + mc: "Monaco", + md: "Moldova", + me: "Montenegro", + mf: "St. Martin", + mg: "Madagascar", + mh: "Marshall Islands", + mk: "North Macedonia", + ml: "Mali", + mm: "Myanmar (Burma)", + mn: "Mongolia", + mo: "Macao SAR China", + mp: "Northern Mariana Islands", + mq: "Martinique", + mr: "Mauritania", + ms: "Montserrat", + mt: "Malta", + mu: "Mauritius", + mv: "Maldives", + mw: "Malawi", + mx: "Mexico", + my: "Malaysia", + mz: "Mozambique", + na: "Namibia", + nc: "New Caledonia", + ne: "Niger", + nf: "Norfolk Island", + ng: "Nigeria", + ni: "Nicaragua", + nl: "Netherlands", + no: "Norway", + np: "Nepal", + nr: "Nauru", + nu: "Niue", + nz: "New Zealand", + om: "Oman", + pa: "Panama", + pe: "Peru", + pf: "French Polynesia", + pg: "Papua New Guinea", + ph: "Philippines", + pk: "Pakistan", + pl: "Poland", + pm: "St. Pierre & Miquelon", + pr: "Puerto Rico", + ps: "Palestinian Territories", + pt: "Portugal", + pw: "Palau", + py: "Paraguay", + qa: "Qatar", + re: "R\xE9union", + ro: "Romania", + rs: "Serbia", + ru: "Russia", + rw: "Rwanda", + sa: "Saudi Arabia", + sb: "Solomon Islands", + sc: "Seychelles", + sd: "Sudan", + se: "Sweden", + sg: "Singapore", + sh: "St. Helena", + si: "Slovenia", + sj: "Svalbard & Jan Mayen", + sk: "Slovakia", + sl: "Sierra Leone", + sm: "San Marino", + sn: "Senegal", + so: "Somalia", + sr: "Suriname", + ss: "South Sudan", + st: "S\xE3o Tom\xE9 & Pr\xEDncipe", + sv: "El Salvador", + sx: "Sint Maarten", + sy: "Syria", + sz: "Eswatini", + tc: "Turks & Caicos Islands", + td: "Chad", + tg: "Togo", + th: "Thailand", + tj: "Tajikistan", + tk: "Tokelau", + tl: "Timor-Leste", + tm: "Turkmenistan", + tn: "Tunisia", + to: "Tonga", + tr: "Turkey", + tt: "Trinidad & Tobago", + tv: "Tuvalu", + tw: "Taiwan", + tz: "Tanzania", + ua: "Ukraine", + ug: "Uganda", + us: "United States", + uy: "Uruguay", + uz: "Uzbekistan", + va: "Vatican City", + vc: "St. Vincent & Grenadines", + ve: "Venezuela", + vg: "British Virgin Islands", + vi: "U.S. Virgin Islands", + vn: "Vietnam", + vu: "Vanuatu", + wf: "Wallis & Futuna", + ws: "Samoa", + ye: "Yemen", + yt: "Mayotte", + za: "South Africa", + zm: "Zambia", + zw: "Zimbabwe" + }; + var countries_default = countryTranslations; + + // src/js/intl-tel-input/i18n/en/interface.ts + var interfaceTranslations = { + selectedCountryAriaLabel: "Change country, selected ${countryName} (${dialCode})", + noCountrySelected: "Select country", + countryListAriaLabel: "List of countries", + searchPlaceholder: "Search", + clearSearchAriaLabel: "Clear search", + zeroSearchResults: "No results found", + oneSearchResult: "1 result found", + multipleSearchResults: "${count} results found", + // additional countries (not supported by country-list library) + ac: "Ascension Island", + xk: "Kosovo" + }; + var interface_default = interfaceTranslations; + + // src/js/intl-tel-input/i18n/en/index.ts + var allTranslations = { ...countries_default, ...interface_default }; + var en_default = allTranslations; + + // src/js/modules/constants.ts + var EVENTS = { + OPEN_COUNTRY_DROPDOWN: "open:countrydropdown", + CLOSE_COUNTRY_DROPDOWN: "close:countrydropdown", + COUNTRY_CHANGE: "countrychange", + INPUT: "input" + // used for synthetic input trigger + }; + var CLASSES = { + HIDE: "iti__hide", + V_HIDE: "iti__v-hide", + ARROW_UP: "iti__arrow--up", + GLOBE: "iti__globe", + FLAG: "iti__flag", + COUNTRY_ITEM: "iti__country", + HIGHLIGHT: "iti__highlight" + }; + var KEYS = { + ARROW_UP: "ArrowUp", + ARROW_DOWN: "ArrowDown", + SPACE: " ", + ENTER: "Enter", + ESC: "Escape", + TAB: "Tab" + }; + var INPUT_TYPES = { + PASTE: "insertFromPaste", + DELETE_FWD: "deleteContentForward" + }; + var REGEX = { + ALPHA_UNICODE: /\p{L}/u, + // any kind of letter from any language + NON_PLUS_NUMERIC: /[^+0-9]/, + // chars that are NOT + or digit + NON_PLUS_NUMERIC_GLOBAL: /[^+0-9]/g, + // chars that are NOT + or digit (global) + HIDDEN_SEARCH_CHAR: /^[a-zA-ZÀ-ÿа-яА-Я ]$/ + // single acceptable hidden-search char + }; + var TIMINGS = { + SEARCH_DEBOUNCE_MS: 100, + HIDDEN_SEARCH_RESET_MS: 1e3, + NEXT_TICK: 0 + }; + var SENTINELS = { + UNKNOWN_NUMBER_TYPE: -99, + UNKNOWN_VALIDATION_ERROR: -99 + }; + var LAYOUT = { + SANE_SELECTED_WITH_DIAL_WIDTH: 78, + // px width fallback when separateDialCode enabled + SANE_SELECTED_NO_DIAL_WIDTH: 42, + // px width fallback when no separate dial code + INPUT_PADDING_EXTRA_LEFT: 6 + // px gap between selected country container and input text + }; + var DIAL = { + PLUS: "+", + NANP: "1" + // North American Numbering Plan + }; + var UK = { + ISO2: "gb", + DIAL_CODE: "44", + // +44 United Kingdom + MOBILE_PREFIX: "7", + // UK mobile numbers start with 7 after national trunk (0) or core section + MOBILE_CORE_LENGTH: 10 + // core number length (excluding dial code / national prefix) for mobiles + }; + var US = { + ISO2: "us", + DIAL_CODE: "1" + // +1 United States + }; + var PLACEHOLDER_MODES = { + AGGRESSIVE: "aggressive", + POLITE: "polite", + OFF: "off" + }; + var INITIAL_COUNTRY = { + AUTO: "auto" + }; + var DATA_KEYS = { + COUNTRY_CODE: "countryCode", + DIAL_CODE: "dialCode" + }; + var ARIA = { + EXPANDED: "aria-expanded", + LABEL: "aria-label", + SELECTED: "aria-selected", + ACTIVE_DESCENDANT: "aria-activedescendant", + HASPOPUP: "aria-haspopup", + CONTROLS: "aria-controls", + HIDDEN: "aria-hidden", + AUTOCOMPLETE: "aria-autocomplete", + MODAL: "aria-modal" + }; + + // src/js/modules/core/options.ts + var mq = (q) => typeof window !== "undefined" && typeof window.matchMedia === "function" && window.matchMedia(q).matches; + var computeDefaultUseFullscreenPopup = () => { + if (typeof navigator !== "undefined" && typeof window !== "undefined") { + const isMobileUserAgent = /Android.+Mobile|webOS|iPhone|iPod|BlackBerry|IEMobile|Opera Mini/i.test( + navigator.userAgent + ); + const isNarrowViewport = mq("(max-width: 500px)"); + const isShortViewport = mq("(max-height: 600px)"); + const isCoarsePointer = mq("(pointer: coarse)"); + return isMobileUserAgent || isNarrowViewport || isCoarsePointer && isShortViewport; + } + return false; + }; + var defaults = { + // Allow alphanumeric "phonewords" (e.g. +1 800 FLOWERS) as valid numbers + allowPhonewords: false, + //* Whether or not to allow the dropdown. + allowDropdown: true, + //* Add a placeholder in the input with an example number for the selected country. + autoPlaceholder: PLACEHOLDER_MODES.POLITE, + //* Modify the parentClass. + containerClass: "", + //* The order of the countries in the dropdown. Defaults to alphabetical. + countryOrder: null, + //* Add a country search input at the top of the dropdown. + countrySearch: true, + //* Modify the auto placeholder. + customPlaceholder: null, + //* Append menu to specified element. + dropdownContainer: null, + //* Don't display these countries. + excludeCountries: [], + //* Fix the dropdown width to the input width (rather than being as wide as the longest country name). + fixDropdownWidth: true, + //* Format the number as the user types + formatAsYouType: true, + //* Format the input value during initialisation and on setNumber. + formatOnDisplay: true, + //* geoIp lookup function. + geoIpLookup: null, + //* Inject a hidden input with the name returned from this function, and on submit, populate it with the result of getNumber. + hiddenInput: null, + //* Internationalise the plugin text e.g. search input placeholder, country names. + i18n: {}, + //* Initial country. + initialCountry: "", + //* A function to load the utils script. + loadUtils: null, + //* National vs international formatting for numbers e.g. placeholders and displaying existing numbers. + nationalMode: true, + //* Display only these countries. + onlyCountries: [], + //* Number type to use for placeholders. + placeholderNumberType: "MOBILE", + //* Show flags - for both the selected country, and in the country dropdown + showFlags: true, + //* Display the international dial code next to the selected flag. + separateDialCode: false, + //* Only allow certain chars e.g. a plus followed by numeric digits, and cap at max valid length. + strictMode: false, + //* Use full screen popup instead of dropdown for country list. + useFullscreenPopup: computeDefaultUseFullscreenPopup(), + //* The number type to enforce during validation. + validationNumberTypes: ["MOBILE"] + }; + var applyOptionSideEffects = (o, defaultEnglishStrings) => { + if (o.useFullscreenPopup) { + o.fixDropdownWidth = false; + } + if (o.onlyCountries.length === 1) { + o.initialCountry = o.onlyCountries[0]; + } + if (o.separateDialCode) { + o.nationalMode = false; + } + if (o.allowDropdown && !o.showFlags && !o.separateDialCode) { + o.nationalMode = false; + } + if (o.useFullscreenPopup && !o.dropdownContainer) { + o.dropdownContainer = document.body; + } + o.i18n = { ...defaultEnglishStrings, ...o.i18n }; + }; + + // src/js/modules/utils/string.ts + var getNumeric = (s) => s.replace(/\D/g, ""); + var normaliseString = (s = "") => s.normalize("NFD").replace(/[\u0300-\u036f]/g, "").toLowerCase(); + + // src/js/modules/core/countrySearch.ts + var getMatchedCountries = (countries, query) => { + const normalisedQuery = normaliseString(query); + const iso2Matches = []; + const nameStartWith = []; + const nameContains = []; + const dialCodeMatches = []; + const dialCodeContains = []; + const initialsMatches = []; + for (const c of countries) { + if (c.iso2 === normalisedQuery) { + iso2Matches.push(c); + } else if (c.normalisedName.startsWith(normalisedQuery)) { + nameStartWith.push(c); + } else if (c.normalisedName.includes(normalisedQuery)) { + nameContains.push(c); + } else if (normalisedQuery === c.dialCode || normalisedQuery === c.dialCodePlus) { + dialCodeMatches.push(c); + } else if (c.dialCodePlus.includes(normalisedQuery)) { + dialCodeContains.push(c); + } else if (c.initials.includes(normalisedQuery)) { + initialsMatches.push(c); + } + } + const sortByPriority = (a, b) => a.priority - b.priority; + return [ + ...iso2Matches.sort(sortByPriority), + ...nameStartWith.sort(sortByPriority), + ...nameContains.sort(sortByPriority), + ...dialCodeMatches.sort(sortByPriority), + ...dialCodeContains.sort(sortByPriority), + ...initialsMatches.sort(sortByPriority) + ]; + }; + var findFirstCountryStartingWith = (countries, query) => { + const lowerQuery = query.toLowerCase(); + for (const c of countries) { + const lowerName = c.name.toLowerCase(); + if (lowerName.startsWith(lowerQuery)) { + return c; + } + } + return null; + }; + + // src/js/modules/utils/dom.ts + var buildClassNames = (flags) => Object.keys(flags).filter((k) => Boolean(flags[k])).join(" "); + var createEl = (tagName, attrs, container) => { + const el = document.createElement(tagName); + if (attrs) { + Object.entries(attrs).forEach( + ([key, value]) => el.setAttribute(key, value) + ); + } + if (container) { + container.appendChild(el); + } + return el; + }; + + // src/js/modules/core/icons.ts + var buildSearchIcon = () => ` + + + + `; + var buildClearIcon = (id2) => { + const maskId = `iti-${id2}-clear-mask`; + return ` + + + + + + + `; + }; + + // src/js/modules/core/ui.ts + var UI = class { + constructor(input, options, id2) { + this.highlightedItem = null; + input.dataset.intlTelInputId = id2.toString(); + this.telInput = input; + this.options = options; + this.id = id2; + this.hadInitialPlaceholder = Boolean(input.getAttribute("placeholder")); + this.isRTL = !!this.telInput.closest("[dir=rtl]"); + if (this.options.separateDialCode) { + this.originalPaddingLeft = this.telInput.style.paddingLeft; + } + } + //* Generate all of the markup for the plugin: the selected country overlay, and the dropdown. + generateMarkup(countries) { + this.countries = countries; + this._prepareTelInput(); + const wrapper = this._createWrapperAndInsert(); + this._maybeBuildCountryContainer(wrapper); + wrapper.appendChild(this.telInput); + this._maybeUpdateInputPaddingAndReveal(); + this._maybeBuildHiddenInputs(wrapper); + } + _prepareTelInput() { + this.telInput.classList.add("iti__tel-input"); + if (!this.telInput.hasAttribute("autocomplete") && !this.telInput.form?.hasAttribute("autocomplete")) { + this.telInput.setAttribute("autocomplete", "off"); + } + } + _createWrapperAndInsert() { + const { allowDropdown, showFlags, containerClass, useFullscreenPopup } = this.options; + const parentClasses = buildClassNames({ + iti: true, + "iti--allow-dropdown": allowDropdown, + "iti--show-flags": showFlags, + "iti--inline-dropdown": !useFullscreenPopup, + [containerClass]: Boolean(containerClass) + }); + const wrapper = createEl("div", { class: parentClasses }); + if (this.isRTL) { + wrapper.setAttribute("dir", "ltr"); + } + this.telInput.before(wrapper); + return wrapper; + } + _maybeBuildCountryContainer(wrapper) { + const { allowDropdown, separateDialCode, showFlags } = this.options; + if (allowDropdown || showFlags || separateDialCode) { + this.countryContainer = createEl( + "div", + // visibly hidden until we measure it's width to set the input padding correctly + { class: `iti__country-container ${CLASSES.V_HIDE}` }, + wrapper + ); + if (allowDropdown) { + this.selectedCountry = createEl( + "button", + { + type: "button", + class: "iti__selected-country", + [ARIA.EXPANDED]: "false", + [ARIA.LABEL]: this.options.i18n.noCountrySelected, + [ARIA.HASPOPUP]: "dialog", + [ARIA.CONTROLS]: `iti-${this.id}__dropdown-content` + }, + this.countryContainer + ); + if (this.telInput.disabled) { + this.selectedCountry.setAttribute("disabled", "true"); + } + } else { + this.selectedCountry = createEl( + "div", + { class: "iti__selected-country" }, + this.countryContainer + ); + } + const selectedCountryPrimary = createEl( + "div", + { class: "iti__selected-country-primary" }, + this.selectedCountry + ); + this.selectedCountryInner = createEl( + "div", + { class: CLASSES.FLAG }, + selectedCountryPrimary + ); + if (allowDropdown) { + this.dropdownArrow = createEl( + "div", + { class: "iti__arrow", [ARIA.HIDDEN]: "true" }, + selectedCountryPrimary + ); + } + if (separateDialCode) { + this.selectedDialCode = createEl( + "div", + { class: "iti__selected-dial-code" }, + this.selectedCountry + ); + } + if (allowDropdown) { + this._buildDropdownContent(); + } + } + } + _buildDropdownContent() { + const { + fixDropdownWidth, + useFullscreenPopup, + countrySearch, + i18n, + dropdownContainer, + containerClass + } = this.options; + const extraClasses = fixDropdownWidth ? "" : "iti--flexible-dropdown-width"; + this.dropdownContent = createEl("div", { + id: `iti-${this.id}__dropdown-content`, + class: `iti__dropdown-content ${CLASSES.HIDE} ${extraClasses}`, + role: "dialog", + [ARIA.MODAL]: "true" + }); + if (this.isRTL) { + this.dropdownContent.setAttribute("dir", "rtl"); + } + if (countrySearch) { + this._buildSearchUI(); + } + this.countryList = createEl( + "ul", + { + class: "iti__country-list", + id: `iti-${this.id}__country-listbox`, + role: "listbox", + [ARIA.LABEL]: i18n.countryListAriaLabel + }, + this.dropdownContent + ); + this._appendListItems(); + if (countrySearch) { + this.updateSearchResultsA11yText(); + } + if (dropdownContainer) { + const dropdownClasses = buildClassNames({ + iti: true, + "iti--container": true, + "iti--fullscreen-popup": useFullscreenPopup, + "iti--inline-dropdown": !useFullscreenPopup, + [containerClass]: Boolean(containerClass) + }); + this.dropdown = createEl("div", { class: dropdownClasses }); + this.dropdown.appendChild(this.dropdownContent); + } else { + this.countryContainer.appendChild(this.dropdownContent); + } + } + _buildSearchUI() { + const { i18n } = this.options; + const searchWrapper = createEl( + "div", + { class: "iti__search-input-wrapper" }, + this.dropdownContent + ); + this.searchIcon = createEl( + "span", + { + class: "iti__search-icon", + [ARIA.HIDDEN]: "true" + }, + searchWrapper + ); + this.searchIcon.innerHTML = buildSearchIcon(); + this.searchInput = createEl( + "input", + { + id: `iti-${this.id}__search-input`, + // Chrome says inputs need either a name or an id + type: "search", + class: "iti__search-input", + placeholder: i18n.searchPlaceholder, + // role=combobox + aria-autocomplete=list + aria-activedescendant allows maintaining focus on the search input while allowing users to navigate search results with up/down keyboard keys + role: "combobox", + [ARIA.EXPANDED]: "true", + [ARIA.LABEL]: i18n.searchPlaceholder, + [ARIA.CONTROLS]: `iti-${this.id}__country-listbox`, + [ARIA.AUTOCOMPLETE]: "list", + autocomplete: "off" + }, + searchWrapper + ); + this.searchClearButton = createEl( + "button", + { + type: "button", + class: `iti__search-clear ${CLASSES.HIDE}`, + [ARIA.LABEL]: i18n.clearSearchAriaLabel, + tabindex: "-1" + }, + searchWrapper + ); + this.searchClearButton.innerHTML = buildClearIcon(this.id); + this.searchResultsA11yText = createEl( + "span", + { class: "iti__a11y-text" }, + this.dropdownContent + ); + this.searchNoResults = createEl( + "div", + { + class: `iti__no-results ${CLASSES.HIDE}`, + [ARIA.HIDDEN]: "true" + // all a11y messaging happens in this.searchResultsA11yText + }, + this.dropdownContent + ); + this.searchNoResults.textContent = i18n.zeroSearchResults; + } + _maybeUpdateInputPaddingAndReveal() { + if (this.countryContainer) { + this.updateInputPadding(); + this.countryContainer.classList.remove(CLASSES.V_HIDE); + } + } + _maybeBuildHiddenInputs(wrapper) { + const { hiddenInput } = this.options; + if (hiddenInput) { + const telInputName = this.telInput.getAttribute("name") || ""; + const names = hiddenInput(telInputName); + if (names.phone) { + const existingInput = this.telInput.form?.querySelector( + `input[name="${names.phone}"]` + ); + if (existingInput) { + this.hiddenInput = existingInput; + } else { + this.hiddenInput = createEl("input", { + type: "hidden", + name: names.phone + }); + wrapper.appendChild(this.hiddenInput); + } + } + if (names.country) { + const existingInput = this.telInput.form?.querySelector( + `input[name="${names.country}"]` + ); + if (existingInput) { + this.hiddenInputCountry = existingInput; + } else { + this.hiddenInputCountry = createEl("input", { + type: "hidden", + name: names.country + }); + wrapper.appendChild(this.hiddenInputCountry); + } + } + } + } + //* For each country: add a country list item

  • to the countryList
      container. + _appendListItems() { + const frag = document.createDocumentFragment(); + for (let i = 0; i < this.countries.length; i++) { + const c = this.countries[i]; + const liClass = buildClassNames({ + [CLASSES.COUNTRY_ITEM]: true, + [CLASSES.HIGHLIGHT]: i === 0 + }); + const listItem = createEl("li", { + id: `iti-${this.id}__item-${c.iso2}`, + class: liClass, + tabindex: "-1", + role: "option", + [ARIA.SELECTED]: "false" + }); + listItem.dataset.dialCode = c.dialCode; + listItem.dataset.countryCode = c.iso2; + c.nodeById[this.id] = listItem; + if (this.options.showFlags) { + createEl("div", { class: `${CLASSES.FLAG} iti__${c.iso2}` }, listItem); + } + const nameEl = createEl("span", { class: "iti__country-name" }, listItem); + nameEl.textContent = c.name; + const dialEl = createEl("span", { class: "iti__dial-code" }, listItem); + if (this.isRTL) { + dialEl.setAttribute("dir", "ltr"); + } + dialEl.textContent = `+${c.dialCode}`; + frag.appendChild(listItem); + } + this.countryList.appendChild(frag); + } + //* Update the input padding to make space for the selected country/dial code. + updateInputPadding() { + if (this.selectedCountry) { + const fallbackWidth = this.options.separateDialCode ? LAYOUT.SANE_SELECTED_WITH_DIAL_WIDTH : LAYOUT.SANE_SELECTED_NO_DIAL_WIDTH; + const selectedCountryWidth = this.selectedCountry.offsetWidth || this._getHiddenSelectedCountryWidth() || fallbackWidth; + const inputPadding = selectedCountryWidth + LAYOUT.INPUT_PADDING_EXTRA_LEFT; + this.telInput.style.paddingLeft = `${inputPadding}px`; + } + } + //* When input is in a hidden container during init, we cannot calculate the selected country width. + //* Fix: clone the markup, make it invisible, add it to the end of the DOM, and then measure it's width. + //* To get the right styling to apply, all we need is a shallow clone of the container, + //* and then to inject a deep clone of the selectedCountry element. + _getHiddenSelectedCountryWidth() { + if (this.telInput.parentNode) { + let body; + try { + body = window.top.document.body; + } catch (e) { + body = document.body; + } + const containerClone = this.telInput.parentNode.cloneNode( + false + ); + containerClone.style.visibility = "hidden"; + body.appendChild(containerClone); + const countryContainerClone = this.countryContainer.cloneNode(); + containerClone.appendChild(countryContainerClone); + const selectedCountryClone = this.selectedCountry.cloneNode( + true + ); + countryContainerClone.appendChild(selectedCountryClone); + const width = selectedCountryClone.offsetWidth; + body.removeChild(containerClone); + return width; + } + return 0; + } + //* Update search results text (for a11y). + updateSearchResultsA11yText() { + const { i18n } = this.options; + const count = this.countryList.childElementCount; + let searchText; + if (count === 0) { + searchText = i18n.zeroSearchResults; + } else { + if (i18n.searchResultsText) { + searchText = i18n.searchResultsText(count); + } else if (count === 1) { + searchText = i18n.oneSearchResult; + } else { + searchText = i18n.multipleSearchResults.replace( + "${count}", + count.toString() + ); + } + } + this.searchResultsA11yText.textContent = searchText; + } + //* Check if an element is visible within it's container, else scroll until it is. + scrollTo(element) { + const container = this.countryList; + const scrollTop = document.documentElement.scrollTop; + const containerHeight = container.offsetHeight; + const containerTop = container.getBoundingClientRect().top + scrollTop; + const containerBottom = containerTop + containerHeight; + const elementHeight = element.offsetHeight; + const elementTop = element.getBoundingClientRect().top + scrollTop; + const elementBottom = elementTop + elementHeight; + const newScrollTop = elementTop - containerTop + container.scrollTop; + if (elementTop < containerTop) { + container.scrollTop = newScrollTop; + } else if (elementBottom > containerBottom) { + const heightDifference = containerHeight - elementHeight; + container.scrollTop = newScrollTop - heightDifference; + } + } + //* Remove highlighting from other list items and highlight the given item. + highlightListItem(listItem, shouldFocus) { + const prevItem = this.highlightedItem; + if (prevItem) { + prevItem.classList.remove(CLASSES.HIGHLIGHT); + prevItem.setAttribute(ARIA.SELECTED, "false"); + } + this.highlightedItem = listItem; + if (this.highlightedItem) { + this.highlightedItem.classList.add(CLASSES.HIGHLIGHT); + this.highlightedItem.setAttribute(ARIA.SELECTED, "true"); + if (this.options.countrySearch) { + const activeDescendant = this.highlightedItem.getAttribute("id") || ""; + this.searchInput.setAttribute(ARIA.ACTIVE_DESCENDANT, activeDescendant); + } + } + if (shouldFocus) { + this.highlightedItem.focus(); + } + } + //* Country search: Filter the country list to the given array of countries. + filterCountries(matchedCountries) { + this.countryList.innerHTML = ""; + let noCountriesAddedYet = true; + for (const c of matchedCountries) { + const listItem = c.nodeById[this.id]; + if (listItem) { + this.countryList.appendChild(listItem); + if (noCountriesAddedYet) { + this.highlightListItem(listItem, false); + noCountriesAddedYet = false; + } + } + } + if (noCountriesAddedYet) { + this.highlightListItem(null, false); + if (this.searchNoResults) { + this.searchNoResults.classList.remove(CLASSES.HIDE); + } + } else if (this.searchNoResults) { + this.searchNoResults.classList.add(CLASSES.HIDE); + } + this.countryList.scrollTop = 0; + this.updateSearchResultsA11yText(); + } + destroy() { + this.telInput.iti = void 0; + delete this.telInput.dataset.intlTelInputId; + if (this.options.separateDialCode) { + this.telInput.style.paddingLeft = this.originalPaddingLeft; + } + const wrapper = this.telInput.parentNode; + wrapper.before(this.telInput); + wrapper.remove(); + this.telInput = null; + this.countryContainer = null; + this.selectedCountry = null; + this.selectedCountryInner = null; + this.selectedDialCode = null; + this.dropdownArrow = null; + this.dropdownContent = null; + this.searchInput = null; + this.searchIcon = null; + this.searchClearButton = null; + this.searchNoResults = null; + this.searchResultsA11yText = null; + this.countryList = null; + this.dropdown = null; + this.hiddenInput = null; + this.hiddenInputCountry = null; + this.highlightedItem = null; + for (const c of this.countries) { + delete c.nodeById[this.id]; + } + this.countries = null; + } + }; + + // src/js/modules/data/country-data.ts + var processAllCountries = (options) => { + const { onlyCountries, excludeCountries } = options; + if (onlyCountries.length) { + const lowerCaseOnlyCountries = onlyCountries.map( + (country) => country.toLowerCase() + ); + return data_default.filter( + (country) => lowerCaseOnlyCountries.includes(country.iso2) + ); + } else if (excludeCountries.length) { + const lowerCaseExcludeCountries = excludeCountries.map( + (country) => country.toLowerCase() + ); + return data_default.filter( + (country) => !lowerCaseExcludeCountries.includes(country.iso2) + ); + } + return data_default; + }; + var translateCountryNames = (countries, options) => { + for (const c of countries) { + const iso2 = c.iso2.toLowerCase(); + if (options.i18n[iso2]) { + c.name = options.i18n[iso2]; + } + } + }; + var processDialCodes = (countries, options) => { + const dialCodes = /* @__PURE__ */ new Set(); + let dialCodeMaxLen = 0; + const dialCodeToIso2Map = {}; + const _addToDialCodeMap = (iso2, dialCode, priority) => { + if (!iso2 || !dialCode) { + return; + } + if (dialCode.length > dialCodeMaxLen) { + dialCodeMaxLen = dialCode.length; + } + if (!dialCodeToIso2Map.hasOwnProperty(dialCode)) { + dialCodeToIso2Map[dialCode] = []; + } + const iso2List = dialCodeToIso2Map[dialCode]; + if (iso2List.includes(iso2)) { + return; + } + const index = priority !== void 0 ? priority : iso2List.length; + iso2List[index] = iso2; + }; + for (const c of countries) { + if (!dialCodes.has(c.dialCode)) { + dialCodes.add(c.dialCode); + } + for (let k = 1; k < c.dialCode.length; k++) { + const partialDialCode = c.dialCode.substring(0, k); + _addToDialCodeMap(c.iso2, partialDialCode); + } + _addToDialCodeMap(c.iso2, c.dialCode, c.priority); + } + if (options.onlyCountries.length || options.excludeCountries.length) { + dialCodes.forEach((dialCode) => { + dialCodeToIso2Map[dialCode] = dialCodeToIso2Map[dialCode].filter(Boolean); + }); + } + for (const c of countries) { + if (c.areaCodes) { + const rootIso2Code = dialCodeToIso2Map[c.dialCode][0]; + for (const areaCode of c.areaCodes) { + for (let k = 1; k < areaCode.length; k++) { + const partialAreaCode = areaCode.substring(0, k); + const partialDialCode = c.dialCode + partialAreaCode; + _addToDialCodeMap(rootIso2Code, partialDialCode); + _addToDialCodeMap(c.iso2, partialDialCode); + } + _addToDialCodeMap(c.iso2, c.dialCode + areaCode); + } + } + } + return { dialCodes, dialCodeMaxLen, dialCodeToIso2Map }; + }; + var sortCountries = (countries, options) => { + if (options.countryOrder) { + options.countryOrder = options.countryOrder.map( + (iso2) => iso2.toLowerCase() + ); + } + countries.sort((a, b) => { + const { countryOrder } = options; + if (countryOrder) { + const aIndex = countryOrder.indexOf(a.iso2); + const bIndex = countryOrder.indexOf(b.iso2); + const aIndexExists = aIndex > -1; + const bIndexExists = bIndex > -1; + if (aIndexExists || bIndexExists) { + if (aIndexExists && bIndexExists) { + return aIndex - bIndex; + } + return aIndexExists ? -1 : 1; + } + } + return a.name.localeCompare(b.name); + }); + }; + var cacheSearchTokens = (countries) => { + for (const c of countries) { + c.normalisedName = normaliseString(c.name); + c.initials = c.normalisedName.split(/[^a-z]/).map((word) => word[0]).join(""); + c.dialCodePlus = `+${c.dialCode}`; + } + }; + + // src/js/modules/format/formatting.ts + var beforeSetNumber = (fullNumber, dialCode, separateDialCode, selectedCountryData) => { + let number = fullNumber; + if (separateDialCode) { + if (dialCode) { + dialCode = `+${selectedCountryData.dialCode}`; + const start = number[dialCode.length] === " " || number[dialCode.length] === "-" ? dialCode.length + 1 : dialCode.length; + number = number.substring(start); + } + } + return number; + }; + var formatNumberAsYouType = (fullNumber, telInputValue, utils2, selectedCountryData, separateDialCode) => { + const result = utils2 ? utils2.formatNumberAsYouType(fullNumber, selectedCountryData.iso2) : fullNumber; + const { dialCode } = selectedCountryData; + if (separateDialCode && telInputValue.charAt(0) !== "+" && result.includes(`+${dialCode}`)) { + const afterDialCode = result.split(`+${dialCode}`)[1] || ""; + return afterDialCode.trim(); + } + return result; + }; + + // src/js/modules/format/caret.ts + var translateCursorPosition = (relevantChars, formattedValue, prevCaretPos, isDeleteForwards) => { + if (prevCaretPos === 0 && !isDeleteForwards) { + return 0; + } + let relevantCharCount = 0; + for (let i = 0; i < formattedValue.length; i++) { + if (/[+0-9]/.test(formattedValue[i])) { + relevantCharCount++; + } + if (relevantCharCount === relevantChars && !isDeleteForwards) { + return i + 1; + } + if (isDeleteForwards && relevantCharCount === relevantChars + 1) { + return i; + } + } + return formattedValue.length; + }; + + // src/js/modules/data/nanp-regionless.ts + var regionlessNanpNumbers = [ + "800", + "822", + "833", + "844", + "855", + "866", + "877", + "880", + "881", + "882", + "883", + "884", + "885", + "886", + "887", + "888", + "889" + ]; + var isRegionlessNanp = (number) => { + const numeric = getNumeric(number); + if (numeric.startsWith(DIAL.NANP) && numeric.length >= 4) { + const areaCode = numeric.substring(1, 4); + return regionlessNanpNumbers.includes(areaCode); + } + return false; + }; + + // src/js/intl-tel-input.ts + for (const c of data_default) { + c.name = en_default[c.iso2]; + } + var id = 0; + var iso2Set = new Set(data_default.map((c) => c.iso2)); + var isIso2 = (val) => iso2Set.has(val); + var Iti = class _Iti { + constructor(input, customOptions = {}) { + this.id = id++; + this.options = { ...defaults, ...customOptions }; + applyOptionSideEffects(this.options, en_default); + this.ui = new UI(input, this.options, this.id); + this.isAndroid = _Iti._getIsAndroid(); + this.promise = this._createInitPromises(); + this.countries = processAllCountries(this.options); + const { dialCodes, dialCodeMaxLen, dialCodeToIso2Map } = processDialCodes( + this.countries, + this.options + ); + this.dialCodes = dialCodes; + this.dialCodeMaxLen = dialCodeMaxLen; + this.dialCodeToIso2Map = dialCodeToIso2Map; + this.countryByIso2 = new Map(this.countries.map((c) => [c.iso2, c])); + this._init(); + } + static _getIsAndroid() { + return typeof navigator !== "undefined" ? /Android/i.test(navigator.userAgent) : false; + } + _createInitPromises() { + const autoCountryPromise = new Promise((resolve, reject) => { + this.resolveAutoCountryPromise = resolve; + this.rejectAutoCountryPromise = reject; + }); + const utilsScriptPromise = new Promise((resolve, reject) => { + this.resolveUtilsScriptPromise = resolve; + this.rejectUtilsScriptPromise = reject; + }); + return Promise.all([autoCountryPromise, utilsScriptPromise]); + } + //* Can't be private as it's called from intlTelInput convenience wrapper. + _init() { + this.selectedCountryData = {}; + this.abortController = new AbortController(); + this._processCountryData(); + this.ui.generateMarkup(this.countries); + this._setInitialState(); + this._initListeners(); + this._initRequests(); + } + //******************** + //* PRIVATE METHODS + //******************** + //* Prepare all of the country data, including onlyCountries, excludeCountries, countryOrder options. + _processCountryData() { + translateCountryNames(this.countries, this.options); + sortCountries(this.countries, this.options); + cacheSearchTokens(this.countries); + } + //* Set the initial state of the input value and the selected country by: + //* 1. Extracting a dial code from the given number + //* 2. Using explicit initialCountry + _setInitialState(overrideAutoCountry = false) { + const attributeValue = this.ui.telInput.getAttribute("value"); + const inputValue = this.ui.telInput.value; + const useAttribute = attributeValue && attributeValue.startsWith("+") && (!inputValue || !inputValue.startsWith("+")); + const val = useAttribute ? attributeValue : inputValue; + const dialCode = this._getDialCode(val); + const isRegionlessNanpNumber = isRegionlessNanp(val); + const { initialCountry, geoIpLookup } = this.options; + const isAutoCountry = initialCountry === INITIAL_COUNTRY.AUTO && geoIpLookup; + if (dialCode && !isRegionlessNanpNumber) { + this._updateCountryFromNumber(val); + } else if (!isAutoCountry || overrideAutoCountry) { + const lowerInitialCountry = initialCountry ? initialCountry.toLowerCase() : ""; + if (isIso2(lowerInitialCountry)) { + this._setCountry(lowerInitialCountry); + } else { + if (dialCode && isRegionlessNanpNumber) { + this._setCountry(US.ISO2); + } else { + this._setCountry(""); + } + } + } + if (val) { + this._updateValFromNumber(val); + } + } + //* Initialise the main event listeners: input keyup, and click selected country. + _initListeners() { + this._initTelInputListeners(); + if (this.options.allowDropdown) { + this._initDropdownListeners(); + } + if ((this.ui.hiddenInput || this.ui.hiddenInputCountry) && this.ui.telInput.form) { + this._initHiddenInputListener(); + } + } + //* Update hidden input on form submit. + _initHiddenInputListener() { + const handleHiddenInputSubmit = () => { + if (this.ui.hiddenInput) { + this.ui.hiddenInput.value = this.getNumber(); + } + if (this.ui.hiddenInputCountry) { + this.ui.hiddenInputCountry.value = this.selectedCountryData.iso2 || ""; + } + }; + this.ui.telInput.form?.addEventListener("submit", handleHiddenInputSubmit, { + signal: this.abortController.signal + }); + } + //* initialise the dropdown listeners. + _initDropdownListeners() { + const signal = this.abortController.signal; + const handleLabelClick = (e) => { + if (this.ui.dropdownContent.classList.contains(CLASSES.HIDE)) { + this.ui.telInput.focus(); + } else { + e.preventDefault(); + } + }; + const label = this.ui.telInput.closest("label"); + if (label) { + label.addEventListener("click", handleLabelClick, { signal }); + } + const handleClickSelectedCountry = () => { + const dropdownClosed = this.ui.dropdownContent.classList.contains( + CLASSES.HIDE + ); + if (dropdownClosed && !this.ui.telInput.disabled && !this.ui.telInput.readOnly) { + this._openDropdown(); + } + }; + this.ui.selectedCountry.addEventListener( + "click", + handleClickSelectedCountry, + { + signal + } + ); + const handleCountryContainerKeydown = (e) => { + const isDropdownHidden = this.ui.dropdownContent.classList.contains( + CLASSES.HIDE + ); + if (isDropdownHidden && [KEYS.ARROW_UP, KEYS.ARROW_DOWN, KEYS.SPACE, KEYS.ENTER].includes(e.key)) { + e.preventDefault(); + e.stopPropagation(); + this._openDropdown(); + } + if (e.key === KEYS.TAB) { + this._closeDropdown(); + } + }; + this.ui.countryContainer.addEventListener( + "keydown", + handleCountryContainerKeydown, + { signal } + ); + } + //* Init many requests: utils script / geo ip lookup. + _initRequests() { + const { loadUtils, initialCountry, geoIpLookup } = this.options; + if (loadUtils && !intlTelInput.utils) { + const doAttachUtils = () => { + intlTelInput.attachUtils(loadUtils)?.catch(() => { + }); + }; + if (intlTelInput.documentReady()) { + doAttachUtils(); + } else { + const handlePageLoad = () => { + doAttachUtils(); + }; + window.addEventListener("load", handlePageLoad, { + signal: this.abortController.signal + }); + } + } else { + this.resolveUtilsScriptPromise(); + } + const isAutoCountry = initialCountry === INITIAL_COUNTRY.AUTO && geoIpLookup; + if (isAutoCountry && !this.selectedCountryData.iso2) { + this._loadAutoCountry(); + } else { + this.resolveAutoCountryPromise(); + } + } + //* Perform the geo ip lookup. + _loadAutoCountry() { + if (intlTelInput.autoCountry) { + this.handleAutoCountry(); + } else if (!intlTelInput.startedLoadingAutoCountry) { + intlTelInput.startedLoadingAutoCountry = true; + if (typeof this.options.geoIpLookup === "function") { + this.options.geoIpLookup( + (iso2 = "") => { + const iso2Lower = iso2.toLowerCase(); + if (isIso2(iso2Lower)) { + intlTelInput.autoCountry = iso2Lower; + setTimeout(() => forEachInstance("handleAutoCountry")); + } else { + this._setInitialState(true); + forEachInstance("rejectAutoCountryPromise"); + } + }, + () => { + this._setInitialState(true); + forEachInstance("rejectAutoCountryPromise"); + } + ); + } + } + } + _openDropdownWithPlus() { + this._openDropdown(); + this.ui.searchInput.value = "+"; + this._filterCountriesByQuery(""); + } + //* Initialize the tel input listeners. + _initTelInputListeners() { + this._bindInputListener(); + this._maybeBindKeydownListener(); + this._maybeBindPasteListener(); + } + _bindInputListener() { + const { + strictMode, + formatAsYouType, + separateDialCode, + allowDropdown, + countrySearch + } = this.options; + let userOverrideFormatting = false; + if (REGEX.ALPHA_UNICODE.test(this.ui.telInput.value)) { + userOverrideFormatting = true; + } + const handleInputEvent = (e) => { + if (this.isAndroid && e?.data === "+" && separateDialCode && allowDropdown && countrySearch) { + const currentCaretPos = this.ui.telInput.selectionStart || 0; + const valueBeforeCaret = this.ui.telInput.value.substring( + 0, + currentCaretPos - 1 + ); + const valueAfterCaret = this.ui.telInput.value.substring(currentCaretPos); + this.ui.telInput.value = valueBeforeCaret + valueAfterCaret; + this._openDropdownWithPlus(); + return; + } + if (this._updateCountryFromNumber(this.ui.telInput.value)) { + this._triggerCountryChange(); + } + const isFormattingChar = e?.data && REGEX.NON_PLUS_NUMERIC.test(e.data); + const isPaste = e?.inputType === INPUT_TYPES.PASTE && this.ui.telInput.value; + if (isFormattingChar || isPaste && !strictMode) { + userOverrideFormatting = true; + } else if (!REGEX.NON_PLUS_NUMERIC.test(this.ui.telInput.value)) { + userOverrideFormatting = false; + } + const isSetNumber = e?.detail && e.detail["isSetNumber"]; + if (formatAsYouType && !userOverrideFormatting && !isSetNumber) { + const currentCaretPos = this.ui.telInput.selectionStart || 0; + const valueBeforeCaret = this.ui.telInput.value.substring( + 0, + currentCaretPos + ); + const relevantCharsBeforeCaret = valueBeforeCaret.replace( + REGEX.NON_PLUS_NUMERIC_GLOBAL, + "" + ).length; + const isDeleteForwards = e?.inputType === INPUT_TYPES.DELETE_FWD; + const fullNumber = this._getFullNumber(); + const formattedValue = formatNumberAsYouType( + fullNumber, + this.ui.telInput.value, + intlTelInput.utils, + this.selectedCountryData, + this.options.separateDialCode + ); + const newCaretPos = translateCursorPosition( + relevantCharsBeforeCaret, + formattedValue, + currentCaretPos, + isDeleteForwards + ); + this.ui.telInput.value = formattedValue; + this.ui.telInput.setSelectionRange(newCaretPos, newCaretPos); + } + }; + this.ui.telInput.addEventListener( + "input", + handleInputEvent, + { + signal: this.abortController.signal + } + ); + } + _maybeBindKeydownListener() { + const { strictMode, separateDialCode, allowDropdown, countrySearch } = this.options; + if (strictMode || separateDialCode) { + const handleKeydownEvent = (e) => { + if (e.key && e.key.length === 1 && !e.altKey && !e.ctrlKey && !e.metaKey) { + if (separateDialCode && allowDropdown && countrySearch && e.key === "+") { + e.preventDefault(); + this._openDropdownWithPlus(); + return; + } + if (strictMode) { + const value = this.ui.telInput.value; + const alreadyHasPlus = value.startsWith("+"); + const isInitialPlus = !alreadyHasPlus && this.ui.telInput.selectionStart === 0 && e.key === "+"; + const isNumeric = /^[0-9]$/.test(e.key); + const isAllowedChar = separateDialCode ? isNumeric : isInitialPlus || isNumeric; + const newValue = value.slice(0, this.ui.telInput.selectionStart) + e.key + value.slice(this.ui.telInput.selectionEnd); + const newFullNumber = this._getFullNumber(newValue); + const coreNumber = intlTelInput.utils.getCoreNumber( + newFullNumber, + this.selectedCountryData.iso2 + ); + const hasExceededMaxLength = this.maxCoreNumberLength && coreNumber.length > this.maxCoreNumberLength; + const newCountry = this._getNewCountryFromNumber(newFullNumber); + const isChangingDialCode = newCountry !== null; + if (!isAllowedChar || hasExceededMaxLength && !isChangingDialCode && !isInitialPlus) { + e.preventDefault(); + } + } + } + }; + this.ui.telInput.addEventListener("keydown", handleKeydownEvent, { + signal: this.abortController.signal + }); + } + } + _maybeBindPasteListener() { + if (this.options.strictMode) { + const handlePasteEvent = (e) => { + e.preventDefault(); + const input = this.ui.telInput; + const selStart = input.selectionStart; + const selEnd = input.selectionEnd; + const before = input.value.slice(0, selStart); + const after = input.value.slice(selEnd); + const iso2 = this.selectedCountryData.iso2; + const pasted = e.clipboardData.getData("text"); + const initialCharSelected = selStart === 0 && selEnd > 0; + const allowLeadingPlus = !input.value.startsWith("+") || initialCharSelected; + const allowedChars = pasted.replace(REGEX.NON_PLUS_NUMERIC_GLOBAL, ""); + const hasLeadingPlus = allowedChars.startsWith("+"); + const numerics = allowedChars.replace(/\+/g, ""); + const sanitised = hasLeadingPlus && allowLeadingPlus ? `+${numerics}` : numerics; + let newVal = before + sanitised + after; + let coreNumber = intlTelInput.utils.getCoreNumber(newVal, iso2); + while (coreNumber.length === 0 && newVal.length > 0) { + newVal = newVal.slice(0, -1); + coreNumber = intlTelInput.utils.getCoreNumber(newVal, iso2); + } + if (!coreNumber) { + return; + } + if (this.maxCoreNumberLength && coreNumber.length > this.maxCoreNumberLength) { + if (input.selectionEnd === input.value.length) { + const trimLength = coreNumber.length - this.maxCoreNumberLength; + newVal = newVal.slice(0, newVal.length - trimLength); + } else { + return; + } + } + input.value = newVal; + const caretPos = selStart + sanitised.length; + input.setSelectionRange(caretPos, caretPos); + input.dispatchEvent(new InputEvent("input", { bubbles: true })); + }; + this.ui.telInput.addEventListener("paste", handlePasteEvent, { + signal: this.abortController.signal + }); + } + } + //* Adhere to the input's maxlength attr. + _cap(number) { + const max = Number(this.ui.telInput.getAttribute("maxlength")); + return max && number.length > max ? number.substring(0, max) : number; + } + //* Trigger a custom event on the input (typed via ItiEventMap). + _trigger(name, detailProps = {}) { + const e = new CustomEvent(name, { + bubbles: true, + cancelable: true, + detail: detailProps + }); + this.ui.telInput.dispatchEvent(e); + } + //* Open the dropdown. + _openDropdown() { + const { fixDropdownWidth, countrySearch } = this.options; + this.dropdownAbortController = new AbortController(); + if (fixDropdownWidth) { + this.ui.dropdownContent.style.width = `${this.ui.telInput.offsetWidth}px`; + } + this.ui.dropdownContent.classList.remove(CLASSES.HIDE); + this.ui.selectedCountry.setAttribute(ARIA.EXPANDED, "true"); + this._setDropdownPosition(); + if (countrySearch) { + const firstCountryItem = this.ui.countryList.firstElementChild; + if (firstCountryItem) { + this.ui.highlightListItem(firstCountryItem, false); + this.ui.countryList.scrollTop = 0; + } + this.ui.searchInput.focus(); + } + this._bindDropdownListeners(); + this.ui.dropdownArrow.classList.add(CLASSES.ARROW_UP); + this._trigger(EVENTS.OPEN_COUNTRY_DROPDOWN); + } + //* Set the dropdown position + _setDropdownPosition() { + if (this.options.dropdownContainer) { + this.options.dropdownContainer.appendChild(this.ui.dropdown); + } + if (!this.options.useFullscreenPopup) { + const inputPosRelativeToVP = this.ui.telInput.getBoundingClientRect(); + const inputHeight = this.ui.telInput.offsetHeight; + if (this.options.dropdownContainer) { + this.ui.dropdown.style.top = `${inputPosRelativeToVP.top + inputHeight}px`; + this.ui.dropdown.style.left = `${inputPosRelativeToVP.left}px`; + const handleWindowScroll = () => this._closeDropdown(); + window.addEventListener("scroll", handleWindowScroll, { + signal: this.dropdownAbortController.signal + }); + } + } + } + //* We only bind dropdown listeners when the dropdown is open. + _bindDropdownListeners() { + const signal = this.dropdownAbortController.signal; + this._bindDropdownMouseoverListener(signal); + this._bindDropdownCountryClickListener(signal); + this._bindDropdownClickOffListener(signal); + this._bindDropdownKeydownListener(signal); + if (this.options.countrySearch) { + this._bindDropdownSearchListeners(signal); + } + } + //* When mouse over a list item, just highlight that one + //* we add the class "highlight", so if they hit "enter" we know which one to select. + _bindDropdownMouseoverListener(signal) { + const handleMouseoverCountryList = (e) => { + const listItem = e.target?.closest( + `.${CLASSES.COUNTRY_ITEM}` + ); + if (listItem) { + this.ui.highlightListItem(listItem, false); + } + }; + this.ui.countryList.addEventListener( + "mouseover", + handleMouseoverCountryList, + { + signal + } + ); + } + //* Listen for country selection. + _bindDropdownCountryClickListener(signal) { + const handleClickCountryList = (e) => { + const listItem = e.target?.closest( + `.${CLASSES.COUNTRY_ITEM}` + ); + if (listItem) { + this._selectListItem(listItem); + } + }; + this.ui.countryList.addEventListener("click", handleClickCountryList, { + signal + }); + } + //* Click off to close (except when this initial opening click is bubbling up). + //* We cannot just stopPropagation as it may be needed to close another instance. + _bindDropdownClickOffListener(signal) { + const handleClickOffToClose = (e) => { + const target = e.target; + const clickedInsideDropdown = !!target.closest( + `#iti-${this.id}__dropdown-content` + ); + if (!clickedInsideDropdown) { + this._closeDropdown(); + } + }; + setTimeout(() => { + document.documentElement.addEventListener( + "click", + handleClickOffToClose, + { signal } + ); + }, 0); + } + //* Listen for up/down scrolling, enter to select, or escape to close. + //* Use keydown as keypress doesn't fire for non-char keys and we want to catch if they + //* just hit down and hold it to scroll down (no keyup event). + //* Listen on the document because that's where key events are triggered if no input has focus. + _bindDropdownKeydownListener(signal) { + let query = ""; + let queryTimer = null; + const handleKeydownOnDropdown = (e) => { + const allowedKeys = [ + KEYS.ARROW_UP, + KEYS.ARROW_DOWN, + KEYS.ENTER, + KEYS.ESC + ]; + if (allowedKeys.includes(e.key)) { + e.preventDefault(); + e.stopPropagation(); + if (e.key === KEYS.ARROW_UP || e.key === KEYS.ARROW_DOWN) { + this._handleUpDownKey(e.key); + } else if (e.key === KEYS.ENTER) { + this._handleEnterKey(); + } else if (e.key === KEYS.ESC) { + this._closeDropdown(); + } + } + if (!this.options.countrySearch && REGEX.HIDDEN_SEARCH_CHAR.test(e.key)) { + e.stopPropagation(); + if (queryTimer) { + clearTimeout(queryTimer); + } + query += e.key.toLowerCase(); + this._searchForCountry(query); + queryTimer = setTimeout(() => { + query = ""; + }, TIMINGS.HIDDEN_SEARCH_RESET_MS); + } + }; + document.addEventListener("keydown", handleKeydownOnDropdown, { signal }); + } + //* Search input listeners when countrySearch enabled. + _bindDropdownSearchListeners(signal) { + const doFilter = () => { + const inputQuery = this.ui.searchInput.value.trim(); + this._filterCountriesByQuery(inputQuery); + if (this.ui.searchInput.value) { + this.ui.searchClearButton.classList.remove(CLASSES.HIDE); + } else { + this.ui.searchClearButton.classList.add(CLASSES.HIDE); + } + }; + let keyupTimer = null; + const handleSearchChange = () => { + if (keyupTimer) { + clearTimeout(keyupTimer); + } + keyupTimer = setTimeout(() => { + doFilter(); + keyupTimer = null; + }, 100); + }; + this.ui.searchInput.addEventListener("input", handleSearchChange, { + signal + }); + const handleSearchClear = () => { + this.ui.searchInput.value = ""; + this.ui.searchInput.focus(); + doFilter(); + }; + this.ui.searchClearButton.addEventListener("click", handleSearchClear, { + signal + }); + } + //* Hidden search (countrySearch disabled): Find the first list item whose name starts with the query string. + _searchForCountry(query) { + const match = findFirstCountryStartingWith(this.countries, query); + if (match) { + const listItem = match.nodeById[this.id]; + this.ui.highlightListItem(listItem, false); + this.ui.scrollTo(listItem); + } + } + //* Country search: Filter the countries according to the search query. + _filterCountriesByQuery(query) { + let matchedCountries; + if (query === "") { + matchedCountries = this.countries; + } else { + matchedCountries = getMatchedCountries(this.countries, query); + } + this.ui.filterCountries(matchedCountries); + } + //* Highlight the next/prev item in the list (and ensure it is visible). + _handleUpDownKey(key) { + let next = key === KEYS.ARROW_UP ? this.ui.highlightedItem?.previousElementSibling : this.ui.highlightedItem?.nextElementSibling; + if (!next && this.ui.countryList.childElementCount > 1) { + next = key === KEYS.ARROW_UP ? this.ui.countryList.lastElementChild : this.ui.countryList.firstElementChild; + } + if (next) { + this.ui.scrollTo(next); + this.ui.highlightListItem(next, false); + } + } + //* Select the currently highlighted item. + _handleEnterKey() { + if (this.ui.highlightedItem) { + this._selectListItem(this.ui.highlightedItem); + } + } + //* Update the input's value to the given val (format first if possible) + //* NOTE: this is called from _setInitialState, handleUtils and setNumber. + _updateValFromNumber(fullNumber) { + let number = fullNumber; + if (this.options.formatOnDisplay && intlTelInput.utils && this.selectedCountryData) { + const useNational = this.options.nationalMode || !number.startsWith("+") && !this.options.separateDialCode; + const { NATIONAL, INTERNATIONAL } = intlTelInput.utils.numberFormat; + const format = useNational ? NATIONAL : INTERNATIONAL; + number = intlTelInput.utils.formatNumber( + number, + this.selectedCountryData.iso2, + format + ); + } + number = this._beforeSetNumber(number); + this.ui.telInput.value = number; + } + //* Check if need to select a new country based on the given number + //* Note: called from _setInitialState, keyup handler, setNumber. + _updateCountryFromNumber(fullNumber) { + const iso2 = this._getNewCountryFromNumber(fullNumber); + if (iso2 !== null) { + return this._setCountry(iso2); + } + return false; + } + // if there is a selected country, and the number doesn't start with a dial code, then add it + _ensureHasDialCode(number) { + const { dialCode, nationalPrefix } = this.selectedCountryData; + const alreadyHasPlus = number.startsWith("+"); + if (alreadyHasPlus || !dialCode) { + return number; + } + const hasPrefix = nationalPrefix && number.startsWith(nationalPrefix) && !this.options.separateDialCode; + const cleanNumber = hasPrefix ? number.substring(1) : number; + return `+${dialCode}${cleanNumber}`; + } + // Get the country ISO2 code from the given number + // BUT ONLY IF ITS CHANGED FROM THE CURRENTLY SELECTED COUNTRY + // NOTE: consider refactoring this to be more clear + _getNewCountryFromNumber(fullNumber) { + const plusIndex = fullNumber.indexOf("+"); + let number = plusIndex ? fullNumber.substring(plusIndex) : fullNumber; + const selectedIso2 = this.selectedCountryData.iso2; + const selectedDialCode = this.selectedCountryData.dialCode; + number = this._ensureHasDialCode(number); + const dialCodeMatch = this._getDialCode(number, true); + const numeric = getNumeric(number); + if (dialCodeMatch) { + const dialCodeMatchNumeric = getNumeric(dialCodeMatch); + const iso2Codes = this.dialCodeToIso2Map[dialCodeMatchNumeric]; + if (iso2Codes.length === 1) { + if (iso2Codes[0] === selectedIso2) { + return null; + } + return iso2Codes[0]; + } + if (!selectedIso2 && this.defaultCountry && iso2Codes.includes(this.defaultCountry)) { + return this.defaultCountry; + } + const isRegionlessNanpNumber = selectedDialCode === DIAL.NANP && isRegionlessNanp(numeric); + if (isRegionlessNanpNumber) { + return null; + } + const { areaCodes, priority } = this.selectedCountryData; + if (areaCodes) { + const dialCodeAreaCodes = areaCodes.map( + (areaCode) => `${selectedDialCode}${areaCode}` + ); + for (const dialCodeAreaCode of dialCodeAreaCodes) { + if (numeric.startsWith(dialCodeAreaCode)) { + return null; + } + } + } + const isMainCountry = priority === 0; + const hasAreaCodesButNoneMatched = areaCodes && !isMainCountry && numeric.length > dialCodeMatchNumeric.length; + const isValidSelection = selectedIso2 && iso2Codes.includes(selectedIso2) && !hasAreaCodesButNoneMatched; + const alreadySelected = selectedIso2 === iso2Codes[0]; + if (!isValidSelection && !alreadySelected) { + return iso2Codes[0]; + } + } else if (number.startsWith("+") && numeric.length) { + const currentDial = this.selectedCountryData.dialCode || ""; + if (currentDial && currentDial.startsWith(numeric)) { + return null; + } + return ""; + } else if ((!number || number === "+") && !selectedIso2) { + return this.defaultCountry; + } + return null; + } + //* Update the selected country, dial code (if separateDialCode), placeholder, title, and active list item. + //* Note: called from _setInitialState, _updateCountryFromNumber, _selectListItem, setCountry. + _setCountry(iso2) { + const { separateDialCode, showFlags, i18n } = this.options; + const prevIso2 = this.selectedCountryData.iso2 || ""; + this.selectedCountryData = iso2 ? this.countryByIso2.get(iso2) : {}; + if (this.selectedCountryData.iso2) { + this.defaultCountry = this.selectedCountryData.iso2; + } + if (this.ui.selectedCountry) { + const flagClass = iso2 && showFlags ? `${CLASSES.FLAG} iti__${iso2}` : `${CLASSES.FLAG} ${CLASSES.GLOBE}`; + let ariaLabel, title; + if (iso2) { + const { name, dialCode } = this.selectedCountryData; + title = name; + ariaLabel = i18n.selectedCountryAriaLabel.replace("${countryName}", name).replace("${dialCode}", `+${dialCode}`); + } else { + title = i18n.noCountrySelected; + ariaLabel = i18n.noCountrySelected; + } + this.ui.selectedCountryInner.className = flagClass; + this.ui.selectedCountry.setAttribute("title", title); + this.ui.selectedCountry.setAttribute(ARIA.LABEL, ariaLabel); + } + if (separateDialCode) { + const dialCode = this.selectedCountryData.dialCode ? `+${this.selectedCountryData.dialCode}` : ""; + this.ui.selectedDialCode.textContent = dialCode; + this.ui.updateInputPadding(); + } + this._updatePlaceholder(); + this._updateMaxLength(); + return prevIso2 !== iso2; + } + //* Update the maximum valid number length for the currently selected country. + _updateMaxLength() { + const { strictMode, placeholderNumberType, validationNumberTypes } = this.options; + const { iso2 } = this.selectedCountryData; + if (strictMode && intlTelInput.utils) { + if (iso2) { + const numberType = intlTelInput.utils.numberType[placeholderNumberType]; + let exampleNumber = intlTelInput.utils.getExampleNumber( + iso2, + false, + numberType, + true + ); + let validNumber = exampleNumber; + while (intlTelInput.utils.isPossibleNumber( + exampleNumber, + iso2, + validationNumberTypes + )) { + validNumber = exampleNumber; + exampleNumber += "0"; + } + const coreNumber = intlTelInput.utils.getCoreNumber(validNumber, iso2); + this.maxCoreNumberLength = coreNumber.length; + if (iso2 === "by") { + this.maxCoreNumberLength = coreNumber.length + 1; + } + } else { + this.maxCoreNumberLength = null; + } + } + } + //* Update the input placeholder to an example number from the currently selected country. + _updatePlaceholder() { + const { + autoPlaceholder, + placeholderNumberType, + nationalMode, + customPlaceholder + } = this.options; + const shouldSetPlaceholder = autoPlaceholder === PLACEHOLDER_MODES.AGGRESSIVE || !this.ui.hadInitialPlaceholder && autoPlaceholder === PLACEHOLDER_MODES.POLITE; + if (intlTelInput.utils && shouldSetPlaceholder) { + const numberType = intlTelInput.utils.numberType[placeholderNumberType]; + let placeholder = this.selectedCountryData.iso2 ? intlTelInput.utils.getExampleNumber( + this.selectedCountryData.iso2, + nationalMode, + numberType + ) : ""; + placeholder = this._beforeSetNumber(placeholder); + if (typeof customPlaceholder === "function") { + placeholder = customPlaceholder(placeholder, this.selectedCountryData); + } + this.ui.telInput.setAttribute("placeholder", placeholder); + } + } + //* Called when the user selects a list item from the dropdown. + _selectListItem(listItem) { + const iso2 = listItem.dataset[DATA_KEYS.COUNTRY_CODE]; + const countryChanged = this._setCountry(iso2); + this._closeDropdown(); + const dialCode = listItem.dataset[DATA_KEYS.DIAL_CODE]; + this._updateDialCode(dialCode); + if (this.options.formatOnDisplay) { + this._updateValFromNumber(this.ui.telInput.value); + } + this.ui.telInput.focus(); + if (countryChanged) { + this._triggerCountryChange(); + } + } + //* Close the dropdown and unbind any listeners. + _closeDropdown() { + if (this.ui.dropdownContent.classList.contains(CLASSES.HIDE)) { + return; + } + this.ui.dropdownContent.classList.add(CLASSES.HIDE); + this.ui.selectedCountry.setAttribute(ARIA.EXPANDED, "false"); + if (this.ui.highlightedItem) { + this.ui.highlightedItem.setAttribute(ARIA.SELECTED, "false"); + } + if (this.options.countrySearch) { + this.ui.searchInput.removeAttribute(ARIA.ACTIVE_DESCENDANT); + } + this.ui.dropdownArrow.classList.remove(CLASSES.ARROW_UP); + this.dropdownAbortController.abort(); + this.dropdownAbortController = null; + if (this.options.dropdownContainer) { + this.ui.dropdown.remove(); + } + this._trigger(EVENTS.CLOSE_COUNTRY_DROPDOWN); + } + //* Replace any existing dial code with the new one + //* Note: called from _selectListItem and setCountry + _updateDialCode(newDialCodeBare) { + const inputVal = this.ui.telInput.value; + const newDialCode = `+${newDialCodeBare}`; + let newNumber; + if (inputVal.startsWith("+")) { + const prevDialCode = this._getDialCode(inputVal); + if (prevDialCode) { + newNumber = inputVal.replace(prevDialCode, newDialCode); + } else { + newNumber = newDialCode; + } + this.ui.telInput.value = newNumber; + } + } + //* Try and extract a valid international dial code from a full telephone number. + //* Note: returns the raw string inc plus character and any whitespace/dots etc. + _getDialCode(number, includeAreaCode) { + let dialCode = ""; + if (number.startsWith("+")) { + let numericChars = ""; + let foundBaseDialCode = false; + for (let i = 0; i < number.length; i++) { + const c = number.charAt(i); + if (/[0-9]/.test(c)) { + numericChars += c; + const hasMapEntry = Boolean(this.dialCodeToIso2Map[numericChars]); + if (!hasMapEntry) { + break; + } + if (this.dialCodes.has(numericChars)) { + dialCode = number.substring(0, i + 1); + foundBaseDialCode = true; + if (!includeAreaCode) { + break; + } + } else if (includeAreaCode && foundBaseDialCode) { + dialCode = number.substring(0, i + 1); + } + if (numericChars.length === this.dialCodeMaxLen) { + break; + } + } + } + } + return dialCode; + } + //* Get the input val, adding the dial code if separateDialCode is enabled. + _getFullNumber(overrideVal) { + const val = overrideVal || this.ui.telInput.value.trim(); + const { dialCode } = this.selectedCountryData; + let prefix; + const numericVal = getNumeric(val); + if (this.options.separateDialCode && !val.startsWith("+") && dialCode && numericVal) { + prefix = `+${dialCode}`; + } else { + prefix = ""; + } + return prefix + val; + } + //* Remove the dial code if separateDialCode is enabled also cap the length if the input has a maxlength attribute + _beforeSetNumber(fullNumber) { + const dialCode = this._getDialCode(fullNumber); + const number = beforeSetNumber( + fullNumber, + dialCode, + this.options.separateDialCode, + this.selectedCountryData + ); + return this._cap(number); + } + //* Trigger the 'countrychange' event. + _triggerCountryChange() { + this._trigger(EVENTS.COUNTRY_CHANGE); + } + //************************** + //* SECRET PUBLIC METHODS + //************************** + //* This is called when the geoip call returns. + handleAutoCountry() { + if (this.options.initialCountry === INITIAL_COUNTRY.AUTO && intlTelInput.autoCountry) { + this.defaultCountry = intlTelInput.autoCountry; + const hasSelectedCountryOrGlobe = this.selectedCountryData.iso2 || this.ui.selectedCountryInner.classList.contains(CLASSES.GLOBE); + if (!hasSelectedCountryOrGlobe) { + this.setCountry(this.defaultCountry); + } + this.resolveAutoCountryPromise(); + } + } + //* This is called when the utils request completes. + handleUtils() { + if (intlTelInput.utils) { + if (this.ui.telInput.value) { + this._updateValFromNumber(this.ui.telInput.value); + } + if (this.selectedCountryData.iso2) { + this._updatePlaceholder(); + this._updateMaxLength(); + } + } + this.resolveUtilsScriptPromise(); + } + //******************** + //* PUBLIC METHODS + //******************** + //* Remove plugin. + destroy() { + if (!this.ui.telInput) { + return; + } + if (this.options.allowDropdown) { + this._closeDropdown(); + } + this.abortController.abort(); + this.abortController = null; + this.ui.destroy(); + if (intlTelInput.instances instanceof Map) { + intlTelInput.instances.delete(this.id); + } else { + delete intlTelInput.instances[this.id]; + } + } + //* Get the extension from the current number. + getExtension() { + if (intlTelInput.utils) { + return intlTelInput.utils.getExtension( + this._getFullNumber(), + this.selectedCountryData.iso2 + ); + } + return ""; + } + //* Format the number to the given format. + getNumber(format) { + if (intlTelInput.utils) { + const { iso2 } = this.selectedCountryData; + return intlTelInput.utils.formatNumber( + this._getFullNumber(), + iso2, + format + ); + } + return ""; + } + //* Get the type of the entered number e.g. landline/mobile. + getNumberType() { + if (intlTelInput.utils) { + return intlTelInput.utils.getNumberType( + this._getFullNumber(), + this.selectedCountryData.iso2 + ); + } + return SENTINELS.UNKNOWN_NUMBER_TYPE; + } + //* Get the country data for the currently selected country. + getSelectedCountryData() { + return this.selectedCountryData; + } + //* Get the validation error. + getValidationError() { + if (intlTelInput.utils) { + const { iso2 } = this.selectedCountryData; + return intlTelInput.utils.getValidationError(this._getFullNumber(), iso2); + } + return SENTINELS.UNKNOWN_VALIDATION_ERROR; + } + //* Validate the input val using number length only + isValidNumber() { + const { dialCode, iso2 } = this.selectedCountryData; + if (dialCode === UK.DIAL_CODE && intlTelInput.utils) { + const number = this._getFullNumber(); + const coreNumber = intlTelInput.utils.getCoreNumber(number, iso2); + if (coreNumber[0] === UK.MOBILE_PREFIX && coreNumber.length !== UK.MOBILE_CORE_LENGTH) { + return false; + } + } + return this._validateNumber(false); + } + //* Validate the input val with precise validation + isValidNumberPrecise() { + return this._validateNumber(true); + } + _utilsIsPossibleNumber(val) { + return intlTelInput.utils ? intlTelInput.utils.isPossibleNumber( + val, + this.selectedCountryData.iso2, + this.options.validationNumberTypes + ) : null; + } + //* Shared internal validation logic to handle alpha character extension rules. + _validateNumber(precise) { + if (!intlTelInput.utils) { + return null; + } + if (!this.selectedCountryData.iso2) { + return false; + } + const testValidity = (s) => precise ? this._utilsIsValidNumber(s) : this._utilsIsPossibleNumber(s); + const val = this._getFullNumber(); + const alphaCharPosition = val.search(REGEX.ALPHA_UNICODE); + const hasAlphaChar = alphaCharPosition > -1; + if (hasAlphaChar && !this.options.allowPhonewords) { + const beforeAlphaChar = val.substring(0, alphaCharPosition); + const beforeAlphaIsValid = testValidity(beforeAlphaChar); + const isValid = testValidity(val); + return beforeAlphaIsValid && isValid; + } + return testValidity(val); + } + _utilsIsValidNumber(val) { + return intlTelInput.utils ? intlTelInput.utils.isValidNumber( + val, + this.selectedCountryData.iso2, + this.options.validationNumberTypes + ) : null; + } + //* Update the selected country, and update the input val accordingly. + setCountry(iso2) { + const iso2Lower = iso2?.toLowerCase(); + if (!isIso2(iso2Lower)) { + throw new Error(`Invalid country code: '${iso2Lower}'`); + } + const currentCountry = this.selectedCountryData.iso2; + const isCountryChange = iso2 && iso2Lower !== currentCountry || !iso2 && currentCountry; + if (isCountryChange) { + this._setCountry(iso2Lower); + this._updateDialCode(this.selectedCountryData.dialCode); + if (this.options.formatOnDisplay) { + this._updateValFromNumber(this.ui.telInput.value); + } + this._triggerCountryChange(); + } + } + //* Set the input value and update the country. + setNumber(number) { + const countryChanged = this._updateCountryFromNumber(number); + this._updateValFromNumber(number); + if (countryChanged) { + this._triggerCountryChange(); + } + this._trigger(EVENTS.INPUT, { isSetNumber: true }); + } + //* Set the placeholder number typ + setPlaceholderNumberType(type) { + this.options.placeholderNumberType = type; + this._updatePlaceholder(); + } + setDisabled(disabled) { + this.ui.telInput.disabled = disabled; + if (disabled) { + this.ui.selectedCountry.setAttribute("disabled", "true"); + } else { + this.ui.selectedCountry.removeAttribute("disabled"); + } + } + }; + var attachUtils = (source) => { + if (!intlTelInput.utils && !intlTelInput.startedLoadingUtilsScript) { + let loadCall; + if (typeof source === "function") { + try { + loadCall = Promise.resolve(source()); + } catch (error) { + return Promise.reject(error); + } + } else { + return Promise.reject( + new TypeError( + `The argument passed to attachUtils must be a function that returns a promise for the utilities module, not ${typeof source}` + ) + ); + } + intlTelInput.startedLoadingUtilsScript = true; + return loadCall.then((module) => { + const utils2 = module?.default; + if (!utils2 || typeof utils2 !== "object") { + throw new TypeError( + "The loader function passed to attachUtils did not resolve to a module object with utils as its default export." + ); + } + intlTelInput.utils = utils2; + forEachInstance("handleUtils"); + return true; + }).catch((error) => { + forEachInstance("rejectUtilsScriptPromise", error); + throw error; + }); + } + return null; + }; + var forEachInstance = (method, ...args) => { + Object.values(intlTelInput.instances).forEach((instance) => { + const fn = instance[method]; + if (typeof fn === "function") { + fn.apply(instance, args); + } + }); + }; + var intlTelInput = Object.assign( + (input, options) => { + const iti = new Iti(input, options); + intlTelInput.instances[iti.id] = iti; + input.iti = iti; + return iti; + }, + { + defaults, + //* Using a static var like this allows us to mock it in the tests. + documentReady: () => document.readyState === "complete", + //* Get the country data object. + getCountryData: () => data_default, + //* A getter for the plugin instance. + getInstance: (input) => { + const id2 = input.dataset.intlTelInputId; + return id2 ? intlTelInput.instances[id2] : null; + }, + //* A map from instance ID to instance object. + instances: {}, + attachUtils, + startedLoadingUtilsScript: false, + startedLoadingAutoCountry: false, + version: "25.12.4" + } + ); + var intl_tel_input_default = intlTelInput; + + // build/js/utils.js + (function() { + var k = this || self; + function m(a, b) { + a = a.split("."); + var c = k; + a[0] in c || "undefined" == typeof c.execScript || c.execScript("var " + a[0]); + for (var d; a.length && (d = a.shift()); ) a.length || void 0 === b ? c[d] && c[d] !== Object.prototype[d] ? c = c[d] : c = c[d] = {} : c[d] = b; + } + function n(a, b) { + function c() { + } + c.prototype = b.prototype; + a.ma = b.prototype; + a.prototype = new c(); + a.prototype.constructor = a; + a.sa = function(d, e, f) { + for (var g = Array(arguments.length - 2), h = 2; h < arguments.length; h++) g[h - 2] = arguments[h]; + return b.prototype[e].apply(d, g); + }; + } + ; + function aa(a) { + const b = []; + let c = 0; + for (const d in a) b[c++] = a[d]; + return b; + } + ; + var da = class { + constructor(a) { + if (ba !== ba) throw Error("SafeUrl is not meant to be built directly"); + this.g = a; + } + toString() { + return this.g.toString(); + } + }, ba = {}; + new da("about:invalid#zClosurez"); + new da("about:blank"); + const ea = {}; + class fa { + constructor() { + if (ea !== ea) throw Error("SafeStyle is not meant to be built directly"); + } + toString() { + return "".toString(); + } + } + new fa(); + const ha = {}; + class ia { + constructor() { + if (ha !== ha) throw Error("SafeStyleSheet is not meant to be built directly"); + } + toString() { + return "".toString(); + } + } + new ia(); + const ja = {}; + class ka { + constructor() { + var a = k.trustedTypes && k.trustedTypes.emptyHTML || ""; + if (ja !== ja) throw Error("SafeHtml is not meant to be built directly"); + this.g = a; + } + toString() { + return this.g.toString(); + } + } + new ka(); + function la(a, b) { + this.g = a; + this.l = !!b.aa; + this.h = b.i; + this.s = b.type; + this.o = false; + switch (this.h) { + case ma: + case na: + case oa: + case pa: + case qa: + case ra: + case sa: + this.o = true; + } + this.j = b.defaultValue; + } + var sa = 1, ra = 2, ma = 3, na = 4, oa = 6, pa = 16, qa = 18; + function ta(a, b) { + this.h = a; + this.g = {}; + for (a = 0; a < b.length; a++) { + var c = b[a]; + this.g[c.g] = c; + } + } + function ua(a) { + a = aa(a.g); + a.sort(function(b, c) { + return b.g - c.g; + }); + return a; + } + ; + function p() { + this.h = {}; + this.j = this.m().g; + this.g = this.l = null; + } + p.prototype.has = function(a) { + return q(this, a.g); + }; + p.prototype.get = function(a, b) { + return r(this, a.g, b); + }; + p.prototype.set = function(a, b) { + t(this, a.g, b); + }; + p.prototype.add = function(a, b) { + va(this, a.g, b); + }; + function wa(a, b) { + for (var c = ua(a.m()), d = 0; d < c.length; d++) { + var e = c[d], f = e.g; + if (q(b, f)) { + a.g && delete a.g[e.g]; + var g = 11 == e.h || 10 == e.h; + if (e.l) { + e = u(b, f); + for (var h = 0; h < e.length; h++) va(a, f, g ? e[h].clone() : e[h]); + } else e = v(b, f), g ? (g = v(a, f)) ? wa(g, e) : t(a, f, e.clone()) : t(a, f, e); + } + } + } + p.prototype.clone = function() { + var a = new this.constructor(); + a != this && (a.h = {}, a.g && (a.g = {}), wa(a, this)); + return a; + }; + function q(a, b) { + return null != a.h[b]; + } + function v(a, b) { + var c = a.h[b]; + if (null == c) return null; + if (a.l) { + if (!(b in a.g)) { + var d = a.l, e = a.j[b]; + if (null != c) if (e.l) { + for (var f = [], g = 0; g < c.length; g++) f[g] = d.h(e, c[g]); + c = f; + } else c = d.h(e, c); + return a.g[b] = c; + } + return a.g[b]; + } + return c; + } + function r(a, b, c) { + var d = v(a, b); + return a.j[b].l ? d[c || 0] : d; + } + function w(a, b) { + if (q(a, b)) a = r(a, b); + else a: { + a = a.j[b]; + if (void 0 === a.j) if (b = a.s, b === Boolean) a.j = false; + else if (b === Number) a.j = 0; + else if (b === String) a.j = a.o ? "0" : ""; + else { + a = new b(); + break a; + } + a = a.j; + } + return a; + } + function u(a, b) { + return v(a, b) || []; + } + function x(a, b) { + return a.j[b].l ? q(a, b) ? a.h[b].length : 0 : q(a, b) ? 1 : 0; + } + function t(a, b, c) { + a.h[b] = c; + a.g && (a.g[b] = c); + } + function va(a, b, c) { + a.h[b] || (a.h[b] = []); + a.h[b].push(c); + a.g && delete a.g[b]; + } + function y(a, b) { + var c = [], d; + for (d in b) 0 != d && c.push(new la(d, b[d])); + return new ta(a, c); + } + ; + function z() { + } + z.prototype.g = function(a) { + new a.h(); + throw Error("Unimplemented"); + }; + z.prototype.h = function(a, b) { + if (11 == a.h || 10 == a.h) return b instanceof p ? b : this.g(a.s.prototype.m(), b); + if (14 == a.h) return "string" === typeof b && xa.test(b) && (a = Number(b), 0 < a) ? a : b; + if (!a.o) return b; + a = a.s; + if (a === String) { + if ("number" === typeof b) return String(b); + } else if (a === Number && "string" === typeof b && ("Infinity" === b || "-Infinity" === b || "NaN" === b || xa.test(b))) return Number(b); + return b; + }; + var xa = /^-?[0-9]+$/; + function B() { + } + n(B, z); + B.prototype.g = function(a, b) { + a = new a.h(); + a.l = this; + a.h = b; + a.g = {}; + return a; + }; + function C() { + } + n(C, B); + C.prototype.h = function(a, b) { + return 8 == a.h ? !!b : z.prototype.h.apply(this, arguments); + }; + C.prototype.g = function(a, b) { + return C.ma.g.call(this, a, b); + }; + function D(a, b) { + null != a && this.g.apply(this, arguments); + } + D.prototype.h = ""; + D.prototype.set = function(a) { + this.h = "" + a; + }; + D.prototype.g = function(a, b, c) { + this.h += String(a); + if (null != b) for (let d = 1; d < arguments.length; d++) this.h += arguments[d]; + return this; + }; + function E(a) { + a.h = ""; + } + D.prototype.toString = function() { + return this.h; + }; + function F() { + p.call(this); + } + n(F, p); + var ya = null; + function G() { + p.call(this); + } + n(G, p); + var za = null; + function H() { + p.call(this); + } + n(H, p); + var Aa = null; + F.prototype.m = function() { + var a = ya; + a || (ya = a = y(F, { 0: { name: "NumberFormat", ia: "i18n.phonenumbers.NumberFormat" }, 1: { name: "pattern", required: true, i: 9, type: String }, 2: { name: "format", required: true, i: 9, type: String }, 3: { name: "leading_digits_pattern", aa: true, i: 9, type: String }, 4: { name: "national_prefix_formatting_rule", i: 9, type: String }, 6: { name: "national_prefix_optional_when_formatting", i: 8, defaultValue: false, type: Boolean }, 5: { name: "domestic_carrier_code_formatting_rule", i: 9, type: String } })); + return a; + }; + F.m = F.prototype.m; + G.prototype.m = function() { + var a = za; + a || (za = a = y(G, { 0: { name: "PhoneNumberDesc", ia: "i18n.phonenumbers.PhoneNumberDesc" }, 2: { name: "national_number_pattern", i: 9, type: String }, 9: { name: "possible_length", aa: true, i: 5, type: Number }, 10: { name: "possible_length_local_only", aa: true, i: 5, type: Number }, 6: { name: "example_number", i: 9, type: String } })); + return a; + }; + G.m = G.prototype.m; + H.prototype.m = function() { + var a = Aa; + a || (Aa = a = y(H, { + 0: { name: "PhoneMetadata", ia: "i18n.phonenumbers.PhoneMetadata" }, + 1: { name: "general_desc", i: 11, type: G }, + 2: { name: "fixed_line", i: 11, type: G }, + 3: { name: "mobile", i: 11, type: G }, + 4: { name: "toll_free", i: 11, type: G }, + 5: { name: "premium_rate", i: 11, type: G }, + 6: { name: "shared_cost", i: 11, type: G }, + 7: { name: "personal_number", i: 11, type: G }, + 8: { name: "voip", i: 11, type: G }, + 21: { name: "pager", i: 11, type: G }, + 25: { name: "uan", i: 11, type: G }, + 27: { name: "emergency", i: 11, type: G }, + 28: { name: "voicemail", i: 11, type: G }, + 29: { name: "short_code", i: 11, type: G }, + 30: { name: "standard_rate", i: 11, type: G }, + 31: { name: "carrier_specific", i: 11, type: G }, + 33: { name: "sms_services", i: 11, type: G }, + 24: { name: "no_international_dialling", i: 11, type: G }, + 9: { name: "id", required: true, i: 9, type: String }, + 10: { name: "country_code", i: 5, type: Number }, + 11: { name: "international_prefix", i: 9, type: String }, + 17: { name: "preferred_international_prefix", i: 9, type: String }, + 12: { name: "national_prefix", i: 9, type: String }, + 13: { name: "preferred_extn_prefix", i: 9, type: String }, + 15: { + name: "national_prefix_for_parsing", + i: 9, + type: String + }, + 16: { name: "national_prefix_transform_rule", i: 9, type: String }, + 18: { name: "same_mobile_and_fixed_line_pattern", i: 8, defaultValue: false, type: Boolean }, + 19: { name: "number_format", aa: true, i: 11, type: F }, + 20: { name: "intl_number_format", aa: true, i: 11, type: F }, + 22: { name: "main_country_for_code", i: 8, defaultValue: false, type: Boolean }, + 23: { name: "leading_digits", i: 9, type: String } + })); + return a; + }; + H.m = H.prototype.m; + function I() { + p.call(this); + } + n(I, p); + var Ba = null, Ca = { ra: 0, qa: 1, pa: 5, oa: 10, na: 20 }; + I.prototype.m = function() { + var a = Ba; + a || (Ba = a = y(I, { 0: { name: "PhoneNumber", ia: "i18n.phonenumbers.PhoneNumber" }, 1: { name: "country_code", required: true, i: 5, type: Number }, 2: { name: "national_number", required: true, i: 4, type: Number }, 3: { name: "extension", i: 9, type: String }, 4: { name: "italian_leading_zero", i: 8, type: Boolean }, 8: { name: "number_of_leading_zeros", i: 5, defaultValue: 1, type: Number }, 5: { name: "raw_input", i: 9, type: String }, 6: { name: "country_code_source", i: 14, defaultValue: 0, type: Ca }, 7: { + name: "preferred_domestic_carrier_code", + i: 9, + type: String + } })); + return a; + }; + I.ctor = I; + I.ctor.m = I.prototype.m; + var J = { + 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".split(" "), + 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"], + 800: ["001"], + 808: ["001"], + 850: ["KP"], + 852: ["HK"], + 853: ["MO"], + 855: ["KH"], + 856: ["LA"], + 870: ["001"], + 878: ["001"], + 880: ["BD"], + 881: ["001"], + 882: ["001"], + 883: ["001"], + 886: ["TW"], + 888: ["001"], + 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"], + 979: ["001"], + 992: ["TJ"], + 993: ["TM"], + 994: ["AZ"], + 995: ["GE"], + 996: ["KG"], + 998: ["UZ"] + }, Da = { + AC: [, [ + , + , + "(?:[01589]\\d|[46])\\d{4}", + , + , + , + , + , + , + [5, 6] + ], [, , "6[2-467]\\d{3}", , , , "62889", , , [5]], [, , "4\\d{4}", , , , "40123", , , [5]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "AC", 247, "00", , , , , , , , , , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , "(?:0[1-9]|[1589]\\d)\\d{4}", , , , "542011", , , [6]], , , [, , , , , , , , , [-1]]], + AD: [ + , + [, , "(?:1|6\\d)\\d{7}|[135-9]\\d{5}", , , , , , , [6, 8, 9]], + [, , "[78]\\d{5}", , , , "712345", , , [6]], + [, , "690\\d{6}|[356]\\d{5}", , , , "312345", , , [6, 9]], + [, , "180[02]\\d{4}", , , , "18001234", , , [8]], + [, , "[19]\\d{5}", , , , "912345", , , [6]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + "AD", + 376, + "00", + , + , + , + , + , + , + , + [[, "(\\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"]]], + , + [, , , , , , , , , [-1]], + , + , + [, , "1800\\d{4}", , , , , , , [8]], + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]] + ], + AE: [ + , + [, , "(?:[4-7]\\d|9[0-689])\\d{7}|800\\d{2,9}|[2-4679]\\d{7}", , , , , , , [5, 6, 7, 8, 9, 10, 11, 12]], + [, , "[2-4679][2-8]\\d{6}", , , , "22345678", , , [8], [7]], + [, , "5[024-68]\\d{7}", , , , "501234567", , , [9]], + [, , "400\\d{6}|800\\d{2,9}", , , , "800123456"], + [, , "900[02]\\d{5}", , , , "900234567", , , [9]], + [, , "700[05]\\d{5}", , , , "700012345", , , [9]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + "AE", + 971, + "00", + "0", + , + , + "0", + , + , + , + [[, "(\\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"]], + , + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]], + [, , "600[25]\\d{5}", , , , "600212345", , , [9]], + , + , + [, , , , , , , , , [-1]] + ], + AF: [, [, , "[2-7]\\d{8}", , , , , , , [9], [7]], [ + , + , + "(?:[25][0-8]|[34][0-4]|6[0-5])[2-9]\\d{6}", + , + , + , + "234567890", + , + , + , + [7] + ], [, , "7\\d{8}", , , , "701234567", , , , [7]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "AF", 93, "00", "0", , , "0", , , , [[, "(\\d{3})(\\d{4})", "$1 $2", ["[1-9]"]], [, "(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["[2-7]"], "0$1"]], [[, "(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["[2-7]"], "0$1"]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + AG: [ + , + [, , "(?:268|[58]\\d\\d|900)\\d{7}", , , , , , , [10], [7]], + [ + , + , + "268(?:4(?:6[0-38]|84)|56[0-2])\\d{4}", + , + , + , + "2684601234", + , + , + , + [7] + ], + [, , "268(?:464|7(?:1[3-9]|[28]\\d|3[0246]|64|7[0-689]))\\d{4}", , , , "2684641234", , , , [7]], + [, , "8(?:00|33|44|55|66|77|88)[2-9]\\d{6}", , , , "8002123456"], + [, , "900[2-9]\\d{6}", , , , "9002123456"], + [, , , , , , , , , [-1]], + [, , "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}", , , , "5002345678"], + [, , "26848[01]\\d{4}", , , , "2684801234", , , , [7]], + "AG", + 1, + "011", + "1", + , + , + "([457]\\d{6})$|1", + "268$1", + , + , + , + , + [, , "26840[69]\\d{4}", , , , "2684061234", , , , [7]], + , + "268", + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]] + ], + AI: [, [, , "(?:264|[58]\\d\\d|900)\\d{7}", , , , , , , [10], [7]], [, , "264(?:292|4(?:6[12]|9[78]))\\d{4}", , , , "2644612345", , , , [7]], [, , "264(?:235|4(?:69|76)|5(?:3[6-9]|8[1-4])|7(?:29|72))\\d{4}", , , , "2642351234", , , , [7]], [, , "8(?:00|33|44|55|66|77|88)[2-9]\\d{6}", , , , "8002123456"], [, , "900[2-9]\\d{6}", , , , "9002123456"], [, , , , , , , , , [-1]], [ + , + , + "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}", + , + , + , + "5002345678" + ], [, , , , , , , , , [-1]], "AI", 1, "011", "1", , , "([2457]\\d{6})$|1", "264$1", , , , , [, , "264724\\d{4}", , , , "2647241234", , , , [7]], , "264", [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + AL: [, [, , "(?:700\\d\\d|900)\\d{3}|8\\d{5,7}|(?:[2-5]|6\\d)\\d{7}", , , , , , , [6, 7, 8, 9], [5]], [, , "4505[0-2]\\d{3}|(?:[2358][16-9]\\d[2-9]|4410)\\d{4}|(?:[2358][2-5][2-9]|4(?:[2-57-9][2-9]|6\\d))\\d{5}", , , , "22345678", , , [8], [5, 6, 7]], [, , "6(?:[78][2-9]|9\\d)\\d{6}", , , , "672123456", , , [9]], [, , "800\\d{4}", , , , "8001234", , , [7]], [ + , + , + "900[1-9]\\d\\d", + , + , + , + "900123", + , + , + [6] + ], [, , "808[1-9]\\d\\d", , , , "808123", , , [6]], [, , "700[2-9]\\d{4}", , , , "70021234", , , [8]], [, , , , , , , , , [-1]], "AL", 355, "00", "0", , , "0", , , , [[, "(\\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"]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + AM: [, [ + , + , + "(?:[1-489]\\d|55|60|77)\\d{6}", + , + , + , + , + , + , + [8], + [5, 6] + ], [, , "(?:(?:1[0-25]|47)\\d|2(?:2[2-46]|3[1-8]|4[2-69]|5[2-7]|6[1-9]|8[1-7])|3[12]2)\\d{5}", , , , "10123456", , , , [5, 6]], [, , "(?:33|4[1349]|55|77|88|9[13-9])\\d{6}", , , , "77123456"], [, , "800\\d{5}", , , , "80012345"], [, , "90[016]\\d{5}", , , , "90012345"], [, , "80[1-4]\\d{5}", , , , "80112345"], [, , , , , , , , , [-1]], [, , "60(?:2[78]|3[5-9]|4[02-9]|5[0-46-9]|[6-8]\\d|9[0-2])\\d{4}", , , , "60271234"], "AM", 374, "00", "0", , , "0", , , , [[, "(\\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"]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + AO: [ + , + [, , "[29]\\d{8}", , , , , , , [9]], + [, , "2\\d(?:[0134][25-9]|[25-9]\\d)\\d{5}", , , , "222123456"], + [, , "9[1-79]\\d{7}", , , , "923123456"], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + "AO", + 244, + "00", + , + , + , + , + , + , + , + [[, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[29]"]]], + , + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]] + ], + AR: [ + , + [, , "(?:11|[89]\\d\\d)\\d{8}|[2368]\\d{9}", , , , , , , [10, 11], [6, 7, 8]], + [ + , + , + "3(?:7(?:1[15]|81)|8(?:21|4[16]|69|9[12]))[46]\\d{5}|(?:2(?:2(?:2[59]|44|52)|3(?:26|44)|47[35]|9(?:[07]2|2[26]|34|46))|3327)[45]\\d{5}|(?:2(?:657|9(?:54|66))|3(?:48[27]|7(?:55|77)|8(?:65|78)))[2-8]\\d{5}|(?:2(?:284|3(?:02|23)|477|622|920)|3(?:4(?:46|89|92)|541))[2-7]\\d{5}|(?:(?:11[1-8]|670)\\d|2(?:2(?:0[45]|1[2-6]|3[3-6])|3(?:[06]4|7[45])|494|6(?:04|1[2-8]|[36][45]|4[3-6])|80[45]|9(?:[17][4-6]|[48][45]|9[3-6]))|3(?:364|4(?:1[2-8]|[25][4-6]|3[3-6]|84)|5(?:1[2-9]|[38][4-6])|6(?:2[45]|44)|7[069][45]|8(?:0[45]|1[2-7]|3[4-6]|5[3-6]|7[2-6]|8[3-68])))\\d{6}|(?:2(?:2(?:62|81)|320|9(?:42|83))|3(?:329|4(?:62|7[16])|5(?:43|64)|7(?:18|5[17])))[2-6]\\d{5}|2(?:2(?:21|4[23]|6[145]|7[1-4]|8[356]|9[267])|3(?:16|3[13-8]|43|5[346-8]|9[3-5])|6(?:2[46]|4[78]|5[1568])|9(?:03|2[1457-9]|3[1356]|4[08]|[56][23]|82))4\\d{5}|(?:2(?:257|3(?:24|46|92)|9(?:01|23|64))|3(?:4(?:42|64)|5(?:25|37|4[47]|71)|7(?:35|72)|825))[3-6]\\d{5}|(?:2(?:2(?:02|2[3467]|4[156]|5[45]|6[6-8]|91)|3(?:1[47]|25|[45][25]|96)|47[48]|625|932)|3(?:38[2578]|4(?:0[0-24-9]|3[78]|4[457]|58|6[035-9]|72|83|9[136-8])|5(?:2[124]|[368][23]|4[2689]|7[2-6])|7(?:16|2[15]|3[14]|4[13]|5[468]|7[3-5]|8[26])|8(?:2[67]|3[278]|4[3-5]|5[78]|6[1-378]|[78]7|94)))[4-6]\\d{5}", + , + , + , + "1123456789", + , + , + [10], + [6, 7, 8] + ], + [ + , + , + "93(?:7(?:1[15]|81)|8(?:21|4[16]|69|9[12]))[46]\\d{5}|9(?:2(?:2(?:2[59]|44|52)|3(?:26|44)|47[35]|9(?:[07]2|2[26]|34|46))|3327)[45]\\d{5}|9(?:2(?:657|9(?:54|66))|3(?:48[27]|7(?:55|77)|8(?:65|78)))[2-8]\\d{5}|9(?:2(?:284|3(?:02|23)|477|622|920)|3(?:4(?:46|89|92)|541))[2-7]\\d{5}|(?:675\\d|9(?:11[1-8]\\d|2(?:2(?:0[45]|1[2-6]|3[3-6])|3(?:[06]4|7[45])|494|6(?:04|1[2-8]|[36][45]|4[3-6])|80[45]|9(?:[17][4-6]|[48][45]|9[3-6]))|3(?:364|4(?:1[2-8]|[25][4-6]|3[3-6]|84)|5(?:1[2-9]|[38][4-6])|6(?:2[45]|44)|7[069][45]|8(?:0[45]|1[2-7]|3[4-6]|5[3-6]|7[2-6]|8[3-68]))))\\d{6}|9(?:2(?:2(?:62|81)|320|9(?:42|83))|3(?:329|4(?:62|7[16])|5(?:43|64)|7(?:18|5[17])))[2-6]\\d{5}|92(?:2(?:21|4[23]|6[145]|7[1-4]|8[356]|9[267])|3(?:16|3[13-8]|43|5[346-8]|9[3-5])|6(?:2[46]|4[78]|5[1568])|9(?:03|2[1457-9]|3[1356]|4[08]|[56][23]|82))4\\d{5}|9(?:2(?:257|3(?:24|46|92)|9(?:01|23|64))|3(?:4(?:42|64)|5(?:25|37|4[47]|71)|7(?:35|72)|825))[3-6]\\d{5}|9(?:2(?:2(?:02|2[3467]|4[156]|5[45]|6[6-8]|91)|3(?:1[47]|25|[45][25]|96)|47[48]|625|932)|3(?:38[2578]|4(?:0[0-24-9]|3[78]|4[457]|58|6[035-9]|72|83|9[136-8])|5(?:2[124]|[368][23]|4[2689]|7[2-6])|7(?:16|2[15]|3[14]|4[13]|5[468]|7[3-5]|8[26])|8(?:2[67]|3[278]|4[3-5]|5[78]|6[1-378]|[78]7|94)))[4-6]\\d{5}", + , + , + , + "91123456789", + , + , + , + [6, 7, 8] + ], + [, , "800\\d{7,8}", , , , "8001234567"], + [, , "60[04579]\\d{7}", , , , "6001234567", , , [10]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + "AR", + 54, + "00", + "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", + , + , + [[, "(\\d{3})", "$1", ["0|1(?:0[0-35-7]|1[02-5]|2[015]|3[47]|4[478])|911"]], [, "(\\d{2})(\\d{4})", "$1-$2", ["[1-9]"]], [, "(\\d{3})(\\d{4})", "$1-$2", ["[2-9]"]], [, "(\\d{4})(\\d{4})", "$1-$2", ["[1-8]"]], [ + , + "(\\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" + ], [, "(\\d)(\\d{2})(\\d{4})(\\d{4})", "$2 15-$3-$4", ["91"], "0$1"], [, "(\\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"]], + [ + [ + , + "(\\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})", "$1 $2 $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]" + ]], + [, "(\\d)(\\d{2})(\\d{4})(\\d{4})", "$1 $2 $3-$4", ["91"]], + [, "(\\d{3})(\\d{3})(\\d{5})", "$1-$2-$3", ["8"], "0$1"], + [, "(\\d)(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3-$4", ["9"]] + ], + [, , , , , , , , , [-1]], + , + , + [, , "810\\d{7}", , , , , , , [10]], + [, , "810\\d{7}", , , , "8101234567", , , [10]], + , + , + [, , , , , , , , , [-1]] + ], + AS: [, [, , "(?:[58]\\d\\d|684|900)\\d{7}", , , , , , , [10], [7]], [, , "6846(?:22|33|44|55|77|88|9[19])\\d{4}", , , , "6846221234", , , , [7]], [, , "684(?:2(?:48|5[2468]|7[26])|7(?:3[13]|70|82))\\d{4}", , , , "6847331234", , , , [7]], [ + , + , + "8(?:00|33|44|55|66|77|88)[2-9]\\d{6}", + , + , + , + "8002123456" + ], [, , "900[2-9]\\d{6}", , , , "9002123456"], [, , , , , , , , , [-1]], [, , "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}", , , , "5002345678"], [, , , , , , , , , [-1]], "AS", 1, "011", "1", , , "([267]\\d{6})$|1", "684$1", , , , , [, , , , , , , , , [-1]], , "684", [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + AT: [, [ + , + , + "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], + [3] + ], [, , "1(?:11\\d|[2-9]\\d{3,11})|(?:316|463)\\d{3,10}|648[34]\\d{3,9}|(?:51|66|73)2\\d{3,10}|(?:2(?:1[467]|2[13-8]|5[2357]|6[1-46-8]|7[1-8]|8[124-7]|9[1458])|3(?:1[1-578]|3[23568]|4[5-7]|5[1378]|6[1-38]|8[3-68])|4(?:2[1-8]|35|7[1368]|8[2457])|5(?:2[1-8]|3[357]|4[147]|5[12578]|6[37])|6(?:13|2[1-47]|4[135-7]|5[468])|7(?:2[1-8]|35|4[13478]|5[68]|6[16-8]|7[1-6]|9[45]))\\d{4,10}", , , , "1234567890", , , , [3]], [ + , + , + "6(?:485|(?:5[0-3579]|6[013-9]|[7-9]\\d)\\d)\\d{3,9}", + , + , + , + "664123456", + , + , + [7, 8, 9, 10, 11, 12, 13] + ], [, , "800\\d{6,10}", , , , "800123456", , , [9, 10, 11, 12, 13]], [, , "(?:8[69][2-68]|9(?:0[01]|3[019]))\\d{6,10}", , , , "900123456", , , [9, 10, 11, 12, 13]], [, , "8(?:10|2[018])\\d{6,10}|828\\d{5}", , , , "810123456", , , [8, 9, 10, 11, 12, 13]], [, , , , , , , , , [-1]], [, , "5(?:0[1-9]|17|[79]\\d)\\d{2,10}|7[28]0\\d{6,10}", , , , "780123456", , , [5, 6, 7, 8, 9, 10, 11, 12, 13]], "AT", 43, "00", "0", , , "0", , , , [[, "(\\d{4})", "$1", ["14"]], [, "(\\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{6})", "$1", ["[18]"]], [, "(\\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"]], [[, "(\\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"]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + AU: [ + , + [ + , + , + "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] + ], + [ + , + , + "(?:(?:2(?:(?:[0-26-9]\\d|3[0-8]|5[0135-9])\\d|4(?:[02-9]\\d|10))|3(?:(?:[0-3589]\\d|6[1-9]|7[0-35-9])\\d|4(?:[0-578]\\d|90))|7(?:[013-57-9]\\d|2[0-8])\\d)\\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)|(?:6[0-8]|[78]\\d)\\d{3}|9(?:[02-9]\\d{3}|1(?:(?:[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}", + , + , + , + "212345678", + , + , + [9], + [8] + ], + [, , "4(?:79[01]|83[0-36-9])\\d{5}|4(?:[0-36]\\d|4[047-9]|[58][0-24-9]|7[02-8]|9[0-47-9])\\d{6}", , , , "412345678", , , [9]], + [, , "180(?:0\\d{3}|2)\\d{3}", , , , "1800123456", , , [7, 10]], + [, , "190[0-26]\\d{6}", , , , "1900123456", , , [10]], + [, , "13(?:00\\d{6}(?:\\d{2})?|45[0-4]\\d{3})|13\\d{4}", , , , "1300123456", , , [6, 8, 10, 12]], + [, , , , , , , , , [-1]], + [, , "14(?:5(?:1[0458]|[23][458])|71\\d)\\d{4}", , , , "147101234", , , [9]], + "AU", + 61, + "001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011", + "0", + , + , + "(183[12])|0", + , + "0011", + , + [[, "(\\d{2})(\\d{3,4})", "$1 $2", ["16"], "0$1"], [, "(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3", ["13"]], [, "(\\d{3})(\\d{3})", "$1 $2", ["19"]], [, "(\\d{3})(\\d{4})", "$1 $2", ["180", "1802"]], [, "(\\d{4})(\\d{3,4})", "$1 $2", ["19"]], [, "(\\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)", "$CC ($1)"], [, "(\\d{4})(\\d{3})(\\d{3})", "$1 $2 $3", ["1(?:30|[89])"]], [, "(\\d{4})(\\d{4})(\\d{4})", "$1 $2 $3", ["130"]]], + [[, "(\\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)", "$CC ($1)"], [, "(\\d{4})(\\d{3})(\\d{3})", "$1 $2 $3", ["1(?:30|[89])"]]], + [, , "163\\d{2,6}", , , , "1631234", , , [5, 6, 7, 8, 9]], + 1, + , + [, , "1(?:3(?:00\\d{5}|45[0-4])|802)\\d{3}|1[38]00\\d{6}|13\\d{4}", , , , , , , [6, 7, 8, 10, 12]], + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]] + ], + AW: [ + , + [, , "(?:[25-79]\\d\\d|800)\\d{4}", , , , , , , [7]], + [, , "5(?:2\\d|8[1-9])\\d{4}", , , , "5212345"], + [, , "(?:290|5[69]\\d|6(?:[03]0|22|4[0-2]|[69]\\d)|7(?:[34]\\d|7[07])|9(?:6[45]|9[4-8]))\\d{4}", , , , "5601234"], + [, , "800\\d{4}", , , , "8001234"], + [, , "900\\d{4}", , , , "9001234"], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , "(?:28\\d|501)\\d{4}", , , , "5011234"], + "AW", + 297, + "00", + , + , + , + , + , + , + , + [[, "(\\d{3})(\\d{4})", "$1 $2", ["[25-9]"]]], + , + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]] + ], + AX: [, [ + , + , + "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] + ], [, , "18[1-8]\\d{3,6}", , , , "181234567", , , [6, 7, 8, 9]], [, , "4946\\d{2,6}|(?:4[0-8]|50)\\d{4,8}", , , , "412345678", , , [6, 7, 8, 9, 10]], [, , "800\\d{4,6}", , , , "800123456", , , [7, 8, 9]], [, , "[67]00\\d{5,6}", , , , "600123456", , , [8, 9]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "AX", 358, "00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))", "0", , , "0", , "00", , , , [, , , , , , , , , [-1]], , "18", [, , , , , , , , , [-1]], [ + , + , + "20\\d{4,8}|60[12]\\d{5,6}|7(?:099\\d{4,5}|5[03-9]\\d{3,7})|20[2-59]\\d\\d|(?:606|7(?:0[78]|1|3\\d))\\d{7}|(?:10|29|3[09]|70[1-5]\\d)\\d{4,8}", + , + , + , + "10112345" + ], , , [, , , , , , , , , [-1]]], + AZ: [, [, , "365\\d{6}|(?:[124579]\\d|60|88)\\d{7}", , , , , , , [9], [7]], [, , "(?:2[12]428|3655[02])\\d{4}|(?:2(?:22[0-79]|63[0-28])|3654)\\d{5}|(?:(?:1[28]|46)\\d|2(?:[014-6]2|[23]3))\\d{6}", , , , "123123456", , , , [7]], [, , "36554\\d{4}|(?:[16]0|4[04]|5[015]|7[07]|99)\\d{7}", , , , "401234567"], [, , "88\\d{7}", , , , "881234567"], [, , "900200\\d{3}", , , , "900200123"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "AZ", 994, "00", "0", , , "0", , , , [[, "(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3", ["[1-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"]], [[, "(\\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" + ]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + BA: [ + , + [, , "6\\d{8}|(?:[35689]\\d|49|70)\\d{6}", , , , , , , [8, 9], [6]], + [, , "(?:3(?:[05-79][2-9]|1[4579]|[23][24-9]|4[2-4689]|8[2457-9])|49[2-579]|5(?:0[2-49]|[13][2-9]|[268][2-4679]|4[4689]|5[2-79]|7[2-69]|9[2-4689]))\\d{5}", , , , "30212345", , , [8], [6]], + [, , "6040\\d{5}|6(?:03|[1-356]|44|7\\d)\\d{6}", , , , "61123456"], + [, , "8[08]\\d{6}", , , , "80123456", , , [8]], + [, , "9[0246]\\d{6}", , , , "90123456", , , [8]], + [, , "8[12]\\d{6}", , , , "82123456", , , [8]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + "BA", + 387, + "00", + "0", + , + , + "0", + , + , + , + [[, "(\\d{3})(\\d{3})", "$1-$2", ["[2-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"]], + [[, "(\\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"]], + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]], + [, , "703[235]0\\d{3}|70(?:2[0-5]|3[0146]|[56]0)\\d{4}", , , , "70341234", , , [8]], + , + , + [, , , , , , , , , [-1]] + ], + BB: [, [, , "(?:246|[58]\\d\\d|900)\\d{7}", , , , , , , [10], [7]], [, , "246521[0369]\\d{3}|246(?:2(?:2[78]|7[0-4])|4(?:1[024-6]|2\\d|3[2-9])|5(?:20|[34]\\d|54|7[1-3])|6(?:2\\d|38)|7[35]7|9(?:1[89]|63))\\d{4}", , , , "2464123456", , , , [7]], [, , "246(?:(?:2(?:[3568]\\d|4[0-57-9])|3(?:5[2-9]|6[0-6])|4(?:46|5\\d)|69[5-7]|8(?:[2-5]\\d|83))\\d|52(?:1[147]|20))\\d{3}", , , , "2462501234", , , , [7]], [ + , + , + "8(?:00|33|44|55|66|77|88)[2-9]\\d{6}", + , + , + , + "8002123456" + ], [, , "(?:246976|900[2-9]\\d\\d)\\d{4}", , , , "9002123456", , , , [7]], [, , , , , , , , , [-1]], [, , "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}", , , , "5002345678"], [, , "24631\\d{5}", , , , "2463101234", , , , [7]], "BB", 1, "011", "1", , , "([2-9]\\d{6})$|1", "246$1", , , , , [, , , , , , , , , [-1]], , "246", [, , , , , , , , , [-1]], [ + , + , + "246(?:292|367|4(?:1[7-9]|3[01]|4[47-9]|67)|7(?:1[2-9]|2\\d|3[016]|53))\\d{4}", + , + , + , + "2464301234", + , + , + , + [7] + ], , , [, , , , , , , , , [-1]]], + BD: [, [, , "[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]], [ + , + , + "(?:4(?:31\\d\\d|423)|5222)\\d{3}(?:\\d{2})?|8332[6-9]\\d\\d|(?:3(?:03[56]|224)|4(?:22[25]|653))\\d{3,4}|(?:3(?:42[47]|529|823)|4(?:027|525|65(?:28|8))|562|6257|7(?:1(?:5[3-5]|6[12]|7[156]|89)|22[589]56|32|42675|52(?:[25689](?:56|8)|[347]8)|71(?:6[1267]|75|89)|92374)|82(?:2[59]|32)56|9(?:03[23]56|23(?:256|373)|31|5(?:1|2[4589]56)))\\d{3}|(?:3(?:02[348]|22[35]|324|422)|4(?:22[67]|32[236-9]|6(?:2[46]|5[57])|953)|5526|6(?:024|6655)|81)\\d{4,5}|(?:2(?:7(?:1[0-267]|2[0-289]|3[0-29]|4[01]|5[1-3]|6[013]|7[0178]|91)|8(?:0[125]|1[1-6]|2[0157-9]|3[1-69]|41|6[1-35]|7[1-5]|8[1-8]|9[0-6])|9(?:0[0-2]|1[0-4]|2[568]|3[3-6]|5[5-7]|6[0136-9]|7[0-7]|8[014-9]))|3(?:0(?:2[025-79]|3[2-4])|181|22[12]|32[2356]|824)|4(?:02[09]|22[348]|32[045]|523|6(?:27|54))|666(?:22|53)|7(?:22[57-9]|42[56]|82[35])8|8(?:0[124-9]|2(?:181|2[02-4679]8)|4[12]|[5-7]2)|9(?:[04]2|2(?:2|328)|81))\\d{4}|(?:2(?:[23]\\d|[45])\\d\\d|3(?:1(?:2[5-7]|[5-7])|425|822)|4(?:033|1\\d|[257]1|332|4(?:2[246]|5[25])|6(?:2[35]|56|62)|8(?:23|54)|92[2-5])|5(?:02[03489]|22[457]|32[35-79]|42[46]|6(?:[18]|53)|724|826)|6(?:023|2(?:2[2-5]|5[3-5]|8)|32[3478]|42[34]|52[47]|6(?:[18]|6(?:2[34]|5[24]))|[78]2[2-5]|92[2-6])|7(?:02|21\\d|[3-589]1|6[12]|72[24])|8(?:217|3[12]|[5-7]1)|9[24]1)\\d{5}|(?:(?:3[2-8]|5[2-57-9]|6[03-589])1|4[4689][18])\\d{5}|[59]1\\d{5}", + , + , + , + "27111234" + ], [, , "(?:1[13-9]\\d|644)\\d{7}|(?:3[78]|44|66)[02-9]\\d{7}", , , , "1812345678", , , [10]], [, , "80[03]\\d{7}", , , , "8001234567", , , [10]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , "96(?:0[469]|1[0-47]|3[389]|43|6[69]|7[78])\\d{6}", , , , "9604123456", , , [10]], "BD", 880, "00", "0", , , "0", , , , [[, "(\\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"]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + BE: [, [, , "4\\d{8}|[1-9]\\d{7}", , , , , , , [8, 9]], [, , "80[2-8]\\d{5}|(?:1[0-69]|[23][2-8]|4[23]|5\\d|6[013-57-9]|71|8[1-79]|9[2-4])\\d{6}", , , , "12345678", , , [8]], [, , "4[5-9]\\d{7}", , , , "470123456", , , [9]], [, , "800[1-9]\\d{4}", , , , "80012345", , , [8]], [, , "(?:70(?:2[0-57]|3[04-7]|44|6[04-69]|7[0579])|90\\d\\d)\\d{4}", , , , "90012345", , , [8]], [ + , + , + "7879\\d{4}", + , + , + , + "78791234", + , + , + [8] + ], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "BE", 32, "00", "0", , , "0", , , , [[, "(\\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"]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , "78(?:0[578]|1[014-8]|2[25]|3[15-8]|48|5[05]|60|7[06-8]|9\\d)\\d{4}", , , , "78102345", , , [8]], , , [, , , , , , , , , [-1]]], + BF: [, [ + , + , + "(?:[025-7]\\d|44)\\d{6}", + , + , + , + , + , + , + [8] + ], [, , "2(?:0(?:49|5[23]|6[5-7]|9[016-9])|4(?:4[569]|5[4-6]|6[5-7]|7[0179])|5(?:[34]\\d|50|6[5-7]))\\d{4}", , , , "20491234"], [, , "(?:0[1-7]|44|5[0-8]|[67]\\d)\\d{6}", , , , "70123456"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "BF", 226, "00", , , , , , , , [[, "(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[024-7]"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + BG: [, [ + , + , + "00800\\d{7}|[2-7]\\d{6,7}|[89]\\d{6,8}|2\\d{5}", + , + , + , + , + , + , + [6, 7, 8, 9, 12], + [4, 5] + ], [, , "2\\d{5,7}|(?:43[1-6]|70[1-9])\\d{4,5}|(?:[36]\\d|4[124-7]|[57][1-9]|8[1-6]|9[1-7])\\d{5,6}", , , , "2123456", , , [6, 7, 8], [4, 5]], [, , "(?:43[07-9]|99[69]\\d)\\d{5}|(?:8[7-9]|98)\\d{7}", , , , "43012345", , , [8, 9]], [, , "(?:00800\\d\\d|800)\\d{5}", , , , "80012345", , , [8, 12]], [, , "90\\d{6}", , , , "90123456", , , [8]], [, , "700\\d{5}", , , , "70012345", , , [8]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "BG", 359, "00", "0", , , "0", , , , [[, "(\\d{6})", "$1", ["1"]], [, "(\\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"]], [[, "(\\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"]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + BH: [ + , + [ + , + , + "[136-9]\\d{7}", + , + , + , + , + , + , + [8] + ], + [, , "(?:1(?:3[1356]|6[0156]|7\\d)\\d|6(?:1[16]\\d|500|6(?:0\\d|3[12]|44|55|7[7-9]|88)|9[69][69])|7(?:[07]\\d\\d|1(?:11|78)))\\d{4}", , , , "17001234"], + [, , "(?:3(?:[0-79]\\d|8[0-57-9])\\d|6(?:3(?:00|33|6[16])|441|6(?:3[03-9]|[69]\\d|7[0-689])))\\d{4}", , , , "36001234"], + [, , "8[02369]\\d{6}", , , , "80123456"], + [, , "(?:87|9[0-8])\\d{6}", , , , "90123456"], + [, , "84\\d{6}", , , , "84123456"], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + "BH", + 973, + "00", + , + , + , + , + , + , + , + [[, "(\\d{4})(\\d{4})", "$1 $2", ["[13679]|8[02-4679]"]]], + , + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]] + ], + BI: [, [, , "(?:[267]\\d|31)\\d{6}", , , , , , , [8]], [, , "(?:22|31)\\d{6}", , , , "22201234"], [, , "(?:29|6[124-9]|7[125-9])\\d{6}", , , , "79561234"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "BI", 257, "00", , , , , , , , [[, "(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[2367]"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + BJ: [, [, , "(?:01\\d|[24-689])\\d{7}", , , , , , , [8, 10]], [ + , + , + "2090\\d{4}|(?:012\\d\\d|2(?:02|1[037]|2[45]|3[68]|4\\d))\\d{5}", + , + , + , + "0120211234" + ], [, , "(?:01(?:2[5-9]|[4-69]\\d)|4[0-8]|[56]\\d|9[013-9])\\d{6}", , , , "0195123456"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , "857[58]\\d{4}", , , , "85751234", , , [8]], "BJ", 229, "00", , , , , , , , [[, "(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[24-689]"]], [, "(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4 $5", ["0"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , "81\\d{6}", , , , "81123456", , , [8]], , , [, , , , , , , , , [-1]]], + BL: [, [ + , + , + "(?:590\\d|7090)\\d{5}|(?:69|80|9\\d)\\d{7}", + , + , + , + , + , + , + [9] + ], [, , "590(?:2[7-9]|3[3-7]|5[12]|87)\\d{4}", , , , "590271234"], [, , "(?: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}", , , , "690001234"], [, , "80[0-5]\\d{6}", , , , "800012345"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , "9(?:(?:39[5-7]|76[018])\\d|475[0-6])\\d{4}", , , , "976012345"], "BL", 590, "00", "0", , , "0", , , , , , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + BM: [ + , + [, , "(?:441|[58]\\d\\d|900)\\d{7}", , , , , , , [10], [7]], + [ + , + , + "441(?:[46]\\d\\d|5(?:4\\d|60|89))\\d{4}", + , + , + , + "4414123456", + , + , + , + [7] + ], + [, , "441(?:[2378]\\d|5[0-39]|9[02])\\d{5}", , , , "4413701234", , , , [7]], + [, , "8(?:00|33|44|55|66|77|88)[2-9]\\d{6}", , , , "8002123456"], + [, , "900[2-9]\\d{6}", , , , "9002123456"], + [, , , , , , , , , [-1]], + [, , "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}", , , , "5002345678"], + [, , , , , , , , , [-1]], + "BM", + 1, + "011", + "1", + , + , + "([2-9]\\d{6})$|1", + "441$1", + , + , + , + , + [, , , , , , , , , [-1]], + , + "441", + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]] + ], + BN: [, [, , "[2-578]\\d{6}", , , , , , , [7]], [, , "22[0-7]\\d{4}|(?:2[013-9]|[34]\\d|5[0-25-9])\\d{5}", , , , "2345678"], [, , "(?:22[89]|[78]\\d\\d)\\d{4}", , , , "7123456"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , "5[34]\\d{5}", , , , "5345678"], "BN", 673, "00", , , , , , , , [[, "(\\d{3})(\\d{4})", "$1 $2", ["[2-578]"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + BO: [, [ + , + , + "8001\\d{5}|(?:[2-467]\\d|50)\\d{6}", + , + , + , + , + , + , + [8, 9], + [7] + ], [, , "(?:2(?:2\\d\\d|5(?:11|[258]\\d|9[67])|6(?:12|2\\d|9[34])|8(?:2[34]|39|62))|3(?:3\\d\\d|4(?:6\\d|8[24])|8(?:25|42|5[257]|86|9[25])|9(?:[27]\\d|3[2-4]|4[248]|5[24]|6[2-6]))|4(?:4\\d\\d|6(?:11|[24689]\\d|72)))\\d{4}", , , , "22123456", , , [8], [7]], [, , "[67]\\d{7}", , , , "71234567", , , [8]], [, , "8001[07]\\d{4}", , , , "800171234", , , [9]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , "50\\d{6}", , , , "50123456", , , [8], [7]], "BO", 591, "00(?:1\\d)?", "0", , , "0(1\\d)?", , , , [[ + , + "(\\d)(\\d{7})", + "$1 $2", + ["[235]|4[46]"], + , + "0$CC $1" + ], [, "(\\d{8})", "$1", ["[67]"], , "0$CC $1"], [, "(\\d{3})(\\d{2})(\\d{4})", "$1 $2 $3", ["8"], , "0$CC $1"]], , [, , , , , , , , , [-1]], , , [, , "8001[07]\\d{4}", , , , , , , [9]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + BQ: [ + , + [, , "(?:[34]1|7\\d)\\d{5}", , , , , , , [7]], + [, , "(?:318[023]|41(?:6[023]|70)|7(?:1[578]|2[05]|50)\\d)\\d{3}", , , , "7151234"], + [, , "(?:31(?:8[14-8]|9[14578])|416[14-9]|7(?:0[01]|7[07]|8\\d|9[056])\\d)\\d{3}", , , , "3181234"], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + "BQ", + 599, + "00", + , + , + , + , + , + , + , + , + , + [, , , , , , , , , [-1]], + , + "[347]", + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]] + ], + BR: [, [, , "[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]], [, , "(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-5]\\d{7}", , , , "1123456789", , , [10], [8]], [, , "(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])(?:7|9\\d)\\d{7}", , , , "11961234567", , , [10, 11], [8, 9]], [, , "800\\d{6,7}", , , , "800123456", , , [9, 10]], [, , "[59]00\\d{6,7}", , , , "500123456", , , [9, 10]], [ + , + , + "(?:30[03]\\d{3}|4(?:0(?:0\\d|20)|370|864))\\d{4}|300\\d{5}", + , + , + , + "40041234", + , + , + [8, 10] + ], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "BR", 55, "00(?:1[245]|2[1-35]|31|4[13]|[56]5|99)", "0", , , "(?:0|90)(?:(1[245]|2[1-35]|31|4[13]|[56]5|99)(\\d{10,11}))?", "$2", , , [[, "(\\d{3,6})", "$1", ["1(?:1[25-8]|2[357-9]|3[02-68]|4[12568]|5|6[0-8]|8[015]|9[0-47-9])|321|610"]], [, "(\\d{4})(\\d{4})", "$1-$2", ["300|4(?:0[02]|37|86)", "300|4(?:0(?:0|20)|370|864)"]], [, "(\\d{4})(\\d{4})", "$1-$2", ["[2-57]", "[2357]|4(?:[0-24-9]|3(?:[0-689]|7[1-9]))"]], [ + , + "(\\d{3})(\\d{2,3})(\\d{4})", + "$1 $2 $3", + ["(?:[358]|90)0"], + "0$1" + ], [, "(\\d{5})(\\d{4})", "$1-$2", ["9"]], [, "(\\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)", "0 $CC ($1)"], [, "(\\d{2})(\\d{5})(\\d{4})", "$1 $2-$3", ["[16][1-9]|[2-57-9]"], "($1)", "0 $CC ($1)"]], [[, "(\\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)", + "0 $CC ($1)" + ], [, "(\\d{2})(\\d{5})(\\d{4})", "$1 $2-$3", ["[16][1-9]|[2-57-9]"], "($1)", "0 $CC ($1)"]], [, , , , , , , , , [-1]], , , [, , "(?:30[03]\\d{3}|4(?:0(?:0\\d|20)|864))\\d{4}|800\\d{6,7}|300\\d{5}", , , , , , , [8, 9, 10]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + BS: [, [, , "(?:242|[58]\\d\\d|900)\\d{7}", , , , , , , [10], [7]], [, , "242(?:3(?:02|[236][1-9]|4[0-24-9]|5[0-68]|7[347]|8[0-4]|9[2-467])|461|502|6(?:0[1-5]|12|2[013]|[45]0|7[67]|8[78]|9[89])|7(?:02|88))\\d{4}", , , , "2423456789", , , , [7]], [ + , + , + "242(?:3(?:5[79]|7[56]|95)|4(?:[23][1-9]|4[1-35-9]|5[1-8]|6[2-8]|7\\d|81)|5(?:2[45]|3[35]|44|5[1-46-9]|65|77)|6[34]6|7(?:27|38)|8(?:0[1-9]|1[02-9]|2\\d|3[0-4]|[89]9))\\d{4}", + , + , + , + "2423591234", + , + , + , + [7] + ], [, , "242300\\d{4}|8(?:00|33|44|55|66|77|88)[2-9]\\d{6}", , , , "8002123456", , , , [7]], [, , "900[2-9]\\d{6}", , , , "9002123456"], [, , , , , , , , , [-1]], [, , "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}", , , , "5002345678"], [, , , , , , , , , [-1]], "BS", 1, "011", "1", , , "([3-8]\\d{6})$|1", "242$1", , , , , [, , , , , , , , , [-1]], , "242", [ + , + , + , + , + , + , + , + , + , + [-1] + ], [, , "242225\\d{4}", , , , "2422250123"], , , [, , , , , , , , , [-1]]], + BT: [, [, , "[178]\\d{7}|[2-8]\\d{6}", , , , , , , [7, 8], [6]], [, , "(?:2[3-6]|[34][5-7]|5[236]|6[2-46]|7[246]|8[2-4])\\d{5}", , , , "2345678", , , [7], [6]], [, , "(?:1[67]|[78]7)\\d{6}", , , , "17123456", , , [8]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "BT", 975, "00", , , , , , , , [[, "(\\d{3})(\\d{3})", "$1 $2", ["[2-7]"]], [, "(\\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]"] + ]], [[, "(\\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]"]]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + BW: [, [, , "(?:0800|(?:[37]|800)\\d)\\d{6}|(?:[2-6]\\d|90)\\d{5}", , , , , , , [7, 8, 10]], [, , "(?:2(?:4[0-48]|6[0-24]|9[0578])|3(?:1[0-35-9]|55|[69]\\d|7[013]|81)|4(?:6[03]|7[1267]|9[0-5])|5(?:3[03489]|4[0489]|7[1-47]|88|9[0-49])|6(?:2[1-35]|5[149]|8[013467]))\\d{4}", , , , "2401234", , , [7]], [ + , + , + "(?:321|7[1-8]\\d)\\d{5}", + , + , + , + "71123456", + , + , + [8] + ], [, , "(?:0800|800\\d)\\d{6}", , , , "0800012345", , , [10]], [, , "90\\d{5}", , , , "9012345", , , [7]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , "79(?:1(?:[0-2]\\d|3[0-8])|2[0-7]\\d)\\d{3}", , , , "79101234", , , [8]], "BW", 267, "00", , , , , , , , [[, "(\\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"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [ + , + , + , + , + , + , + , + , + , + [-1] + ], , , [, , , , , , , , , [-1]]], + BY: [, [, , "(?:[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], [5]], [, , "(?:1(?:5(?:1[1-5]|[24]\\d|6[2-4]|9[1-7])|6(?:[235]\\d|4[1-7])|7\\d\\d)|2(?:1(?:[246]\\d|3[0-35-9]|5[1-9])|2(?:[235]\\d|4[0-8])|3(?:[26]\\d|3[02-79]|4[024-7]|5[03-7])))\\d{5}", , , , "152450911", , , [9], [5, 6, 7]], [, , "(?:2(?:5[5-79]|9[1-9])|(?:33|44)\\d)\\d{6}", , , , "294911911", , , [9]], [ + , + , + "800\\d{3,7}|8(?:0[13]|20\\d)\\d{7}", + , + , + , + "8011234567" + ], [, , "(?:810|902)\\d{7}", , , , "9021234567", , , [10]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , "249\\d{6}", , , , "249123456", , , [9]], "BY", 375, "810", "8", , , "0|80?", , "8~10", , [[, "(\\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"]], , [, , , , , , , , , [-1]], , , [, , "800\\d{3,7}|(?:8(?:0[13]|10|20\\d)|902)\\d{7}"], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + BZ: [, [, , "(?:0800\\d|[2-8])\\d{6}", , , , , , , [7, 11]], [, , "(?:2(?:[02]\\d|36|[68]0)|[3-58](?:[02]\\d|[68]0)|7(?:[02]\\d|32|[68]0))\\d{4}", , , , "2221234", , , [7]], [, , "6[0-35-7]\\d{5}", , , , "6221234", , , [7]], [ + , + , + "0800\\d{7}", + , + , + , + "08001234123", + , + , + [11] + ], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "BZ", 501, "00", , , , , , , , [[, "(\\d{3})(\\d{4})", "$1-$2", ["[2-8]"]], [, "(\\d)(\\d{3})(\\d{4})(\\d{3})", "$1-$2-$3-$4", ["0"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + CA: [, [, , "[2-9]\\d{9}|3\\d{6}", , , , , , , [7, 10]], [ + , + , + "(?: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}", + , + , + , + "5062345678", + , + , + [10], + [7] + ], [, , "(?: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}", , , , "5062345678", , , [10], [7]], [, , "8(?:00|33|44|55|66|77|88)[2-9]\\d{6}", , , , "8002123456", , , [10]], [, , "900[2-9]\\d{6}", , , , "9002123456", , , [10]], [, , , , , , , , , [-1]], [ + , + , + "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}", + , + , + , + "5219023456", + , + , + [10] + ], [, , "600[2-9]\\d{6}", , , , "6002012345", , , [10]], "CA", 1, "011", "1", , , "1", , , 1, , , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , "310\\d{4}", , , , "3101234", , , [7]], , , [, , , , , , , , , [-1]]], + CC: [, [, , "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]], [, , "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}", , , , "891621234", , , [9], [8]], [ + , + , + "4(?:79[01]|83[0-36-9])\\d{5}|4(?:[0-36]\\d|4[047-9]|[58][0-24-9]|7[02-8]|9[0-47-9])\\d{6}", + , + , + , + "412345678", + , + , + [9] + ], [, , "180(?:0\\d{3}|2)\\d{3}", , , , "1800123456", , , [7, 10]], [, , "190[0-26]\\d{6}", , , , "1900123456", , , [10]], [, , "13(?:00\\d{6}(?:\\d{2})?|45[0-4]\\d{3})|13\\d{4}", , , , "1300123456", , , [6, 8, 10, 12]], [, , , , , , , , , [-1]], [, , "14(?:5(?:1[0458]|[23][458])|71\\d)\\d{4}", , , , "147101234", , , [9]], "CC", 61, "001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011", "0", , , "([59]\\d{7})$|0", "8$1", "0011", , , , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + CD: [, [ + , + , + "(?:(?:[189]|5\\d)\\d|2)\\d{7}|[1-68]\\d{6}", + , + , + , + , + , + , + [7, 8, 9, 10] + ], [, , "(?:(?:12|573)\\d\\d|276)\\d{5}|[1-6]\\d{6}", , , , "1234567"], [, , "88\\d{5}|(?:8[0-69]|9[017-9])\\d{7}", , , , "991234567", , , [7, 9]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "CD", 243, "00", "0", , , "0", , , , [[, "(\\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"]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + CF: [, [, , "(?:[27]\\d{3}|8776)\\d{4}", , , , , , , [8]], [, , "2[12]\\d{6}", , , , "21612345"], [, , "7[024-7]\\d{6}", , , , "70012345"], [, , , , , , , , , [-1]], [, , "8776\\d{4}", , , , "87761234"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "CF", 236, "00", , , , , , , , [[, "(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[278]"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + CG: [, [, , "222\\d{6}|(?:0\\d|80)\\d{7}", , , , , , , [9]], [, , "222[1-589]\\d{5}", , , , "222123456"], [, , "026(?:1[0-5]|6[6-9])\\d{4}|0(?:[14-6]\\d\\d|2(?:40|5[5-8]|6[07-9]))\\d{5}", , , , "061234567"], [, , , , , , , , , [-1]], [, , "80[0-2]\\d{6}", , , , "800123456"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "CG", 242, "00", , , , , , , , [[, "(\\d)(\\d{4})(\\d{4})", "$1 $2 $3", ["8"]], [, "(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["[02]"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + CH: [, [ + , + , + "8\\d{11}|[2-9]\\d{8}", + , + , + , + , + , + , + [9, 12] + ], [, , "(?:2[12467]|3[1-4]|4[134]|5[256]|6[12]|[7-9]1)\\d{7}", , , , "212345678", , , [9]], [, , "(?:6[89]|7[235-9])\\d{7}", , , , "781234567", , , [9]], [, , "800\\d{6}", , , , "800123456", , , [9]], [, , "90[016]\\d{6}", , , , "900123456", , , [9]], [, , "84[0248]\\d{6}", , , , "840123456", , , [9]], [, , "878\\d{6}", , , , "878123456", , , [9]], [, , , , , , , , , [-1]], "CH", 41, "00", "0", , , "0", , , , [[, "(\\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" + ]], , [, , "74[0248]\\d{6}", , , , "740123456", , , [9]], , , [, , , , , , , , , [-1]], [, , "5[18]\\d{7}", , , , "581234567", , , [9]], , , [, , "860\\d{9}", , , , "860123456789", , , [12]]], + CI: [, [, , "[02]\\d{9}", , , , , , , [10]], [, , "2(?:[15]\\d{3}|7(?:2(?:0[23]|1[2357]|2[245]|3[45]|4[3-5])|3(?:06|1[69]|[2-6]7)))\\d{5}", , , , "2123456789"], [, , "0[157]\\d{8}", , , , "0123456789"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "CI", 225, "00", , , , , , , , [[ + , + "(\\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"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + CK: [, [, , "[2-578]\\d{4}", , , , , , , [5]], [, , "(?:2\\d|3[13-7]|4[1-5])\\d{3}", , , , "21234"], [, , "[578]\\d{4}", , , , "71234"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "CK", 682, "00", , , , , , , , [[, "(\\d{2})(\\d{3})", "$1 $2", ["[2-578]"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + CL: [, [ + , + , + "12300\\d{6}|6\\d{9,10}|[2-9]\\d{8}", + , + , + , + , + , + , + [9, 10, 11] + ], [, , "2(?:1982[0-6]|3314[05-9])\\d{3}|(?:2(?:1(?:160|962)|2\\d{3}|3(?:(?:2\\d|50)\\d|3(?:[03467]\\d|1[0-35-9]|2[1-9]|5[0-24-9]|8[0-389]|9[0-8])|600)|646[59])|(?:(?:3[2-5]|[47][1-35]|5[1-3578])\\d|6(?:00|[13-57]\\d)|8(?:0[1-9]|[1-9]\\d))\\d\\d|9(?:(?:10[01]|(?:[2458]\\d|7[1-9])\\d)\\d|3(?:[0-57-9]\\d\\d|6(?:0[02-9]|[1-9]\\d))|6(?:[0-8]\\d\\d|9(?:[02-79]\\d|1[05-9]))|9(?:[03-9]\\d\\d|1(?:[0235-9]\\d|4[0-24-9])|2(?:[0-79]\\d|8[0-46-9]))))\\d{4}", , , , "600123456", , , [9]], [ + , + , + "2(?:1982[0-6]|3314[05-9])\\d{3}|(?:2(?:1(?:160|962)|2\\d{3}|3(?:(?:2\\d|50)\\d|3(?:[03467]\\d|1[0-35-9]|2[1-9]|5[0-24-9]|8[0-389]|9[0-8])|600)|646[59])|(?:(?:3[2-5]|[47][1-35]|5[1-3578]|6[13-57])\\d|8(?:0[1-8]|[1-9]\\d))\\d\\d|9(?:(?:10[01]|(?:[2458]\\d|7[1-9])\\d)\\d|3(?:[0-57-9]\\d\\d|6(?:0[02-9]|[1-9]\\d))|6(?:[0-8]\\d\\d|9(?:[02-79]\\d|1[05-9]))|9(?:[03-9]\\d\\d|1(?:[0235-9]\\d|4[0-24-9])|2(?:[0-79]\\d|8[0-46-9]))))\\d{4}", + , + , + , + "221234567", + , + , + [9] + ], [, , "(?:123|8)00\\d{6}", , , , "800123456", , , [9, 11]], [, , , , , , , , , [-1]], [, , "600\\d{7,8}", , , , "6001234567", , , [10, 11]], [, , , , , , , , , [-1]], [, , "44\\d{7}", , , , "441234567", , , [9]], "CL", 56, "(?:0|1(?:1[0-69]|2[02-5]|5[13-58]|69|7[0167]|8[018]))0", , , , , , , , [[, "(\\d{4})", "$1", ["1(?:[03-589]|21)|[29]0|78"]], [, "(\\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"]]], [[, "(\\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"]]], [, , , , , , , , , [-1]], , , [, , "600\\d{7,8}", , , , , , , [10, 11]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + CM: [, [, , "[26]\\d{8}|88\\d{6,7}", , , , , , , [8, 9]], [ + , + , + "2(?:22|33)\\d{6}", + , + , + , + "222123456", + , + , + [9] + ], [, , "(?:24[23]|6(?:[25-9]\\d|40))\\d{6}", , , , "671234567", , , [9]], [, , "88\\d{6,7}", , , , "88012345"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "CM", 237, "00", , , , , , , , [[, "(\\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"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + CN: [, [ + , + , + "(?:(?: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], + [5, 6] + ], [ + , + , + "(?:10(?:[02-79]\\d\\d|[18](?:0[1-9]|[1-9]\\d))|2(?:[02-57-9]\\d{3}|1(?:[18](?:0[1-9]|[1-9]\\d)|[2-79]\\d\\d))|(?:41[03]|8078|9(?:78|94))\\d\\d)\\d{5}|(?:10|2[0-57-9])(?:1(?:00|23)\\d\\d|95\\d{3,4})|(?:41[03]|9(?:78|94))(?:100\\d\\d|95\\d{3,4})|8078123|(?:43[35]|754|851)\\d{7,8}|(?:43[35]|754|851)(?:1(?:00\\d|23)\\d|95\\d{3,4})|(?:3(?:11|7[179])|4(?:[15]1|3[12])|5(?:1\\d|2[37]|3[12]|51|7[13-79]|9[15])|7(?:[39]1|5[57]|6[09])|8(?:71|98))(?:[02-8]\\d{7}|1(?:0(?:0\\d\\d(?:\\d{3})?|[1-9]\\d{5})|[13-9]\\d{6}|2(?:[0-24-9]\\d{5}|3\\d(?:\\d{4})?))|9(?:[0-46-9]\\d{6}|5\\d{3}(?:\\d(?:\\d{2})?)?))|(?:3(?:1[02-9]|35|49|5\\d|7[02-68]|9[1-68])|4(?:1[24-9]|2[179]|3[46-9]|5[2-9]|6[47-9]|7\\d|8[23])|5(?:3[03-9]|4[36]|5[02-9]|6[1-46]|7[028]|80|9[2-46-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[17]\\d|2[248]|3[04-9]|4[3-6]|5[0-3689]|6[2368]|9[02-9])|8(?:1[236-8]|2[5-7]|3\\d|5[2-9]|7[02-9]|8[36-8]|9[1-7])|9(?:0[1-3689]|1[1-79]|3\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))(?:[02-8]\\d{6}|1(?:0(?:0\\d\\d(?:\\d{2})?|[1-9]\\d{4})|[13-9]\\d{5}|2(?:[0-24-9]\\d{4}|3\\d(?:\\d{3})?))|9(?:[0-46-9]\\d{5}|5\\d{3,5}))", + , + , + , + "1012345678", + , + , + [7, 8, 9, 10, 11], + [5, 6] + ], [, , "1740[0-5]\\d{6}|1(?:[38]\\d|4[57]|[59][0-35-9]|6[25-7]|7[0-35-8])\\d{8}", , , , "13123456789", , , [11]], [, , "(?:(?:10|21)8|8)00\\d{7}", , , , "8001234567", , , [10, 12]], [, , "16[08]\\d{5}", , , , "16812345", , , [8]], [ + , + , + "10(?:10\\d{4}|96\\d{3,4})|400\\d{7}|950\\d{7,8}|(?:2[0-57-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[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))96\\d{3,4}", + , + , + , + "4001234567", + , + , + [7, 8, 9, 10, 11], + [5, 6] + ], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "CN", 86, "00|1(?:[12]\\d|79)\\d\\d00", "0", , , "(1(?:[12]\\d|79)\\d\\d)|0", , "00", , [ + [, "(\\d{5,6})", "$1", ["1(?:00|2[13])|9[56]", "1(?:00|2(?:1|39))|9[56]", "1(?:00|2(?:1|395))|9[56]"]], + [, "(\\d{5,6})", "$1", ["1(?:0|23)|781|[1-9]12", "1(?:0|23)|7812|[1-9]123", "1(?:0|23(?:[0-8]|9[0-46-9]))|78123|[1-9]123"]], + [ + , + "(\\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", + "$CC $1" + ], + [, "(\\d{3})(\\d{4})", "$1 $2", [ + "[1-9]", + "1[1-9]|26|[3-9]|(?:10|2[0-57-9])(?:[0-8]|9[0-47-9])", + "1(?:0(?:[02-8]|1(?:[013-9]|2[0-24-9])|9[0-47-9])|[1-9])|2(?:[0-57-9](?:[02-8]|1(?:0[1-9]|[13-9]|2[0-24-9])|9[0-47-9])|6)|[3-9]", + "1(?:0(?:[02-8]|1(?:[013-9]|2[0-24-9])|9[0-47-9])|[1-9])|2(?:[0-57-9](?:[02-8]|1(?:0[1-9]|[13-9]|2[0-24-9])|9[0-47-9])|6)|3(?:[0268]|3[0-46-9]|4[0-8]|9[079])|4(?:[049]|1[03]|2[02-68]|[35]0|6[0-356]|8[014-9])|5(?:0|2[0-24-689]|4[0-2457-9]|6[057-9]|8[1-9]|90)|6(?:[0-24578]|3[06-9]|6[14-79]|9[03-9])|7(?:0[02-9]|2[0135-79]|3[23]|4[0-27-9]|6[1457]|8)|8(?:[046]|1[01459]|2[0-489]|50|8[0-2459]|9[09])|9(?:0[0457]|1[08]|[268]|4[024-9]|5[06-9]|78|94)|(?: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]))(?:[02-9]|1(?:[013-9]|2[0-24-9]))", + "1(?:0(?:[02-8]|1(?:[013-9]|2[0-24-9])|9[0-47-9])|[1-9])|2(?:[0-57-9](?:[02-8]|1(?:0[1-9]|[13-9]|2[0-24-9])|9[0-47-9])|6)|3(?:[0268]|3[0-46-9]|4[0-8]|9[079])|4(?:[049]|1[03]|2[02-68]|[35]0|6[0-356]|8[014-9])|5(?:0|2[0-24-689]|4[0-2457-9]|6[057-9]|8[1-9]|90)|6(?:[0-24578]|3[06-9]|6[14-79]|9[03-9])|7(?:0[02-9]|2[0135-79]|3[23]|4[0-27-9]|6[1457]|8)|8(?:0(?:[0-689]|7[0-79])|1[01459]|2[0-489]|[46]|50|8[0-2459]|9[09])|9(?:0[0457]|1[08]|[268]|4[024-9]|5[06-9]|78|94)|(?: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]))(?:[02-9]|1(?:[013-9]|2[0-24-9]))" + ]], + [, "(\\d{4})(\\d{4})", "$1 $2", ["16[08]"]], + [ + , + "(\\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", + "$CC $1" + ], + [, "(\\d{4})(\\d{4})", "$1 $2", [ + "[1-9]", + "1(?:0(?:[02-8]|1[1-9]|9[0-47-9])|[1-9])|2(?:[0-57-9](?:[0-8]|9[0-47-9])|6)|[3-9]", + "1(?:0(?:[02-8]|1[1-9]|9[0-47-9])|[1-9])|26|3(?:[0268]|4[0-8]|9[079])|4(?:[049]|2[02-68]|[35]0|6[0-356]|8[014-9])|5(?:0|2[0-24-689]|4[0-2457-9]|6[057-9]|8[1-9]|90)|6(?:[0-24578]|3[06-9]|6[14-79]|9[03-9])|7(?:0[02-9]|2[0135-79]|3[23]|4[0-27-9]|6[1457]|8)|8(?:[046]|1[01459]|2[0-489]|5(?:0|[23][0-8])|8[0-2459]|9[09])|9(?:0[0457]|1[08]|[268]|4[024-9]|5[06-9])|(?:33|85[23]9)[0-46-9]|(?:2[0-57-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[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))(?:[0-8]|9[0-47-9])", + "1(?:0[02-8]|[1-9])|2(?:[0-57-9][0-8]|6)|3(?:[0268]|3[0-46-9]|4[0-8]|9[079])|4(?:[049]|2[02-68]|[35]0|6[0-356]|8[014-9])|5(?:0|2[0-24-689]|4[0-2457-9]|6[057-9]|90)|6(?:[0-24578]|3[06-9]|6[14-79]|9[03-9])|7(?:0[02-9]|2[0135-79]|3[23]|4[0-27-9]|6[1457]|8)|8(?:[046]|1[01459]|2[0-489]|5(?:0|[23](?:[02-8]|1[1-9]|9[0-46-9]))|8[0-2459]|9[09])|9(?:0[0457]|1[08]|[268]|4[024-9]|5[06-9])|(?:10|2[0-57-9])9[0-47-9]|(?:101|58|85[23]10)[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[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))(?:[02-8]|1(?:0[1-9]|[1-9])|9[0-47-9])" + ]], + [, "(\\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", "$CC $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", "$CC $1", 1], + [ + , + "(\\d{3})(\\d{7,8})", + "$1 $2", + ["9"] + ], + [, "(\\d{4})(\\d{3})(\\d{4})", "$1 $2 $3", ["80"], "0$1", "$CC $1", 1], + [, "(\\d{3})(\\d{4})(\\d{4})", "$1 $2 $3", ["[3-578]"], "0$1", "$CC $1", 1], + [, "(\\d{3})(\\d{4})(\\d{4})", "$1 $2 $3", ["1[3-9]"], , "$CC $1"], + [, "(\\d{2})(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3 $4", ["[12]"], "0$1", , 1] + ], [[ + , + "(\\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", + "$CC $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", + "$CC $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", "$CC $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", "$CC $1", 1], [ + , + "(\\d{3})(\\d{7,8})", + "$1 $2", + ["9"] + ], [, "(\\d{4})(\\d{3})(\\d{4})", "$1 $2 $3", ["80"], "0$1", "$CC $1", 1], [, "(\\d{3})(\\d{4})(\\d{4})", "$1 $2 $3", ["[3-578]"], "0$1", "$CC $1", 1], [, "(\\d{3})(\\d{4})(\\d{4})", "$1 $2 $3", ["1[3-9]"], , "$CC $1"], [, "(\\d{2})(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3 $4", ["[12]"], "0$1", , 1]], [, , , , , , , , , [-1]], , , [, , "(?:(?:10|21)8|[48])00\\d{7}|950\\d{7,8}", , , , , , , [10, 11, 12]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + CO: [, [, , "(?:46|60\\d\\d)\\d{6}|(?:1\\d|[39])\\d{9}", , , , , , , [8, 10, 11], [4, 7]], [ + , + , + "601055(?:[0-4]\\d|50)\\d\\d|6010(?:[0-4]\\d|5[0-4])\\d{4}|(?:46|60(?:[18][1-9]|[24-7][2-9]))\\d{6}", + , + , + , + "6012345678", + , + , + [8, 10], + [4, 7] + ], [, , "333301[0-5]\\d{3}|3333(?:00|2[5-9]|[3-9]\\d)\\d{4}|(?:3(?:(?:0[0-5]|1\\d|5[01]|70)\\d|2(?:[0-3]\\d|4[1-9])|3(?:00|3[0-24-9]))|9(?:101|408))\\d{6}", , , , "3211234567", , , [10]], [, , "1800\\d{7}", , , , "18001234567", , , [11]], [, , "(?:19(?:0[01]|4[78])|901)\\d{7}", , , , "19001234567", , , [10, 11]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "CO", 57, "00(?:4(?:[14]4|56)|[579])", "0", , , "0([3579]|4(?:[14]4|56))?", , , , [[, "(\\d{4})(\\d{4})", "$1 $2", ["46"]], [ + , + "(\\d{3})(\\d{7})", + "$1 $2", + ["6|90"], + "($1)", + "0$CC $1" + ], [, "(\\d{3})(\\d{7})", "$1 $2", ["3[0-357]|9[14]"], , "0$CC $1"], [, "(\\d)(\\d{3})(\\d{7})", "$1-$2-$3", ["1"], "0$1"]], [[, "(\\d{4})(\\d{4})", "$1 $2", ["46"]], [, "(\\d{3})(\\d{7})", "$1 $2", ["6|90"], "($1)", "0$CC $1"], [, "(\\d{3})(\\d{7})", "$1 $2", ["3[0-357]|9[14]"], , "0$CC $1"], [, "(\\d)(\\d{3})(\\d{7})", "$1 $2 $3", ["1"]]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + CR: [, [, , "(?:8\\d|90)\\d{8}|(?:[24-8]\\d{3}|3005)\\d{4}", , , , , , , [8, 10]], [ + , + , + "210[7-9]\\d{4}|2(?:[024-7]\\d|1[1-9])\\d{5}", + , + , + , + "22123456", + , + , + [8] + ], [, , "(?:3005\\d|6500[01])\\d{3}|(?:5[07]|6[0-4]|7[0-3]|8[3-9])\\d{6}", , , , "83123456", , , [8]], [, , "800\\d{7}", , , , "8001234567", , , [10]], [, , "90[059]\\d{7}", , , , "9001234567", , , [10]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , "(?:210[0-6]|4\\d{3}|5100)\\d{4}", , , , "40001234", , , [8]], "CR", 506, "00", , , , "(19(?:0[0-2468]|1[09]|20|66|77|99))", , , , [[, "(\\d{4})(\\d{4})", "$1 $2", ["[2-7]|8[3-9]"], , "$CC $1"], [, "(\\d{3})(\\d{3})(\\d{4})", "$1-$2-$3", ["[89]"], , "$CC $1"]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [ + , + , + , + , + , + , + , + , + , + [-1] + ], , , [, , , , , , , , , [-1]]], + CU: [, [, , "(?:[2-7]|8\\d\\d)\\d{7}|[2-47]\\d{6}|[34]\\d{5}", , , , , , , [6, 7, 8, 10], [4, 5]], [, , "(?:3[23]|4[89])\\d{4,6}|(?:31|4[36]|8(?:0[25]|78)\\d)\\d{6}|(?:2[1-4]|4[1257]|7\\d)\\d{5,6}", , , , "71234567", , , , [4, 5]], [, , "(?:5\\d|6[2-4])\\d{6}", , , , "51234567", , , [8]], [, , "800\\d{7}", , , , "8001234567", , , [10]], [, , , , , , , , , [-1]], [, , "807\\d{7}", , , , "8071234567", , , [10]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "CU", 53, "119", "0", , , "0", , , , [[, "(\\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"]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + CV: [, [, , "(?:[2-59]\\d\\d|800)\\d{4}", , , , , , , [7]], [, , "2(?:2[1-7]|3[0-8]|4[12]|5[1256]|6\\d|7[1-3]|8[1-5])\\d{4}", , , , "2211234"], [, , "(?:36|5[1-389]|9\\d)\\d{5}", , , , "9911234"], [, , "800\\d{4}", , , , "8001234"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , "(?:3[3-5]|4[356])\\d{5}", , , , "3401234"], "CV", 238, "0", , , , , , , , [[ + , + "(\\d{3})(\\d{2})(\\d{2})", + "$1 $2 $3", + ["[2-589]"] + ]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + CW: [, [, , "(?:[34]1|60|(?:7|9\\d)\\d)\\d{5}", , , , , , , [7, 8]], [, , "9(?:4(?:3[0-5]|4[14]|6\\d)|50\\d|7(?:2[014]|3[02-9]|4[4-9]|6[357]|77|8[7-9])|8(?:3[39]|[46]\\d|7[01]|8[57-9]))\\d{4}", , , , "94351234"], [, , "953[01]\\d{4}|9(?:5[12467]|6[5-9])\\d{5}", , , , "95181234"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , "60[0-2]\\d{4}", , , , "6001234", , , [7]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "CW", 599, "00", , , , , , , , [[ + , + "(\\d{3})(\\d{4})", + "$1 $2", + ["[3467]"] + ], [, "(\\d)(\\d{3})(\\d{4})", "$1 $2 $3", ["9[4-8]"]]], , [, , "955\\d{5}", , , , "95581234", , , [8]], 1, "[69]", [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + CX: [, [, , "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]], [, , "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}", , , , "891641234", , , [9], [8]], [ + , + , + "4(?:79[01]|83[0-36-9])\\d{5}|4(?:[0-36]\\d|4[047-9]|[58][0-24-9]|7[02-8]|9[0-47-9])\\d{6}", + , + , + , + "412345678", + , + , + [9] + ], [, , "180(?:0\\d{3}|2)\\d{3}", , , , "1800123456", , , [7, 10]], [, , "190[0-26]\\d{6}", , , , "1900123456", , , [10]], [, , "13(?:00\\d{6}(?:\\d{2})?|45[0-4]\\d{3})|13\\d{4}", , , , "1300123456", , , [6, 8, 10, 12]], [, , , , , , , , , [-1]], [, , "14(?:5(?:1[0458]|[23][458])|71\\d)\\d{4}", , , , "147101234", , , [9]], "CX", 61, "001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011", "0", , , "([59]\\d{7})$|0", "8$1", "0011", , , , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + CY: [, [ + , + , + "(?:[279]\\d|[58]0)\\d{6}", + , + , + , + , + , + , + [8] + ], [, , "2[2-6]\\d{6}", , , , "22345678"], [, , "9(?:10|[4-79]\\d)\\d{5}", , , , "96123456"], [, , "800\\d{5}", , , , "80001234"], [, , "90[09]\\d{5}", , , , "90012345"], [, , "80[1-9]\\d{5}", , , , "80112345"], [, , "700\\d{5}", , , , "70012345"], [, , , , , , , , , [-1]], "CY", 357, "00", , , , , , , , [[, "(\\d{2})(\\d{6})", "$1 $2", ["[257-9]"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , "(?:50|77)\\d{6}", , , , "77123456"], , , [, , , , , , , , , [-1]]], + CZ: [, [, , "(?:[2-578]\\d|60)\\d{7}|9\\d{8,11}", , , , , , , [9, 10, 11, 12]], [ + , + , + "(?:2\\d|3[1257-9]|4[16-9]|5[13-9])\\d{7}", + , + , + , + "212345678", + , + , + [9] + ], [, , "7(?:060\\d|19(?:[0-5]\\d|6[0-6]))\\d{4}|(?:60[1-8]|7(?:0[2-5]|[2379]\\d))\\d{6}", , , , "601123456", , , [9]], [, , "800\\d{6}", , , , "800123456", , , [9]], [, , "9(?:0[05689]|76)\\d{6}", , , , "900123456", , , [9]], [, , "8[134]\\d{7}", , , , "811234567", , , [9]], [, , "70[01]\\d{6}", , , , "700123456", , , [9]], [, , "9[17]0\\d{6}", , , , "910123456", , , [9]], "CZ", 420, "00", , , , , , , , [[, "(\\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"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , "9(?:5\\d|7[2-4])\\d{6}", , , , "972123456", , , [9]], , , [, , "9(?:3\\d{9}|6\\d{7,10})", , , , "93123456789"]], + DE: [, [, , "[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], [2, 3]], [ + , + , + "32\\d{9,11}|49[1-6]\\d{10}|322\\d{6}|49[0-7]\\d{3,9}|(?:[34]0|[68]9)\\d{3,13}|(?:2(?:0[1-689]|[1-3569]\\d|4[0-8]|7[1-7]|8[0-7])|3(?:[3569]\\d|4[0-79]|7[1-7]|8[1-8])|4(?:1[02-9]|[2-48]\\d|5[0-6]|6[0-8]|7[0-79])|5(?:0[2-8]|[124-6]\\d|[38][0-8]|[79][0-7])|6(?:0[02-9]|[1-358]\\d|[47][0-8]|6[1-9])|7(?:0[2-8]|1[1-9]|[27][0-7]|3\\d|[4-6][0-8]|8[0-5]|9[013-7])|8(?:0[2-9]|1[0-79]|2\\d|3[0-46-9]|4[0-6]|5[013-9]|6[1-8]|7[0-8]|8[0-24-6])|9(?:0[6-9]|[1-4]\\d|[589][0-7]|6[0-8]|7[0-467]))\\d{3,12}", + , + , + , + "30123456", + , + , + [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], + [2, 3, 4] + ], [, , "1(?:(?:5(?:[0-25-9]\\d\\d|3(?:10|33))|7[26-9]\\d\\d)\\d{6}|6[023]\\d{7,8})|17\\d{8}", , , , "15123456789", , , [10, 11]], [, , "800\\d{7,12}", , , , "8001234567890", , , [10, 11, 12, 13, 14, 15]], [, , "(?:137[7-9]|900(?:[135]|9\\d))\\d{6}", , , , "9001234567", , , [10, 11]], [, , "180\\d{5,11}|13(?:7[1-6]\\d\\d|8)\\d{4}", , , , "18012345", , , [7, 8, 9, 10, 11, 12, 13, 14]], [, , "700\\d{8}", , , , "70012345678", , , [11]], [, , , , , , , , , [-1]], "DE", 49, "00", "0", , , "0", , , , [ + [ + , + "(\\d{2})(\\d{3,13})", + "$1 $2", + ["3[02]|40|[68]9"], + "0$1" + ], + [, "(\\d{6})", "$1", ["227", "2277"]], + [, "(\\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"] + ], [ + [, "(\\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"] + ], [, , "16(?:4\\d{1,10}|[89]\\d{1,11})", , , , "16412345", , , [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]], , , [, , , , , , , , , [-1]], [, , "18(?:1\\d{5,11}|[2-9]\\d{8})", , , , "18500123456", , , [8, 9, 10, 11, 12, 13, 14]], , , [ + , + , + "1(?:6(?:013|255|399)|7(?:(?:[015]1|[69]3)3|[2-4]55|[78]99))\\d{7,8}|15(?:(?:[03-68]00|113)\\d|2\\d55|7\\d99|9\\d33)\\d{7}", + , + , + , + "177991234567", + , + , + [12, 13] + ]], + DJ: [, [, , "(?:2\\d|77)\\d{6}", , , , , , , [8]], [, , "2(?:1[2-5]|7[45])\\d{5}", , , , "21360003"], [, , "77\\d{6}", , , , "77831001"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "DJ", 253, "00", , , , , , , , [[, "(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[27]"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + DK: [, [, , "[2-9]\\d{7}", , , , , , , [8]], [ + , + , + "(?:2(?:[0-59][1-9]|[6-8]\\d)|3(?:[0-3][1-9]|4[13]|5[1-58]|6[1347-9]|7\\d|8[1-8]|9[1-79])|4(?:[0-25][1-9]|[34][2-9]|6[13-579]|7[13579]|8[1-47]|9[127])|5(?:[0-36][1-9]|4[146-9]|5[3-57-9]|7[568]|8[1-358]|9[1-69])|6(?:[0135][1-9]|2[1-68]|4[2-8]|6[1689]|[78]\\d|9[15689])|7(?:[0-69][1-9]|7[3-9]|8[147])|8(?:[16-9][1-9]|2[1-58])|9(?:[1-47-9][1-9]|6\\d))\\d{5}", + , + , + , + "32123456" + ], [, , "(?:2[6-8]|37|6[78]|96)\\d{6}|(?:2[0-59]|3[0-689]|[457]\\d|6[0-69]|8[126-9]|9[1-47-9])[1-9]\\d{5}", , , , "34412345"], [, , "80\\d{6}", , , , "80123456"], [, , "90\\d{6}", , , , "90123456"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "DK", 45, "00", , , , , , , , [[, "(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[2-9]"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + DM: [ + , + [, , "(?:[58]\\d\\d|767|900)\\d{7}", , , , , , , [10], [7]], + [ + , + , + "767(?:2(?:55|66)|4(?:2[01]|4[0-25-9])|50[0-4])\\d{4}", + , + , + , + "7674201234", + , + , + , + [7] + ], + [, , "767(?:2(?:[2-4689]5|7[5-7])|31[5-7]|61[1-8]|70[1-6])\\d{4}", , , , "7672251234", , , , [7]], + [, , "8(?:00|33|44|55|66|77|88)[2-9]\\d{6}", , , , "8002123456"], + [, , "900[2-9]\\d{6}", , , , "9002123456"], + [, , , , , , , , , [-1]], + [, , "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}", , , , "5002345678"], + [, , , , , , , , , [-1]], + "DM", + 1, + "011", + "1", + , + , + "([2-7]\\d{6})$|1", + "767$1", + , + , + , + , + [, , , , , , , , , [-1]], + , + "767", + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]] + ], + DO: [ + , + [, , "(?:[58]\\d\\d|900)\\d{7}", , , , , , , [10], [7]], + [ + , + , + "8(?:[04]9[2-9]\\d\\d|29(?:2(?:[0-59]\\d|6[04-9]|7[0-27]|8[0237-9])|3(?:[0-35-9]\\d|4[7-9])|[45]\\d\\d|6(?:[0-27-9]\\d|[3-5][1-9]|6[0135-8])|7(?:0[013-9]|[1-37]\\d|4[1-35689]|5[1-4689]|6[1-57-9]|8[1-79]|9[1-8])|8(?:0[146-9]|1[0-48]|[248]\\d|3[1-79]|5[01589]|6[013-68]|7[124-8]|9[0-8])|9(?:[0-24]\\d|3[02-46-9]|5[0-79]|60|7[0169]|8[57-9]|9[02-9])))\\d{4}", + , + , + , + "8092345678", + , + , + , + [7] + ], + [, , "8[024]9[2-9]\\d{6}", , , , "8092345678", , , , [7]], + [, , "800(?:14|[2-9]\\d)\\d{5}|8[024]9[01]\\d{6}|8(?:33|44|55|66|77|88)[2-9]\\d{6}", , , , "8002123456"], + [, , "900[2-9]\\d{6}", , , , "9002123456"], + [, , , , , , , , , [-1]], + [, , "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}", , , , "5002345678"], + [, , , , , , , , , [-1]], + "DO", + 1, + "011", + "1", + , + , + "1", + , + , + , + , + , + [, , , , , , , , , [-1]], + , + "8001|8[024]9", + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]] + ], + DZ: [ + , + [, , "(?:[1-4]|[5-79]\\d|80)\\d{7}", , , , , , , [8, 9]], + [, , "9619\\d{5}|(?:1\\d|2[013-79]|3[0-8]|4[013-689])\\d{6}", , , , "12345678"], + [, , "(?:5(?:4[0-29]|5\\d|6[0-3])|6(?:[569]\\d|7[0-6])|7[7-9]\\d)\\d{6}", , , , "551234567", , , [9]], + [, , "800\\d{6}", , , , "800123456", , , [9]], + [, , "80[3-689]1\\d{5}", , , , "808123456", , , [9]], + [, , "80[12]1\\d{5}", , , , "801123456", , , [9]], + [, , , , , , , , , [-1]], + [, , "98[23]\\d{6}", , , , "983123456", , , [9]], + "DZ", + 213, + "00", + "0", + , + , + "0", + , + , + , + [[, "(\\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"]], + , + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]] + ], + EC: [, [, , "1\\d{9,10}|(?:[2-7]|9\\d)\\d{7}", , , , , , , [8, 9, 10, 11], [7]], [, , "[2-7][2-7]\\d{6}", , , , "22123456", , , [8], [7]], [, , "964[0-2]\\d{5}|9(?:39|[57][89]|6[0-36-9]|[89]\\d)\\d{6}", , , , "991234567", , , [9]], [ + , + , + "1800\\d{7}|1[78]00\\d{6}", + , + , + , + "18001234567", + , + , + [10, 11] + ], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , "[2-7]890\\d{4}", , , , "28901234", , , [8]], "EC", 593, "00", "0", , , "0", , , , [[, "(\\d{3})(\\d{4})", "$1-$2", ["[2-7]"]], [, "(\\d)(\\d{3})(\\d{4})", "$1 $2-$3", ["[2-7]"], "(0$1)"], [, "(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["9"], "0$1"], [, "(\\d{4})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["1"]]], [[, "(\\d)(\\d{3})(\\d{4})", "$1-$2-$3", ["[2-7]"]], [, "(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["9"], "0$1"], [, "(\\d{4})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["1"]]], [ + , + , + , + , + , + , + , + , + , + [-1] + ], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + EE: [, [, , "8\\d{9}|[4578]\\d{7}|(?:[3-8]\\d|90)\\d{5}", , , , , , , [7, 8, 10]], [, , "(?:3[23589]|4[3-8]|6\\d|7[1-9]|88)\\d{5}", , , , "3212345", , , [7]], [ + , + , + "(?:5\\d{5}|8(?:1(?:0(?:0(?:00|[178]\\d)|[3-9]\\d\\d)|(?:1(?:0[2-6]|1\\d)|(?:2[0-59]|[3-79]\\d)\\d)\\d)|2(?:0(?:0(?:00|4\\d)|(?:19|[2-7]\\d)\\d)|(?:(?:[124-69]\\d|3[5-9])\\d|7(?:[0-79]\\d|8[13-9])|8(?:[2-6]\\d|7[01]))\\d)|[349]\\d{4}))\\d\\d|5(?:(?:[02]\\d|5[0-478])\\d|1(?:[0-8]\\d|95)|6(?:4[0-4]|5[1-589]))\\d{3}", + , + , + , + "51234567", + , + , + [7, 8] + ], [, , "800(?:(?:0\\d\\d|1)\\d|[2-9])\\d{3}", , , , "80012345"], [, , "(?:40\\d\\d|900)\\d{4}", , , , "9001234", , , [7, 8]], [, , , , , , , , , [-1]], [, , "70[0-2]\\d{5}", , , , "70012345", , , [8]], [, , , , , , , , , [-1]], "EE", 372, "00", , , , , , , , [[, "(\\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"]]], , [, , , , , , , , , [-1]], , , [, , "800[2-9]\\d{3}", , , , , , , [7]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + EG: [ + , + [, , "[189]\\d{8,9}|[24-6]\\d{8}|[135]\\d{7}", , , , , , , [8, 9, 10], [6, 7]], + [, , "13[23]\\d{6}|(?:15|57)\\d{6,7}|(?:2\\d|3|4[05-8]|5[05]|6[24-689]|8[2468]|9[235-7])\\d{7}", , , , "234567890", , , [8, 9], [6, 7]], + [, , "1[0-25]\\d{8}", , , , "1001234567", , , [10]], + [, , "800\\d{7}", , , , "8001234567", , , [10]], + [, , "900\\d{7}", , , , "9001234567", , , [10]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + "EG", + 20, + "00", + "0", + , + , + "0", + , + , + , + [[, "(\\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"]], + , + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]] + ], + EH: [ + , + [, , "[5-8]\\d{8}", , , , , , , [9]], + [, , "528[89]\\d{5}", , , , "528812345"], + [, , "(?:6(?:[0-79]\\d|8[0-247-9])|7(?:[0167]\\d|2[0-8]|5[0-5]|8[0-7]))\\d{6}", , , , "650123456"], + [, , "80[0-7]\\d{6}", , , , "801234567"], + [, , "89\\d{7}", , , , "891234567"], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , "(?:592(?:4[0-2]|93)|80[89]\\d\\d)\\d{4}", , , , "592401234"], + "EH", + 212, + "00", + "0", + , + , + "0", + , + , + , + , + , + [, , , , , , , , , [-1]], + , + "528[89]", + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]] + ], + ER: [, [, , "[178]\\d{6}", , , , , , , [7], [6]], [, , "(?:1(?:1[12568]|[24]0|55|6[146])|8\\d\\d)\\d{4}", , , , "8370362", , , , [6]], [, , "(?:17[1-3]|7\\d\\d)\\d{4}", , , , "7123456"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "ER", 291, "00", "0", , , "0", , , , [[ + , + "(\\d)(\\d{3})(\\d{3})", + "$1 $2 $3", + ["[178]"], + "0$1" + ]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + ES: [ + , + [, , "[5-9]\\d{8}", , , , , , , [9]], + [, , "96906(?:0[0-8]|1[1-9]|[2-9]\\d)\\d\\d|9(?:69(?:0[0-57-9]|[1-9]\\d)|73(?:[0-8]\\d|9[1-9]))\\d{4}|(?:8(?:[1356]\\d|[28][0-8]|[47][1-9])|9(?:[135]\\d|[268][0-8]|4[1-9]|7[124-9]))\\d{6}", , , , "810123456"], + [, , "96906(?:09|10)\\d\\d|(?:590(?:10[0-2]|600)|97390\\d)\\d{3}|(?:6\\d|7[1-48])\\d{7}", , , , "612345678"], + [, , "[89]00\\d{6}", , , , "800123456"], + [, , "80[367]\\d{6}", , , , "803123456"], + [, , "90[12]\\d{6}", , , , "901123456"], + [, , "70\\d{7}", , , , "701234567"], + [, , , , , , , , , [-1]], + "ES", + 34, + "00", + , + , + , + , + , + , + , + [[, "(\\d{4})", "$1", ["905"]], [, "(\\d{6})", "$1", ["[79]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]"]]], + [[, "(\\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]"]]], + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]], + [, , "51\\d{7}", , , , "511234567"], + , + , + [, , , , , , , , , [-1]] + ], + ET: [, [ + , + , + "(?:11|[2-579]\\d)\\d{7}", + , + , + , + , + , + , + [9], + [7] + ], [ + , + , + "11667[01]\\d{3}|(?:11(?:1(?:1[1-468]|2[2-7]|3[1-5]|5[5-8]|8[6-8])|2(?:13|3[6-8]|5[89]|7[05-9]|8[2-6])|3(?:2[01]|3[0-289]|4[1289]|7[1-4]|87)|4(?:1[69]|3[2-49]|4[0-3]|6[5-8]|7\\d)|5(?:1[578]|44|5[0-4])|6(?:1[578]|2[69]|39|4[5-7]|5[0-5]|6[0-59]|8[015-8]))|2(?:2(?:11[1-9]|22[0-7]|33\\d|44[1467]|66[1-68])|5(?:11[124-6]|33[2-8]|44[1467]|55[14]|66[1-3679]|77[124-79]|880))|3(?:3(?:11[0-46-8]|(?:22|55)[0-6]|33[0134689]|44[04]|66[01467])|4(?:44[0-8]|55[0-69]|66[0-3]|77[1-5]))|4(?:6(?:119|22[0-24-7]|33[1-5]|44[13-69]|55[14-689]|660|88[1-4])|7(?:(?:11|22)[1-9]|33[13-7]|44[13-6]|55[1-689]))|5(?:7(?:227|55[05]|(?:66|77)[14-8])|8(?:11[149]|22[013-79]|33[0-68]|44[013-8]|550|66[1-5]|77\\d)))\\d{4}", + , + , + , + "111112345", + , + , + , + [7] + ], [, , "700[1-9]\\d{5}|(?:7(?:0[1-9]|1[0-8]|22|77|86|99)|9\\d\\d)\\d{6}", , , , "911234567"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "ET", 251, "00", "0", , , "0", , , , [[, "(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["[1-579]"], "0$1"]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + FI: [ + , + [, , "[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]], + [ + , + , + "1[3-7][1-8]\\d{3,6}|(?:19[1-8]|[23568][1-8]\\d|9(?:00|[1-8]\\d))\\d{2,6}", + , + , + , + "131234567", + , + , + [5, 6, 7, 8, 9] + ], + [, , "4946\\d{2,6}|(?:4[0-8]|50)\\d{4,8}", , , , "412345678", , , [6, 7, 8, 9, 10]], + [, , "800\\d{4,6}", , , , "800123456", , , [7, 8, 9]], + [, , "[67]00\\d{5,6}", , , , "600123456", , , [8, 9]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + "FI", + 358, + "00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))", + "0", + , + , + "0", + , + "00", + , + [[, "(\\d{5})", "$1", ["75[12]"], "0$1"], [, "(\\d{5})", "$1", ["20[2-59]"], "0$1"], [, "(\\d{6})", "$1", ["11"]], [, "(\\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"]], + [[, "(\\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"]], + [, , , , , , , , , [-1]], + 1, + "1[03-79]|[2-9]", + [, , "20(?:2[023]|9[89])\\d{1,6}|(?:60[12]\\d|7099)\\d{4,5}|(?:606|7(?:0[78]|1|3\\d))\\d{7}|(?:[1-3]00|7(?:0[1-5]\\d\\d|5[03-9]))\\d{3,7}"], + [, , "20\\d{4,8}|60[12]\\d{5,6}|7(?:099\\d{4,5}|5[03-9]\\d{3,7})|20[2-59]\\d\\d|(?:606|7(?:0[78]|1|3\\d))\\d{7}|(?:10|29|3[09]|70[1-5]\\d)\\d{4,8}", , , , "10112345"], + , + , + [, , , , , , , , , [-1]] + ], + FJ: [ + , + [, , "45\\d{5}|(?:0800\\d|[235-9])\\d{6}", , , , , , , [7, 11]], + [, , "603\\d{4}|(?:3[0-5]|6[25-7]|8[58])\\d{5}", , , , "3212345", , , [7]], + [, , "(?:[279]\\d|45|5[01568]|8[034679])\\d{5}", , , , "7012345", , , [7]], + [, , "0800\\d{7}", , , , "08001234567", , , [11]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + "FJ", + 679, + "0(?:0|52)", + , + , + , + , + , + "00", + , + [[, "(\\d{3})(\\d{4})", "$1 $2", ["[235-9]|45"]], [, "(\\d{4})(\\d{3})(\\d{4})", "$1 $2 $3", ["0"]]], + , + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]] + ], + FK: [, [, , "[2-7]\\d{4}", , , , , , , [5]], [, , "[2-47]\\d{4}", , , , "31234"], [, , "[56]\\d{4}", , , , "51234"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "FK", 500, "00", , , , , , , , , , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + FM: [, [, , "(?:[39]\\d\\d|820)\\d{4}", , , , , , , [7]], [ + , + , + "31(?:00[67]|208|309)\\d\\d|(?:3(?:[2357]0[1-9]|602|804|905)|(?:820|9[2-6]\\d)\\d)\\d{3}", + , + , + , + "3201234" + ], [, , "31(?:00[67]|208|309)\\d\\d|(?:3(?:[2357]0[1-9]|602|804|905)|(?:820|9[2-7]\\d)\\d)\\d{3}", , , , "3501234"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "FM", 691, "00", , , , , , , , [[, "(\\d{3})(\\d{4})", "$1 $2", ["[389]"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + FO: [, [, , "[2-9]\\d{5}", , , , , , , [6]], [, , "(?:20|[34]\\d|8[19])\\d{4}", , , , "201234"], [, , "(?:[27][1-9]|5\\d|9[16])\\d{4}", , , , "211234"], [, , "80[257-9]\\d{3}", , , , "802123"], [ + , + , + "90(?:[13-5][15-7]|2[125-7]|9\\d)\\d\\d", + , + , + , + "901123" + ], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , "(?:6[0-36]|88)\\d{4}", , , , "601234"], "FO", 298, "00", , , , "(10(?:01|[12]0|88))", , , , [[, "(\\d{6})", "$1", ["[2-9]"], , "$CC $1"]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + FR: [, [, , "[1-9]\\d{8}", , , , , , , [9]], [, , "(?:26[013-9]|59[1-35-9])\\d{6}|(?:[13]\\d|2[0-57-9]|4[1-9]|5[0-8])\\d{7}", , , , "123456789"], [, , "(?:6(?:[0-24-8]\\d|3[0-8]|9[589])|7[3-9]\\d)\\d{6}", , , , "612345678"], [, , "80[0-5]\\d{6}", , , , "801234567"], [ + , + , + "836(?:0[0-36-9]|[1-9]\\d)\\d{4}|8(?:1[2-9]|2[2-47-9]|3[0-57-9]|[569]\\d|8[0-35-9])\\d{6}", + , + , + , + "891123456" + ], [, , "8(?:1[01]|2[0156]|4[024]|84)\\d{6}", , , , "884012345"], [, , , , , , , , , [-1]], [, , "9\\d{8}", , , , "912345678"], "FR", 33, "00", "0", , , "0", , , , [[, "(\\d{4})", "$1", ["10"]], [, "(\\d{3})(\\d{3})", "$1 $2", ["1"]], [, "(\\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"]], [[, "(\\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"]], [ + , + , + , + , + , + , + , + , + , + [-1] + ], , , [, , , , , , , , , [-1]], [, , "80[6-9]\\d{6}", , , , "806123456"], , , [, , , , , , , , , [-1]]], + GA: [, [, , "(?:[067]\\d|11)\\d{6}|[2-7]\\d{6}", , , , , , , [7, 8]], [, , "[01]1\\d{6}", , , , "01441234", , , [8]], [, , "(?:(?:0[2-7]|7[467])\\d|6(?:0[0-4]|10|[256]\\d))\\d{5}|[2-7]\\d{6}", , , , "06031234"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "GA", 241, "00", , , , "0(11\\d{6}|60\\d{6}|61\\d{6}|6[256]\\d{6}|7[467]\\d{6})", "$1", , , [[, "(\\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"]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + GB: [, [, , "[1-357-9]\\d{9}|[18]\\d{8}|8\\d{6}", , , , , , , [7, 9, 10], [4, 5, 6, 8]], [ + , + , + "(?: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}", + , + , + , + "1212345678", + , + , + [9, 10], + [4, 5, 6, 7, 8] + ], [, , "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}", , , , "7400123456", , , [10]], [, , "80[08]\\d{7}|800\\d{6}|8001111", , , , "8001234567"], [, , "(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\d|8[2-49]))\\d{7}|845464\\d", , , , "9012345678", , , [7, 10]], [, , , , , , , , , [-1]], [, , "70\\d{8}", , , , "7012345678", , , [10]], [ + , + , + "56\\d{8}", + , + , + , + "5612345678", + , + , + [10] + ], "GB", 44, "00", "0", " x", , "0|180020", , , , [[, "(\\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"]], , [, , "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}", , , , "7640123456", , , [10]], 1, , [, , , , , , , , , [-1]], [, , "(?:3[0347]|55)\\d{8}", , , , "5512345678", , , [10]], , , [, , , , , , , , , [-1]]], + GD: [, [, , "(?:473|[58]\\d\\d|900)\\d{7}", , , , , , , [10], [7]], [ + , + , + "473(?:2(?:3[0-2]|69)|3(?:2[89]|86)|4(?:[06]8|3[5-9]|4[0-4]|5[59]|73|90)|63[68]|7(?:58|84)|800|938)\\d{4}", + , + , + , + "4732691234", + , + , + , + [7] + ], [, , "473(?:4(?:0[2-79]|1[04-9]|2[0-5]|49|5[6-8])|5(?:2[01]|3[3-8])|901)\\d{4}", , , , "4734031234", , , , [7]], [, , "8(?:00|33|44|55|66|77|88)[2-9]\\d{6}", , , , "8002123456"], [, , "900[2-9]\\d{6}", , , , "9002123456"], [, , , , , , , , , [-1]], [, , "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}", , , , "5002345678"], [ + , + , + , + , + , + , + , + , + , + [-1] + ], "GD", 1, "011", "1", , , "([2-9]\\d{6})$|1", "473$1", , , , , [, , , , , , , , , [-1]], , "473", [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + GE: [, [, , "(?:[3-57]\\d\\d|800)\\d{6}", , , , , , , [9], [6, 7]], [, , "(?:3(?:[256]\\d|4[124-9]|7[0-4])|4(?:1\\d|2[2-7]|3[1-79]|4[2-8]|7[239]|9[1-7]))\\d{6}", , , , "322123456", , , , [6, 7]], [ + , + , + "5(?:(?:(?:0555|1(?:[17]77|555))[5-9]|757(?:7[7-9]|8[01]))\\d|22252[0-4])\\d\\d|5(?:0(?:0[17]0|505)|1(?:0[01]0|1(?:07|33|51))|2(?:0[02]0|2[25]2)|3(?:0[03]0|3[35]3)|(?:40[04]|900)0|5222)[0-4]\\d{3}|(?:5(?:0(?:0(?:0\\d|1[12]|22|3[0-6]|44|5[05]|77|88|9[09])|(?:[14]\\d|77)\\d|22[02])|1(?:1(?:[03][01]|[124]\\d|5[2-6]|7[0-4])|4\\d\\d)|[23]555|4(?:4\\d\\d|555)|5(?:[0157-9]\\d\\d|200|333|444)|6[89]\\d\\d|7(?:(?:[0147-9]\\d|22)\\d|5(?:00|[57]5))|8(?:0(?:[018]\\d|2[0-4])|5(?:55|8[89])|8(?:55|88))|9(?:090|[1-35-9]\\d\\d))|790\\d\\d)\\d{4}", + , + , + , + "555123456" + ], [, , "800\\d{6}", , , , "800123456"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , "70[67]\\d{6}", , , , "706123456"], "GE", 995, "00", "0", , , "0", , , , [[, "(\\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"]], , [, , , , , , , , , [-1]], , , [, , "70[67]\\d{6}"], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + GF: [, [ + , + , + "(?:[56]94\\d|7093)\\d{5}|(?:80|9\\d)\\d{7}", + , + , + , + , + , + , + [9] + ], [, , "594(?:[02-49]\\d|1[0-5]|5[6-9]|6[0-3]|80)\\d{4}", , , , "594101234"], [, , "(?:694(?:[0-249]\\d|3[0-8])|7093[0-3])\\d{4}", , , , "694201234"], [, , "80[0-5]\\d{6}", , , , "800012345"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , "9(?:(?:396|76\\d)\\d|476[0-6])\\d{4}", , , , "976012345"], "GF", 594, "00", "0", , , "0", , , , [[, "(\\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"]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [ + , + , + , + , + , + , + , + , + , + [-1] + ], , , [, , , , , , , , , [-1]]], + GG: [ + , + [, , "(?:1481|[357-9]\\d{3})\\d{6}|8\\d{6}(?:\\d{2})?", , , , , , , [7, 9, 10], [6]], + [, , "1481[25-9]\\d{5}", , , , "1481256789", , , [10], [6]], + [, , "7(?:(?:781|839)\\d|911[17])\\d{5}", , , , "7781123456", , , [10]], + [, , "80[08]\\d{7}|800\\d{6}|8001111", , , , "8001234567"], + [, , "(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\d|8[0-3]))\\d{7}|845464\\d", , , , "9012345678", , , [7, 10]], + [, , , , , , , , , [-1]], + [, , "70\\d{8}", , , , "7012345678", , , [10]], + [, , "56\\d{8}", , , , "5612345678", , , [10]], + "GG", + 44, + "00", + "0", + , + , + "([25-9]\\d{5})$|0|180020", + "1481$1", + , + , + , + , + [, , "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}", , , , "7640123456", , , [10]], + , + , + [, , , , , , , , , [-1]], + [, , "(?:3[0347]|55)\\d{8}", , , , "5512345678", , , [10]], + , + , + [, , , , , , , , , [-1]] + ], + GH: [, [, , "(?:[235]\\d{3}|800)\\d{5}", , , , , , , [8, 9], [7]], [, , "3082[0-5]\\d{4}|3(?:0(?:[237]\\d|8[01])|[167](?:2[0-6]|7\\d|80)|2(?:2[0-5]|7\\d|80)|3(?:2[0-3]|7\\d|80)|4(?:2[013-9]|3[01]|7\\d|80)|5(?:2[0-7]|7\\d|80)|8(?:2[0-2]|7\\d|80)|9(?:[28]0|7\\d))\\d{5}", , , , "302345678", , , [9], [7]], [ + , + , + "(?:2(?:[0346-9]\\d|5[67])|5(?:[03-7]\\d|9[1-9]))\\d{6}", + , + , + , + "231234567", + , + , + [9] + ], [, , "800\\d{5}", , , , "80012345", , , [8]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "GH", 233, "00", "0", , , "0", , , , [[, "(\\d{3})(\\d{4})", "$1 $2", ["[237]|8[0-2]"]], [, "(\\d{3})(\\d{5})", "$1 $2", ["8"], "0$1"], [, "(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["[235]"], "0$1"]], [[, "(\\d{3})(\\d{5})", "$1 $2", ["8"], "0$1"], [, "(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["[235]"], "0$1"]], [, , , , , , , , , [-1]], , , [, , "800\\d{5}", , , , , , , [8]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + GI: [, [ + , + , + "(?:[25]\\d|60)\\d{6}", + , + , + , + , + , + , + [8] + ], [, , "2190[0-2]\\d{3}|2(?:0(?:[02]\\d|3[01])|16[24-9]|2[2-5]\\d)\\d{4}", , , , "20012345"], [, , "5251[0-4]\\d{3}|(?:5(?:[146-8]\\d\\d|250)|60(?:1[01]|6\\d))\\d{4}", , , , "57123456"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "GI", 350, "00", , , , , , , , [[, "(\\d{3})(\\d{5})", "$1 $2", ["2"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + GL: [, [, , "(?:19|[2-689]\\d|70)\\d{4}", , , , , , , [6]], [, , "(?:19|3[1-7]|[68][1-9]|70|9\\d)\\d{4}", , , , "321000"], [ + , + , + "[245]\\d{5}", + , + , + , + "221234" + ], [, , "80\\d{4}", , , , "801234"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , "3[89]\\d{4}", , , , "381234"], "GL", 299, "00", , , , , , , , [[, "(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3", ["19|[2-9]"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + GM: [, [, , "[2-9]\\d{6}", , , , , , , [7]], [, , "(?:4(?:[23]\\d\\d|4(?:1[024679]|[6-9]\\d))|5(?:5(?:3\\d|4[0-7])|6[67]\\d|7(?:1[04]|2[035]|3[58]|48))|8[0-589]\\d\\d)\\d{3}", , , , "5661234"], [ + , + , + "556\\d{4}|(?:[23679]\\d|4[015]|5[0-489]|8[67])\\d{5}", + , + , + , + "3012345" + ], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "GM", 220, "00", , , , , , , , [[, "(\\d{3})(\\d{4})", "$1 $2", ["[2-9]"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + GN: [, [, , "722\\d{6}|(?:3|6\\d)\\d{7}", , , , , , , [8, 9]], [, , "3(?:0(?:24|3[12]|4[1-35-7]|5[13]|6[189]|[78]1|9[1478])|1\\d\\d)\\d{4}", , , , "30241234", , , [8]], [, , "6[0-356]\\d{7}", , , , "601123456", , , [9]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [ + , + , + "722\\d{6}", + , + , + , + "722123456", + , + , + [9] + ], "GN", 224, "00", , , , , , , , [[, "(\\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]"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + GP: [ + , + [, , "(?:590\\d|7090)\\d{5}|(?:69|80|9\\d)\\d{7}", , , , , , , [9]], + [, , "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}", , , , "590201234"], + [, , "(?: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}", , , , "690001234"], + [, , "80[0-5]\\d{6}", , , , "800012345"], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , "9(?:(?:39[5-7]|76[018])\\d|475[0-6])\\d{4}", , , , "976012345"], + "GP", + 590, + "00", + "0", + , + , + "0", + , + , + , + [[, "(\\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"]], + , + [, , , , , , , , , [-1]], + 1, + , + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]] + ], + GQ: [ + , + [, , "222\\d{6}|(?:3\\d|55|[89]0)\\d{7}", , , , , , , [9]], + [, , "33[0-24-9]\\d[46]\\d{4}|3(?:33|5\\d)\\d[7-9]\\d{4}", , , , "333091234"], + [, , "(?:222|55\\d)\\d{6}", , , , "222123456"], + [, , "80\\d[1-9]\\d{5}", , , , "800123456"], + [, , "90\\d[1-9]\\d{5}", , , , "900123456"], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + "GQ", + 240, + "00", + , + , + , + , + , + , + , + [[, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[235]"]], [, "(\\d{3})(\\d{6})", "$1 $2", ["[89]"]]], + , + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]] + ], + GR: [, [, , "5005000\\d{3}|8\\d{9,11}|(?:[269]\\d|70)\\d{8}", , , , , , , [10, 11, 12]], [ + , + , + "2(?:1\\d\\d|2(?:2[1-46-9]|[36][1-8]|4[1-7]|5[1-4]|7[1-5]|[89][1-9])|3(?:1\\d|2[1-57]|[35][1-3]|4[13]|7[1-7]|8[124-6]|9[1-79])|4(?:1\\d|2[1-8]|3[1-4]|4[13-5]|6[1-578]|9[1-5])|5(?:1\\d|[29][1-4]|3[1-5]|4[124]|5[1-6])|6(?:1\\d|[269][1-6]|3[1245]|4[1-7]|5[13-9]|7[14]|8[1-5])|7(?:1\\d|2[1-5]|3[1-6]|4[1-7]|5[1-57]|6[135]|9[125-7])|8(?:1\\d|2[1-5]|[34][1-4]|9[1-57]))\\d{6}", + , + , + , + "2123456789", + , + , + [10] + ], [, , "68[57-9]\\d{7}|(?:69|94)\\d{8}", , , , "6912345678", , , [10]], [, , "800\\d{7,9}", , , , "8001234567"], [, , "90[19]\\d{7}", , , , "9091234567", , , [10]], [, , "8(?:0[16]|12|[27]5|50)\\d{7}", , , , "8011234567", , , [10]], [, , "70\\d{8}", , , , "7012345678", , , [10]], [, , , , , , , , , [-1]], "GR", 30, "00", , , , , , , , [[, "(\\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"] + ]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , "5005000\\d{3}", , , , "5005000123", , , [10]], , , [, , , , , , , , , [-1]]], + GT: [, [, , "80\\d{6}|(?:1\\d{3}|[2-7])\\d{7}", , , , , , , [8, 11]], [, , "[267][2-9]\\d{6}", , , , "22456789", , , [8]], [, , "(?:[3-5]\\d\\d|80[0-4])\\d{5}", , , , "51234567", , , [8]], [, , "18[01]\\d{8}", , , , "18001112222", , , [11]], [, , "19\\d{9}", , , , "19001112222", , , [11]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "GT", 502, "00", , , , , , , , [[, "(\\d{4})(\\d{4})", "$1 $2", ["[2-8]"]], [ + , + "(\\d{4})(\\d{3})(\\d{4})", + "$1 $2 $3", + ["1"] + ]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + GU: [, [, , "(?:[58]\\d\\d|671|900)\\d{7}", , , , , , , [10], [7]], [, , "671(?:2\\d\\d|3(?:00|3[39]|4[349]|55|6[26])|4(?:00|56|7[1-9]|8[02-9])|5(?:55|6[2-5]|88)|6(?:3[2-578]|4[24-9]|5[34]|78|8[235-9])|7(?:[0479]7|2[0167]|3[45]|8[7-9])|8(?:[2-57-9]8|6[478])|9(?:2[29]|6[79]|7[1279]|8[7-9]|9[78]))\\d{4}", , , , "6713001234", , , , [7]], [ + , + , + "671(?:2\\d\\d|3(?:00|3[39]|4[349]|55|6[26])|4(?:00|56|7[1-9]|8[02-9])|5(?:55|6[2-5]|88)|6(?:3[2-578]|4[24-9]|5[34]|78|8[235-9])|7(?:[0479]7|2[0167]|3[45]|8[7-9])|8(?:[2-57-9]8|6[478])|9(?:2[29]|6[79]|7[1279]|8[7-9]|9[78]))\\d{4}", + , + , + , + "6713001234", + , + , + , + [7] + ], [, , "8(?:00|33|44|55|66|77|88)[2-9]\\d{6}", , , , "8002123456"], [, , "900[2-9]\\d{6}", , , , "9002123456"], [, , , , , , , , , [-1]], [, , "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}", , , , "5002345678"], [, , , , , , , , , [-1]], "GU", 1, "011", "1", , , "([2-9]\\d{6})$|1", "671$1", , 1, , , [, , , , , , , , , [-1]], , "671", [, , , , , , , , , [-1]], [ + , + , + , + , + , + , + , + , + , + [-1] + ], , , [, , , , , , , , , [-1]]], + GW: [, [, , "[49]\\d{8}|4\\d{6}", , , , , , , [7, 9]], [, , "443\\d{6}", , , , "443201234", , , [9]], [, , "9(?:5\\d|6[569]|77)\\d{6}", , , , "955012345", , , [9]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , "40\\d{5}", , , , "4012345", , , [7]], "GW", 245, "00", , , , , , , , [[, "(\\d{3})(\\d{4})", "$1 $2", ["40"]], [, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[49]"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + GY: [, [, , "(?:[2-8]\\d{3}|9008)\\d{3}", , , , , , , [7]], [ + , + , + "(?:2(?:1[6-9]|2[0-35-9]|3[1-4]|5[3-9]|6\\d|7[0-79])|3(?:2[25-9]|3\\d)|4(?:4[0-24]|5[56])|50[0-6]|77[1-57])\\d{4}", + , + , + , + "2201234" + ], [, , "(?:51[01]|6\\d\\d|7(?:[0-5]\\d|6[0-39]|70))\\d{4}", , , , "6091234"], [, , "(?:289|8(?:00|6[28]|88|99))\\d{4}", , , , "2891234"], [, , "9008\\d{3}", , , , "9008123"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , "515\\d{4}", , , , "5151234"], "GY", 592, "001", , , , , , , , [[, "(\\d{3})(\\d{4})", "$1 $2", ["[2-9]"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + HK: [, [, , "8[0-46-9]\\d{6,7}|9\\d{4,7}|(?:[2-7]|9\\d{3})\\d{7}", , , , , , , [5, 6, 7, 8, 9, 11]], [ + , + , + "(?:2(?:[13-9]\\d|2[013-9])\\d|3(?:(?:[1569][0-24-9]|4[0-246-9]|7[0-24-69])\\d|8(?:4[0-8]|[579]\\d|6[0-5]))|58(?:0[1-9]|1[2-9]))\\d{4}", + , + , + , + "21234567", + , + , + [8] + ], [, , "(?:4(?:44[0-35-9]|6(?:4[0-57-9]|6[0-6])|7(?:3[0-4]|4[0-48]|6[0-5]))|5(?:35[4-8]|73[0-6]|95[0-8])|6(?:26[013-8]|(?:66|78)[0-5])|70(?:7[1-8]|8[0-8])|84(?:4[0-2]|8[0-35-9])|9(?:29[013-9]|39[014-9]|59[0-467]|899))\\d{4}|(?:4(?:4[0-35-9]|6[0-357-9]|7[0-25])|5(?:[1-59][0-46-9]|6[0-4689]|7[0-246-9])|6(?:0[1-9]|[13-59]\\d|[268][0-57-9]|7[0-79])|70[1-59]|84[0-39]|9(?:0[1-9]|1[02-9]|[2358][0-8]|[467]\\d))\\d{5}", , , , "51234567", , , [8]], [, , "800\\d{6}", , , , "800123456", , , [9]], [ + , + , + "900(?:[0-24-9]\\d{7}|3\\d{1,4})", + , + , + , + "90012345678", + , + , + [5, 6, 7, 8, 11] + ], [, , , , , , , , , [-1]], [, , "8(?:1[0-4679]\\d|2(?:[0-36]\\d|7[0-4])|3(?:[034]\\d|2[09]|70))\\d{4}", , , , "81123456", , , [8]], [, , , , , , , , , [-1]], "HK", 852, "00(?:30|5[09]|[126-9]?)", , , , , , "00", , [[, "(\\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"]]], , [ + , + , + "7(?:1(?:0[0-38]|1[0-3679]|3[013]|69|9[0136])|2(?:[02389]\\d|1[18]|7[27-9])|3(?:[0-38]\\d|7[0-369]|9[2357-9])|47\\d|5(?:[178]\\d|5[0-5])|6(?:0[0-7]|2[236-9]|[35]\\d)|7(?:[27]\\d|8[7-9])|8(?:[23689]\\d|7[1-9])|9(?:[025]\\d|6[0-246-8]|7[0-36-9]|8[238]))\\d{4}", + , + , + , + "71123456", + , + , + [8] + ], , , [, , , , , , , , , [-1]], [, , "30(?:0[1-9]|[15-7]\\d|2[047]|89)\\d{4}", , , , "30161234", , , [8]], , , [, , , , , , , , , [-1]]], + HN: [, [, , "8\\d{10}|[237-9]\\d{7}", , , , , , , [8, 11]], [ + , + , + "2(?:2(?:0[0-59]|1[1-9]|[23]\\d|4[02-7]|5[57]|6[245]|7[0135689]|8[01346-9]|9[0-2])|4(?:0[578]|2[3-59]|3[13-9]|4[0-68]|5[1-3589])|5(?:0[2357-9]|1[1-356]|4[03-5]|5\\d|6[014-69]|7[04]|80)|6(?:[056]\\d|17|2[067]|3[047]|4[0-378]|[78][0-8]|9[01])|7(?:0[5-79]|6[46-9]|7[02-9]|8[034]|91)|8(?:79|8[0-357-9]|9[1-57-9]))\\d{4}", + , + , + , + "22123456", + , + , + [8] + ], [, , "[37-9]\\d{7}", , , , "91234567", , , [8]], [, , "8002\\d{7}", , , , "80021234567", , , [11]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "HN", 504, "00", , , , , , , , [[, "(\\d{4})(\\d{4})", "$1-$2", ["[237-9]"]], [, "(\\d{3})(\\d{4})(\\d{4})", "$1 $2 $3", ["8"]]], [[, "(\\d{4})(\\d{4})", "$1-$2", ["[237-9]"]]], [, , , , , , , , , [-1]], , , [, , "8002\\d{7}", , , , , , , [11]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + HR: [, [, , "[2-69]\\d{8}|80\\d{5,7}|[1-79]\\d{7}|6\\d{6}", , , , , , , [7, 8, 9], [6]], [ + , + , + "1\\d{7}|(?:2[0-3]|3[1-5]|4[02-47-9]|5[1-3])\\d{6,7}", + , + , + , + "12345678", + , + , + [8, 9], + [6, 7] + ], [, , "9(?:(?:0[1-9]|[12589]\\d)\\d\\d|7(?:[0679]\\d\\d|5(?:[01]\\d|44|55|77|9[5-79])))\\d{4}|98\\d{6}", , , , "921234567", , , [8, 9]], [, , "80\\d{5,7}", , , , "800123456"], [, , "6[01459]\\d{6}|6[01]\\d{5}", , , , "6001234", , , [7, 8]], [, , , , , , , , , [-1]], [, , "7[45]\\d{6}", , , , "74123456", , , [8]], [, , , , , , , , , [-1]], "HR", 385, "00", "0", , , "0", , , , [[, "(\\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"]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , "62\\d{6,7}|72\\d{6}", , , , "62123456", , , [8, 9]], , , [, , , , , , , , , [-1]]], + HT: [, [, , "[2-589]\\d{7}", , , , , , , [8]], [, , "2(?:2\\d|5[1-5]|81|9[149])\\d{5}", , , , "22453300"], [, , "(?:[34]\\d|5[56])\\d{6}", , , , "34101234"], [, , "8\\d{7}", , , , "80012345"], [ + , + , + , + , + , + , + , + , + , + [-1] + ], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , "9(?:[67][0-4]|8[0-3589]|9\\d)\\d{5}", , , , "98901234"], "HT", 509, "00", , , , , , , , [[, "(\\d{2})(\\d{2})(\\d{4})", "$1 $2 $3", ["[2-589]"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + HU: [, [, , "[235-7]\\d{8}|[1-9]\\d{7}", , , , , , , [8, 9], [6, 7]], [, , "(?:1\\d|[27][2-9]|3[2-7]|4[24-9]|5[2-79]|6[23689]|8[2-57-9]|9[2-69])\\d{6}", , , , "12345678", , , [8], [6, 7]], [, , "(?:[257]0|3[01])\\d{7}", , , , "201234567", , , [9]], [, , "(?:[48]0\\d|680[29])\\d{5}", , , , "80123456"], [ + , + , + "9[01]\\d{6}", + , + , + , + "90123456", + , + , + [8] + ], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , "21\\d{7}", , , , "211234567", , , [9]], "HU", 36, "00", "06", , , "06", , , , [[, "(\\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"]], , [, , , , , , , , , [-1]], , , [, , "(?:[48]0\\d|680[29])\\d{5}"], [, , "38\\d{7}", , , , "381234567", , , [9]], , , [, , , , , , , , , [-1]]], + ID: [, [ + , + , + "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], + [5, 6] + ], [ + , + , + "2[124]\\d{7,8}|619\\d{8}|2(?:1(?:14|500)|2\\d{3})\\d{3}|61\\d{5,8}|(?:2(?:[35][1-4]|6[0-8]|7[1-6]|8\\d|9[1-8])|3(?:1|[25][1-8]|3[1-68]|4[1-3]|6[1-3568]|7[0-469]|8\\d)|4(?:0[1-589]|1[01347-9]|2[0-36-8]|3[0-24-68]|43|5[1-378]|6[1-5]|7[134]|8[1245])|5(?:1[1-35-9]|2[25-8]|3[124-9]|4[1-3589]|5[1-46]|6[1-8])|6(?:[25]\\d|3[1-69]|4[1-6])|7(?:02|[125][1-9]|[36]\\d|4[1-8]|7[0-36-9])|9(?:0[12]|1[013-8]|2[0-479]|5[125-8]|6[23679]|7[159]|8[01346]))\\d{5,8}", + , + , + , + "218350123", + , + , + [7, 8, 9, 10, 11], + [5, 6] + ], [, , "8[1-35-9]\\d{7,10}", , , , "812345678", , , [9, 10, 11, 12]], [, , "00(?:1803\\d{5,11}|7803\\d{7})|(?:177\\d|800)\\d{5,7}", , , , "8001234567", , , [8, 9, 10, 11, 12, 13, 14, 15, 16, 17]], [, , "809\\d{7}", , , , "8091234567", , , [10]], [, , "804\\d{7}", , , , "8041234567", , , [10]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "ID", 62, "00[89]", "0", , , "0", , , , [[, "(\\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"], [, "(\\d{3})(\\d{3})(\\d{3})(\\d{2,8})", "$1 $2 $3 $4", ["001"]], [, "(\\d{2})(\\d{4})(\\d{3})(\\d{4})", "$1 $2 $3 $4", ["0"]]], [[, "(\\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"]], [, , , , , , , , , [-1]], , , [, , "001803\\d{5,11}|(?:007803\\d|8071)\\d{6}", , , , , , , [10, 11, 12, 13, 14, 15, 16, 17]], [ + , + , + "(?:1500|8071\\d{3})\\d{3}", + , + , + , + "8071123456", + , + , + [7, 10] + ], , , [, , , , , , , , , [-1]]], + IE: [, [, , "(?:1\\d|[2569])\\d{6,8}|4\\d{6,9}|7\\d{8}|8\\d{8,9}", , , , , , , [7, 8, 9, 10], [5, 6]], [, , "(?:1\\d|21)\\d{6,7}|(?:2[24-9]|4(?:0[24]|5\\d|7)|5(?:0[45]|1\\d|8)|6(?:1\\d|[237-9])|9(?:1\\d|[35-9]))\\d{5}|(?:23|4(?:[1-469]|8\\d)|5[23679]|6[4-6]|7[14]|9[04])\\d{7}", , , , "2212345", , , , [5, 6]], [, , "8(?:22|[35-9]\\d)\\d{6}", , , , "850123456", , , [9]], [, , "1800\\d{6}", , , , "1800123456", , , [10]], [ + , + , + "15(?:1[2-8]|[2-8]0|9[089])\\d{6}", + , + , + , + "1520123456", + , + , + [10] + ], [, , "18[59]0\\d{6}", , , , "1850123456", , , [10]], [, , "700\\d{6}", , , , "700123456", , , [9]], [, , "76\\d{7}", , , , "761234567", , , [9]], "IE", 353, "00", "0", , , "0", , , , [[, "(\\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"]], , [, , , , , , , , , [-1]], , , [, , "18[59]0\\d{6}", , , , , , , [10]], [, , "818\\d{6}", , , , "818123456", , , [9]], , , [, , "88210[1-9]\\d{4}|8(?:[35-79]5\\d\\d|8(?:[013-9]\\d\\d|2(?:[01][1-9]|[2-9]\\d)))\\d{5}", , , , "8551234567", , , [10]]], + IL: [, [, , "1\\d{6}(?:\\d{3,5})?|[57]\\d{8}|[1-489]\\d{7}", , , , , , , [ + 7, + 8, + 9, + 10, + 11, + 12 + ]], [, , "153\\d{8,9}|29[1-9]\\d{5}|(?:2[0-8]|[3489]\\d)\\d{6}", , , , "21234567", , , [8, 11, 12], [7]], [, , "55(?:4(?:0[01]|10|5[0-7])|57[0-289])\\d{4}|5(?:(?:[0-2][02-9]|[36]\\d|[49][2-9]|8[3-7])\\d|5(?:01|2\\d|3[0-3]|4[34]|5[0-25689]|6[6-8]|7[0-267]|8[7-9]|9[1-9]))\\d{5}", , , , "502345678", , , [9]], [, , "1(?:255|80[019]\\d{3})\\d{3}", , , , "1800123456", , , [7, 10]], [, , "1212\\d{4}|1(?:200|9(?:0[0-2]|19))\\d{6}", , , , "1919123456", , , [8, 10]], [, , "1700\\d{6}", , , , "1700123456", , , [10]], [, , , , , , , , , [-1]], [ + , + , + "7(?:38(?:[05]\\d|8[018])|8(?:33|55|77|81)\\d)\\d{4}|7(?:18|2[23]|3[237]|47|6[258]|7\\d|82|9[2-9])\\d{6}", + , + , + , + "771234567", + , + , + [9] + ], "IL", 972, "0(?:0|1[2-9])", "0", , , "0", , , , [[, "(\\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"]]], , [, , , , , , , , , [-1]], , , [ + , + , + "1700\\d{6}", + , + , + , + , + , + , + [10] + ], [, , "1599\\d{6}", , , , "1599123456", , , [10]], , , [, , "151\\d{8,9}", , , , "15112340000", , , [11, 12]]], + IM: [ + , + [, , "1624\\d{6}|(?:[3578]\\d|90)\\d{8}", , , , , , , [10], [6]], + [, , "1624(?:230|[5-8]\\d\\d)\\d{3}", , , , "1624756789", , , , [6]], + [, , "76245[06]\\d{4}|7(?:4576|[59]24\\d|624[0-4689])\\d{5}", , , , "7924123456"], + [, , "808162\\d{4}", , , , "8081624567"], + [, , "8(?:440[49]06|72299\\d)\\d{3}|(?:8(?:45|70)|90[0167])624\\d{4}", , , , "9016247890"], + [, , , , , , , , , [-1]], + [, , "70\\d{8}", , , , "7012345678"], + [, , "56\\d{8}", , , , "5612345678"], + "IM", + 44, + "00", + "0", + , + , + "([25-8]\\d{5})$|0|180020", + "1624$1", + , + , + , + , + [, , , , , , , , , [-1]], + , + "74576|(?:16|7[56])24", + [, , , , , , , , , [-1]], + [, , "3440[49]06\\d{3}|(?:3(?:08162|3\\d{4}|45624|7(?:0624|2299))|55\\d{4})\\d{4}", , , , "5512345678"], + , + , + [, , , , , , , , , [-1]] + ], + IN: [, [, , "(?:000800|[2-9]\\d\\d)\\d{7}|1\\d{7,12}", , , , , , , [8, 9, 10, 11, 12, 13], [6, 7]], [ + , + , + "2717(?:[2-7]\\d|95)\\d{4}|(?:271[0-689]|782[0-6])[2-7]\\d{5}|(?:170[24]|2(?:(?:[02][2-79]|90)\\d|80[13468])|(?:3(?:23|80)|683|79[1-7])\\d|4(?:20[24]|72[2-8])|552[1-7])\\d{6}|(?:11|33|4[04]|80)[2-7]\\d{7}|(?:342|674|788)(?:[0189][2-7]|[2-7]\\d)\\d{5}|(?:1(?:2[0-249]|3[0-25]|4[145]|[59][14]|6[014]|7[1257]|8[01346])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568]|9[14])|3(?:26|4[13]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[014-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|2[14]|3[134]|4[47]|5[15]|[67]1)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91))[2-7]\\d{6}|(?:1(?:2[35-8]|3[346-9]|4[236-9]|[59][0235-9]|6[235-9]|7[34689]|8[257-9])|2(?:1[134689]|3[24-8]|4[2-8]|5[25689]|6[2-4679]|7[3-79]|8[2-479]|9[235-9])|3(?:01|1[79]|2[1245]|4[5-8]|5[125689]|6[235-7]|7[157-9]|8[2-46-8])|4(?:1[14578]|2[5689]|3[2-467]|5[4-7]|6[35]|73|8[2689]|9[2389])|5(?:[16][146-9]|2[14-8]|3[1346]|4[14-69]|5[46]|7[2-4]|8[2-8]|9[246])|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[124-6])|7(?:1[013-9]|2[0235-9]|3[2679]|4[1-35689]|5[2-46-9]|[67][02-9]|8[013-7]|9[089])|8(?:1[1357-9]|2[235-8]|3[03-57-9]|4[0-24-9]|5\\d|6[2457-9]|7[1-6]|8[1256]|9[2-4]))\\d[2-7]\\d{5}", + , + , + , + "7410410123", + , + , + [10], + [6, 7, 8] + ], [ + , + , + "(?:61279|7(?:887[02-9]|9(?:313|79[07-9]))|8(?:079[04-9]|(?:84|91)7[02-8]))\\d{5}|(?:6(?:12|[2-47]1|5[17]|6[13]|80)[0189]|7(?:1(?:2[0189]|9[0-5])|2(?:[14][017-9]|8[0-59])|3(?:2[5-8]|[34][017-9]|9[016-9])|4(?:1[015-9]|[29][89]|39|8[389])|5(?:[15][017-9]|2[04-9]|9[7-9])|6(?:0[0-47]|1[0-257-9]|2[0-4]|3[19]|5[4589])|70[0289]|88[089]|97[02-8])|8(?:0(?:6[67]|7[02-8])|70[017-9]|84[01489]|91[0-289]))\\d{6}|(?:7(?:31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[0189]\\d|7[02-8])\\d{5}|(?:6(?:[09]\\d|1[04679]|2[03689]|3[05-9]|4[0489]|50|6[069]|7[07]|8[7-9])|7(?:0\\d|2[0235-79]|3[05-8]|40|5[0346-8]|6[6-9]|7[1-9]|8[0-79]|9[089])|8(?:0[01589]|1[0-57-9]|2[235-9]|3[03-57-9]|[45]\\d|6[02457-9]|7[1-69]|8[0-25-9]|9[02-9])|9\\d\\d)\\d{7}|(?:6(?:(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|8[124-6])\\d|7(?:[235689]\\d|4[0189]))|7(?:1(?:[013-8]\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-5])|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]|881))[0189]\\d{5}", + , + , + , + "8123456789", + , + , + [10] + ], [, , "000800\\d{7}|1(?:600\\d{6}|80(?:0\\d{4,9}|3\\d{9}))", , , , "1800123456"], [, , "186[12]\\d{9}", , , , "1861123456789", , , [13]], [, , "1860\\d{7}", , , , "18603451234", , , [11]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "IN", 91, "00", "0", , , "0", , , , [[, "(\\d{7})", "$1", ["575"]], [, "(\\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)"], , , 1], [, "(\\d{4})(\\d{4,5})", "$1 $2", ["180", "1800"], , , 1], [ + , + "(\\d{3})(\\d{3})(\\d{4})", + "$1 $2 $3", + ["140"], + , + , + 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|83)|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]|8[124-6])\\d|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)"], , , 1], [ + , + "(\\d{3})(\\d{3})(\\d{3})(\\d{4})", + "$1 $2 $3 $4", + ["0"] + ], [, "(\\d{4})(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3 $4", ["18"], , , 1]], [[, "(\\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)"], , , 1], [, "(\\d{4})(\\d{4,5})", "$1 $2", ["180", "1800"], , , 1], [, "(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["140"], , , 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|83)|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]|8[124-6])\\d|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)"], , , 1], [ + , + "(\\d{4})(\\d{3})(\\d{3})(\\d{3})", + "$1 $2 $3 $4", + ["18"], + , + , + 1 + ]], [, , , , , , , , , [-1]], , , [, , "1(?:600\\d{6}|800\\d{4,9})|(?:000800|18(?:03\\d\\d|6(?:0|[12]\\d\\d)))\\d{7}"], [, , "140\\d{7}", , , , "1409305260", , , [10]], , , [, , , , , , , , , [-1]]], + IO: [, [, , "3\\d{6}", , , , , , , [7]], [, , "37\\d{5}", , , , "3709100"], [, , "38\\d{5}", , , , "3801234"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "IO", 246, "00", , , , , , , , [[, "(\\d{3})(\\d{4})", "$1 $2", ["3"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + IQ: [, [ + , + , + "(?:1|7\\d\\d)\\d{7}|[2-6]\\d{7,8}", + , + , + , + , + , + , + [8, 9, 10], + [6, 7] + ], [, , "1\\d{7}|(?:2[13-5]|3[02367]|4[023]|5[03]|6[026])\\d{6,7}", , , , "12345678", , , [8, 9], [6, 7]], [, , "7[3-9]\\d{8}", , , , "7912345678", , , [10]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "IQ", 964, "00", "0", , , "0", , , , [[, "(\\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"]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + IR: [ + , + [, , "[1-9]\\d{9}|(?:[1-8]\\d\\d|9)\\d{3,4}", , , , , , , [4, 5, 6, 7, 10], [8]], + [, , "(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])(?:[03-57]\\d{7}|[16]\\d{3}(?:\\d{4})?|[289]\\d{3}(?:\\d(?:\\d{3})?)?)|94(?:000[09]|(?:12\\d|30[0-2])\\d|2(?:121|[2689]0\\d)|4(?:111|40\\d))\\d{4}", , , , "2123456789", , , [6, 7, 10], [4, 5, 8]], + [, , "9(?:(?:0[0-5]|[13]\\d|2[0-3])\\d\\d|9(?:[0-46]\\d\\d|5(?:10|5\\d)|8(?:[12]\\d|88)|9(?:0[0-3]|[19]\\d|21|69|77|8[7-9])))\\d{5}", , , , "9123456789", , , [10]], + [, , , , , , , , , [-1]], + [ + , + , + , + , + , + , + , + , + , + [-1] + ], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + "IR", + 98, + "00", + "0", + , + , + "0", + , + , + , + [[, "(\\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"]], + , + [, , , , , , , , , [-1]], + , + , + [, , "9(?:4440\\d{5}|6(?:0[12]|2[16-8]|3(?:08|[14]5|[23]|66)|4(?:0|80)|5[01]|6[89]|86|9[19]))", , , , , , , [4, 5, 10]], + [ + , + , + "96(?:0[12]|2[16-8]|3(?:08|[14]5|[23]|66)|4(?:0|80)|5[01]|6[89]|86|9[19])", + , + , + , + "9601", + , + , + [4, 5] + ], + , + , + [, , , , , , , , , [-1]] + ], + IS: [, [, , "(?:38\\d|[4-9])\\d{6}", , , , , , , [7, 9]], [, , "(?:4(?:1[0-24-69]|2[0-7]|[37][0-8]|4[0-24589]|5[0-68]|6\\d|8[0-36-8])|5(?:05|[156]\\d|2[02578]|3[0-579]|4[03-7]|7[0-2578]|8[0-35-9]|9[013-689])|872)\\d{4}", , , , "4101234", , , [7]], [, , "(?:38[589]\\d\\d|6(?:1[1-8]|2[0-6]|3[026-9]|4[014679]|5[0159]|6[0-69]|70|8[06-8]|9\\d)|7(?:5[057]|[6-9]\\d)|8(?:2[0-59]|[3-69]\\d|8[238]))\\d{4}", , , , "6111234"], [, , "80[0-8]\\d{4}", , , , "8001234", , , [7]], [ + , + , + "90(?:0\\d|1[5-79]|2[015-79]|3[135-79]|4[125-7]|5[25-79]|7[1-37]|8[0-35-7])\\d{3}", + , + , + , + "9001234", + , + , + [7] + ], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , "49[0-24-79]\\d{4}", , , , "4921234", , , [7]], "IS", 354, "00|1(?:0(?:01|[12]0)|100)", , , , , , "00", , [[, "(\\d{3})(\\d{4})", "$1 $2", ["[4-9]"]], [, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["3"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , "809\\d{4}", , , , "8091234", , , [7]], , , [, , "(?:689|8(?:7[18]|80)|95[48])\\d{4}", , , , "6891234", , , [7]]], + IT: [, [, , "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]], [ + , + , + "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}", + , + , + , + "0212345678" + ], [, , "3[2-9]\\d{7,8}|(?:31|43)\\d{8}", , , , "3123456789", , , [9, 10]], [, , "80(?:0\\d{3}|3)\\d{3}", , , , "800123456", , , [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}", , , , "899123456", , , [6, 8, 9, 10]], [, , "84(?:[08]\\d{3}|[17])\\d{3}", , , , "848123456", , , [6, 9]], [, , "1(?:78\\d|99)\\d{6}", , , , "1781234567", , , [9, 10]], [, , "55\\d{8}", , , , "5512345678", , , [10]], "IT", 39, "00", , , , , , , , [ + [, "(\\d{4,5})", "$1", ["1(?:0|9[246])", "1(?:0|9(?:2[2-9]|[46]))"]], + [, "(\\d{6})", "$1", ["1(?:1|92)"]], + [, "(\\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]"]] + ], [[, "(\\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]"]]], [, , , , , , , , , [-1]], 1, , [, , "848\\d{6}", , , , , , , [9]], [, , , , , , , , , [-1]], , , [, , "3[2-8]\\d{9,10}", , , , "33101234501", , , [11, 12]]], + JE: [, [, , "1534\\d{6}|(?:[3578]\\d|90)\\d{8}", , , , , , , [10], [6]], [, , "1534[0-24-8]\\d{5}", , , , "1534456789", , , , [6]], [ + , + , + "7(?:(?:(?:50|82)9|937)\\d|7(?:00[378]|97\\d))\\d{5}", + , + , + , + "7797712345" + ], [, , "80(?:07(?:35|81)|8901)\\d{4}", , , , "8007354567"], [, , "(?:8(?:4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|90(?:066[59]|1810|71(?:07|55)))\\d{4}", , , , "9018105678"], [, , , , , , , , , [-1]], [, , "701511\\d{4}", , , , "7015115678"], [, , "56\\d{8}", , , , "5612345678"], "JE", 44, "00", "0", , , "([0-24-8]\\d{5})$|0|180020", "1534$1", , , , , [, , "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}", , , , "7640123456"], , , [, , , , , , , , , [-1]], [ + , + , + "(?: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}", + , + , + , + "5512345678" + ], , , [, , , , , , , , , [-1]]], + JM: [, [, , "(?:[58]\\d\\d|658|900)\\d{7}", , , , , , , [10], [7]], [, , "8766060\\d{3}|(?:658(?:2(?:[0-8]\\d|9[0-46-9])|[3-9]\\d\\d)|876(?:52[35]|6(?:0[1-3579]|1[0235-9]|[23]\\d|40|5[06]|6[2-589]|7[0-25-9]|8[04]|9[4-9])|7(?:0[2-689]|[1-6]\\d|8[056]|9[45])|9(?:0[1-8]|1[02378]|[2-8]\\d|9[2-468])))\\d{4}", , , , "8765230123", , , , [7]], [ + , + , + "(?:658295|876(?:2(?:0[1-9]|[13-9]\\d|2[013-9])|[348]\\d\\d|5(?:0[1-9]|[1-9]\\d)|6(?:4[89]|6[67])|7(?:0[07]|7\\d|8[1-47-9]|9[0-36-9])|9(?:[01]9|9[0579])))\\d{4}", + , + , + , + "8762101234", + , + , + , + [7] + ], [, , "8(?:00|33|44|55|66|77|88)[2-9]\\d{6}", , , , "8002123456"], [, , "900[2-9]\\d{6}", , , , "9002123456"], [, , , , , , , , , [-1]], [, , "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}", , , , "5002345678"], [, , , , , , , , , [-1]], "JM", 1, "011", "1", , , "1", , , , , , [, , , , , , , , , [-1]], , "658|876", [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [ + , + , + , + , + , + , + , + , + , + [-1] + ]], + JO: [, [, , "(?:(?:[2689]|7\\d)\\d|32|427|53)\\d{6}", , , , , , , [8, 9]], [ + , + , + "87(?:000|90[01])\\d{3}|(?:2(?:6(?:2[0-35-9]|3[0-578]|4[24-7]|5[0-24-8]|[6-8][023]|9[0-3])|7(?:0[1-79]|10|2[014-7]|3[0-689]|4[019]|5[0-3578]))|32(?:0[1-69]|1[1-35-7]|2[024-7]|3\\d|4[0-3]|[5-7][023])|53(?:0[0-3]|[13][023]|2[0-59]|49|5[0-35-9]|6[15]|7[45]|8[1-6]|9[0-36-9])|6(?:2(?:[05]0|22)|3(?:00|33)|4(?:0[0-25]|1[2-7]|2[0569]|[38][07-9]|4[025689]|6[0-589]|7\\d|9[0-2])|5(?:[01][056]|2[034]|3[0-57-9]|4[178]|5[0-69]|6[0-35-9]|7[1-379]|8[0-68]|9[0239]))|87(?:20|7[078]|99))\\d{4}", + , + , + , + "62001234", + , + , + [8] + ], [, , "(?:427|7(?:[78][0-25-9]|9\\d))\\d{6}", , , , "790123456", , , [9]], [, , "80\\d{6}", , , , "80012345", , , [8]], [, , "9\\d{7}", , , , "90012345", , , [8]], [, , "85\\d{6}", , , , "85012345", , , [8]], [, , "70\\d{7}", , , , "700123456", , , [9]], [, , , , , , , , , [-1]], "JO", 962, "00", "0", , , "0", , , , [[, "(\\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"]], , [ + , + , + "74(?:66|77)\\d{5}", + , + , + , + "746612345", + , + , + [9] + ], , , [, , , , , , , , , [-1]], [, , "8(?:10|8\\d)\\d{5}", , , , "88101234", , , [8]], , , [, , , , , , , , , [-1]]], + JP: [ + , + [, , "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]], + [, , "(?:1(?:1[235-8]|2[3-6]|3[3-9]|4[2-6]|[58][2-8]|6[2-7]|7[2-9]|9[1-9])|(?:2[2-9]|[36][1-9])\\d|4(?:[2-578]\\d|6[02-8]|9[2-59])|5(?:[2-589]\\d|6[1-9]|7[2-8])|7(?:[25-9]\\d|3[4-9]|4[02-9])|8(?:[2679]\\d|3[2-9]|4[5-9]|5[1-9]|8[03-9])|9(?:[2-58]\\d|[679][1-9]))\\d{6}", , , , "312345678", , , [9]], + [ + , + , + "(?:601[0-4]0|[7-9]0[1-9]\\d\\d)\\d{5}", + , + , + , + "9012345678", + , + , + [10] + ], + [, , "00777(?:[01]|5\\d)\\d\\d|(?:00(?:7778|882[1245])|(?:120|800\\d)\\d\\d)\\d{4}|00(?:37|66|78)\\d{6,13}", , , , "120123456"], + [, , "990\\d{6}", , , , "990123456", , , [9]], + [, , , , , , , , , [-1]], + [, , "60\\d{7}", , , , "601234567", , , [9]], + [, , "50[1-9]\\d{7}", , , , "5012345678", , , [10]], + "JP", + 81, + "010", + "0", + , + , + "(000[2569]\\d{4,6})$|(?:(?:003768)0?)|0", + "$1", + , + , + [[, "(\\d{4})(\\d{4})", "$1-$2", ["007", "0077", "00777", "00777[01]"]], [, "(\\d{8,10})", "$1", ["000"]], [ + , + "(\\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{4})(\\d{2})(\\d{3,4})", "$1-$2-$3", ["007", "0077"]], [, "(\\d{4})(\\d{2})(\\d{4})", "$1-$2-$3", ["008"]], [, "(\\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"], [, "(\\d{4})(\\d{3})(\\d{3,4})", "$1-$2-$3", ["0"]], [, "(\\d{4})(\\d{4})(\\d{4,5})", "$1-$2-$3", ["0"]], [, "(\\d{4})(\\d{5})(\\d{5,6})", "$1-$2-$3", ["0"]], [, "(\\d{4})(\\d{6})(\\d{6,7})", "$1-$2-$3", ["0"]]], + [[, "(\\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"]], + [, , "20\\d{8}", , , , "2012345678", , , [10]], + , + , + [, , "00(?:777(?:[01]|(?:5|8\\d)\\d)|882[1245]\\d\\d)\\d\\d|00(?:37|66|78)\\d{6,13}"], + [, , "570\\d{6}", , , , "570123456", , , [9]], + , + , + [, , , , , , , , , [-1]] + ], + KE: [, [, , "(?:[17]\\d\\d|900)\\d{6}|(?:2|80)0\\d{6,7}|[4-6]\\d{6,8}", , , , , , , [7, 8, 9, 10]], [ + , + , + "(?:4[245]|5[1-79]|6[01457-9])\\d{5,7}|(?:4[136]|5[08]|62)\\d{7}|(?:[24]0|66)\\d{6,7}", + , + , + , + "202012345", + , + , + [7, 8, 9] + ], [, , "(?:1(?:0[0-8]|1\\d|2[014]|[34]0)|7\\d\\d)\\d{6}", , , , "712123456", , , [9]], [, , "800[02-8]\\d{5,6}", , , , "800223456", , , [9, 10]], [, , "900[02-9]\\d{5}", , , , "900223456", , , [9]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "KE", 254, "000", "0", , , "0", , , , [[, "(\\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"]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + KG: [, [ + , + , + "8\\d{9}|[235-9]\\d{8}", + , + , + , + , + , + , + [9, 10], + [5, 6] + ], [, , "312(?:5[0-79]\\d|9(?:[0-689]\\d|7[0-24-9]))\\d{3}|(?:3(?:1(?:2[0-46-8]|3[1-9]|47|[56]\\d)|2(?:22|3[0-479]|6[0-7])|4(?:22|5[6-9]|6\\d)|5(?:22|3[4-7]|59|6\\d)|6(?:22|5[35-7]|6\\d)|7(?:22|3[468]|4[1-9]|59|[67]\\d)|9(?:22|4[1-8]|6\\d))|6(?:09|12|2[2-4])\\d)\\d{5}", , , , "312123456", , , [9], [5, 6]], [, , "312(?:58\\d|973)\\d{3}|(?:2(?:0[0-35]|2\\d)|5[0-24-7]\\d|600|7(?:[07]\\d|55)|88[08]|9(?:12|9[05-9]))\\d{6}", , , , "700123456", , , [9]], [, , "800\\d{6,7}", , , , "800123456"], [, , , , , , , , , [-1]], [ + , + , + , + , + , + , + , + , + , + [-1] + ], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "KG", 996, "00", "0", , , "0", , , , [[, "(\\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"]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + KH: [ + , + [, , "1\\d{9}|[1-9]\\d{7,8}", , , , , , , [8, 9, 10], [6, 7]], + [ + , + , + "23(?:4(?:[2-4]|[56]\\d)|[568]\\d\\d)\\d{4}|23[236-9]\\d{5}|(?:2[4-6]|3[2-6]|4[2-4]|[5-7][2-5])(?:(?:[237-9]|4[56]|5\\d)\\d{5}|6\\d{5,6})", + , + , + , + "23756789", + , + , + [8, 9], + [6, 7] + ], + [, , "(?:(?:1[28]|3[18]|9[67])\\d|6[016-9]|7(?:[07-9]|[16]\\d)|8(?:[013-79]|8\\d))\\d{6}|(?:1\\d|9[0-57-9])\\d{6}|(?:2[3-6]|3[2-6]|4[2-4]|[5-7][2-5])48\\d{5}", , , , "91234567", , , [8, 9]], + [, , "1800(?:1\\d|2[019])\\d{4}", , , , "1800123456", , , [10]], + [, , "1900(?:1\\d|2[09])\\d{4}", , , , "1900123456", , , [10]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + "KH", + 855, + "00[14-9]", + "0", + , + , + "0", + , + , + , + [[, "(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[1-9]"], "0$1"], [, "(\\d{4})(\\d{3})(\\d{3})", "$1 $2 $3", ["1"]]], + , + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]] + ], + KI: [, [, , "(?:[37]\\d|6[0-79])\\d{6}|(?:[2-48]\\d|50)\\d{3}", , , , , , , [5, 8]], [, , "(?:[24]\\d|3[1-9]|50|65(?:02[12]|12[56]|22[89]|[3-5]00)|7(?:27\\d\\d|3100|5(?:02[12]|12[56]|22[89]|[34](?:00|81)|500))|8[0-5])\\d{3}", , , , "31234"], [ + , + , + "(?:6200[01]|7(?:310[1-9]|5(?:02[03-9]|12[0-47-9]|22[0-7]|[34](?:0[1-9]|8[02-9])|50[1-9])))\\d{3}|(?:63\\d\\d|7(?:(?:[0146-9]\\d|2[0-689])\\d|3(?:[02-9]\\d|1[1-9])|5(?:[0-2][013-9]|[34][1-79]|5[1-9]|[6-9]\\d)))\\d{4}", + , + , + , + "72001234", + , + , + [8] + ], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , "30(?:0[01]\\d\\d|12(?:11|20))\\d\\d", , , , "30010000", , , [8]], "KI", 686, "00", "0", , , "0", , , , , , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + KM: [, [, , "[3478]\\d{6}", , , , , , , [7], [4]], [, , "7[4-7]\\d{5}", , , , "7712345", , , , [4]], [, , "[34]\\d{6}", , , , "3212345"], [, , , , , , , , , [-1]], [, , "8\\d{6}", , , , "8001234"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "KM", 269, "00", , , , , , , , [[ + , + "(\\d{3})(\\d{2})(\\d{2})", + "$1 $2 $3", + ["[3478]"] + ]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + KN: [, [, , "(?:[58]\\d\\d|900)\\d{7}", , , , , , , [10], [7]], [, , "869(?:2(?:29|36)|302|4(?:6[015-9]|70)|56[5-7])\\d{4}", , , , "8692361234", , , , [7]], [, , "869(?:48[89]|55[6-8]|66\\d|76[02-7])\\d{4}", , , , "8697652917", , , , [7]], [, , "8(?:00|33|44|55|66|77|88)[2-9]\\d{6}", , , , "8002123456"], [, , "900[2-9]\\d{6}", , , , "9002123456"], [, , , , , , , , , [-1]], [ + , + , + "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}", + , + , + , + "5002345678" + ], [, , , , , , , , , [-1]], "KN", 1, "011", "1", , , "([2-7]\\d{6})$|1", "869$1", , , , , [, , , , , , , , , [-1]], , "869", [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + KP: [, [, , "85\\d{6}|(?:19\\d|[2-7])\\d{7}", , , , , , , [8, 10], [6, 7]], [, , "(?:(?:195|2)\\d|3[19]|4[159]|5[37]|6[17]|7[39]|85)\\d{6}", , , , "21234567", , , , [6, 7]], [, , "19[1-3]\\d{7}", , , , "1921234567", , , [10]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "KP", 850, "00|99", "0", , , "0", , , , [[ + , + "(\\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"]], , [, , , , , , , , , [-1]], , , [, , "238[02-9]\\d{4}|2(?:[0-24-9]\\d|3[0-79])\\d{5}", , , , , , , [8]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + KR: [, [, , "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], [3, 4, 7]], [ + , + , + "(?:2|3[1-3]|[46][1-4]|5[1-5])[1-9]\\d{6,7}|(?:3[1-3]|[46][1-4]|5[1-5])1\\d{2,3}", + , + , + , + "22123456", + , + , + [5, 6, 8, 9, 10], + [3, 4, 7] + ], [, , "1(?:05(?:[0-8]\\d|9[0-6])|22[13]\\d)\\d{4,5}|1(?:0[0-46-9]|[16-9]\\d|2[013-9])\\d{6,7}", , , , "1020000000", , , [9, 10]], [, , "00(?:308\\d{6,7}|798\\d{7,9})|(?:00368|[38]0)\\d{7}", , , , "801234567", , , [9, 11, 12, 13, 14]], [, , "60[2-9]\\d{6}", , , , "602345678", , , [9]], [, , , , , , , , , [-1]], [, , "50\\d{8,9}", , , , "5012345678", , , [10, 11]], [, , "70\\d{8}", , , , "7012345678", , , [10]], "KR", 82, "00(?:[125689]|3(?:[46]5|91)|7(?:00|27|3|55|6[126]))", "0", , , "0(8(?:[1-46-8]|5\\d\\d))?", , , , [[ + , + "(\\d{5})", + "$1", + ["1[016-9]1", "1[016-9]11", "1[016-9]114"], + "0$1" + ], [, "(\\d{2})(\\d{3,4})", "$1-$2", ["(?:3[1-3]|[46][1-4]|5[1-5])1"], "0$1", "0$CC-$1"], [, "(\\d{4})(\\d{4})", "$1-$2", ["1"]], [, "(\\d)(\\d{3,4})(\\d{4})", "$1-$2-$3", ["2"], "0$1", "0$CC-$1"], [, "(\\d{2})(\\d{3})(\\d{4})", "$1-$2-$3", ["[36]0|8"], "0$1", "0$CC-$1"], [, "(\\d{2})(\\d{3,4})(\\d{4})", "$1-$2-$3", ["[1346]|5[1-5]"], "0$1", "0$CC-$1"], [, "(\\d{2})(\\d{4})(\\d{4})", "$1-$2-$3", ["[57]"], "0$1", "0$CC-$1"], [, "(\\d{5})(\\d{3})(\\d{3})", "$1 $2 $3", ["003", "0030"]], [ + , + "(\\d{2})(\\d{5})(\\d{4})", + "$1-$2-$3", + ["5"], + "0$1", + "0$CC-$1" + ], [, "(\\d{5})(\\d{3,4})(\\d{4})", "$1 $2 $3", ["0"]], [, "(\\d{5})(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3 $4", ["0"]]], [ + [, "(\\d{2})(\\d{3,4})", "$1-$2", ["(?:3[1-3]|[46][1-4]|5[1-5])1"], "0$1", "0$CC-$1"], + [, "(\\d{4})(\\d{4})", "$1-$2", ["1"]], + [, "(\\d)(\\d{3,4})(\\d{4})", "$1-$2-$3", ["2"], "0$1", "0$CC-$1"], + [, "(\\d{2})(\\d{3})(\\d{4})", "$1-$2-$3", ["[36]0|8"], "0$1", "0$CC-$1"], + [, "(\\d{2})(\\d{3,4})(\\d{4})", "$1-$2-$3", ["[1346]|5[1-5]"], "0$1", "0$CC-$1"], + [, "(\\d{2})(\\d{4})(\\d{4})", "$1-$2-$3", ["[57]"], "0$1", "0$CC-$1"], + [, "(\\d{2})(\\d{5})(\\d{4})", "$1-$2-$3", ["5"], "0$1", "0$CC-$1"] + ], [, , "15\\d{7,8}", , , , "1523456789", , , [9, 10]], , , [, , "00(?:3(?:08\\d{6,7}|68\\d{7})|798\\d{7,9})", , , , , , , [11, 12, 13, 14]], [, , "1(?:5(?:22|33|44|66|77|88|99)|6(?:[07]0|44|6[0168]|88)|8(?:00|33|55|77|99))\\d{4}", , , , "15441234", , , [8]], , , [, , , , , , , , , [-1]]], + KW: [, [, , "18\\d{5}|(?:[2569]\\d|41)\\d{6}", , , , , , , [7, 8]], [, , "2(?:[23]\\d\\d|4(?:[1-35-9]\\d|44)|5(?:0[034]|[2-46]\\d|5[1-3]|7[1-7]))\\d{4}", , , , "22345678", , , [8]], [ + , + , + "(?:41\\d\\d|5(?:(?:[05]\\d|1[0-7]|6[56])\\d|2(?:22|5[25])|7(?:55|77)|88[58])|6(?:(?:0[034679]|5[015-9]|6\\d)\\d|1(?:00|11|6[16])|2[26]2|3[36]3|4[46]4|7(?:0[013-9]|[67]\\d)|8[68]8|9(?:[069]\\d|3[039]))|9(?:(?:[04679]\\d|8[057-9])\\d|1(?:00|1[01]|99)|2(?:00|2\\d)|3(?:00|3[03])|5(?:00|5\\d)))\\d{4}", + , + , + , + "50012345", + , + , + [8] + ], [, , "18\\d{5}", , , , "1801234", , , [7]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "KW", 965, "00", , , , , , , , [[, "(\\d{4})(\\d{3,4})", "$1 $2", ["[169]|2(?:[235]|4[1-35-9])|52"]], [, "(\\d{3})(\\d{5})", "$1 $2", ["[245]"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + KY: [, [, , "(?:345|[58]\\d\\d|900)\\d{7}", , , , , , , [10], [7]], [ + , + , + "345(?:2(?:22|3[23]|44|66)|333|444|6(?:23|38|40)|7(?:30|4[35-79]|6[6-9]|77)|8(?:00|1[45]|4[89]|88)|9(?:14|4[035-9]))\\d{4}", + , + , + , + "3452221234", + , + , + , + [7] + ], [, , "345(?:32[1-9]|42[0-4]|5(?:1[67]|2[5-79]|4[6-9]|50|76)|649|82[56]|9(?:1[679]|2[2-9]|3[06-9]|90))\\d{4}", , , , "3453231234", , , , [7]], [, , "8(?:00|33|44|55|66|77|88)[2-9]\\d{6}", , , , "8002345678"], [, , "(?:345976|900[2-9]\\d\\d)\\d{4}", , , , "9002345678"], [, , , , , , , , , [-1]], [ + , + , + "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}", + , + , + , + "5002345678" + ], [, , , , , , , , , [-1]], "KY", 1, "011", "1", , , "([2-9]\\d{6})$|1", "345$1", , , , , [, , , , , , , , , [-1]], , "345", [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + KZ: [, [, , "(?:33622|8\\d{8})\\d{5}|[78]\\d{9}", , , , , , , [10, 14], [5, 6, 7]], [ + , + , + "(?:33622|7(?:1(?:0(?:[23]\\d|4[0-3]|59|63)|1(?:[23]\\d|4[0-79]|59)|2(?:[23]\\d|59)|3(?:2\\d|3[0-79]|4[0-35-9]|59)|4(?:[24]\\d|3[013-9]|5[1-9]|97)|5(?:2\\d|3[1-9]|4[0-7]|59)|6(?:[2-4]\\d|5[19]|61)|72\\d|8(?:[27]\\d|3[1-46-9]|4[0-5]|59))|2(?:1(?:[23]\\d|4[46-9]|5[3469])|2(?:2\\d|3[0679]|46|5[12679])|3(?:[2-4]\\d|5[139])|4(?:2\\d|3[1-35-9]|59)|5(?:[23]\\d|4[0-8]|59|61)|6(?:2\\d|3[1-9]|4[0-4]|59)|7(?:[2379]\\d|40|5[279])|8(?:[23]\\d|4[0-3]|59)|9(?:2\\d|3[124578]|59))))\\d{5}", + , + , + , + "7123456789", + , + , + [10], + [5, 6, 7] + ], [, , "7(?:0[0-25-8]|47|6[0-4]|7[15-8]|85)\\d{7}", , , , "7710009998", , , [10]], [, , "8(?:00|108\\d{3})\\d{7}", , , , "8001234567"], [, , "809\\d{7}", , , , "8091234567", , , [10]], [, , , , , , , , , [-1]], [, , "808\\d{7}", , , , "8081234567", , , [10]], [, , "751\\d{7}", , , , "7511234567", , , [10]], "KZ", 7, "810", "8", , , "8", , "8~10", , , , [, , , , , , , , , [-1]], , "33622|7", [, , "751\\d{7}", , , , , , , [10]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + LA: [, [, , "[23]\\d{9}|3\\d{8}|(?:[235-8]\\d|41)\\d{6}", , , , , , , [8, 9, 10], [6]], [ + , + , + "(?:2[13]|[35-7][14]|41|8[1468])\\d{6}", + , + , + , + "21212862", + , + , + [8], + [6] + ], [, , "(?:20(?:[23579]\\d|8[78])|30[24]\\d)\\d{6}|30\\d{7}", , , , "2023123456", , , [9, 10]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "LA", 856, "00", "0", , , "0", , , , [[, "(\\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"]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + LB: [, [ + , + , + "[27-9]\\d{7}|[13-9]\\d{6}", + , + , + , + , + , + , + [7, 8] + ], [, , "7(?:62|8[0-6]|9[04-9])\\d{4}|(?:[14-69]\\d|2(?:[14-69]\\d|[78][1-9])|7[2-57]|8[02-9])\\d{5}", , , , "1123456"], [, , "(?:(?:3|81)\\d|7(?:[01]\\d|6[013-9]|8[7-9]|9[0-3]))\\d{5}", , , , "71123456"], [, , , , , , , , , [-1]], [, , "9[01]\\d{6}", , , , "90123456", , , [8]], [, , "80\\d{6}", , , , "80123456", , , [8]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "LB", 961, "00", "0", , , "0", , , , [[, "(\\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]"]]], , [ + , + , + , + , + , + , + , + , + , + [-1] + ], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + LC: [, [, , "(?:[58]\\d\\d|758|900)\\d{7}", , , , , , , [10], [7]], [, , "758(?:234|4(?:30|5\\d|6[2-9]|8[0-2])|57[0-2]|(?:63|75)8)\\d{4}", , , , "7584305678", , , , [7]], [, , "758(?:28[4-7]|384|4(?:6[01]|8[4-9])|5(?:1[89]|20|84)|7(?:1[2-9]|2\\d|3[0-3])|812)\\d{4}", , , , "7582845678", , , , [7]], [, , "8(?:00|33|44|55|66|77|88)[2-9]\\d{6}", , , , "8002123456"], [, , "900[2-9]\\d{6}", , , , "9002123456"], [, , , , , , , , , [-1]], [ + , + , + "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}", + , + , + , + "5002345678" + ], [, , , , , , , , , [-1]], "LC", 1, "011", "1", , , "([2-8]\\d{6})$|1", "758$1", , , , , [, , , , , , , , , [-1]], , "758", [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + LI: [, [, , "[68]\\d{8}|(?:[2378]\\d|90)\\d{5}", , , , , , , [7, 9]], [, , "(?:2(?:01|1[27]|2[024]|3\\d|6[02-578]|96)|3(?:[24]0|33|7[0135-7]|8[048]|9[0269]))\\d{4}", , , , "2345678", , , [7]], [, , "(?:6(?:(?:4[5-9]|5\\d)\\d|6(?:[024-68]\\d|1[01]|3[7-9]|70))\\d|7(?:[37-9]\\d|42|56))\\d{4}", , , , "660234567"], [, , "8002[28]\\d\\d|80(?:05\\d|9)\\d{4}", , , , "8002222"], [ + , + , + "90(?:02[258]|1(?:23|3[14])|66[136])\\d\\d", + , + , + , + "9002222", + , + , + [7] + ], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "LI", 423, "00", "0", , , "(1001)|0", , , , [[, "(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3", ["[2379]|8(?:0[09]|7)", "[2379]|8(?:0(?:02|9)|7)"], , "$CC $1"], [, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["8"]], [, "(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["69"], , "$CC $1"], [, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["6"], , "$CC $1"]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , "870(?:28|87)\\d\\d", , , , "8702812", , , [7]], , , [, , "697(?:42|56|[78]\\d)\\d{4}", , , , "697861234", , , [9]]], + LK: [ + , + [, , "[1-9]\\d{8}", , , , , , , [9], [7]], + [, , "(?:12[2-9]|602|8[12]\\d|9(?:1\\d|22|9[245]))\\d{6}|(?:11|2[13-7]|3[1-8]|4[157]|5[12457]|6[35-7])[2-57]\\d{6}", , , , "112345678", , , , [7]], + [, , "7(?:[0-25-8]\\d|4[0-4])\\d{6}", , , , "712345678"], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + "LK", + 94, + "00", + "0", + , + , + "0", + , + , + , + [[, "(\\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"]], + , + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]], + [, , "1973\\d{5}", , , , "197312345"], + , + , + [, , , , , , , , , [-1]] + ], + LR: [, [, , "(?:[2457]\\d|33|88)\\d{7}|(?:2\\d|[4-6])\\d{6}", , , , , , , [7, 8, 9]], [, , "2\\d{7}", , , , "21234567", , , [8]], [, , "(?:(?:(?:22|33)0|555|7(?:6[01]|7\\d)|88\\d)\\d|4(?:240|[67]))\\d{5}|[56]\\d{6}", , , , "770123456", , , [7, 9]], [, , , , , , , , , [-1]], [, , "332(?:02|[34]\\d)\\d{4}", , , , "332021234", , , [9]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "LR", 231, "00", "0", , , "0", , , , [[, "(\\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" + ]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + LS: [, [, , "(?:[256]\\d\\d|800)\\d{5}", , , , , , , [8]], [, , "2\\d{7}", , , , "22123456"], [, , "[56]\\d{7}", , , , "50123456"], [, , "800[1256]\\d{4}", , , , "80021234"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "LS", 266, "00", , , , , , , , [[, "(\\d{4})(\\d{4})", "$1 $2", ["[2568]"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + LT: [ + , + [, , "(?:[3469]\\d|52|[78]0)\\d{6}", , , , , , , [8]], + [ + , + , + "(?:3[1478]|4[124-6]|52)\\d{6}", + , + , + , + "31234567" + ], + [, , "6\\d{7}", , , , "61234567"], + [, , "80[02]\\d{5}", , , , "80012345"], + [, , "9(?:0[0239]|10)\\d{5}", , , , "90012345"], + [, , "808\\d{5}", , , , "80812345"], + [, , "70[05]\\d{5}", , , , "70012345"], + [, , "[89]01\\d{5}", , , , "80123456"], + "LT", + 370, + "00", + "0", + , + , + "[08]", + , + , + , + [[, "(\\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]], + , + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]], + [, , "70[67]\\d{5}", , , , "70712345"], + , + , + [, , , , , , , , , [-1]] + ], + LU: [, [, , "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]], [, , "(?:35[013-9]|80[2-9]|90[89])\\d{1,8}|(?:2[2-9]|3[0-46-9]|[457]\\d|8[13-9]|9[2-579])\\d{2,9}", , , , "27123456"], [, , "6(?:[269][18]|5[1568]|7[189]|81)\\d{6}", , , , "628123456", , , [9]], [, , "800\\d{5}", , , , "80012345", , , [8]], [, , "90[015]\\d{5}", , , , "90012345", , , [8]], [, , "801\\d{5}", , , , "80112345", , , [8]], [, , , , , , , , , [-1]], [ + , + , + "20(?:1\\d{5}|[2-689]\\d{1,7})", + , + , + , + "20201234", + , + , + [4, 5, 6, 7, 8, 9, 10] + ], "LU", 352, "00", , , , "(15(?:0[06]|1[12]|[35]5|4[04]|6[26]|77|88|99)\\d)", , , , [[, "(\\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])"], , "$CC $1"], [, "(\\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])"], , "$CC $1"], [, "(\\d{2})(\\d{2})(\\d{3})", "$1 $2 $3", ["20[2-689]"], , "$CC $1"], [, "(\\d{2})(\\d{2})(\\d{2})(\\d{1,2})", "$1 $2 $3 $4", ["2(?:[0367]|4[3-8])"], , "$CC $1"], [ + , + "(\\d{3})(\\d{2})(\\d{3})", + "$1 $2 $3", + ["80[01]|90[015]"], + , + "$CC $1" + ], [, "(\\d{2})(\\d{2})(\\d{2})(\\d{3})", "$1 $2 $3 $4", ["20"], , "$CC $1"], [, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["6"], , "$CC $1"], [, "(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{1,2})", "$1 $2 $3 $4 $5", ["2(?:[0367]|4[3-8])"], , "$CC $1"], [, "(\\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]"], , "$CC $1"]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + LV: [, [, , "(?:[268]\\d|78|90)\\d{6}", , , , , , , [8]], [ + , + , + "6\\d{7}", + , + , + , + "63123456" + ], [, , "2333[0-8]\\d{3}|2(?:[0-24-9]\\d\\d|3(?:0[07]|[14-9]\\d|2[02-9]|3[0-24-9]))\\d{4}", , , , "21234567"], [, , "80\\d{6}", , , , "80123456"], [, , "90\\d{6}", , , , "90123456"], [, , "81\\d{6}", , , , "81123456"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "LV", 371, "00", , , , , , , , [[, "(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["[2679]|8[01]"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + LY: [, [, , "[2-9]\\d{8}", , , , , , , [9], [7]], [ + , + , + "(?:2(?:0[56]|[1-6]\\d|7[124579]|8[124])|3(?:1\\d|2[2356])|4(?:[17]\\d|2[1-357]|5[2-4]|8[124])|5(?:[1347]\\d|2[1-469]|5[13-5]|8[1-4])|6(?:[1-479]\\d|5[2-57]|8[1-5])|7(?:[13]\\d|2[13-79])|8(?:[124]\\d|5[124]|84))\\d{6}", + , + , + , + "212345678", + , + , + , + [7] + ], [, , "9[1-6]\\d{7}", , , , "912345678"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "LY", 218, "00", "0", , , "0", , , , [[, "(\\d{2})(\\d{7})", "$1-$2", ["[2-9]"], "0$1"]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + MA: [, [, , "[5-8]\\d{8}", , , , , , , [9]], [, , "5(?: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])|(?:4[067]|5[03])\\d)\\d{5}", , , , "520123456"], [ + , + , + "(?:6(?:[0-79]\\d|8[0-247-9])|7(?:[0167]\\d|2[0-8]|5[0-5]|8[0-7]))\\d{6}", + , + , + , + "650123456" + ], [, , "80[0-7]\\d{6}", , , , "801234567"], [, , "89\\d{7}", , , , "891234567"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , "(?:592(?:4[0-2]|93)|80[89]\\d\\d)\\d{4}", , , , "592401234"], "MA", 212, "00", "0", , , "0", , , , [[, "(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["5[45]"], "0$1"], [, "(\\d{4})(\\d{5})", "$1-$2", ["5(?:2[2-46-9]|3[3-9]|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"]], , [, , , , , , , , , [-1]], 1, , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [ + , + , + , + , + , + , + , + , + , + [-1] + ]], + MC: [, [, , "(?:[3489]|6\\d)\\d{7}", , , , , , , [8, 9]], [, , "(?:870|9[2-47-9]\\d)\\d{5}", , , , "99123456", , , [8]], [, , "4(?:[469]\\d|5[1-9])\\d{5}|(?:3|6\\d)\\d{7}", , , , "612345678"], [, , "(?:800|90\\d)\\d{5}", , , , "90123456", , , [8]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "MC", 377, "00", "0", , , "0", , , , [[, "(\\d{3})(\\d{3})(\\d{2})", "$1 $2 $3", ["87"]], [, "(\\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", + ["6"], + "0$1" + ]], [[, "(\\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", ["6"], "0$1"]], [, , , , , , , , , [-1]], , , [, , "8[07]0\\d{5}", , , , , , , [8]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + MD: [, [, , "(?:[235-7]\\d|[89]0)\\d{6}", , , , , , , [8]], [, , "(?:(?:2[1-9]|3[1-79])\\d|5(?:33|5[257]))\\d{5}", , , , "22212345"], [, , "562\\d{5}|(?:6\\d|7[16-9])\\d{6}", , , , "62112345"], [, , "800\\d{5}", , , , "80012345"], [ + , + , + "90[056]\\d{5}", + , + , + , + "90012345" + ], [, , "808\\d{5}", , , , "80812345"], [, , , , , , , , , [-1]], [, , "3[08]\\d{6}", , , , "30123456"], "MD", 373, "00", "0", , , "0", , , , [[, "(\\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"]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , "803\\d{5}", , , , "80312345"], , , [, , , , , , , , , [-1]]], + ME: [, [, , "(?:20|[3-79]\\d)\\d{6}|80\\d{6,7}", , , , , , , [8, 9], [6]], [ + , + , + "(?:20[2-8]|3(?:[0-2][2-7]|3[24-7])|4(?:0[2-467]|1[2467])|5(?:0[2467]|1[24-7]|2[2-467]))\\d{5}", + , + , + , + "30234567", + , + , + [8], + [6] + ], [, , "6(?:[07-9]\\d|3[024]|6[0-25])\\d{5}", , , , "60123456", , , [8]], [, , "80(?:[0-2578]|9\\d)\\d{5}", , , , "80080002"], [, , "9(?:4[1568]|5[178])\\d{5}", , , , "94515151", , , [8]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , "78[1-49]\\d{5}", , , , "78108780", , , [8]], "ME", 382, "00", "0", , , "0", , , , [[, "(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[2-9]"], "0$1"]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , "77[1-9]\\d{5}", , , , "77273012", , , [8]], , , [, , , , , , , , , [-1]]], + MF: [ + , + [, , "(?:590\\d|7090)\\d{5}|(?:69|80|9\\d)\\d{7}", , , , , , , [9]], + [, , "590(?:0[079]|[14]3|[27][79]|3[03-7]|5[0-268]|87)\\d{4}", , , , "590271234"], + [, , "(?: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}", , , , "690001234"], + [, , "80[0-5]\\d{6}", , , , "800012345"], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , "9(?:(?:39[5-7]|76[018])\\d|475[0-6])\\d{4}", , , , "976012345"], + "MF", + 590, + "00", + "0", + , + , + "0", + , + , + , + , + , + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]] + ], + MG: [, [, , "[23]\\d{8}", , , , , , , [9], [7]], [ + , + , + "2072[29]\\d{4}|20(?:2\\d|4[47]|5[3467]|6[279]|7[356]|8[268]|9[2457])\\d{5}", + , + , + , + "202123456", + , + , + , + [7] + ], [, , "3[2-46-9]\\d{7}", , , , "321234567"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , "22\\d{7}", , , , "221234567"], "MG", 261, "00", "0", , , "([24-9]\\d{6})$|0", "20$1", , , [[, "(\\d{2})(\\d{2})(\\d{3})(\\d{2})", "$1 $2 $3 $4", ["[23]"], "0$1"]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + MH: [ + , + [, , "329\\d{4}|(?:[256]\\d|45)\\d{5}", , , , , , , [7]], + [, , "(?:247|528|625)\\d{4}", , , , "2471234"], + [, , "(?:(?:23|54)5|329|45[35-8])\\d{4}", , , , "2351234"], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , "635\\d{4}", , , , "6351234"], + "MH", + 692, + "011", + "1", + , + , + "1", + , + , + , + [[, "(\\d{3})(\\d{4})", "$1-$2", ["[2-6]"]]], + , + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]] + ], + MK: [, [, , "[2-578]\\d{7}", , , , , , , [8], [6, 7]], [, , "(?:(?:2(?:62|77)0|3444)\\d|4[56]440)\\d{3}|(?:34|4[357])700\\d{3}|(?:2(?:[0-3]\\d|5[0-578]|6[01]|82)|3(?:1[3-68]|[23][2-68]|4[23568])|4(?:[23][2-68]|4[3-68]|5[2568]|6[25-8]|7[24-68]|8[4-68]))\\d{5}", , , , "22012345", , , , [6, 7]], [ + , + , + "7(?:3555|(?:474|9[019]7)7)\\d{3}|7(?:[0-25-8]\\d\\d|3(?:[1-478]\\d|6[01])|4(?:2\\d|60|7[01578])|9(?:[2-4]\\d|5[01]|7[015]))\\d{4}", + , + , + , + "72345678" + ], [, , "800\\d{5}", , , , "80012345"], [, , "5\\d{7}", , , , "50012345"], [, , "8(?:0[1-9]|[1-9]\\d)\\d{5}", , , , "80123456"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "MK", 389, "00", "0", , , "0", , , , [[, "(\\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"]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + ML: [, [, , "[24-9]\\d{7}", , , , , , , [8]], [ + , + , + "2(?:07[0-8]|12[67])\\d{4}|(?:2(?:02|1[4-689])|4(?:0[0-4]|4[1-59]))\\d{5}", + , + , + , + "20212345" + ], [, , "2(?:0(?:01|79)|17\\d)\\d{4}|(?:5[0-3]|[679]\\d|8[2-59])\\d{6}", , , , "65012345"], [, , "80\\d{6}", , , , "80012345"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "ML", 223, "00", , , , , , , , [[, "(\\d{4})", "$1", ["67[057-9]|74[045]", "67(?:0[09]|[59]9|77|8[89])|74(?:0[02]|44|55)"]], [, "(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[24-9]"]]], [[, "(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[24-9]"]]], [, , , , , , , , , [-1]], , , [, , "80\\d{6}"], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + MM: [ + , + [, , "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], [5]], + [ + , + , + "(?:1(?:(?:12|[28]\\d|3[56]|7[3-6]|9[0-6])\\d|4(?:2[29]|7[0-2]|83)|6)|2(?:2(?:00|8[34])|4(?:0\\d|22|7[0-2]|83)|51\\d\\d)|4(?:2(?:2\\d\\d|48[013])|3(?:20\\d|4(?:70|83)|56)|420\\d|5(?:2\\d|470))|6(?:0(?:[23]|88\\d)|(?:124|[56]2\\d)\\d|2472|3(?:20\\d|470)|4(?:2[04]\\d|472)|7(?:3\\d\\d|4[67]0|8(?:[01459]\\d|8))))\\d{4}|5(?:2(?:2\\d{5,6}|47[02]\\d{4})|(?:3472|4(?:2(?:1|86)|470)|522\\d|6(?:20\\d|483)|7(?:20\\d|48[01])|8(?:20\\d|47[02])|9(?:20\\d|470))\\d{4})|7(?:(?:0470|4(?:25\\d|470)|5(?:202|470|96\\d))\\d{4}|1(?:20\\d{4,5}|4(?:70|83)\\d{4}))|8(?:1(?:2\\d{5,6}|4(?:10|7[01]\\d)\\d{3})|2(?:2\\d{5,6}|(?:320|490\\d)\\d{3})|(?:3(?:2\\d\\d|470)|4[24-7]|5(?:(?:2\\d|51)\\d|4(?:[1-35-9]\\d|4[0-57-9]))|6[23])\\d{4})|(?:1[2-6]\\d|4(?:2[24-8]|3[2-7]|[46][2-6]|5[3-5])|5(?:[27][2-8]|3[2-68]|4[24-8]|5[23]|6[2-4]|8[24-7]|9[2-7])|6(?:[19]20|42[03-6]|(?:52|7[45])\\d)|7(?:[04][24-8]|[15][2-7]|22|3[2-4])|8(?:1[2-689]|2[2-8]|(?:[35]2|64)\\d))\\d{4}|25\\d{5,6}|(?:2[2-9]|6(?:1[2356]|[24][2-6]|3[24-6]|5[2-4]|6[2-8]|7[235-7]|8[245]|9[24])|8(?:3[24]|5[245]))\\d{4}", + , + , + , + "1234567", + , + , + [6, 7, 8, 9], + [5] + ], + [, , "(?:17[01]|9(?:2(?:[0-4]|[56]\\d\\d)|(?:3(?:[0-36]|4\\d)|(?:6\\d|8[89]|9[4-8])\\d|7(?:3|40|[5-9]\\d))\\d|4(?:(?:[0245]\\d|[1379])\\d|88)|5[0-6])\\d)\\d{4}|9[69]1\\d{6}|9(?:[68]\\d|9[089])\\d{5}", , , , "92123456", , , [7, 8, 9, 10]], + [, , "80080(?:0[1-9]|2\\d)\\d{3}", , , , "8008001234", , , [10]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , "1333\\d{4}", , , , "13331234", , , [8]], + "MM", + 95, + "00", + "0", + , + , + "0", + , + , + , + [[, "(\\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" + ]], + , + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]] + ], + MN: [, [, , "[12]\\d{7,9}|[5-9]\\d{7}", , , , , , , [8, 9, 10], [4, 5, 6]], [, , "[12]2[1-3]\\d{5,6}|(?:(?:[12](?:1|27)|5[368])\\d\\d|7(?:0(?:[0-5]\\d|7[078]|80)|128))\\d{4}|[12](?:3[2-8]|4[2-68]|5[1-4689])\\d{6,7}", , , , "53123456", , , , [4, 5, 6]], [, , "92[0139]\\d{5}|(?:5[05]|6[069]|7[28]|8[0135689]|9[013-9])\\d{6}", , , , "88123456", , , [8]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [ + , + , + "712[0-79]\\d{4}|7(?:1[013-9]|[5-79]\\d)\\d{5}", + , + , + , + "75123456", + , + , + [8] + ], "MN", 976, "001", "0", , , "0", , , , [[, "(\\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"]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + MO: [, [, , "0800\\d{3}|(?:28|[68]\\d)\\d{6}", , , , , , , [7, 8]], [ + , + , + "(?:28[2-9]|8(?:11|[2-57-9]\\d))\\d{5}", + , + , + , + "28212345", + , + , + [8] + ], [, , "6800[0-79]\\d{3}|6(?:[235]\\d\\d|6(?:0[0-5]|[1-9]\\d)|8(?:0[1-9]|[14-8]\\d|2[5-9]|[39][0-4]))\\d{4}", , , , "66123456", , , [8]], [, , "0800\\d{3}", , , , "0800501", , , [7]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "MO", 853, "00", , , , , , , , [[, "(\\d{4})(\\d{3})", "$1 $2", ["0"]], [, "(\\d{4})(\\d{4})", "$1 $2", ["[268]"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + MP: [, [, , "[58]\\d{9}|(?:67|90)0\\d{7}", , , , , , , [10], [7]], [ + , + , + "670(?:2(?:3[3-7]|56|8[4-8])|32[1-38]|4(?:33|8[348])|5(?:32|55|88)|6(?:64|70|82)|78[3589]|8[3-9]8|989)\\d{4}", + , + , + , + "6702345678", + , + , + , + [7] + ], [, , "670(?:2(?:3[3-7]|56|8[4-8])|32[1-38]|4(?:33|8[348])|5(?:32|55|88)|6(?:64|70|82)|78[3589]|8[3-9]8|989)\\d{4}", , , , "6702345678", , , , [7]], [, , "8(?:00|33|44|55|66|77|88)[2-9]\\d{6}", , , , "8002123456"], [, , "900[2-9]\\d{6}", , , , "9002123456"], [, , , , , , , , , [-1]], [ + , + , + "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}", + , + , + , + "5002345678" + ], [, , , , , , , , , [-1]], "MP", 1, "011", "1", , , "([2-9]\\d{6})$|1", "670$1", , 1, , , [, , , , , , , , , [-1]], , "670", [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + MQ: [, [, , "(?:596\\d|7091)\\d{5}|(?:69|[89]\\d)\\d{7}", , , , , , , [9]], [, , "(?:596(?:[03-7]\\d|1[05]|2[7-9]|8[0-39]|9[04-9])|80[6-9]\\d\\d|9(?:477[6-9]|767[4589]))\\d{4}", , , , "596301234"], [, , "(?:69[67]\\d\\d|7091[0-3])\\d{4}", , , , "696201234"], [, , "80[0-5]\\d{6}", , , , "800012345"], [, , "8[129]\\d{7}", , , , "810123456"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [ + , + , + "9(?:397[0-3]|477[0-5]|76(?:6\\d|7[0-367]))\\d{4}", + , + , + , + "976612345" + ], "MQ", 596, "00", "0", , , "0", , , , [[, "(\\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"]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + MR: [ + , + [, , "(?:[2-4]\\d\\d|800)\\d{5}", , , , , , , [8]], + [, , "(?:25[08]|35\\d|45[1-7])\\d{5}", , , , "35123456"], + [, , "[2-4][0-46-9]\\d{6}", , , , "22123456"], + [, , "800\\d{5}", , , , "80012345"], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + "MR", + 222, + "00", + , + , + , + , + , + , + , + [[, "(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[2-48]"]]], + , + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]] + ], + MS: [, [, , "(?:[58]\\d\\d|664|900)\\d{7}", , , , , , , [10], [7]], [, , "6644(?:1[0-3]|91)\\d{4}", , , , "6644912345", , , , [7]], [, , "664(?:3(?:49|9[1-6])|49[2-6])\\d{4}", , , , "6644923456", , , , [7]], [, , "8(?:00|33|44|55|66|77|88)[2-9]\\d{6}", , , , "8002123456"], [, , "900[2-9]\\d{6}", , , , "9002123456"], [, , , , , , , , , [-1]], [ + , + , + "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}", + , + , + , + "5002345678" + ], [, , , , , , , , , [-1]], "MS", 1, "011", "1", , , "([34]\\d{6})$|1", "664$1", , , , , [, , , , , , , , , [-1]], , "664", [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + MT: [, [, , "3550\\d{4}|(?:[2579]\\d\\d|800)\\d{5}", , , , , , , [8]], [, , "20(?:3[1-4]|6[059])\\d{4}|2(?:0[19]|[1-357]\\d|60)\\d{5}", , , , "21001234"], [, , "(?:7(?:210|[79]\\d\\d)|9(?:[29]\\d\\d|69[67]|8(?:1[1-3]|89|97)))\\d{4}", , , , "96961234"], [, , "800(?:02|[3467]\\d)\\d{3}", , , , "80071234"], [ + , + , + "5(?:0(?:0(?:37|43)|(?:6\\d|70|9[0168])\\d)|[12]\\d0[1-5])\\d{3}", + , + , + , + "50037123" + ], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , "3550\\d{4}", , , , "35501234"], "MT", 356, "00", , , , , , , , [[, "(\\d{4})(\\d{4})", "$1 $2", ["[2357-9]"]]], , [, , "7117\\d{4}", , , , "71171234"], , , [, , , , , , , , , [-1]], [, , "501\\d{5}", , , , "50112345"], , , [, , , , , , , , , [-1]]], + MU: [, [, , "(?:[57]|8\\d\\d)\\d{7}|[2-468]\\d{6}", , , , , , , [7, 8, 10]], [, , "(?:2(?:[0346-8]\\d|1[0-8])|4(?:[013568]\\d|2[4-8]|71|90)|54(?:[3-5]\\d|71)|6\\d\\d|8(?:14|3[129]))\\d{4}", , , , "54480123", , , [7, 8]], [ + , + , + "5(?:4(?:2[1-389]|7[1-9])|87[15-8])\\d{4}|(?:5(?:2[5-9]|4[3-689]|[57]\\d|8[0-689]|9[0-8])|7(?:0[0-6]|3[013]))\\d{5}", + , + , + , + "52512345", + , + , + [8] + ], [, , "802\\d{7}|80[0-2]\\d{4}", , , , "8001234", , , [7, 10]], [, , "30\\d{5}", , , , "3012345", , , [7]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , "3(?:20|9\\d)\\d{4}", , , , "3201234", , , [7]], "MU", 230, "0(?:0|[24-7]0|3[03])", , , , , , "020", , [[, "(\\d{3})(\\d{4})", "$1 $2", ["[2-46]|8[013]"]], [, "(\\d{4})(\\d{4})", "$1 $2", ["[57]"]], [, "(\\d{5})(\\d{5})", "$1 $2", ["8"]]], , [, , "219\\d{4}", , , , "2190123", , , [7]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + MV: [, [, , "(?:800|9[0-57-9]\\d)\\d{7}|[34679]\\d{6}", , , , , , , [ + 7, + 10 + ]], [, , "(?:3(?:0[0-4]|3[0-59])|6(?:[58][024689]|6[024-68]|7[02468]))\\d{4}", , , , "6701234", , , [7]], [, , "(?:46[46]|[79]\\d\\d)\\d{4}", , , , "7712345", , , [7]], [, , "800\\d{7}", , , , "8001234567", , , [10]], [, , "900\\d{7}", , , , "9001234567", , , [10]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "MV", 960, "0(?:0|19)", , , , , , "00", , [[, "(\\d{3})(\\d{4})", "$1-$2", ["[34679]"]], [, "(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["[89]"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , "4(?:0[01]|50)\\d{4}", , , , "4001234", , , [7]], , , [, , , , , , , , , [-1]]], + MW: [ + , + [, , "(?:[1289]\\d|31|77)\\d{7}|1\\d{6}", , , , , , , [7, 9]], + [, , "(?:1[2-9]|2[12]\\d\\d)\\d{5}", , , , "1234567"], + [, , "111\\d{6}|(?:31|77|[89][89])\\d{7}", , , , "991234567", , , [9]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + "MW", + 265, + "00", + "0", + , + , + "0", + , + , + , + [[, "(\\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"]], + , + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]] + ], + MX: [ + , + [, , "[2-9]\\d{9}", , , , , , , [10], [7, 8]], + [ + , + , + "(?:2(?:0[01]|2\\d|3[1-35-8]|4[13-9]|7[1-689]|8[1-578]|9[467])|3(?:1[1-79]|[2458][1-9]|3\\d|7[1-8]|9[1-5])|4(?:1[1-57-9]|[267][1-9]|3[1-8]|[45]\\d|8[1-35-9]|9[2-689])|5(?:[56]\\d|88|9[1-79])|6(?:1[2-68]|[2-4][1-9]|5[1-36-9]|6[0-57-9]|7[1-7]|8[67]|9[4-8])|7(?:[1346][1-9]|[27]\\d|5[13-9]|8[1-69]|9[17])|8(?:1\\d|2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[0-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|[69]\\d|7[12]|8[1-8]))\\d{7}", + , + , + , + "2001234567", + , + , + , + [7, 8] + ], + [, , "(?:2(?:2\\d|3[1-35-8]|4[13-9]|7[1-689]|8[1-578]|9[467])|3(?:1[1-79]|[2458][1-9]|3\\d|7[1-8]|9[1-5])|4(?:1[1-57-9]|[267][1-9]|3[1-8]|[45]\\d|8[1-35-9]|9[2-689])|5(?:[56]\\d|88|9[1-79])|6(?:1[2-68]|[2-4][1-9]|5[1-36-9]|6[0-57-9]|7[1-7]|8[67]|9[4-8])|7(?:[1346][1-9]|[27]\\d|5[13-9]|8[1-69]|9[17])|8(?:1\\d|2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[0-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|[69]\\d|7[12]|8[1-8]))\\d{7}", , , , "2221234567", , , , [7, 8]], + [, , "8(?:00|88)\\d{7}", , , , "8001234567"], + [, , "900\\d{7}", , , , "9001234567"], + [, , "300\\d{7}", , , , "3001234567"], + [, , "500\\d{7}", , , , "5001234567"], + [, , , , , , , , , [-1]], + "MX", + 52, + "0[09]", + , + , + , + , + , + "00", + , + [[, "(\\d{5})", "$1", ["53"]], [, "(\\d{2})(\\d{4})(\\d{4})", "$1 $2 $3", ["33|5[56]|81"]], [, "(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["[2-9]"]]], + [[, "(\\d{2})(\\d{4})(\\d{4})", "$1 $2 $3", ["33|5[56]|81"]], [, "(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["[2-9]"]]], + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]] + ], + MY: [, [ + , + , + "1\\d{8,9}|(?:3\\d|[4-9])\\d{7}", + , + , + , + , + , + , + [8, 9, 10], + [6, 7] + ], [, , "427[01]\\d{4}|(?:3(?:2[0-36-9]|3[0-368]|4[0-278]|5[0-24-8]|6[0-467]|7[1246-9]|8\\d|9[0-57])\\d|4(?:2[0-689]|[3-79]\\d|8[1-35689])|5(?:2[0-589]|[3468]\\d|5[0-489]|7[1-9]|9[23])|6(?:2[2-9]|3[1357-9]|[46]\\d|5[0-6]|7[0-35-9]|85|9[015-8])|7(?:[2579]\\d|3[03-68]|4[0-8]|6[5-9]|8[0-35-9])|8(?:[24][2-8]|3[2-5]|5[2-7]|6[2-589]|7[2-578]|[89][2-9])|9(?:0[57]|13|[25-7]\\d|[3489][0-8]))\\d{5}", , , , "323856789", , , [8, 9], [6, 7]], [ + , + , + "1(?:1888[689]|4400|8(?:47|8[27])[0-4])\\d{4}|1(?:0(?:[23568]\\d|4[0-6]|7[016-9]|9[0-8])|1(?:[1-5]\\d\\d|6(?:0[5-9]|[1-9]\\d)|7(?:[0-4]\\d|5[0-7]))|(?:[269]\\d|[37][1-9]|4[235-9])\\d|5(?:31|9\\d\\d)|8(?:1[23]|[236]\\d|4[06]|5(?:46|[7-9])|7[016-9]|8[01]|9[0-8]))\\d{5}", + , + , + , + "123456789", + , + , + [9, 10] + ], [, , "1[378]00\\d{6}", , , , "1300123456", , , [10]], [, , "1600\\d{6}", , , , "1600123456", , , [10]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , "15(?:4(?:6[0-4]\\d|8(?:0[125]|[17]\\d|21|3[01]|4[01589]|5[014]|6[02]))|6(?:32[0-6]|78\\d))\\d{4}", , , , "1546012345", , , [10]], "MY", 60, "00", "0", , , "0", , , , [[, "(\\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"]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + MZ: [ + , + [, , "(?:2|8\\d)\\d{7}", , , , , , , [8, 9]], + [, , "2(?:[1346]\\d|5[0-2]|[78][12]|93)\\d{5}", , , , "21123456", , , [8]], + [, , "8[2-79]\\d{7}", , , , "821234567", , , [9]], + [, , "800\\d{6}", , , , "800123456", , , [9]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + "MZ", + 258, + "00", + , + , + , + , + , + , + , + [[, "(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["2|8[2-79]"]], [, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["8"]]], + , + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]] + ], + NA: [, [, , "[68]\\d{7,8}", , , , , , , [8, 9]], [ + , + , + "64426\\d{3}|6(?:1(?:2[2-7]|3[01378]|4[0-4])|254|32[0237]|4(?:27|41|5[25])|52[236-8]|626|7(?:2[2-4]|30))\\d{4,5}|6(?:1(?:(?:0\\d|2[0189]|3[24-69]|4[5-9])\\d|17|69|7[014])|2(?:17|5[0-36-8]|69|70)|3(?:17|2[14-689]|34|6[289]|7[01]|81)|4(?:17|2[0-2]|4[06]|5[0137]|69|7[01])|5(?:17|2[0459]|69|7[01])|6(?:17|25|38|42|69|7[01])|7(?:17|2[569]|3[13]|6[89]|7[01]))\\d{4}", + , + , + , + "61221234" + ], [, , "(?:60|8[1245])\\d{7}", , , , "811234567", , , [9]], [, , "80\\d{7}", , , , "800123456", , , [9]], [, , "8701\\d{5}", , , , "870123456", , , [9]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , "8(?:3\\d\\d|86)\\d{5}", , , , "88612345"], "NA", 264, "00", "0", , , "0", , , , [[, "(\\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"]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [ + , + , + , + , + , + , + , + , + , + [-1] + ], , , [, , , , , , , , , [-1]]], + NC: [, [, , "(?:050|[2-57-9]\\d\\d)\\d{3}", , , , , , , [6]], [, , "(?:2[03-9]|3[0-5]|4[1-7]|88)\\d{4}", , , , "201234"], [, , "(?:[579]\\d|8[0-79])\\d{4}", , , , "751234"], [, , "050\\d{3}", , , , "050012"], [, , "36\\d{4}", , , , "366711"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "NC", 687, "00", , , , , , , , [[, "(\\d{3})", "$1", ["5[6-8]"]], [, "(\\d{2})(\\d{2})(\\d{2})", "$1.$2.$3", ["[02-57-9]"]]], [[, "(\\d{2})(\\d{2})(\\d{2})", "$1.$2.$3", ["[02-57-9]"]]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [ + , + , + , + , + , + , + , + , + , + [-1] + ]], + NE: [, [, , "[027-9]\\d{7}", , , , , , , [8]], [, , "2(?:0(?:20|3[1-8]|4[13-5]|5[14]|6[14578]|7[1-578])|1(?:4[145]|5[14]|6[14-68]|7[169]|88))\\d{4}", , , , "20201234"], [, , "(?:23|7[0467]|[89]\\d)\\d{6}", , , , "93123456"], [, , "08\\d{6}", , , , "08123456"], [, , "09\\d{6}", , , , "09123456"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "NE", 227, "00", , , , , , , , [[, "(\\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]"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [ + , + , + , + , + , + , + , + , + , + [-1] + ], , , [, , , , , , , , , [-1]]], + NF: [, [, , "[13]\\d{5}", , , , , , , [6], [5]], [, , "(?:1(?:06|17|28|39)|3[0-2]\\d)\\d{3}", , , , "106609", , , , [5]], [, , "(?:14|3[58])\\d{4}", , , , "381234", , , , [5]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "NF", 672, "00", , , , "([0-258]\\d{4})$", "3$1", , , [[, "(\\d{2})(\\d{4})", "$1 $2", ["1[0-3]"]], [, "(\\d)(\\d{5})", "$1 $2", ["[13]"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + NG: [, [, , "(?:20|9\\d)\\d{8}|[78]\\d{9,13}", , , , , , , [ + 10, + 11, + 12, + 13, + 14 + ], [6, 7]], [, , "20(?:[1259]\\d|3[013-9]|4[1-8]|6[024-689]|7[1-79]|8[2-9])\\d{6}", , , , "2033123456", , , [10], [6, 7]], [, , "(?:702[0-24-9]|819[01])\\d{6}|(?:7(?:0[13-9]|[12]\\d)|8(?:0[1-9]|1[0-8])|9(?:0[1-9]|1[1-6]))\\d{7}", , , , "8021234567", , , [10]], [, , "800\\d{7,11}", , , , "80017591759"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "NG", 234, "009", "0", , , "0", , , , [[, "(\\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"]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , "700\\d{7,11}", , , , "7001234567"], , , [, , , , , , , , , [-1]]], + NI: [, [, , "(?:1800|[25-8]\\d{3})\\d{4}", , , , , , , [8]], [, , "2\\d{7}", , , , "21234567"], [, , "(?:5(?:5[0-7]|[78]\\d)|6(?:20|3[035]|4[045]|5[05]|77|8[1-9]|9[059])|(?:7[5-8]|8\\d)\\d)\\d{5}", , , , "81234567"], [, , "1800\\d{4}", , , , "18001234"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [ + , + , + , + , + , + , + , + , + , + [-1] + ], "NI", 505, "00", , , , , , , , [[, "(\\d{4})(\\d{4})", "$1 $2", ["[125-8]"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + NL: [, [, , "(?:[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]], [ + , + , + "(?:1(?:[035]\\d|1[13-578]|6[124-8]|7[24]|8[0-467])|2(?:[0346]\\d|2[2-46-9]|5[125]|9[479])|3(?:[03568]\\d|1[3-8]|2[01]|4[1-8])|4(?:[0356]\\d|1[1-368]|7[58]|8[15-8]|9[23579])|5(?:[0358]\\d|[19][1-9]|2[1-57-9]|4[13-8]|6[126]|7[0-3578])|7\\d\\d)\\d{6}", + , + , + , + "101234567", + , + , + [9] + ], [, , "(?:6[1-58]|970\\d)\\d{7}", , , , "612345678", , , [9, 11]], [, , "800\\d{4,7}", , , , "8001234", , , [7, 8, 9, 10]], [, , "90[069]\\d{4,7}", , , , "9061234", , , [7, 8, 9, 10]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , "(?:85|91)\\d{7}", , , , "851234567", , , [9]], "NL", 31, "00", "0", , , "0", , , , [[, "(\\d{4})", "$1", ["1[238]|[34]"]], [, "(\\d{2})(\\d{3,4})", "$1 $2", ["14"]], [, "(\\d{6})", "$1", ["1"]], [, "(\\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"]], [[, "(\\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" + ]], [, , "66\\d{7}", , , , "662345678", , , [9]], , , [, , "140(?:1[035]|2[0346]|3[03568]|4[0356]|5[0358]|8[458])|140(?:1[16-8]|2[259]|3[124]|4[17-9]|5[124679]|7)\\d", , , , , , , [5, 6]], [, , "140(?:1[035]|2[0346]|3[03568]|4[0356]|5[0358]|8[458])|(?:140(?:1[16-8]|2[259]|3[124]|4[17-9]|5[124679]|7)|8[478]\\d{6})\\d", , , , "14020", , , [5, 6, 9]], , , [, , , , , , , , , [-1]]], + NO: [, [, , "(?:0|[2-9]\\d{3})\\d{4}", , , , , , , [5, 8]], [, , "(?:2[1-4]|3[1-3578]|5[1-35-7]|6[1-4679]|7[0-8])\\d{6}", , , , "21234567", , , [8]], [ + , + , + "(?:4[015-8]|9\\d)\\d{6}", + , + , + , + "40612345", + , + , + [8] + ], [, , "80[01]\\d{5}", , , , "80012345", , , [8]], [, , "82[09]\\d{5}", , , , "82012345", , , [8]], [, , "810(?:0[0-6]|[2-8]\\d)\\d{3}", , , , "81021234", , , [8]], [, , "880\\d{5}", , , , "88012345", , , [8]], [, , "85[0-5]\\d{5}", , , , "85012345", , , [8]], "NO", 47, "00", , , , , , , , [[, "(\\d{3})(\\d{2})(\\d{3})", "$1 $2 $3", ["8"]], [, "(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[2-79]"]]], , [, , , , , , , , , [-1]], 1, "[02-689]|7[0-8]", [, , , , , , , , , [-1]], [, , "(?:0[235-9]|81(?:0(?:0[7-9]|1\\d)|5\\d\\d))\\d{3}", , , , "02000"], , , [ + , + , + "81[23]\\d{5}", + , + , + , + "81212345", + , + , + [8] + ]], + NP: [, [, , "(?:1\\d|9)\\d{9}|[1-9]\\d{7}", , , , , , , [8, 10, 11], [6, 7]], [, , "(?:1[0-6]\\d|99[02-6])\\d{5}|(?:2[13-79]|3[135-8]|4[146-9]|5[135-7]|6[13-9]|7[15-9]|8[1-46-9]|9[1-7])[2-6]\\d{5}", , , , "14567890", , , [8], [6, 7]], [, , "9(?:00|6[0-3]|7[0-24-6]|8[0-24-68])\\d{7}", , , , "9841234567", , , [10]], [, , "1(?:66001|800\\d\\d)\\d{5}", , , , "16600101234", , , [11]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "NP", 977, "00", "0", , , "0", , , , [[, "(\\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"]], [, "(\\d{4})(\\d{2})(\\d{5})", "$1-$2-$3", ["1"]]], [[, "(\\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"]]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + NR: [, [, , "(?:222|444|(?:55|8\\d)\\d|666|777|999)\\d{4}", , , , , , , [7]], [, , "444\\d{4}", , , , "4441234"], [ + , + , + "(?:222|55[3-9]|666|777|8\\d\\d|999)\\d{4}", + , + , + , + "5551234" + ], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "NR", 674, "00", , , , , , , , [[, "(\\d{3})(\\d{4})", "$1 $2", ["[24-9]"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + NU: [ + , + [, , "(?:[4-7]|888\\d)\\d{3}", , , , , , , [4, 7]], + [, , "[47]\\d{3}", , , , "7012", , , [4]], + [, , "(?:[56]|888[1-9])\\d{3}", , , , "8884012"], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + "NU", + 683, + "00", + , + , + , + , + , + , + , + [[, "(\\d{3})(\\d{4})", "$1 $2", ["8"]]], + , + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]] + ], + NZ: [ + , + [, , "[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]], + [, , "240\\d{5}|(?:3[2-79]|[49][2-9]|6[235-9]|7[2-57-9])\\d{6}", , , , "32345678", , , [8], [7]], + [, , "2(?:[0-27-9]\\d|6)\\d{6,7}|2(?:1\\d|75)\\d{5}", , , , "211234567", , , [8, 9, 10]], + [, , "508\\d{6,7}|80\\d{6,8}", , , , "800123456", , , [8, 9, 10]], + [, , "(?:1[13-57-9]\\d{5}|50(?:0[08]|30|66|77|88))\\d{3}|90\\d{6,8}", , , , "900123456", , , [7, 8, 9, 10]], + [, , , , , , , , , [-1]], + [, , "70\\d{7}", , , , "701234567", , , [9]], + [, , , , , , , , , [-1]], + "NZ", + 64, + "0(?:0|161)", + "0", + , + , + "0", + , + "00", + , + [[, "(\\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" + ]], + , + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]], + [, , "8(?:1[16-9]|22|3\\d|4[045]|5[459]|6[235-9]|7[0-3579]|90)\\d{2,7}", , , , "83012378"], + , + , + [, , , , , , , , , [-1]] + ], + OM: [ + , + [, , "(?:1505|[279]\\d{3}|500)\\d{4}|800\\d{5,6}", , , , , , , [7, 8, 9]], + [, , "2[1-6]\\d{6}", , , , "23123456", , , [8]], + [, , "1505\\d{4}|(?:7(?:[125-9]\\d|41)|9(?:0[1-9]|[1-9]\\d))\\d{5}", , , , "92123456", , , [8]], + [, , "8007\\d{4,5}|(?:500|800[05])\\d{4}", , , , "80071234"], + [, , "900\\d{5}", , , , "90012345", , , [8]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + "OM", + 968, + "00", + , + , + , + , + , + , + , + [[, "(\\d{3})(\\d{4,6})", "$1 $2", ["[58]"]], [, "(\\d{2})(\\d{6})", "$1 $2", ["2"]], [, "(\\d{4})(\\d{4})", "$1 $2", ["[179]"]]], + , + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]] + ], + PA: [, [, , "(?:00800|8\\d{3})\\d{6}|[68]\\d{7}|[1-57-9]\\d{6}", , , , , , , [7, 8, 10, 11]], [ + , + , + "(?:1(?:0\\d|1[0479]|2[37]|3[0137]|4[17]|5[05]|6[058]|7[0167]|8[2358]|9[1389])|2(?:[0235-79]\\d|1[0-7]|4[013-9]|8[02-9])|3(?:[047-9]\\d|1[0-8]|2[0-5]|33|5[0-35]|6[068])|4(?:00|3[0-579]|4\\d|7[0-57-9])|5(?:[01]\\d|2[0-7]|[56]0|79)|7(?:0[09]|2[0-26-8]|3[03]|4[04]|5[05-9]|6[0156]|7[0-24-9]|8[4-9]|90)|8(?:09|2[89]|3\\d|4[0-24-689]|5[014]|8[02])|9(?:0[5-9]|1[0135-8]|2[036-9]|3[35-79]|40|5[0457-9]|6[05-9]|7[04-9]|8[35-8]|9\\d))\\d{4}", + , + , + , + "2001234", + , + , + [7] + ], [, , "(?:1[16]1|21[89]|6\\d{3}|8(?:1[01]|7[23]))\\d{4}", , , , "61234567", , , [7, 8]], [, , "800\\d{4,5}|(?:00800|800\\d)\\d{6}", , , , "8001234"], [, , "(?:8(?:22|55|60|7[78]|86)|9(?:00|81))\\d{4}", , , , "8601234", , , [7]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "PA", 507, "00", , , , , , , , [[, "(\\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"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + PE: [, [ + , + , + "(?:[14-8]|9\\d)\\d{7}", + , + , + , + , + , + , + [8, 9], + [6, 7] + ], [, , "(?:(?:(?:4[34]|5[14])[0-8]|687)\\d|7(?:173|(?:3[0-8]|55)\\d)|8(?:10[05689]|6(?:0[06-9]|1[6-9]|29)|7(?:0[0569]|[56]0)))\\d{4}|(?:1[0-8]|4[12]|5[236]|6[1-7]|7[246]|8[2-4])\\d{6}", , , , "11234567", , , [8], [6, 7]], [, , "9\\d{8}", , , , "912345678", , , [9]], [, , "800\\d{5}", , , , "80012345", , , [8]], [, , "805\\d{5}", , , , "80512345", , , [8]], [, , "801\\d{5}", , , , "80112345", , , [8]], [, , "80[24]\\d{5}", , , , "80212345", , , [8]], [, , , , , , , , , [-1]], "PE", 51, "00|19(?:1[124]|77|90)00", "0", " Anexo ", , "0", , "00", , [[ + , + "(\\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"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + PF: [ + , + [, , "4\\d{5}(?:\\d{2})?|8\\d{7,8}", , , , , , , [6, 8, 9]], + [, , "4(?:0[4-689]|9[4-68])\\d{5}", , , , "40412345", , , [8]], + [, , "8[7-9]\\d{6}", , , , "87123456", , , [8]], + [, , "80[0-5]\\d{6}", , , , "800012345", , , [9]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , "499\\d{5}", , , , "49901234", , , [8]], + "PF", + 689, + "00", + , + , + , + , + , + , + , + [[, "(\\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"]]], + , + [, , , , , , , , , [-1]], + , + , + [, , "44\\d{4}", , , , , , , [6]], + [, , "44\\d{4}", , , , "440123", , , [6]], + , + , + [, , , , , , , , , [-1]] + ], + PG: [, [, , "(?:180|[78]\\d{3})\\d{4}|(?:[2-589]\\d|64)\\d{5}", , , , , , , [7, 8]], [, , "(?:(?:3[0-2]|4[257]|5[34]|9[78])\\d|64[1-9]|85[02-46-9])\\d{4}", , , , "3123456", , , [7]], [, , "(?:7\\d|8[1-48])\\d{6}", , , , "70123456", , , [8]], [ + , + , + "180\\d{4}", + , + , + , + "1801234", + , + , + [7] + ], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , "2(?:0[0-57]|7[568])\\d{4}", , , , "2751234", , , [7]], "PG", 675, "00|140[1-3]", , , , , , "00", , [[, "(\\d{3})(\\d{4})", "$1 $2", ["18|[2-69]|85"]], [, "(\\d{4})(\\d{4})", "$1 $2", ["[78]"]]], , [, , "27[01]\\d{4}", , , , "2700123", , , [7]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + PH: [, [, , "(?:[2-7]|9\\d)\\d{8}|2\\d{5}|(?:1800|8)\\d{7,9}", , , , , , , [6, 8, 9, 10, 11, 12, 13], [4, 5, 7]], [ + , + , + "(?:(?:2[3-8]|3[2-68]|4[2-9]|5[2-6]|6[2-58]|7[24578])\\d{3}|88(?:22\\d\\d|42))\\d{4}|(?:2|8[2-8]\\d\\d)\\d{5}", + , + , + , + "232345678", + , + , + [6, 8, 9, 10], + [4, 5, 7] + ], [, , "(?:8(?:1[37]|9[5-8])|9(?:0[5-9]|1[0-24-9]|[235-7]\\d|4[2-9]|8[135-9]|9[1-9]))\\d{7}", , , , "9051234567", , , [10]], [, , "1800\\d{7,9}", , , , "180012345678", , , [11, 12, 13]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "PH", 63, "00", "0", , , "0", , , , [[, "(\\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"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + PK: [, [ + , + , + "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], + [5, 6, 7] + ], [, , "(?:(?:21|42)[2-9]|58[126])\\d{7}|(?:2[25]|4[0146-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]\\d{6,7}|(?: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]))[2-9]\\d{5,6}", , , , "2123456789", , , [9, 10], [5, 6, 7, 8]], [, , "3(?:[0-247]\\d|3[0-79]|55|64)\\d{7}", , , , "3012345678", , , [10]], [, , "800\\d{5}(?:\\d{3})?", , , , "80012345", , , [8, 11]], [, , "900\\d{5}", , , , "90012345", , , [8]], [, , , , , , , , , [-1]], [ + , + , + "122\\d{6}", + , + , + , + "122044444", + , + , + [9] + ], [, , , , , , , , , [-1]], "PK", 92, "00", "0", , , "0", , , , [[, "(\\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)"]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [ + , + , + "(?:2(?:[125]|3[2358]|4[2-4]|9[2-8])|4(?:[0-246-9]|5[3479])|5(?:[1-35-7]|4[2-467])|6(?:0[468]|[1-8])|7(?:[14]|2[236])|8(?:[16]|2[2-689]|3[23578]|4[3478]|5[2356])|9(?:1|22|3[27-9]|4[2-6]|6[3569]|9[2-7]))111\\d{6}", + , + , + , + "21111825888", + , + , + [11, 12] + ], , , [, , , , , , , , , [-1]]], + PL: [, [, , "(?:6|8\\d\\d)\\d{7}|[1-9]\\d{6}(?:\\d{2})?|[26]\\d{5}", , , , , , , [6, 7, 8, 9, 10]], [, , "47\\d{7}|(?: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])(?:[02-9]\\d{6}|1(?:[0-8]\\d{5}|9\\d{3}(?:\\d{2})?))", , , , "123456789", , , [7, 9]], [, , "2131[89]\\d{4}|21(?:1[013-5]|2\\d|3[2-9])\\d{5}|(?:45|5[0137]|6[069]|7[2389]|88)\\d{7}", , , , "512345678", , , [9]], [, , "800\\d{6,7}", , , , "800123456", , , [9, 10]], [, , "70[01346-8]\\d{6}", , , , "701234567", , , [9]], [ + , + , + "801\\d{6}", + , + , + , + "801234567", + , + , + [9] + ], [, , , , , , , , , [-1]], [, , "39\\d{7}", , , , "391234567", , , [9]], "PL", 48, "00", , , , , , , , [ + [, "(\\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"]] + ], , [, , "64\\d{4,7}", , , , "641234567", , , [6, 7, 8, 9]], , , [, , , , , , , , , [-1]], [, , "804\\d{6}", , , , "804123456", , , [9]], , , [, , , , , , , , , [-1]]], + PM: [, [, , "[45]\\d{5}|(?:708|8\\d\\d)\\d{6}", , , , , , , [6, 9]], [, , "(?:4[1-35-9]|5[0-47-9]|80[6-9]\\d\\d)\\d{4}", , , , "430123"], [, , "(?:4[02-489]|5[02-9]|708(?:4[0-5]|5[0-6]))\\d{4}", , , , "551234"], [, , "80[0-5]\\d{6}", , , , "800012345", , , [9]], [ + , + , + "8[129]\\d{7}", + , + , + , + "810123456", + , + , + [9] + ], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "PM", 508, "00", "0", , , "0", , , , [[, "(\\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"]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + PR: [, [, , "(?:[589]\\d\\d|787)\\d{7}", , , , , , , [10], [7]], [, , "(?:787|939)[2-9]\\d{6}", , , , "7872345678", , , , [7]], [, , "(?:787|939)[2-9]\\d{6}", , , , "7872345678", , , , [7]], [ + , + , + "8(?:00|33|44|55|66|77|88)[2-9]\\d{6}", + , + , + , + "8002345678" + ], [, , "900[2-9]\\d{6}", , , , "9002345678"], [, , , , , , , , , [-1]], [, , "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}", , , , "5002345678"], [, , , , , , , , , [-1]], "PR", 1, "011", "1", , , "1", , , 1, , , [, , , , , , , , , [-1]], , "787|939", [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + PS: [, [ + , + , + "[2489]2\\d{6}|(?:1\\d|5)\\d{8}", + , + , + , + , + , + , + [8, 9, 10], + [7] + ], [, , "(?:22[2-47-9]|42[45]|82[014-68]|92[3569])\\d{5}", , , , "22234567", , , [8], [7]], [, , "5[69]\\d{7}", , , , "599123456", , , [9]], [, , "1800\\d{6}", , , , "1800123456", , , [10]], [, , , , , , , , , [-1]], [, , "1700\\d{6}", , , , "1700123456", , , [10]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "PS", 970, "00", "0", , , "0", , , , [[, "(\\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"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + PT: [ + , + [, , "1693\\d{5}|(?:[26-9]\\d|30)\\d{7}", , , , , , , [9]], + [, , "2(?:[12]\\d|3[1-689]|4[1-59]|[57][1-9]|6[1-35689]|8[1-69]|9[1256])\\d{6}", , , , "212345678"], + [, , "6(?:[06]92(?:30|9\\d)|[35]92(?:[049]\\d|3[034]))\\d{3}|(?:(?:16|6[0356])93|9(?:[1-36]\\d\\d|480))\\d{5}", , , , "912345678"], + [, , "80[02]\\d{6}", , , , "800123456"], + [, , "(?:6(?:0[178]|4[68])\\d|76(?:0[1-57]|1[2-47]|2[237]))\\d{5}", , , , "760123456"], + [, , "80(?:8\\d|9[1579])\\d{5}", , , , "808123456"], + [, , "884[0-4689]\\d{5}", , , , "884123456"], + [, , "30\\d{7}", , , , "301234567"], + "PT", + 351, + "00", + , + , + , + , + , + , + , + [[, "(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["2[12]"]], [, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["16|[236-9]"]]], + , + [, , "6(?:222\\d|89(?:00|88|99))\\d{4}", , , , "622212345"], + , + , + [, , , , , , , , , [-1]], + [, , "70(?:38[01]|596|(?:7\\d|8[17])\\d)\\d{4}", , , , "707123456"], + , + , + [, , "600\\d{6}|6[06]92(?:0\\d|3[349]|49)\\d{3}", , , , "600110000"] + ], + PW: [, [, , "(?:[24-8]\\d\\d|345|900)\\d{4}", , , , , , , [7]], [, , "(?:2(?:55|77)|345|488|5(?:35|44|87)|6(?:22|54|79)|7(?:33|47)|8(?:24|55|76)|900)\\d{4}", , , , "2771234"], [ + , + , + "(?:(?:46|83)[0-5]|(?:6[2-4689]|78)0)\\d{4}|(?:45|77|88)\\d{5}", + , + , + , + "6201234" + ], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "PW", 680, "01[12]", , , , , , , , [[, "(\\d{3})(\\d{4})", "$1 $2", ["[2-9]"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + PY: [, [, , "59\\d{4,6}|9\\d{5,10}|(?:[2-46-8]\\d|5[0-8])\\d{4,7}", , , , , , , [6, 7, 8, 9, 10, 11], [5]], [ + , + , + "(?:[26]1|3[289]|4[1246-8]|7[1-3]|8[1-36])\\d{5,7}|(?:2(?:2[4-68]|[4-68]\\d|7[15]|9[1-5])|3(?:18|3[167]|4[2357]|51|[67]\\d)|4(?:3[12]|5[13]|9[1-47])|5(?:[1-4]\\d|5[02-4])|6(?:3[1-3]|44|7[1-8])|7(?:4[0-4]|5\\d|6[1-578]|75|8[0-8])|858)\\d{5,6}", + , + , + , + "212345678", + , + , + [7, 8, 9], + [5, 6] + ], [, , "9(?:51|6[129]|7[1-6]|8[1-7]|9[1-5])\\d{6}", , , , "961456789", , , [9]], [, , "9800\\d{5,7}", , , , "98000123456", , , [9, 10, 11]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , "8700[0-4]\\d{4}", , , , "870012345", , , [9]], "PY", 595, "00", "0", , , "0", , , , [[, "(\\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"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , "[2-9]0\\d{4,7}", , , , "201234567", , , [6, 7, 8, 9]], , , [, , , , , , , , , [-1]]], + QA: [, [, , "800\\d{4}|(?:2|800)\\d{6}|(?:0080|[3-7])\\d{7}", , , , , , , [7, 8, 9, 11]], [ + , + , + "4(?:1111|2022)\\d{3}|4(?:[04]\\d\\d|14[0-6]|999)\\d{4}", + , + , + , + "44123456", + , + , + [8] + ], [, , "[35-7]\\d{7}", , , , "33123456", , , [8]], [, , "800\\d{4}|(?:0080[01]|800)\\d{6}", , , , "8001234", , , [7, 9, 11]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "QA", 974, "00", , , , , , , , [[, "(\\d{3})(\\d{4})", "$1 $2", ["2[136]|8"]], [, "(\\d{4})(\\d{4})", "$1 $2", ["[3-7]"]]], , [, , "2[136]\\d{5}", , , , "2123456", , , [7]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + RE: [, [, , "709\\d{6}|(?:26|[689]\\d)\\d{7}", , , , , , , [9]], [, , "26(?:2\\d\\d|3(?:0\\d|1[0-6]))\\d{4}", , , , "262161234"], [ + , + , + "(?: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}", + , + , + , + "692123456" + ], [, , "80\\d{7}", , , , "801234567"], [, , "89[1-37-9]\\d{6}", , , , "891123456"], [, , "8(?:1[019]|2[0156]|84|90)\\d{6}", , , , "810123456"], [, , , , , , , , , [-1]], [, , "9(?:399[0-3]|479[0-6]|76(?:2[278]|3[0-37]))\\d{4}", , , , "939901234"], "RE", 262, "00", "0", , , "0", , , , [[, "(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[26-9]"], "0$1"]], , [, , , , , , , , , [-1]], 1, , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + RO: [, [, , "(?:[236-8]\\d|90)\\d{7}|[23]\\d{5}", , , , , , , [6, 9]], [ + , + , + "[23][13-6]\\d{7}|(?:2(?:19\\d|[3-6]\\d9)|31\\d\\d)\\d\\d", + , + , + , + "211234567" + ], [, , "(?:630|702)0\\d{5}|(?:6(?:00|2\\d)|7(?:0[013-9]|1[0-3]|[2-7]\\d|8[03-8]|9[0-39]))\\d{6}", , , , "712034567", , , [9]], [, , "800\\d{6}", , , , "800123456", , , [9]], [, , "90[0136]\\d{6}", , , , "900123456", , , [9]], [, , "801\\d{6}", , , , "801123456", , , [9]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "RO", 40, "00", "0", " int ", , "0", , , , [[, "(\\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" + ]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , "(?:37\\d|80[578])\\d{6}", , , , "372123456", , , [9]], , , [, , , , , , , , , [-1]]], + RS: [, [, , "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], [4, 5]], [, , "(?:11[1-9]\\d|(?:2[389]|39)(?:0[2-9]|[2-9]\\d))\\d{3,8}|(?:1[02-9]|2[0-24-7]|3[0-8])[2-9]\\d{4,9}", , , , "10234567", , , [7, 8, 9, 10, 11, 12], [4, 5, 6]], [, , "6(?:[0-689]|7\\d)\\d{6,7}", , , , "601234567", , , [8, 9, 10]], [ + , + , + "800\\d{3,9}", + , + , + , + "80012345" + ], [, , "(?:78\\d|90[0169])\\d{3,7}", , , , "90012345", , , [6, 7, 8, 9, 10]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "RS", 381, "00", "0", , , "0", , , , [[, "(\\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"]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , "7[06]\\d{4,10}", , , , "700123456"], , , [, , , , , , , , , [-1]]], + RU: [, [, , "8\\d{13}|[347-9]\\d{9}", , , , , , , [10, 14], [7]], [ + , + , + "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}", + , + , + , + "3011234567", + , + , + [10], + [7] + ], [, , "9\\d{9}", , , , "9123456789", , , [10]], [, , "8(?:0[04]|108\\d{3})\\d{7}", , , , "8001234567"], [, , "80[39]\\d{7}", , , , "8091234567", , , [10]], [, , , , , , , , , [-1]], [, , "808\\d{7}", , , , "8081234567", , , [10]], [, , , , , , , , , [-1]], "RU", 7, "810", "8", , , "8", , "8~10", , [[, "(\\d{3})(\\d{2})(\\d{2})", "$1-$2-$3", ["[0-79]"]], [ + , + "(\\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)"]], [[, "(\\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)"]], [, , , , , , , , , [-1]], 1, , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + RW: [, [, , "(?:06|[27]\\d\\d|[89]00)\\d{6}", , , , , , , [8, 9]], [, , "(?:06|2[23568]\\d)\\d{6}", , , , "250123456"], [, , "7[237-9]\\d{7}", , , , "720123456", , , [9]], [, , "800\\d{6}", , , , "800123456", , , [9]], [ + , + , + "900\\d{6}", + , + , + , + "900123456", + , + , + [9] + ], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "RW", 250, "00", "0", , , "0", , , , [[, "(\\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"]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + SA: [, [, , "(?:[15]\\d|800|92)\\d{7}", , , , , , , [9, 10], [7]], [, , "1(?:1\\d|2[24-8]|3[35-8]|4[3-68]|6[2-5]|7[235-7])\\d{6}", , , , "112345678", , , [9], [7]], [ + , + , + "579[01]\\d{5}|5(?:[013-689]\\d|7[0-8])\\d{6}", + , + , + , + "512345678", + , + , + [9] + ], [, , "800\\d{7}", , , , "8001234567", , , [10]], [, , "925\\d{6}", , , , "925012345", , , [9]], [, , "920\\d{6}", , , , "920012345", , , [9]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "SA", 966, "00", "0", , , "0", , , , [[, "(\\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"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + SB: [ + , + [, , "[6-9]\\d{6}|[1-6]\\d{4}", , , , , , , [5, 7]], + [, , "(?:1[4-79]|[23]\\d|4[0-2]|5[03]|6[0-37])\\d{3}", , , , "40123", , , [5]], + [, , "48\\d{3}|(?:(?:6[89]|7[1-9]|8[4-9])\\d|9(?:1[2-9]|2[013-9]|3[0-2]|[46]\\d|5[0-46-9]|7[0-689]|8[0-79]|9[0-8]))\\d{4}", , , , "7421234"], + [, , "1[38]\\d{3}", , , , "18123", , , [5]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , "5[12]\\d{3}", , , , "51123", , , [5]], + "SB", + 677, + "0[01]", + , + , + , + , + , + , + , + [[, "(\\d{2})(\\d{5})", "$1 $2", ["6[89]|7|8[4-9]|9(?:[1-8]|9[0-8])"]]], + , + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]] + ], + SC: [, [ + , + , + "(?:[2489]\\d|64)\\d{5}", + , + , + , + , + , + , + [7] + ], [, , "4[2-46]\\d{5}", , , , "4217123"], [, , "2[125-8]\\d{5}", , , , "2510123"], [, , "800[08]\\d{3}", , , , "8000000"], [, , "85\\d{5}", , , , "8512345"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , "971\\d{4}|(?:64|95)\\d{5}", , , , "6412345"], "SC", 248, "010|0[0-2]", , , , , , "00", , [[, "(\\d)(\\d{3})(\\d{3})", "$1 $2 $3", ["[246]|9[57]"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + SD: [, [, , "[19]\\d{8}", , , , , , , [9]], [, , "1(?:5\\d|8[35-7])\\d{6}", , , , "153123456"], [, , "(?:1[0-2]|9[0-3569])\\d{7}", , , , "911231234"], [ + , + , + , + , + , + , + , + , + , + [-1] + ], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "SD", 249, "00", "0", , , "0", , , , [[, "(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["[19]"], "0$1"]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + SE: [, [, , "(?:[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]], [ + , + , + "(?:(?:[12][136]|3[356]|4[0246]|6[03]|8\\d)\\d|90[1-9])\\d{4,6}|(?:1(?:2[0-35]|4[0-4]|5[0-25-9]|7[13-6]|[89]\\d)|2(?:2[0-7]|4[0136-8]|5[0138]|7[018]|8[01]|9[0-57])|3(?:0[0-4]|1\\d|2[0-25]|4[056]|7[0-2]|8[0-3]|9[023])|4(?:1[013-8]|3[0135]|5[14-79]|7[0-246-9]|8[0156]|9[0-689])|5(?:0[0-6]|[15][0-5]|2[0-68]|3[0-4]|4\\d|6[03-5]|7[013]|8[0-79]|9[01])|6(?:1[1-3]|2[0-4]|4[02-57]|5[0-37]|6[0-3]|7[0-2]|8[0247]|9[0-356])|9(?:1[0-68]|2\\d|3[02-5]|4[0-3]|5[0-4]|[68][01]|7[0135-8]))\\d{5,6}", + , + , + , + "8123456", + , + , + [7, 8, 9] + ], [, , "7[02369]\\d{7}", , , , "701234567", , , [9]], [, , "20\\d{4,7}", , , , "20123456", , , [6, 7, 8, 9]], [, , "649\\d{6}|99[1-59]\\d{4}(?:\\d{3})?|9(?:00|39|44)[1-8]\\d{3,6}", , , , "9001234567", , , [7, 8, 9, 10]], [, , "77[0-7]\\d{6}", , , , "771234567", , , [9]], [, , "75[1-8]\\d{6}", , , , "751234567", , , [9]], [, , , , , , , , , [-1]], "SE", 46, "00", "0", , , "0", , , , [[, "(\\d{2})(\\d{2,3})(\\d{2})", "$1-$2 $3", ["20"], "0$1"], [, "(\\d{3})(\\d{4})", "$1-$2", ["9(?:00|39|44|9)"], "0$1"], [ + , + "(\\d{2})(\\d{3})(\\d{2})", + "$1-$2 $3", + ["[12][136]|3[356]|4[0246]|6[03]|90[1-9]"], + "0$1" + ], [, "(\\d)(\\d{2,3})(\\d{2})(\\d{2})", "$1-$2 $3 $4", ["8"], "0$1"], [, "(\\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"], [, "(\\d{3})(\\d{2,3})(\\d{3})", "$1-$2 $3", ["9(?:00|39|44)"], "0$1"], [, "(\\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"], [, "(\\d{2})(\\d{3})(\\d{2})(\\d{2})", "$1-$2 $3 $4", ["10|7"], "0$1"], [ + , + "(\\d)(\\d{3})(\\d{3})(\\d{2})", + "$1-$2 $3 $4", + ["8"], + "0$1" + ], [, "(\\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"], [, "(\\d{3})(\\d{2})(\\d{2})(\\d{3})", "$1-$2 $3 $4", ["9"], "0$1"], [, "(\\d{3})(\\d{2})(\\d{3})(\\d{2})(\\d{2})", "$1-$2 $3 $4 $5", ["[26]"], "0$1"]], [[, "(\\d{2})(\\d{2,3})(\\d{2})", "$1 $2 $3", ["20"]], [, "(\\d{3})(\\d{4})", "$1 $2", ["9(?:00|39|44|9)"]], [, "(\\d{2})(\\d{3})(\\d{2})", "$1 $2 $3", ["[12][136]|3[356]|4[0246]|6[03]|90[1-9]"]], [ + , + "(\\d)(\\d{2,3})(\\d{2})(\\d{2})", + "$1 $2 $3 $4", + ["8"] + ], [, "(\\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])"]], [, "(\\d{3})(\\d{2,3})(\\d{3})", "$1 $2 $3", ["9(?:00|39|44)"]], [, "(\\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]"]], [, "(\\d{2})(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["10|7"]], [, "(\\d)(\\d{3})(\\d{3})(\\d{2})", "$1 $2 $3 $4", ["8"]], [ + , + "(\\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])"] + ], [, "(\\d{3})(\\d{2})(\\d{2})(\\d{3})", "$1 $2 $3 $4", ["9"]], [, "(\\d{3})(\\d{2})(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4 $5", ["[26]"]]], [, , "74[02-9]\\d{6}", , , , "740123456", , , [9]], , , [, , , , , , , , , [-1]], [, , "10[1-8]\\d{6}", , , , "102345678", , , [9]], , , [, , "(?:25[245]|67[3-68])\\d{9}", , , , "254123456789", , , [12]]], + SG: [, [, , "(?:(?:1\\d|8)\\d\\d|7000)\\d{7}|[3689]\\d{7}", , , , , , , [8, 10, 11]], [ + , + , + "662[0-24-9]\\d{4}|6(?:[0-578]\\d|6[013-57-9]|9[0-35-9])\\d{5}", + , + , + , + "61234567", + , + , + [8] + ], [, , "898[02-8]\\d{4}|(?:8(?:0[1-9]|[1-8]\\d|9[0-7])|9[0-8]\\d)\\d{5}", , , , "81234567", , , [8]], [, , "(?:18|8)00\\d{7}", , , , "18001234567", , , [10, 11]], [, , "1900\\d{7}", , , , "19001234567", , , [11]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , "(?:3[12]\\d|666)\\d{5}", , , , "31234567", , , [8]], "SG", 65, "0[0-3]\\d", , , , , , , , [[, "(\\d{4,5})", "$1", ["1[013-9]|77", "1(?:[013-8]|9(?:0[1-9]|[1-9]))|77"]], [, "(\\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"]]], [[, "(\\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"]]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , "7000\\d{7}", , , , "70001234567", , , [11]], , , [, , , , , , , , , [-1]]], + SH: [ + , + [, , "(?:[256]\\d|8)\\d{3}", , , , , , , [4, 5]], + [, , "2(?:[0-57-9]\\d|6[4-9])\\d\\d", , , , "22158"], + [, , "[56]\\d{4}", , , , "51234", , , [5]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , "262\\d\\d", , , , "26212", , , [5]], + "SH", + 290, + "00", + , + , + , + , + , + , + , + , + , + [, , , , , , , , , [-1]], + 1, + "[256]", + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]] + ], + SI: [ + , + [, , "[1-7]\\d{7}|8\\d{4,7}|90\\d{4,6}", , , , , , , [5, 6, 7, 8]], + [, , "(?:[1-357][2-8]|4[24-8])\\d{6}", , , , "12345678", , , [8], [7]], + [, , "65(?:[178]\\d|5[56]|6[01])\\d{4}|(?:[37][01]|4[0139]|51|6[489])\\d{6}", , , , "31234567", , , [8]], + [, , "80\\d{4,6}", , , , "80123456", , , [6, 7, 8]], + [, , "89[1-3]\\d{2,5}|90\\d{4,6}", , , , "90123456"], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , "(?:59\\d\\d|8(?:1(?:[67]\\d|8[0-589])|2(?:0\\d|2[0-37-9]|8[0-2489])|3[389]\\d))\\d{4}", , , , "59012345", , , [8]], + "SI", + 386, + "00|10(?:22|66|88|99)", + "0", + , + , + "0", + , + "00", + , + [[, "(\\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)"]], + , + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]] + ], + SJ: [, [ + , + , + "0\\d{4}|(?:[489]\\d|79)\\d{6}", + , + , + , + , + , + , + [5, 8] + ], [, , "79\\d{6}", , , , "79123456", , , [8]], [, , "(?:4[015-8]|9\\d)\\d{6}", , , , "41234567", , , [8]], [, , "80[01]\\d{5}", , , , "80012345", , , [8]], [, , "82[09]\\d{5}", , , , "82012345", , , [8]], [, , "810(?:0[0-6]|[2-8]\\d)\\d{3}", , , , "81021234", , , [8]], [, , "880\\d{5}", , , , "88012345", , , [8]], [, , "85[0-5]\\d{5}", , , , "85012345", , , [8]], "SJ", 47, "00", , , , , , , , , , [, , , , , , , , , [-1]], , "79", [, , , , , , , , , [-1]], [, , "(?:0[235-9]|81(?:0(?:0[7-9]|1\\d)|5\\d\\d))\\d{3}", , , , "02000"], , , [, , "81[23]\\d{5}", , , , "81212345", , , [8]]], + SK: [, [ + , + , + "[2-689]\\d{8}|[2-59]\\d{6}|[2-5]\\d{5}", + , + , + , + , + , + , + [6, 7, 9] + ], [, , "(?:2(?:16|[2-9]\\d{3})|(?:(?:[3-5][1-8]\\d|819)\\d|601[1-5])\\d)\\d{4}|(?:2|[3-5][1-8])1[67]\\d{3}|[3-5][1-8]16\\d\\d", , , , "221234567"], [, , "909[1-9]\\d{5}|9(?:0[1-8]|1[0-24-9]|4[03-57-9]|5\\d)\\d{6}", , , , "912123456", , , [9]], [, , "800\\d{6}", , , , "800123456", , , [9]], [, , "9(?:00|[78]\\d)\\d{6}", , , , "900123456", , , [9]], [, , "8[5-9]\\d{7}", , , , "850123456", , , [9]], [, , , , , , , , , [-1]], [, , "6(?:02|5[0-4]|9[0-6])\\d{6}", , , , "690123456", , , [9]], "SK", 421, "00", "0", , , "0", , , , [[ + , + "(\\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{4})(\\d{3})", "$1 $2", ["909", "9090"], "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"]], [[, "(\\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"]], [, , "9090\\d{3}", , , , "9090123", , , [7]], , , [, , "9090\\d{3}|(?:602|8(?:00|[5-9]\\d)|9(?:00|[78]\\d))\\d{6}", , , , , , , [7, 9]], [, , "96\\d{7}", , , , "961234567", , , [9]], , , [, , , , , , , , , [-1]]], + SL: [, [, , "(?:[237-9]\\d|66)\\d{6}", , , , , , , [8], [6]], [, , "22[2-4][2-9]\\d{4}", , , , "22221234", , , , [6]], [, , "(?:25|3[0-5]|66|7[1-9]|8[08]|9[09])\\d{6}", , , , "25123456"], [, , , , , , , , , [-1]], [ + , + , + , + , + , + , + , + , + , + [-1] + ], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "SL", 232, "00", "0", , , "0", , , , [[, "(\\d{2})(\\d{6})", "$1 $2", ["[236-9]"], "(0$1)"]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + SM: [ + , + [, , "(?:0549|[5-7]\\d)\\d{6}", , , , , , , [8, 10], [6]], + [, , "0549(?:8[0157-9]|9\\d)\\d{4}", , , , "0549886377", , , [10], [6]], + [, , "6[16]\\d{6}", , , , "66661212", , , [8]], + [, , , , , , , , , [-1]], + [, , "7[178]\\d{6}", , , , "71123456", , , [8]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , "5[158]\\d{6}", , , , "58001110", , , [8]], + "SM", + 378, + "00", + , + , + , + "([89]\\d{5})$", + "0549$1", + , + , + [[, "(\\d{6})", "$1", ["[89]"]], [, "(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[5-7]"]], [, "(\\d{4})(\\d{6})", "$1 $2", ["0"]]], + [[, "(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[5-7]"]], [, "(\\d{4})(\\d{6})", "$1 $2", ["0"]]], + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]] + ], + SN: [, [, , "(?:[378]\\d|93)\\d{7}", , , , , , , [9]], [, , "3(?:0(?:1[0-2]|80)|282|3(?:8[1-9]|9[3-9])|611)\\d{5}", , , , "301012345"], [, , "7(?:[05-8]\\d|[19]0|21)\\d{6}", , , , "701234567"], [ + , + , + "800\\d{6}", + , + , + , + "800123456" + ], [, , "88[4689]\\d{6}", , , , "884123456"], [, , "81[02468]\\d{6}", , , , "810123456"], [, , , , , , , , , [-1]], [, , "(?:3(?:392|9[01]\\d)\\d|93(?:3[13]0|929))\\d{4}", , , , "933301234"], "SN", 221, "00", , , , , , , , [[, "(\\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]"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + SO: [, [, , "[346-9]\\d{8}|[12679]\\d{7}|[1-5]\\d{6}|[1348]\\d{5}", , , , , , , [6, 7, 8, 9]], [ + , + , + "(?:1\\d|2[0-79]|3[0-46-8]|4[0-7]|5[57-9])\\d{5}|(?:[134]\\d|8[125])\\d{4}", + , + , + , + "4012345", + , + , + [6, 7] + ], [, , "(?:(?:15|(?:3[59]|4[89]|6\\d|7[679]|8[08])\\d|9(?:0\\d|[2-9]))\\d|2(?:4\\d|8))\\d{5}|(?:[67]\\d\\d|904)\\d{5}", , , , "71123456", , , [7, 8, 9]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "SO", 252, "00", "0", , , "0", , , , [ + [, "(\\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]"]] + ], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + SR: [, [, , "(?:[2-5]|[6-8]\\d|90)\\d{5}", , , , , , , [6, 7]], [, , "(?:2[1-3]|3[0-7]|4\\d|5[2-58])\\d{4}", , , , "211234", , , [6]], [, , "(?:6[08]|7[124-7]|8[1-9])\\d{5}", , , , "7412345", , , [7]], [, , "80\\d{5}", , , , "8012345", , , [7]], [, , "90\\d{5}", , , , "9012345", , , [7]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , "56\\d{4}", , , , "561234", , , [6]], "SR", 597, "00", , , , , , , , [ + [, "(\\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]"]] + ], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + SS: [, [, , "[19]\\d{8}", , , , , , , [9]], [, , "1[89]\\d{7}", , , , "181234567"], [, , "(?:12|9[1257-9])\\d{7}", , , , "977123456"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "SS", 211, "00", "0", , , "0", , , , [[, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[19]"], "0$1"]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + ST: [, [ + , + , + "(?:22|9\\d)\\d{5}", + , + , + , + , + , + , + [7] + ], [, , "22\\d{5}", , , , "2221234"], [, , "900[5-9]\\d{3}|9(?:0[1-9]|[89]\\d)\\d{4}", , , , "9812345"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "ST", 239, "00", , , , , , , , [[, "(\\d{3})(\\d{4})", "$1 $2", ["[29]"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + SV: [, [, , "[267]\\d{7}|(?:80\\d|900)\\d{4}(?:\\d{4})?", , , , , , , [7, 8, 11]], [ + , + , + "2(?:79(?:0[0347-9]|[1-9]\\d)|89(?:0[024589]|[1-9]\\d))\\d{3}|2(?:[1-69]\\d|[78][0-8])\\d{5}", + , + , + , + "21234567", + , + , + [8] + ], [, , "[67]\\d{7}", , , , "70123456", , , [8]], [, , "800\\d{8}|80[01]\\d{4}", , , , "8001234", , , [7, 11]], [, , "900\\d{4}(?:\\d{4})?", , , , "9001234", , , [7, 11]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "SV", 503, "00", , , , , , , , [[, "(\\d{3})(\\d{4})", "$1 $2", ["[89]"]], [, "(\\d{4})(\\d{4})", "$1 $2", ["[267]"]], [, "(\\d{3})(\\d{4})(\\d{4})", "$1 $2 $3", ["[89]"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + SX: [ + , + [, , "7215\\d{6}|(?:[58]\\d\\d|900)\\d{7}", , , , , , , [10], [7]], + [ + , + , + "7215(?:4[2-8]|8[239]|9[056])\\d{4}", + , + , + , + "7215425678", + , + , + , + [7] + ], + [, , "7215(?:1[02]|2\\d|5[034679]|8[014-8])\\d{4}", , , , "7215205678", , , , [7]], + [, , "8(?:00|33|44|55|66|77|88)[2-9]\\d{6}", , , , "8002123456"], + [, , "900[2-9]\\d{6}", , , , "9002123456"], + [, , , , , , , , , [-1]], + [, , "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}", , , , "5002345678"], + [, , , , , , , , , [-1]], + "SX", + 1, + "011", + "1", + , + , + "(5\\d{6})$|1", + "721$1", + , + , + , + , + [, , , , , , , , , [-1]], + , + "721", + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]] + ], + SY: [, [, , "[1-359]\\d{8}|[1-5]\\d{7}", , , , , , , [8, 9], [6, 7]], [, , "21\\d{6,7}|(?:1(?:[14]\\d|[2356])|2[235]|3(?:[13]\\d|4)|4[134]|5[1-3])\\d{6}", , , , "112345678", , , , [6, 7]], [, , "(?:50|9[1-9])\\d{7}", , , , "944567890", , , [9]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "SY", 963, "00", "0", , , "0", , , , [[, "(\\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 + ]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + SZ: [, [, , "0800\\d{4}|(?:[237]\\d|900)\\d{6}", , , , , , , [8, 9]], [, , "[23][2-5]\\d{6}", , , , "22171234", , , [8]], [, , "7[5-9]\\d{6}", , , , "76123456", , , [8]], [, , "0800\\d{4}", , , , "08001234", , , [8]], [, , "900\\d{6}", , , , "900012345", , , [9]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , "70\\d{6}", , , , "70012345", , , [8]], "SZ", 268, "00", , , , , , , , [[, "(\\d{4})(\\d{4})", "$1 $2", ["[0237]"]], [, "(\\d{5})(\\d{4})", "$1 $2", ["9"]]], , [, , , , , , , , , [-1]], , , [ + , + , + "0800\\d{4}", + , + , + , + , + , + , + [8] + ], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + TA: [, [, , "8\\d{3}", , , , , , , [4]], [, , "8\\d{3}", , , , "8999"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "TA", 290, "00", , , , , , , , , , [, , , , , , , , , [-1]], , "8", [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + TC: [ + , + [, , "(?:[58]\\d\\d|649|900)\\d{7}", , , , , , , [10], [7]], + [, , "649(?:266|712|9(?:4\\d|50))\\d{4}", , , , "6497121234", , , , [7]], + [, , "649(?:2(?:3[129]|4[1-79])|3\\d\\d|4[34][1-3])\\d{4}", , , , "6492311234", , , , [7]], + [, , "8(?:00|33|44|55|66|77|88)[2-9]\\d{6}", , , , "8002345678"], + [, , "900[2-9]\\d{6}", , , , "9002345678"], + [, , , , , , , , , [-1]], + [, , "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}", , , , "5002345678"], + [, , "649(?:71[01]|966)\\d{4}", , , , "6497101234", , , , [7]], + "TC", + 1, + "011", + "1", + , + , + "([2-479]\\d{6})$|1", + "649$1", + , + , + , + , + [, , , , , , , , , [-1]], + , + "649", + [ + , + , + , + , + , + , + , + , + , + [-1] + ], + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]] + ], + TD: [, [, , "(?:22|30|[689]\\d|77)\\d{6}", , , , , , , [8]], [, , "22(?:[37-9]0|5[0-5]|6[89])\\d{4}", , , , "22501234"], [, , "(?:30|[69]\\d|77|8[56])\\d{6}", , , , "63012345"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "TD", 235, "00|16", , , , , , "00", , [[, "(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[236-9]"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + TG: [, [, , "[279]\\d{7}", , , , , , , [8]], [ + , + , + "2(?:2[2-7]|3[23]|4[45]|55|6[67]|77)\\d{5}", + , + , + , + "22212345" + ], [, , "(?:7[0-29]|9[0-36-9])\\d{6}", , , , "90112345"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "TG", 228, "00", , , , , , , , [[, "(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[279]"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + TH: [, [, , "(?:001800|[2-57]|[689]\\d)\\d{7}|1\\d{7,9}", , , , , , , [8, 9, 10, 13]], [, , "(?:1[0689]|2\\d|3[2-9]|4[2-5]|5[2-6]|7[3-7])\\d{6}", , , , "21234567", , , [8]], [ + , + , + "67(?:1[0-8]|2[4-7])\\d{5}|(?:14|6[1-6]|[89]\\d)\\d{7}", + , + , + , + "812345678", + , + , + [9] + ], [, , "(?:001800\\d|1800)\\d{6}", , , , "1800123456", , , [10, 13]], [, , "1900\\d{6}", , , , "1900123456", , , [10]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , "6[08]\\d{7}", , , , "601234567", , , [9]], "TH", 66, "00[1-9]", "0", , , "0", , , , [[, "(\\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"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + TJ: [ + , + [, , "[0-57-9]\\d{8}", , , , , , , [9], [3, 5, 6, 7]], + [ + , + , + "(?:3(?:1[3-5]|2[245]|3[12]|4[24-7]|5[25]|72)|4(?:46|74|87))\\d{6}", + , + , + , + "372123456", + , + , + , + [3, 5, 6, 7] + ], + [, , "(?:33[03-9]|4(?:1[18]|4[02-479])|81[1-9])\\d{6}|(?:[09]\\d|1[0-27-9]|2[0-27]|[34]0|5[05]|7[01578]|8[078])\\d{7}", , , , "917123456"], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + "TJ", + 992, + "810", + , + , + , + , + , + "8~10", + , + [[, "(\\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", ["[0-57-9]"]]], + , + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]] + ], + TK: [, [, , "[2-47]\\d{3,6}", , , , , , , [4, 5, 6, 7]], [, , "(?:2[2-4]|[34]\\d)\\d{2,5}", , , , "3101"], [, , "7[2-4]\\d{2,5}", , , , "7290"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "TK", 690, "00", , , , , , , , , , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + TL: [, [, , "7\\d{7}|(?:[2-47]\\d|[89]0)\\d{5}", , , , , , , [7, 8]], [, , "(?:2[1-5]|3[1-9]|4[1-4])\\d{5}", , , , "2112345", , , [7]], [ + , + , + "7[2-8]\\d{6}", + , + , + , + "77212345", + , + , + [8] + ], [, , "80\\d{5}", , , , "8012345", , , [7]], [, , "90\\d{5}", , , , "9012345", , , [7]], [, , , , , , , , , [-1]], [, , "70\\d{5}", , , , "7012345", , , [7]], [, , , , , , , , , [-1]], "TL", 670, "00", , , , , , , , [[, "(\\d{3})(\\d{4})", "$1 $2", ["[2-489]|70"]], [, "(\\d{4})(\\d{4})", "$1 $2", ["7"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + TM: [, [, , "(?:[1-6]\\d|71)\\d{6}", , , , , , , [8]], [, , "(?:1(?:2\\d|3[1-9])|2(?:22|4[0-35-8])|3(?:22|4[03-9])|4(?:22|3[128]|4\\d|6[15])|5(?:22|5[7-9]|6[014-689]))\\d{5}", , , , "12345678"], [ + , + , + "(?:6\\d|71)\\d{6}", + , + , + , + "66123456" + ], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "TM", 993, "810", "8", , , "8", , "8~10", , [[, "(\\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"]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + TN: [, [, , "[2-57-9]\\d{7}", , , , , , , [8]], [, , "81200\\d{3}|(?:3[0-2]|7\\d)\\d{6}", , , , "30010123"], [ + , + , + "3(?:001|[12]40)\\d{4}|(?:(?:[259]\\d|4[0-8])\\d|3(?:1[1-35]|6[0-4]|91))\\d{5}", + , + , + , + "20123456" + ], [, , "8010\\d{4}", , , , "80101234"], [, , "88\\d{6}", , , , "88123456"], [, , "8[12]10\\d{4}", , , , "81101234"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "TN", 216, "00", , , , , , , , [[, "(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["[2-57-9]"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + TO: [, [, , "(?:0800|(?:[5-8]\\d\\d|999)\\d)\\d{3}|[2-8]\\d{4}", , , , , , , [5, 7]], [, , "(?:2\\d|3[0-8]|4[0-4]|50|6[09]|7[0-24-69]|8[05])\\d{3}", , , , "20123", , , [5]], [ + , + , + "(?:5(?:4[0-5]|5[4-6])|6(?:[09]\\d|3[02]|8[15-9])|(?:7\\d|8[46-9])\\d|999)\\d{4}", + , + , + , + "7715123", + , + , + [7] + ], [, , "0800\\d{3}", , , , "0800222", , , [7]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , "55[0-37-9]\\d{4}", , , , "5510123", , , [7]], "TO", 676, "00", , , , , , , , [[, "(\\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]"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + TR: [, [, , "4\\d{6}|8\\d{11,12}|(?:[2-58]\\d\\d|900)\\d{7}", , , , , , , [7, 10, 12, 13]], [ + , + , + "(?:2(?:[13][26]|[28][2468]|[45][268]|[67][246])|3(?:[13][28]|[24-6][2468]|[78][02468]|92)|4(?:[16][246]|[23578][2468]|4[26]))\\d{7}", + , + , + , + "2123456789", + , + , + [10] + ], [, , "561(?:011|61\\d)\\d{4}|5(?:0[15-7]|1[06]|24|[34]\\d|5[1-59]|9[46])\\d{7}", , , , "5012345678", , , [10]], [, , "8(?:00\\d{7}(?:\\d{2,3})?|11\\d{7})", , , , "8001234567", , , [10, 12, 13]], [, , "(?:8[89]8|900)\\d{7}", , , , "9001234567", , , [10]], [, , , , , , , , , [-1]], [, , "592(?:21[12]|461)\\d{4}", , , , "5922121234", , , [10]], [, , "850\\d{7}", , , , "8500123456", , , [10]], "TR", 90, "00", "0", , , "0", , , , [ + [, "(\\d{3})(\\d)(\\d{3})", "$1 $2 $3", ["444"], , , 1], + [, "(\\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] + ], [[, "(\\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]], [, , "512\\d{7}", , , , "5123456789", , , [10]], , , [, , "(?:444|811\\d{3})\\d{4}", , , , , , , [7, 10]], [, , "444\\d{4}", , , , "4441444", , , [7]], , , [, , , , , , , , , [-1]]], + TT: [, [, , "(?:[58]\\d\\d|900)\\d{7}", , , , , , , [10], [7]], [, , "868(?:2(?:01|1[5-9]|[23]\\d|4[0-2])|6(?:0[7-9]|1[02-8]|2[1-9]|[3-69]\\d|7[0-79])|82[124])\\d{4}", , , , "8682211234", , , , [7]], [ + , + , + "868(?:(?:2[5-9]|3\\d)\\d|4(?:3[0-6]|[6-9]\\d)|6(?:20|78|8\\d)|7(?:0[1-9]|1[02-9]|[2-9]\\d))\\d{4}", + , + , + , + "8682911234", + , + , + , + [7] + ], [, , "8(?:00|33|44|55|66|77|88)[2-9]\\d{6}", , , , "8002345678"], [, , "900[2-9]\\d{6}", , , , "9002345678"], [, , , , , , , , , [-1]], [, , "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}", , , , "5002345678"], [, , , , , , , , , [-1]], "TT", 1, "011", "1", , , "([2-46-8]\\d{6})$|1", "868$1", , , , , [, , , , , , , , , [-1]], , "868", [, , , , , , , , , [-1]], [ + , + , + , + , + , + , + , + , + , + [-1] + ], , , [, , "868619\\d{4}", , , , "8686191234", , , , [7]]], + TV: [, [, , "(?:2|7\\d\\d|90)\\d{4}", , , , , , , [5, 6, 7]], [, , "2[02-9]\\d{3}", , , , "20123", , , [5]], [, , "(?:7[01]\\d|90)\\d{4}", , , , "901234", , , [6, 7]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "TV", 688, "00", , , , , , , , [[, "(\\d{2})(\\d{3})", "$1 $2", ["2"]], [, "(\\d{2})(\\d{4})", "$1 $2", ["90"]], [, "(\\d{2})(\\d{5})", "$1 $2", ["7"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + TW: [, [ + , + , + "[2-689]\\d{8}|7\\d{9,10}|[2-8]\\d{7}|2\\d{6}", + , + , + , + , + , + , + [7, 8, 9, 10, 11] + ], [ + , + , + "(?:2[2-8]\\d|370|55[01]|7[1-9])\\d{6}|4(?:(?:0(?:0[1-9]|[2-48]\\d)|1[023]\\d)\\d{4,5}|(?:[239]\\d\\d|4(?:0[56]|12|49))\\d{5})|6(?:[01]\\d{7}|4(?:0[56]|12|24|4[09])\\d{4,5})|8(?:(?:2(?:3\\d|4[0-269]|[578]0|66)|36[24-9]|90\\d\\d)\\d{4}|4(?:0[56]|12|24|4[09])\\d{4,5})|(?:2(?:2(?:0\\d\\d|4(?:0[68]|[249]0|3[0-467]|5[0-25-9]|6[0235689]))|(?:3(?:[09]\\d|1[0-4])|(?:4\\d|5[0-49]|6[0-29]|7[0-5])\\d)\\d)|(?:(?:3[2-9]|5[2-8]|6[0-35-79]|8[7-9])\\d\\d|4(?:2(?:[089]\\d|7[1-9])|(?:3[0-4]|[78]\\d|9[01])\\d))\\d)\\d{3}", + , + , + , + "221234567", + , + , + [8, 9] + ], [, , "(?:40001[0-2]|9[0-8]\\d{4})\\d{3}", , , , "912345678", , , [9]], [, , "80[0-79]\\d{6}|800\\d{5}", , , , "800123456", , , [8, 9]], [, , "20(?:[013-9]\\d\\d|2)\\d{4}", , , , "203123456", , , [7, 9]], [, , , , , , , , , [-1]], [, , "99\\d{7}", , , , "990123456", , , [9]], [, , "7010(?:[0-2679]\\d|3[0-7]|8[0-5])\\d{5}|70\\d{8}", , , , "7012345678", , , [10, 11]], "TW", 886, "0(?:0[25-79]|19)", "0", "#", , "0", , , , [[, "(\\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"]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , "50[0-46-9]\\d{6}", , , , "500123456", , , [9]], , , [, , , , , , , , , [-1]]], + TZ: [ + , + [, , "(?:[25-8]\\d|41|90)\\d{7}", , , , , , , [9]], + [, , "2[2-8]\\d{7}", , , , "222345678"], + [, , "(?:6[125-9]|7[13-9])\\d{7}", , , , "621234567"], + [, , "80[08]\\d{6}", , , , "800123456"], + [, , "90\\d{7}", , , , "900123456"], + [, , "8(?:40|6[01])\\d{6}", , , , "840123456"], + [, , , , , , , , , [-1]], + [, , "41\\d{7}", , , , "412345678"], + "TZ", + 255, + "00[056]", + "0", + , + , + "0", + , + , + , + [[, "(\\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"]], + , + [, , , , , , , , , [-1]], + , + , + [, , "(?:8(?:[04]0|6[01])|90\\d)\\d{6}"], + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]] + ], + UA: [, [, , "[89]\\d{9}|[3-9]\\d{8}", , , , , , , [9, 10], [5, 6, 7]], [ + , + , + "(?:3[1-8]|4[13-8]|5[1-7]|6[12459])\\d{7}", + , + , + , + "311234567", + , + , + [9], + [5, 6, 7] + ], [, , "790\\d{6}|(?:39|50|6[36-8]|7[1-357]|9[1-9])\\d{7}", , , , "501234567", , , [9]], [, , "800[1-8]\\d{5,6}", , , , "800123456"], [, , "900[239]\\d{5,6}", , , , "900212345"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , "89[1-579]\\d{6}", , , , "891234567", , , [9]], "UA", 380, "00", "0", , , "0", , "0~0", , [[, "(\\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"]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + UG: [, [, , "800\\d{6}|(?:[29]0|[347]\\d)\\d{7}", , , , , , , [9], [5, 6, 7]], [ + , + , + "20(?:(?:240|30[67])\\d|6(?:00[0-2]|30[0-4]))\\d{3}|(?:20(?:[017]\\d|2[5-9]|3[1-4]|5[0-4]|6[15-9])|[34]\\d{3})\\d{5}", + , + , + , + "312345678", + , + , + , + [5, 6, 7] + ], [, , "72[48]0\\d{5}|7(?:[014-8]\\d|2[067]|36|9[0-289])\\d{6}", , , , "712345678"], [, , "800[1-3]\\d{5}", , , , "800123456"], [, , "90[1-3]\\d{6}", , , , "901123456"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "UG", 256, "00[057]", "0", , , "0", , , , [[, "(\\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"]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + US: [, [ + , + , + "[2-9]\\d{9}|3\\d{6}", + , + , + , + , + , + , + [10], + [7] + ], [ + , + , + "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}", + , + , + , + "2015550123", + , + , + , + [7] + ], [ + , + , + "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}", + , + , + , + "2015550123", + , + , + , + [7] + ], [, , "8(?:00|33|44|55|66|77|88)[2-9]\\d{6}", , , , "8002345678"], [, , "900[2-9]\\d{6}", , , , "9002345678"], [, , , , , , , , , [-1]], [, , "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}", , , , "5002345678"], [, , "305209\\d{4}", , , , "3052090123", , , , [7]], "US", 1, "011", "1", , , "1", , , 1, [ + [, "(\\d{3})(\\d{4})", "$1-$2", ["310"], , , 1], + [, "(\\d{3})(\\d{4})", "$1-$2", ["[24-9]|3(?:[02-9]|1[1-9])"]], + [, "(\\d{3})(\\d{3})(\\d{4})", "($1) $2-$3", ["[2-9]"], , , 1] + ], [[, "(\\d{3})(\\d{4})", "$1-$2", ["310"], , , 1], [, "(\\d{3})(\\d{3})(\\d{4})", "$1-$2-$3", ["[2-9]"]]], [, , , , , , , , , [-1]], 1, , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + UY: [, [, , "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]], [, , "(?:1(?:770|9(?:20|[89]7))|(?:2\\d|4[2-7])\\d\\d)\\d{4}", , , , "21231234", , , [8], [7]], [ + , + , + "9[1-9]\\d{6}", + , + , + , + "94231234", + , + , + [8] + ], [, , "0004\\d{2,9}|(?:405|80[05])\\d{4}", , , , "8001234", , , [6, 7, 8, 9, 10, 11, 12, 13]], [, , "90[0-8]\\d{4}", , , , "9001234", , , [7]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "UY", 598, "0(?:0|1[3-9]\\d)", "0", " int. ", , "0", , "00", , [[, "(\\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"] + ]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , "21\\d{2,3}", , , , "21123", , , [4, 5]], , , [, , , , , , , , , [-1]]], + UZ: [ + , + [, , "(?:20|33|[5-9]\\d)\\d{7}", , , , , , , [9]], + [, , "(?:55\\d\\d|6(?:1(?:22|3[124]|4[1-4]|5[1-3578]|64)|2(?:22|3[0-57-9]|41)|5(?:22|3[3-7]|5[024-8])|[69]\\d\\d|7(?:[23]\\d|7[69]))|7(?:0(?:5[4-9]|6[0146]|7[124-6]|9[135-8])|[168]\\d\\d|2(?:22|3[13-57-9]|4[1-3579]|5[14])|3(?:2\\d|3[1578]|4[1-35-7]|5[1-57]|61)|4(?:2\\d|3[1-579]|7[1-79])|5(?:22|5[1-9]|6[1457])|9(?:22|5[1-9])))\\d{5}", , , , "669050123"], + [ + , + , + "(?:(?:[25]0|33|8[78]|9[0-57-9])\\d{3}|6(?:1(?:2(?:2[01]|98)|35[0-4]|50\\d|61[23]|7(?:[01][017]|4\\d|55|9[5-9]))|2(?:(?:11|7\\d)\\d|2(?:[12]1|9[01379])|5(?:[126]\\d|3[0-4]))|5(?:19[01]|2(?:27|9[26])|(?:30|59|7\\d)\\d)|6(?:2(?:1[5-9]|2[0367]|38|41|52|60)|(?:3[79]|9[0-3])\\d|4(?:56|83)|7(?:[07]\\d|1[017]|3[07]|4[047]|5[057]|67|8[0178]|9[79]))|7(?:2(?:24|3[237]|4[5-9]|7[15-8])|5(?:7[12]|8[0589])|7(?:0\\d|[39][07])|9(?:0\\d|7[079])))|7(?:[07]\\d{3}|2(?:2(?:2[79]|95)|3(?:2[5-9]|6[0-6])|57\\d|7(?:0\\d|1[17]|2[27]|3[37]|44|5[057]|66|88))|3(?:2(?:1[0-6]|21|3[469]|7[159])|(?:33|9[4-6])\\d|5(?:0[0-4]|5[579]|9\\d)|7(?:[0-3579]\\d|4[0467]|6[67]|8[078]))|4(?:2(?:29|5[0257]|6[0-7]|7[1-57])|5(?:1[0-4]|8\\d|9[5-9])|7(?:0\\d|1[024589]|2[0-27]|3[0137]|[46][07]|5[01]|7[5-9]|9[079])|9(?:7[015-9]|[89]\\d))|5(?:112|2(?:0\\d|2[29]|[49]4)|3[1568]\\d|52[6-9]|7(?:0[01578]|1[017]|[23]7|4[047]|[5-7]\\d|8[78]|9[079]))|9(?:22[128]|3(?:2[0-4]|7\\d)|57[02569]|7(?:2[05-9]|3[37]|4\\d|60|7[2579]|87|9[07]))))\\d{4}", + , + , + , + "912345678" + ], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + "UZ", + 998, + "00", + , + , + , + , + , + , + , + [[, "(\\d{2})(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[235-9]"]]], + , + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]] + ], + VA: [, [, , "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]], [, , "06698\\d{1,6}", , , , "0669812345", , , [6, 7, 8, 9, 10, 11]], [, , "3[1-9]\\d{8}|3[2-9]\\d{7}", , , , "3123456789", , , [9, 10]], [ + , + , + "80(?:0\\d{3}|3)\\d{3}", + , + , + , + "800123456", + , + , + [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}", , , , "899123456", , , [6, 8, 9, 10]], [, , "84(?:[08]\\d{3}|[17])\\d{3}", , , , "848123456", , , [6, 9]], [, , "1(?:78\\d|99)\\d{6}", , , , "1781234567", , , [9, 10]], [, , "55\\d{8}", , , , "5512345678", , , [10]], "VA", 39, "00", , , , , , , , , , [, , , , , , , , , [-1]], , "06698", [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , "3[2-8]\\d{9,10}", , , , "33101234501", , , [11, 12]]], + VC: [ + , + [, , "(?:[58]\\d\\d|784|900)\\d{7}", , , , , , , [10], [7]], + [, , "784(?:266|3(?:6[6-9]|7\\d|8[0-6])|4(?:38|5[0-36-8]|8[0-8])|5(?:55|7[0-2]|93)|638|784)\\d{4}", , , , "7842661234", , , , [7]], + [, , "784(?:4(?:3[0-5]|5[45]|89|9[0-8])|5(?:2[6-9]|3[0-4])|720)\\d{4}", , , , "7844301234", , , , [7]], + [, , "8(?:00|33|44|55|66|77|88)[2-9]\\d{6}", , , , "8002345678"], + [, , "900[2-9]\\d{6}", , , , "9002345678"], + [, , , , , , , , , [-1]], + [ + , + , + "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}", + , + , + , + "5002345678" + ], + [, , "78451[0-2]\\d{4}", , , , "7845101234", , , , [7]], + "VC", + 1, + "011", + "1", + , + , + "([2-7]\\d{6})$|1", + "784$1", + , + , + , + , + [, , , , , , , , , [-1]], + , + "784", + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]] + ], + VE: [ + , + [, , "[68]00\\d{7}|(?:[24]\\d|[59]0)\\d{8}", , , , , , , [10], [7]], + [, , "(?:2(?:12|3[457-9]|[467]\\d|[58][1-9]|9[1-6])|[4-6]00)\\d{7}", , , , "2121234567", , , , [7]], + [, , "4(?:1[24-8]|2[246])\\d{7}", , , , "4121234567"], + [, , "800\\d{7}", , , , "8001234567"], + [, , "90[01]\\d{7}", , , , "9001234567"], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + "VE", + 58, + "00", + "0", + , + , + "0", + , + , + , + [[, "(\\d{3})(\\d{7})", "$1-$2", ["[24-689]"], "0$1", "$CC $1"]], + , + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]], + [, , "501\\d{7}", , , , "5010123456", , , , [7]], + , + , + [, , , , , , , , , [-1]] + ], + VG: [, [, , "(?:284|[58]\\d\\d|900)\\d{7}", , , , , , , [10], [7]], [, , "284(?:229|4(?:22|9[45])|774|8(?:52|6[459]))\\d{4}", , , , "2842291234", , , , [7]], [, , "284(?:245|3(?:0[0-3]|4[0-7]|68|9[34])|4(?:4[0-6]|68|9[69])|5(?:4[0-7]|68|9[69]))\\d{4}", , , , "2843001234", , , , [7]], [, , "8(?:00|33|44|55|66|77|88)[2-9]\\d{6}", , , , "8002345678"], [ + , + , + "900[2-9]\\d{6}", + , + , + , + "9002345678" + ], [, , , , , , , , , [-1]], [, , "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}", , , , "5002345678"], [, , , , , , , , , [-1]], "VG", 1, "011", "1", , , "([2-578]\\d{6})$|1", "284$1", , , , , [, , , , , , , , , [-1]], , "284", [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + VI: [, [, , "[58]\\d{9}|(?:34|90)0\\d{7}", , , , , , , [10], [7]], [ + , + , + "340(?:2(?:0\\d|10|2[06-8]|4[49]|77)|3(?:32|44)|4(?:2[23]|44|7[34]|89)|5(?:1[34]|55)|6(?:2[56]|4[23]|77|9[023])|7(?:1[2-57-9]|2[57]|7\\d)|884|998)\\d{4}", + , + , + , + "3406421234", + , + , + , + [7] + ], [, , "340(?:2(?:0\\d|10|2[06-8]|4[49]|77)|3(?:32|44)|4(?:2[23]|44|7[34]|89)|5(?:1[34]|55)|6(?:2[56]|4[23]|77|9[023])|7(?:1[2-57-9]|2[57]|7\\d)|884|998)\\d{4}", , , , "3406421234", , , , [7]], [, , "8(?:00|33|44|55|66|77|88)[2-9]\\d{6}", , , , "8002345678"], [, , "900[2-9]\\d{6}", , , , "9002345678"], [, , , , , , , , , [-1]], [ + , + , + "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}", + , + , + , + "5002345678" + ], [, , , , , , , , , [-1]], "VI", 1, "011", "1", , , "([2-9]\\d{6})$|1", "340$1", , 1, , , [, , , , , , , , , [-1]], , "340", [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + VN: [, [, , "[12]\\d{9}|[135-9]\\d{8}|[16]\\d{7}|[16-8]\\d{6}", , , , , , , [7, 8, 9, 10]], [, , "2(?:0[3-9]|1[0-689]|2[0-25-9]|[38][2-9]|4[2-8]|5[124-9]|6[0-39]|7[0-7]|9[0-4679])\\d{7}", , , , "2101234567", , , [10]], [, , "(?:5(?:2[238]|59)|89[6-9]|99[013-9])\\d{6}|(?:3\\d|5[1689]|7[06-9]|8[1-8]|9[0-8])\\d{7}", , , , "912345678", , , [9]], [ + , + , + "1800\\d{4,6}|12(?:0[13]|28)\\d{4}", + , + , + , + "1800123456", + , + , + [8, 9, 10] + ], [, , "1900\\d{4,6}", , , , "1900123456", , , [8, 9, 10]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , "672\\d{6}", , , , "672012345", , , [9]], "VN", 84, "00", "0", , , "0", , , , [[, "(\\d{3})(\\d{4})", "$1 $2", ["[17]99"], "0$1", , 1], [, "(\\d{2})(\\d{5})", "$1 $2", ["80"], "0$1", , 1], [, "(\\d{3})(\\d{4,5})", "$1 $2", ["69"], "0$1", , 1], [, "(\\d{4})(\\d{4,6})", "$1 $2", ["1"], , , 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]], [[, "(\\d{2})(\\d{5})", "$1 $2", ["80"], "0$1", , 1], [, "(\\d{4})(\\d{4,6})", "$1 $2", ["1"], , , 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]], [, , , , , , , , , [-1]], , , [, , "[17]99\\d{4}|69\\d{5,6}", , , , , , , [7, 8]], [ + , + , + "(?:[17]99|80\\d)\\d{4}|69\\d{5,6}", + , + , + , + "1992000", + , + , + [7, 8] + ], , , [, , , , , , , , , [-1]]], + VU: [ + , + [, , "[57-9]\\d{6}|(?:[238]\\d|48)\\d{3}", , , , , , , [5, 7]], + [, , "(?:38[0-8]|48[4-9])\\d\\d|(?:2[02-9]|3[4-7]|88)\\d{3}", , , , "22123", , , [5]], + [, , "(?:[58]\\d|7[013-7])\\d{5}", , , , "5912345", , , [7]], + [, , "81[18]\\d\\d", , , , "81123", , , [5]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , "9(?:0[1-9]|1[01])\\d{4}", , , , "9010123", , , [7]], + "VU", + 678, + "00", + , + , + , + , + , + , + , + [[, "(\\d{3})(\\d{4})", "$1 $2", ["[57-9]"]]], + , + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]], + [, , "(?:3[03]|900\\d)\\d{3}", , , , "30123"], + , + , + [, , , , , , , , , [-1]] + ], + WF: [, [, , "(?:40|72|8\\d{4})\\d{4}|[89]\\d{5}", , , , , , , [6, 9]], [, , "72\\d{4}", , , , "721234", , , [6]], [, , "(?:72|8[23])\\d{4}", , , , "821234", , , [6]], [, , "80[0-5]\\d{6}", , , , "800012345", , , [9]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , "9[23]\\d{4}", , , , "921234", , , [6]], "WF", 681, "00", , , , , , , , [[, "(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3", ["[47-9]"]], [, "(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["8"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , "[48]0\\d{4}", , , , "401234", , , [6]]], + WS: [ + , + [, , "(?:[2-6]|8\\d{5})\\d{4}|[78]\\d{6}|[68]\\d{5}", , , , , , , [5, 6, 7, 10]], + [, , "6[1-9]\\d{3}|(?:[2-5]|60)\\d{4}", , , , "22123", , , [5, 6]], + [, , "(?:7[1-35-8]|8(?:[3-7]|9\\d{3}))\\d{5}", , , , "7212345", , , [7, 10]], + [, , "800\\d{3}", , , , "800123", , , [6]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + "WS", + 685, + "0", + , + , + , + , + , + , + , + [[, "(\\d{5})", "$1", ["[2-5]|6[1-9]"]], [, "(\\d{3})(\\d{3,7})", "$1 $2", ["[68]"]], [, "(\\d{2})(\\d{5})", "$1 $2", ["7"]]], + , + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]] + ], + XK: [ + , + [, , "2\\d{7,8}|3\\d{7,11}|(?:4\\d\\d|[89]00)\\d{5}", , , , , , , [8, 9, 10, 11, 12]], + [, , "38\\d{6,10}|(?:2[89]|39)(?:0\\d{5,6}|[1-9]\\d{5})", , , , "28012345"], + [, , "4[3-9]\\d{6}", , , , "43201234", , , [8]], + [, , "800\\d{5}", , , , "80001234", , , [8]], + [, , "900\\d{5}", , , , "90001234", , , [8]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + "XK", + 383, + "00", + "0", + , + , + "0", + , + , + , + [[, "(\\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" + ]], + , + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]] + ], + YE: [, [, , "(?:1|7\\d)\\d{7}|[1-7]\\d{6}", , , , , , , [7, 8, 9], [6]], [, , "78[0-7]\\d{4}|17\\d{6}|(?:[12][2-68]|3[2358]|4[2-58]|5[2-6]|6[3-58]|7[24-6])\\d{5}", , , , "1234567", , , [7, 8], [6]], [, , "7[01378]\\d{7}", , , , "712345678", , , [9]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "YE", 967, "00", "0", , , "0", , , , [[, "(\\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" + ]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + YT: [ + , + [, , "7093\\d{5}|(?:80|9\\d)\\d{7}|(?:26|63)9\\d{6}", , , , , , , [9]], + [, , "269(?:0[0-467]|15|5[0-4]|6\\d|[78]0)\\d{4}", , , , "269601234"], + [, , "(?:639(?:0[0-79]|1[019]|[267]\\d|3[09]|40|5[05-9]|9[04-79])|7093[5-7])\\d{4}", , , , "639012345"], + [, , "80\\d{7}", , , , "801234567"], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , "9(?:(?:39|47)8[01]|769\\d)\\d{4}", , , , "939801234"], + "YT", + 262, + "00", + "0", + , + , + "0", + , + , + , + , + , + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]] + ], + ZA: [, [, , "[1-79]\\d{8}|8\\d{4,9}", , , , , , , [5, 6, 7, 8, 9, 10]], [, , "(?:2(?:0330|4302)|52087)0\\d{3}|(?:1[0-8]|2[1-378]|3[1-69]|4\\d|5[1346-8])\\d{7}", , , , "101234567", , , [9]], [ + , + , + "(?:1(?:3492[0-25]|4495[0235]|549(?:20|5[01]))|4[34]492[01])\\d{3}|8[1-4]\\d{3,7}|(?:2[27]|47|54)4950\\d{3}|(?:1(?:049[2-4]|9[12]\\d\\d)|(?:50[0-2]|6\\d\\d|7(?:[0-46-9]\\d|5[0-4]))\\d\\d|8(?:5\\d{3}|7(?:08[67]|158|28[5-9]|310)))\\d{4}|(?:1[6-8]|28|3[2-69]|4[025689]|5[36-8])4920\\d{3}|(?:12|[2-5]1)492\\d{4}", + , + , + , + "711234567", + , + , + [5, 6, 7, 8, 9] + ], [, , "80\\d{7}", , , , "801234567", , , [9]], [, , "(?:86[2-9]|9[0-2]\\d)\\d{6}", , , , "862345678", , , [9]], [, , "860\\d{6}", , , , "860123456", , , [9]], [, , , , , , , , , [-1]], [, , "87(?:08[0-589]|15[0-79]|28[0-4]|31[1-9])\\d{4}|87(?:[02][0-79]|1[0-46-9]|3[02-9]|[4-9]\\d)\\d{5}", , , , "871234567", , , [9]], "ZA", 27, "00", "0", , , "0", , , , [[, "(\\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"]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , "861\\d{6,7}", , , , "861123456", , , [9, 10]], , , [, , , , , , , , , [-1]]], + ZM: [, [, , "800\\d{6}|(?:21|[579]\\d|63)\\d{7}", , , , , , , [9], [6]], [, , "21[1-8]\\d{6}", , , , "211234567", , , , [6]], [, , "(?:[59][5-8]|7[5-9])\\d{7}", , , , "955123456"], [, , "800\\d{6}", , , , "800123456"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , "63\\d{7}", , , , "630123456"], "ZM", 260, "00", "0", , , "0", , , , [ + [, "(\\d{3})(\\d{3})", "$1 $2", ["[1-9]"]], + [, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[28]"], "0$1"], + [, "(\\d{2})(\\d{7})", "$1 $2", ["[579]"], "0$1"] + ], [[, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[28]"], "0$1"], [, "(\\d{2})(\\d{7})", "$1 $2", ["[579]"], "0$1"]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + ZW: [, [, , "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], [3, 4]], [ + , + , + "(?:1(?:(?:3\\d|9)\\d|[4-8])|2(?:(?:(?:0(?:2[014]|5)|(?:2[0157]|31|84|9)\\d\\d|[56](?:[14]\\d\\d|20)|7(?:[089]|2[03]|[35]\\d\\d))\\d|4(?:2\\d\\d|8))\\d|1(?:2|[39]\\d{4}))|3(?:(?:123|(?:29\\d|92)\\d)\\d\\d|7(?:[19]|[56]\\d))|5(?:0|1[2-478]|26|[37]2|4(?:2\\d{3}|83)|5(?:25\\d\\d|[78])|[689]\\d)|6(?:(?:[16-8]21|28|52[013])\\d\\d|[39])|8(?:[1349]28|523)\\d\\d)\\d{3}|(?:4\\d\\d|9[2-9])\\d{4,5}|(?:(?:2(?:(?:(?:0|8[146])\\d|7[1-7])\\d|2(?:[278]\\d|92)|58(?:2\\d|3))|3(?:[26]|9\\d{3})|5(?:4\\d|5)\\d\\d)\\d|6(?:(?:(?:[0-246]|[78]\\d)\\d|37)\\d|5[2-8]))\\d\\d|(?:2(?:[569]\\d|8[2-57-9])|3(?:[013-59]\\d|8[37])|6[89]8)\\d{3}", + , + , + , + "1312345", + , + , + , + [3, 4] + ], [, , "7(?:[1278]\\d|3[1-9])\\d{6}", , , , "712345678", , , [9]], [, , "80(?:[01]\\d|20|8[0-8])\\d{3}", , , , "8001234", , , [7]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , "86(?:1[12]|22|30|44|55|77|8[368])\\d{6}", , , , "8686123456", , , [10]], "ZW", 263, "00", "0", , , "0", , , , [ + [, "(\\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"] + ], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + 800: [ + , + [, , "(?:00|[1-9]\\d)\\d{6}", , , , , , , [8]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , "(?:00|[1-9]\\d)\\d{6}", , , , "12345678"], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + "001", + 800, + , + , + , + , + , + , + , + 1, + [[, "(\\d{4})(\\d{4})", "$1 $2", ["\\d"]]], + , + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]], + [, , , , , , , , , [-1]], + , + , + [, , , , , , , , , [-1]] + ], + 808: [, [, , "[1-9]\\d{7}", , , , , , , [8]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , "[1-9]\\d{7}", , , , "12345678"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "001", 808, , , , , , , , 1, [[, "(\\d{4})(\\d{4})", "$1 $2", ["[1-9]"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + 870: [, [, , "7\\d{11}|[235-7]\\d{8}", , , , , , , [9, 12]], [, , , , , , , , , [-1]], [, , "(?:[356]|774[45])\\d{8}|7[6-8]\\d{7}", , , , "301234567"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [ + , + , + "2\\d{8}", + , + , + , + "201234567", + , + , + [9] + ], "001", 870, , , , , , , , , [[, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[235-7]"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + 878: [, [, , "10\\d{10}", , , , , , , [12]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , "10\\d{10}", , , , "101234567890"], "001", 878, , , , , , , , 1, [[, "(\\d{2})(\\d{5})(\\d{5})", "$1 $2 $3", ["1"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + 881: [, [ + , + , + "6\\d{9}|[0-36-9]\\d{8}", + , + , + , + , + , + , + [9, 10] + ], [, , , , , , , , , [-1]], [, , "6\\d{9}|[0-36-9]\\d{8}", , , , "612345678"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "001", 881, , , , , , , , , [[, "(\\d)(\\d{3})(\\d{5})", "$1 $2 $3", ["[0-37-9]"]], [, "(\\d)(\\d{3})(\\d{5,6})", "$1 $2 $3", ["6"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + 882: [, [, , "[13]\\d{6}(?:\\d{2,5})?|[19]\\d{7}|(?:[25]\\d\\d|4)\\d{7}(?:\\d{2})?", , , , , , , [7, 8, 9, 10, 11, 12]], [, , , , , , , , , [-1]], [ + , + , + "342\\d{4}|(?:337|49)\\d{6}|(?:3(?:2|47|7\\d{3})|50\\d{3})\\d{7}", + , + , + , + "3421234", + , + , + [7, 8, 9, 10, 12] + ], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , "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}", , , , "390123456789"], "001", 882, , , , , , , , , [[, "(\\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]"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , "348[57]\\d{7}", , , , "34851234567", , , [11]]], + 883: [, [, , "(?:[1-4]\\d|51)\\d{6,10}", , , , , , , [8, 9, 10, 11, 12]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [ + , + , + "(?: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}", + , + , + , + "510012345" + ], "001", 883, , , , , , , , 1, [[, "(\\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]"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]], + 888: [, [, , "\\d{11}", , , , , , , [11]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [ + , + , + , + , + , + , + , + , + , + [-1] + ], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "001", 888, , , , , , , , 1, [[, "(\\d{3})(\\d{3})(\\d{5})", "$1 $2 $3"]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , "\\d{11}", , , , "12345678901"], , , [, , , , , , , , , [-1]]], + 979: [, [, , "[1359]\\d{8}", , , , , , , [9], [8]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , "[1359]\\d{8}", , , , "123456789", , , , [8]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "001", 979, , , , , , , , 1, [[, "(\\d)(\\d{4})(\\d{4})", "$1 $2 $3", ["[1359]"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]] + }; + function K() { + this.g = {}; + } + K.h = void 0; + K.g = function() { + return K.h ? K.h : K.h = new K(); + }; + var Ea = { 0: "0", 1: "1", 2: "2", 3: "3", 4: "4", 5: "5", 6: "6", 7: "7", 8: "8", 9: "9", "\uFF10": "0", "\uFF11": "1", "\uFF12": "2", "\uFF13": "3", "\uFF14": "4", "\uFF15": "5", "\uFF16": "6", "\uFF17": "7", "\uFF18": "8", "\uFF19": "9", "\u0660": "0", "\u0661": "1", "\u0662": "2", "\u0663": "3", "\u0664": "4", "\u0665": "5", "\u0666": "6", "\u0667": "7", "\u0668": "8", "\u0669": "9", "\u06F0": "0", "\u06F1": "1", "\u06F2": "2", "\u06F3": "3", "\u06F4": "4", "\u06F5": "5", "\u06F6": "6", "\u06F7": "7", "\u06F8": "8", "\u06F9": "9" }, Fa = { + 0: "0", + 1: "1", + 2: "2", + 3: "3", + 4: "4", + 5: "5", + 6: "6", + 7: "7", + 8: "8", + 9: "9", + "+": "+", + "*": "*", + "#": "#" + }, Ga = { + 0: "0", + 1: "1", + 2: "2", + 3: "3", + 4: "4", + 5: "5", + 6: "6", + 7: "7", + 8: "8", + 9: "9", + "\uFF10": "0", + "\uFF11": "1", + "\uFF12": "2", + "\uFF13": "3", + "\uFF14": "4", + "\uFF15": "5", + "\uFF16": "6", + "\uFF17": "7", + "\uFF18": "8", + "\uFF19": "9", + "\u0660": "0", + "\u0661": "1", + "\u0662": "2", + "\u0663": "3", + "\u0664": "4", + "\u0665": "5", + "\u0666": "6", + "\u0667": "7", + "\u0668": "8", + "\u0669": "9", + "\u06F0": "0", + "\u06F1": "1", + "\u06F2": "2", + "\u06F3": "3", + "\u06F4": "4", + "\u06F5": "5", + "\u06F6": "6", + "\u06F7": "7", + "\u06F8": "8", + "\u06F9": "9", + A: "2", + B: "2", + C: "2", + D: "3", + E: "3", + F: "3", + G: "4", + H: "4", + I: "4", + J: "5", + K: "5", + L: "5", + M: "6", + N: "6", + O: "6", + P: "7", + Q: "7", + R: "7", + S: "7", + T: "8", + U: "8", + V: "8", + W: "9", + X: "9", + Y: "9", + Z: "9" + }, Ha = RegExp("[+\uFF0B]+"), L = RegExp("^[+\uFF0B]+"), Ia = RegExp("([0-9\uFF10-\uFF19\u0660-\u0669\u06F0-\u06F9])"), Ja = RegExp("[+\uFF0B0-9\uFF10-\uFF19\u0660-\u0669\u06F0-\u06F9]"), Ka = /[\\\/] *x/, La = RegExp("[^0-9\uFF10-\uFF19\u0660-\u0669\u06F0-\u06F9A-Za-z#]+$"), Ma = /(?:.*?[A-Za-z]){3}.*/, Na = RegExp("^\\+([0-9\uFF10-\uFF19\u0660-\u0669\u06F0-\u06F9]|[\\-\\.\\(\\)]?)*[0-9\uFF10-\uFF19\u0660-\u0669\u06F0-\u06F9]([0-9\uFF10-\uFF19\u0660-\u0669\u06F0-\u06F9]|[\\-\\.\\(\\)]?)*$"), Oa = RegExp("^([A-Za-z0-9\uFF10-\uFF19\u0660-\u0669\u06F0-\u06F9]+((\\-)*[A-Za-z0-9\uFF10-\uFF19\u0660-\u0669\u06F0-\u06F9])*\\.)*[A-Za-z]+((\\-)*[A-Za-z0-9\uFF10-\uFF19\u0660-\u0669\u06F0-\u06F9])*\\.?$"); + function M(a) { + return "([0-9\uFF10-\uFF19\u0660-\u0669\u06F0-\u06F9]{1," + a + "})"; + } + function Pa() { + return ";ext=" + M("20") + "|[ \xA0\\t,]*(?:e?xt(?:ensi(?:o\u0301?|\xF3))?n?|\uFF45?\uFF58\uFF54\uFF4E?|\u0434\u043E\u0431|anexo)[:\\.\uFF0E]?[ \xA0\\t,-]*" + (M("20") + "#?|[ \xA0\\t,]*(?:[x\uFF58#\uFF03~\uFF5E]|int|\uFF49\uFF4E\uFF54)[:\\.\uFF0E]?[ \xA0\\t,-]*") + (M("9") + "#?|[- ]+") + (M("6") + "#|[ \xA0\\t]*(?:,{2}|;)[:\\.\uFF0E]?[ \xA0\\t,-]*") + (M("15") + "#?|[ \xA0\\t]*(?:,)+[:\\.\uFF0E]?[ \xA0\\t,-]*") + (M("9") + "#?"); + } + var Qa = new RegExp("(?:" + Pa() + ")$", "i"), Ra = new RegExp("^[0-9\uFF10-\uFF19\u0660-\u0669\u06F0-\u06F9]{2}$|^[+\uFF0B]*(?:[-x\u2010-\u2015\u2212\u30FC\uFF0D-\uFF0F \xA0\xAD\u200B\u2060\u3000()\uFF08\uFF09\uFF3B\uFF3D.\\[\\]/~\u2053\u223C\uFF5E*]*[0-9\uFF10-\uFF19\u0660-\u0669\u06F0-\u06F9]){3,}[-x\u2010-\u2015\u2212\u30FC\uFF0D-\uFF0F \xA0\xAD\u200B\u2060\u3000()\uFF08\uFF09\uFF3B\uFF3D.\\[\\]/~\u2053\u223C\uFF5E*A-Za-z0-9\uFF10-\uFF19\u0660-\u0669\u06F0-\u06F9]*(?:" + Pa() + ")?$", "i"), Sa = /(\$\d)/, Ta = /^\(?\$1\)?$/; + function Ua(a) { + return 2 > a.length ? false : N(Ra, a); + } + function Va(a) { + return N(Ma, a) ? O(a, Ga) : O(a, Ea); + } + function Wa(a) { + var b = Va(a.toString()); + E(a); + a.g(b); + } + function Xa(a) { + return null != a && (1 != x(a, 9) || -1 != u(a, 9)[0]); + } + function O(a, b) { + for (var c = new D(), d, e = a.length, f = 0; f < e; ++f) d = a.charAt(f), d = b[d.toUpperCase()], null != d && c.g(d); + return c.toString(); + } + function Ya(a) { + return 0 == a.length || Ta.test(a); + } + function P(a) { + return null != a && isNaN(a) && a.toUpperCase() in Da; + } + K.prototype.format = function(a, b) { + if (0 == r(a, 2) && q(a, 5)) { + var c = w(a, 5); + if (0 < c.length) return c; + } + c = w(a, 1); + var d = Q(a); + if (0 == b) return Za(c, 0, d, ""); + if (!(c in J)) return d; + var e = R(this, c, S(c)); + a = q(a, 3) && 0 != r(a, 3).length ? 3 == b ? ";ext=" + r(a, 3) : q(e, 13) ? r(e, 13) + w(a, 3) : " ext. " + w(a, 3) : ""; + a: { + e = 0 == u(e, 20).length || 2 == b ? u(e, 19) : u(e, 20); + for (var f, g = e.length, h = 0; h < g; ++h) { + f = e[h]; + var l = x(f, 3); + if (0 == l || 0 == d.search(r(f, 3, l - 1))) { + if (l = new RegExp(r(f, 1)), N(l, d)) { + e = f; + break a; + } + } + } + e = null; + } + null != e && (g = e, e = w(g, 2), f = new RegExp(r(g, 1)), w( + g, + 5 + ), g = w(g, 4), d = 2 == b && null != g && 0 < g.length ? d.replace(f, e.replace(Sa, g)) : d.replace(f, e), 3 == b && (d = d.replace(RegExp("^[-x\u2010-\u2015\u2212\u30FC\uFF0D-\uFF0F \xA0\xAD\u200B\u2060\u3000()\uFF08\uFF09\uFF3B\uFF3D.\\[\\]/~\u2053\u223C\uFF5E]+"), ""), d = d.replace(RegExp("[-x\u2010-\u2015\u2212\u30FC\uFF0D-\uFF0F \xA0\xAD\u200B\u2060\u3000()\uFF08\uFF09\uFF3B\uFF3D.\\[\\]/~\u2053\u223C\uFF5E]+", "g"), "-"))); + return Za(c, b, d, a); + }; + function R(a, b, c) { + return "001" == c ? T(a, "" + b) : T(a, c); + } + function Q(a) { + if (!q(a, 2)) return ""; + var b = "" + r(a, 2); + return q(a, 4) && r(a, 4) && 0 < w(a, 8) ? Array(w(a, 8) + 1).join("0") + b : b; + } + function Za(a, b, c, d) { + switch (b) { + case 0: + return "+" + a + c + d; + case 1: + return "+" + a + " " + c + d; + case 3: + return "tel:+" + a + "-" + c + d; + default: + return c + d; + } + } + function U(a, b) { + switch (b) { + case 4: + return r(a, 5); + case 3: + return r(a, 4); + case 1: + return r(a, 3); + case 0: + case 2: + return r(a, 2); + case 5: + return r(a, 6); + case 6: + return r(a, 8); + case 7: + return r(a, 7); + case 8: + return r(a, 21); + case 9: + return r(a, 25); + case 10: + return r(a, 28); + default: + return r(a, 1); + } + } + function $a(a, b) { + var c = ab(a, b); + a = R(a, w(b, 1), c); + if (null == a) return -1; + b = Q(b); + return bb(b, a); + } + function bb(a, b) { + return V(a, r(b, 1)) ? V(a, r(b, 5)) ? 4 : V(a, r(b, 4)) ? 3 : V(a, r(b, 6)) ? 5 : V(a, r(b, 8)) ? 6 : V(a, r(b, 7)) ? 7 : V(a, r(b, 21)) ? 8 : V(a, r(b, 25)) ? 9 : V(a, r(b, 28)) ? 10 : V(a, r(b, 2)) ? r(b, 18) || V(a, r(b, 3)) ? 2 : 0 : !r(b, 18) && V(a, r(b, 3)) ? 1 : -1 : -1; + } + function T(a, b) { + if (null == b) return null; + b = b.toUpperCase(); + var c = a.g[b]; + if (null == c) { + c = Da[b]; + if (null == c) return null; + c = new C().g(H.m(), c); + a.g[b] = c; + } + return c; + } + function V(a, b) { + var c = a.length; + return 0 < x(b, 9) && -1 == u(b, 9).indexOf(c) ? false : N(w(b, 2), a); + } + function cb(a, b) { + var c = ab(a, b); + var d = w(b, 1); + var e = R(a, d, c); + null == e || "001" != c && d != db(a, c) ? e = false : (a = Q(b), e = -1 != bb(a, e)); + return e; + } + function ab(a, b) { + if (null == b) return null; + var c = w(b, 1); + c = J[c]; + if (null == c) a = null; + else if (1 == c.length) a = c[0]; + else a: { + b = Q(b); + for (var d, e = c.length, f = 0; f < e; f++) { + d = c[f]; + var g = T(a, d); + if (q(g, 23)) { + if (0 == b.search(r(g, 23))) { + a = d; + break a; + } + } else if (-1 != bb(b, g)) { + a = d; + break a; + } + } + a = null; + } + return a; + } + function S(a) { + a = J[a]; + return null == a ? "ZZ" : a[0]; + } + function db(a, b) { + a = T(a, b); + if (null == a) throw Error("Invalid region code: " + b); + return w(a, 10); + } + function W(a, b, c, d) { + var e = U(c, d), f = 0 == x(e, 9) ? u(r(c, 1), 9) : u(e, 9); + e = u(e, 10); + if (2 == d) if (Xa(U(c, 0))) a = U(c, 1), Xa(a) && (f = f.concat(0 == x(a, 9) ? u(r(c, 1), 9) : u(a, 9)), f.sort(), 0 == e.length ? e = u(a, 10) : (e = e.concat(u(a, 10)), e.sort())); + else return W(a, b, c, 1); + if (-1 == f[0]) return 5; + b = b.length; + if (-1 < e.indexOf(b)) return 4; + c = f[0]; + return c == b ? 0 : c > b ? 2 : f[f.length - 1] < b ? 3 : -1 < f.indexOf(b, 1) ? 0 : 5; + } + function X(a, b, c) { + var d = Q(b); + b = w(b, 1); + if (!(b in J)) return 1; + b = R(a, b, S(b)); + return W(a, d, b, c); + } + function eb(a, b) { + a = a.toString(); + if (0 == a.length || "0" == a.charAt(0)) return 0; + for (var c, d = a.length, e = 1; 3 >= e && e <= d; ++e) if (c = parseInt(a.substring(0, e), 10), c in J) return b.g(a.substring(e)), c; + return 0; + } + function fb(a, b, c, d, e, f) { + if (0 == b.length) return 0; + b = new D(b); + var g; + null != c && (g = r(c, 11)); + null == g && (g = "NonMatch"); + var h = b.toString(); + if (0 == h.length) g = 20; + else if (L.test(h)) h = h.replace(L, ""), E(b), b.g(Va(h)), g = 1; + else { + h = new RegExp(g); + Wa(b); + g = b.toString(); + if (0 == g.search(h)) { + h = g.match(h)[0].length; + var l = g.substring(h).match(Ia); + l && null != l[1] && 0 < l[1].length && "0" == O(l[1], Ea) ? g = false : (E(b), b.g(g.substring(h)), g = true); + } else g = false; + g = g ? 5 : 20; + } + e && t(f, 6, g); + if (20 != g) { + if (2 >= b.h.length) throw Error("Phone number too short after IDD"); + a = eb(b, d); + if (0 != a) return t(f, 1, a), a; + throw Error("Invalid country calling code"); + } + if (null != c && (g = w(c, 10), h = "" + g, l = b.toString(), 0 == l.lastIndexOf(h, 0) && (h = new D(l.substring(h.length)), l = r(c, 1), l = new RegExp(w(l, 2)), gb(h, c, null), h = h.toString(), !N(l, b.toString()) && N(l, h) || 3 == W(a, b.toString(), c, -1)))) return d.g(h), e && t(f, 6, 10), t(f, 1, g), g; + t(f, 1, 0); + return 0; + } + function gb(a, b, c) { + var d = a.toString(), e = d.length, f = r(b, 15); + if (0 != e && null != f && 0 != f.length) { + var g = new RegExp("^(?:" + f + ")"); + if (e = g.exec(d)) { + f = new RegExp(w(r(b, 1), 2)); + var h = N(f, d), l = e.length - 1; + b = r(b, 16); + if (null == b || 0 == b.length || null == e[l] || 0 == e[l].length) { + if (!h || N(f, d.substring(e[0].length))) null != c && 0 < l && null != e[l] && c.g(e[1]), a.set(d.substring(e[0].length)); + } else if (d = d.replace(g, b), !h || N(f, d)) null != c && 0 < l && c.g(e[1]), a.set(d); + } + } + } + function Y(a, b, c) { + if (!P(c) && 0 < b.length && "+" != b.charAt(0)) throw Error("Invalid country calling code"); + return hb(a, b, c, true); + } + function hb(a, b, c, d) { + if (null == b) throw Error("The string supplied did not seem to be a phone number"); + if (250 < b.length) throw Error("The string supplied is too long to be a phone number"); + var e = new D(); + var f = b.indexOf(";phone-context="); + if (-1 === f) f = null; + else if (f += 15, f >= b.length) f = ""; + else { + var g = b.indexOf(";", f); + f = -1 !== g ? b.substring(f, g) : b.substring(f); + } + var h = f; + null == h ? g = true : 0 === h.length ? g = false : (g = Na.exec(h), h = Oa.exec(h), g = null !== g || null !== h); + if (!g) throw Error("The string supplied did not seem to be a phone number"); + null != f ? ("+" === f.charAt(0) && e.g(f), f = b.indexOf("tel:"), e.g(b.substring(0 <= f ? f + 4 : 0, b.indexOf(";phone-context=")))) : (f = e.g, g = b ?? "", h = g.search(Ja), 0 <= h ? (g = g.substring(h), g = g.replace(La, ""), h = g.search(Ka), 0 <= h && (g = g.substring(0, h))) : g = "", f.call(e, g)); + f = e.toString(); + g = f.indexOf(";isub="); + 0 < g && (E(e), e.g(f.substring(0, g))); + if (!Ua(e.toString())) throw Error("The string supplied did not seem to be a phone number"); + f = e.toString(); + if (!(P(c) || null != f && 0 < f.length && L.test(f))) throw Error("Invalid country calling code"); + f = new I(); + d && t(f, 5, b); + a: { + b = e.toString(); + g = b.search(Qa); + if (0 <= g && Ua(b.substring(0, g))) { + h = b.match(Qa); + for (var l = h.length, A = 1; A < l; ++A) if (null != h[A] && 0 < h[A].length) { + E(e); + e.g(b.substring(0, g)); + b = h[A]; + break a; + } + } + b = ""; + } + 0 < b.length && t(f, 3, b); + g = T(a, c); + b = new D(); + h = 0; + l = e.toString(); + try { + h = fb(a, l, g, b, d, f); + } catch (ca) { + if ("Invalid country calling code" == ca.message && L.test(l)) { + if (l = l.replace(L, ""), h = fb(a, l, g, b, d, f), 0 == h) throw ca; + } else throw ca; + } + 0 != h ? (e = S(h), e != c && (g = R(a, h, e))) : (Wa(e), b.g(e.toString()), null != c ? (h = w(g, 10), t( + f, + 1, + h + )) : d && (delete f.h[6], f.g && delete f.g[6])); + if (2 > b.h.length) throw Error("The string supplied is too short to be a phone number"); + null != g && (c = new D(), e = new D(b.toString()), gb(e, g, c), a = W(a, e.toString(), g, -1), 2 != a && 4 != a && 5 != a && (b = e, d && 0 < c.toString().length && t(f, 7, c.toString()))); + d = b.toString(); + a = d.length; + if (2 > a) throw Error("The string supplied is too short to be a phone number"); + if (17 < a) throw Error("The string supplied is too long to be a phone number"); + if (1 < d.length && "0" == d.charAt(0)) { + t(f, 4, true); + for (a = 1; a < d.length - 1 && "0" == d.charAt(a); ) a++; + 1 != a && t(f, 8, a); + } + t(f, 2, parseInt(d, 10)); + return f; + } + function N(a, b) { + return (a = b.match(new RegExp("^(?:" + ("string" == typeof a ? a : a.source) + ")$", "i"))) && a[0].length == b.length ? true : false; + } + ; + function ib(a) { + this.fa = RegExp("\u2008"); + this.ja = ""; + this.v = new D(); + this.da = ""; + this.s = new D(); + this.ba = new D(); + this.u = true; + this.ea = this.ca = this.la = false; + this.ga = K.g(); + this.$ = 0; + this.h = new D(); + this.ha = false; + this.o = ""; + this.g = new D(); + this.j = []; + this.ka = a; + this.l = jb(this, this.ka); + } + var kb = new H(); + t(kb, 11, "NA"); + var lb = RegExp("^[-x\u2010-\u2015\u2212\u30FC\uFF0D-\uFF0F \xA0\xAD\u200B\u2060\u3000()\uFF08\uFF09\uFF3B\uFF3D.\\[\\]/~\u2053\u223C\uFF5E]*\\$1[-x\u2010-\u2015\u2212\u30FC\uFF0D-\uFF0F \xA0\xAD\u200B\u2060\u3000()\uFF08\uFF09\uFF3B\uFF3D.\\[\\]/~\u2053\u223C\uFF5E]*(\\$\\d[-x\u2010-\u2015\u2212\u30FC\uFF0D-\uFF0F \xA0\xAD\u200B\u2060\u3000()\uFF08\uFF09\uFF3B\uFF3D.\\[\\]/~\u2053\u223C\uFF5E]*)*$"), mb = /[- ]/; + function jb(a, b) { + var c = a.ga; + b = P(b) ? db(c, b) : 0; + a = T(a.ga, S(b)); + return null != a ? a : kb; + } + function nb(a) { + for (var b = a.j.length, c = 0; c < b; ++c) { + var d = a.j[c], e = w(d, 1); + if (a.da == e) return false; + var f = a; + var g = d, h = w(g, 1); + E(f.v); + var l = f; + g = w(g, 2); + var A = "999999999999999".match(h)[0]; + A.length < l.g.h.length ? l = "" : (l = A.replace(new RegExp(h, "g"), g), l = l.replace(RegExp("9", "g"), "\u2008")); + 0 < l.length ? (f.v.g(l), f = true) : f = false; + if (f) return a.da = e, a.ha = mb.test(r(d, 4)), a.$ = 0, true; + } + return a.u = false; + } + function ob(a, b) { + for (var c = [], d = b.length - 3, e = a.j.length, f = 0; f < e; ++f) { + var g = a.j[f]; + 0 == x(g, 3) ? c.push(a.j[f]) : (g = r(g, 3, Math.min(d, x(g, 3) - 1)), 0 == b.search(g) && c.push(a.j[f])); + } + a.j = c; + } + function pb(a, b) { + a.s.g(b); + var c = b; + Ia.test(c) || 1 == a.s.h.length && Ha.test(c) ? ("+" == b ? (c = b, a.ba.g(b)) : (c = Ea[b], a.ba.g(c), a.g.g(c)), b = c) : (a.u = false, a.la = true); + if (!a.u) { + if (!a.la) { + if (qb(a)) { + if (rb(a)) return sb(a); + } else if (0 < a.o.length && (b = a.g.toString(), E(a.g), a.g.g(a.o), a.g.g(b), b = a.h.toString(), c = b.lastIndexOf(a.o), E(a.h), a.h.g(b.substring(0, c))), a.o != tb(a)) return a.h.g(" "), sb(a); + } + return a.s.toString(); + } + switch (a.ba.h.length) { + case 0: + case 1: + case 2: + return a.s.toString(); + case 3: + if (qb(a)) a.ea = true; + else return a.o = tb(a), ub(a); + default: + if (a.ea) return rb(a) && (a.ea = false), a.h.toString() + a.g.toString(); + if (0 < a.j.length) { + b = vb(a, b); + c = wb(a); + if (0 < c.length) return c; + ob(a, a.g.toString()); + return nb(a) ? xb(a) : a.u ? Z(a, b) : a.s.toString(); + } + return ub(a); + } + } + function sb(a) { + a.u = true; + a.ea = false; + a.j = []; + a.$ = 0; + E(a.v); + a.da = ""; + return ub(a); + } + function wb(a) { + for (var b = a.g.toString(), c = a.j.length, d = 0; d < c; ++d) { + var e = a.j[d], f = w(e, 1); + if (new RegExp("^(?:" + f + ")$").test(b) && (a.ha = mb.test(r(e, 4)), e = b.replace(new RegExp(f, "g"), r(e, 2)), e = Z(a, e), O(e, Fa) == a.ba)) return e; + } + return ""; + } + function Z(a, b) { + var c = a.h.h.length; + return a.ha && 0 < c && " " != a.h.toString().charAt(c - 1) ? a.h + " " + b : a.h + b; + } + function ub(a) { + var b = a.g.toString(); + if (3 <= b.length) { + for (var c = a.ca && 0 == a.o.length && 0 < x(a.l, 20) ? u(a.l, 20) : u(a.l, 19), d = c.length, e = 0; e < d; ++e) { + var f = c[e]; + 0 < a.o.length && Ya(w(f, 4)) && !r(f, 6) && !q(f, 5) || (0 != a.o.length || a.ca || Ya(w(f, 4)) || r(f, 6)) && lb.test(w(f, 2)) && a.j.push(f); + } + ob(a, b); + b = wb(a); + return 0 < b.length ? b : nb(a) ? xb(a) : a.s.toString(); + } + return Z(a, b); + } + function xb(a) { + var b = a.g.toString(), c = b.length; + if (0 < c) { + for (var d = "", e = 0; e < c; e++) d = vb(a, b.charAt(e)); + return a.u ? Z(a, d) : a.s.toString(); + } + return a.h.toString(); + } + function tb(a) { + var b = a.g.toString(), c = 0; + if (1 != r(a.l, 10)) var d = false; + else d = a.g.toString(), d = "1" == d.charAt(0) && "0" != d.charAt(1) && "1" != d.charAt(1); + d ? (c = 1, a.h.g("1").g(" "), a.ca = true) : q(a.l, 15) && (d = new RegExp("^(?:" + r(a.l, 15) + ")"), d = b.match(d), null != d && null != d[0] && 0 < d[0].length && (a.ca = true, c = d[0].length, a.h.g(b.substring(0, c)))); + E(a.g); + a.g.g(b.substring(c)); + return b.substring(0, c); + } + function qb(a) { + var b = a.ba.toString(), c = new RegExp("^(?:\\+|" + r(a.l, 11) + ")"); + c = b.match(c); + return null != c && null != c[0] && 0 < c[0].length ? (a.ca = true, c = c[0].length, E(a.g), a.g.g(b.substring(c)), E(a.h), a.h.g(b.substring(0, c)), "+" != b.charAt(0) && a.h.g(" "), true) : false; + } + function rb(a) { + if (0 == a.g.h.length) return false; + var b = new D(), c = eb(a.g, b); + if (0 == c) return false; + E(a.g); + a.g.g(b.toString()); + b = S(c); + "001" == b ? a.l = T(a.ga, "" + c) : b != a.ka && (a.l = jb(a, b)); + a.h.g("" + c).g(" "); + a.o = ""; + return true; + } + function vb(a, b) { + var c = a.v.toString(); + if (0 <= c.substring(a.$).search(a.fa)) { + var d = c.search(a.fa); + b = c.replace(a.fa, b); + E(a.v); + a.v.g(b); + a.$ = d; + return b.substring(0, a.$ + 1); + } + 1 == a.j.length && (a.u = false); + a.da = ""; + return a.s.toString(); + } + ; + const yb = (a) => { + const b = []; + a.includes("FIXED_LINE_OR_MOBILE") ? (a.includes("MOBILE") || b.push("MOBILE"), a.includes("FIXED_LINE") || b.push("FIXED_LINE")) : (a.includes("MOBILE") || a.includes("FIXED_LINE")) && b.push("FIXED_LINE_OR_MOBILE"); + return a.concat(b); + }, zb = { FIXED_LINE: 0, MOBILE: 1, FIXED_LINE_OR_MOBILE: 2, TOLL_FREE: 3, PREMIUM_RATE: 4, SHARED_COST: 5, VOIP: 6, PERSONAL_NUMBER: 7, PAGER: 8, UAN: 9, VOICEMAIL: 10, UNKNOWN: -1 }; + m("intlTelInputUtilsTemp", {}); + m("intlTelInputUtilsTemp.formatNumberAsYouType", (a, b) => { + try { + const c = a.replace(/[^+0-9]/g, ""), d = new ib(b); + b = ""; + for (let e = 0; e < c.length; e++) d.ja = pb(d, c.charAt(e)), b = d.ja; + return b; + } catch { + return a; + } + }); + m("intlTelInputUtilsTemp.formatNumber", (a, b, c) => { + try { + const e = K.g(), f = Y(e, a, b); + var d = X(e, f, -1); + return 0 == d || 4 == d ? e.format(f, "undefined" === typeof c ? 0 : c) : a; + } catch { + return a; + } + }); + m("intlTelInputUtilsTemp.getExampleNumber", (a, b, c, d) => { + try { + const l = K.g(); + a: { + var e = l; + if (P(a)) { + var f = U(T(e, a), c); + try { + if (q(f, 6)) { + var g = r(f, 6); + var h = hb(e, g, a, false); + break a; + } + } catch (A) { + } + } + h = null; + } + return l.format(h, d ? 0 : b ? 2 : 1); + } catch { + return ""; + } + }); + m("intlTelInputUtilsTemp.getExtension", (a, b) => { + try { + return r(Y(K.g(), a, b), 3); + } catch { + return ""; + } + }); + m("intlTelInputUtilsTemp.getNumberType", (a, b) => { + try { + const c = K.g(), d = Y(c, a, b); + return $a(c, d); + } catch { + return -99; + } + }); + m("intlTelInputUtilsTemp.getValidationError", (a, b) => { + if (!b) return 1; + try { + const c = K.g(), d = Y(c, a, b); + return X(c, d, -1); + } catch (c) { + return "Invalid country calling code" === c.message ? 1 : 3 >= a.length || "Phone number too short after IDD" === c.message || "The string supplied is too short to be a phone number" === c.message ? 2 : "The string supplied is too long to be a phone number" === c.message ? 3 : -99; + } + }); + m("intlTelInputUtilsTemp.isValidNumber", (a, b, c) => { + try { + const d = K.g(), e = Y(d, a, b), f = cb(d, e); + if (c) { + const g = yb(c).map((h) => zb[h]); + return f && g.includes($a(d, e)); + } + return f; + } catch { + return false; + } + }); + m("intlTelInputUtilsTemp.isPossibleNumber", (a, b, c) => { + try { + const d = K.g(), e = Y(d, a, b); + if (c) { + const f = yb(c); + for (let g of f) if (0 === X(d, e, zb[g])) return true; + return false; + } + return 0 === X(d, e, -1); + } catch { + return false; + } + }); + m("intlTelInputUtilsTemp.getCoreNumber", (a, b) => { + try { + return r(Y(K.g(), a, b), 2).toString(); + } catch { + return ""; + } + }); + m("intlTelInputUtilsTemp.numberFormat", { E164: 0, INTERNATIONAL: 1, NATIONAL: 2, RFC3966: 3 }); + m("intlTelInputUtilsTemp.numberType", zb); + m("intlTelInputUtilsTemp.validationError", { IS_POSSIBLE: 0, INVALID_COUNTRY_CODE: 1, TOO_SHORT: 2, TOO_LONG: 3, IS_POSSIBLE_LOCAL_ONLY: 4, INVALID_LENGTH: 5 }); + })(); + var globalContext = typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : void 0; + var utils = globalContext.intlTelInputUtilsTemp; + delete globalContext.intlTelInputUtilsTemp; + var utils_default = utils; + + // src/js/intl-tel-input/intlTelInputWithUtils.ts + intl_tel_input_default.utils = utils_default; + var intlTelInputWithUtils_default = intl_tel_input_default; + return __toCommonJS(intlTelInputWithUtils_exports); +})(); + +// UMD + return factoryOutput.default; +})); diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/vendors/intl-tel-input/js/intlTelInputWithUtils.min.js b/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/vendors/intl-tel-input/js/intlTelInputWithUtils.min.js new file mode 100644 index 000000000..9bd835e73 --- /dev/null +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/vendors/intl-tel-input/js/intlTelInputWithUtils.min.js @@ -0,0 +1,31 @@ +/* + * International Telephone Input v25.12.4 + * https://github.com/jackocnr/intl-tel-input.git + * Licensed under the MIT license + */ + +// UMD +(function(factory) { + if (typeof module === 'object' && module.exports) { + module.exports = factory(); + } else { + window.intlTelInput = factory(); + } +}(() => { + +var factoryOutput=(()=>{var R1=Object.defineProperty;var h2=Object.getOwnPropertyDescriptor;var p2=Object.getOwnPropertyNames;var f2=Object.prototype.hasOwnProperty;var C2=(h,e)=>{for(var n in e)R1(h,n,{get:e[n],enumerable:!0})},m2=(h,e,n,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of p2(e))!f2.call(h,r)&&r!==n&&R1(h,r,{get:()=>e[r],enumerable:!(i=h2(e,r))||i.enumerable});return h};var g2=h=>m2(R1({},"__esModule",{value:!0}),h);var w2={};C2(w2,{default:()=>A2});var y2=[["af","93",0,null,"0"],["ax","358",1,["18","4"],"0"],["al","355",0,null,"0"],["dz","213",0,null,"0"],["as","1",5,["684"],"1"],["ad","376"],["ao","244"],["ai","1",6,["264"],"1"],["ag","1",7,["268"],"1"],["ar","54",0,null,"0"],["am","374",0,null,"0"],["aw","297"],["ac","247"],["au","61",0,["4"],"0"],["at","43",0,null,"0"],["az","994",0,null,"0"],["bs","1",8,["242"],"1"],["bh","973"],["bd","880",0,null,"0"],["bb","1",9,["246"],"1"],["by","375",0,null,"8"],["be","32",0,null,"0"],["bz","501"],["bj","229"],["bm","1",10,["441"],"1"],["bt","975"],["bo","591",0,null,"0"],["ba","387",0,null,"0"],["bw","267"],["br","55",0,null,"0"],["io","246"],["vg","1",11,["284"],"1"],["bn","673"],["bg","359",0,null,"0"],["bf","226"],["bi","257"],["kh","855",0,null,"0"],["cm","237"],["ca","1",1,["204","226","236","249","250","257","263","289","306","343","354","365","367","368","382","403","416","418","428","431","437","438","450","468","474","506","514","519","548","579","581","584","587","604","613","639","647","672","683","705","709","742","753","778","780","782","807","819","825","867","873","879","902","905","942"],"1"],["cv","238"],["bq","599",1,["3","4","7"]],["ky","1",12,["345"],"1"],["cf","236"],["td","235"],["cl","56"],["cn","86",0,null,"0"],["cx","61",2,["4","89164"],"0"],["cc","61",1,["4","89162"],"0"],["co","57",0,null,"0"],["km","269"],["cg","242"],["cd","243",0,null,"0"],["ck","682"],["cr","506"],["ci","225"],["hr","385",0,null,"0"],["cu","53",0,null,"0"],["cw","599",0],["cy","357"],["cz","420"],["dk","45"],["dj","253"],["dm","1",13,["767"],"1"],["do","1",2,["809","829","849"],"1"],["ec","593",0,null,"0"],["eg","20",0,null,"0"],["sv","503"],["gq","240"],["er","291",0,null,"0"],["ee","372"],["sz","268"],["et","251",0,null,"0"],["fk","500"],["fo","298"],["fj","679"],["fi","358",0,["4"],"0"],["fr","33",0,null,"0"],["gf","594",0,null,"0"],["pf","689"],["ga","241"],["gm","220"],["ge","995",0,null,"0"],["de","49",0,null,"0"],["gh","233",0,null,"0"],["gi","350"],["gr","30"],["gl","299"],["gd","1",14,["473"],"1"],["gp","590",0,null,"0"],["gu","1",15,["671"],"1"],["gt","502"],["gg","44",1,["1481","7781","7839","7911"],"0"],["gn","224"],["gw","245"],["gy","592"],["ht","509"],["hn","504"],["hk","852"],["hu","36",0,null,"06"],["is","354"],["in","91",0,null,"0"],["id","62",0,null,"0"],["ir","98",0,null,"0"],["iq","964",0,null,"0"],["ie","353",0,null,"0"],["im","44",2,["1624","74576","7524","7624","7924"],"0"],["il","972",0,null,"0"],["it","39",0,["3"]],["jm","1",4,["658","876"],"1"],["jp","81",0,null,"0"],["je","44",3,["1534","7509","7700","7797","7829","7937"],"0"],["jo","962",0,null,"0"],["kz","7",1,["33","7"],"8"],["ke","254",0,null,"0"],["ki","686",0,null,"0"],["xk","383",0,null,"0"],["kw","965"],["kg","996",0,null,"0"],["la","856",0,null,"0"],["lv","371"],["lb","961",0,null,"0"],["ls","266"],["lr","231",0,null,"0"],["ly","218",0,null,"0"],["li","423",0,null,"0"],["lt","370",0,null,"0"],["lu","352"],["mo","853"],["mg","261",0,null,"0"],["mw","265",0,null,"0"],["my","60",0,null,"0"],["mv","960"],["ml","223"],["mt","356"],["mh","692",0,null,"1"],["mq","596",0,null,"0"],["mr","222"],["mu","230"],["yt","262",1,["269","639"],"0"],["mx","52"],["fm","691"],["md","373",0,null,"0"],["mc","377",0,null,"0"],["mn","976",0,null,"0"],["me","382",0,null,"0"],["ms","1",16,["664"],"1"],["ma","212",0,["6","7"],"0"],["mz","258"],["mm","95",0,null,"0"],["na","264",0,null,"0"],["nr","674"],["np","977",0,null,"0"],["nl","31",0,null,"0"],["nc","687"],["nz","64",0,null,"0"],["ni","505"],["ne","227"],["ng","234",0,null,"0"],["nu","683"],["nf","672"],["kp","850",0,null,"0"],["mk","389",0,null,"0"],["mp","1",17,["670"],"1"],["no","47",0,["4","9"]],["om","968"],["pk","92",0,null,"0"],["pw","680"],["ps","970",0,null,"0"],["pa","507"],["pg","675"],["py","595",0,null,"0"],["pe","51",0,null,"0"],["ph","63",0,null,"0"],["pl","48"],["pt","351"],["pr","1",3,["787","939"],"1"],["qa","974"],["re","262",0,null,"0"],["ro","40",0,null,"0"],["ru","7",0,["33"],"8"],["rw","250",0,null,"0"],["ws","685"],["sm","378"],["st","239"],["sa","966",0,null,"0"],["sn","221"],["rs","381",0,null,"0"],["sc","248"],["sl","232",0,null,"0"],["sg","65"],["sx","1",21,["721"],"1"],["sk","421",0,null,"0"],["si","386",0,null,"0"],["sb","677"],["so","252",0,null,"0"],["za","27",0,null,"0"],["kr","82",0,null,"0"],["ss","211",0,null,"0"],["es","34"],["lk","94",0,null,"0"],["bl","590",1,null,"0"],["sh","290"],["kn","1",18,["869"],"1"],["lc","1",19,["758"],"1"],["mf","590",2,null,"0"],["pm","508",0,null,"0"],["vc","1",20,["784"],"1"],["sd","249",0,null,"0"],["sr","597"],["sj","47",1,["4","79","9"]],["se","46",0,null,"0"],["ch","41",0,null,"0"],["sy","963",0,null,"0"],["tw","886",0,null,"0"],["tj","992"],["tz","255",0,null,"0"],["th","66",0,null,"0"],["tl","670"],["tg","228"],["tk","690"],["to","676"],["tt","1",22,["868"],"1"],["tn","216"],["tr","90",0,null,"0"],["tm","993",0,null,"8"],["tc","1",23,["649"],"1"],["tv","688"],["vi","1",24,["340"],"1"],["ug","256",0,null,"0"],["ua","380",0,null,"0"],["ae","971",0,null,"0"],["gb","44",0,null,"0"],["us","1",0,null,"1"],["uy","598",0,null,"0"],["uz","998"],["vu","678"],["va","39",1,["06698","3"]],["ve","58",0,null,"0"],["vn","84",0,null,"0"],["wf","681"],["eh","212",1,["5288","5289","6","7"],"0"],["ye","967",0,null,"0"],["zm","260",0,null,"0"],["zw","263",0,null,"0"]],b0=[];for(let h of y2)b0.push({name:"",iso2:h[0],dialCode:h[1],priority:h[2]||0,areaCodes:h[3]||null,nodeById:{},nationalPrefix:h[4]||null,normalisedName:"",initials:"",dialCodePlus:""});var Z=b0;var I2={ad:"Andorra",ae:"United Arab Emirates",af:"Afghanistan",ag:"Antigua & Barbuda",ai:"Anguilla",al:"Albania",am:"Armenia",ao:"Angola",ar:"Argentina",as:"American Samoa",at:"Austria",au:"Australia",aw:"Aruba",ax:"\xC5land Islands",az:"Azerbaijan",ba:"Bosnia & Herzegovina",bb:"Barbados",bd:"Bangladesh",be:"Belgium",bf:"Burkina Faso",bg:"Bulgaria",bh:"Bahrain",bi:"Burundi",bj:"Benin",bl:"St. Barth\xE9lemy",bm:"Bermuda",bn:"Brunei",bo:"Bolivia",bq:"Caribbean Netherlands",br:"Brazil",bs:"Bahamas",bt:"Bhutan",bw:"Botswana",by:"Belarus",bz:"Belize",ca:"Canada",cc:"Cocos (Keeling) Islands",cd:"Congo - Kinshasa",cf:"Central African Republic",cg:"Congo - Brazzaville",ch:"Switzerland",ci:"C\xF4te d\u2019Ivoire",ck:"Cook Islands",cl:"Chile",cm:"Cameroon",cn:"China",co:"Colombia",cr:"Costa Rica",cu:"Cuba",cv:"Cape Verde",cw:"Cura\xE7ao",cx:"Christmas Island",cy:"Cyprus",cz:"Czechia",de:"Germany",dj:"Djibouti",dk:"Denmark",dm:"Dominica",do:"Dominican Republic",dz:"Algeria",ec:"Ecuador",ee:"Estonia",eg:"Egypt",eh:"Western Sahara",er:"Eritrea",es:"Spain",et:"Ethiopia",fi:"Finland",fj:"Fiji",fk:"Falkland Islands",fm:"Micronesia",fo:"Faroe Islands",fr:"France",ga:"Gabon",gb:"United Kingdom",gd:"Grenada",ge:"Georgia",gf:"French Guiana",gg:"Guernsey",gh:"Ghana",gi:"Gibraltar",gl:"Greenland",gm:"Gambia",gn:"Guinea",gp:"Guadeloupe",gq:"Equatorial Guinea",gr:"Greece",gt:"Guatemala",gu:"Guam",gw:"Guinea-Bissau",gy:"Guyana",hk:"Hong Kong SAR China",hn:"Honduras",hr:"Croatia",ht:"Haiti",hu:"Hungary",id:"Indonesia",ie:"Ireland",il:"Israel",im:"Isle of Man",in:"India",io:"British Indian Ocean Territory",iq:"Iraq",ir:"Iran",is:"Iceland",it:"Italy",je:"Jersey",jm:"Jamaica",jo:"Jordan",jp:"Japan",ke:"Kenya",kg:"Kyrgyzstan",kh:"Cambodia",ki:"Kiribati",km:"Comoros",kn:"St. Kitts & Nevis",kp:"North Korea",kr:"South Korea",kw:"Kuwait",ky:"Cayman Islands",kz:"Kazakhstan",la:"Laos",lb:"Lebanon",lc:"St. Lucia",li:"Liechtenstein",lk:"Sri Lanka",lr:"Liberia",ls:"Lesotho",lt:"Lithuania",lu:"Luxembourg",lv:"Latvia",ly:"Libya",ma:"Morocco",mc:"Monaco",md:"Moldova",me:"Montenegro",mf:"St. Martin",mg:"Madagascar",mh:"Marshall Islands",mk:"North Macedonia",ml:"Mali",mm:"Myanmar (Burma)",mn:"Mongolia",mo:"Macao SAR China",mp:"Northern Mariana Islands",mq:"Martinique",mr:"Mauritania",ms:"Montserrat",mt:"Malta",mu:"Mauritius",mv:"Maldives",mw:"Malawi",mx:"Mexico",my:"Malaysia",mz:"Mozambique",na:"Namibia",nc:"New Caledonia",ne:"Niger",nf:"Norfolk Island",ng:"Nigeria",ni:"Nicaragua",nl:"Netherlands",no:"Norway",np:"Nepal",nr:"Nauru",nu:"Niue",nz:"New Zealand",om:"Oman",pa:"Panama",pe:"Peru",pf:"French Polynesia",pg:"Papua New Guinea",ph:"Philippines",pk:"Pakistan",pl:"Poland",pm:"St. Pierre & Miquelon",pr:"Puerto Rico",ps:"Palestinian Territories",pt:"Portugal",pw:"Palau",py:"Paraguay",qa:"Qatar",re:"R\xE9union",ro:"Romania",rs:"Serbia",ru:"Russia",rw:"Rwanda",sa:"Saudi Arabia",sb:"Solomon Islands",sc:"Seychelles",sd:"Sudan",se:"Sweden",sg:"Singapore",sh:"St. Helena",si:"Slovenia",sj:"Svalbard & Jan Mayen",sk:"Slovakia",sl:"Sierra Leone",sm:"San Marino",sn:"Senegal",so:"Somalia",sr:"Suriname",ss:"South Sudan",st:"S\xE3o Tom\xE9 & Pr\xEDncipe",sv:"El Salvador",sx:"Sint Maarten",sy:"Syria",sz:"Eswatini",tc:"Turks & Caicos Islands",td:"Chad",tg:"Togo",th:"Thailand",tj:"Tajikistan",tk:"Tokelau",tl:"Timor-Leste",tm:"Turkmenistan",tn:"Tunisia",to:"Tonga",tr:"Turkey",tt:"Trinidad & Tobago",tv:"Tuvalu",tw:"Taiwan",tz:"Tanzania",ua:"Ukraine",ug:"Uganda",us:"United States",uy:"Uruguay",uz:"Uzbekistan",va:"Vatican City",vc:"St. Vincent & Grenadines",ve:"Venezuela",vg:"British Virgin Islands",vi:"U.S. Virgin Islands",vn:"Vietnam",vu:"Vanuatu",wf:"Wallis & Futuna",ws:"Samoa",ye:"Yemen",yt:"Mayotte",za:"South Africa",zm:"Zambia",zw:"Zimbabwe"},A0=I2;var E2={selectedCountryAriaLabel:"Change country, selected ${countryName} (${dialCode})",noCountrySelected:"Select country",countryListAriaLabel:"List of countries",searchPlaceholder:"Search",clearSearchAriaLabel:"Clear search",zeroSearchResults:"No results found",oneSearchResult:"1 result found",multipleSearchResults:"${count} results found",ac:"Ascension Island",xk:"Kosovo"},w0=E2;var v2={...A0,...w0},O1=v2;var s1={OPEN_COUNTRY_DROPDOWN:"open:countrydropdown",CLOSE_COUNTRY_DROPDOWN:"close:countrydropdown",COUNTRY_CHANGE:"countrychange",INPUT:"input"},v={HIDE:"iti__hide",V_HIDE:"iti__v-hide",ARROW_UP:"iti__arrow--up",GLOBE:"iti__globe",FLAG:"iti__flag",COUNTRY_ITEM:"iti__country",HIGHLIGHT:"iti__highlight"},M={ARROW_UP:"ArrowUp",ARROW_DOWN:"ArrowDown",SPACE:" ",ENTER:"Enter",ESC:"Escape",TAB:"Tab"},x1={PASTE:"insertFromPaste",DELETE_FWD:"deleteContentForward"},J={ALPHA_UNICODE:/\p{L}/u,NON_PLUS_NUMERIC:/[^+0-9]/,NON_PLUS_NUMERIC_GLOBAL:/[^+0-9]/g,HIDDEN_SEARCH_CHAR:/^[a-zA-ZÀ-ÿа-яА-Я ]$/},D0={SEARCH_DEBOUNCE_MS:100,HIDDEN_SEARCH_RESET_MS:1e3,NEXT_TICK:0},H1={UNKNOWN_NUMBER_TYPE:-99,UNKNOWN_VALIDATION_ERROR:-99},E1={SANE_SELECTED_WITH_DIAL_WIDTH:78,SANE_SELECTED_NO_DIAL_WIDTH:42,INPUT_PADDING_EXTRA_LEFT:6},v1={PLUS:"+",NANP:"1"},_1={ISO2:"gb",DIAL_CODE:"44",MOBILE_PREFIX:"7",MOBILE_CORE_LENGTH:10},M0={ISO2:"us",DIAL_CODE:"1"},l1={AGGRESSIVE:"aggressive",POLITE:"polite",OFF:"off"},S1={AUTO:"auto"},B1={COUNTRY_CODE:"countryCode",DIAL_CODE:"dialCode"},_={EXPANDED:"aria-expanded",LABEL:"aria-label",SELECTED:"aria-selected",ACTIVE_DESCENDANT:"aria-activedescendant",HASPOPUP:"aria-haspopup",CONTROLS:"aria-controls",HIDDEN:"aria-hidden",AUTOCOMPLETE:"aria-autocomplete",MODAL:"aria-modal"};var U1=h=>typeof window<"u"&&typeof window.matchMedia=="function"&&window.matchMedia(h).matches,_2=()=>{if(typeof navigator<"u"&&typeof window<"u"){let h=/Android.+Mobile|webOS|iPhone|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),e=U1("(max-width: 500px)"),n=U1("(max-height: 600px)"),i=U1("(pointer: coarse)");return h||e||i&&n}return!1},G1={allowPhonewords:!1,allowDropdown:!0,autoPlaceholder:l1.POLITE,containerClass:"",countryOrder:null,countrySearch:!0,customPlaceholder:null,dropdownContainer:null,excludeCountries:[],fixDropdownWidth:!0,formatAsYouType:!0,formatOnDisplay:!0,geoIpLookup:null,hiddenInput:null,i18n:{},initialCountry:"",loadUtils:null,nationalMode:!0,onlyCountries:[],placeholderNumberType:"MOBILE",showFlags:!0,separateDialCode:!1,strictMode:!1,useFullscreenPopup:_2(),validationNumberTypes:["MOBILE"]},P0=(h,e)=>{h.useFullscreenPopup&&(h.fixDropdownWidth=!1),h.onlyCountries.length===1&&(h.initialCountry=h.onlyCountries[0]),h.separateDialCode&&(h.nationalMode=!1),h.allowDropdown&&!h.showFlags&&!h.separateDialCode&&(h.nationalMode=!1),h.useFullscreenPopup&&!h.dropdownContainer&&(h.dropdownContainer=document.body),h.i18n={...e,...h.i18n}};var t1=h=>h.replace(/\D/g,""),L1=(h="")=>h.normalize("NFD").replace(/[\u0300-\u036f]/g,"").toLowerCase();var R0=(h,e)=>{let n=L1(e),i=[],r=[],a=[],u=[],f=[],m=[];for(let E of h)E.iso2===n?i.push(E):E.normalisedName.startsWith(n)?r.push(E):E.normalisedName.includes(n)?a.push(E):n===E.dialCode||n===E.dialCodePlus?u.push(E):E.dialCodePlus.includes(n)?f.push(E):E.initials.includes(n)&&m.push(E);let I=(E,N)=>E.priority-N.priority;return[...i.sort(I),...r.sort(I),...a.sort(I),...u.sort(I),...f.sort(I),...m.sort(I)]},O0=(h,e)=>{let n=e.toLowerCase();for(let i of h)if(i.name.toLowerCase().startsWith(n))return i;return null};var T1=h=>Object.keys(h).filter(e=>!!h[e]).join(" "),L=(h,e,n)=>{let i=document.createElement(h);return e&&Object.entries(e).forEach(([r,a])=>i.setAttribute(r,a)),n&&n.appendChild(i),i};var x0=()=>` + + + + `,H0=h=>{let e=`iti-${h}-clear-mask`;return` + + + + + + + `};var u1=class{constructor(e,n,i){this.highlightedItem=null;e.dataset.intlTelInputId=i.toString(),this.telInput=e,this.options=n,this.id=i,this.hadInitialPlaceholder=!!e.getAttribute("placeholder"),this.isRTL=!!this.telInput.closest("[dir=rtl]"),this.options.separateDialCode&&(this.originalPaddingLeft=this.telInput.style.paddingLeft)}generateMarkup(e){this.countries=e,this._prepareTelInput();let n=this._createWrapperAndInsert();this._maybeBuildCountryContainer(n),n.appendChild(this.telInput),this._maybeUpdateInputPaddingAndReveal(),this._maybeBuildHiddenInputs(n)}_prepareTelInput(){this.telInput.classList.add("iti__tel-input"),!this.telInput.hasAttribute("autocomplete")&&!this.telInput.form?.hasAttribute("autocomplete")&&this.telInput.setAttribute("autocomplete","off")}_createWrapperAndInsert(){let{allowDropdown:e,showFlags:n,containerClass:i,useFullscreenPopup:r}=this.options,a=T1({iti:!0,"iti--allow-dropdown":e,"iti--show-flags":n,"iti--inline-dropdown":!r,[i]:!!i}),u=L("div",{class:a});return this.isRTL&&u.setAttribute("dir","ltr"),this.telInput.before(u),u}_maybeBuildCountryContainer(e){let{allowDropdown:n,separateDialCode:i,showFlags:r}=this.options;if(n||r||i){this.countryContainer=L("div",{class:`iti__country-container ${v.V_HIDE}`},e),n?(this.selectedCountry=L("button",{type:"button",class:"iti__selected-country",[_.EXPANDED]:"false",[_.LABEL]:this.options.i18n.noCountrySelected,[_.HASPOPUP]:"dialog",[_.CONTROLS]:`iti-${this.id}__dropdown-content`},this.countryContainer),this.telInput.disabled&&this.selectedCountry.setAttribute("disabled","true")):this.selectedCountry=L("div",{class:"iti__selected-country"},this.countryContainer);let a=L("div",{class:"iti__selected-country-primary"},this.selectedCountry);this.selectedCountryInner=L("div",{class:v.FLAG},a),n&&(this.dropdownArrow=L("div",{class:"iti__arrow",[_.HIDDEN]:"true"},a)),i&&(this.selectedDialCode=L("div",{class:"iti__selected-dial-code"},this.selectedCountry)),n&&this._buildDropdownContent()}}_buildDropdownContent(){let{fixDropdownWidth:e,useFullscreenPopup:n,countrySearch:i,i18n:r,dropdownContainer:a,containerClass:u}=this.options,f=e?"":"iti--flexible-dropdown-width";if(this.dropdownContent=L("div",{id:`iti-${this.id}__dropdown-content`,class:`iti__dropdown-content ${v.HIDE} ${f}`,role:"dialog",[_.MODAL]:"true"}),this.isRTL&&this.dropdownContent.setAttribute("dir","rtl"),i&&this._buildSearchUI(),this.countryList=L("ul",{class:"iti__country-list",id:`iti-${this.id}__country-listbox`,role:"listbox",[_.LABEL]:r.countryListAriaLabel},this.dropdownContent),this._appendListItems(),i&&this.updateSearchResultsA11yText(),a){let m=T1({iti:!0,"iti--container":!0,"iti--fullscreen-popup":n,"iti--inline-dropdown":!n,[u]:!!u});this.dropdown=L("div",{class:m}),this.dropdown.appendChild(this.dropdownContent)}else this.countryContainer.appendChild(this.dropdownContent)}_buildSearchUI(){let{i18n:e}=this.options,n=L("div",{class:"iti__search-input-wrapper"},this.dropdownContent);this.searchIcon=L("span",{class:"iti__search-icon",[_.HIDDEN]:"true"},n),this.searchIcon.innerHTML=x0(),this.searchInput=L("input",{id:`iti-${this.id}__search-input`,type:"search",class:"iti__search-input",placeholder:e.searchPlaceholder,role:"combobox",[_.EXPANDED]:"true",[_.LABEL]:e.searchPlaceholder,[_.CONTROLS]:`iti-${this.id}__country-listbox`,[_.AUTOCOMPLETE]:"list",autocomplete:"off"},n),this.searchClearButton=L("button",{type:"button",class:`iti__search-clear ${v.HIDE}`,[_.LABEL]:e.clearSearchAriaLabel,tabindex:"-1"},n),this.searchClearButton.innerHTML=H0(this.id),this.searchResultsA11yText=L("span",{class:"iti__a11y-text"},this.dropdownContent),this.searchNoResults=L("div",{class:`iti__no-results ${v.HIDE}`,[_.HIDDEN]:"true"},this.dropdownContent),this.searchNoResults.textContent=e.zeroSearchResults}_maybeUpdateInputPaddingAndReveal(){this.countryContainer&&(this.updateInputPadding(),this.countryContainer.classList.remove(v.V_HIDE))}_maybeBuildHiddenInputs(e){let{hiddenInput:n}=this.options;if(n){let i=this.telInput.getAttribute("name")||"",r=n(i);if(r.phone){let a=this.telInput.form?.querySelector(`input[name="${r.phone}"]`);a?this.hiddenInput=a:(this.hiddenInput=L("input",{type:"hidden",name:r.phone}),e.appendChild(this.hiddenInput))}if(r.country){let a=this.telInput.form?.querySelector(`input[name="${r.country}"]`);a?this.hiddenInputCountry=a:(this.hiddenInputCountry=L("input",{type:"hidden",name:r.country}),e.appendChild(this.hiddenInputCountry))}}}_appendListItems(){let e=document.createDocumentFragment();for(let n=0;nu){let N=r-f;n.scrollTop=E-N}}highlightListItem(e,n){let i=this.highlightedItem;if(i&&(i.classList.remove(v.HIGHLIGHT),i.setAttribute(_.SELECTED,"false")),this.highlightedItem=e,this.highlightedItem&&(this.highlightedItem.classList.add(v.HIGHLIGHT),this.highlightedItem.setAttribute(_.SELECTED,"true"),this.options.countrySearch)){let r=this.highlightedItem.getAttribute("id")||"";this.searchInput.setAttribute(_.ACTIVE_DESCENDANT,r)}n&&this.highlightedItem.focus()}filterCountries(e){this.countryList.innerHTML="";let n=!0;for(let i of e){let r=i.nodeById[this.id];r&&(this.countryList.appendChild(r),n&&(this.highlightListItem(r,!1),n=!1))}n?(this.highlightListItem(null,!1),this.searchNoResults&&this.searchNoResults.classList.remove(v.HIDE)):this.searchNoResults&&this.searchNoResults.classList.add(v.HIDE),this.countryList.scrollTop=0,this.updateSearchResultsA11yText()}destroy(){this.telInput.iti=void 0,delete this.telInput.dataset.intlTelInputId,this.options.separateDialCode&&(this.telInput.style.paddingLeft=this.originalPaddingLeft);let e=this.telInput.parentNode;e.before(this.telInput),e.remove(),this.telInput=null,this.countryContainer=null,this.selectedCountry=null,this.selectedCountryInner=null,this.selectedDialCode=null,this.dropdownArrow=null,this.dropdownContent=null,this.searchInput=null,this.searchIcon=null,this.searchClearButton=null,this.searchNoResults=null,this.searchResultsA11yText=null,this.countryList=null,this.dropdown=null,this.hiddenInput=null,this.hiddenInputCountry=null,this.highlightedItem=null;for(let n of this.countries)delete n.nodeById[this.id];this.countries=null}};var B0=h=>{let{onlyCountries:e,excludeCountries:n}=h;if(e.length){let i=e.map(r=>r.toLowerCase());return Z.filter(r=>i.includes(r.iso2))}else if(n.length){let i=n.map(r=>r.toLowerCase());return Z.filter(r=>!i.includes(r.iso2))}return Z},U0=(h,e)=>{for(let n of h){let i=n.iso2.toLowerCase();e.i18n[i]&&(n.name=e.i18n[i])}},G0=(h,e)=>{let n=new Set,i=0,r={},a=(u,f,m)=>{if(!u||!f)return;f.length>i&&(i=f.length),r.hasOwnProperty(f)||(r[f]=[]);let I=r[f];if(I.includes(u))return;let E=m!==void 0?m:I.length;I[E]=u};for(let u of h){n.has(u.dialCode)||n.add(u.dialCode);for(let f=1;f{r[u]=r[u].filter(Boolean)});for(let u of h)if(u.areaCodes){let f=r[u.dialCode][0];for(let m of u.areaCodes){for(let I=1;I{e.countryOrder&&(e.countryOrder=e.countryOrder.map(n=>n.toLowerCase())),h.sort((n,i)=>{let{countryOrder:r}=e;if(r){let a=r.indexOf(n.iso2),u=r.indexOf(i.iso2),f=a>-1,m=u>-1;if(f||m)return f&&m?a-u:f?-1:1}return n.name.localeCompare(i.name)})},F0=h=>{for(let e of h)e.normalisedName=L1(e.name),e.initials=e.normalisedName.split(/[^a-z]/).map(n=>n[0]).join(""),e.dialCodePlus=`+${e.dialCode}`};var K0=(h,e,n,i)=>{let r=h;if(n&&e){e=`+${i.dialCode}`;let a=r[e.length]===" "||r[e.length]==="-"?e.length+1:e.length;r=r.substring(a)}return r},W0=(h,e,n,i,r)=>{let a=n?n.formatNumberAsYouType(h,i.iso2):h,{dialCode:u}=i;return r&&e.charAt(0)!=="+"&&a.includes(`+${u}`)?(a.split(`+${u}`)[1]||"").trim():a};var V0=(h,e,n,i)=>{if(n===0&&!i)return 0;let r=0;for(let a=0;a{let e=t1(h);if(e.startsWith(v1.NANP)&&e.length>=4){let n=e.substring(1,4);return S2.includes(n)}return!1};for(let h of Z)h.name=O1[h.iso2];var L2=0,T2=new Set(Z.map(h=>h.iso2)),F1=h=>T2.has(h),K1=class h{constructor(e,n={}){this.id=L2++,this.options={...G1,...n},P0(this.options,O1),this.ui=new u1(e,this.options,this.id),this.isAndroid=h._getIsAndroid(),this.promise=this._createInitPromises(),this.countries=B0(this.options);let{dialCodes:i,dialCodeMaxLen:r,dialCodeToIso2Map:a}=G0(this.countries,this.options);this.dialCodes=i,this.dialCodeMaxLen=r,this.dialCodeToIso2Map=a,this.countryByIso2=new Map(this.countries.map(u=>[u.iso2,u])),this._init()}static _getIsAndroid(){return typeof navigator<"u"?/Android/i.test(navigator.userAgent):!1}_createInitPromises(){let e=new Promise((i,r)=>{this.resolveAutoCountryPromise=i,this.rejectAutoCountryPromise=r}),n=new Promise((i,r)=>{this.resolveUtilsScriptPromise=i,this.rejectUtilsScriptPromise=r});return Promise.all([e,n])}_init(){this.selectedCountryData={},this.abortController=new AbortController,this._processCountryData(),this.ui.generateMarkup(this.countries),this._setInitialState(),this._initListeners(),this._initRequests()}_processCountryData(){U0(this.countries,this.options),k0(this.countries,this.options),F0(this.countries)}_setInitialState(e=!1){let n=this.ui.telInput.getAttribute("value"),i=this.ui.telInput.value,a=n&&n.startsWith("+")&&(!i||!i.startsWith("+"))?n:i,u=this._getDialCode(a),f=k1(a),{initialCountry:m,geoIpLookup:I}=this.options,E=m===S1.AUTO&&I;if(u&&!f)this._updateCountryFromNumber(a);else if(!E||e){let N=m?m.toLowerCase():"";F1(N)?this._setCountry(N):u&&f?this._setCountry(M0.ISO2):this._setCountry("")}a&&this._updateValFromNumber(a)}_initListeners(){this._initTelInputListeners(),this.options.allowDropdown&&this._initDropdownListeners(),(this.ui.hiddenInput||this.ui.hiddenInputCountry)&&this.ui.telInput.form&&this._initHiddenInputListener()}_initHiddenInputListener(){let e=()=>{this.ui.hiddenInput&&(this.ui.hiddenInput.value=this.getNumber()),this.ui.hiddenInputCountry&&(this.ui.hiddenInputCountry.value=this.selectedCountryData.iso2||"")};this.ui.telInput.form?.addEventListener("submit",e,{signal:this.abortController.signal})}_initDropdownListeners(){let e=this.abortController.signal,n=u=>{this.ui.dropdownContent.classList.contains(v.HIDE)?this.ui.telInput.focus():u.preventDefault()},i=this.ui.telInput.closest("label");i&&i.addEventListener("click",n,{signal:e});let r=()=>{this.ui.dropdownContent.classList.contains(v.HIDE)&&!this.ui.telInput.disabled&&!this.ui.telInput.readOnly&&this._openDropdown()};this.ui.selectedCountry.addEventListener("click",r,{signal:e});let a=u=>{this.ui.dropdownContent.classList.contains(v.HIDE)&&[M.ARROW_UP,M.ARROW_DOWN,M.SPACE,M.ENTER].includes(u.key)&&(u.preventDefault(),u.stopPropagation(),this._openDropdown()),u.key===M.TAB&&this._closeDropdown()};this.ui.countryContainer.addEventListener("keydown",a,{signal:e})}_initRequests(){let{loadUtils:e,initialCountry:n,geoIpLookup:i}=this.options;if(e&&!g.utils){let a=()=>{g.attachUtils(e)?.catch(()=>{})};if(g.documentReady())a();else{let u=()=>{a()};window.addEventListener("load",u,{signal:this.abortController.signal})}}else this.resolveUtilsScriptPromise();n===S1.AUTO&&i&&!this.selectedCountryData.iso2?this._loadAutoCountry():this.resolveAutoCountryPromise()}_loadAutoCountry(){g.autoCountry?this.handleAutoCountry():g.startedLoadingAutoCountry||(g.startedLoadingAutoCountry=!0,typeof this.options.geoIpLookup=="function"&&this.options.geoIpLookup((e="")=>{let n=e.toLowerCase();F1(n)?(g.autoCountry=n,setTimeout(()=>a1("handleAutoCountry"))):(this._setInitialState(!0),a1("rejectAutoCountryPromise"))},()=>{this._setInitialState(!0),a1("rejectAutoCountryPromise")}))}_openDropdownWithPlus(){this._openDropdown(),this.ui.searchInput.value="+",this._filterCountriesByQuery("")}_initTelInputListeners(){this._bindInputListener(),this._maybeBindKeydownListener(),this._maybeBindPasteListener()}_bindInputListener(){let{strictMode:e,formatAsYouType:n,separateDialCode:i,allowDropdown:r,countrySearch:a}=this.options,u=!1;J.ALPHA_UNICODE.test(this.ui.telInput.value)&&(u=!0);let f=m=>{if(this.isAndroid&&m?.data==="+"&&i&&r&&a){let R=this.ui.telInput.selectionStart||0,F=this.ui.telInput.value.substring(0,R-1),U=this.ui.telInput.value.substring(R);this.ui.telInput.value=F+U,this._openDropdownWithPlus();return}this._updateCountryFromNumber(this.ui.telInput.value)&&this._triggerCountryChange();let I=m?.data&&J.NON_PLUS_NUMERIC.test(m.data),E=m?.inputType===x1.PASTE&&this.ui.telInput.value;I||E&&!e?u=!0:J.NON_PLUS_NUMERIC.test(this.ui.telInput.value)||(u=!1);let N=m?.detail&&m.detail.isSetNumber;if(n&&!u&&!N){let R=this.ui.telInput.selectionStart||0,U=this.ui.telInput.value.substring(0,R).replace(J.NON_PLUS_NUMERIC_GLOBAL,"").length,K=m?.inputType===x1.DELETE_FWD,A=this._getFullNumber(),O=W0(A,this.ui.telInput.value,g.utils,this.selectedCountryData,this.options.separateDialCode),k=V0(U,O,R,K);this.ui.telInput.value=O,this.ui.telInput.setSelectionRange(k,k)}};this.ui.telInput.addEventListener("input",f,{signal:this.abortController.signal})}_maybeBindKeydownListener(){let{strictMode:e,separateDialCode:n,allowDropdown:i,countrySearch:r}=this.options;if(e||n){let a=u=>{if(u.key&&u.key.length===1&&!u.altKey&&!u.ctrlKey&&!u.metaKey){if(n&&i&&r&&u.key==="+"){u.preventDefault(),this._openDropdownWithPlus();return}if(e){let f=this.ui.telInput.value,I=!f.startsWith("+")&&this.ui.telInput.selectionStart===0&&u.key==="+",E=/^[0-9]$/.test(u.key),N=n?E:I||E,R=f.slice(0,this.ui.telInput.selectionStart)+u.key+f.slice(this.ui.telInput.selectionEnd),F=this._getFullNumber(R),U=g.utils.getCoreNumber(F,this.selectedCountryData.iso2),K=this.maxCoreNumberLength&&U.length>this.maxCoreNumberLength,O=this._getNewCountryFromNumber(F)!==null;(!N||K&&!O&&!I)&&u.preventDefault()}}};this.ui.telInput.addEventListener("keydown",a,{signal:this.abortController.signal})}}_maybeBindPasteListener(){if(this.options.strictMode){let e=n=>{n.preventDefault();let i=this.ui.telInput,r=i.selectionStart,a=i.selectionEnd,u=i.value.slice(0,r),f=i.value.slice(a),m=this.selectedCountryData.iso2,I=n.clipboardData.getData("text"),E=r===0&&a>0,N=!i.value.startsWith("+")||E,R=I.replace(J.NON_PLUS_NUMERIC_GLOBAL,""),F=R.startsWith("+"),U=R.replace(/\+/g,""),K=F&&N?`+${U}`:U,A=u+K+f,O=g.utils.getCoreNumber(A,m);for(;O.length===0&&A.length>0;)A=A.slice(0,-1),O=g.utils.getCoreNumber(A,m);if(!O)return;if(this.maxCoreNumberLength&&O.length>this.maxCoreNumberLength)if(i.selectionEnd===i.value.length){let N1=O.length-this.maxCoreNumberLength;A=A.slice(0,A.length-N1)}else return;i.value=A;let k=r+K.length;i.setSelectionRange(k,k),i.dispatchEvent(new InputEvent("input",{bubbles:!0}))};this.ui.telInput.addEventListener("paste",e,{signal:this.abortController.signal})}}_cap(e){let n=Number(this.ui.telInput.getAttribute("maxlength"));return n&&e.length>n?e.substring(0,n):e}_trigger(e,n={}){let i=new CustomEvent(e,{bubbles:!0,cancelable:!0,detail:n});this.ui.telInput.dispatchEvent(i)}_openDropdown(){let{fixDropdownWidth:e,countrySearch:n}=this.options;if(this.dropdownAbortController=new AbortController,e&&(this.ui.dropdownContent.style.width=`${this.ui.telInput.offsetWidth}px`),this.ui.dropdownContent.classList.remove(v.HIDE),this.ui.selectedCountry.setAttribute(_.EXPANDED,"true"),this._setDropdownPosition(),n){let i=this.ui.countryList.firstElementChild;i&&(this.ui.highlightListItem(i,!1),this.ui.countryList.scrollTop=0),this.ui.searchInput.focus()}this._bindDropdownListeners(),this.ui.dropdownArrow.classList.add(v.ARROW_UP),this._trigger(s1.OPEN_COUNTRY_DROPDOWN)}_setDropdownPosition(){if(this.options.dropdownContainer&&this.options.dropdownContainer.appendChild(this.ui.dropdown),!this.options.useFullscreenPopup){let e=this.ui.telInput.getBoundingClientRect(),n=this.ui.telInput.offsetHeight;if(this.options.dropdownContainer){this.ui.dropdown.style.top=`${e.top+n}px`,this.ui.dropdown.style.left=`${e.left}px`;let i=()=>this._closeDropdown();window.addEventListener("scroll",i,{signal:this.dropdownAbortController.signal})}}}_bindDropdownListeners(){let e=this.dropdownAbortController.signal;this._bindDropdownMouseoverListener(e),this._bindDropdownCountryClickListener(e),this._bindDropdownClickOffListener(e),this._bindDropdownKeydownListener(e),this.options.countrySearch&&this._bindDropdownSearchListeners(e)}_bindDropdownMouseoverListener(e){let n=i=>{let r=i.target?.closest(`.${v.COUNTRY_ITEM}`);r&&this.ui.highlightListItem(r,!1)};this.ui.countryList.addEventListener("mouseover",n,{signal:e})}_bindDropdownCountryClickListener(e){let n=i=>{let r=i.target?.closest(`.${v.COUNTRY_ITEM}`);r&&this._selectListItem(r)};this.ui.countryList.addEventListener("click",n,{signal:e})}_bindDropdownClickOffListener(e){let n=i=>{!!i.target.closest(`#iti-${this.id}__dropdown-content`)||this._closeDropdown()};setTimeout(()=>{document.documentElement.addEventListener("click",n,{signal:e})},0)}_bindDropdownKeydownListener(e){let n="",i=null,r=a=>{[M.ARROW_UP,M.ARROW_DOWN,M.ENTER,M.ESC].includes(a.key)&&(a.preventDefault(),a.stopPropagation(),a.key===M.ARROW_UP||a.key===M.ARROW_DOWN?this._handleUpDownKey(a.key):a.key===M.ENTER?this._handleEnterKey():a.key===M.ESC&&this._closeDropdown()),!this.options.countrySearch&&J.HIDDEN_SEARCH_CHAR.test(a.key)&&(a.stopPropagation(),i&&clearTimeout(i),n+=a.key.toLowerCase(),this._searchForCountry(n),i=setTimeout(()=>{n=""},D0.HIDDEN_SEARCH_RESET_MS))};document.addEventListener("keydown",r,{signal:e})}_bindDropdownSearchListeners(e){let n=()=>{let u=this.ui.searchInput.value.trim();this._filterCountriesByQuery(u),this.ui.searchInput.value?this.ui.searchClearButton.classList.remove(v.HIDE):this.ui.searchClearButton.classList.add(v.HIDE)},i=null,r=()=>{i&&clearTimeout(i),i=setTimeout(()=>{n(),i=null},100)};this.ui.searchInput.addEventListener("input",r,{signal:e});let a=()=>{this.ui.searchInput.value="",this.ui.searchInput.focus(),n()};this.ui.searchClearButton.addEventListener("click",a,{signal:e})}_searchForCountry(e){let n=O0(this.countries,e);if(n){let i=n.nodeById[this.id];this.ui.highlightListItem(i,!1),this.ui.scrollTo(i)}}_filterCountriesByQuery(e){let n;e===""?n=this.countries:n=R0(this.countries,e),this.ui.filterCountries(n)}_handleUpDownKey(e){let n=e===M.ARROW_UP?this.ui.highlightedItem?.previousElementSibling:this.ui.highlightedItem?.nextElementSibling;!n&&this.ui.countryList.childElementCount>1&&(n=e===M.ARROW_UP?this.ui.countryList.lastElementChild:this.ui.countryList.firstElementChild),n&&(this.ui.scrollTo(n),this.ui.highlightListItem(n,!1))}_handleEnterKey(){this.ui.highlightedItem&&this._selectListItem(this.ui.highlightedItem)}_updateValFromNumber(e){let n=e;if(this.options.formatOnDisplay&&g.utils&&this.selectedCountryData){let i=this.options.nationalMode||!n.startsWith("+")&&!this.options.separateDialCode,{NATIONAL:r,INTERNATIONAL:a}=g.utils.numberFormat,u=i?r:a;n=g.utils.formatNumber(n,this.selectedCountryData.iso2,u)}n=this._beforeSetNumber(n),this.ui.telInput.value=n}_updateCountryFromNumber(e){let n=this._getNewCountryFromNumber(e);return n!==null?this._setCountry(n):!1}_ensureHasDialCode(e){let{dialCode:n,nationalPrefix:i}=this.selectedCountryData;if(e.startsWith("+")||!n)return e;let u=i&&e.startsWith(i)&&!this.options.separateDialCode?e.substring(1):e;return`+${n}${u}`}_getNewCountryFromNumber(e){let n=e.indexOf("+"),i=n?e.substring(n):e,r=this.selectedCountryData.iso2,a=this.selectedCountryData.dialCode;i=this._ensureHasDialCode(i);let u=this._getDialCode(i,!0),f=t1(i);if(u){let m=t1(u),I=this.dialCodeToIso2Map[m];if(I.length===1)return I[0]===r?null:I[0];if(!r&&this.defaultCountry&&I.includes(this.defaultCountry))return this.defaultCountry;if(a===v1.NANP&&k1(f))return null;let{areaCodes:N,priority:R}=this.selectedCountryData;if(N){let O=N.map(k=>`${a}${k}`);for(let k of O)if(f.startsWith(k))return null}let U=N&&!(R===0)&&f.length>m.length,K=r&&I.includes(r)&&!U,A=r===I[0];if(!K&&!A)return I[0]}else if(i.startsWith("+")&&f.length){let m=this.selectedCountryData.dialCode||"";return m&&m.startsWith(f)?null:""}else if((!i||i==="+")&&!r)return this.defaultCountry;return null}_setCountry(e){let{separateDialCode:n,showFlags:i,i18n:r}=this.options,a=this.selectedCountryData.iso2||"";if(this.selectedCountryData=e?this.countryByIso2.get(e):{},this.selectedCountryData.iso2&&(this.defaultCountry=this.selectedCountryData.iso2),this.ui.selectedCountry){let u=e&&i?`${v.FLAG} iti__${e}`:`${v.FLAG} ${v.GLOBE}`,f,m;if(e){let{name:I,dialCode:E}=this.selectedCountryData;m=I,f=r.selectedCountryAriaLabel.replace("${countryName}",I).replace("${dialCode}",`+${E}`)}else m=r.noCountrySelected,f=r.noCountrySelected;this.ui.selectedCountryInner.className=u,this.ui.selectedCountry.setAttribute("title",m),this.ui.selectedCountry.setAttribute(_.LABEL,f)}if(n){let u=this.selectedCountryData.dialCode?`+${this.selectedCountryData.dialCode}`:"";this.ui.selectedDialCode.textContent=u,this.ui.updateInputPadding()}return this._updatePlaceholder(),this._updateMaxLength(),a!==e}_updateMaxLength(){let{strictMode:e,placeholderNumberType:n,validationNumberTypes:i}=this.options,{iso2:r}=this.selectedCountryData;if(e&&g.utils)if(r){let a=g.utils.numberType[n],u=g.utils.getExampleNumber(r,!1,a,!0),f=u;for(;g.utils.isPossibleNumber(u,r,i);)f=u,u+="0";let m=g.utils.getCoreNumber(f,r);this.maxCoreNumberLength=m.length,r==="by"&&(this.maxCoreNumberLength=m.length+1)}else this.maxCoreNumberLength=null}_updatePlaceholder(){let{autoPlaceholder:e,placeholderNumberType:n,nationalMode:i,customPlaceholder:r}=this.options,a=e===l1.AGGRESSIVE||!this.ui.hadInitialPlaceholder&&e===l1.POLITE;if(g.utils&&a){let u=g.utils.numberType[n],f=this.selectedCountryData.iso2?g.utils.getExampleNumber(this.selectedCountryData.iso2,i,u):"";f=this._beforeSetNumber(f),typeof r=="function"&&(f=r(f,this.selectedCountryData)),this.ui.telInput.setAttribute("placeholder",f)}}_selectListItem(e){let n=e.dataset[B1.COUNTRY_CODE],i=this._setCountry(n);this._closeDropdown();let r=e.dataset[B1.DIAL_CODE];this._updateDialCode(r),this.options.formatOnDisplay&&this._updateValFromNumber(this.ui.telInput.value),this.ui.telInput.focus(),i&&this._triggerCountryChange()}_closeDropdown(){this.ui.dropdownContent.classList.contains(v.HIDE)||(this.ui.dropdownContent.classList.add(v.HIDE),this.ui.selectedCountry.setAttribute(_.EXPANDED,"false"),this.ui.highlightedItem&&this.ui.highlightedItem.setAttribute(_.SELECTED,"false"),this.options.countrySearch&&this.ui.searchInput.removeAttribute(_.ACTIVE_DESCENDANT),this.ui.dropdownArrow.classList.remove(v.ARROW_UP),this.dropdownAbortController.abort(),this.dropdownAbortController=null,this.options.dropdownContainer&&this.ui.dropdown.remove(),this._trigger(s1.CLOSE_COUNTRY_DROPDOWN))}_updateDialCode(e){let n=this.ui.telInput.value,i=`+${e}`,r;if(n.startsWith("+")){let a=this._getDialCode(n);a?r=n.replace(a,i):r=i,this.ui.telInput.value=r}}_getDialCode(e,n){let i="";if(e.startsWith("+")){let r="",a=!1;for(let u=0;ue?this._utilsIsValidNumber(u):this._utilsIsPossibleNumber(u),i=this._getFullNumber(),r=i.search(J.ALPHA_UNICODE);if(r>-1&&!this.options.allowPhonewords){let u=i.substring(0,r),f=n(u),m=n(i);return f&&m}return n(i)}_utilsIsValidNumber(e){return g.utils?g.utils.isValidNumber(e,this.selectedCountryData.iso2,this.options.validationNumberTypes):null}setCountry(e){let n=e?.toLowerCase();if(!F1(n))throw new Error(`Invalid country code: '${n}'`);let i=this.selectedCountryData.iso2;(e&&n!==i||!e&&i)&&(this._setCountry(n),this._updateDialCode(this.selectedCountryData.dialCode),this.options.formatOnDisplay&&this._updateValFromNumber(this.ui.telInput.value),this._triggerCountryChange())}setNumber(e){let n=this._updateCountryFromNumber(e);this._updateValFromNumber(e),n&&this._triggerCountryChange(),this._trigger(s1.INPUT,{isSetNumber:!0})}setPlaceholderNumberType(e){this.options.placeholderNumberType=e,this._updatePlaceholder()}setDisabled(e){this.ui.telInput.disabled=e,e?this.ui.selectedCountry.setAttribute("disabled","true"):this.ui.selectedCountry.removeAttribute("disabled")}},N2=h=>{if(!g.utils&&!g.startedLoadingUtilsScript){let e;if(typeof h=="function")try{e=Promise.resolve(h())}catch(n){return Promise.reject(n)}else return Promise.reject(new TypeError(`The argument passed to attachUtils must be a function that returns a promise for the utilities module, not ${typeof h}`));return g.startedLoadingUtilsScript=!0,e.then(n=>{let i=n?.default;if(!i||typeof i!="object")throw new TypeError("The loader function passed to attachUtils did not resolve to a module object with utils as its default export.");return g.utils=i,a1("handleUtils"),!0}).catch(n=>{throw a1("rejectUtilsScriptPromise",n),n})}return null},a1=(h,...e)=>{Object.values(g.instances).forEach(n=>{let i=n[h];typeof i=="function"&&i.apply(n,e)})},g=Object.assign((h,e)=>{let n=new K1(h,e);return g.instances[n.id]=n,h.iti=n,n},{defaults:G1,documentReady:()=>document.readyState==="complete",getCountryData:()=>Z,getInstance:h=>{let e=h.dataset.intlTelInputId;return e?g.instances[e]:null},instances:{},attachUtils:N2,startedLoadingUtilsScript:!1,startedLoadingAutoCountry:!1,version:"25.12.4"}),W1=g;(function(){var h=this||self;function e(d,t){d=d.split(".");var $=h;d[0]in $||typeof $.execScript>"u"||$.execScript("var "+d[0]);for(var o;d.length&&(o=d.shift());)d.length||t===void 0?$[o]&&$[o]!==Object.prototype[o]?$=$[o]:$=$[o]={}:$[o]=t}function n(d,t){function $(){}$.prototype=t.prototype,d.ma=t.prototype,d.prototype=new $,d.prototype.constructor=d,d.sa=function(o,s,l){for(var c=Array(arguments.length-2),p=2;pd.length?!1:W(r2,d)}function n0(d){return W(n2,d)?f1(d,q0):f1(d,A1)}function $0(d){var t=n0(d.toString());B(d),d.g(t)}function i0(d){return d!=null&&(j(d,9)!=1||P(d,9)[0]!=-1)}function f1(d,t){for(var $=new b,o,s=d.length,l=0;lt?2:l[l.length-1]=s&&s<=o;++s)if($=parseInt(d.substring(0,s),10),$ in n1)return t.g(d.substring(s)),$;return 0}function c0(d,t,$,o,s,l){if(t.length==0)return 0;t=new b(t);var c;$!=null&&(c=C($,11)),c==null&&(c="NonMatch");var p=t.toString();if(p.length==0)c=20;else if($1.test(p))p=p.replace($1,""),B(t),t.g(n0(p)),c=1;else{if(p=new RegExp(c),$0(t),c=t.toString(),c.search(p)==0){p=c.match(p)[0].length;var y=c.substring(p).match(Q1);y&&y[1]!=null&&0=t.h.length)throw Error("Phone number too short after IDD");if(d=a0(t,o),d!=0)return w(l,1,d),d;throw Error("Invalid country calling code")}return $!=null&&(c=S($,10),p=""+c,y=t.toString(),y.lastIndexOf(p,0)==0&&(p=new b(y.substring(p.length)),y=C($,1),y=new RegExp(S(y,2)),h0(p,$,null),p=p.toString(),!W(y,t.toString())&&W(y,p)||g1(d,t.toString(),$,-1)==3))?(o.g(p),s&&w(l,6,10),w(l,1,c),c):(w(l,1,0),0)}function h0(d,t,$){var o=d.toString(),s=o.length,l=C(t,15);if(s!=0&&l!=null&&l.length!=0){var c=new RegExp("^(?:"+l+")");if(s=c.exec(o)){l=new RegExp(S(C(t,1),2));var p=W(l,o),y=s.length-1;t=C(t,16),t==null||t.length==0||s[y]==null||s[y].length==0?(!p||W(l,o.substring(s[0].length)))&&($!=null&&0=t.length)l="";else{var c=t.indexOf(";",l);l=c!==-1?t.substring(l,c):t.substring(l)}var p=l;if(p==null?c=!0:p.length===0?c=!1:(c=$2.exec(p),p=i2.exec(p),c=c!==null||p!==null),!c||(l!=null?(l.charAt(0)==="+"&&s.g(l),l=t.indexOf("tel:"),s.g(t.substring(0<=l?l+4:0,t.indexOf(";phone-context=")))):(l=s.g,c=t??"",p=c.search(d2),0<=p?(c=c.substring(p),c=c.replace(e2,""),p=c.search(t2),0<=p&&(c=c.substring(0,p))):c="",l.call(s,c)),l=s.toString(),c=l.indexOf(";isub="),0t.h.length||(c!=null&&($=new b,s=new b(t.toString()),h0(s,c,$),d=g1(d,s.toString(),c,-1),d!=2&&d!=4&&d!=5&&(t=s,o&&0<$.toString().length&&w(l,7,$.toString()))),o=t.toString(),d=o.length,2>d))throw Error("The string supplied is too short to be a phone number");if(17{let t=[];return d.includes("FIXED_LINE_OR_MOBILE")?(d.includes("MOBILE")||t.push("MOBILE"),d.includes("FIXED_LINE")||t.push("FIXED_LINE")):(d.includes("MOBILE")||d.includes("FIXED_LINE"))&&t.push("FIXED_LINE_OR_MOBILE"),d.concat(t)},M1={FIXED_LINE:0,MOBILE:1,FIXED_LINE_OR_MOBILE:2,TOLL_FREE:3,PREMIUM_RATE:4,SHARED_COST:5,VOIP:6,PERSONAL_NUMBER:7,PAGER:8,UAN:9,VOICEMAIL:10,UNKNOWN:-1};e("intlTelInputUtilsTemp",{}),e("intlTelInputUtilsTemp.formatNumberAsYouType",(d,t)=>{try{let $=d.replace(/[^+0-9]/g,""),o=new u2(t);t="";for(let s=0;s<$.length;s++)o.ja=c2(o,$.charAt(s)),t=o.ja;return t}catch{return d}}),e("intlTelInputUtilsTemp.formatNumber",(d,t,$)=>{try{let s=D.g(),l=Q(s,d,t);var o=y1(s,l,-1);return o==0||o==4?s.format(l,typeof $>"u"?0:$):d}catch{return d}}),e("intlTelInputUtilsTemp.getExampleNumber",(d,t,$,o)=>{try{let y=D.g();d:{var s=y;if(C1(d)){var l=m1(z(s,d),$);try{if(H(l,6)){var c=C(l,6),p=p0(s,c,d,!1);break d}}catch{}}p=null}return y.format(p,o?0:t?2:1)}catch{return""}}),e("intlTelInputUtilsTemp.getExtension",(d,t)=>{try{return C(Q(D.g(),d,t),3)}catch{return""}}),e("intlTelInputUtilsTemp.getNumberType",(d,t)=>{try{let $=D.g(),o=Q($,d,t);return s0($,o)}catch{return-99}}),e("intlTelInputUtilsTemp.getValidationError",(d,t)=>{if(!t)return 1;try{let $=D.g(),o=Q($,d,t);return y1($,o,-1)}catch($){return $.message==="Invalid country calling code"?1:3>=d.length||$.message==="Phone number too short after IDD"||$.message==="The string supplied is too short to be a phone number"?2:$.message==="The string supplied is too long to be a phone number"?3:-99}}),e("intlTelInputUtilsTemp.isValidNumber",(d,t,$)=>{try{let o=D.g(),s=Q(o,d,t),l=l2(o,s);if($){let c=N0($).map(p=>M1[p]);return l&&c.includes(s0(o,s))}return l}catch{return!1}}),e("intlTelInputUtilsTemp.isPossibleNumber",(d,t,$)=>{try{let o=D.g(),s=Q(o,d,t);if($){let l=N0($);for(let c of l)if(y1(o,s,M1[c])===0)return!0;return!1}return y1(o,s,-1)===0}catch{return!1}}),e("intlTelInputUtilsTemp.getCoreNumber",(d,t)=>{try{return C(Q(D.g(),d,t),2).toString()}catch{return""}}),e("intlTelInputUtilsTemp.numberFormat",{E164:0,INTERNATIONAL:1,NATIONAL:2,RFC3966:3}),e("intlTelInputUtilsTemp.numberType",M1),e("intlTelInputUtilsTemp.validationError",{IS_POSSIBLE:0,INVALID_COUNTRY_CODE:1,TOO_SHORT:2,TOO_LONG:3,IS_POSSIBLE_LOCAL_ONLY:4,INVALID_LENGTH:5})})();var j0=typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:void 0,b2=j0.intlTelInputUtilsTemp;delete j0.intlTelInputUtilsTemp;var Y0=b2;W1.utils=Y0;var A2=W1;return g2(w2);})(); + +// UMD + return factoryOutput.default; +})); diff --git a/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Manifest.cs b/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Manifest.cs index d84927cf0..464980548 100644 --- a/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Manifest.cs +++ b/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Manifest.cs @@ -20,6 +20,7 @@ [ OmnichannelConstants.Features.Area, UsersConstants.Feature.Area, + "CrestApps.OrchardCore.ContentFields", "CrestApps.OrchardCore.Resources", "OrchardCore.ContentTypes", "OrchardCore.Users", diff --git a/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Migrations/ContactMethodMigrations.cs b/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Migrations/ContactMethodMigrations.cs index 38ace1206..11b43e376 100644 --- a/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Migrations/ContactMethodMigrations.cs +++ b/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Migrations/ContactMethodMigrations.cs @@ -54,7 +54,7 @@ await _contentDefinitionManager.AlterPartDefinitionAsync(OmnichannelConstants.Co .WithPosition("1") .OfType("TextField") .WithDisplayName("Number") - .WithEditor("masked") + .WithEditor("InternationalTelephone") .WithSettings(new TextFieldSettings() { Required = true, @@ -145,4 +145,23 @@ await _contentDefinitionManager.AlterTypeDefinitionAsync(OmnichannelConstants.Co return 1; } + + /// + /// Updates existing phone number fields to use the international telephone editor. + /// + public async Task UpdateFrom1Async() + { + await _contentDefinitionManager.AlterPartDefinitionAsync(OmnichannelConstants.ContentParts.PhoneNumberInfo, part => part + .WithField("Number", field => field + .OfType("TextField") + .WithDisplayName("Number") + .WithPosition("1") + .WithEditor("InternationalTelephone") + .WithSettings(new TextFieldSettings + { + Required = true, + }))); + + return 2; + } } diff --git a/src/Targets/CrestApps.OrchardCore.Cms.Core.Targets/CrestApps.OrchardCore.Cms.Core.Targets.csproj b/src/Targets/CrestApps.OrchardCore.Cms.Core.Targets/CrestApps.OrchardCore.Cms.Core.Targets.csproj index 41054668c..128fefe11 100644 --- a/src/Targets/CrestApps.OrchardCore.Cms.Core.Targets/CrestApps.OrchardCore.Cms.Core.Targets.csproj +++ b/src/Targets/CrestApps.OrchardCore.Cms.Core.Targets/CrestApps.OrchardCore.Cms.Core.Targets.csproj @@ -57,6 +57,7 @@ + From 9a98395b699b693ca93ae71a50a1c7f0dbbbc637 Mon Sep 17 00:00:00 2001 From: Mike Alhayek Date: Fri, 5 Jun 2026 18:39:29 -0700 Subject: [PATCH 02/20] Use Resources module --- src/CrestApps.Docs/docs/changelog/v2.0.0.md | 1 + .../docs/modules/content-fields.md | 4 +- src/CrestApps.Docs/docs/modules/resources.md | 8 +++ .../Assets.json | 56 ------------------ ...CrestApps.OrchardCore.ContentFields.csproj | 1 + .../Manifest.cs | 1 + .../README.md | 2 +- .../ResourceManagementOptionsConfiguration.cs | 20 ------- .../package-lock.json | 11 +--- .../package.json | 5 +- .../Assets.json | 56 ++++++++++++++++++ .../ResourceManagementOptionsConfiguration.cs | 20 +++++++ .../package-lock.json | 9 ++- .../package.json | 3 +- .../intl-tel-input/css/intlTelInput.css | 0 .../intl-tel-input/css/intlTelInput.min.css | 0 .../vendors/intl-tel-input/img/flags.webp | Bin .../vendors/intl-tel-input/img/flags@2x.webp | Bin .../vendors/intl-tel-input/img/globe.webp | Bin .../vendors/intl-tel-input/img/globe@2x.webp | Bin .../js/intlTelInputWithUtils.js | 0 .../js/intlTelInputWithUtils.min.js | 0 22 files changed, 103 insertions(+), 94 deletions(-) rename src/Modules/{CrestApps.OrchardCore.ContentFields => CrestApps.OrchardCore.Resources}/wwwroot/vendors/intl-tel-input/css/intlTelInput.css (100%) rename src/Modules/{CrestApps.OrchardCore.ContentFields => CrestApps.OrchardCore.Resources}/wwwroot/vendors/intl-tel-input/css/intlTelInput.min.css (100%) rename src/Modules/{CrestApps.OrchardCore.ContentFields => CrestApps.OrchardCore.Resources}/wwwroot/vendors/intl-tel-input/img/flags.webp (100%) rename src/Modules/{CrestApps.OrchardCore.ContentFields => CrestApps.OrchardCore.Resources}/wwwroot/vendors/intl-tel-input/img/flags@2x.webp (100%) rename src/Modules/{CrestApps.OrchardCore.ContentFields => CrestApps.OrchardCore.Resources}/wwwroot/vendors/intl-tel-input/img/globe.webp (100%) rename src/Modules/{CrestApps.OrchardCore.ContentFields => CrestApps.OrchardCore.Resources}/wwwroot/vendors/intl-tel-input/img/globe@2x.webp (100%) rename src/Modules/{CrestApps.OrchardCore.ContentFields => CrestApps.OrchardCore.Resources}/wwwroot/vendors/intl-tel-input/js/intlTelInputWithUtils.js (100%) rename src/Modules/{CrestApps.OrchardCore.ContentFields => CrestApps.OrchardCore.Resources}/wwwroot/vendors/intl-tel-input/js/intlTelInputWithUtils.min.js (100%) diff --git a/src/CrestApps.Docs/docs/changelog/v2.0.0.md b/src/CrestApps.Docs/docs/changelog/v2.0.0.md index 8d5ca5afb..e618f706c 100644 --- a/src/CrestApps.Docs/docs/changelog/v2.0.0.md +++ b/src/CrestApps.Docs/docs/changelog/v2.0.0.md @@ -112,6 +112,7 @@ Large parts of the reusable AI infrastructure are no longer implemented only ins - The **Clear saved AI memory** action in the current user's profile editor now uses Orchard Core's standard admin confirmation dialog and clears the user's saved memory entries by filtering the store's persisted records for the current user before removing the corresponding indexed AI memory documents - Content Transfer content-type settings now default **Allow Bulk Import** and **Allow Bulk Export** to enabled, so content types participate by default and can explicitly opt out by turning either setting off - Added a new `CrestApps.OrchardCore.ContentFields` module with an `InternationalTelephone` `TextField` editor powered by `intl-tel-input`, and Omnichannel Management now migrates `PhoneNumberInfoPart.Number` to use that editor +- Moved the shared `intl-tel-input` library assets and Orchard resource-manager registration into `CrestApps.OrchardCore.Resources`, while `CrestApps.OrchardCore.ContentFields` now depends on that feature for the `InternationalTelephone` editor ### Typed AI deployments replace legacy deployment selectors diff --git a/src/CrestApps.Docs/docs/modules/content-fields.md b/src/CrestApps.Docs/docs/modules/content-fields.md index 94003a506..77c92adc5 100644 --- a/src/CrestApps.Docs/docs/modules/content-fields.md +++ b/src/CrestApps.Docs/docs/modules/content-fields.md @@ -30,7 +30,8 @@ The `InternationalTelephone` editor uses the `intl-tel-input` library to provide - country-aware phone number entry - international formatting while editing - normalization back to E.164 on submit -- local copied assets with CDN fallbacks through Orchard resource manifests +- shared `intl-tel-input` resources from `CrestApps.OrchardCore.Resources` +- local editor-specific assets from `CrestApps.OrchardCore.ContentFields` Use it from the content definition UI or through migrations with: @@ -42,4 +43,5 @@ Use it from the content definition UI or through migrations with: - The underlying field type stays `TextField`. - Existing values stored in E.164 format continue to edit correctly. +- The shared `intl-tel-input` script and stylesheet are registered by `CrestApps.OrchardCore.Resources`. - The Omnichannel Management module now depends on this feature for `PhoneNumberInfoPart.Number`. diff --git a/src/CrestApps.Docs/docs/modules/resources.md b/src/CrestApps.Docs/docs/modules/resources.md index 737794bcd..e7fcae1bc 100644 --- a/src/CrestApps.Docs/docs/modules/resources.md +++ b/src/CrestApps.Docs/docs/modules/resources.md @@ -17,3 +17,11 @@ Provides shared resources and libraries used by various CrestApps modules. This module provides shared frontend resources (CSS and JavaScript) that are used by other CrestApps modules. It acts as a central resource library, ensuring consistent styling and behavior across the CrestApps module ecosystem. Other CrestApps modules declare a dependency on this feature to leverage common scripts and stylesheets without duplicating assets. + +## Shared libraries + +This feature registers reusable Orchard resource-manager assets that can be consumed by other CrestApps modules. + +Current shared libraries include: + +- `intl-tel-input` script and stylesheet resources, backed by local copied assets with CDN fallbacks diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/Assets.json b/src/Modules/CrestApps.OrchardCore.ContentFields/Assets.json index e028ff3f6..53b99adfe 100644 --- a/src/Modules/CrestApps.OrchardCore.ContentFields/Assets.json +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/Assets.json @@ -10,61 +10,5 @@ "Assets/css/international-telephone-editor.css" ], "output": "wwwroot/styles/international-telephone-editor.css" - }, - { - "copy": true, - "inputs": [ - "node_modules/intl-tel-input/build/js/intlTelInputWithUtils.js" - ], - "output": "wwwroot/vendors/intl-tel-input/js/intlTelInputWithUtils.js" - }, - { - "copy": true, - "inputs": [ - "node_modules/intl-tel-input/build/js/intlTelInputWithUtils.min.js" - ], - "output": "wwwroot/vendors/intl-tel-input/js/intlTelInputWithUtils.min.js" - }, - { - "copy": true, - "inputs": [ - "node_modules/intl-tel-input/build/css/intlTelInput.css" - ], - "output": "wwwroot/vendors/intl-tel-input/css/intlTelInput.css" - }, - { - "copy": true, - "inputs": [ - "node_modules/intl-tel-input/build/css/intlTelInput.min.css" - ], - "output": "wwwroot/vendors/intl-tel-input/css/intlTelInput.min.css" - }, - { - "copy": true, - "inputs": [ - "node_modules/intl-tel-input/build/img/flags.webp" - ], - "output": "wwwroot/vendors/intl-tel-input/img/flags.webp" - }, - { - "copy": true, - "inputs": [ - "node_modules/intl-tel-input/build/img/flags@2x.webp" - ], - "output": "wwwroot/vendors/intl-tel-input/img/flags@2x.webp" - }, - { - "copy": true, - "inputs": [ - "node_modules/intl-tel-input/build/img/globe.webp" - ], - "output": "wwwroot/vendors/intl-tel-input/img/globe.webp" - }, - { - "copy": true, - "inputs": [ - "node_modules/intl-tel-input/build/img/globe@2x.webp" - ], - "output": "wwwroot/vendors/intl-tel-input/img/globe@2x.webp" } ] diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/CrestApps.OrchardCore.ContentFields.csproj b/src/Modules/CrestApps.OrchardCore.ContentFields/CrestApps.OrchardCore.ContentFields.csproj index d68a92ff2..3bbbe04a5 100644 --- a/src/Modules/CrestApps.OrchardCore.ContentFields/CrestApps.OrchardCore.ContentFields.csproj +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/CrestApps.OrchardCore.ContentFields.csproj @@ -24,6 +24,7 @@ + diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/Manifest.cs b/src/Modules/CrestApps.OrchardCore.ContentFields/Manifest.cs index 3117962fe..2192ee9be 100644 --- a/src/Modules/CrestApps.OrchardCore.ContentFields/Manifest.cs +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/Manifest.cs @@ -18,6 +18,7 @@ Description = "Adds custom Orchard Core content field editors maintained by CrestApps.", Dependencies = [ + "CrestApps.OrchardCore.Resources", "OrchardCore.ContentFields", ] )] diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/README.md b/src/Modules/CrestApps.OrchardCore.ContentFields/README.md index b3b28975f..5b81910d0 100644 --- a/src/Modules/CrestApps.OrchardCore.ContentFields/README.md +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/README.md @@ -5,7 +5,7 @@ Provides custom Orchard Core content field editors maintained by CrestApps. ## Features - Adds the `InternationalTelephone` editor for Orchard Core `TextField` -- Bundles the `intl-tel-input` library and supporting assets +- Depends on `CrestApps.OrchardCore.Resources` for the shared `intl-tel-input` library assets ## Usage diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/ResourceManagementOptionsConfiguration.cs b/src/Modules/CrestApps.OrchardCore.ContentFields/ResourceManagementOptionsConfiguration.cs index 1d83717b0..7245ac70b 100644 --- a/src/Modules/CrestApps.OrchardCore.ContentFields/ResourceManagementOptionsConfiguration.cs +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/ResourceManagementOptionsConfiguration.cs @@ -11,16 +11,6 @@ static ResourceManagementOptionsConfiguration() { _manifest = new ResourceManifest(); - _manifest - .DefineStyle("intl-tel-input") - .SetUrl( - "~/CrestApps.OrchardCore.ContentFields/vendors/intl-tel-input/css/intlTelInput.min.css", - "~/CrestApps.OrchardCore.ContentFields/vendors/intl-tel-input/css/intlTelInput.css") - .SetCdn( - "https://cdn.jsdelivr.net/npm/intl-tel-input@25.12.4/build/css/intlTelInput.min.css", - "https://cdn.jsdelivr.net/npm/intl-tel-input@25.12.4/build/css/intlTelInput.css") - .SetVersion("25.12.4"); - _manifest .DefineStyle("international-telephone-editor") .SetUrl( @@ -28,16 +18,6 @@ static ResourceManagementOptionsConfiguration() "~/CrestApps.OrchardCore.ContentFields/styles/international-telephone-editor.css") .SetVersion("1.0.0"); - _manifest - .DefineScript("intl-tel-input") - .SetUrl( - "~/CrestApps.OrchardCore.ContentFields/vendors/intl-tel-input/js/intlTelInputWithUtils.min.js", - "~/CrestApps.OrchardCore.ContentFields/vendors/intl-tel-input/js/intlTelInputWithUtils.js") - .SetCdn( - "https://cdn.jsdelivr.net/npm/intl-tel-input@25.12.4/build/js/intlTelInputWithUtils.min.js", - "https://cdn.jsdelivr.net/npm/intl-tel-input@25.12.4/build/js/intlTelInputWithUtils.js") - .SetVersion("25.12.4"); - _manifest .DefineScript("international-telephone-editor") .SetUrl( diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/package-lock.json b/src/Modules/CrestApps.OrchardCore.ContentFields/package-lock.json index 689efee47..cd6f4821c 100644 --- a/src/Modules/CrestApps.OrchardCore.ContentFields/package-lock.json +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/package-lock.json @@ -4,16 +4,7 @@ "requires": true, "packages": { "": { - "name": "crestapps.orchardcore.content-fields", - "dependencies": { - "intl-tel-input": "25.12.4" - } - }, - "node_modules/intl-tel-input": { - "version": "25.12.4", - "resolved": "https://registry.npmjs.org/intl-tel-input/-/intl-tel-input-25.12.4.tgz", - "integrity": "sha512-IpS4wlKFAXeJd3lO9ALGfjEwzCLAuxsGozG9olCq08whXfTML1c8iD41TVXhWM0OaGFasRnjPjHmxNmsGdJ+VA==", - "license": "MIT" + "name": "crestapps.orchardcore.content-fields" } } } diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/package.json b/src/Modules/CrestApps.OrchardCore.ContentFields/package.json index 09da74735..296921a0d 100644 --- a/src/Modules/CrestApps.OrchardCore.ContentFields/package.json +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/package.json @@ -1,7 +1,4 @@ { "name": "crestapps.orchardcore.content-fields", - "private": true, - "dependencies": { - "intl-tel-input": "25.12.4" - } + "private": true } diff --git a/src/Modules/CrestApps.OrchardCore.Resources/Assets.json b/src/Modules/CrestApps.OrchardCore.Resources/Assets.json index 8dd4b87a1..b2ccffbfa 100644 --- a/src/Modules/CrestApps.OrchardCore.Resources/Assets.json +++ b/src/Modules/CrestApps.OrchardCore.Resources/Assets.json @@ -189,5 +189,61 @@ "node_modules/@crestapps/ai-chat-ui/dist/document-drop-zone.min.css" ], "output": "wwwroot/vendors/crestapps/document-drop-zone.min.css" + }, + { + "copy": true, + "inputs": [ + "node_modules/intl-tel-input/build/js/intlTelInputWithUtils.js" + ], + "output": "wwwroot/vendors/intl-tel-input/js/intlTelInputWithUtils.js" + }, + { + "copy": true, + "inputs": [ + "node_modules/intl-tel-input/build/js/intlTelInputWithUtils.min.js" + ], + "output": "wwwroot/vendors/intl-tel-input/js/intlTelInputWithUtils.min.js" + }, + { + "copy": true, + "inputs": [ + "node_modules/intl-tel-input/build/css/intlTelInput.css" + ], + "output": "wwwroot/vendors/intl-tel-input/css/intlTelInput.css" + }, + { + "copy": true, + "inputs": [ + "node_modules/intl-tel-input/build/css/intlTelInput.min.css" + ], + "output": "wwwroot/vendors/intl-tel-input/css/intlTelInput.min.css" + }, + { + "copy": true, + "inputs": [ + "node_modules/intl-tel-input/build/img/flags.webp" + ], + "output": "wwwroot/vendors/intl-tel-input/img/flags.webp" + }, + { + "copy": true, + "inputs": [ + "node_modules/intl-tel-input/build/img/flags@2x.webp" + ], + "output": "wwwroot/vendors/intl-tel-input/img/flags@2x.webp" + }, + { + "copy": true, + "inputs": [ + "node_modules/intl-tel-input/build/img/globe.webp" + ], + "output": "wwwroot/vendors/intl-tel-input/img/globe.webp" + }, + { + "copy": true, + "inputs": [ + "node_modules/intl-tel-input/build/img/globe@2x.webp" + ], + "output": "wwwroot/vendors/intl-tel-input/img/globe@2x.webp" } ] diff --git a/src/Modules/CrestApps.OrchardCore.Resources/ResourceManagementOptionsConfiguration.cs b/src/Modules/CrestApps.OrchardCore.Resources/ResourceManagementOptionsConfiguration.cs index 5602f981a..8bd2a11dc 100644 --- a/src/Modules/CrestApps.OrchardCore.Resources/ResourceManagementOptionsConfiguration.cs +++ b/src/Modules/CrestApps.OrchardCore.Resources/ResourceManagementOptionsConfiguration.cs @@ -181,6 +181,26 @@ static ResourceManagementOptionsConfiguration() "sha384-rQeaRUVX3mFuO9odBEzwKV4akVEHz3MLSl5+e0h43rKLtxKQnRwh0ARsiJMXBlnZ", "sha384-Nej+SC8Gi+UVsc5GZ9b4NlJ7tGxoqyyAuoB3lMOur7MN0vjxNxpEa3N4qNh7peOO") .SetVersion("1.0.0"); + + _manifest + .DefineStyle("intl-tel-input") + .SetUrl( + "~/CrestApps.OrchardCore.Resources/vendors/intl-tel-input/css/intlTelInput.min.css", + "~/CrestApps.OrchardCore.Resources/vendors/intl-tel-input/css/intlTelInput.css") + .SetCdn( + "https://cdn.jsdelivr.net/npm/intl-tel-input@25.12.4/build/css/intlTelInput.min.css", + "https://cdn.jsdelivr.net/npm/intl-tel-input@25.12.4/build/css/intlTelInput.css") + .SetVersion("25.12.4"); + + _manifest + .DefineScript("intl-tel-input") + .SetUrl( + "~/CrestApps.OrchardCore.Resources/vendors/intl-tel-input/js/intlTelInputWithUtils.min.js", + "~/CrestApps.OrchardCore.Resources/vendors/intl-tel-input/js/intlTelInputWithUtils.js") + .SetCdn( + "https://cdn.jsdelivr.net/npm/intl-tel-input@25.12.4/build/js/intlTelInputWithUtils.min.js", + "https://cdn.jsdelivr.net/npm/intl-tel-input@25.12.4/build/js/intlTelInputWithUtils.js") + .SetVersion("25.12.4"); } /// diff --git a/src/Modules/CrestApps.OrchardCore.Resources/package-lock.json b/src/Modules/CrestApps.OrchardCore.Resources/package-lock.json index 9072d78f4..d14439d25 100644 --- a/src/Modules/CrestApps.OrchardCore.Resources/package-lock.json +++ b/src/Modules/CrestApps.OrchardCore.Resources/package-lock.json @@ -7,7 +7,8 @@ "name": "crestapps.orchardcore.resources", "dependencies": { "@crestapps/ai-chat-ui": "1.0.0-preview.34", - "chart.js": "^4.5.1" + "chart.js": "^4.5.1", + "intl-tel-input": "25.12.4" }, "devDependencies": { "@fortawesome/fontawesome-free": "6.7.2", @@ -354,6 +355,12 @@ "node": ">=12.0.0" } }, + "node_modules/intl-tel-input": { + "version": "25.12.4", + "resolved": "https://registry.npmjs.org/intl-tel-input/-/intl-tel-input-25.12.4.tgz", + "integrity": "sha512-IpS4wlKFAXeJd3lO9ALGfjEwzCLAuxsGozG9olCq08whXfTML1c8iD41TVXhWM0OaGFasRnjPjHmxNmsGdJ+VA==", + "license": "MIT" + }, "node_modules/magic-string": { "version": "0.30.17", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", diff --git a/src/Modules/CrestApps.OrchardCore.Resources/package.json b/src/Modules/CrestApps.OrchardCore.Resources/package.json index c4b20b04c..60d9f6439 100644 --- a/src/Modules/CrestApps.OrchardCore.Resources/package.json +++ b/src/Modules/CrestApps.OrchardCore.Resources/package.json @@ -14,6 +14,7 @@ }, "dependencies": { "@crestapps/ai-chat-ui": "1.0.0-preview.34", - "chart.js": "^4.5.1" + "chart.js": "^4.5.1", + "intl-tel-input": "25.12.4" } } diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/vendors/intl-tel-input/css/intlTelInput.css b/src/Modules/CrestApps.OrchardCore.Resources/wwwroot/vendors/intl-tel-input/css/intlTelInput.css similarity index 100% rename from src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/vendors/intl-tel-input/css/intlTelInput.css rename to src/Modules/CrestApps.OrchardCore.Resources/wwwroot/vendors/intl-tel-input/css/intlTelInput.css diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/vendors/intl-tel-input/css/intlTelInput.min.css b/src/Modules/CrestApps.OrchardCore.Resources/wwwroot/vendors/intl-tel-input/css/intlTelInput.min.css similarity index 100% rename from src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/vendors/intl-tel-input/css/intlTelInput.min.css rename to src/Modules/CrestApps.OrchardCore.Resources/wwwroot/vendors/intl-tel-input/css/intlTelInput.min.css diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/vendors/intl-tel-input/img/flags.webp b/src/Modules/CrestApps.OrchardCore.Resources/wwwroot/vendors/intl-tel-input/img/flags.webp similarity index 100% rename from src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/vendors/intl-tel-input/img/flags.webp rename to src/Modules/CrestApps.OrchardCore.Resources/wwwroot/vendors/intl-tel-input/img/flags.webp diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/vendors/intl-tel-input/img/flags@2x.webp b/src/Modules/CrestApps.OrchardCore.Resources/wwwroot/vendors/intl-tel-input/img/flags@2x.webp similarity index 100% rename from src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/vendors/intl-tel-input/img/flags@2x.webp rename to src/Modules/CrestApps.OrchardCore.Resources/wwwroot/vendors/intl-tel-input/img/flags@2x.webp diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/vendors/intl-tel-input/img/globe.webp b/src/Modules/CrestApps.OrchardCore.Resources/wwwroot/vendors/intl-tel-input/img/globe.webp similarity index 100% rename from src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/vendors/intl-tel-input/img/globe.webp rename to src/Modules/CrestApps.OrchardCore.Resources/wwwroot/vendors/intl-tel-input/img/globe.webp diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/vendors/intl-tel-input/img/globe@2x.webp b/src/Modules/CrestApps.OrchardCore.Resources/wwwroot/vendors/intl-tel-input/img/globe@2x.webp similarity index 100% rename from src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/vendors/intl-tel-input/img/globe@2x.webp rename to src/Modules/CrestApps.OrchardCore.Resources/wwwroot/vendors/intl-tel-input/img/globe@2x.webp diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/vendors/intl-tel-input/js/intlTelInputWithUtils.js b/src/Modules/CrestApps.OrchardCore.Resources/wwwroot/vendors/intl-tel-input/js/intlTelInputWithUtils.js similarity index 100% rename from src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/vendors/intl-tel-input/js/intlTelInputWithUtils.js rename to src/Modules/CrestApps.OrchardCore.Resources/wwwroot/vendors/intl-tel-input/js/intlTelInputWithUtils.js diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/vendors/intl-tel-input/js/intlTelInputWithUtils.min.js b/src/Modules/CrestApps.OrchardCore.Resources/wwwroot/vendors/intl-tel-input/js/intlTelInputWithUtils.min.js similarity index 100% rename from src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/vendors/intl-tel-input/js/intlTelInputWithUtils.min.js rename to src/Modules/CrestApps.OrchardCore.Resources/wwwroot/vendors/intl-tel-input/js/intlTelInputWithUtils.min.js From b01cabe3c8e6225fbe15c8ce21725590b0e8667e Mon Sep 17 00:00:00 2001 From: Mike Alhayek Date: Fri, 5 Jun 2026 19:32:39 -0700 Subject: [PATCH 03/20] Fix flags --- .../Assets/css/international-telephone-editor.css | 7 +++++++ .../wwwroot/styles/international-telephone-editor.css | 7 +++++++ .../wwwroot/styles/international-telephone-editor.min.css | 2 +- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/Assets/css/international-telephone-editor.css b/src/Modules/CrestApps.OrchardCore.ContentFields/Assets/css/international-telephone-editor.css index 49a6ca2c4..263d94366 100644 --- a/src/Modules/CrestApps.OrchardCore.ContentFields/Assets/css/international-telephone-editor.css +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/Assets/css/international-telephone-editor.css @@ -1,3 +1,10 @@ +.content-field-international-telephone { + --iti-path-flags-1x: url("/CrestApps.OrchardCore.Resources/vendors/intl-tel-input/img/flags.webp"); + --iti-path-flags-2x: url("/CrestApps.OrchardCore.Resources/vendors/intl-tel-input/img/flags@2x.webp"); + --iti-path-globe-1x: url("/CrestApps.OrchardCore.Resources/vendors/intl-tel-input/img/globe.webp"); + --iti-path-globe-2x: url("/CrestApps.OrchardCore.Resources/vendors/intl-tel-input/img/globe@2x.webp"); +} + .content-field-international-telephone .iti, .content-field-international-telephone .iti--inline-dropdown, .content-field-international-telephone .iti__tel-input { diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/styles/international-telephone-editor.css b/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/styles/international-telephone-editor.css index 49a6ca2c4..263d94366 100644 --- a/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/styles/international-telephone-editor.css +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/styles/international-telephone-editor.css @@ -1,3 +1,10 @@ +.content-field-international-telephone { + --iti-path-flags-1x: url("/CrestApps.OrchardCore.Resources/vendors/intl-tel-input/img/flags.webp"); + --iti-path-flags-2x: url("/CrestApps.OrchardCore.Resources/vendors/intl-tel-input/img/flags@2x.webp"); + --iti-path-globe-1x: url("/CrestApps.OrchardCore.Resources/vendors/intl-tel-input/img/globe.webp"); + --iti-path-globe-2x: url("/CrestApps.OrchardCore.Resources/vendors/intl-tel-input/img/globe@2x.webp"); +} + .content-field-international-telephone .iti, .content-field-international-telephone .iti--inline-dropdown, .content-field-international-telephone .iti__tel-input { diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/styles/international-telephone-editor.min.css b/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/styles/international-telephone-editor.min.css index 9333346d4..685278642 100644 --- a/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/styles/international-telephone-editor.min.css +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/styles/international-telephone-editor.min.css @@ -1 +1 @@ -.content-field-international-telephone .iti,.content-field-international-telephone .iti--inline-dropdown,.content-field-international-telephone .iti__tel-input{width:100%}.content-field-international-telephone .iti{display:block}.content-field-international-telephone .iti__tel-input{min-height:calc(1.5em + .75rem + 2px)} +.content-field-international-telephone{--iti-path-flags-1x:url("/CrestApps.OrchardCore.Resources/vendors/intl-tel-input/img/flags.webp");--iti-path-flags-2x:url("/CrestApps.OrchardCore.Resources/vendors/intl-tel-input/img/flags@2x.webp");--iti-path-globe-1x:url("/CrestApps.OrchardCore.Resources/vendors/intl-tel-input/img/globe.webp");--iti-path-globe-2x:url("/CrestApps.OrchardCore.Resources/vendors/intl-tel-input/img/globe@2x.webp")}.content-field-international-telephone .iti,.content-field-international-telephone .iti--inline-dropdown,.content-field-international-telephone .iti__tel-input{width:100%}.content-field-international-telephone .iti{display:block}.content-field-international-telephone .iti__tel-input{min-height:calc(1.5em + .75rem + 2px)} From 701c812a2fe175755f7d249dc4a382558ea6434c Mon Sep 17 00:00:00 2001 From: Mike Alhayek Date: Fri, 5 Jun 2026 19:32:59 -0700 Subject: [PATCH 04/20] fix view --- .../Views/TextField-InternationalTelephone.Edit.cshtml | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/Views/TextField-InternationalTelephone.Edit.cshtml b/src/Modules/CrestApps.OrchardCore.ContentFields/Views/TextField-InternationalTelephone.Edit.cshtml index 517df5935..ee45dd190 100644 --- a/src/Modules/CrestApps.OrchardCore.ContentFields/Views/TextField-InternationalTelephone.Edit.cshtml +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/Views/TextField-InternationalTelephone.Edit.cshtml @@ -1,13 +1,9 @@ @model OrchardCore.ContentFields.ViewModels.EditTextFieldViewModel -@using OrchardCore.ContentFields @using OrchardCore.ContentFields.Settings @using OrchardCore.ContentManagement.Metadata.Models -@using OrchardCore.Localization.Data @using OrchardCore.Mvc.Utilities -@inject IDataLocalizer D @{ var settings = Model.PartFieldDefinition.GetSettings(); - string localizedFieldName = D[Model.PartFieldDefinition.DisplayName(), DataLocalizationContext.ContentField(Model.PartFieldDefinition.PartDefinition.Name)]; } @if (settings.Type == FieldBehaviorType.GeneratedHidden) @@ -17,8 +13,8 @@ return; } -
      - +
      +
      Date: Fri, 5 Jun 2026 19:42:25 -0700 Subject: [PATCH 05/20] Fix intl-tel-input flags and add CDN SRI hashes Remove hardcoded CSS variable overrides for flag image paths that were breaking image resolution. The library's own CSS uses relative paths (../img/) which correctly resolve both from CDN and local static files. Add SRI integrity hashes (sha384) for both the CSS and JS CDN resources to ensure subresource integrity verification. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../Assets/css/international-telephone-editor.css | 7 ------- .../wwwroot/styles/international-telephone-editor.css | 7 ------- .../wwwroot/styles/international-telephone-editor.min.css | 2 +- .../ResourceManagementOptionsConfiguration.cs | 6 ++++++ 4 files changed, 7 insertions(+), 15 deletions(-) diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/Assets/css/international-telephone-editor.css b/src/Modules/CrestApps.OrchardCore.ContentFields/Assets/css/international-telephone-editor.css index 263d94366..49a6ca2c4 100644 --- a/src/Modules/CrestApps.OrchardCore.ContentFields/Assets/css/international-telephone-editor.css +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/Assets/css/international-telephone-editor.css @@ -1,10 +1,3 @@ -.content-field-international-telephone { - --iti-path-flags-1x: url("/CrestApps.OrchardCore.Resources/vendors/intl-tel-input/img/flags.webp"); - --iti-path-flags-2x: url("/CrestApps.OrchardCore.Resources/vendors/intl-tel-input/img/flags@2x.webp"); - --iti-path-globe-1x: url("/CrestApps.OrchardCore.Resources/vendors/intl-tel-input/img/globe.webp"); - --iti-path-globe-2x: url("/CrestApps.OrchardCore.Resources/vendors/intl-tel-input/img/globe@2x.webp"); -} - .content-field-international-telephone .iti, .content-field-international-telephone .iti--inline-dropdown, .content-field-international-telephone .iti__tel-input { diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/styles/international-telephone-editor.css b/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/styles/international-telephone-editor.css index 263d94366..49a6ca2c4 100644 --- a/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/styles/international-telephone-editor.css +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/styles/international-telephone-editor.css @@ -1,10 +1,3 @@ -.content-field-international-telephone { - --iti-path-flags-1x: url("/CrestApps.OrchardCore.Resources/vendors/intl-tel-input/img/flags.webp"); - --iti-path-flags-2x: url("/CrestApps.OrchardCore.Resources/vendors/intl-tel-input/img/flags@2x.webp"); - --iti-path-globe-1x: url("/CrestApps.OrchardCore.Resources/vendors/intl-tel-input/img/globe.webp"); - --iti-path-globe-2x: url("/CrestApps.OrchardCore.Resources/vendors/intl-tel-input/img/globe@2x.webp"); -} - .content-field-international-telephone .iti, .content-field-international-telephone .iti--inline-dropdown, .content-field-international-telephone .iti__tel-input { diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/styles/international-telephone-editor.min.css b/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/styles/international-telephone-editor.min.css index 685278642..9333346d4 100644 --- a/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/styles/international-telephone-editor.min.css +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/styles/international-telephone-editor.min.css @@ -1 +1 @@ -.content-field-international-telephone{--iti-path-flags-1x:url("/CrestApps.OrchardCore.Resources/vendors/intl-tel-input/img/flags.webp");--iti-path-flags-2x:url("/CrestApps.OrchardCore.Resources/vendors/intl-tel-input/img/flags@2x.webp");--iti-path-globe-1x:url("/CrestApps.OrchardCore.Resources/vendors/intl-tel-input/img/globe.webp");--iti-path-globe-2x:url("/CrestApps.OrchardCore.Resources/vendors/intl-tel-input/img/globe@2x.webp")}.content-field-international-telephone .iti,.content-field-international-telephone .iti--inline-dropdown,.content-field-international-telephone .iti__tel-input{width:100%}.content-field-international-telephone .iti{display:block}.content-field-international-telephone .iti__tel-input{min-height:calc(1.5em + .75rem + 2px)} +.content-field-international-telephone .iti,.content-field-international-telephone .iti--inline-dropdown,.content-field-international-telephone .iti__tel-input{width:100%}.content-field-international-telephone .iti{display:block}.content-field-international-telephone .iti__tel-input{min-height:calc(1.5em + .75rem + 2px)} diff --git a/src/Modules/CrestApps.OrchardCore.Resources/ResourceManagementOptionsConfiguration.cs b/src/Modules/CrestApps.OrchardCore.Resources/ResourceManagementOptionsConfiguration.cs index 8bd2a11dc..06e7c5437 100644 --- a/src/Modules/CrestApps.OrchardCore.Resources/ResourceManagementOptionsConfiguration.cs +++ b/src/Modules/CrestApps.OrchardCore.Resources/ResourceManagementOptionsConfiguration.cs @@ -190,6 +190,9 @@ static ResourceManagementOptionsConfiguration() .SetCdn( "https://cdn.jsdelivr.net/npm/intl-tel-input@25.12.4/build/css/intlTelInput.min.css", "https://cdn.jsdelivr.net/npm/intl-tel-input@25.12.4/build/css/intlTelInput.css") + .SetCdnIntegrity( + "sha384-WNF7dtZ0UZJjHFk7vUp7qTzY3PQnxFBo6/lqKHvZmCYwIUHqDDsyFL6zfeG83jKf", + "sha384-KgNFOuU4mTPtXZmFu6WaY2/jxbJEA+INAC2SFk+B0vTR9iuuKE+5qujIZY8Mnmzt") .SetVersion("25.12.4"); _manifest @@ -200,6 +203,9 @@ static ResourceManagementOptionsConfiguration() .SetCdn( "https://cdn.jsdelivr.net/npm/intl-tel-input@25.12.4/build/js/intlTelInputWithUtils.min.js", "https://cdn.jsdelivr.net/npm/intl-tel-input@25.12.4/build/js/intlTelInputWithUtils.js") + .SetCdnIntegrity( + "sha384-zmSxq8xjduh+c9LYQCwKvFI7Q3Glzkdm2t62FEZ0T+aPhd1443w9QLqX4YFq6yRF", + "sha384-FdYuaXg9bZPa49HOFPWlxiUurpAlJZFOLCVAV/d8BUFdIjEh98n1FtwpIje1FGQK") .SetVersion("25.12.4"); } From 0a86e1ff08bc68f9d5ccd3af843e26d937741728 Mon Sep 17 00:00:00 2001 From: Mike Alhayek Date: Fri, 5 Jun 2026 20:27:41 -0700 Subject: [PATCH 06/20] Fix corrupted webp flag images in gulp copy pipeline Gulp 5 defaults gulp.src() to encoding: 'utf8' which corrupts binary files during copy operations. Add { encoding: false } to the copy pipeline to preserve binary data integrity. Also add .gitattributes rules to explicitly mark image and font files as binary to prevent future text-mode corruption. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .gitattributes | 12 ++++++++++++ gulpfile.js | 2 +- .../vendors/intl-tel-input/img/flags.webp | Bin 50980 -> 28186 bytes .../vendors/intl-tel-input/img/flags@2x.webp | Bin 120877 -> 66446 bytes .../vendors/intl-tel-input/img/globe.webp | Bin 909 -> 514 bytes .../vendors/intl-tel-input/img/globe@2x.webp | Bin 2439 -> 1380 bytes 6 files changed, 13 insertions(+), 1 deletion(-) diff --git a/.gitattributes b/.gitattributes index b175f24ba..4689f6b54 100644 --- a/.gitattributes +++ b/.gitattributes @@ -5,3 +5,15 @@ # Keep LF line endings in webroot assets files. Otherwise, building them under Windows would change the line endings to CLRF and cause changes without actually editing the source files. **/wwwroot/**/*.js text eol=lf **/wwwroot/**/*.css text eol=lf + +# Ensure binary files are never treated as text. +*.webp binary +*.png binary +*.jpg binary +*.jpeg binary +*.gif binary +*.ico binary +*.woff binary +*.woff2 binary +*.ttf binary +*.eot binary diff --git a/gulpfile.js b/gulpfile.js index 8e7b94969..496688fc4 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -352,7 +352,7 @@ function buildJsPipeline(assetGroup, doConcat, doRebuild) { } function buildCopyPipeline(assetGroup, doRebuild) { - var stream = gulp.src(assetGroup.inputPaths); + var stream = gulp.src(assetGroup.inputPaths, { encoding: false }); if (!doRebuild) { stream = stream.pipe(newer(assetGroup.outputDir)) diff --git a/src/Modules/CrestApps.OrchardCore.Resources/wwwroot/vendors/intl-tel-input/img/flags.webp b/src/Modules/CrestApps.OrchardCore.Resources/wwwroot/vendors/intl-tel-input/img/flags.webp index 21ca3c73ba4470ba10cefe969ea871b236d60eb8..b433dbdf43fdc95bdd9acbf6a8fffcaa4a27d31b 100644 GIT binary patch literal 28186 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

      EGe6{epojWXz5iqrLxkvUi(Bq(l3Hx{?NctSb(p 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 mUJ9&?FP|v?6W^g~zEdGCBq@YLu diff --git a/src/Modules/CrestApps.OrchardCore.Resources/wwwroot/vendors/intl-tel-input/img/globe.webp b/src/Modules/CrestApps.OrchardCore.Resources/wwwroot/vendors/intl-tel-input/img/globe.webp index 9bc5ffbf168be0132b30d863e1784f36d84ed68f..d1f2b8528e7557cf708f0b23ab555d366186af3a 100644 GIT binary patch literal 514 zcmV+d0{#6`Nk&Hc0RRA3MM6+kP&iEP0RR9m6Tk!z)yR@0S+$$HAARbVPTZ+EVwU#v z_AV`=#EfQUw(m8w9TBo1Nj7cEwr$(SpKaT=ZQHhO+qP{#o0IAQNefMeFvT;#Th0@g ztPO%|$f}!4D1T>Q3i!rXzD&aZ1Tr=)C^|rLlm2<&6OWlNg&sXYo=*94`HB_rT|>4( zl+IV|w_?;OHTpfJnRvyb4x@TL2ONlIwr++Gn;B8%vIsAkdPQ7=V8!NRSM}17o9y|3 zH>(j$6wTb{jNU#aN~Fy(pL*cVR42qiqveJ!c$V<75h*0 ztznXrmzWr)-$w{1SYSFturd|`G6|Z)y4P{^`TqnQ78=~Sql5m>{C*>& E0obne$N&HU literal 909 zcmY+C-*1ai7{|M5tX9U*j@qmew8T~`wpp{$vNms1TTQc?5v?v0+v>+c%;;RYal@^I z#NFJuktHPJg2@uD+{t$B*1zEM&3SVg$@jkU5_Wp4KUS(l-``Z%S6rMi zzd}8Z{{nU#o`923p9S0C?Akjt8-04S)NHCnO#K0GytgYlaCY8gk1+S2+HC(|5*>l= zdVuiSIYf1!jdX$|YIP8Th1It$*y2!AJEo)DhTGxZi-<3VEDm2qOAu7F%dZzEG1`Z< z=62gs%0`+{*=7WlL?+}lg(2)NTnHgWf4Y1R*EztPu}fpPPBCio|F+s=Y8hYTa%tc^ zNj%sX--3VrglIDZZ+kGb@zKPaZFQfGb_VV@lKft_6@o&Gh9A>+H3s)4h%(UPsComN z;QEI`{7}R$5sY5H^5^}tV@{OVffJ9ButprwMK5J_`-h>v(x&nE!|vJ6JO+NgZqlqD z!nUpc)mQZw4!J%lVK4CpFSkD1pxCib02VsLfZ=vOCnIIskLY9uqvk+{ShH zAZ*O&EoJq=so}oFlG>fpMeF&hvp`mdGPt9jp45<9eR72<@^LsBY@Wf~M_Fk22XiAp A=>Px# diff --git a/src/Modules/CrestApps.OrchardCore.Resources/wwwroot/vendors/intl-tel-input/img/globe@2x.webp b/src/Modules/CrestApps.OrchardCore.Resources/wwwroot/vendors/intl-tel-input/img/globe@2x.webp index 8bfd7a37be9f3b2eeccb41aa5fca7383ef000a92..168bfa764ea337fac1ffd130213b7e76403d332c 100644 GIT binary patch delta 1375 zcmV-l1)%ze6XXhz7JtAA5J$%-k|ZhFoPzk{-wYy_UeLg(Z6ry~oPg%P{K+f_Mr|WW za^?gy|K(3+IXG-1Ns;EXz3@y~eYT$xGyieVj>5KWo9=1w4hRYq*L&_b2g?{pVOz^U z5X2lnN<{!jIegHh2x0{Qhyccj004)C1P36&VTBnIM%`hR5`P#B21AA+Hwjw7OK1g= zk&$80I+`>P1%NN>BbiB15DJ6VFeQN?6bi!7f>00*6a+z(C_#MihW*x5j}k-)f>018 zJ}6;O5G`1A-_1!wQA|0wqQn6iOa+WFLIma!qtq6}36GSd1PKulF||txmZ@h-FiN@e z-WK}&{~EZzZ+`;{`~Me`+a)>-60T5wQD490Ath7sa(`(i{D^%|HeVMRKM0j4KfKJ! zLTa8HDnp%2>eTPp_h57JiVEVUXpedxSXBU=xV>doS_D#kf_;~W@B4;<&|P^=-Q*uu z7T`FHoI*z#CWShKox_6hIuNQoH}od*^0T5mTL1k8=dOfF8GKKaW%E)x>8elQfUW`X zY!TVR=6^xcKn8jyF(9I@bbYfA7(MM$yB8Nu>+esR-R0n)+hrbnuH1w=?a-s2$|azGTZgk#2z{j zLL|%!up!*@?!mX;Iq?3({vF=V?l54&`v(rbyE~CmlV_>85W*FHeNO9Aa;|%n+(S15 zeCK)k>DP^)<;mupHOo=~1}h1&}7c2ap4z~Kv15B@7ro*VwcVdIOqX;18Qwdpg796OH{ z1=zN8oqh2;Cr91xUse_tJCqKTDNoITSM);z>y!O#5!u(L%d59Xez{tgo6gw0ZhtC7 z+`WU>B-#^DGWFAD9XeR};9-`bF^VrCRfc*7>12bbFMD`8p}fzaaxLX6Xu%Fx{ZK z16VA51fX$xKP)%CZ;oLD5tjq$34h=! zGj}$Nu-_-}({+dXdgrM?Clcv-VCBH(jkGU>rvfG8p?;t2`MN}hftOwc8SWbKQrdTg zC%u&L%FI#NJ5IV`B2emOh`75IV_Vwuge!y)o_wewtNtpFSA=HN7g!nY)mVygP)lFr z^yGOC8fo;14i=8Zy;}~a%XOkm2;s@zHCboIuKp|nhx@nrex{L$lvk1NfK{)F1=to3 h(uN}s8yTiMld%BDv3S5yjBBq99`*s2MHE@wCjji}o$CMq literal 2439 zcmZWr>rdNN7%sG3xl;-h3Jk`8aajr1ald!K3YC^JN(+pO%1!Q*i)9qDWm${{WBjr& zept++iJDE#LQLGU#0AtWy2WTf$27)de$#)!=i&YNE5zh^pZ9&wIX%B~-t(LTZhKqX zpkAZtYi)6PTvZMy;-cJt9zF;+wuAFv+4;Y`52qsPG{PY@oz1rYaID{IXq(NlU&a7k zxr}m-S69ts*^#`s$9WvSfOMG3;1{2~^Y!+uG)%$8gheF4U4c~@K*<+I2jH5FptPor zR?UU#^{2PPUe;^SpxJ#>Ll5W-r@*5yi>XbCOvzCvY=|=}!~5YnC-qD$7igyfpwnZSI+Vwq4!- z?691>x2206D^LEbu(V~1t9PhF5Dc9MZH9vS43psBJ_d2swJ<>!T!@;LDH}mUGOGn} z$qTFie{*nC3+{xOHbBv^u-4K)ZhVL!I13UWrzXk-=i2BVmWIrn9t4-C&PW^G8es-1|aHg!K$ms zh-^Xp(+42^bcQ}9uskAtTwQT9#lc(Shw%m}Wk3Y*6$!m4F*r(%B&c7bCIsGB;gg4~ zbFqyfw!QbL=^0Prh|klIyL1l8dTC+3<=~5Nzd}4X56Xl!!2qg?m1B7*3`IW6(`kHy zj^ZSe0-sO$UG*SR&gE>#0CTX7hh>5By{TepxhY_p-vj3KlLdk2Tal7c>zu^qrP!&& zHfsR91{1K&|LCS9UCMrYxzZGA14kKp!JLv}?V-Sd#8UCX={3d{URjP(mU6WF*zuoK zdy18_GQ>y|S4l-pNJ{Z0ZUm?}`n`=2-x%usTlyr>A;)mAk)* zSfG4R&AGE?ZnK|bwCrXRk4;c0u9xrqC727gAZ;AD;`UP$Kx9uW_-r>QRa!>>eEZ8O zmXxm!z&|Nz+-jnJf17VW09KpZ4hDujW-~jvgnZ}sSNq^?e5HWHJGuAK<4+K`^RSfL zjA;MG{P#~o;5L2HU3KF=M1E=k$d6||0gjx7bp*dtwpt;5VBTqE9p_EAQz9V5Z1w%SsIbH}iY!#-=i%7uJuI1WBPg5AYrGms)1|&EO zXM|C?$^~KZdAh7fl9!+O`K?7)=P&|+KPKhy-wnR;I}Zk^2!NY$D3=i7Ip4(Y9e6AM vEUGxR6Mh7sya7GT9Q)&qtk_h3lUf5b-+cZC95*rzi%JKv_N@u5d#>hRr$h@L From edfc874fa1b47f4e9551213663ae7d5dda134b96 Mon Sep 17 00:00:00 2001 From: Mike Alhayek Date: Sat, 6 Jun 2026 09:14:43 -0700 Subject: [PATCH 07/20] Add PhoneField custom content field with intl-tel-input integration Replace the InternationalTelephone TextField editor with a dedicated PhoneField content field that stores the E.164 phone number, ISO country code, and national number separately. This ensures the correct country flag is always displayed when the field is loaded for editing, even for countries that share a calling code (e.g. US and CA both use +1). - Add PhoneField, PhoneFieldSettings, display driver, and settings driver - Add edit, display, and settings views with intl-tel-input integration - Migrate PhoneNumberInfoPart.Number from TextField to PhoneField - Update Omnichannel index provider, helper, import handler, and tests - Update documentation, changelog, and sidebar navigation Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- ...stApps.OrchardCore.Omnichannel.Core.csproj | 1 + .../Models/PhoneNumberInfoPart.cs | 5 +- src/CrestApps.Docs/docs/changelog/v2.0.0.md | 5 +- .../docs/modules/content-fields.md | 59 ++++++--- .../docs/omnichannel/management.md | 2 +- src/CrestApps.Docs/sidebars.js | 1 + .../js/international-telephone-editor.js | 66 +++++++--- ...CrestApps.OrchardCore.ContentFields.csproj | 5 +- .../Drivers/PhoneFieldDisplayDriver.cs | 123 ++++++++++++++++++ .../Drivers/PhoneFieldSettingsDriver.cs | 49 +++++++ .../Fields/PhoneField.cs | 28 ++++ .../Manifest.cs | 7 +- .../README.md | 9 +- .../Settings/PhoneFieldSettings.cs | 23 ++++ .../Startup.cs | 10 ++ .../ViewModels/DisplayPhoneFieldViewModel.cs | 26 ++++ .../ViewModels/EditPhoneFieldViewModel.cs | 41 ++++++ .../Views/PhoneField.Display.cshtml | 8 ++ .../Views/PhoneField.Edit.cshtml | 33 +++++ .../Views/PhoneFieldSettings.Edit.cshtml | 20 +++ ...xtField-InternationalTelephone.Edit.cshtml | 35 ----- ...Field-InternationalTelephone.Option.cshtml | 4 - .../scripts/international-telephone-editor.js | 55 +++++--- .../international-telephone-editor.min.js | 2 +- ...ichannelContactPartContentImportHandler.cs | 11 +- .../OmnichannelContactIndexProvider.cs | 10 +- .../Migrations/ContactMethodMigrations.cs | 29 +++-- .../Services/OmnichannelHelper.cs | 16 +-- ...nelContactPartContentImportHandlerTests.cs | 5 +- 29 files changed, 558 insertions(+), 130 deletions(-) create mode 100644 src/Modules/CrestApps.OrchardCore.ContentFields/Drivers/PhoneFieldDisplayDriver.cs create mode 100644 src/Modules/CrestApps.OrchardCore.ContentFields/Drivers/PhoneFieldSettingsDriver.cs create mode 100644 src/Modules/CrestApps.OrchardCore.ContentFields/Fields/PhoneField.cs create mode 100644 src/Modules/CrestApps.OrchardCore.ContentFields/Settings/PhoneFieldSettings.cs create mode 100644 src/Modules/CrestApps.OrchardCore.ContentFields/ViewModels/DisplayPhoneFieldViewModel.cs create mode 100644 src/Modules/CrestApps.OrchardCore.ContentFields/ViewModels/EditPhoneFieldViewModel.cs create mode 100644 src/Modules/CrestApps.OrchardCore.ContentFields/Views/PhoneField.Display.cshtml create mode 100644 src/Modules/CrestApps.OrchardCore.ContentFields/Views/PhoneField.Edit.cshtml create mode 100644 src/Modules/CrestApps.OrchardCore.ContentFields/Views/PhoneFieldSettings.Edit.cshtml delete mode 100644 src/Modules/CrestApps.OrchardCore.ContentFields/Views/TextField-InternationalTelephone.Edit.cshtml delete mode 100644 src/Modules/CrestApps.OrchardCore.ContentFields/Views/TextField-InternationalTelephone.Option.cshtml diff --git a/src/Core/CrestApps.OrchardCore.Omnichannel.Core/CrestApps.OrchardCore.Omnichannel.Core.csproj b/src/Core/CrestApps.OrchardCore.Omnichannel.Core/CrestApps.OrchardCore.Omnichannel.Core.csproj index 999f54a6a..7d1be6727 100644 --- a/src/Core/CrestApps.OrchardCore.Omnichannel.Core/CrestApps.OrchardCore.Omnichannel.Core.csproj +++ b/src/Core/CrestApps.OrchardCore.Omnichannel.Core/CrestApps.OrchardCore.Omnichannel.Core.csproj @@ -13,6 +13,7 @@ + diff --git a/src/Core/CrestApps.OrchardCore.Omnichannel.Core/Models/PhoneNumberInfoPart.cs b/src/Core/CrestApps.OrchardCore.Omnichannel.Core/Models/PhoneNumberInfoPart.cs index 07c453600..ea9b8502b 100644 --- a/src/Core/CrestApps.OrchardCore.Omnichannel.Core/Models/PhoneNumberInfoPart.cs +++ b/src/Core/CrestApps.OrchardCore.Omnichannel.Core/Models/PhoneNumberInfoPart.cs @@ -1,4 +1,5 @@ -using OrchardCore.ContentFields.Fields; +using CrestApps.OrchardCore.ContentFields.Fields; +using OrchardCore.ContentFields.Fields; using OrchardCore.ContentManagement; namespace CrestApps.OrchardCore.Omnichannel.Core.Models; @@ -11,7 +12,7 @@ public sealed class PhoneNumberInfoPart : ContentPart ///

      /// Gets or sets the number. /// - public TextField Number { get; set; } + public PhoneField Number { get; set; } /// /// Gets or sets the extension. diff --git a/src/CrestApps.Docs/docs/changelog/v2.0.0.md b/src/CrestApps.Docs/docs/changelog/v2.0.0.md index d56a66527..79568dc18 100644 --- a/src/CrestApps.Docs/docs/changelog/v2.0.0.md +++ b/src/CrestApps.Docs/docs/changelog/v2.0.0.md @@ -111,8 +111,9 @@ Large parts of the reusable AI infrastructure are no longer implemented only ins - Azure AI Search index editors for **AI Documents** and **AI Memory** now normalize their built-in managed mappings on load and update so repeated edits do not keep appending duplicate `Content`, `Embedding`, and related managed fields, while custom mappings remain preserved - The **Clear saved AI memory** action in the current user's profile editor now uses Orchard Core's standard admin confirmation dialog and clears the user's saved memory entries by filtering the store's persisted records for the current user before removing the corresponding indexed AI memory documents - Content Transfer content-type settings now default **Allow Bulk Import** and **Allow Bulk Export** to enabled, so content types participate by default and can explicitly opt out by turning either setting off -- Added a new `CrestApps.OrchardCore.ContentFields` module with an `InternationalTelephone` `TextField` editor powered by `intl-tel-input`, and Omnichannel Management now migrates `PhoneNumberInfoPart.Number` to use that editor -- Moved the shared `intl-tel-input` library assets and Orchard resource-manager registration into `CrestApps.OrchardCore.Resources`, while `CrestApps.OrchardCore.ContentFields` now depends on that feature for the `InternationalTelephone` editor +- Added a new `CrestApps.OrchardCore.ContentFields` module with a `PhoneField` content field that stores a phone number in E.164 format together with the ISO country code and national number, uses `intl-tel-input` for country-aware editing, and validates input through `IPhoneNumberService` +- Omnichannel Management now migrates `PhoneNumberInfoPart.Number` from a `TextField` to a `PhoneField` so phone numbers persist with the correct country flag +- Moved the shared `intl-tel-input` library assets and Orchard resource-manager registration into `CrestApps.OrchardCore.Resources`, while `CrestApps.OrchardCore.ContentFields` depends on that feature for the phone editor - Content Transfer now keeps CSV support in the base `CrestApps.OrchardCore.ContentTransfer` feature and moves optional `.xlsx` support into `CrestApps.OrchardCore.ContentTransfer.OpenXml`, with the import and export UI showing only the file extensions enabled by the current tenant feature set - Content Transfer now welds lazily created parts onto the parent content item during column discovery, import, and export so `.xlsx` exports no longer fail with a `System.Text.Json` node-cycle exception when a content item does not already materialize one of its configured parts - Content Transfer imports now commit inline status changes before their deferred background jobs run, use **Pending**, **Paused**, and **Deleting** import states in the admin list, surface **Resume import** and **Pause import** actions instead of the earlier cancel/process wording, and migrate older canceled import rows to the paused state diff --git a/src/CrestApps.Docs/docs/modules/content-fields.md b/src/CrestApps.Docs/docs/modules/content-fields.md index 77c92adc5..d2517513d 100644 --- a/src/CrestApps.Docs/docs/modules/content-fields.md +++ b/src/CrestApps.Docs/docs/modules/content-fields.md @@ -2,7 +2,7 @@ sidebar_label: Content Fields sidebar_position: 2 title: Content Fields -description: Adds custom Orchard Core content field editors maintained by CrestApps. +description: Adds custom Orchard Core content fields maintained by CrestApps. --- | | | @@ -10,38 +10,59 @@ description: Adds custom Orchard Core content field editors maintained by CrestA | **Feature Name** | CrestApps Content Fields | | **Feature ID** | `CrestApps.OrchardCore.ContentFields` | -Provides custom Orchard Core content field editors maintained by CrestApps. +Provides custom Orchard Core content fields maintained by CrestApps. ## Overview -This module adds reusable editor variants for Orchard Core content fields without changing the underlying field types. +This module adds custom content fields for Orchard Core that extend the built-in field library with additional functionality. Each field ships with its own display driver, settings, edit and display views. -It follows Orchard Core's custom editor convention by shipping both: +## Included fields -- `TextField-InternationalTelephone.Option.cshtml` -- `TextField-InternationalTelephone.Edit.cshtml` +### PhoneField -## Included editors +A content field that stores an international phone number together with its ISO country code so the correct country flag is always displayed when the field is edited again. -### InternationalTelephone (`TextField`) +The field uses the [intl-tel-input](https://intl-tel-input.com/) library (provided by `CrestApps.OrchardCore.Resources`) to give editors a country-aware phone number input with flag dropdown and automatic formatting. -The `InternationalTelephone` editor uses the `intl-tel-input` library to provide: +#### Stored properties -- country-aware phone number entry -- international formatting while editing -- normalization back to E.164 on submit -- shared `intl-tel-input` resources from `CrestApps.OrchardCore.Resources` -- local editor-specific assets from `CrestApps.OrchardCore.ContentFields` +| Property | Type | Description | +| --- | --- | --- | +| `PhoneNumber` | `string` | The full phone number in E.164 format (e.g. `+14155552671`). | +| `CountryCode` | `string` | ISO 3166-1 alpha-2 country code (e.g. `US`, `CA`). Stored separately because some countries share a calling code (e.g. US and CA both use `+1`). | +| `NationalNumber` | `string` | The national (local) portion of the number without the country calling code (e.g. `4155552671`). | -Use it from the content definition UI or through migrations with: +#### Settings + +| Setting | Type | Default | Description | +| --- | --- | --- | --- | +| `Hint` | `string` | `null` | Help text displayed below the field. | +| `Required` | `bool` | `false` | Whether the field is required. | +| `DefaultCountryCode` | `string` | `null` | ISO country code used to pre-select the flag when the field is empty (e.g. `US`). | + +#### Adding PhoneField via migration ```csharp -.WithEditor("InternationalTelephone") +await _contentDefinitionManager.AlterPartDefinitionAsync("MyPart", part => part + .WithField("Phone", field => field + .OfType("PhoneField") + .WithDisplayName("Phone Number") + .WithPosition("1") + .WithSettings(new PhoneFieldSettings + { + Required = true, + DefaultCountryCode = "US", + Hint = "Enter a phone number with country code.", + }) + ) +); ``` +#### Server-side validation + +When the field value is submitted, the display driver uses `IPhoneNumberService` (from `CrestApps.OrchardCore.PhoneNumbers`) to validate that the entered number is a well-formed phone number. Invalid numbers produce a model-state error and the editor is re-displayed. + ## Notes -- The underlying field type stays `TextField`. -- Existing values stored in E.164 format continue to edit correctly. - The shared `intl-tel-input` script and stylesheet are registered by `CrestApps.OrchardCore.Resources`. -- The Omnichannel Management module now depends on this feature for `PhoneNumberInfoPart.Number`. +- The Omnichannel Management module depends on this feature for `PhoneNumberInfoPart.Number`. diff --git a/src/CrestApps.Docs/docs/omnichannel/management.md b/src/CrestApps.Docs/docs/omnichannel/management.md index add48de9a..880ffd359 100644 --- a/src/CrestApps.Docs/docs/omnichannel/management.md +++ b/src/CrestApps.Docs/docs/omnichannel/management.md @@ -90,7 +90,7 @@ In Orchard Core Admin: 4. Add any fields/parts you need (phone number, email, lead status, custom fields, etc.). 5. Create/import contact items. -If you use the built-in `PhoneNumberInfoPart`, the `Number` field now uses the `InternationalTelephone` TextField editor from `CrestApps.OrchardCore.ContentFields`, which provides country-aware entry and stores submitted values in international format. +If you use the built-in `PhoneNumberInfoPart`, the `Number` field is a `PhoneField` (from `CrestApps.OrchardCore.ContentFields`) that stores the phone number in E.164 format alongside the ISO country code, so the correct country flag is always displayed when the field is edited again. When a content type includes `OmnichannelContactPart`, the module now enforces two code-controlled omnichannel surfaces: diff --git a/src/CrestApps.Docs/sidebars.js b/src/CrestApps.Docs/sidebars.js index 3b0a2fc5d..e416dbfb9 100644 --- a/src/CrestApps.Docs/sidebars.js +++ b/src/CrestApps.Docs/sidebars.js @@ -100,6 +100,7 @@ const sidebars = { items: [ 'modules/index', 'modules/content-access-control', + 'modules/content-fields', 'modules/recipes', 'modules/resources', 'modules/roles', diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/Assets/js/international-telephone-editor.js b/src/Modules/CrestApps.OrchardCore.ContentFields/Assets/js/international-telephone-editor.js index 2b88f248f..ad6def3a9 100644 --- a/src/Modules/CrestApps.OrchardCore.ContentFields/Assets/js/international-telephone-editor.js +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/Assets/js/international-telephone-editor.js @@ -1,48 +1,84 @@ (function () { - const selector = '[data-intl-tel-input="true"]'; + var selector = '[data-phone-field]'; - function initializeInput(input) { - if (!window.intlTelInput || input.dataset.intlTelInputInitialized === 'true') { + function initializeField(wrapper) { + var telInput = wrapper.querySelector('input[data-intl-tel-input="true"]'); + + if (!window.intlTelInput || !telInput || telInput.dataset.intlTelInputInitialized === 'true') { return; } - input.dataset.intlTelInputInitialized = 'true'; + telInput.dataset.intlTelInputInitialized = 'true'; + + var e164Input = wrapper.querySelector('[data-phone-e164]'); + var countryInput = wrapper.querySelector('[data-phone-country]'); + var nationalInput = wrapper.querySelector('[data-phone-national]'); - const telephoneInput = window.intlTelInput(input, { + var options = { containerClass: 'w-100', dropdownParent: document.body, numberDisplayFormat: 'INTERNATIONAL', strictMode: true - }); + }; - if (input.disabled) { + var initialCountry = telInput.dataset.initialCountry; + + if (initialCountry) { + options.initialCountry = initialCountry; + } + + var telephoneInput = window.intlTelInput(telInput, options); + + if (telInput.disabled) { telephoneInput.setDisabled(true); } - else if (input.readOnly) { + else if (telInput.readOnly) { telephoneInput.setReadonly(true); } - if (input.form) { - input.form.addEventListener('submit', function () { - if (!input.value) { + if (telInput.form) { + telInput.form.addEventListener('submit', function () { + if (!telInput.value) { + if (e164Input) { + e164Input.value = ''; + } + + if (countryInput) { + countryInput.value = ''; + } + + if (nationalInput) { + nationalInput.value = ''; + } + return; } - const normalizedNumber = telephoneInput.getNumber(); + var e164Number = telephoneInput.getNumber(); + var countryData = telephoneInput.getSelectedCountryData(); + + if (e164Input) { + e164Input.value = e164Number || ''; + } - if (normalizedNumber) { - input.value = normalizedNumber; + if (countryInput) { + countryInput.value = (countryData.iso2 || '').toUpperCase(); + } + + if (nationalInput) { + nationalInput.value = telInput.value || ''; } }); } } function initialize() { - document.querySelectorAll(selector).forEach(initializeInput); + document.querySelectorAll(selector).forEach(initializeField); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initialize, { once: true }); + return; } diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/CrestApps.OrchardCore.ContentFields.csproj b/src/Modules/CrestApps.OrchardCore.ContentFields/CrestApps.OrchardCore.ContentFields.csproj index 3bbbe04a5..a8ee53134 100644 --- a/src/Modules/CrestApps.OrchardCore.ContentFields/CrestApps.OrchardCore.ContentFields.csproj +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/CrestApps.OrchardCore.ContentFields.csproj @@ -7,7 +7,7 @@ $(CrestAppsDescription) - Adds custom Orchard Core content field editors maintained by CrestApps. + Adds custom Orchard Core content fields maintained by CrestApps. $(PackageTags) OrchardCoreCMS Content Fields @@ -19,11 +19,14 @@ + + + diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/Drivers/PhoneFieldDisplayDriver.cs b/src/Modules/CrestApps.OrchardCore.ContentFields/Drivers/PhoneFieldDisplayDriver.cs new file mode 100644 index 000000000..e1ef91613 --- /dev/null +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/Drivers/PhoneFieldDisplayDriver.cs @@ -0,0 +1,123 @@ +using CrestApps.OrchardCore.ContentFields.Fields; +using CrestApps.OrchardCore.ContentFields.Settings; +using CrestApps.OrchardCore.ContentFields.ViewModels; +using CrestApps.OrchardCore.PhoneNumbers; +using Microsoft.Extensions.Localization; +using OrchardCore.ContentManagement.Display.ContentDisplay; +using OrchardCore.ContentManagement.Display.Models; +using OrchardCore.ContentManagement.Metadata.Models; +using OrchardCore.DisplayManagement.Views; +using OrchardCore.Mvc.ModelBinding; + +namespace CrestApps.OrchardCore.ContentFields.Drivers; + +/// +/// Display driver for the content field. +/// +public sealed class PhoneFieldDisplayDriver : ContentFieldDisplayDriver +{ + private readonly IPhoneNumberService _phoneNumberService; + + internal readonly IStringLocalizer S; + + /// + /// Initializes a new instance of the class. + /// + /// The phone number service. + /// The string localizer. + public PhoneFieldDisplayDriver( + IPhoneNumberService phoneNumberService, + IStringLocalizer stringLocalizer) + { + _phoneNumberService = phoneNumberService; + S = stringLocalizer; + } + + /// + /// Builds the display shape for the phone field. + /// + /// The phone field instance. + /// The display context. + /// The display result. + public override IDisplayResult Display(PhoneField field, BuildFieldDisplayContext context) + { + return Initialize(GetDisplayShapeType(context), model => + { + model.Field = field; + model.Part = context.ContentPart; + model.PartFieldDefinition = context.PartFieldDefinition; + }).Location("Detail", "Content") + .Location("Summary", "Content"); + } + + /// + /// Builds the edit shape for the phone field. + /// + /// The phone field instance. + /// The editor context. + /// The display result. + public override IDisplayResult Edit(PhoneField field, BuildFieldEditorContext context) + { + return Initialize(GetEditorShapeType(context), model => + { + var settings = context.PartFieldDefinition.GetSettings(); + + model.PhoneNumber = field.PhoneNumber; + model.CountryCode = field.CountryCode; + model.NationalNumber = field.NationalNumber; + model.Field = field; + model.Part = context.ContentPart; + model.PartFieldDefinition = context.PartFieldDefinition; + + if (string.IsNullOrEmpty(model.CountryCode) && !string.IsNullOrEmpty(settings.DefaultCountryCode)) + { + model.CountryCode = settings.DefaultCountryCode; + } + }); + } + + /// + /// Updates the phone field from the editor form submission. + /// + /// The phone field instance to update. + /// The update context. + /// The display result. + public override async Task UpdateAsync(PhoneField field, UpdateFieldEditorContext context) + { + var viewModel = new EditPhoneFieldViewModel(); + + await context.Updater.TryUpdateModelAsync(viewModel, Prefix, m => m.PhoneNumber, m => m.CountryCode, m => m.NationalNumber); + + var settings = context.PartFieldDefinition.GetSettings(); + + if (settings.Required && string.IsNullOrWhiteSpace(viewModel.PhoneNumber)) + { + context.Updater.ModelState.AddModelError( + Prefix, + nameof(viewModel.PhoneNumber), + S["The {0} field is required.", context.PartFieldDefinition.DisplayName()]); + } + else if (!string.IsNullOrWhiteSpace(viewModel.PhoneNumber)) + { + var regionCode = viewModel.CountryCode; + + if (!_phoneNumberService.IsValidNumber(viewModel.PhoneNumber, regionCode)) + { + context.Updater.ModelState.AddModelError( + Prefix, + nameof(viewModel.PhoneNumber), + S["The {0} field does not contain a valid phone number.", context.PartFieldDefinition.DisplayName()]); + } + else if (_phoneNumberService.TryFormatToE164(viewModel.PhoneNumber, regionCode, out var e164Number)) + { + viewModel.PhoneNumber = e164Number; + } + } + + field.PhoneNumber = viewModel.PhoneNumber; + field.CountryCode = viewModel.CountryCode?.ToUpperInvariant(); + field.NationalNumber = viewModel.NationalNumber; + + return Edit(field, context); + } +} diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/Drivers/PhoneFieldSettingsDriver.cs b/src/Modules/CrestApps.OrchardCore.ContentFields/Drivers/PhoneFieldSettingsDriver.cs new file mode 100644 index 000000000..c2c88b26b --- /dev/null +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/Drivers/PhoneFieldSettingsDriver.cs @@ -0,0 +1,49 @@ +using CrestApps.OrchardCore.ContentFields.Fields; +using CrestApps.OrchardCore.ContentFields.Settings; +using OrchardCore.ContentManagement.Metadata.Models; +using OrchardCore.ContentTypes.Editors; +using OrchardCore.DisplayManagement.Handlers; +using OrchardCore.DisplayManagement.Views; + +namespace CrestApps.OrchardCore.ContentFields.Drivers; + +/// +/// Display driver for the configuration. +/// +public sealed class PhoneFieldSettingsDriver : ContentPartFieldDefinitionDisplayDriver +{ + /// + /// Builds the edit shape for phone field settings. + /// + /// The part field definition. + /// The build editor context. + /// The display result. + public override IDisplayResult Edit(ContentPartFieldDefinition model, BuildEditorContext context) + { + return Initialize("PhoneFieldSettings_Edit", settings => + { + var fieldSettings = model.GetSettings(); + + settings.Hint = fieldSettings.Hint; + settings.Required = fieldSettings.Required; + settings.DefaultCountryCode = fieldSettings.DefaultCountryCode; + }).Location("Content"); + } + + /// + /// Updates the phone field settings from the form submission. + /// + /// The part field definition. + /// The update context. + /// The display result. + public override async Task UpdateAsync(ContentPartFieldDefinition model, UpdatePartFieldEditorContext context) + { + var settings = new PhoneFieldSettings(); + + await context.Updater.TryUpdateModelAsync(settings, Prefix); + + context.Builder.WithSettings(settings); + + return Edit(model, context); + } +} diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/Fields/PhoneField.cs b/src/Modules/CrestApps.OrchardCore.ContentFields/Fields/PhoneField.cs new file mode 100644 index 000000000..86ff45b31 --- /dev/null +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/Fields/PhoneField.cs @@ -0,0 +1,28 @@ +using OrchardCore.ContentManagement; + +namespace CrestApps.OrchardCore.ContentFields.Fields; + +/// +/// A content field that stores a phone number with its country code for +/// correct flag display and E.164 formatting. +/// +public sealed class PhoneField : ContentField +{ + /// + /// Gets or sets the phone number in E.164 format (e.g., "+14155552671"). + /// + public string PhoneNumber { get; set; } + + /// + /// Gets or sets the ISO 3166-1 alpha-2 country code (e.g., "US", "CA"). + /// This is stored separately so the correct country flag can be displayed + /// even when multiple countries share the same calling code. + /// + public string CountryCode { get; set; } + + /// + /// Gets or sets the national phone number without the country calling code + /// (e.g., "4155552671"). + /// + public string NationalNumber { get; set; } +} diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/Manifest.cs b/src/Modules/CrestApps.OrchardCore.ContentFields/Manifest.cs index 2192ee9be..0bb09d892 100644 --- a/src/Modules/CrestApps.OrchardCore.ContentFields/Manifest.cs +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/Manifest.cs @@ -1,4 +1,5 @@ using CrestApps.OrchardCore; +using CrestApps.OrchardCore.PhoneNumbers; using OrchardCore.Modules.Manifest; [assembly: Module( @@ -6,7 +7,7 @@ Author = CrestAppsManifestConstants.Author, Website = CrestAppsManifestConstants.Website, Version = CrestAppsManifestConstants.Version, - Description = "Adds custom Orchard Core content field editors maintained by CrestApps.", + Description = "Adds custom Orchard Core content fields maintained by CrestApps.", Category = "Content", IsAlwaysEnabled = false )] @@ -15,10 +16,12 @@ Name = "CrestApps Content Fields", Id = "CrestApps.OrchardCore.ContentFields", Category = "Content", - Description = "Adds custom Orchard Core content field editors maintained by CrestApps.", + Description = "Adds custom Orchard Core content fields maintained by CrestApps.", Dependencies = [ "CrestApps.OrchardCore.Resources", + PhoneNumbersConstants.Features.Area, "OrchardCore.ContentFields", + "OrchardCore.ContentTypes", ] )] diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/README.md b/src/Modules/CrestApps.OrchardCore.ContentFields/README.md index 5b81910d0..af3fe2c2c 100644 --- a/src/Modules/CrestApps.OrchardCore.ContentFields/README.md +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/README.md @@ -1,12 +1,13 @@ # CrestApps.OrchardCore.ContentFields -Provides custom Orchard Core content field editors maintained by CrestApps. +Provides custom Orchard Core content fields maintained by CrestApps. ## Features -- Adds the `InternationalTelephone` editor for Orchard Core `TextField` -- Depends on `CrestApps.OrchardCore.Resources` for the shared `intl-tel-input` library assets +- Adds `PhoneField`, a content field that stores a phone number together with its ISO country code so the correct country flag is always displayed +- Uses the `intl-tel-input` library (from `CrestApps.OrchardCore.Resources`) for country-aware phone number entry +- Server-side validation via `IPhoneNumberService` ## Usage -Enable the **CrestApps Content Fields** feature, then choose the `InternationalTelephone` editor on a `TextField` definition or through a data migration with `.WithEditor("InternationalTelephone")`. +Enable the **CrestApps Content Fields** feature, then add a `PhoneField` to any content part through the content definition UI or a data migration with `.OfType("PhoneField")`. diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/Settings/PhoneFieldSettings.cs b/src/Modules/CrestApps.OrchardCore.ContentFields/Settings/PhoneFieldSettings.cs new file mode 100644 index 000000000..59222c4f4 --- /dev/null +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/Settings/PhoneFieldSettings.cs @@ -0,0 +1,23 @@ +namespace CrestApps.OrchardCore.ContentFields.Settings; + +/// +/// Stores the settings for a . +/// +public sealed class PhoneFieldSettings +{ + /// + /// Gets or sets the hint text displayed below the field. + /// + public string Hint { get; set; } + + /// + /// Gets or sets a value indicating whether the field is required. + /// + public bool Required { get; set; } + + /// + /// Gets or sets the default ISO 3166-1 alpha-2 country code used + /// when no country has been selected yet (e.g., "US"). + /// + public string DefaultCountryCode { get; set; } +} diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/Startup.cs b/src/Modules/CrestApps.OrchardCore.ContentFields/Startup.cs index 514d438d5..668255e23 100644 --- a/src/Modules/CrestApps.OrchardCore.ContentFields/Startup.cs +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/Startup.cs @@ -1,4 +1,9 @@ +using CrestApps.OrchardCore.ContentFields.Drivers; +using CrestApps.OrchardCore.ContentFields.Fields; using Microsoft.Extensions.DependencyInjection; +using OrchardCore.ContentManagement; +using OrchardCore.ContentManagement.Display.ContentDisplay; +using OrchardCore.ContentTypes.Editors; using OrchardCore.Modules; namespace CrestApps.OrchardCore.ContentFields; @@ -11,5 +16,10 @@ public sealed class Startup : StartupBase public override void ConfigureServices(IServiceCollection services) { services.AddResourceConfiguration(); + + services.AddContentField() + .UseDisplayDriver(); + + services.AddScoped(); } } diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/ViewModels/DisplayPhoneFieldViewModel.cs b/src/Modules/CrestApps.OrchardCore.ContentFields/ViewModels/DisplayPhoneFieldViewModel.cs new file mode 100644 index 000000000..bdd72ce5e --- /dev/null +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/ViewModels/DisplayPhoneFieldViewModel.cs @@ -0,0 +1,26 @@ +using CrestApps.OrchardCore.ContentFields.Fields; +using OrchardCore.ContentManagement; +using OrchardCore.ContentManagement.Metadata.Models; + +namespace CrestApps.OrchardCore.ContentFields.ViewModels; + +/// +/// View model used when displaying a . +/// +public class DisplayPhoneFieldViewModel +{ + /// + /// Gets or sets the phone field instance being displayed. + /// + public PhoneField Field { get; set; } + + /// + /// Gets or sets the content part containing this field. + /// + public ContentPart Part { get; set; } + + /// + /// Gets or sets the field definition metadata. + /// + public ContentPartFieldDefinition PartFieldDefinition { get; set; } +} diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/ViewModels/EditPhoneFieldViewModel.cs b/src/Modules/CrestApps.OrchardCore.ContentFields/ViewModels/EditPhoneFieldViewModel.cs new file mode 100644 index 000000000..fb66e2aee --- /dev/null +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/ViewModels/EditPhoneFieldViewModel.cs @@ -0,0 +1,41 @@ +using CrestApps.OrchardCore.ContentFields.Fields; +using OrchardCore.ContentManagement; +using OrchardCore.ContentManagement.Metadata.Models; + +namespace CrestApps.OrchardCore.ContentFields.ViewModels; + +/// +/// View model used when editing a . +/// +public class EditPhoneFieldViewModel +{ + /// + /// Gets or sets the phone number in E.164 format. + /// + public string PhoneNumber { get; set; } + + /// + /// Gets or sets the ISO 3166-1 alpha-2 country code. + /// + public string CountryCode { get; set; } + + /// + /// Gets or sets the national phone number without the country calling code. + /// + public string NationalNumber { get; set; } + + /// + /// Gets or sets the phone field instance being edited. + /// + public PhoneField Field { get; set; } + + /// + /// Gets or sets the content part containing this field. + /// + public ContentPart Part { get; set; } + + /// + /// Gets or sets the field definition metadata. + /// + public ContentPartFieldDefinition PartFieldDefinition { get; set; } +} diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/Views/PhoneField.Display.cshtml b/src/Modules/CrestApps.OrchardCore.ContentFields/Views/PhoneField.Display.cshtml new file mode 100644 index 000000000..29489f9e0 --- /dev/null +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/Views/PhoneField.Display.cshtml @@ -0,0 +1,8 @@ +@model CrestApps.OrchardCore.ContentFields.ViewModels.DisplayPhoneFieldViewModel +@using OrchardCore.ContentManagement.Metadata.Models + +@if (!string.IsNullOrEmpty(Model.Field.PhoneNumber)) +{ +

      @Model.PartFieldDefinition.DisplayName()

      +
      @(Model.Field.NationalNumber ?? Model.Field.PhoneNumber) +} diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/Views/PhoneField.Edit.cshtml b/src/Modules/CrestApps.OrchardCore.ContentFields/Views/PhoneField.Edit.cshtml new file mode 100644 index 000000000..9bb1b53bc --- /dev/null +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/Views/PhoneField.Edit.cshtml @@ -0,0 +1,33 @@ +@model CrestApps.OrchardCore.ContentFields.ViewModels.EditPhoneFieldViewModel +@using CrestApps.OrchardCore.ContentFields.Settings +@using OrchardCore.ContentManagement.Metadata.Models +@using OrchardCore.Mvc.Utilities +@{ + var settings = Model.PartFieldDefinition.GetSettings(); + var initialCountry = Model.CountryCode?.ToLowerInvariant() ?? settings.DefaultCountryCode?.ToLowerInvariant() ?? string.Empty; +} + +
      + +
      + + + + + + @if (!string.IsNullOrEmpty(settings.Hint)) + { + @settings.Hint + } +
      +
      + + + + diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/Views/PhoneFieldSettings.Edit.cshtml b/src/Modules/CrestApps.OrchardCore.ContentFields/Views/PhoneFieldSettings.Edit.cshtml new file mode 100644 index 000000000..5f8496b32 --- /dev/null +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/Views/PhoneFieldSettings.Edit.cshtml @@ -0,0 +1,20 @@ +@model CrestApps.OrchardCore.ContentFields.Settings.PhoneFieldSettings + +
      +
      + + +
      +
      + +
      + + + @T["The hint text to display below the input."] +
      + +
      + + + @T["The ISO 3166-1 alpha-2 country code used when no country has been selected (e.g., US)."] +
      diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/Views/TextField-InternationalTelephone.Edit.cshtml b/src/Modules/CrestApps.OrchardCore.ContentFields/Views/TextField-InternationalTelephone.Edit.cshtml deleted file mode 100644 index ee45dd190..000000000 --- a/src/Modules/CrestApps.OrchardCore.ContentFields/Views/TextField-InternationalTelephone.Edit.cshtml +++ /dev/null @@ -1,35 +0,0 @@ -@model OrchardCore.ContentFields.ViewModels.EditTextFieldViewModel -@using OrchardCore.ContentFields.Settings -@using OrchardCore.ContentManagement.Metadata.Models -@using OrchardCore.Mvc.Utilities -@{ - var settings = Model.PartFieldDefinition.GetSettings(); -} - -@if (settings.Type == FieldBehaviorType.GeneratedHidden) -{ - - - return; -} - -
      - -
      - - - @if (!string.IsNullOrEmpty(settings.Hint)) - { - @settings.Hint - } -
      -
      - - - - diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/Views/TextField-InternationalTelephone.Option.cshtml b/src/Modules/CrestApps.OrchardCore.ContentFields/Views/TextField-InternationalTelephone.Option.cshtml deleted file mode 100644 index 6428462ae..000000000 --- a/src/Modules/CrestApps.OrchardCore.ContentFields/Views/TextField-InternationalTelephone.Option.cshtml +++ /dev/null @@ -1,4 +0,0 @@ -@{ - string currentEditor = Model.Editor; -} - diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/scripts/international-telephone-editor.js b/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/scripts/international-telephone-editor.js index 436276365..44009eb17 100644 --- a/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/scripts/international-telephone-editor.js +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/scripts/international-telephone-editor.js @@ -4,37 +4,62 @@ */ (function () { - var selector = '[data-intl-tel-input="true"]'; - function initializeInput(input) { - if (!window.intlTelInput || input.dataset.intlTelInputInitialized === 'true') { + var selector = '[data-phone-field]'; + function initializeField(wrapper) { + var telInput = wrapper.querySelector('input[data-intl-tel-input="true"]'); + if (!window.intlTelInput || !telInput || telInput.dataset.intlTelInputInitialized === 'true') { return; } - input.dataset.intlTelInputInitialized = 'true'; - var telephoneInput = window.intlTelInput(input, { + telInput.dataset.intlTelInputInitialized = 'true'; + var e164Input = wrapper.querySelector('[data-phone-e164]'); + var countryInput = wrapper.querySelector('[data-phone-country]'); + var nationalInput = wrapper.querySelector('[data-phone-national]'); + var options = { containerClass: 'w-100', dropdownParent: document.body, numberDisplayFormat: 'INTERNATIONAL', strictMode: true - }); - if (input.disabled) { + }; + var initialCountry = telInput.dataset.initialCountry; + if (initialCountry) { + options.initialCountry = initialCountry; + } + var telephoneInput = window.intlTelInput(telInput, options); + if (telInput.disabled) { telephoneInput.setDisabled(true); - } else if (input.readOnly) { + } else if (telInput.readOnly) { telephoneInput.setReadonly(true); } - if (input.form) { - input.form.addEventListener('submit', function () { - if (!input.value) { + if (telInput.form) { + telInput.form.addEventListener('submit', function () { + if (!telInput.value) { + if (e164Input) { + e164Input.value = ''; + } + if (countryInput) { + countryInput.value = ''; + } + if (nationalInput) { + nationalInput.value = ''; + } return; } - var normalizedNumber = telephoneInput.getNumber(); - if (normalizedNumber) { - input.value = normalizedNumber; + var e164Number = telephoneInput.getNumber(); + var countryData = telephoneInput.getSelectedCountryData(); + if (e164Input) { + e164Input.value = e164Number || ''; + } + if (countryInput) { + countryInput.value = (countryData.iso2 || '').toUpperCase(); + } + if (nationalInput) { + nationalInput.value = telInput.value || ''; } }); } } function initialize() { - document.querySelectorAll(selector).forEach(initializeInput); + document.querySelectorAll(selector).forEach(initializeField); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initialize, { diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/scripts/international-telephone-editor.min.js b/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/scripts/international-telephone-editor.min.js index 0c2ce903b..edf60b599 100644 --- a/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/scripts/international-telephone-editor.min.js +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/scripts/international-telephone-editor.min.js @@ -1 +1 @@ -!function(){function t(t){if(window.intlTelInput&&"true"!==t.dataset.intlTelInputInitialized){t.dataset.intlTelInputInitialized="true";var e=window.intlTelInput(t,{containerClass:"w-100",dropdownParent:document.body,numberDisplayFormat:"INTERNATIONAL",strictMode:!0});t.disabled?e.setDisabled(!0):t.readOnly&&e.setReadonly(!0),t.form&&t.form.addEventListener("submit",function(){if(t.value){var n=e.getNumber();n&&(t.value=n)}})}}function e(){document.querySelectorAll('[data-intl-tel-input="true"]').forEach(t)}"loading"!==document.readyState?e():document.addEventListener("DOMContentLoaded",e,{once:!0})}(); +!function(){function e(e){var t=e.querySelector('input[data-intl-tel-input="true"]');if(window.intlTelInput&&t&&"true"!==t.dataset.intlTelInputInitialized){t.dataset.intlTelInputInitialized="true";var n=e.querySelector("[data-phone-e164]"),a=e.querySelector("[data-phone-country]"),o=e.querySelector("[data-phone-national]"),i={containerClass:"w-100",dropdownParent:document.body,numberDisplayFormat:"INTERNATIONAL",strictMode:!0},l=t.dataset.initialCountry;l&&(i.initialCountry=l);var r=window.intlTelInput(t,i);t.disabled?r.setDisabled(!0):t.readOnly&&r.setReadonly(!0),t.form&&t.form.addEventListener("submit",function(){if(!t.value)return n&&(n.value=""),a&&(a.value=""),void(o&&(o.value=""));var e=r.getNumber(),i=r.getSelectedCountryData();n&&(n.value=e||""),a&&(a.value=(i.iso2||"").toUpperCase()),o&&(o.value=t.value||"")})}}function t(){document.querySelectorAll("[data-phone-field]").forEach(e)}"loading"!==document.readyState?t():document.addEventListener("DOMContentLoaded",t,{once:!0})}(); diff --git a/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Handlers/OmnichannelContactPartContentImportHandler.cs b/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Handlers/OmnichannelContactPartContentImportHandler.cs index 216713b94..8973a5258 100644 --- a/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Handlers/OmnichannelContactPartContentImportHandler.cs +++ b/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Handlers/OmnichannelContactPartContentImportHandler.cs @@ -1,4 +1,5 @@ using System.Data; +using CrestApps.OrchardCore.ContentFields.Fields; using CrestApps.OrchardCore.ContentTransfer; using CrestApps.OrchardCore.ContentTransfer.Handlers; using CrestApps.OrchardCore.Omnichannel.Core; @@ -291,18 +292,18 @@ bagPart.ContentItems is not null && contentMethod.ContentType == OmnichannelConstants.ContentTypes.PhoneNumber && contentMethod.TryGet(out var cellPart) && cellPart.Type?.Text == "Cell" && - !string.IsNullOrEmpty(cellPart.Number?.Text)) + !string.IsNullOrEmpty(cellPart.Number?.PhoneNumber)) { - cellPhone = cellPart.Number.Text; + cellPhone = cellPart.Number.PhoneNumber; } if (homePhone == null && contentMethod.ContentType == OmnichannelConstants.ContentTypes.PhoneNumber && contentMethod.TryGet(out var homePart) && homePart.Type?.Text == "Home" && - !string.IsNullOrEmpty(homePart.Number?.Text)) + !string.IsNullOrEmpty(homePart.Number?.PhoneNumber)) { - homePhone = homePart.Number.Text; + homePhone = homePart.Number.PhoneNumber; } if (email != null && cellPhone != null && homePhone != null) @@ -492,7 +493,7 @@ private static ContentItem CreatePhoneNumberContentItem(string number, string ty contentItem.Alter(part => { - part.Number = new TextField { Text = number }; + part.Number = new PhoneField { PhoneNumber = number }; part.Type = new TextField { Text = type }; }); diff --git a/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Indexes/OmnichannelContactIndexProvider.cs b/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Indexes/OmnichannelContactIndexProvider.cs index f7856bfc2..54b210a54 100644 --- a/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Indexes/OmnichannelContactIndexProvider.cs +++ b/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Indexes/OmnichannelContactIndexProvider.cs @@ -50,18 +50,18 @@ bagPart.ContentItems is not null && if (contentMethod.ContentType == OmnichannelConstants.ContentTypes.PhoneNumber && contentMethod.TryGet(out var phonePart) && - !string.IsNullOrEmpty(phonePart.Number?.Text)) + !string.IsNullOrEmpty(phonePart.Number?.PhoneNumber)) { if (string.IsNullOrEmpty(index.PrimaryCellPhoneNumber) && phonePart.Type?.Text == "Cell") { - index.PrimaryCellPhoneNumber = phonePart.Number.Text.Substring(0, Math.Min(50, phonePart.Number.Text.Length)); - index.NormalizedPrimaryCellPhoneNumber = NormalizeToE164(phonePart.Number.Text); + index.PrimaryCellPhoneNumber = phonePart.Number.PhoneNumber.Substring(0, Math.Min(50, phonePart.Number.PhoneNumber.Length)); + index.NormalizedPrimaryCellPhoneNumber = NormalizeToE164(phonePart.Number.PhoneNumber); } if (string.IsNullOrEmpty(index.PrimaryHomePhoneNumber) && phonePart.Type?.Text == "Home") { - index.PrimaryHomePhoneNumber = phonePart.Number.Text.Substring(0, Math.Min(50, phonePart.Number.Text.Length)); - index.NormalizedPrimaryHomePhoneNumber = NormalizeToE164(phonePart.Number.Text); + index.PrimaryHomePhoneNumber = phonePart.Number.PhoneNumber.Substring(0, Math.Min(50, phonePart.Number.PhoneNumber.Length)); + index.NormalizedPrimaryHomePhoneNumber = NormalizeToE164(phonePart.Number.PhoneNumber); } } } diff --git a/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Migrations/ContactMethodMigrations.cs b/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Migrations/ContactMethodMigrations.cs index 4d3d1f290..50929e0cc 100644 --- a/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Migrations/ContactMethodMigrations.cs +++ b/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Migrations/ContactMethodMigrations.cs @@ -1,3 +1,4 @@ +using CrestApps.OrchardCore.ContentFields.Settings; using CrestApps.OrchardCore.Omnichannel.Core; using OrchardCore.ContentFields.Settings; using OrchardCore.ContentManagement.Metadata; @@ -52,10 +53,9 @@ await _contentDefinitionManager.AlterPartDefinitionAsync(OmnichannelConstants.Co .WithDescription("Provides a way to capture required phone number info") .WithField("Number", field => field .WithPosition("1") - .OfType("TextField") + .OfType("PhoneField") .WithDisplayName("Number") - .WithEditor("InternationalTelephone") - .WithSettings(new TextFieldSettings() + .WithSettings(new PhoneFieldSettings() { Required = true, }) @@ -138,31 +138,42 @@ await _contentDefinitionManager.AlterTypeDefinitionAsync(OmnichannelConstants.Co .WithSettings(new TitlePartSettings() { Options = TitlePartOptions.GeneratedHidden, - Pattern = "{{ Model.ContentItem.Content." + OmnichannelConstants.ContentParts.PhoneNumberInfo + ".Type.Text | append: ': ' | append: Model.ContentItem.Content." + OmnichannelConstants.ContentParts.PhoneNumberInfo + ".Number.Text }}", + Pattern = "{{ Model.ContentItem.Content." + OmnichannelConstants.ContentParts.PhoneNumberInfo + ".Type.Text | append: ': ' | append: Model.ContentItem.Content." + OmnichannelConstants.ContentParts.PhoneNumberInfo + ".Number.PhoneNumber }}", }) ) .WithPart(OmnichannelConstants.ContentParts.PhoneNumberInfo, part => part.WithPosition("5")) ); - return 1; + return 2; } /// - /// Updates existing phone number fields to use the international telephone editor. + /// Migrates the Number field from TextField with InternationalTelephone editor to PhoneField. /// public async Task UpdateFrom1Async() { + await _contentDefinitionManager.AlterPartDefinitionAsync(OmnichannelConstants.ContentParts.PhoneNumberInfo, part => part + .RemoveField("Number")); + await _contentDefinitionManager.AlterPartDefinitionAsync(OmnichannelConstants.ContentParts.PhoneNumberInfo, part => part .WithField("Number", field => field - .OfType("TextField") + .OfType("PhoneField") .WithDisplayName("Number") .WithPosition("1") - .WithEditor("InternationalTelephone") - .WithSettings(new TextFieldSettings + .WithSettings(new PhoneFieldSettings { Required = true, }))); + await _contentDefinitionManager.AlterTypeDefinitionAsync(OmnichannelConstants.ContentTypes.PhoneNumber, type => type + .WithPart(part => part + .WithPosition("1") + .WithSettings(new TitlePartSettings() + { + Options = TitlePartOptions.GeneratedHidden, + Pattern = "{{ Model.ContentItem.Content." + OmnichannelConstants.ContentParts.PhoneNumberInfo + ".Type.Text | append: ': ' | append: Model.ContentItem.Content." + OmnichannelConstants.ContentParts.PhoneNumberInfo + ".Number.PhoneNumber }}", + }))); + return 2; } } diff --git a/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Services/OmnichannelHelper.cs b/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Services/OmnichannelHelper.cs index 1f8ec423a..db7fbfa1d 100644 --- a/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Services/OmnichannelHelper.cs +++ b/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Services/OmnichannelHelper.cs @@ -53,7 +53,7 @@ bagPart.ContentItems is null || { if (!contentMethod.TryGet(out var phonePart) || phonePart.Type is null || - string.IsNullOrEmpty(phonePart.Number?.Text)) + string.IsNullOrEmpty(phonePart.Number?.PhoneNumber)) { continue; } @@ -61,19 +61,19 @@ phonePart.Type is null || switch (phonePart.Type.Text) { case "Cell": - phoneNumbers.Enqueue(phonePart.Number.Text, 1); + phoneNumbers.Enqueue(phonePart.Number.PhoneNumber, 1); break; case "Home": - phoneNumbers.Enqueue(phonePart.Number.Text, 2); + phoneNumbers.Enqueue(phonePart.Number.PhoneNumber, 2); break; case "Office": - phoneNumbers.Enqueue(phonePart.Number.Text, 3); + phoneNumbers.Enqueue(phonePart.Number.PhoneNumber, 3); break; case "Work": - phoneNumbers.Enqueue(phonePart.Number.Text, 4); + phoneNumbers.Enqueue(phonePart.Number.PhoneNumber, 4); break; case "Other": - phoneNumbers.Enqueue(phonePart.Number.Text, 5); + phoneNumbers.Enqueue(phonePart.Number.PhoneNumber, 5); break; default: continue; @@ -89,12 +89,12 @@ phonePart.Type is null || if (!contentMethod.TryGet(out var phonePart) || phonePart.Type is null || phonePart.Type.Text != "Cell" || - string.IsNullOrEmpty(phonePart.Number?.Text)) + string.IsNullOrEmpty(phonePart.Number?.PhoneNumber)) { continue; } - return phonePart.Number.Text; + return phonePart.Number.PhoneNumber; } } diff --git a/tests/CrestApps.OrchardCore.Tests/Modules/Omnichannel/Managements/Handlers/OmnichannelContactPartContentImportHandlerTests.cs b/tests/CrestApps.OrchardCore.Tests/Modules/Omnichannel/Managements/Handlers/OmnichannelContactPartContentImportHandlerTests.cs index 60609d33a..bc26436af 100644 --- a/tests/CrestApps.OrchardCore.Tests/Modules/Omnichannel/Managements/Handlers/OmnichannelContactPartContentImportHandlerTests.cs +++ b/tests/CrestApps.OrchardCore.Tests/Modules/Omnichannel/Managements/Handlers/OmnichannelContactPartContentImportHandlerTests.cs @@ -1,6 +1,7 @@ using System.Data; using System.Globalization; using System.Linq; +using CrestApps.OrchardCore.ContentFields.Fields; using CrestApps.OrchardCore.ContentTransfer; using CrestApps.OrchardCore.Omnichannel.Core.Models; using CrestApps.OrchardCore.Omnichannel.Managements.Handlers; @@ -90,7 +91,7 @@ public async Task ImportAsync_ShouldNormalizePhoneNumbersUsingSelectedCountry() return phoneNumberPart; }) - .ToDictionary(part => part.Type.Text, part => part.Number.Text, StringComparer.Ordinal); + .ToDictionary(part => part.Type.Text, part => part.Number.PhoneNumber, StringComparer.Ordinal); Assert.Equal("+12502000003", phoneNumbers["Cell"]); Assert.Equal("+17024993350", phoneNumbers["Home"]); @@ -276,7 +277,7 @@ private static ContentItem CreatePhoneNumberContentItem(string number, string ty contentItem.Alter(part => { - part.Number = new TextField { Text = number }; + part.Number = new PhoneField { PhoneNumber = number }; part.Type = new TextField { Text = type }; }); From 7eea30f26c1eb196a64b89a39fcb31d1662dd2c0 Mon Sep 17 00:00:00 2001 From: Mike Alhayek Date: Sat, 6 Jun 2026 09:23:55 -0700 Subject: [PATCH 08/20] Add InitialCountryMode to PhoneField settings Replace the plain DefaultCountryCode text input with a three-option InitialCountryMode setting (Globe, Current culture, Specific) that controls which country flag is pre-selected when the phone field is empty. Specific mode shows a dropdown of all supported countries populated from IPhoneNumberService.GetSupportedRegions(). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../docs/modules/content-fields.md | 14 ++- .../Drivers/PhoneFieldDisplayDriver.cs | 36 +++++++- .../Drivers/PhoneFieldSettingsDriver.cs | 90 +++++++++++++++++-- .../Settings/InitialCountryMode.cs | 23 +++++ .../Settings/PhoneFieldSettings.cs | 14 ++- .../ViewModels/PhoneFieldSettingsViewModel.cs | 41 +++++++++ .../Views/PhoneField.Edit.cshtml | 2 +- .../Views/PhoneFieldSettings.Edit.cshtml | 28 +++++- 8 files changed, 229 insertions(+), 19 deletions(-) create mode 100644 src/Modules/CrestApps.OrchardCore.ContentFields/Settings/InitialCountryMode.cs create mode 100644 src/Modules/CrestApps.OrchardCore.ContentFields/ViewModels/PhoneFieldSettingsViewModel.cs diff --git a/src/CrestApps.Docs/docs/modules/content-fields.md b/src/CrestApps.Docs/docs/modules/content-fields.md index d2517513d..b481c4da8 100644 --- a/src/CrestApps.Docs/docs/modules/content-fields.md +++ b/src/CrestApps.Docs/docs/modules/content-fields.md @@ -38,7 +38,16 @@ The field uses the [intl-tel-input](https://intl-tel-input.com/) library (provid | --- | --- | --- | --- | | `Hint` | `string` | `null` | Help text displayed below the field. | | `Required` | `bool` | `false` | Whether the field is required. | -| `DefaultCountryCode` | `string` | `null` | ISO country code used to pre-select the flag when the field is empty (e.g. `US`). | +| `InitialCountryMode` | `InitialCountryMode` | `Globe` | Controls which country flag is pre-selected when the field is empty. See [Initial country modes](#initial-country-modes). | +| `SpecificCountryCode` | `string` | `null` | ISO country code used when `InitialCountryMode` is `Specific` (e.g. `US`). | + +#### Initial country modes + +| Mode | Behavior | +| --- | --- | +| **Globe** | Shows the globe icon without pre-selecting any country. This is the default. | +| **Current culture** | Resolves the country from the current request culture's region (e.g. `en-US` resolves to `US`). | +| **Specific** | Always pre-selects the country configured in the **Country** dropdown. | #### Adding PhoneField via migration @@ -51,7 +60,8 @@ await _contentDefinitionManager.AlterPartDefinitionAsync("MyPart", part => part .WithSettings(new PhoneFieldSettings { Required = true, - DefaultCountryCode = "US", + InitialCountryMode = InitialCountryMode.Specific, + SpecificCountryCode = "US", Hint = "Enter a phone number with country code.", }) ) diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/Drivers/PhoneFieldDisplayDriver.cs b/src/Modules/CrestApps.OrchardCore.ContentFields/Drivers/PhoneFieldDisplayDriver.cs index e1ef91613..9c4579c6d 100644 --- a/src/Modules/CrestApps.OrchardCore.ContentFields/Drivers/PhoneFieldDisplayDriver.cs +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/Drivers/PhoneFieldDisplayDriver.cs @@ -1,3 +1,4 @@ +using System.Globalization; using CrestApps.OrchardCore.ContentFields.Fields; using CrestApps.OrchardCore.ContentFields.Settings; using CrestApps.OrchardCore.ContentFields.ViewModels; @@ -69,9 +70,9 @@ public override IDisplayResult Edit(PhoneField field, BuildFieldEditorContext co model.Part = context.ContentPart; model.PartFieldDefinition = context.PartFieldDefinition; - if (string.IsNullOrEmpty(model.CountryCode) && !string.IsNullOrEmpty(settings.DefaultCountryCode)) + if (string.IsNullOrEmpty(model.CountryCode)) { - model.CountryCode = settings.DefaultCountryCode; + model.CountryCode = ResolveInitialCountryCode(settings); } }); } @@ -120,4 +121,35 @@ public override async Task UpdateAsync(PhoneField field, UpdateF return Edit(field, context); } + + private static string ResolveInitialCountryCode(PhoneFieldSettings settings) + { + return settings.InitialCountryMode switch + { + InitialCountryMode.CurrentCulture => GetCountryCodeFromCulture(), + InitialCountryMode.Specific => settings.SpecificCountryCode, + _ => null, + }; + } + + private static string GetCountryCodeFromCulture() + { + var culture = CultureInfo.CurrentCulture; + + if (culture.IsNeutralCulture || culture == CultureInfo.InvariantCulture) + { + return null; + } + + try + { + var regionInfo = new RegionInfo(culture.Name); + + return regionInfo.TwoLetterISORegionName; + } + catch + { + return null; + } + } } diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/Drivers/PhoneFieldSettingsDriver.cs b/src/Modules/CrestApps.OrchardCore.ContentFields/Drivers/PhoneFieldSettingsDriver.cs index c2c88b26b..ec3eb1a9b 100644 --- a/src/Modules/CrestApps.OrchardCore.ContentFields/Drivers/PhoneFieldSettingsDriver.cs +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/Drivers/PhoneFieldSettingsDriver.cs @@ -1,5 +1,10 @@ +using System.Globalization; using CrestApps.OrchardCore.ContentFields.Fields; using CrestApps.OrchardCore.ContentFields.Settings; +using CrestApps.OrchardCore.ContentFields.ViewModels; +using CrestApps.OrchardCore.PhoneNumbers; +using Microsoft.AspNetCore.Mvc.Rendering; +using Microsoft.Extensions.Localization; using OrchardCore.ContentManagement.Metadata.Models; using OrchardCore.ContentTypes.Editors; using OrchardCore.DisplayManagement.Handlers; @@ -12,6 +17,23 @@ namespace CrestApps.OrchardCore.ContentFields.Drivers; ///
      public sealed class PhoneFieldSettingsDriver : ContentPartFieldDefinitionDisplayDriver { + private readonly IPhoneNumberService _phoneNumberService; + + internal readonly IStringLocalizer S; + + /// + /// Initializes a new instance of the class. + /// + /// The phone number service. + /// The string localizer. + public PhoneFieldSettingsDriver( + IPhoneNumberService phoneNumberService, + IStringLocalizer stringLocalizer) + { + _phoneNumberService = phoneNumberService; + S = stringLocalizer; + } + /// /// Builds the edit shape for phone field settings. /// @@ -20,13 +42,16 @@ public sealed class PhoneFieldSettingsDriver : ContentPartFieldDefinitionDisplay /// The display result. public override IDisplayResult Edit(ContentPartFieldDefinition model, BuildEditorContext context) { - return Initialize("PhoneFieldSettings_Edit", settings => + return Initialize("PhoneFieldSettings_Edit", viewModel => { - var fieldSettings = model.GetSettings(); + var settings = model.GetSettings(); - settings.Hint = fieldSettings.Hint; - settings.Required = fieldSettings.Required; - settings.DefaultCountryCode = fieldSettings.DefaultCountryCode; + viewModel.Hint = settings.Hint; + viewModel.Required = settings.Required; + viewModel.InitialCountryMode = settings.InitialCountryMode; + viewModel.SpecificCountryCode = settings.SpecificCountryCode; + viewModel.InitialCountryModeOptions = GetInitialCountryModeOptions(settings.InitialCountryMode); + viewModel.CountryOptions = GetCountryOptions(settings.SpecificCountryCode); }).Location("Content"); } @@ -38,12 +63,63 @@ public override IDisplayResult Edit(ContentPartFieldDefinition model, BuildEdito /// The display result. public override async Task UpdateAsync(ContentPartFieldDefinition model, UpdatePartFieldEditorContext context) { - var settings = new PhoneFieldSettings(); + var viewModel = new PhoneFieldSettingsViewModel(); + + await context.Updater.TryUpdateModelAsync(viewModel, Prefix); - await context.Updater.TryUpdateModelAsync(settings, Prefix); + var settings = new PhoneFieldSettings + { + Hint = viewModel.Hint, + Required = viewModel.Required, + InitialCountryMode = viewModel.InitialCountryMode, + SpecificCountryCode = viewModel.InitialCountryMode == InitialCountryMode.Specific + ? viewModel.SpecificCountryCode?.ToUpperInvariant() + : null, + }; context.Builder.WithSettings(settings); return Edit(model, context); } + + private List GetInitialCountryModeOptions(InitialCountryMode selected) + { + return + [ + new SelectListItem(S["Globe"], nameof(InitialCountryMode.Globe), selected == InitialCountryMode.Globe), + new SelectListItem(S["Current culture"], nameof(InitialCountryMode.CurrentCulture), selected == InitialCountryMode.CurrentCulture), + new SelectListItem(S["Specific"], nameof(InitialCountryMode.Specific), selected == InitialCountryMode.Specific), + ]; + } + + private List GetCountryOptions(string selectedCode) + { + var regions = _phoneNumberService.GetSupportedRegions(); + var items = new List(regions.Count + 1) + { + new(S["Select a country"], string.Empty), + }; + + foreach (var regionCode in regions.OrderBy(r => r, StringComparer.OrdinalIgnoreCase)) + { + string displayName; + + try + { + var regionInfo = new RegionInfo(regionCode); + displayName = $"{regionInfo.EnglishName} ({regionCode})"; + } + catch + { + displayName = regionCode; + } + + items.Add(new SelectListItem( + displayName, + regionCode, + string.Equals(regionCode, selectedCode, StringComparison.OrdinalIgnoreCase))); + } + + return items; + } } diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/Settings/InitialCountryMode.cs b/src/Modules/CrestApps.OrchardCore.ContentFields/Settings/InitialCountryMode.cs new file mode 100644 index 000000000..cdda9499e --- /dev/null +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/Settings/InitialCountryMode.cs @@ -0,0 +1,23 @@ +namespace CrestApps.OrchardCore.ContentFields.Settings; + +/// +/// Determines how the initial country flag is selected when the phone field is empty. +/// +public enum InitialCountryMode +{ + /// + /// Shows the globe icon without pre-selecting any country. + /// This is the default behavior. + /// + Globe, + + /// + /// Resolves the country from the current culture's region information. + /// + CurrentCulture, + + /// + /// Uses a specific country code configured in the field settings. + /// + Specific, +} diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/Settings/PhoneFieldSettings.cs b/src/Modules/CrestApps.OrchardCore.ContentFields/Settings/PhoneFieldSettings.cs index 59222c4f4..1081e8d60 100644 --- a/src/Modules/CrestApps.OrchardCore.ContentFields/Settings/PhoneFieldSettings.cs +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/Settings/PhoneFieldSettings.cs @@ -16,8 +16,16 @@ public sealed class PhoneFieldSettings public bool Required { get; set; } /// - /// Gets or sets the default ISO 3166-1 alpha-2 country code used - /// when no country has been selected yet (e.g., "US"). + /// Gets or sets how the initial country flag is selected when no + /// country has been stored for the field value. + /// Defaults to . /// - public string DefaultCountryCode { get; set; } + public InitialCountryMode InitialCountryMode { get; set; } + + /// + /// Gets or sets the ISO 3166-1 alpha-2 country code used when + /// is + /// (e.g., "US"). + /// + public string SpecificCountryCode { get; set; } } diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/ViewModels/PhoneFieldSettingsViewModel.cs b/src/Modules/CrestApps.OrchardCore.ContentFields/ViewModels/PhoneFieldSettingsViewModel.cs new file mode 100644 index 000000000..72488020f --- /dev/null +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/ViewModels/PhoneFieldSettingsViewModel.cs @@ -0,0 +1,41 @@ +using CrestApps.OrchardCore.ContentFields.Settings; +using Microsoft.AspNetCore.Mvc.Rendering; + +namespace CrestApps.OrchardCore.ContentFields.ViewModels; + +/// +/// View model used when editing . +/// +public class PhoneFieldSettingsViewModel +{ + /// + /// Gets or sets the hint text displayed below the field. + /// + public string Hint { get; set; } + + /// + /// Gets or sets a value indicating whether the field is required. + /// + public bool Required { get; set; } + + /// + /// Gets or sets the initial country mode. + /// + public InitialCountryMode InitialCountryMode { get; set; } + + /// + /// Gets or sets the specific country code when + /// is . + /// + public string SpecificCountryCode { get; set; } + + /// + /// Gets or sets the available initial country mode choices. + /// + public List InitialCountryModeOptions { get; set; } + + /// + /// Gets or sets the available country choices for the specific mode. + /// + public List CountryOptions { get; set; } +} diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/Views/PhoneField.Edit.cshtml b/src/Modules/CrestApps.OrchardCore.ContentFields/Views/PhoneField.Edit.cshtml index 9bb1b53bc..4cffbcca7 100644 --- a/src/Modules/CrestApps.OrchardCore.ContentFields/Views/PhoneField.Edit.cshtml +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/Views/PhoneField.Edit.cshtml @@ -4,7 +4,7 @@ @using OrchardCore.Mvc.Utilities @{ var settings = Model.PartFieldDefinition.GetSettings(); - var initialCountry = Model.CountryCode?.ToLowerInvariant() ?? settings.DefaultCountryCode?.ToLowerInvariant() ?? string.Empty; + var initialCountry = Model.CountryCode?.ToLowerInvariant() ?? string.Empty; }
      @@ -14,7 +14,27 @@
      - - - @T["The ISO 3166-1 alpha-2 country code used when no country has been selected (e.g., US)."] + + + @T["Determines which country flag is pre-selected when the phone field is empty."]
      + + + + From ad08d6aac43c49dc306b2374d9959051c5234e85 Mon Sep 17 00:00:00 2001 From: Mike Alhayek Date: Sat, 6 Jun 2026 10:13:57 -0700 Subject: [PATCH 09/20] Add deferred data migration for PhoneNumberInfoPart.Number Schedule a background deferred task in UpdateFrom1Async that migrates existing PhoneNumber content items from the old TextField format (Number.Text) to the new PhoneField format (Number.PhoneNumber, Number.CountryCode, Number.NationalNumber). Assumes US region for existing records, validates via IPhoneNumberService, and skips invalid numbers. Processes in batches of 100 with a separate session per batch. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../Migrations/ContactMethodMigrations.cs | 146 +++++++++++++++++- 1 file changed, 145 insertions(+), 1 deletion(-) diff --git a/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Migrations/ContactMethodMigrations.cs b/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Migrations/ContactMethodMigrations.cs index 50929e0cc..e4e0ee6c6 100644 --- a/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Migrations/ContactMethodMigrations.cs +++ b/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Migrations/ContactMethodMigrations.cs @@ -1,10 +1,18 @@ +using System.Text.Json.Nodes; using CrestApps.OrchardCore.ContentFields.Settings; using CrestApps.OrchardCore.Omnichannel.Core; +using CrestApps.OrchardCore.PhoneNumbers; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; using OrchardCore.ContentFields.Settings; +using OrchardCore.ContentManagement; using OrchardCore.ContentManagement.Metadata; using OrchardCore.ContentManagement.Metadata.Settings; +using OrchardCore.ContentManagement.Records; using OrchardCore.Data.Migration; +using OrchardCore.Environment.Shell.Scope; using OrchardCore.Title.Models; +using YesSql; namespace CrestApps.OrchardCore.Omnichannel.Managements.Migrations; @@ -13,6 +21,9 @@ namespace CrestApps.OrchardCore.Omnichannel.Managements.Migrations; ///
      public sealed class ContactMethodMigrations : DataMigration { + private const int _batchSize = 100; + private const string _defaultRegionCode = "US"; + private readonly IContentDefinitionManager _contentDefinitionManager; /// @@ -148,7 +159,8 @@ await _contentDefinitionManager.AlterTypeDefinitionAsync(OmnichannelConstants.Co } /// - /// Migrates the Number field from TextField with InternationalTelephone editor to PhoneField. + /// Migrates the Number field from TextField to PhoneField and schedules background + /// data migration for existing phone number records. /// public async Task UpdateFrom1Async() { @@ -174,6 +186,138 @@ await _contentDefinitionManager.AlterTypeDefinitionAsync(OmnichannelConstants.Co Pattern = "{{ Model.ContentItem.Content." + OmnichannelConstants.ContentParts.PhoneNumberInfo + ".Type.Text | append: ': ' | append: Model.ContentItem.Content." + OmnichannelConstants.ContentParts.PhoneNumberInfo + ".Number.PhoneNumber }}", }))); + ShellScope.AddDeferredTask(MigratePhoneNumberDataAsync); + return 2; } + + private static async Task MigratePhoneNumberDataAsync(ShellScope scope) + { + var store = scope.ServiceProvider.GetRequiredService(); + var phoneNumberService = scope.ServiceProvider.GetRequiredService(); + var logger = scope.ServiceProvider.GetRequiredService>(); + + List allItems; + + await using (var querySession = store.CreateSession()) + { + allItems = (await querySession.Query(index => + index.ContentType == OmnichannelConstants.ContentTypes.PhoneNumber) + .ListAsync()) + .ToList(); + } + + if (allItems.Count == 0) + { + return; + } + + var migratedCount = 0; + var skippedCount = 0; + + for (var batchStart = 0; batchStart < allItems.Count; batchStart += _batchSize) + { + var batch = allItems.Skip(batchStart).Take(_batchSize).ToList(); + + await using var session = store.CreateSession(); + + foreach (var contentItem in batch) + { + try + { + if (!TryMigratePhoneNumberContent(contentItem, phoneNumberService)) + { + skippedCount++; + + continue; + } + + await session.SaveAsync(contentItem); + migratedCount++; + } + catch (Exception ex) + { + logger.LogWarning( + ex, + "Failed to migrate phone number for content item '{ContentItemId}' (version '{ContentItemVersionId}').", + contentItem.ContentItemId, + contentItem.ContentItemVersionId); + skippedCount++; + } + } + + await session.SaveChangesAsync(); + } + + if (logger.IsEnabled(LogLevel.Information)) + { + logger.LogInformation( + "Phone number data migration completed. Migrated: {MigratedCount}, Skipped: {SkippedCount}.", + migratedCount, + skippedCount); + } + } + + private static bool TryMigratePhoneNumberContent(ContentItem contentItem, IPhoneNumberService phoneNumberService) + { + var partNode = contentItem.Content[OmnichannelConstants.ContentParts.PhoneNumberInfo] as JsonObject; + + if (partNode is null) + { + return false; + } + + var numberNode = partNode["Number"] as JsonObject; + + if (numberNode is null) + { + return false; + } + + // Already migrated if PhoneNumber property exists. + if (numberNode["PhoneNumber"] is not null) + { + return false; + } + + var textValue = numberNode["Text"]?.GetValue(); + + if (string.IsNullOrWhiteSpace(textValue)) + { + return false; + } + + if (!phoneNumberService.IsValidNumber(textValue, _defaultRegionCode)) + { + return false; + } + + if (!phoneNumberService.TryFormatToE164(textValue, _defaultRegionCode, out var e164Number)) + { + return false; + } + + var regionCode = phoneNumberService.GetRegionCode(e164Number) ?? _defaultRegionCode; + var countryCode = phoneNumberService.GetCountryCode(regionCode); + var nationalNumber = e164Number; + + // Strip the leading '+' and country calling code to get the national number. + if (countryCode > 0) + { + var prefix = $"+{countryCode}"; + + if (nationalNumber.StartsWith(prefix, StringComparison.Ordinal)) + { + nationalNumber = nationalNumber.Substring(prefix.Length); + } + } + + // Replace the old TextField structure with PhoneField properties. + numberNode.Remove("Text"); + numberNode["PhoneNumber"] = e164Number; + numberNode["CountryCode"] = regionCode; + numberNode["NationalNumber"] = nationalNumber; + + return true; + } } From b9dcf6704afd84086acf2e27e99145f30b9b50ad Mon Sep 17 00:00:00 2001 From: Mike Alhayek Date: Sat, 6 Jun 2026 10:25:20 -0700 Subject: [PATCH 10/20] Fix phone number data migration to use memory-efficient batching Rewrite MigratePhoneNumberDataAsync to: - First query IContentDefinitionManager for all content types that have PhoneNumberInfoPart attached instead of hardcoding a single type - Use a while loop with Skip/Take pagination (100 per batch) - Create a fresh session per batch to avoid holding all items in memory - Break when a batch returns no more records Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../Migrations/ContactMethodMigrations.cs | 90 ++++++++++++------- 1 file changed, 59 insertions(+), 31 deletions(-) diff --git a/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Migrations/ContactMethodMigrations.cs b/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Migrations/ContactMethodMigrations.cs index e4e0ee6c6..f0bbcb453 100644 --- a/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Migrations/ContactMethodMigrations.cs +++ b/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Migrations/ContactMethodMigrations.cs @@ -13,6 +13,7 @@ using OrchardCore.Environment.Shell.Scope; using OrchardCore.Title.Models; using YesSql; +using YesSql.Services; namespace CrestApps.OrchardCore.Omnichannel.Managements.Migrations; @@ -195,58 +196,74 @@ private static async Task MigratePhoneNumberDataAsync(ShellScope scope) { var store = scope.ServiceProvider.GetRequiredService(); var phoneNumberService = scope.ServiceProvider.GetRequiredService(); + var contentDefinitionManager = scope.ServiceProvider.GetRequiredService(); var logger = scope.ServiceProvider.GetRequiredService>(); - List allItems; + var contentTypes = await GetContentTypesWithPhoneNumberInfoPartAsync(contentDefinitionManager); - await using (var querySession = store.CreateSession()) - { - allItems = (await querySession.Query(index => - index.ContentType == OmnichannelConstants.ContentTypes.PhoneNumber) - .ListAsync()) - .ToList(); - } - - if (allItems.Count == 0) + if (contentTypes.Length == 0) { return; } var migratedCount = 0; var skippedCount = 0; + var page = 0; - for (var batchStart = 0; batchStart < allItems.Count; batchStart += _batchSize) + while (true) { - var batch = allItems.Skip(batchStart).Take(_batchSize).ToList(); + List batch; - await using var session = store.CreateSession(); + await using (var session = store.CreateSession()) + { + batch = (await session.Query(index => + index.ContentType.IsIn(contentTypes)) + .OrderBy(index => index.DocumentId) + .Skip(page * _batchSize) + .Take(_batchSize) + .ListAsync()) + .ToList(); + } - foreach (var contentItem in batch) + if (batch.Count == 0) { - try + break; + } + + var batchMigrated = 0; + + await using (var session = store.CreateSession()) + { + foreach (var contentItem in batch) { - if (!TryMigratePhoneNumberContent(contentItem, phoneNumberService)) + try { - skippedCount++; + if (!TryMigratePhoneNumberContent(contentItem, phoneNumberService)) + { + skippedCount++; - continue; - } + continue; + } - await session.SaveAsync(contentItem); - migratedCount++; - } - catch (Exception ex) - { - logger.LogWarning( - ex, - "Failed to migrate phone number for content item '{ContentItemId}' (version '{ContentItemVersionId}').", - contentItem.ContentItemId, - contentItem.ContentItemVersionId); - skippedCount++; + await session.SaveAsync(contentItem); + batchMigrated++; + } + catch (Exception ex) + { + logger.LogWarning( + ex, + "Failed to migrate phone number for content item '{ContentItemId}' (version '{ContentItemVersionId}').", + contentItem.ContentItemId, + contentItem.ContentItemVersionId); + skippedCount++; + } } + + await session.SaveChangesAsync(); } - await session.SaveChangesAsync(); + migratedCount += batchMigrated; + page++; } if (logger.IsEnabled(LogLevel.Information)) @@ -258,6 +275,17 @@ private static async Task MigratePhoneNumberDataAsync(ShellScope scope) } } + private static async Task GetContentTypesWithPhoneNumberInfoPartAsync(IContentDefinitionManager contentDefinitionManager) + { + var typeDefinitions = await contentDefinitionManager.ListTypeDefinitionsAsync(); + + return typeDefinitions + .Where(type => type.Parts.Any(part => + string.Equals(part.PartDefinition.Name, OmnichannelConstants.ContentParts.PhoneNumberInfo, StringComparison.Ordinal))) + .Select(type => type.Name) + .ToArray(); + } + private static bool TryMigratePhoneNumberContent(ContentItem contentItem, IPhoneNumberService phoneNumberService) { var partNode = contentItem.Content[OmnichannelConstants.ContentParts.PhoneNumberInfo] as JsonObject; From f1a7a2e53a941163c6fd0d0badcfdb61b5eac2b1 Mon Sep 17 00:00:00 2001 From: Mike Alhayek Date: Sat, 6 Jun 2026 10:31:45 -0700 Subject: [PATCH 11/20] improve migration --- .../Migrations/ContactMethodMigrations.cs | 63 +++++++++---------- 1 file changed, 29 insertions(+), 34 deletions(-) diff --git a/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Migrations/ContactMethodMigrations.cs b/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Migrations/ContactMethodMigrations.cs index f0bbcb453..b70792f73 100644 --- a/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Migrations/ContactMethodMigrations.cs +++ b/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Migrations/ContactMethodMigrations.cs @@ -209,59 +209,54 @@ private static async Task MigratePhoneNumberDataAsync(ShellScope scope) var migratedCount = 0; var skippedCount = 0; var page = 0; + var documentId = 0L; while (true) { - List batch; + await using var session = store.CreateSession(); - await using (var session = store.CreateSession()) - { - batch = (await session.Query(index => - index.ContentType.IsIn(contentTypes)) - .OrderBy(index => index.DocumentId) - .Skip(page * _batchSize) - .Take(_batchSize) - .ListAsync()) - .ToList(); - } + var batch = await session.Query(index => + index.ContentType.IsIn(contentTypes) && index.DocumentId > documentId) + .OrderBy(index => index.DocumentId) + .Take(_batchSize) + .ListAsync(); - if (batch.Count == 0) + if (!batch.Any()) { break; } var batchMigrated = 0; - await using (var session = store.CreateSession()) + foreach (var contentItem in batch) { - foreach (var contentItem in batch) - { - try - { - if (!TryMigratePhoneNumberContent(contentItem, phoneNumberService)) - { - skippedCount++; + documentId = Math.Max(documentId, contentItem.Id); - continue; - } - - await session.SaveAsync(contentItem); - batchMigrated++; - } - catch (Exception ex) + try + { + if (!TryMigratePhoneNumberContent(contentItem, phoneNumberService)) { - logger.LogWarning( - ex, - "Failed to migrate phone number for content item '{ContentItemId}' (version '{ContentItemVersionId}').", - contentItem.ContentItemId, - contentItem.ContentItemVersionId); skippedCount++; + + continue; } - } - await session.SaveChangesAsync(); + await session.SaveAsync(contentItem); + batchMigrated++; + } + catch (Exception ex) + { + logger.LogWarning( + ex, + "Failed to migrate phone number for content item '{ContentItemId}' (version '{ContentItemVersionId}').", + contentItem.ContentItemId, + contentItem.ContentItemVersionId); + skippedCount++; + } } + await session.SaveChangesAsync(); + migratedCount += batchMigrated; page++; } From 40b3ab0de630326de20a92b327c7008f90ef738c Mon Sep 17 00:00:00 2001 From: Mike Alhayek Date: Sat, 6 Jun 2026 10:34:15 -0700 Subject: [PATCH 12/20] Remove unused page variable from data migration Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../Migrations/ContactMethodMigrations.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Migrations/ContactMethodMigrations.cs b/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Migrations/ContactMethodMigrations.cs index b70792f73..9d90d70d5 100644 --- a/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Migrations/ContactMethodMigrations.cs +++ b/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Migrations/ContactMethodMigrations.cs @@ -208,7 +208,6 @@ private static async Task MigratePhoneNumberDataAsync(ShellScope scope) var migratedCount = 0; var skippedCount = 0; - var page = 0; var documentId = 0L; while (true) @@ -258,7 +257,6 @@ private static async Task MigratePhoneNumberDataAsync(ShellScope scope) await session.SaveChangesAsync(); migratedCount += batchMigrated; - page++; } if (logger.IsEnabled(LogLevel.Information)) From 08d0a9fea6efb384dc7ffa2dd9403ac9f4b4c057 Mon Sep 17 00:00:00 2001 From: Mike Alhayek Date: Sat, 6 Jun 2026 11:22:57 -0700 Subject: [PATCH 13/20] Fix migration to traverse BagPart for nested PhoneNumber items PhoneNumber content items are embedded inside a BagPart named ContactMethods on parent content items that have OmnichannelContactPart. They are not separate YesSql documents, so the previous approach of querying ContentItemIndex for PhoneNumber type would find nothing. Now the migration: - Discovers content types with OmnichannelContactPart attached - Queries those parent documents via cursor-based pagination - Navigates into ContactMethods BagPart -> ContentItems array - Migrates each inner PhoneNumber item's Number field from TextField to PhoneField format Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../Migrations/ContactMethodMigrations.cs | 65 +++++++++++++++---- 1 file changed, 53 insertions(+), 12 deletions(-) diff --git a/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Migrations/ContactMethodMigrations.cs b/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Migrations/ContactMethodMigrations.cs index 9d90d70d5..04985a8b2 100644 --- a/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Migrations/ContactMethodMigrations.cs +++ b/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Migrations/ContactMethodMigrations.cs @@ -199,7 +199,7 @@ private static async Task MigratePhoneNumberDataAsync(ShellScope scope) var contentDefinitionManager = scope.ServiceProvider.GetRequiredService(); var logger = scope.ServiceProvider.GetRequiredService>(); - var contentTypes = await GetContentTypesWithPhoneNumberInfoPartAsync(contentDefinitionManager); + var contentTypes = await GetContentTypesWithOmnichannelContactPartAsync(contentDefinitionManager); if (contentTypes.Length == 0) { @@ -233,21 +233,21 @@ private static async Task MigratePhoneNumberDataAsync(ShellScope scope) try { - if (!TryMigratePhoneNumberContent(contentItem, phoneNumberService)) + if (TryMigrateContactPhoneNumbers(contentItem, phoneNumberService)) + { + await session.SaveAsync(contentItem); + batchMigrated++; + } + else { skippedCount++; - - continue; } - - await session.SaveAsync(contentItem); - batchMigrated++; } catch (Exception ex) { logger.LogWarning( ex, - "Failed to migrate phone number for content item '{ContentItemId}' (version '{ContentItemVersionId}').", + "Failed to migrate phone numbers for content item '{ContentItemId}' (version '{ContentItemVersionId}').", contentItem.ContentItemId, contentItem.ContentItemVersionId); skippedCount++; @@ -268,20 +268,61 @@ private static async Task MigratePhoneNumberDataAsync(ShellScope scope) } } - private static async Task GetContentTypesWithPhoneNumberInfoPartAsync(IContentDefinitionManager contentDefinitionManager) + private static async Task GetContentTypesWithOmnichannelContactPartAsync(IContentDefinitionManager contentDefinitionManager) { var typeDefinitions = await contentDefinitionManager.ListTypeDefinitionsAsync(); return typeDefinitions .Where(type => type.Parts.Any(part => - string.Equals(part.PartDefinition.Name, OmnichannelConstants.ContentParts.PhoneNumberInfo, StringComparison.Ordinal))) + string.Equals(part.PartDefinition.Name, OmnichannelConstants.ContentParts.OmnichannelContact, StringComparison.Ordinal))) .Select(type => type.Name) .ToArray(); } - private static bool TryMigratePhoneNumberContent(ContentItem contentItem, IPhoneNumberService phoneNumberService) + private static bool TryMigrateContactPhoneNumbers(ContentItem contentItem, IPhoneNumberService phoneNumberService) + { + var bagNode = contentItem.Content[OmnichannelConstants.NamedParts.ContactMethods] as JsonObject; + + if (bagNode is null) + { + return false; + } + + var contentItems = bagNode["ContentItems"] as JsonArray; + + if (contentItems is null || contentItems.Count == 0) + { + return false; + } + + var anyMigrated = false; + + foreach (var item in contentItems) + { + if (item is not JsonObject innerItem) + { + continue; + } + + var contentType = innerItem["ContentType"]?.GetValue(); + + if (!string.Equals(contentType, OmnichannelConstants.ContentTypes.PhoneNumber, StringComparison.Ordinal)) + { + continue; + } + + if (TryMigratePhoneNumberField(innerItem, phoneNumberService)) + { + anyMigrated = true; + } + } + + return anyMigrated; + } + + private static bool TryMigratePhoneNumberField(JsonObject innerContentItem, IPhoneNumberService phoneNumberService) { - var partNode = contentItem.Content[OmnichannelConstants.ContentParts.PhoneNumberInfo] as JsonObject; + var partNode = innerContentItem[OmnichannelConstants.ContentParts.PhoneNumberInfo] as JsonObject; if (partNode is null) { From bf88d5b9b187be67b9cead5d06ac195e7a5c2199 Mon Sep 17 00:00:00 2001 From: Mike Alhayek Date: Sat, 6 Jun 2026 11:32:21 -0700 Subject: [PATCH 14/20] cleanup --- .../Migrations/ContentTransferMigrations.cs | 136 ------------------ .../Startup.cs | 4 +- 2 files changed, 2 insertions(+), 138 deletions(-) diff --git a/src/Modules/CrestApps.OrchardCore.ContentTransfer/Migrations/ContentTransferMigrations.cs b/src/Modules/CrestApps.OrchardCore.ContentTransfer/Migrations/ContentTransferMigrations.cs index 583893cb3..ed7bfe9a3 100644 --- a/src/Modules/CrestApps.OrchardCore.ContentTransfer/Migrations/ContentTransferMigrations.cs +++ b/src/Modules/CrestApps.OrchardCore.ContentTransfer/Migrations/ContentTransferMigrations.cs @@ -1,7 +1,4 @@ -using System.Text.Json; -using System.Text.Json.Nodes; using CrestApps.OrchardCore.ContentTransfer.Indexes; -using Dapper; using OrchardCore.Data; using OrchardCore.Data.Migration; using YesSql; @@ -62,137 +59,4 @@ await SchemaBuilder.AlterIndexTableAsync(table => tab return 2; } - - public async Task UpdateFrom1Async() - { - await MigrateCanceledImportStatusesAsync(); - - return 2; - } - - private async Task MigrateCanceledImportStatusesAsync() - { - var dialect = _store.Configuration.SqlDialect; - var documentTableName = _store.Configuration.TableNameConvention.GetDocumentTable(string.Empty); - var documentTable = $"{_store.Configuration.TablePrefix}{documentTableName}"; - var quotedDocumentTableName = dialect.QuoteForTableName(documentTable, _store.Configuration.Schema); - var quotedIdColumnName = dialect.QuoteForColumnName(nameof(Document.Id)); - var quotedContentColumnName = dialect.QuoteForColumnName(nameof(Document.Content)); - - var indexTable = $"{_store.Configuration.TablePrefix}{nameof(ContentTransferEntryIndex)}"; - var quotedIndexTableName = dialect.QuoteForTableName(indexTable, _store.Configuration.Schema); - var quotedDirectionColumnName = dialect.QuoteForColumnName(nameof(ContentTransferEntryIndex.Direction)); - var quotedStatusColumnName = dialect.QuoteForColumnName(nameof(ContentTransferEntryIndex.Status)); - - await using var connection = _dbConnectionAccessor.CreateConnection(); - await connection.OpenAsync(); - - await connection.ExecuteAsync( - $""" - UPDATE {quotedIndexTableName} - SET {quotedStatusColumnName} = @Paused - WHERE {quotedDirectionColumnName} = @ImportDirection - AND {quotedStatusColumnName} IN @LegacyStatuses - """, - new - { - Paused = nameof(ContentTransferEntryStatus.Paused), - ImportDirection = ContentTransferDirection.Import, - LegacyStatuses = new[] - { - "Canceled", - "CanceledWithImportedRecords", - }, - }); - - var documents = (await connection.QueryAsync( - $""" - SELECT {quotedIdColumnName} AS Id, {quotedContentColumnName} AS Content - FROM {quotedDocumentTableName} - WHERE {quotedContentColumnName} LIKE '%"Status"%' - AND {quotedContentColumnName} LIKE '%"Direction"%' - AND {quotedContentColumnName} LIKE '%"StoredFileName"%' - """)).ToList(); - - foreach (var document in documents) - { - if (JsonNode.Parse(document.Content) is not JsonObject contentObject) - { - continue; - } - - if (!TryGetDirection(contentObject, out var direction) || direction != ContentTransferDirection.Import) - { - continue; - } - - if (!TryUpdateLegacyStatus(contentObject)) - { - continue; - } - - await connection.ExecuteAsync( - $"UPDATE {quotedDocumentTableName} SET {quotedContentColumnName} = @Content WHERE {quotedIdColumnName} = @Id", - new - { - document.Id, - Content = contentObject.ToJsonString(), - }); - } - } - - private static bool TryGetDirection(JsonObject contentObject, out ContentTransferDirection direction) - { - direction = default; - - if (contentObject[nameof(ContentTransferEntry.Direction)] is not JsonNode directionNode) - { - return false; - } - - if (directionNode is JsonValue jsonValue) - { - if (jsonValue.TryGetValue(out var numericDirection)) - { - direction = (ContentTransferDirection)numericDirection; - return true; - } - - if (jsonValue.TryGetValue(out var stringDirection) - && Enum.TryParse(stringDirection, true, out direction)) - { - return true; - } - } - - return false; - } - - private static bool TryUpdateLegacyStatus(JsonObject contentObject) - { - if (contentObject[nameof(ContentTransferEntry.Status)] is not JsonNode statusNode) - { - return false; - } - - if (statusNode is JsonValue statusValue) - { - if (statusValue.TryGetValue(out var numericStatus) - && (numericStatus == 4 || numericStatus == 5)) - { - contentObject[nameof(ContentTransferEntry.Status)] = (int)ContentTransferEntryStatus.Paused; - return true; - } - - if (statusValue.TryGetValue(out var stringStatus) - && (string.Equals(stringStatus, "Canceled", StringComparison.Ordinal) - || string.Equals(stringStatus, "CanceledWithImportedRecords", StringComparison.Ordinal))) - { - contentObject[nameof(ContentTransferEntry.Status)] = nameof(ContentTransferEntryStatus.Paused); - return true; - } - } - - return false; - } } diff --git a/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Startup.cs b/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Startup.cs index 02eb0e9c0..fa74b80b4 100644 --- a/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Startup.cs +++ b/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Startup.cs @@ -8,7 +8,6 @@ using CrestApps.OrchardCore.Omnichannel.Core.Indexes; using CrestApps.OrchardCore.Omnichannel.Core.Models; using CrestApps.OrchardCore.Omnichannel.Core.Services; -using CrestApps.OrchardCore.PhoneNumbers; using CrestApps.OrchardCore.Omnichannel.Managements.BackgroundTasks; using CrestApps.OrchardCore.Omnichannel.Managements.Drivers; using CrestApps.OrchardCore.Omnichannel.Managements.Endpoints; @@ -17,6 +16,7 @@ using CrestApps.OrchardCore.Omnichannel.Managements.Migrations; using CrestApps.OrchardCore.Omnichannel.Managements.Services; using CrestApps.OrchardCore.Omnichannel.Managements.ViewModels; +using CrestApps.OrchardCore.PhoneNumbers; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Routing; using Microsoft.Extensions.DependencyInjection; @@ -39,7 +39,7 @@ namespace CrestApps.OrchardCore.Omnichannel.Managements; /// public sealed class Startup : StartupBase { - private readonly IStringLocalizer S; + internal readonly IStringLocalizer S; public Startup(IStringLocalizer stringLocalizer) { From 24340b8b035549ffba05e96a3ea56f25e5461d33 Mon Sep 17 00:00:00 2001 From: Mike Alhayek Date: Sat, 6 Jun 2026 11:32:49 -0700 Subject: [PATCH 15/20] Fix ContentTransfer migration missing Direction column for v1 tenants ContentTransferMigrations.UpdateFrom1Async() was failing with a SqliteException because it queries the Direction column that only exists in the v2 CreateAsync schema. Tenants at v1 never had this column added. The exception caused the DataMigrationManager to cancel the YesSql session, which prevented ALL other migration version updates in the same startup cycle from being committed -- including ContactMethodMigrations. This caused ContactMethodMigrations to re-run from version 1 on every app restart, and its schema changes (TextField to PhoneField) were never persisted. Fix: Add the Direction column and its index in UpdateFrom1Async before attempting to use it. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../Migrations/ContentTransferMigrations.cs | 146 ++++++++++++++++++ 1 file changed, 146 insertions(+) diff --git a/src/Modules/CrestApps.OrchardCore.ContentTransfer/Migrations/ContentTransferMigrations.cs b/src/Modules/CrestApps.OrchardCore.ContentTransfer/Migrations/ContentTransferMigrations.cs index ed7bfe9a3..a435feaad 100644 --- a/src/Modules/CrestApps.OrchardCore.ContentTransfer/Migrations/ContentTransferMigrations.cs +++ b/src/Modules/CrestApps.OrchardCore.ContentTransfer/Migrations/ContentTransferMigrations.cs @@ -1,4 +1,6 @@ +using System.Text.Json.Nodes; using CrestApps.OrchardCore.ContentTransfer.Indexes; +using Dapper; using OrchardCore.Data; using OrchardCore.Data.Migration; using YesSql; @@ -59,4 +61,148 @@ await SchemaBuilder.AlterIndexTableAsync(table => tab return 2; } + + public async Task UpdateFrom1Async() + { + await SchemaBuilder.AlterIndexTableAsync(table => + table.AddColumn("Direction")); + + await SchemaBuilder.AlterIndexTableAsync(table => table + .CreateIndex("IDX_ContentTransferEntryIndex_Direction", + "Direction", + "Status", + "CreatedUtc", + "DocumentId") + ); + + await MigrateCanceledImportStatusesAsync(); + + return 2; + } + + private async Task MigrateCanceledImportStatusesAsync() + { + var dialect = _store.Configuration.SqlDialect; + var documentTableName = _store.Configuration.TableNameConvention.GetDocumentTable(string.Empty); + var documentTable = $"{_store.Configuration.TablePrefix}{documentTableName}"; + var quotedDocumentTableName = dialect.QuoteForTableName(documentTable, _store.Configuration.Schema); + var quotedIdColumnName = dialect.QuoteForColumnName(nameof(Document.Id)); + var quotedContentColumnName = dialect.QuoteForColumnName(nameof(Document.Content)); + + var indexTable = $"{_store.Configuration.TablePrefix}{nameof(ContentTransferEntryIndex)}"; + var quotedIndexTableName = dialect.QuoteForTableName(indexTable, _store.Configuration.Schema); + var quotedDirectionColumnName = dialect.QuoteForColumnName(nameof(ContentTransferEntryIndex.Direction)); + var quotedStatusColumnName = dialect.QuoteForColumnName(nameof(ContentTransferEntryIndex.Status)); + + await using var connection = _dbConnectionAccessor.CreateConnection(); + await connection.OpenAsync(); + + await connection.ExecuteAsync( + $""" + UPDATE {quotedIndexTableName} + SET {quotedStatusColumnName} = @Paused + WHERE {quotedDirectionColumnName} = @ImportDirection + AND {quotedStatusColumnName} IN @LegacyStatuses + """, + new + { + Paused = nameof(ContentTransferEntryStatus.Paused), + ImportDirection = ContentTransferDirection.Import, + LegacyStatuses = new[] + { + "Canceled", + "CanceledWithImportedRecords", + }, + }); + + var documents = (await connection.QueryAsync( + $""" + SELECT {quotedIdColumnName} AS Id, {quotedContentColumnName} AS Content + FROM {quotedDocumentTableName} + WHERE {quotedContentColumnName} LIKE '%"Status"%' + AND {quotedContentColumnName} LIKE '%"Direction"%' + AND {quotedContentColumnName} LIKE '%"StoredFileName"%' + """)).ToList(); + + foreach (var document in documents) + { + if (JsonNode.Parse(document.Content) is not JsonObject contentObject) + { + continue; + } + + if (!TryGetDirection(contentObject, out var direction) || direction != ContentTransferDirection.Import) + { + continue; + } + + if (!TryUpdateLegacyStatus(contentObject)) + { + continue; + } + + await connection.ExecuteAsync( + $"UPDATE {quotedDocumentTableName} SET {quotedContentColumnName} = @Content WHERE {quotedIdColumnName} = @Id", + new + { + document.Id, + Content = contentObject.ToJsonString(), + }); + } + } + + private static bool TryGetDirection(JsonObject contentObject, out ContentTransferDirection direction) + { + direction = default; + + if (contentObject[nameof(ContentTransferEntry.Direction)] is not JsonNode directionNode) + { + return false; + } + + if (directionNode is JsonValue jsonValue) + { + if (jsonValue.TryGetValue(out var numericDirection)) + { + direction = (ContentTransferDirection)numericDirection; + return true; + } + + if (jsonValue.TryGetValue(out var stringDirection) + && Enum.TryParse(stringDirection, true, out direction)) + { + return true; + } + } + + return false; + } + + private static bool TryUpdateLegacyStatus(JsonObject contentObject) + { + if (contentObject[nameof(ContentTransferEntry.Status)] is not JsonNode statusNode) + { + return false; + } + + if (statusNode is JsonValue statusValue) + { + if (statusValue.TryGetValue(out var numericStatus) + && (numericStatus == 4 || numericStatus == 5)) + { + contentObject[nameof(ContentTransferEntry.Status)] = (int)ContentTransferEntryStatus.Paused; + return true; + } + + if (statusValue.TryGetValue(out var stringStatus) + && (string.Equals(stringStatus, "Canceled", StringComparison.Ordinal) + || string.Equals(stringStatus, "CanceledWithImportedRecords", StringComparison.Ordinal))) + { + contentObject[nameof(ContentTransferEntry.Status)] = nameof(ContentTransferEntryStatus.Paused); + return true; + } + } + + return false; + } } From 24ddd028360a7a9ce351808fe24cd96bb2eeec7d Mon Sep 17 00:00:00 2001 From: Mike Alhayek Date: Sat, 6 Jun 2026 11:39:29 -0700 Subject: [PATCH 16/20] cleanup --- .../Migrations/ContentTransferMigrations.cs | 157 +++--------------- .../Migrations/ContactMethodMigrations.cs | 5 +- 2 files changed, 22 insertions(+), 140 deletions(-) diff --git a/src/Modules/CrestApps.OrchardCore.ContentTransfer/Migrations/ContentTransferMigrations.cs b/src/Modules/CrestApps.OrchardCore.ContentTransfer/Migrations/ContentTransferMigrations.cs index a435feaad..c430a3659 100644 --- a/src/Modules/CrestApps.OrchardCore.ContentTransfer/Migrations/ContentTransferMigrations.cs +++ b/src/Modules/CrestApps.OrchardCore.ContentTransfer/Migrations/ContentTransferMigrations.cs @@ -1,6 +1,5 @@ -using System.Text.Json.Nodes; using CrestApps.OrchardCore.ContentTransfer.Indexes; -using Dapper; +using Microsoft.Extensions.Logging; using OrchardCore.Data; using OrchardCore.Data.Migration; using YesSql; @@ -12,13 +11,16 @@ public sealed class ContentTransferMigrations : DataMigration { private readonly IStore _store; private readonly IDbConnectionAccessor _dbConnectionAccessor; + private readonly ILogger _logger; public ContentTransferMigrations( IStore store, - IDbConnectionAccessor dbConnectionAccessor) + IDbConnectionAccessor dbConnectionAccessor, + ILogger logger) { _store = store; _dbConnectionAccessor = dbConnectionAccessor; + _logger = logger; } public async Task CreateAsync() @@ -64,145 +66,24 @@ await SchemaBuilder.AlterIndexTableAsync(table => tab public async Task UpdateFrom1Async() { - await SchemaBuilder.AlterIndexTableAsync(table => - table.AddColumn("Direction")); - - await SchemaBuilder.AlterIndexTableAsync(table => table - .CreateIndex("IDX_ContentTransferEntryIndex_Direction", - "Direction", - "Status", - "CreatedUtc", - "DocumentId") - ); - - await MigrateCanceledImportStatusesAsync(); - - return 2; - } - - private async Task MigrateCanceledImportStatusesAsync() - { - var dialect = _store.Configuration.SqlDialect; - var documentTableName = _store.Configuration.TableNameConvention.GetDocumentTable(string.Empty); - var documentTable = $"{_store.Configuration.TablePrefix}{documentTableName}"; - var quotedDocumentTableName = dialect.QuoteForTableName(documentTable, _store.Configuration.Schema); - var quotedIdColumnName = dialect.QuoteForColumnName(nameof(Document.Id)); - var quotedContentColumnName = dialect.QuoteForColumnName(nameof(Document.Content)); - - var indexTable = $"{_store.Configuration.TablePrefix}{nameof(ContentTransferEntryIndex)}"; - var quotedIndexTableName = dialect.QuoteForTableName(indexTable, _store.Configuration.Schema); - var quotedDirectionColumnName = dialect.QuoteForColumnName(nameof(ContentTransferEntryIndex.Direction)); - var quotedStatusColumnName = dialect.QuoteForColumnName(nameof(ContentTransferEntryIndex.Status)); - - await using var connection = _dbConnectionAccessor.CreateConnection(); - await connection.OpenAsync(); - - await connection.ExecuteAsync( - $""" - UPDATE {quotedIndexTableName} - SET {quotedStatusColumnName} = @Paused - WHERE {quotedDirectionColumnName} = @ImportDirection - AND {quotedStatusColumnName} IN @LegacyStatuses - """, - new - { - Paused = nameof(ContentTransferEntryStatus.Paused), - ImportDirection = ContentTransferDirection.Import, - LegacyStatuses = new[] - { - "Canceled", - "CanceledWithImportedRecords", - }, - }); - - var documents = (await connection.QueryAsync( - $""" - SELECT {quotedIdColumnName} AS Id, {quotedContentColumnName} AS Content - FROM {quotedDocumentTableName} - WHERE {quotedContentColumnName} LIKE '%"Status"%' - AND {quotedContentColumnName} LIKE '%"Direction"%' - AND {quotedContentColumnName} LIKE '%"StoredFileName"%' - """)).ToList(); - - foreach (var document in documents) + try { - if (JsonNode.Parse(document.Content) is not JsonObject contentObject) - { - continue; - } - - if (!TryGetDirection(contentObject, out var direction) || direction != ContentTransferDirection.Import) - { - continue; - } - - if (!TryUpdateLegacyStatus(contentObject)) - { - continue; - } - - await connection.ExecuteAsync( - $"UPDATE {quotedDocumentTableName} SET {quotedContentColumnName} = @Content WHERE {quotedIdColumnName} = @Id", - new - { - document.Id, - Content = contentObject.ToJsonString(), - }); - } - } - - private static bool TryGetDirection(JsonObject contentObject, out ContentTransferDirection direction) - { - direction = default; - - if (contentObject[nameof(ContentTransferEntry.Direction)] is not JsonNode directionNode) - { - return false; - } - - if (directionNode is JsonValue jsonValue) - { - if (jsonValue.TryGetValue(out var numericDirection)) - { - direction = (ContentTransferDirection)numericDirection; - return true; - } - - if (jsonValue.TryGetValue(out var stringDirection) - && Enum.TryParse(stringDirection, true, out direction)) - { - return true; - } - } - - return false; - } - - private static bool TryUpdateLegacyStatus(JsonObject contentObject) - { - if (contentObject[nameof(ContentTransferEntry.Status)] is not JsonNode statusNode) - { - return false; + await SchemaBuilder.AlterIndexTableAsync(table => + table.AddColumn("Direction")); + + await SchemaBuilder.AlterIndexTableAsync(table => table + .CreateIndex("IDX_ContentTransferEntryIndex_Direction", + "Direction", + "Status", + "CreatedUtc", + "DocumentId") + ); } - - if (statusNode is JsonValue statusValue) + catch (Exception ex) { - if (statusValue.TryGetValue(out var numericStatus) - && (numericStatus == 4 || numericStatus == 5)) - { - contentObject[nameof(ContentTransferEntry.Status)] = (int)ContentTransferEntryStatus.Paused; - return true; - } - - if (statusValue.TryGetValue(out var stringStatus) - && (string.Equals(stringStatus, "Canceled", StringComparison.Ordinal) - || string.Equals(stringStatus, "CanceledWithImportedRecords", StringComparison.Ordinal))) - { - contentObject[nameof(ContentTransferEntry.Status)] = nameof(ContentTransferEntryStatus.Paused); - return true; - } + _logger.LogError(ex, "An error occurred while updating the ContentTransferEntryIndex table."); } - return false; + return 2; } } diff --git a/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Migrations/ContactMethodMigrations.cs b/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Migrations/ContactMethodMigrations.cs index 04985a8b2..aaa27be68 100644 --- a/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Migrations/ContactMethodMigrations.cs +++ b/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Migrations/ContactMethodMigrations.cs @@ -194,8 +194,6 @@ await _contentDefinitionManager.AlterTypeDefinitionAsync(OmnichannelConstants.Co private static async Task MigratePhoneNumberDataAsync(ShellScope scope) { - var store = scope.ServiceProvider.GetRequiredService(); - var phoneNumberService = scope.ServiceProvider.GetRequiredService(); var contentDefinitionManager = scope.ServiceProvider.GetRequiredService(); var logger = scope.ServiceProvider.GetRequiredService>(); @@ -210,6 +208,9 @@ private static async Task MigratePhoneNumberDataAsync(ShellScope scope) var skippedCount = 0; var documentId = 0L; + var store = scope.ServiceProvider.GetRequiredService(); + var phoneNumberService = scope.ServiceProvider.GetRequiredService(); + while (true) { await using var session = store.CreateSession(); From 942022976fba4e28e9f48156daee996757426db2 Mon Sep 17 00:00:00 2001 From: Mike Alhayek Date: Sat, 6 Jun 2026 11:39:56 -0700 Subject: [PATCH 17/20] cleanup --- .../Migrations/ContentTransferMigrations.cs | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/src/Modules/CrestApps.OrchardCore.ContentTransfer/Migrations/ContentTransferMigrations.cs b/src/Modules/CrestApps.OrchardCore.ContentTransfer/Migrations/ContentTransferMigrations.cs index c430a3659..cb250d73a 100644 --- a/src/Modules/CrestApps.OrchardCore.ContentTransfer/Migrations/ContentTransferMigrations.cs +++ b/src/Modules/CrestApps.OrchardCore.ContentTransfer/Migrations/ContentTransferMigrations.cs @@ -1,25 +1,16 @@ using CrestApps.OrchardCore.ContentTransfer.Indexes; using Microsoft.Extensions.Logging; -using OrchardCore.Data; using OrchardCore.Data.Migration; -using YesSql; using YesSql.Sql; namespace CrestApps.OrchardCore.ContentTransfer.Migrations; public sealed class ContentTransferMigrations : DataMigration { - private readonly IStore _store; - private readonly IDbConnectionAccessor _dbConnectionAccessor; private readonly ILogger _logger; - public ContentTransferMigrations( - IStore store, - IDbConnectionAccessor dbConnectionAccessor, - ILogger logger) + public ContentTransferMigrations(ILogger logger) { - _store = store; - _dbConnectionAccessor = dbConnectionAccessor; _logger = logger; } From 4ffe26e7e88bdd45ec7ad67ac10187752006cecb Mon Sep 17 00:00:00 2001 From: Mike Alhayek Date: Sat, 6 Jun 2026 11:44:53 -0700 Subject: [PATCH 18/20] Make migrations idempotent for duplicate column/index errors OmnichannelContactsMigrations.UpdateFrom2Async was throwing an uncaught SqliteException (duplicate column name: TimeZoneId) because the DDL committed on a previous run but the version was never saved. This cancelled the YesSql session and prevented ContactMethodMigrations from persisting its version update. Also downgrade ContentTransferMigrations catch from LogError to LogWarning since the duplicate column scenario is expected. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../Migrations/ContentTransferMigrations.cs | 2 +- .../OmnichannelContactsMigrations.cs | 40 ++++++++++++++----- 2 files changed, 31 insertions(+), 11 deletions(-) diff --git a/src/Modules/CrestApps.OrchardCore.ContentTransfer/Migrations/ContentTransferMigrations.cs b/src/Modules/CrestApps.OrchardCore.ContentTransfer/Migrations/ContentTransferMigrations.cs index cb250d73a..a918eb852 100644 --- a/src/Modules/CrestApps.OrchardCore.ContentTransfer/Migrations/ContentTransferMigrations.cs +++ b/src/Modules/CrestApps.OrchardCore.ContentTransfer/Migrations/ContentTransferMigrations.cs @@ -72,7 +72,7 @@ await SchemaBuilder.AlterIndexTableAsync(table => tab } catch (Exception ex) { - _logger.LogError(ex, "An error occurred while updating the ContentTransferEntryIndex table."); + _logger.LogWarning(ex, "The 'Direction' column may already exist on the ContentTransferEntryIndex table."); } return 2; diff --git a/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Migrations/OmnichannelContactsMigrations.cs b/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Migrations/OmnichannelContactsMigrations.cs index 3318c5f8b..f103df770 100644 --- a/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Migrations/OmnichannelContactsMigrations.cs +++ b/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Migrations/OmnichannelContactsMigrations.cs @@ -1,5 +1,6 @@ using CrestApps.OrchardCore.Omnichannel.Core; using CrestApps.OrchardCore.Omnichannel.Core.Indexes; +using Microsoft.Extensions.Logging; using OrchardCore.ContentManagement.Metadata; using OrchardCore.ContentManagement.Metadata.Settings; using OrchardCore.Data.Migration; @@ -13,14 +14,19 @@ namespace CrestApps.OrchardCore.Omnichannel.Managements.Migrations; public sealed class OmnichannelContactsMigrations : DataMigration { private readonly IContentDefinitionManager _contentDefinitionManager; + private readonly ILogger _logger; /// /// Initializes a new instance of the class. /// /// The content definition manager. - public OmnichannelContactsMigrations(IContentDefinitionManager contentDefinitionManager) + /// The logger. + public OmnichannelContactsMigrations( + IContentDefinitionManager contentDefinitionManager, + ILogger logger) { _contentDefinitionManager = contentDefinitionManager; + _logger = logger; } /// @@ -108,16 +114,30 @@ await SchemaBuilder.AlterIndexTableAsync(table => table /// public async Task UpdateFrom2Async() { - await SchemaBuilder.AlterIndexTableAsync(table => - table.AddColumn("TimeZoneId", column => column.WithLength(64)) - ); + try + { + await SchemaBuilder.AlterIndexTableAsync(table => + table.AddColumn("TimeZoneId", column => column.WithLength(64)) + ); + } + catch (Exception ex) + { + _logger.LogWarning(ex, "The 'TimeZoneId' column may already exist on the OmnichannelContactIndex table."); + } - await SchemaBuilder.AlterIndexTableAsync(table => table - .CreateIndex( - "IDX_OmnichannelContactIndex_TimeZoneId", - "DocumentId", - "TimeZoneId") - ); + try + { + await SchemaBuilder.AlterIndexTableAsync(table => table + .CreateIndex( + "IDX_OmnichannelContactIndex_TimeZoneId", + "DocumentId", + "TimeZoneId") + ); + } + catch (Exception ex) + { + _logger.LogWarning(ex, "The 'IDX_OmnichannelContactIndex_TimeZoneId' index may already exist."); + } return 3; } From c4ad20039db63ddb6ad32e97a1c460059c4e28a3 Mon Sep 17 00:00:00 2001 From: Mike Alhayek Date: Sat, 6 Jun 2026 17:28:36 -0700 Subject: [PATCH 19/20] Initialize phone field editor for dynamically added BagPart items Use a MutationObserver to detect new [data-phone-field] elements added to the DOM after page load (e.g. when adding a contact method via BagPart). The observer watches document.body for childList mutations and initializes intl-tel-input on any newly inserted phone fields. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../js/international-telephone-editor.js | 32 ++++++++++++++++++- .../scripts/international-telephone-editor.js | 29 ++++++++++++++++- .../international-telephone-editor.min.js | 2 +- 3 files changed, 60 insertions(+), 3 deletions(-) diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/Assets/js/international-telephone-editor.js b/src/Modules/CrestApps.OrchardCore.ContentFields/Assets/js/international-telephone-editor.js index ad6def3a9..3a9bd7468 100644 --- a/src/Modules/CrestApps.OrchardCore.ContentFields/Assets/js/international-telephone-editor.js +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/Assets/js/international-telephone-editor.js @@ -76,11 +76,41 @@ document.querySelectorAll(selector).forEach(initializeField); } + function observeDynamicAdditions() { + var observer = new MutationObserver(function (mutations) { + for (var i = 0; i < mutations.length; i++) { + var addedNodes = mutations[i].addedNodes; + + for (var j = 0; j < addedNodes.length; j++) { + var node = addedNodes[j]; + + if (node.nodeType !== Node.ELEMENT_NODE) { + continue; + } + + if (node.matches(selector)) { + initializeField(node); + } + else { + var fields = node.querySelectorAll(selector); + fields.forEach(initializeField); + } + } + } + }); + + observer.observe(document.body, { childList: true, subtree: true }); + } + if (document.readyState === 'loading') { - document.addEventListener('DOMContentLoaded', initialize, { once: true }); + document.addEventListener('DOMContentLoaded', function () { + initialize(); + observeDynamicAdditions(); + }, { once: true }); return; } initialize(); + observeDynamicAdditions(); })(); diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/scripts/international-telephone-editor.js b/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/scripts/international-telephone-editor.js index 44009eb17..350045925 100644 --- a/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/scripts/international-telephone-editor.js +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/scripts/international-telephone-editor.js @@ -61,11 +61,38 @@ function initialize() { document.querySelectorAll(selector).forEach(initializeField); } + function observeDynamicAdditions() { + var observer = new MutationObserver(function (mutations) { + for (var i = 0; i < mutations.length; i++) { + var addedNodes = mutations[i].addedNodes; + for (var j = 0; j < addedNodes.length; j++) { + var node = addedNodes[j]; + if (node.nodeType !== Node.ELEMENT_NODE) { + continue; + } + if (node.matches(selector)) { + initializeField(node); + } else { + var fields = node.querySelectorAll(selector); + fields.forEach(initializeField); + } + } + } + }); + observer.observe(document.body, { + childList: true, + subtree: true + }); + } if (document.readyState === 'loading') { - document.addEventListener('DOMContentLoaded', initialize, { + document.addEventListener('DOMContentLoaded', function () { + initialize(); + observeDynamicAdditions(); + }, { once: true }); return; } initialize(); + observeDynamicAdditions(); })(); \ No newline at end of file diff --git a/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/scripts/international-telephone-editor.min.js b/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/scripts/international-telephone-editor.min.js index edf60b599..111e416ad 100644 --- a/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/scripts/international-telephone-editor.min.js +++ b/src/Modules/CrestApps.OrchardCore.ContentFields/wwwroot/scripts/international-telephone-editor.min.js @@ -1 +1 @@ -!function(){function e(e){var t=e.querySelector('input[data-intl-tel-input="true"]');if(window.intlTelInput&&t&&"true"!==t.dataset.intlTelInputInitialized){t.dataset.intlTelInputInitialized="true";var n=e.querySelector("[data-phone-e164]"),a=e.querySelector("[data-phone-country]"),o=e.querySelector("[data-phone-national]"),i={containerClass:"w-100",dropdownParent:document.body,numberDisplayFormat:"INTERNATIONAL",strictMode:!0},l=t.dataset.initialCountry;l&&(i.initialCountry=l);var r=window.intlTelInput(t,i);t.disabled?r.setDisabled(!0):t.readOnly&&r.setReadonly(!0),t.form&&t.form.addEventListener("submit",function(){if(!t.value)return n&&(n.value=""),a&&(a.value=""),void(o&&(o.value=""));var e=r.getNumber(),i=r.getSelectedCountryData();n&&(n.value=e||""),a&&(a.value=(i.iso2||"").toUpperCase()),o&&(o.value=t.value||"")})}}function t(){document.querySelectorAll("[data-phone-field]").forEach(e)}"loading"!==document.readyState?t():document.addEventListener("DOMContentLoaded",t,{once:!0})}(); +!function(){var e="[data-phone-field]";function t(e){var t=e.querySelector('input[data-intl-tel-input="true"]');if(window.intlTelInput&&t&&"true"!==t.dataset.intlTelInputInitialized){t.dataset.intlTelInputInitialized="true";var n=e.querySelector("[data-phone-e164]"),a=e.querySelector("[data-phone-country]"),o=e.querySelector("[data-phone-national]"),r={containerClass:"w-100",dropdownParent:document.body,numberDisplayFormat:"INTERNATIONAL",strictMode:!0},i=t.dataset.initialCountry;i&&(r.initialCountry=i);var l=window.intlTelInput(t,r);t.disabled?l.setDisabled(!0):t.readOnly&&l.setReadonly(!0),t.form&&t.form.addEventListener("submit",function(){if(!t.value)return n&&(n.value=""),a&&(a.value=""),void(o&&(o.value=""));var e=l.getNumber(),r=l.getSelectedCountryData();n&&(n.value=e||""),a&&(a.value=(r.iso2||"").toUpperCase()),o&&(o.value=t.value||"")})}}function n(){document.querySelectorAll(e).forEach(t)}function a(){new MutationObserver(function(n){for(var a=0;a Date: Sat, 6 Jun 2026 18:14:33 -0700 Subject: [PATCH 20/20] fix migration --- .../Migrations/ContactMethodMigrations.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Migrations/ContactMethodMigrations.cs b/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Migrations/ContactMethodMigrations.cs index aaa27be68..c04b5dfce 100644 --- a/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Migrations/ContactMethodMigrations.cs +++ b/src/Modules/CrestApps.OrchardCore.Omnichannel.Managements/Migrations/ContactMethodMigrations.cs @@ -70,6 +70,7 @@ await _contentDefinitionManager.AlterPartDefinitionAsync(OmnichannelConstants.Co .WithSettings(new PhoneFieldSettings() { Required = true, + InitialCountryMode = InitialCountryMode.CurrentCulture, }) ) .WithField("Extension", field => field @@ -176,6 +177,7 @@ await _contentDefinitionManager.AlterPartDefinitionAsync(OmnichannelConstants.Co .WithSettings(new PhoneFieldSettings { Required = true, + InitialCountryMode = InitialCountryMode.CurrentCulture, }))); await _contentDefinitionManager.AlterTypeDefinitionAsync(OmnichannelConstants.ContentTypes.PhoneNumber, type => type