{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/@hotwired/stimulus/dist/stimulus.js","webpack:///./app/javascript/controllers/index.js","webpack:///./node_modules/@hotwired/stimulus-webpack-helpers/dist/stimulus-webpack-helpers.js","webpack:///./app/javascript/packs/application.js","webpack:///./node_modules/@rails/ujs/lib/assets/compiled/rails-ujs.js","webpack:///./app/javascript/controllers sync \\.js$","webpack:///./app/javascript/controllers/adt_trusted_form_controller.js","webpack:///./app/javascript/controllers/button_controller.js","webpack:///./app/javascript/controllers/click_track_controller.js","webpack:///./app/javascript/controllers/clipboard_controller.js","webpack:///./app/javascript/controllers/detail_controller.js","webpack:///./app/javascript/controllers/dropdown_controller.js","webpack:///./app/javascript/controllers/flash_fade_controller.js","webpack:///./app/javascript/controllers/hello_controller.js","webpack:///./app/javascript/controllers/policy_request_totals_controller.js","webpack:///./app/javascript/controllers/policy_type_form_controller.js","webpack:///./app/javascript/controllers/realtor_apply_button_controller.js","webpack:///./app/javascript/controllers/resize_controller.js","webpack:///./app/javascript/controllers/select_navigation_controller.js","webpack:///./node_modules/libphonenumber-js/metadata.min.json.js","webpack:///./node_modules/libphonenumber-js/min/exports/withMetadataArgument.js","webpack:///./node_modules/libphonenumber-js/es6/helpers/isObject.js","webpack:///./node_modules/libphonenumber-js/es6/normalizeArguments.js","webpack:///./node_modules/libphonenumber-js/es6/constants.js","webpack:///./node_modules/libphonenumber-js/es6/ParseError.js","webpack:///./node_modules/libphonenumber-js/es6/tools/semver-compare.js","webpack:///./node_modules/libphonenumber-js/es6/metadata.js","webpack:///./node_modules/libphonenumber-js/es6/helpers/extension/createExtensionPattern.js","webpack:///./node_modules/libphonenumber-js/es6/helpers/isViablePhoneNumber.js","webpack:///./node_modules/libphonenumber-js/es6/helpers/extension/extractExtension.js","webpack:///./node_modules/libphonenumber-js/es6/helpers/parseDigits.js","webpack:///./node_modules/libphonenumber-js/es6/parseIncompletePhoneNumber.js","webpack:///./node_modules/libphonenumber-js/es6/helpers/mergeArrays.js","webpack:///./node_modules/libphonenumber-js/es6/helpers/checkNumberLength.js","webpack:///./node_modules/libphonenumber-js/es6/isPossible.js","webpack:///./node_modules/libphonenumber-js/es6/helpers/matchesEntirely.js","webpack:///./node_modules/libphonenumber-js/es6/helpers/getNumberType.js","webpack:///./node_modules/libphonenumber-js/es6/helpers/getPossibleCountriesForNumber.js","webpack:///./node_modules/libphonenumber-js/es6/helpers/applyInternationalSeparatorStyle.js","webpack:///./node_modules/libphonenumber-js/es6/helpers/formatNationalNumberUsingFormat.js","webpack:///./node_modules/libphonenumber-js/es6/helpers/getIddPrefix.js","webpack:///./node_modules/libphonenumber-js/es6/format.js","webpack:///./node_modules/libphonenumber-js/es6/helpers/RFC3966.js","webpack:///./node_modules/libphonenumber-js/es6/PhoneNumber.js","webpack:///./node_modules/libphonenumber-js/es6/isValid.js","webpack:///./node_modules/libphonenumber-js/es6/helpers/stripIddPrefix.js","webpack:///./node_modules/libphonenumber-js/es6/helpers/extractNationalNumberFromPossiblyIncompleteNumber.js","webpack:///./node_modules/libphonenumber-js/es6/helpers/extractNationalNumber.js","webpack:///./node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js","webpack:///./node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCode.js","webpack:///./node_modules/libphonenumber-js/es6/helpers/getCountryByNationalNumber.js","webpack:///./node_modules/libphonenumber-js/es6/helpers/getCountryByCallingCode.js","webpack:///./node_modules/libphonenumber-js/es6/helpers/extractPhoneContext.js","webpack:///./node_modules/libphonenumber-js/es6/helpers/extractFormattedPhoneNumberFromPossibleRfc3966NumberUri.js","webpack:///./node_modules/libphonenumber-js/es6/parse.js","webpack:///./node_modules/libphonenumber-js/es6/parsePhoneNumberWithError_.js","webpack:///./node_modules/libphonenumber-js/es6/validatePhoneNumberLength.js","webpack:///./node_modules/libphonenumber-js/es6/AsYouTypeState.js","webpack:///./node_modules/libphonenumber-js/es6/AsYouTypeFormatter.util.js","webpack:///./node_modules/libphonenumber-js/es6/AsYouTypeFormatter.complete.js","webpack:///./node_modules/libphonenumber-js/es6/AsYouTypeFormatter.PatternParser.js","webpack:///./node_modules/libphonenumber-js/es6/AsYouTypeFormatter.PatternMatcher.js","webpack:///./node_modules/libphonenumber-js/es6/AsYouTypeFormatter.js","webpack:///./node_modules/libphonenumber-js/es6/AsYouTypeParser.js","webpack:///./node_modules/libphonenumber-js/es6/AsYouType.js","webpack:///./node_modules/libphonenumber-js/min/exports/AsYouType.js","webpack:///./node_modules/libphonenumber-js/es6/parsePhoneNumber_.js","webpack:///./node_modules/libphonenumber-js/es6/isValidPhoneNumber.js","webpack:///./node_modules/libphonenumber-js/es6/parsePhoneNumber.js","webpack:///./app/javascript/controllers/submit_policy_input_controller.js","webpack:///./node_modules/libphonenumber-js/min/exports/validatePhoneNumberLength.js","webpack:///./node_modules/libphonenumber-js/min/exports/isValidPhoneNumber.js","webpack:///./node_modules/libphonenumber-js/min/exports/parsePhoneNumber.js","webpack:///./node_modules/@rails/request.js/src/fetch_response.js","webpack:///./node_modules/@rails/request.js/src/request_interceptor.js","webpack:///./node_modules/@rails/request.js/src/lib/utils.js","webpack:///./node_modules/@rails/request.js/src/fetch_request.js","webpack:///./app/javascript/controllers/claim_reason_controller.js","webpack:///./node_modules/@rails/request.js/src/verbs.js","webpack:///./node_modules/@hotwired/turbo/dist/turbo.es2017-esm.js","webpack:///./node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable.js","webpack:///./node_modules/@hotwired/turbo-rails/app/javascript/turbo/snakeize.js","webpack:///./node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable_stream_source_element.js","webpack:///./node_modules/@hotwired/turbo-rails/app/javascript/turbo/index.js","webpack:///./node_modules/@hotwired/turbo-rails/app/javascript/turbo/fetch_requests.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","installedModules","__webpack_require__","exports","module","l","e","promises","installedChunkData","promise","Promise","resolve","reject","onScriptComplete","script","document","createElement","charset","timeout","nc","setAttribute","src","p","jsonpScriptSrc","error","Error","event","onerror","onload","clearTimeout","chunk","errorType","type","realSrc","target","message","name","request","undefined","setTimeout","head","appendChild","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","err","console","jsonpArray","window","oldJsonpFunction","slice","s","_slicedToArray","arr","Array","isArray","_arrayWithHoles","_i","iterator","_s","_e","_arr","_n","_d","next","done","_iterableToArrayLimit","minLen","_arrayLikeToArray","toString","constructor","from","test","_unsupportedIterableToArray","TypeError","_nonIterableRest","len","arr2","EventListener","eventTarget","eventName","eventOptions","this","unorderedBindings","Set","connect","addEventListener","disconnect","removeEventListener","bindingConnected","binding","add","bindingDisconnected","delete","handleEvent","extendedEvent","stopImmediatePropagation","assign","immediatePropagationStopped","extendEvent","bindings","hasBindings","size","sort","left","right","leftIndex","index","rightIndex","Dispatcher","application","eventListenerMaps","Map","started","start","eventListeners","forEach","eventListener","stop","values","reduce","listeners","map","concat","fetchEventListenerForBinding","clearEventListeners","arguments","clearEventListenersForBinding","handleError","detail","removeMappedEventListenerFor","eventListenerMap","fetchEventListenerMapForEventTarget","cacheKey","fetchEventListener","createEventListener","set","parts","keys","join","defaultActionDescriptorFilters","_ref","stopPropagation","prevent","_ref2","preventDefault","self","_ref3","element","descriptorPattern","parseEventTarget","eventTargetName","camelize","replace","_","char","toUpperCase","namespaceCamelize","capitalize","charAt","dasherize","toLowerCase","Action","descriptor","schema","tagName","defaultEventNames","getDefaultEventNameForElement","identifier","methodName","keyFilter","static","token","descriptorString","matches","trim","match","includes","split","options","parseActionDescriptorString","content","eventFilter","isFilterTarget","filteres","modifiers","_modifiers$map2","modifier","meta","ctrl","alt","metaKey","ctrlKey","altKey","shiftKey","standardFilter","filter","keyMappings","params","pattern","RegExp","_ref4","attributes","typecast","a","button","form","details","input","getAttribute","select","textarea","JSON","parse","o_O","Binding","context","action","willBeInvokedByEvent","applyEventModifiers","invokeWithEvent","method","controller","actionDescriptorFilters","passes","_ref5","entries","_ref6","currentTarget","actionEvent","logDebugActivity","KeyboardEvent","Element","contains","scope","containsElement","ElementObserver","delegate","mutationObserverInit","childList","subtree","elements","mutationObserver","MutationObserver","mutations","processMutations","observe","refresh","pause","callback","takeRecords","matchElementsInTree","has","removeElement","addElement","mutation","processMutation","processAttributeChange","attributeName","processRemovedNodes","removedNodes","processAddedNodes","addedNodes","node","elementAttributeChanged","matchElement","nodes","elementFromNode","processTree","elementIsActive","tree","processor","nodeType","Node","ELEMENT_NODE","isConnected","elementMatched","elementUnmatched","AttributeObserver","elementObserver","selector","hasAttribute","querySelectorAll","elementMatchedAttribute","elementUnmatchedAttribute","elementAttributeValueChanged","fetch","del","prune","Multimap","valuesByKey","hasKey","hasValue","some","getValuesForKey","getKeysForValue","_ref7","_ref8","_ref9","_ref10","SelectorObserver","matchesByElement","selectorMatchElement","selectorMatched","selectorUnmatched","_attributeName","matchedBefore","StringMapObserver","stringMap","attributeOldValue","knownAttributeNames","refreshAttribute","oldValue","getStringMapKeyForAttribute","stringMapKeyAdded","stringMapValueChanged","stringMapKeyRemoved","currentAttributeNames","recordedAttributeNames","attribute","TokenListObserver","attributeObserver","tokensByElement","tokensMatched","readTokensForElement","_this$refreshTokensFo2","refreshTokensForElement","unmatchedTokens","matchedTokens","tokensUnmatched","tokens","tokenMatched","tokenUnmatched","previousTokens","currentTokens","firstDifferingIndex","Math","max","zip","findIndex","_ref11","_ref12","previousToken","currentToken","tokenString","parseTokenString","ValueListObserver","tokenListObserver","parseResultsByToken","WeakMap","valuesByTokenByElement","fetchParseResultForToken","fetchValuesByTokenForElement","elementMatchedValue","elementUnmatchedValue","parseResult","parseToken","valuesByToken","parseValueForToken","BindingObserver","bindingsByAction","valueListObserver","actionAttribute","disconnectAllActions","connectAction","disconnectAction","clear","forToken","ValueObserver","receiver","stringMapObserver","valueDescriptorMap","invokeChangedCallbacksForDefaultValues","invokeChangedCallback","writer","defaultValue","valueDescriptorNameMap","_ref13","valueDescriptors","rawValue","rawOldValue","changedMethodName","changedMethod","reader","descriptors","hasMethodName","TargetObserver","targetsByName","disconnectAllTargets","_ref14","connectTarget","_ref15","disconnectTarget","_a","targetConnected","targetDisconnected","readInheritableStaticArrayValues","propertyName","ancestors","getAncestorsForConstructor","definition","getOwnStaticArrayValues","readInheritableStaticObjectPairs","pairs","getOwnStaticObjectPairs","getPrototypeOf","reverse","OutletObserver","outletsByName","outletElementsByName","selectorObserverMap","outletDefinitions","outletName","body","observer","dependentContexts","disconnectAllOutlets","_selector","_ref16","outlet","getOutlet","connectOutlet","_ref17","getOutletFromMap","disconnectOutlet","_ref18","hasOutlet","controllerAttribute","outletConnected","outletDisconnected","outlets","getSelectorForOutletName","outletDependencies","dependencies","router","controllerConstructor","dependentControllerIdentifiers","identifiers","contexts","getControllerForElementAndIdentifier","find","Context","_this","functionName","bindingObserver","dispatcher","valueObserver","targetObserver","outletObserver","initialize","parentElement","invokeControllerMethod","_len","args","_key2","bless","properties","shadowConstructor","extend","shadowProperties","getOwnKeys","shadowingDescriptor","getOwnPropertyDescriptor","getShadowedDescriptor","getShadowProperties","defineProperties","shadow","blessedProperties","blessing","getBlessedProperties","getOwnPropertySymbols","getOwnPropertyNames","extendWithReflect","extended","Reflect","construct","setPrototypeOf","b","testReflectExtension","Module","blessDefinition","contextsByScope","connectedContexts","connectContextForScope","fetchContextForScope","disconnectContextForScope","ClassMap","getDataKey","getAll","getAttributeName","getAttributeNameForKey","DataMap","removeAttribute","Guide","logger","warnedKeysByObject","warn","warnedKeys","attributeValueContainsToken","TargetSet","targetName","_len2","targetNames","_key3","findTarget","findLegacyTarget","findAll","_len3","_key4","targets","findAllTargets","findAllLegacyTargets","getSelectorForTargetName","findElement","findAllElements","targetAttributeForScope","getLegacySelectorForTargetName","deprecate","targetDescriptor","targetAttribute","revisedAttributeName","guide","OutletSet","controllerElement","_len4","outletNames","_key5","findOutlet","_len5","_key6","findAllOutlets","outletAttributeForScope","queryElements","matchesElement","Scope","classes","closest","controllerSelector","documentScope","isDocumentScope","documentElement","ScopeObserver","scopesByIdentifierByElement","scopeReferenceCounts","scopesByIdentifier","fetchScopesByIdentifierForElement","createScopeForElementAndIdentifier","referenceCount","scopeConnected","scopeDisconnected","Router","scopeObserver","modulesByIdentifier","loadDefinition","unloadIdentifier","connectModule","afterLoad","disconnectModule","getContextForElementAndIdentifier","defaultSchema","enter","tab","esc","space","up","down","home","end","objectFromEntries","array","memo","_ref19","_ref20","k","v","Application","_this2","debug","logFormattedMessage","async","readyState","register","load","registerActionOption","_len6","rest","_key7","shouldLoad","unload","_len7","_key8","controllers","groupCollapsed","log","groupEnd","parseValueDefinitionPair","_ref21","_ref22","payload","typeFromObject","parseValueTypeConstant","typeObject","defaultValueType","parseValueTypeDefault","default","propertyPath","parseValueTypeObject","typeDefinition","typeFromDefaultValue","typeFromConstant","parseValueTypeDefinition","constant","defaultValuesByType","defaultValueForDefinition","hasCustomDefaultValue","readers","writers","valueDescriptorForTokenAndTypeDefinition","Boolean","Number","String","boolean","number","string","writeJSON","stringify","Controller","_identifier","_application","dispatch","_ref23","_ref23$target","_ref23$detail","_ref23$prefix","prefix","_ref23$bubbles","bubbles","_ref23$cancelable","cancelable","CustomEvent","dispatchEvent","blessings","classDefinition","targetDefinition","valueDefinitionPairs","propertyDescriptorMap","result","valueDefinitionPair","valueDescriptor","read","write","propertiesForValueDefinitionPair","outletDefinition","camelizedName","outletController","propertiesForOutletDefinition","Stimulus","require","logicalName","identifierForContextKey","definitionForModuleAndIdentifier","definitionForModuleWithContextAndKey","definitionsFromContext","Rails","linkClickSelector","buttonClickSelector","exclude","inputChangeSelector","formSubmitSelector","formInputClickSelector","formDisableSelector","formEnableSelector","fileInputSelector","linkDisableSelector","buttonDisableSelector","nonce","loadCSPNonce","ref","querySelector","cspNonce","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","getData","setData","$","csrfParam","csrfToken","CSRFProtection","xhr","setRequestHeader","refreshCSRFTokens","param","fire","evt","createEvent","initCustomEvent","Event","defaultPrevented","obj","stopEverything","eventType","handler","parentNode","AcceptHeaders","createXHR","prepareOptions","processResponse","text","html","xml","json","ajax","response","responseText","getResponseHeader","floor","status","success","statusText","complete","beforeSend","XMLHttpRequest","OPENED","send","url","location","href","indexOf","dataType","accept","open","crossDomain","withCredentials","onreadystatechange","DONE","parser","removeChild","DOMParser","parseFromString","isCrossDomain","originAnchor","urlAnchor","protocol","host","toArray","serializeElement","additionalParam","inputs","disabled","option","selected","checked","encodeURIComponent","formElements","el","allowAction","handleConfirm","confirm","answer","disableFormElement","disableFormElements","disableLinkElement","enableFormElement","enableFormElements","enableLinkElement","isXhrRedirect","handleDisabledElement","enableElement","disableElement","replacement","innerHTML","originalText","handleMethod","formContent","link","style","display","click","isRemote","handleRemote","enctype","FormData","append","formSubmitButtonClick","formNoValidate","preventInsignificantClick","insignificantMetaClick","jQuery","rails","ajaxPrefilter","originalOptions","_rails_loaded","webpackContext","req","id","webpackContextResolve","code","info","remove","getElementById","trustedFormStopRecording","top","postMessage","urlValue","hasClickedAlreadyValue","credentials","headers","then","hasClickedAlready","Clipboard","hasButtonTarget","originalContent","buttonTarget","sourceTarget","navigator","clipboard","writeText","copied","successContentValue","successDurationValue","successContent","successDuration","isNative","dataset","marginBottom","scrollIntoView","behavior","block","menuTarget","classList","toggle","dismiss","roundNumber","decimals","parseFloat","toFixed","parseInt","USDollar","Intl","NumberFormat","currency","calculate","years","findCurrentYearsSelected","totalPlanValue","findCurrentSelectedPlanValue","plusMinusValues","checkboxValues","addOnsTotal","grandTotal","planTarget","textContent","format","yearsTarget","addonsTarget","totalTarget","planLengthInputTargets","planTypeInputTargets","price","hiddenQuantityInputTargets","accumulator","unitPrice","hiddenInputTargets","operation","hiddenInput","displayTargets","span","policyRequestTotalsKeyParam","currentValue","overflow","formTarget","submit","hasHiddenClass","hiddenClass","buttonTargets","item","resizeEnabled","initialMarginBottom","extract_location","Turbo","visit","selectedIndex","withMetadataArgument","func","_arguments","apply","objectConstructor","isObject","ownKeys","enumerableOnly","symbols","sym","_defineProperty","configurable","writable","normalizeArguments","metadata","_Array$prototype$slic2","arg_1","arg_2","arg_3","arg_4","source","getOwnPropertyDescriptors","_objectSpread","defaultCountry","VALID_DIGITS","VALID_PUNCTUATION","_typeof","_defineProperties","props","_possibleConstructorReturn","_assertThisInitialized","ReferenceError","_wrapNativeSuper","Class","_cache","fn","Function","Wrapper","_construct","_getPrototypeOf","_setPrototypeOf","Parent","_isNativeReflectConstruct","instance","sham","Proxy","valueOf","__proto__","ParseError","_Error","subClass","superClass","_inherits","Derived","hasNativeReflectConstruct","Constructor","protoProps","staticProps","_super","Super","NewTarget","_classCallCheck","pa","pb","na","nb","isNaN","DEFAULT_EXT_PREFIX","CALLING_CODE_REG_EXP","Metadata","countries","typeOf","validateMetadata","setVersion","countryCode","v1","v2","v3","nonGeographic","nonGeographical","country","getCountryMetadata","callingCode","getCountryCodesForCallingCode","countryCodes","countryCallingCodes","selectNumberingPlan","hasCountry","numberingPlan","NumberingPlan","hasCallingCode","getNumberingPlanMetadata","getCountryCodeForCallingCode","IDDPrefix","defaultIDDPrefix","nationalNumberPattern","possibleLengths","formats","nationalPrefixForParsing","nationalPrefixTransformRule","leadingDigits","hasTypes","_type","ext","country_phone_code_to_countries","country_calling_codes","globalMetadataObject","_getFormats","getDefaultCountryMetadataForRegion","Format","_getNationalPrefixFormattingRule","_nationalPrefixForParsing","nationalPrefix","_getNationalPrefixIsOptionalWhenFormatting","types","_type2","Type","_format","nationalPrefixFormattingRule","nationalPrefixIsOptionalWhenFormattingInNationalFormat","usesNationalPrefix","FIRST_GROUP_ONLY_PREFIX_PATTERN","getCountryCallingCode","countryCallingCode","version","v4","maxLength","createExtensionPattern","purpose","optionalExtnSuffix","possibleSeparatorsBetweenNumberAndExtLabel","possibleSeparatorsNumberExtLabelNoComma","VALID_PHONE_NUMBER","VALID_PHONE_NUMBER_START_REG_EXP","VALID_PHONE_NUMBER_WITH_EXTENSION","VALID_PHONE_NUMBER_PATTERN","isViablePhoneNumber","EXTN_PATTERN","_createForOfIteratorHelperLoose","allowArrayLike","it","DIGITS","parseDigit","character","parseDigits","_step","_iterator","digit","parseIncompletePhoneNumber","parsePhoneNumberCharacter","prevParsedCharacters","emitEvent","checkNumberLength","nationalNumber","checkNumberLengthForType","type_info","possible_lengths","mobile_type","merged","mergeArrays","actual_length","minimum_length","isPossibleNumber","matchesEntirely","regular_expression","NON_FIXED_LINE_PHONE_TYPES","getNumberType","phone","isNumberTypeEqualTo","getPossibleCountriesForNumber","possibleCountries","_metadata","couldNationalNumberBelongToCountry","applyInternationalSeparatorStyle","formattedNumber","FIRST_GROUP_PATTERN","formatNationalNumberUsingFormat","useInternationalFormat","withNationalPrefix","carrierCode","internationalFormat","SINGLE_IDD_PREFIX_REG_EXP","DEFAULT_OPTIONS","formatExtension","extension","formatNumber","addExtension","formatNationalNumber","formatRFC3966","fromCountry","iddPrefix","countryMetadata","getIddPrefix","formatIDD","formatAs","availableFormats","nationalNnumber","leadingDigitsPatterns","lastLeadingDigitsPattern","search","chooseFormatForNumber","PhoneNumber","countryOrCountryCallingCode","_getCountryAndCountry","metadataJson","getCountryAndCountryCallingCode","getMetadata","isNonGeographicCallingCode","phoneNumber","CAPTURING_DIGIT_PATTERN","stripIddPrefix","IDDPrefixPattern","matchedGroups","extractNationalNumberFromPossiblyIncompleteNumber","prefixPattern","prefixMatch","exec","capturedGroupsCount","hasCapturedGroups","prefixBeforeNationalNumber","possiblePositionOfTheFirstCapturedGroup","extractNationalNumber","_extractNationalNumbe","nationalNumberBefore","nationalNumberAfter","shouldHaveExtractedNationalPrefix","isPossibleIncompleteNationalNumber","extractCountryCallingCodeFromInternationalNumberWithoutPlusSign","possibleShorterNumber","possibleShorterNationalNumber","isNumberWithIddPrefix","numberWithoutIDD","_extractCountryCallin","shorterNumber","countryCallingCodeSource","_countryCallingCode","getCountryByNationalNumber","nationalPhoneNumber","matchingCountries","getCountryByCallingCode","RFC3966_GLOBAL_NUMBER_DIGITS_PATTERN_","RFC3966_DOMAINNAME_PATTERN_","RFC3966_PREFIX_","RFC3966_PHONE_CONTEXT_","extractFormattedPhoneNumberFromPossibleRfc3966NumberUri","numberToParse","phoneNumberString","extractFormattedPhoneNumber","phoneContext","numberToExtractFrom","indexOfPhoneContext","phoneContextStart","phoneContextEnd","substring","extractPhoneContext","isPhoneContextValid","indexOfNationalNumber","indexOfRfc3966Prefix","indexOfIsdn","PHONE_NUMBER_START_PATTERN","AFTER_PHONE_NUMBER_END_PATTERN","_parseInput","extract","throwOnError","startsAt","_extractFormattedPhoneNumber","isViablePhoneNumberStart","withExtensionStripped","numberWithoutExtension","extractExtension","parseInput","formattedPhoneNumber","_parsePhoneNumber","defaultCallingCode","exactCountry","parsePhoneNumber","hasSelectedNumberingPlan","__countryCallingCodeSource","valid","possible","parsePhoneNumberWithError","validatePhoneNumberLength","_normalizeArguments","AsYouTypeState","onCountryChange","onCallingCodeChange","international","missingPlus","digits","resetNationalSignificantNumber","initCountryAndCallingCode","nationalSignificantNumber","getNationalDigits","nationalSignificantNumberMatchesInput","complexPrefixBeforeNationalSignificantNumber","_Object$keys","setCountry","setCallingCode","nextDigits","DIGIT_PLACEHOLDER","DIGIT_PLACEHOLDER_MATCHER","repeat","times","cutAndStripNonPairedParens","cutBeforeIndex","dangling_braces","pop","cleared_string","_dangling_braces","stripNonPairedParens","formatCompleteNumber","state","shouldTryNationalPrefixFormattingRule","getSeparatorAfterNationalPrefix","useNationalPrefixFormattingRule","formatNationalNumberWithAndWithoutNationalPrefixFormattingRule","formattedNationalNumber","isValidFormattedNationalNumber","PatternParser","or","instructions","parsePattern","_this$context$","branches","op","expandSingleElementArray","OPERATOR","operator","before","rightPart","startContext","getContext","endContext","oneOfSet","parseOneOfSet","ILLEGAL_CHARACTER_REGEXP","prevValue","charCodeAt","nextValue","fromCharCode","PatternMatcher","matchTree","allowOverflow","_match","matchedChars","characters","last","characterString","partialMatch","restCharacters","_result","_step2","_iterator2","_char","LONGEST_DUMMY_PHONE_NUMBER","NATIONAL_PREFIX_SEPARATORS_PATTERN","CREATE_CHARACTER_CLASS_PATTERN","CREATE_STANDALONE_DIGIT_PATTERN","NON_ALTERING_FORMAT_REG_EXP","AsYouTypeFormatter","resetFormat","chosenFormat","template","nationalNumberTemplate","populatedNationalNumberTemplate","populatedNationalNumberTemplatePosition","isNANP","matchingFormats","narrowDownMatchingFormats","formattedCompleteNumber","setNationalNumberTemplate","lastIndexOf","formatNationalNumberWithNextDigits","previouslyChosenFormat","newlyChosenFormat","chooseFormat","formatNextNationalNumberDigits","leadingDigitsPatternIndex","formatSuits","formatMatches","nationalPrefixIsMandatoryWhenFormattingInNationalFormat","leadingDigitsPatternsCount","min","leadingDigitsPattern","_this3","_loop","getFormatFormat","createTemplateForFormat","_ret","getTemplateForFormat","spacing","internationalPrefix","getInternationalPrefixBeforeCountryCallingCode","getDigitsWithoutInternationalPrefix","strictPattern","nationalNumberDummyDigits","nationalPrefixIncludedInTemplate","numberFormat","numberFormatWithNationalPrefix","position","populateTemplateWithDigits","VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART_PATTERN","VALID_FORMATTED_PHONE_NUMBER_PART","AFTER_PHONE_NUMBER_DIGITS_END_PATTERN","COMPLEX_NATIONAL_PREFIX","AsYouTypeParser","onNationalSignificantNumberChange","justLeadingPlus","_extractFormattedDigi","_extractFormattedDigi4","extractedNumber","hasPlus","_extractFormattedDigitsAndPlus","formattedDigits","extractFormattedDigitsAndPlus","_extractFormattedDigi2","startInternationalNumber","inputDigits","hasReceivedThreeLeadingDigits","appendDigits","extractIddPrefix","isWaitingForCountryCallingCode","extractCountryCallingCode","appendNationalSignificantNumberDigits","hasExtractedNationalSignificantNumber","extractNationalSignificantNumber","stateUpdate","update","couldPossiblyExtractAnotherNationalSignificantNumber","nationalDigits","setState","onExtractedNationalNumber","prevNationalSignificantNumber","_extractNationalNumbe2","nationalSignificantNumberIndex","extractAnotherNationalSignificantNumber","fixMissingPlus","extractCallingCodeAndNationalSignificantNumber","_extractCountryCallin2","newCallingCode","AsYouType","optionsOrDefaultCountry","_this$getCountryAndCa2","getCountryAndCallingCode","reset","_this$parser$input","formattedOutput","determineTheCountryIfNeeded","formatter","reExtractNationalSignificantNumber","getFullNumber","getNonFormattedNumber","isInternational","getCallingCode","_getCountry","isCountryCallingCodeAmbiguous","determineTheCountry","_this$state","getNonFormattedNationalNumberWithPrefix","_this$state2","_this$state3","_callingCode","ambiguousCountries","getNumber","isPossible","isValid","getTemplate","getNonFormattedTemplate","isSupportedCountry","isValidPhoneNumber","phone_number","phoneTargets","phoneInput","parsePhone","parseZip","parsedPhone","formatNational","FetchResponse","statusCode","redirected","ok","unauthenticated","unprocessableEntity","authenticationURL","contentType","responseJson","isTurboStream","renderStreamMessage","RequestInterceptor","interceptor","metaContent","originalUrl","requestInterceptor","fetchOptions","renderTurboStream","addHeader","additionalHeaders","sameHostname","startsWith","URL","hostname","formattedBody","signal","redirect","baseHeaders","Accept","compact","cookies","cookie","decodeURIComponent","getCookie","File","responseKind","query","originalQuery","URLSearchParams","requestQuery","formData","searchParams","mergeEntries","bodyIsAString","selectedOptions","perform","customElements","polyfillWrapFlushCallback","BuiltInHTMLElement","HTMLElement","wrapperForTheName","raise","errorConstructor","requestSubmit","submitter","DOMException","validateSubmitter","hidden","HTMLFormElement","submittersByForm","clickCaptured","candidate","findSubmitterFromClickTarget","FrameLoadingStyle","FetchMethod","FormSubmissionState","FormEnctype","TimingMetric","VisitState","vendor","SubmitEvent","FrameElement","super","loaded","delegateConstructor","observedAttributes","connectedCallback","disconnectedCallback","reload","sourceURLReloaded","attributeChangedCallback","loadingStyleChanged","completeChanged","sourceURLChanged","disabledChanged","loading","lazy","eager","frameLoadingStyleFromString","autoscroll","isLoading","isActive","ownerDocument","isPreview","_b","expandURL","locatable","baseURI","getAnchor","anchorMatch","hash","getAction","getExtension","pathname","getPathComponents","getLastPathComponent","isPrefixedBy","baseURL","origin","endsWith","getPrefix","locationIsVisitable","rootLocation","getRequestURL","anchor","toCacheKey","succeeded","failed","clientError","serverError","isHTML","header","clone","responseHTML","isAction","activateScriptElement","createdScriptElement","getMetaContent","destinationElement","sourceElement","copyElementAttributes","nextAnimationFrame","requestAnimationFrame","parseHTMLDocument","unindent","strings","_key","lines","interpolate","indent","line","uuid","random","markAsBusy","localName","clearBusyState","waitForLoad","timeoutInMilliseconds","onComplete","once","getHistoryMethodForAction","history","replaceState","pushState","getMetaElement","FetchRequest","abortController","AbortController","resolveRequestPromise","_value","defaultHeaders","cancel","abort","prepareHeadersForRequest","allowRequestToBeIntercepted","requestStarted","receive","willDelegateErrorHandling","requestErrored","requestFinished","fetchResponse","requestPreventedHandlingResponse","requestSucceededWithResponse","requestFailedWithResponse","isIdempotent","abortSignal","referrer","acceptResponseType","mimeType","requestInterception","resume","AppearanceObserver","intersect","lastEntry","isIntersecting","elementAppearedInViewport","intersectionObserver","IntersectionObserver","unobserve","StreamMessage","fragment","streamElement","importNode","inertScriptElement","templateElement","replaceWith","importStreamElements","createDocumentFragment","FormSubmission","formElement","mustRedirect","initialized","buildFormData","mergeFormDataEntries","fetchRequest","_element","_submitter","post","put","patch","fetchMethodFromString","formElementAction","urlEncoded","stringFormData","encoding","multipart","plain","formEnctypeFromString","_FormSubmissionState","requesting","confirmationMessage","confirmMethod","_FormSubmissionState2","stopping","stopped","cookieName","getCookieValue","requestAcceptsTurboStreamResponse","_request","waiting","formSubmission","formSubmissionStarted","formSubmissionFailedWithResponse","requestMustRedirect","responseSucceededWithoutRedirect","formSubmissionErrored","receiving","formSubmissionSucceededWithResponse","formSubmissionFinished","Snapshot","activeElement","children","hasAnchor","getElementForAnchor","firstAutofocusableElement","permanentElements","queryPermanentElementsAll","getPermanentElementById","getPermanentElementMapForSnapshot","snapshot","permanentElementMap","currentPermanentElement","newPermanentElement","FormSubmitObserver","submitCaptured","submitBubbled","submissionDoesNotDismissDialog","getElementsByName","HTMLIFrameElement","submissionDoesNotTargetIFrame","willSubmitForm","formSubmitted","View","resolveRenderPromise","resolveInterceptionPromise","scrollToAnchor","scrollToElement","focusElement","scrollToPosition","x","y","scrollToAnchorFromLocation","focus","scrollRoot","scrollTo","scrollToTop","renderer","shouldRender","newSnapshot","renderPromise","prepareToRenderSnapshot","renderInterception","render","renderElement","allowsImmediateRender","renderSnapshot","viewRenderedSnapshot","preloadOnLoadLinksForView","finishRenderingSnapshot","invalidate","reloadReason","reason","viewInvalidated","markAsPreview","prepareToRender","finishRendering","FrameView","LinkInterceptor","clickBubbled","respondsToEventTarget","clickEvent","linkClicked","shouldInterceptLinkClick","originalEvent","linkClickIntercepted","willVisit","_event","LinkClickObserver","MouseEvent","clickEventIsSignificant","composedPath","findLinkFromClickTarget","doesNotTargetIFrame","getLocationForLink","willFollowLinkToLocation","followedLinkToLocation","isContentEditable","which","FormLinkClickObserver","linkInterceptor","willSubmitFormLinkToLocation","turboFrame","turboAction","turboConfirm","submittedFormLinkToLocation","Bardo","bardo","leave","_this$permanentElemen","enteringBardo","replaceNewPermanentElementWithPlaceholder","replaceCurrentPermanentElementWithClone","replacePlaceholderWithPermanentElement","leavingBardo","permanentElement","placeholder","createPlaceholderForPermanentElement","cloneNode","getPlaceholderById","placeholders","Renderer","currentSnapshot","willRender","resolvingFunctions","preservingPermanentElements","focusFirstAutofocusableElement","connectedSnapshot","elementIsFocusable","currentElement","newElement","FrameRenderer","destinationRange","createRange","selectNodeContents","deleteContents","frameElement","sourceRange","extractContents","loadFrameElement","scrollFrameIntoView","activateScriptElements","willRenderFrame","firstElementChild","readScrollBehavior","newScriptElements","activatedScriptElement","ProgressBar","hiding","visible","trickle","setValue","stylesheetElement","createStylesheetElement","progressElement","createProgressElement","installStylesheetElement","defaultCSS","animationDuration","show","installProgressElement","startTrickling","hide","fadeProgressElement","uninstallProgressElement","stopTrickling","insertBefore","firstChild","width","opacity","trickleInterval","setInterval","clearInterval","className","HeadSnapshot","detailsByOuterHTML","elementIsNoscript","elementWithoutNonce","outerHTML","elementType","tracked","elementIsTracked","trackedElementSignature","getScriptElementsNotInSnapshot","getElementsMatchingTypeNotInSnapshot","getStylesheetElementsNotInSnapshot","matchedType","provisionalElements","_this$detailsByOuterH","getMetaValue","findMetaElementByName","elementIsMetaElementWithName","elementIsScript","elementIsStylesheet","PageSnapshot","headSnapshot","fromDocument","clonedElement","selectElements","clonedSelectElements","clonedPasswordInput","headElement","getSetting","cacheControlValue","isPreviewable","isCacheable","isVisitable","defaultOptions","historyChanged","visitCachedSnapshot","updateHistory","shouldCacheSnapshot","acceptsStreamResponse","SystemStatusCode","PageStage","Visit","restorationIdentifier","timingMetrics","followedRedirect","scrolled","snapshotCached","_Object$assign","snapshotHTML","isSamePage","locationWithActionIsSamePage","adapter","view","restorationData","getRestorationDataForIdentifier","silent","recordTimingMetric","visitStart","visitStarted","cancelRender","canceled","visitEnd","completed","followRedirect","visitCompleted","fail","visitFailed","changeHistory","issueRequest","hasPreloadedResponse","simulateRequest","shouldIssueRequest","startRequest","recordResponse","finishRequest","requestStart","visitRequestStarted","isSuccessful","visitRequestCompleted","visitRequestFailedWithStatusCode","requestEnd","visitRequestFinished","loadResponse","_this$response","cacheSnapshot","renderPage","fromHTMLString","performScroll","visitRendered","renderError","getCachedSnapshot","getCachedSnapshotForLocation","getPreloadedSnapshot","hasCachedSnapshot","loadCachedSnapshot","redirectedToLocation","visitProposedToLocation","goToSamePageAnchor","_response","contentTypeMismatch","_error","networkFailure","forceReloaded","scrollToRestoredPosition","visitScrolledToSamePageLocation","lastRenderedLocation","scrollPosition","metric","Date","getTime","getTimingMetrics","frame","cancelAnimationFrame","BrowserAdapter","session","progressBar","showProgressBar","startVisit","showVisitProgressBarAfterDelay","timeoutFailure","_visit","hideVisitProgressBar","pageInvalidated","_formSubmission","showFormProgressBarAfterDelay","hideFormProgressBar","visitProgressBarTimeout","progressBarDelay","formProgressBarTimeout","CacheObserver","removeStaleElements","staleElements","FrameRedirector","formSubmitObserver","_location","shouldRedirect","findFrameElement","shouldSubmit","submissionIsNavigatable","elementIsNavigatable","History","pageLoaded","onPopState","shouldHandlePopState","turbo","historyPoppedToLocationWithRestorationIdentifier","onPageLoad","updateRestorationData","additionalData","assumeControlOfScrollRestoration","previousScrollRestoration","scrollRestoration","relinquishControlOfScrollRestoration","pageIsLoaded","Navigator","proposeVisit","allowsVisitingLocationWithAction","currentVisit","submitForm","clearSnapshotCache","visitOptions","getActionForFormSubmission","currentAnchor","isRestorationToTop","oldURL","newURL","PageObserver","stage","initial","interpretReadyState","pageIsInteractive","pageIsComplete","pageWillUnload","interactive","pageBecameInteractive","ScrollObserver","onScroll","updatePosition","pageXOffset","pageYOffset","scrollPositionChanged","StreamMessageRenderer","permanentElementsInDocument","permanentElementInDocument","elementInStream","getPermanentElementMapForFragment","StreamObserver","sources","inspectFetchResponse","fetchResponseFromEvent","fetchResponseIsStream","receiveMessageResponse","receiveMessageEvent","receiveMessageHTML","connectStreamSource","streamSourceIsConnected","disconnectStreamSource","receivedMessageFromStream","wrap","ErrorRenderer","_document","replaceChild","replaceHeadAndBody","_document2","newHead","replaceableElement","scriptElements","PageRenderer","HTMLBodyElement","trackedElementsAreIdentical","mergeHead","replaceBody","currentHeadSnapshot","newHeadSnapshot","newStylesheetElements","copyNewHeadStylesheetElements","copyNewHeadScriptElements","removeCurrentHeadProvisionalElements","copyNewHeadProvisionalElements","activateNewBody","assignNewBody","loadingElements","newHeadStylesheetElements","newHeadScriptElements","currentHeadProvisionalElements","newHeadProvisionalElements","adoptNode","activateNewBodyScriptElements","newBodyScriptElements","SnapshotCache","snapshots","touch","splice","unshift","PageView","snapshotCache","viewWillCacheSnapshot","cachedSnapshot","fromElement","Preloader","preloadURL","extendURLWithDeprecatedProperties","deprecatedLocationPropertyDescriptors","absoluteURL","StreamActions","after","targetElements","templateContent","nextSibling","removeDuplicateTargetChildren","prepend","replaceChildren","preloader","pageObserver","cacheObserver","linkClickObserver","scrollObserver","streamObserver","formLinkClickObserver","frameRedirector","streamMessageRenderer","drive","enabled","formMode","disable","registerAdapter","clearCache","setProgressBarDelay","delay","setFormMode","applicationAllowsFollowingLinkToLocation","getActionForLink","applicationAllowsVisitingLocation","notifyApplicationAfterVisitingLocation","notifyApplicationAfterPageLoad","notifyApplicationAfterVisitingSamePageLocation","notifyApplicationBeforeCachingSnapshot","notifyApplicationBeforeRender","_snapshot","_isPreview","notifyApplicationAfterRender","frameLoaded","notifyApplicationAfterFrameLoad","frameRendered","notifyApplicationAfterFrameRender","ev","notifyApplicationAfterClickingLinkToLocation","notifyApplicationBeforeVisitingLocation","newBody","timing","HashChangeEvent","submitterIsNavigatable","container","withinFrame","cache","resetCacheControl","setCacheControl","exemptPageFromCache","exemptPageFromPreview","setMetaContent","navigator$1","setConfirmMethod","freeze","getFrameElementById","activateElement","currentURL","StreamElement","performAction","beforeRenderEvent","duplicateChildren","existingChildren","flatMap","newChildrenIds","actionFunction","targetElementsById","targetElementsByQuery","HTMLTemplateElement","description","newStream","StreamSourceElement","streamSource","WebSocket","EventSource","consumer","getConsumer","setConsumer","createConsumer","newConsumer","subscribeTo","channel","mixin","subscriptions","walk","acc","fetchResponseLoaded","_fetchResponse","currentFetchRequest","resolveVisitPromise","connected","hasBeenLoaded","ignoredAttributes","previousFrameElement","appearanceObserver","loadingStyle","loadSourceURL","isIgnoringChangesTo","ignoringChangesToAttribute","sourceURL","newFrameElement","extractForeignFrameElement","willHandleFrameMissingFromResponse","visitResponse","shouldInterceptNavigation","navigateFrame","currentNavigationElement","proposeVisitIfNavigatedWithAction","newFrame","_newElement","pageSnapshot","withCurrentNavigationElement","getVisitAction","Response","wrapped","CSS","escape","formActionIsVisitable","define","currentScript","subscription","received","dispatchMessageEvent","unsubscribe","MessageEvent","signed_stream_name","formMethod"],"mappings":"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AAC,KAAM,KAAM,MACnB,GAAM,CAAC,MACP,GAAM,CAAC,MACP,GAAM,CAAC,MACP,GAAM,CAAC,MACP,GAAM,CAAC,MACP,GAAM,CAAC,MACP,GAAM,CAAC,MACP,GAAM,CAAC,MACP,GAAM,CAAC,MACP,GAAM,CAAC,MACP,GAAM,CAAC,MACP,GAAM,CAAC,MACP,GAAM,CAAC,MACP,GAAM,CAAC,MACP,GAAM,CAAC,MACP,GAAM,CAAC,MACP,IAAO,CAAC,MACR,IAAO,CAAC,KAAM,MACd,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,KAAM,MACd,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,KAAM,MACd,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,KAAM,MACd,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,KAAM,KAAM,MACpB,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,KAAM,MACd,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,MACR,IAAO,CAAC,OAEV,UAAa,CACX,GAAM,CAAC,MAAO,KAAM,4BAA6B,CAAC,EAAG,IACrD,GAAM,CAAC,MAAO,KAAM,iCAAkC,CAAC,EAAG,EAAG,GAAI,CAAC,CAAC,mBAAoB,QAAS,CAAC,YAAa,CAAC,mBAAoB,QAAS,CAAC,MAAO,CAAC,2BAA4B,WAAY,CAAC,QAC9L,GAAM,CAAC,MAAO,KAAM,yDAA0D,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,IAAK,CAAC,CAAC,qBAAsB,QAAS,CAAC,SAAU,CAAC,wBAAyB,WAAY,CAAC,oBAAqB,OAAQ,CAAC,wBAAyB,WAAY,CAAC,UAAW,CAAC,2BAA4B,WAAY,CAAC,KAAM,QAAS,KACtU,GAAM,CAAC,KAAM,KAAM,cAAe,CAAC,GAAI,CAAC,CAAC,2BAA4B,WAAY,CAAC,SAAU,QAAS,KACrG,GAAM,CAAC,IAAK,MAAO,+BAAgC,CAAC,IAAK,EAAG,IAAK,EAAG,mBAAoB,QAAS,EAAG,OACpG,GAAM,CAAC,IAAK,MAAO,+BAAgC,CAAC,IAAK,EAAG,IAAK,EAAG,oBAAqB,QAAS,EAAG,OACrG,GAAM,CAAC,MAAO,KAAM,yDAA0D,CAAC,EAAG,EAAG,EAAG,GAAI,CAAC,CAAC,qBAAsB,QAAS,CAAC,QAAS,OAAQ,CAAC,wBAAyB,WAAY,CAAC,UAAW,OAAQ,CAAC,2BAA4B,WAAY,CAAC,iBAAkB,OAAQ,CAAC,mBAAoB,QAAS,CAAC,WAAY,OAAQ,CAAC,2BAA4B,WAAY,CAAC,KAAM,QAAS,KACzX,GAAM,CAAC,MAAO,KAAM,gCAAiC,CAAC,GAAI,CAAC,CAAC,2BAA4B,WAAY,CAAC,SAAU,QAAS,CAAC,mBAAoB,QAAS,CAAC,WAAY,SAAU,CAAC,mBAAoB,QAAS,CAAC,QAAS,SAAU,CAAC,mBAAoB,QAAS,CAAC,SAAU,QAAS,KACjR,GAAM,CAAC,MAAO,KAAM,aAAc,CAAC,GAAI,CAAC,CAAC,2BAA4B,WAAY,CAAC,WAClF,GAAM,CAAC,KAAM,KAAM,uCAAwC,CAAC,GAAI,IAAK,CAAC,CAAC,2BAA4B,WAAY,CAAC,uFAAwF,kNAAmN,kSAAmS,+WAAgX,MAAO,GAAI,CAAC,2BAA4B,WAAY,CAAC,KAAM,MAAO,GAAI,CAAC,2BAA4B,WAAY,CAAC,QAAS,OAAQ,CAAC,2BAA4B,WAAY,CAAC,QAAS,MAAO,GAAI,CAAC,gCAAiC,cAAe,CAAC,yBAA0B,4FAA6F,wNAAyN,4SAA6S,wXAAyX,MAAO,EAAG,eAAgB,CAAC,gCAAiC,cAAe,CAAC,MAAO,MAAO,EAAG,eAAgB,CAAC,2BAA4B,WAAY,CAAC,KAAM,OAAQ,CAAC,gCAAiC,cAAe,CAAC,KAAM,MAAO,EAAG,gBAAiB,IAAK,EAAG,0jBAA2jB,OAChlG,GAAM,CAAC,IAAK,MAAO,+BAAgC,CAAC,IAAK,EAAG,IAAK,EAAG,mBAAoB,QAAS,EAAG,OACpG,GAAM,CAAC,KAAM,KAAM,mKAAoK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,IAAK,CAAC,CAAC,mBAAoB,QAAS,CAAC,iBAAkB,OAAQ,CAAC,mBAAoB,QAAS,CAAC,OAAQ,OAAQ,CAAC,qBAAsB,QAAS,CAAC,UAAW,OAAQ,CAAC,sBAAuB,QAAS,CAAC,uDAAwD,OAAQ,CAAC,qBAAsB,QAAS,CAAC,kBAAmB,OAAQ,CAAC,6BAA8B,WAAY,CAAC,KAAM,OAAQ,CAAC,6BAA8B,WAAY,CAAC,KAAM,QAAS,KAC3oB,GAAM,CAAC,KAAM,sDAAuD,+EAAgF,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,CAAC,CAAC,qBAAsB,QAAS,CAAC,MAAO,OAAQ,CAAC,6BAA8B,WAAY,CAAC,MAAO,OAAQ,CAAC,2BAA4B,WAAY,CAAC,QAAS,OAAQ,CAAC,wBAAyB,WAAY,CAAC,UAAW,SAAU,CAAC,2BAA4B,WAAY,CAAC,kBAAmB,IAAK,EAAG,cAAe,EAAG,EAAG,EAAG,CAAC,CAAC,8cAA+c,CAAC,IAAK,CAAC,0GAA2G,CAAC,IAAK,CAAC,yBAA0B,CAAC,EAAG,KAAM,CAAC,kBAAmB,CAAC,KAAM,EAAG,EAAG,EAAG,CAAC,cAAe,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,CAAC,2CAA4C,CAAC,IAAK,CAAC,mDAAoD,CAAC,EAAG,EAAG,GAAI,MAAO,QAC3xC,GAAM,CAAC,MAAO,KAAM,8BAA+B,CAAC,GAAI,CAAC,CAAC,mBAAoB,QAAS,CAAC,aACxF,GAAM,CAAC,MAAO,sDAAuD,4FAA6F,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,KAAM,EAAG,MAC5N,GAAM,CAAC,MAAO,KAAM,wCAAyC,CAAC,GAAI,CAAC,CAAC,mCAAoC,cAAe,CAAC,MAAO,OAAQ,CAAC,mCAAoC,cAAe,CAAC,iBAAkB,qBAAsB,6BAA8B,SAAU,CAAC,mCAAoC,cAAe,CAAC,UAAW,QAAS,KACrV,GAAM,CAAC,MAAO,KAAM,qCAAsC,CAAC,EAAG,GAAI,CAAC,CAAC,2BAA4B,WAAY,CAAC,gBAAiB,OAAQ,CAAC,2BAA4B,WAAY,CAAC,eAAgB,OAAQ,CAAC,mCAAoC,cAAe,CAAC,KAAM,QAAS,KAC5Q,GAAM,CAAC,IAAK,MAAO,+BAAgC,CAAC,IAAK,EAAG,IAAK,EAAG,mBAAoB,QAAS,EAAG,OACpG,GAAM,CAAC,MAAO,KAAM,kFAAmF,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,CAAC,CAAC,qBAAsB,QAAS,CAAC,kBAAmB,OAAQ,CAAC,qBAAsB,QAAS,CAAC,wLAAyL,OAAQ,CAAC,qBAAsB,QAAS,CAAC,gBAAiB,OAAQ,CAAC,kBAAmB,QAAS,CAAC,KAAM,QAAS,KAC/f,GAAM,CAAC,KAAM,KAAM,sBAAuB,CAAC,EAAG,GAAI,CAAC,CAAC,2BAA4B,WAAY,CAAC,aAAc,OAAQ,CAAC,gCAAiC,cAAe,CAAC,eAAgB,OAAQ,CAAC,mCAAoC,cAAe,CAAC,UAAW,OAAQ,CAAC,mCAAoC,cAAe,CAAC,KAAM,QAAS,KACzU,GAAM,CAAC,MAAO,KAAM,gBAAiB,CAAC,GAAI,CAAC,CAAC,mCAAoC,cAAe,CAAC,cAChG,GAAM,CAAC,MAAO,KAAM,iDAAkD,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,CAAC,CAAC,6BAA8B,cAAe,CAAC,KAAM,OAAQ,CAAC,mBAAoB,QAAS,CAAC,mBAAoB,OAAQ,CAAC,0BAA2B,WAAY,CAAC,KAAM,OAAQ,CAAC,6BAA8B,WAAY,CAAC,uCAAwC,OAAQ,CAAC,2BAA4B,WAAY,CAAC,aAAc,OAAQ,CAAC,2BAA4B,WAAY,CAAC,aAAc,OAAQ,CAAC,6BAA8B,WAAY,CAAC,cAAe,OAAQ,CAAC,2BAA4B,WAAY,CAAC,KAAM,QAAS,KAChmB,GAAM,CAAC,MAAO,KAAM,gBAAiB,CAAC,GAAI,CAAC,CAAC,mBAAoB,QAAS,CAAC,yBAC1E,GAAM,CAAC,MAAO,KAAM,wBAAyB,CAAC,GAAI,CAAC,CAAC,mCAAoC,cAAe,CAAC,aACxG,GAAM,CAAC,MAAO,KAAM,iBAAkB,CAAC,GAAI,CAAC,CAAC,mCAAoC,cAAe,CAAC,eACjG,GAAM,CAAC,MAAO,KAAM,iCAAkC,CAAC,GAAI,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,uCAAwC,CAAC,8FAA+F,CAAC,iBAAkB,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,gDAC/P,GAAM,CAAC,IAAK,MAAO,+BAAgC,CAAC,IAAK,EAAG,IAAK,EAAG,mBAAoB,QAAS,EAAG,OACpG,GAAM,CAAC,MAAO,KAAM,gBAAiB,CAAC,GAAI,CAAC,CAAC,mBAAoB,QAAS,CAAC,cAC1E,GAAM,CAAC,MAAO,cAAe,qCAAsC,CAAC,EAAG,GAAI,CAAC,CAAC,gBAAiB,QAAS,CAAC,gBAAiB,CAAC,WAAY,KAAM,CAAC,SAAU,CAAC,2BAA4B,WAAY,CAAC,OAAQ,IAAK,EAAG,YACjN,GAAM,CAAC,MAAO,KAAM,uBAAwB,CAAC,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,SACnE,GAAM,CAAC,KAAM,yCAA0C,0FAA2F,CAAC,EAAG,EAAG,GAAI,IAAK,CAAC,CAAC,mBAAoB,QAAS,CAAC,oBAAqB,uBAAwB,CAAC,6BAA8B,WAAY,CAAC,iBAAkB,OAAQ,CAAC,2BAA4B,WAAY,CAAC,8DAA+D,QAAS,CAAC,2BAA4B,WAAY,CAAC,sBAAuB,SAAU,IAAK,EAAG,8DAA+D,MACzjB,GAAM,CAAC,IAAK,MAAO,+BAAgC,CAAC,IAAK,EAAG,IAAK,EAAG,mBAAoB,QAAS,EAAG,OACpG,GAAM,CAAC,MAAO,KAAM,yBAA0B,CAAC,EAAG,GAAI,CAAC,CAAC,wBAAyB,WAAY,CAAC,kBAAmB,CAAC,mCAAoC,cAAe,CAAC,cACtK,GAAM,CAAC,MAAO,KAAM,uDAAwD,CAAC,EAAG,EAAG,IAAK,CAAC,CAAC,mBAAoB,QAAS,CAAC,OAAQ,CAAC,mBAAoB,QAAS,CAAC,mBAAoB,CAAC,2BAA4B,WAAY,CAAC,SAAU,CAAC,2BAA4B,WAAY,CAAC,MAAO,CAAC,2BAA4B,WAAY,CAAC,QAClU,GAAM,CAAC,MAAO,MAAO,mIAAoI,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,CAAC,CAAC,mBAAoB,QAAS,CAAC,OAAQ,QAAS,CAAC,6BAA8B,WAAY,CAAC,OAAQ,QAAS,CAAC,2BAA4B,WAAY,CAAC,oDAAqD,yFAA0F,SAAU,CAAC,mCAAoC,cAAe,CAAC,2BAA4B,SAAU,CAAC,mCAAoC,cAAe,CAAC,SAAU,SAAU,CAAC,6BAA8B,WAAY,CAAC,QAAS,SAAU,IAAK,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,QAChuB,GAAM,CAAC,MAAO,KAAM,0BAA2B,CAAC,EAAG,IAAK,CAAC,CAAC,mBAAoB,QAAS,CAAC,UAAW,CAAC,gCAAiC,cAAe,CAAC,QACrJ,GAAM,CAAC,IAAK,MAAO,gCAAiC,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,8MAA+M,CAAC,KAAM,CAAC,GAAI,CAAC,KAAM,CAAC,uCAAwC,CAAC,KAAM,CAAC,iBAAkB,CAAC,KAAM,CAAC,kPAAmP,CAAC,KAAM,EAAG,CAAC,YAAa,CAAC,IAAK,EAAG,CAAC,iBAAkB,CAAC,OAC3qB,GAAM,CAAC,KAAM,sDAAuD,qEAAsE,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,EAAG,IAAK,EAAG,kBAAmB,MAAO,EAAG,EAAG,CAAC,CAAC,0IAA2I,CAAC,IAAK,CAAC,0GAA2G,CAAC,IAAK,CAAC,yBAA0B,CAAC,EAAG,KAAM,CAAC,kBAAmB,CAAC,KAAM,EAAG,EAAG,EAAG,EAAG,CAAC,2CAA4C,CAAC,IAAK,CAAC,mDAAoD,CAAC,EAAG,EAAG,GAAI,MAAO,QACtpB,GAAM,CAAC,MAAO,KAAM,6CAA8C,CAAC,EAAG,EAAG,EAAG,IAAK,CAAC,CAAC,2BAA4B,WAAY,CAAC,MAAO,OAAQ,CAAC,mBAAoB,QAAS,CAAC,SAAU,OAAQ,CAAC,2BAA4B,WAAY,CAAC,KAAM,OAAQ,CAAC,2BAA4B,WAAY,CAAC,KAAM,OAAQ,CAAC,2BAA4B,WAAY,CAAC,QAAS,OAAQ,CAAC,mCAAoC,cAAe,CAAC,KAAM,QAAS,KAC3a,GAAM,CAAC,MAAO,KAAM,4BAA6B,CAAC,GAAI,CAAC,CAAC,mCAAoC,cAAe,CAAC,YAC5G,GAAM,CAAC,MAAO,KAAM,8BAA+B,CAAC,GAAI,CAAC,CAAC,wBAAyB,WAAY,CAAC,MAAO,CAAC,2BAA4B,WAAY,CAAC,WACjJ,GAAM,CAAC,KAAM,KAAM,uBAAwB,CAAC,EAAG,IAAK,CAAC,CAAC,2BAA4B,WAAY,CAAC,aAAc,OAAQ,CAAC,mCAAoC,cAAe,CAAC,aAAc,OAAQ,CAAC,2CAA4C,iBAAkB,CAAC,KAAM,QAAS,KAC/Q,GAAM,CAAC,MAAO,KAAM,aAAc,CAAC,IAAK,CAAC,CAAC,gCAAiC,cAAe,CAAC,MAAO,CAAC,mCAAoC,cAAe,CAAC,QACvJ,GAAM,CAAC,MAAO,KAAM,gBAAiB,CAAC,GAAI,CAAC,CAAC,mBAAoB,QAAS,CAAC,cAC1E,GAAM,CAAC,KAAM,yDAA0D,qCAAsC,CAAC,EAAG,GAAI,IAAK,CAAC,CAAC,mBAAoB,QAAS,CAAC,MAAO,QAAS,QAAS,CAAC,2BAA4B,WAAY,CAAC,OAAQ,CAAC,wBAAyB,WAAY,CAAC,WAAY,QAAS,CAAC,wBAAyB,WAAY,CAAC,WAAY,CAAC,2BAA4B,WAAY,CAAC,oDAAqD,QAAS,CAAC,6BAA8B,WAAY,CAAC,SAAU,CAAC,2BAA4B,WAAY,CAAC,MAAO,CAAC,mCAAoC,cAAe,CAAC,SACxlB,GAAM,CAAC,MAAO,KAAM,wBAAyB,CAAC,EAAG,GAAI,CAAC,CAAC,mCAAoC,cAAe,CAAC,OAAQ,CAAC,wCAAyC,iBAAkB,CAAC,cAChL,GAAM,CAAC,KAAM,6BAA8B,2HAA4H,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,IAAK,CAAC,CAAC,qBAAsB,QAAS,CAAC,2TAA4T,kWAAmW,wXAAyX,0XAA2X,wXAAyX,OAAQ,CAAC,qBAAsB,QAAS,CAAC,+QAAgR,4SAA6S,qUAAsU,wUAAyU,OAAQ,CAAC,2BAA4B,WAAY,CAAC,cAAe,CAAC,2BAA4B,WAAY,CAAC,2BAA4B,2BAA4B,8DAA+D,MAAO,GAAI,CAAC,2BAA4B,WAAY,CAAC,iMAAkM,MAAO,GAAI,CAAC,qBAAsB,QAAS,CAAC,MAAO,CAAC,2BAA4B,WAAY,CAAC,MAAO,MAAO,GAAI,CAAC,2BAA4B,WAAY,CAAC,WAAY,MAAO,GAAI,CAAC,2BAA4B,WAAY,CAAC,WAAY,CAAC,mCAAoC,cAAe,CAAC,QAAS,MAAO,IAAK,IAAK,EAAG,4BAA6B,EAAG,EAAG,EAAG,EAAG,MAC3hI,GAAM,CAAC,KAAM,4BAA6B,+BAAgC,CAAC,GAAI,IAAK,CAAC,CAAC,mBAAoB,QAAS,CAAC,QAAS,QAAS,CAAC,mBAAoB,QAAS,CAAC,gBAAiB,CAAC,wBAAyB,WAAY,CAAC,KAAM,MAAO,EAAG,aAAc,IAAK,EAAG,4BACnQ,GAAM,CAAC,MAAO,KAAM,gDAAiD,CAAC,EAAG,IAAK,CAAC,CAAC,mBAAoB,QAAS,CAAC,iBAAkB,CAAC,2BAA4B,WAAY,CAAC,UAAW,EAAG,EAAG,uCAC3L,GAAM,CAAC,KAAM,MAAO,kDAAmD,CAAC,EAAG,EAAG,EAAG,IAAK,CAAC,CAAC,qBAAsB,QAAS,CAAC,eAAgB,SAAU,CAAC,kBAAmB,QAAS,CAAC,KAAM,SAAU,CAAC,gBAAiB,QAAS,CAAC,QAAS,OAAQ,CAAC,mBAAoB,QAAS,CAAC,KAAM,QAAS,KAC3R,GAAM,CAAC,MAAO,IAAK,6BAA8B,CAAC,GAAI,CAAC,CAAC,2BAA4B,WAAY,CAAC,cACjG,GAAM,CAAC,MAAO,KAAM,mCAAoC,CAAC,EAAG,GAAI,CAAC,CAAC,mBAAoB,QAAS,CAAC,WAAY,CAAC,wBAAyB,WAAY,CAAC,YAAa,EAAG,EAAG,EAAG,EAAG,EAAG,QAC/K,GAAM,CAAC,KAAM,sDAAuD,qEAAsE,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,EAAG,IAAK,EAAG,kBAAmB,MAAO,EAAG,EAAG,CAAC,CAAC,4JAA6J,CAAC,IAAK,CAAC,0GAA2G,CAAC,IAAK,CAAC,yBAA0B,CAAC,EAAG,KAAM,CAAC,kBAAmB,CAAC,KAAM,EAAG,EAAG,EAAG,EAAG,CAAC,2CAA4C,CAAC,IAAK,CAAC,mDAAoD,CAAC,EAAG,EAAG,GAAI,MAAO,QACxqB,GAAM,CAAC,MAAO,KAAM,2BAA4B,CAAC,GAAI,CAAC,CAAC,mBAAoB,QAAS,CAAC,cACrF,GAAM,CAAC,MAAO,KAAM,qCAAsC,CAAC,EAAG,GAAI,GAAI,IAAK,CAAC,CAAC,2BAA4B,WAAY,CAAC,mBAAoB,CAAC,mCAAoC,cAAe,CAAC,OAAQ,CAAC,mCAAoC,cAAe,CAAC,MAAO,CAAC,mCAAoC,cAAe,CAAC,QACxT,GAAM,CAAC,KAAM,KAAM,gMAAiM,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,CAAC,CAAC,sBAAuB,QAAS,CAAC,kBAAmB,OAAQ,CAAC,sBAAuB,QAAS,CAAC,sGAAuG,gHAAiH,OAAQ,CAAC,sBAAuB,QAAS,CAAC,uGAAwG,4bAA6b,OAAQ,CAAC,mBAAoB,QAAS,CAAC,OAAQ,OAAQ,CAAC,sBAAuB,QAAS,CAAC,KAAM,OAAQ,CAAC,sBAAuB,QAAS,CAAC,OAAQ,OAAQ,CAAC,2BAA4B,WAAY,CAAC,eAAgB,OAAQ,CAAC,qBAAsB,QAAS,CAAC,SAAU,OAAQ,CAAC,sBAAuB,QAAS,CAAC,KAAM,OAAQ,CAAC,mBAAoB,QAAS,CAAC,MAAO,OAAQ,SAAU,OAAQ,CAAC,2BAA4B,WAAY,CAAC,KAAM,OAAQ,CAAC,mBAAoB,QAAS,CAAC,UAAW,OAAQ,CAAC,mBAAoB,QAAS,CAAC,YAAa,OAAQ,CAAC,mBAAoB,QAAS,CAAC,YAAa,mBAAoB,OAAQ,CAAC,mBAAoB,QAAS,CAAC,MAAO,OAAQ,CAAC,6BAA8B,WAAY,CAAC,iBAAkB,OAAQ,CAAC,2BAA4B,WAAY,CAAC,WAAY,OAAQ,CAAC,2BAA4B,WAAY,CAAC,MAAO,QAAS,KACv9D,GAAM,CAAC,MAAO,KAAM,oBAAqB,CAAC,GAAI,CAAC,CAAC,mCAAoC,cAAe,CAAC,WACpG,GAAM,CAAC,KAAM,KAAM,cAAe,CAAC,GAAI,CAAC,CAAC,mCAAoC,cAAe,CAAC,YAC7F,GAAM,CAAC,IAAK,MAAO,+BAAgC,CAAC,IAAK,EAAG,IAAK,EAAG,mBAAoB,QAAS,EAAG,OACpG,GAAM,CAAC,IAAK,MAAO,2BAA4B,CAAC,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,gBACzE,GAAM,CAAC,MAAO,KAAM,+BAAgC,CAAC,EAAG,GAAI,CAAC,CAAC,mCAAoC,cAAe,CAAC,SAAU,OAAQ,CAAC,mCAAoC,cAAe,CAAC,KAAM,OAAQ,CAAC,mCAAoC,cAAe,CAAC,SAAU,QAAS,KAC/Q,GAAM,CAAC,MAAO,KAAM,kCAAmC,CAAC,EAAG,EAAG,GAAI,IAAK,CAAC,CAAC,wBAAyB,WAAY,CAAC,SAAU,QAAS,EAAG,YAAa,CAAC,2BAA4B,WAAY,CAAC,KAAM,OAAQ,CAAC,6BAA8B,WAAY,CAAC,OAAQ,KAC9P,GAAM,CAAC,MAAO,KAAM,6CAA8C,CAAC,EAAG,EAAG,IAAK,CAAC,CAAC,mBAAoB,QAAS,CAAC,mDAAoD,iFAAkF,CAAC,qBAAsB,QAAS,CAAC,sBAAuB,6BAA8B,CAAC,2BAA4B,WAAY,CAAC,MAAO,CAAC,2BAA4B,WAAY,CAAC,QACra,GAAM,CAAC,KAAM,KAAM,yCAA0C,CAAC,EAAG,EAAG,IAAK,CAAC,CAAC,kBAAmB,QAAS,CAAC,QAAS,OAAQ,CAAC,qBAAsB,QAAS,CAAC,gCAAiC,OAAQ,CAAC,2BAA4B,WAAY,CAAC,QAAS,OAAQ,CAAC,mBAAoB,QAAS,CAAC,KAAM,QAAS,KAC5S,GAAM,CAAC,MAAO,KAAM,cAAe,CAAC,GAAI,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,WAC5D,GAAM,CAAC,MAAO,KAAM,cAAe,CAAC,GAAI,CAAC,CAAC,wBAAyB,WAAY,CAAC,SAAU,QAAS,KACnG,GAAM,CAAC,KAAM,KAAM,cAAe,CAAC,GAAI,CAAC,CAAC,2BAA4B,WAAY,CAAC,WAAY,CAAC,mCAAoC,cAAe,CAAC,YACnJ,GAAM,CAAC,MAAO,KAAM,0BAA2B,CAAC,GAAI,CAAC,CAAC,2BAA4B,WAAY,CAAC,WAAY,QAAS,KACpH,GAAM,CAAC,MAAO,sDAAuD,2EAA4E,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,IAAK,CAAC,CAAC,WAAY,KAAM,CAAC,YAAa,OAAQ,CAAC,qBAAsB,QAAS,CAAC,6BAA8B,OAAQ,CAAC,qBAAsB,QAAS,CAAC,wBAAyB,OAAQ,CAAC,sBAAuB,QAAS,CAAC,KAAM,OAAQ,CAAC,kBAAmB,QAAS,CAAC,6CAA8C,QAAS,IAAK,EAAG,EAAG,EAAG,EAAG,iBAAkB,EAAG,MAC5gB,GAAM,CAAC,MAAO,YAAa,qCAAsC,CAAC,EAAG,IAAK,CAAC,CAAC,mBAAoB,QAAS,CAAC,eAAgB,CAAC,2BAA4B,WAAY,CAAC,OAAQ,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,MACjM,GAAM,CAAC,MAAO,KAAM,cAAe,CAAC,IACpC,GAAM,CAAC,MAAO,KAAM,2BAA4B,CAAC,GAAI,CAAC,CAAC,mBAAoB,QAAS,CAAC,YACrF,GAAM,CAAC,MAAO,KAAM,cAAe,CAAC,GAAI,CAAC,CAAC,WAAY,KAAM,CAAC,WAAY,EAAG,EAAG,uBAC/E,GAAM,CAAC,KAAM,KAAM,cAAe,CAAC,GAAI,CAAC,CAAC,mCAAoC,cAAe,CAAC,KAAM,QAAS,CAAC,wCAAyC,iBAAkB,CAAC,UAAW,QAAS,KAC7L,GAAM,CAAC,MAAO,KAAM,oCAAqC,CAAC,EAAG,GAAI,CAAC,CAAC,gCAAiC,cAAe,CAAC,SAAU,OAAQ,CAAC,mCAAoC,cAAe,CAAC,MAAO,CAAC,mCAAoC,cAAe,CAAC,WAAY,QAAS,EAAG,EAAG,0DAA2D,MAC7U,GAAM,CAAC,KAAM,KAAM,qCAAsC,CAAC,EAAG,EAAG,IAAK,CAAC,CAAC,mBAAoB,QAAS,CAAC,MAAO,OAAQ,QAAS,SAAU,WAAY,OAAQ,CAAC,2BAA4B,WAAY,CAAC,MAAO,OAAQ,QAAS,UAAW,OAAQ,CAAC,mBAAoB,QAAS,CAAC,OAAQ,OAAQ,CAAC,qBAAsB,QAAS,CAAC,yBAA0B,qCAAsC,oDAAqD,OAAQ,CAAC,qBAAsB,QAAS,CAAC,0BAA2B,OAAQ,CAAC,2BAA4B,WAAY,CAAC,sBAAuB,kCAAmC,OAAQ,CAAC,mBAAoB,QAAS,CAAC,KAAM,OAAQ,CAAC,2BAA4B,WAAY,CAAC,UAAW,QAAS,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,07CAA27C,CAAC,EAAG,KAAM,CAAC,4NAA6N,CAAC,KAAM,CAAC,kCAAmC,CAAC,8DAA+D,CAAC,EAAG,KAAM,CAAC,WAAY,CAAC,KAAM,EAAG,CAAC,uBAAwB,CAAC,KAAM,CAAC,4FAA6F,CAAC,KAAM,CAAC,WAAY,CAAC,MAAO,EAAG,MAC1rF,GAAM,CAAC,IAAK,MAAO,+BAAgC,CAAC,IAAK,EAAG,IAAK,EAAG,mBAAoB,QAAS,EAAG,OACpG,GAAM,CAAC,MAAO,KAAM,6BAA8B,CAAC,GAAI,CAAC,CAAC,2BAA4B,WAAY,CAAC,MAAO,OAAQ,CAAC,mCAAoC,cAAe,CAAC,MAAO,OAAQ,CAAC,mCAAoC,cAAe,CAAC,SAAU,CAAC,mCAAoC,cAAe,CAAC,SAAU,QAAS,KAC5T,GAAM,CAAC,MAAO,KAAM,iCAAkC,CAAC,GAAI,CAAC,CAAC,mCAAoC,cAAe,CAAC,cAAe,OAAQ,CAAC,mCAAoC,cAAe,CAAC,QAAS,QAAS,KAC/M,GAAM,CAAC,KAAM,KAAM,kDAAmD,CAAC,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,oBAAqB,SAAU,EAAG,EAAG,CAAC,CAAC,mBAAoB,CAAC,KAAM,CAAC,oCAAqC,CAAC,KAAM,CAAC,kCAAmC,CAAC,6DAA8D,CAAC,EAAG,KAAM,CAAC,WAAY,CAAC,KAAM,EAAG,CAAC,uBAAwB,CAAC,KAAM,CAAC,4FAA6F,CAAC,KAAM,CAAC,WAAY,CAAC,OACne,GAAM,CAAC,MAAO,KAAM,4BAA6B,CAAC,EAAG,GAAI,CAAC,CAAC,mBAAoB,QAAS,CAAC,KAAM,OAAQ,CAAC,2BAA4B,WAAY,CAAC,SAAU,QAAS,KACpK,GAAM,CAAC,MAAO,KAAM,uBAAwB,CAAC,GAAI,CAAC,CAAC,mBAAoB,QAAS,CAAC,QACjF,GAAM,CAAC,MAAO,KAAM,6BAA8B,CAAC,GAAI,CAAC,CAAC,2BAA4B,WAAY,CAAC,eAClG,GAAM,CAAC,MAAO,KAAM,cAAe,CAAC,GAAI,CAAC,CAAC,mBAAoB,QAAS,CAAC,YACxE,GAAM,CAAC,MAAO,KAAM,6BAA8B,CAAC,EAAG,GAAI,CAAC,CAAC,mCAAoC,cAAe,CAAC,MAAO,CAAC,mCAAoC,cAAe,CAAC,WAC5K,GAAM,CAAC,MAAO,KAAM,iCAAkC,CAAC,GAAI,CAAC,CAAC,mCAAoC,cAAe,CAAC,SAAU,OAAQ,CAAC,mCAAoC,cAAe,CAAC,KAAM,QAAS,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,oFAAqF,CAAC,8FAA+F,CAAC,iBAAkB,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,gDACrb,GAAM,CAAC,MAAO,KAAM,oCAAqC,CAAC,GAAI,CAAC,CAAC,2BAA4B,WAAY,CAAC,UAAW,CAAC,mBAAoB,QAAS,CAAC,WACnJ,GAAM,CAAC,KAAM,KAAM,iDAAkD,CAAC,GAAI,GAAI,IAAK,CAAC,CAAC,2BAA4B,WAAY,CAAC,SAAU,CAAC,mBAAoB,QAAS,CAAC,+DAAgE,CAAC,2BAA4B,WAAY,CAAC,WAAY,CAAC,6BAA8B,WAAY,CAAC,QACzU,GAAM,CAAC,MAAO,KAAM,mCAAoC,CAAC,EAAG,IAAK,CAAC,CAAC,mBAAoB,QAAS,CAAC,UAAW,CAAC,2BAA4B,WAAY,CAAC,QACtJ,GAAM,CAAC,IAAK,MAAO,+BAAgC,CAAC,IAAK,EAAG,IAAK,EAAG,mBAAoB,QAAS,EAAG,OACpG,GAAM,CAAC,MAAO,KAAM,qBAAsB,CAAC,EAAG,GAAI,CAAC,CAAC,mBAAoB,QAAS,CAAC,OAAQ,CAAC,2BAA4B,WAAY,CAAC,WACpI,GAAM,CAAC,MAAO,MAAO,6BAA8B,CAAC,GAAI,CAAC,CAAC,mBAAoB,QAAS,CAAC,YACxF,GAAM,CAAC,MAAO,0BAA2B,sDAAuD,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,CAAC,CAAC,qBAAsB,QAAS,CAAC,MAAO,SAAU,CAAC,mBAAoB,QAAS,CAAC,mCAAoC,CAAC,2BAA4B,WAAY,CAAC,MAAO,CAAC,mCAAoC,cAAe,CAAC,OAAQ,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,MAC9W,GAAM,CAAC,MAAO,KAAM,yBAA0B,CAAC,EAAG,IAAK,CAAC,CAAC,mBAAoB,QAAS,CAAC,cACvF,GAAM,CAAC,MAAO,KAAM,iEAAkE,CAAC,EAAG,EAAG,EAAG,GAAI,CAAC,CAAC,6BAA8B,WAAY,CAAC,SAAU,OAAQ,CAAC,6BAA8B,WAAY,CAAC,KAAM,OAAQ,CAAC,wBAAyB,WAAY,CAAC,KAAM,OAAQ,CAAC,6BAA8B,WAAY,CAAC,YAAa,OAAQ,CAAC,6BAA8B,WAAY,CAAC,KAAM,OAAQ,CAAC,6BAA8B,WAAY,CAAC,UAAW,OAAQ,CAAC,2BAA4B,WAAY,CAAC,KAAM,QAAS,KACrgB,GAAM,CAAC,MAAO,KAAM,0BAA2B,CAAC,GAAI,CAAC,CAAC,2BAA4B,WAAY,CAAC,cAC/F,GAAM,CAAC,KAAM,KAAM,4BAA6B,CAAC,EAAG,GAAI,CAAC,CAAC,wBAAyB,WAAY,CAAC,KAAM,WAAY,CAAC,2BAA4B,WAAY,CAAC,wDAAyD,WAAY,CAAC,6BAA8B,WAAY,CAAC,SAAU,UAAW,MAClS,GAAM,CAAC,KAAM,SAAU,gFAAiF,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,CAAC,CAAC,wBAAyB,WAAY,CAAC,OAAQ,CAAC,qBAAsB,QAAS,CAAC,gBAAiB,SAAU,CAAC,qBAAsB,QAAS,CAAC,OAAQ,OAAQ,CAAC,qBAAsB,QAAS,CAAC,UAAW,SAAU,CAAC,6BAA8B,WAAY,CAAC,aAAc,OAAQ,CAAC,qBAAsB,QAAS,CAAC,KAAM,OAAQ,CAAC,2BAA4B,WAAY,CAAC,OAAQ,OAAQ,CAAC,gCAAiC,cAAe,CAAC,MAAO,OAAQ,CAAC,6BAA8B,WAAY,CAAC,KAAM,QAAS,KAC7oB,GAAM,CAAC,MAAO,KAAM,sDAAuD,CAAC,EAAG,EAAG,EAAG,IAAK,CAAC,CAAC,mBAAoB,QAAS,CAAC,kCAAmC,SAAU,CAAC,mBAAoB,QAAS,CAAC,SAAU,SAAU,CAAC,0BAA2B,WAAY,CAAC,KAAM,SAAU,CAAC,6BAA8B,WAAY,CAAC,wBAAyB,SAAU,CAAC,2BAA4B,WAAY,CAAC,MAAO,OAAQ,CAAC,2BAA4B,WAAY,CAAC,MAAO,SAAU,CAAC,2BAA4B,WAAY,CAAC,QAAS,OAAQ,CAAC,2BAA4B,WAAY,CAAC,MAAO,CAAC,2BAA4B,WAAY,CAAC,KAAM,SAAU,CAAC,gCAAiC,cAAe,CAAC,KAAM,QAAS,KAC7rB,GAAM,CAAC,MAAO,gBAAiB,gDAAiD,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,IAAK,CAAC,CAAC,mBAAoB,QAAS,CAAC,QAAS,CAAC,2BAA4B,WAAY,CAAC,QAAS,CAAC,wBAAyB,WAAY,CAAC,WAAY,OAAQ,CAAC,2BAA4B,WAAY,CAAC,QAAS,OAAQ,CAAC,2BAA4B,WAAY,CAAC,OAAQ,CAAC,mBAAoB,QAAS,CAAC,QAAS,CAAC,gCAAiC,cAAe,CAAC,WAAY,CAAC,qCAAsC,cAAe,CAAC,QAAS,KACjhB,GAAM,CAAC,KAAM,KAAM,oCAAqC,CAAC,IAAK,EAAG,IAAK,EAAG,oBAAqB,SAAU,EAAG,wBAC3G,GAAM,CAAC,KAAM,KAAM,0CAA2C,CAAC,EAAG,EAAG,GAAI,GAAI,GAAI,IAAK,CAAC,CAAC,WAAY,KAAM,CAAC,8BAA+B,4CAA6C,8CAA+C,EAAG,GAAI,CAAC,qBAAsB,QAAS,CAAC,MAAO,QAAS,EAAG,GAAI,CAAC,2BAA4B,WAAY,CAAC,OAAQ,EAAG,GAAI,CAAC,2BAA4B,WAAY,CAAC,qCAAsC,2DAA4D,4FAA6F,MAAO,GAAI,CAAC,2BAA4B,WAAY,CAAC,sYAAuY,meAAoe,ykBAA0kB,MAAO,GAAI,CAAC,2BAA4B,WAAY,CAAC,iKAAkK,wSAAyS,mWAAoW,MAAO,GAAI,CAAC,mBAAoB,QAAS,CAAC,SAAU,MAAO,GAAI,CAAC,6BAA8B,WAAY,CAAC,eAAgB,iBAAkB,EAAG,GAAI,CAAC,mCAAoC,cAAe,CAAC,MAAO,EAAG,IAAK,KAC7mG,GAAM,CAAC,MAAO,KAAM,UAAW,CAAC,GAAI,CAAC,CAAC,mBAAoB,QAAS,CAAC,QACpE,GAAM,CAAC,MAAO,KAAM,oCAAqC,CAAC,EAAG,EAAG,IAAK,CAAC,CAAC,wBAAyB,WAAY,CAAC,KAAM,OAAQ,CAAC,6BAA8B,WAAY,CAAC,SAAU,OAAQ,CAAC,2BAA4B,WAAY,CAAC,KAAM,QAAS,KAClP,GAAM,CAAC,KAAM,KAAM,wCAAyC,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,CAAC,CAAC,aAAc,KAAM,CAAC,MAAO,OAAQ,CAAC,qBAAsB,QAAS,CAAC,4EAA6E,OAAQ,CAAC,6BAA8B,WAAY,CAAC,KAAM,OAAQ,CAAC,2BAA4B,WAAY,CAAC,SAAU,QAAS,KACjW,GAAM,CAAC,MAAO,4BAA6B,wBAAyB,CAAC,EAAG,GAAI,CAAC,CAAC,mBAAoB,QAAS,CAAC,UAAW,CAAC,2BAA4B,WAAY,CAAC,OAAQ,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,MAC9L,GAAM,CAAC,KAAM,KAAM,8FAA+F,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,IAAK,CAAC,CAAC,qBAAsB,QAAS,CAAC,UAAW,CAAC,qBAAsB,QAAS,CAAC,wCAAyC,0DAA2D,CAAC,qBAAsB,QAAS,CAAC,mCAAoC,CAAC,mBAAoB,QAAS,CAAC,QAAS,CAAC,6BAA8B,WAAY,CAAC,YAAa,CAAC,6BAA8B,WAAY,CAAC,2BAA4B,CAAC,6BAA8B,WAAY,CAAC,wBAAyB,CAAC,2BAA4B,WAAY,CAAC,UAAW,CAAC,2BAA4B,WAAY,CAAC,MAAO,CAAC,6BAA8B,WAAY,CAAC,OAAQ,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,8aAA+a,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,KAAM,CAAC,iCAAkC,CAAC,EAAG,KAAM,CAAC,wBAAyB,CAAC,EAAG,IAAK,CAAC,iHAAkH,CAAC,EAAG,EAAG,EAAG,KAAM,CAAC,sBAAuB,CAAC,EAAG,KAAM,CAAC,kBAAmB,CAAC,GAAI,KAAM,EAAG,EAAG,CAAC,WAAY,CAAC,KAAM,CAAC,8BAA+B,CAAC,EAAG,MACvjD,GAAM,CAAC,KAAM,KAAM,oCAAqC,CAAC,IAAK,EAAG,IAAK,EAAG,sBAAuB,SAAU,EAAG,EAAG,CAAC,CAAC,sBAAuB,CAAC,uDAAwD,CAAC,gCAAiC,CAAC,yGAA0G,CAAC,gBAAiB,EAAG,CAAC,iHAAkH,CAAC,6FAA8F,CAAC,cACvjB,GAAM,CAAC,IAAK,MAAO,+BAAgC,CAAC,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,WAC7E,GAAM,CAAC,MAAO,KAAM,qCAAsC,CAAC,EAAG,GAAI,CAAC,CAAC,wBAAyB,WAAY,CAAC,aAAc,SAAU,CAAC,qBAAsB,QAAS,CAAC,QAAS,OAAQ,CAAC,mBAAoB,QAAS,CAAC,MAAO,OAAQ,CAAC,wBAAyB,WAAY,CAAC,KAAM,QAAS,KACxR,GAAM,CAAC,KAAM,MAAO,0DAA2D,CAAC,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,CAAC,CAAC,2BAA4B,WAAY,CAAC,iBAAkB,OAAQ,CAAC,wBAAyB,WAAY,CAAC,uFAAwF,wKAAyK,wLAAyL,OAAQ,CAAC,2BAA4B,WAAY,CAAC,MAAO,OAAQ,CAAC,wBAAyB,WAAY,CAAC,wBAAyB,2CAA4C,OAAQ,CAAC,2BAA4B,WAAY,CAAC,sVAAuV,soBAAuoB,2vBAA4vB,OAAQ,CAAC,2BAA4B,WAAY,CAAC,oCAAqC,OAAQ,CAAC,2BAA4B,WAAY,CAAC,OAAQ,OAAQ,CAAC,2BAA4B,WAAY,CAAC,WAAY,QAAS,IAAK,EAAG,uCAAwC,MAC91F,GAAM,CAAC,MAAO,MAAO,2DAA4D,CAAC,EAAG,EAAG,EAAG,IAAK,CAAC,CAAC,qBAAsB,QAAS,CAAC,UAAW,OAAQ,CAAC,mBAAoB,QAAS,CAAC,QAAS,OAAQ,CAAC,6BAA8B,WAAY,CAAC,QAAS,QAAS,KACnQ,GAAM,CAAC,MAAO,KAAM,wBAAyB,CAAC,EAAG,IAAK,CAAC,CAAC,mBAAoB,QAAS,CAAC,uBAAwB,OAAQ,CAAC,2BAA4B,WAAY,CAAC,eAAgB,OAAQ,CAAC,kCAAmC,cAAe,CAAC,KAAM,QAAS,KAC3P,GAAM,CAAC,MAAO,WAAY,wBAAyB,CAAC,EAAG,EAAG,IAAK,CAAC,CAAC,6BAA8B,WAAY,CAAC,SAAU,OAAQ,CAAC,2BAA4B,WAAY,CAAC,OAAQ,KAChL,GAAM,CAAC,MAAO,KAAM,mDAAoD,CAAC,EAAG,GAAI,EAAG,KACnF,GAAM,CAAC,MAAO,KAAM,eAAgB,CAAC,GAAI,CAAC,CAAC,2BAA4B,WAAY,CAAC,aACpF,GAAM,CAAC,IAAK,MAAO,2BAA4B,CAAC,IAAK,EAAG,IAAK,EAAG,mBAAoB,QAAS,EAAG,OAChG,GAAM,CAAC,MAAO,QAAS,iCAAkC,CAAC,EAAG,IAAK,CAAC,CAAC,2BAA4B,WAAY,CAAC,KAAM,OAAQ,CAAC,wBAAyB,WAAY,CAAC,SAAU,OAAQ,CAAC,2BAA4B,WAAY,CAAC,KAAM,QAAS,KAC7O,GAAM,CAAC,KAAM,sDAAuD,2GAA4G,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,IAAK,CAAC,CAAC,qBAAsB,QAAS,CAAC,gCAAiC,OAAQ,CAAC,mBAAoB,QAAS,CAAC,MAAO,CAAC,0BAA2B,WAAY,CAAC,KAAM,OAAQ,CAAC,2BAA4B,WAAY,CAAC,WAAY,OAAQ,CAAC,6BAA8B,WAAY,CAAC,iBAAkB,OAAQ,CAAC,2BAA4B,WAAY,CAAC,QAAS,OAAQ,CAAC,2BAA4B,WAAY,CAAC,KAAM,QAAS,IAAK,EAAG,6BAC1nB,GAAM,CAAC,MAAO,KAAM,kCAAmC,CAAC,EAAG,GAAI,CAAC,CAAC,qBAAsB,QAAS,CAAC,kCAAmC,CAAC,mBAAoB,QAAS,CAAC,YACnK,GAAM,CAAC,IAAK,MAAO,+BAAgC,CAAC,IAAK,EAAG,IAAK,EAAG,mBAAoB,QAAS,EAAG,OACpG,GAAM,CAAC,IAAK,MAAO,qCAAsC,CAAC,GAAI,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,OAAQ,EAAG,QAClG,GAAM,CAAC,MAAO,KAAM,6CAA8C,CAAC,EAAG,EAAG,IAAK,CAAC,CAAC,2BAA4B,WAAY,CAAC,qBAAsB,OAAQ,CAAC,mCAAoC,cAAe,CAAC,cAAe,OAAQ,CAAC,mCAAoC,cAAe,CAAC,QAAS,QAAS,KAC1S,GAAM,CAAC,MAAO,KAAM,4BAA6B,CAAC,EAAG,GAAI,CAAC,CAAC,wBAAyB,WAAY,CAAC,iDAAkD,OAAQ,CAAC,2BAA4B,WAAY,CAAC,YAAa,KAClN,GAAM,CAAC,IAAK,MAAO,+BAAgC,CAAC,IAAK,EAAG,IAAK,EAAG,mBAAoB,QAAS,EAAG,OACpG,GAAM,CAAC,MAAO,KAAM,oCAAqC,CAAC,EAAG,GAAI,CAAC,CAAC,2BAA4B,WAAY,CAAC,sBAAuB,4BAA6B,CAAC,2BAA4B,WAAY,CAAC,MAAO,CAAC,2BAA4B,WAAY,CAAC,OAAQ,CAAC,2BAA4B,WAAY,CAAC,OAAQ,IAAK,EAAG,YAC7T,GAAM,CAAC,KAAM,KAAM,cAAe,CAAC,GAAI,CAAC,CAAC,2BAA4B,WAAY,CAAC,KAAM,OAAQ,CAAC,2BAA4B,WAAY,CAAC,WAAY,QAAS,KAC/J,GAAM,CAAC,MAAO,KAAM,mDAAoD,CAAC,EAAG,EAAG,GAAI,CAAC,CAAC,wBAAyB,WAAY,CAAC,cAAe,OAAQ,CAAC,2BAA4B,WAAY,CAAC,KAAM,OAAQ,CAAC,2BAA4B,WAAY,CAAC,WAAY,QAAS,KACzQ,GAAM,CAAC,MAAO,KAAM,4BAA6B,CAAC,GAAI,CAAC,CAAC,mBAAoB,QAAS,CAAC,aACtF,GAAM,CAAC,MAAO,KAAM,+BAAgC,CAAC,GAAI,CAAC,CAAC,wBAAyB,WAAY,CAAC,WAAY,SAAU,GAAI,CAAC,2BAA4B,WAAY,CAAC,SAAU,OAAQ,GAAI,CAAC,mBAAoB,QAAS,CAAC,uBAAwB,SAAU,GAAI,CAAC,mBAAoB,QAAS,CAAC,SAAU,SAAU,IAAK,IAAK,EAAG,QAChU,GAAM,CAAC,MAAO,KAAM,yEAA0E,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,CAAC,CAAC,mBAAoB,QAAS,CAAC,qEAAsE,CAAC,2BAA4B,WAAY,CAAC,qEAAsE,CAAC,2BAA4B,WAAY,CAAC,cAAe,CAAC,qCAAsC,cAAe,CAAC,uBAAwB,CAAC,2BAA4B,WAAY,CAAC,mBAAoB,CAAC,mCAAoC,cAAe,CAAC,OAAQ,CAAC,2BAA4B,WAAY,CAAC,MAAO,CAAC,6CAA8C,iBAAkB,CAAC,uBAAwB,CAAC,qCAAsC,cAAe,CAAC,qDAAsD,EAAG,EAAG,qDACj1B,GAAM,CAAC,MAAO,KAAM,wBAAyB,CAAC,GAAI,CAAC,CAAC,2BAA4B,WAAY,CAAC,kBAC7F,GAAM,CAAC,MAAO,KAAM,cAAe,CAAC,GAAI,CAAC,CAAC,mBAAoB,QAAS,CAAC,SAAU,QAAS,KAC3F,GAAM,CAAC,MAAO,KAAM,cAAe,CAAC,GAAI,CAAC,CAAC,mCAAoC,cAAe,CAAC,SAAU,OAAQ,CAAC,mBAAoB,QAAS,CAAC,yCAA0C,OAAQ,CAAC,mBAAoB,QAAS,CAAC,KAAM,OAAQ,CAAC,mBAAoB,QAAS,CAAC,SAAU,QAAS,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,iIAAkI,CAAC,0EAA2E,CAAC,iBAAkB,CAAC,YAAa,EAAG,EAAG,EAAG,EAAG,CAAC,6CACljB,GAAM,CAAC,MAAO,KAAM,wBAAyB,CAAC,EAAG,GAAI,CAAC,CAAC,2BAA4B,WAAY,CAAC,KAAM,OAAQ,CAAC,mCAAoC,cAAe,CAAC,UAAW,CAAC,wCAAyC,iBAAkB,CAAC,KAAM,QAAS,KAC1P,GAAM,CAAC,MAAO,KAAM,6BAA8B,CAAC,GAAI,CAAC,CAAC,mBAAoB,QAAS,CAAC,QAAS,OAAQ,CAAC,2BAA4B,WAAY,CAAC,QAAS,OAAQ,CAAC,2BAA4B,WAAY,CAAC,UAAW,QAAS,KACjO,GAAM,CAAC,MAAO,KAAM,oCAAqC,CAAC,EAAG,GAAI,CAAC,CAAC,6BAA8B,WAAY,CAAC,SAAU,QAAS,KACjI,GAAM,CAAC,MAAO,KAAM,iCAAkC,CAAC,GAAI,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,0DAA2D,CAAC,8FAA+F,CAAC,iBAAkB,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,gDAClR,GAAM,CAAC,MAAO,KAAM,aAAc,CAAC,GAAI,CAAC,CAAC,mCAAoC,cAAe,CAAC,QAAS,QAAS,IAAK,EAAG,oBAAqB,QAC5I,GAAM,CAAC,MAAO,MAAO,kCAAmC,CAAC,GAAI,CAAC,CAAC,mBAAoB,QAAS,CAAC,WAAY,KACzG,GAAM,CAAC,MAAO,KAAM,gBAAiB,CAAC,GAAI,CAAC,CAAC,wBAAyB,WAAY,CAAC,gCAAiC,OAAQ,CAAC,2BAA4B,WAAY,CAAC,SAAU,OAAQ,CAAC,gCAAiC,cAAe,CAAC,QAAS,QAAS,KAC3P,GAAM,CAAC,MAAO,KAAM,eAAgB,CAAC,GAAI,CAAC,CAAC,mCAAoC,cAAe,CAAC,aAC/F,GAAM,CAAC,KAAM,KAAM,oEAAqE,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,CAAC,CAAC,wBAAyB,WAAY,CAAC,QAAS,OAAQ,CAAC,2BAA4B,WAAY,CAAC,6DAA8D,OAAQ,CAAC,0BAA2B,WAAY,CAAC,QAAS,OAAQ,CAAC,6BAA8B,WAAY,CAAC,iBAAkB,OAAQ,CAAC,0BAA2B,WAAY,CAAC,+BAAgC,OAAQ,CAAC,wBAAyB,WAAY,CAAC,KAAM,OAAQ,CAAC,2BAA4B,WAAY,CAAC,KAAM,OAAQ,CAAC,gCAAiC,cAAe,CAAC,MAAO,OAAQ,CAAC,wBAAyB,WAAY,CAAC,KAAM,QAAS,KACxsB,GAAM,CAAC,MAAO,MAAO,2BAA4B,CAAC,EAAG,EAAG,IAAK,CAAC,CAAC,2BAA4B,WAAY,CAAC,SAAU,OAAQ,CAAC,mBAAoB,QAAS,CAAC,UAAW,CAAC,qBAAsB,QAAS,CAAC,cAAe,OAAQ,CAAC,qBAAsB,QAAS,CAAC,sCAAuC,4CAA6C,OAAQ,CAAC,qBAAsB,QAAS,CAAC,QAAS,QAAS,KAC5Y,GAAM,CAAC,MAAO,KAAM,kCAAmC,CAAC,EAAG,GAAI,CAAC,CAAC,mBAAoB,QAAS,CAAC,MAAO,CAAC,mBAAoB,QAAS,CAAC,YACrI,GAAM,CAAC,IAAK,MAAO,8BAA+B,CAAC,IAAK,EAAG,IAAK,EAAG,mBAAoB,QAAS,EAAG,OACnG,GAAM,CAAC,MAAO,KAAM,iCAAkC,CAAC,GAAI,CAAC,CAAC,mCAAoC,cAAe,CAAC,SAAU,OAAQ,CAAC,mCAAoC,cAAe,CAAC,KAAM,QAAS,KACvM,GAAM,CAAC,MAAO,KAAM,4BAA6B,CAAC,GAAI,CAAC,CAAC,mCAAoC,cAAe,CAAC,aAC5G,GAAM,CAAC,IAAK,MAAO,+BAAgC,CAAC,IAAK,EAAG,IAAK,EAAG,kBAAmB,QAAS,EAAG,OACnG,GAAM,CAAC,MAAO,KAAM,wCAAyC,CAAC,GAAI,CAAC,CAAC,mBAAoB,QAAS,CAAC,eAClG,GAAM,CAAC,MAAO,uBAAwB,uCAAwC,CAAC,EAAG,EAAG,IAAK,CAAC,CAAC,mBAAoB,QAAS,CAAC,kBAAmB,CAAC,mBAAoB,QAAS,CAAC,SAAU,CAAC,mBAAoB,QAAS,CAAC,OAAQ,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAClP,GAAM,CAAC,MAAO,YAAa,2CAA4C,CAAC,EAAG,IAAK,CAAC,CAAC,mBAAoB,QAAS,CAAC,YAAa,CAAC,2BAA4B,WAAY,CAAC,UAAW,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,MACvM,GAAM,CAAC,MAAO,KAAM,oCAAqC,CAAC,EAAG,GAAI,CAAC,CAAC,wBAAyB,WAAY,CAAC,UAAW,OAAQ,CAAC,2BAA4B,WAAY,CAAC,KAAM,OAAQ,CAAC,mCAAoC,cAAe,CAAC,WAAY,QAAS,KAC9P,GAAM,CAAC,KAAM,QAAS,cAAe,CAAC,IAAK,CAAC,CAAC,2BAA4B,WAAY,CAAC,gBAAiB,CAAC,2BAA4B,WAAY,CAAC,WAAY,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,MAClL,GAAM,CAAC,KAAM,KAAM,iCAAkC,CAAC,EAAG,EAAG,IAAK,CAAC,CAAC,wBAAyB,WAAY,CAAC,UAAW,OAAQ,CAAC,6BAA8B,WAAY,CAAC,+BAAgC,oDAAqD,OAAQ,CAAC,wBAAyB,WAAY,CAAC,KAAM,OAAQ,CAAC,gCAAiC,cAAe,CAAC,kBAAmB,CAAC,2BAA4B,WAAY,CAAC,MAAO,OAAQ,CAAC,2BAA4B,WAAY,CAAC,KAAM,QAAS,KACjf,GAAM,CAAC,MAAO,KAAM,mBAAoB,CAAC,EAAG,GAAI,CAAC,CAAC,6BAA8B,WAAY,CAAC,cAAe,CAAC,2BAA4B,WAAY,CAAC,QACtJ,GAAM,CAAC,MAAO,KAAM,eAAgB,CAAC,EAAG,GAAI,CAAC,CAAC,2BAA4B,WAAY,CAAC,MAAO,OAAQ,CAAC,6BAA8B,WAAY,CAAC,KAAM,OAAQ,CAAC,2BAA4B,WAAY,CAAC,MAAO,OAAQ,CAAC,2BAA4B,WAAY,CAAC,KAAM,QAAS,KAClR,GAAM,CAAC,MAAO,KAAM,+BAAgC,CAAC,GAAI,CAAC,CAAC,2BAA4B,WAAY,CAAC,gBACpG,GAAM,CAAC,MAAO,KAAM,gBAAiB,CAAC,GAAI,CAAC,CAAC,2BAA4B,WAAY,CAAC,OAAQ,CAAC,mCAAoC,cAAe,CAAC,2BAClJ,GAAM,CAAC,MAAO,KAAM,aAAc,CAAC,GAAI,CAAC,CAAC,mBAAoB,QAAS,CAAC,WAAY,CAAC,gBAAiB,QAAS,CAAC,UAAW,EAAG,EAAG,mBAAoB,OACpJ,GAAM,CAAC,MAAO,MAAO,2CAA4C,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IAAK,CAAC,CAAC,6BAA8B,WAAY,CAAC,KAAM,OAAQ,CAAC,6BAA8B,WAAY,CAAC,SAAU,OAAQ,CAAC,2BAA4B,WAAY,CAAC,WAAY,OAAQ,CAAC,2BAA4B,WAAY,CAAC,KAAM,OAAQ,CAAC,6BAA8B,WAAY,CAAC,QAAS,OAAQ,CAAC,6BAA8B,WAAY,CAAC,QAAS,QAAS,KACpc,GAAM,CAAC,MAAO,KAAM,8BAA+B,CAAC,GAAI,CAAC,CAAC,mBAAoB,QAAS,CAAC,cACxF,GAAM,CAAC,KAAM,KAAM,+EAAgF,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,CAAC,CAAC,qBAAsB,QAAS,CAAC,SAAU,OAAQ,CAAC,mBAAoB,QAAS,CAAC,MAAO,OAAQ,CAAC,gBAAiB,QAAS,CAAC,KAAM,OAAQ,CAAC,2BAA4B,WAAY,CAAC,2CAA4C,OAAQ,CAAC,2BAA4B,WAAY,CAAC,cAAe,OAAQ,CAAC,2BAA4B,WAAY,CAAC,KAAM,QAAS,KAChe,GAAM,CAAC,KAAM,KAAM,0BAA2B,CAAC,EAAG,GAAI,CAAC,CAAC,2BAA4B,WAAY,CAAC,MAAO,CAAC,mCAAoC,cAAe,CAAC,YAAa,EAAG,EAAG,EAAG,EAAG,EAAG,mBACzL,GAAM,CAAC,MAAO,KAAM,+BAAgC,CAAC,EAAG,GAAI,IAAK,CAAC,CAAC,gBAAiB,QAAS,CAAC,UAAW,OAAQ,CAAC,mBAAoB,QAAS,CAAC,qCAAsC,OAAQ,CAAC,mBAAoB,QAAS,CAAC,OAAQ,KACrO,GAAM,CAAC,MAAO,KAAM,mCAAoC,CAAC,GAAI,CAAC,CAAC,mBAAoB,QAAS,CAAC,aAC7F,GAAM,CAAC,MAAO,KAAM,yBAA0B,CAAC,EAAG,GAAI,CAAC,CAAC,mBAAoB,QAAS,CAAC,QACtF,GAAM,CAAC,KAAM,aAAc,0FAA2F,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,CAAC,CAAC,qBAAsB,QAAS,CAAC,WAAY,OAAQ,CAAC,6BAA8B,WAAY,CAAC,iBAAkB,wBAAyB,OAAQ,CAAC,wBAAyB,WAAY,CAAC,6BAA8B,OAAQ,CAAC,6BAA8B,WAAY,CAAC,oBAAqB,OAAQ,CAAC,6BAA8B,WAAY,CAAC,YAAa,OAAQ,CAAC,6BAA8B,WAAY,CAAC,0BAA2B,QAAS,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,MAC9lB,GAAM,CAAC,MAAO,KAAM,6CAA8C,CAAC,EAAG,EAAG,GAAI,CAAC,CAAC,qBAAsB,QAAS,CAAC,SAAU,CAAC,mBAAoB,QAAS,CAAC,MAAO,CAAC,mBAAoB,QAAS,CAAC,YAC9L,GAAM,CAAC,MAAO,KAAM,oDAAqD,CAAC,EAAG,EAAG,GAAI,IAAK,CAAC,CAAC,mBAAoB,QAAS,CAAC,aAAc,CAAC,mBAAoB,QAAS,CAAC,SAAU,CAAC,2BAA4B,WAAY,CAAC,QAC1N,GAAM,CAAC,KAAM,0BAA2B,wBAAyB,CAAC,EAAG,GAAI,CAAC,CAAC,mBAAoB,QAAS,CAAC,MAAO,SAAU,CAAC,gBAAiB,QAAS,CAAC,KAAM,SAAU,CAAC,mBAAoB,QAAS,CAAC,SAAU,SAAU,CAAC,2BAA4B,WAAY,CAAC,OAAQ,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,KAAM,WACxS,GAAM,CAAC,MAAO,KAAM,+BAAgC,CAAC,EAAG,EAAG,GAAI,CAAC,CAAC,2BAA4B,WAAY,CAAC,OAAQ,CAAC,mCAAoC,cAAe,CAAC,aAAc,CAAC,mCAAoC,cAAe,CAAC,QAC1O,GAAM,CAAC,MAAO,cAAe,mDAAoD,CAAC,EAAG,GAAI,CAAC,CAAC,mBAAoB,QAAS,CAAC,iBAAkB,CAAC,mBAAoB,QAAS,CAAC,UAAW,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,MAC1M,GAAM,CAAC,KAAM,KAAM,kDAAmD,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,IAAK,CAAC,CAAC,gBAAiB,QAAS,CAAC,KAAM,SAAU,CAAC,qBAAsB,QAAS,CAAC,qEAAsE,uHAAwH,SAAU,CAAC,mBAAoB,QAAS,CAAC,wBAAyB,iCAAkC,SAAU,CAAC,wBAAyB,WAAY,CAAC,KAAM,SAAU,CAAC,2BAA4B,WAAY,CAAC,gBAAiB,SAAU,CAAC,2BAA4B,WAAY,CAAC,QAAS,OAAQ,CAAC,2BAA4B,WAAY,CAAC,MAAO,CAAC,qCAAsC,cAAe,CAAC,OAAQ,KAClwB,GAAM,CAAC,KAAM,KAAM,kKAAmK,CAAC,EAAG,EAAG,GAAI,GAAI,IAAK,CAAC,CAAC,6BAA8B,WAAY,CAAC,SAAU,OAAQ,CAAC,mBAAoB,QAAS,CAAC,MAAO,CAAC,qBAAsB,QAAS,CAAC,kJAAmJ,uKAAwK,SAAU,CAAC,qBAAsB,QAAS,CAAC,8DAA+D,SAAU,CAAC,mBAAoB,QAAS,CAAC,MAAO,SAAU,CAAC,mBAAoB,QAAS,CAAC,KAAM,OAAQ,CAAC,mCAAoC,cAAe,CAAC,qDAAsD,SAAU,CAAC,mCAAoC,cAAe,CAAC,UAAW,UAAW,KAC5hC,GAAM,CAAC,KAAM,KAAM,wDAAyD,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,CAAC,CAAC,WAAY,KAAM,CAAC,OAAQ,CAAC,mBAAoB,QAAS,CAAC,aAAc,CAAC,2BAA4B,WAAY,CAAC,iFAAkF,oFAAqF,CAAC,6BAA8B,WAAY,CAAC,OAAQ,CAAC,2BAA4B,WAAY,CAAC,mDAAoD,CAAC,mCAAoC,cAAe,CAAC,gCAAiC,CAAC,6BAA8B,WAAY,CAAC,QAC7oB,GAAM,CAAC,MAAO,KAAM,iCAAkC,CAAC,EAAG,GAAI,CAAC,CAAC,2BAA4B,WAAY,CAAC,QAAS,OAAQ,CAAC,2BAA4B,WAAY,CAAC,MAAO,CAAC,mCAAoC,cAAe,CAAC,KAAM,QAAS,KAC/O,GAAM,CAAC,IAAK,MAAO,4BAA6B,CAAC,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,WAC1E,GAAM,CAAC,MAAO,KAAM,iCAAkC,CAAC,EAAG,EAAG,IAAK,CAAC,CAAC,wBAAyB,WAAY,CAAC,UAAW,OAAQ,CAAC,2BAA4B,WAAY,CAAC,KAAM,OAAQ,CAAC,2BAA4B,WAAY,CAAC,OAAQ,KACvO,GAAM,CAAC,MAAO,KAAM,oCAAqC,CAAC,GAAI,CAAC,CAAC,2BAA4B,WAAY,CAAC,UAAW,CAAC,2BAA4B,WAAY,CAAC,iBAC9J,GAAM,CAAC,MAAO,SAAU,iCAAkC,CAAC,GAAI,CAAC,CAAC,mBAAoB,QAAS,CAAC,YAC/F,GAAM,CAAC,MAAO,KAAM,uDAAwD,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,CAAC,CAAC,qBAAsB,QAAS,CAAC,UAAW,OAAQ,CAAC,mBAAoB,QAAS,CAAC,yCAA0C,SAAU,CAAC,qBAAsB,QAAS,CAAC,0DAA2D,SAAU,CAAC,6BAA8B,WAAY,CAAC,wDAAyD,SAAU,CAAC,2BAA4B,WAAY,CAAC,OAAQ,CAAC,mBAAoB,QAAS,CAAC,sBAAuB,OAAQ,CAAC,2BAA4B,WAAY,CAAC,SAAU,OAAQ,CAAC,2BAA4B,WAAY,CAAC,OAAQ,KAC7pB,GAAM,CAAC,MAAO,KAAM,iDAAkD,CAAC,EAAG,EAAG,EAAG,IAAK,CAAC,CAAC,mBAAoB,QAAS,CAAC,YAAa,CAAC,mBAAoB,QAAS,CAAC,YACjK,GAAM,CAAC,MAAO,KAAM,wBAAyB,CAAC,GAAI,CAAC,CAAC,mCAAoC,cAAe,CAAC,UAAW,QAAS,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,wCAAyC,CAAC,gGAAiG,CAAC,YAAa,CAAC,oBAAqB,EAAG,EAAG,EAAG,EAAG,CAAC,qDAAsD,CAAC,qCACrY,GAAM,CAAC,KAAM,KAAM,qCAAsC,CAAC,EAAG,GAAI,CAAC,CAAC,mBAAoB,QAAS,CAAC,SAAU,cAAe,OAAQ,CAAC,mBAAoB,QAAS,CAAC,UAAW,OAAQ,CAAC,2BAA4B,WAAY,CAAC,SAAU,OAAQ,CAAC,2BAA4B,WAAY,CAAC,WAAY,QAAS,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,SACzU,GAAM,CAAC,MAAO,KAAM,wGAAyG,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,IAAK,CAAC,CAAC,qBAAsB,QAAS,CAAC,wBAAyB,OAAQ,CAAC,sBAAuB,QAAS,CAAC,UAAW,QAAS,KAChR,GAAM,CAAC,IAAK,MAAO,yBAA0B,CAAC,GAAI,IAAK,CAAC,CAAC,mCAAoC,cAAe,CAAC,qBAAsB,qDAAsD,yEAA0E,SAAU,GAAI,CAAC,gCAAiC,cAAe,CAAC,sBAAuB,2EAA4E,8LAA+L,SAAU,GAAI,CAAC,2BAA4B,WAAY,CAAC,KAAM,SAAU,GAAI,CAAC,mCAAoC,cAAe,CAAC,4BAA6B,SAAU,GAAI,CAAC,mCAAoC,cAAe,CAAC,KAAM,WAAY,IAAK,EAAG,EAAG,EAAG,EAAG,kBAAmB,EAAG,QAC/3B,GAAM,CAAC,MAAO,KAAM,iCAAkC,CAAC,EAAG,GAAI,CAAC,CAAC,mCAAoC,cAAe,CAAC,MAAO,CAAC,2BAA4B,WAAY,CAAC,MAAO,CAAC,2BAA4B,WAAY,CAAC,SAAU,QAAS,KACzO,GAAM,CAAC,MAAO,KAAM,+BAAgC,CAAC,EAAG,IAAK,CAAC,CAAC,mBAAoB,QAAS,CAAC,MAAO,CAAC,2BAA4B,WAAY,CAAC,KAAM,OAAQ,CAAC,2BAA4B,WAAY,CAAC,KAAM,OAAQ,CAAC,6BAA8B,WAAY,CAAC,MAAO,OAAQ,CAAC,2BAA4B,WAAY,CAAC,OAAQ,KACjU,GAAM,CAAC,MAAO,QAAS,0BAA2B,CAAC,EAAG,GAAI,CAAC,CAAC,mBAAoB,QAAS,CAAC,uCAC1F,GAAM,CAAC,MAAO,aAAc,yBAA0B,CAAC,GAAI,CAAC,CAAC,wBAAyB,WAAY,CAAC,iBAAkB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,MAC1I,GAAM,CAAC,MAAO,KAAM,aAAc,CAAC,GAAI,CAAC,CAAC,2BAA4B,WAAY,CAAC,QAAS,QAAS,KACpG,GAAM,CAAC,KAAM,KAAM,0EAA2E,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,CAAC,CAAC,6BAA8B,WAAY,CAAC,MAAO,MAAO,EAAG,YAAa,CAAC,mBAAoB,QAAS,CAAC,mBAAoB,MAAO,EAAG,SAAU,CAAC,2BAA4B,WAAY,CAAC,0CAA2C,MAAO,EAAG,YAAa,CAAC,kCAAmC,cAAe,CAAC,KAAM,MAAO,EAAG,eAAgB,CAAC,6BAA8B,WAAY,CAAC,wHAAyH,MAAO,EAAG,YAAa,CAAC,6BAA8B,WAAY,CAAC,iBAAkB,MAAO,EAAG,YAAa,CAAC,qCAAsC,cAAe,CAAC,qDAAsD,MAAO,EAAG,eAAgB,CAAC,mCAAoC,cAAe,CAAC,QAAS,MAAO,EAAG,eAAgB,CAAC,gCAAiC,cAAe,CAAC,KAAM,MAAO,EAAG,eAAgB,CAAC,mCAAoC,cAAe,CAAC,iFAAkF,MAAO,EAAG,eAAgB,CAAC,mCAAoC,cAAe,CAAC,KAAM,MAAO,EAAG,eAAgB,CAAC,2CAA4C,iBAAkB,CAAC,QAAS,MAAO,EAAG,mBAAoB,KACr2C,GAAM,CAAC,KAAM,YAAa,+CAAgD,CAAC,EAAG,GAAI,IAAK,CAAC,CAAC,mBAAoB,QAAS,CAAC,4BAA6B,CAAC,2BAA4B,WAAY,CAAC,MAAO,CAAC,2BAA4B,WAAY,CAAC,MAAO,CAAC,2BAA4B,WAAY,CAAC,QAChS,GAAM,CAAC,MAAO,KAAM,uBAAwB,CAAC,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,SACtE,GAAM,CAAC,MAAO,uBAAwB,mCAAoC,CAAC,EAAG,EAAG,EAAG,GAAI,CAAC,CAAC,qBAAsB,QAAS,CAAC,WAAY,OAAQ,CAAC,mBAAoB,QAAS,CAAC,QAAS,OAAQ,CAAC,2BAA4B,WAAY,CAAC,yBAA0B,OAAQ,CAAC,gCAAiC,cAAe,CAAC,UAAW,UAAW,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,MACzW,GAAM,CAAC,KAAM,KAAM,gCAAiC,CAAC,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,MAC9E,GAAM,CAAC,MAAO,KAAM,yCAA0C,CAAC,EAAG,EAAG,GAAI,CAAC,CAAC,0BAA2B,WAAY,CAAC,MAAO,OAAQ,CAAC,6BAA8B,WAAY,CAAC,cAAe,mBAAoB,OAAQ,CAAC,gCAAiC,cAAe,CAAC,KAAM,OAAQ,CAAC,2BAA4B,WAAY,CAAC,SAAU,OAAQ,CAAC,mCAAoC,cAAe,CAAC,SAAU,QAAS,KAC7Z,GAAM,CAAC,MAAO,KAAM,0BAA2B,CAAC,GAAI,CAAC,CAAC,mBAAoB,QAAS,CAAC,WAAY,UAAW,KAC3G,GAAM,CAAC,MAAO,KAAM,0BAA2B,CAAC,EAAG,IAAK,CAAC,CAAC,mCAAoC,cAAe,CAAC,UAAW,CAAC,mBAAoB,QAAS,CAAC,OAAQ,EAAG,EAAG,gBAAiB,UACvL,GAAM,CAAC,MAAO,KAAM,wBAAyB,CAAC,GAAI,CAAC,CAAC,mCAAoC,cAAe,CAAC,MAAO,CAAC,mCAAoC,cAAe,CAAC,YACpK,GAAM,CAAC,MAAO,KAAM,uDAAwD,CAAC,EAAG,EAAG,EAAG,GAAI,CAAC,CAAC,mBAAoB,QAAS,CAAC,WAAY,CAAC,WAAY,KAAM,CAAC,UAAW,CAAC,gBAAiB,QAAS,CAAC,kCAAmC,CAAC,gBAAiB,QAAS,CAAC,mBAAoB,CAAC,2BAA4B,WAAY,CAAC,mBAAoB,CAAC,qBAAsB,QAAS,CAAC,8BAA+B,KAClZ,GAAM,CAAC,MAAO,KAAM,6BAA8B,CAAC,EAAG,GAAI,CAAC,CAAC,2BAA4B,WAAY,CAAC,OAAQ,CAAC,mBAAoB,QAAS,CAAC,UAAW,CAAC,mBAAoB,QAAS,CAAC,YACtL,GAAM,CAAC,MAAO,KAAM,aAAc,CAAC,GAAI,CAAC,CAAC,2BAA4B,WAAY,CAAC,QAAS,QAAS,KACpG,GAAM,CAAC,MAAO,KAAM,oBAAqB,CAAC,GAAI,CAAC,CAAC,mBAAoB,QAAS,CAAC,WAC9E,GAAM,CAAC,MAAO,KAAM,6CAA8C,CAAC,EAAG,EAAG,IAAK,CAAC,CAAC,mBAAoB,QAAS,CAAC,SAAU,CAAC,mBAAoB,QAAS,CAAC,UAAW,CAAC,2BAA4B,WAAY,CAAC,WAC5M,GAAM,CAAC,IAAK,MAAO,sCAAuC,CAAC,IAAK,EAAG,IAAK,EAAG,eAAgB,QAAS,EAAG,OACvG,GAAM,CAAC,MAAO,KAAM,2BAA4B,CAAC,EAAG,GAAI,CAAC,CAAC,6BAA8B,WAAY,CAAC,SAAU,MAAO,GAAI,CAAC,2BAA4B,WAAY,CAAC,KAAM,MAAO,IAAK,KACtL,GAAM,CAAC,MAAO,KAAM,oCAAqC,CAAC,EAAG,GAAI,CAAC,CAAC,mBAAoB,QAAS,CAAC,WAAY,CAAC,mBAAoB,QAAS,CAAC,QAC5I,GAAM,CAAC,MAAO,KAAM,UAAW,CAAC,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,KACtD,GAAM,CAAC,IAAK,MAAO,+BAAgC,CAAC,IAAK,EAAG,IAAK,EAAG,qBAAsB,QAAS,EAAG,OACtG,GAAM,CAAC,MAAO,QAAS,2BAA4B,CAAC,GAAI,CAAC,CAAC,mCAAoC,cAAe,CAAC,YAAa,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,MAChJ,GAAM,CAAC,MAAO,KAAM,cAAe,CAAC,GAAI,CAAC,CAAC,mCAAoC,cAAe,CAAC,YAC9F,GAAM,CAAC,KAAM,UAAW,6CAA8C,CAAC,EAAG,EAAG,GAAI,IAAK,CAAC,CAAC,wBAAyB,WAAY,CAAC,KAAM,OAAQ,CAAC,6BAA8B,WAAY,CAAC,UAAW,OAAQ,CAAC,2BAA4B,WAAY,CAAC,OAAQ,KAC7P,GAAM,CAAC,MAAO,MAAO,iBAAkB,CAAC,GAAI,CAAC,CAAC,wBAAyB,WAAY,CAAC,MAAO,SAAU,CAAC,2BAA4B,WAAY,CAAC,qBAAsB,CAAC,wBAAyB,WAAY,CAAC,sBAAuB,CAAC,2BAA4B,WAAY,CAAC,cAAe,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QACjT,GAAM,CAAC,MAAO,KAAM,iBAAkB,CAAC,EAAG,EAAG,EAAG,IAChD,GAAM,CAAC,MAAO,KAAM,oCAAqC,CAAC,EAAG,GAAI,CAAC,CAAC,mBAAoB,QAAS,CAAC,eAAgB,CAAC,mBAAoB,QAAS,CAAC,QAChJ,GAAM,CAAC,MAAO,MAAO,wBAAyB,CAAC,GAAI,CAAC,CAAC,mCAAoC,cAAe,CAAC,MAAO,UAAW,CAAC,gCAAiC,cAAe,CAAC,SAAU,UAAW,CAAC,mBAAoB,QAAS,CAAC,QAAS,SAAU,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAC3Q,GAAM,CAAC,MAAO,KAAM,iBAAkB,CAAC,GAAI,CAAC,CAAC,2BAA4B,WAAY,CAAC,eACtF,GAAM,CAAC,MAAO,KAAM,oDAAqD,CAAC,EAAG,GAAI,CAAC,CAAC,mBAAoB,QAAS,CAAC,oCAAqC,CAAC,mBAAoB,QAAS,CAAC,MAAO,CAAC,mBAAoB,QAAS,CAAC,YAC3N,GAAM,CAAC,KAAM,KAAM,iDAAkD,CAAC,EAAG,GAAI,GAAI,IAAK,CAAC,CAAC,2BAA4B,WAAY,CAAC,mBAAoB,MAAO,GAAI,CAAC,mCAAoC,cAAe,CAAC,iBAAkB,qBAAsB,uBAAwB,MAAO,GAAI,CAAC,mCAAoC,cAAe,CAAC,oBAAqB,QAAS,GAAI,CAAC,6BAA8B,WAAY,CAAC,MAAO,MAAO,IAAK,KACtb,GAAM,CAAC,IAAK,MAAO,2BAA4B,CAAC,IAAK,EAAG,IAAK,EAAG,sBAAuB,QAAS,EAAG,OACnG,GAAM,CAAC,MAAO,KAAM,yBAA0B,CAAC,EAAG,EAAG,GAAI,CAAC,CAAC,mBAAoB,QAAS,CAAC,MAAO,CAAC,mBAAoB,QAAS,CAAC,OAAQ,CAAC,mBAAoB,QAAS,CAAC,QACtK,GAAM,CAAC,MAAO,mBAAoB,+CAAgD,CAAC,EAAG,EAAG,EAAG,GAAI,IAAK,CAAC,CAAC,wBAAyB,WAAY,CAAC,OAAQ,OAAQ,CAAC,6BAA8B,WAAY,CAAC,UAAW,OAAQ,CAAC,0BAA2B,WAAY,CAAC,wCAAyC,gDAAiD,OAAQ,CAAC,2BAA4B,WAAY,CAAC,QAAS,OAAQ,CAAC,6BAA8B,WAAY,CAAC,KAAM,QAAS,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,KACvf,GAAM,CAAC,MAAO,UAAW,4BAA6B,CAAC,GAAI,CAAC,CAAC,2BAA4B,WAAY,CAAC,QAAS,OAAQ,CAAC,2BAA4B,WAAY,CAAC,QAAS,OAAQ,CAAC,mBAAoB,QAAS,CAAC,MAAO,CAAC,2BAA4B,WAAY,CAAC,QAAS,QAAS,KACpR,GAAM,CAAC,MAAO,KAAM,yBAA0B,CAAC,EAAG,IAAK,CAAC,CAAC,2BAA4B,WAAY,CAAC,8DAA+D,mFAAoF,OAAQ,CAAC,mBAAoB,QAAS,CAAC,wFAAyF,qGAAsG,OAAQ,CAAC,2BAA4B,WAAY,CAAC,mBAAoB,OAAQ,CAAC,6BAA8B,WAAY,CAAC,QAAS,QAAS,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAC9nB,GAAM,CAAC,MAAO,UAAW,qCAAsC,CAAC,GAAI,CAAC,CAAC,mBAAoB,QAAS,CAAC,MAAO,QAAS,OAAQ,CAAC,mBAAoB,QAAS,CAAC,2BAA4B,OAAQ,CAAC,mBAAoB,QAAS,CAAC,QAAS,QAAS,KAChP,GAAM,CAAC,IAAK,MAAO,sBAAuB,CAAC,IAAK,CAAC,CAAC,mBAAoB,QAAS,CAAC,OAAQ,EAAG,GAAI,CAAC,2BAA4B,aAAc,CAAC,SAAU,EAAG,EAAG,aAAc,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,2uBAA4uB,CAAC,IAAK,CAAC,wCAAyC,CAAC,kBAAmB,CAAC,2OAA4O,EAAG,EAAG,EAAG,CAAC,kBACtuC,GAAM,CAAC,MAAO,mBAAoB,iDAAkD,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,IAAK,CAAC,CAAC,qBAAsB,QAAS,CAAC,MAAO,CAAC,mBAAoB,QAAS,CAAC,WAAY,OAAQ,CAAC,2BAA4B,WAAY,CAAC,KAAM,OAAQ,CAAC,mBAAoB,QAAS,CAAC,UAAW,CAAC,6BAA8B,WAAY,CAAC,MAAO,CAAC,qCAAsC,cAAe,CAAC,OAAQ,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,KAAM,UAC/b,GAAM,CAAC,MAAO,KAAM,+BAAgC,CAAC,GAAI,CAAC,CAAC,mCAAoC,cAAe,CAAC,cAC/G,GAAM,CAAC,KAAM,KAAM,+EAAgF,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,SAC/I,GAAM,CAAC,IAAK,MAAO,+BAAgC,CAAC,IAAK,EAAG,IAAK,EAAG,mBAAoB,QAAS,EAAG,OACpG,GAAM,CAAC,KAAM,KAAM,uCAAwC,CAAC,IAAK,CAAC,CAAC,mBAAoB,QAAS,CAAC,YAAa,QAAS,KACvH,GAAM,CAAC,IAAK,MAAO,+BAAgC,CAAC,IAAK,EAAG,IAAK,EAAG,qBAAsB,QAAS,EAAG,OACtG,GAAM,CAAC,IAAK,MAAO,8BAA+B,CAAC,IAAK,EAAG,IAAK,EAAG,mBAAoB,QAAS,EAAG,OACnG,GAAM,CAAC,KAAM,KAAM,mDAAoD,CAAC,EAAG,EAAG,EAAG,IAAK,CAAC,CAAC,mBAAoB,QAAS,CAAC,MAAO,MAAO,GAAI,CAAC,qBAAsB,QAAS,CAAC,KAAM,EAAG,GAAI,CAAC,mCAAoC,cAAe,CAAC,KAAM,MAAO,GAAI,CAAC,2BAA4B,WAAY,CAAC,WAAY,MAAO,GAAI,CAAC,2BAA4B,WAAY,CAAC,SAAU,MAAO,GAAI,CAAC,2BAA4B,WAAY,CAAC,KAAM,MAAO,IAAK,KACxb,GAAM,CAAC,MAAO,KAAM,qCAAsC,CAAC,EAAG,GAAI,CAAC,CAAC,mBAAoB,QAAS,CAAC,aAClG,GAAM,CAAC,MAAO,KAAM,qCAAsC,CAAC,EAAG,GAAI,CAAC,CAAC,2BAA4B,WAAY,CAAC,UAAW,CAAC,mCAAoC,cAAe,CAAC,QAC7K,GAAM,CAAC,MAAO,IAAK,gDAAiD,CAAC,EAAG,EAAG,EAAG,IAAK,CAAC,CAAC,WAAY,KAAM,CAAC,iBAAkB,CAAC,qBAAsB,QAAS,CAAC,SAAU,CAAC,mBAAoB,QAAS,CAAC,QACpM,GAAM,CAAC,MAAO,KAAM,gDAAiD,CAAC,EAAG,EAAG,GAAI,GAAI,IAAK,CAAC,CAAC,mBAAoB,QAAS,CAAC,QAAS,OAAQ,CAAC,2BAA4B,WAAY,CAAC,SAAU,OAAQ,CAAC,2BAA4B,WAAY,CAAC,QAAS,OAAQ,CAAC,sBAAuB,QAAS,CAAC,KAAM,QAAS,KAClT,GAAM,CAAC,MAAO,KAAM,+BAAgC,CAAC,EAAG,EAAG,GAAI,CAAC,CAAC,0BAA2B,WAAY,CAAC,4BAA6B,OAAQ,CAAC,2BAA4B,WAAY,CAAC,KAAM,QAAS,KACvM,GAAM,CAAC,MAAO,KAAM,qCAAsC,CAAC,GAAI,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,8CAA+C,CAAC,kEAAmE,CAAC,YAAa,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,sCACzO,GAAM,CAAC,KAAM,KAAM,yBAA0B,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,CAAC,CAAC,qBAAsB,QAAS,CAAC,UAAW,OAAQ,CAAC,6BAA8B,WAAY,CAAC,UAAW,OAAQ,CAAC,2BAA4B,WAAY,CAAC,OAAQ,OAAQ,CAAC,2BAA4B,WAAY,CAAC,SAAU,OAAQ,CAAC,2BAA4B,WAAY,CAAC,KAAM,QAAS,KACrW,GAAM,CAAC,MAAO,KAAM,oCAAqC,CAAC,GAAI,CAAC,CAAC,2BAA4B,WAAY,CAAC,QAAS,OAAQ,CAAC,mBAAoB,QAAS,CAAC,QAAS,QAAS,KAC3K,GAAM,CAAC,MAAO,KAAM,wHAAyH,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,CAAC,CAAC,qBAAsB,QAAS,CAAC,0FAA2F,OAAQ,CAAC,0BAA2B,WAAY,CAAC,QAAS,OAAQ,CAAC,mBAAoB,QAAS,CAAC,MAAO,OAAQ,CAAC,mBAAoB,QAAS,CAAC,6CAA8C,8EAA+E,SAAU,CAAC,2BAA4B,WAAY,CAAC,KAAM,OAAQ,CAAC,6BAA8B,WAAY,CAAC,+CAAgD,iDAAkD,OAAQ,CAAC,mBAAoB,QAAS,CAAC,KAAM,OAAQ,CAAC,qBAAsB,QAAS,CAAC,6IAA8I,OAAQ,CAAC,6BAA8B,WAAY,CAAC,mBAAoB,OAAQ,CAAC,qBAAsB,QAAS,CAAC,aAAc,YAAa,QAAS,MAEtnC,cAAiB,CACf,IAAO,CAAC,MAAO,EAAG,wBAAyB,CAAC,GAAI,CAAC,CAAC,mBAAoB,QAAS,CAAC,SAAU,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAAG,EAAG,CAAC,2BACpH,IAAO,CAAC,MAAO,EAAG,cAAe,CAAC,GAAI,CAAC,CAAC,mBAAoB,QAAS,CAAC,WAAY,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,iBACjI,IAAO,CAAC,MAAO,EAAG,wBAAyB,CAAC,EAAG,IAAK,CAAC,CAAC,2BAA4B,WAAY,CAAC,YAAa,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAAG,CAAC,0CACnI,IAAO,CAAC,MAAO,EAAG,YAAa,CAAC,IAAK,CAAC,CAAC,2BAA4B,WAAY,CAAC,OAAQ,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,eACpI,IAAO,CAAC,MAAO,EAAG,yBAA0B,CAAC,EAAG,IAAK,CAAC,CAAC,wBAAyB,WAAY,CAAC,aAAc,CAAC,0BAA2B,WAAY,CAAC,OAAQ,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAAG,CAAC,4BACnL,IAAO,CAAC,MAAO,EAAG,uEAAwE,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,IAAK,CAAC,CAAC,mBAAoB,QAAS,CAAC,WAAY,CAAC,mBAAoB,QAAS,CAAC,OAAQ,CAAC,2BAA4B,WAAY,CAAC,YAAa,CAAC,2BAA4B,WAAY,CAAC,UAAW,CAAC,6BAA8B,WAAY,CAAC,OAAQ,CAAC,2BAA4B,WAAY,CAAC,+BAAgC,CAAC,2BAA4B,WAAY,CAAC,OAAQ,CAAC,6BAA8B,WAAY,CAAC,YAAa,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAAG,CAAC,kEAAmE,CAAC,EAAG,EAAG,EAAG,GAAI,KAAM,EAAG,EAAG,EAAG,CAAC,gBAAiB,CAAC,KAAM,EAAG,EAAG,CAAC,mLAChrB,IAAO,CAAC,MAAO,EAAG,2BAA4B,CAAC,EAAG,EAAG,GAAI,GAAI,IAAK,CAAC,CAAC,6BAA8B,WAAY,CAAC,sCAAuC,CAAC,2BAA4B,WAAY,CAAC,QAAS,CAAC,2BAA4B,WAAY,CAAC,OAAQ,CAAC,2BAA4B,WAAY,CAAC,WAAY,CAAC,mCAAoC,cAAe,CAAC,WAAY,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,sIAC9Z,IAAO,CAAC,MAAO,EAAG,UAAW,CAAC,IAAK,CAAC,CAAC,2BAA4B,aAAc,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,aACrH,IAAO,CAAC,MAAO,EAAG,eAAgB,CAAC,GAAI,CAAC,CAAC,wBAAyB,WAAY,CAAC,YAAa,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAAG,EAAG,EAAG,CAAC,oBCld9G,SAASmQ,EAAqBC,EAAMC,GACjD,IAAIlb,EAAO/Y,MAAMlF,UAAU8E,MAAM5E,KAAKi5B,GAEtC,OADAlb,EAAK7d,KAAK,GACH84B,EAAKE,MAAMtyB,KAAMmX,EAC1B,CCPA,IAAIob,EAAoB,CAAC,EAAEnzB,YACZ,SAASozB,EAASh1B,GAC/B,YAAkBzB,IAAXyB,GAAmC,OAAXA,GAAmBA,EAAO4B,cAAgBmzB,CAC3E,CCHA,SAASE,EAAQj1B,EAAQk1B,GACvB,IAAIlvB,EAAOvK,OAAOuK,KAAKhG,GACvB,GAAIvE,OAAOmf,sBAAuB,CAChC,IAAIua,EAAU15B,OAAOmf,sBAAsB5a,GAC3Ck1B,IAAmBC,EAAUA,EAAQzrB,QAAO,SAAU0rB,GACpD,OAAO35B,OAAO2e,yBAAyBpa,EAAQo1B,GAAKl2B,UACtD,KAAK8G,EAAKlK,KAAKg5B,MAAM9uB,EAAMmvB,EAC7B,CACA,OAAOnvB,CACT,CAYA,SAASqvB,EAAgBlM,EAAKtpB,EAAKN,GAWjC,OAVIM,KAAOspB,EACT1tB,OAAOwD,eAAekqB,EAAKtpB,EAAK,CAC9BN,MAAOA,EACPL,YAAY,EACZo2B,cAAc,EACdC,UAAU,IAGZpM,EAAItpB,GAAON,EAEN4pB,CACT,CACA,SAASzoB,EAAeC,EAAKrF,GAC3B,OA4CF,SAAyBqF,GACvB,GAAIC,MAAMC,QAAQF,GAAM,OAAOA,CACjC,CA9CSG,CAAgBH,IAoBzB,SAA+BA,EAAKrF,GAClC,IAAIyF,EAAY,MAAPJ,EAAc,KAAyB,qBAAXtB,QAA0BsB,EAAItB,OAAO2B,WAAaL,EAAI,cAC3F,GAAU,MAANI,EAAY,OAChB,IAGIE,EAAIC,EAHJC,EAAO,GACPC,GAAK,EACLC,GAAK,EAET,IACE,IAAKN,EAAKA,EAAGnF,KAAK+E,KAAQS,GAAMH,EAAKF,EAAGO,QAAQC,QAC9CJ,EAAKrF,KAAKmF,EAAG1B,QACTjE,GAAK6F,EAAK3F,SAAWF,GAF4B8F,GAAK,GAa9D,CATE,MAAOjB,GACPkB,GAAK,EACLH,EAAKf,CACP,CAAE,QACA,IACOiB,GAAsB,MAAhBL,EAAW,QAAWA,EAAW,QAG9C,CAFE,QACA,GAAIM,EAAI,MAAMH,CAChB,CACF,CACA,OAAOC,CACT,CA3CiCK,CAAsBb,EAAKrF,IAK5D,SAAqC0D,EAAGyC,GACtC,IAAKzC,EAAG,OACR,GAAiB,kBAANA,EAAgB,OAAO0C,EAAkB1C,EAAGyC,GACvD,IAAI1B,EAAItE,OAAOC,UAAUiG,SAAS/F,KAAKoD,GAAGwB,MAAM,GAAI,GAC1C,WAANT,GAAkBf,EAAE4C,cAAa7B,EAAIf,EAAE4C,YAAYvD,MACvD,GAAU,QAAN0B,GAAqB,QAANA,EAAa,OAAOa,MAAMiB,KAAK7C,GAClD,GAAU,cAANe,GAAqB,2CAA2C+B,KAAK/B,GAAI,OAAO2B,EAAkB1C,EAAGyC,EAC3G,CAZkEM,CAA4BpB,EAAKrF,IAEnG,WACE,MAAM,IAAI0G,UAAU,4IACtB,CAJyGC,EACzG,CAYA,SAASP,EAAkBf,EAAKuB,IACnB,MAAPA,GAAeA,EAAMvB,EAAInF,UAAQ0G,EAAMvB,EAAInF,QAC/C,IAAK,IAAIF,EAAI,EAAG6G,EAAO,IAAIvB,MAAMsB,GAAM5G,EAAI4G,EAAK5G,IAC9C6G,EAAK7G,GAAKqF,EAAIrF,GAEhB,OAAO6G,CACT,CAiCe,SAASqzB,EAAmB7b,GACzC,IAMIiQ,EACAnhB,EACAgtB,EAPFC,EAAyBh1B,EADCE,MAAMlF,UAAU8E,MAAM5E,KAAK+d,GACU,GAC/Dgc,EAAQD,EAAuB,GAC/BE,EAAQF,EAAuB,GAC/BG,EAAQH,EAAuB,GAC/BI,EAAQJ,EAAuB,GAMjC,GAAqB,kBAAVC,EAEJ,MAAM,IAAI3zB,UAAU,wCAG3B,GAJE4nB,EAAO+L,EAIJC,GAA0B,kBAAVA,EAehB,KAAIZ,EAASY,GAOX,MAAM,IAAIl4B,MAAM,4BAA4BuH,OAAO2wB,IANpDC,GACFptB,EAAUmtB,EACVH,EAAWI,GAEXJ,EAAWG,CAEkD,MArB3DE,GACFrtB,EAAUotB,EACVJ,EAAWK,IAEXrtB,OAAUlK,EACVk3B,EAAWI,GAETD,IACFntB,EAvGN,SAAuBtK,GACrB,IAAK,IAAI7C,EAAI,EAAGA,EAAI8J,UAAU5J,OAAQF,IAAK,CACzC,IAAIy6B,EAAS,MAAQ3wB,UAAU9J,GAAK8J,UAAU9J,GAAK,CAAC,EACpDA,EAAI,EAAI25B,EAAQx5B,OAAOs6B,IAAS,GAAIrxB,SAAQ,SAAU7E,GACpDw1B,EAAgBl3B,EAAQ0B,EAAKk2B,EAAOl2B,GACtC,IAAKpE,OAAOu6B,0BAA4Bv6B,OAAO8e,iBAAiBpc,EAAQ1C,OAAOu6B,0BAA0BD,IAAWd,EAAQx5B,OAAOs6B,IAASrxB,SAAQ,SAAU7E,GAC5JpE,OAAOwD,eAAed,EAAQ0B,EAAKpE,OAAO2e,yBAAyB2b,EAAQl2B,GAC7E,GACF,CACA,OAAO1B,CACT,CA6FgB83B,CAAc,CACtBC,eAAgBN,GACfntB,IAYP,MAAO,CACLmhB,KAAMA,EACNnhB,QAASA,EACTgtB,SAAUA,EAEd,CCnIO,IAQIU,EAAe,6CAafC,EAAoB,GAAGnxB,OAXrB,oCAWoCA,OAVnC,WAUmDA,OATtD,WASmEA,OARtD,+BAQyEA,OAPlF,oCAOmGA,OALrG,uBCjBb,SAASoxB,EAAQlN,GAGf,OAAOkN,EAAU,mBAAqBh3B,QAAU,iBAAmBA,OAAO2B,SAAW,SAAUmoB,GAC7F,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAO,mBAAqB9pB,QAAU8pB,EAAIvnB,cAAgBvC,QAAU8pB,IAAQ9pB,OAAO3D,UAAY,gBAAkBytB,CAC1H,EAAGkN,EAAQlN,EACb,CACA,SAASmN,EAAkBn4B,EAAQo4B,GACjC,IAAK,IAAIj7B,EAAI,EAAGA,EAAIi7B,EAAM/6B,OAAQF,IAAK,CACrC,IAAImM,EAAa8uB,EAAMj7B,GACvBmM,EAAWvI,WAAauI,EAAWvI,aAAc,EACjDuI,EAAW6tB,cAAe,EACtB,UAAW7tB,IAAYA,EAAW8tB,UAAW,GACjD95B,OAAOwD,eAAed,EAAQsJ,EAAW5H,IAAK4H,EAChD,CACF,CA4CA,SAAS+uB,EAA2BhwB,EAAM5K,GACxC,GAAIA,IAA2B,WAAlBy6B,EAAQz6B,IAAsC,oBAATA,GAChD,OAAOA,EACF,QAAa,IAATA,EACT,MAAM,IAAIoG,UAAU,4DAEtB,OAAOy0B,EAAuBjwB,EAChC,CACA,SAASiwB,EAAuBjwB,GAC9B,QAAa,IAATA,EACF,MAAM,IAAIkwB,eAAe,6DAE3B,OAAOlwB,CACT,CACA,SAASmwB,EAAiBC,GACxB,IAAIC,EAAwB,oBAARvyB,IAAqB,IAAIA,SAAQ/F,EAuBrD,OAtBAo4B,EAAmB,SAA0BC,GAC3C,GAAc,OAAVA,IAiDmBE,EAjDkBF,GAkDqB,IAAzDG,SAASp1B,SAAS/F,KAAKk7B,GAAI9L,QAAQ,kBAlDS,OAAO4L,EAiD5D,IAA2BE,EAhDvB,GAAqB,oBAAVF,EACT,MAAM,IAAI50B,UAAU,sDAEtB,GAAsB,qBAAX60B,EAAwB,CACjC,GAAIA,EAAO3pB,IAAI0pB,GAAQ,OAAOC,EAAO13B,IAAIy3B,GACzCC,EAAO/wB,IAAI8wB,EAAOI,EACpB,CACA,SAASA,IACP,OAAOC,EAAWL,EAAOxxB,UAAW8xB,EAAgB10B,MAAMZ,YAC5D,CASA,OARAo1B,EAAQt7B,UAAYD,OAAOmE,OAAOg3B,EAAMl7B,UAAW,CACjDkG,YAAa,CACXrC,MAAOy3B,EACP93B,YAAY,EACZq2B,UAAU,EACVD,cAAc,KAGX6B,EAAgBH,EAASJ,EAClC,EACOD,EAAiBC,EAC1B,CACA,SAASK,EAAWG,EAAQzd,EAAMid,GAahC,OAXEK,EADEI,IACWrc,QAAQC,UAER,SAAoBmc,EAAQzd,EAAMid,GAC7C,IAAI1sB,EAAI,CAAC,MACTA,EAAEpO,KAAKg5B,MAAM5qB,EAAGyP,GAChB,IACI2d,EAAW,IADGP,SAASj3B,KAAKg1B,MAAMsC,EAAQltB,IAG9C,OADI0sB,GAAOO,EAAgBG,EAAUV,EAAMl7B,WACpC47B,CACT,EAEKL,EAAWnC,MAAM,KAAM1vB,UAChC,CACA,SAASiyB,IACP,GAAuB,qBAAZrc,UAA4BA,QAAQC,UAAW,OAAO,EACjE,GAAID,QAAQC,UAAUsc,KAAM,OAAO,EACnC,GAAqB,oBAAVC,MAAsB,OAAO,EACxC,IAEE,OADAxT,QAAQtoB,UAAU+7B,QAAQ77B,KAAKof,QAAQC,UAAU+I,QAAS,IAAI,WAAa,MACpE,CAGT,CAFE,MAAOznB,GACP,OAAO,CACT,CACF,CAIA,SAAS46B,EAAgBn4B,EAAGzB,GAK1B,OAJA45B,EAAkB17B,OAAOyf,gBAAkB,SAAyBlc,EAAGzB,GAErE,OADAyB,EAAE04B,UAAYn6B,EACPyB,CACT,EACOm4B,EAAgBn4B,EAAGzB,EAC5B,CACA,SAAS25B,EAAgBl4B,GAIvB,OAHAk4B,EAAkBz7B,OAAOyf,eAAiBzf,OAAOkb,eAAiB,SAAyB3X,GACzF,OAAOA,EAAE04B,WAAaj8B,OAAOkb,eAAe3X,EAC9C,EACOk4B,EAAgBl4B,EACzB,CAOA,IAAI24B,EAA0B,SAAUC,IAtHxC,SAAmBC,EAAUC,GAC3B,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAI91B,UAAU,sDAEtB61B,EAASn8B,UAAYD,OAAOmE,OAAOk4B,GAAcA,EAAWp8B,UAAW,CACrEkG,YAAa,CACXrC,MAAOs4B,EACPtC,UAAU,EACVD,cAAc,KAGlB75B,OAAOwD,eAAe44B,EAAU,YAAa,CAC3CtC,UAAU,IAERuC,GAAYX,EAAgBU,EAAUC,EAC5C,CAwGEC,CAAUJ,EAAYC,GACtB,IAxGoBI,EAChBC,EA9BgBC,EAAaC,EAAYC,EAqIzCC,GAxGgBL,EAwGML,EAvGtBM,EAA4BZ,IACzB,WACL,IACEzR,EADE0S,EAAQpB,EAAgBc,GAE5B,GAAIC,EAA2B,CAC7B,IAAIM,EAAYrB,EAAgB10B,MAAMZ,YACtCgkB,EAAS5K,QAAQC,UAAUqd,EAAOlzB,UAAWmzB,EAC/C,MACE3S,EAAS0S,EAAMxD,MAAMtyB,KAAM4C,WAE7B,OAAOoxB,EAA2Bh0B,KAAMojB,EAC1C,GA6FA,SAAS+R,EAAWtI,GAClB,IAAIrW,EAOJ,OAtIJ,SAAyBse,EAAUY,GACjC,KAAMZ,aAAoBY,GACxB,MAAM,IAAIl2B,UAAU,oCAExB,CA4HIw2B,CAAgBh2B,KAAMm1B,GACtB3e,EAAQqf,EAAOz8B,KAAK4G,KAAM6sB,GAG1B5zB,OAAOyf,eAAeub,EAAuBzd,GAAQ2e,EAAWj8B,WAChEsd,EAAM3a,KAAO2a,EAAMpX,YAAYvD,KACxB2a,CACT,CACA,OAhJoBkf,EAgJAP,EA/IhBQ,GAAY7B,EAAkB4B,EAAYx8B,UAAWy8B,GACrDC,GAAa9B,EAAkB4B,EAAaE,GAChD38B,OAAOwD,eAAei5B,EAAa,YAAa,CAC9C3C,UAAU,IAEL2C,CA2IT,CAd8B,CAcdvB,EAAiBj5B,QC3JlB,gBACbwM,EAAIA,EAAE1B,MAAM,KACZ2S,EAAIA,EAAE3S,MAAM,KAGZ,IAFA,IAAIiwB,EAAKvuB,EAAE,GAAG1B,MAAM,KAChBkwB,EAAKvd,EAAE,GAAG3S,MAAM,KACXlN,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,IAAIq9B,EAAK1U,OAAOwU,EAAGn9B,IACfs9B,EAAK3U,OAAOyU,EAAGp9B,IACnB,GAAIq9B,EAAKC,EAAI,OAAO,EACpB,GAAIA,EAAKD,EAAI,OAAQ,EACrB,IAAKE,MAAMF,IAAOE,MAAMD,GAAK,OAAO,EACpC,GAAIC,MAAMF,KAAQE,MAAMD,GAAK,OAAQ,CACvC,CACA,OAAI1uB,EAAE,IAAMiR,EAAE,GACLjR,EAAE,GAAKiR,EAAE,GAAK,EAAIjR,EAAE,GAAKiR,EAAE,IAAM,EAAI,GAEtCjR,EAAE,IAAMiR,EAAE,GAAK,EAAIjR,EAAE,KAAOiR,EAAE,IAAM,EAAI,C,ECxBlD,SAAS,EAAQgO,GAGf,OAAO,EAAU,mBAAqB9pB,QAAU,iBAAmBA,OAAO2B,SAAW,SAAUmoB,GAC7F,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAO,mBAAqB9pB,QAAU8pB,EAAIvnB,cAAgBvC,QAAU8pB,IAAQ9pB,OAAO3D,UAAY,gBAAkBytB,CAC1H,EAAG,EAAQA,EACb,CACA,SAAS,EAAgBmO,EAAUY,GACjC,KAAMZ,aAAoBY,GACxB,MAAM,IAAIl2B,UAAU,oCAExB,CACA,SAAS,EAAkB7D,EAAQo4B,GACjC,IAAK,IAAIj7B,EAAI,EAAGA,EAAIi7B,EAAM/6B,OAAQF,IAAK,CACrC,IAAImM,EAAa8uB,EAAMj7B,GACvBmM,EAAWvI,WAAauI,EAAWvI,aAAc,EACjDuI,EAAW6tB,cAAe,EACtB,UAAW7tB,IAAYA,EAAW8tB,UAAW,GACjD95B,OAAOwD,eAAed,EAAQsJ,EAAW5H,IAAK4H,EAChD,CACF,CACA,SAAS,EAAaywB,EAAaC,EAAYC,GAM7C,OALID,GAAY,EAAkBD,EAAYx8B,UAAWy8B,GACrDC,GAAa,EAAkBF,EAAaE,GAChD38B,OAAOwD,eAAei5B,EAAa,YAAa,CAC9C3C,UAAU,IAEL2C,CACT,CAKA,IAKIY,EAAqB,SACrBC,EAAuB,QAKvBC,EAAwB,WAC1B,SAASA,EAASvD,GAChB,EAAgBjzB,KAAMw2B,GA8dnB,SAA0BvD,GAC/B,IAAKA,EACH,MAAM,IAAI/3B,MAAM,6EAIlB,IAAKs3B,EAASS,KAAcT,EAASS,EAASwD,WAC5C,MAAM,IAAIv7B,MAAM,sJAAsJuH,OAAO+vB,EAASS,GAAY,yBAA2Bh6B,OAAOuK,KAAKyvB,GAAUxvB,KAAK,MAAQ,KAAO,KAAOizB,EAAOzD,GAAY,KAAOA,EAAU,KAEtT,CAteI0D,CAAiB1D,GACjBjzB,KAAKizB,SAAWA,EAChB2D,EAAWx9B,KAAK4G,KAAMizB,EACxB,CAmNA,OAlNA,EAAauD,EAAU,CAAC,CACtBn5B,IAAK,eACLN,MAAO,WACL,OAAO9D,OAAOuK,KAAKxD,KAAKizB,SAASwD,WAAWvvB,QAAO,SAAU1C,GAC3D,MAAa,QAANA,CACT,GACF,GACC,CACDnH,IAAK,qBACLN,MAAO,SAA4B85B,GACjC,OAAO72B,KAAKizB,SAASwD,UAAUI,EACjC,GACC,CACDx5B,IAAK,gBACLN,MAAO,WACL,KAAIiD,KAAK82B,IAAM92B,KAAK+2B,IAAM/2B,KAAKg3B,IAI/B,OAAOh3B,KAAKizB,SAASgE,eAAiBj3B,KAAKizB,SAASiE,eACtD,GACC,CACD75B,IAAK,aACLN,MAAO,SAAoBo6B,GACzB,YAA4Cp7B,IAArCiE,KAAKo3B,mBAAmBD,EACjC,GACC,CACD95B,IAAK,iBACLN,MAAO,SAAwBs6B,GAC7B,GAAIr3B,KAAKs3B,8BAA8BD,GACrC,OAAO,EAET,GAAIr3B,KAAKi3B,iBACP,GAAIj3B,KAAKi3B,gBAAgBI,GACvB,OAAO,MAEJ,CAEL,IAAIE,EAAev3B,KAAKw3B,sBAAsBH,GAC9C,GAAIE,GAAwC,IAAxBA,EAAav+B,QAAoC,QAApBu+B,EAAa,GAC5D,OAAO,CAEX,CACF,GACC,CACDl6B,IAAK,6BACLN,MAAO,SAAoCs6B,GACzC,OAAIr3B,KAAKi3B,kBACAj3B,KAAKi3B,gBAAgBI,IAErBr3B,KAAKs3B,8BAA8BD,EAE9C,GACC,CACDh6B,IAAK,UACLN,MAAO,SAAiB85B,GACtB,OAAO72B,KAAKy3B,oBAAoBZ,EAClC,GACC,CACDx5B,IAAK,sBACLN,MAAO,SAA6B85B,EAAaQ,GAM/C,GAJIR,GAAeN,EAAqBj3B,KAAKu3B,KAC3CQ,EAAcR,EACdA,EAAc,MAEZA,GAA+B,QAAhBA,EAAuB,CACxC,IAAK72B,KAAK03B,WAAWb,GACnB,MAAM,IAAI37B,MAAM,oBAAoBuH,OAAOo0B,IAE7C72B,KAAK23B,cAAgB,IAAIC,EAAc53B,KAAKo3B,mBAAmBP,GAAc72B,KAC/E,MAAO,GAAIq3B,EAAa,CACtB,IAAKr3B,KAAK63B,eAAeR,GACvB,MAAM,IAAIn8B,MAAM,yBAAyBuH,OAAO40B,IAElDr3B,KAAK23B,cAAgB,IAAIC,EAAc53B,KAAK83B,yBAAyBT,GAAcr3B,KACrF,MACEA,KAAK23B,mBAAgB57B,EAEvB,OAAOiE,IACT,GACC,CACD3C,IAAK,gCACLN,MAAO,SAAuCs6B,GAC5C,IAAIE,EAAev3B,KAAKw3B,sBAAsBH,GAC9C,GAAIE,EAAc,CAUhB,GAA4B,IAAxBA,EAAav+B,QAA2C,IAA3Bu+B,EAAa,GAAGv+B,OAC/C,OAEF,OAAOu+B,CACT,CACF,GACC,CACDl6B,IAAK,+BACLN,MAAO,SAAsCs6B,GAC3C,IAAIE,EAAev3B,KAAKs3B,8BAA8BD,GACtD,GAAIE,EACF,OAAOA,EAAa,EAExB,GACC,CACDl6B,IAAK,2BACLN,MAAO,SAAkCs6B,GACvC,IAAIR,EAAc72B,KAAK+3B,6BAA6BV,GACpD,GAAIR,EACF,OAAO72B,KAAKo3B,mBAAmBP,GAEjC,GAAI72B,KAAKi3B,gBAAiB,CACxB,IAAIhE,EAAWjzB,KAAKi3B,gBAAgBI,GACpC,GAAIpE,EACF,OAAOA,CAEX,KAAO,CAML,IAAIsE,EAAev3B,KAAKw3B,sBAAsBH,GAC9C,GAAIE,GAAwC,IAAxBA,EAAav+B,QAAoC,QAApBu+B,EAAa,GAC5D,OAAOv3B,KAAKizB,SAASwD,UAAU,MAEnC,CACF,GACC,CACDp5B,IAAK,qBACLN,MAAO,WACL,OAAOiD,KAAK23B,cAAcN,aAC5B,GACC,CACDh6B,IAAK,YACLN,MAAO,WACL,OAAOiD,KAAK23B,cAAcK,WAC5B,GACC,CACD36B,IAAK,mBACLN,MAAO,WACL,OAAOiD,KAAK23B,cAAcM,kBAC5B,GACC,CACD56B,IAAK,wBACLN,MAAO,WACL,OAAOiD,KAAK23B,cAAcO,uBAC5B,GACC,CACD76B,IAAK,kBACLN,MAAO,WACL,OAAOiD,KAAK23B,cAAcQ,iBAC5B,GACC,CACD96B,IAAK,UACLN,MAAO,WACL,OAAOiD,KAAK23B,cAAcS,SAC5B,GACC,CACD/6B,IAAK,2BACLN,MAAO,WACL,OAAOiD,KAAK23B,cAAcU,0BAC5B,GACC,CACDh7B,IAAK,8BACLN,MAAO,WACL,OAAOiD,KAAK23B,cAAcW,6BAC5B,GACC,CACDj7B,IAAK,gBACLN,MAAO,WACL,OAAOiD,KAAK23B,cAAcY,eAC5B,GACC,CACDl7B,IAAK,WACLN,MAAO,WACL,OAAOiD,KAAK23B,cAAca,UAC5B,GACC,CACDn7B,IAAK,OACLN,MAAO,SAAc07B,GACnB,OAAOz4B,KAAK23B,cAAcl8B,KAAKg9B,EACjC,GACC,CACDp7B,IAAK,MACLN,MAAO,WACL,OAAOiD,KAAK23B,cAAce,KAC5B,GACC,CACDr7B,IAAK,sBACLN,MAAO,WACL,OAAIiD,KAAK82B,GAAW92B,KAAKizB,SAAS0F,gCAC3B34B,KAAKizB,SAAS2F,qBACvB,GACC,CACDv7B,IAAK,oCACLN,MAAO,SAA2Cs6B,GAChD,OAAOr3B,KAAKy3B,oBAAoBJ,EAClC,GACC,CACDh6B,IAAK,2BACLN,MAAO,WACL,YAA8BhB,IAAvBiE,KAAK23B,aACd,KAEKnB,CACT,CA1N4B,GA4NxBoB,EAA6B,WAC/B,SAASA,EAAc3E,EAAU4F,GAC/B,EAAgB74B,KAAM43B,GACtB53B,KAAK64B,qBAAuBA,EAC5B74B,KAAKizB,SAAWA,EAChB2D,EAAWx9B,KAAK4G,KAAM64B,EAAqB5F,SAC7C,CA4IA,OA3IA,EAAa2E,EAAe,CAAC,CAC3Bv6B,IAAK,cACLN,MAAO,WACL,OAAOiD,KAAKizB,SAAS,EACvB,GAMC,CACD51B,IAAK,qCACLN,MAAO,WACL,OAAOiD,KAAK64B,qBAAqBf,yBAAyB93B,KAAKq3B,cACjE,GACC,CACDh6B,IAAK,YACLN,MAAO,WACL,IAAIiD,KAAK82B,KAAM92B,KAAK+2B,GACpB,OAAO/2B,KAAKizB,SAAS,EACvB,GACC,CACD51B,IAAK,mBACLN,MAAO,WACL,IAAIiD,KAAK82B,KAAM92B,KAAK+2B,GACpB,OAAO/2B,KAAKizB,SAAS,GACvB,GACC,CACD51B,IAAK,wBACLN,MAAO,WACL,OAAIiD,KAAK82B,IAAM92B,KAAK+2B,GAAW/2B,KAAKizB,SAAS,GACtCjzB,KAAKizB,SAAS,EACvB,GACC,CACD51B,IAAK,kBACLN,MAAO,WACL,IAAIiD,KAAK82B,GACT,OAAO92B,KAAKizB,SAASjzB,KAAK+2B,GAAK,EAAI,EACrC,GACC,CACD15B,IAAK,cACLN,MAAO,SAAqBk2B,GAC1B,OAAOA,EAASjzB,KAAK82B,GAAK,EAAI92B,KAAK+2B,GAAK,EAAI,EAC9C,GAGC,CACD15B,IAAK,UACLN,MAAO,WACL,IAAIyZ,EAAQxW,KACRo4B,EAAUp4B,KAAK84B,YAAY94B,KAAKizB,WAAajzB,KAAK84B,YAAY94B,KAAK+4B,uCAAyC,GAChH,OAAOX,EAAQ51B,KAAI,SAAUgC,GAC3B,OAAO,IAAIw0B,EAAOx0B,EAAGgS,EACvB,GACF,GACC,CACDnZ,IAAK,iBACLN,MAAO,WACL,OAAOiD,KAAKizB,SAASjzB,KAAK82B,GAAK,EAAI92B,KAAK+2B,GAAK,EAAI,EACnD,GACC,CACD15B,IAAK,mCACLN,MAAO,SAA0Ck2B,GAC/C,OAAOA,EAASjzB,KAAK82B,GAAK,EAAI92B,KAAK+2B,GAAK,EAAI,EAC9C,GAGC,CACD15B,IAAK,+BACLN,MAAO,WACL,OAAOiD,KAAKi5B,iCAAiCj5B,KAAKizB,WAAajzB,KAAKi5B,iCAAiCj5B,KAAK+4B,qCAC5G,GACC,CACD17B,IAAK,4BACLN,MAAO,WACL,OAAOiD,KAAKizB,SAASjzB,KAAK82B,GAAK,EAAI92B,KAAK+2B,GAAK,EAAI,EACnD,GACC,CACD15B,IAAK,2BACLN,MAAO,WAGL,OAAOiD,KAAKk5B,6BAA+Bl5B,KAAKm5B,gBAClD,GACC,CACD97B,IAAK,8BACLN,MAAO,WACL,OAAOiD,KAAKizB,SAASjzB,KAAK82B,GAAK,EAAI92B,KAAK+2B,GAAK,EAAI,EACnD,GACC,CACD15B,IAAK,6CACLN,MAAO,WACL,QAASiD,KAAKizB,SAASjzB,KAAK82B,GAAK,EAAI92B,KAAK+2B,GAAK,EAAI,EACrD,GAIC,CACD15B,IAAK,yDACLN,MAAO,WACL,OAAOiD,KAAKo5B,2CAA2Cp5B,KAAKizB,WAAajzB,KAAKo5B,2CAA2Cp5B,KAAK+4B,qCAChI,GACC,CACD17B,IAAK,gBACLN,MAAO,WACL,OAAOiD,KAAKizB,SAASjzB,KAAK82B,GAAK,EAAI92B,KAAK+2B,GAAK,EAAI,GACnD,GACC,CACD15B,IAAK,QACLN,MAAO,WACL,OAAOiD,KAAKizB,SAASjzB,KAAK82B,GAAK,EAAI92B,KAAK+2B,GAAK,GAAK,GACpD,GACC,CACD15B,IAAK,WACLN,MAAO,WAIL,QAAIiD,KAAKq5B,SAAmC,IAAxBr5B,KAAKq5B,QAAQrgC,WAKxBgH,KAAKq5B,OAChB,GACC,CACDh8B,IAAK,OACLN,MAAO,SAAcu8B,GACnB,GAAIt5B,KAAKw4B,YAAc,EAAQx4B,KAAKq5B,QAASC,GAC3C,OAAO,IAAIC,EAAK,EAAQv5B,KAAKq5B,QAASC,GAASt5B,KAEnD,GACC,CACD3C,IAAK,MACLN,MAAO,WACL,OAAIiD,KAAK82B,IAAM92B,KAAK+2B,GAAWT,EACxBt2B,KAAKizB,SAAS,KAAOqD,CAC9B,KAEKsB,CACT,CAnJiC,GAoJ7BoB,EAAsB,WACxB,SAASA,EAAO3I,EAAQ4C,GACtB,EAAgBjzB,KAAMg5B,GACtBh5B,KAAKw5B,QAAUnJ,EACfrwB,KAAKizB,SAAWA,CAClB,CAqDA,OApDA,EAAa+F,EAAQ,CAAC,CACpB37B,IAAK,UACLN,MAAO,WACL,OAAOiD,KAAKw5B,QAAQ,EACtB,GACC,CACDn8B,IAAK,SACLN,MAAO,WACL,OAAOiD,KAAKw5B,QAAQ,EACtB,GACC,CACDn8B,IAAK,wBACLN,MAAO,WACL,OAAOiD,KAAKw5B,QAAQ,IAAM,EAC5B,GACC,CACDn8B,IAAK,+BACLN,MAAO,WACL,OAAOiD,KAAKw5B,QAAQ,IAAMx5B,KAAKizB,SAASwG,8BAC1C,GACC,CACDp8B,IAAK,yDACLN,MAAO,WACL,QAASiD,KAAKw5B,QAAQ,IAAMx5B,KAAKizB,SAASyG,wDAC5C,GACC,CACDr8B,IAAK,0DACLN,MAAO,WAML,OAAOiD,KAAK25B,uBAAyB35B,KAAK05B,wDAC5C,GACC,CACDr8B,IAAK,qBACLN,MAAO,WACL,SAAOiD,KAAKy5B,gCAEXG,EAAgCt6B,KAAKU,KAAKy5B,gCAK7C,GACC,CACDp8B,IAAK,sBACLN,MAAO,WACL,OAAOiD,KAAKw5B,QAAQ,IAAMx5B,KAAKqwB,QACjC,KAEK2I,CACT,CA3D0B,GAkEtBY,EAAkC,cAClCL,EAAoB,WACtB,SAASA,EAAK99B,EAAMw3B,GAClB,EAAgBjzB,KAAMu5B,GACtBv5B,KAAKvE,KAAOA,EACZuE,KAAKizB,SAAWA,CAClB,CAcA,OAbA,EAAasG,EAAM,CAAC,CAClBl8B,IAAK,UACLN,MAAO,WACL,OAAIiD,KAAKizB,SAAS6D,GAAW92B,KAAKvE,KAC3BuE,KAAKvE,KAAK,EACnB,GACC,CACD4B,IAAK,kBACLN,MAAO,WACL,IAAIiD,KAAKizB,SAAS6D,GAClB,OAAO92B,KAAKvE,KAAK,IAAMuE,KAAKizB,SAASkF,iBACvC,KAEKoB,CACT,CApBwB,GAqBxB,SAAS,EAAQF,EAAO59B,GACtB,OAAQA,GACN,IAAK,aACH,OAAO49B,EAAM,GACf,IAAK,SACH,OAAOA,EAAM,GACf,IAAK,YACH,OAAOA,EAAM,GACf,IAAK,eACH,OAAOA,EAAM,GACf,IAAK,kBACH,OAAOA,EAAM,GACf,IAAK,YACH,OAAOA,EAAM,GACf,IAAK,MACH,OAAOA,EAAM,GACf,IAAK,QACH,OAAOA,EAAM,GACf,IAAK,OACH,OAAOA,EAAM,GACf,IAAK,cACH,OAAOA,EAAM,GAEnB,CAeA,IAAI3C,EAAS,SAAgBlyB,GAC3B,OAAO,EAAQA,EACjB,EA6BO,SAASq1B,EAAsB1C,EAASlE,GAE7C,IADAA,EAAW,IAAIuD,EAASvD,IACXyE,WAAWP,GACtB,OAAOlE,EAASkE,QAAQA,GAAS2C,qBAEnC,MAAM,IAAI5+B,MAAM,oBAAoBuH,OAAO00B,GAC7C,CAMA,SAASP,EAAW3D,GAClB,IAAI8G,EAAU9G,EAAS8G,QACA,kBAAZA,GACT/5B,KAAK82B,GAAiB,IAAZiD,EACV/5B,KAAK+2B,GAAiB,IAAZgD,EACV/5B,KAAKg3B,GAAiB,IAAZ+C,EACV/5B,KAAKg6B,GAAiB,IAAZD,GAELA,GAEgC,IAA1B,EAAQA,EA5iBd,SA6iBH/5B,KAAK+2B,IAAK,GACyB,IAA1B,EAAQgD,EA5iBd,UA6iBH/5B,KAAKg3B,IAAK,EAEVh3B,KAAKg6B,IAAK,EANVh6B,KAAK82B,IAAK,CAShB,CCvlBA,IAOI,EAA4B,SAAmCmD,GACjE,MAAO,KAAKx3B,OAAOkxB,EAAc,QAAQlxB,OAAOw3B,EAAW,KAC7D,EASe,SAASC,EAAuBC,GAQ7C,IAmBIC,EAAqB,KAyDzB,MAtGwB,QA0EY,EAhDH,MA4EhB,KAzBEC,iIAA8F,EAnDhF,MAmDwID,GAyBnI,KAtBlBC,2FAA+F,EAhDlF,KAgD0ID,GAsB/G,KA3CnC,QAwB8B,EAhD7B,KAgD8E,KAmBR,KAhBzEE,kDAAuG,EAzD/F,MAyDqJF,GAgB3D,KAbpGE,8CAAkF,EAzDtE,KAyD8HF,EAcjK,CC/EA,IAKWG,EAAqB,qBAA4C3G,EAA5C,0DAAkHA,EAAlH,+CAU5B4G,EAAmC,IAAIlzB,OAAO,sBAAkDssB,EAAlD,2DAAwH,KAC/J6G,EAAoCF,EAE/C,MAAQL,IAA2B,KAG/BQ,EAA6B,IAAIpzB,OAErC,sDAEMmzB,EAAoC,IAAK,KAQhC,SAASE,EAAoB/Y,GAC1C,OAAOA,EAAO5oB,QL3DgB,GK2DgB0hC,EAA2Bp7B,KAAKsiB,EAChF,CC1DA,IAAIgZ,EAAe,IAAItzB,OAAO,MAAQ4yB,IAA2B,KAAM,KCHvE,SAASW,EAAgCr+B,EAAGs+B,GAC1C,IAAIC,EAAuB,qBAAXl+B,QAA0BL,EAAEK,OAAO2B,WAAahC,EAAE,cAClE,GAAIu+B,EAAI,OAAQA,EAAKA,EAAG3hC,KAAKoD,IAAIsC,KAAKxB,KAAKy9B,GAC3C,GAAI38B,MAAMC,QAAQ7B,KAAOu+B,EAe3B,SAAqCv+B,EAAGyC,GACtC,IAAKzC,EAAG,OACR,GAAiB,kBAANA,EAAgB,OAAO,EAAkBA,EAAGyC,GACvD,IAAI1B,EAAItE,OAAOC,UAAUiG,SAAS/F,KAAKoD,GAAGwB,MAAM,GAAI,GAC1C,WAANT,GAAkBf,EAAE4C,cAAa7B,EAAIf,EAAE4C,YAAYvD,MACvD,GAAU,QAAN0B,GAAqB,QAANA,EAAa,OAAOa,MAAMiB,KAAK7C,GAClD,GAAU,cAANe,GAAqB,2CAA2C+B,KAAK/B,GAAI,OAAO,EAAkBf,EAAGyC,EAC3G,CAtBgC,CAA4BzC,KAAOs+B,GAAkBt+B,GAAyB,kBAAbA,EAAExD,OAAqB,CAChH+hC,IAAIv+B,EAAIu+B,GACZ,IAAIjiC,EAAI,EACR,OAAO,WACL,OAAIA,GAAK0D,EAAExD,OAAe,CACxB+F,MAAM,GAED,CACLA,MAAM,EACNhC,MAAOP,EAAE1D,KAEb,CACF,CACA,MAAM,IAAI0G,UAAU,wIACtB,CASA,SAAS,EAAkBrB,EAAKuB,IACnB,MAAPA,GAAeA,EAAMvB,EAAInF,UAAQ0G,EAAMvB,EAAInF,QAC/C,IAAK,IAAIF,EAAI,EAAG6G,EAAO,IAAIvB,MAAMsB,GAAM5G,EAAI4G,EAAK5G,IAC9C6G,EAAK7G,GAAKqF,EAAIrF,GAEhB,OAAO6G,CACT,CAQO,IAAIq7B,EAAS,CAClB,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,KAGL,SAASC,EAAWC,GACzB,OAAOF,EAAOE,EAChB,CAee,SAASC,EAAYtZ,GAQlC,IAPA,IAOwEuZ,EAPpEhY,EAAS,GAOJiY,EAAYR,EAAgChZ,EAAO7b,MAAM,OAAeo1B,EAAQC,KAAat8B,MAAO,CAC3G,IACIu8B,EAAQL,EADIG,EAAMr+B,OAElBu+B,IACFlY,GAAUkY,EAEd,CACA,OAAOlY,CACT,CCjJA,SAAS,GAAgC5mB,EAAGs+B,GAC1C,IAAIC,EAAuB,qBAAXl+B,QAA0BL,EAAEK,OAAO2B,WAAahC,EAAE,cAClE,GAAIu+B,EAAI,OAAQA,EAAKA,EAAG3hC,KAAKoD,IAAIsC,KAAKxB,KAAKy9B,GAC3C,GAAI38B,MAAMC,QAAQ7B,KAAOu+B,EAe3B,SAAqCv+B,EAAGyC,GACtC,IAAKzC,EAAG,OACR,GAAiB,kBAANA,EAAgB,OAAO,GAAkBA,EAAGyC,GACvD,IAAI1B,EAAItE,OAAOC,UAAUiG,SAAS/F,KAAKoD,GAAGwB,MAAM,GAAI,GAC1C,WAANT,GAAkBf,EAAE4C,cAAa7B,EAAIf,EAAE4C,YAAYvD,MACvD,GAAU,QAAN0B,GAAqB,QAANA,EAAa,OAAOa,MAAMiB,KAAK7C,GAClD,GAAU,cAANe,GAAqB,2CAA2C+B,KAAK/B,GAAI,OAAO,GAAkBf,EAAGyC,EAC3G,CAtBgC,CAA4BzC,KAAOs+B,GAAkBt+B,GAAyB,kBAAbA,EAAExD,OAAqB,CAChH+hC,IAAIv+B,EAAIu+B,GACZ,IAAIjiC,EAAI,EACR,OAAO,WACL,OAAIA,GAAK0D,EAAExD,OAAe,CACxB+F,MAAM,GAED,CACLA,MAAM,EACNhC,MAAOP,EAAE1D,KAEb,CACF,CACA,MAAM,IAAI0G,UAAU,wIACtB,CASA,SAAS,GAAkBrB,EAAKuB,IACnB,MAAPA,GAAeA,EAAMvB,EAAInF,UAAQ0G,EAAMvB,EAAInF,QAC/C,IAAK,IAAIF,EAAI,EAAG6G,EAAO,IAAIvB,MAAMsB,GAAM5G,EAAI4G,EAAK5G,IAC9C6G,EAAK7G,GAAKqF,EAAIrF,GAEhB,OAAO6G,CACT,CAkBe,SAAS47B,GAA2B1Z,GAQjD,IAPA,IAOwEuZ,EAPpEhY,EAAS,GAOJiY,EAAY,GAAgCxZ,EAAO7b,MAAM,OAAeo1B,EAAQC,KAAat8B,MAAO,CAE3GqkB,GAAUoY,GADMJ,EAAMr+B,MACyBqmB,IAAW,EAC5D,CACA,OAAOA,CACT,CAaO,SAASoY,GAA0BN,EAAWO,EAAsBC,GAEzE,MAAkB,MAAdR,EAGEO,OAYuB,oBAAdC,GACTA,EAAU,QAIP,IAGFT,EAAWC,EACpB,CCtGA,SAAS,GAAgC1+B,EAAGs+B,GAC1C,IAAIC,EAAuB,qBAAXl+B,QAA0BL,EAAEK,OAAO2B,WAAahC,EAAE,cAClE,GAAIu+B,EAAI,OAAQA,EAAKA,EAAG3hC,KAAKoD,IAAIsC,KAAKxB,KAAKy9B,GAC3C,GAAI38B,MAAMC,QAAQ7B,KAAOu+B,EAe3B,SAAqCv+B,EAAGyC,GACtC,IAAKzC,EAAG,OACR,GAAiB,kBAANA,EAAgB,OAAO,GAAkBA,EAAGyC,GACvD,IAAI1B,EAAItE,OAAOC,UAAUiG,SAAS/F,KAAKoD,GAAGwB,MAAM,GAAI,GAC1C,WAANT,GAAkBf,EAAE4C,cAAa7B,EAAIf,EAAE4C,YAAYvD,MACvD,GAAU,QAAN0B,GAAqB,QAANA,EAAa,OAAOa,MAAMiB,KAAK7C,GAClD,GAAU,cAANe,GAAqB,2CAA2C+B,KAAK/B,GAAI,OAAO,GAAkBf,EAAGyC,EAC3G,CAtBgC,CAA4BzC,KAAOs+B,GAAkBt+B,GAAyB,kBAAbA,EAAExD,OAAqB,CAChH+hC,IAAIv+B,EAAIu+B,GACZ,IAAIjiC,EAAI,EACR,OAAO,WACL,OAAIA,GAAK0D,EAAExD,OAAe,CACxB+F,MAAM,GAED,CACLA,MAAM,EACNhC,MAAOP,EAAE1D,KAEb,CACF,CACA,MAAM,IAAI0G,UAAU,wIACtB,CASA,SAAS,GAAkBrB,EAAKuB,IACnB,MAAPA,GAAeA,EAAMvB,EAAInF,UAAQ0G,EAAMvB,EAAInF,QAC/C,IAAK,IAAIF,EAAI,EAAG6G,EAAO,IAAIvB,MAAMsB,GAAM5G,EAAI4G,EAAK5G,IAC9C6G,EAAK7G,GAAKqF,EAAIrF,GAEhB,OAAO6G,CACT,CC/Be,SAASg8B,GAAkBC,EAAgB3I,GACxD,OAAO4I,GAAyBD,OAAgB7/B,EAAWk3B,EAC7D,CAGO,SAAS4I,GAAyBD,EAAgBngC,EAAMw3B,GAC7D,IAAI6I,EAAY7I,EAASx3B,KAAKA,GAQ1BsgC,EAAmBD,GAAaA,EAAU3D,mBAAqBlF,EAASkF,kBAG5E,IAAK4D,EACH,MAAO,cAET,GAAa,yBAATtgC,EAAiC,CAInC,IAAKw3B,EAASx3B,KAAK,cAGjB,OAAOogC,GAAyBD,EAAgB,SAAU3I,GAE5D,IAAI+I,EAAc/I,EAASx3B,KAAK,UAC5BugC,IAMFD,EDGS,SAAqBr0B,EAAGiR,GAErC,IADA,IACyDyiB,EADrDa,EAASv0B,EAAE1J,QACNq9B,EAAY,GAAgC1iB,KAAayiB,EAAQC,KAAat8B,MAAO,CAC5F,IAAImF,EAAUk3B,EAAMr+B,MAChB2K,EAAE8gB,QAAQtkB,GAAW,GACvB+3B,EAAO3iC,KAAK4K,EAEhB,CACA,OAAO+3B,EAAO56B,MAAK,SAAUqG,EAAGiR,GAC9B,OAAOjR,EAAIiR,CACb,GAMF,CCnByBujB,CAAYH,EAAkBC,EAAY7D,mBASjE,MACK,GAAI18B,IAASqgC,EAChB,MAAO,iBAET,IAAIK,EAAgBP,EAAe5iC,OAQ/BojC,EAAiBL,EAAiB,GACtC,OAAIK,IAAmBD,EACd,cAELC,EAAiBD,EACZ,YAELJ,EAAiBA,EAAiB/iC,OAAS,GAAKmjC,EAC3C,WAGFJ,EAAiBvT,QAAQ2T,EAAe,IAAM,EAAI,cAAgB,gBAC3E,CCRO,SAASE,GAAiBT,EAAgB3I,GAE/C,MACO,gBADC0I,GAAkBC,EAAgB3I,EAW5C,CCtEe,SAASqJ,GAAgBlV,EAAMmV,GAI5C,OADAnV,EAAOA,GAAQ,GACR,IAAI9f,OAAO,OAASi1B,EAAqB,MAAMj9B,KAAK8nB,EAC7D,CCVA,SAAS,GAAgC5qB,EAAGs+B,GAC1C,IAAIC,EAAuB,qBAAXl+B,QAA0BL,EAAEK,OAAO2B,WAAahC,EAAE,cAClE,GAAIu+B,EAAI,OAAQA,EAAKA,EAAG3hC,KAAKoD,IAAIsC,KAAKxB,KAAKy9B,GAC3C,GAAI38B,MAAMC,QAAQ7B,KAAOu+B,EAe3B,SAAqCv+B,EAAGyC,GACtC,IAAKzC,EAAG,OACR,GAAiB,kBAANA,EAAgB,OAAO,GAAkBA,EAAGyC,GACvD,IAAI1B,EAAItE,OAAOC,UAAUiG,SAAS/F,KAAKoD,GAAGwB,MAAM,GAAI,GAC1C,WAANT,GAAkBf,EAAE4C,cAAa7B,EAAIf,EAAE4C,YAAYvD,MACvD,GAAU,QAAN0B,GAAqB,QAANA,EAAa,OAAOa,MAAMiB,KAAK7C,GAClD,GAAU,cAANe,GAAqB,2CAA2C+B,KAAK/B,GAAI,OAAO,GAAkBf,EAAGyC,EAC3G,CAtBgC,CAA4BzC,KAAOs+B,GAAkBt+B,GAAyB,kBAAbA,EAAExD,OAAqB,CAChH+hC,IAAIv+B,EAAIu+B,GACZ,IAAIjiC,EAAI,EACR,OAAO,WACL,OAAIA,GAAK0D,EAAExD,OAAe,CACxB+F,MAAM,GAED,CACLA,MAAM,EACNhC,MAAOP,EAAE1D,KAEb,CACF,CACA,MAAM,IAAI0G,UAAU,wIACtB,CASA,SAAS,GAAkBrB,EAAKuB,IACnB,MAAPA,GAAeA,EAAMvB,EAAInF,UAAQ0G,EAAMvB,EAAInF,QAC/C,IAAK,IAAIF,EAAI,EAAG6G,EAAO,IAAIvB,MAAMsB,GAAM5G,EAAI4G,EAAK5G,IAC9C6G,EAAK7G,GAAKqF,EAAIrF,GAEhB,OAAO6G,CACT,CAGA,IAAI68B,GAA6B,CAAC,SAAU,eAAgB,YAAa,cAAe,OAAQ,kBAAmB,QAAS,MAAO,aAEpH,SAASC,GAAc30B,EAAO7B,EAASgtB,GAOpD,GAJAhtB,EAAUA,GAAW,CAAC,EAIjB6B,EAAMqvB,SAAYrvB,EAAMgyB,mBAA7B,EAGA7G,EAAW,IAAIuD,EAASvD,IACfwE,oBAAoB3vB,EAAMqvB,QAASrvB,EAAMgyB,oBAClD,IAAI8B,EAAiB31B,EAAQ8wB,GAAKjvB,EAAM8zB,eAAiB9zB,EAAM40B,MAI/D,GAAKJ,GAAgBV,EAAgB3I,EAASiF,yBAA9C,CAIA,GAAIyE,GAAoBf,EAAgB,aAAc3I,GAKpD,OAAIA,EAASx3B,KAAK,WAAmD,KAAtCw3B,EAASx3B,KAAK,UAAU4L,UAC9C,uBASJ4rB,EAASx3B,KAAK,UAOfkhC,GAAoBf,EAAgB,SAAU3I,GACzC,uBAEF,aATE,uBAWX,IAAK,IAA6EmI,EAAzEC,EAAY,GAAgCmB,MAAsCpB,EAAQC,KAAat8B,MAAO,CACrH,IAAItD,EAAO2/B,EAAMr+B,MACjB,GAAI4/B,GAAoBf,EAAgBngC,EAAMw3B,GAC5C,OAAOx3B,CAEX,CAlCA,CATA,CA4CF,CACO,SAASkhC,GAAoBf,EAAgBngC,EAAMw3B,GAExD,UADAx3B,EAAOw3B,EAASx3B,KAAKA,MACPA,EAAK4L,eASf5L,EAAK08B,mBAAqB18B,EAAK08B,kBAAkB3P,QAAQoT,EAAe5iC,QAAU,IAG/EsjC,GAAgBV,EAAgBngC,EAAK4L,WAC9C,CCjGe,SAASu1B,GAA8BvF,EAAauE,EAAgB3I,GACjF,IACI4J,EADY,IAAIrG,EAASvD,GACKqE,8BAA8BD,GAChE,OAAKwF,EAGEA,EAAkB31B,QAAO,SAAUiwB,GACxC,OAGJ,SAA4CyE,EAAgBzE,EAASlE,GACnE,IAAI6J,EAAY,IAAItG,EAASvD,GAE7B,GADA6J,EAAUrF,oBAAoBN,GAC1B2F,EAAUnF,cAAcQ,kBAAkB3P,QAAQoT,EAAe5iC,SAAW,EAC9E,OAAO,EAET,OAAO,CACT,CAVW+jC,CAAmCnB,EAAgBzE,EAASlE,EACrE,IAJS,EAKX,CCae,SAAS+J,GAAiCC,GACvD,OAAOA,EAAgB14B,QAAQ,IAAI+C,OAAO,IAAI7E,OAAOmxB,EAAmB,MAAO,KAAM,KAAK/tB,MAC5F,CC5BO,IAAIq3B,GAAsB,SAClB,SAASC,GAAgCvb,EAAQyO,EAAQ1sB,GACtE,IAAIy5B,EAAyBz5B,EAAKy5B,uBAChCC,EAAqB15B,EAAK05B,mBAGxBJ,GAFYt5B,EAAK25B,YACR35B,EAAKsvB,SACIrR,EAAOrd,QAAQ,IAAI+C,OAAO+oB,EAAOhpB,WAAY+1B,EAAyB/M,EAAOkN,sBAcnGF,GAAsBhN,EAAOoJ,+BAAiCpJ,EAAOA,SAAS9rB,QAAQ24B,GAAqB7M,EAAOoJ,gCAAkCpJ,EAAOA,WAC3J,OAAI+M,EACKJ,GAAiCC,GAEnCA,CACT,CCnBA,IAAIO,GAA4B,yCCXhC,SAAS,GAAgChhC,EAAGs+B,GAC1C,IAAIC,EAAuB,qBAAXl+B,QAA0BL,EAAEK,OAAO2B,WAAahC,EAAE,cAClE,GAAIu+B,EAAI,OAAQA,EAAKA,EAAG3hC,KAAKoD,IAAIsC,KAAKxB,KAAKy9B,GAC3C,GAAI38B,MAAMC,QAAQ7B,KAAOu+B,EAe3B,SAAqCv+B,EAAGyC,GACtC,IAAKzC,EAAG,OACR,GAAiB,kBAANA,EAAgB,OAAO,GAAkBA,EAAGyC,GACvD,IAAI1B,EAAItE,OAAOC,UAAUiG,SAAS/F,KAAKoD,GAAGwB,MAAM,GAAI,GAC1C,WAANT,GAAkBf,EAAE4C,cAAa7B,EAAIf,EAAE4C,YAAYvD,MACvD,GAAU,QAAN0B,GAAqB,QAANA,EAAa,OAAOa,MAAMiB,KAAK7C,GAClD,GAAU,cAANe,GAAqB,2CAA2C+B,KAAK/B,GAAI,OAAO,GAAkBf,EAAGyC,EAC3G,CAtBgC,CAA4BzC,KAAOs+B,GAAkBt+B,GAAyB,kBAAbA,EAAExD,OAAqB,CAChH+hC,IAAIv+B,EAAIu+B,GACZ,IAAIjiC,EAAI,EACR,OAAO,WACL,OAAIA,GAAK0D,EAAExD,OAAe,CACxB+F,MAAM,GAED,CACLA,MAAM,EACNhC,MAAOP,EAAE1D,KAEb,CACF,CACA,MAAM,IAAI0G,UAAU,wIACtB,CASA,SAAS,GAAkBrB,EAAKuB,IACnB,MAAPA,GAAeA,EAAMvB,EAAInF,UAAQ0G,EAAMvB,EAAInF,QAC/C,IAAK,IAAIF,EAAI,EAAG6G,EAAO,IAAIvB,MAAMsB,GAAM5G,EAAI4G,EAAK5G,IAC9C6G,EAAK7G,GAAKqF,EAAIrF,GAEhB,OAAO6G,CACT,CACA,SAAS,GAAQnC,EAAQk1B,GACvB,IAAIlvB,EAAOvK,OAAOuK,KAAKhG,GACvB,GAAIvE,OAAOmf,sBAAuB,CAChC,IAAIua,EAAU15B,OAAOmf,sBAAsB5a,GAC3Ck1B,IAAmBC,EAAUA,EAAQzrB,QAAO,SAAU0rB,GACpD,OAAO35B,OAAO2e,yBAAyBpa,EAAQo1B,GAAKl2B,UACtD,KAAK8G,EAAKlK,KAAKg5B,MAAM9uB,EAAMmvB,EAC7B,CACA,OAAOnvB,CACT,CACA,SAAS,GAAc7H,GACrB,IAAK,IAAI7C,EAAI,EAAGA,EAAI8J,UAAU5J,OAAQF,IAAK,CACzC,IAAIy6B,EAAS,MAAQ3wB,UAAU9J,GAAK8J,UAAU9J,GAAK,CAAC,EACpDA,EAAI,EAAI,GAAQG,OAAOs6B,IAAS,GAAIrxB,SAAQ,SAAU7E,GACpD,GAAgB1B,EAAQ0B,EAAKk2B,EAAOl2B,GACtC,IAAKpE,OAAOu6B,0BAA4Bv6B,OAAO8e,iBAAiBpc,EAAQ1C,OAAOu6B,0BAA0BD,IAAW,GAAQt6B,OAAOs6B,IAASrxB,SAAQ,SAAU7E,GAC5JpE,OAAOwD,eAAed,EAAQ0B,EAAKpE,OAAO2e,yBAAyB2b,EAAQl2B,GAC7E,GACF,CACA,OAAO1B,CACT,CACA,SAAS,GAAgBgrB,EAAKtpB,EAAKN,GAWjC,OAVIM,KAAOspB,EACT1tB,OAAOwD,eAAekqB,EAAKtpB,EAAK,CAC9BN,MAAOA,EACPL,YAAY,EACZo2B,cAAc,EACdC,UAAU,IAGZpM,EAAItpB,GAAON,EAEN4pB,CACT,CAWA,IAAI8W,GAAkB,CACpBC,gBAAiB,SAAyBT,EAAiBU,EAAW1K,GACpE,MAAO,GAAGxwB,OAAOw6B,GAAiBx6B,OAAOwwB,EAASyF,OAAOj2B,OAAOk7B,EAClE,GAkBa,SAASC,GAAa91B,EAAOuoB,EAAQpqB,EAASgtB,GAQ3D,GALEhtB,EADEA,EACQ,GAAc,GAAc,CAAC,EAAGw3B,IAAkBx3B,GAElDw3B,GAEZxK,EAAW,IAAIuD,EAASvD,GACpBnrB,EAAMqvB,SAA6B,QAAlBrvB,EAAMqvB,QAAmB,CAE5C,IAAKlE,EAASyE,WAAW5vB,EAAMqvB,SAC7B,MAAM,IAAIj8B,MAAM,oBAAoBuH,OAAOqF,EAAMqvB,UAEnDlE,EAASkE,QAAQrvB,EAAMqvB,QACzB,KAAO,KAAIrvB,EAAMgyB,mBAEV,OAAOhyB,EAAM40B,OAAS,GAD3BzJ,EAASwE,oBAAoB3vB,EAAMgyB,mBACN,CAC/B,IAIIlY,EAJAkY,EAAqB7G,EAAS6G,qBAC9B8B,EAAiB31B,EAAQ8wB,GAAKjvB,EAAM8zB,eAAiB9zB,EAAM40B,MAI/D,OAAQrM,GACN,IAAK,WAGH,OAAKuL,EAIEiC,GADPjc,EAASkc,GAAqBlC,EAAgB9zB,EAAMw1B,YAAa,WAAYrK,EAAUhtB,GAC3D6B,EAAM4wB,IAAKzF,EAAUhtB,EAAQy3B,iBAHhD,GAIX,IAAK,gBAGH,OAAK9B,GAGLha,EAASkc,GAAqBlC,EAAgB,KAAM,gBAAiB3I,EAAUhtB,GAExE43B,GADPjc,EAAS,IAAInf,OAAOq3B,EAAoB,KAAKr3B,OAAOmf,GACxB9Z,EAAM4wB,IAAKzF,EAAUhtB,EAAQy3B,kBAJhD,IAAIj7B,OAAOq3B,GAKtB,IAAK,QAEH,MAAO,IAAIr3B,OAAOq3B,GAAoBr3B,OAAOm5B,GAC/C,IAAK,UACH,OCzBC,SAAuBj4B,GAC5B,IAAIie,EAASje,EAAKie,OAChB8W,EAAM/0B,EAAK+0B,IACb,IAAK9W,EACH,MAAO,GAET,GAAkB,MAAdA,EAAO,GACT,MAAM,IAAI1mB,MAAM,6DAElB,MAAO,OAAOuH,OAAOmf,GAAQnf,OAAOi2B,EAAM,QAAUA,EAAM,GAC5D,CDeaqF,CAAc,CACnBnc,OAAQ,IAAInf,OAAOq3B,GAAoBr3B,OAAOm5B,GAC9ClD,IAAK5wB,EAAM4wB,MAOf,IAAK,MACH,IAAKzyB,EAAQ+3B,YACX,OAGF,IAAIf,EA0CV,SAAmBrB,EAAgB0B,EAAaxD,EAAoBkE,EAAa/K,GAG/E,GAF6B4G,EAAsBmE,EAAa/K,EAASA,YAE1C6G,EAAoB,CACjD,IAAImD,EAAkBa,GAAqBlC,EAAgB0B,EAAa,WAAYrK,GAGpF,MAA2B,MAAvB6G,EACKA,EAAqB,IAAMmD,EAW7BA,CACT,CACA,IAAIgB,ED7MS,SAAsB9G,EAASE,EAAapE,GACzD,IAAIiL,EAAkB,IAAI1H,EAASvD,GAEnC,OADAiL,EAAgBzG,oBAAoBN,EAASE,GACzC6G,EAAgBjG,mBACXiG,EAAgBjG,mBAErBuF,GAA0Bl+B,KAAK4+B,EAAgBlG,aAC1CkG,EAAgBlG,iBADzB,CAGF,CCoMkBmG,CAAaH,OAAajiC,EAAWk3B,EAASA,UAC9D,GAAIgL,EACF,MAAO,GAAGx7B,OAAOw7B,EAAW,KAAKx7B,OAAOq3B,EAAoB,KAAKr3B,OAAOq7B,GAAqBlC,EAAgB,KAAM,gBAAiB3I,GAExI,CAnE4BmL,CAAUxC,EAAgB9zB,EAAMw1B,YAAaxD,EAAoB7zB,EAAQ+3B,YAAa/K,GAC5G,OAAO4K,GAAaZ,EAAiBn1B,EAAM4wB,IAAKzF,EAAUhtB,EAAQy3B,iBACpE,QACE,MAAM,IAAIxiC,MAAM,0DAA+DuH,OAAO4tB,EAAQ,MAEpG,CACA,SAASyN,GAAqBlc,EAAQ0b,EAAae,EAAUpL,EAAUhtB,GACrE,IAAIoqB,EAWC,SAA+BiO,EAAkBC,GACtD,IAAK,IAAmEnD,EAA/DC,EAAY,GAAgCiD,KAA4BlD,EAAQC,KAAat8B,MAAO,CAC3G,IAAIsxB,EAAS+K,EAAMr+B,MAKnB,GAAIszB,EAAOmO,wBAAwBxlC,OAAS,EAAG,CAE7C,IAAIylC,EAA2BpO,EAAOmO,wBAAwBnO,EAAOmO,wBAAwBxlC,OAAS,GAEtG,GAAyD,IAArDulC,EAAgBG,OAAOD,GACzB,QAEJ,CAEA,GAAInC,GAAgBiC,EAAiBlO,EAAOhpB,WAC1C,OAAOgpB,CAEX,CACF,CA/BesO,CAAsB1L,EAASmF,UAAWxW,GACvD,OAAKyO,EAGE8M,GAAgCvb,EAAQyO,EAAQ,CACrD+M,uBAAqC,kBAAbiB,EACxBhB,oBAAoBhN,EAAOqJ,2DAA4DzzB,IAAsC,IAA3BA,EAAQkzB,eAC1GmE,YAAaA,EACbrK,SAAUA,IANHrR,CAQX,CAsBA,SAASic,GAAaZ,EAAiBvE,EAAKzF,EAAUyK,GACpD,OAAOhF,EAAMgF,EAAgBT,EAAiBvE,EAAKzF,GAAYgK,CACjE,CErMA,SAAS,GAAQz/B,EAAQk1B,GACvB,IAAIlvB,EAAOvK,OAAOuK,KAAKhG,GACvB,GAAIvE,OAAOmf,sBAAuB,CAChC,IAAIua,EAAU15B,OAAOmf,sBAAsB5a,GAC3Ck1B,IAAmBC,EAAUA,EAAQzrB,QAAO,SAAU0rB,GACpD,OAAO35B,OAAO2e,yBAAyBpa,EAAQo1B,GAAKl2B,UACtD,KAAK8G,EAAKlK,KAAKg5B,MAAM9uB,EAAMmvB,EAC7B,CACA,OAAOnvB,CACT,CACA,SAAS,GAAc7H,GACrB,IAAK,IAAI7C,EAAI,EAAGA,EAAI8J,UAAU5J,OAAQF,IAAK,CACzC,IAAIy6B,EAAS,MAAQ3wB,UAAU9J,GAAK8J,UAAU9J,GAAK,CAAC,EACpDA,EAAI,EAAI,GAAQG,OAAOs6B,IAAS,GAAIrxB,SAAQ,SAAU7E,GACpD,GAAgB1B,EAAQ0B,EAAKk2B,EAAOl2B,GACtC,IAAKpE,OAAOu6B,0BAA4Bv6B,OAAO8e,iBAAiBpc,EAAQ1C,OAAOu6B,0BAA0BD,IAAW,GAAQt6B,OAAOs6B,IAASrxB,SAAQ,SAAU7E,GAC5JpE,OAAOwD,eAAed,EAAQ0B,EAAKpE,OAAO2e,yBAAyB2b,EAAQl2B,GAC7E,GACF,CACA,OAAO1B,CACT,CACA,SAAS,GAAgBgrB,EAAKtpB,EAAKN,GAWjC,OAVIM,KAAOspB,EACT1tB,OAAOwD,eAAekqB,EAAKtpB,EAAK,CAC9BN,MAAOA,EACPL,YAAY,EACZo2B,cAAc,EACdC,UAAU,IAGZpM,EAAItpB,GAAON,EAEN4pB,CACT,CAMA,SAAS,GAAkBhrB,EAAQo4B,GACjC,IAAK,IAAIj7B,EAAI,EAAGA,EAAIi7B,EAAM/6B,OAAQF,IAAK,CACrC,IAAImM,EAAa8uB,EAAMj7B,GACvBmM,EAAWvI,WAAauI,EAAWvI,aAAc,EACjDuI,EAAW6tB,cAAe,EACtB,UAAW7tB,IAAYA,EAAW8tB,UAAW,GACjD95B,OAAOwD,eAAed,EAAQsJ,EAAW5H,IAAK4H,EAChD,CACF,CAgBA,IACI,GAA2B,WAO7B,SAAS25B,EAAYC,EAA6BjD,EAAgB3I,GAEhE,GAvCJ,SAAyB6B,EAAUY,GACjC,KAAMZ,aAAoBY,GACxB,MAAM,IAAIl2B,UAAU,oCAExB,CAkCI,CAAgBQ,KAAM4+B,IACjBC,EACH,MAAM,IAAIr/B,UAAU,gDAEtB,IAAKo8B,EACH,MAAM,IAAIp8B,UAAU,+BAEtB,IAAKyzB,EACH,MAAM,IAAIzzB,UAAU,yBAEtB,IAAIs/B,EAwGR,SAAyCD,EAA6BE,GACpE,IAAI5H,EACA2C,EACA7G,EAAW,IAAIuD,EAASuI,GANahiC,EASvB8hC,EARX,aAAav/B,KAAKvC,IASvBo6B,EAAU0H,EACV5L,EAASwE,oBAAoBN,GAC7B2C,EAAqB7G,EAAS6G,sBAE9BA,EAAqB+E,EAdL,IAAuB9hC,EAuBzC,MAAO,CACLo6B,QAASA,EACT2C,mBAAoBA,EAExB,CAhIgCkF,CAAgCH,EAA6B5L,GACvFkE,EAAU2H,EAAsB3H,QAChC2C,EAAqBgF,EAAsBhF,mBAC7C95B,KAAKm3B,QAAUA,EACfn3B,KAAK85B,mBAAqBA,EAC1B95B,KAAK47B,eAAiBA,EACtB57B,KAAK4hB,OAAS,IAAM5hB,KAAK85B,mBAAqB95B,KAAK47B,eAKnD57B,KAAKi/B,YAAc,WACjB,OAAOhM,CACT,CACF,CAhDF,IAAsByC,EAAaC,EAAYC,EAoI7C,OApIoBF,EAiDPkJ,GAjDoBjJ,EAiDP,CAAC,CACzBt4B,IAAK,SACLN,MAAO,SAAgB27B,GACrB14B,KAAK04B,IAAMA,CACb,GACC,CACDr7B,IAAK,uBACLN,MAAO,WACL,OAAIiD,KAAKm3B,QACA,CAACn3B,KAAKm3B,SAERyF,GAA8B58B,KAAK85B,mBAAoB95B,KAAK47B,eAAgB57B,KAAKi/B,cAC1F,GACC,CACD5hC,IAAK,aACLN,MAAO,WACL,OTjGS,SAA+B+K,EAAO7B,EAASgtB,GAM5D,QAJgBl3B,IAAZkK,IACFA,EAAU,CAAC,GAEbgtB,EAAW,IAAIuD,EAASvD,GACpBhtB,EAAQ8wB,GAAI,CACd,IAAKjvB,EAAMgyB,mBACT,MAAM,IAAI5+B,MAAM,sCAElB+3B,EAASwE,oBAAoB3vB,EAAMgyB,mBACrC,KAAO,CACL,IAAKhyB,EAAM40B,MACT,OAAO,EAET,GAAI50B,EAAMqvB,QAAS,CACjB,IAAKlE,EAASyE,WAAW5vB,EAAMqvB,SAC7B,MAAM,IAAIj8B,MAAM,oBAAoBuH,OAAOqF,EAAMqvB,UAEnDlE,EAASkE,QAAQrvB,EAAMqvB,QACzB,KAAO,CACL,IAAKrvB,EAAMgyB,mBACT,MAAM,IAAI5+B,MAAM,sCAElB+3B,EAASwE,oBAAoB3vB,EAAMgyB,mBACrC,CACF,CAEA,GAAI7G,EAASkF,kBACX,OAAOkE,GAAiBv0B,EAAM40B,OAAS50B,EAAM8zB,eAAgB3I,GAQ7D,GAAInrB,EAAMgyB,oBAAsB7G,EAASiM,2BAA2Bp3B,EAAMgyB,oBAGxE,OAAO,EAEP,MAAM,IAAI5+B,MAAM,iGAGtB,CSoDa,CAAiB8E,KAAM,CAC5B+2B,IAAI,GACH/2B,KAAKi/B,cACV,GACC,CACD5hC,IAAK,UACLN,MAAO,WACL,OClFgC+K,EDkFX9H,KClFkBiG,EDkFZ,CACzB8wB,IAAI,GCnF0C9D,EDoF7CjzB,KAAKi/B,cCjFZh5B,EAAUA,GAAW,CAAC,GACtBgtB,EAAW,IAAIuD,EAASvD,IACfwE,oBAAoB3vB,EAAMqvB,QAASrvB,EAAMgyB,oBAG9C7G,EAASuF,gBACiDz8B,IAArD0gC,GAAc30B,EAAO7B,EAASgtB,EAASA,UAKzCqJ,GADcr2B,EAAQ8wB,GAAKjvB,EAAM8zB,eAAiB9zB,EAAM40B,MACxBzJ,EAASiF,yBAdnC,IAAuBpwB,EAAO7B,EAASgtB,CDqFlD,GACC,CACD51B,IAAK,kBACLN,MAAO,WAEL,OADe,IAAIy5B,EAASx2B,KAAKi/B,eACjBC,2BAA2Bl/B,KAAK85B,mBAClD,GACC,CACDz8B,IAAK,UACLN,MAAO,SAAiBoiC,GACtB,OAAOn/B,KAAK4hB,SAAWud,EAAYvd,QAAU5hB,KAAK04B,MAAQyG,EAAYzG,GACxE,GAcC,CACDr7B,IAAK,UACLN,MAAO,WACL,OAAO0/B,GAAcz8B,KAAM,CACzB+2B,IAAI,GACH/2B,KAAKi/B,cACV,GACC,CACD5hC,IAAK,SACLN,MAAO,SAAgBy8B,EAASvzB,GAC9B,OAAO23B,GAAa59B,KAAMw5B,EAASvzB,EAAU,GAAc,GAAc,CAAC,EAAGA,GAAU,CAAC,EAAG,CACzF8wB,IAAI,IACD,CACHA,IAAI,GACH/2B,KAAKi/B,cACV,GACC,CACD5hC,IAAK,iBACLN,MAAO,SAAwBkJ,GAC7B,OAAOjG,KAAKqwB,OAAO,WAAYpqB,EACjC,GACC,CACD5I,IAAK,sBACLN,MAAO,SAA6BkJ,GAClC,OAAOjG,KAAKqwB,OAAO,gBAAiBpqB,EACtC,GACC,CACD5I,IAAK,SACLN,MAAO,SAAgBkJ,GACrB,OAAOjG,KAAKqwB,OAAO,UAAWpqB,EAChC,MAjIc,GAAkByvB,EAAYx8B,UAAWy8B,GACrDC,GAAa,GAAkBF,EAAaE,GAChD38B,OAAOwD,eAAei5B,EAAa,YAAa,CAC9C3C,UAAU,IAgIL6L,CACT,CArH+B,GE9D/B,IAAIQ,GAA0B,IAAI93B,OAAO,kDAC1B,SAAS+3B,GAAezd,EAAQuV,EAASE,EAAapE,GACnE,GAAKkE,EAAL,CAIA,IAAI+G,EAAkB,IAAI1H,EAASvD,GACnCiL,EAAgBzG,oBAAoBN,EAASE,GAC7C,IAAIiI,EAAmB,IAAIh4B,OAAO42B,EAAgBlG,aAClD,GAAwC,IAApCpW,EAAO8c,OAAOY,GAAlB,CASA,IAAIC,GALJ3d,EAASA,EAAO5jB,MAAM4jB,EAAO9b,MAAMw5B,GAAkB,GAAGtmC,SAK7B8M,MAAMs5B,IACjC,KAAIG,GAAqC,MAApBA,EAAc,IAAcA,EAAc,GAAGvmC,OAAS,GAChD,MAArBumC,EAAc,IAIpB,OAAO3d,CAbP,CAPA,CAqBF,CCde,SAAS4d,GAAkD5d,EAAQqR,GAChF,GAAIrR,GAAUqR,EAAS0E,cAAcU,2BAA4B,CAI/D,IAAIoH,EAAgB,IAAIn4B,OAAO,OAAS2rB,EAAS0E,cAAcU,2BAA6B,KACxFqH,EAAcD,EAAcE,KAAK/d,GACrC,GAAI8d,EAAa,CACf,IAAI9D,EACA0B,EAmDAnE,EAlCAyG,EAAsBF,EAAY1mC,OAAS,EAC3C6mC,EAAoBD,EAAsB,GAAKF,EAAYE,GAC/D,GAAI3M,EAASqF,+BAAiCuH,EAC5CjE,EAAiBha,EAAOrd,QAAQk7B,EAAexM,EAASqF,+BAGpDsH,EAAsB,IACxBtC,EAAcoC,EAAY,QAQzB,CAMH,IAAII,EAA6BJ,EAAY,GAC7C9D,EAAiBha,EAAO5jB,MAAM8hC,EAA2B9mC,QAGrD6mC,IACFvC,EAAcoC,EAAY,GAE9B,CAOA,GAAIG,EAAmB,CACrB,IAAIE,EAA0Cne,EAAO4G,QAAQkX,EAAY,IAC5C9d,EAAO5jB,MAAM,EAAG+hC,KAOd9M,EAAS0E,cAAcwB,mBACpDA,EAAiBlG,EAAS0E,cAAcwB,iBAE5C,MACEA,EAAiBuG,EAAY,GAE/B,MAAO,CACL9D,eAAgBA,EAChBzC,eAAgBA,EAChBmE,YAAaA,EAEjB,CACF,CACA,MAAO,CACL1B,eAAgBha,EAEpB,CCtFe,SAASoe,GAAsBpe,EAAQqR,GAUpD,IAAIgN,EAAwBT,GAAkD5d,EAAQqR,GACpFqK,EAAc2C,EAAsB3C,YACpC1B,EAAiBqE,EAAsBrE,eACzC,GAAIA,IAAmBha,EAAQ,CAC7B,IA4CJ,SAA2Cse,EAAsBC,EAAqBlN,GAGpF,GAAIqJ,GAAgB4D,EAAsBjN,EAASiF,2BAA6BoE,GAAgB6D,EAAqBlN,EAASiF,yBAC5H,OAAO,EAeT,OAAO,CACT,CAhESkI,CAAkCxe,EAAQga,EAAgB3I,GAE7D,MAAO,CACL2I,eAAgBha,GAKpB,GAAIqR,EAASkF,oBAyDjB,SAA4CyD,EAAgB3I,GAC1D,OAAQ0I,GAAkBC,EAAgB3I,IACxC,IAAK,YACL,IAAK,iBAIH,OAAO,EACT,QACE,OAAO,EAEb,CA3DWoN,CAAmCzE,EAAgB3I,GAEtD,MAAO,CACL2I,eAAgBha,EAIxB,CACA,MAAO,CACLga,eAAgBA,EAChB0B,YAAaA,EAEjB,CCzCe,SAASgD,GAAgE1e,EAAQuV,EAASE,EAAapE,GACpH,IAAI6G,EAAqB3C,EAAU0C,EAAsB1C,EAASlE,GAAYoE,EAC9E,GAA2C,IAAvCzV,EAAO4G,QAAQsR,GAA2B,EAC5C7G,EAAW,IAAIuD,EAASvD,IACfwE,oBAAoBN,EAASE,GACtC,IAAIkJ,EAAwB3e,EAAO5jB,MAAM87B,EAAmB9gC,QAE1DwnC,EAD0BR,GAAsBO,EAAuBtN,GACjB2I,eAEtDA,EAD2BoE,GAAsBpe,EAAQqR,GACjB2I,eAS1C,IAAKU,GAAgBV,EAAgB3I,EAASiF,0BAA4BoE,GAAgBkE,EAA+BvN,EAASiF,0BAA4E,aAAhDyD,GAAkBC,EAAgB3I,GAC9L,MAAO,CACL6G,mBAAoBA,EACpBlY,OAAQ2e,EAGd,CACA,MAAO,CACL3e,OAAQA,EAEZ,CCpBe,SAAS,GAA0BA,EAAQuV,EAASE,EAAapE,GAC9E,IAAKrR,EACH,MAAO,CAAC,EAEV,IAAI6e,EAQJ,GAAkB,MAAd7e,EAAO,GAAY,CAGrB,IAAI8e,EAAmBrB,GAAezd,EAAQuV,EAASE,EAAapE,GAIpE,IAAIyN,GAAoBA,IAAqB9e,EAGtC,CAKL,GAAIuV,GAAWE,EAAa,CAC1B,IAAIsJ,EAAwBL,GAAgE1e,EAAQuV,EAASE,EAAapE,GACxH6G,EAAqB6G,EAAsB7G,mBAC3C8G,EAAgBD,EAAsB/e,OACxC,GAAIkY,EACF,MAAO,CACL+G,yBAA0B,gCAC1B/G,mBAAoBA,EACpBlY,OAAQgf,EAGd,CACA,MAAO,CAGLhf,OAAQA,EAEZ,CAxBE6e,GAAwB,EACxB7e,EAAS,IAAM8e,CAwBnB,CAEA,GAAkB,MAAd9e,EAAO,GACT,MAAO,CAAC,EAEVqR,EAAW,IAAIuD,EAASvD,GAWxB,IADA,IAAIn6B,EAAI,EACDA,EAAI,G1B9EwB,G0B8EQA,GAAK8oB,EAAO5oB,QAAQ,CAC7D,IAAI8nC,EAAsBlf,EAAO5jB,MAAM,EAAGlF,GAC1C,GAAIm6B,EAAS4E,eAAeiJ,GAE1B,OADA7N,EAASwE,oBAAoBqJ,GACtB,CACLD,yBAA0BJ,EAAwB,uBAAyB,6BAC3E3G,mBAAoBgH,EACpBlf,OAAQA,EAAO5jB,MAAMlF,IAGzBA,GACF,CACA,MAAO,CAAC,CACV,CCjGA,SAAS,GAAgC0D,EAAGs+B,GAC1C,IAAIC,EAAuB,qBAAXl+B,QAA0BL,EAAEK,OAAO2B,WAAahC,EAAE,cAClE,GAAIu+B,EAAI,OAAQA,EAAKA,EAAG3hC,KAAKoD,IAAIsC,KAAKxB,KAAKy9B,GAC3C,GAAI38B,MAAMC,QAAQ7B,KAAOu+B,EAe3B,SAAqCv+B,EAAGyC,GACtC,IAAKzC,EAAG,OACR,GAAiB,kBAANA,EAAgB,OAAO,GAAkBA,EAAGyC,GACvD,IAAI1B,EAAItE,OAAOC,UAAUiG,SAAS/F,KAAKoD,GAAGwB,MAAM,GAAI,GAC1C,WAANT,GAAkBf,EAAE4C,cAAa7B,EAAIf,EAAE4C,YAAYvD,MACvD,GAAU,QAAN0B,GAAqB,QAANA,EAAa,OAAOa,MAAMiB,KAAK7C,GAClD,GAAU,cAANe,GAAqB,2CAA2C+B,KAAK/B,GAAI,OAAO,GAAkBf,EAAGyC,EAC3G,CAtBgC,CAA4BzC,KAAOs+B,GAAkBt+B,GAAyB,kBAAbA,EAAExD,OAAqB,CAChH+hC,IAAIv+B,EAAIu+B,GACZ,IAAIjiC,EAAI,EACR,OAAO,WACL,OAAIA,GAAK0D,EAAExD,OAAe,CACxB+F,MAAM,GAED,CACLA,MAAM,EACNhC,MAAOP,EAAE1D,KAEb,CACF,CACA,MAAM,IAAI0G,UAAU,wIACtB,CASA,SAAS,GAAkBrB,EAAKuB,IACnB,MAAPA,GAAeA,EAAMvB,EAAInF,UAAQ0G,EAAMvB,EAAInF,QAC/C,IAAK,IAAIF,EAAI,EAAG6G,EAAO,IAAIvB,MAAMsB,GAAM5G,EAAI4G,EAAK5G,IAC9C6G,EAAK7G,GAAKqF,EAAIrF,GAEhB,OAAO6G,CACT,CAGe,SAASohC,GAA2BC,EAAqBr9B,GACtE,IAAI8yB,EAAY9yB,EAAK8yB,UACnB/C,EAAiB/vB,EAAK+vB,eACtBT,EAAWtvB,EAAKsvB,SAElBA,EAAW,IAAIuD,EAASvD,GAExB,IADA,IACiEmI,EAD7D6F,EAAoB,GACf5F,EAAY,GAAgC5E,KAAqB2E,EAAQC,KAAat8B,MAAO,CACpG,IAAIo4B,EAAUiE,EAAMr+B,MASpB,GARAk2B,EAASkE,QAAQA,GAQblE,EAASsF,iBACX,GAAIyI,GAAgF,IAAzDA,EAAoBtC,OAAOzL,EAASsF,iBAC7D,OAAOpB,OAIN,GAAIsF,GAAc,CACrBC,MAAOsE,EACP7J,QAASA,QACRp7B,EAAWk3B,EAASA,UAAW,CAEhC,IAAIS,EAMF,OAAOyD,EALP,GAAIA,IAAYzD,EACd,OAAOyD,EAET8J,EAAkB3nC,KAAK69B,EAI3B,CACF,CAEA,GAAI8J,EAAkBjoC,OAAS,EAC7B,OAAOioC,EAAkB,EAE7B,CC3Ee,SAASC,GAAwB7J,EAAa1zB,GAC3D,IAAIq9B,EAAsBr9B,EAAKi4B,eAC7BlI,EAAiB/vB,EAAK+vB,eACtBT,EAAWtvB,EAAKsvB,SAQlB,IAAI4J,EAAoB5J,EAASqE,8BAA8BD,GAC/D,GAAKwF,EAKL,OAAiC,IAA7BA,EAAkB7jC,OACb6jC,EAAkB,GAEpBkE,GAA2BC,EAAqB,CACrDvK,UAAWoG,EACXnJ,eAAgBA,EAChBT,SAAUA,EAASA,UAEvB,CCpBO,IASHkO,GAAwC,IAAI75B,OANZ,kLAMkD,KAalF85B,GAA8B,IAAI95B,OANZ,+KAMwC,KACvD+5B,GAAkB,OAClBC,GAAyB,kBCvBrB,SAASC,GAAwDC,EAAe79B,GAC7F,IAKI89B,EALAC,EAA8B/9B,EAAK+9B,4BACnCC,ED+BS,SAA6BC,GAC1C,IAAIC,EAAsBD,EAAoBpZ,QAAQ8Y,IAEtD,GAAIO,EAAsB,EACxB,OAAO,KAET,IAAIC,EAAoBD,EAAsBP,GAAuBtoC,OAErE,GAAI8oC,GAAqBF,EAAoB5oC,OAC3C,MAAO,GAET,IAAI+oC,EAAkBH,EAAoBpZ,QAAQ,IAAKsZ,GAEvD,OAAIC,GAAmB,EACdH,EAAoBI,UAAUF,EAAmBC,GAEjDH,EAAoBI,UAAUF,EAEzC,CCjDqBG,CAAoBT,GACvC,IDwDK,SAA6BG,GAClC,OAAqB,OAAjBA,GAGwB,IAAxBA,EAAa3oC,SAIVmoC,GAAsC7hC,KAAKqiC,IAAiBP,GAA4B9hC,KAAKqiC,GACtG,CCjEOO,CAAoBP,GACvB,MAAM,IAAIxM,EAAW,gBAGvB,GAAqB,OAAjBwM,EAGFF,EAAoBC,EAA4BF,IAAkB,OAC7D,CACLC,EAAoB,GDbD,MCgBfE,EAAa98B,OAAO,KACtB48B,GAAqBE,GAOvB,IACIQ,EADAC,EAAuBZ,EAAchZ,QAAQ6Y,IAO/Cc,EADEC,GAAwB,EACFA,EAAuBf,GAAgBroC,OAEvC,EAE1B,IAAI6oC,EAAsBL,EAAchZ,QAAQ8Y,IAChDG,GAAqBD,EAAcQ,UAAUG,EAAuBN,EACtE,CAIA,IAAIQ,EAAcZ,EAAkBjZ,QDhBA,UCyBpC,GARI6Z,EAAc,IAChBZ,EAAoBA,EAAkBO,UAAU,EAAGK,IAO3B,KAAtBZ,EACF,OAAOA,CAEX,CCtCA,IAEIa,GAA6B,IAAIh7B,OAAO,uDAIxCi7B,GAAiC,IAAIj7B,OAAO,oDA0BjC,SAASa,GAAMif,EAAMnhB,EAASgtB,GAM3C,GAHAhtB,EAAUA,GAAW,CAAC,EACtBgtB,EAAW,IAAIuD,EAASvD,GAEpBhtB,EAAQytB,iBAAmBT,EAASyE,WAAWzxB,EAAQytB,gBAAiB,CAC1E,GAAIztB,EAAQ8wB,GACV,MAAM,IAAI5B,EAAW,mBAEvB,MAAM,IAAIj6B,MAAM,oBAAoBuH,OAAOwD,EAAQytB,gBACrD,CAEA,IAAI8O,EA+HN,SAAoBpb,EAAM2P,EAAI0L,GAM5B,IAAI7gB,EAAS2f,GAAwDna,EAAM,CACzEsa,4BAA6B,SAAqCta,GAChE,OArCN,SAAsCA,EAAMqb,EAASC,GACnD,IAAKtb,EACH,OAEF,GAAIA,EAAKpuB,OAnJmB,IAmJe,CACzC,GAAI0pC,EACF,MAAM,IAAIvN,EAAW,YAEvB,MACF,CACA,IAAgB,IAAZsN,EACF,OAAOrb,EAGT,IAAIub,EAAWvb,EAAKsX,OAAO4D,IAC3B,GAAIK,EAAW,EACb,OAEF,OAAOvb,EACNppB,MAAM2kC,GACNp+B,QAAQg+B,GAAgC,GAC3C,CAgBaK,CAA6Bxb,EAAMqb,EAAS1L,EACrD,IAGF,IAAKnV,EACH,MAAO,CAAC,EAEV,IAAK+Y,EAAoB/Y,GACvB,O1B9IG,SAAkCA,GACvC,OAAO4Y,EAAiCl7B,KAAKsiB,EAC/C,C0B4IQihB,CAAyBjhB,GACpB,CACL3mB,MAAO,aAGJ,CAAC,EAIV,IAAI6nC,EzBpNS,SAA0BlhB,GACvC,IAAI5f,EAAQ4f,EAAO8c,OAAO9D,GAC1B,GAAI54B,EAAQ,EACV,MAAO,CAAC,EAOV,IAHA,IAAI+gC,EAAyBnhB,EAAO5jB,MAAM,EAAGgE,GACzC4D,EAAUgc,EAAO9b,MAAM80B,GACvB9hC,EAAI,EACDA,EAAI8M,EAAQ5M,QAAQ,CACzB,GAAI4M,EAAQ9M,GACV,MAAO,CACL8oB,OAAQmhB,EACRrK,IAAK9yB,EAAQ9M,IAGjBA,GACF,CACF,CyBiM8BkqC,CAAiBphB,GAC7C,GAAIkhB,EAAsBpK,IACxB,OAAOoK,EAET,MAAO,CACLlhB,OAAQA,EAEZ,CA/JoBqhB,CAAW7b,EAAMnhB,EAAQ8wB,GAAI9wB,EAAQw8B,SACrDS,EAAuBV,EAAY5gB,OACnC8W,EAAM8J,EAAY9J,IAClBz9B,EAAQunC,EAAYvnC,MAEtB,IAAKioC,EAAsB,CACzB,GAAIj9B,EAAQ8wB,GAAI,CACd,GAAc,cAAV97B,EACF,MAAM,IAAIk6B,EAAW,aAEvB,MAAM,IAAIA,EAAW,eACvB,CACA,MAAO,CAAC,CACV,CACA,IAAIgO,EAyKN,SAA0BD,EAAsBxP,EAAgB0P,EAAoBnQ,GAElF,IAKIkE,EALAwJ,EAAwB,GAA0BpF,GAA2B2H,GAAuBxP,EAAgB0P,EAAoBnQ,EAASA,UACnJ4N,EAA2BF,EAAsBE,yBACjD/G,EAAqB6G,EAAsB7G,mBAC3ClY,EAAS+e,EAAsB/e,OAGjC,GAAIkY,EACF7G,EAASwE,oBAAoBqC,OAG1B,KAAIlY,IAAW8R,IAAkB0P,EAa/B,MAAO,CAAC,EAZbnQ,EAASwE,oBAAoB/D,EAAgB0P,GACzC1P,IACFyD,EAAUzD,GASZoG,EAAqBsJ,GAAsBvJ,EAAsBnG,EAAgBT,EAASA,SAC5E,CAChB,IAAKrR,EACH,MAAO,CACLif,yBAA0BA,EAC1B/G,mBAAoBA,GAGxB,IAAImG,EAAwBD,GAAsBzE,GAA2B3Z,GAASqR,GACpF2I,EAAiBqE,EAAsBrE,eACvC0B,EAAc2C,EAAsB3C,YAWlC+F,EAAenC,GAAwBpH,EAAoB,CAC7D8B,eAAgBA,EAChBlI,eAAgBA,EAChBT,SAAUA,IAERoQ,IACFlM,EAAUkM,EAGW,QAAjBA,GAIFpQ,EAASkE,QAAQA,IAGrB,MAAO,CACLA,QAASA,EACT2C,mBAAoBA,EACpB+G,yBAA0BA,EAC1BjF,eAAgBA,EAChB0B,YAAaA,EAEjB,CA7O0BgG,CAAiBJ,EAAsBj9B,EAAQytB,eAAgBztB,EAAQm9B,mBAAoBnQ,GACjHkE,EAAUgM,EAAkBhM,QAC5ByE,EAAiBuH,EAAkBvH,eACnC9B,EAAqBqJ,EAAkBrJ,mBACvC+G,EAA2BsC,EAAkBtC,yBAC7CvD,EAAc6F,EAAkB7F,YAClC,IAAKrK,EAASsQ,2BAA4B,CACxC,GAAIt9B,EAAQ8wB,GACV,MAAM,IAAI5B,EAAW,mBAEvB,MAAO,CAAC,CACV,CAEA,IAAKyG,GAAkBA,EAAe5iC,O/B7FR,E+B6FqC,CAIjE,GAAIiN,EAAQ8wB,GACV,MAAM,IAAI5B,EAAW,aAGvB,MAAO,CAAC,CACV,CAUA,GAAIyG,EAAe5iC,O/B7GW,G+B6GkB,CAC9C,GAAIiN,EAAQ8wB,GACV,MAAM,IAAI5B,EAAW,YAGvB,MAAO,CAAC,CACV,CACA,GAAIlvB,EAAQ8wB,GAAI,CACd,IAAIoI,EAAc,IAAI,GAAYrF,EAAoB8B,EAAgB3I,EAASA,UAW/E,OAVIkE,IACFgI,EAAYhI,QAAUA,GAEpBmG,IACF6B,EAAY7B,YAAcA,GAExB5E,IACFyG,EAAYzG,IAAMA,GAEpByG,EAAYqE,2BAA6B3C,EAClC1B,CACT,CAIA,IAAIsE,KAASx9B,EAAQsS,SAAW0a,EAASsQ,2BAA6BpM,IAAWmF,GAAgBV,EAAgB3I,EAASiF,yBAC1H,OAAKjyB,EAAQsS,SAIN,CACL4e,QAASA,EACT2C,mBAAoBA,EACpBwD,YAAaA,EACbmG,MAAOA,EACPC,WAAUD,MAAoC,IAArBx9B,EAAQsS,WAAqB0a,EAASkF,oBAAqBkE,GAAiBT,EAAgB3I,IACrHyJ,MAAOd,EACPlD,IAAKA,GAVE+K,EA4FX,SAAgBtM,EAASyE,EAAgBlD,GACvC,IAAItV,EAAS,CACX+T,QAASA,EACTuF,MAAOd,GAELlD,IACFtV,EAAOsV,IAAMA,GAEf,OAAOtV,CACT,CArGmB,CAAO+T,EAASyE,EAAgBlD,GAAO,CAAC,CAY3D,CCvJA,SAAS,GAAQl7B,EAAQk1B,GACvB,IAAIlvB,EAAOvK,OAAOuK,KAAKhG,GACvB,GAAIvE,OAAOmf,sBAAuB,CAChC,IAAIua,EAAU15B,OAAOmf,sBAAsB5a,GAC3Ck1B,IAAmBC,EAAUA,EAAQzrB,QAAO,SAAU0rB,GACpD,OAAO35B,OAAO2e,yBAAyBpa,EAAQo1B,GAAKl2B,UACtD,KAAK8G,EAAKlK,KAAKg5B,MAAM9uB,EAAMmvB,EAC7B,CACA,OAAOnvB,CACT,CACA,SAAS,GAAc7H,GACrB,IAAK,IAAI7C,EAAI,EAAGA,EAAI8J,UAAU5J,OAAQF,IAAK,CACzC,IAAIy6B,EAAS,MAAQ3wB,UAAU9J,GAAK8J,UAAU9J,GAAK,CAAC,EACpDA,EAAI,EAAI,GAAQG,OAAOs6B,IAAS,GAAIrxB,SAAQ,SAAU7E,GACpD,GAAgB1B,EAAQ0B,EAAKk2B,EAAOl2B,GACtC,IAAKpE,OAAOu6B,0BAA4Bv6B,OAAO8e,iBAAiBpc,EAAQ1C,OAAOu6B,0BAA0BD,IAAW,GAAQt6B,OAAOs6B,IAASrxB,SAAQ,SAAU7E,GAC5JpE,OAAOwD,eAAed,EAAQ0B,EAAKpE,OAAO2e,yBAAyB2b,EAAQl2B,GAC7E,GACF,CACA,OAAO1B,CACT,CACA,SAAS,GAAgBgrB,EAAKtpB,EAAKN,GAWjC,OAVIM,KAAOspB,EACT1tB,OAAOwD,eAAekqB,EAAKtpB,EAAK,CAC9BN,MAAOA,EACPL,YAAY,EACZo2B,cAAc,EACdC,UAAU,IAGZpM,EAAItpB,GAAON,EAEN4pB,CACT,CAEe,SAASgd,GAA0Bvc,EAAMnhB,EAASgtB,GAC/D,OAAO9qB,GAAMif,EAAM,GAAc,GAAc,CAAC,EAAGnhB,GAAU,CAAC,EAAG,CAC/D8wB,IAAI,IACF9D,EACN,CCvCA,SAAS,GAAQz1B,EAAQk1B,GACvB,IAAIlvB,EAAOvK,OAAOuK,KAAKhG,GACvB,GAAIvE,OAAOmf,sBAAuB,CAChC,IAAIua,EAAU15B,OAAOmf,sBAAsB5a,GAC3Ck1B,IAAmBC,EAAUA,EAAQzrB,QAAO,SAAU0rB,GACpD,OAAO35B,OAAO2e,yBAAyBpa,EAAQo1B,GAAKl2B,UACtD,KAAK8G,EAAKlK,KAAKg5B,MAAM9uB,EAAMmvB,EAC7B,CACA,OAAOnvB,CACT,CACA,SAAS,GAAc7H,GACrB,IAAK,IAAI7C,EAAI,EAAGA,EAAI8J,UAAU5J,OAAQF,IAAK,CACzC,IAAIy6B,EAAS,MAAQ3wB,UAAU9J,GAAK8J,UAAU9J,GAAK,CAAC,EACpDA,EAAI,EAAI,GAAQG,OAAOs6B,IAAS,GAAIrxB,SAAQ,SAAU7E,GACpD,GAAgB1B,EAAQ0B,EAAKk2B,EAAOl2B,GACtC,IAAKpE,OAAOu6B,0BAA4Bv6B,OAAO8e,iBAAiBpc,EAAQ1C,OAAOu6B,0BAA0BD,IAAW,GAAQt6B,OAAOs6B,IAASrxB,SAAQ,SAAU7E,GAC5JpE,OAAOwD,eAAed,EAAQ0B,EAAKpE,OAAO2e,yBAAyB2b,EAAQl2B,GAC7E,GACF,CACA,OAAO1B,CACT,CACA,SAAS,GAAgBgrB,EAAKtpB,EAAKN,GAWjC,OAVIM,KAAOspB,EACT1tB,OAAOwD,eAAekqB,EAAKtpB,EAAK,CAC9BN,MAAOA,EACPL,YAAY,EACZo2B,cAAc,EACdC,UAAU,IAGZpM,EAAItpB,GAAON,EAEN4pB,CACT,CAMe,SAASid,KACtB,IAAIC,EAAsB7Q,EAAmBpwB,WAC3CwkB,EAAOyc,EAAoBzc,KAC3BnhB,EAAU49B,EAAoB59B,QAC9BgtB,EAAW4Q,EAAoB5Q,SACjChtB,EAAU,GAAc,GAAc,CAAC,EAAGA,GAAU,CAAC,EAAG,CACtDw8B,SAAS,IAGX,IACE,IAAItD,EAAcwE,GAA0Bvc,EAAMnhB,EAASgtB,IAC3DA,EAAW,IAAIuD,EAASvD,IACfwE,oBAAoB0H,EAAYrF,oBACzC,IAAI1W,EAASuY,GAAkBwD,EAAYvD,eAAgB3I,GAC3D,GAAe,gBAAX7P,EACF,OAAOA,CASX,CAPE,MAAOnoB,GAEP,GAAIA,aAAiBk6B,EACnB,OAAOl6B,EAAMW,QAEb,MAAMX,CAEV,CACF,CC3DA,SAAS,GAAkBU,EAAQo4B,GACjC,IAAK,IAAIj7B,EAAI,EAAGA,EAAIi7B,EAAM/6B,OAAQF,IAAK,CACrC,IAAImM,EAAa8uB,EAAMj7B,GACvBmM,EAAWvI,WAAauI,EAAWvI,aAAc,EACjDuI,EAAW6tB,cAAe,EACtB,UAAW7tB,IAAYA,EAAW8tB,UAAW,GACjD95B,OAAOwD,eAAed,EAAQsJ,EAAW5H,IAAK4H,EAChD,CACF,CA4BA,IAAI6+B,GAA8B,WAChC,SAASA,EAAengC,GACtB,IAAIogC,EAAkBpgC,EAAKogC,gBACzBC,EAAsBrgC,EAAKqgC,qBA5CjC,SAAyBlP,EAAUY,GACjC,KAAMZ,aAAoBY,GACxB,MAAM,IAAIl2B,UAAU,oCAExB,CAyCI,CAAgBQ,KAAM8jC,GACtB9jC,KAAK+jC,gBAAkBA,EACvB/jC,KAAKgkC,oBAAsBA,CAC7B,CAlCF,IAAsBtO,EAAaC,EAAYC,EAiI7C,OAjIoBF,EAmCPoO,GAnCoBnO,EAmCJ,CAAC,CAC5Bt4B,IAAK,QACLN,MAAO,SAAe+G,GACpB,IAAIqzB,EAAUrzB,EAAMqzB,QAClBE,EAAcvzB,EAAMuzB,YACtBr3B,KAAKikC,eAAgB,EACrBjkC,KAAKkkC,aAAc,EACnBlkC,KAAKg4B,eAAYj8B,EACjBiE,KAAKq3B,iBAAct7B,EACnBiE,KAAKmkC,OAAS,GACdnkC,KAAKokC,iCACLpkC,KAAKqkC,0BAA0BlN,EAASE,EAC1C,GACC,CACDh6B,IAAK,iCACLN,MAAO,WACLiD,KAAKskC,0BAA4BtkC,KAAKukC,oBACtCvkC,KAAKwkC,uCAAwC,EAC7CxkC,KAAKm5B,oBAAiBp9B,EACtBiE,KAAKs9B,iBAAcvhC,EACnBiE,KAAKykC,kDAA+C1oC,CACtD,GACC,CACDsB,IAAK,SACLN,MAAO,SAAgBua,GACrB,IAAK,IAAI/Y,EAAK,EAAGmmC,EAAezrC,OAAOuK,KAAK8T,GAAa/Y,EAAKmmC,EAAa1rC,OAAQuF,IAAM,CACvF,IAAIlB,EAAMqnC,EAAanmC,GACvByB,KAAK3C,GAAOia,EAAWja,EACzB,CACF,GACC,CACDA,IAAK,4BACLN,MAAO,SAAmCo6B,EAASE,GACjDr3B,KAAK2kC,WAAWxN,GAChBn3B,KAAK4kC,eAAevN,EACtB,GACC,CACDh6B,IAAK,aACLN,MAAO,SAAoBo6B,GACzBn3B,KAAKm3B,QAAUA,EACfn3B,KAAK+jC,gBAAgB5M,EACvB,GACC,CACD95B,IAAK,iBACLN,MAAO,SAAwBs6B,GAC7Br3B,KAAKq3B,YAAcA,EACnBr3B,KAAKgkC,oBAAoB3M,EAAar3B,KAAKm3B,QAC7C,GACC,CACD95B,IAAK,2BACLN,MAAO,SAAkCo6B,EAASE,GAEhDr3B,KAAKikC,eAAgB,EAIrBjkC,KAAKqkC,0BAA0BlN,EAASE,EAC1C,GACC,CACDh6B,IAAK,eACLN,MAAO,SAAsB8nC,GAC3B7kC,KAAKmkC,QAAUU,CACjB,GACC,CACDxnC,IAAK,wCACLN,MAAO,SAA+C8nC,GACpD7kC,KAAKskC,2BAA6BO,CACpC,GAQC,CACDxnC,IAAK,oBACLN,MAAO,WACL,OAAIiD,KAAKikC,cACAjkC,KAAKmkC,OAAOnmC,OAAOgC,KAAKg4B,UAAYh4B,KAAKg4B,UAAUh/B,OAAS,IAAMgH,KAAKq3B,YAAcr3B,KAAKq3B,YAAYr+B,OAAS,IAEjHgH,KAAKmkC,MACd,GACC,CACD9mC,IAAK,sCACLN,MAAO,WACL,OAAIiD,KAAKikC,eACHjkC,KAAKg4B,UACAh4B,KAAKmkC,OAAOnmC,MAAMgC,KAAKg4B,UAAUh/B,QAGrCgH,KAAKmkC,MACd,MA9Hc,GAAkBzO,EAAYx8B,UAAWy8B,GACrDC,GAAa,GAAkBF,EAAaE,GAChD38B,OAAOwD,eAAei5B,EAAa,YAAa,CAC9C3C,UAAU,IA6HL+Q,CACT,CAvGkC,GCzClC,SAAS,GAAgCtnC,EAAGs+B,GAC1C,IAAIC,EAAuB,qBAAXl+B,QAA0BL,EAAEK,OAAO2B,WAAahC,EAAE,cAClE,GAAIu+B,EAAI,OAAQA,EAAKA,EAAG3hC,KAAKoD,IAAIsC,KAAKxB,KAAKy9B,GAC3C,GAAI38B,MAAMC,QAAQ7B,KAAOu+B,EAe3B,SAAqCv+B,EAAGyC,GACtC,IAAKzC,EAAG,OACR,GAAiB,kBAANA,EAAgB,OAAO,GAAkBA,EAAGyC,GACvD,IAAI1B,EAAItE,OAAOC,UAAUiG,SAAS/F,KAAKoD,GAAGwB,MAAM,GAAI,GAC1C,WAANT,GAAkBf,EAAE4C,cAAa7B,EAAIf,EAAE4C,YAAYvD,MACvD,GAAU,QAAN0B,GAAqB,QAANA,EAAa,OAAOa,MAAMiB,KAAK7C,GAClD,GAAU,cAANe,GAAqB,2CAA2C+B,KAAK/B,GAAI,OAAO,GAAkBf,EAAGyC,EAC3G,CAtBgC,CAA4BzC,KAAOs+B,GAAkBt+B,GAAyB,kBAAbA,EAAExD,OAAqB,CAChH+hC,IAAIv+B,EAAIu+B,GACZ,IAAIjiC,EAAI,EACR,OAAO,WACL,OAAIA,GAAK0D,EAAExD,OAAe,CACxB+F,MAAM,GAED,CACLA,MAAM,EACNhC,MAAOP,EAAE1D,KAEb,CACF,CACA,MAAM,IAAI0G,UAAU,wIACtB,CASA,SAAS,GAAkBrB,EAAKuB,IACnB,MAAPA,GAAeA,EAAMvB,EAAInF,UAAQ0G,EAAMvB,EAAInF,QAC/C,IAAK,IAAIF,EAAI,EAAG6G,EAAO,IAAIvB,MAAMsB,GAAM5G,EAAI4G,EAAK5G,IAC9C6G,EAAK7G,GAAKqF,EAAIrF,GAEhB,OAAO6G,CACT,CAGO,IAAImlC,GAAoB,IAE3BC,GAA4B,IAAIz9B,OAAOw9B,IAoBpC,SAASE,GAAOnjB,EAAQojB,GAC7B,GAAIA,EAAQ,EACV,MAAO,GAGT,IADA,IAAI7hB,EAAS,GACN6hB,EAAQ,GACD,EAARA,IACF7hB,GAAUvB,GAEZojB,IAAU,EACVpjB,GAAUA,EAEZ,OAAOuB,EAASvB,CAClB,CACO,SAASqjB,GAA2BrjB,EAAQsjB,GAIjD,MAH+B,MAA3BtjB,EAAOsjB,IACTA,IAiBG,SAA8BtjB,GACnC,IAAIujB,EAAkB,GAClBtsC,EAAI,EACR,KAAOA,EAAI+oB,EAAO7oB,QACE,MAAd6oB,EAAO/oB,GACTssC,EAAgB9rC,KAAKR,GACE,MAAd+oB,EAAO/oB,IAChBssC,EAAgBC,MAElBvsC,IAEF,IAAIkJ,EAAQ,EACRsjC,EAAiB,GACrBF,EAAgB9rC,KAAKuoB,EAAO7oB,QAC5B,IAAK,IAAIuF,EAAK,EAAGgnC,EAAmBH,EAAiB7mC,EAAKgnC,EAAiBvsC,OAAQuF,IAAM,CACvF,IAAIkD,EAAQ8jC,EAAiBhnC,GAC7B+mC,GAAkBzjB,EAAO7jB,MAAMgE,EAAOP,GACtCO,EAAQP,EAAQ,CAClB,CACA,OAAO6jC,CACT,CAnCSE,CAAqB3jB,EAAO7jB,MAAM,EAAGmnC,GAC9C,CCzEe,SAASM,GAAqBC,EAAOrV,EAAQ1sB,GAC1D,IAAIsvB,EAAWtvB,EAAKsvB,SAClB0S,EAAwChiC,EAAKgiC,sCAC7CC,EAAkCjiC,EAAKiiC,gCAEzC,GADc,IAAIt+B,OAAO,OAAO7E,OAAO4tB,EAAOhpB,UAAW,OAC7C/H,KAAKomC,EAAMpB,2BACrB,OAUJ,SAAwEoB,EAAOrV,EAAQvsB,GACrF,IAAImvB,EAAWnvB,EAAMmvB,SACnB0S,EAAwC7hC,EAAM6hC,sCAC9CC,EAAkC9hC,EAAM8hC,gCAEVF,EAAMpB,0BACpBoB,EAAMzB,cACLyB,EAAMvM,eACTuM,EAAMpI,YAWtB,GAAIqI,EAAsCtV,GAAS,CACjD,IAAI4M,EAAkB,GAAqByI,EAAOrV,EAAQ,CACxDwV,iCAAiC,EACjCD,gCAAiCA,EACjC3S,SAAUA,IAEZ,GAAIgK,EACF,OAAOA,CAEX,CAEA,OAAO,GAAqByI,EAAOrV,EAAQ,CACzCwV,iCAAiC,EACjCD,gCAAiCA,EACjC3S,SAAUA,GAEd,CA7CW6S,CAA+DJ,EAAOrV,EAAQ,CACnF4C,SAAUA,EACV0S,sCAAuCA,EACvCC,gCAAiCA,GAGvC,CAwCA,SAAS,GAAqBF,EAAOrV,EAAQpsB,GAC3C,IAAIgvB,EAAWhvB,EAAMgvB,SACnB4S,EAAkC5hC,EAAM4hC,gCACxCD,EAAkC3hC,EAAM2hC,gCACtCG,EAA0B5I,GAAgCuI,EAAMpB,0BAA2BjU,EAAQ,CACrGiN,YAAaoI,EAAMpI,YACnBF,uBAAwBsI,EAAMzB,cAC9B5G,mBAAoBwI,EACpB5S,SAAUA,IAWZ,GATK4S,IACCH,EAAMvM,eAGR4M,EAA0BL,EAAMvM,eAAiByM,EAAgCvV,GAAU0V,EAClFL,EAAMjB,+CACfsB,EAA0BL,EAAMjB,6CAA+C,IAAMsB,IAoC3F,SAAwCA,EAAyBL,GAC/D,OAAOvK,EAAY4K,KAA6BL,EAAMnB,mBACxD,CAnCMyB,CAA+BD,EAAyBL,GAC1D,OAAOK,CAEX,CCxEA,SAAS,GAAkBpqC,EAAQo4B,GACjC,IAAK,IAAIj7B,EAAI,EAAGA,EAAIi7B,EAAM/6B,OAAQF,IAAK,CACrC,IAAImM,EAAa8uB,EAAMj7B,GACvBmM,EAAWvI,WAAauI,EAAWvI,aAAc,EACjDuI,EAAW6tB,cAAe,EACtB,UAAW7tB,IAAYA,EAAW8tB,UAAW,GACjD95B,OAAOwD,eAAed,EAAQsJ,EAAW5H,IAAK4H,EAChD,CACF,CASA,IAAIghC,GAA6B,WAC/B,SAASA,KAvBX,SAAyBnR,EAAUY,GACjC,KAAMZ,aAAoBY,GACxB,MAAM,IAAIl2B,UAAU,oCAExB,CAoBI,CAAgBQ,KAAMimC,EACxB,CAXF,IAAsBvQ,EAAaC,EAAYC,EA0J7C,OA1JoBF,EAYPuQ,GAZoBtQ,EAYL,CAAC,CAC3Bt4B,IAAK,QACLN,MAAO,SAAesK,GAMpB,GALArH,KAAKsI,QAAU,CAAC,CACd49B,IAAI,EACJC,aAAc,KAEhBnmC,KAAKomC,aAAa/+B,GACU,IAAxBrH,KAAKsI,QAAQtP,OACf,MAAM,IAAIkC,MAAM,wDAElB,IAAImrC,EAAiBrmC,KAAKsI,QAAQ,GAChCg+B,EAAWD,EAAeC,SAC1BH,EAAeE,EAAeF,aAChC,GAAIG,EACF,MAAO,CACLC,GAAI,IACJpvB,KAAMmvB,EAAS7jC,OAAO,CAAC+jC,GAAyBL,MAKpD,GAA4B,IAAxBA,EAAantC,OACf,MAAM,IAAIkC,MAAM,uBAElB,OAA4B,IAAxBirC,EAAantC,OACRmtC,EAAa,GAEfA,CACT,GACC,CACD9oC,IAAK,eACLN,MAAO,SAAsBuL,GAC3BtI,KAAKsI,QAAQhP,KAAKgP,EACpB,GACC,CACDjL,IAAK,aACLN,MAAO,WACLiD,KAAKsI,QAAQ+8B,KACf,GACC,CACDhoC,IAAK,aACLN,MAAO,WACL,OAAOiD,KAAKsI,QAAQtI,KAAKsI,QAAQtP,OAAS,EAC5C,GACC,CACDqE,IAAK,eACLN,MAAO,SAAsBsK,GAC3B,IAAKA,EACH,MAAM,IAAInM,MAAM,uBAElB,IAAI4K,EAAQuB,EAAQvB,MAAM2gC,IAC1B,GAAK3gC,EAAL,CAOA,IAAI4gC,EAAW5gC,EAAM,GACjB6gC,EAASt/B,EAAQrJ,MAAM,EAAG8H,EAAMrE,OAChCmlC,EAAYv/B,EAAQrJ,MAAM8H,EAAMrE,MAAQilC,EAAS1tC,QACrD,OAAQ0tC,GACN,IAAK,MACCC,GACF3mC,KAAKomC,aAAaO,GAEpB3mC,KAAK6mC,aAAa,CAChBX,IAAI,EACJC,aAAc,GACdG,SAAU,KAEZ,MACF,IAAK,IACH,IAAKtmC,KAAK8mC,aAAaZ,GACrB,MAAM,IAAIhrC,MAAM,mDAKlB,GAHIyrC,GACF3mC,KAAKomC,aAAaO,GAE0B,IAA1C3mC,KAAK8mC,aAAaX,aAAantC,OACjC,MAAM,IAAIkC,MAAM,6DAElB,IACEorC,EADqBtmC,KAAK8mC,aACER,SAC9BA,EAAShtC,KAAKktC,GAAyBxmC,KAAK8mC,aAAaX,eACzDnmC,KAAK+mC,aACL/mC,KAAK8mC,aAAaX,aAAa7sC,KAAK,CAClCitC,GAAI,IACJpvB,KAAMmvB,IAER,MACF,IAAK,IACH,IAAKtmC,KAAK8mC,aAAaZ,GACrB,MAAM,IAAIhrC,MAAM,oDAMlB,GAJIyrC,GACF3mC,KAAKomC,aAAaO,IAGf3mC,KAAK8mC,aAAaR,SAAU,CAI/B,GAA4B,IAAxBtmC,KAAKsI,QAAQtP,OAGf,MAAM,IAAIkC,MAAM,iDAFhB8E,KAAK8mC,aAAaR,SAAW,EAIjC,CACAtmC,KAAK8mC,aAAaR,SAAShtC,KAAKktC,GAAyBxmC,KAAK8mC,aAAaX,eAC3EnmC,KAAK8mC,aAAaX,aAAe,GACjC,MACF,IAAK,IACCQ,GACF3mC,KAAKomC,aAAaO,GAEpB3mC,KAAK6mC,aAAa,CAChBG,UAAU,IAEZ,MACF,IAAK,IACH,IAAKhnC,KAAK8mC,aAAaE,SACrB,MAAM,IAAI9rC,MAAM,iDAElB8E,KAAK+mC,aACL/mC,KAAK8mC,aAAaX,aAAa7sC,KAAK,CAClCitC,GAAI,KACJpvB,KAAM8vB,GAAcN,KAEtB,MAIF,QACE,MAAM,IAAIzrC,MAAM,qBAAqBuH,OAAOikC,IAE5CE,GACF5mC,KAAKomC,aAAaQ,EAhFpB,KANA,CACE,GAAIM,GAAyB5nC,KAAK+H,GAChC,MAAM,IAAInM,MAAM,0CAA0CuH,OAAO4E,IAEnErH,KAAK8mC,aAAaX,aAAenmC,KAAK8mC,aAAaX,aAAa1jC,OAAO4E,EAAQrB,MAAM,IAEvF,CAkFF,MAvJc,GAAkB0vB,EAAYx8B,UAAWy8B,GACrDC,GAAa,GAAkBF,EAAaE,GAChD38B,OAAOwD,eAAei5B,EAAa,YAAa,CAC9C3C,UAAU,IAsJLkT,CACT,CAnJiC,GAqJjC,SAASgB,GAAc5/B,GAGrB,IAFA,IAAIhF,EAAS,GACTvJ,EAAI,EACDA,EAAIuO,EAAQrO,QAAQ,CACzB,GAAmB,MAAfqO,EAAQvO,GAAY,CACtB,GAAU,IAANA,GAAWA,IAAMuO,EAAQrO,OAAS,EACpC,MAAM,IAAIkC,MAAM,wCAAwCuH,OAAO4E,IAKjE,IAHA,IAAI8/B,EAAY9/B,EAAQvO,EAAI,GAAGsuC,WAAW,GAAK,EAC3CC,EAAYhgC,EAAQvO,EAAI,GAAGsuC,WAAW,GAAK,EAC3CrqC,EAAQoqC,EACLpqC,GAASsqC,GACdhlC,EAAO/I,KAAKooB,OAAO4lB,aAAavqC,IAChCA,GAEJ,MACEsF,EAAO/I,KAAK+N,EAAQvO,IAEtBA,GACF,CACA,OAAOuJ,CACT,CACA,IAAI6kC,GAA2B,mBAC3BT,GAAW,IAAIn/B,OAEnB,+BAmBA,SAASk/B,GAAyBjoB,GAChC,OAAqB,IAAjBA,EAAMvlB,OACDulB,EAAM,GAERA,CACT,CC5NA,SAAS,GAAgC/hB,EAAGs+B,GAC1C,IAAIC,EAAuB,qBAAXl+B,QAA0BL,EAAEK,OAAO2B,WAAahC,EAAE,cAClE,GAAIu+B,EAAI,OAAQA,EAAKA,EAAG3hC,KAAKoD,IAAIsC,KAAKxB,KAAKy9B,GAC3C,GAAI38B,MAAMC,QAAQ7B,KAAOu+B,EAe3B,SAAqCv+B,EAAGyC,GACtC,IAAKzC,EAAG,OACR,GAAiB,kBAANA,EAAgB,OAAO,GAAkBA,EAAGyC,GACvD,IAAI1B,EAAItE,OAAOC,UAAUiG,SAAS/F,KAAKoD,GAAGwB,MAAM,GAAI,GAC1C,WAANT,GAAkBf,EAAE4C,cAAa7B,EAAIf,EAAE4C,YAAYvD,MACvD,GAAU,QAAN0B,GAAqB,QAANA,EAAa,OAAOa,MAAMiB,KAAK7C,GAClD,GAAU,cAANe,GAAqB,2CAA2C+B,KAAK/B,GAAI,OAAO,GAAkBf,EAAGyC,EAC3G,CAtBgC,CAA4BzC,KAAOs+B,GAAkBt+B,GAAyB,kBAAbA,EAAExD,OAAqB,CAChH+hC,IAAIv+B,EAAIu+B,GACZ,IAAIjiC,EAAI,EACR,OAAO,WACL,OAAIA,GAAK0D,EAAExD,OAAe,CACxB+F,MAAM,GAED,CACLA,MAAM,EACNhC,MAAOP,EAAE1D,KAEb,CACF,CACA,MAAM,IAAI0G,UAAU,wIACtB,CASA,SAAS,GAAkBrB,EAAKuB,IACnB,MAAPA,GAAeA,EAAMvB,EAAInF,UAAQ0G,EAAMvB,EAAInF,QAC/C,IAAK,IAAIF,EAAI,EAAG6G,EAAO,IAAIvB,MAAMsB,GAAM5G,EAAI4G,EAAK5G,IAC9C6G,EAAK7G,GAAKqF,EAAIrF,GAEhB,OAAO6G,CACT,CAMA,SAAS,GAAkBhE,EAAQo4B,GACjC,IAAK,IAAIj7B,EAAI,EAAGA,EAAIi7B,EAAM/6B,OAAQF,IAAK,CACrC,IAAImM,EAAa8uB,EAAMj7B,GACvBmM,EAAWvI,WAAauI,EAAWvI,aAAc,EACjDuI,EAAW6tB,cAAe,EACtB,UAAW7tB,IAAYA,EAAW8tB,UAAW,GACjD95B,OAAOwD,eAAed,EAAQsJ,EAAW5H,IAAK4H,EAChD,CACF,CAUA,IAAI,GAA8B,WAChC,SAASsiC,EAAelgC,IAxB1B,SAAyBytB,EAAUY,GACjC,KAAMZ,aAAoBY,GACxB,MAAM,IAAIl2B,UAAU,oCAExB,CAqBI,CAAgBQ,KAAMunC,GACtBvnC,KAAKwnC,WAAY,IAAIvB,IAAgB99B,MAAMd,EAC7C,CAbF,IAAsBquB,EAAaC,EAAYC,EAkC7C,OAlCoBF,EAcP6R,EAdoB5R,EAcJ,CAAC,CAC5Bt4B,IAAK,QACLN,MAAO,SAAe8kB,GACpB,IAAIle,EAAOf,UAAU5J,OAAS,QAAsB+C,IAAjB6G,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC9E6kC,EAAgB9jC,EAAK8jC,cACvB,IAAK5lB,EACH,MAAM,IAAI3mB,MAAM,sBAElB,IAAIkoB,EAASskB,GAAO7lB,EAAO7b,MAAM,IAAKhG,KAAKwnC,WAAW,GAItD,GAHIpkB,GAAUA,EAAOtd,cACZsd,EAAOukB,cAEZvkB,IAAUA,EAAOkO,UACdmW,EAIP,OAAOrkB,CACT,IA/BEuS,GAAY,GAAkBD,EAAYx8B,UAAWy8B,GACrDC,GAAa,GAAkBF,EAAaE,GAChD38B,OAAOwD,eAAei5B,EAAa,YAAa,CAC9C3C,UAAU,IA8BLwU,CACT,CA1BkC,GAoClC,SAASG,GAAOE,EAAYh8B,EAAMi8B,GAOhC,GAAoB,kBAATj8B,EAAmB,CAC5B,IAAIk8B,EAAkBF,EAAWnkC,KAAK,IACtC,OAAsC,IAAlCmI,EAAK4c,QAAQsf,GAMXF,EAAW5uC,SAAW4S,EAAK5S,OACtB,CACL8M,OAAO,EACP6hC,aAAcC,GAQX,CACLG,cAAc,GAIoB,IAAlCD,EAAgBtf,QAAQ5c,GACtBi8B,GAUED,EAAW5uC,OAAS4S,EAAK5S,OACpB,CACLs4B,UAAU,GAIT,CACLxrB,OAAO,EACP6hC,aAAcC,EAAW5pC,MAAM,EAAG4N,EAAK5S,cAG3C,CACF,CACA,GAAIoF,MAAMC,QAAQuN,GAAO,CAGvB,IAFA,IAAIo8B,EAAiBJ,EAAW5pC,QAC5BlF,EAAI,EACDA,EAAI8S,EAAK5S,QAAQ,CACtB,IACIoqB,EAASskB,GAAOM,EADNp8B,EAAK9S,GAC0B+uC,GAAQ/uC,IAAM8S,EAAK5S,OAAS,GACzE,IAAKoqB,EACH,OACK,GAAIA,EAAOkO,SAChB,OAAOlO,EACF,IAAIA,EAAOtd,MAeX,CAEL,GAAIsd,EAAO2kB,aACT,MAAO,CACLA,cAAc,GAGhB,MAAM,IAAI7sC,MAAM,8BAA8BuH,OAAOyF,KAAK6Z,UAAUqB,EAAQ,KAAM,IAEtF,CArBE,GAA8B,KAD9B4kB,EAAiBA,EAAehqC,MAAMolB,EAAOukB,aAAa3uC,SACvCA,OACjB,OAAIF,IAAM8S,EAAK5S,OAAS,EACf,CACL8M,OAAO,EACP6hC,aAAcC,GAGT,CACLG,cAAc,GActBjvC,GACF,CAKA,OAAI+uC,EACK,CACLvW,UAAU,GAGP,CACLxrB,OAAO,EACP6hC,aAAcC,EAAW5pC,MAAM,EAAG4pC,EAAW5uC,OAASgvC,EAAehvC,QAEzE,CACA,OAAQ4S,EAAK26B,IACX,IAAK,IAEH,IADA,IAAIwB,EAC6D3M,EAAxDC,EAAY,GAAgCzvB,EAAKuL,QAAgBikB,EAAQC,KAAat8B,MAAO,CACpG,IACIkpC,EAAUP,GAAOE,EADRxM,EAAMr+B,MACsB8qC,GACzC,GAAII,EAAS,CACX,GAAIA,EAAQ3W,SACV,OAAO2W,EACF,GAAIA,EAAQniC,MACjB,MAAO,CACLA,OAAO,EACP6hC,aAAcM,EAAQN,cAIxB,IAAIM,EAAQF,aAGV,MAAM,IAAI7sC,MAAM,8BAA8BuH,OAAOyF,KAAK6Z,UAAUkmB,EAAS,KAAM,KAFnFF,GAAe,CAKrB,CACF,CACA,OAAIA,EACK,CACLA,cAAc,QAIlB,EACF,IAAK,KACH,IAAK,IAA6DG,EAAzDC,EAAa,GAAgCv8B,EAAKuL,QAAiB+wB,EAASC,KAAcppC,MAAO,CACxG,IAAIqpC,EAAQF,EAAOnrC,MACnB,GAAI6qC,EAAW,KAAOQ,EACpB,OAA0B,IAAtBR,EAAW5uC,OACN,CACL8M,OAAO,EACP6hC,aAAcC,GAGdC,EACK,CACLvW,UAAU,GAGP,CACLxrB,OAAO,EACP6hC,aAAc,CAACS,GAGrB,CAEA,OAIF,QACE,MAAM,IAAIltC,MAAM,iCAAiCuH,OAAOmJ,IAE9D,CClQA,SAAS,GAAgCpP,EAAGs+B,GAC1C,IAAIC,EAAuB,qBAAXl+B,QAA0BL,EAAEK,OAAO2B,WAAahC,EAAE,cAClE,GAAIu+B,EAAI,OAAQA,EAAKA,EAAG3hC,KAAKoD,IAAIsC,KAAKxB,KAAKy9B,GAC3C,GAAI38B,MAAMC,QAAQ7B,KAAOu+B,EAe3B,SAAqCv+B,EAAGyC,GACtC,IAAKzC,EAAG,OACR,GAAiB,kBAANA,EAAgB,OAAO,GAAkBA,EAAGyC,GACvD,IAAI1B,EAAItE,OAAOC,UAAUiG,SAAS/F,KAAKoD,GAAGwB,MAAM,GAAI,GAC1C,WAANT,GAAkBf,EAAE4C,cAAa7B,EAAIf,EAAE4C,YAAYvD,MACvD,GAAU,QAAN0B,GAAqB,QAANA,EAAa,OAAOa,MAAMiB,KAAK7C,GAClD,GAAU,cAANe,GAAqB,2CAA2C+B,KAAK/B,GAAI,OAAO,GAAkBf,EAAGyC,EAC3G,CAtBgC,CAA4BzC,KAAOs+B,GAAkBt+B,GAAyB,kBAAbA,EAAExD,OAAqB,CAChH+hC,IAAIv+B,EAAIu+B,GACZ,IAAIjiC,EAAI,EACR,OAAO,WACL,OAAIA,GAAK0D,EAAExD,OAAe,CACxB+F,MAAM,GAED,CACLA,MAAM,EACNhC,MAAOP,EAAE1D,KAEb,CACF,CACA,MAAM,IAAI0G,UAAU,wIACtB,CASA,SAAS,GAAkBrB,EAAKuB,IACnB,MAAPA,GAAeA,EAAMvB,EAAInF,UAAQ0G,EAAMvB,EAAInF,QAC/C,IAAK,IAAIF,EAAI,EAAG6G,EAAO,IAAIvB,MAAMsB,GAAM5G,EAAI4G,EAAK5G,IAC9C6G,EAAK7G,GAAKqF,EAAIrF,GAEhB,OAAO6G,CACT,CAMA,SAAS,GAAkBhE,EAAQo4B,GACjC,IAAK,IAAIj7B,EAAI,EAAGA,EAAIi7B,EAAM/6B,OAAQF,IAAK,CACrC,IAAImM,EAAa8uB,EAAMj7B,GACvBmM,EAAWvI,WAAauI,EAAWvI,aAAc,EACjDuI,EAAW6tB,cAAe,EACtB,UAAW7tB,IAAYA,EAAW8tB,UAAW,GACjD95B,OAAOwD,eAAed,EAAQsJ,EAAW5H,IAAK4H,EAChD,CACF,CAmBA,IAKIojC,GAA6BrD,GALf,IAEyB,IAMvCsD,GAAqC,OAUrCC,GAAuE,WACzE,MAAO,iBACT,EAMIC,GAAwE,WAC1E,MAAO,mBACT,EAmCIC,GAA8B,IAAInhC,OAAO,IAAMssB,EAAN,UAI9BA,EAJ8B,aAIUA,EAJV,SASzC,GAAkC,WACpC,SAAS8U,EAAmB/kC,GACdA,EAAK+hC,MAAjB,IACEzS,EAAWtvB,EAAKsvB,UA3GtB,SAAyB6B,EAAUY,GACjC,KAAMZ,aAAoBY,GACxB,MAAM,IAAIl2B,UAAU,oCAExB,CAwGI,CAAgBQ,KAAM0oC,GACtB1oC,KAAKizB,SAAWA,EAChBjzB,KAAK2oC,aACP,CAjGF,IAAsBjT,EAAaC,EAAYC,EAkrB7C,OAlrBoBF,EAkGPgT,GAlGoB/S,EAkGA,CAAC,CAChCt4B,IAAK,cACLN,MAAO,WACLiD,KAAK4oC,kBAAe7sC,EACpBiE,KAAK6oC,cAAW9sC,EAChBiE,KAAK8oC,4BAAyB/sC,EAC9BiE,KAAK+oC,qCAAkChtC,EACvCiE,KAAKgpC,yCAA2C,CAClD,GACC,CACD3rC,IAAK,QACLN,MAAO,SAAe46B,EAAe+N,GACnC1lC,KAAK2oC,cACDhR,GACF33B,KAAKipC,OAAyC,MAAhCtR,EAAcN,cAC5Br3B,KAAKkpC,gBAAkBvR,EAAcS,UACjCsN,EAAMpB,2BACRtkC,KAAKmpC,0BAA0BzD,KAGjC1lC,KAAKipC,YAASltC,EACdiE,KAAKkpC,gBAAkB,GAE3B,GAOC,CACD7rC,IAAK,SACLN,MAAO,SAAgB8nC,EAAYa,GACjC,IHlKkCpB,EAA2BrR,EGkKzDzc,EAAQxW,KAgBZ,GHlLkCskC,EGkLNoB,EAAMpB,0BHlL2BrR,EGkLAjzB,KAAKizB,SHjLJ,gBAA3D0I,GAAkB2I,EAA2BrR,GGkL9C,IAAK,IAAuEmI,EAAnEC,EAAY,GAAgCr7B,KAAKkpC,mBAA2B9N,EAAQC,KAAat8B,MAAO,CAC/G,IAAIsxB,EAAS+K,EAAMr+B,MACfqsC,EAA0B3D,GAAqBC,EAAOrV,EAAQ,CAChE4C,SAAUjzB,KAAKizB,SACf0S,sCAAuC,SAA+CtV,GACpF,OAAO7Z,EAAMmvB,sCAAsCtV,EAAQ,CACzD4T,cAAeyB,EAAMzB,cACrB9K,eAAgBuM,EAAMvM,gBAE1B,EACAyM,gCAAiC,SAAyCvV,GACxE,OAAO7Z,EAAMovB,gCAAgCvV,EAC/C,IAEF,GAAI+Y,EAQF,OAPAppC,KAAK2oC,cACL3oC,KAAK4oC,aAAevY,EACpBrwB,KAAKqpC,0BAA0BD,EAAwB7kC,QAAQ,MAAOugC,IAAoBY,GAC1F1lC,KAAK+oC,gCAAkCK,EAGvCppC,KAAKgpC,wCAA0ChpC,KAAK6oC,SAASS,YAAYxE,IAClEsE,CAEX,CAIF,OAAOppC,KAAKupC,mCAAmC1E,EAAYa,EAC7D,GACC,CACDroC,IAAK,qCACLN,MAAO,SAA4C8nC,EAAYa,GAC7D,IAAI8D,EAAyBxpC,KAAK4oC,aAE9Ba,EAAoBzpC,KAAK0pC,aAAahE,GAC1C,GAAI+D,EACF,OAAIA,IAAsBD,EAIjBxpC,KAAK2pC,+BAA+B9E,GAMpC7kC,KAAK2pC,+BAA+BjE,EAAMnB,oBAGvD,GACC,CACDlnC,IAAK,4BACLN,MAAO,SAAmC+G,GACxC,IAAIgb,EAAS9e,KACTskC,EAA4BxgC,EAAMwgC,0BACpCnL,EAAiBr1B,EAAMq1B,eACvB8K,EAAgBngC,EAAMmgC,cACpB1L,EAAgB+L,EAYhBsF,EAA4BrR,EAAcv/B,OAjIpB,EAkItB4wC,EAA4B,IAC9BA,EAA4B,GAE9B5pC,KAAKkpC,gBAAkBlpC,KAAKkpC,gBAAgBhiC,QAAO,SAAUmpB,GAC3D,OAAOvR,EAAO+qB,YAAYxZ,EAAQ4T,EAAe9K,IAAmBra,EAAOgrB,cAAczZ,EAAQkI,EAAeqR,EAClH,IAQI5pC,KAAK4oC,eAAqE,IAArD5oC,KAAKkpC,gBAAgB1gB,QAAQxoB,KAAK4oC,eACzD5oC,KAAK2oC,aAET,GACC,CACDtrC,IAAK,cACLN,MAAO,SAAqBszB,EAAQ4T,EAAe9K,GAWjD,QAAIA,IAAmB9I,EAAOsJ,uBAE7BtJ,EAAOqJ,8DAQHuK,IAAkB9K,GAAkB9I,EAAO0Z,0DAIlD,GACC,CACD1sC,IAAK,gBACLN,MAAO,SAAuBszB,EAAQkI,EAAeqR,GACnD,IAAII,EAA6B3Z,EAAOmO,wBAAwBxlC,OAIhE,GAAmC,IAA/BgxC,EACF,OAAO,EAMTJ,EAA4B95B,KAAKm6B,IAAIL,EAA2BI,EAA6B,GAC7F,IAAIE,EAAuB7Z,EAAOmO,wBAAwBoL,GA0B1D,GAAIrR,EAAcv/B,OAxNQ,EA6NxB,IACE,YAEO+C,IAFA,IAAI,GAAemuC,GAAsBpkC,MAAMyyB,EAAe,CACnEkP,eAAe,GAUnB,CARE,MAAOxsC,GAOP,OADA2C,QAAQ3C,MAAMA,IACP,CACT,CAQF,OAAO,IAAIqM,OAAO,KAAK7E,OAAOynC,EAAsB,MAAM5qC,KAAKi5B,EACjE,GACC,CACDl7B,IAAK,kBACLN,MAAO,SAAyBszB,EAAQ4T,GACtC,OAAOA,EAAgB5T,EAAOkN,sBAAwBlN,EAAOA,QAC/D,GACC,CACDhzB,IAAK,eACLN,MAAO,SAAsB2oC,GAgF3B,IA/EA,IA+EqFwC,EA/EjFiC,EAASnqC,KACToqC,EAAQ,WACV,IAAI/Z,EAAS6X,EAAOnrC,MAIpB,OAAIotC,EAAOvB,eAAiBvY,EACnB,QA0CJoY,GAA4BnpC,KAAK6qC,EAAOE,gBAAgBha,EAAQqV,EAAMzB,gBAGtEkG,EAAOG,wBAAwBja,EAAQqV,IAO5CyE,EAAOvB,aAAevY,EACf,UANL8Z,EAAOjB,gBAAkBiB,EAAOjB,gBAAgBhiC,QAAO,SAAU1C,GAC/D,OAAOA,IAAM6rB,CACf,IACO,YAPA,UAWX,EAkBS8X,EAAa,GAAgCnoC,KAAKkpC,gBAAgBlrC,WAAoBkqC,EAASC,KAAcppC,MAAO,CAC3H,IAAIwrC,EAAOH,IACX,GAAa,UAATG,EAAkB,KAExB,CAKA,OAJKvqC,KAAK4oC,cAER5oC,KAAK2oC,cAEA3oC,KAAK4oC,YACd,GACC,CACDvrC,IAAK,0BACLN,MAAO,SAAiCszB,EAAQqV,GAM9C,KAA0CrV,EAAOhpB,UAAUmhB,QAAQ,MAAQ,GAA3E,CAIA,IAAIqgB,EAAW7oC,KAAKwqC,qBAAqBna,EAAQqV,GAGjD,OAAImD,GACF7oC,KAAKqpC,0BAA0BR,EAAUnD,IAClC,QAFT,CALA,CASF,GACC,CACDroC,IAAK,kCACLN,MAAO,SAAyCszB,GAM9C,OAAIrwB,KAAKipC,QAOL5Y,GAAUA,EAAOoJ,gCAAkC6O,GAAmChpC,KAAK+wB,EAAOoJ,gCAN7F,IAYF,EACT,GACC,CACDp8B,IAAK,iDACLN,MAAO,SAAwDkH,EAAOgC,GACpE,IAAI+xB,EAAY/zB,EAAM+zB,UACpBkM,EAAcjgC,EAAMigC,YACtB,OAAIlM,EACK/xB,IAA+B,IAApBA,EAAQwkC,QAAoBzS,EAAYA,EAAY,IAEpEkM,EACK,GAEF,GACT,GACC,CACD7mC,IAAK,cACLN,MAAO,SAAqB2oC,GAC1B,GAAK1lC,KAAK6oC,SAAV,CAWA,IALA,IAAIpnC,GAAS,EACT3I,EAAI,EACJ4xC,EAAsBhF,EAAMzB,cAAgBjkC,KAAK2qC,+CAA+CjF,EAAO,CACzG+E,SAAS,IACN,GACE3xC,EAAI4xC,EAAoB1xC,OAAS0sC,EAAMkF,sCAAsC5xC,QAClFyI,EAAQzB,KAAK6oC,SAASrgB,QAAQsc,GAAmBrjC,EAAQ,GACzD3I,IAEF,OAAOosC,GAA2BllC,KAAK6oC,SAAUpnC,EAAQ,EAbzD,CAcF,GACC,CACDpE,IAAK,4BACLN,MAAO,SAAmC8rC,EAAUnD,GAClD1lC,KAAK8oC,uBAAyBD,EAC9B7oC,KAAK+oC,gCAAkCF,EAGvC7oC,KAAKgpC,yCAA2C,EAM5CtD,EAAMzB,cACRjkC,KAAK6oC,SAAW7oC,KAAK2qC,+CAA+CjF,GAAOnhC,QAAQ,UAAWugC,IAAqBE,GAAOF,GAAmBY,EAAMrO,YAAYr+B,QAAU,IAAM6vC,EAE/K7oC,KAAK6oC,SAAWA,CAEpB,GAQC,CACDxrC,IAAK,uBACLN,MAAO,SAA8BszB,EAAQ9oB,GAC3C,IAAI+8B,EAA4B/8B,EAAM+8B,0BACpCL,EAAgB18B,EAAM08B,cACtB9K,EAAiB5xB,EAAM4xB,eACvBsL,EAA+Cl9B,EAAMk9B,6CACnDp9B,EAAUgpB,EAAOhpB,UAInBA,EAAUA,EACT9C,QAAQgkC,KAAkC,OAC1ChkC,QAAQikC,KAAmC,OAU9C,IAAIrE,EAASkE,GAA2BviC,MAAMuB,GAAS,GAGvD,KAAIi9B,EAA0BtrC,OAASmrC,EAAOnrC,QAA9C,CAgCA,IAAI6xC,EAAgB,IAAIvjC,OAAO,IAAMD,EAAU,KAC3CyjC,EAA4BxG,EAA0B//B,QAAQ,MA7jBtD,KAikBRsmC,EAAcvrC,KAAKwrC,KACrB3G,EAAS2G,GAEX,IACIC,EADAC,EAAehrC,KAAKqqC,gBAAgBha,EAAQ4T,GAShD,GAAIjkC,KAAK2lC,sCAAsCtV,EAAQ,CACrD4T,cAAeA,EACf9K,eAAgBA,IACd,CACF,IAAI8R,EAAiCD,EAAazmC,QAAQ24B,GAAqB7M,EAAOoJ,gCAUtF,GAAI0B,EAAY9K,EAAOoJ,mCAAqCN,GAAkB,IAAMgC,EAAY,QAC9F6P,EAAeC,EACfF,GAAmC,EAG/B5R,GAEF,IADA,IAAIrgC,EAAIqgC,EAAengC,OAChBF,EAAI,GACTkyC,EAAeA,EAAazmC,QAAQ,KAAMugC,IAC1ChsC,GAIR,CAEA,IAAI+vC,EAAW1E,EACd5/B,QAAQ,IAAI+C,OAAOD,GAAU2jC,GAC7BzmC,QAAQ,IAAI+C,OA5mBD,IA4mBqB,KAAMw9B,IAiBvC,OAZKiG,IACCtG,EAEFoE,EAAW7D,GAAOF,GAAmBL,EAA6CzrC,QAAU,IAAM6vC,EACzF1P,IAET0P,EAAW7D,GAAOF,GAAmB3L,EAAengC,QAAUgH,KAAK4lC,gCAAgCvV,GAAUwY,IAG7G5E,IACF4E,EAAW7L,GAAiC6L,IAEvCA,CA/FP,CAgGF,GACC,CACDxrC,IAAK,iCACLN,MAAO,SAAwConC,GAC7C,IAAI/gB,EJplBH,SAAoCylB,EAAUqC,EAAU/G,GAM7D,IAAK,IAAoE+D,EAAhEC,EAAa,GAAgChE,EAAOn+B,MAAM,OAAgBkiC,EAASC,KAAcppC,MAAO,CAC/G,IAAIu8B,EAAQ4M,EAAOnrC,MAMnB,GAAI8rC,EAAS7qC,MAAMktC,EAAW,GAAGxM,OAAOqG,IAA6B,EACnE,OAEFmG,EAAWrC,EAASnK,OAAOqG,IAC3B8D,EAAWA,EAAStkC,QAAQwgC,GAA2BzJ,EACzD,CACA,MAAO,CAACuN,EAAUqC,EACpB,CIgkBmBC,CAA2BnrC,KAAK+oC,gCAAiC/oC,KAAKgpC,wCAAyC7E,GAC5H,GAAK/gB,EAQL,OAHApjB,KAAK+oC,gCAAkC3lB,EAAO,GAC9CpjB,KAAKgpC,wCAA0C5lB,EAAO,GAE/C8hB,GAA2BllC,KAAK+oC,gCAAiC/oC,KAAKgpC,wCAA0C,GANrHhpC,KAAK2oC,aAUT,GACC,CACDtrC,IAAK,wCACLN,MAAO,SAA+CszB,EAAQtnB,GAC5D,IAAIk7B,EAAgBl7B,EAAMk7B,cACxB9K,EAAiBpwB,EAAMowB,eACzB,GAAI9I,EAAOoJ,+BAAgC,CAIzC,IAAIE,EAAqBtJ,EAAOsJ,qBAChC,GAAIA,GAAsBR,IAAmBQ,IAAuBsK,EAClE,OAAO,CAEX,CACF,MA/qBc,GAAkBvO,EAAYx8B,UAAWy8B,GACrDC,GAAa,GAAkBF,EAAaE,GAChD38B,OAAOwD,eAAei5B,EAAa,YAAa,CAC9C3C,UAAU,IA8qBL2V,CACT,CAzlBsC,GCzItC,SAAS,GAAevqC,EAAKrF,GAC3B,OA4CF,SAAyBqF,GACvB,GAAIC,MAAMC,QAAQF,GAAM,OAAOA,CACjC,CA9CS,CAAgBA,IAoBzB,SAA+BA,EAAKrF,GAClC,IAAIyF,EAAY,MAAPJ,EAAc,KAAyB,qBAAXtB,QAA0BsB,EAAItB,OAAO2B,WAAaL,EAAI,cAC3F,GAAU,MAANI,EAAY,OAChB,IAGIE,EAAIC,EAHJC,EAAO,GACPC,GAAK,EACLC,GAAK,EAET,IACE,IAAKN,EAAKA,EAAGnF,KAAK+E,KAAQS,GAAMH,EAAKF,EAAGO,QAAQC,QAC9CJ,EAAKrF,KAAKmF,EAAG1B,QACTjE,GAAK6F,EAAK3F,SAAWF,GAF4B8F,GAAK,GAa9D,CATE,MAAOjB,GACPkB,GAAK,EACLH,EAAKf,CACP,CAAE,QACA,IACOiB,GAAsB,MAAhBL,EAAW,QAAWA,EAAW,QAG9C,CAFE,QACA,GAAIM,EAAI,MAAMH,CAChB,CACF,CACA,OAAOC,CACT,CA3CiC,CAAsBR,EAAKrF,IAK5D,SAAqC0D,EAAGyC,GACtC,IAAKzC,EAAG,OACR,GAAiB,kBAANA,EAAgB,OAAO,GAAkBA,EAAGyC,GACvD,IAAI1B,EAAItE,OAAOC,UAAUiG,SAAS/F,KAAKoD,GAAGwB,MAAM,GAAI,GAC1C,WAANT,GAAkBf,EAAE4C,cAAa7B,EAAIf,EAAE4C,YAAYvD,MACvD,GAAU,QAAN0B,GAAqB,QAANA,EAAa,OAAOa,MAAMiB,KAAK7C,GAClD,GAAU,cAANe,GAAqB,2CAA2C+B,KAAK/B,GAAI,OAAO,GAAkBf,EAAGyC,EAC3G,CAZkE,CAA4Bd,EAAKrF,IAEnG,WACE,MAAM,IAAI0G,UAAU,4IACtB,CAJyG,EACzG,CAYA,SAAS,GAAkBrB,EAAKuB,IACnB,MAAPA,GAAeA,EAAMvB,EAAInF,UAAQ0G,EAAMvB,EAAInF,QAC/C,IAAK,IAAIF,EAAI,EAAG6G,EAAO,IAAIvB,MAAMsB,GAAM5G,EAAI4G,EAAK5G,IAC9C6G,EAAK7G,GAAKqF,EAAIrF,GAEhB,OAAO6G,CACT,CAiCA,SAAS,GAAkBhE,EAAQo4B,GACjC,IAAK,IAAIj7B,EAAI,EAAGA,EAAIi7B,EAAM/6B,OAAQF,IAAK,CACrC,IAAImM,EAAa8uB,EAAMj7B,GACvBmM,EAAWvI,WAAauI,EAAWvI,aAAc,EACjDuI,EAAW6tB,cAAe,EACtB,UAAW7tB,IAAYA,EAAW8tB,UAAW,GACjD95B,OAAOwD,eAAed,EAAQsJ,EAAW5H,IAAK4H,EAChD,CACF,CAeA,IACImmC,GAAmD,IAAI9jC,OAAO,KADnB,IAAMssB,EAAN,gDACoE,IAAK,KACpHyX,GAAoC,gBAAuCzX,EAAvC,iDAA6FA,EAA7F,gDACpC0X,GAAwC,IAAIhkC,OAAO,KAAOssB,EAAP,mDAInD2X,GAA0B,YAC1B,GAA+B,WACjC,SAASC,EAAgB7nC,GACvB,IAAI+vB,EAAiB/vB,EAAK+vB,eACxB0P,EAAqBz/B,EAAKy/B,mBAC1BnQ,EAAWtvB,EAAKsvB,SAChBwY,EAAoC9nC,EAAK8nC,mCAzC/C,SAAyB3W,EAAUY,GACjC,KAAMZ,aAAoBY,GACxB,MAAM,IAAIl2B,UAAU,oCAExB,CAsCI,CAAgBQ,KAAMwrC,GACtBxrC,KAAK0zB,eAAiBA,EACtB1zB,KAAKojC,mBAAqBA,EAC1BpjC,KAAKizB,SAAWA,EAChBjzB,KAAKyrC,kCAAoCA,CAC3C,CAjCF,IAAsB/V,EAAaC,EAAYC,EAmY7C,OAnYoBF,EAkCP8V,GAlCoB7V,EAkCH,CAAC,CAC7Bt4B,IAAK,QACLN,MAAO,SAAeqqB,EAAMse,GAC1B,IAMIgG,EANAC,EAkZH,SAAuCvkB,GAC5C,IACEwkB,EAAyB,GAjB7B,SAAwCxkB,GAEtC,IAAIykB,EA9BN,SAAqCzkB,GAEnC,IAOI0kB,EAPAnJ,EAAWvb,EAAKsX,OAAO2M,IAC3B,KAAI1I,EAAW,GAiBf,MAVgB,OAHhBvb,EAAOA,EAAKppB,MAAM2kC,IAGT,KACPmJ,GAAU,EACV1kB,EAAOA,EAAKppB,MAAM,IAAIhF,SAGxBouB,EAAOA,EAAK7iB,QAAQ+mC,GAAuC,IAEvDQ,IACF1kB,EAAO,IAAMA,GAERA,CACT,CASwB,CAA4BA,IAAS,GAE3D,MAA2B,MAAvBykB,EAAgB,GACX,CAACA,EAAgB7tC,MAAM,IAAIhF,SAAS,GAEtC,CAAC6yC,EACV,CAQ+BE,CAA+B3kB,GACM,GAChE4kB,EAAkBJ,EAAuB,GACzCE,EAAUF,EAAuB,GAOnC,OAHKR,GAAiD9rC,KAAK0sC,KACzDA,EAAkB,IAEb,CAACA,EAAiBF,EAC3B,CA9ZkCG,CAA8B7kB,GACxD8kB,EAAyB,GAAeP,EAAuB,GAC/DK,EAAkBE,EAAuB,GACzCJ,EAAUI,EAAuB,GAC/B/H,EAAShJ,EAAY6Q,GAczB,OAXIF,IACGpG,EAAMvB,SACTuB,EAAMyG,2BACDhI,IACHuH,GAAkB,KAIpBvH,GACFnkC,KAAKosC,YAAYjI,EAAQuB,GAEpB,CACLvB,OAAQA,EACRuH,gBAAiBA,EAErB,GAMC,CACDruC,IAAK,cACLN,MAAO,SAAqB8nC,EAAYa,GACtC,IAAIvB,EAASuB,EAAMvB,OACfkI,EAAgClI,EAAOnrC,OAAS,GAAKmrC,EAAOnrC,OAAS6rC,EAAW7rC,QAAU,EAoB9F,GAlBA0sC,EAAM4G,aAAazH,GAefwH,GACFrsC,KAAKusC,iBAAiB7G,GAEpB1lC,KAAKwsC,+BAA+B9G,IACtC,IAAK1lC,KAAKysC,0BAA0B/G,GAClC,YAGFA,EAAMgH,sCAAsC7H,GAOzCa,EAAMzB,eACJjkC,KAAK2sC,uCACR3sC,KAAK4sC,iCAAiClH,EAAMnB,qBAAqB,SAAUsI,GACzE,OAAOnH,EAAMoH,OAAOD,EACtB,GAGN,GACC,CACDxvC,IAAK,iCACLN,MAAO,SAAwC+G,GAC7C,IAAImgC,EAAgBngC,EAAMmgC,cACxB5M,EAAcvzB,EAAMuzB,YACtB,OAAO4M,IAAkB5M,CAC3B,GAEC,CACDh6B,IAAK,4BACLN,MAAO,SAAmC2oC,GACxC,IAAI/E,EAAwB,GAA2B,IAAM+E,EAAMkF,sCAAuC5qC,KAAK0zB,eAAgB1zB,KAAKojC,mBAAoBpjC,KAAKizB,SAASA,UACpK6G,EAAqB6G,EAAsB7G,mBAC3ClY,EAAS+e,EAAsB/e,OACjC,GAAIkY,EAKF,OAJA4L,EAAMd,eAAe9K,GACrB4L,EAAMoH,OAAO,CACXxI,0BAA2B1iB,KAEtB,CAEX,GACC,CACDvkB,IAAK,QACLN,MAAO,SAAe46B,GACpB,GAAIA,EAAe,CACjB33B,KAAKujC,0BAA2B,EAChC,IAAIlL,EAA2BV,EAAcuB,4BAC7Cl5B,KAAK+sC,qDAAuD1U,GAA4BkT,GAAwBjsC,KAAK+4B,EACvH,MACEr4B,KAAKujC,8BAA2BxnC,EAChCiE,KAAK+sC,0DAAuDhxC,CAEhE,GAQC,CACDsB,IAAK,mCACLN,MAAO,SAA0CiwC,EAAgBC,GAC/D,GAAKjtC,KAAKujC,yBAAV,CAGA,IAAItD,EAAwBT,GAAkDwN,EAAgBhtC,KAAKizB,UACjGkG,EAAiB8G,EAAsB9G,eACvCyC,EAAiBqE,EAAsBrE,eACvC0B,EAAc2C,EAAsB3C,YACtC,GAAI1B,IAAmBoR,EAIvB,OADAhtC,KAAKktC,0BAA0B/T,EAAgBmE,EAAa1B,EAAgBoR,EAAgBC,IACrF,CATP,CAUF,GAMC,CACD5vC,IAAK,0CACLN,MAAO,SAAiDiwC,EAAgBG,EAA+BF,GACrG,IAAKjtC,KAAK2sC,sCACR,OAAO3sC,KAAK4sC,iCAAiCI,EAAgBC,GAE/D,GAAKjtC,KAAK+sC,qDAAV,CAGA,IAAIK,EAAyB5N,GAAkDwN,EAAgBhtC,KAAKizB,UAClGkG,EAAiBiU,EAAuBjU,eACxCyC,EAAiBwR,EAAuBxR,eACxC0B,EAAc8P,EAAuB9P,YAQvC,GAAI1B,IAAmBuR,EAIvB,OADAntC,KAAKktC,0BAA0B/T,EAAgBmE,EAAa1B,EAAgBoR,EAAgBC,IACrF,CAhBP,CAiBF,GACC,CACD5vC,IAAK,4BACLN,MAAO,SAAmCo8B,EAAgBmE,EAAagH,EAA2B0I,EAAgBC,GAChH,IAAIxI,EACAD,EAEA6I,EAAiCL,EAAe1D,YAAYhF,GAMhE,GAAI+I,GAAkC,GAAKA,IAAmCL,EAAeh0C,OAASsrC,EAA0BtrC,OAAQ,CACtIwrC,GAAwC,EAMxC,IAAI1E,EAA6BkN,EAAehvC,MAAM,EAAGqvC,GAMrDvN,IAA+B3G,IACjCsL,EAA+C3E,EAEnD,CACAmN,EAAS,CACP9T,eAAgBA,EAChBmE,YAAaA,EACbgH,0BAA2BA,EAC3BE,sCAAuCA,EACvCC,6CAA8CA,IAIhDzkC,KAAK2sC,uCAAwC,EAC7C3sC,KAAKyrC,mCACP,GACC,CACDpuC,IAAK,qCACLN,MAAO,SAA4C2oC,GAkCjD,QAAI1lC,KAAKstC,wCAAwC5H,EAAMnB,oBAAqBmB,EAAMpB,2BAA2B,SAAUuI,GACrH,OAAOnH,EAAMoH,OAAOD,EACtB,MAiBI7sC,KAAKusC,iBAAiB7G,IAWtB1lC,KAAKutC,eAAe7H,IAVtB1lC,KAAKwtC,+CAA+C9H,IAC7C,QAST,EAIF,GACC,CACDroC,IAAK,mBACLN,MAAO,SAA0B2oC,GAG/B,IAAIzB,EAAgByB,EAAMzB,cACxBjM,EAAY0N,EAAM1N,UAClBmM,EAASuB,EAAMvB,OAEjB,GAD8BuB,EAAMpB,2BAChCL,IAAiBjM,EAArB,CAOA,IAAI0I,EAAmBrB,GAAe8E,EAAQnkC,KAAK0zB,eAAgB1zB,KAAKojC,mBAAoBpjC,KAAKizB,SAASA,UAC1G,YAAyBl3B,IAArB2kC,GAAkCA,IAAqByD,GAGzDuB,EAAMoH,OAAO,CACX9U,UAAWmM,EAAOnmC,MAAM,EAAGmmC,EAAOnrC,OAAS0nC,EAAiB1nC,UAE9DgH,KAAKmsC,yBAAyBzG,EAAO,CACnCvO,aAASp7B,EACTs7B,iBAAat7B,KAER,QAVT,CANA,CAkBF,GACC,CACDsB,IAAK,iBACLN,MAAO,SAAwB2oC,GAC7B,IAAKA,EAAMzB,cAAe,CACxB,IAAIwJ,EAAyBnN,GAAgEoF,EAAMvB,OAAQnkC,KAAK0zB,eAAgB1zB,KAAKojC,mBAAoBpjC,KAAKizB,SAASA,UACrKya,EAAiBD,EAAuB3T,mBAE1C,GADW2T,EAAuB7rB,OAC9B8rB,EAQF,OAPAhI,EAAMoH,OAAO,CACX5I,aAAa,IAEflkC,KAAKmsC,yBAAyBzG,EAAO,CACnCvO,QAASuO,EAAMvO,QACfE,YAAaqW,KAER,CAEX,CACF,GACC,CACDrwC,IAAK,2BACLN,MAAO,SAAkC2oC,EAAOzhC,GAC9C,IAAIkzB,EAAUlzB,EAAMkzB,QAClBE,EAAcpzB,EAAMozB,YACtBqO,EAAMyG,yBAAyBhV,EAASE,GAEpCqO,EAAMpB,4BACRoB,EAAMtB,iCACNpkC,KAAKyrC,oCACLzrC,KAAK2sC,2CAAwC5wC,EAEjD,GACC,CACDsB,IAAK,iDACLN,MAAO,SAAwD2oC,GACzD1lC,KAAKysC,0BAA0B/G,IAOjC1lC,KAAK4sC,iCAAiClH,EAAMnB,qBAAqB,SAAUsI,GACzE,OAAOnH,EAAMoH,OAAOD,EACtB,GAEJ,MAhYc,GAAkBnX,EAAYx8B,UAAWy8B,GACrDC,GAAa,GAAkBF,EAAaE,GAChD38B,OAAOwD,eAAei5B,EAAa,YAAa,CAC9C3C,UAAU,IA+XLyY,CACT,CA9WmC,GCpFnC,SAAS,GAAertC,EAAKrF,GAC3B,OA4CF,SAAyBqF,GACvB,GAAIC,MAAMC,QAAQF,GAAM,OAAOA,CACjC,CA9CS,CAAgBA,IAoBzB,SAA+BA,EAAKrF,GAClC,IAAIyF,EAAY,MAAPJ,EAAc,KAAyB,qBAAXtB,QAA0BsB,EAAItB,OAAO2B,WAAaL,EAAI,cAC3F,GAAU,MAANI,EAAY,OAChB,IAGIE,EAAIC,EAHJC,EAAO,GACPC,GAAK,EACLC,GAAK,EAET,IACE,IAAKN,EAAKA,EAAGnF,KAAK+E,KAAQS,GAAMH,EAAKF,EAAGO,QAAQC,QAC9CJ,EAAKrF,KAAKmF,EAAG1B,QACTjE,GAAK6F,EAAK3F,SAAWF,GAF4B8F,GAAK,GAa9D,CATE,MAAOjB,GACPkB,GAAK,EACLH,EAAKf,CACP,CAAE,QACA,IACOiB,GAAsB,MAAhBL,EAAW,QAAWA,EAAW,QAG9C,CAFE,QACA,GAAIM,EAAI,MAAMH,CAChB,CACF,CACA,OAAOC,CACT,CA3CiC,CAAsBR,EAAKrF,IAK5D,SAAqC0D,EAAGyC,GACtC,IAAKzC,EAAG,OACR,GAAiB,kBAANA,EAAgB,OAAO,GAAkBA,EAAGyC,GACvD,IAAI1B,EAAItE,OAAOC,UAAUiG,SAAS/F,KAAKoD,GAAGwB,MAAM,GAAI,GAC1C,WAANT,GAAkBf,EAAE4C,cAAa7B,EAAIf,EAAE4C,YAAYvD,MACvD,GAAU,QAAN0B,GAAqB,QAANA,EAAa,OAAOa,MAAMiB,KAAK7C,GAClD,GAAU,cAANe,GAAqB,2CAA2C+B,KAAK/B,GAAI,OAAO,GAAkBf,EAAGyC,EAC3G,CAZkE,CAA4Bd,EAAKrF,IAEnG,WACE,MAAM,IAAI0G,UAAU,4IACtB,CAJyG,EACzG,CAYA,SAAS,GAAkBrB,EAAKuB,IACnB,MAAPA,GAAeA,EAAMvB,EAAInF,UAAQ0G,EAAMvB,EAAInF,QAC/C,IAAK,IAAIF,EAAI,EAAG6G,EAAO,IAAIvB,MAAMsB,GAAM5G,EAAI4G,EAAK5G,IAC9C6G,EAAK7G,GAAKqF,EAAIrF,GAEhB,OAAO6G,CACT,CAiCA,SAAS,GAAkBhE,EAAQo4B,GACjC,IAAK,IAAIj7B,EAAI,EAAGA,EAAIi7B,EAAM/6B,OAAQF,IAAK,CACrC,IAAImM,EAAa8uB,EAAMj7B,GACvBmM,EAAWvI,WAAauI,EAAWvI,aAAc,EACjDuI,EAAW6tB,cAAe,EACtB,UAAW7tB,IAAYA,EAAW8tB,UAAW,GACjD95B,OAAOwD,eAAed,EAAQsJ,EAAW5H,IAAK4H,EAChD,CACF,CAiBA,IACI,GAAyB,WAK3B,SAAS0oC,EAAUC,EAAyB3a,IApC9C,SAAyB6B,EAAUY,GACjC,KAAMZ,aAAoBY,GACxB,MAAM,IAAIl2B,UAAU,oCAExB,CAiCI,CAAgBQ,KAAM2tC,GACtB3tC,KAAKizB,SAAW,IAAIuD,EAASvD,GAC7B,IACE4a,EAAyB,GADC7tC,KAAK8tC,yBAAyBF,GACO,GAC/Dla,EAAiBma,EAAuB,GACxCzK,EAAqByK,EAAuB,GAI9C7tC,KAAK0zB,eAAiBA,EACtB1zB,KAAKojC,mBAAqBA,EAC1BpjC,KAAK+tC,OACP,CAnCF,IAAsBrY,EAAaC,EAAYC,EAsd7C,OAtdoBF,EAoCPiY,GApCoBhY,EAoCT,CAAC,CACvBt4B,IAAK,2BACLN,MAAO,SAAkC6wC,GAEvC,IAAIla,EACA0P,EAqBJ,OAnBIwK,IACEpb,EAASob,IACXla,EAAiBka,EAAwBla,eACzC0P,EAAqBwK,EAAwBxK,oBAE7C1P,EAAiBka,GAGjBla,IAAmB1zB,KAAKizB,SAASyE,WAAWhE,KAC9CA,OAAiB33B,GAUZ,CAAC23B,EAAgB0P,EAC1B,GAMC,CACD/lC,IAAK,QACLN,MAAO,SAAeqqB,GACpB,IAAI4mB,EAAqBhuC,KAAKgpB,OAAOlhB,MAAMsf,EAAMpnB,KAAK0lC,OACpDvB,EAAS6J,EAAmB7J,OAE9B,GADoB6J,EAAmBtC,gBAErC1rC,KAAKiuC,gBAAkB,SAClB,GAAI9J,EAAQ,CAMjB,IAAI4B,EAIJ,GATA/lC,KAAKkuC,8BAEDluC,KAAK0lC,MAAMpB,2BACbtkC,KAAKmuC,UAAUhF,0BAA0BnpC,KAAK0lC,OAG5C1lC,KAAKizB,SAASsQ,6BAChBwC,EAA0B/lC,KAAKmuC,UAAU9d,OAAO8T,EAAQnkC,KAAK0lC,aAE/B3pC,IAA5BgqC,GAEE/lC,KAAKgpB,OAAOolB,mCAAmCpuC,KAAK0lC,OAAQ,CAC9D1lC,KAAKkuC,8BAEL,IAAIlB,EAAiBhtC,KAAK0lC,MAAMnB,oBAC5ByI,IACFjH,EAA0B/lC,KAAKmuC,UAAU9d,OAAO2c,EAAgBhtC,KAAK0lC,OAEzE,CAEF1lC,KAAKiuC,gBAAkBlI,EAA0B/lC,KAAKquC,cAActI,GAA2B/lC,KAAKsuC,uBACtG,CACA,OAAOtuC,KAAKiuC,eACd,GACC,CACD5wC,IAAK,QACLN,MAAO,WACL,IAAIyZ,EAAQxW,KAmCZ,OAlCAA,KAAK0lC,MAAQ,IAAI5B,GAAe,CAC9BC,gBAAiB,SAAyB5M,GAMxC3gB,EAAM2gB,QAAUA,CAClB,EACA6M,oBAAqB,SAA6B3M,EAAaF,GAC7D3gB,EAAMyc,SAASwE,oBAAoBN,EAASE,GAC5C7gB,EAAM23B,UAAUJ,MAAMv3B,EAAMyc,SAAS0E,cAAenhB,EAAMkvB,OAC1DlvB,EAAMwS,OAAO+kB,MAAMv3B,EAAMyc,SAAS0E,cACpC,IAEF33B,KAAKmuC,UAAY,IAAI,GAAmB,CACtCzI,MAAO1lC,KAAK0lC,MACZzS,SAAUjzB,KAAKizB,WAEjBjzB,KAAKgpB,OAAS,IAAI,GAAgB,CAChC0K,eAAgB1zB,KAAK0zB,eACrB0P,mBAAoBpjC,KAAKojC,mBACzBnQ,SAAUjzB,KAAKizB,SACfyS,MAAO1lC,KAAK0lC,MACZ+F,kCAAmC,WACjCj1B,EAAM03B,8BACN13B,EAAM23B,UAAUJ,MAAMv3B,EAAMyc,SAAS0E,cAAenhB,EAAMkvB,MAC5D,IAEF1lC,KAAK0lC,MAAMqI,MAAM,CACf5W,QAASn3B,KAAK0zB,eACd2D,YAAar3B,KAAKojC,qBAEpBpjC,KAAKiuC,gBAAkB,GAChBjuC,IACT,GAMC,CACD3C,IAAK,kBACLN,MAAO,WACL,OAAOiD,KAAK0lC,MAAMzB,aACpB,GAOC,CACD5mC,IAAK,iBACLN,MAAO,WASL,GAAIiD,KAAKuuC,kBACP,OAAOvuC,KAAK0lC,MAAMrO,WAEtB,GACC,CACDh6B,IAAK,wBACLN,MAAO,WACL,OAAOiD,KAAKwuC,gBACd,GAOC,CACDnxC,IAAK,aACLN,MAAO,WAGL,GAFaiD,KAAK0lC,MAAMvB,OAGtB,OAAOnkC,KAAKyuC,aAEhB,GAMC,CACDpxC,IAAK,cACLN,MAAO,WACL,IAAIo6B,EAAUn3B,KAAK0lC,MAAMvO,QAUzB,OAAOA,CACT,GACC,CACD95B,IAAK,8BACLN,MAAO,WAiBAiD,KAAK0lC,MAAMvO,UAAWn3B,KAAK0uC,iCAC9B1uC,KAAK2uC,qBAET,GACC,CACDtxC,IAAK,gBACLN,MAAO,SAAuBgpC,GAC5B,IAAIjnB,EAAS9e,KACb,GAAIA,KAAKuuC,kBAAmB,CAC1B,IAAI/rB,EAAS,SAAgB4E,GAC3B,OAAOtI,EAAOqvB,UAAUxD,+CAA+C7rB,EAAO4mB,MAAO,CACnF+E,UAASrjB,IACNA,CACP,EACIiQ,EAAcr3B,KAAK0lC,MAAMrO,YAC7B,OAMO7U,EANF6U,EAGA0O,EAGS,GAAGtjC,OAAO40B,EAAa,KAAK50B,OAAOsjC,GAFjC1O,EAHA,GAAG50B,OAAOzC,KAAK0lC,MAAMkF,uCAMvC,CACA,OAAO7E,CACT,GACC,CACD1oC,IAAK,0CACLN,MAAO,WACL,IAAI6xC,EAAc5uC,KAAK0lC,MACrBpB,EAA4BsK,EAAYtK,0BACxCG,EAA+CmK,EAAYnK,6CAC3DtL,EAAiByV,EAAYzV,eAC3BvX,EAAS0iB,EACT9hB,EAASiiB,GAAgDtL,EAI7D,OAHI3W,IACFZ,EAASY,EAASZ,GAEbA,CACT,GACC,CACDvkB,IAAK,wBACLN,MAAO,WACL,IAAIynC,EAAwCxkC,KAAK0lC,MAAMlB,sCACvD,OAAOxkC,KAAKquC,cAAc7J,EAAwCxkC,KAAK6uC,0CAA4C7uC,KAAK0lC,MAAMnB,oBAChI,GACC,CACDlnC,IAAK,0BACLN,MAAO,WACL,IAAI6kB,EAAS5hB,KAAKsuC,wBAClB,GAAI1sB,EACF,OAAOA,EAAOrd,QAAQ,UAAWugC,GAErC,GACC,CACDznC,IAAK,gCACLN,MAAO,WACL,IAAIs6B,EAAcr3B,KAAK0lC,MAAMrO,YACzBE,EAAev3B,KAAKizB,SAASqE,8BAA8BD,GAC/D,OAAOE,GAAgBA,EAAav+B,OAAS,CAC/C,GAGC,CACDqE,IAAK,sBACLN,MAAO,WACLiD,KAAK0lC,MAAMf,WAAWzD,GAAwBlhC,KAAKuuC,kBAAoBvuC,KAAK0lC,MAAMrO,YAAcr3B,KAAKojC,mBAAoB,CACvHxH,eAAgB57B,KAAK0lC,MAAMpB,0BAC3B5Q,eAAgB1zB,KAAK0zB,eACrBT,SAAUjzB,KAAKizB,WAEnB,GAmBC,CACD51B,IAAK,iBACLN,MAAO,WACL,IAAI+xC,EAAe9uC,KAAK0lC,MACtBvB,EAAS2K,EAAa3K,OACtB9M,EAAcyX,EAAazX,YAC3BF,EAAU2X,EAAa3X,QACvBmN,EAA4BwK,EAAaxK,0BAE3C,GAAKH,EAGL,OAAInkC,KAAKuuC,kBACHlX,EACK,IAAMA,EAAciN,EAEpB,IAAMH,EAGXhN,GAAWE,EAEN,KADYF,EAAUn3B,KAAKizB,SAAS6G,qBAAuBzC,GACtCiN,OAF9B,CAKJ,GAOC,CACDjnC,IAAK,YACLN,MAAO,WACL,IAAIgyC,EAAe/uC,KAAK0lC,MACtBpB,EAA4ByK,EAAazK,0BACzChH,EAAcyR,EAAazR,YAC3BjG,EAAc0X,EAAa1X,YAIzBF,EAAUn3B,KAAKyuC,cACnB,GAAKnK,IAMAnN,GAAYE,GAAjB,CAgBA,GAAIF,GACEA,IAAYn3B,KAAK0zB,eAAgB,CAInC,IAAIT,EAAW,IAAIuD,EAASx2B,KAAKizB,SAASA,UAC1CA,EAASwE,oBAAoBN,GAC7B,IAAI6X,EAAe/b,EAAS0E,cAAcN,cACtC4X,EAAqBjvC,KAAKizB,SAASqE,8BAA8B0X,GACrE,GAAIC,EAAmBj2C,OAAS,EAAG,CACjC,IAAIqqC,EAAetC,GAA2BuD,EAA2B,CACvE7N,UAAWwY,EACXvb,eAAgB1zB,KAAK0zB,eACrBT,SAAUjzB,KAAKizB,SAASA,WAEtBoQ,IACFlM,EAAUkM,EAEd,CACF,CAEF,IAAIlE,EAAc,IAAI,GAAYhI,GAAWE,EAAaiN,EAA2BtkC,KAAKizB,SAASA,UAKnG,OAJIqK,IACF6B,EAAY7B,YAAcA,GAGrB6B,CAxCP,CAyCF,GAMC,CACD9hC,IAAK,aACLN,MAAO,WACL,IAAIoiC,EAAcn/B,KAAKkvC,YACvB,QAAK/P,GAGEA,EAAYgQ,YACrB,GAMC,CACD9xC,IAAK,UACLN,MAAO,WACL,IAAIoiC,EAAcn/B,KAAKkvC,YACvB,QAAK/P,GAGEA,EAAYiQ,SACrB,GAMC,CACD/xC,IAAK,oBACLN,MAAO,WACL,OAAOiD,KAAK0lC,MAAMpB,yBACpB,GAKC,CACDjnC,IAAK,WACLN,MAAO,WACL,OAAQiD,KAAK0lC,MAAMzB,cAAgB,IAAM,IAAMjkC,KAAK0lC,MAAMvB,MAC5D,GAKC,CACD9mC,IAAK,cACLN,MAAO,WACL,OAAOiD,KAAKmuC,UAAUkB,YAAYrvC,KAAK0lC,QAAU1lC,KAAKsvC,2BAA6B,EACrF,MAndc,GAAkB5Z,EAAYx8B,UAAWy8B,GACrDC,GAAa,GAAkBF,EAAaE,GAChD38B,OAAOwD,eAAei5B,EAAa,YAAa,CAC9C3C,UAAU,IAkdL4a,CACT,CAtc6B,GC3EtB,SAAS,GAAUxW,GACxB,OAAO,GAAW/9B,KAAK4G,KAAMm3B,EAAS,EACxC,CCNA,SAAS,GAAQ35B,EAAQk1B,GACvB,IAAIlvB,EAAOvK,OAAOuK,KAAKhG,GACvB,GAAIvE,OAAOmf,sBAAuB,CAChC,IAAIua,EAAU15B,OAAOmf,sBAAsB5a,GAC3Ck1B,IAAmBC,EAAUA,EAAQzrB,QAAO,SAAU0rB,GACpD,OAAO35B,OAAO2e,yBAAyBpa,EAAQo1B,GAAKl2B,UACtD,KAAK8G,EAAKlK,KAAKg5B,MAAM9uB,EAAMmvB,EAC7B,CACA,OAAOnvB,CACT,CACA,SAAS,GAAc7H,GACrB,IAAK,IAAI7C,EAAI,EAAGA,EAAI8J,UAAU5J,OAAQF,IAAK,CACzC,IAAIy6B,EAAS,MAAQ3wB,UAAU9J,GAAK8J,UAAU9J,GAAK,CAAC,EACpDA,EAAI,EAAI,GAAQG,OAAOs6B,IAAS,GAAIrxB,SAAQ,SAAU7E,GACpD,GAAgB1B,EAAQ0B,EAAKk2B,EAAOl2B,GACtC,IAAKpE,OAAOu6B,0BAA4Bv6B,OAAO8e,iBAAiBpc,EAAQ1C,OAAOu6B,0BAA0BD,IAAW,GAAQt6B,OAAOs6B,IAASrxB,SAAQ,SAAU7E,GAC5JpE,OAAOwD,eAAed,EAAQ0B,EAAKpE,OAAO2e,yBAAyB2b,EAAQl2B,GAC7E,GACF,CACA,OAAO1B,CACT,CACA,SAAS,GAAgBgrB,EAAKtpB,EAAKN,GAWjC,OAVIM,KAAOspB,EACT1tB,OAAOwD,eAAekqB,EAAKtpB,EAAK,CAC9BN,MAAOA,EACPL,YAAY,EACZo2B,cAAc,EACdC,UAAU,IAGZpM,EAAItpB,GAAON,EAEN4pB,CACT,CAIe,SAAS,GAAiBS,EAAMnhB,EAASgtB,GAElDhtB,GAAWA,EAAQytB,iBxC2hBlB,SAA4ByD,EAASlE,GAG1C,OAAOA,EAASwD,UAAUt9B,eAAeg+B,EAC3C,CwC/hB4CoY,CAAmBtpC,EAAQytB,eAAgBT,KACnFhtB,EAAU,GAAc,GAAc,CAAC,EAAGA,GAAU,CAAC,EAAG,CACtDytB,oBAAgB33B,KAIpB,IACE,OAAO4nC,GAA0Bvc,EAAMnhB,EAASgtB,EAOlD,CANE,MAAOh4B,GAEP,KAAIA,aAAiBk6B,GAEnB,MAAMl6B,CAEV,CACF,CCtDA,SAAS,GAAQuC,EAAQk1B,GACvB,IAAIlvB,EAAOvK,OAAOuK,KAAKhG,GACvB,GAAIvE,OAAOmf,sBAAuB,CAChC,IAAIua,EAAU15B,OAAOmf,sBAAsB5a,GAC3Ck1B,IAAmBC,EAAUA,EAAQzrB,QAAO,SAAU0rB,GACpD,OAAO35B,OAAO2e,yBAAyBpa,EAAQo1B,GAAKl2B,UACtD,KAAK8G,EAAKlK,KAAKg5B,MAAM9uB,EAAMmvB,EAC7B,CACA,OAAOnvB,CACT,CACA,SAAS,GAAc7H,GACrB,IAAK,IAAI7C,EAAI,EAAGA,EAAI8J,UAAU5J,OAAQF,IAAK,CACzC,IAAIy6B,EAAS,MAAQ3wB,UAAU9J,GAAK8J,UAAU9J,GAAK,CAAC,EACpDA,EAAI,EAAI,GAAQG,OAAOs6B,IAAS,GAAIrxB,SAAQ,SAAU7E,GACpD,GAAgB1B,EAAQ0B,EAAKk2B,EAAOl2B,GACtC,IAAKpE,OAAOu6B,0BAA4Bv6B,OAAO8e,iBAAiBpc,EAAQ1C,OAAOu6B,0BAA0BD,IAAW,GAAQt6B,OAAOs6B,IAASrxB,SAAQ,SAAU7E,GAC5JpE,OAAOwD,eAAed,EAAQ0B,EAAKpE,OAAO2e,yBAAyB2b,EAAQl2B,GAC7E,GACF,CACA,OAAO1B,CACT,CACA,SAAS,GAAgBgrB,EAAKtpB,EAAKN,GAWjC,OAVIM,KAAOspB,EACT1tB,OAAOwD,eAAekqB,EAAKtpB,EAAK,CAC9BN,MAAOA,EACPL,YAAY,EACZo2B,cAAc,EACdC,UAAU,IAGZpM,EAAItpB,GAAON,EAEN4pB,CACT,CAGe,SAAS6oB,KACtB,IAAI3L,EAAsB7Q,EAAmBpwB,WAC3CwkB,EAAOyc,EAAoBzc,KAC3BnhB,EAAU49B,EAAoB59B,QAC9BgtB,EAAW4Q,EAAoB5Q,SAI7BkM,EAAc,GAAiB/X,EAHnCnhB,EAAU,GAAc,GAAc,CAAC,EAAGA,GAAU,CAAC,EAAG,CACtDw8B,SAAS,IAEuCxP,GAClD,OAAOkM,GAAeA,EAAYiQ,YAAa,CACjD,CC5Ce,SAAS,KACtB,IAAIvL,EAAsB7Q,EAAmBpwB,WAC3CwkB,EAAOyc,EAAoBzc,KAC3BnhB,EAAU49B,EAAoB59B,QAC9BgtB,EAAW4Q,EAAoB5Q,SACjC,OAAO,GAAkB7L,EAAMnhB,EAASgtB,EAC1C,C,0uCHDA,GAAU/5B,UAAYD,OAAOmE,OAAO,GAAWlE,UAAW,CAAC,GAC3D,GAAUA,UAAUkG,YAAc,GIP6E,oB,uRAAA,U,MAAA,8GAMjG,OANiG,oCAK7G4Q,IAAMxV,SAASwyB,eAAe,qBAAqB,EACnDyiB,kBAAY,IA2BX,O,EA3BW,E,EAAA,sBAEZ,WAAW,IAAD,OACRzvC,KAAK0vC,aAAaxtC,SAAQ,SAACytC,GAAU,OAAK,EAAKC,WAAWD,EAAW,IAGrE3vC,KAAKgQ,KAAOhQ,KAAK6vC,UACnB,GAAC,wBAED,SAAYF,GAAa,IAAD,OACtBA,EAAWvvC,iBAAiB,SAAS,SAACrG,GACpC,GAAkD,aChBjD,WACL,OAAOo4B,EAAqB,GAA4BvvB,UAC1D,CDcUghC,CAA0B7pC,EAAE4B,OAAOoB,OAAvC,CAIA,IAAI+yC,EAAc,IAAInC,GAAU,MAAM7lC,MAAM/N,EAAE4B,OAAOoB,QEpBpD,WACL,OAAOo1B,EAAqB,GAAqBvvB,UACnD,EFoBU4sC,CAAmBM,EAAa,QAClCA,EGvBD,WACL,OAAO3d,EAAqB,GAAmBvvB,UACjD,CHqBsB0gC,CAAiBwM,EAAa,MAAMC,kBAEpD,EAAKN,aAAeK,EACpBH,EAAW5yC,MAAQ,EAAK0yC,YAPxB,MAFEE,EAAW5yC,MAAQ,EAAK0yC,YAU5B,GACF,GAAC,sBAED,WAAY,IAAD,OACTzvC,KAAKgQ,IAAI5P,iBAAiB,SAAS,SAACrG,GAAC,OAAK,EAAKiW,IAAIjT,MAAQhD,EAAE4B,OAAOoB,MAAM/D,OAAS,EAAIe,EAAE4B,OAAOoB,MAAQhD,EAAE4B,OAAOoB,MAAMilC,UAAU,EAAG,EAAE,GACxI,I,mFAAC,EAjC4G,CAElFhgB,KAAU,GAC9BrH,QAAU,CAAC,QAAS,M,yFIJtB,MAAMq1B,EACX5wC,YAAYqoB,GACVznB,KAAKynB,SAAWA,CAClB,CACIwoB,iBACF,OAAOjwC,KAAKynB,SAASI,MACvB,CACIqoB,iBACF,OAAOlwC,KAAKynB,SAASyoB,UACvB,CACIC,SACF,OAAOnwC,KAAKynB,SAAS0oB,EACvB,CACIC,sBACF,OAA2B,MAApBpwC,KAAKiwC,UACd,CACII,0BACF,OAA2B,MAApBrwC,KAAKiwC,UACd,CACIK,wBACF,OAAOtwC,KAAKynB,SAAS8F,QAAQ5wB,IAAI,mBACnC,CACI4zC,kBAEF,OADoBvwC,KAAKynB,SAAS8F,QAAQ5wB,IAAI,iBAAmB,IAC9C4H,QAAQ,OAAQ,GACrC,CACIgpB,cACF,OAAOvtB,KAAKynB,SAAS8F,OACvB,CACIlG,WACF,OAAIrnB,KAAKuwC,YAAYzqC,MAAM,2CAClB9F,KAAKonB,KAEPjtB,QAAQE,OAAO,IAAIa,MAAM,sCAAsC8E,KAAKuwC,wBAC7E,CACIhpB,WACF,OAAIvnB,KAAKuwC,YAAYzqC,MAAM,yBAClB9F,KAAKwwC,eAAiBxwC,KAAKwwC,aAAexwC,KAAKynB,SAASF,QAE1DptB,QAAQE,OAAO,IAAIa,MAAM,qCAAqC8E,KAAKuwC,wBAC5E,CACInpB,WACF,OAAOpnB,KAAK0nB,eAAiB1nB,KAAK0nB,aAAe1nB,KAAKynB,SAASL,OACjE,CACIqpB,oBACF,OAAOzwC,KAAKuwC,YAAYzqC,MAAM,iCAChC,CACAmZ,0BACE,IAAIjf,KAAKywC,cAOP,OAAOt2C,QAAQE,OAAO,IAAIa,MAAM,6CAA6C8E,KAAKuwC,yBAN9EzyC,OAAOk0B,YACHl0B,OAAOk0B,MAAM0e,0BAA0B1wC,KAAKonB,MAElDxpB,QAAQkc,KAAK,mGAKnB,ECzDK,MAAM62B,EACXlrC,gBAAgBmrC,GACd5wC,KAAK4wC,YAAcA,CACrB,CACAnrC,aACE,OAAOzF,KAAK4wC,WACd,CACAnrC,eACEzF,KAAK4wC,iBAAc70C,CACrB,ECTF,SAASmC,EAAeC,EAAKrF,GAAK,OAKlC,SAAyBqF,GAAO,GAAIC,MAAMC,QAAQF,GAAM,OAAOA,CAAK,CAL3BG,CAAgBH,IAIzD,SAA+BA,EAAKrF,GAAK,IAAIyF,EAAY,MAAPJ,EAAc,KAAyB,qBAAXtB,QAA0BsB,EAAItB,OAAO2B,WAAaL,EAAI,cAAe,GAAU,MAANI,EAAY,OAAQ,IAAkDE,EAAIC,EAAlDC,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAmB,IAAM,IAAKN,EAAKA,EAAGnF,KAAK+E,KAAQS,GAAMH,EAAKF,EAAGO,QAAQC,QAAoBJ,EAAKrF,KAAKmF,EAAG1B,QAAYjE,GAAK6F,EAAK3F,SAAWF,GAA3D8F,GAAK,GAA0M,CAAtI,MAAOjB,GAAOkB,GAAK,EAAMH,EAAKf,CAAK,CAAE,QAAU,IAAWiB,GAAsB,MAAhBL,EAAW,QAAWA,EAAW,QAAmC,CAA5B,QAAU,GAAIM,EAAI,MAAMH,CAAI,CAAE,CAAE,OAAOC,CAAM,CAJ/bK,CAAsBb,EAAKrF,IAE5F,SAAqC0D,EAAGyC,GAAU,IAAKzC,EAAG,OAAQ,GAAiB,kBAANA,EAAgB,OAAO0C,EAAkB1C,EAAGyC,GAAS,IAAI1B,EAAItE,OAAOC,UAAUiG,SAAS/F,KAAKoD,GAAGwB,MAAM,GAAI,GAAc,WAANT,GAAkBf,EAAE4C,cAAa7B,EAAIf,EAAE4C,YAAYvD,MAAM,GAAU,QAAN0B,GAAqB,QAANA,EAAa,OAAOa,MAAMiB,KAAK7C,GAAI,GAAU,cAANe,GAAqB,2CAA2C+B,KAAK/B,GAAI,OAAO2B,EAAkB1C,EAAGyC,EAAS,CAF7TM,CAA4BpB,EAAKrF,IACnI,WAA8B,MAAM,IAAI0G,UAAU,4IAA8I,CADvDC,EAAoB,CAG7J,SAASP,EAAkBf,EAAKuB,IAAkB,MAAPA,GAAeA,EAAMvB,EAAInF,UAAQ0G,EAAMvB,EAAInF,QAAQ,IAAK,IAAIF,EAAI,EAAG6G,EAAO,IAAIvB,MAAMsB,GAAM5G,EAAI4G,EAAK5G,IAAK6G,EAAK7G,GAAKqF,EAAIrF,GAAI,OAAO6G,CAAM,CAwB3K,SAASkxC,EAAYh1C,GAC1B,MAAMqI,EAAU1J,SAASyB,KAAKmpB,cAAc,cAAcvpB,OAC1D,OAAOqI,GAAWA,EAAQiC,OAC5B,CC3BO,MAAM,EACX/G,YAAYuJ,EAAQ0f,GAClB,IAAIpiB,EAAUrD,UAAU5J,OAAS,QAAsB+C,IAAjB6G,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnF5C,KAAK2I,OAASA,EACd3I,KAAKiG,QAAUA,EACfjG,KAAK8wC,YAAczoB,EAAIlpB,UACzB,CACA8f,gBACE,IACE,MAAM8xB,EAAqBJ,EAAmBh0C,MAC1Co0C,SACIA,EAAmB/wC,KAI7B,CAFE,MAAO/E,GACP2C,QAAQ3C,MAAMA,EAChB,CACA,MAAMwsB,EAAW,IAAIuoB,QAAoBlyC,OAAO8O,MAAM5M,KAAKqoB,IAAKroB,KAAKgxC,eACrE,OAAIvpB,EAAS2oB,iBAAmB3oB,EAAS6oB,kBAChCn2C,QAAQE,OAAOyD,OAAOwqB,SAASC,KAAOd,EAAS6oB,oBAEpD7oB,EAAS0oB,IAAM1oB,EAASgpB,qBACpBhpB,EAASwpB,oBAEVxpB,EACT,CACAypB,UAAU7zC,EAAKN,GACb,MAAMwwB,EAAUvtB,KAAKmxC,kBACrB5jB,EAAQlwB,GAAON,EACfiD,KAAKiG,QAAQsnB,QAAUA,CACzB,CACA6jB,eACE,IAAKpxC,KAAK8wC,YAAYO,WAAW,SAC/B,OAAO,EAET,IACE,OAAO,IAAIC,IAAItxC,KAAK8wC,aAAaS,WAAazzC,OAAOwqB,SAASipB,QAGhE,CAFE,MAAO/sC,GACP,OAAO,CACT,CACF,CACIwsC,mBACF,MAAO,CACLroC,OAAQ3I,KAAK2I,OAAOjE,cACpB6oB,QAASvtB,KAAKutB,QACd5Y,KAAM3U,KAAKwxC,cACXC,OAAQzxC,KAAKyxC,OACbnkB,YAAa,cACbokB,SAAU1xC,KAAK0xC,SAEnB,CACInkB,cACF,MAAMokB,EAAc,CAClB,mBAAoB,iBACpB,eAAgB3xC,KAAKuwC,YACrBqB,OAAQ5xC,KAAK0oB,QAKf,OAHI1oB,KAAKoxC,iBACPO,EAAY,gBAAkB3xC,KAAK+lB,WD3ClC,SAAiBvoB,GACtB,MAAM4lB,EAAS,CAAC,EAChB,IAAK,MAAM/lB,KAAOG,EAAQ,CACxB,MAAMT,EAAQS,EAAOH,QACPtB,IAAVgB,IACFqmB,EAAO/lB,GAAON,EAElB,CACA,OAAOqmB,CACT,CCoCWyuB,CAAQ54C,OAAO8H,OAAO4wC,EAAa3xC,KAAKmxC,mBACjD,CACIprB,gBACF,OD3DG,SAAmBlqB,GACxB,MAAMi2C,EAAUt3C,SAASu3C,OAASv3C,SAASu3C,OAAO/rC,MAAM,MAAQ,GAC1Dwc,EAAS,GAAGyH,mBAAmBpuB,MAC/Bk2C,EAASD,EAAQx7B,MAAKy7B,GAAUA,EAAOV,WAAW7uB,KACxD,GAAIuvB,EAAQ,CACV,MAAMh1C,EAAQg1C,EAAO/rC,MAAM,KAAKhI,MAAM,GAAGyF,KAAK,KAC9C,GAAI1G,EACF,OAAOi1C,mBAAmBj1C,EAE9B,CACF,CCiDWk1C,CAAUpB,EAAY,gBAAkBA,EAAY,aAC7D,CACIN,kBACF,OAAIvwC,KAAKiG,QAAQsqC,YACRvwC,KAAKiG,QAAQsqC,YACE,MAAbvwC,KAAK2U,MAAgB3U,KAAK2U,gBAAgB7W,OAAOguB,cAArD,EAEI9rB,KAAK2U,gBAAgB7W,OAAOo0C,KAC9BlyC,KAAK2U,KAAKlZ,KAEZ,kBACT,CACIitB,aACF,OAAQ1oB,KAAKmyC,cACX,IAAK,OACH,MAAO,mCACT,IAAK,eACH,MAAO,+DACT,IAAK,OACH,MAAO,6CACT,QACE,MAAO,MAEb,CACIx9B,WACF,OAAO3U,KAAKiG,QAAQ0O,IACtB,CACIy9B,YACF,MAAMC,GAAiBryC,KAAK8wC,YAAY9qC,MAAM,KAAK,IAAM,IAAIA,MAAM,KAAK,GAClEoB,EAAS,IAAIkrC,gBAAgBD,GACnC,IAAIE,EAAevyC,KAAKiG,QAAQmsC,MDhE7B,IAAmCI,ECiElCD,aAAwBz0C,OAAOguB,UDjEG0mB,ECkEKD,EAAzCA,EDjEG,IAAIC,GAAUlwC,QAAO,CAAC0G,EAASrF,KACpC,IAAIG,EAAQ5F,EAAeyF,EAAM,GAC/B9H,EAAOiI,EAAM,GACb/G,EAAQ+G,EAAM,GAChB,OAAOkF,EAAQvG,OAAwB,kBAAV1F,EAAqB,CAAC,CAAClB,EAAMkB,IAAU,GAAG,GACtE,KC8DCw1C,EADSA,aAAwBz0C,OAAOw0C,gBACzBC,EAAavpC,UAEb/P,OAAO+P,QAAQupC,GAAgB,CAAC,GD9D9C,SAAsBE,EAAczpC,GACzC,IAAK,MAAM/E,KAAS+E,EAAS,CAC3B,IAAIzB,EAAQrJ,EAAe+F,EAAO,GAClC,MAAMpI,EAAO0L,EAAM,GACbxK,EAAQwK,EAAM,GAChBxK,aAAiBe,OAAOo0C,OACxBO,EAAa/nC,IAAI7O,KAAUA,EAAKkK,SAAS,OAC3C0sC,EAAa9xC,OAAO9E,GACpB42C,EAAanvC,IAAIzH,EAAMkB,IAEvB01C,EAAa1mB,OAAOlwB,EAAMkB,GAE9B,CACF,CCmDI21C,CAAatrC,EAAQmrC,GACrB,MAAMH,EAAQhrC,EAAOjI,WACrB,OAAOizC,EAAMp5C,OAAS,EAAI,IAAIo5C,IAAU,EAC1C,CACI/pB,UACF,OAAOroB,KAAK8wC,YAAY9qC,MAAM,KAAK,GAAGA,MAAM,KAAK,GAAKhG,KAAKoyC,KAC7D,CACID,mBACF,OAAOnyC,KAAKiG,QAAQksC,cAAgB,MACtC,CACIV,aACF,OAAOzxC,KAAKiG,QAAQwrC,MACtB,CACIC,eACF,OAAO1xC,KAAKiG,QAAQyrC,UAAY,QAClC,CACIP,wBACF,OAAOnxC,KAAKiG,QAAQsnB,SAAW,CAAC,CAClC,CACIikB,oBACF,MAAMmB,EAA8D,oBAA9C15C,OAAOC,UAAUiG,SAAS/F,KAAK4G,KAAK2U,MAE1D,MAD2D,qBAAjC3U,KAAKutB,QAAQ,kBACbolB,EACjBzqC,KAAK6Z,UAAU/hB,KAAK2U,MAEtB3U,KAAK2U,IACd,E,6tCChIqC,mB,sRAAA,U,MAAA,6DAoBpC,O,EApBoC,G,EAAA,sBAOrC,WACE/W,QAAQkvB,KAAK,uCAAwC9sB,KAAKkE,QAC5D,GAAC,oBAED,SAAO/I,GACL,IAAMktB,EAAM,IAAIipB,IAAItxC,KAAKotB,UACnBhmB,EAAS,IAAIkrC,gBAAgBjqB,EAAIqW,QACvCt3B,EAAO2kB,OAAO,SAAU5wB,EAAMQ,OAAOi3C,gBAAgB,GAAG71C,OCd5DkiB,eAAmBoJ,EAAKpiB,GACN,IAAI,EAAa,MAAOoiB,EAAKpiB,GAC9B4sC,SACjB,CDaIl2C,CAAI0rB,EAAK,CACP+pB,MAAOhrC,EACP+qC,aAAc,gBAElB,M,8EAAC,EApBoC,CAEVnwB,KAAU,EAC9B3f,OAAS,CACdgmB,IAAK3G,O,omCELT,SAASxjB,EAAeC,EAAKrF,GAAK,OAKlC,SAAyBqF,GAAO,GAAIC,MAAMC,QAAQF,GAAM,OAAOA,CAAK,CAL3BG,CAAgBH,IAIzD,SAA+BA,EAAKrF,GAAK,IAAIyF,EAAY,MAAPJ,EAAc,KAAyB,qBAAXtB,QAA0BsB,EAAItB,OAAO2B,WAAaL,EAAI,cAAe,GAAU,MAANI,EAAY,OAAQ,IAAkDE,EAAIC,EAAlDC,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAmB,IAAM,IAAKN,EAAKA,EAAGnF,KAAK+E,KAAQS,GAAMH,EAAKF,EAAGO,QAAQC,QAAoBJ,EAAKrF,KAAKmF,EAAG1B,QAAYjE,GAAK6F,EAAK3F,SAAWF,GAA3D8F,GAAK,GAA0M,CAAtI,MAAOjB,GAAOkB,GAAK,EAAMH,EAAKf,CAAK,CAAE,QAAU,IAAWiB,GAAsB,MAAhBL,EAAW,QAAWA,EAAW,QAAmC,CAA5B,QAAU,GAAIM,EAAI,MAAMH,CAAI,CAAE,CAAE,OAAOC,CAAM,CAJ/bK,CAAsBb,EAAKrF,IAE5F,SAAqC0D,EAAGyC,GAAU,IAAKzC,EAAG,OAAQ,GAAiB,kBAANA,EAAgB,OAAO0C,EAAkB1C,EAAGyC,GAAS,IAAI1B,EAAItE,OAAOC,UAAUiG,SAAS/F,KAAKoD,GAAGwB,MAAM,GAAI,GAAc,WAANT,GAAkBf,EAAE4C,cAAa7B,EAAIf,EAAE4C,YAAYvD,MAAM,GAAU,QAAN0B,GAAqB,QAANA,EAAa,OAAOa,MAAMiB,KAAK7C,GAAI,GAAU,cAANe,GAAqB,2CAA2C+B,KAAK/B,GAAI,OAAO2B,EAAkB1C,EAAGyC,EAAS,CAF7TM,CAA4BpB,EAAKrF,IACnI,WAA8B,MAAM,IAAI0G,UAAU,4IAA8I,CADvDC,EAAoB,CAG7J,SAASP,EAAkBf,EAAKuB,IAAkB,MAAPA,GAAeA,EAAMvB,EAAInF,UAAQ0G,EAAMvB,EAAInF,QAAQ,IAAK,IAAIF,EAAI,EAAG6G,EAAO,IAAIvB,MAAMsB,GAAM5G,EAAI4G,EAAK5G,IAAK6G,EAAK7G,GAAKqF,EAAIrF,GAAI,OAAO6G,CAAM,C,8LAOlL,WACE,QAAuB5D,IAAnB+B,OAAO0a,cAAmDzc,IAA1B+B,OAAOg1C,gBAAgCh1C,OAAOg1C,eAAeC,0BAC/F,OAEF,MAAMC,EAAqBC,YACrBC,EACS,WACX,OAAO16B,QAAQC,UAAUu6B,EAAoB,GAAIhzC,KAAKZ,YACxD,EAEFtB,OAAOm1C,YAAcC,EACrBD,YAAY/5C,UAAY85C,EAAmB95C,UAC3C+5C,YAAY/5C,UAAUkG,YAAc6zC,YACpCh6C,OAAOyf,eAAeu6B,YAAaD,EACpC,CAdD,GAwCA,SAAW95C,GAoBT,SAASi6C,EAAMC,EAAkBx3C,EAASC,GACxC,MAAM,IAAIu3C,EAAiB,2DAA6Dx3C,EAAU,IAAKC,EACzG,CArBsC,mBAA3B3C,EAAUm6C,gBACrBn6C,EAAUm6C,cAAgB,SAAUC,GAC9BA,IAYN,SAA2BA,EAAW1rC,GACpC0rC,aAAqBL,aAAeE,EAAM3zC,UAAW,4CACnC,UAAlB8zC,EAAU73C,MAAoB03C,EAAM3zC,UAAW,gDAC/C8zC,EAAU1rC,MAAQA,GAAQurC,EAAMI,aAAc,0DAA2D,gBAC3G,CAfIC,CAAkBF,EAAWtzC,MAC7BszC,EAAU5nB,WAEV4nB,EAAY94C,SAASC,cAAc,UACzBgB,KAAO,SACjB63C,EAAUG,QAAS,EACnBzzC,KAAK9D,YAAYo3C,GACjBA,EAAU5nB,QACV1rB,KAAKipB,YAAYqqB,GAErB,EASD,CAvBD,CAuBGI,gBAAgBx6C,WACnB,MAAMy6C,EAAmB,IAAIhjC,QAM7B,SAASijC,EAAcz4C,GACrB,MAAMm4C,EANR,SAAsC33C,GACpC,MAAMuI,EAAUvI,aAAkB2N,QAAU3N,EAASA,aAAkBoQ,KAAOpQ,EAAOqb,cAAgB,KAC/F68B,EAAY3vC,EAAUA,EAAQoY,QAAQ,iBAAmB,KAC/D,MAAiF,WAA3D,OAAdu3B,QAAoC,IAAdA,OAAuB,EAASA,EAAUp4C,MAAoBo4C,EAAY,IAC1G,CAEoBC,CAA6B34C,EAAMQ,QACjD23C,GAAaA,EAAU1rC,MACzB+rC,EAAiBrwC,IAAIgwC,EAAU1rC,KAAM0rC,EAEzC,CAoBA,IAAIS,EA6WAC,EAyLAC,EASAC,EAg+BAC,EAOAC,GAziDJ,WACE,GAAI,cAAe3tB,MAAMvtB,UAAW,OACpC,IAAIA,EACJ,GAAI,gBAAiB4E,QAAU,iBAAiBwB,KAAKyuB,UAAUsmB,QAC7Dn7C,EAAY4E,OAAOw2C,YAAYp7C,cAC1B,IAAI,gBAAiB4E,OAC1B,OAEA5E,EAAY4E,OAAO2oB,MAAMvtB,SAC3B,CACAkH,iBAAiB,QAASwzC,GAAe,GACzC36C,OAAOwD,eAAevD,EAAW,YAAa,CAC5CyD,MACE,GAAiB,UAAbqD,KAAKvE,MAAoBuE,KAAKrE,kBAAkB+3C,gBAClD,OAAOC,EAAiBh3C,IAAIqD,KAAKrE,OAErC,GAEH,CAlBD,GAoBA,SAAWo4C,GACTA,EAAyB,MAAI,QAC7BA,EAAwB,KAAI,MAC7B,CAHD,CAGGA,IAAsBA,EAAoB,CAAC,IAC9C,MAAMQ,UAAqBtB,YACzB7zC,cACEo1C,QACAx0C,KAAKy0C,OAASt6C,QAAQC,UACtB4F,KAAK2J,SAAW,IAAI4qC,EAAaG,oBAAoB10C,KACvD,CACW20C,gCACT,MAAO,CAAC,WAAY,WAAY,UAAW,MAC7C,CACAC,oBACE50C,KAAK2J,SAASxJ,SAChB,CACA00C,uBACE70C,KAAK2J,SAAStJ,YAChB,CACAy0C,SACE,OAAO90C,KAAK2J,SAASorC,mBACvB,CACAC,yBAAyBn5C,GACX,WAARA,EACFmE,KAAK2J,SAASsrC,sBACG,YAARp5C,EACTmE,KAAK2J,SAASurC,kBACG,OAARr5C,EACTmE,KAAK2J,SAASwrC,mBAEdn1C,KAAK2J,SAASyrC,iBAElB,CACIt6C,UACF,OAAOkF,KAAK+H,aAAa,MAC3B,CACIjN,QAAIiC,GACFA,EACFiD,KAAKnF,aAAa,MAAOkC,GAEzBiD,KAAK0Z,gBAAgB,MAEzB,CACI27B,cACF,OAwCJ,SAAqC7pB,GACnC,GACO,SADCA,EAAMzmB,cAEV,OAAOgvC,EAAkBuB,KAEzB,OAAOvB,EAAkBwB,KAE/B,CA/CWC,CAA4Bx1C,KAAK+H,aAAa,YAAc,GACrE,CACIstC,YAAQt4C,GACNA,EACFiD,KAAKnF,aAAa,UAAWkC,GAE7BiD,KAAK0Z,gBAAgB,UAEzB,CACImQ,eACF,OAAO7pB,KAAKuM,aAAa,WAC3B,CACIsd,aAAS9sB,GACPA,EACFiD,KAAKnF,aAAa,WAAY,IAE9BmF,KAAK0Z,gBAAgB,WAEzB,CACI+7B,iBACF,OAAOz1C,KAAKuM,aAAa,aAC3B,CACIkpC,eAAW14C,GACTA,EACFiD,KAAKnF,aAAa,aAAc,IAEhCmF,KAAK0Z,gBAAgB,aAEzB,CACIsO,eACF,OAAQhoB,KAAK2J,SAAS+rC,SACxB,CACIC,eACF,OAAO31C,KAAK41C,gBAAkBp7C,WAAawF,KAAK61C,SAClD,CACIA,gBACF,IAAItiC,EAAIuiC,EACR,OAAoG,QAA5FA,EAAmC,QAA7BviC,EAAKvT,KAAK41C,qBAAkC,IAAPriC,OAAgB,EAASA,EAAGmJ,uBAAoC,IAAPo5B,OAAgB,EAASA,EAAGvpC,aAAa,qBACvJ,EAUF,SAASwpC,EAAUC,GACjB,OAAO,IAAI1E,IAAI0E,EAAU72C,WAAY3E,SAASy7C,QAChD,CACA,SAASC,EAAU7tB,GACjB,IAAI8tB,EACJ,OAAI9tB,EAAI+tB,KACC/tB,EAAI+tB,KAAKp4C,MAAM,IACbm4C,EAAc9tB,EAAIE,KAAKziB,MAAM,WAC/BqwC,EAAY,QADd,CAGT,CACA,SAASE,EAAUzuC,EAAM0rC,GAEvB,OAAOyC,GADuB,OAAdzC,QAAoC,IAAdA,OAAuB,EAASA,EAAUvrC,aAAa,gBAAkBH,EAAKG,aAAa,WAAaH,EAAKW,OAErJ,CACA,SAAS+tC,EAAajuB,GACpB,OAyBF,SAA8BA,GAC5B,OAJF,SAA2BA,GACzB,OAAOA,EAAIkuB,SAASvwC,MAAM,KAAKhI,MAAM,EACvC,CAESw4C,CAAkBnuB,GAAKrqB,OAAO,GAAG,EAC1C,CA3BUy4C,CAAqBpuB,GAAKviB,MAAM,aAAe,IAAI,IAAM,EACnE,CAIA,SAAS4wC,EAAaC,EAAStuB,GAC7B,MAAM7F,EAsBR,SAAmB6F,GACjB,OAEwBtrB,EAFAsrB,EAAIuuB,OAASvuB,EAAIkuB,SAGlCx5C,EAAM85C,SAAS,KAAO95C,EAAQA,EAAQ,IAD/C,IAA0BA,CAD1B,CAxBiB+5C,CAAUzuB,GACzB,OAAOsuB,EAAQpuB,OAASwtB,EAAUvzB,GAAQ+F,MAAQouB,EAAQpuB,KAAK8oB,WAAW7uB,EAC5E,CACA,SAASu0B,EAAoBzuB,EAAU0uB,GACrC,OAAON,EAAapuB,EAAU0uB,MAPrBV,EAO6ChuB,GAP3BxiB,MAAM,kCAQnC,CACA,SAASmxC,EAAc5uB,GACrB,MAAM6uB,EAAShB,EAAU7tB,GACzB,OAAiB,MAAV6uB,EAAiB7uB,EAAIE,KAAKvqB,MAAM,IAAKk5C,EAAOl+C,OAAS,IAAMqvB,EAAIE,IACxE,CACA,SAAS4uB,EAAW9uB,GAClB,OAAO4uB,EAAc5uB,EACvB,CAgBA,MAAM2nB,EACJ5wC,YAAYqoB,GACVznB,KAAKynB,SAAWA,CAClB,CACI2vB,gBACF,OAAOp3C,KAAKynB,SAAS0oB,EACvB,CACIkH,aACF,OAAQr3C,KAAKo3C,SACf,CACIE,kBACF,OAAOt3C,KAAKiwC,YAAc,KAAOjwC,KAAKiwC,YAAc,GACtD,CACIsH,kBACF,OAAOv3C,KAAKiwC,YAAc,KAAOjwC,KAAKiwC,YAAc,GACtD,CACIC,iBACF,OAAOlwC,KAAKynB,SAASyoB,UACvB,CACI5nB,eACF,OAAOytB,EAAU/1C,KAAKynB,SAASY,IACjC,CACImvB,aACF,OAAOx3C,KAAKuwC,aAAevwC,KAAKuwC,YAAYzqC,MAAM,yDACpD,CACImqC,iBACF,OAAOjwC,KAAKynB,SAASI,MACvB,CACI0oB,kBACF,OAAOvwC,KAAKy3C,OAAO,eACrB,CACI/vB,mBACF,OAAO1nB,KAAKynB,SAASiwB,QAAQtwB,MAC/B,CACIuwB,mBACF,OAAI33C,KAAKw3C,OACAx3C,KAAKynB,SAASiwB,QAAQtwB,OAEtBjtB,QAAQC,aAAQ2B,EAE3B,CACA07C,OAAO57C,GACL,OAAOmE,KAAKynB,SAAS8F,QAAQ5wB,IAAId,EACnC,EAEF,SAAS+7C,EAASrvC,GAChB,MAAiB,WAAVA,GAAiC,WAAVA,GAAiC,WAAVA,CACvD,CACA,SAASsvC,EAAsB3zC,GAC7B,GAA+C,SAA3CA,EAAQ6D,aAAa,mBACvB,OAAO7D,EACF,CACL,MAAM4zC,EAAuBt9C,SAASC,cAAc,UAC9C4qB,EAAW0yB,EAAe,aAOhC,OANI1yB,IACFyyB,EAAqB7yB,MAAQI,GAE/ByyB,EAAqB1nB,YAAclsB,EAAQksB,YAC3C0nB,EAAqB74B,OAAQ,EAKjC,SAA+B+4B,EAAoBC,GACjD,IAAK,MAAMt0C,KAAQs0C,EAAczwC,WAAY,CAC3C,MAAM3L,EAAO8H,EAAK9H,KACZkB,EAAQ4G,EAAK5G,MACnBi7C,EAAmBn9C,aAAagB,EAAMkB,EACxC,CACF,CAVIm7C,CAAsBJ,EAAsB5zC,GACrC4zC,CACT,CACF,CAaA,SAAS31B,EAASriB,GAChB,IAAIgE,EAAQlB,UAAU5J,OAAS,QAAsB+C,IAAjB6G,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/EjH,EAASmI,EAAMnI,OACfinB,EAAa9e,EAAM8e,WACnB7f,EAASe,EAAMf,OACjB,MAAM5H,EAAQ,IAAI0nB,YAAY/iB,EAAW,CACvC8iB,aACAF,SAAS,EACT3f,WAOF,OALIpH,GAAUA,EAAOsQ,YACnBtQ,EAAOmnB,cAAc3nB,GAErBX,SAASkiB,gBAAgBoG,cAAc3nB,GAElCA,CACT,CACA,SAASg9C,IACP,OAAO,IAAIh+C,SAAQC,GAAWg+C,uBAAsB,IAAMh+C,OAC5D,CAOA,SAASi+C,IACP,IAAIhxB,EAAOzkB,UAAU5J,OAAS,QAAsB+C,IAAjB6G,UAAU,GAAmBA,UAAU,GAAK,GAC/E,OAAO,IAAIsmB,WAAYC,gBAAgB9B,EAAM,YAC/C,CACA,SAASixB,EAASC,GAChB,IAAK,IAAIrhC,EAAOtU,UAAU5J,OAAQqJ,EAAS,IAAIjE,MAAM8Y,EAAO,EAAIA,EAAO,EAAI,GAAIshC,EAAO,EAAGA,EAAOthC,EAAMshC,IACpGn2C,EAAOm2C,EAAO,GAAK51C,UAAU41C,GAE/B,MAAMC,EAAQC,EAAYH,EAASl2C,GAAQkC,QAAQ,MAAO,IAAIyB,MAAM,MAC9DF,EAAQ2yC,EAAM,GAAG3yC,MAAM,QACvB6yC,EAAS7yC,EAAQA,EAAM,GAAG9M,OAAS,EACzC,OAAOy/C,EAAMj2C,KAAIo2C,GAAQA,EAAK56C,MAAM26C,KAASl1C,KAAK,KACpD,CACA,SAASi1C,EAAYH,EAASl2C,GAC5B,OAAOk2C,EAAQj2C,QAAO,CAAC8gB,EAAQvB,EAAQ/oB,IAE9BsqB,EAASvB,QADW9lB,GAAbsG,EAAOvJ,GAAkB,GAAKuJ,EAAOvJ,KAElD,GACL,CACA,SAAS+/C,IACP,OAAOz6C,MAAMiB,KAAK,CAChBrG,OAAQ,KACPwJ,KAAI,CAACgC,EAAG1L,IACA,GAALA,GAAe,IAALA,GAAgB,IAALA,GAAgB,IAALA,EAC3B,IACO,IAALA,EACF,IACO,IAALA,GACDgX,KAAK8X,MAAsB,EAAhB9X,KAAKgpC,UAAgB,GAAG35C,SAAS,IAE7C2Q,KAAK8X,MAAsB,GAAhB9X,KAAKgpC,UAAe35C,SAAS,MAEhDsE,KAAK,GACV,CACA,SAASsE,EAAaiD,GACpB,IAAK,IAAImP,EAAQvX,UAAU5J,OAAQ+Q,EAAW,IAAI3L,MAAM+b,EAAQ,EAAIA,EAAQ,EAAI,GAAI/C,EAAQ,EAAGA,EAAQ+C,EAAO/C,IAC5GrN,EAASqN,EAAQ,GAAKxU,UAAUwU,GAElC,IAAK,MAAMra,KAASgN,EAASvH,KAAI0B,GAAuB,OAAZA,QAAgC,IAAZA,OAAqB,EAASA,EAAQ6D,aAAaiD,KACjH,GAAoB,iBAATjO,EAAmB,OAAOA,EAEvC,OAAO,IACT,CAOA,SAASg8C,IACP,IAAK,IAAIr9B,EAAQ9Y,UAAU5J,OAAQ+Q,EAAW,IAAI3L,MAAMsd,GAAQhB,EAAQ,EAAGA,EAAQgB,EAAOhB,IACxF3Q,EAAS2Q,GAAS9X,UAAU8X,GAE9B,IAAK,MAAMxW,KAAW6F,EACK,eAArB7F,EAAQ80C,WACV90C,EAAQrJ,aAAa,OAAQ,IAE/BqJ,EAAQrJ,aAAa,YAAa,OAEtC,CACA,SAASo+C,IACP,IAAK,IAAIn9B,EAAQlZ,UAAU5J,OAAQ+Q,EAAW,IAAI3L,MAAM0d,GAAQF,EAAQ,EAAGA,EAAQE,EAAOF,IACxF7R,EAAS6R,GAAShZ,UAAUgZ,GAE9B,IAAK,MAAM1X,KAAW6F,EACK,eAArB7F,EAAQ80C,WACV90C,EAAQwV,gBAAgB,QAE1BxV,EAAQwV,gBAAgB,YAE5B,CACA,SAASw/B,EAAYh1C,GACnB,IAAIi1C,EAAwBv2C,UAAU5J,OAAS,QAAsB+C,IAAjB6G,UAAU,GAAmBA,UAAU,GAAK,IAChG,OAAO,IAAIzI,SAAQC,IACjB,MAAMg/C,EAAa,KACjBl1C,EAAQ5D,oBAAoB,QAAS84C,GACrCl1C,EAAQ5D,oBAAoB,OAAQ84C,GACpCh/C,GAAS,EAEX8J,EAAQ9D,iBAAiB,OAAQg5C,EAAY,CAC3CC,MAAM,IAERn1C,EAAQ9D,iBAAiB,QAASg5C,EAAY,CAC5CC,MAAM,IAERr9C,WAAW5B,EAAS++C,EAAsB,GAE9C,CACA,SAASG,EAA0B/wC,GACjC,OAAQA,GACN,IAAK,UACH,OAAOgxC,QAAQC,aACjB,IAAK,UACL,IAAK,UACH,OAAOD,QAAQE,UAErB,CAQA,SAASC,EAAe79C,GACtB,OAAOrB,SAAS4qB,cAAc,cAAcvpB,MAC9C,CACA,SAASk8C,EAAel8C,GACtB,MAAMqI,EAAUw1C,EAAe79C,GAC/B,OAAOqI,GAAWA,EAAQiC,OAC5B,EAYA,SAAW6tC,GACTA,EAAYA,EAAiB,IAAI,GAAK,MACtCA,EAAYA,EAAkB,KAAI,GAAK,OACvCA,EAAYA,EAAiB,IAAI,GAAK,MACtCA,EAAYA,EAAmB,MAAI,GAAK,QACxCA,EAAYA,EAAoB,OAAI,GAAK,QAC1C,CAND,CAMGA,IAAgBA,EAAc,CAAC,IAelC,MAAM2F,EACJv6C,YAAYuK,EAAUhB,EAAQ2f,GAC5B,IAAI3T,EAAO/R,UAAU5J,OAAS,QAAsB+C,IAAjB6G,UAAU,GAAmBA,UAAU,GAAK,IAAI0vC,gBAC/E32C,EAASiH,UAAU5J,OAAS,QAAsB+C,IAAjB6G,UAAU,GAAmBA,UAAU,GAAK,KACjF5C,KAAK45C,gBAAkB,IAAIC,gBAC3B75C,KAAK85C,sBAAwBC,MAC7B/5C,KAAK2J,SAAWA,EAChB3J,KAAK2I,OAASA,EACd3I,KAAKutB,QAAUvtB,KAAKg6C,eACpBh6C,KAAK2U,KAAOA,EACZ3U,KAAKqoB,IAAMC,EACXtoB,KAAKrE,OAASA,CAChB,CACI2sB,eACF,OAAOtoB,KAAKqoB,GACd,CACIjhB,aACF,OAAOpH,KAAKqoB,IAAIoqB,YAClB,CACIzpC,cACF,OAAOhJ,KAAK2U,KAAOvW,MAAMiB,KAAKW,KAAK2U,KAAK3L,WAAa,EACvD,CACAixC,SACEj6C,KAAK45C,gBAAgBM,OACvB,CACAj7B,gBACE,IAAI1L,EAAIuiC,EACR,MAAM9E,EAAehxC,KAAKgxC,aAC+B,QAAxD8E,GAAMviC,EAAKvT,KAAK2J,UAAUwwC,gCAA6C,IAAPrE,GAAyBA,EAAG18C,KAAKma,EAAIvT,KAAKutB,QAASvtB,YAC9GA,KAAKo6C,4BAA4BpJ,GACvC,IACEhxC,KAAK2J,SAAS0wC,eAAer6C,MAC7B,MAAMynB,QAAiB7a,MAAM5M,KAAKqoB,IAAIE,KAAMyoB,GAC5C,aAAahxC,KAAKs6C,QAAQ7yB,EAU5B,CATE,MAAOxsB,GACP,GAAmB,eAAfA,EAAMY,KAIR,MAHImE,KAAKu6C,0BAA0Bt/C,IACjC+E,KAAK2J,SAAS6wC,eAAex6C,KAAM/E,GAE/BA,CAEV,CAAE,QACA+E,KAAK2J,SAAS8wC,gBAAgBz6C,KAChC,CACF,CACAif,cAAcwI,GACZ,MAAMizB,EAAgB,IAAI1K,EAAcvoB,GAexC,OAdctF,EAAS,8BAA+B,CACpDS,YAAY,EACZ7f,OAAQ,CACN23C,iBAEF/+C,OAAQqE,KAAKrE,SAEL+qB,iBACR1mB,KAAK2J,SAASgxC,iCAAiC36C,KAAM06C,GAC5CA,EAActD,UACvBp3C,KAAK2J,SAASixC,6BAA6B56C,KAAM06C,GAEjD16C,KAAK2J,SAASkxC,0BAA0B76C,KAAM06C,GAEzCA,CACT,CACI1J,mBACF,IAAIz9B,EACJ,MAAO,CACL5K,OAAQqrC,EAAYh0C,KAAK2I,QAAQjE,cACjC4oB,YAAa,cACbC,QAASvtB,KAAKutB,QACdmkB,SAAU,SACV/8B,KAAM3U,KAAK86C,aAAe,KAAO96C,KAAK2U,KACtC88B,OAAQzxC,KAAK+6C,YACbC,SAA4C,QAAjCznC,EAAKvT,KAAK2J,SAASqxC,gBAA6B,IAAPznC,OAAgB,EAASA,EAAGgV,KAEpF,CACIyxB,qBACF,MAAO,CACLpI,OAAQ,mCAEZ,CACIkJ,mBACF,OAAO96C,KAAK2I,QAAUqrC,EAAYr3C,GACpC,CACIo+C,kBACF,OAAO/6C,KAAK45C,gBAAgBnI,MAC9B,CACAwJ,mBAAmBC,GACjBl7C,KAAKutB,QAAgB,OAAI,CAAC2tB,EAAUl7C,KAAKutB,QAAgB,QAAG9pB,KAAK,KACnE,CACAwb,kCAAkC+xB,GAChC,MAAMmK,EAAsB,IAAIhhD,SAAQC,GAAW4F,KAAK85C,sBAAwB1/C,IAClE+nB,EAAS,6BAA8B,CACnDS,YAAY,EACZ7f,OAAQ,CACNiuC,eACA3oB,IAAKroB,KAAKqoB,IACV+yB,OAAQp7C,KAAK85C,uBAEfn+C,OAAQqE,KAAKrE,SAEL+qB,wBAAwBy0B,CACpC,CACAZ,0BAA0Bt/C,GASxB,OARcknB,EAAS,4BAA6B,CAClDxmB,OAAQqE,KAAKrE,OACbinB,YAAY,EACZ7f,OAAQ,CACNjH,QAASkE,KACT/E,MAAOA,KAGGyrB,gBAChB,EAEF,MAAM20B,EACJj8C,YAAYuK,EAAUzF,GACpBlE,KAAK+B,SAAU,EACf/B,KAAKs7C,UAAYtyC,IACf,MAAMuyC,EAAYvyC,EAAQhL,OAAO,GAAG,IAClB,OAAdu9C,QAAoC,IAAdA,OAAuB,EAASA,EAAUC,iBAClEx7C,KAAK2J,SAAS8xC,0BAA0Bz7C,KAAKkE,QAC/C,EAEFlE,KAAK2J,SAAWA,EAChB3J,KAAKkE,QAAUA,EACflE,KAAK07C,qBAAuB,IAAIC,qBAAqB37C,KAAKs7C,UAC5D,CACAt5C,QACOhC,KAAK+B,UACR/B,KAAK+B,SAAU,EACf/B,KAAK07C,qBAAqBtxC,QAAQpK,KAAKkE,SAE3C,CACA9B,OACMpC,KAAK+B,UACP/B,KAAK+B,SAAU,EACf/B,KAAK07C,qBAAqBE,UAAU57C,KAAKkE,SAE7C,EAEF,MAAM23C,EACJz8C,YAAY08C,GACV97C,KAAK87C,SAWT,SAA8BA,GAC5B,IAAK,MAAM53C,KAAW43C,EAAStvC,iBAAiB,gBAAiB,CAC/D,MAAMuvC,EAAgBvhD,SAASwhD,WAAW93C,GAAS,GACnD,IAAK,MAAM+3C,KAAsBF,EAAcG,gBAAgB/1C,QAAQqG,iBAAiB,UACtFyvC,EAAmBE,YAAYtE,EAAsBoE,IAEvD/3C,EAAQi4C,YAAYJ,EACtB,CACA,OAAOD,CACT,CApBoBM,CAAqBN,EACvC,CACAr2C,YAAY7J,GACV,MAAsB,iBAAXA,EACF,IAAIoE,KAhUjB,SAAgCqnB,GAC9B,MAAMwhB,EAAWruC,SAASC,cAAc,YAExC,OADAouC,EAAS1d,UAAY9D,EACdwhB,EAAS1iC,OAClB,CA4TsBk2C,CAAuBzgD,IAEhCA,CAEX,EAEFigD,EAActL,YAAc,6BAY5B,SAAW0D,GACTA,EAAoBA,EAAiC,YAAI,GAAK,cAC9DA,EAAoBA,EAAgC,WAAI,GAAK,aAC7DA,EAAoBA,EAA6B,QAAI,GAAK,UAC1DA,EAAoBA,EAA+B,UAAI,GAAK,YAC5DA,EAAoBA,EAA8B,SAAI,GAAK,WAC3DA,EAAoBA,EAA6B,QAAI,GAAK,SAC3D,CAPD,CAOGA,IAAwBA,EAAsB,CAAC,IAElD,SAAWC,GACTA,EAAwB,WAAI,oCAC5BA,EAAuB,UAAI,sBAC3BA,EAAmB,MAAI,YACxB,CAJD,CAIGA,IAAgBA,EAAc,CAAC,IAWlC,MAAMoI,EACJl9C,YAAYuK,EAAU4yC,EAAajJ,GACjC,IAAIkJ,EAAe55C,UAAU5J,OAAS,QAAsB+C,IAAjB6G,UAAU,IAAmBA,UAAU,GAClF5C,KAAK0lC,MAAQuO,EAAoBwI,YACjCz8C,KAAK2J,SAAWA,EAChB3J,KAAKu8C,YAAcA,EACnBv8C,KAAKszC,UAAYA,EACjBtzC,KAAKwyC,SAsJT,SAAuB+J,EAAajJ,GAClC,MAAMd,EAAW,IAAI1mB,SAASywB,GACxB1gD,EAAqB,OAAdy3C,QAAoC,IAAdA,OAAuB,EAASA,EAAUvrC,aAAa,QACpFhL,EAAsB,OAAdu2C,QAAoC,IAAdA,OAAuB,EAASA,EAAUvrC,aAAa,SACvFlM,GACF22C,EAASzmB,OAAOlwB,EAAMkB,GAAS,IAEjC,OAAOy1C,CACT,CA9JoBkK,CAAcH,EAAajJ,GAC3CtzC,KAAKsoB,SAAWytB,EAAU/1C,KAAKuI,QAC3BvI,KAAK2I,QAAUqrC,EAAYr3C,KA0KnC,SAA8B0rB,EAAKrf,GACjC,MAAMypC,EAAe,IAAIH,gBACzB,IAAK,MAAMvpC,KAASC,EAAS,CAC3B,IAAIC,EAAQ/K,EAAe6K,EAAO,GAClC,MAAMlN,EAAOoN,EAAM,GACblM,EAAQkM,EAAM,GAChBlM,aAAiBm1C,MACrBO,EAAa1mB,OAAOlwB,EAAMkB,EAC5B,CACAsrB,EAAIqW,OAAS+T,EAAatzC,UAE5B,CApLMw9C,CAAqB38C,KAAKsoB,SAAU,IAAItoB,KAAK2U,KAAK3L,YAEpDhJ,KAAK48C,aAAe,IAAIjD,EAAa35C,KAAMA,KAAK2I,OAAQ3I,KAAKsoB,SAAUtoB,KAAK2U,KAAM3U,KAAKu8C,aACvFv8C,KAAKw8C,aAAeA,CACtB,CACA/2C,qBAAqB7J,EAASihD,EAAUC,GACtC,OAAO3iD,QAAQC,QAAQkwB,QAAQ1uB,GACjC,CACI+M,aACF,IAAI4K,EAEJ,OA/NJ,SAA+B5K,GAC7B,OAAQA,EAAO5D,eACb,IAAK,MACH,OAAOivC,EAAYr3C,IACrB,IAAK,OACH,OAAOq3C,EAAY+I,KACrB,IAAK,MACH,OAAO/I,EAAYgJ,IACrB,IAAK,QACH,OAAOhJ,EAAYiJ,MACrB,IAAK,SACH,OAAOjJ,EAAYrzC,OAEzB,CAkNWu8C,GADmC,QAAzB3pC,EAAKvT,KAAKszC,iBAA8B,IAAP//B,OAAgB,EAASA,EAAGxL,aAAa,gBAAkB/H,KAAKu8C,YAAYx0C,aAAa,WAAa,IACpHhD,gBAAkBivC,EAAYr3C,GACpE,CACI4L,aACF,IAAIgL,EACJ,MAAM4pC,EAAuD,kBAA5Bn9C,KAAKu8C,YAAYh0C,OAAsBvI,KAAKu8C,YAAYh0C,OAAS,KAClG,OAA8B,QAAzBgL,EAAKvT,KAAKszC,iBAA8B,IAAP//B,OAAgB,EAASA,EAAGhH,aAAa,eACtEvM,KAAKszC,UAAUvrC,aAAa,eAAiB,GAE7C/H,KAAKu8C,YAAYx0C,aAAa,WAAao1C,GAAqB,EAE3E,CACIxoC,WACF,OAAI3U,KAAK6rB,SAAWqoB,EAAYkJ,YAAcp9C,KAAK2I,QAAUqrC,EAAYr3C,IAChE,IAAI21C,gBAAgBtyC,KAAKq9C,gBAEzBr9C,KAAKwyC,QAEhB,CACI3mB,cACF,IAAItY,EACJ,OAnDJ,SAA+B+pC,GAC7B,OAAQA,EAASv4C,eACf,KAAKmvC,EAAYqJ,UACf,OAAOrJ,EAAYqJ,UACrB,KAAKrJ,EAAYsJ,MACf,OAAOtJ,EAAYsJ,MACrB,QACE,OAAOtJ,EAAYkJ,WAEzB,CA0CWK,EAAiD,QAAzBlqC,EAAKvT,KAAKszC,iBAA8B,IAAP//B,OAAgB,EAASA,EAAGxL,aAAa,iBAAmB/H,KAAKu8C,YAAY1wB,QAC/I,CACIivB,mBACF,OAAO96C,KAAK48C,aAAa9B,YAC3B,CACIuC,qBACF,MAAO,IAAIr9C,KAAKwyC,UAAUlwC,QAAO,CAAC0G,EAAS/E,KACzC,IAAIsD,EAAQrJ,EAAe+F,EAAO,GAChCpI,EAAO0L,EAAM,GACbxK,EAAQwK,EAAM,GAChB,OAAOyB,EAAQvG,OAAuB,iBAAT1F,EAAoB,CAAC,CAAClB,EAAMkB,IAAU,GAAG,GACrE,GACL,CACAkiB,cACE,MAAMy+B,EAAuBzJ,EAC3BwI,EAAciB,EAAqBjB,YACnCkB,EAAaD,EAAqBC,WAC9BC,EAAsB71C,EAAa,qBAAsB/H,KAAKszC,UAAWtzC,KAAKu8C,aACpF,GAAmC,kBAAxBqB,EAAkC,CAE3C,UADqBtB,EAAeuB,cAAcD,EAAqB59C,KAAKu8C,YAAav8C,KAAKszC,WAE5F,MAEJ,CACA,GAAItzC,KAAK0lC,OAAS+W,EAEhB,OADAz8C,KAAK0lC,MAAQiY,EACN39C,KAAK48C,aAAa/J,SAE7B,CACAzwC,OACE,MAAM07C,EAAwB7J,EAC5B8J,EAAWD,EAAsBC,SACjCC,EAAUF,EAAsBE,QAClC,GAAIh+C,KAAK0lC,OAASqY,GAAY/9C,KAAK0lC,OAASsY,EAG1C,OAFAh+C,KAAK0lC,MAAQqY,EACb/9C,KAAK48C,aAAa3C,UACX,CAEX,CACAE,yBAAyB5sB,EAASzxB,GAChC,IAAKA,EAAQg/C,aAAc,CACzB,MAAMp1C,EAoFZ,SAAwBu4C,GACtB,GAAkB,MAAdA,EAAoB,CACtB,MACMlM,GADUv3C,SAASu3C,OAASv3C,SAASu3C,OAAO/rC,MAAM,MAAQ,IACzCsQ,MAAKy7B,GAAUA,EAAOV,WAAW4M,KACxD,GAAIlM,EAAQ,CACV,MAAMh1C,EAAQg1C,EAAO/rC,MAAM,KAAKhI,MAAM,GAAGyF,KAAK,KAC9C,OAAO1G,EAAQi1C,mBAAmBj1C,QAAShB,CAC7C,CACF,CACF,CA7FoBmiD,CAAenG,EAAe,gBAAkBA,EAAe,cACzEryC,IACF6nB,EAAQ,gBAAkB7nB,EAE9B,CACI1F,KAAKm+C,kCAAkCriD,IACzCA,EAAQm/C,mBAAmBY,EAActL,YAE7C,CACA8J,eAAe+D,GACb,IAAI7qC,EACJvT,KAAK0lC,MAAQuO,EAAoBoK,QACP,QAAzB9qC,EAAKvT,KAAKszC,iBAA8B,IAAP//B,GAAyBA,EAAG1Y,aAAa,WAAY,IACvFsnB,EAAS,qBAAsB,CAC7BxmB,OAAQqE,KAAKu8C,YACbx5C,OAAQ,CACNu7C,eAAgBt+C,QAGpBA,KAAK2J,SAAS40C,sBAAsBv+C,KACtC,CACA26C,iCAAiC7+C,EAAS2rB,GACxCznB,KAAKojB,OAAS,CACZ0E,QAASL,EAAS2vB,UAClBsD,cAAejzB,EAEnB,CACAmzB,6BAA6B9+C,EAAS2rB,GACpC,GAAIA,EAAS6vB,aAAe7vB,EAAS8vB,YACnCv3C,KAAK2J,SAAS60C,iCAAiCx+C,KAAMynB,QAChD,GAAIznB,KAAKy+C,oBAAoB3iD,IAgExC,SAA0C2rB,GACxC,OAA8B,KAAvBA,EAASwoB,aAAsBxoB,EAASyoB,UACjD,CAlEoDwO,CAAiCj3B,GAAW,CAC1F,MAAMxsB,EAAQ,IAAIC,MAAM,oDACxB8E,KAAK2J,SAASg1C,sBAAsB3+C,KAAM/E,EAC5C,MACE+E,KAAK0lC,MAAQuO,EAAoB2K,UACjC5+C,KAAKojB,OAAS,CACZ0E,SAAS,EACT4yB,cAAejzB,GAEjBznB,KAAK2J,SAASk1C,oCAAoC7+C,KAAMynB,EAE5D,CACAozB,0BAA0B/+C,EAAS2rB,GACjCznB,KAAKojB,OAAS,CACZ0E,SAAS,EACT4yB,cAAejzB,GAEjBznB,KAAK2J,SAAS60C,iCAAiCx+C,KAAMynB,EACvD,CACA+yB,eAAe1+C,EAASb,GACtB+E,KAAKojB,OAAS,CACZ0E,SAAS,EACT7sB,SAEF+E,KAAK2J,SAASg1C,sBAAsB3+C,KAAM/E,EAC5C,CACAw/C,gBAAgB2D,GACd,IAAI7qC,EACJvT,KAAK0lC,MAAQuO,EAAoB+J,QACP,QAAzBzqC,EAAKvT,KAAKszC,iBAA8B,IAAP//B,GAAyBA,EAAGmG,gBAAgB,YAC9EyI,EAAS,mBAAoB,CAC3BxmB,OAAQqE,KAAKu8C,YACbx5C,OAAQ9J,OAAO8H,OAAO,CACpBu9C,eAAgBt+C,MACfA,KAAKojB,UAEVpjB,KAAK2J,SAASm1C,uBAAuB9+C,KACvC,CACAy+C,oBAAoB3iD,GAClB,OAAQA,EAAQg/C,cAAgB96C,KAAKw8C,YACvC,CACA2B,kCAAkCriD,GAChC,OAAQA,EAAQg/C,cA1bpB,SAAsB9vC,GACpB,IAAK,IAAIyP,EAAQ7X,UAAU5J,OAAQ+Q,EAAW,IAAI3L,MAAMqc,EAAQ,EAAIA,EAAQ,EAAI,GAAIJ,EAAQ,EAAGA,EAAQI,EAAOJ,IAC5GtQ,EAASsQ,EAAQ,GAAKzX,UAAUyX,GAElC,OAAOtQ,EAASoD,MAAKjJ,GAAWA,GAAWA,EAAQqI,aAAavB,IAClE,CAqboCuB,CAAa,oBAAqBvM,KAAKszC,UAAWtzC,KAAKu8C,YACzF,EAoCF,MAAMwC,EACJ3/C,YAAY8E,GACVlE,KAAKkE,QAAUA,CACjB,CACI86C,oBACF,OAAOh/C,KAAKkE,QAAQ0xC,cAAcoJ,aACpC,CACIC,eACF,MAAO,IAAIj/C,KAAKkE,QAAQ+6C,SAC1B,CACAC,UAAUhI,GACR,OAA2C,MAApCl3C,KAAKm/C,oBAAoBjI,EAClC,CACAiI,oBAAoBjI,GAClB,OAAOA,EAASl3C,KAAKkE,QAAQkhB,cAAc,QAAQ8xB,gBAAqBA,OAAc,IACxF,CACIjrC,kBACF,OAAOjM,KAAKkE,QAAQ+H,WACtB,CACImzC,gCAEF,IAAK,MAAMl7C,KAAWlE,KAAKkE,QAAQsI,iBAAiB,eAClD,GAA8C,MAA1CtI,EAAQoY,QAFgB,yEAEwB,OAAOpY,EAE7D,OAAO,IACT,CACIm7C,wBACF,OAAOC,EAA0Bt/C,KAAKkE,QACxC,CACAq7C,wBAAwB5yB,GACtB,OAAO4yB,EAAwBv/C,KAAKkE,QAASyoB,EAC/C,CACA6yB,kCAAkCC,GAChC,MAAMC,EAAsB,CAAC,EAC7B,IAAK,MAAMC,KAA2B3/C,KAAKq/C,kBAAmB,CAC5D,MAAM1yB,EAAKgzB,EAAwBhzB,GAC7BizB,EAAsBH,EAASF,wBAAwB5yB,GACzDizB,IACFF,EAAoB/yB,GAAM,CAACgzB,EAAyBC,GAExD,CACA,OAAOF,CACT,EAEF,SAASH,EAAwBl0C,EAAMshB,GACrC,OAAOthB,EAAK+Z,cAAc,IAAIuH,0BAChC,CACA,SAAS2yB,EAA0Bj0C,GACjC,OAAOA,EAAKmB,iBAAiB,6BAC/B,CACA,MAAMqzC,EACJzgD,YAAYuK,EAAU9J,GACpBG,KAAK+B,SAAU,EACf/B,KAAK8/C,eAAiB,KACpB9/C,KAAKH,YAAYS,oBAAoB,SAAUN,KAAK+/C,eAAe,GACnE//C,KAAKH,YAAYO,iBAAiB,SAAUJ,KAAK+/C,eAAe,EAAM,EAExE//C,KAAK+/C,cAAgB5kD,IACnB,IAAKA,EAAMurB,iBAAkB,CAC3B,MAAM9e,EAAOzM,EAAMQ,kBAAkB+3C,gBAAkBv4C,EAAMQ,YAASI,EAChEu3C,EAAYn4C,EAAMm4C,gBAAav3C,EACjC6L,GAuBZ,SAAwCA,EAAM0rC,GAE5C,MAAiB,YADa,OAAdA,QAAoC,IAAdA,OAAuB,EAASA,EAAUvrC,aAAa,gBAAkBH,EAAKG,aAAa,UAEnI,CA1BoBi4C,CAA+Bp4C,EAAM0rC,IA2BzD,SAAuC1rC,EAAM0rC,GAC3C,MAAM33C,GAAwB,OAAd23C,QAAoC,IAAdA,OAAuB,EAASA,EAAUvrC,aAAa,gBAAkBH,EAAKjM,OACpH,IAAK,MAAMuI,KAAW1J,SAASylD,kBAAkBtkD,GAC/C,GAAIuI,aAAmBg8C,kBAAmB,OAAO,EAEnD,OAAO,CACT,CAjCuEC,CAA8Bv4C,EAAM0rC,IAActzC,KAAK2J,SAASy2C,eAAex4C,EAAM0rC,KAClJn4C,EAAM4I,iBACN5I,EAAM2F,2BACNd,KAAK2J,SAAS02C,cAAcz4C,EAAM0rC,GAEtC,GAEFtzC,KAAK2J,SAAWA,EAChB3J,KAAKH,YAAcA,CACrB,CACAmC,QACOhC,KAAK+B,UACR/B,KAAKH,YAAYO,iBAAiB,SAAUJ,KAAK8/C,gBAAgB,GACjE9/C,KAAK+B,SAAU,EAEnB,CACAK,OACMpC,KAAK+B,UACP/B,KAAKH,YAAYS,oBAAoB,SAAUN,KAAK8/C,gBAAgB,GACpE9/C,KAAK+B,SAAU,EAEnB,EAaF,MAAMu+C,EACJlhD,YAAYuK,EAAUzF,GACpBlE,KAAKugD,qBAAuBxG,MAC5B/5C,KAAKwgD,2BAA6BzG,MAClC/5C,KAAK2J,SAAWA,EAChB3J,KAAKkE,QAAUA,CACjB,CACAu8C,eAAevJ,GACb,MAAMhzC,EAAUlE,KAAKy/C,SAASN,oBAAoBjI,GAC9ChzC,GACFlE,KAAK0gD,gBAAgBx8C,GACrBlE,KAAK2gD,aAAaz8C,IAElBlE,KAAK4gD,iBAAiB,CACpBC,EAAG,EACHC,EAAG,GAGT,CACAC,2BAA2Bz4B,GACzBtoB,KAAKygD,eAAevK,EAAU5tB,GAChC,CACAo4B,gBAAgBx8C,GACdA,EAAQwqB,gBACV,CACAiyB,aAAaz8C,GACPA,aAAmB+uC,cACjB/uC,EAAQqI,aAAa,YACvBrI,EAAQ88C,SAER98C,EAAQrJ,aAAa,WAAY,MACjCqJ,EAAQ88C,QACR98C,EAAQwV,gBAAgB,aAG9B,CACAknC,iBAAiBtzC,GACf,IAAIuzC,EAAIvzC,EAAMuzC,EACZC,EAAIxzC,EAAMwzC,EACZ9gD,KAAKihD,WAAWC,SAASL,EAAGC,EAC9B,CACAK,cACEnhD,KAAK4gD,iBAAiB,CACpBC,EAAG,EACHC,EAAG,GAEP,CACIG,iBACF,OAAOnjD,MACT,CACAmhB,aAAamiC,GACX,MAAMvL,EAAYuL,EAASvL,UACzBwL,EAAeD,EAASC,aACxB5B,EAAW2B,EAASE,YACtB,GAAID,EACF,IACErhD,KAAKuhD,cAAgB,IAAIpnD,SAAQC,GAAW4F,KAAKugD,qBAAuBnmD,IACxE4F,KAAKohD,SAAWA,QACVphD,KAAKwhD,wBAAwBJ,GACnC,MAAMK,EAAqB,IAAItnD,SAAQC,GAAW4F,KAAKwgD,2BAA6BpmD,IAC9E6L,EAAU,CACdm1C,OAAQp7C,KAAKwgD,2BACbkB,OAAQ1hD,KAAKohD,SAASO,eAEA3hD,KAAK2J,SAASi4C,sBAAsBnC,EAAUx5C,UAC1Cw7C,QACtBzhD,KAAK6hD,eAAeT,GAC1BphD,KAAK2J,SAASm4C,qBAAqBrC,EAAU5J,GAC7C71C,KAAK2J,SAASo4C,0BAA0B/hD,KAAKkE,SAC7ClE,KAAKgiD,wBAAwBZ,EAK/B,CAJE,eACOphD,KAAKohD,SACZphD,KAAKugD,0BAAqBxkD,UACnBiE,KAAKuhD,aACd,MAEAvhD,KAAKiiD,WAAWb,EAASc,aAE7B,CACAD,WAAWE,GACTniD,KAAK2J,SAASy4C,gBAAgBD,EAChC,CACAljC,8BAA8BmiC,GAC5BphD,KAAKqiD,cAAcjB,EAASvL,iBACtBuL,EAASkB,iBACjB,CACAD,cAAcxM,GACRA,EACF71C,KAAKkE,QAAQrJ,aAAa,qBAAsB,IAEhDmF,KAAKkE,QAAQwV,gBAAgB,qBAEjC,CACAuF,qBAAqBmiC,SACbA,EAASM,QACjB,CACAM,wBAAwBZ,GACtBA,EAASmB,iBACX,EAEF,MAAMC,UAAkBlC,EACtB2B,aACEjiD,KAAKkE,QAAQinB,UAAY,EAC3B,CACIs0B,eACF,OAAO,IAAIV,EAAS/+C,KAAKkE,QAC3B,EAEF,MAAMu+C,EACJrjD,YAAYuK,EAAUzF,GACpBlE,KAAK0iD,aAAevnD,IACd6E,KAAK2iD,sBAAsBxnD,EAAMQ,QACnCqE,KAAK4iD,WAAaznD,SAEX6E,KAAK4iD,UACd,EAEF5iD,KAAK6iD,YAAc1nD,IACb6E,KAAK4iD,YAAc5iD,KAAK2iD,sBAAsBxnD,EAAMQ,SAAWR,EAAMQ,kBAAkB2N,SACrFtJ,KAAK2J,SAASm5C,yBAAyB3nD,EAAMQ,OAAQR,EAAM4H,OAAOslB,IAAKltB,EAAM4H,OAAOggD,iBACtF/iD,KAAK4iD,WAAW7+C,iBAChB5I,EAAM4I,iBACN/D,KAAK2J,SAASq5C,qBAAqB7nD,EAAMQ,OAAQR,EAAM4H,OAAOslB,IAAKltB,EAAM4H,OAAOggD,uBAG7E/iD,KAAK4iD,UAAU,EAExB5iD,KAAKijD,UAAYC,WACRljD,KAAK4iD,UAAU,EAExB5iD,KAAK2J,SAAWA,EAChB3J,KAAKkE,QAAUA,CACjB,CACAlC,QACEhC,KAAKkE,QAAQ9D,iBAAiB,QAASJ,KAAK0iD,cAC5CloD,SAAS4F,iBAAiB,cAAeJ,KAAK6iD,aAC9CroD,SAAS4F,iBAAiB,qBAAsBJ,KAAKijD,UACvD,CACA7gD,OACEpC,KAAKkE,QAAQ5D,oBAAoB,QAASN,KAAK0iD,cAC/CloD,SAAS8F,oBAAoB,cAAeN,KAAK6iD,aACjDroD,SAAS8F,oBAAoB,qBAAsBN,KAAKijD,UAC1D,CACAN,sBAAsBhnD,GACpB,MAAMuI,EAAUvI,aAAkB2N,QAAU3N,EAASA,aAAkBoQ,KAAOpQ,EAAOqb,cAAgB,KACrG,OAAO9S,GAAWA,EAAQoY,QAAQ,sBAAwBtc,KAAKkE,OACjE,EAEF,MAAMi/C,EACJ/jD,YAAYuK,EAAU9J,GACpBG,KAAK+B,SAAU,EACf/B,KAAK4zC,cAAgB,KACnB5zC,KAAKH,YAAYS,oBAAoB,QAASN,KAAK0iD,cAAc,GACjE1iD,KAAKH,YAAYO,iBAAiB,QAASJ,KAAK0iD,cAAc,EAAM,EAEtE1iD,KAAK0iD,aAAevnD,IAClB,GAAIA,aAAiBioD,YAAcpjD,KAAKqjD,wBAAwBloD,GAAQ,CACtE,MAAMQ,EAASR,EAAMmoD,cAAgBnoD,EAAMmoD,eAAe,IAAMnoD,EAAMQ,OAChE4vB,EAAOvrB,KAAKujD,wBAAwB5nD,GAC1C,GAAI4vB,GAoCZ,SAA6B2rB,GAC3B,IAAK,MAAMhzC,KAAW1J,SAASylD,kBAAkB/I,EAAOv7C,QACtD,GAAIuI,aAAmBg8C,kBAAmB,OAAO,EAEnD,OAAO,CACT,CAzCoBsD,CAAoBj4B,GAAO,CACrC,MAAMjD,EAAWtoB,KAAKyjD,mBAAmBl4B,GACrCvrB,KAAK2J,SAAS+5C,yBAAyBn4B,EAAMjD,EAAUntB,KACzDA,EAAM4I,iBACN/D,KAAK2J,SAASg6C,uBAAuBp4B,EAAMjD,GAE/C,CACF,GAEFtoB,KAAK2J,SAAWA,EAChB3J,KAAKH,YAAcA,CACrB,CACAmC,QACOhC,KAAK+B,UACR/B,KAAKH,YAAYO,iBAAiB,QAASJ,KAAK4zC,eAAe,GAC/D5zC,KAAK+B,SAAU,EAEnB,CACAK,OACMpC,KAAK+B,UACP/B,KAAKH,YAAYS,oBAAoB,QAASN,KAAK4zC,eAAe,GAClE5zC,KAAK+B,SAAU,EAEnB,CACAshD,wBAAwBloD,GACtB,QAASA,EAAMQ,QAAUR,EAAMQ,OAAOioD,mBAAqBzoD,EAAMurB,kBAAoBvrB,EAAM0oD,MAAQ,GAAK1oD,EAAM4L,QAAU5L,EAAM2L,SAAW3L,EAAM0L,SAAW1L,EAAM6L,SAClK,CACAu8C,wBAAwB5nD,GACtB,GAAIA,aAAkB2N,QACpB,OAAO3N,EAAO2gB,QAAQ,2CAE1B,CACAmnC,mBAAmBl4B,GACjB,OAAOwqB,EAAUxqB,EAAKxjB,aAAa,SAAW,GAChD,EAQF,MAAM+7C,EACJ1kD,YAAYuK,EAAUzF,GACpBlE,KAAK2J,SAAWA,EAChB3J,KAAK+jD,gBAAkB,IAAIZ,EAAkBnjD,KAAMkE,EACrD,CACAlC,QACEhC,KAAK+jD,gBAAgB/hD,OACvB,CACAI,OACEpC,KAAK+jD,gBAAgB3hD,MACvB,CACAshD,yBAAyBn4B,EAAMjD,EAAUy6B,GACvC,OAAO/iD,KAAK2J,SAASq6C,6BAA6Bz4B,EAAMjD,EAAUy6B,IAAkBx3B,EAAKhf,aAAa,oBACxG,CACAo3C,uBAAuBp4B,EAAMjD,GAC3B,MAAM/f,EAAS+f,EAASC,KAClB3gB,EAAOpN,SAASC,cAAc,QACpCmN,EAAK/M,aAAa,aAAc,QAChC+M,EAAK/M,aAAa,SAAU0N,GAC5BX,EAAK/M,aAAa,SAAU,IAC5B,MAAM8N,EAAS4iB,EAAKxjB,aAAa,qBAC7BY,GAAQf,EAAK/M,aAAa,SAAU8N,GACxC,MAAMs7C,EAAa14B,EAAKxjB,aAAa,oBACjCk8C,GAAYr8C,EAAK/M,aAAa,mBAAoBopD,GACtD,MAAMC,EAAc34B,EAAKxjB,aAAa,qBAClCm8C,GAAat8C,EAAK/M,aAAa,oBAAqBqpD,GACxD,MAAMC,EAAe54B,EAAKxjB,aAAa,sBACnCo8C,GAAcv8C,EAAK/M,aAAa,qBAAsBspD,GACtC54B,EAAKhf,aAAa,sBACrB3E,EAAK/M,aAAa,oBAAqB,IACxDmF,KAAK2J,SAASy6C,4BAA4B74B,EAAMjD,EAAU1gB,GAC1DpN,SAASma,KAAKzY,YAAY0L,GAC1BA,EAAKxH,iBAAiB,oBAAoB,IAAMwH,EAAKmlB,UAAU,CAC7DssB,MAAM,IAERjB,uBAAsB,IAAMxwC,EAAKyrC,iBACnC,EAEF,MAAMgR,EACJjlD,YAAYuK,EAAU+1C,GACpB1/C,KAAK2J,SAAWA,EAChB3J,KAAK0/C,oBAAsBA,CAC7B,CACAj6C,mCAAmCkE,EAAU+1C,EAAqBn1C,GAChE,MAAM+5C,EAAQ,IAAItkD,KAAK2J,EAAU+1C,GACjC4E,EAAMxmC,QACNvT,IACA+5C,EAAMC,OACR,CACAzmC,QACE,IAAK,MAAM6O,KAAM3sB,KAAK0/C,oBAAqB,CACzC,MAAM8E,EAAwBtmD,EAAe8B,KAAK0/C,oBAAoB/yB,GAAK,GACzEgzB,EAA0B6E,EAAsB,GAChD5E,EAAsB4E,EAAsB,GAC9CxkD,KAAK2J,SAAS86C,cAAc9E,EAAyBC,GACrD5/C,KAAK0kD,0CAA0C9E,EACjD,CACF,CACA2E,QACE,IAAK,MAAM53B,KAAM3sB,KAAK0/C,oBAAqB,CACzC,MACEC,EAD6BzhD,EAAe8B,KAAK0/C,oBAAoB/yB,GAAK,GACzB,GACnD3sB,KAAK2kD,wCAAwChF,GAC7C3/C,KAAK4kD,uCAAuCjF,GAC5C3/C,KAAK2J,SAASk7C,aAAalF,EAC7B,CACF,CACA+E,0CAA0CI,GACxC,MAAMC,EAkBV,SAA8CD,GAC5C,MAAM5gD,EAAU1J,SAASC,cAAc,QAGvC,OAFAyJ,EAAQrJ,aAAa,OAAQ,+BAC7BqJ,EAAQrJ,aAAa,UAAWiqD,EAAiBn4B,IAC1CzoB,CACT,CAvBwB8gD,CAAqCF,GACzDA,EAAiB3I,YAAY4I,EAC/B,CACAJ,wCAAwCG,GACtC,MAAMpN,EAAQoN,EAAiBG,WAAU,GACzCH,EAAiB3I,YAAYzE,EAC/B,CACAkN,uCAAuCE,GACrC,MAAMC,EAAc/kD,KAAKklD,mBAAmBJ,EAAiBn4B,IAC7C,OAAhBo4B,QAAwC,IAAhBA,GAAkCA,EAAY5I,YAAY2I,EACpF,CACAI,mBAAmBv4B,GACjB,OAAO3sB,KAAKmlD,aAAa7uC,MAAKpS,GAAWA,EAAQiC,SAAWwmB,GAC9D,CACIw4B,mBACF,MAAO,IAAI3qD,SAASgS,iBAAiB,mDACvC,EAQF,MAAM44C,GACJhmD,YAAYimD,EAAiB/D,EAAaK,EAAe9L,GACvD,IAAIyP,IAAa1iD,UAAU5J,OAAS,QAAsB+C,IAAjB6G,UAAU,KAAmBA,UAAU,GAChF5C,KAAKg/C,cAAgB,KACrBh/C,KAAKqlD,gBAAkBA,EACvBrlD,KAAKshD,YAAcA,EACnBthD,KAAK61C,UAAYA,EACjB71C,KAAKslD,WAAaA,EAClBtlD,KAAK2hD,cAAgBA,EACrB3hD,KAAK9F,QAAU,IAAIC,SAAQ,CAACC,EAASC,IAAW2F,KAAKulD,mBAAqB,CACxEnrD,UACAC,WAEJ,CACIgnD,mBACF,OAAO,CACT,CACIa,mBAEJ,CACAI,kBAEA,CACAC,kBACMviD,KAAKulD,qBACPvlD,KAAKulD,mBAAmBnrD,iBACjB4F,KAAKulD,mBAEhB,CACAC,4BAA4Bj7C,GAC1B85C,EAAMmB,4BAA4BxlD,KAAMA,KAAK0/C,oBAAqBn1C,EACpE,CACAk7C,iCACE,MAAMvhD,EAAUlE,KAAK0lD,kBAAkBtG,2BA8B3C,SAA4Bl7C,GAC1B,OAAOA,GAAmC,mBAAjBA,EAAQ88C,KACnC,EA/BQ2E,CAAmBzhD,IACrBA,EAAQ88C,OAEZ,CACAyD,cAAc9E,GACR3/C,KAAKg/C,eACLW,EAAwBp2C,SAASvJ,KAAKqlD,gBAAgBrG,iBACxDh/C,KAAKg/C,cAAgBh/C,KAAKqlD,gBAAgBrG,cAE9C,CACA6F,aAAalF,GACPA,EAAwBp2C,SAASvJ,KAAKg/C,gBAAkBh/C,KAAKg/C,yBAAyB/L,cACxFjzC,KAAKg/C,cAAcgC,QACnBhhD,KAAKg/C,cAAgB,KAEzB,CACI0G,wBACF,OAAO1lD,KAAKshD,YAAYr1C,YAAcjM,KAAKshD,YAActhD,KAAKqlD,eAChE,CACIO,qBACF,OAAO5lD,KAAKqlD,gBAAgBnhD,OAC9B,CACI2hD,iBACF,OAAO7lD,KAAKshD,YAAYp9C,OAC1B,CACIw7C,0BACF,OAAO1/C,KAAKqlD,gBAAgB7F,kCAAkCx/C,KAAKshD,YACrE,EAKF,MAAMwE,WAAsBV,GAC1BhmD,YAAYuK,EAAU07C,EAAiB/D,EAAaK,EAAe9L,GAEjErB,MAAM6Q,EAAiB/D,EAAaK,EAAe9L,IADlCjzC,UAAU5J,OAAS,QAAsB+C,IAAjB6G,UAAU,KAAmBA,UAAU,IAEhF5C,KAAK2J,SAAWA,CAClB,CACAlE,qBAAqBmgD,EAAgBC,GACnC,IAAItyC,EACJ,MAAMwyC,EAAmBvrD,SAASwrD,cAClCD,EAAiBE,mBAAmBL,GACpCG,EAAiBG,iBACjB,MAAMC,EAAeN,EACfO,EAAoD,QAArC7yC,EAAK4yC,EAAavQ,qBAAkC,IAAPriC,OAAgB,EAASA,EAAGyyC,cAC1FI,IACFA,EAAYH,mBAAmBE,GAC/BP,EAAe1pD,YAAYkqD,EAAYC,mBAE3C,CACIhF,mBACF,OAAO,CACT,CACApiC,qBACQk5B,IACNn4C,KAAKwlD,6BAA4B,KAC/BxlD,KAAKsmD,kBAAkB,IAEzBtmD,KAAKumD,4BACCpO,IACNn4C,KAAKylD,uCACCtN,IACNn4C,KAAKwmD,wBACP,CACAF,mBACEtmD,KAAK2J,SAAS88C,gBAAgBzmD,KAAK4lD,eAAgB5lD,KAAK6lD,YACxD7lD,KAAK2hD,cAAc3hD,KAAK4lD,eAAgB5lD,KAAK6lD,WAC/C,CACAU,sBACE,GAAIvmD,KAAK4lD,eAAenQ,YAAcz1C,KAAK6lD,WAAWpQ,WAAY,CAChE,MAAMvxC,EAAUlE,KAAK4lD,eAAec,kBAC9B93B,GAsBuB7xB,EAtBWiD,KAAK4lD,eAAe79C,aAAa,yBAsBrCsK,EAtB+D,MAuB1F,OAATtV,GAA2B,SAATA,GAA6B,UAATA,GAA8B,WAATA,EACtDA,EAEAsV,GAzBCsc,EA4BZ,SAA4B5xB,EAAOsV,GACjC,MAAa,QAATtV,GAA4B,UAATA,EACdA,EAEAsV,CAEX,CAlCuBs0C,CAAmB3mD,KAAK4lD,eAAe79C,aAAa,4BAA6B,QAClG,GAAI7D,EAKF,OAJAA,EAAQwqB,eAAe,CACrBE,QACAD,cAEK,CAEX,CAaJ,IAAmC5xB,EAAOsV,EAZtC,OAAO,CACT,CACAm0C,yBACE,IAAK,MAAMvK,KAAsBj8C,KAAK4mD,kBAAmB,CACvD,MAAMC,EAAyBhP,EAAsBoE,GACrDA,EAAmBE,YAAY0K,EACjC,CACF,CACID,wBACF,OAAO5mD,KAAK4lD,eAAep5C,iBAAiB,SAC9C,EAgBF,MAAMs6C,GACJ1nD,cACEY,KAAK+mD,QAAS,EACd/mD,KAAKjD,MAAQ,EACbiD,KAAKgnD,SAAU,EACfhnD,KAAKinD,QAAU,KACbjnD,KAAKknD,SAASlnD,KAAKjD,MAAQ+S,KAAKgpC,SAAW,IAAI,EAEjD94C,KAAKmnD,kBAAoBnnD,KAAKonD,0BAC9BpnD,KAAKqnD,gBAAkBrnD,KAAKsnD,wBAC5BtnD,KAAKunD,2BACLvnD,KAAKknD,SAAS,EAChB,CACWM,wBACT,OAAOlP,CAAQ;;;;;;;;;;kBAUDwO,GAAYW;oBACVX,GAAYW,kBAAoB,OAAOX,GAAYW,kBAAoB;;;KAIzF,CACAC,OACO1nD,KAAKgnD,UACRhnD,KAAKgnD,SAAU,EACfhnD,KAAK2nD,yBACL3nD,KAAK4nD,iBAET,CACAC,OACM7nD,KAAKgnD,UAAYhnD,KAAK+mD,SACxB/mD,KAAK+mD,QAAS,EACd/mD,KAAK8nD,qBAAoB,KACvB9nD,KAAK+nD,2BACL/nD,KAAKgoD,gBACLhoD,KAAKgnD,SAAU,EACfhnD,KAAK+mD,QAAS,CAAK,IAGzB,CACAG,SAASnqD,GACPiD,KAAKjD,MAAQA,EACbiD,KAAKqK,SACP,CACAk9C,2BACE/sD,SAASyB,KAAKgsD,aAAajoD,KAAKmnD,kBAAmB3sD,SAASyB,KAAKisD,WACnE,CACAP,yBACE3nD,KAAKqnD,gBAAgB77B,MAAM28B,MAAQ,IACnCnoD,KAAKqnD,gBAAgB77B,MAAM48B,QAAU,IACrC5tD,SAASkiB,gBAAgBurC,aAAajoD,KAAKqnD,gBAAiB7sD,SAASma,MACrE3U,KAAKqK,SACP,CACAy9C,oBAAoBv9C,GAClBvK,KAAKqnD,gBAAgB77B,MAAM48B,QAAU,IACrCpsD,WAAWuO,EAA0C,IAAhCu8C,GAAYW,kBACnC,CACAM,2BACM/nD,KAAKqnD,gBAAgBtgC,YACvBvsB,SAASkiB,gBAAgBuM,YAAYjpB,KAAKqnD,gBAE9C,CACAO,iBACO5nD,KAAKqoD,kBACRroD,KAAKqoD,gBAAkBvqD,OAAOwqD,YAAYtoD,KAAKinD,QAASH,GAAYW,mBAExE,CACAO,gBACElqD,OAAOyqD,cAAcvoD,KAAKqoD,wBACnBroD,KAAKqoD,eACd,CACAh+C,UACE+tC,uBAAsB,KACpBp4C,KAAKqnD,gBAAgB77B,MAAM28B,MAAW,GAAkB,GAAbnoD,KAAKjD,MAAb,GAA0B,GAEjE,CACAqqD,0BACE,MAAMljD,EAAU1J,SAASC,cAAc,SAMvC,OALAyJ,EAAQzI,KAAO,WACfyI,EAAQksB,YAAc02B,GAAYU,WAC9BxnD,KAAKqlB,WACPnhB,EAAQ+gB,MAAQjlB,KAAKqlB,UAEhBnhB,CACT,CACAojD,wBACE,MAAMpjD,EAAU1J,SAASC,cAAc,OAEvC,OADAyJ,EAAQskD,UAAY,qBACbtkD,CACT,CACImhB,eACF,OAAO0yB,EAAe,YACxB,EAEF+O,GAAYW,kBAAoB,IAChC,MAAMgB,WAAqB1J,EACzB3/C,cACEo1C,SAAS5xC,WACT5C,KAAK0oD,mBAAqB1oD,KAAKi/C,SAAS/3C,QAAOhD,IA0EnD,SAA2BA,GAEzB,MAAkB,YADFA,EAAQ80C,SAE1B,CA7E+D2P,CAAkBzkD,KAAU1B,KAAI0B,GAsF/F,SAA6BA,GACvBA,EAAQqI,aAAa,UACvBrI,EAAQrJ,aAAa,QAAS,IAEhC,OAAOqJ,CACT,CA3F0G0kD,CAAoB1kD,KAAU5B,QAAO,CAAC8gB,EAAQlf,KAClJ,MAAM2kD,EAAY3kD,EAAQ2kD,UACpBhhD,EAAUghD,KAAazlC,EAASA,EAAOylC,GAAa,CACxDptD,KAAMqtD,GAAY5kD,GAClB6kD,QAASC,GAAiB9kD,GAC1B6F,SAAU,IAEZ,OAAO9Q,OAAO8H,OAAO9H,OAAO8H,OAAO,CAAC,EAAGqiB,GAAS,CAC9C,CAACylC,GAAY5vD,OAAO8H,OAAO9H,OAAO8H,OAAO,CAAC,EAAG8G,GAAU,CACrDkC,SAAU,IAAIlC,EAAQkC,SAAU7F,MAElC,GACD,CAAC,EACN,CACI+kD,8BACF,OAAOhwD,OAAOuK,KAAKxD,KAAK0oD,oBAAoBxhD,QAAO2hD,GAAa7oD,KAAK0oD,mBAAmBG,GAAWE,UAAStlD,KAAK,GACnH,CACAylD,+BAA+BzJ,GAC7B,OAAOz/C,KAAKmpD,qCAAqC,SAAU1J,EAC7D,CACA2J,mCAAmC3J,GACjC,OAAOz/C,KAAKmpD,qCAAqC,aAAc1J,EACjE,CACA0J,qCAAqCE,EAAa5J,GAChD,OAAOxmD,OAAOuK,KAAKxD,KAAK0oD,oBAAoBxhD,QAAO2hD,KAAeA,KAAapJ,EAASiJ,sBAAqBlmD,KAAIqmD,GAAa7oD,KAAK0oD,mBAAmBG,KAAY3hD,QAAOqG,GAC5JA,EAAM9R,MACF4tD,IACd7mD,KAAIgL,GACgBtP,EAAesP,EAAMzD,SAAU,GACzB,IAG/B,CACIu/C,0BACF,OAAOrwD,OAAOuK,KAAKxD,KAAK0oD,oBAAoBpmD,QAAO,CAAC8gB,EAAQylC,KAC1D,MAAMU,EAAwBvpD,KAAK0oD,mBAAmBG,GACpDptD,EAAO8tD,EAAsB9tD,KAC7BstD,EAAUQ,EAAsBR,QAChCh/C,EAAWw/C,EAAsBx/C,SACnC,OAAY,MAARtO,GAAiBstD,EAEVh/C,EAAS/Q,OAAS,EACpB,IAAIoqB,KAAWrZ,EAAS/L,MAAM,IAE9BolB,EAJA,IAAIA,KAAWrZ,EAKxB,GACC,GACL,CACAy/C,aAAa3tD,GACX,MAAMqI,EAAUlE,KAAKypD,sBAAsB5tD,GAC3C,OAAOqI,EAAUA,EAAQ6D,aAAa,WAAa,IACrD,CACA0hD,sBAAsB5tD,GACpB,OAAO5C,OAAOuK,KAAKxD,KAAK0oD,oBAAoBpmD,QAAO,CAAC8gB,EAAQylC,KAC1D,MACE3kD,EAD6BhG,EAAe8B,KAAK0oD,mBAAmBG,GAAW9+C,SAAU,GACxD,GACnC,OA0BN,SAAsC7F,EAASrI,GAE7C,MAAkB,QADFqI,EAAQ80C,WACI90C,EAAQ6D,aAAa,SAAWlM,CAC9D,CA7Ba6tD,CAA6BxlD,EAASrI,GAAQqI,EAAUkf,CAAM,QACpErnB,EACL,EAEF,SAAS+sD,GAAY5kD,GACnB,OASF,SAAyBA,GAEvB,MAAkB,UADFA,EAAQ80C,SAE1B,CAZM2Q,CAAgBzlD,GACX,SAgBX,SAA6BA,GAC3B,MAAMiB,EAAUjB,EAAQ80C,UACxB,MAAkB,SAAX7zC,GAAiC,QAAXA,GAAoD,cAA/BjB,EAAQ6D,aAAa,MACzE,CAlBa6hD,CAAoB1lD,GACtB,kBADF,CAGT,CACA,SAAS8kD,GAAiB9kD,GACxB,MAAmD,UAA5CA,EAAQ6D,aAAa,mBAC9B,CAuBA,MAAM8hD,WAAqB9K,EACzB3/C,YAAY8E,EAAS4lD,GACnBtV,MAAMtwC,GACNlE,KAAK8pD,aAAeA,CACtB,CACArkD,wBACE,IAAI4hB,EAAOzkB,UAAU5J,OAAS,QAAsB+C,IAAjB6G,UAAU,GAAmBA,UAAU,GAAK,GAC/E,OAAO5C,KAAK+pD,aAAa1R,EAAkBhxB,GAC7C,CACA5hB,mBAAmBvB,GACjB,OAAOlE,KAAK+pD,aAAa7lD,EAAQ0xC,cACnC,CACAnwC,oBAAoBgI,GAClB,IAAIxR,EAAOwR,EAAOxR,KAElB,OAAO,IAAI+D,KADFyN,EAAOkH,KACM,IAAI8zC,GAAaxsD,GACzC,CACAy7C,QACE,MAAMsS,EAAgBhqD,KAAKkE,QAAQ+gD,WAAU,GACvCgF,EAAiBjqD,KAAKkE,QAAQsI,iBAAiB,UAC/C09C,EAAuBF,EAAcx9C,iBAAiB,UAC5D,IAAK,MAAM0D,KAAU+5C,EAAejhD,UAAW,CAC7C,IAAImH,EAASjS,EAAegS,EAAQ,GACpC,MAAMzO,EAAQ0O,EAAO,GACfojB,EAASpjB,EAAO,GAChBunC,EAAQwS,EAAqBzoD,GACnC,IAAK,MAAMqoB,KAAU4tB,EAAM9E,gBAAiB9oB,EAAOC,UAAW,EAC9D,IAAK,MAAMD,KAAUyJ,EAAOqf,gBAAiB8E,EAAMzxC,QAAQ6jB,EAAOroB,OAAOsoB,UAAW,CACtF,CACA,IAAK,MAAMogC,KAAuBH,EAAcx9C,iBAAiB,0BAC/D29C,EAAoBptD,MAAQ,GAE9B,OAAO,IAAI8sD,GAAaG,EAAehqD,KAAK8pD,aAC9C,CACIM,kBACF,OAAOpqD,KAAK8pD,aAAa5lD,OAC3B,CACI8yC,mBACF,IAAIzjC,EAEJ,OAAOwiC,EADyC,QAAlCxiC,EAAKvT,KAAKqqD,WAAW,eAA4B,IAAP92C,EAAgBA,EAAK,IAE/E,CACI+2C,wBACF,OAAOtqD,KAAKqqD,WAAW,gBACzB,CACIE,oBACF,MAAiC,cAA1BvqD,KAAKsqD,iBACd,CACIE,kBACF,MAAiC,YAA1BxqD,KAAKsqD,iBACd,CACIG,kBACF,MAA2C,UAApCzqD,KAAKqqD,WAAW,gBACzB,CACAA,WAAWxuD,GACT,OAAOmE,KAAK8pD,aAAaN,aAAa,SAAS3tD,IACjD,GAGF,SAAWs4C,GACTA,EAAyB,WAAI,aAC7BA,EAA2B,aAAI,eAC/BA,EAAyB,WAAI,aAC7BA,EAAuB,SAAI,UAC5B,CALD,CAKGA,IAAiBA,EAAe,CAAC,IAEpC,SAAWC,GACTA,EAAwB,YAAI,cAC5BA,EAAoB,QAAI,UACxBA,EAAqB,SAAI,WACzBA,EAAmB,OAAI,SACvBA,EAAsB,UAAI,WAC3B,CAND,CAMGA,IAAeA,EAAa,CAAC,IAChC,MAAMsW,GAAiB,CACrBniD,OAAQ,UACRoiD,gBAAgB,EAChBC,oBAAqB,OACrBtF,YAAY,EACZuF,eAAe,EACfC,qBAAqB,EACrBC,uBAAuB,GAEzB,IAAIC,GA4tBAC,IA3tBJ,SAAWD,GACTA,EAAiBA,EAAiC,eAAI,GAAK,iBAC3DA,EAAiBA,EAAiC,gBAAK,GAAK,iBAC5DA,EAAiBA,EAAsC,qBAAK,GAAK,qBAClE,CAJD,CAIGA,KAAqBA,GAAmB,CAAC,IAC5C,MAAME,GACJ9rD,YAAYuK,EAAU2e,EAAU6iC,GAC9B,IAAIllD,EAAUrD,UAAU5J,OAAS,QAAsB+C,IAAjB6G,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnF5C,KAAKsF,WAAauzC,IAClB74C,KAAKorD,cAAgB,CAAC,EACtBprD,KAAKqrD,kBAAmB,EACxBrrD,KAAK2qD,gBAAiB,EACtB3qD,KAAKsrD,UAAW,EAChBtrD,KAAK8qD,qBAAsB,EAC3B9qD,KAAK+qD,uBAAwB,EAC7B/qD,KAAKurD,gBAAiB,EACtBvrD,KAAK0lC,MAAQ0O,EAAWqI,YACxBz8C,KAAK2J,SAAWA,EAChB3J,KAAKsoB,SAAWA,EAChBtoB,KAAKmrD,sBAAwBA,GAAyBtS,IACtD,MAAM2S,EAAiBvyD,OAAO8H,OAAO9H,OAAO8H,OAAO,CAAC,EAAG2pD,IAAiBzkD,GACtEsC,EAASijD,EAAejjD,OACxBoiD,EAAiBa,EAAeb,eAChC3P,EAAWwQ,EAAexQ,SAC1ByE,EAAW+L,EAAe/L,SAC1BgM,EAAeD,EAAeC,aAC9BhkC,EAAW+jC,EAAe/jC,SAC1BmjC,EAAsBY,EAAeZ,oBACrCtF,EAAakG,EAAelG,WAC5BuF,EAAgBW,EAAeX,cAC/BC,EAAsBU,EAAeV,oBACrCC,EAAwBS,EAAeT,sBACzC/qD,KAAKuI,OAASA,EACdvI,KAAK2qD,eAAiBA,EACtB3qD,KAAKg7C,SAAWA,EAChBh7C,KAAKy/C,SAAWA,EAChBz/C,KAAKyrD,aAAeA,EACpBzrD,KAAKynB,SAAWA,EAChBznB,KAAK0rD,WAAa1rD,KAAK2J,SAASgiD,6BAA6B3rD,KAAKsoB,SAAUtoB,KAAKuI,QACjFvI,KAAK4qD,oBAAsBA,EAC3B5qD,KAAKslD,WAAaA,EAClBtlD,KAAK6qD,cAAgBA,EACrB7qD,KAAKsrD,UAAYhG,EACjBtlD,KAAK8qD,oBAAsBA,EAC3B9qD,KAAK+qD,sBAAwBA,CAC/B,CACIa,cACF,OAAO5rD,KAAK2J,SAASiiD,OACvB,CACIC,WACF,OAAO7rD,KAAK2J,SAASkiD,IACvB,CACItS,cACF,OAAOv5C,KAAK2J,SAAS4vC,OACvB,CACIuS,sBACF,OAAO9rD,KAAKu5C,QAAQwS,gCAAgC/rD,KAAKmrD,sBAC3D,CACIa,aACF,OAAOhsD,KAAK0rD,UACd,CACA1pD,QACMhC,KAAK0lC,OAAS0O,EAAWqI,cAC3Bz8C,KAAKisD,mBAAmB9X,EAAa+X,YACrClsD,KAAK0lC,MAAQ0O,EAAWryC,QACxB/B,KAAK4rD,QAAQO,aAAansD,MAC1BA,KAAK2J,SAASwiD,aAAansD,MAE/B,CACAi6C,SACMj6C,KAAK0lC,OAAS0O,EAAWryC,UACvB/B,KAAKlE,SACPkE,KAAKlE,QAAQm+C,SAEfj6C,KAAKosD,eACLpsD,KAAK0lC,MAAQ0O,EAAWiY,SAE5B,CACArkC,WACMhoB,KAAK0lC,OAAS0O,EAAWryC,UAC3B/B,KAAKisD,mBAAmB9X,EAAamY,UACrCtsD,KAAK0lC,MAAQ0O,EAAWmY,UACxBvsD,KAAKwsD,iBACAxsD,KAAKqrD,mBACRrrD,KAAK4rD,QAAQa,eAAezsD,MAC5BA,KAAK2J,SAAS8iD,eAAezsD,OAGnC,CACA0sD,OACM1sD,KAAK0lC,OAAS0O,EAAWryC,UAC3B/B,KAAK0lC,MAAQ0O,EAAWiD,OACxBr3C,KAAK4rD,QAAQe,YAAY3sD,MAE7B,CACA4sD,gBACE,IAAIr5C,EACJ,IAAKvT,KAAK2qD,gBAAkB3qD,KAAK6qD,cAAe,CAC9C,MACMliD,EAAS2wC,EADUt5C,KAAKsoB,SAASC,QAAmC,QAAxBhV,EAAKvT,KAAKg7C,gBAA6B,IAAPznC,OAAgB,EAASA,EAAGgV,MAAQ,UAAYvoB,KAAKuI,QAEvIvI,KAAKu5C,QAAQzM,OAAOnkC,EAAQ3I,KAAKsoB,SAAUtoB,KAAKmrD,uBAChDnrD,KAAK2qD,gBAAiB,CACxB,CACF,CACAkC,eACM7sD,KAAK8sD,uBACP9sD,KAAK+sD,kBACI/sD,KAAKgtD,uBAAyBhtD,KAAKlE,UAC5CkE,KAAKlE,QAAU,IAAI69C,EAAa35C,KAAMg0C,EAAYr3C,IAAKqD,KAAKsoB,UAC5DtoB,KAAKlE,QAAQ+2C,UAEjB,CACAka,kBACM/sD,KAAKynB,WACPznB,KAAKitD,eACLjtD,KAAKktD,iBACLltD,KAAKmtD,gBAET,CACAF,eACEjtD,KAAKisD,mBAAmB9X,EAAaiZ,cACrCptD,KAAK4rD,QAAQyB,oBAAoBrtD,KACnC,CACAktD,iBACE,IAAIzlC,EAAW7kB,UAAU5J,OAAS,QAAsB+C,IAAjB6G,UAAU,GAAmBA,UAAU,GAAK5C,KAAKynB,SAExF,GADAznB,KAAKynB,SAAWA,EACZA,EAAU,CACZ,MAAMwoB,EAAaxoB,EAASwoB,WACxBqd,GAAard,GACfjwC,KAAK4rD,QAAQ2B,sBAAsBvtD,MAEnCA,KAAK4rD,QAAQ4B,iCAAiCxtD,KAAMiwC,EAExD,CACF,CACAkd,gBACEntD,KAAKisD,mBAAmB9X,EAAasZ,YACrCztD,KAAK4rD,QAAQ8B,qBAAqB1tD,KACpC,CACA2tD,eACE,GAAI3tD,KAAKynB,SAAU,CACjB,MAAMmmC,EAAiB5tD,KAAKynB,SAC1BwoB,EAAa2d,EAAe3d,WAC5B0H,EAAeiW,EAAejW,aAChC33C,KAAK0hD,QAAOziC,UACNjf,KAAK8qD,qBAAqB9qD,KAAK6tD,gBAC/B7tD,KAAK6rD,KAAKtK,qBAAqBvhD,KAAK6rD,KAAKtK,cACzC+L,GAAard,IAA+B,MAAhB0H,SACxB33C,KAAK6rD,KAAKiC,WAAWjE,GAAakE,eAAepW,IAAe,EAAO33C,KAAKslD,WAAYtlD,MAC9FA,KAAKguD,gBACLhuD,KAAK4rD,QAAQqC,cAAcjuD,MAC3BA,KAAKgoB,mBAEChoB,KAAK6rD,KAAKqC,YAAYrE,GAAakE,eAAepW,GAAe33C,MACvEA,KAAK4rD,QAAQqC,cAAcjuD,MAC3BA,KAAK0sD,OACP,GAEJ,CACF,CACAyB,oBACE,MAAM1O,EAAWz/C,KAAK6rD,KAAKuC,6BAA6BpuD,KAAKsoB,WAAatoB,KAAKquD,uBAC/E,GAAI5O,KAAcvJ,EAAUl2C,KAAKsoB,WAAam3B,EAASP,UAAUhJ,EAAUl2C,KAAKsoB,cAC3D,WAAftoB,KAAKuI,QAAuBk3C,EAAS8K,eACvC,OAAO9K,CAGb,CACA4O,uBACE,GAAIruD,KAAKyrD,aACP,OAAO5B,GAAakE,eAAe/tD,KAAKyrD,aAE5C,CACA6C,oBACE,OAAmC,MAA5BtuD,KAAKmuD,mBACd,CACAI,qBACE,MAAM9O,EAAWz/C,KAAKmuD,oBACtB,GAAI1O,EAAU,CACZ,MAAM5J,EAAY71C,KAAKgtD,qBACvBhtD,KAAK0hD,QAAOziC,UACVjf,KAAK6tD,gBACD7tD,KAAK0rD,WACP1rD,KAAK4rD,QAAQqC,cAAcjuD,OAEvBA,KAAK6rD,KAAKtK,qBAAqBvhD,KAAK6rD,KAAKtK,oBACvCvhD,KAAK6rD,KAAKiC,WAAWrO,EAAU5J,EAAW71C,KAAKslD,WAAYtlD,MACjEA,KAAKguD,gBACLhuD,KAAK4rD,QAAQqC,cAAcjuD,MACtB61C,GACH71C,KAAKgoB,WAET,GAEJ,CACF,CACAwkC,iBACE,IAAIj5C,EACAvT,KAAKwuD,uBAAyBxuD,KAAKqrD,mBAA8C,QAAxB93C,EAAKvT,KAAKynB,gBAA6B,IAAPlU,OAAgB,EAASA,EAAG28B,cACvHlwC,KAAK4rD,QAAQ6C,wBAAwBzuD,KAAKwuD,qBAAsB,CAC9DjmD,OAAQ,UACRkf,SAAUznB,KAAKynB,WAEjBznB,KAAKqrD,kBAAmB,EAE5B,CACAqD,qBACM1uD,KAAK0rD,YACP1rD,KAAK0hD,QAAOziC,UACVjf,KAAK6tD,gBACL7tD,KAAKguD,gBACLhuD,KAAK4sD,gBACL5sD,KAAK4rD,QAAQqC,cAAcjuD,KAAK,GAGtC,CACAm6C,yBAAyB5sB,EAASzxB,GAC5BkE,KAAK+qD,uBACPjvD,EAAQm/C,mBAAmBY,EAActL,YAE7C,CACA8J,iBACEr6C,KAAKitD,cACP,CACAtS,iCAAiCyD,EAAUuQ,GAAY,CACvD1vC,mCAAmCnjB,EAAS2rB,GAC1C,MAAMkwB,QAAqBlwB,EAASkwB,aAC9BzH,EAAazoB,EAASyoB,WAC1BD,EAAaxoB,EAASwoB,gBACJl0C,GAAhB47C,EACF33C,KAAKktD,eAAe,CAClBjd,WAAY+a,GAAiB4D,oBAC7B1e,gBAGFlwC,KAAKwuD,qBAAuB/mC,EAASyoB,WAAazoB,EAASa,cAAWvsB,EACtEiE,KAAKktD,eAAe,CAClBjd,WAAYA,EACZ0H,eACAzH,eAGN,CACAjxB,gCAAgCnjB,EAAS2rB,GACvC,MAAMkwB,QAAqBlwB,EAASkwB,aAC9BzH,EAAazoB,EAASyoB,WAC1BD,EAAaxoB,EAASwoB,gBACJl0C,GAAhB47C,EACF33C,KAAKktD,eAAe,CAClBjd,WAAY+a,GAAiB4D,oBAC7B1e,eAGFlwC,KAAKktD,eAAe,CAClBjd,WAAYA,EACZ0H,eACAzH,cAGN,CACAsK,eAAe4D,EAAUyQ,GACvB7uD,KAAKktD,eAAe,CAClBjd,WAAY+a,GAAiB8D,eAC7B5e,YAAY,GAEhB,CACAuK,kBACEz6C,KAAKmtD,eACP,CACAa,gBACOhuD,KAAKsrD,UAAatrD,KAAK6rD,KAAKkD,gBACZ,WAAf/uD,KAAKuI,OACPvI,KAAKgvD,4BAA8BhvD,KAAKygD,kBAAoBzgD,KAAK6rD,KAAK1K,cAEtEnhD,KAAKygD,kBAAoBzgD,KAAK6rD,KAAK1K,cAEjCnhD,KAAK0rD,YACP1rD,KAAK2J,SAASslD,gCAAgCjvD,KAAK6rD,KAAKqD,qBAAsBlvD,KAAKsoB,UAErFtoB,KAAKsrD,UAAW,EAEpB,CACA0D,2BACE,MAAMG,EAAiBnvD,KAAK8rD,gBAAgBqD,eAC5C,GAAIA,EAEF,OADAnvD,KAAK6rD,KAAKjL,iBAAiBuO,IACpB,CAEX,CACA1O,iBACE,MAAMvJ,EAAShB,EAAUl2C,KAAKsoB,UAC9B,GAAc,MAAV4uB,EAEF,OADAl3C,KAAK6rD,KAAKpL,eAAevJ,IAClB,CAEX,CACA+U,mBAAmBmD,GACjBpvD,KAAKorD,cAAcgE,IAAU,IAAIC,MAAOC,SAC1C,CACAC,mBACE,OAAOt2D,OAAO8H,OAAO,CAAC,EAAGf,KAAKorD,cAChC,CACA9R,0BAA0B/wC,GACxB,OAAQA,GACN,IAAK,UACH,OAAOgxC,QAAQC,aACjB,IAAK,UACL,IAAK,UACH,OAAOD,QAAQE,UAErB,CACAqT,uBACE,MAA+B,iBAAjB9sD,KAAKynB,QACrB,CACAulC,qBACE,OAAIhtD,KAAK0rD,aAEiB,WAAf1rD,KAAKuI,QACNvI,KAAKsuD,oBAENtuD,KAAKslD,WAEhB,CACAuI,gBACO7tD,KAAKurD,iBACRvrD,KAAK6rD,KAAKgC,cAAc7tD,KAAKy/C,UAAUjyB,MAAKiyB,GAAYA,GAAYz/C,KAAK4qD,oBAAoBnL,KAC7Fz/C,KAAKurD,gBAAiB,EAE1B,CACAtsC,aAAa1U,GACXvK,KAAKosD,qBACC,IAAIjyD,SAAQC,IAChB4F,KAAKwvD,MAAQpX,uBAAsB,IAAMh+C,KAAU,UAE/CmQ,WACCvK,KAAKwvD,KACd,CACApD,eACMpsD,KAAKwvD,QACPC,qBAAqBzvD,KAAKwvD,cACnBxvD,KAAKwvD,MAEhB,EAEF,SAASlC,GAAard,GACpB,OAAOA,GAAc,KAAOA,EAAa,GAC3C,CACA,MAAMyf,GACJtwD,YAAYuwD,GACV3vD,KAAK4vD,YAAc,IAAI9I,GACvB9mD,KAAK6vD,gBAAkB,KACrB7vD,KAAK4vD,YAAYlI,MAAM,EAEzB1nD,KAAK2vD,QAAUA,CACjB,CACAlB,wBAAwBnmC,EAAUriB,GAChCjG,KAAK+tB,UAAU+hC,WAAWxnC,GAAuB,OAAZriB,QAAgC,IAAZA,OAAqB,EAASA,EAAQklD,wBAA0BtS,IAAQ5yC,EACnI,CACAkmD,aAAal6B,GACXjyB,KAAKsoB,SAAW2J,EAAM3J,SACtB2J,EAAMs8B,qBACNt8B,EAAM46B,eACN56B,EAAMy8B,oBACR,CACArB,oBAAoBp7B,GAClBjyB,KAAK4vD,YAAY1I,SAAS,GACtBj1B,EAAMq8B,qBAAuC,WAAhBr8B,EAAM1pB,OACrCvI,KAAK+vD,iCAEL/vD,KAAK6vD,iBAET,CACAtC,sBAAsBt7B,GACpBA,EAAM07B,cACR,CACAH,iCAAiCv7B,EAAOge,GACtC,OAAQA,GACN,KAAK+a,GAAiB8D,eACtB,KAAK9D,GAAiBgF,eACtB,KAAKhF,GAAiB4D,oBACpB,OAAO5uD,KAAK80C,OAAO,CACjBqN,OAAQ,iBACR75C,QAAS,CACP2nC,gBAGN,QACE,OAAOhe,EAAM07B,eAEnB,CACAD,qBAAqBuC,GACnBjwD,KAAK4vD,YAAY1I,SAAS,GAC1BlnD,KAAKkwD,sBACP,CACAzD,eAAewD,GAAS,CACxBE,gBAAgBhO,GACdniD,KAAK80C,OAAOqN,EACd,CACAwK,YAAYsD,GAAS,CACrBhC,cAAcgC,GAAS,CACvB1R,sBAAsB6R,GACpBpwD,KAAK4vD,YAAY1I,SAAS,GAC1BlnD,KAAKqwD,+BACP,CACAvR,uBAAuBsR,GACrBpwD,KAAK4vD,YAAY1I,SAAS,GAC1BlnD,KAAKswD,qBACP,CACAP,iCACE/vD,KAAKuwD,wBAA0BzyD,OAAO9B,WAAWgE,KAAK6vD,gBAAiB7vD,KAAK2vD,QAAQa,iBACtF,CACAN,uBACElwD,KAAK4vD,YAAY/H,OACmB,MAAhC7nD,KAAKuwD,0BACPzyD,OAAOxC,aAAa0E,KAAKuwD,gCAClBvwD,KAAKuwD,wBAEhB,CACAF,gCACqC,MAA/BrwD,KAAKywD,yBACPzwD,KAAKywD,uBAAyB3yD,OAAO9B,WAAWgE,KAAK6vD,gBAAiB7vD,KAAK2vD,QAAQa,kBAEvF,CACAF,sBACEtwD,KAAK4vD,YAAY/H,OACkB,MAA/B7nD,KAAKywD,yBACP3yD,OAAOxC,aAAa0E,KAAKywD,+BAClBzwD,KAAKywD,uBAEhB,CACA3b,OAAOqN,GACL,IAAI5uC,EACJ4O,EAAS,eAAgB,CACvBpf,OAAQo/C,IAEVrkD,OAAOwqB,SAASC,MAAiC,QAAxBhV,EAAKvT,KAAKsoB,gBAA6B,IAAP/U,OAAgB,EAASA,EAAGpU,aAAerB,OAAOwqB,SAASC,IACtH,CACIwF,gBACF,OAAO/tB,KAAK2vD,QAAQ5hC,SACtB,EAEF,MAAM2iC,GACJtxD,cACEY,KAAK+B,SAAU,EACf/B,KAAK2wD,oBAAsBzN,IACzB,MAAM0N,EAAgB,IAAIp2D,SAASgS,iBAAiB,+BACpD,IAAK,MAAMtI,KAAW0sD,EACpB1sD,EAAQ6oB,QACV,CAEJ,CACA/qB,QACOhC,KAAK+B,UACR/B,KAAK+B,SAAU,EACf3B,iBAAiB,qBAAsBJ,KAAK2wD,qBAAqB,GAErE,CACAvuD,OACMpC,KAAK+B,UACP/B,KAAK+B,SAAU,EACfzB,oBAAoB,qBAAsBN,KAAK2wD,qBAAqB,GAExE,EAEF,MAAME,GACJzxD,YAAYuwD,EAASzrD,GACnBlE,KAAK2vD,QAAUA,EACf3vD,KAAKkE,QAAUA,EACflE,KAAK+jD,gBAAkB,IAAItB,EAAgBziD,KAAMkE,GACjDlE,KAAK8wD,mBAAqB,IAAIjR,EAAmB7/C,KAAMkE,EACzD,CACAlC,QACEhC,KAAK+jD,gBAAgB/hD,QACrBhC,KAAK8wD,mBAAmB9uD,OAC1B,CACAI,OACEpC,KAAK+jD,gBAAgB3hD,OACrBpC,KAAK8wD,mBAAmB1uD,MAC1B,CACA0gD,yBAAyB5+C,EAAS6sD,EAAW7N,GAC3C,OAAOljD,KAAKgxD,eAAe9sD,EAC7B,CACA8+C,qBAAqB9+C,EAASmkB,EAAKltB,GACjC,MAAMq0D,EAAQxvD,KAAKixD,iBAAiB/sD,GAChCsrD,GACFA,EAAM7lD,SAASq5C,qBAAqB9+C,EAASmkB,EAAKltB,EAEtD,CACAilD,eAAel8C,EAASovC,GACtB,OAAyC,MAAlCpvC,EAAQoY,QAAQ,gBAA0Btc,KAAKkxD,aAAahtD,EAASovC,IAActzC,KAAKgxD,eAAe9sD,EAASovC,EACzH,CACA+M,cAAcn8C,EAASovC,GACrB,MAAMkc,EAAQxvD,KAAKixD,iBAAiB/sD,EAASovC,GACzCkc,GACFA,EAAM7lD,SAAS02C,cAAcn8C,EAASovC,EAE1C,CACA4d,aAAatpD,EAAM0rC,GACjB,IAAI//B,EACJ,MAAMhL,EAAS8tC,EAAUzuC,EAAM0rC,GACzB5sC,EAAO1G,KAAKkE,QAAQ0xC,cAAcxwB,cAAc,2BAChD4xB,EAAejB,EAA8E,QAAnExiC,EAAc,OAAT7M,QAA0B,IAATA,OAAkB,EAASA,EAAKP,eAA4B,IAAPoN,EAAgBA,EAAK,KAChI,OAAOvT,KAAKgxD,eAAeppD,EAAM0rC,IAAcyD,EAAoBxuC,EAAQyuC,EAC7E,CACAga,eAAe9sD,EAASovC,GAEtB,GADsBpvC,aAAmBwvC,gBAAkB1zC,KAAK2vD,QAAQwB,wBAAwBjtD,EAASovC,GAAatzC,KAAK2vD,QAAQyB,qBAAqBltD,GACrI,CACjB,MAAMsrD,EAAQxvD,KAAKixD,iBAAiB/sD,EAASovC,GAC7C,QAAOkc,GAAQA,GAAStrD,EAAQoY,QAAQ,cAC1C,CACE,OAAO,CAEX,CACA20C,iBAAiB/sD,EAASovC,GACxB,MAAM3mB,GAAoB,OAAd2mB,QAAoC,IAAdA,OAAuB,EAASA,EAAUvrC,aAAa,sBAAwB7D,EAAQ6D,aAAa,oBACtI,GAAI4kB,GAAY,QAANA,EAAc,CACtB,MAAM6iC,EAAQxvD,KAAKkE,QAAQkhB,cAAc,IAAIuH,qBAC7C,GAAI6iC,aAAiBjb,EACnB,OAAOib,CAEX,CACF,EAEF,MAAM6B,GACJjyD,YAAYuK,GACV3J,KAAKmrD,sBAAwBtS,IAC7B74C,KAAK8rD,gBAAkB,CAAC,EACxB9rD,KAAK+B,SAAU,EACf/B,KAAKsxD,YAAa,EAClBtxD,KAAKuxD,WAAap2D,IAChB,GAAI6E,KAAKwxD,uBAAwB,CAC/B,MACEC,GADat2D,EAAMuqC,OAAS,CAAC,GACd+rB,MACjB,GAAIA,EAAO,CACTzxD,KAAKsoB,SAAW,IAAIgpB,IAAIxzC,OAAOwqB,SAASC,MACxC,MAAM4iC,EAAwBsG,EAAMtG,sBACpCnrD,KAAKmrD,sBAAwBA,EAC7BnrD,KAAK2J,SAAS+nD,iDAAiD1xD,KAAKsoB,SAAU6iC,EAChF,CACF,GAEFnrD,KAAK2xD,WAAa1yC,gBAn1Db9kB,QAAQC,UAq1DX4F,KAAKsxD,YAAa,CAAI,EAExBtxD,KAAK2J,SAAWA,CAClB,CACA3H,QACOhC,KAAK+B,UACR3B,iBAAiB,WAAYJ,KAAKuxD,YAAY,GAC9CnxD,iBAAiB,OAAQJ,KAAK2xD,YAAY,GAC1C3xD,KAAK+B,SAAU,EACf/B,KAAKuE,QAAQ,IAAI+sC,IAAIxzC,OAAOwqB,SAASC,OAEzC,CACAnmB,OACMpC,KAAK+B,UACPzB,oBAAoB,WAAYN,KAAKuxD,YAAY,GACjDjxD,oBAAoB,OAAQN,KAAK2xD,YAAY,GAC7C3xD,KAAK+B,SAAU,EAEnB,CACAzI,KAAKgvB,EAAU6iC,GACbnrD,KAAK8sC,OAAOyM,QAAQE,UAAWnxB,EAAU6iC,EAC3C,CACA5mD,QAAQ+jB,EAAU6iC,GAChBnrD,KAAK8sC,OAAOyM,QAAQC,aAAclxB,EAAU6iC,EAC9C,CACAre,OAAOnkC,EAAQ2f,GACb,IAAI6iC,EAAwBvoD,UAAU5J,OAAS,QAAsB+C,IAAjB6G,UAAU,GAAmBA,UAAU,GAAKi2C,IAChG,MAAMnT,EAAQ,CACZ+rB,MAAO,CACLtG,0BAGJxiD,EAAOvP,KAAKmgD,QAAS7T,EAAO,GAAIpd,EAASC,MACzCvoB,KAAKsoB,SAAWA,EAChBtoB,KAAKmrD,sBAAwBA,CAC/B,CACAY,gCAAgCZ,GAC9B,OAAOnrD,KAAK8rD,gBAAgBX,IAA0B,CAAC,CACzD,CACAyG,sBAAsBC,GACpB,MAAM1G,EAAwBnrD,KAAKmrD,sBAC7BW,EAAkB9rD,KAAK8rD,gBAAgBX,GAC7CnrD,KAAK8rD,gBAAgBX,GAAyBlyD,OAAO8H,OAAO9H,OAAO8H,OAAO,CAAC,EAAG+qD,GAAkB+F,EAClG,CACAC,mCACE,IAAIv+C,EACCvT,KAAK+xD,4BACR/xD,KAAK+xD,0BAAiE,QAApCx+C,EAAKgmC,QAAQyY,yBAAsC,IAAPz+C,EAAgBA,EAAK,OACnGgmC,QAAQyY,kBAAoB,SAEhC,CACAC,uCACMjyD,KAAK+xD,4BACPxY,QAAQyY,kBAAoBhyD,KAAK+xD,iCAC1B/xD,KAAK+xD,0BAEhB,CACAP,uBACE,OAAOxxD,KAAKkyD,cACd,CACAA,eACE,OAAOlyD,KAAKsxD,YAAqC,YAAvB92D,SAAS0kB,UACrC,EAEF,MAAMizC,GACJ/yD,YAAYuK,GACV3J,KAAK2J,SAAWA,CAClB,CACAyoD,aAAa9pC,GACX,IAAIriB,EAAUrD,UAAU5J,OAAS,QAAsB+C,IAAjB6G,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/E5C,KAAK2J,SAAS0oD,iCAAiC/pC,EAAUriB,EAAQsC,UAC/DwuC,EAAoBzuB,EAAUtoB,KAAK6rD,KAAKpM,SAASzI,cACnDh3C,KAAK2J,SAAS8kD,wBAAwBnmC,EAAUriB,GAEhDnI,OAAOwqB,SAASC,KAAOD,EAASnpB,WAGtC,CACA2wD,WAAW9Z,EAAWmV,GACpB,IAAIllD,EAAUrD,UAAU5J,OAAS,QAAsB+C,IAAjB6G,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnF5C,KAAKoC,OACLpC,KAAKsyD,aAAe,IAAIpH,GAAMlrD,KAAM+1C,EAAUC,GAAYmV,EAAuBlyD,OAAO8H,OAAO,CAC7Fi6C,SAAUh7C,KAAKsoB,UACdriB,IACHjG,KAAKsyD,aAAatwD,OACpB,CACAuwD,WAAW3qD,EAAM0rC,GACftzC,KAAKoC,OACLpC,KAAKs+C,eAAiB,IAAIhC,EAAet8C,KAAM4H,EAAM0rC,GAAW,GAChEtzC,KAAKs+C,eAAet8C,OACtB,CACAI,OACMpC,KAAKs+C,iBACPt+C,KAAKs+C,eAAel8C,cACbpC,KAAKs+C,gBAEVt+C,KAAKsyD,eACPtyD,KAAKsyD,aAAarY,gBACXj6C,KAAKsyD,aAEhB,CACI1G,cACF,OAAO5rD,KAAK2J,SAASiiD,OACvB,CACIC,WACF,OAAO7rD,KAAK2J,SAASkiD,IACvB,CACItS,cACF,OAAOv5C,KAAK2J,SAAS4vC,OACvB,CACAgF,sBAAsBD,GAC8B,oBAAvCt+C,KAAK4rD,QAAQrN,uBACtBv+C,KAAK4rD,QAAQrN,sBAAsBD,EAEvC,CACAr/B,0CAA0Cq/B,EAAgB5D,GACxD,GAAI4D,GAAkBt+C,KAAKs+C,eAAgB,CACzC,MAAM3G,QAAqB+C,EAAc/C,aACzC,GAAIA,EAAc,CAChB,MAAMmT,EAAsBxM,EAAe31C,QAAUqrC,EAAYr3C,IAC5DmuD,GACH9qD,KAAK6rD,KAAK2G,qBAEZ,MAAMviB,EAAayK,EAAczK,WAC/BC,EAAawK,EAAcxK,WAEvBuiB,EAAe,CACnBlqD,OAFavI,KAAK0yD,2BAA2BpU,GAG7CwM,sBACArjC,SAAU,CACRwoB,aACA0H,eACAzH,eAGJlwC,KAAKoyD,aAAa1X,EAAcpyB,SAAUmqC,EAC5C,CACF,CACF,CACAxzC,uCAAuCq/B,EAAgB5D,GACrD,MAAM/C,QAAqB+C,EAAc/C,aACzC,GAAIA,EAAc,CAChB,MAAM8H,EAAWoK,GAAakE,eAAepW,GACzC+C,EAAcnD,kBACVv3C,KAAK6rD,KAAKqC,YAAYzO,EAAUz/C,KAAKsyD,oBAErCtyD,KAAK6rD,KAAKiC,WAAWrO,GAAU,GAAO,EAAMz/C,KAAKsyD,cAEzDtyD,KAAK6rD,KAAK1K,cACVnhD,KAAK6rD,KAAK2G,oBACZ,CACF,CACA7T,sBAAsBL,EAAgBrjD,GACpC2C,QAAQ3C,MAAMA,EAChB,CACA6jD,uBAAuBR,GAC8B,oBAAxCt+C,KAAK4rD,QAAQ9M,wBACtB9+C,KAAK4rD,QAAQ9M,uBAAuBR,EAExC,CACA6N,aAAal6B,GACXjyB,KAAK2J,SAASwiD,aAAal6B,EAC7B,CACAw6B,eAAex6B,GACbjyB,KAAK2J,SAAS8iD,eAAex6B,EAC/B,CACA05B,6BAA6BrjC,EAAU/f,GACrC,MAAM2uC,EAAShB,EAAU5tB,GACnBqqC,EAAgBzc,EAAUl2C,KAAK6rD,KAAKqD,sBACpC0D,EAAgC,YAAXrqD,GAA0C,qBAAX2uC,EAC1D,MAAkB,YAAX3uC,GAAwB0uC,EAAc3uB,KAAc2uB,EAAcj3C,KAAK6rD,KAAKqD,wBAA0B0D,GAAgC,MAAV1b,GAAkBA,IAAWyb,EAClK,CACA1D,gCAAgC4D,EAAQC,GACtC9yD,KAAK2J,SAASslD,gCAAgC4D,EAAQC,EACxD,CACIxqC,eACF,OAAOtoB,KAAKu5C,QAAQjxB,QACtB,CACI6iC,4BACF,OAAOnrD,KAAKu5C,QAAQ4R,qBACtB,CACAuH,2BAA2BpU,GACzB,MAAM/B,EAAc+B,EAAe/B,YAE7Bh0C,EAASR,EAAa,oBADdu2C,EAAehL,UAC+BiJ,GAC5D,OAAO3E,EAASrvC,GAAUA,EAAS,SACrC,GAGF,SAAW0iD,GACTA,EAAUA,EAAmB,QAAI,GAAK,UACtCA,EAAUA,EAAmB,QAAI,GAAK,UACtCA,EAAUA,EAAuB,YAAI,GAAK,cAC1CA,EAAUA,EAAoB,SAAI,GAAK,UACxC,CALD,CAKGA,KAAcA,GAAY,CAAC,IAC9B,MAAM8H,GACJ3zD,YAAYuK,GACV3J,KAAKgzD,MAAQ/H,GAAUgI,QACvBjzD,KAAK+B,SAAU,EACf/B,KAAKkzD,oBAAsB,KACzB,MAAMh0C,EAAalf,KAAKkf,WACN,eAAdA,EACFlf,KAAKmzD,oBACkB,YAAdj0C,GACTlf,KAAKozD,gBACP,EAEFpzD,KAAKqzD,eAAiB,KACpBrzD,KAAK2J,SAAS0pD,gBAAgB,EAEhCrzD,KAAK2J,SAAWA,CAClB,CACA3H,QACOhC,KAAK+B,UACJ/B,KAAKgzD,OAAS/H,GAAUgI,UAC1BjzD,KAAKgzD,MAAQ/H,GAAU5V,SAEzB76C,SAAS4F,iBAAiB,mBAAoBJ,KAAKkzD,qBAAqB,GACxE9yD,iBAAiB,WAAYJ,KAAKqzD,gBAAgB,GAClDrzD,KAAK+B,SAAU,EAEnB,CACAK,OACMpC,KAAK+B,UACPvH,SAAS8F,oBAAoB,mBAAoBN,KAAKkzD,qBAAqB,GAC3E5yD,oBAAoB,WAAYN,KAAKqzD,gBAAgB,GACrDrzD,KAAK+B,SAAU,EAEnB,CACAoxD,oBACMnzD,KAAKgzD,OAAS/H,GAAU5V,UAC1Br1C,KAAKgzD,MAAQ/H,GAAUqI,YACvBtzD,KAAK2J,SAAS4pD,wBAElB,CACAH,iBACEpzD,KAAKmzD,oBACDnzD,KAAKgzD,OAAS/H,GAAUqI,cAC1BtzD,KAAKgzD,MAAQ/H,GAAUjjC,SACvBhoB,KAAK2J,SAAS2nD,aAElB,CACIpyC,iBACF,OAAO1kB,SAAS0kB,UAClB,EAEF,MAAMs0C,GACJp0D,YAAYuK,GACV3J,KAAK+B,SAAU,EACf/B,KAAKyzD,SAAW,KACdzzD,KAAK0zD,eAAe,CAClB7S,EAAG/iD,OAAO61D,YACV7S,EAAGhjD,OAAO81D,aACV,EAEJ5zD,KAAK2J,SAAWA,CAClB,CACA3H,QACOhC,KAAK+B,UACR3B,iBAAiB,SAAUJ,KAAKyzD,UAAU,GAC1CzzD,KAAKyzD,WACLzzD,KAAK+B,SAAU,EAEnB,CACAK,OACMpC,KAAK+B,UACPzB,oBAAoB,SAAUN,KAAKyzD,UAAU,GAC7CzzD,KAAK+B,SAAU,EAEnB,CACA2xD,eAAexoB,GACblrC,KAAK2J,SAASkqD,sBAAsB3oB,EACtC,EAEF,MAAM4oB,GACJpS,OAAOvuC,GACL,IAAI2oC,EAAW3oC,EAAO2oC,SACtBuI,EAAMmB,4BAA4BxlD,KAOtC,SAA2C87C,GACzC,MAAMiY,EAA8BzU,EAA0B9kD,SAASkiB,iBACjEgjC,EAAsB,CAAC,EAC7B,IAAK,MAAMsU,KAA8BD,EAA6B,CACpE,MAAMpnC,EAAKqnC,EAA2BrnC,GACtC,IAAK,MAAMovB,KAAiBD,EAAStvC,iBAAiB,gBAAiB,CACrE,MAAMynD,EAAkB1U,EAAwBxD,EAAcG,gBAAgB/1C,QAASwmB,GACnFsnC,IACFvU,EAAoB/yB,GAAM,CAACqnC,EAA4BC,GAE3D,CACF,CACA,OAAOvU,CACT,CApB4CwU,CAAkCpY,IAAW,IAAMthD,SAASkiB,gBAAgBxgB,YAAY4/C,IAClI,CACA2I,cAAc9E,EAAyBC,GACrCA,EAAoBzD,YAAYwD,EAAwBsF,WAAU,GACpE,CACAJ,eAAgB,EAgBlB,MAAMsP,GACJ/0D,YAAYuK,GACV3J,KAAKo0D,QAAU,IAAIl0D,IACnBF,KAAK+B,SAAU,EACf/B,KAAKq0D,qBAAuBl5D,IAC1B,MAAMssB,EAkDZ,SAAgCtsB,GAC9B,IAAIoY,EACJ,MAAMmnC,EAAwC,QAAvBnnC,EAAKpY,EAAM4H,cAA2B,IAAPwQ,OAAgB,EAASA,EAAGmnC,cAClF,GAAIA,aAAyB1K,EAC3B,OAAO0K,CAEX,CAxDuB4Z,CAAuBn5D,GACpCssB,GAwDV,SAA+BA,GAC7B,IAAIlU,EAEJ,OADoD,QAA/BA,EAAKkU,EAAS8oB,mBAAgC,IAAPh9B,EAAgBA,EAAK,IAC9D89B,WAAWwK,EAActL,YAC9C,CA5DsBgkB,CAAsB9sC,KACpCtsB,EAAM4I,iBACN/D,KAAKw0D,uBAAuB/sC,GAC9B,EAEFznB,KAAKy0D,oBAAsBt5D,IACrB6E,KAAK+B,SAAgC,iBAAd5G,EAAM1C,MAC/BuH,KAAK00D,mBAAmBv5D,EAAM1C,KAChC,EAEFuH,KAAK2J,SAAWA,CAClB,CACA3H,QACOhC,KAAK+B,UACR/B,KAAK+B,SAAU,EACf3B,iBAAiB,8BAA+BJ,KAAKq0D,sBAAsB,GAE/E,CACAjyD,OACMpC,KAAK+B,UACP/B,KAAK+B,SAAU,EACfzB,oBAAoB,8BAA+BN,KAAKq0D,sBAAsB,GAElF,CACAM,oBAAoBphC,GACbvzB,KAAK40D,wBAAwBrhC,KAChCvzB,KAAKo0D,QAAQ3zD,IAAI8yB,GACjBA,EAAOnzB,iBAAiB,UAAWJ,KAAKy0D,qBAAqB,GAEjE,CACAI,uBAAuBthC,GACjBvzB,KAAK40D,wBAAwBrhC,KAC/BvzB,KAAKo0D,QAAQzzD,OAAO4yB,GACpBA,EAAOjzB,oBAAoB,UAAWN,KAAKy0D,qBAAqB,GAEpE,CACAG,wBAAwBrhC,GACtB,OAAOvzB,KAAKo0D,QAAQ1pD,IAAI6oB,EAC1B,CACAtU,6BAA6BwI,GAC3B,MAAMJ,QAAaI,EAASkwB,aACxBtwB,GACFrnB,KAAK00D,mBAAmBrtC,EAE5B,CACAqtC,mBAAmBrtC,GACjBrnB,KAAK2J,SAASmrD,0BAA0BjZ,EAAckZ,KAAK1tC,GAC7D,EAcF,MAAM2tC,WAAsB5P,GAC1B3/C,qBAAqBmgD,EAAgBC,GACnC,MAAMoP,EAAYz6D,SAChBkiB,EAAkBu4C,EAAUv4C,gBAC5B/H,EAAOsgD,EAAUtgD,KACnB+H,EAAgBw4C,aAAarP,EAAYlxC,EAC3C,CACAsK,eACEjf,KAAKm1D,qBACLn1D,KAAKwmD,wBACP,CACA2O,qBACE,MAAMC,EAAa56D,SACjBkiB,EAAkB04C,EAAW14C,gBAC7BzgB,EAAOm5D,EAAWn5D,KACpBygB,EAAgBw4C,aAAal1D,KAAKq1D,QAASp5D,GAC3C+D,KAAK2hD,cAAc3hD,KAAK4lD,eAAgB5lD,KAAK6lD,WAC/C,CACAW,yBACE,IAAK,MAAM8O,KAAsBt1D,KAAKu1D,eAAgB,CACpD,MAAMxuC,EAAauuC,EAAmBvuC,WACtC,GAAIA,EAAY,CACd,MAAM7iB,EAAU2zC,EAAsByd,GACtCvuC,EAAWmuC,aAAahxD,EAASoxD,EACnC,CACF,CACF,CACID,cACF,OAAOr1D,KAAKshD,YAAYwI,aAAa5lD,OACvC,CACIqxD,qBACF,OAAO/6D,SAASkiB,gBAAgBlQ,iBAAiB,SACnD,EAEF,MAAMgpD,WAAqBpQ,GACzB3/C,qBAAqBmgD,EAAgBC,GAC/BrrD,SAASma,MAAQkxC,aAAsB4P,gBACzCj7D,SAASma,KAAKwnC,YAAY0J,GAE1BrrD,SAASkiB,gBAAgBxgB,YAAY2pD,EAEzC,CACIxE,mBACF,OAAOrhD,KAAKshD,YAAYmJ,aAAezqD,KAAK01D,2BAC9C,CACIxT,mBACF,OAAKliD,KAAKshD,YAAYmJ,YAKjBzqD,KAAK01D,iCAAV,EACS,CACLvT,OAAQ,4BANH,CACLA,OAAQ,gCAQd,CACAljC,8BACQjf,KAAK21D,WACb,CACA12C,eACMjf,KAAKslD,YACPtlD,KAAK41D,aAET,CACArT,kBACE/N,MAAM+N,kBACDviD,KAAK61C,WACR71C,KAAKylD,gCAET,CACIoQ,0BACF,OAAO71D,KAAKqlD,gBAAgByE,YAC9B,CACIgM,sBACF,OAAO91D,KAAKshD,YAAYwI,YAC1B,CACIjE,iBACF,OAAO7lD,KAAKshD,YAAYp9C,OAC1B,CACA+a,kBACE,MAAM82C,EAAwB/1D,KAAKg2D,gCACnCh2D,KAAKi2D,4BACLj2D,KAAKk2D,uCACLl2D,KAAKm2D,uCACCJ,CACR,CACAH,cACE51D,KAAKwlD,6BAA4B,KAC/BxlD,KAAKo2D,kBACLp2D,KAAKq2D,eAAe,GAExB,CACIX,kCACF,OAAO11D,KAAK61D,oBAAoB5M,yBAA2BjpD,KAAK81D,gBAAgB7M,uBAClF,CACAhqC,sCACE,MAAMq3C,EAAkB,GACxB,IAAK,MAAMpyD,KAAWlE,KAAKu2D,0BACzBD,EAAgBh9D,KAAK4/C,EAAYh1C,IACjC1J,SAASyB,KAAKC,YAAYgI,SAEtB/J,QAAQgC,IAAIm6D,EACpB,CACAL,4BACE,IAAK,MAAM/xD,KAAWlE,KAAKw2D,sBACzBh8D,SAASyB,KAAKC,YAAY27C,EAAsB3zC,GAEpD,CACAgyD,uCACE,IAAK,MAAMhyD,KAAWlE,KAAKy2D,+BACzBj8D,SAASyB,KAAKgtB,YAAY/kB,EAE9B,CACAiyD,iCACE,IAAK,MAAMjyD,KAAWlE,KAAK02D,2BACzBl8D,SAASyB,KAAKC,YAAYgI,EAE9B,CACAkyD,kBACE57D,SAASm8D,UAAU32D,KAAK6lD,YACxB7lD,KAAK42D,+BACP,CACAA,gCACE,IAAK,MAAM3a,KAAsBj8C,KAAK62D,sBAAuB,CAC3D,MAAMhQ,EAAyBhP,EAAsBoE,GACrDA,EAAmBE,YAAY0K,EACjC,CACF,CACAwP,gBACEr2D,KAAK2hD,cAAc3hD,KAAK4lD,eAAgB5lD,KAAK6lD,WAC/C,CACI0Q,gCACF,OAAOv2D,KAAK81D,gBAAgB1M,mCAAmCppD,KAAK61D,oBACtE,CACIW,4BACF,OAAOx2D,KAAK81D,gBAAgB5M,+BAA+BlpD,KAAK61D,oBAClE,CACIY,qCACF,OAAOz2D,KAAK61D,oBAAoBvM,mBAClC,CACIoN,iCACF,OAAO12D,KAAK81D,gBAAgBxM,mBAC9B,CACIuN,4BACF,OAAO72D,KAAK6lD,WAAWr5C,iBAAiB,SAC1C,EAEF,MAAMsqD,GACJ13D,YAAYgC,GACVpB,KAAKwD,KAAO,GACZxD,KAAK+2D,UAAY,CAAC,EAClB/2D,KAAKoB,KAAOA,CACd,CACAsJ,IAAI4d,GACF,OAAO6uB,EAAW7uB,KAAatoB,KAAK+2D,SACtC,CACAp6D,IAAI2rB,GACF,GAAItoB,KAAK0K,IAAI4d,GAAW,CACtB,MAAMm3B,EAAWz/C,KAAKujB,KAAK+E,GAE3B,OADAtoB,KAAKg3D,MAAM1uC,GACJm3B,CACT,CACF,CACAzC,IAAI10B,EAAUm3B,GAGZ,OAFAz/C,KAAKwjB,MAAM8E,EAAUm3B,GACrBz/C,KAAKg3D,MAAM1uC,GACJm3B,CACT,CACA7tC,QACE5R,KAAK+2D,UAAY,CAAC,CACpB,CACAxzC,KAAK+E,GACH,OAAOtoB,KAAK+2D,UAAU5f,EAAW7uB,GACnC,CACA9E,MAAM8E,EAAUm3B,GACdz/C,KAAK+2D,UAAU5f,EAAW7uB,IAAam3B,CACzC,CACAuX,MAAM1uC,GACJ,MAAMjrB,EAAM85C,EAAW7uB,GACjB7mB,EAAQzB,KAAKwD,KAAKglB,QAAQnrB,GAC5BoE,GAAS,GAAGzB,KAAKwD,KAAKyzD,OAAOx1D,EAAO,GACxCzB,KAAKwD,KAAK0zD,QAAQ75D,GAClB2C,KAAK6F,MACP,CACAA,OACE,IAAK,MAAMxI,KAAO2C,KAAKwD,KAAKyzD,OAAOj3D,KAAKoB,aAC/BpB,KAAK+2D,UAAU15D,EAE1B,EAEF,MAAM85D,WAAiB7W,EACrBlhD,cACEo1C,SAAS5xC,WACT5C,KAAKo3D,cAAgB,IAAIN,GAAc,IACvC92D,KAAKkvD,qBAAuB,IAAI5d,IAAIhpB,SAASC,MAC7CvoB,KAAK+uD,eAAgB,CACvB,CACAjB,WAAWrO,GACT,IAAI5J,EAAYjzC,UAAU5J,OAAS,QAAsB+C,IAAjB6G,UAAU,IAAmBA,UAAU,GAC3E0iD,IAAa1iD,UAAU5J,OAAS,QAAsB+C,IAAjB6G,UAAU,KAAmBA,UAAU,GAC5EqvB,EAAQrvB,UAAU5J,OAAS,EAAI4J,UAAU,QAAK7G,EAClD,MAAMqlD,EAAW,IAAIoU,GAAax1D,KAAKy/C,SAAUA,EAAU+V,GAAa7T,cAAe9L,EAAWyP,GAMlG,OALKlE,EAASC,aAGF,OAAVpvB,QAA4B,IAAVA,GAA4BA,EAAM26B,gBAFpD5sD,KAAK+uD,eAAgB,EAIhB/uD,KAAK0hD,OAAON,EACrB,CACA8M,YAAYzO,EAAUxtB,GACV,OAAVA,QAA4B,IAAVA,GAA4BA,EAAM26B,gBACpD,MAAMxL,EAAW,IAAI4T,GAAch1D,KAAKy/C,SAAUA,EAAUuV,GAAcrT,eAAe,GACzF,OAAO3hD,KAAK0hD,OAAON,EACrB,CACAoR,qBACExyD,KAAKo3D,cAAcxlD,OACrB,CACAqN,sBACE,IAAIwgC,EAAW78C,UAAU5J,OAAS,QAAsB+C,IAAjB6G,UAAU,GAAmBA,UAAU,GAAK5C,KAAKy/C,SACxF,GAAIA,EAAS+K,YAAa,CACxBxqD,KAAK2J,SAAS0tD,wBACd,MAAM/uC,EAAWtoB,KAAKkvD,2BAn6EnB,IAAI/0D,SAAQC,GAAW4B,YAAW,IAAM5B,KAAW,KAq6EtD,MAAMk9D,EAAiB7X,EAAS/H,QAEhC,OADA13C,KAAKo3D,cAAcpa,IAAI10B,EAAUgvC,GAC1BA,CACT,CACF,CACAlJ,6BAA6B9lC,GAC3B,OAAOtoB,KAAKo3D,cAAcz6D,IAAI2rB,EAChC,CACIm3B,eACF,OAAOoK,GAAa0N,YAAYv3D,KAAKkE,QACvC,EAEF,MAAMszD,GACJp4D,YAAYuK,GACV3J,KAAKsM,SAAW,wBAChBtM,KAAK2J,SAAWA,CAClB,CACIytD,oBACF,OAAOp3D,KAAK2J,SAASokB,UAAU89B,KAAKuL,aACtC,CACAp1D,QACE,GAA4B,YAAxBxH,SAAS0kB,WACX,OAAO1kB,SAAS4F,iBAAiB,oBAAoB,KACnDJ,KAAK+hD,0BAA0BvnD,SAASma,KAAK,IAG/C3U,KAAK+hD,0BAA0BvnD,SAASma,KAE5C,CACAotC,0BAA0B79C,GACxB,IAAK,MAAMqnB,KAAQrnB,EAAQsI,iBAAiBxM,KAAKsM,UAC/CtM,KAAKy3D,WAAWlsC,EAEpB,CACAtM,iBAAiBsM,GACf,MAAMjD,EAAW,IAAIgpB,IAAI/lB,EAAKhD,MAC9B,IAAIvoB,KAAKo3D,cAAc1sD,IAAI4d,GAG3B,IACE,MAAMb,QAAiB7a,MAAM0b,EAASnpB,WAAY,CAChDouB,QAAS,CACP,eAAgB,OAChBqkB,OAAQ,eAGNlqB,QAAqBD,EAASL,OAC9Bq4B,EAAWoK,GAAakE,eAAermC,GAC7C1nB,KAAKo3D,cAAcpa,IAAI10B,EAAUm3B,EACtB,CAAX,MAAOj7C,GAAI,CACf,EA8TF,SAASkzD,GAAkCrvC,GACzCpvB,OAAO8e,iBAAiBsQ,EAAKsvC,GAC/B,CACA,MAAMA,GAAwC,CAC5CC,YAAa,CACXj7D,MACE,OAAOqD,KAAKb,UACd,IAuBJ,MAAM04D,GAAgB,CACpBC,QACE93D,KAAK+3D,eAAe71D,SAAQnI,IAC1B,IAAIwZ,EACJ,OAAkC,QAA1BA,EAAKxZ,EAAEid,qBAAkC,IAAPzD,OAAgB,EAASA,EAAG00C,aAAajoD,KAAKg4D,gBAAiBj+D,EAAEk+D,YAAY,GAE3H,EACAlsC,SACE/rB,KAAKk4D,gCACLl4D,KAAK+3D,eAAe71D,SAAQnI,GAAKA,EAAEgyB,OAAO/rB,KAAKg4D,kBACjD,EACArxB,SACE3mC,KAAK+3D,eAAe71D,SAAQnI,IAC1B,IAAIwZ,EACJ,OAAkC,QAA1BA,EAAKxZ,EAAEid,qBAAkC,IAAPzD,OAAgB,EAASA,EAAG00C,aAAajoD,KAAKg4D,gBAAiBj+D,EAAE,GAE/G,EACAo+D,UACEn4D,KAAKk4D,gCACLl4D,KAAK+3D,eAAe71D,SAAQnI,GAAKA,EAAEo+D,QAAQn4D,KAAKg4D,kBAClD,EACAjrC,SACE/sB,KAAK+3D,eAAe71D,SAAQnI,GAAKA,EAAEgzB,UACrC,EACAxoB,UACEvE,KAAK+3D,eAAe71D,SAAQnI,GAAKA,EAAEoiD,YAAYn8C,KAAKg4D,kBACtD,EACAlrB,SACE9sC,KAAK+3D,eAAe71D,SAAQnI,GAAKA,EAAEq+D,gBAAgBp4D,KAAKg4D,kBAC1D,GAEIrI,GAAU,IAzXhB,MACEvwD,cACEY,KAAK+tB,UAAY,IAAIokC,GAAUnyD,MAC/BA,KAAKu5C,QAAU,IAAI8X,GAAQrxD,MAC3BA,KAAKq4D,UAAY,IAAIb,GAAUx3D,MAC/BA,KAAK6rD,KAAO,IAAIsL,GAASn3D,KAAMxF,SAASkiB,iBACxC1c,KAAK4rD,QAAU,IAAI8D,GAAe1vD,MAClCA,KAAKs4D,aAAe,IAAIvF,GAAa/yD,MACrCA,KAAKu4D,cAAgB,IAAI7H,GACzB1wD,KAAKw4D,kBAAoB,IAAIrV,EAAkBnjD,KAAMlC,QACrDkC,KAAK8wD,mBAAqB,IAAIjR,EAAmB7/C,KAAMxF,UACvDwF,KAAKy4D,eAAiB,IAAIjF,GAAexzD,MACzCA,KAAK04D,eAAiB,IAAIvE,GAAen0D,MACzCA,KAAK24D,sBAAwB,IAAI7U,EAAsB9jD,KAAMxF,SAASkiB,iBACtE1c,KAAK44D,gBAAkB,IAAI/H,GAAgB7wD,KAAMxF,SAASkiB,iBAC1D1c,KAAK64D,sBAAwB,IAAI/E,GACjC9zD,KAAK84D,OAAQ,EACb94D,KAAK+4D,SAAU,EACf/4D,KAAKwwD,iBAAmB,IACxBxwD,KAAK+B,SAAU,EACf/B,KAAKg5D,SAAW,IAClB,CACAh3D,QACOhC,KAAK+B,UACR/B,KAAKs4D,aAAat2D,QAClBhC,KAAKu4D,cAAcv2D,QACnBhC,KAAK24D,sBAAsB32D,QAC3BhC,KAAKw4D,kBAAkBx2D,QACvBhC,KAAK8wD,mBAAmB9uD,QACxBhC,KAAKy4D,eAAez2D,QACpBhC,KAAK04D,eAAe12D,QACpBhC,KAAK44D,gBAAgB52D,QACrBhC,KAAKu5C,QAAQv3C,QACbhC,KAAKq4D,UAAUr2D,QACfhC,KAAK+B,SAAU,EACf/B,KAAK+4D,SAAU,EAEnB,CACAE,UACEj5D,KAAK+4D,SAAU,CACjB,CACA32D,OACMpC,KAAK+B,UACP/B,KAAKs4D,aAAal2D,OAClBpC,KAAKu4D,cAAcn2D,OACnBpC,KAAK24D,sBAAsBv2D,OAC3BpC,KAAKw4D,kBAAkBp2D,OACvBpC,KAAK8wD,mBAAmB1uD,OACxBpC,KAAKy4D,eAAer2D,OACpBpC,KAAK04D,eAAet2D,OACpBpC,KAAK44D,gBAAgBx2D,OACrBpC,KAAKu5C,QAAQn3C,OACbpC,KAAK+B,SAAU,EAEnB,CACAm3D,gBAAgBtN,GACd5rD,KAAK4rD,QAAUA,CACjB,CACA35B,MAAM3J,GACJ,IAAIriB,EAAUrD,UAAU5J,OAAS,QAAsB+C,IAAjB6G,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnF,MAAMujD,EAAelgD,EAAQupD,MAAQh1D,SAASwyB,eAAe/mB,EAAQupD,OAAS,KAC1ErJ,aAAwB5R,GAC1B4R,EAAarrD,IAAMwtB,EAASnpB,WAC5BgnD,EAAa1R,QAEbz0C,KAAK+tB,UAAUqkC,aAAarc,EAAUztB,GAAWriB,EAErD,CACA0uD,oBAAoBphC,GAClBvzB,KAAK04D,eAAe/D,oBAAoBphC,EAC1C,CACAshC,uBAAuBthC,GACrBvzB,KAAK04D,eAAe7D,uBAAuBthC,EAC7C,CACAmd,oBAAoB90C,GAClBoE,KAAK64D,sBAAsBnX,OAAO7F,EAAckZ,KAAKn5D,GACvD,CACAu9D,aACEn5D,KAAK6rD,KAAK2G,oBACZ,CACA4G,oBAAoBC,GAClBr5D,KAAKwwD,iBAAmB6I,CAC1B,CACAC,YAAYr8D,GACV+C,KAAKg5D,SAAW/7D,CAClB,CACIqrB,eACF,OAAOtoB,KAAKu5C,QAAQjxB,QACtB,CACI6iC,4BACF,OAAOnrD,KAAKu5C,QAAQ4R,qBACtB,CACAuG,iDAAiDppC,EAAU6iC,GACrDnrD,KAAK+4D,QACP/4D,KAAK+tB,UAAU+hC,WAAWxnC,EAAU6iC,EAAuB,CACzD5iD,OAAQ,UACRoiD,gBAAgB,IAGlB3qD,KAAK4rD,QAAQuE,gBAAgB,CAC3BhO,OAAQ,kBAGd,CACA0R,sBAAsB3oB,GACpBlrC,KAAKu5C,QAAQqY,sBAAsB,CACjCzC,eAAgBjkB,GAEpB,CACA8Y,6BAA6Bz4B,EAAMjD,GACjC,OAAOtoB,KAAKoxD,qBAAqB7lC,IAASwrB,EAAoBzuB,EAAUtoB,KAAKy/C,SAASzI,aACxF,CACAoN,8BAA+B,CAC/BV,yBAAyBn4B,EAAMjD,EAAUntB,GACvC,OAAO6E,KAAKoxD,qBAAqB7lC,IAASwrB,EAAoBzuB,EAAUtoB,KAAKy/C,SAASzI,eAAiBh3C,KAAKu5D,yCAAyChuC,EAAMjD,EAAUntB,EACvK,CACAwoD,uBAAuBp4B,EAAMjD,GAC3B,MAAM/f,EAASvI,KAAKw5D,iBAAiBjuC,GAC/Bw/B,EAAwBx/B,EAAKhf,aAAa,qBAChDvM,KAAKiyB,MAAM3J,EAASC,KAAM,CACxBhgB,SACAwiD,yBAEJ,CACAsH,iCAAiC/pC,EAAU/f,GACzC,OAAOvI,KAAK2rD,6BAA6BrjC,EAAU/f,IAAWvI,KAAKy5D,kCAAkCnxC,EACvG,CACAmmC,wBAAwBnmC,EAAUriB,GAChCyxD,GAAkCpvC,GAClCtoB,KAAK4rD,QAAQ6C,wBAAwBnmC,EAAUriB,EACjD,CACAkmD,aAAal6B,GACNA,EAAM84B,uBACThS,EAAWv+C,SAASkiB,iBAEtBg7C,GAAkCzlC,EAAM3J,UACnC2J,EAAM+5B,QACThsD,KAAK05D,uCAAuCznC,EAAM3J,SAAU2J,EAAM1pB,OAEtE,CACAkkD,eAAex6B,GACbgnB,EAAez+C,SAASkiB,iBACxB1c,KAAK25D,+BAA+B1nC,EAAMs9B,mBAC5C,CACA5D,6BAA6BrjC,EAAU/f,GACrC,OAAOvI,KAAK+tB,UAAU49B,6BAA6BrjC,EAAU/f,EAC/D,CACA0mD,gCAAgC4D,EAAQC,GACtC9yD,KAAK45D,+CAA+C/G,EAAQC,EAC9D,CACA1S,eAAex4C,EAAM0rC,GACnB,MAAM/qC,EAAS8tC,EAAUzuC,EAAM0rC,GAC/B,OAAOtzC,KAAKmxD,wBAAwBvpD,EAAM0rC,IAAcyD,EAAoBhB,EAAUxtC,GAASvI,KAAKy/C,SAASzI,aAC/G,CACAqJ,cAAcz4C,EAAM0rC,GAClBtzC,KAAK+tB,UAAUwkC,WAAW3qD,EAAM0rC,EAClC,CACAigB,wBACEvzD,KAAK6rD,KAAKqD,qBAAuBlvD,KAAKsoB,SACtCtoB,KAAK25D,gCACP,CACArI,aACEtxD,KAAKu5C,QAAQuY,kCACf,CACAuB,iBACErzD,KAAKu5C,QAAQ0Y,sCACf,CACA6C,0BAA0Bl5D,GACxBoE,KAAK0wC,oBAAoB90C,EAC3B,CACAy7D,wBACE,IAAI9jD,GACyC,QAAtCA,EAAKvT,KAAK+tB,UAAUukC,oBAAiC,IAAP/+C,OAAgB,EAASA,EAAGy4C,SAC/EhsD,KAAK65D,wCAET,CACAjY,sBAAsBvuC,EAAQpN,GAC5B,IAAI/B,EAAUmP,EAAOnP,QACrB,MAAM/I,EAAQ6E,KAAK85D,8BAA8B51D,EAAS+B,GACpDygB,EAAmBvrB,EAAMurB,iBAC7Bg7B,EAASvmD,EAAM4H,OAAO2+C,OAIxB,OAHI1hD,KAAK6rD,KAAKzK,UAAYM,IACxB1hD,KAAK6rD,KAAKzK,SAASO,cAAgBD,IAE7Bh7B,CACV,CACAo7B,qBAAqBiY,EAAWC,GAC9Bh6D,KAAK6rD,KAAKqD,qBAAuBlvD,KAAKu5C,QAAQjxB,SAC9CtoB,KAAKi6D,8BACP,CACAlY,0BAA0B79C,GACxBlE,KAAKq4D,UAAUtW,0BAA0B79C,EAC3C,CACAk+C,gBAAgBD,GACdniD,KAAK4rD,QAAQuE,gBAAgBhO,EAC/B,CACA+X,YAAY1K,GACVxvD,KAAKm6D,gCAAgC3K,EACvC,CACA4K,cAAc1f,EAAe8U,GAC3BxvD,KAAKq6D,kCAAkC3f,EAAe8U,EACxD,CACA+J,yCAAyChuC,EAAMjD,EAAUgyC,GAEvD,OADct6D,KAAKu6D,6CAA6ChvC,EAAMjD,EAAUgyC,GAClE5zC,gBAChB,CACA+yC,kCAAkCnxC,GAEhC,OADctoB,KAAKw6D,wCAAwClyC,GAC7C5B,gBAChB,CACA6zC,6CAA6ChvC,EAAMjD,EAAUntB,GAC3D,OAAOgnB,EAAS,cAAe,CAC7BxmB,OAAQ4vB,EACRxoB,OAAQ,CACNslB,IAAKC,EAASC,KACdw6B,cAAe5nD,GAEjBynB,YAAY,GAEhB,CACA43C,wCAAwClyC,GACtC,OAAOnG,EAAS,qBAAsB,CACpCpf,OAAQ,CACNslB,IAAKC,EAASC,MAEhB3F,YAAY,GAEhB,CACA82C,uCAAuCpxC,EAAU/f,GAC/C,OAAO4Z,EAAS,cAAe,CAC7Bpf,OAAQ,CACNslB,IAAKC,EAASC,KACdhgB,WAGN,CACAsxD,yCACE,OAAO13C,EAAS,qBAClB,CACA23C,8BAA8BW,EAASx0D,GACrC,OAAOkc,EAAS,sBAAuB,CACrCpf,OAAQ9J,OAAO8H,OAAO,CACpB05D,WACCx0D,GACH2c,YAAY,GAEhB,CACAq3C,+BACE,OAAO93C,EAAS,eAClB,CACAw3C,iCACE,IAAIe,EAAS93D,UAAU5J,OAAS,QAAsB+C,IAAjB6G,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAClF,OAAOuf,EAAS,aAAc,CAC5Bpf,OAAQ,CACNslB,IAAKroB,KAAKsoB,SAASC,KACnBmyC,WAGN,CACAd,+CAA+C/G,EAAQC,GACrDhwC,cAAc,IAAI63C,gBAAgB,aAAc,CAC9C9H,OAAQA,EAAO1zD,WACf2zD,OAAQA,EAAO3zD,aAEnB,CACAg7D,gCAAgC3K,GAC9B,OAAOrtC,EAAS,mBAAoB,CAClCxmB,OAAQ6zD,GAEZ,CACA6K,kCAAkC3f,EAAe8U,GAC/C,OAAOrtC,EAAS,qBAAsB,CACpCpf,OAAQ,CACN23C,iBAEF/+C,OAAQ6zD,EACR5sC,YAAY,GAEhB,CACAuuC,wBAAwBvpD,EAAM0rC,GAC5B,GAAqB,OAAjBtzC,KAAKg5D,SACP,OAAO,EACF,CACL,MAAM4B,GAAyBtnB,GAAYtzC,KAAKoxD,qBAAqB9d,GACrE,MAAqB,SAAjBtzC,KAAKg5D,SACA4B,GAAiE,MAAvChzD,EAAK0U,QAAQ,uBAEvCs+C,GAA0B56D,KAAKoxD,qBAAqBxpD,EAE/D,CACF,CACAwpD,qBAAqBltD,GACnB,MAAM22D,EAAY32D,EAAQoY,QAAQ,gBAC5Bw+C,EAAc52D,EAAQoY,QAAQ,eACpC,OAAItc,KAAK84D,OAASgC,GACZD,GAC6C,SAAxCA,EAAU9yD,aAAa,gBAK5B8yD,GAC6C,QAAxCA,EAAU9yD,aAAa,aAKpC,CACAyxD,iBAAiBjuC,GACf,MAAMhjB,EAASgjB,EAAKxjB,aAAa,qBACjC,OAAO6vC,EAASrvC,GAAUA,EAAS,SACrC,CACIk3C,eACF,OAAOz/C,KAAK6rD,KAAKpM,QACnB,GAgEIsb,GAAQ,IApDd,MACE37D,YAAYuwD,GACV3vD,KAAK2vD,QAAUA,CACjB,CACA/9C,QACE5R,KAAK2vD,QAAQwJ,YACf,CACA6B,oBACEh7D,KAAKi7D,gBAAgB,GACvB,CACAC,sBACEl7D,KAAKi7D,gBAAgB,WACvB,CACAE,wBACEn7D,KAAKi7D,gBAAgB,aACvB,CACAA,gBAAgBl+D,IA3rFlB,SAAwBlB,EAAMsK,GAC5B,IAAIjC,EAAUw1C,EAAe79C,GACxBqI,IACHA,EAAU1J,SAASC,cAAc,QACjCyJ,EAAQrJ,aAAa,OAAQgB,GAC7BrB,SAASyB,KAAKC,YAAYgI,IAE5BA,EAAQrJ,aAAa,UAAWsL,EAElC,CAmrFIi1D,CAAe,sBAAuBr+D,EACxC,GAkCsB4yD,IAClB0L,GAAc1L,GAAQ5hC,UAC5B,SAAS/rB,KACP2tD,GAAQ3tD,OACV,CACA,SAASk3D,GAAgBtN,GACvB+D,GAAQuJ,gBAAgBtN,EAC1B,CACA,SAAS35B,GAAM3J,EAAUriB,GACvB0pD,GAAQ19B,MAAM3J,EAAUriB,EAC1B,CACA,SAAS0uD,GAAoBphC,GAC3Bo8B,GAAQgF,oBAAoBphC,EAC9B,CACA,SAASshC,GAAuBthC,GAC9Bo8B,GAAQkF,uBAAuBthC,EACjC,CACA,SAASmd,GAAoB90C,GAC3B+zD,GAAQjf,oBAAoB90C,EAC9B,CACA,SAASu9D,KACPv7D,QAAQkc,KAAK,2JACb61C,GAAQwJ,YACV,CACA,SAASC,GAAoBC,GAC3B1J,GAAQyJ,oBAAoBC,EAC9B,CACA,SAASiC,GAAiBzd,GACxBvB,EAAeuB,cAAgBA,CACjC,CACA,SAASyb,GAAYr8D,GACnB0yD,GAAQ2J,YAAYr8D,EACtB,CACA,IAAI+0B,GAAqB/4B,OAAOsiE,OAAO,CACrCrmC,UAAW,KACXnH,UAAWstC,GACX1L,QAASA,GACToL,MAAOA,GACPvF,aAAcA,GACd3L,aAAcA,GACd/D,cAAeA,GACf9jD,MAAOA,GACPk3D,gBAAiBA,GACjBjnC,MAAOA,GACP0iC,oBAAqBA,GACrBE,uBAAwBA,GACxBnkB,oBAAqBA,GACrByoB,WAAYA,GACZC,oBAAqBA,GACrBkC,iBAAkBA,GAClBhC,YAAaA,GACbzB,cAAeA,KAuajB,SAAS2D,GAAoB7uC,GAC3B,GAAU,MAANA,EAAY,CACd,MAAMzoB,EAAU1J,SAASwyB,eAAeL,GACxC,GAAIzoB,aAAmBqwC,EACrB,OAAOrwC,CAEX,CACF,CACA,SAASu3D,GAAgBv3D,EAASw3D,GAChC,GAAIx3D,EAAS,CACX,MAAMpJ,EAAMoJ,EAAQ6D,aAAa,OACjC,GAAW,MAAPjN,GAA6B,MAAd4gE,IAv6GKn6D,EAu6GmCm6D,EAt6GtD3lB,EAs6GiDj7C,GAt6GjCytB,MAAQwtB,EAAUx0C,GAAOgnB,MAu6G5C,MAAM,IAAIrtB,MAAM,6BAA6BgJ,EAAQyoB,yDAKvD,GAHIzoB,EAAQ0xC,gBAAkBp7C,WAC5B0J,EAAU1J,SAASwhD,WAAW93C,GAAS,IAErCA,aAAmBqwC,EAGrB,OAFArwC,EAAQ0wC,oBACR1wC,EAAQ2wC,uBACD3wC,CAEX,CAl7GF,IAA4B3C,CAm7G5B,CACA,MAAMo6D,WAAsB1oB,YAC1BxtC,2BAA2BogD,SACnBA,EAAW+V,eACnB,CACA38C,0BACE,UACQjf,KAAK0hD,QAKb,CAJE,MAAOzmD,GACP2C,QAAQ3C,MAAMA,EAChB,CAAE,QACA+E,KAAKK,YACP,CACF,CACA4e,eACE,IAAI1L,EACJ,OAAqC,QAA7BA,EAAKvT,KAAKuhD,qBAAkC,IAAPhuC,EAAgBA,EAAKvT,KAAKuhD,cAAgB,WACrF,MAAMpmD,EAAQ6E,KAAK67D,kBACf77D,KAAK8iB,cAAc3nB,WACfg9C,UACAh9C,EAAM4H,OAAO2+C,OAAO1hD,MAE7B,EANsF,EAOzF,CACAK,aACE,IACEL,KAAK+sB,QACO,CAAZ,MAAOxZ,GAAK,CAChB,CACA2kD,gCACEl4D,KAAK87D,kBAAkB55D,SAAQ7F,GAAKA,EAAE0wB,UACxC,CACI+uC,wBACF,IAAIvoD,EACJ,MAAMwoD,EAAmB/7D,KAAK+3D,eAAeiE,SAAQjiE,GAAK,IAAIA,EAAEklD,YAAW/3C,QAAO7K,KAAOA,EAAEswB,KACrFsvC,EAAiB,KAAsC,QAA/B1oD,EAAKvT,KAAKg4D,uBAAoC,IAAPzkD,OAAgB,EAASA,EAAG0rC,WAAa,IAAK/3C,QAAO7K,KAAOA,EAAEswB,KAAInqB,KAAInG,GAAKA,EAAEswB,KAClJ,OAAOovC,EAAiB70D,QAAO7K,GAAK4/D,EAAel2D,SAAS1J,EAAEswB,KAChE,CACIivC,oBACF,GAAI57D,KAAKuI,OAAQ,CACf,MAAM2zD,EAAiBrE,GAAc73D,KAAKuI,QAC1C,GAAI2zD,EACF,OAAOA,EAETl8D,KAAKmzC,MAAM,iBACb,CACAnzC,KAAKmzC,MAAM,8BACb,CACI4kB,qBACF,OAAI/3D,KAAKrE,OACAqE,KAAKm8D,mBACHn8D,KAAK2a,QACP3a,KAAKo8D,2BAEZp8D,KAAKmzC,MAAM,yCAEf,CACI6kB,sBACF,OAAOh4D,KAAKk8C,gBAAgB/1C,QAAQ8+C,WAAU,EAChD,CACI/I,sBACF,GAA+B,OAA3Bl8C,KAAK0mD,kBAA4B,CACnC,MAAM7d,EAAW7oC,KAAK41C,cAAcn7C,cAAc,YAElD,OADAuF,KAAK9D,YAAY2sC,GACVA,CACT,CAAO,GAAI7oC,KAAK0mD,6BAA6B2V,oBAC3C,OAAOr8D,KAAK0mD,kBAEd1mD,KAAKmzC,MAAM,mDACb,CACI5qC,aACF,OAAOvI,KAAK+H,aAAa,SAC3B,CACIpM,aACF,OAAOqE,KAAK+H,aAAa,SAC3B,CACI4S,cACF,OAAO3a,KAAK+H,aAAa,UAC3B,CACAorC,MAAMv3C,GACJ,MAAM,IAAIV,MAAM,GAAG8E,KAAKs8D,gBAAgB1gE,IAC1C,CACI0gE,kBACF,IAAI/oD,EAAIuiC,EACR,OAAkG,QAA1FA,GAAiD,QAA1CviC,EAAKvT,KAAK6oD,UAAU/iD,MAAM,kBAA+B,IAAPyN,EAAgBA,EAAK,IAAI,UAAuB,IAAPuiC,EAAgBA,EAAK,gBACjI,CACI+lB,wBACF,OAAO,IAAIh5C,YAAY,6BAA8B,CACnDH,SAAS,EACTE,YAAY,EACZ7f,OAAQ,CACNw5D,UAAWv8D,KACX0hD,OAAQia,GAAcha,gBAG5B,CACIwa,yBACF,IAAI5oD,EACJ,MAAMrP,EAAwC,QAA7BqP,EAAKvT,KAAK41C,qBAAkC,IAAPriC,OAAgB,EAASA,EAAGyZ,eAAehtB,KAAKrE,QACtG,OAAgB,OAAZuI,EACK,CAACA,GAED,EAEX,CACIk4D,4BACF,IAAI7oD,EACJ,MAAMxJ,EAAyC,QAA7BwJ,EAAKvT,KAAK41C,qBAAkC,IAAPriC,OAAgB,EAASA,EAAG/G,iBAAiBxM,KAAK2a,SACzG,OAAwB,IAApB5Q,EAAS/Q,OACJoF,MAAMlF,UAAU8E,MAAM5E,KAAK2Q,GAE3B,EAEX,EAEF,MAAMyyD,WAA4BvpB,YAChC7zC,cACEo1C,SAAS5xC,WACT5C,KAAKy8D,aAAe,IACtB,CACA7nB,oBACE50C,KAAKy8D,aAAez8D,KAAKlF,IAAIgL,MAAM,aAAe,IAAI42D,UAAU18D,KAAKlF,KAAO,IAAI6hE,YAAY38D,KAAKlF,KACjG65D,GAAoB30D,KAAKy8D,aAC3B,CACA5nB,uBACM70C,KAAKy8D,cACP5H,GAAuB70D,KAAKy8D,aAEhC,CACI3hE,UACF,OAAOkF,KAAK+H,aAAa,QAAU,EACrC,EC/xHF,IAAI60D,GACG39C,eAAe49C,KACpB,OAAOD,IAAYE,GAAYC,KAAiBvvC,KAAKsvC,IACvD,CACO,SAASA,GAAYE,GAC1B,OAAOJ,GAAWI,CACpB,CACO/9C,eAAe89C,KAGpB,OAAOA,SAFqB,8BACKA,iBAEnC,CACO99C,eAAeg+C,GAAYC,EAASC,GAGzC,aAFiCN,MACIO,cAChBhgE,OAAO8/D,EAASC,EACvC,CCGe,SAASE,GAAK12C,GAC3B,OAAKA,GAAsB,kBAARA,EACfA,aAAe0oC,MAAQ1oC,aAAerf,OAAeqf,EACrDvoB,MAAMC,QAAQsoB,GAAaA,EAAInkB,IAAI66D,IAChCpkE,OAAOuK,KAAKmjB,GAAKrkB,QAAO,SAAUg7D,EAAKjgE,GAK5C,OADAigE,EAHYjgE,EAAI,GAAG0H,cAAgB1H,EAAIW,MAAM,GAAGuG,QAAQ,aAAa,SAAUnI,EAAGykD,GAChF,MAAO,IAAMA,EAAE97C,aACjB,KACas4D,GAAK12C,EAAItpB,IACfigE,CACT,GAAG,CAAC,GATwC32C,CAU9C,CC9BA,SAAS8L,GAAQj1B,EAAQk1B,GAAkB,IAAIlvB,EAAOvK,OAAOuK,KAAKhG,GAAS,GAAIvE,OAAOmf,sBAAuB,CAAE,IAAIua,EAAU15B,OAAOmf,sBAAsB5a,GAASk1B,IAAmBC,EAAUA,EAAQzrB,QAAO,SAAU0rB,GAAO,OAAO35B,OAAO2e,yBAAyBpa,EAAQo1B,GAAKl2B,UAAY,KAAK8G,EAAKlK,KAAKg5B,MAAM9uB,EAAMmvB,EAAU,CAAE,OAAOnvB,CAAM,CACpV,SAASiwB,GAAc93B,GAAU,IAAK,IAAI7C,EAAI,EAAGA,EAAI8J,UAAU5J,OAAQF,IAAK,CAAE,IAAIy6B,EAAS,MAAQ3wB,UAAU9J,GAAK8J,UAAU9J,GAAK,CAAC,EAAGA,EAAI,EAAI25B,GAAQx5B,OAAOs6B,IAAS,GAAIrxB,SAAQ,SAAU7E,GAAOw1B,GAAgBl3B,EAAQ0B,EAAKk2B,EAAOl2B,GAAO,IAAKpE,OAAOu6B,0BAA4Bv6B,OAAO8e,iBAAiBpc,EAAQ1C,OAAOu6B,0BAA0BD,IAAWd,GAAQx5B,OAAOs6B,IAASrxB,SAAQ,SAAU7E,GAAOpE,OAAOwD,eAAed,EAAQ0B,EAAKpE,OAAO2e,yBAAyB2b,EAAQl2B,GAAO,GAAI,CAAE,OAAO1B,CAAQ,CACzf,SAASk3B,GAAgBlM,EAAKtpB,EAAKN,GAAiK,OAApJM,KAAOspB,EAAO1tB,OAAOwD,eAAekqB,EAAKtpB,EAAK,CAAEN,MAAOA,EAAOL,YAAY,EAAMo2B,cAAc,EAAMC,UAAU,IAAkBpM,EAAItpB,GAAON,EAAgB4pB,CAAK,CH+xHhN4tB,EAAaG,oBAjkBb,MACEt1C,YAAY8E,GACVlE,KAAKu9D,oBAAsBC,MAC3Bx9D,KAAKy9D,oBAAsB,KAC3Bz9D,KAAK09D,oBAAsB,OAC3B19D,KAAK29D,WAAY,EACjB39D,KAAK49D,eAAgB,EACrB59D,KAAK69D,kBAAoB,IAAI39D,IAC7BF,KAAKuI,OAAS,KACdvI,KAAK4qD,oBAAsB51C,IAEzB,MAAMw6C,EADQx6C,EAAO9Q,QACCkhB,cAAc,IAAMplB,KAAKkE,QAAQyoB,IACnD6iC,GAASxvD,KAAK89D,sBAChBtO,EAAM4I,mBAAmBp4D,KAAK89D,qBAAqB7e,iBAE9Cj/C,KAAK89D,oBAAoB,EAElC99D,KAAKkE,QAAUA,EACflE,KAAK6rD,KAAO,IAAIrJ,EAAUxiD,KAAMA,KAAKkE,SACrClE,KAAK+9D,mBAAqB,IAAI1iB,EAAmBr7C,KAAMA,KAAKkE,SAC5DlE,KAAK24D,sBAAwB,IAAI7U,EAAsB9jD,KAAMA,KAAKkE,SAClElE,KAAK+jD,gBAAkB,IAAItB,EAAgBziD,KAAMA,KAAKkE,SACtDlE,KAAKmrD,sBAAwBtS,IAC7B74C,KAAK8wD,mBAAqB,IAAIjR,EAAmB7/C,KAAMA,KAAKkE,QAC9D,CACA/D,UACOH,KAAK29D,YACR39D,KAAK29D,WAAY,EACb39D,KAAKg+D,cAAgBjqB,EAAkBuB,KACzCt1C,KAAK+9D,mBAAmB/7D,QAExBhC,KAAKi+D,gBAEPj+D,KAAK24D,sBAAsB32D,QAC3BhC,KAAK+jD,gBAAgB/hD,QACrBhC,KAAK8wD,mBAAmB9uD,QAE5B,CACA3B,aACML,KAAK29D,YACP39D,KAAK29D,WAAY,EACjB39D,KAAK+9D,mBAAmB37D,OACxBpC,KAAK24D,sBAAsBv2D,OAC3BpC,KAAK+jD,gBAAgB3hD,OACrBpC,KAAK8wD,mBAAmB1uD,OAE5B,CACAgzC,kBACMp1C,KAAKg+D,cAAgBjqB,EAAkBwB,OACzCv1C,KAAKi+D,eAET,CACA9oB,mBACMn1C,KAAKk+D,oBAAoB,SACzBl+D,KAAKkE,QAAQ+H,cACfjM,KAAKgoB,UAAW,IAEdhoB,KAAKg+D,cAAgBjqB,EAAkBwB,OAASv1C,KAAK49D,gBACvD59D,KAAKi+D,gBAET,CACAlpB,oBACE,MAAMj6C,EAAMkF,KAAKkE,QAAQpJ,IAMzB,OALAkF,KAAKm+D,2BAA2B,YAAY,KAC1Cn+D,KAAKkE,QAAQwV,gBAAgB,WAAW,IAE1C1Z,KAAKkE,QAAQpJ,IAAM,KACnBkF,KAAKkE,QAAQpJ,IAAMA,EACZkF,KAAKkE,QAAQuwC,MACtB,CACAS,kBACMl1C,KAAKk+D,oBAAoB,aAC7Bl+D,KAAKi+D,eACP,CACAhpB,sBACMj1C,KAAKg+D,cAAgBjqB,EAAkBuB,KACzCt1C,KAAK+9D,mBAAmB/7D,SAExBhC,KAAK+9D,mBAAmB37D,OACxBpC,KAAKi+D,gBAET,CACAh/C,sBACMjf,KAAK+4D,SAAW/4D,KAAK21C,WAAa31C,KAAKgoB,UAAYhoB,KAAKo+D,YAC1Dp+D,KAAKkE,QAAQuwC,OAASz0C,KAAKiyB,MAAM8jB,EAAU/1C,KAAKo+D,YAChDp+D,KAAK+9D,mBAAmB37D,aAClBpC,KAAKkE,QAAQuwC,OACnBz0C,KAAK49D,eAAgB,EAEzB,CACA3+C,mBAAmBy7B,IACbA,EAAcxK,YAAcwK,EAActD,WAAasD,EAAclD,UACvEx3C,KAAKo+D,UAAY1jB,EAAcjzB,SAASY,KAE1C,IACE,MAAMhB,QAAaqzB,EAAc/C,aACjC,GAAItwB,EAAM,CACR,MACE1S,EADyB0jC,EAAkBhxB,GACjB1S,KACtB0pD,QAAwBr+D,KAAKs+D,2BAA2B3pD,GAC9D,GAAI0pD,EAAiB,CACnB,MAAM5e,EAAW,IAAIV,EAASsf,GACxBjd,EAAW,IAAI0E,GAAc9lD,KAAMA,KAAK6rD,KAAKpM,SAAUA,EAAUqG,GAAcnE,eAAe,GAAO,GACvG3hD,KAAK6rD,KAAKtK,qBAAqBvhD,KAAK6rD,KAAKtK,cAC7CvhD,KAAK4sD,sBACC5sD,KAAK6rD,KAAKnK,OAAON,GACvBphD,KAAKgoB,UAAW,EAChB2nC,GAAQyK,cAAc1f,EAAe16C,KAAKkE,SAC1CyrD,GAAQuK,YAAYl6D,KAAKkE,SACzBlE,KAAKu9D,oBAAoB7iB,EAC3B,MAAW16C,KAAKu+D,mCAAmC7jB,KACjD98C,QAAQkc,KAAK,yBAAyB9Z,KAAKkE,QAAQyoB,wEACnD3sB,KAAKw+D,cAAc9jB,EAAcjzB,UAErC,CAMF,CALE,MAAOxsB,GACP2C,QAAQ3C,MAAMA,GACd+E,KAAK6rD,KAAK5J,YACZ,CAAE,QACAjiD,KAAKu9D,oBAAsB,MAC7B,CACF,CACA9hB,0BAA0BoB,GACxB78C,KAAKi+D,eACP,CACAja,6BAA6Bz4B,GAC3B,OAAOvrB,KAAKy+D,0BAA0BlzC,EACxC,CACA64B,4BAA4B74B,EAAMwlC,EAAWnpD,GAC3C,MAAM4nD,EAAQxvD,KAAKixD,iBAAiB1lC,GAChCikC,GAAO5nD,EAAK/M,aAAa,mBAAoB20D,EAAM7iC,GACzD,CACAm2B,yBAAyB5+C,EAAS6sD,EAAW7N,GAC3C,OAAOljD,KAAKy+D,0BAA0Bv6D,EACxC,CACA8+C,qBAAqB9+C,EAASokB,GAC5BtoB,KAAK0+D,cAAcx6D,EAASokB,EAC9B,CACA83B,eAAel8C,EAASovC,GACtB,OAAOpvC,EAAQoY,QAAQ,gBAAkBtc,KAAKkE,SAAWlE,KAAKy+D,0BAA0Bv6D,EAASovC,EACnG,CACA+M,cAAcn8C,EAASovC,GACjBtzC,KAAKs+C,gBACPt+C,KAAKs+C,eAAel8C,OAEtBpC,KAAKs+C,eAAiB,IAAIhC,EAAet8C,KAAMkE,EAASovC,GACxD,MAAMsJ,EAAe58C,KAAKs+C,eAAe1B,aACzC58C,KAAKm6C,yBAAyByC,EAAarvB,QAASqvB,GACpD58C,KAAKs+C,eAAet8C,OACtB,CACAm4C,yBAAyB5sB,EAASzxB,GAChC,IAAIyX,EACJga,EAAQ,eAAiBvtB,KAAK2sB,IACe,QAAxCpZ,EAAKvT,KAAK2+D,gCAA6C,IAAPprD,OAAgB,EAASA,EAAGhH,aAAa,uBAC5FzQ,EAAQm/C,mBAAmBY,EAActL,YAE7C,CACA8J,eAAe+D,GACbrF,EAAW/4C,KAAKkE,QAClB,CACAy2C,iCAAiCyD,EAAUuQ,GACzC3uD,KAAK09D,qBACP,CACAz+C,mCAAmCnjB,EAAS2rB,SACpCznB,KAAK2tD,aAAalmC,GACxBznB,KAAK09D,qBACP,CACAz+C,gCAAgCnjB,EAAS2rB,GACvC7pB,QAAQ3C,MAAMwsB,SACRznB,KAAK2tD,aAAalmC,GACxBznB,KAAK09D,qBACP,CACAljB,eAAe1+C,EAASb,GACtB2C,QAAQ3C,MAAMA,GACd+E,KAAK09D,qBACP,CACAjjB,gBAAgB2D,GACdnF,EAAej5C,KAAKkE,QACtB,CACAq6C,sBAAsBnpC,GACpB,IAAImnC,EAAcnnC,EAAOmnC,YACzBxD,EAAWwD,EAAav8C,KAAKixD,iBAAiB1U,GAChD,CACAsC,oCAAoCP,EAAgB72B,GAClD,MAAM+nC,EAAQxvD,KAAKixD,iBAAiB3S,EAAe/B,YAAa+B,EAAehL,WAC/Ekc,EAAM7lD,SAASi1D,kCAAkCpP,EAAOlR,EAAe/B,YAAa+B,EAAehL,WACnGkc,EAAM7lD,SAASgkD,aAAalmC,EAC9B,CACA+2B,iCAAiCF,EAAgB5D,GAC/C16C,KAAKkE,QAAQyF,SAASgkD,aAAajT,EACrC,CACAiE,sBAAsBL,EAAgBrjD,GACpC2C,QAAQ3C,MAAMA,EAChB,CACA6jD,uBAAuBvpC,GACrB,IAAIgnC,EAAchnC,EAAOgnC,YACzBtD,EAAesD,EAAav8C,KAAKixD,iBAAiB1U,GACpD,CACAqF,sBAAsBnjC,EAAQxY,GAC5B,IAAI44D,EAAWpgD,EAAOva,QACtB,MAAM/I,EAAQgnB,EAAS,4BAA6B,CAClDxmB,OAAQqE,KAAKkE,QACbnB,OAAQ9J,OAAO8H,OAAO,CACpB89D,YACC54D,GACH2c,YAAY,IAER8D,EAAmBvrB,EAAMurB,iBAC7Bg7B,EAASvmD,EAAM4H,OAAO2+C,OAIxB,OAHI1hD,KAAK6rD,KAAKzK,UAAYM,IACxB1hD,KAAK6rD,KAAKzK,SAASO,cAAgBD,IAE7Bh7B,CACV,CACAo7B,qBAAqBiY,EAAWC,GAAa,CAC7CjY,0BAA0B79C,GACxByrD,GAAQ5N,0BAA0B79C,EACpC,CACAk+C,kBAAmB,CACnBqE,gBAAgBb,EAAgBkZ,GAC9B9+D,KAAK89D,qBAAuBlY,EAAeX,WAAU,EACvD,CACAhmC,YAAYoJ,GACV,IAAI9U,EACJ,MAAMzX,EAAU,IAAI69C,EAAa35C,KAAMg0C,EAAYr3C,IAAK0rB,EAAK,IAAIiqB,gBAAmBtyC,KAAKkE,SAGzF,OAFoC,QAAnCqP,EAAKvT,KAAKy9D,2BAAwC,IAAPlqD,GAAyBA,EAAG0mC,SACxEj6C,KAAKy9D,oBAAsB3hE,EACpB,IAAI3B,SAAQC,IACjB4F,KAAK09D,oBAAsB,KACzB19D,KAAK09D,oBAAsB,OAC3B19D,KAAKy9D,oBAAsB,KAC3BrjE,GAAS,EAEX0B,EAAQ+2C,SAAS,GAErB,CACA6rB,cAAcx6D,EAASmkB,EAAKirB,GAC1B,MAAMkc,EAAQxvD,KAAKixD,iBAAiB/sD,EAASovC,GAC7CtzC,KAAK++D,aAAelV,GAAa0N,YAAY/H,GAAO9X,QACpD8X,EAAM7lD,SAASi1D,kCAAkCpP,EAAOtrD,EAASovC,GACjEtzC,KAAKg/D,6BAA6B96D,GAAS,KACzCsrD,EAAM10D,IAAMutB,CAAG,GAEnB,CACAu2C,kCAAkCpP,EAAOtrD,EAASovC,GAEhD,GADAtzC,KAAKuI,OAvhGT,WACE,IAAK,IAAI+W,EAAQ1c,UAAU5J,OAAQ+Q,EAAW,IAAI3L,MAAMkhB,GAAQvD,EAAQ,EAAGA,EAAQuD,EAAOvD,IACxFhS,EAASgS,GAASnZ,UAAUmZ,GAE9B,MAAMxT,EAASR,EAAa,uBAAwBgC,GACpD,OAAO6tC,EAASrvC,GAAUA,EAAS,IACrC,CAihGkB02D,CAAe3rB,EAAWpvC,EAASsrD,GAC7C5X,EAAS53C,KAAKuI,QAAS,CACzB,MAAMqiD,EAAsB4E,EAAM7lD,SAASihD,oBAC3C4E,EAAM7lD,SAAS4zD,oBAAsB7iB,IACnC,GAAI8U,EAAM10D,IAAK,CACb,MAQMmL,EAAU,CACdwhB,SANe,CACfwoB,WAJiByK,EAAczK,WAK/BC,WAJawK,EAAcxK,WAK3ByH,aAJmB6X,EAAM5Z,cAAcl5B,gBAAgBmsC,WAQvD+B,sBACAtF,YAAY,EACZuF,eAAe,EACfM,sBAAuBnrD,KAAKmrD,sBAC5B1L,SAAUz/C,KAAK++D,cAEb/+D,KAAKuI,SAAQtC,EAAQsC,OAASvI,KAAKuI,QACvConD,GAAQ19B,MAAMu9B,EAAM10D,IAAKmL,EAC3B,EAEJ,CACF,CACA2mD,gBACE,GAAI5sD,KAAKuI,OAAQ,CACf,MAAMI,EAAS2wC,EAA0Bt5C,KAAKuI,QAC9ConD,GAAQpW,QAAQzM,OAAOnkC,EAAQotC,EAAU/1C,KAAKkE,QAAQpJ,KAAO,IAAKkF,KAAKmrD,sBACzE,CACF,CACAoT,mCAAmC7jB,GACjC,IAAIlkC,EAAQxW,KACZA,KAAKkE,QAAQrJ,aAAa,WAAY,IACtC,MAAM4sB,EAAWizB,EAAcjzB,SASzBtsB,EAAQgnB,EAAS,sBAAuB,CAC5CxmB,OAAQqE,KAAKkE,QACbnB,OAAQ,CACN0kB,WACAwK,MAZUhT,eAAgBoJ,GAC5B,IAAIpiB,EAAUrD,UAAU5J,OAAS,QAAsB+C,IAAjB6G,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/EylB,aAAe62C,SACjB1oD,EAAMgoD,cAAcn2C,GAEpBsnC,GAAQ19B,MAAM5J,EAAKpiB,EAEvB,GAOE2c,YAAY,IAEd,OAAQznB,EAAMurB,gBAChB,CACAzH,oBAAoBwI,GAClB,MAAM03C,EAAU,IAAInvB,EAAcvoB,GAC5BkwB,QAAqBwnB,EAAQxnB,aAC7BrvB,EAAW62C,EAAQ72C,SACvB4nB,EAAaivB,EAAQjvB,WACrBD,EAAakvB,EAAQlvB,WACvB,OAAO0f,GAAQ19B,MAAM3J,EAAU,CAC7Bb,SAAU,CACRyoB,aACAD,aACA0H,iBAGN,CACAsZ,iBAAiB/sD,EAASovC,GACxB,IAAI//B,EAEJ,OAA0C,QAAlCA,EAAKioD,GADFzzD,EAAa,mBAAoBurC,EAAWpvC,IAAYlE,KAAKkE,QAAQ6D,aAAa,kBACpC,IAAPwL,EAAgBA,EAAKvT,KAAKkE,OAC9E,CACA+a,iCAAiC47C,GAC/B,IAAI32D,EACJ,MAAMyoB,EAAKyyC,IAAIC,OAAOr/D,KAAK2sB,IAC3B,IAEE,GADAzoB,EAAUu3D,GAAgBZ,EAAUz1C,cAAc,eAAeuH,KAAO3sB,KAAKo+D,WACzEl6D,EACF,OAAOA,EAGT,GADAA,EAAUu3D,GAAgBZ,EAAUz1C,cAAc,6BAA6BuH,MAAQ3sB,KAAKo+D,WACxFl6D,EAEF,aADMA,EAAQuwC,aACDz0C,KAAKs+D,2BAA2Bp6D,EAKjD,CAHE,MAAOjJ,GAEP,OADA2C,QAAQ3C,MAAMA,GACP,IAAIs5C,CACb,CACA,OAAO,IACT,CACA+qB,sBAAsB13D,EAAM0rC,GAE1B,OAAOyD,EAAoBhB,EADZM,EAAUzuC,EAAM0rC,IACetzC,KAAKg3C,aACrD,CACAynB,0BAA0Bv6D,EAASovC,GACjC,MAAM3mB,EAAK5kB,EAAa,mBAAoBurC,EAAWpvC,IAAYlE,KAAKkE,QAAQ6D,aAAa,UAC7F,GAAI7D,aAAmBwvC,kBAAoB1zC,KAAKs/D,sBAAsBp7D,EAASovC,GAC7E,OAAO,EAET,IAAKtzC,KAAK+4D,SAAiB,QAANpsC,EACnB,OAAO,EAET,GAAIA,EAAI,CACN,MAAMw5B,EAAeqV,GAAoB7uC,GACzC,GAAIw5B,EACF,OAAQA,EAAat8B,QAEzB,CACA,QAAK8lC,GAAQyB,qBAAqBltD,MAG9BovC,IAAcqc,GAAQyB,qBAAqB9d,GAIjD,CACI3mB,SACF,OAAO3sB,KAAKkE,QAAQyoB,EACtB,CACIosC,cACF,OAAQ/4D,KAAKkE,QAAQ2lB,QACvB,CACIu0C,gBACF,GAAIp+D,KAAKkE,QAAQpJ,IACf,OAAOkF,KAAKkE,QAAQpJ,GAExB,CACIsjE,cAAUA,GACZp+D,KAAKm+D,2BAA2B,OAAO,KACrCn+D,KAAKkE,QAAQpJ,IAAoB,OAAdsjE,QAAoC,IAAdA,EAAuBA,EAAY,IAAI,GAEpF,CACIJ,mBACF,OAAOh+D,KAAKkE,QAAQmxC,OACtB,CACIK,gBACF,YAA+B35C,IAAxBiE,KAAKs+C,qBAA+DviD,IAA/BiE,KAAK09D,qBACnD,CACI11C,eACF,OAAOhoB,KAAKkE,QAAQqI,aAAa,WACnC,CACIyb,aAASjrB,GACXiD,KAAKm+D,2BAA2B,YAAY,KACtCphE,EACFiD,KAAKkE,QAAQrJ,aAAa,WAAY,IAEtCmF,KAAKkE,QAAQwV,gBAAgB,WAC/B,GAEJ,CACIi8B,eACF,OAAO31C,KAAKkE,QAAQyxC,UAAY31C,KAAK29D,SACvC,CACI3mB,mBACF,IAAIzjC,EACJ,MAAM7M,EAAO1G,KAAKkE,QAAQ0xC,cAAcxwB,cAAc,2BAEtD,OAAO2wB,EAD0E,QAAnExiC,EAAc,OAAT7M,QAA0B,IAATA,OAAkB,EAASA,EAAKP,eAA4B,IAAPoN,EAAgBA,EAAK,IAEhH,CACA2qD,oBAAoBlzD,GAClB,OAAOhL,KAAK69D,kBAAkBnzD,IAAIM,EACpC,CACAmzD,2BAA2BnzD,EAAeT,GACxCvK,KAAK69D,kBAAkBp9D,IAAIuK,GAC3BT,IACAvK,KAAK69D,kBAAkBl9D,OAAOqK,EAChC,CACAg0D,6BAA6B96D,EAASqG,GACpCvK,KAAK2+D,yBAA2Bz6D,EAChCqG,WACOvK,KAAK2+D,wBACd,QA+JwC5iE,IAAtC+2C,eAAen2C,IAAI,gBACrBm2C,eAAeysB,OAAO,cAAehrB,QAEIx4C,IAAvC+2C,eAAen2C,IAAI,iBACrBm2C,eAAeysB,OAAO,eAAgB5D,SAEU5/D,IAA9C+2C,eAAen2C,IAAI,wBACrBm2C,eAAeysB,OAAO,sBAAuB/C,IAE/C,MACE,IAAIt4D,EAAU1J,SAASglE,cACvB,GAAKt7D,IACDA,EAAQqI,aAAa,+BAEzB,IADArI,EAAUA,EAAQ8S,cACX9S,GAAS,CACd,GAAIA,GAAW1J,SAASma,KACtB,OAAO/W,QAAQkc,KAAKw+B,CAAQ;;;;;;;;;QASzBp0C,EAAQ2kD,WAEb3kD,EAAUA,EAAQ8S,aACpB,CACD,EApBD,GAqBAlZ,OAAOk0B,MAAQA,GACfhwB,KG3zHA,MAAM,WAAsCixC,YAC1Ch0B,0BACE01C,GAAoB30D,MACpBA,KAAKy/D,mBAAqBxC,GAAYj9D,KAAKk9D,QAAS,CAClDwC,SAAU1/D,KAAK2/D,qBAAqBriE,KAAK0C,OAE7C,CACA60C,uBACEggB,GAAuB70D,MACnBA,KAAKy/D,cAAcz/D,KAAKy/D,aAAaG,aAC3C,CACAD,qBAAqBlnE,GACnB,MAAM0C,EAAQ,IAAI0kE,aAAa,UAAW,CACxCpnE,SAEF,OAAOuH,KAAK8iB,cAAc3nB,EAC5B,CACI+hE,cAGF,OAAOzpC,GAAc,CACnBypC,QAHcl9D,KAAK+H,aAAa,WAIhC+3D,mBAHyB9/D,KAAK+H,aAAa,uBAI1C,GAAS0rB,GAAc,CAAC,EAAGzzB,KAAKwuB,UACrC,EAEFskB,eAAeysB,OAAO,4BAA6B,IC1BnDn/D,iBAAiB,8BCNV,SAAqCjF,GAC1C,GAAIA,EAAMQ,kBAAkB+3C,gBAAiB,CAC3C,MAAM9rC,EAAOzM,EAAMQ,OACjBq1C,EAAe71C,EAAM4H,OAAOiuC,aAC9BppC,EAAKxH,iBAAiB,sBAAsBuD,IAC1C,IAAI2vC,EAAY3vC,EAAKZ,OAAOu7C,eAAehL,UAC3C,MAAM3qC,EAAS2qC,GAAaA,EAAUysB,YAAc/uB,EAAar8B,MAAQq8B,EAAar8B,KAAKhY,IAAI,YAAciL,EAAKG,aAAa,UAC1H,OAAOzI,KAAKqJ,KACX,QAAQrJ,KAAKqJ,GACfqoC,EAAar8B,KAAKhU,OAAO,WAEzBqwC,EAAar8B,KAAKrR,IAAI,UAAWqF,GAEnCqoC,EAAaroC,OAAS,OACxB,GACC,CACD0wC,MAAM,GAEV,CACF,G","file":"js/application-bd50b5720890e74d5ee1.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t};\n\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t1: 0\n \t};\n\n\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({\"0\":\"actioncable\"}[chunkId]||chunkId) + \"-\" + {\"0\":\"c0c0c874dc1f3659b87e\"}[chunkId] + \".chunk.js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"https://portal.selecthomewarranty.com/packs/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 4);\n","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n/*\nStimulus 3.2.1\nCopyright © 2022 Basecamp, LLC\n */\nclass EventListener {\n constructor(eventTarget, eventName, eventOptions) {\n this.eventTarget = eventTarget;\n this.eventName = eventName;\n this.eventOptions = eventOptions;\n this.unorderedBindings = new Set();\n }\n connect() {\n this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);\n }\n disconnect() {\n this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);\n }\n bindingConnected(binding) {\n this.unorderedBindings.add(binding);\n }\n bindingDisconnected(binding) {\n this.unorderedBindings.delete(binding);\n }\n handleEvent(event) {\n const extendedEvent = extendEvent(event);\n for (const binding of this.bindings) {\n if (extendedEvent.immediatePropagationStopped) {\n break;\n } else {\n binding.handleEvent(extendedEvent);\n }\n }\n }\n hasBindings() {\n return this.unorderedBindings.size > 0;\n }\n get bindings() {\n return Array.from(this.unorderedBindings).sort((left, right) => {\n const leftIndex = left.index,\n rightIndex = right.index;\n return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n });\n }\n}\nfunction extendEvent(event) {\n if (\"immediatePropagationStopped\" in event) {\n return event;\n } else {\n const stopImmediatePropagation = event.stopImmediatePropagation;\n return Object.assign(event, {\n immediatePropagationStopped: false,\n stopImmediatePropagation() {\n this.immediatePropagationStopped = true;\n stopImmediatePropagation.call(this);\n }\n });\n }\n}\nclass Dispatcher {\n constructor(application) {\n this.application = application;\n this.eventListenerMaps = new Map();\n this.started = false;\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.eventListeners.forEach(eventListener => eventListener.connect());\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n this.eventListeners.forEach(eventListener => eventListener.disconnect());\n }\n }\n get eventListeners() {\n return Array.from(this.eventListenerMaps.values()).reduce((listeners, map) => listeners.concat(Array.from(map.values())), []);\n }\n bindingConnected(binding) {\n this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n }\n bindingDisconnected(binding) {\n let clearEventListeners = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n if (clearEventListeners) this.clearEventListenersForBinding(binding);\n }\n handleError(error, message) {\n let detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n this.application.handleError(error, `Error ${message}`, detail);\n }\n clearEventListenersForBinding(binding) {\n const eventListener = this.fetchEventListenerForBinding(binding);\n if (!eventListener.hasBindings()) {\n eventListener.disconnect();\n this.removeMappedEventListenerFor(binding);\n }\n }\n removeMappedEventListenerFor(binding) {\n const eventTarget = binding.eventTarget,\n eventName = binding.eventName,\n eventOptions = binding.eventOptions;\n const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n const cacheKey = this.cacheKey(eventName, eventOptions);\n eventListenerMap.delete(cacheKey);\n if (eventListenerMap.size == 0) this.eventListenerMaps.delete(eventTarget);\n }\n fetchEventListenerForBinding(binding) {\n const eventTarget = binding.eventTarget,\n eventName = binding.eventName,\n eventOptions = binding.eventOptions;\n return this.fetchEventListener(eventTarget, eventName, eventOptions);\n }\n fetchEventListener(eventTarget, eventName, eventOptions) {\n const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n const cacheKey = this.cacheKey(eventName, eventOptions);\n let eventListener = eventListenerMap.get(cacheKey);\n if (!eventListener) {\n eventListener = this.createEventListener(eventTarget, eventName, eventOptions);\n eventListenerMap.set(cacheKey, eventListener);\n }\n return eventListener;\n }\n createEventListener(eventTarget, eventName, eventOptions) {\n const eventListener = new EventListener(eventTarget, eventName, eventOptions);\n if (this.started) {\n eventListener.connect();\n }\n return eventListener;\n }\n fetchEventListenerMapForEventTarget(eventTarget) {\n let eventListenerMap = this.eventListenerMaps.get(eventTarget);\n if (!eventListenerMap) {\n eventListenerMap = new Map();\n this.eventListenerMaps.set(eventTarget, eventListenerMap);\n }\n return eventListenerMap;\n }\n cacheKey(eventName, eventOptions) {\n const parts = [eventName];\n Object.keys(eventOptions).sort().forEach(key => {\n parts.push(`${eventOptions[key] ? \"\" : \"!\"}${key}`);\n });\n return parts.join(\":\");\n }\n}\nconst defaultActionDescriptorFilters = {\n stop(_ref) {\n let event = _ref.event,\n value = _ref.value;\n if (value) event.stopPropagation();\n return true;\n },\n prevent(_ref2) {\n let event = _ref2.event,\n value = _ref2.value;\n if (value) event.preventDefault();\n return true;\n },\n self(_ref3) {\n let event = _ref3.event,\n value = _ref3.value,\n element = _ref3.element;\n if (value) {\n return element === event.target;\n } else {\n return true;\n }\n }\n};\nconst descriptorPattern = /^(?:(.+?)(?:\\.(.+?))?(?:@(window|document))?->)?(.+?)(?:#([^:]+?))(?::(.+))?$/;\nfunction parseActionDescriptorString(descriptorString) {\n const source = descriptorString.trim();\n const matches = source.match(descriptorPattern) || [];\n let eventName = matches[1];\n let keyFilter = matches[2];\n if (keyFilter && ![\"keydown\", \"keyup\", \"keypress\"].includes(eventName)) {\n eventName += `.${keyFilter}`;\n keyFilter = \"\";\n }\n return {\n eventTarget: parseEventTarget(matches[3]),\n eventName,\n eventOptions: matches[6] ? parseEventOptions(matches[6]) : {},\n identifier: matches[4],\n methodName: matches[5],\n keyFilter\n };\n}\nfunction parseEventTarget(eventTargetName) {\n if (eventTargetName == \"window\") {\n return window;\n } else if (eventTargetName == \"document\") {\n return document;\n }\n}\nfunction parseEventOptions(eventOptions) {\n return eventOptions.split(\":\").reduce((options, token) => Object.assign(options, {\n [token.replace(/^!/, \"\")]: !/^!/.test(token)\n }), {});\n}\nfunction stringifyEventTarget(eventTarget) {\n if (eventTarget == window) {\n return \"window\";\n } else if (eventTarget == document) {\n return \"document\";\n }\n}\nfunction camelize(value) {\n return value.replace(/(?:[_-])([a-z0-9])/g, (_, char) => char.toUpperCase());\n}\nfunction namespaceCamelize(value) {\n return camelize(value.replace(/--/g, \"-\").replace(/__/g, \"_\"));\n}\nfunction capitalize(value) {\n return value.charAt(0).toUpperCase() + value.slice(1);\n}\nfunction dasherize(value) {\n return value.replace(/([A-Z])/g, (_, char) => `-${char.toLowerCase()}`);\n}\nfunction tokenize(value) {\n return value.match(/[^\\s]+/g) || [];\n}\nclass Action {\n constructor(element, index, descriptor, schema) {\n this.element = element;\n this.index = index;\n this.eventTarget = descriptor.eventTarget || element;\n this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n this.eventOptions = descriptor.eventOptions || {};\n this.identifier = descriptor.identifier || error(\"missing identifier\");\n this.methodName = descriptor.methodName || error(\"missing method name\");\n this.keyFilter = descriptor.keyFilter || \"\";\n this.schema = schema;\n }\n static forToken(token, schema) {\n return new this(token.element, token.index, parseActionDescriptorString(token.content), schema);\n }\n toString() {\n const eventFilter = this.keyFilter ? `.${this.keyFilter}` : \"\";\n const eventTarget = this.eventTargetName ? `@${this.eventTargetName}` : \"\";\n return `${this.eventName}${eventFilter}${eventTarget}->${this.identifier}#${this.methodName}`;\n }\n isFilterTarget(event) {\n if (!this.keyFilter) {\n return false;\n }\n const filteres = this.keyFilter.split(\"+\");\n const modifiers = [\"meta\", \"ctrl\", \"alt\", \"shift\"];\n const _modifiers$map = modifiers.map(modifier => filteres.includes(modifier)),\n _modifiers$map2 = _slicedToArray(_modifiers$map, 4),\n meta = _modifiers$map2[0],\n ctrl = _modifiers$map2[1],\n alt = _modifiers$map2[2],\n shift = _modifiers$map2[3];\n if (event.metaKey !== meta || event.ctrlKey !== ctrl || event.altKey !== alt || event.shiftKey !== shift) {\n return true;\n }\n const standardFilter = filteres.filter(key => !modifiers.includes(key))[0];\n if (!standardFilter) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(this.keyMappings, standardFilter)) {\n error(`contains unknown key filter: ${this.keyFilter}`);\n }\n return this.keyMappings[standardFilter].toLowerCase() !== event.key.toLowerCase();\n }\n get params() {\n const params = {};\n const pattern = new RegExp(`^data-${this.identifier}-(.+)-param$`, \"i\");\n for (const _ref4 of Array.from(this.element.attributes)) {\n const name = _ref4.name;\n const value = _ref4.value;\n const match = name.match(pattern);\n const key = match && match[1];\n if (key) {\n params[camelize(key)] = typecast(value);\n }\n }\n return params;\n }\n get eventTargetName() {\n return stringifyEventTarget(this.eventTarget);\n }\n get keyMappings() {\n return this.schema.keyMappings;\n }\n}\nconst defaultEventNames = {\n a: () => \"click\",\n button: () => \"click\",\n form: () => \"submit\",\n details: () => \"toggle\",\n input: e => e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"input\",\n select: () => \"change\",\n textarea: () => \"input\"\n};\nfunction getDefaultEventNameForElement(element) {\n const tagName = element.tagName.toLowerCase();\n if (tagName in defaultEventNames) {\n return defaultEventNames[tagName](element);\n }\n}\nfunction error(message) {\n throw new Error(message);\n}\nfunction typecast(value) {\n try {\n return JSON.parse(value);\n } catch (o_O) {\n return value;\n }\n}\nclass Binding {\n constructor(context, action) {\n this.context = context;\n this.action = action;\n }\n get index() {\n return this.action.index;\n }\n get eventTarget() {\n return this.action.eventTarget;\n }\n get eventOptions() {\n return this.action.eventOptions;\n }\n get identifier() {\n return this.context.identifier;\n }\n handleEvent(event) {\n if (this.willBeInvokedByEvent(event) && this.applyEventModifiers(event)) {\n this.invokeWithEvent(event);\n }\n }\n get eventName() {\n return this.action.eventName;\n }\n get method() {\n const method = this.controller[this.methodName];\n if (typeof method == \"function\") {\n return method;\n }\n throw new Error(`Action \"${this.action}\" references undefined method \"${this.methodName}\"`);\n }\n applyEventModifiers(event) {\n const element = this.action.element;\n const actionDescriptorFilters = this.context.application.actionDescriptorFilters;\n let passes = true;\n for (const _ref5 of Object.entries(this.eventOptions)) {\n var _ref6 = _slicedToArray(_ref5, 2);\n const name = _ref6[0];\n const value = _ref6[1];\n if (name in actionDescriptorFilters) {\n const filter = actionDescriptorFilters[name];\n passes = passes && filter({\n name,\n value,\n event,\n element\n });\n } else {\n continue;\n }\n }\n return passes;\n }\n invokeWithEvent(event) {\n const target = event.target,\n currentTarget = event.currentTarget;\n try {\n const params = this.action.params;\n const actionEvent = Object.assign(event, {\n params\n });\n this.method.call(this.controller, actionEvent);\n this.context.logDebugActivity(this.methodName, {\n event,\n target,\n currentTarget,\n action: this.methodName\n });\n } catch (error) {\n const identifier = this.identifier,\n controller = this.controller,\n element = this.element,\n index = this.index;\n const detail = {\n identifier,\n controller,\n element,\n index,\n event\n };\n this.context.handleError(error, `invoking action \"${this.action}\"`, detail);\n }\n }\n willBeInvokedByEvent(event) {\n const eventTarget = event.target;\n if (event instanceof KeyboardEvent && this.action.isFilterTarget(event)) {\n return false;\n }\n if (this.element === eventTarget) {\n return true;\n } else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n return this.scope.containsElement(eventTarget);\n } else {\n return this.scope.containsElement(this.action.element);\n }\n }\n get controller() {\n return this.context.controller;\n }\n get methodName() {\n return this.action.methodName;\n }\n get element() {\n return this.scope.element;\n }\n get scope() {\n return this.context.scope;\n }\n}\nclass ElementObserver {\n constructor(element, delegate) {\n this.mutationObserverInit = {\n attributes: true,\n childList: true,\n subtree: true\n };\n this.element = element;\n this.started = false;\n this.delegate = delegate;\n this.elements = new Set();\n this.mutationObserver = new MutationObserver(mutations => this.processMutations(mutations));\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.refresh();\n }\n }\n pause(callback) {\n if (this.started) {\n this.mutationObserver.disconnect();\n this.started = false;\n }\n callback();\n if (!this.started) {\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n refresh() {\n if (this.started) {\n const matches = new Set(this.matchElementsInTree());\n for (const element of Array.from(this.elements)) {\n if (!matches.has(element)) {\n this.removeElement(element);\n }\n }\n for (const element of Array.from(matches)) {\n this.addElement(element);\n }\n }\n }\n processMutations(mutations) {\n if (this.started) {\n for (const mutation of mutations) {\n this.processMutation(mutation);\n }\n }\n }\n processMutation(mutation) {\n if (mutation.type == \"attributes\") {\n this.processAttributeChange(mutation.target, mutation.attributeName);\n } else if (mutation.type == \"childList\") {\n this.processRemovedNodes(mutation.removedNodes);\n this.processAddedNodes(mutation.addedNodes);\n }\n }\n processAttributeChange(node, attributeName) {\n const element = node;\n if (this.elements.has(element)) {\n if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n this.delegate.elementAttributeChanged(element, attributeName);\n } else {\n this.removeElement(element);\n }\n } else if (this.matchElement(element)) {\n this.addElement(element);\n }\n }\n processRemovedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n if (element) {\n this.processTree(element, this.removeElement);\n }\n }\n }\n processAddedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n if (element && this.elementIsActive(element)) {\n this.processTree(element, this.addElement);\n }\n }\n }\n matchElement(element) {\n return this.delegate.matchElement(element);\n }\n matchElementsInTree() {\n let tree = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.element;\n return this.delegate.matchElementsInTree(tree);\n }\n processTree(tree, processor) {\n for (const element of this.matchElementsInTree(tree)) {\n processor.call(this, element);\n }\n }\n elementFromNode(node) {\n if (node.nodeType == Node.ELEMENT_NODE) {\n return node;\n }\n }\n elementIsActive(element) {\n if (element.isConnected != this.element.isConnected) {\n return false;\n } else {\n return this.element.contains(element);\n }\n }\n addElement(element) {\n if (!this.elements.has(element)) {\n if (this.elementIsActive(element)) {\n this.elements.add(element);\n if (this.delegate.elementMatched) {\n this.delegate.elementMatched(element);\n }\n }\n }\n }\n removeElement(element) {\n if (this.elements.has(element)) {\n this.elements.delete(element);\n if (this.delegate.elementUnmatched) {\n this.delegate.elementUnmatched(element);\n }\n }\n }\n}\nclass AttributeObserver {\n constructor(element, attributeName, delegate) {\n this.attributeName = attributeName;\n this.delegate = delegate;\n this.elementObserver = new ElementObserver(element, this);\n }\n get element() {\n return this.elementObserver.element;\n }\n get selector() {\n return `[${this.attributeName}]`;\n }\n start() {\n this.elementObserver.start();\n }\n pause(callback) {\n this.elementObserver.pause(callback);\n }\n stop() {\n this.elementObserver.stop();\n }\n refresh() {\n this.elementObserver.refresh();\n }\n get started() {\n return this.elementObserver.started;\n }\n matchElement(element) {\n return element.hasAttribute(this.attributeName);\n }\n matchElementsInTree(tree) {\n const match = this.matchElement(tree) ? [tree] : [];\n const matches = Array.from(tree.querySelectorAll(this.selector));\n return match.concat(matches);\n }\n elementMatched(element) {\n if (this.delegate.elementMatchedAttribute) {\n this.delegate.elementMatchedAttribute(element, this.attributeName);\n }\n }\n elementUnmatched(element) {\n if (this.delegate.elementUnmatchedAttribute) {\n this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n }\n }\n elementAttributeChanged(element, attributeName) {\n if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n this.delegate.elementAttributeValueChanged(element, attributeName);\n }\n }\n}\nfunction add(map, key, value) {\n fetch(map, key).add(value);\n}\nfunction del(map, key, value) {\n fetch(map, key).delete(value);\n prune(map, key);\n}\nfunction fetch(map, key) {\n let values = map.get(key);\n if (!values) {\n values = new Set();\n map.set(key, values);\n }\n return values;\n}\nfunction prune(map, key) {\n const values = map.get(key);\n if (values != null && values.size == 0) {\n map.delete(key);\n }\n}\nclass Multimap {\n constructor() {\n this.valuesByKey = new Map();\n }\n get keys() {\n return Array.from(this.valuesByKey.keys());\n }\n get values() {\n const sets = Array.from(this.valuesByKey.values());\n return sets.reduce((values, set) => values.concat(Array.from(set)), []);\n }\n get size() {\n const sets = Array.from(this.valuesByKey.values());\n return sets.reduce((size, set) => size + set.size, 0);\n }\n add(key, value) {\n add(this.valuesByKey, key, value);\n }\n delete(key, value) {\n del(this.valuesByKey, key, value);\n }\n has(key, value) {\n const values = this.valuesByKey.get(key);\n return values != null && values.has(value);\n }\n hasKey(key) {\n return this.valuesByKey.has(key);\n }\n hasValue(value) {\n const sets = Array.from(this.valuesByKey.values());\n return sets.some(set => set.has(value));\n }\n getValuesForKey(key) {\n const values = this.valuesByKey.get(key);\n return values ? Array.from(values) : [];\n }\n getKeysForValue(value) {\n return Array.from(this.valuesByKey).filter(_ref7 => {\n let _ref8 = _slicedToArray(_ref7, 2),\n _key = _ref8[0],\n values = _ref8[1];\n return values.has(value);\n }).map(_ref9 => {\n let _ref10 = _slicedToArray(_ref9, 2),\n key = _ref10[0],\n _values = _ref10[1];\n return key;\n });\n }\n}\nclass IndexedMultimap extends Multimap {\n constructor() {\n super();\n this.keysByValue = new Map();\n }\n get values() {\n return Array.from(this.keysByValue.keys());\n }\n add(key, value) {\n super.add(key, value);\n add(this.keysByValue, value, key);\n }\n delete(key, value) {\n super.delete(key, value);\n del(this.keysByValue, value, key);\n }\n hasValue(value) {\n return this.keysByValue.has(value);\n }\n getKeysForValue(value) {\n const set = this.keysByValue.get(value);\n return set ? Array.from(set) : [];\n }\n}\nclass SelectorObserver {\n constructor(element, selector, delegate) {\n let details = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n this.selector = selector;\n this.details = details;\n this.elementObserver = new ElementObserver(element, this);\n this.delegate = delegate;\n this.matchesByElement = new Multimap();\n }\n get started() {\n return this.elementObserver.started;\n }\n start() {\n this.elementObserver.start();\n }\n pause(callback) {\n this.elementObserver.pause(callback);\n }\n stop() {\n this.elementObserver.stop();\n }\n refresh() {\n this.elementObserver.refresh();\n }\n get element() {\n return this.elementObserver.element;\n }\n matchElement(element) {\n const matches = element.matches(this.selector);\n if (this.delegate.selectorMatchElement) {\n return matches && this.delegate.selectorMatchElement(element, this.details);\n }\n return matches;\n }\n matchElementsInTree(tree) {\n const match = this.matchElement(tree) ? [tree] : [];\n const matches = Array.from(tree.querySelectorAll(this.selector)).filter(match => this.matchElement(match));\n return match.concat(matches);\n }\n elementMatched(element) {\n this.selectorMatched(element);\n }\n elementUnmatched(element) {\n this.selectorUnmatched(element);\n }\n elementAttributeChanged(element, _attributeName) {\n const matches = this.matchElement(element);\n const matchedBefore = this.matchesByElement.has(this.selector, element);\n if (!matches && matchedBefore) {\n this.selectorUnmatched(element);\n }\n }\n selectorMatched(element) {\n if (this.delegate.selectorMatched) {\n this.delegate.selectorMatched(element, this.selector, this.details);\n this.matchesByElement.add(this.selector, element);\n }\n }\n selectorUnmatched(element) {\n this.delegate.selectorUnmatched(element, this.selector, this.details);\n this.matchesByElement.delete(this.selector, element);\n }\n}\nclass StringMapObserver {\n constructor(element, delegate) {\n this.element = element;\n this.delegate = delegate;\n this.started = false;\n this.stringMap = new Map();\n this.mutationObserver = new MutationObserver(mutations => this.processMutations(mutations));\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, {\n attributes: true,\n attributeOldValue: true\n });\n this.refresh();\n }\n }\n stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n refresh() {\n if (this.started) {\n for (const attributeName of this.knownAttributeNames) {\n this.refreshAttribute(attributeName, null);\n }\n }\n }\n processMutations(mutations) {\n if (this.started) {\n for (const mutation of mutations) {\n this.processMutation(mutation);\n }\n }\n }\n processMutation(mutation) {\n const attributeName = mutation.attributeName;\n if (attributeName) {\n this.refreshAttribute(attributeName, mutation.oldValue);\n }\n }\n refreshAttribute(attributeName, oldValue) {\n const key = this.delegate.getStringMapKeyForAttribute(attributeName);\n if (key != null) {\n if (!this.stringMap.has(attributeName)) {\n this.stringMapKeyAdded(key, attributeName);\n }\n const value = this.element.getAttribute(attributeName);\n if (this.stringMap.get(attributeName) != value) {\n this.stringMapValueChanged(value, key, oldValue);\n }\n if (value == null) {\n const oldValue = this.stringMap.get(attributeName);\n this.stringMap.delete(attributeName);\n if (oldValue) this.stringMapKeyRemoved(key, attributeName, oldValue);\n } else {\n this.stringMap.set(attributeName, value);\n }\n }\n }\n stringMapKeyAdded(key, attributeName) {\n if (this.delegate.stringMapKeyAdded) {\n this.delegate.stringMapKeyAdded(key, attributeName);\n }\n }\n stringMapValueChanged(value, key, oldValue) {\n if (this.delegate.stringMapValueChanged) {\n this.delegate.stringMapValueChanged(value, key, oldValue);\n }\n }\n stringMapKeyRemoved(key, attributeName, oldValue) {\n if (this.delegate.stringMapKeyRemoved) {\n this.delegate.stringMapKeyRemoved(key, attributeName, oldValue);\n }\n }\n get knownAttributeNames() {\n return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)));\n }\n get currentAttributeNames() {\n return Array.from(this.element.attributes).map(attribute => attribute.name);\n }\n get recordedAttributeNames() {\n return Array.from(this.stringMap.keys());\n }\n}\nclass TokenListObserver {\n constructor(element, attributeName, delegate) {\n this.attributeObserver = new AttributeObserver(element, attributeName, this);\n this.delegate = delegate;\n this.tokensByElement = new Multimap();\n }\n get started() {\n return this.attributeObserver.started;\n }\n start() {\n this.attributeObserver.start();\n }\n pause(callback) {\n this.attributeObserver.pause(callback);\n }\n stop() {\n this.attributeObserver.stop();\n }\n refresh() {\n this.attributeObserver.refresh();\n }\n get element() {\n return this.attributeObserver.element;\n }\n get attributeName() {\n return this.attributeObserver.attributeName;\n }\n elementMatchedAttribute(element) {\n this.tokensMatched(this.readTokensForElement(element));\n }\n elementAttributeValueChanged(element) {\n const _this$refreshTokensFo = this.refreshTokensForElement(element),\n _this$refreshTokensFo2 = _slicedToArray(_this$refreshTokensFo, 2),\n unmatchedTokens = _this$refreshTokensFo2[0],\n matchedTokens = _this$refreshTokensFo2[1];\n this.tokensUnmatched(unmatchedTokens);\n this.tokensMatched(matchedTokens);\n }\n elementUnmatchedAttribute(element) {\n this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n }\n tokensMatched(tokens) {\n tokens.forEach(token => this.tokenMatched(token));\n }\n tokensUnmatched(tokens) {\n tokens.forEach(token => this.tokenUnmatched(token));\n }\n tokenMatched(token) {\n this.delegate.tokenMatched(token);\n this.tokensByElement.add(token.element, token);\n }\n tokenUnmatched(token) {\n this.delegate.tokenUnmatched(token);\n this.tokensByElement.delete(token.element, token);\n }\n refreshTokensForElement(element) {\n const previousTokens = this.tokensByElement.getValuesForKey(element);\n const currentTokens = this.readTokensForElement(element);\n const firstDifferingIndex = zip(previousTokens, currentTokens).findIndex(_ref11 => {\n let _ref12 = _slicedToArray(_ref11, 2),\n previousToken = _ref12[0],\n currentToken = _ref12[1];\n return !tokensAreEqual(previousToken, currentToken);\n });\n if (firstDifferingIndex == -1) {\n return [[], []];\n } else {\n return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n }\n }\n readTokensForElement(element) {\n const attributeName = this.attributeName;\n const tokenString = element.getAttribute(attributeName) || \"\";\n return parseTokenString(tokenString, element, attributeName);\n }\n}\nfunction parseTokenString(tokenString, element, attributeName) {\n return tokenString.trim().split(/\\s+/).filter(content => content.length).map((content, index) => ({\n element,\n attributeName,\n content,\n index\n }));\n}\nfunction zip(left, right) {\n const length = Math.max(left.length, right.length);\n return Array.from({\n length\n }, (_, index) => [left[index], right[index]]);\n}\nfunction tokensAreEqual(left, right) {\n return left && right && left.index == right.index && left.content == right.content;\n}\nclass ValueListObserver {\n constructor(element, attributeName, delegate) {\n this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n this.delegate = delegate;\n this.parseResultsByToken = new WeakMap();\n this.valuesByTokenByElement = new WeakMap();\n }\n get started() {\n return this.tokenListObserver.started;\n }\n start() {\n this.tokenListObserver.start();\n }\n stop() {\n this.tokenListObserver.stop();\n }\n refresh() {\n this.tokenListObserver.refresh();\n }\n get element() {\n return this.tokenListObserver.element;\n }\n get attributeName() {\n return this.tokenListObserver.attributeName;\n }\n tokenMatched(token) {\n const element = token.element;\n const _this$fetchParseResul = this.fetchParseResultForToken(token),\n value = _this$fetchParseResul.value;\n if (value) {\n this.fetchValuesByTokenForElement(element).set(token, value);\n this.delegate.elementMatchedValue(element, value);\n }\n }\n tokenUnmatched(token) {\n const element = token.element;\n const _this$fetchParseResul2 = this.fetchParseResultForToken(token),\n value = _this$fetchParseResul2.value;\n if (value) {\n this.fetchValuesByTokenForElement(element).delete(token);\n this.delegate.elementUnmatchedValue(element, value);\n }\n }\n fetchParseResultForToken(token) {\n let parseResult = this.parseResultsByToken.get(token);\n if (!parseResult) {\n parseResult = this.parseToken(token);\n this.parseResultsByToken.set(token, parseResult);\n }\n return parseResult;\n }\n fetchValuesByTokenForElement(element) {\n let valuesByToken = this.valuesByTokenByElement.get(element);\n if (!valuesByToken) {\n valuesByToken = new Map();\n this.valuesByTokenByElement.set(element, valuesByToken);\n }\n return valuesByToken;\n }\n parseToken(token) {\n try {\n const value = this.delegate.parseValueForToken(token);\n return {\n value\n };\n } catch (error) {\n return {\n error\n };\n }\n }\n}\nclass BindingObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.bindingsByAction = new Map();\n }\n start() {\n if (!this.valueListObserver) {\n this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n this.valueListObserver.start();\n }\n }\n stop() {\n if (this.valueListObserver) {\n this.valueListObserver.stop();\n delete this.valueListObserver;\n this.disconnectAllActions();\n }\n }\n get element() {\n return this.context.element;\n }\n get identifier() {\n return this.context.identifier;\n }\n get actionAttribute() {\n return this.schema.actionAttribute;\n }\n get schema() {\n return this.context.schema;\n }\n get bindings() {\n return Array.from(this.bindingsByAction.values());\n }\n connectAction(action) {\n const binding = new Binding(this.context, action);\n this.bindingsByAction.set(action, binding);\n this.delegate.bindingConnected(binding);\n }\n disconnectAction(action) {\n const binding = this.bindingsByAction.get(action);\n if (binding) {\n this.bindingsByAction.delete(action);\n this.delegate.bindingDisconnected(binding);\n }\n }\n disconnectAllActions() {\n this.bindings.forEach(binding => this.delegate.bindingDisconnected(binding, true));\n this.bindingsByAction.clear();\n }\n parseValueForToken(token) {\n const action = Action.forToken(token, this.schema);\n if (action.identifier == this.identifier) {\n return action;\n }\n }\n elementMatchedValue(element, action) {\n this.connectAction(action);\n }\n elementUnmatchedValue(element, action) {\n this.disconnectAction(action);\n }\n}\nclass ValueObserver {\n constructor(context, receiver) {\n this.context = context;\n this.receiver = receiver;\n this.stringMapObserver = new StringMapObserver(this.element, this);\n this.valueDescriptorMap = this.controller.valueDescriptorMap;\n }\n start() {\n this.stringMapObserver.start();\n this.invokeChangedCallbacksForDefaultValues();\n }\n stop() {\n this.stringMapObserver.stop();\n }\n get element() {\n return this.context.element;\n }\n get controller() {\n return this.context.controller;\n }\n getStringMapKeyForAttribute(attributeName) {\n if (attributeName in this.valueDescriptorMap) {\n return this.valueDescriptorMap[attributeName].name;\n }\n }\n stringMapKeyAdded(key, attributeName) {\n const descriptor = this.valueDescriptorMap[attributeName];\n if (!this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), descriptor.writer(descriptor.defaultValue));\n }\n }\n stringMapValueChanged(value, name, oldValue) {\n const descriptor = this.valueDescriptorNameMap[name];\n if (value === null) return;\n if (oldValue === null) {\n oldValue = descriptor.writer(descriptor.defaultValue);\n }\n this.invokeChangedCallback(name, value, oldValue);\n }\n stringMapKeyRemoved(key, attributeName, oldValue) {\n const descriptor = this.valueDescriptorNameMap[key];\n if (this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), oldValue);\n } else {\n this.invokeChangedCallback(key, descriptor.writer(descriptor.defaultValue), oldValue);\n }\n }\n invokeChangedCallbacksForDefaultValues() {\n for (const _ref13 of this.valueDescriptors) {\n const key = _ref13.key;\n const name = _ref13.name;\n const defaultValue = _ref13.defaultValue;\n const writer = _ref13.writer;\n if (defaultValue != undefined && !this.controller.data.has(key)) {\n this.invokeChangedCallback(name, writer(defaultValue), undefined);\n }\n }\n }\n invokeChangedCallback(name, rawValue, rawOldValue) {\n const changedMethodName = `${name}Changed`;\n const changedMethod = this.receiver[changedMethodName];\n if (typeof changedMethod == \"function\") {\n const descriptor = this.valueDescriptorNameMap[name];\n try {\n const value = descriptor.reader(rawValue);\n let oldValue = rawOldValue;\n if (rawOldValue) {\n oldValue = descriptor.reader(rawOldValue);\n }\n changedMethod.call(this.receiver, value, oldValue);\n } catch (error) {\n if (error instanceof TypeError) {\n error.message = `Stimulus Value \"${this.context.identifier}.${descriptor.name}\" - ${error.message}`;\n }\n throw error;\n }\n }\n }\n get valueDescriptors() {\n const valueDescriptorMap = this.valueDescriptorMap;\n return Object.keys(valueDescriptorMap).map(key => valueDescriptorMap[key]);\n }\n get valueDescriptorNameMap() {\n const descriptors = {};\n Object.keys(this.valueDescriptorMap).forEach(key => {\n const descriptor = this.valueDescriptorMap[key];\n descriptors[descriptor.name] = descriptor;\n });\n return descriptors;\n }\n hasValue(attributeName) {\n const descriptor = this.valueDescriptorNameMap[attributeName];\n const hasMethodName = `has${capitalize(descriptor.name)}`;\n return this.receiver[hasMethodName];\n }\n}\nclass TargetObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.targetsByName = new Multimap();\n }\n start() {\n if (!this.tokenListObserver) {\n this.tokenListObserver = new TokenListObserver(this.element, this.attributeName, this);\n this.tokenListObserver.start();\n }\n }\n stop() {\n if (this.tokenListObserver) {\n this.disconnectAllTargets();\n this.tokenListObserver.stop();\n delete this.tokenListObserver;\n }\n }\n tokenMatched(_ref14) {\n let element = _ref14.element,\n name = _ref14.content;\n if (this.scope.containsElement(element)) {\n this.connectTarget(element, name);\n }\n }\n tokenUnmatched(_ref15) {\n let element = _ref15.element,\n name = _ref15.content;\n this.disconnectTarget(element, name);\n }\n connectTarget(element, name) {\n var _a;\n if (!this.targetsByName.has(name, element)) {\n this.targetsByName.add(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetConnected(element, name));\n }\n }\n disconnectTarget(element, name) {\n var _a;\n if (this.targetsByName.has(name, element)) {\n this.targetsByName.delete(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetDisconnected(element, name));\n }\n }\n disconnectAllTargets() {\n for (const name of this.targetsByName.keys) {\n for (const element of this.targetsByName.getValuesForKey(name)) {\n this.disconnectTarget(element, name);\n }\n }\n }\n get attributeName() {\n return `data-${this.context.identifier}-target`;\n }\n get element() {\n return this.context.element;\n }\n get scope() {\n return this.context.scope;\n }\n}\nfunction readInheritableStaticArrayValues(constructor, propertyName) {\n const ancestors = getAncestorsForConstructor(constructor);\n return Array.from(ancestors.reduce((values, constructor) => {\n getOwnStaticArrayValues(constructor, propertyName).forEach(name => values.add(name));\n return values;\n }, new Set()));\n}\nfunction readInheritableStaticObjectPairs(constructor, propertyName) {\n const ancestors = getAncestorsForConstructor(constructor);\n return ancestors.reduce((pairs, constructor) => {\n pairs.push(...getOwnStaticObjectPairs(constructor, propertyName));\n return pairs;\n }, []);\n}\nfunction getAncestorsForConstructor(constructor) {\n const ancestors = [];\n while (constructor) {\n ancestors.push(constructor);\n constructor = Object.getPrototypeOf(constructor);\n }\n return ancestors.reverse();\n}\nfunction getOwnStaticArrayValues(constructor, propertyName) {\n const definition = constructor[propertyName];\n return Array.isArray(definition) ? definition : [];\n}\nfunction getOwnStaticObjectPairs(constructor, propertyName) {\n const definition = constructor[propertyName];\n return definition ? Object.keys(definition).map(key => [key, definition[key]]) : [];\n}\nclass OutletObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.outletsByName = new Multimap();\n this.outletElementsByName = new Multimap();\n this.selectorObserverMap = new Map();\n }\n start() {\n if (this.selectorObserverMap.size === 0) {\n this.outletDefinitions.forEach(outletName => {\n const selector = this.selector(outletName);\n const details = {\n outletName\n };\n if (selector) {\n this.selectorObserverMap.set(outletName, new SelectorObserver(document.body, selector, this, details));\n }\n });\n this.selectorObserverMap.forEach(observer => observer.start());\n }\n this.dependentContexts.forEach(context => context.refresh());\n }\n stop() {\n if (this.selectorObserverMap.size > 0) {\n this.disconnectAllOutlets();\n this.selectorObserverMap.forEach(observer => observer.stop());\n this.selectorObserverMap.clear();\n }\n }\n refresh() {\n this.selectorObserverMap.forEach(observer => observer.refresh());\n }\n selectorMatched(element, _selector, _ref16) {\n let outletName = _ref16.outletName;\n const outlet = this.getOutlet(element, outletName);\n if (outlet) {\n this.connectOutlet(outlet, element, outletName);\n }\n }\n selectorUnmatched(element, _selector, _ref17) {\n let outletName = _ref17.outletName;\n const outlet = this.getOutletFromMap(element, outletName);\n if (outlet) {\n this.disconnectOutlet(outlet, element, outletName);\n }\n }\n selectorMatchElement(element, _ref18) {\n let outletName = _ref18.outletName;\n return this.hasOutlet(element, outletName) && element.matches(`[${this.context.application.schema.controllerAttribute}~=${outletName}]`);\n }\n connectOutlet(outlet, element, outletName) {\n var _a;\n if (!this.outletElementsByName.has(outletName, element)) {\n this.outletsByName.add(outletName, outlet);\n this.outletElementsByName.add(outletName, element);\n (_a = this.selectorObserverMap.get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletConnected(outlet, element, outletName));\n }\n }\n disconnectOutlet(outlet, element, outletName) {\n var _a;\n if (this.outletElementsByName.has(outletName, element)) {\n this.outletsByName.delete(outletName, outlet);\n this.outletElementsByName.delete(outletName, element);\n (_a = this.selectorObserverMap.get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletDisconnected(outlet, element, outletName));\n }\n }\n disconnectAllOutlets() {\n for (const outletName of this.outletElementsByName.keys) {\n for (const element of this.outletElementsByName.getValuesForKey(outletName)) {\n for (const outlet of this.outletsByName.getValuesForKey(outletName)) {\n this.disconnectOutlet(outlet, element, outletName);\n }\n }\n }\n }\n selector(outletName) {\n return this.scope.outlets.getSelectorForOutletName(outletName);\n }\n get outletDependencies() {\n const dependencies = new Multimap();\n this.router.modules.forEach(module => {\n const constructor = module.definition.controllerConstructor;\n const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n outlets.forEach(outlet => dependencies.add(outlet, module.identifier));\n });\n return dependencies;\n }\n get outletDefinitions() {\n return this.outletDependencies.getKeysForValue(this.identifier);\n }\n get dependentControllerIdentifiers() {\n return this.outletDependencies.getValuesForKey(this.identifier);\n }\n get dependentContexts() {\n const identifiers = this.dependentControllerIdentifiers;\n return this.router.contexts.filter(context => identifiers.includes(context.identifier));\n }\n hasOutlet(element, outletName) {\n return !!this.getOutlet(element, outletName) || !!this.getOutletFromMap(element, outletName);\n }\n getOutlet(element, outletName) {\n return this.application.getControllerForElementAndIdentifier(element, outletName);\n }\n getOutletFromMap(element, outletName) {\n return this.outletsByName.getValuesForKey(outletName).find(outlet => outlet.element === element);\n }\n get scope() {\n return this.context.scope;\n }\n get identifier() {\n return this.context.identifier;\n }\n get application() {\n return this.context.application;\n }\n get router() {\n return this.application.router;\n }\n}\nclass Context {\n constructor(module, scope) {\n var _this = this;\n this.logDebugActivity = function (functionName) {\n let detail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const identifier = _this.identifier,\n controller = _this.controller,\n element = _this.element;\n detail = Object.assign({\n identifier,\n controller,\n element\n }, detail);\n _this.application.logDebugActivity(_this.identifier, functionName, detail);\n };\n this.module = module;\n this.scope = scope;\n this.controller = new module.controllerConstructor(this);\n this.bindingObserver = new BindingObserver(this, this.dispatcher);\n this.valueObserver = new ValueObserver(this, this.controller);\n this.targetObserver = new TargetObserver(this, this);\n this.outletObserver = new OutletObserver(this, this);\n try {\n this.controller.initialize();\n this.logDebugActivity(\"initialize\");\n } catch (error) {\n this.handleError(error, \"initializing controller\");\n }\n }\n connect() {\n this.bindingObserver.start();\n this.valueObserver.start();\n this.targetObserver.start();\n this.outletObserver.start();\n try {\n this.controller.connect();\n this.logDebugActivity(\"connect\");\n } catch (error) {\n this.handleError(error, \"connecting controller\");\n }\n }\n refresh() {\n this.outletObserver.refresh();\n }\n disconnect() {\n try {\n this.controller.disconnect();\n this.logDebugActivity(\"disconnect\");\n } catch (error) {\n this.handleError(error, \"disconnecting controller\");\n }\n this.outletObserver.stop();\n this.targetObserver.stop();\n this.valueObserver.stop();\n this.bindingObserver.stop();\n }\n get application() {\n return this.module.application;\n }\n get identifier() {\n return this.module.identifier;\n }\n get schema() {\n return this.application.schema;\n }\n get dispatcher() {\n return this.application.dispatcher;\n }\n get element() {\n return this.scope.element;\n }\n get parentElement() {\n return this.element.parentElement;\n }\n handleError(error, message) {\n let detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const identifier = this.identifier,\n controller = this.controller,\n element = this.element;\n detail = Object.assign({\n identifier,\n controller,\n element\n }, detail);\n this.application.handleError(error, `Error ${message}`, detail);\n }\n targetConnected(element, name) {\n this.invokeControllerMethod(`${name}TargetConnected`, element);\n }\n targetDisconnected(element, name) {\n this.invokeControllerMethod(`${name}TargetDisconnected`, element);\n }\n outletConnected(outlet, element, name) {\n this.invokeControllerMethod(`${namespaceCamelize(name)}OutletConnected`, outlet, element);\n }\n outletDisconnected(outlet, element, name) {\n this.invokeControllerMethod(`${namespaceCamelize(name)}OutletDisconnected`, outlet, element);\n }\n invokeControllerMethod(methodName) {\n const controller = this.controller;\n if (typeof controller[methodName] == \"function\") {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key2 = 1; _key2 < _len; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n controller[methodName](...args);\n }\n }\n}\nfunction bless(constructor) {\n return shadow(constructor, getBlessedProperties(constructor));\n}\nfunction shadow(constructor, properties) {\n const shadowConstructor = extend(constructor);\n const shadowProperties = getShadowProperties(constructor.prototype, properties);\n Object.defineProperties(shadowConstructor.prototype, shadowProperties);\n return shadowConstructor;\n}\nfunction getBlessedProperties(constructor) {\n const blessings = readInheritableStaticArrayValues(constructor, \"blessings\");\n return blessings.reduce((blessedProperties, blessing) => {\n const properties = blessing(constructor);\n for (const key in properties) {\n const descriptor = blessedProperties[key] || {};\n blessedProperties[key] = Object.assign(descriptor, properties[key]);\n }\n return blessedProperties;\n }, {});\n}\nfunction getShadowProperties(prototype, properties) {\n return getOwnKeys(properties).reduce((shadowProperties, key) => {\n const descriptor = getShadowedDescriptor(prototype, properties, key);\n if (descriptor) {\n Object.assign(shadowProperties, {\n [key]: descriptor\n });\n }\n return shadowProperties;\n }, {});\n}\nfunction getShadowedDescriptor(prototype, properties, key) {\n const shadowingDescriptor = Object.getOwnPropertyDescriptor(prototype, key);\n const shadowedByValue = shadowingDescriptor && \"value\" in shadowingDescriptor;\n if (!shadowedByValue) {\n const descriptor = Object.getOwnPropertyDescriptor(properties, key).value;\n if (shadowingDescriptor) {\n descriptor.get = shadowingDescriptor.get || descriptor.get;\n descriptor.set = shadowingDescriptor.set || descriptor.set;\n }\n return descriptor;\n }\n}\nconst getOwnKeys = (() => {\n if (typeof Object.getOwnPropertySymbols == \"function\") {\n return object => [...Object.getOwnPropertyNames(object), ...Object.getOwnPropertySymbols(object)];\n } else {\n return Object.getOwnPropertyNames;\n }\n})();\nconst extend = (() => {\n function extendWithReflect(constructor) {\n function extended() {\n return Reflect.construct(constructor, arguments, new.target);\n }\n extended.prototype = Object.create(constructor.prototype, {\n constructor: {\n value: extended\n }\n });\n Reflect.setPrototypeOf(extended, constructor);\n return extended;\n }\n function testReflectExtension() {\n const a = function () {\n this.a.call(this);\n };\n const b = extendWithReflect(a);\n b.prototype.a = function () {};\n return new b();\n }\n try {\n testReflectExtension();\n return extendWithReflect;\n } catch (error) {\n return constructor => class extended extends constructor {};\n }\n})();\nfunction blessDefinition(definition) {\n return {\n identifier: definition.identifier,\n controllerConstructor: bless(definition.controllerConstructor)\n };\n}\nclass Module {\n constructor(application, definition) {\n this.application = application;\n this.definition = blessDefinition(definition);\n this.contextsByScope = new WeakMap();\n this.connectedContexts = new Set();\n }\n get identifier() {\n return this.definition.identifier;\n }\n get controllerConstructor() {\n return this.definition.controllerConstructor;\n }\n get contexts() {\n return Array.from(this.connectedContexts);\n }\n connectContextForScope(scope) {\n const context = this.fetchContextForScope(scope);\n this.connectedContexts.add(context);\n context.connect();\n }\n disconnectContextForScope(scope) {\n const context = this.contextsByScope.get(scope);\n if (context) {\n this.connectedContexts.delete(context);\n context.disconnect();\n }\n }\n fetchContextForScope(scope) {\n let context = this.contextsByScope.get(scope);\n if (!context) {\n context = new Context(this, scope);\n this.contextsByScope.set(scope, context);\n }\n return context;\n }\n}\nclass ClassMap {\n constructor(scope) {\n this.scope = scope;\n }\n has(name) {\n return this.data.has(this.getDataKey(name));\n }\n get(name) {\n return this.getAll(name)[0];\n }\n getAll(name) {\n const tokenString = this.data.get(this.getDataKey(name)) || \"\";\n return tokenize(tokenString);\n }\n getAttributeName(name) {\n return this.data.getAttributeNameForKey(this.getDataKey(name));\n }\n getDataKey(name) {\n return `${name}-class`;\n }\n get data() {\n return this.scope.data;\n }\n}\nclass DataMap {\n constructor(scope) {\n this.scope = scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get(key) {\n const name = this.getAttributeNameForKey(key);\n return this.element.getAttribute(name);\n }\n set(key, value) {\n const name = this.getAttributeNameForKey(key);\n this.element.setAttribute(name, value);\n return this.get(key);\n }\n has(key) {\n const name = this.getAttributeNameForKey(key);\n return this.element.hasAttribute(name);\n }\n delete(key) {\n if (this.has(key)) {\n const name = this.getAttributeNameForKey(key);\n this.element.removeAttribute(name);\n return true;\n } else {\n return false;\n }\n }\n getAttributeNameForKey(key) {\n return `data-${this.identifier}-${dasherize(key)}`;\n }\n}\nclass Guide {\n constructor(logger) {\n this.warnedKeysByObject = new WeakMap();\n this.logger = logger;\n }\n warn(object, key, message) {\n let warnedKeys = this.warnedKeysByObject.get(object);\n if (!warnedKeys) {\n warnedKeys = new Set();\n this.warnedKeysByObject.set(object, warnedKeys);\n }\n if (!warnedKeys.has(key)) {\n warnedKeys.add(key);\n this.logger.warn(message, object);\n }\n }\n}\nfunction attributeValueContainsToken(attributeName, token) {\n return `[${attributeName}~=\"${token}\"]`;\n}\nclass TargetSet {\n constructor(scope) {\n this.scope = scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get schema() {\n return this.scope.schema;\n }\n has(targetName) {\n return this.find(targetName) != null;\n }\n find() {\n for (var _len2 = arguments.length, targetNames = new Array(_len2), _key3 = 0; _key3 < _len2; _key3++) {\n targetNames[_key3] = arguments[_key3];\n }\n return targetNames.reduce((target, targetName) => target || this.findTarget(targetName) || this.findLegacyTarget(targetName), undefined);\n }\n findAll() {\n for (var _len3 = arguments.length, targetNames = new Array(_len3), _key4 = 0; _key4 < _len3; _key4++) {\n targetNames[_key4] = arguments[_key4];\n }\n return targetNames.reduce((targets, targetName) => [...targets, ...this.findAllTargets(targetName), ...this.findAllLegacyTargets(targetName)], []);\n }\n findTarget(targetName) {\n const selector = this.getSelectorForTargetName(targetName);\n return this.scope.findElement(selector);\n }\n findAllTargets(targetName) {\n const selector = this.getSelectorForTargetName(targetName);\n return this.scope.findAllElements(selector);\n }\n getSelectorForTargetName(targetName) {\n const attributeName = this.schema.targetAttributeForScope(this.identifier);\n return attributeValueContainsToken(attributeName, targetName);\n }\n findLegacyTarget(targetName) {\n const selector = this.getLegacySelectorForTargetName(targetName);\n return this.deprecate(this.scope.findElement(selector), targetName);\n }\n findAllLegacyTargets(targetName) {\n const selector = this.getLegacySelectorForTargetName(targetName);\n return this.scope.findAllElements(selector).map(element => this.deprecate(element, targetName));\n }\n getLegacySelectorForTargetName(targetName) {\n const targetDescriptor = `${this.identifier}.${targetName}`;\n return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n }\n deprecate(element, targetName) {\n if (element) {\n const identifier = this.identifier;\n const attributeName = this.schema.targetAttribute;\n const revisedAttributeName = this.schema.targetAttributeForScope(identifier);\n this.guide.warn(element, `target:${targetName}`, `Please replace ${attributeName}=\"${identifier}.${targetName}\" with ${revisedAttributeName}=\"${targetName}\". ` + `The ${attributeName} attribute is deprecated and will be removed in a future version of Stimulus.`);\n }\n return element;\n }\n get guide() {\n return this.scope.guide;\n }\n}\nclass OutletSet {\n constructor(scope, controllerElement) {\n this.scope = scope;\n this.controllerElement = controllerElement;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get schema() {\n return this.scope.schema;\n }\n has(outletName) {\n return this.find(outletName) != null;\n }\n find() {\n for (var _len4 = arguments.length, outletNames = new Array(_len4), _key5 = 0; _key5 < _len4; _key5++) {\n outletNames[_key5] = arguments[_key5];\n }\n return outletNames.reduce((outlet, outletName) => outlet || this.findOutlet(outletName), undefined);\n }\n findAll() {\n for (var _len5 = arguments.length, outletNames = new Array(_len5), _key6 = 0; _key6 < _len5; _key6++) {\n outletNames[_key6] = arguments[_key6];\n }\n return outletNames.reduce((outlets, outletName) => [...outlets, ...this.findAllOutlets(outletName)], []);\n }\n getSelectorForOutletName(outletName) {\n const attributeName = this.schema.outletAttributeForScope(this.identifier, outletName);\n return this.controllerElement.getAttribute(attributeName);\n }\n findOutlet(outletName) {\n const selector = this.getSelectorForOutletName(outletName);\n if (selector) return this.findElement(selector, outletName);\n }\n findAllOutlets(outletName) {\n const selector = this.getSelectorForOutletName(outletName);\n return selector ? this.findAllElements(selector, outletName) : [];\n }\n findElement(selector, outletName) {\n const elements = this.scope.queryElements(selector);\n return elements.filter(element => this.matchesElement(element, selector, outletName))[0];\n }\n findAllElements(selector, outletName) {\n const elements = this.scope.queryElements(selector);\n return elements.filter(element => this.matchesElement(element, selector, outletName));\n }\n matchesElement(element, selector, outletName) {\n const controllerAttribute = element.getAttribute(this.scope.schema.controllerAttribute) || \"\";\n return element.matches(selector) && controllerAttribute.split(\" \").includes(outletName);\n }\n}\nclass Scope {\n constructor(schema, element, identifier, logger) {\n this.targets = new TargetSet(this);\n this.classes = new ClassMap(this);\n this.data = new DataMap(this);\n this.containsElement = element => {\n return element.closest(this.controllerSelector) === this.element;\n };\n this.schema = schema;\n this.element = element;\n this.identifier = identifier;\n this.guide = new Guide(logger);\n this.outlets = new OutletSet(this.documentScope, element);\n }\n findElement(selector) {\n return this.element.matches(selector) ? this.element : this.queryElements(selector).find(this.containsElement);\n }\n findAllElements(selector) {\n return [...(this.element.matches(selector) ? [this.element] : []), ...this.queryElements(selector).filter(this.containsElement)];\n }\n queryElements(selector) {\n return Array.from(this.element.querySelectorAll(selector));\n }\n get controllerSelector() {\n return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n }\n get isDocumentScope() {\n return this.element === document.documentElement;\n }\n get documentScope() {\n return this.isDocumentScope ? this : new Scope(this.schema, document.documentElement, this.identifier, this.guide.logger);\n }\n}\nclass ScopeObserver {\n constructor(element, schema, delegate) {\n this.element = element;\n this.schema = schema;\n this.delegate = delegate;\n this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n this.scopesByIdentifierByElement = new WeakMap();\n this.scopeReferenceCounts = new WeakMap();\n }\n start() {\n this.valueListObserver.start();\n }\n stop() {\n this.valueListObserver.stop();\n }\n get controllerAttribute() {\n return this.schema.controllerAttribute;\n }\n parseValueForToken(token) {\n const element = token.element,\n identifier = token.content;\n const scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n let scope = scopesByIdentifier.get(identifier);\n if (!scope) {\n scope = this.delegate.createScopeForElementAndIdentifier(element, identifier);\n scopesByIdentifier.set(identifier, scope);\n }\n return scope;\n }\n elementMatchedValue(element, value) {\n const referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n this.scopeReferenceCounts.set(value, referenceCount);\n if (referenceCount == 1) {\n this.delegate.scopeConnected(value);\n }\n }\n elementUnmatchedValue(element, value) {\n const referenceCount = this.scopeReferenceCounts.get(value);\n if (referenceCount) {\n this.scopeReferenceCounts.set(value, referenceCount - 1);\n if (referenceCount == 1) {\n this.delegate.scopeDisconnected(value);\n }\n }\n }\n fetchScopesByIdentifierForElement(element) {\n let scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n if (!scopesByIdentifier) {\n scopesByIdentifier = new Map();\n this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n }\n return scopesByIdentifier;\n }\n}\nclass Router {\n constructor(application) {\n this.application = application;\n this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n this.scopesByIdentifier = new Multimap();\n this.modulesByIdentifier = new Map();\n }\n get element() {\n return this.application.element;\n }\n get schema() {\n return this.application.schema;\n }\n get logger() {\n return this.application.logger;\n }\n get controllerAttribute() {\n return this.schema.controllerAttribute;\n }\n get modules() {\n return Array.from(this.modulesByIdentifier.values());\n }\n get contexts() {\n return this.modules.reduce((contexts, module) => contexts.concat(module.contexts), []);\n }\n start() {\n this.scopeObserver.start();\n }\n stop() {\n this.scopeObserver.stop();\n }\n loadDefinition(definition) {\n this.unloadIdentifier(definition.identifier);\n const module = new Module(this.application, definition);\n this.connectModule(module);\n const afterLoad = definition.controllerConstructor.afterLoad;\n if (afterLoad) {\n afterLoad(definition.identifier, this.application);\n }\n }\n unloadIdentifier(identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n if (module) {\n this.disconnectModule(module);\n }\n }\n getContextForElementAndIdentifier(element, identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n if (module) {\n return module.contexts.find(context => context.element == element);\n }\n }\n handleError(error, message, detail) {\n this.application.handleError(error, message, detail);\n }\n createScopeForElementAndIdentifier(element, identifier) {\n return new Scope(this.schema, element, identifier, this.logger);\n }\n scopeConnected(scope) {\n this.scopesByIdentifier.add(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.connectContextForScope(scope);\n }\n }\n scopeDisconnected(scope) {\n this.scopesByIdentifier.delete(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.disconnectContextForScope(scope);\n }\n }\n connectModule(module) {\n this.modulesByIdentifier.set(module.identifier, module);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach(scope => module.connectContextForScope(scope));\n }\n disconnectModule(module) {\n this.modulesByIdentifier.delete(module.identifier);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach(scope => module.disconnectContextForScope(scope));\n }\n}\nconst defaultSchema = {\n controllerAttribute: \"data-controller\",\n actionAttribute: \"data-action\",\n targetAttribute: \"data-target\",\n targetAttributeForScope: identifier => `data-${identifier}-target`,\n outletAttributeForScope: (identifier, outlet) => `data-${identifier}-${outlet}-outlet`,\n keyMappings: Object.assign(Object.assign({\n enter: \"Enter\",\n tab: \"Tab\",\n esc: \"Escape\",\n space: \" \",\n up: \"ArrowUp\",\n down: \"ArrowDown\",\n left: \"ArrowLeft\",\n right: \"ArrowRight\",\n home: \"Home\",\n end: \"End\"\n }, objectFromEntries(\"abcdefghijklmnopqrstuvwxyz\".split(\"\").map(c => [c, c]))), objectFromEntries(\"0123456789\".split(\"\").map(n => [n, n])))\n};\nfunction objectFromEntries(array) {\n return array.reduce((memo, _ref19) => {\n let _ref20 = _slicedToArray(_ref19, 2),\n k = _ref20[0],\n v = _ref20[1];\n return Object.assign(Object.assign({}, memo), {\n [k]: v\n });\n }, {});\n}\nclass Application {\n constructor() {\n var _this2 = this;\n let element = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document.documentElement;\n let schema = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultSchema;\n this.logger = console;\n this.debug = false;\n this.logDebugActivity = function (identifier, functionName) {\n let detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (_this2.debug) {\n _this2.logFormattedMessage(identifier, functionName, detail);\n }\n };\n this.element = element;\n this.schema = schema;\n this.dispatcher = new Dispatcher(this);\n this.router = new Router(this);\n this.actionDescriptorFilters = Object.assign({}, defaultActionDescriptorFilters);\n }\n static start(element, schema) {\n const application = new this(element, schema);\n application.start();\n return application;\n }\n async start() {\n await domReady();\n this.logDebugActivity(\"application\", \"starting\");\n this.dispatcher.start();\n this.router.start();\n this.logDebugActivity(\"application\", \"start\");\n }\n stop() {\n this.logDebugActivity(\"application\", \"stopping\");\n this.dispatcher.stop();\n this.router.stop();\n this.logDebugActivity(\"application\", \"stop\");\n }\n register(identifier, controllerConstructor) {\n this.load({\n identifier,\n controllerConstructor\n });\n }\n registerActionOption(name, filter) {\n this.actionDescriptorFilters[name] = filter;\n }\n load(head) {\n for (var _len6 = arguments.length, rest = new Array(_len6 > 1 ? _len6 - 1 : 0), _key7 = 1; _key7 < _len6; _key7++) {\n rest[_key7 - 1] = arguments[_key7];\n }\n const definitions = Array.isArray(head) ? head : [head, ...rest];\n definitions.forEach(definition => {\n if (definition.controllerConstructor.shouldLoad) {\n this.router.loadDefinition(definition);\n }\n });\n }\n unload(head) {\n for (var _len7 = arguments.length, rest = new Array(_len7 > 1 ? _len7 - 1 : 0), _key8 = 1; _key8 < _len7; _key8++) {\n rest[_key8 - 1] = arguments[_key8];\n }\n const identifiers = Array.isArray(head) ? head : [head, ...rest];\n identifiers.forEach(identifier => this.router.unloadIdentifier(identifier));\n }\n get controllers() {\n return this.router.contexts.map(context => context.controller);\n }\n getControllerForElementAndIdentifier(element, identifier) {\n const context = this.router.getContextForElementAndIdentifier(element, identifier);\n return context ? context.controller : null;\n }\n handleError(error, message, detail) {\n var _a;\n this.logger.error(`%s\\n\\n%o\\n\\n%o`, message, error, detail);\n (_a = window.onerror) === null || _a === void 0 ? void 0 : _a.call(window, message, \"\", 0, 0, error);\n }\n logFormattedMessage(identifier, functionName) {\n let detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n detail = Object.assign({\n application: this\n }, detail);\n this.logger.groupCollapsed(`${identifier} #${functionName}`);\n this.logger.log(\"details:\", Object.assign({}, detail));\n this.logger.groupEnd();\n }\n}\nfunction domReady() {\n return new Promise(resolve => {\n if (document.readyState == \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", () => resolve());\n } else {\n resolve();\n }\n });\n}\nfunction ClassPropertiesBlessing(constructor) {\n const classes = readInheritableStaticArrayValues(constructor, \"classes\");\n return classes.reduce((properties, classDefinition) => {\n return Object.assign(properties, propertiesForClassDefinition(classDefinition));\n }, {});\n}\nfunction propertiesForClassDefinition(key) {\n return {\n [`${key}Class`]: {\n get() {\n const classes = this.classes;\n if (classes.has(key)) {\n return classes.get(key);\n } else {\n const attribute = classes.getAttributeName(key);\n throw new Error(`Missing attribute \"${attribute}\"`);\n }\n }\n },\n [`${key}Classes`]: {\n get() {\n return this.classes.getAll(key);\n }\n },\n [`has${capitalize(key)}Class`]: {\n get() {\n return this.classes.has(key);\n }\n }\n };\n}\nfunction OutletPropertiesBlessing(constructor) {\n const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n return outlets.reduce((properties, outletDefinition) => {\n return Object.assign(properties, propertiesForOutletDefinition(outletDefinition));\n }, {});\n}\nfunction propertiesForOutletDefinition(name) {\n const camelizedName = namespaceCamelize(name);\n return {\n [`${camelizedName}Outlet`]: {\n get() {\n const outlet = this.outlets.find(name);\n if (outlet) {\n const outletController = this.application.getControllerForElementAndIdentifier(outlet, name);\n if (outletController) {\n return outletController;\n } else {\n throw new Error(`Missing \"data-controller=${name}\" attribute on outlet element for \"${this.identifier}\" controller`);\n }\n }\n throw new Error(`Missing outlet element \"${name}\" for \"${this.identifier}\" controller`);\n }\n },\n [`${camelizedName}Outlets`]: {\n get() {\n const outlets = this.outlets.findAll(name);\n if (outlets.length > 0) {\n return outlets.map(outlet => {\n const controller = this.application.getControllerForElementAndIdentifier(outlet, name);\n if (controller) {\n return controller;\n } else {\n console.warn(`The provided outlet element is missing the outlet controller \"${name}\" for \"${this.identifier}\"`, outlet);\n }\n }).filter(controller => controller);\n }\n return [];\n }\n },\n [`${camelizedName}OutletElement`]: {\n get() {\n const outlet = this.outlets.find(name);\n if (outlet) {\n return outlet;\n } else {\n throw new Error(`Missing outlet element \"${name}\" for \"${this.identifier}\" controller`);\n }\n }\n },\n [`${camelizedName}OutletElements`]: {\n get() {\n return this.outlets.findAll(name);\n }\n },\n [`has${capitalize(camelizedName)}Outlet`]: {\n get() {\n return this.outlets.has(name);\n }\n }\n };\n}\nfunction TargetPropertiesBlessing(constructor) {\n const targets = readInheritableStaticArrayValues(constructor, \"targets\");\n return targets.reduce((properties, targetDefinition) => {\n return Object.assign(properties, propertiesForTargetDefinition(targetDefinition));\n }, {});\n}\nfunction propertiesForTargetDefinition(name) {\n return {\n [`${name}Target`]: {\n get() {\n const target = this.targets.find(name);\n if (target) {\n return target;\n } else {\n throw new Error(`Missing target element \"${name}\" for \"${this.identifier}\" controller`);\n }\n }\n },\n [`${name}Targets`]: {\n get() {\n return this.targets.findAll(name);\n }\n },\n [`has${capitalize(name)}Target`]: {\n get() {\n return this.targets.has(name);\n }\n }\n };\n}\nfunction ValuePropertiesBlessing(constructor) {\n const valueDefinitionPairs = readInheritableStaticObjectPairs(constructor, \"values\");\n const propertyDescriptorMap = {\n valueDescriptorMap: {\n get() {\n return valueDefinitionPairs.reduce((result, valueDefinitionPair) => {\n const valueDescriptor = parseValueDefinitionPair(valueDefinitionPair, this.identifier);\n const attributeName = this.data.getAttributeNameForKey(valueDescriptor.key);\n return Object.assign(result, {\n [attributeName]: valueDescriptor\n });\n }, {});\n }\n }\n };\n return valueDefinitionPairs.reduce((properties, valueDefinitionPair) => {\n return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair));\n }, propertyDescriptorMap);\n}\nfunction propertiesForValueDefinitionPair(valueDefinitionPair, controller) {\n const definition = parseValueDefinitionPair(valueDefinitionPair, controller);\n const key = definition.key,\n name = definition.name,\n read = definition.reader,\n write = definition.writer;\n return {\n [name]: {\n get() {\n const value = this.data.get(key);\n if (value !== null) {\n return read(value);\n } else {\n return definition.defaultValue;\n }\n },\n set(value) {\n if (value === undefined) {\n this.data.delete(key);\n } else {\n this.data.set(key, write(value));\n }\n }\n },\n [`has${capitalize(name)}`]: {\n get() {\n return this.data.has(key) || definition.hasCustomDefaultValue;\n }\n }\n };\n}\nfunction parseValueDefinitionPair(_ref21, controller) {\n let _ref22 = _slicedToArray(_ref21, 2),\n token = _ref22[0],\n typeDefinition = _ref22[1];\n return valueDescriptorForTokenAndTypeDefinition({\n controller,\n token,\n typeDefinition\n });\n}\nfunction parseValueTypeConstant(constant) {\n switch (constant) {\n case Array:\n return \"array\";\n case Boolean:\n return \"boolean\";\n case Number:\n return \"number\";\n case Object:\n return \"object\";\n case String:\n return \"string\";\n }\n}\nfunction parseValueTypeDefault(defaultValue) {\n switch (typeof defaultValue) {\n case \"boolean\":\n return \"boolean\";\n case \"number\":\n return \"number\";\n case \"string\":\n return \"string\";\n }\n if (Array.isArray(defaultValue)) return \"array\";\n if (Object.prototype.toString.call(defaultValue) === \"[object Object]\") return \"object\";\n}\nfunction parseValueTypeObject(payload) {\n const typeFromObject = parseValueTypeConstant(payload.typeObject.type);\n if (!typeFromObject) return;\n const defaultValueType = parseValueTypeDefault(payload.typeObject.default);\n if (typeFromObject !== defaultValueType) {\n const propertyPath = payload.controller ? `${payload.controller}.${payload.token}` : payload.token;\n throw new Error(`The specified default value for the Stimulus Value \"${propertyPath}\" must match the defined type \"${typeFromObject}\". The provided default value of \"${payload.typeObject.default}\" is of type \"${defaultValueType}\".`);\n }\n return typeFromObject;\n}\nfunction parseValueTypeDefinition(payload) {\n const typeFromObject = parseValueTypeObject({\n controller: payload.controller,\n token: payload.token,\n typeObject: payload.typeDefinition\n });\n const typeFromDefaultValue = parseValueTypeDefault(payload.typeDefinition);\n const typeFromConstant = parseValueTypeConstant(payload.typeDefinition);\n const type = typeFromObject || typeFromDefaultValue || typeFromConstant;\n if (type) return type;\n const propertyPath = payload.controller ? `${payload.controller}.${payload.typeDefinition}` : payload.token;\n throw new Error(`Unknown value type \"${propertyPath}\" for \"${payload.token}\" value`);\n}\nfunction defaultValueForDefinition(typeDefinition) {\n const constant = parseValueTypeConstant(typeDefinition);\n if (constant) return defaultValuesByType[constant];\n const defaultValue = typeDefinition.default;\n if (defaultValue !== undefined) return defaultValue;\n return typeDefinition;\n}\nfunction valueDescriptorForTokenAndTypeDefinition(payload) {\n const key = `${dasherize(payload.token)}-value`;\n const type = parseValueTypeDefinition(payload);\n return {\n type,\n key,\n name: camelize(key),\n get defaultValue() {\n return defaultValueForDefinition(payload.typeDefinition);\n },\n get hasCustomDefaultValue() {\n return parseValueTypeDefault(payload.typeDefinition) !== undefined;\n },\n reader: readers[type],\n writer: writers[type] || writers.default\n };\n}\nconst defaultValuesByType = {\n get array() {\n return [];\n },\n boolean: false,\n number: 0,\n get object() {\n return {};\n },\n string: \"\"\n};\nconst readers = {\n array(value) {\n const array = JSON.parse(value);\n if (!Array.isArray(array)) {\n throw new TypeError(`expected value of type \"array\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(array)}\"`);\n }\n return array;\n },\n boolean(value) {\n return !(value == \"0\" || String(value).toLowerCase() == \"false\");\n },\n number(value) {\n return Number(value);\n },\n object(value) {\n const object = JSON.parse(value);\n if (object === null || typeof object != \"object\" || Array.isArray(object)) {\n throw new TypeError(`expected value of type \"object\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(object)}\"`);\n }\n return object;\n },\n string(value) {\n return value;\n }\n};\nconst writers = {\n default: writeString,\n array: writeJSON,\n object: writeJSON\n};\nfunction writeJSON(value) {\n return JSON.stringify(value);\n}\nfunction writeString(value) {\n return `${value}`;\n}\nclass Controller {\n constructor(context) {\n this.context = context;\n }\n static get shouldLoad() {\n return true;\n }\n static afterLoad(_identifier, _application) {\n return;\n }\n get application() {\n return this.context.application;\n }\n get scope() {\n return this.context.scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get targets() {\n return this.scope.targets;\n }\n get outlets() {\n return this.scope.outlets;\n }\n get classes() {\n return this.scope.classes;\n }\n get data() {\n return this.scope.data;\n }\n initialize() {}\n connect() {}\n disconnect() {}\n dispatch(eventName) {\n let _ref23 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref23$target = _ref23.target,\n target = _ref23$target === void 0 ? this.element : _ref23$target,\n _ref23$detail = _ref23.detail,\n detail = _ref23$detail === void 0 ? {} : _ref23$detail,\n _ref23$prefix = _ref23.prefix,\n prefix = _ref23$prefix === void 0 ? this.identifier : _ref23$prefix,\n _ref23$bubbles = _ref23.bubbles,\n bubbles = _ref23$bubbles === void 0 ? true : _ref23$bubbles,\n _ref23$cancelable = _ref23.cancelable,\n cancelable = _ref23$cancelable === void 0 ? true : _ref23$cancelable;\n const type = prefix ? `${prefix}:${eventName}` : eventName;\n const event = new CustomEvent(type, {\n detail,\n bubbles,\n cancelable\n });\n target.dispatchEvent(event);\n return event;\n }\n}\nController.blessings = [ClassPropertiesBlessing, TargetPropertiesBlessing, ValuePropertiesBlessing, OutletPropertiesBlessing];\nController.targets = [];\nController.outlets = [];\nController.values = {};\nexport { Application, AttributeObserver, Context, Controller, ElementObserver, IndexedMultimap, Multimap, SelectorObserver, StringMapObserver, TokenListObserver, ValueListObserver, add, defaultSchema, del, fetch, prune };","// This file is auto-generated by ./bin/rails stimulus:manifest:update\n// Run that command whenever you add a new controller or create them with\n// ./bin/rails generate stimulus controllerName\n\nimport { Application } from \"@hotwired/stimulus\"\nimport { definitionsFromContext } from \"@hotwired/stimulus-webpack-helpers\"\n\nconst application = Application.start()\n\n// Configure Stimulus development experience\napplication.debug = false\nwindow.Stimulus = application\n\nconst context = require.context(\"./\", true, /\\.js$/)\nStimulus.load(definitionsFromContext(context))\n","/*\nStimulus Webpack Helpers 1.0.0\nCopyright © 2021 Basecamp, LLC\n */\nfunction definitionsFromContext(context) {\n return context.keys().map(key => definitionForModuleWithContextAndKey(context, key)).filter(value => value);\n}\nfunction definitionForModuleWithContextAndKey(context, key) {\n const identifier = identifierForContextKey(key);\n if (identifier) {\n return definitionForModuleAndIdentifier(context(key), identifier);\n }\n}\nfunction definitionForModuleAndIdentifier(module, identifier) {\n const controllerConstructor = module.default;\n if (typeof controllerConstructor == \"function\") {\n return {\n identifier,\n controllerConstructor\n };\n }\n}\nfunction identifierForContextKey(key) {\n const logicalName = (key.match(/^(?:\\.\\/)?(.+)(?:[_-]controller\\..+?)$/) || [])[1];\n if (logicalName) {\n return logicalName.replace(/_/g, \"-\").replace(/\\//g, \"--\");\n }\n}\nexport { definitionForModuleAndIdentifier, definitionForModuleWithContextAndKey, definitionsFromContext, identifierForContextKey };","// This file is automatically compiled by Webpack, along with any other files\n// present in this directory. You're encouraged to place your actual application logic in\n// a relevant structure within app/javascript and only use these pack files to reference\n// that code so it'll be compiled.\n\nwindow.Rails = require(\"@rails/ujs\")\nrequire(\"@hotwired/turbo-rails\")\n\nRails.start()\nimport \"controllers\"\n","/*\nUnobtrusive JavaScript\nhttps://github.com/rails/rails/blob/main/actionview/app/assets/javascripts\nReleased under the MIT license\n */;\n(function () {\n var context = this;\n (function () {\n (function () {\n this.Rails = {\n linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]',\n buttonClickSelector: {\n selector: 'button[data-remote]:not([form]), button[data-confirm]:not([form])',\n exclude: 'form button'\n },\n inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]',\n formSubmitSelector: 'form:not([data-turbo=true])',\n formInputClickSelector: 'form:not([data-turbo=true]) input[type=submit], form:not([data-turbo=true]) input[type=image], form:not([data-turbo=true]) button[type=submit], form:not([data-turbo=true]) button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])',\n formDisableSelector: 'input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled',\n formEnableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled',\n fileInputSelector: 'input[name][type=file]:not([disabled])',\n linkDisableSelector: 'a[data-disable-with], a[data-disable]',\n buttonDisableSelector: 'button[data-remote][data-disable-with], button[data-remote][data-disable]'\n };\n }).call(this);\n }).call(context);\n var Rails = context.Rails;\n (function () {\n (function () {\n var nonce;\n nonce = null;\n Rails.loadCSPNonce = function () {\n var ref;\n return nonce = (ref = document.querySelector(\"meta[name=csp-nonce]\")) != null ? ref.content : void 0;\n };\n Rails.cspNonce = function () {\n return nonce != null ? nonce : Rails.loadCSPNonce();\n };\n }).call(this);\n (function () {\n var expando, m;\n m = Element.prototype.matches || Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector;\n Rails.matches = function (element, selector) {\n if (selector.exclude != null) {\n return m.call(element, selector.selector) && !m.call(element, selector.exclude);\n } else {\n return m.call(element, selector);\n }\n };\n expando = '_ujsData';\n Rails.getData = function (element, key) {\n var ref;\n return (ref = element[expando]) != null ? ref[key] : void 0;\n };\n Rails.setData = function (element, key, value) {\n if (element[expando] == null) {\n element[expando] = {};\n }\n return element[expando][key] = value;\n };\n Rails.$ = function (selector) {\n return Array.prototype.slice.call(document.querySelectorAll(selector));\n };\n }).call(this);\n (function () {\n var $, csrfParam, csrfToken;\n $ = Rails.$;\n csrfToken = Rails.csrfToken = function () {\n var meta;\n meta = document.querySelector('meta[name=csrf-token]');\n return meta && meta.content;\n };\n csrfParam = Rails.csrfParam = function () {\n var meta;\n meta = document.querySelector('meta[name=csrf-param]');\n return meta && meta.content;\n };\n Rails.CSRFProtection = function (xhr) {\n var token;\n token = csrfToken();\n if (token != null) {\n return xhr.setRequestHeader('X-CSRF-Token', token);\n }\n };\n Rails.refreshCSRFTokens = function () {\n var param, token;\n token = csrfToken();\n param = csrfParam();\n if (token != null && param != null) {\n return $('form input[name=\"' + param + '\"]').forEach(function (input) {\n return input.value = token;\n });\n }\n };\n }).call(this);\n (function () {\n var CustomEvent, fire, matches, preventDefault;\n matches = Rails.matches;\n CustomEvent = window.CustomEvent;\n if (typeof CustomEvent !== 'function') {\n CustomEvent = function (event, params) {\n var evt;\n evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n };\n CustomEvent.prototype = window.Event.prototype;\n preventDefault = CustomEvent.prototype.preventDefault;\n CustomEvent.prototype.preventDefault = function () {\n var result;\n result = preventDefault.call(this);\n if (this.cancelable && !this.defaultPrevented) {\n Object.defineProperty(this, 'defaultPrevented', {\n get: function () {\n return true;\n }\n });\n }\n return result;\n };\n }\n fire = Rails.fire = function (obj, name, data) {\n var event;\n event = new CustomEvent(name, {\n bubbles: true,\n cancelable: true,\n detail: data\n });\n obj.dispatchEvent(event);\n return !event.defaultPrevented;\n };\n Rails.stopEverything = function (e) {\n fire(e.target, 'ujs:everythingStopped');\n e.preventDefault();\n e.stopPropagation();\n return e.stopImmediatePropagation();\n };\n Rails.delegate = function (element, selector, eventType, handler) {\n return element.addEventListener(eventType, function (e) {\n var target;\n target = e.target;\n while (!(!(target instanceof Element) || matches(target, selector))) {\n target = target.parentNode;\n }\n if (target instanceof Element && handler.call(target, e) === false) {\n e.preventDefault();\n return e.stopPropagation();\n }\n });\n };\n }).call(this);\n (function () {\n var AcceptHeaders, CSRFProtection, createXHR, cspNonce, fire, prepareOptions, processResponse;\n cspNonce = Rails.cspNonce, CSRFProtection = Rails.CSRFProtection, fire = Rails.fire;\n AcceptHeaders = {\n '*': '*/*',\n text: 'text/plain',\n html: 'text/html',\n xml: 'application/xml, text/xml',\n json: 'application/json, text/javascript',\n script: 'text/javascript, application/javascript, application/ecmascript, application/x-ecmascript'\n };\n Rails.ajax = function (options) {\n var xhr;\n options = prepareOptions(options);\n xhr = createXHR(options, function () {\n var ref, response;\n response = processResponse((ref = xhr.response) != null ? ref : xhr.responseText, xhr.getResponseHeader('Content-Type'));\n if (Math.floor(xhr.status / 100) === 2) {\n if (typeof options.success === \"function\") {\n options.success(response, xhr.statusText, xhr);\n }\n } else {\n if (typeof options.error === \"function\") {\n options.error(response, xhr.statusText, xhr);\n }\n }\n return typeof options.complete === \"function\" ? options.complete(xhr, xhr.statusText) : void 0;\n });\n if (options.beforeSend != null && !options.beforeSend(xhr, options)) {\n return false;\n }\n if (xhr.readyState === XMLHttpRequest.OPENED) {\n return xhr.send(options.data);\n }\n };\n prepareOptions = function (options) {\n options.url = options.url || location.href;\n options.type = options.type.toUpperCase();\n if (options.type === 'GET' && options.data) {\n if (options.url.indexOf('?') < 0) {\n options.url += '?' + options.data;\n } else {\n options.url += '&' + options.data;\n }\n }\n if (AcceptHeaders[options.dataType] == null) {\n options.dataType = '*';\n }\n options.accept = AcceptHeaders[options.dataType];\n if (options.dataType !== '*') {\n options.accept += ', */*; q=0.01';\n }\n return options;\n };\n createXHR = function (options, done) {\n var xhr;\n xhr = new XMLHttpRequest();\n xhr.open(options.type, options.url, true);\n xhr.setRequestHeader('Accept', options.accept);\n if (typeof options.data === 'string') {\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');\n }\n if (!options.crossDomain) {\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n CSRFProtection(xhr);\n }\n xhr.withCredentials = !!options.withCredentials;\n xhr.onreadystatechange = function () {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n return done(xhr);\n }\n };\n return xhr;\n };\n processResponse = function (response, type) {\n var parser, script;\n if (typeof response === 'string' && typeof type === 'string') {\n if (type.match(/\\bjson\\b/)) {\n try {\n response = JSON.parse(response);\n } catch (error) {}\n } else if (type.match(/\\b(?:java|ecma)script\\b/)) {\n script = document.createElement('script');\n script.setAttribute('nonce', cspNonce());\n script.text = response;\n document.head.appendChild(script).parentNode.removeChild(script);\n } else if (type.match(/\\b(xml|html|svg)\\b/)) {\n parser = new DOMParser();\n type = type.replace(/;.+/, '');\n try {\n response = parser.parseFromString(response, type);\n } catch (error) {}\n }\n }\n return response;\n };\n Rails.href = function (element) {\n return element.href;\n };\n Rails.isCrossDomain = function (url) {\n var e, originAnchor, urlAnchor;\n originAnchor = document.createElement('a');\n originAnchor.href = location.href;\n urlAnchor = document.createElement('a');\n try {\n urlAnchor.href = url;\n return !((!urlAnchor.protocol || urlAnchor.protocol === ':') && !urlAnchor.host || originAnchor.protocol + '//' + originAnchor.host === urlAnchor.protocol + '//' + urlAnchor.host);\n } catch (error) {\n e = error;\n return true;\n }\n };\n }).call(this);\n (function () {\n var matches, toArray;\n matches = Rails.matches;\n toArray = function (e) {\n return Array.prototype.slice.call(e);\n };\n Rails.serializeElement = function (element, additionalParam) {\n var inputs, params;\n inputs = [element];\n if (matches(element, 'form')) {\n inputs = toArray(element.elements);\n }\n params = [];\n inputs.forEach(function (input) {\n if (!input.name || input.disabled) {\n return;\n }\n if (matches(input, 'fieldset[disabled] *')) {\n return;\n }\n if (matches(input, 'select')) {\n return toArray(input.options).forEach(function (option) {\n if (option.selected) {\n return params.push({\n name: input.name,\n value: option.value\n });\n }\n });\n } else if (input.checked || ['radio', 'checkbox', 'submit'].indexOf(input.type) === -1) {\n return params.push({\n name: input.name,\n value: input.value\n });\n }\n });\n if (additionalParam) {\n params.push(additionalParam);\n }\n return params.map(function (param) {\n if (param.name != null) {\n return encodeURIComponent(param.name) + \"=\" + encodeURIComponent(param.value);\n } else {\n return param;\n }\n }).join('&');\n };\n Rails.formElements = function (form, selector) {\n if (matches(form, 'form')) {\n return toArray(form.elements).filter(function (el) {\n return matches(el, selector);\n });\n } else {\n return toArray(form.querySelectorAll(selector));\n }\n };\n }).call(this);\n (function () {\n var allowAction, fire, stopEverything;\n fire = Rails.fire, stopEverything = Rails.stopEverything;\n Rails.handleConfirm = function (e) {\n if (!allowAction(this)) {\n return stopEverything(e);\n }\n };\n Rails.confirm = function (message, element) {\n return confirm(message);\n };\n allowAction = function (element) {\n var answer, callback, message;\n message = element.getAttribute('data-confirm');\n if (!message) {\n return true;\n }\n answer = false;\n if (fire(element, 'confirm')) {\n try {\n answer = Rails.confirm(message, element);\n } catch (error) {}\n callback = fire(element, 'confirm:complete', [answer]);\n }\n return answer && callback;\n };\n }).call(this);\n (function () {\n var disableFormElement, disableFormElements, disableLinkElement, enableFormElement, enableFormElements, enableLinkElement, formElements, getData, isXhrRedirect, matches, setData, stopEverything;\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, stopEverything = Rails.stopEverything, formElements = Rails.formElements;\n Rails.handleDisabledElement = function (e) {\n var element;\n element = this;\n if (element.disabled) {\n return stopEverything(e);\n }\n };\n Rails.enableElement = function (e) {\n var element;\n if (e instanceof Event) {\n if (isXhrRedirect(e)) {\n return;\n }\n element = e.target;\n } else {\n element = e;\n }\n if (matches(element, Rails.linkDisableSelector)) {\n return enableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formEnableSelector)) {\n return enableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return enableFormElements(element);\n }\n };\n Rails.disableElement = function (e) {\n var element;\n element = e instanceof Event ? e.target : e;\n if (matches(element, Rails.linkDisableSelector)) {\n return disableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formDisableSelector)) {\n return disableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return disableFormElements(element);\n }\n };\n disableLinkElement = function (element) {\n var replacement;\n if (getData(element, 'ujs:disabled')) {\n return;\n }\n replacement = element.getAttribute('data-disable-with');\n if (replacement != null) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n }\n element.addEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', true);\n };\n enableLinkElement = function (element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n if (originalText != null) {\n element.innerHTML = originalText;\n setData(element, 'ujs:enable-with', null);\n }\n element.removeEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', null);\n };\n disableFormElements = function (form) {\n return formElements(form, Rails.formDisableSelector).forEach(disableFormElement);\n };\n disableFormElement = function (element) {\n var replacement;\n if (getData(element, 'ujs:disabled')) {\n return;\n }\n replacement = element.getAttribute('data-disable-with');\n if (replacement != null) {\n if (matches(element, 'button')) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n } else {\n setData(element, 'ujs:enable-with', element.value);\n element.value = replacement;\n }\n }\n element.disabled = true;\n return setData(element, 'ujs:disabled', true);\n };\n enableFormElements = function (form) {\n return formElements(form, Rails.formEnableSelector).forEach(enableFormElement);\n };\n enableFormElement = function (element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n if (originalText != null) {\n if (matches(element, 'button')) {\n element.innerHTML = originalText;\n } else {\n element.value = originalText;\n }\n setData(element, 'ujs:enable-with', null);\n }\n element.disabled = false;\n return setData(element, 'ujs:disabled', null);\n };\n isXhrRedirect = function (event) {\n var ref, xhr;\n xhr = (ref = event.detail) != null ? ref[0] : void 0;\n return (xhr != null ? xhr.getResponseHeader(\"X-Xhr-Redirect\") : void 0) != null;\n };\n }).call(this);\n (function () {\n var stopEverything;\n stopEverything = Rails.stopEverything;\n Rails.handleMethod = function (e) {\n var csrfParam, csrfToken, form, formContent, href, link, method;\n link = this;\n method = link.getAttribute('data-method');\n if (!method) {\n return;\n }\n href = Rails.href(link);\n csrfToken = Rails.csrfToken();\n csrfParam = Rails.csrfParam();\n form = document.createElement('form');\n formContent = \"\";\n if (csrfParam != null && csrfToken != null && !Rails.isCrossDomain(href)) {\n formContent += \"\";\n }\n formContent += '';\n form.method = 'post';\n form.action = href;\n form.target = link.target;\n form.innerHTML = formContent;\n form.style.display = 'none';\n document.body.appendChild(form);\n form.querySelector('[type=\"submit\"]').click();\n return stopEverything(e);\n };\n }).call(this);\n (function () {\n var ajax,\n fire,\n getData,\n isCrossDomain,\n isRemote,\n matches,\n serializeElement,\n setData,\n stopEverything,\n slice = [].slice;\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, fire = Rails.fire, stopEverything = Rails.stopEverything, ajax = Rails.ajax, isCrossDomain = Rails.isCrossDomain, serializeElement = Rails.serializeElement;\n isRemote = function (element) {\n var value;\n value = element.getAttribute('data-remote');\n return value != null && value !== 'false';\n };\n Rails.handleRemote = function (e) {\n var button, data, dataType, element, method, url, withCredentials;\n element = this;\n if (!isRemote(element)) {\n return true;\n }\n if (!fire(element, 'ajax:before')) {\n fire(element, 'ajax:stopped');\n return false;\n }\n withCredentials = element.getAttribute('data-with-credentials');\n dataType = element.getAttribute('data-type') || 'script';\n if (matches(element, Rails.formSubmitSelector)) {\n button = getData(element, 'ujs:submit-button');\n method = getData(element, 'ujs:submit-button-formmethod') || element.method;\n url = getData(element, 'ujs:submit-button-formaction') || element.getAttribute('action') || location.href;\n if (method.toUpperCase() === 'GET') {\n url = url.replace(/\\?.*$/, '');\n }\n if (element.enctype === 'multipart/form-data') {\n data = new FormData(element);\n if (button != null) {\n data.append(button.name, button.value);\n }\n } else {\n data = serializeElement(element, button);\n }\n setData(element, 'ujs:submit-button', null);\n setData(element, 'ujs:submit-button-formmethod', null);\n setData(element, 'ujs:submit-button-formaction', null);\n } else if (matches(element, Rails.buttonClickSelector) || matches(element, Rails.inputChangeSelector)) {\n method = element.getAttribute('data-method');\n url = element.getAttribute('data-url');\n data = serializeElement(element, element.getAttribute('data-params'));\n } else {\n method = element.getAttribute('data-method');\n url = Rails.href(element);\n data = element.getAttribute('data-params');\n }\n ajax({\n type: method || 'GET',\n url: url,\n data: data,\n dataType: dataType,\n beforeSend: function (xhr, options) {\n if (fire(element, 'ajax:beforeSend', [xhr, options])) {\n return fire(element, 'ajax:send', [xhr]);\n } else {\n fire(element, 'ajax:stopped');\n return false;\n }\n },\n success: function () {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:success', args);\n },\n error: function () {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:error', args);\n },\n complete: function () {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:complete', args);\n },\n crossDomain: isCrossDomain(url),\n withCredentials: withCredentials != null && withCredentials !== 'false'\n });\n return stopEverything(e);\n };\n Rails.formSubmitButtonClick = function (e) {\n var button, form;\n button = this;\n form = button.form;\n if (!form) {\n return;\n }\n if (button.name) {\n setData(form, 'ujs:submit-button', {\n name: button.name,\n value: button.value\n });\n }\n setData(form, 'ujs:formnovalidate-button', button.formNoValidate);\n setData(form, 'ujs:submit-button-formaction', button.getAttribute('formaction'));\n return setData(form, 'ujs:submit-button-formmethod', button.getAttribute('formmethod'));\n };\n Rails.preventInsignificantClick = function (e) {\n var data, insignificantMetaClick, link, metaClick, method, nonPrimaryMouseClick;\n link = this;\n method = (link.getAttribute('data-method') || 'GET').toUpperCase();\n data = link.getAttribute('data-params');\n metaClick = e.metaKey || e.ctrlKey;\n insignificantMetaClick = metaClick && method === 'GET' && !data;\n nonPrimaryMouseClick = e.button != null && e.button !== 0;\n if (nonPrimaryMouseClick || insignificantMetaClick) {\n return e.stopImmediatePropagation();\n }\n };\n }).call(this);\n (function () {\n var $, CSRFProtection, delegate, disableElement, enableElement, fire, formSubmitButtonClick, getData, handleConfirm, handleDisabledElement, handleMethod, handleRemote, loadCSPNonce, preventInsignificantClick, refreshCSRFTokens;\n fire = Rails.fire, delegate = Rails.delegate, getData = Rails.getData, $ = Rails.$, refreshCSRFTokens = Rails.refreshCSRFTokens, CSRFProtection = Rails.CSRFProtection, loadCSPNonce = Rails.loadCSPNonce, enableElement = Rails.enableElement, disableElement = Rails.disableElement, handleDisabledElement = Rails.handleDisabledElement, handleConfirm = Rails.handleConfirm, preventInsignificantClick = Rails.preventInsignificantClick, handleRemote = Rails.handleRemote, formSubmitButtonClick = Rails.formSubmitButtonClick, handleMethod = Rails.handleMethod;\n if (typeof jQuery !== \"undefined\" && jQuery !== null && jQuery.ajax != null) {\n if (jQuery.rails) {\n throw new Error('If you load both jquery_ujs and rails-ujs, use rails-ujs only.');\n }\n jQuery.rails = Rails;\n jQuery.ajaxPrefilter(function (options, originalOptions, xhr) {\n if (!options.crossDomain) {\n return CSRFProtection(xhr);\n }\n });\n }\n Rails.start = function () {\n if (window._rails_loaded) {\n throw new Error('rails-ujs has already been loaded!');\n }\n window.addEventListener('pageshow', function () {\n $(Rails.formEnableSelector).forEach(function (el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n return $(Rails.linkDisableSelector).forEach(function (el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n });\n delegate(document, Rails.linkDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.linkDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.linkClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.linkClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.linkClickSelector, 'click', handleConfirm);\n delegate(document, Rails.linkClickSelector, 'click', disableElement);\n delegate(document, Rails.linkClickSelector, 'click', handleRemote);\n delegate(document, Rails.linkClickSelector, 'click', handleMethod);\n delegate(document, Rails.buttonClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.buttonClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleConfirm);\n delegate(document, Rails.buttonClickSelector, 'click', disableElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleRemote);\n delegate(document, Rails.inputChangeSelector, 'change', handleDisabledElement);\n delegate(document, Rails.inputChangeSelector, 'change', handleConfirm);\n delegate(document, Rails.inputChangeSelector, 'change', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', handleDisabledElement);\n delegate(document, Rails.formSubmitSelector, 'submit', handleConfirm);\n delegate(document, Rails.formSubmitSelector, 'submit', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', function (e) {\n return setTimeout(function () {\n return disableElement(e);\n }, 13);\n });\n delegate(document, Rails.formSubmitSelector, 'ajax:send', disableElement);\n delegate(document, Rails.formSubmitSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.formInputClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.formInputClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.formInputClickSelector, 'click', handleConfirm);\n delegate(document, Rails.formInputClickSelector, 'click', formSubmitButtonClick);\n document.addEventListener('DOMContentLoaded', refreshCSRFTokens);\n document.addEventListener('DOMContentLoaded', loadCSPNonce);\n return window._rails_loaded = true;\n };\n if (window.Rails === Rails && fire(document, 'rails:attachBindings')) {\n Rails.start();\n }\n }).call(this);\n }).call(this);\n if (typeof module === \"object\" && module.exports) {\n module.exports = Rails;\n } else if (typeof define === \"function\" && define.amd) {\n define(Rails);\n }\n}).call(this);","var map = {\n\t\"./adt_trusted_form_controller.js\": 9,\n\t\"./button_controller.js\": 10,\n\t\"./claim_reason_controller.js\": 23,\n\t\"./click_track_controller.js\": 11,\n\t\"./clipboard_controller.js\": 12,\n\t\"./detail_controller.js\": 13,\n\t\"./dropdown_controller.js\": 14,\n\t\"./flash_fade_controller.js\": 15,\n\t\"./hello_controller.js\": 16,\n\t\"./index.js\": 2,\n\t\"./policy_request_totals_controller.js\": 17,\n\t\"./policy_type_form_controller.js\": 18,\n\t\"./realtor_apply_button_controller.js\": 19,\n\t\"./resize_controller.js\": 20,\n\t\"./select_navigation_controller.js\": 21,\n\t\"./submit_policy_input_controller.js\": 22\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 8;","import { Controller } from \"@hotwired/stimulus\"\n\n// Ensures we clean up the remnants of ADT's TrustedForm implementation\n// before navigating away from the Home Security offer page\n\nexport default class extends Controller {\n connect() {\n console.info(\"ADT TrustedForm Controller: connected\", this.element);\n }\n \n disconnect() {\n document.querySelector('[src*=\"cdn.trustedform.com\"]')?.remove();\n document.getElementById(\"trusted-form-noscript\")?.remove();\n trustedFormStopRecording();\n console.info('ADT TrustedForm Controller: disconnected');\n }\n}","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n\n connect() {\n console.info(\"Hello, from button Controller!\", this.element)\n }\n\n emitMessage(event) {\n window.top.postMessage('clicked-button', '*')\n }\n}","// This is useful for tracking user interactions with a page. For example,\n// you could use this to track how many times a user clicks a button.\n\n{/* \n\n*/}\n\n\nimport { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static values = {\n hasClickedAlready: { type: Boolean, default: false },\n url: String,\n }\n\n connect() {\n console.info(\"Connected to the click track controller\")\n console.info(this.urlValue)\n }\n \n track() {\n if (!this.hasClickedAlreadyValue) {\n fetch(this.urlValue, {\n method: 'POST',\n credentials: 'same-origin',\n headers: {\n 'Content-Type': 'application/json',\n 'X-CSRF-Token': getMetaValue(\"csrf-token\")\n },\n }).then(() => {\n this.hasClickedAlreadyValue = true\n })\n }\n }\n}\n\nfunction getMetaValue(name) {\n const element = document.head.querySelector(`meta[name=\"${name}\"]`)\n return element.getAttribute(\"content\")\n}","// The user can click a button and copy text to the clipboard\n\n//
\n//
\n// Inner text to be copied\n//
\n// \n//
\n\n\n// ...the `buttonTarget` does not need to necessarily be a button. For example...\n\n// \n\n\n// ...and the clipboard target can be an input field as well...\n\n// \n\nimport { Controller } from \"@hotwired/stimulus\"\n\nexport default class Clipboard extends Controller {\n static targets = [\"button\", \"source\"]\n static values = {\n successContent: String,\n successDuration: {\n type: Number,\n default: 2000,\n },\n }\n\n connect() {\n console.info(\"Hello from clipboard controller\")\n if (!this.hasButtonTarget) return\n\n this.originalContent = this.buttonTarget.innerHTML\n }\n\n copy(event) {\n event.preventDefault()\n\n const text = (this.sourceTarget.innerHTML || this.sourceTarget.value).trim()\n\n navigator.clipboard.writeText(text).then(() => this.copied())\n }\n\n copied() {\n if (!this.hasButtonTarget) return\n\n if (this.timeout) {\n clearTimeout(this.timeout)\n }\n\n this.buttonTarget.innerHTML = this.successContentValue\n\n this.timeout = setTimeout(() => {\n this.buttonTarget.innerHTML = this.originalContent\n }, this.successDurationValue)\n }\n}","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n connect() {\n console.log(\"Detail controller connected\");\n }\n\n button = document.querySelector('[data-name=\"submit-button\"]');\n isNative = this.button && this.button.dataset.isNative;\n focus() {\n if (this.isNative) {\n this.button.style.marginBottom = '260px';\n this.button.scrollIntoView({ behavior: 'smooth', block: 'start' });\n }\n }\n\n blur() {\n if (this.isNative) {\n this.button.style.marginBottom = '10px';\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static targets = [\"menu\"]\n\n connect() {\n this.menuTarget.classList.add(\"hidden\");\n }\n\n toggle(event) {\n event.stopPropagation();\n this.menuTarget.classList.toggle(\"hidden\");\n }\n\n close(event) {\n if (!this.element.contains(event.target)) {\n this.menuTarget.classList.add(\"hidden\");\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n connect() {\n setTimeout(() => { \n this.dismiss();\n }, 5000);\n }\n\n dismiss() {\n this.element.remove();\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n connect() {\n console.log(\"Hello, Stimulus!\", this.element)\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\n// https://stackoverflow.com/questions/10473994/javascript-adding-decimal-numbers-issue\nconst roundNumber = (number, decimals) => parseFloat(new Number(number+'').toFixed(parseInt(decimals)))\n\nlet USDollar = new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD',\n})\n\nexport default class extends Controller {\n static targets = [ \"hiddenInput\", \"total\", \"years\", \"plan\", \"addons\", \"planTypeInput\", \"hiddenQuantityInput\", \"display\", \"planLengthInput\" ]\n\n connect() {\n this.calculate()\n }\n \n calculate() {\n const years = this.findCurrentYearsSelected()\n const planValue = this.findCurrentSelectedPlanValue()\n const totalPlanValue = years * planValue\n const plusMinusValues = this.plusMinusValues(years)\n const checkboxValues = this.checkboxValues(years)\n const addOnsTotal = roundNumber(plusMinusValues + checkboxValues, 12) \n const grandTotal = roundNumber(totalPlanValue + addOnsTotal, 12)\n \n this.planTarget.textContent = `${USDollar.format(totalPlanValue)}`\n this.yearsTarget.textContent = `${years}`\n this.addonsTarget.textContent = `${USDollar.format(addOnsTotal)}`\n this.totalTarget.textContent = `${USDollar.format(grandTotal)}`\n }\n \n findCurrentYearsSelected() {\n return this.planLengthInputTargets.find((element) => element.checked).value\n }\n \n findCurrentSelectedPlanValue() {\n return parseFloat(this.planTypeInputTargets.find((element) => element.checked).dataset.price)\n }\n \n plusMinusValues(years) {\n return this.hiddenQuantityInputTargets.reduce((accumulator, element) => \n accumulator + parseFloat(element.dataset.unitPrice) * element.value,\n 0.0\n ) * years\n }\n \n checkboxValues(years) {\n return this.hiddenInputTargets.reduce((accumulator, element) => \n element.checked ? accumulator + parseFloat(element.dataset.unitPrice) : accumulator,\n 0.0\n ) * years\n }\n\n handleQuantityChange(event) {\n const key = event.params.key;\n const operation = event.params.operation;\n const hiddenInput = this.hiddenQuantityInputTargets.find(input => input.dataset.key === key);\n const display = this.displayTargets.find(span => span.dataset.policyRequestTotalsKeyParam === key);\n\n if (hiddenInput && display) {\n let currentValue = parseInt(hiddenInput.value, 10) || 0;\n if (operation === \"plus\" && currentValue < 3) {\n currentValue++;\n } else if (operation === \"minus\" && currentValue > 0) {\n currentValue--;\n }\n hiddenInput.value = currentValue;\n display.textContent = currentValue;\n }\n this.calculate()\n }\n\n openModal() {\n document.querySelector('#modal').classList.remove('hidden');\n document.body.style.overflow = 'hidden';\n }\n \n closeModal() {\n document.querySelector('#modal').classList.add('hidden');\n document.body.style.overflow = 'auto';\n }\n}","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static targets = [\"form\"]\n\n connect() {\n console.log(\"Policy form Stimulus controller connected\");\n }\n\n submitForm() {\n this.formTarget.submit();\n }\n}","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"option\", \"button\"]\n static classes = [\"hidden\"]\n\n connect() {\n console.log(\"Hello from Realtor Apply Button\")\n this.class = this.hasHiddenClass ? this.hiddenClass : \"hidden\"\n }\n \n change(e) {\n if (e.target.value == 'realtor') {\n this.buttonTargets.forEach((item) => {\n item.classList.remove('hidden')\n })\n } else {\n this.buttonTargets.forEach((item) => {\n item.classList.add('hidden')\n })\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n connect() {\n console.log(\"Resize controller connected\")\n this.resizeEnabled = this.element.dataset.isNative\n if (this.resizeEnabled) {\n this.initialMarginBottom = this.element.style.marginBottom\n this.element.style.marginBottom = '260px'\n }\n }\n\n focus(event) {\n if (this.resizeEnabled) {\n event.target.style['scroll-margin-top'] = '25px'\n event.target.scrollIntoView({ behavior: 'smooth', block: 'start' })\n }\n }\n}\n","// Borrowed from https://gist.github.com/leehericks/cbba7a305dff07daa57ae487380656f9\n\nimport { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n \n navigate(event) {\n let location = this.extract_location(event.target)\n Turbo.visit(location)\n }\n\n extract_location(select) {\n return select.options[select.selectedIndex].value\n }\n}\n","// This file is a workaround for a bug in web browsers' \"native\"\n// ES6 importing system which is uncapable of importing \"*.json\" files.\n// https://github.com/catamphetamine/libphonenumber-js/issues/239\nexport default {\n \"version\": 4,\n \"country_calling_codes\": {\n \"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\"],\n \"7\": [\"RU\", \"KZ\"],\n \"20\": [\"EG\"],\n \"27\": [\"ZA\"],\n \"30\": [\"GR\"],\n \"31\": [\"NL\"],\n \"32\": [\"BE\"],\n \"33\": [\"FR\"],\n \"34\": [\"ES\"],\n \"36\": [\"HU\"],\n \"39\": [\"IT\", \"VA\"],\n \"40\": [\"RO\"],\n \"41\": [\"CH\"],\n \"43\": [\"AT\"],\n \"44\": [\"GB\", \"GG\", \"IM\", \"JE\"],\n \"45\": [\"DK\"],\n \"46\": [\"SE\"],\n \"47\": [\"NO\", \"SJ\"],\n \"48\": [\"PL\"],\n \"49\": [\"DE\"],\n \"51\": [\"PE\"],\n \"52\": [\"MX\"],\n \"53\": [\"CU\"],\n \"54\": [\"AR\"],\n \"55\": [\"BR\"],\n \"56\": [\"CL\"],\n \"57\": [\"CO\"],\n \"58\": [\"VE\"],\n \"60\": [\"MY\"],\n \"61\": [\"AU\", \"CC\", \"CX\"],\n \"62\": [\"ID\"],\n \"63\": [\"PH\"],\n \"64\": [\"NZ\"],\n \"65\": [\"SG\"],\n \"66\": [\"TH\"],\n \"81\": [\"JP\"],\n \"82\": [\"KR\"],\n \"84\": [\"VN\"],\n \"86\": [\"CN\"],\n \"90\": [\"TR\"],\n \"91\": [\"IN\"],\n \"92\": [\"PK\"],\n \"93\": [\"AF\"],\n \"94\": [\"LK\"],\n \"95\": [\"MM\"],\n \"98\": [\"IR\"],\n \"211\": [\"SS\"],\n \"212\": [\"MA\", \"EH\"],\n \"213\": [\"DZ\"],\n \"216\": [\"TN\"],\n \"218\": [\"LY\"],\n \"220\": [\"GM\"],\n \"221\": [\"SN\"],\n \"222\": [\"MR\"],\n \"223\": [\"ML\"],\n \"224\": [\"GN\"],\n \"225\": [\"CI\"],\n \"226\": [\"BF\"],\n \"227\": [\"NE\"],\n \"228\": [\"TG\"],\n \"229\": [\"BJ\"],\n \"230\": [\"MU\"],\n \"231\": [\"LR\"],\n \"232\": [\"SL\"],\n \"233\": [\"GH\"],\n \"234\": [\"NG\"],\n \"235\": [\"TD\"],\n \"236\": [\"CF\"],\n \"237\": [\"CM\"],\n \"238\": [\"CV\"],\n \"239\": [\"ST\"],\n \"240\": [\"GQ\"],\n \"241\": [\"GA\"],\n \"242\": [\"CG\"],\n \"243\": [\"CD\"],\n \"244\": [\"AO\"],\n \"245\": [\"GW\"],\n \"246\": [\"IO\"],\n \"247\": [\"AC\"],\n \"248\": [\"SC\"],\n \"249\": [\"SD\"],\n \"250\": [\"RW\"],\n \"251\": [\"ET\"],\n \"252\": [\"SO\"],\n \"253\": [\"DJ\"],\n \"254\": [\"KE\"],\n \"255\": [\"TZ\"],\n \"256\": [\"UG\"],\n \"257\": [\"BI\"],\n \"258\": [\"MZ\"],\n \"260\": [\"ZM\"],\n \"261\": [\"MG\"],\n \"262\": [\"RE\", \"YT\"],\n \"263\": [\"ZW\"],\n \"264\": [\"NA\"],\n \"265\": [\"MW\"],\n \"266\": [\"LS\"],\n \"267\": [\"BW\"],\n \"268\": [\"SZ\"],\n \"269\": [\"KM\"],\n \"290\": [\"SH\", \"TA\"],\n \"291\": [\"ER\"],\n \"297\": [\"AW\"],\n \"298\": [\"FO\"],\n \"299\": [\"GL\"],\n \"350\": [\"GI\"],\n \"351\": [\"PT\"],\n \"352\": [\"LU\"],\n \"353\": [\"IE\"],\n \"354\": [\"IS\"],\n \"355\": [\"AL\"],\n \"356\": [\"MT\"],\n \"357\": [\"CY\"],\n \"358\": [\"FI\", \"AX\"],\n \"359\": [\"BG\"],\n \"370\": [\"LT\"],\n \"371\": [\"LV\"],\n \"372\": [\"EE\"],\n \"373\": [\"MD\"],\n \"374\": [\"AM\"],\n \"375\": [\"BY\"],\n \"376\": [\"AD\"],\n \"377\": [\"MC\"],\n \"378\": [\"SM\"],\n \"380\": [\"UA\"],\n \"381\": [\"RS\"],\n \"382\": [\"ME\"],\n \"383\": [\"XK\"],\n \"385\": [\"HR\"],\n \"386\": [\"SI\"],\n \"387\": [\"BA\"],\n \"389\": [\"MK\"],\n \"420\": [\"CZ\"],\n \"421\": [\"SK\"],\n \"423\": [\"LI\"],\n \"500\": [\"FK\"],\n \"501\": [\"BZ\"],\n \"502\": [\"GT\"],\n \"503\": [\"SV\"],\n \"504\": [\"HN\"],\n \"505\": [\"NI\"],\n \"506\": [\"CR\"],\n \"507\": [\"PA\"],\n \"508\": [\"PM\"],\n \"509\": [\"HT\"],\n \"590\": [\"GP\", \"BL\", \"MF\"],\n \"591\": [\"BO\"],\n \"592\": [\"GY\"],\n \"593\": [\"EC\"],\n \"594\": [\"GF\"],\n \"595\": [\"PY\"],\n \"596\": [\"MQ\"],\n \"597\": [\"SR\"],\n \"598\": [\"UY\"],\n \"599\": [\"CW\", \"BQ\"],\n \"670\": [\"TL\"],\n \"672\": [\"NF\"],\n \"673\": [\"BN\"],\n \"674\": [\"NR\"],\n \"675\": [\"PG\"],\n \"676\": [\"TO\"],\n \"677\": [\"SB\"],\n \"678\": [\"VU\"],\n \"679\": [\"FJ\"],\n \"680\": [\"PW\"],\n \"681\": [\"WF\"],\n \"682\": [\"CK\"],\n \"683\": [\"NU\"],\n \"685\": [\"WS\"],\n \"686\": [\"KI\"],\n \"687\": [\"NC\"],\n \"688\": [\"TV\"],\n \"689\": [\"PF\"],\n \"690\": [\"TK\"],\n \"691\": [\"FM\"],\n \"692\": [\"MH\"],\n \"850\": [\"KP\"],\n \"852\": [\"HK\"],\n \"853\": [\"MO\"],\n \"855\": [\"KH\"],\n \"856\": [\"LA\"],\n \"880\": [\"BD\"],\n \"886\": [\"TW\"],\n \"960\": [\"MV\"],\n \"961\": [\"LB\"],\n \"962\": [\"JO\"],\n \"963\": [\"SY\"],\n \"964\": [\"IQ\"],\n \"965\": [\"KW\"],\n \"966\": [\"SA\"],\n \"967\": [\"YE\"],\n \"968\": [\"OM\"],\n \"970\": [\"PS\"],\n \"971\": [\"AE\"],\n \"972\": [\"IL\"],\n \"973\": [\"BH\"],\n \"974\": [\"QA\"],\n \"975\": [\"BT\"],\n \"976\": [\"MN\"],\n \"977\": [\"NP\"],\n \"992\": [\"TJ\"],\n \"993\": [\"TM\"],\n \"994\": [\"AZ\"],\n \"995\": [\"GE\"],\n \"996\": [\"KG\"],\n \"998\": [\"UZ\"]\n },\n \"countries\": {\n \"AC\": [\"247\", \"00\", \"(?:[01589]\\\\d|[46])\\\\d{4}\", [5, 6]],\n \"AD\": [\"376\", \"00\", \"(?:1|6\\\\d)\\\\d{7}|[135-9]\\\\d{5}\", [6, 8, 9], [[\"(\\\\d{3})(\\\\d{3})\", \"$1 $2\", [\"[135-9]\"]], [\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"1\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"6\"]]]],\n \"AE\": [\"971\", \"00\", \"(?:[4-7]\\\\d|9[0-689])\\\\d{7}|800\\\\d{2,9}|[2-4679]\\\\d{7}\", [5, 6, 7, 8, 9, 10, 11, 12], [[\"(\\\\d{3})(\\\\d{2,9})\", \"$1 $2\", [\"60|8\"]], [\"(\\\\d)(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[236]|[479][2-8]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d)(\\\\d{5})\", \"$1 $2 $3\", [\"[479]\"]], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"5\"], \"0$1\"]], \"0\"],\n \"AF\": [\"93\", \"00\", \"[2-7]\\\\d{8}\", [9], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[2-7]\"], \"0$1\"]], \"0\"],\n \"AG\": [\"1\", \"011\", \"(?:268|[58]\\\\d\\\\d|900)\\\\d{7}\", [10], 0, \"1\", 0, \"([457]\\\\d{6})$|1\", \"268$1\", 0, \"268\"],\n \"AI\": [\"1\", \"011\", \"(?:264|[58]\\\\d\\\\d|900)\\\\d{7}\", [10], 0, \"1\", 0, \"([2457]\\\\d{6})$|1\", \"264$1\", 0, \"264\"],\n \"AL\": [\"355\", \"00\", \"(?:700\\\\d\\\\d|900)\\\\d{3}|8\\\\d{5,7}|(?:[2-5]|6\\\\d)\\\\d{7}\", [6, 7, 8, 9], [[\"(\\\\d{3})(\\\\d{3,4})\", \"$1 $2\", [\"80|9\"], \"0$1\"], [\"(\\\\d)(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"4[2-6]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[2358][2-5]|4\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{5})\", \"$1 $2\", [\"[23578]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"6\"], \"0$1\"]], \"0\"],\n \"AM\": [\"374\", \"00\", \"(?:[1-489]\\\\d|55|60|77)\\\\d{6}\", [8], [[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\", \"$1 $2 $3\", [\"[89]0\"], \"0 $1\"], [\"(\\\\d{3})(\\\\d{5})\", \"$1 $2\", [\"2|3[12]\"], \"(0$1)\"], [\"(\\\\d{2})(\\\\d{6})\", \"$1 $2\", [\"1|47\"], \"(0$1)\"], [\"(\\\\d{2})(\\\\d{6})\", \"$1 $2\", [\"[3-9]\"], \"0$1\"]], \"0\"],\n \"AO\": [\"244\", \"00\", \"[29]\\\\d{8}\", [9], [[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[29]\"]]]],\n \"AR\": [\"54\", \"00\", \"(?:11|[89]\\\\d\\\\d)\\\\d{8}|[2368]\\\\d{9}\", [10, 11], [[\"(\\\\d{4})(\\\\d{2})(\\\\d{4})\", \"$1 $2-$3\", [\"2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9])\", \"2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8]))|2(?:2[24-9]|3[1-59]|47)\", \"2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5[56][46]|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]\", \"2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|58|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|54(?:4|5[13-7]|6[89])|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:454|85[56])[46]|3(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]\"], \"0$1\", 1], [\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\", \"$1 $2-$3\", [\"1\"], \"0$1\", 1], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1-$2-$3\", [\"[68]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2-$3\", [\"[23]\"], \"0$1\", 1], [\"(\\\\d)(\\\\d{4})(\\\\d{2})(\\\\d{4})\", \"$2 15-$3-$4\", [\"9(?:2[2-469]|3[3-578])\", \"9(?:2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9]))\", \"9(?:2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8])))|92(?:2[24-9]|3[1-59]|47)\", \"9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5(?:[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]\", \"9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|5(?:4(?:4|5[13-7]|6[89])|[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]\"], \"0$1\", 0, \"$1 $2 $3-$4\"], [\"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\", \"$2 15-$3-$4\", [\"91\"], \"0$1\", 0, \"$1 $2 $3-$4\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\", \"$1-$2-$3\", [\"8\"], \"0$1\"], [\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$2 15-$3-$4\", [\"9\"], \"0$1\", 0, \"$1 $2 $3-$4\"]], \"0\", 0, \"0?(?:(11|2(?:2(?:02?|[13]|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1267])|3(?:02?|1[467]|2[03-6]|3[13-8]|[49][2-6]|5[2-8]|[67])|4(?:7[3-578]|9)|6(?:[0136]|2[24-6]|4[6-8]?|5[15-8])|80|9(?:0[1-3]|[19]|2\\\\d|3[1-6]|4[02568]?|5[2-4]|6[2-46]|72?|8[23]?))|3(?:3(?:2[79]|6|8[2578])|4(?:0[0-24-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6[02-9]|7[126]|8[2379]?|9[1-36-8])|5(?:1|2[1245]|3[237]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|6[24]|7(?:[069]|1[1568]|2[15]|3[145]|4[13]|5[14-8]|7[2-57]|8[126])|8(?:[01]|2[15-7]|3[2578]?|4[13-6]|5[4-8]?|6[1-357-9]|7[36-8]?|8[5-8]?|9[124])))15)?\", \"9$1\"],\n \"AS\": [\"1\", \"011\", \"(?:[58]\\\\d\\\\d|684|900)\\\\d{7}\", [10], 0, \"1\", 0, \"([267]\\\\d{6})$|1\", \"684$1\", 0, \"684\"],\n \"AT\": [\"43\", \"00\", \"1\\\\d{3,12}|2\\\\d{6,12}|43(?:(?:0\\\\d|5[02-9])\\\\d{3,9}|2\\\\d{4,5}|[3467]\\\\d{4}|8\\\\d{4,6}|9\\\\d{4,7})|5\\\\d{4,12}|8\\\\d{7,12}|9\\\\d{8,12}|(?:[367]\\\\d|4[0-24-9])\\\\d{4,11}\", [4, 5, 6, 7, 8, 9, 10, 11, 12, 13], [[\"(\\\\d)(\\\\d{3,12})\", \"$1 $2\", [\"1(?:11|[2-9])\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{2})\", \"$1 $2\", [\"517\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3,5})\", \"$1 $2\", [\"5[079]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3,10})\", \"$1 $2\", [\"(?:31|4)6|51|6(?:5[0-3579]|[6-9])|7(?:20|32|8)|[89]\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{3,9})\", \"$1 $2\", [\"[2-467]|5[2-6]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"5\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{4})(\\\\d{4,7})\", \"$1 $2 $3\", [\"5\"], \"0$1\"]], \"0\"],\n \"AU\": [\"61\", \"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\", \"1(?:[0-79]\\\\d{7}(?:\\\\d(?:\\\\d{2})?)?|8[0-24-9]\\\\d{7})|[2-478]\\\\d{8}|1\\\\d{4,7}\", [5, 6, 7, 8, 9, 10, 12], [[\"(\\\\d{2})(\\\\d{3,4})\", \"$1 $2\", [\"16\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{2,4})\", \"$1 $2 $3\", [\"16\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"14|4\"], \"0$1\"], [\"(\\\\d)(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"[2378]\"], \"(0$1)\"], [\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"1(?:30|[89])\"]]], \"0\", 0, \"(183[12])|0\", 0, 0, 0, [[\"(?:(?:(?:2(?:[0-26-9]\\\\d|3[0-8]|4[02-9]|5[0135-9])|7(?:[013-57-9]\\\\d|2[0-8]))\\\\d|3(?:(?:[0-3589]\\\\d|6[1-9]|7[0-35-9])\\\\d|4(?:[0-578]\\\\d|90)))\\\\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])|3\\\\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}\", [9]], [\"4(?:79[01]|83[0-389]|94[0-4])\\\\d{5}|4(?:[0-36]\\\\d|4[047-9]|5[0-25-9]|7[02-8]|8[0-24-9]|9[0-37-9])\\\\d{6}\", [9]], [\"180(?:0\\\\d{3}|2)\\\\d{3}\", [7, 10]], [\"190[0-26]\\\\d{6}\", [10]], 0, 0, 0, [\"163\\\\d{2,6}\", [5, 6, 7, 8, 9]], [\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\", [9]], [\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\", [6, 8, 10, 12]]], \"0011\"],\n \"AW\": [\"297\", \"00\", \"(?:[25-79]\\\\d\\\\d|800)\\\\d{4}\", [7], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[25-9]\"]]]],\n \"AX\": [\"358\", \"00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))\", \"2\\\\d{4,9}|35\\\\d{4,5}|(?:60\\\\d\\\\d|800)\\\\d{4,6}|7\\\\d{5,11}|(?:[14]\\\\d|3[0-46-9]|50)\\\\d{4,8}\", [5, 6, 7, 8, 9, 10, 11, 12], 0, \"0\", 0, 0, 0, 0, \"18\", 0, \"00\"],\n \"AZ\": [\"994\", \"00\", \"365\\\\d{6}|(?:[124579]\\\\d|60|88)\\\\d{7}\", [9], [[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"90\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"1[28]|2|365|46\", \"1[28]|2|365[45]|46\", \"1[28]|2|365(?:4|5[02])|46\"], \"(0$1)\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[13-9]\"], \"0$1\"]], \"0\"],\n \"BA\": [\"387\", \"00\", \"6\\\\d{8}|(?:[35689]\\\\d|49|70)\\\\d{6}\", [8, 9], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"6[1-3]|[7-9]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2-$3\", [\"[3-5]|6[56]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\", \"$1 $2 $3 $4\", [\"6\"], \"0$1\"]], \"0\"],\n \"BB\": [\"1\", \"011\", \"(?:246|[58]\\\\d\\\\d|900)\\\\d{7}\", [10], 0, \"1\", 0, \"([2-9]\\\\d{6})$|1\", \"246$1\", 0, \"246\"],\n \"BD\": [\"880\", \"00\", \"[1-469]\\\\d{9}|8[0-79]\\\\d{7,8}|[2-79]\\\\d{8}|[2-9]\\\\d{7}|[3-9]\\\\d{6}|[57-9]\\\\d{5}\", [6, 7, 8, 9, 10], [[\"(\\\\d{2})(\\\\d{4,6})\", \"$1-$2\", [\"31[5-8]|[459]1\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3,7})\", \"$1-$2\", [\"3(?:[67]|8[013-9])|4(?:6[168]|7|[89][18])|5(?:6[128]|9)|6(?:[15]|28|4[14])|7[2-589]|8(?:0[014-9]|[12])|9[358]|(?:3[2-5]|4[235]|5[2-578]|6[0389]|76|8[3-7]|9[24])1|(?:44|66)[01346-9]\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{3,6})\", \"$1-$2\", [\"[13-9]|2[23]\"], \"0$1\"], [\"(\\\\d)(\\\\d{7,8})\", \"$1-$2\", [\"2\"], \"0$1\"]], \"0\"],\n \"BE\": [\"32\", \"00\", \"4\\\\d{8}|[1-9]\\\\d{7}\", [8, 9], [[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\", \"$1 $2 $3\", [\"(?:80|9)0\"], \"0$1\"], [\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[239]|4[23]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[15-8]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"4\"], \"0$1\"]], \"0\"],\n \"BF\": [\"226\", \"00\", \"[025-7]\\\\d{7}\", [8], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[025-7]\"]]]],\n \"BG\": [\"359\", \"00\", \"00800\\\\d{7}|[2-7]\\\\d{6,7}|[89]\\\\d{6,8}|2\\\\d{5}\", [6, 7, 8, 9, 12], [[\"(\\\\d)(\\\\d)(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"2\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"43[1-6]|70[1-9]\"], \"0$1\"], [\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"2\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\", \"$1 $2 $3\", [\"[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\", \"$1 $2 $3\", [\"(?:70|8)0\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{2})\", \"$1 $2 $3\", [\"43[1-7]|7\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"[48]|9[08]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"9\"], \"0$1\"]], \"0\"],\n \"BH\": [\"973\", \"00\", \"[136-9]\\\\d{7}\", [8], [[\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[13679]|8[02-4679]\"]]]],\n \"BI\": [\"257\", \"00\", \"(?:[267]\\\\d|31)\\\\d{6}\", [8], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[2367]\"]]]],\n \"BJ\": [\"229\", \"00\", \"[24-689]\\\\d{7}\", [8], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[24-689]\"]]]],\n \"BL\": [\"590\", \"00\", \"590\\\\d{6}|(?:69|80|9\\\\d)\\\\d{7}\", [9], 0, \"0\", 0, 0, 0, 0, 0, [[\"590(?:2[7-9]|3[3-7]|5[12]|87)\\\\d{4}\"], [\"69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5])|4(?:0[89]|1[2-6]|9\\\\d)|6(?:1[016-9]|5[0-4]|[67]\\\\d))\\\\d{4}\"], [\"80[0-5]\\\\d{6}\"], 0, 0, 0, 0, 0, [\"9(?:(?:39[5-7]|76[018])\\\\d|475[0-5])\\\\d{4}\"]]],\n \"BM\": [\"1\", \"011\", \"(?:441|[58]\\\\d\\\\d|900)\\\\d{7}\", [10], 0, \"1\", 0, \"([2-9]\\\\d{6})$|1\", \"441$1\", 0, \"441\"],\n \"BN\": [\"673\", \"00\", \"[2-578]\\\\d{6}\", [7], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[2-578]\"]]]],\n \"BO\": [\"591\", \"00(?:1\\\\d)?\", \"8001\\\\d{5}|(?:[2-467]\\\\d|50)\\\\d{6}\", [8, 9], [[\"(\\\\d)(\\\\d{7})\", \"$1 $2\", [\"[235]|4[46]\"]], [\"(\\\\d{8})\", \"$1\", [\"[67]\"]], [\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\", \"$1 $2 $3\", [\"8\"]]], \"0\", 0, \"0(1\\\\d)?\"],\n \"BQ\": [\"599\", \"00\", \"(?:[34]1|7\\\\d)\\\\d{5}\", [7], 0, 0, 0, 0, 0, 0, \"[347]\"],\n \"BR\": [\"55\", \"00(?:1[245]|2[1-35]|31|4[13]|[56]5|99)\", \"(?:[1-46-9]\\\\d\\\\d|5(?:[0-46-9]\\\\d|5[0-46-9]))\\\\d{8}|[1-9]\\\\d{9}|[3589]\\\\d{8}|[34]\\\\d{7}\", [8, 9, 10, 11], [[\"(\\\\d{4})(\\\\d{4})\", \"$1-$2\", [\"300|4(?:0[02]|37)\", \"4(?:02|37)0|[34]00\"]], [\"(\\\\d{3})(\\\\d{2,3})(\\\\d{4})\", \"$1 $2 $3\", [\"(?:[358]|90)0\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\", \"$1 $2-$3\", [\"(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-57]\"], \"($1)\"], [\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\", \"$1 $2-$3\", [\"[16][1-9]|[2-57-9]\"], \"($1)\"]], \"0\", 0, \"(?:0|90)(?:(1[245]|2[1-35]|31|4[13]|[56]5|99)(\\\\d{10,11}))?\", \"$2\"],\n \"BS\": [\"1\", \"011\", \"(?:242|[58]\\\\d\\\\d|900)\\\\d{7}\", [10], 0, \"1\", 0, \"([3-8]\\\\d{6})$|1\", \"242$1\", 0, \"242\"],\n \"BT\": [\"975\", \"00\", \"[17]\\\\d{7}|[2-8]\\\\d{6}\", [7, 8], [[\"(\\\\d)(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[2-68]|7[246]\"]], [\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"1[67]|7\"]]]],\n \"BW\": [\"267\", \"00\", \"(?:0800|(?:[37]|800)\\\\d)\\\\d{6}|(?:[2-6]\\\\d|90)\\\\d{5}\", [7, 8, 10], [[\"(\\\\d{2})(\\\\d{5})\", \"$1 $2\", [\"90\"]], [\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[24-6]|3[15-9]\"]], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[37]\"]], [\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"0\"]], [\"(\\\\d{3})(\\\\d{4})(\\\\d{3})\", \"$1 $2 $3\", [\"8\"]]]],\n \"BY\": [\"375\", \"810\", \"(?:[12]\\\\d|33|44|902)\\\\d{7}|8(?:0[0-79]\\\\d{5,7}|[1-7]\\\\d{9})|8(?:1[0-489]|[5-79]\\\\d)\\\\d{7}|8[1-79]\\\\d{6,7}|8[0-79]\\\\d{5}|8\\\\d{5}\", [6, 7, 8, 9, 10, 11], [[\"(\\\\d{3})(\\\\d{3})\", \"$1 $2\", [\"800\"], \"8 $1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2,4})\", \"$1 $2 $3\", [\"800\"], \"8 $1\"], [\"(\\\\d{4})(\\\\d{2})(\\\\d{3})\", \"$1 $2-$3\", [\"1(?:5[169]|6[3-5]|7[179])|2(?:1[35]|2[34]|3[3-5])\", \"1(?:5[169]|6(?:3[1-3]|4|5[125])|7(?:1[3-9]|7[0-24-6]|9[2-7]))|2(?:1[35]|2[34]|3[3-5])\"], \"8 0$1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2-$3-$4\", [\"1(?:[56]|7[467])|2[1-3]\"], \"8 0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2-$3-$4\", [\"[1-4]\"], \"8 0$1\"], [\"(\\\\d{3})(\\\\d{3,4})(\\\\d{4})\", \"$1 $2 $3\", [\"[89]\"], \"8 $1\"]], \"8\", 0, \"0|80?\", 0, 0, 0, 0, \"8~10\"],\n \"BZ\": [\"501\", \"00\", \"(?:0800\\\\d|[2-8])\\\\d{6}\", [7, 11], [[\"(\\\\d{3})(\\\\d{4})\", \"$1-$2\", [\"[2-8]\"]], [\"(\\\\d)(\\\\d{3})(\\\\d{4})(\\\\d{3})\", \"$1-$2-$3-$4\", [\"0\"]]]],\n \"CA\": [\"1\", \"011\", \"(?:[2-8]\\\\d|90)\\\\d{8}|3\\\\d{6}\", [7, 10], 0, \"1\", 0, 0, 0, 0, 0, [[\"(?:2(?:04|[23]6|[48]9|50|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])|90[25])[2-9]\\\\d{6}\", [10]], [\"\", [10]], [\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\", [10]], [\"900[2-9]\\\\d{6}\", [10]], [\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|(?:5(?:00|2[125-9]|33|44|66|77|88)|622)[2-9]\\\\d{6}\", [10]], 0, [\"310\\\\d{4}\", [7]], 0, [\"600[2-9]\\\\d{6}\", [10]]]],\n \"CC\": [\"61\", \"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\", \"1(?:[0-79]\\\\d{8}(?:\\\\d{2})?|8[0-24-9]\\\\d{7})|[148]\\\\d{8}|1\\\\d{5,7}\", [6, 7, 8, 9, 10, 12], 0, \"0\", 0, \"([59]\\\\d{7})$|0\", \"8$1\", 0, 0, [[\"8(?:51(?:0(?:02|31|60|89)|1(?:18|76)|223)|91(?:0(?:1[0-2]|29)|1(?:[28]2|50|79)|2(?:10|64)|3(?:[06]8|22)|4[29]8|62\\\\d|70[23]|959))\\\\d{3}\", [9]], [\"4(?:79[01]|83[0-389]|94[0-4])\\\\d{5}|4(?:[0-36]\\\\d|4[047-9]|5[0-25-9]|7[02-8]|8[0-24-9]|9[0-37-9])\\\\d{6}\", [9]], [\"180(?:0\\\\d{3}|2)\\\\d{3}\", [7, 10]], [\"190[0-26]\\\\d{6}\", [10]], 0, 0, 0, 0, [\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\", [9]], [\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\", [6, 8, 10, 12]]], \"0011\"],\n \"CD\": [\"243\", \"00\", \"(?:(?:[189]|5\\\\d)\\\\d|2)\\\\d{7}|[1-68]\\\\d{6}\", [7, 8, 9, 10], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\", \"$1 $2 $3\", [\"88\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{5})\", \"$1 $2\", [\"[1-6]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\", \"$1 $2 $3\", [\"2\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"1\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[89]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3 $4\", [\"5\"], \"0$1\"]], \"0\"],\n \"CF\": [\"236\", \"00\", \"(?:[27]\\\\d{3}|8776)\\\\d{4}\", [8], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[278]\"]]]],\n \"CG\": [\"242\", \"00\", \"222\\\\d{6}|(?:0\\\\d|80)\\\\d{7}\", [9], [[\"(\\\\d)(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"8\"]], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[02]\"]]]],\n \"CH\": [\"41\", \"00\", \"8\\\\d{11}|[2-9]\\\\d{8}\", [9, 12], [[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"8[047]|90\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[2-79]|81\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4 $5\", [\"8\"], \"0$1\"]], \"0\"],\n \"CI\": [\"225\", \"00\", \"[02]\\\\d{9}\", [10], [[\"(\\\\d{2})(\\\\d{2})(\\\\d)(\\\\d{5})\", \"$1 $2 $3 $4\", [\"2\"]], [\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{4})\", \"$1 $2 $3 $4\", [\"0\"]]]],\n \"CK\": [\"682\", \"00\", \"[2-578]\\\\d{4}\", [5], [[\"(\\\\d{2})(\\\\d{3})\", \"$1 $2\", [\"[2-578]\"]]]],\n \"CL\": [\"56\", \"(?:0|1(?:1[0-69]|2[02-5]|5[13-58]|69|7[0167]|8[018]))0\", \"12300\\\\d{6}|6\\\\d{9,10}|[2-9]\\\\d{8}\", [9, 10, 11], [[\"(\\\\d{5})(\\\\d{4})\", \"$1 $2\", [\"219\", \"2196\"], \"($1)\"], [\"(\\\\d{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[2-9]\"]], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"3[2-5]|[47]|5[1-3578]|6[13-57]|8(?:0[1-9]|[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\"]]]],\n \"CM\": [\"237\", \"00\", \"[26]\\\\d{8}|88\\\\d{6,7}\", [8, 9], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"88\"]], [\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4 $5\", [\"[26]|88\"]]]],\n \"CN\": [\"86\", \"00|1(?:[12]\\\\d|79)\\\\d\\\\d00\", \"(?:(?:1[03-689]|2\\\\d)\\\\d\\\\d|6)\\\\d{8}|1\\\\d{10}|[126]\\\\d{6}(?:\\\\d(?:\\\\d{2})?)?|86\\\\d{5,6}|(?:[3-579]\\\\d|8[0-57-9])\\\\d{5,9}\", [7, 8, 9, 10, 11, 12], [[\"(\\\\d{2})(\\\\d{5,6})\", \"$1 $2\", [\"(?:10|2[0-57-9])[19]|3(?:[157]|35|49|9[1-68])|4(?:1[124-9]|2[179]|6[47-9]|7|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:07|1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3|4[13]|5[1-5]|7[0-79]|9[0-35-9])|(?:4[35]|59|85)[1-9]\", \"(?:10|2[0-57-9])(?:1[02]|9[56])|8078|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\\\d|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))1\", \"10(?:1(?:0|23)|9[56])|2[0-57-9](?:1(?:00|23)|9[56])|80781|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\\\d|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))12\", \"10(?:1(?:0|23)|9[56])|2[0-57-9](?:1(?:00|23)|9[56])|807812|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\\\d|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))123\", \"10(?:1(?:0|23)|9[56])|2[0-57-9](?:1(?:00|23)|9[56])|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\\\d|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:078|1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))123\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{5,6})\", \"$1 $2\", [\"3(?:[157]|35|49|9[1-68])|4(?:[17]|2[179]|6[47-9]|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])|(?:4[35]|59|85)[1-9]\", \"(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))[19]\", \"85[23](?:10|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:10|9[56])\", \"85[23](?:100|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:100|9[56])\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"(?:4|80)0\"]], [\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"10|2(?:[02-57-9]|1[1-9])\", \"10|2(?:[02-57-9]|1[1-9])\", \"10[0-79]|2(?:[02-57-9]|1[1-79])|(?:10|21)8(?:0[1-9]|[1-9])\"], \"0$1\", 1], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"3(?:[3-59]|7[02-68])|4(?:[26-8]|3[3-9]|5[2-9])|5(?:3[03-9]|[468]|7[028]|9[2-46-9])|6|7(?:[0-247]|3[04-9]|5[0-4689]|6[2368])|8(?:[1-358]|9[1-7])|9(?:[013479]|5[1-5])|(?:[34]1|55|79|87)[02-9]\"], \"0$1\", 1], [\"(\\\\d{3})(\\\\d{7,8})\", \"$1 $2\", [\"9\"]], [\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"80\"], \"0$1\", 1], [\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"[3-578]\"], \"0$1\", 1], [\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"1[3-9]\"]], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3 $4\", [\"[12]\"], \"0$1\", 1]], \"0\", 0, \"(1(?:[12]\\\\d|79)\\\\d\\\\d)|0\", 0, 0, 0, 0, \"00\"],\n \"CO\": [\"57\", \"00(?:4(?:[14]4|56)|[579])\", \"60\\\\d{8}|(?:1\\\\d|[39])\\\\d{9}\", [10, 11], [[\"(\\\\d{3})(\\\\d{7})\", \"$1 $2\", [\"6|90\"], \"($1)\"], [\"(\\\\d{3})(\\\\d{7})\", \"$1 $2\", [\"3[0-357]|91\"]], [\"(\\\\d)(\\\\d{3})(\\\\d{7})\", \"$1-$2-$3\", [\"1\"], \"0$1\", 0, \"$1 $2 $3\"]], \"0\", 0, \"0([3579]|4(?:[14]4|56))?\"],\n \"CR\": [\"506\", \"00\", \"(?:8\\\\d|90)\\\\d{8}|(?:[24-8]\\\\d{3}|3005)\\\\d{4}\", [8, 10], [[\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[2-7]|8[3-9]\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1-$2-$3\", [\"[89]\"]]], 0, 0, \"(19(?:0[0-2468]|1[09]|20|66|77|99))\"],\n \"CU\": [\"53\", \"119\", \"(?:[2-7]|8\\\\d\\\\d)\\\\d{7}|[2-47]\\\\d{6}|[34]\\\\d{5}\", [6, 7, 8, 10], [[\"(\\\\d{2})(\\\\d{4,6})\", \"$1 $2\", [\"2[1-4]|[34]\"], \"(0$1)\"], [\"(\\\\d)(\\\\d{6,7})\", \"$1 $2\", [\"7\"], \"(0$1)\"], [\"(\\\\d)(\\\\d{7})\", \"$1 $2\", [\"[56]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{7})\", \"$1 $2\", [\"8\"], \"0$1\"]], \"0\"],\n \"CV\": [\"238\", \"0\", \"(?:[2-59]\\\\d\\\\d|800)\\\\d{4}\", [7], [[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3\", [\"[2-589]\"]]]],\n \"CW\": [\"599\", \"00\", \"(?:[34]1|60|(?:7|9\\\\d)\\\\d)\\\\d{5}\", [7, 8], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[3467]\"]], [\"(\\\\d)(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"9[4-8]\"]]], 0, 0, 0, 0, 0, \"[69]\"],\n \"CX\": [\"61\", \"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\", \"1(?:[0-79]\\\\d{8}(?:\\\\d{2})?|8[0-24-9]\\\\d{7})|[148]\\\\d{8}|1\\\\d{5,7}\", [6, 7, 8, 9, 10, 12], 0, \"0\", 0, \"([59]\\\\d{7})$|0\", \"8$1\", 0, 0, [[\"8(?:51(?:0(?:01|30|59|88)|1(?:17|46|75)|2(?:22|35))|91(?:00[6-9]|1(?:[28]1|49|78)|2(?:09|63)|3(?:12|26|75)|4(?:56|97)|64\\\\d|7(?:0[01]|1[0-2])|958))\\\\d{3}\", [9]], [\"4(?:79[01]|83[0-389]|94[0-4])\\\\d{5}|4(?:[0-36]\\\\d|4[047-9]|5[0-25-9]|7[02-8]|8[0-24-9]|9[0-37-9])\\\\d{6}\", [9]], [\"180(?:0\\\\d{3}|2)\\\\d{3}\", [7, 10]], [\"190[0-26]\\\\d{6}\", [10]], 0, 0, 0, 0, [\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\", [9]], [\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\", [6, 8, 10, 12]]], \"0011\"],\n \"CY\": [\"357\", \"00\", \"(?:[279]\\\\d|[58]0)\\\\d{6}\", [8], [[\"(\\\\d{2})(\\\\d{6})\", \"$1 $2\", [\"[257-9]\"]]]],\n \"CZ\": [\"420\", \"00\", \"(?:[2-578]\\\\d|60)\\\\d{7}|9\\\\d{8,11}\", [9, 10, 11, 12], [[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[2-8]|9[015-7]\"]], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"96\"]], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3 $4\", [\"9\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3 $4\", [\"9\"]]]],\n \"DE\": [\"49\", \"00\", \"[2579]\\\\d{5,14}|49(?:[34]0|69|8\\\\d)\\\\d\\\\d?|49(?:37|49|60|7[089]|9\\\\d)\\\\d{1,3}|49(?:2[024-9]|3[2-689]|7[1-7])\\\\d{1,8}|(?:1|[368]\\\\d|4[0-8])\\\\d{3,13}|49(?:[015]\\\\d|2[13]|31|[46][1-8])\\\\d{1,9}\", [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], [[\"(\\\\d{2})(\\\\d{3,13})\", \"$1 $2\", [\"3[02]|40|[68]9\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3,12})\", \"$1 $2\", [\"2(?:0[1-389]|1[124]|2[18]|3[14])|3(?:[35-9][15]|4[015])|906|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1\", \"2(?:0[1-389]|12[0-8])|3(?:[35-9][15]|4[015])|906|2(?:[13][14]|2[18])|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{2,11})\", \"$1 $2\", [\"[24-6]|3(?:[3569][02-46-9]|4[2-4679]|7[2-467]|8[2-46-8])|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]\", \"[24-6]|3(?:3(?:0[1-467]|2[127-9]|3[124578]|7[1257-9]|8[1256]|9[145])|4(?:2[135]|4[13578]|9[1346])|5(?:0[14]|2[1-3589]|6[1-4]|7[13468]|8[13568])|6(?:2[1-489]|3[124-6]|6[13]|7[12579]|8[1-356]|9[135])|7(?:2[1-7]|4[145]|6[1-5]|7[1-4])|8(?:21|3[1468]|6|7[1467]|8[136])|9(?:0[12479]|2[1358]|4[134679]|6[1-9]|7[136]|8[147]|9[1468]))|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]|3[68]4[1347]|3(?:47|60)[1356]|3(?:3[46]|46|5[49])[1246]|3[4579]3[1357]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"138\"], \"0$1\"], [\"(\\\\d{5})(\\\\d{2,10})\", \"$1 $2\", [\"3\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{5,11})\", \"$1 $2\", [\"181\"], \"0$1\"], [\"(\\\\d{3})(\\\\d)(\\\\d{4,10})\", \"$1 $2 $3\", [\"1(?:3|80)|9\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{7,8})\", \"$1 $2\", [\"1[67]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{7,12})\", \"$1 $2\", [\"8\"], \"0$1\"], [\"(\\\\d{5})(\\\\d{6})\", \"$1 $2\", [\"185\", \"1850\", \"18500\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"7\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{7})\", \"$1 $2\", [\"18[68]\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{7})\", \"$1 $2\", [\"15[1279]\"], \"0$1\"], [\"(\\\\d{5})(\\\\d{6})\", \"$1 $2\", [\"15[03568]\", \"15(?:[0568]|31)\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{8})\", \"$1 $2\", [\"18\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{7,8})\", \"$1 $2 $3\", [\"1(?:6[023]|7)\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{2})(\\\\d{7})\", \"$1 $2 $3\", [\"15[279]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{8})\", \"$1 $2 $3\", [\"15\"], \"0$1\"]], \"0\"],\n \"DJ\": [\"253\", \"00\", \"(?:2\\\\d|77)\\\\d{6}\", [8], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[27]\"]]]],\n \"DK\": [\"45\", \"00\", \"[2-9]\\\\d{7}\", [8], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[2-9]\"]]]],\n \"DM\": [\"1\", \"011\", \"(?:[58]\\\\d\\\\d|767|900)\\\\d{7}\", [10], 0, \"1\", 0, \"([2-7]\\\\d{6})$|1\", \"767$1\", 0, \"767\"],\n \"DO\": [\"1\", \"011\", \"(?:[58]\\\\d\\\\d|900)\\\\d{7}\", [10], 0, \"1\", 0, 0, 0, 0, \"8001|8[024]9\"],\n \"DZ\": [\"213\", \"00\", \"(?:[1-4]|[5-79]\\\\d|80)\\\\d{7}\", [8, 9], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[1-4]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"9\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[5-8]\"], \"0$1\"]], \"0\"],\n \"EC\": [\"593\", \"00\", \"1\\\\d{9,10}|(?:[2-7]|9\\\\d)\\\\d{7}\", [8, 9, 10, 11], [[\"(\\\\d)(\\\\d{3})(\\\\d{4})\", \"$1 $2-$3\", [\"[2-7]\"], \"(0$1)\", 0, \"$1-$2-$3\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"9\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"1\"]]], \"0\"],\n \"EE\": [\"372\", \"00\", \"8\\\\d{9}|[4578]\\\\d{7}|(?:[3-8]\\\\d|90)\\\\d{5}\", [7, 8, 10], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[369]|4[3-8]|5(?:[0-2]|5[0-478]|6[45])|7[1-9]|88\", \"[369]|4[3-8]|5(?:[02]|1(?:[0-8]|95)|5[0-478]|6(?:4[0-4]|5[1-589]))|7[1-9]|88\"]], [\"(\\\\d{4})(\\\\d{3,4})\", \"$1 $2\", [\"[45]|8(?:00|[1-49])\", \"[45]|8(?:00[1-9]|[1-49])\"]], [\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\", \"$1 $2 $3\", [\"7\"]], [\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"8\"]]]],\n \"EG\": [\"20\", \"00\", \"[189]\\\\d{8,9}|[24-6]\\\\d{8}|[135]\\\\d{7}\", [8, 9, 10], [[\"(\\\\d)(\\\\d{7,8})\", \"$1 $2\", [\"[23]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{6,7})\", \"$1 $2\", [\"1[35]|[4-6]|8[2468]|9[235-7]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[89]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{8})\", \"$1 $2\", [\"1\"], \"0$1\"]], \"0\"],\n \"EH\": [\"212\", \"00\", \"[5-8]\\\\d{8}\", [9], 0, \"0\", 0, 0, 0, 0, \"528[89]\"],\n \"ER\": [\"291\", \"00\", \"[178]\\\\d{6}\", [7], [[\"(\\\\d)(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[178]\"], \"0$1\"]], \"0\"],\n \"ES\": [\"34\", \"00\", \"[5-9]\\\\d{8}\", [9], [[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[89]00\"]], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[5-9]\"]]]],\n \"ET\": [\"251\", \"00\", \"(?:11|[2-579]\\\\d)\\\\d{7}\", [9], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[1-579]\"], \"0$1\"]], \"0\"],\n \"FI\": [\"358\", \"00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))\", \"[1-35689]\\\\d{4}|7\\\\d{10,11}|(?:[124-7]\\\\d|3[0-46-9])\\\\d{8}|[1-9]\\\\d{5,8}\", [5, 6, 7, 8, 9, 10, 11, 12], [[\"(\\\\d{5})\", \"$1\", [\"20[2-59]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3,7})\", \"$1 $2\", [\"(?:[1-3]0|[68])0|70[07-9]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{4,8})\", \"$1 $2\", [\"[14]|2[09]|50|7[135]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{6,10})\", \"$1 $2\", [\"7\"], \"0$1\"], [\"(\\\\d)(\\\\d{4,9})\", \"$1 $2\", [\"(?:1[49]|[2568])[1-8]|3(?:0[1-9]|[1-9])|9\"], \"0$1\"]], \"0\", 0, 0, 0, 0, \"1[03-79]|[2-9]\", 0, \"00\"],\n \"FJ\": [\"679\", \"0(?:0|52)\", \"45\\\\d{5}|(?:0800\\\\d|[235-9])\\\\d{6}\", [7, 11], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[235-9]|45\"]], [\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"0\"]]], 0, 0, 0, 0, 0, 0, 0, \"00\"],\n \"FK\": [\"500\", \"00\", \"[2-7]\\\\d{4}\", [5]],\n \"FM\": [\"691\", \"00\", \"(?:[39]\\\\d\\\\d|820)\\\\d{4}\", [7], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[389]\"]]]],\n \"FO\": [\"298\", \"00\", \"[2-9]\\\\d{5}\", [6], [[\"(\\\\d{6})\", \"$1\", [\"[2-9]\"]]], 0, 0, \"(10(?:01|[12]0|88))\"],\n \"FR\": [\"33\", \"00\", \"[1-9]\\\\d{8}\", [9], [[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"8\"], \"0 $1\"], [\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4 $5\", [\"[1-79]\"], \"0$1\"]], \"0\"],\n \"GA\": [\"241\", \"00\", \"(?:[067]\\\\d|11)\\\\d{6}|[2-7]\\\\d{6}\", [7, 8], [[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[2-7]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"0\"]], [\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"11|[67]\"], \"0$1\"]], 0, 0, \"0(11\\\\d{6}|60\\\\d{6}|61\\\\d{6}|6[256]\\\\d{6}|7[467]\\\\d{6})\", \"$1\"],\n \"GB\": [\"44\", \"00\", \"[1-357-9]\\\\d{9}|[18]\\\\d{8}|8\\\\d{6}\", [7, 9, 10], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"800\", \"8001\", \"80011\", \"800111\", \"8001111\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3\", [\"845\", \"8454\", \"84546\", \"845464\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{6})\", \"$1 $2\", [\"800\"], \"0$1\"], [\"(\\\\d{5})(\\\\d{4,5})\", \"$1 $2\", [\"1(?:38|5[23]|69|76|94)\", \"1(?:(?:38|69)7|5(?:24|39)|768|946)\", \"1(?:3873|5(?:242|39[4-6])|(?:697|768)[347]|9467)\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{5,6})\", \"$1 $2\", [\"1(?:[2-69][02-9]|[78])\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"[25]|7(?:0|6[02-9])\", \"[25]|7(?:0|6(?:[03-9]|2[356]))\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{6})\", \"$1 $2\", [\"7\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[1389]\"], \"0$1\"]], \"0\", 0, 0, 0, 0, 0, [[\"(?:1(?:1(?:3(?:[0-58]\\\\d\\\\d|73[0-35])|4(?:(?:[0-5]\\\\d|70)\\\\d|69[7-9])|(?:(?:5[0-26-9]|[78][0-49])\\\\d|6(?:[0-4]\\\\d|50))\\\\d)|(?:2(?:(?:0[024-9]|2[3-9]|3[3-79]|4[1-689]|[58][02-9]|6[0-47-9]|7[013-9]|9\\\\d)\\\\d|1(?:[0-7]\\\\d|8[0-3]))|(?:3(?:0\\\\d|1[0-8]|[25][02-9]|3[02-579]|[468][0-46-9]|7[1-35-79]|9[2-578])|4(?:0[03-9]|[137]\\\\d|[28][02-57-9]|4[02-69]|5[0-8]|[69][0-79])|5(?:0[1-35-9]|[16]\\\\d|2[024-9]|3[015689]|4[02-9]|5[03-9]|7[0-35-9]|8[0-468]|9[0-57-9])|6(?:0[034689]|1\\\\d|2[0-35689]|[38][013-9]|4[1-467]|5[0-69]|6[13-9]|7[0-8]|9[0-24578])|7(?:0[0246-9]|2\\\\d|3[0236-8]|4[03-9]|5[0-46-9]|6[013-9]|7[0-35-9]|8[024-9]|9[02-9])|8(?:0[35-9]|2[1-57-9]|3[02-578]|4[0-578]|5[124-9]|6[2-69]|7\\\\d|8[02-9]|9[02569])|9(?:0[02-589]|[18]\\\\d|2[02-689]|3[1-57-9]|4[2-9]|5[0-579]|6[2-47-9]|7[0-24578]|9[2-57]))\\\\d)\\\\d)|2(?:0[013478]|3[0189]|4[017]|8[0-46-9]|9[0-2])\\\\d{3})\\\\d{4}|1(?:2(?:0(?:46[1-4]|87[2-9])|545[1-79]|76(?:2\\\\d|3[1-8]|6[1-6])|9(?:7(?:2[0-4]|3[2-5])|8(?:2[2-8]|7[0-47-9]|8[3-5])))|3(?:6(?:38[2-5]|47[23])|8(?:47[04-9]|64[0157-9]))|4(?:044[1-7]|20(?:2[23]|8\\\\d)|6(?:0(?:30|5[2-57]|6[1-8]|7[2-8])|140)|8(?:052|87[1-3]))|5(?:2(?:4(?:3[2-79]|6\\\\d)|76\\\\d)|6(?:26[06-9]|686))|6(?:06(?:4\\\\d|7[4-79])|295[5-7]|35[34]\\\\d|47(?:24|61)|59(?:5[08]|6[67]|74)|9(?:55[0-4]|77[23]))|7(?:26(?:6[13-9]|7[0-7])|(?:442|688)\\\\d|50(?:2[0-3]|[3-68]2|76))|8(?:27[56]\\\\d|37(?:5[2-5]|8[239])|843[2-58])|9(?:0(?:0(?:6[1-8]|85)|52\\\\d)|3583|4(?:66[1-8]|9(?:2[01]|81))|63(?:23|3[1-4])|9561))\\\\d{3}\", [9, 10]], [\"7(?:457[0-57-9]|700[01]|911[028])\\\\d{5}|7(?:[1-3]\\\\d\\\\d|4(?:[0-46-9]\\\\d|5[0-689])|5(?:0[0-8]|[13-9]\\\\d|2[0-35-9])|7(?:0[1-9]|[1-7]\\\\d|8[02-9]|9[0-689])|8(?:[014-9]\\\\d|[23][0-8])|9(?:[024-9]\\\\d|1[02-9]|3[0-689]))\\\\d{6}\", [10]], [\"80[08]\\\\d{7}|800\\\\d{6}|8001111\"], [\"(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\\\d|8[2-49]))\\\\d{7}|845464\\\\d\", [7, 10]], [\"70\\\\d{8}\", [10]], 0, [\"(?:3[0347]|55)\\\\d{8}\", [10]], [\"76(?:464|652)\\\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\\\d{6}\", [10]], [\"56\\\\d{8}\", [10]]], 0, \" x\"],\n \"GD\": [\"1\", \"011\", \"(?:473|[58]\\\\d\\\\d|900)\\\\d{7}\", [10], 0, \"1\", 0, \"([2-9]\\\\d{6})$|1\", \"473$1\", 0, \"473\"],\n \"GE\": [\"995\", \"00\", \"(?:[3-57]\\\\d\\\\d|800)\\\\d{6}\", [9], [[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"70\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"32\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[57]\"]], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[348]\"], \"0$1\"]], \"0\"],\n \"GF\": [\"594\", \"00\", \"[56]94\\\\d{6}|(?:80|9\\\\d)\\\\d{7}\", [9], [[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[56]|9[47]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[89]\"], \"0$1\"]], \"0\"],\n \"GG\": [\"44\", \"00\", \"(?:1481|[357-9]\\\\d{3})\\\\d{6}|8\\\\d{6}(?:\\\\d{2})?\", [7, 9, 10], 0, \"0\", 0, \"([25-9]\\\\d{5})$|0\", \"1481$1\", 0, 0, [[\"1481[25-9]\\\\d{5}\", [10]], [\"7(?:(?:781|839)\\\\d|911[17])\\\\d{5}\", [10]], [\"80[08]\\\\d{7}|800\\\\d{6}|8001111\"], [\"(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\\\d|8[0-3]))\\\\d{7}|845464\\\\d\", [7, 10]], [\"70\\\\d{8}\", [10]], 0, [\"(?:3[0347]|55)\\\\d{8}\", [10]], [\"76(?:464|652)\\\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\\\d{6}\", [10]], [\"56\\\\d{8}\", [10]]]],\n \"GH\": [\"233\", \"00\", \"(?:[235]\\\\d{3}|800)\\\\d{5}\", [8, 9], [[\"(\\\\d{3})(\\\\d{5})\", \"$1 $2\", [\"8\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[235]\"], \"0$1\"]], \"0\"],\n \"GI\": [\"350\", \"00\", \"(?:[25]\\\\d|60)\\\\d{6}\", [8], [[\"(\\\\d{3})(\\\\d{5})\", \"$1 $2\", [\"2\"]]]],\n \"GL\": [\"299\", \"00\", \"(?:19|[2-689]\\\\d|70)\\\\d{4}\", [6], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3\", [\"19|[2-9]\"]]]],\n \"GM\": [\"220\", \"00\", \"[2-9]\\\\d{6}\", [7], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[2-9]\"]]]],\n \"GN\": [\"224\", \"00\", \"722\\\\d{6}|(?:3|6\\\\d)\\\\d{7}\", [8, 9], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"3\"]], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[67]\"]]]],\n \"GP\": [\"590\", \"00\", \"590\\\\d{6}|(?:69|80|9\\\\d)\\\\d{7}\", [9], [[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[569]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"8\"], \"0$1\"]], \"0\", 0, 0, 0, 0, 0, [[\"590(?:0[1-68]|[14][0-24-9]|2[0-68]|3[1-9]|5[3-579]|[68][0-689]|7[08]|9\\\\d)\\\\d{4}\"], [\"69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5])|4(?:0[89]|1[2-6]|9\\\\d)|6(?:1[016-9]|5[0-4]|[67]\\\\d))\\\\d{4}\"], [\"80[0-5]\\\\d{6}\"], 0, 0, 0, 0, 0, [\"9(?:(?:39[5-7]|76[018])\\\\d|475[0-5])\\\\d{4}\"]]],\n \"GQ\": [\"240\", \"00\", \"222\\\\d{6}|(?:3\\\\d|55|[89]0)\\\\d{7}\", [9], [[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[235]\"]], [\"(\\\\d{3})(\\\\d{6})\", \"$1 $2\", [\"[89]\"]]]],\n \"GR\": [\"30\", \"00\", \"5005000\\\\d{3}|8\\\\d{9,11}|(?:[269]\\\\d|70)\\\\d{8}\", [10, 11, 12], [[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"21|7\"]], [\"(\\\\d{4})(\\\\d{6})\", \"$1 $2\", [\"2(?:2|3[2-57-9]|4[2-469]|5[2-59]|6[2-9]|7[2-69]|8[2-49])|5\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[2689]\"]], [\"(\\\\d{3})(\\\\d{3,4})(\\\\d{5})\", \"$1 $2 $3\", [\"8\"]]]],\n \"GT\": [\"502\", \"00\", \"80\\\\d{6}|(?:1\\\\d{3}|[2-7])\\\\d{7}\", [8, 11], [[\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[2-8]\"]], [\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"1\"]]]],\n \"GU\": [\"1\", \"011\", \"(?:[58]\\\\d\\\\d|671|900)\\\\d{7}\", [10], 0, \"1\", 0, \"([2-9]\\\\d{6})$|1\", \"671$1\", 0, \"671\"],\n \"GW\": [\"245\", \"00\", \"[49]\\\\d{8}|4\\\\d{6}\", [7, 9], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"40\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[49]\"]]]],\n \"GY\": [\"592\", \"001\", \"(?:[2-8]\\\\d{3}|9008)\\\\d{3}\", [7], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[2-9]\"]]]],\n \"HK\": [\"852\", \"00(?:30|5[09]|[126-9]?)\", \"8[0-46-9]\\\\d{6,7}|9\\\\d{4,7}|(?:[2-7]|9\\\\d{3})\\\\d{7}\", [5, 6, 7, 8, 9, 11], [[\"(\\\\d{3})(\\\\d{2,5})\", \"$1 $2\", [\"900\", \"9003\"]], [\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[2-7]|8[1-4]|9(?:0[1-9]|[1-8])\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"8\"]], [\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3 $4\", [\"9\"]]], 0, 0, 0, 0, 0, 0, 0, \"00\"],\n \"HN\": [\"504\", \"00\", \"8\\\\d{10}|[237-9]\\\\d{7}\", [8, 11], [[\"(\\\\d{4})(\\\\d{4})\", \"$1-$2\", [\"[237-9]\"]]]],\n \"HR\": [\"385\", \"00\", \"(?:[24-69]\\\\d|3[0-79])\\\\d{7}|80\\\\d{5,7}|[1-79]\\\\d{7}|6\\\\d{5,6}\", [6, 7, 8, 9], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2,3})\", \"$1 $2 $3\", [\"6[01]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\", \"$1 $2 $3\", [\"8\"], \"0$1\"], [\"(\\\\d)(\\\\d{4})(\\\\d{3})\", \"$1 $2 $3\", [\"1\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"6|7[245]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"9\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"[2-57]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"8\"], \"0$1\"]], \"0\"],\n \"HT\": [\"509\", \"00\", \"(?:[2-489]\\\\d|55)\\\\d{6}\", [8], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\", \"$1 $2 $3\", [\"[2-589]\"]]]],\n \"HU\": [\"36\", \"00\", \"[235-7]\\\\d{8}|[1-9]\\\\d{7}\", [8, 9], [[\"(\\\\d)(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"1\"], \"(06 $1)\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[27][2-9]|3[2-7]|4[24-9]|5[2-79]|6|8[2-57-9]|9[2-69]\"], \"(06 $1)\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"[2-9]\"], \"06 $1\"]], \"06\"],\n \"ID\": [\"62\", \"00[89]\", \"00[1-9]\\\\d{9,14}|(?:[1-36]|8\\\\d{5})\\\\d{6}|00\\\\d{9}|[1-9]\\\\d{8,10}|[2-9]\\\\d{7}\", [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17], [[\"(\\\\d)(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"15\"]], [\"(\\\\d{2})(\\\\d{5,9})\", \"$1 $2\", [\"2[124]|[36]1\"], \"(0$1)\"], [\"(\\\\d{3})(\\\\d{5,7})\", \"$1 $2\", [\"800\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{5,8})\", \"$1 $2\", [\"[2-79]\"], \"(0$1)\"], [\"(\\\\d{3})(\\\\d{3,4})(\\\\d{3})\", \"$1-$2-$3\", [\"8[1-35-9]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{6,8})\", \"$1 $2\", [\"1\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"804\"], \"0$1\"], [\"(\\\\d{3})(\\\\d)(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3 $4\", [\"80\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\", \"$1-$2-$3\", [\"8\"], \"0$1\"]], \"0\"],\n \"IE\": [\"353\", \"00\", \"(?:1\\\\d|[2569])\\\\d{6,8}|4\\\\d{6,9}|7\\\\d{8}|8\\\\d{8,9}\", [7, 8, 9, 10], [[\"(\\\\d{2})(\\\\d{5})\", \"$1 $2\", [\"2[24-9]|47|58|6[237-9]|9[35-9]\"], \"(0$1)\"], [\"(\\\\d{3})(\\\\d{5})\", \"$1 $2\", [\"[45]0\"], \"(0$1)\"], [\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\", \"$1 $2 $3\", [\"1\"], \"(0$1)\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"[2569]|4[1-69]|7[14]\"], \"(0$1)\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"70\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"81\"], \"(0$1)\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[78]\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"1\"]], [\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"4\"], \"(0$1)\"], [\"(\\\\d{2})(\\\\d)(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3 $4\", [\"8\"], \"0$1\"]], \"0\"],\n \"IL\": [\"972\", \"0(?:0|1[2-9])\", \"1\\\\d{6}(?:\\\\d{3,5})?|[57]\\\\d{8}|[1-489]\\\\d{7}\", [7, 8, 9, 10, 11, 12], [[\"(\\\\d{4})(\\\\d{3})\", \"$1-$2\", [\"125\"]], [\"(\\\\d{4})(\\\\d{2})(\\\\d{2})\", \"$1-$2-$3\", [\"121\"]], [\"(\\\\d)(\\\\d{3})(\\\\d{4})\", \"$1-$2-$3\", [\"[2-489]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1-$2-$3\", [\"[57]\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\", \"$1-$2-$3\", [\"12\"]], [\"(\\\\d{4})(\\\\d{6})\", \"$1-$2\", [\"159\"]], [\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1-$2-$3-$4\", [\"1[7-9]\"]], [\"(\\\\d{3})(\\\\d{1,2})(\\\\d{3})(\\\\d{4})\", \"$1-$2 $3-$4\", [\"15\"]]], \"0\"],\n \"IM\": [\"44\", \"00\", \"1624\\\\d{6}|(?:[3578]\\\\d|90)\\\\d{8}\", [10], 0, \"0\", 0, \"([25-8]\\\\d{5})$|0\", \"1624$1\", 0, \"74576|(?:16|7[56])24\"],\n \"IN\": [\"91\", \"00\", \"(?:000800|[2-9]\\\\d\\\\d)\\\\d{7}|1\\\\d{7,12}\", [8, 9, 10, 11, 12, 13], [[\"(\\\\d{8})\", \"$1\", [\"5(?:0|2[23]|3[03]|[67]1|88)\", \"5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|888)\", \"5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|8888)\"], 0, 1], [\"(\\\\d{4})(\\\\d{4,5})\", \"$1 $2\", [\"180\", \"1800\"], 0, 1], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"140\"], 0, 1], [\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"11|2[02]|33|4[04]|79[1-7]|80[2-46]\", \"11|2[02]|33|4[04]|79(?:[1-6]|7[19])|80(?:[2-4]|6[0-589])\", \"11|2[02]|33|4[04]|79(?:[124-6]|3(?:[02-9]|1[0-24-9])|7(?:1|9[1-6]))|80(?:[2-4]|6[0-589])\"], \"0$1\", 1], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"1(?:2[0-249]|3[0-25]|4[145]|[68]|7[1257])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|5[12]|[78]1)|6(?:12|[2-4]1|5[17]|6[13]|80)|7(?:12|3[134]|4[47]|61|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)|(?:43|59|75)[15]|(?:1[59]|29|67|72)[14]\", \"1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|674|7(?:(?:2[14]|3[34]|5[15])[2-6]|61[346]|88[0-8])|8(?:70[2-6]|84[235-7]|91[3-7])|(?:1(?:29|60|8[06])|261|552|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))[2-7]\", \"1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12(?:[2-6]|7[0-8])|74[2-7])|7(?:(?:2[14]|5[15])[2-6]|3171|61[346]|88(?:[2-7]|82))|8(?:70[2-6]|84(?:[2356]|7[19])|91(?:[3-6]|7[19]))|73[134][2-6]|(?:74[47]|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[2-6]|7[19])|(?:1(?:29|60|8[06])|261|552|6(?:[2-4]1|5[17]|6[13]|7(?:1|4[0189])|80)|7(?:12|88[01]))[2-7]\"], \"0$1\", 1], [\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2[2457-9]|3[2-5]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1[013-9]|28|3[129]|4[1-35689]|5[29]|6[02-5]|70)|807\", \"1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2(?:[2457]|84|95)|3(?:[2-4]|55)|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1(?:[013-8]|9[6-9])|28[6-8]|3(?:17|2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4|5[0-367])|70[13-7])|807[19]\", \"1(?:[2-479]|5(?:[0236-9]|5[013-9]))|[2-5]|6(?:2(?:84|95)|355|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)\"], 0, 1], [\"(\\\\d{4})(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3 $4\", [\"18\"], 0, 1]], \"0\"],\n \"IO\": [\"246\", \"00\", \"3\\\\d{6}\", [7], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"3\"]]]],\n \"IQ\": [\"964\", \"00\", \"(?:1|7\\\\d\\\\d)\\\\d{7}|[2-6]\\\\d{7,8}\", [8, 9, 10], [[\"(\\\\d)(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"1\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"[2-6]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"7\"], \"0$1\"]], \"0\"],\n \"IR\": [\"98\", \"00\", \"[1-9]\\\\d{9}|(?:[1-8]\\\\d\\\\d|9)\\\\d{3,4}\", [4, 5, 6, 7, 10], [[\"(\\\\d{4,5})\", \"$1\", [\"96\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{4,5})\", \"$1 $2\", [\"(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])[12689]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"9\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"[1-8]\"], \"0$1\"]], \"0\"],\n \"IS\": [\"354\", \"00|1(?:0(?:01|[12]0)|100)\", \"(?:38\\\\d|[4-9])\\\\d{6}\", [7, 9], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[4-9]\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"3\"]]], 0, 0, 0, 0, 0, 0, 0, \"00\"],\n \"IT\": [\"39\", \"00\", \"0\\\\d{5,10}|1\\\\d{8,10}|3(?:[0-8]\\\\d{7,10}|9\\\\d{7,8})|(?:43|55|70)\\\\d{8}|8\\\\d{5}(?:\\\\d{2,4})?\", [6, 7, 8, 9, 10, 11, 12], [[\"(\\\\d{2})(\\\\d{4,6})\", \"$1 $2\", [\"0[26]\"]], [\"(\\\\d{3})(\\\\d{3,6})\", \"$1 $2\", [\"0[13-57-9][0159]|8(?:03|4[17]|9[2-5])\", \"0[13-57-9][0159]|8(?:03|4[17]|9(?:2|3[04]|[45][0-4]))\"]], [\"(\\\\d{4})(\\\\d{2,6})\", \"$1 $2\", [\"0(?:[13-579][2-46-8]|8[236-8])\"]], [\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"894\"]], [\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\", \"$1 $2 $3\", [\"0[26]|5\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"1(?:44|[679])|[378]|43\"]], [\"(\\\\d{3})(\\\\d{3,4})(\\\\d{4})\", \"$1 $2 $3\", [\"0[13-57-9][0159]|14\"]], [\"(\\\\d{2})(\\\\d{4})(\\\\d{5})\", \"$1 $2 $3\", [\"0[26]\"]], [\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"0\"]], [\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\", \"$1 $2 $3\", [\"3\"]]], 0, 0, 0, 0, 0, 0, [[\"0669[0-79]\\\\d{1,6}|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[1-356]|[6-8][1-5])|9(?:[0159]\\\\d|[238][1-5]|4[12]|6[1-8]|7[1-6]))\\\\d{2,7}\", [6, 7, 8, 9, 10, 11]], [\"3[2-9]\\\\d{7,8}|(?:31|43)\\\\d{8}\", [9, 10]], [\"80(?:0\\\\d{3}|3)\\\\d{3}\", [6, 9]], [\"(?:0878\\\\d{3}|89(?:2\\\\d|3[04]|4(?:[0-4]|[5-9]\\\\d\\\\d)|5[0-4]))\\\\d\\\\d|(?:1(?:44|6[346])|89(?:38|5[5-9]|9))\\\\d{6}\", [6, 8, 9, 10]], [\"1(?:78\\\\d|99)\\\\d{6}\", [9, 10]], [\"3[2-8]\\\\d{9,10}\", [11, 12]], 0, 0, [\"55\\\\d{8}\", [10]], [\"84(?:[08]\\\\d{3}|[17])\\\\d{3}\", [6, 9]]]],\n \"JE\": [\"44\", \"00\", \"1534\\\\d{6}|(?:[3578]\\\\d|90)\\\\d{8}\", [10], 0, \"0\", 0, \"([0-24-8]\\\\d{5})$|0\", \"1534$1\", 0, 0, [[\"1534[0-24-8]\\\\d{5}\"], [\"7(?:(?:(?:50|82)9|937)\\\\d|7(?:00[378]|97\\\\d))\\\\d{5}\"], [\"80(?:07(?:35|81)|8901)\\\\d{4}\"], [\"(?:8(?:4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|90(?:066[59]|1810|71(?:07|55)))\\\\d{4}\"], [\"701511\\\\d{4}\"], 0, [\"(?:3(?:0(?:07(?:35|81)|8901)|3\\\\d{4}|4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|55\\\\d{4})\\\\d{4}\"], [\"76(?:464|652)\\\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\\\d{6}\"], [\"56\\\\d{8}\"]]],\n \"JM\": [\"1\", \"011\", \"(?:[58]\\\\d\\\\d|658|900)\\\\d{7}\", [10], 0, \"1\", 0, 0, 0, 0, \"658|876\"],\n \"JO\": [\"962\", \"00\", \"(?:(?:[2689]|7\\\\d)\\\\d|32|53)\\\\d{6}\", [8, 9], [[\"(\\\\d)(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[2356]|87\"], \"(0$1)\"], [\"(\\\\d{3})(\\\\d{5,6})\", \"$1 $2\", [\"[89]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{7})\", \"$1 $2\", [\"70\"], \"0$1\"], [\"(\\\\d)(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"7\"], \"0$1\"]], \"0\"],\n \"JP\": [\"81\", \"010\", \"00[1-9]\\\\d{6,14}|[257-9]\\\\d{9}|(?:00|[1-9]\\\\d\\\\d)\\\\d{6}\", [8, 9, 10, 11, 12, 13, 14, 15, 16, 17], [[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1-$2-$3\", [\"(?:12|57|99)0\"], \"0$1\"], [\"(\\\\d{4})(\\\\d)(\\\\d{4})\", \"$1-$2-$3\", [\"1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|499|5(?:76|97)|746|8(?:3[89]|47|51)|9(?:80|9[16])\", \"1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:76|97)9|7468|8(?:3(?:8[7-9]|96)|477|51[2-9])|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]\", \"1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:769|979[2-69])|7468|8(?:3(?:8[7-9]|96[2457-9])|477|51[2-9])|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1-$2-$3\", [\"60\"], \"0$1\"], [\"(\\\\d)(\\\\d{4})(\\\\d{4})\", \"$1-$2-$3\", [\"[36]|4(?:2[09]|7[01])\", \"[36]|4(?:2(?:0|9[02-69])|7(?:0[019]|1))\"], \"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\", [\"[257-9]\"], \"0$1\"]], \"0\", 0, \"(000[259]\\\\d{6})$|(?:(?:003768)0?)|0\", \"$1\"],\n \"KE\": [\"254\", \"000\", \"(?:[17]\\\\d\\\\d|900)\\\\d{6}|(?:2|80)0\\\\d{6,7}|[4-6]\\\\d{6,8}\", [7, 8, 9, 10], [[\"(\\\\d{2})(\\\\d{5,7})\", \"$1 $2\", [\"[24-6]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{6})\", \"$1 $2\", [\"[17]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"[89]\"], \"0$1\"]], \"0\"],\n \"KG\": [\"996\", \"00\", \"8\\\\d{9}|[235-9]\\\\d{8}\", [9, 10], [[\"(\\\\d{4})(\\\\d{5})\", \"$1 $2\", [\"3(?:1[346]|[24-79])\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[235-79]|88\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d)(\\\\d{2,3})\", \"$1 $2 $3 $4\", [\"8\"], \"0$1\"]], \"0\"],\n \"KH\": [\"855\", \"00[14-9]\", \"1\\\\d{9}|[1-9]\\\\d{7,8}\", [8, 9, 10], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"[1-9]\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"1\"]]], \"0\"],\n \"KI\": [\"686\", \"00\", \"(?:[37]\\\\d|6[0-79])\\\\d{6}|(?:[2-48]\\\\d|50)\\\\d{3}\", [5, 8], 0, \"0\"],\n \"KM\": [\"269\", \"00\", \"[3478]\\\\d{6}\", [7], [[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3\", [\"[3478]\"]]]],\n \"KN\": [\"1\", \"011\", \"(?:[58]\\\\d\\\\d|900)\\\\d{7}\", [10], 0, \"1\", 0, \"([2-7]\\\\d{6})$|1\", \"869$1\", 0, \"869\"],\n \"KP\": [\"850\", \"00|99\", \"85\\\\d{6}|(?:19\\\\d|[2-7])\\\\d{7}\", [8, 10], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"8\"], \"0$1\"], [\"(\\\\d)(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[2-7]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"1\"], \"0$1\"]], \"0\"],\n \"KR\": [\"82\", \"00(?:[125689]|3(?:[46]5|91)|7(?:00|27|3|55|6[126]))\", \"00[1-9]\\\\d{8,11}|(?:[12]|5\\\\d{3})\\\\d{7}|[13-6]\\\\d{9}|(?:[1-6]\\\\d|80)\\\\d{7}|[3-6]\\\\d{4,5}|(?:00|7)0\\\\d{8}\", [5, 6, 8, 9, 10, 11, 12, 13, 14], [[\"(\\\\d{2})(\\\\d{3,4})\", \"$1-$2\", [\"(?:3[1-3]|[46][1-4]|5[1-5])1\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{4})\", \"$1-$2\", [\"1\"]], [\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\", \"$1-$2-$3\", [\"2\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1-$2-$3\", [\"[36]0|8\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\", \"$1-$2-$3\", [\"[1346]|5[1-5]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\", \"$1-$2-$3\", [\"[57]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\", \"$1-$2-$3\", [\"5\"], \"0$1\"]], \"0\", 0, \"0(8(?:[1-46-8]|5\\\\d\\\\d))?\"],\n \"KW\": [\"965\", \"00\", \"18\\\\d{5}|(?:[2569]\\\\d|41)\\\\d{6}\", [7, 8], [[\"(\\\\d{4})(\\\\d{3,4})\", \"$1 $2\", [\"[169]|2(?:[235]|4[1-35-9])|52\"]], [\"(\\\\d{3})(\\\\d{5})\", \"$1 $2\", [\"[245]\"]]]],\n \"KY\": [\"1\", \"011\", \"(?:345|[58]\\\\d\\\\d|900)\\\\d{7}\", [10], 0, \"1\", 0, \"([2-9]\\\\d{6})$|1\", \"345$1\", 0, \"345\"],\n \"KZ\": [\"7\", \"810\", \"(?:33622|8\\\\d{8})\\\\d{5}|[78]\\\\d{9}\", [10, 14], 0, \"8\", 0, 0, 0, 0, \"33|7\", 0, \"8~10\"],\n \"LA\": [\"856\", \"00\", \"[23]\\\\d{9}|3\\\\d{8}|(?:[235-8]\\\\d|41)\\\\d{6}\", [8, 9, 10], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"2[13]|3[14]|[4-8]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\", \"$1 $2 $3 $4\", [\"30[0135-9]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3 $4\", [\"[23]\"], \"0$1\"]], \"0\"],\n \"LB\": [\"961\", \"00\", \"[27-9]\\\\d{7}|[13-9]\\\\d{6}\", [7, 8], [[\"(\\\\d)(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[13-69]|7(?:[2-57]|62|8[0-7]|9[04-9])|8[02-9]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[27-9]\"]]], \"0\"],\n \"LC\": [\"1\", \"011\", \"(?:[58]\\\\d\\\\d|758|900)\\\\d{7}\", [10], 0, \"1\", 0, \"([2-8]\\\\d{6})$|1\", \"758$1\", 0, \"758\"],\n \"LI\": [\"423\", \"00\", \"[68]\\\\d{8}|(?:[2378]\\\\d|90)\\\\d{5}\", [7, 9], [[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3\", [\"[2379]|8(?:0[09]|7)\", \"[2379]|8(?:0(?:02|9)|7)\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"8\"]], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"69\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"6\"]]], \"0\", 0, \"(1001)|0\"],\n \"LK\": [\"94\", \"00\", \"[1-9]\\\\d{8}\", [9], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"7\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[1-689]\"], \"0$1\"]], \"0\"],\n \"LR\": [\"231\", \"00\", \"(?:[245]\\\\d|33|77|88)\\\\d{7}|(?:2\\\\d|[4-6])\\\\d{6}\", [7, 8, 9], [[\"(\\\\d)(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"4[67]|[56]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"2\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[2-578]\"], \"0$1\"]], \"0\"],\n \"LS\": [\"266\", \"00\", \"(?:[256]\\\\d\\\\d|800)\\\\d{5}\", [8], [[\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[2568]\"]]]],\n \"LT\": [\"370\", \"00\", \"(?:[3469]\\\\d|52|[78]0)\\\\d{6}\", [8], [[\"(\\\\d)(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"52[0-7]\"], \"(0-$1)\", 1], [\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\", \"$1 $2 $3\", [\"[7-9]\"], \"0 $1\", 1], [\"(\\\\d{2})(\\\\d{6})\", \"$1 $2\", [\"37|4(?:[15]|6[1-8])\"], \"(0-$1)\", 1], [\"(\\\\d{3})(\\\\d{5})\", \"$1 $2\", [\"[3-6]\"], \"(0-$1)\", 1]], \"0\", 0, \"[08]\"],\n \"LU\": [\"352\", \"00\", \"35[013-9]\\\\d{4,8}|6\\\\d{8}|35\\\\d{2,4}|(?:[2457-9]\\\\d|3[0-46-9])\\\\d{2,9}\", [4, 5, 6, 7, 8, 9, 10, 11], [[\"(\\\\d{2})(\\\\d{3})\", \"$1 $2\", [\"2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])\"]], [\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3\", [\"2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])\"]], [\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\", \"$1 $2 $3\", [\"20[2-689]\"]], [\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,2})\", \"$1 $2 $3 $4\", [\"2(?:[0367]|4[3-8])\"]], [\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\", \"$1 $2 $3\", [\"80[01]|90[015]\"]], [\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\", \"$1 $2 $3 $4\", [\"20\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"6\"]], [\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,2})\", \"$1 $2 $3 $4 $5\", [\"2(?:[0367]|4[3-8])\"]], [\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,5})\", \"$1 $2 $3 $4\", [\"[3-57]|8[13-9]|9(?:0[89]|[2-579])|(?:2|80)[2-9]\"]]], 0, 0, \"(15(?:0[06]|1[12]|[35]5|4[04]|6[26]|77|88|99)\\\\d)\"],\n \"LV\": [\"371\", \"00\", \"(?:[268]\\\\d|90)\\\\d{6}\", [8], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[269]|8[01]\"]]]],\n \"LY\": [\"218\", \"00\", \"[2-9]\\\\d{8}\", [9], [[\"(\\\\d{2})(\\\\d{7})\", \"$1-$2\", [\"[2-9]\"], \"0$1\"]], \"0\"],\n \"MA\": [\"212\", \"00\", \"[5-8]\\\\d{8}\", [9], [[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"5[45]\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{5})\", \"$1-$2\", [\"5(?: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\"]], \"0\", 0, 0, 0, 0, 0, [[\"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}\"], [\"(?:6(?:[0-79]\\\\d|8[0-247-9])|7(?:[0167]\\\\d|2[0-4]|5[01]|8[0-3]))\\\\d{6}\"], [\"80[0-7]\\\\d{6}\"], [\"89\\\\d{7}\"], 0, 0, 0, 0, [\"(?:592(?:4[0-2]|93)|80[89]\\\\d\\\\d)\\\\d{4}\"]]],\n \"MC\": [\"377\", \"00\", \"(?:[3489]|6\\\\d)\\\\d{7}\", [8, 9], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"4\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[389]\"]], [\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4 $5\", [\"6\"], \"0$1\"]], \"0\"],\n \"MD\": [\"373\", \"00\", \"(?:[235-7]\\\\d|[89]0)\\\\d{6}\", [8], [[\"(\\\\d{3})(\\\\d{5})\", \"$1 $2\", [\"[89]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"22|3\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\", \"$1 $2 $3\", [\"[25-7]\"], \"0$1\"]], \"0\"],\n \"ME\": [\"382\", \"00\", \"(?:20|[3-79]\\\\d)\\\\d{6}|80\\\\d{6,7}\", [8, 9], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"[2-9]\"], \"0$1\"]], \"0\"],\n \"MF\": [\"590\", \"00\", \"590\\\\d{6}|(?:69|80|9\\\\d)\\\\d{7}\", [9], 0, \"0\", 0, 0, 0, 0, 0, [[\"590(?:0[079]|[14]3|[27][79]|3[03-7]|5[0-268]|87)\\\\d{4}\"], [\"69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5])|4(?:0[89]|1[2-6]|9\\\\d)|6(?:1[016-9]|5[0-4]|[67]\\\\d))\\\\d{4}\"], [\"80[0-5]\\\\d{6}\"], 0, 0, 0, 0, 0, [\"9(?:(?:39[5-7]|76[018])\\\\d|475[0-5])\\\\d{4}\"]]],\n \"MG\": [\"261\", \"00\", \"[23]\\\\d{8}\", [9], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[23]\"], \"0$1\"]], \"0\", 0, \"([24-9]\\\\d{6})$|0\", \"20$1\"],\n \"MH\": [\"692\", \"011\", \"329\\\\d{4}|(?:[256]\\\\d|45)\\\\d{5}\", [7], [[\"(\\\\d{3})(\\\\d{4})\", \"$1-$2\", [\"[2-6]\"]]], \"1\"],\n \"MK\": [\"389\", \"00\", \"[2-578]\\\\d{7}\", [8], [[\"(\\\\d)(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"2|34[47]|4(?:[37]7|5[47]|64)\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[347]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d)(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[58]\"], \"0$1\"]], \"0\"],\n \"ML\": [\"223\", \"00\", \"[24-9]\\\\d{7}\", [8], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[24-9]\"]]]],\n \"MM\": [\"95\", \"00\", \"1\\\\d{5,7}|95\\\\d{6}|(?:[4-7]|9[0-46-9])\\\\d{6,8}|(?:2|8\\\\d)\\\\d{5,8}\", [6, 7, 8, 9, 10], [[\"(\\\\d)(\\\\d{2})(\\\\d{3})\", \"$1 $2 $3\", [\"16|2\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\", \"$1 $2 $3\", [\"[45]|6(?:0[23]|[1-689]|7[235-7])|7(?:[0-4]|5[2-7])|8[1-6]\"], \"0$1\"], [\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"[12]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"[4-7]|8[1-35]\"], \"0$1\"], [\"(\\\\d)(\\\\d{3})(\\\\d{4,6})\", \"$1 $2 $3\", [\"9(?:2[0-4]|[35-9]|4[137-9])\"], \"0$1\"], [\"(\\\\d)(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"2\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"8\"], \"0$1\"], [\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3 $4\", [\"92\"], \"0$1\"], [\"(\\\\d)(\\\\d{5})(\\\\d{4})\", \"$1 $2 $3\", [\"9\"], \"0$1\"]], \"0\"],\n \"MN\": [\"976\", \"001\", \"[12]\\\\d{7,9}|[5-9]\\\\d{7}\", [8, 9, 10], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\", \"$1 $2 $3\", [\"[12]1\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[5-9]\"]], [\"(\\\\d{3})(\\\\d{5,6})\", \"$1 $2\", [\"[12]2[1-3]\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{5,6})\", \"$1 $2\", [\"[12](?:27|3[2-8]|4[2-68]|5[1-4689])\", \"[12](?:27|3[2-8]|4[2-68]|5[1-4689])[0-3]\"], \"0$1\"], [\"(\\\\d{5})(\\\\d{4,5})\", \"$1 $2\", [\"[12]\"], \"0$1\"]], \"0\"],\n \"MO\": [\"853\", \"00\", \"0800\\\\d{3}|(?:28|[68]\\\\d)\\\\d{6}\", [7, 8], [[\"(\\\\d{4})(\\\\d{3})\", \"$1 $2\", [\"0\"]], [\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[268]\"]]]],\n \"MP\": [\"1\", \"011\", \"[58]\\\\d{9}|(?:67|90)0\\\\d{7}\", [10], 0, \"1\", 0, \"([2-9]\\\\d{6})$|1\", \"670$1\", 0, \"670\"],\n \"MQ\": [\"596\", \"00\", \"596\\\\d{6}|(?:69|80|9\\\\d)\\\\d{7}\", [9], [[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[569]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"8\"], \"0$1\"]], \"0\"],\n \"MR\": [\"222\", \"00\", \"(?:[2-4]\\\\d\\\\d|800)\\\\d{5}\", [8], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[2-48]\"]]]],\n \"MS\": [\"1\", \"011\", \"(?:[58]\\\\d\\\\d|664|900)\\\\d{7}\", [10], 0, \"1\", 0, \"([34]\\\\d{6})$|1\", \"664$1\", 0, \"664\"],\n \"MT\": [\"356\", \"00\", \"3550\\\\d{4}|(?:[2579]\\\\d\\\\d|800)\\\\d{5}\", [8], [[\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[2357-9]\"]]]],\n \"MU\": [\"230\", \"0(?:0|[24-7]0|3[03])\", \"(?:[57]|8\\\\d\\\\d)\\\\d{7}|[2-468]\\\\d{6}\", [7, 8, 10], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[2-46]|8[013]\"]], [\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[57]\"]], [\"(\\\\d{5})(\\\\d{5})\", \"$1 $2\", [\"8\"]]], 0, 0, 0, 0, 0, 0, 0, \"020\"],\n \"MV\": [\"960\", \"0(?:0|19)\", \"(?:800|9[0-57-9]\\\\d)\\\\d{7}|[34679]\\\\d{6}\", [7, 10], [[\"(\\\\d{3})(\\\\d{4})\", \"$1-$2\", [\"[34679]\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[89]\"]]], 0, 0, 0, 0, 0, 0, 0, \"00\"],\n \"MW\": [\"265\", \"00\", \"(?:[1289]\\\\d|31|77)\\\\d{7}|1\\\\d{6}\", [7, 9], [[\"(\\\\d)(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"1[2-9]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"2\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[137-9]\"], \"0$1\"]], \"0\"],\n \"MX\": [\"52\", \"0[09]\", \"[2-9]\\\\d{9}\", [10], [[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"33|5[56]|81\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[2-9]\"]]], 0, 0, 0, 0, 0, 0, 0, \"00\"],\n \"MY\": [\"60\", \"00\", \"1\\\\d{8,9}|(?:3\\\\d|[4-9])\\\\d{7}\", [8, 9, 10], [[\"(\\\\d)(\\\\d{3})(\\\\d{4})\", \"$1-$2 $3\", [\"[4-79]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1-$2 $3\", [\"1(?:[02469]|[378][1-9]|53)|8\", \"1(?:[02469]|[37][1-9]|53|8(?:[1-46-9]|5[7-9]))|8\"], \"0$1\"], [\"(\\\\d)(\\\\d{4})(\\\\d{4})\", \"$1-$2 $3\", [\"3\"], \"0$1\"], [\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{4})\", \"$1-$2-$3-$4\", [\"1(?:[367]|80)\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1-$2 $3\", [\"15\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\", \"$1-$2 $3\", [\"1\"], \"0$1\"]], \"0\"],\n \"MZ\": [\"258\", \"00\", \"(?:2|8\\\\d)\\\\d{7}\", [8, 9], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"2|8[2-79]\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"8\"]]]],\n \"NA\": [\"264\", \"00\", \"[68]\\\\d{7,8}\", [8, 9], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"88\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"6\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"87\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"8\"], \"0$1\"]], \"0\"],\n \"NC\": [\"687\", \"00\", \"(?:050|[2-57-9]\\\\d\\\\d)\\\\d{3}\", [6], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1.$2.$3\", [\"[02-57-9]\"]]]],\n \"NE\": [\"227\", \"00\", \"[027-9]\\\\d{7}\", [8], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"08\"]], [\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[089]|2[013]|7[0467]\"]]]],\n \"NF\": [\"672\", \"00\", \"[13]\\\\d{5}\", [6], [[\"(\\\\d{2})(\\\\d{4})\", \"$1 $2\", [\"1[0-3]\"]], [\"(\\\\d)(\\\\d{5})\", \"$1 $2\", [\"[13]\"]]], 0, 0, \"([0-258]\\\\d{4})$\", \"3$1\"],\n \"NG\": [\"234\", \"009\", \"38\\\\d{6}|[78]\\\\d{9,13}|(?:20|9\\\\d)\\\\d{8}\", [8, 10, 11, 12, 13, 14], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\", \"$1 $2 $3\", [\"3\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"[7-9]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"20[129]\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{2})(\\\\d{4})\", \"$1 $2 $3\", [\"2\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\", \"$1 $2 $3\", [\"[78]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{5})(\\\\d{5,6})\", \"$1 $2 $3\", [\"[78]\"], \"0$1\"]], \"0\"],\n \"NI\": [\"505\", \"00\", \"(?:1800|[25-8]\\\\d{3})\\\\d{4}\", [8], [[\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[125-8]\"]]]],\n \"NL\": [\"31\", \"00\", \"(?:[124-7]\\\\d\\\\d|3(?:[02-9]\\\\d|1[0-8]))\\\\d{6}|8\\\\d{6,9}|9\\\\d{6,10}|1\\\\d{4,5}\", [5, 6, 7, 8, 9, 10, 11], [[\"(\\\\d{3})(\\\\d{4,7})\", \"$1 $2\", [\"[89]0\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{7})\", \"$1 $2\", [\"66\"], \"0$1\"], [\"(\\\\d)(\\\\d{8})\", \"$1 $2\", [\"6\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"1[16-8]|2[259]|3[124]|4[17-9]|5[124679]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[1-578]|91\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\", \"$1 $2 $3\", [\"9\"], \"0$1\"]], \"0\"],\n \"NO\": [\"47\", \"00\", \"(?:0|[2-9]\\\\d{3})\\\\d{4}\", [5, 8], [[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\", \"$1 $2 $3\", [\"8\"]], [\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[2-79]\"]]], 0, 0, 0, 0, 0, \"[02-689]|7[0-8]\"],\n \"NP\": [\"977\", \"00\", \"(?:1\\\\d|9)\\\\d{9}|[1-9]\\\\d{7}\", [8, 10, 11], [[\"(\\\\d)(\\\\d{7})\", \"$1-$2\", [\"1[2-6]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{6})\", \"$1-$2\", [\"1[01]|[2-8]|9(?:[1-59]|[67][2-6])\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{7})\", \"$1-$2\", [\"9\"]]], \"0\"],\n \"NR\": [\"674\", \"00\", \"(?:444|(?:55|8\\\\d)\\\\d|666)\\\\d{4}\", [7], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[4-68]\"]]]],\n \"NU\": [\"683\", \"00\", \"(?:[4-7]|888\\\\d)\\\\d{3}\", [4, 7], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"8\"]]]],\n \"NZ\": [\"64\", \"0(?:0|161)\", \"[1289]\\\\d{9}|50\\\\d{5}(?:\\\\d{2,3})?|[27-9]\\\\d{7,8}|(?:[34]\\\\d|6[0-35-9])\\\\d{6}|8\\\\d{4,6}\", [5, 6, 7, 8, 9, 10], [[\"(\\\\d{2})(\\\\d{3,8})\", \"$1 $2\", [\"8[1-79]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\", \"$1 $2 $3\", [\"50[036-8]|8|90\", \"50(?:[0367]|88)|8|90\"], \"0$1\"], [\"(\\\\d)(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"24|[346]|7[2-57-9]|9[2-9]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"2(?:10|74)|[589]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\", \"$1 $2 $3\", [\"1|2[028]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3,5})\", \"$1 $2 $3\", [\"2(?:[169]|7[0-35-9])|7\"], \"0$1\"]], \"0\", 0, 0, 0, 0, 0, 0, \"00\"],\n \"OM\": [\"968\", \"00\", \"(?:1505|[279]\\\\d{3}|500)\\\\d{4}|800\\\\d{5,6}\", [7, 8, 9], [[\"(\\\\d{3})(\\\\d{4,6})\", \"$1 $2\", [\"[58]\"]], [\"(\\\\d{2})(\\\\d{6})\", \"$1 $2\", [\"2\"]], [\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[179]\"]]]],\n \"PA\": [\"507\", \"00\", \"(?:00800|8\\\\d{3})\\\\d{6}|[68]\\\\d{7}|[1-57-9]\\\\d{6}\", [7, 8, 10, 11], [[\"(\\\\d{3})(\\\\d{4})\", \"$1-$2\", [\"[1-57-9]\"]], [\"(\\\\d{4})(\\\\d{4})\", \"$1-$2\", [\"[68]\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"8\"]]]],\n \"PE\": [\"51\", \"00|19(?:1[124]|77|90)00\", \"(?:[14-8]|9\\\\d)\\\\d{7}\", [8, 9], [[\"(\\\\d{3})(\\\\d{5})\", \"$1 $2\", [\"80\"], \"(0$1)\"], [\"(\\\\d)(\\\\d{7})\", \"$1 $2\", [\"1\"], \"(0$1)\"], [\"(\\\\d{2})(\\\\d{6})\", \"$1 $2\", [\"[4-8]\"], \"(0$1)\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"9\"]]], \"0\", 0, 0, 0, 0, 0, 0, \"00\", \" Anexo \"],\n \"PF\": [\"689\", \"00\", \"4\\\\d{5}(?:\\\\d{2})?|8\\\\d{7,8}\", [6, 8, 9], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3\", [\"44\"]], [\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"4|8[7-9]\"]], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"8\"]]]],\n \"PG\": [\"675\", \"00|140[1-3]\", \"(?:180|[78]\\\\d{3})\\\\d{4}|(?:[2-589]\\\\d|64)\\\\d{5}\", [7, 8], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"18|[2-69]|85\"]], [\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[78]\"]]], 0, 0, 0, 0, 0, 0, 0, \"00\"],\n \"PH\": [\"63\", \"00\", \"(?:[2-7]|9\\\\d)\\\\d{8}|2\\\\d{5}|(?:1800|8)\\\\d{7,9}\", [6, 8, 9, 10, 11, 12, 13], [[\"(\\\\d)(\\\\d{5})\", \"$1 $2\", [\"2\"], \"(0$1)\"], [\"(\\\\d{4})(\\\\d{4,6})\", \"$1 $2\", [\"3(?:23|39|46)|4(?:2[3-6]|[35]9|4[26]|76)|544|88[245]|(?:52|64|86)2\", \"3(?:230|397|461)|4(?:2(?:35|[46]4|51)|396|4(?:22|63)|59[347]|76[15])|5(?:221|446)|642[23]|8(?:622|8(?:[24]2|5[13]))\"], \"(0$1)\"], [\"(\\\\d{5})(\\\\d{4})\", \"$1 $2\", [\"346|4(?:27|9[35])|883\", \"3469|4(?:279|9(?:30|56))|8834\"], \"(0$1)\"], [\"(\\\\d)(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"2\"], \"(0$1)\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[3-7]|8[2-8]\"], \"(0$1)\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[89]\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"1\"]], [\"(\\\\d{4})(\\\\d{1,2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3 $4\", [\"1\"]]], \"0\"],\n \"PK\": [\"92\", \"00\", \"122\\\\d{6}|[24-8]\\\\d{10,11}|9(?:[013-9]\\\\d{8,10}|2(?:[01]\\\\d\\\\d|2(?:[06-8]\\\\d|1[01]))\\\\d{7})|(?:[2-8]\\\\d{3}|92(?:[0-7]\\\\d|8[1-9]))\\\\d{6}|[24-9]\\\\d{8}|[89]\\\\d{7}\", [8, 9, 10, 11, 12], [[\"(\\\\d{3})(\\\\d{3})(\\\\d{2,7})\", \"$1 $2 $3\", [\"[89]0\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{5})\", \"$1 $2\", [\"1\"]], [\"(\\\\d{3})(\\\\d{6,7})\", \"$1 $2\", [\"2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8])\", \"9(?:2[3-8]|98)|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:22|3[27-9]|4[2-6]|6[3569]|9[25-7]))[2-9]\"], \"(0$1)\"], [\"(\\\\d{2})(\\\\d{7,8})\", \"$1 $2\", [\"(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]\"], \"(0$1)\"], [\"(\\\\d{5})(\\\\d{5})\", \"$1 $2\", [\"58\"], \"(0$1)\"], [\"(\\\\d{3})(\\\\d{7})\", \"$1 $2\", [\"3\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3 $4\", [\"2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91\"], \"(0$1)\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3 $4\", [\"[24-9]\"], \"(0$1)\"]], \"0\"],\n \"PL\": [\"48\", \"00\", \"(?:6|8\\\\d\\\\d)\\\\d{7}|[1-9]\\\\d{6}(?:\\\\d{2})?|[26]\\\\d{5}\", [6, 7, 8, 9, 10], [[\"(\\\\d{5})\", \"$1\", [\"19\"]], [\"(\\\\d{3})(\\\\d{3})\", \"$1 $2\", [\"11|20|64\"]], [\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\", \"$1 $2 $3\", [\"(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])1\", \"(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])19\"]], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\", \"$1 $2 $3\", [\"64\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"21|39|45|5[0137]|6[0469]|7[02389]|8(?:0[14]|8)\"]], [\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"1[2-8]|[2-7]|8[1-79]|9[145]\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"8\"]]]],\n \"PM\": [\"508\", \"00\", \"[45]\\\\d{5}|(?:708|80\\\\d)\\\\d{6}\", [6, 9], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3\", [\"[45]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"7\"]], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"8\"], \"0$1\"]], \"0\"],\n \"PR\": [\"1\", \"011\", \"(?:[589]\\\\d\\\\d|787)\\\\d{7}\", [10], 0, \"1\", 0, 0, 0, 0, \"787|939\"],\n \"PS\": [\"970\", \"00\", \"[2489]2\\\\d{6}|(?:1\\\\d|5)\\\\d{8}\", [8, 9, 10], [[\"(\\\\d)(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[2489]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"5\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"1\"]]], \"0\"],\n \"PT\": [\"351\", \"00\", \"1693\\\\d{5}|(?:[26-9]\\\\d|30)\\\\d{7}\", [9], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"2[12]\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"16|[236-9]\"]]]],\n \"PW\": [\"680\", \"01[12]\", \"(?:[24-8]\\\\d\\\\d|345|900)\\\\d{4}\", [7], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[2-9]\"]]]],\n \"PY\": [\"595\", \"00\", \"59\\\\d{4,6}|9\\\\d{5,10}|(?:[2-46-8]\\\\d|5[0-8])\\\\d{4,7}\", [6, 7, 8, 9, 10, 11], [[\"(\\\\d{3})(\\\\d{3,6})\", \"$1 $2\", [\"[2-9]0\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{5})\", \"$1 $2\", [\"[26]1|3[289]|4[1246-8]|7[1-3]|8[1-36]\"], \"(0$1)\"], [\"(\\\\d{3})(\\\\d{4,5})\", \"$1 $2\", [\"2[279]|3[13-5]|4[359]|5|6(?:[34]|7[1-46-8])|7[46-8]|85\"], \"(0$1)\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"2[14-68]|3[26-9]|4[1246-8]|6(?:1|75)|7[1-35]|8[1-36]\"], \"(0$1)\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"87\"]], [\"(\\\\d{3})(\\\\d{6})\", \"$1 $2\", [\"9(?:[5-79]|8[1-7])\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[2-8]\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"9\"]]], \"0\"],\n \"QA\": [\"974\", \"00\", \"800\\\\d{4}|(?:2|800)\\\\d{6}|(?:0080|[3-7])\\\\d{7}\", [7, 8, 9, 11], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"2[16]|8\"]], [\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[3-7]\"]]]],\n \"RE\": [\"262\", \"00\", \"(?:26|[689]\\\\d)\\\\d{7}\", [9], [[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[2689]\"], \"0$1\"]], \"0\", 0, 0, 0, 0, 0, [[\"26(?:2\\\\d\\\\d|3(?:0\\\\d|1[0-6]))\\\\d{4}\"], [\"69(?:2\\\\d\\\\d|3(?:[06][0-6]|1[013]|2[0-2]|3[0-39]|4\\\\d|5[0-5]|7[0-37]|8[0-8]|9[0-479]))\\\\d{4}\"], [\"80\\\\d{7}\"], [\"89[1-37-9]\\\\d{6}\"], 0, 0, 0, 0, [\"9(?:399[0-3]|479[0-5]|76(?:2[278]|3[0-37]))\\\\d{4}\"], [\"8(?:1[019]|2[0156]|84|90)\\\\d{6}\"]]],\n \"RO\": [\"40\", \"00\", \"(?:[236-8]\\\\d|90)\\\\d{7}|[23]\\\\d{5}\", [6, 9], [[\"(\\\\d{3})(\\\\d{3})\", \"$1 $2\", [\"2[3-6]\", \"2[3-6]\\\\d9\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{4})\", \"$1 $2\", [\"219|31\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[23]1\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[236-9]\"], \"0$1\"]], \"0\", 0, 0, 0, 0, 0, 0, 0, \" int \"],\n \"RS\": [\"381\", \"00\", \"38[02-9]\\\\d{6,9}|6\\\\d{7,9}|90\\\\d{4,8}|38\\\\d{5,6}|(?:7\\\\d\\\\d|800)\\\\d{3,9}|(?:[12]\\\\d|3[0-79])\\\\d{5,10}\", [6, 7, 8, 9, 10, 11, 12], [[\"(\\\\d{3})(\\\\d{3,9})\", \"$1 $2\", [\"(?:2[389]|39)0|[7-9]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{5,10})\", \"$1 $2\", [\"[1-36]\"], \"0$1\"]], \"0\"],\n \"RU\": [\"7\", \"810\", \"8\\\\d{13}|[347-9]\\\\d{9}\", [10, 14], [[\"(\\\\d{4})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"7(?:1[0-8]|2[1-9])\", \"7(?:1(?:[0-356]2|4[29]|7|8[27])|2(?:1[23]|[2-9]2))\", \"7(?:1(?:[0-356]2|4[29]|7|8[27])|2(?:13[03-69]|62[013-9]))|72[1-57-9]2\"], \"8 ($1)\", 1], [\"(\\\\d{5})(\\\\d)(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"7(?:1[0-68]|2[1-9])\", \"7(?:1(?:[06][3-6]|[18]|2[35]|[3-5][3-5])|2(?:[13][3-5]|[24-689]|7[457]))\", \"7(?:1(?:0(?:[356]|4[023])|[18]|2(?:3[013-9]|5)|3[45]|43[013-79]|5(?:3[1-8]|4[1-7]|5)|6(?:3[0-35-9]|[4-6]))|2(?:1(?:3[178]|[45])|[24-689]|3[35]|7[457]))|7(?:14|23)4[0-8]|71(?:33|45)[1-79]\"], \"8 ($1)\", 1], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"7\"], \"8 ($1)\", 1], [\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2-$3-$4\", [\"[349]|8(?:[02-7]|1[1-8])\"], \"8 ($1)\", 1], [\"(\\\\d{4})(\\\\d{4})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3 $4\", [\"8\"], \"8 ($1)\"]], \"8\", 0, 0, 0, 0, \"3[04-689]|[489]\", 0, \"8~10\"],\n \"RW\": [\"250\", \"00\", \"(?:06|[27]\\\\d\\\\d|[89]00)\\\\d{6}\", [8, 9], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"0\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"2\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[7-9]\"], \"0$1\"]], \"0\"],\n \"SA\": [\"966\", \"00\", \"92\\\\d{7}|(?:[15]|8\\\\d)\\\\d{8}\", [9, 10], [[\"(\\\\d{4})(\\\\d{5})\", \"$1 $2\", [\"9\"]], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"1\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"5\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"81\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"8\"]]], \"0\"],\n \"SB\": [\"677\", \"0[01]\", \"[6-9]\\\\d{6}|[1-6]\\\\d{4}\", [5, 7], [[\"(\\\\d{2})(\\\\d{5})\", \"$1 $2\", [\"6[89]|7|8[4-9]|9(?:[1-8]|9[0-8])\"]]]],\n \"SC\": [\"248\", \"010|0[0-2]\", \"(?:[2489]\\\\d|64)\\\\d{5}\", [7], [[\"(\\\\d)(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[246]|9[57]\"]]], 0, 0, 0, 0, 0, 0, 0, \"00\"],\n \"SD\": [\"249\", \"00\", \"[19]\\\\d{8}\", [9], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[19]\"], \"0$1\"]], \"0\"],\n \"SE\": [\"46\", \"00\", \"(?:[26]\\\\d\\\\d|9)\\\\d{9}|[1-9]\\\\d{8}|[1-689]\\\\d{7}|[1-4689]\\\\d{6}|2\\\\d{5}\", [6, 7, 8, 9, 10, 12], [[\"(\\\\d{2})(\\\\d{2,3})(\\\\d{2})\", \"$1-$2 $3\", [\"20\"], \"0$1\", 0, \"$1 $2 $3\"], [\"(\\\\d{3})(\\\\d{4})\", \"$1-$2\", [\"9(?:00|39|44|9)\"], \"0$1\", 0, \"$1 $2\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{2})\", \"$1-$2 $3\", [\"[12][136]|3[356]|4[0246]|6[03]|90[1-9]\"], \"0$1\", 0, \"$1 $2 $3\"], [\"(\\\\d)(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\", \"$1-$2 $3 $4\", [\"8\"], \"0$1\", 0, \"$1 $2 $3 $4\"], [\"(\\\\d{3})(\\\\d{2,3})(\\\\d{2})\", \"$1-$2 $3\", [\"1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[125689]|4[02-57]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])\"], \"0$1\", 0, \"$1 $2 $3\"], [\"(\\\\d{3})(\\\\d{2,3})(\\\\d{3})\", \"$1-$2 $3\", [\"9(?:00|39|44)\"], \"0$1\", 0, \"$1 $2 $3\"], [\"(\\\\d{2})(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\", \"$1-$2 $3 $4\", [\"1[13689]|2[0136]|3[1356]|4[0246]|54|6[03]|90[1-9]\"], \"0$1\", 0, \"$1 $2 $3 $4\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1-$2 $3 $4\", [\"10|7\"], \"0$1\", 0, \"$1 $2 $3 $4\"], [\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})\", \"$1-$2 $3 $4\", [\"8\"], \"0$1\", 0, \"$1 $2 $3 $4\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1-$2 $3 $4\", [\"[13-5]|2(?:[247-9]|5[0138])|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])\"], \"0$1\", 0, \"$1 $2 $3 $4\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{3})\", \"$1-$2 $3 $4\", [\"9\"], \"0$1\", 0, \"$1 $2 $3 $4\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1-$2 $3 $4 $5\", [\"[26]\"], \"0$1\", 0, \"$1 $2 $3 $4 $5\"]], \"0\"],\n \"SG\": [\"65\", \"0[0-3]\\\\d\", \"(?:(?:1\\\\d|8)\\\\d\\\\d|7000)\\\\d{7}|[3689]\\\\d{7}\", [8, 10, 11], [[\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[369]|8(?:0[1-9]|[1-9])\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"8\"]], [\"(\\\\d{4})(\\\\d{4})(\\\\d{3})\", \"$1 $2 $3\", [\"7\"]], [\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"1\"]]]],\n \"SH\": [\"290\", \"00\", \"(?:[256]\\\\d|8)\\\\d{3}\", [4, 5], 0, 0, 0, 0, 0, 0, \"[256]\"],\n \"SI\": [\"386\", \"00|10(?:22|66|88|99)\", \"[1-7]\\\\d{7}|8\\\\d{4,7}|90\\\\d{4,6}\", [5, 6, 7, 8], [[\"(\\\\d{2})(\\\\d{3,6})\", \"$1 $2\", [\"8[09]|9\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{5})\", \"$1 $2\", [\"59|8\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[37][01]|4[0139]|51|6\"], \"0$1\"], [\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[1-57]\"], \"(0$1)\"]], \"0\", 0, 0, 0, 0, 0, 0, \"00\"],\n \"SJ\": [\"47\", \"00\", \"0\\\\d{4}|(?:[489]\\\\d|79)\\\\d{6}\", [5, 8], 0, 0, 0, 0, 0, 0, \"79\"],\n \"SK\": [\"421\", \"00\", \"[2-689]\\\\d{8}|[2-59]\\\\d{6}|[2-5]\\\\d{5}\", [6, 7, 9], [[\"(\\\\d)(\\\\d{2})(\\\\d{3,4})\", \"$1 $2 $3\", [\"21\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{2})(\\\\d{2,3})\", \"$1 $2 $3\", [\"[3-5][1-8]1\", \"[3-5][1-8]1[67]\"], \"0$1\"], [\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})\", \"$1/$2 $3 $4\", [\"2\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[689]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1/$2 $3 $4\", [\"[3-5]\"], \"0$1\"]], \"0\"],\n \"SL\": [\"232\", \"00\", \"(?:[237-9]\\\\d|66)\\\\d{6}\", [8], [[\"(\\\\d{2})(\\\\d{6})\", \"$1 $2\", [\"[236-9]\"], \"(0$1)\"]], \"0\"],\n \"SM\": [\"378\", \"00\", \"(?:0549|[5-7]\\\\d)\\\\d{6}\", [8, 10], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[5-7]\"]], [\"(\\\\d{4})(\\\\d{6})\", \"$1 $2\", [\"0\"]]], 0, 0, \"([89]\\\\d{5})$\", \"0549$1\"],\n \"SN\": [\"221\", \"00\", \"(?:[378]\\\\d|93)\\\\d{7}\", [9], [[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"8\"]], [\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[379]\"]]]],\n \"SO\": [\"252\", \"00\", \"[346-9]\\\\d{8}|[12679]\\\\d{7}|[1-5]\\\\d{6}|[1348]\\\\d{5}\", [6, 7, 8, 9], [[\"(\\\\d{2})(\\\\d{4})\", \"$1 $2\", [\"8[125]\"]], [\"(\\\\d{6})\", \"$1\", [\"[134]\"]], [\"(\\\\d)(\\\\d{6})\", \"$1 $2\", [\"[15]|2[0-79]|3[0-46-8]|4[0-7]\"]], [\"(\\\\d)(\\\\d{7})\", \"$1 $2\", [\"(?:2|90)4|[67]\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[348]|64|79|90\"]], [\"(\\\\d{2})(\\\\d{5,7})\", \"$1 $2\", [\"1|28|6[0-35-9]|77|9[2-9]\"]]], \"0\"],\n \"SR\": [\"597\", \"00\", \"(?:[2-5]|68|[78]\\\\d)\\\\d{5}\", [6, 7], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1-$2-$3\", [\"56\"]], [\"(\\\\d{3})(\\\\d{3})\", \"$1-$2\", [\"[2-5]\"]], [\"(\\\\d{3})(\\\\d{4})\", \"$1-$2\", [\"[6-8]\"]]]],\n \"SS\": [\"211\", \"00\", \"[19]\\\\d{8}\", [9], [[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[19]\"], \"0$1\"]], \"0\"],\n \"ST\": [\"239\", \"00\", \"(?:22|9\\\\d)\\\\d{5}\", [7], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[29]\"]]]],\n \"SV\": [\"503\", \"00\", \"[267]\\\\d{7}|(?:80\\\\d|900)\\\\d{4}(?:\\\\d{4})?\", [7, 8, 11], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[89]\"]], [\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[267]\"]], [\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"[89]\"]]]],\n \"SX\": [\"1\", \"011\", \"7215\\\\d{6}|(?:[58]\\\\d\\\\d|900)\\\\d{7}\", [10], 0, \"1\", 0, \"(5\\\\d{6})$|1\", \"721$1\", 0, \"721\"],\n \"SY\": [\"963\", \"00\", \"[1-39]\\\\d{8}|[1-5]\\\\d{7}\", [8, 9], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"[1-5]\"], \"0$1\", 1], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"9\"], \"0$1\", 1]], \"0\"],\n \"SZ\": [\"268\", \"00\", \"0800\\\\d{4}|(?:[237]\\\\d|900)\\\\d{6}\", [8, 9], [[\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[0237]\"]], [\"(\\\\d{5})(\\\\d{4})\", \"$1 $2\", [\"9\"]]]],\n \"TA\": [\"290\", \"00\", \"8\\\\d{3}\", [4], 0, 0, 0, 0, 0, 0, \"8\"],\n \"TC\": [\"1\", \"011\", \"(?:[58]\\\\d\\\\d|649|900)\\\\d{7}\", [10], 0, \"1\", 0, \"([2-479]\\\\d{6})$|1\", \"649$1\", 0, \"649\"],\n \"TD\": [\"235\", \"00|16\", \"(?:22|[689]\\\\d|77)\\\\d{6}\", [8], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[26-9]\"]]], 0, 0, 0, 0, 0, 0, 0, \"00\"],\n \"TG\": [\"228\", \"00\", \"[279]\\\\d{7}\", [8], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[279]\"]]]],\n \"TH\": [\"66\", \"00[1-9]\", \"(?:001800|[2-57]|[689]\\\\d)\\\\d{7}|1\\\\d{7,9}\", [8, 9, 10, 13], [[\"(\\\\d)(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"2\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"[13-9]\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"1\"]]], \"0\"],\n \"TJ\": [\"992\", \"810\", \"[0-57-9]\\\\d{8}\", [9], [[\"(\\\\d{6})(\\\\d)(\\\\d{2})\", \"$1 $2 $3\", [\"331\", \"3317\"]], [\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\", \"$1 $2 $3\", [\"44[02-479]|[34]7\"]], [\"(\\\\d{4})(\\\\d)(\\\\d{4})\", \"$1 $2 $3\", [\"3(?:[1245]|3[12])\"]], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[0-57-9]\"]]], 0, 0, 0, 0, 0, 0, 0, \"8~10\"],\n \"TK\": [\"690\", \"00\", \"[2-47]\\\\d{3,6}\", [4, 5, 6, 7]],\n \"TL\": [\"670\", \"00\", \"7\\\\d{7}|(?:[2-47]\\\\d|[89]0)\\\\d{5}\", [7, 8], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[2-489]|70\"]], [\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"7\"]]]],\n \"TM\": [\"993\", \"810\", \"(?:[1-6]\\\\d|71)\\\\d{6}\", [8], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2-$3-$4\", [\"12\"], \"(8 $1)\"], [\"(\\\\d{3})(\\\\d)(\\\\d{2})(\\\\d{2})\", \"$1 $2-$3-$4\", [\"[1-5]\"], \"(8 $1)\"], [\"(\\\\d{2})(\\\\d{6})\", \"$1 $2\", [\"[67]\"], \"8 $1\"]], \"8\", 0, 0, 0, 0, 0, 0, \"8~10\"],\n \"TN\": [\"216\", \"00\", \"[2-57-9]\\\\d{7}\", [8], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[2-57-9]\"]]]],\n \"TO\": [\"676\", \"00\", \"(?:0800|(?:[5-8]\\\\d\\\\d|999)\\\\d)\\\\d{3}|[2-8]\\\\d{4}\", [5, 7], [[\"(\\\\d{2})(\\\\d{3})\", \"$1-$2\", [\"[2-4]|50|6[09]|7[0-24-69]|8[05]\"]], [\"(\\\\d{4})(\\\\d{3})\", \"$1 $2\", [\"0\"]], [\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[5-9]\"]]]],\n \"TR\": [\"90\", \"00\", \"4\\\\d{6}|8\\\\d{11,12}|(?:[2-58]\\\\d\\\\d|900)\\\\d{7}\", [7, 10, 12, 13], [[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"512|8[01589]|90\"], \"0$1\", 1], [\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"5(?:[0-59]|61)\", \"5(?:[0-59]|61[06])\", \"5(?:[0-59]|61[06]1)\"], \"0$1\", 1], [\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[24][1-8]|3[1-9]\"], \"(0$1)\", 1], [\"(\\\\d{3})(\\\\d{3})(\\\\d{6,7})\", \"$1 $2 $3\", [\"80\"], \"0$1\", 1]], \"0\"],\n \"TT\": [\"1\", \"011\", \"(?:[58]\\\\d\\\\d|900)\\\\d{7}\", [10], 0, \"1\", 0, \"([2-46-8]\\\\d{6})$|1\", \"868$1\", 0, \"868\"],\n \"TV\": [\"688\", \"00\", \"(?:2|7\\\\d\\\\d|90)\\\\d{4}\", [5, 6, 7], [[\"(\\\\d{2})(\\\\d{3})\", \"$1 $2\", [\"2\"]], [\"(\\\\d{2})(\\\\d{4})\", \"$1 $2\", [\"90\"]], [\"(\\\\d{2})(\\\\d{5})\", \"$1 $2\", [\"7\"]]]],\n \"TW\": [\"886\", \"0(?:0[25-79]|19)\", \"[2-689]\\\\d{8}|7\\\\d{9,10}|[2-8]\\\\d{7}|2\\\\d{6}\", [7, 8, 9, 10, 11], [[\"(\\\\d{2})(\\\\d)(\\\\d{4})\", \"$1 $2 $3\", [\"202\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"[258]0\"], \"0$1\"], [\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\", \"$1 $2 $3\", [\"[23568]|4(?:0[02-48]|[1-47-9])|7[1-9]\", \"[23568]|4(?:0[2-48]|[1-47-9])|(?:400|7)[1-9]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[49]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{4})(\\\\d{4,5})\", \"$1 $2 $3\", [\"7\"], \"0$1\"]], \"0\", 0, 0, 0, 0, 0, 0, 0, \"#\"],\n \"TZ\": [\"255\", \"00[056]\", \"(?:[25-8]\\\\d|41|90)\\\\d{7}\", [9], [[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\", \"$1 $2 $3\", [\"[89]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[24]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{7})\", \"$1 $2\", [\"5\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[67]\"], \"0$1\"]], \"0\"],\n \"UA\": [\"380\", \"00\", \"[89]\\\\d{9}|[3-9]\\\\d{8}\", [9, 10], [[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"6[12][29]|(?:3[1-8]|4[136-8]|5[12457]|6[49])2|(?:56|65)[24]\", \"6[12][29]|(?:35|4[1378]|5[12457]|6[49])2|(?:56|65)[24]|(?:3[1-46-8]|46)2[013-9]\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{5})\", \"$1 $2\", [\"3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6[0135689]|7[4-6])|6(?:[12][3-7]|[459])\", \"3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6(?:[015689]|3[02389])|7[4-6])|6(?:[12][3-7]|[459])\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[3-7]|89|9[1-9]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"[89]\"], \"0$1\"]], \"0\", 0, 0, 0, 0, 0, 0, \"0~0\"],\n \"UG\": [\"256\", \"00[057]\", \"800\\\\d{6}|(?:[29]0|[347]\\\\d)\\\\d{7}\", [9], [[\"(\\\\d{4})(\\\\d{5})\", \"$1 $2\", [\"202\", \"2024\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{6})\", \"$1 $2\", [\"[27-9]|4(?:6[45]|[7-9])\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{7})\", \"$1 $2\", [\"[34]\"], \"0$1\"]], \"0\"],\n \"US\": [\"1\", \"011\", \"[2-9]\\\\d{9}|3\\\\d{6}\", [10], [[\"(\\\\d{3})(\\\\d{4})\", \"$1-$2\", [\"310\"], 0, 1], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"($1) $2-$3\", [\"[2-9]\"], 0, 1, \"$1-$2-$3\"]], \"1\", 0, 0, 0, 0, 0, [[\"(?:3052(?:0[0-8]|[1-9]\\\\d)|5056(?:[0-35-9]\\\\d|4[468])|7302[0-4]\\\\d)\\\\d{4}|(?:305[3-9]|472[24]|505[2-57-9]|7306|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[013569]|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-47-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-29])|7(?:0[1-46-8]|1[2-9]|2[04-8]|3[1247]|4[037]|5[47]|6[02359]|7[0-59]|8[156])|8(?:0[1-68]|1[02-8]|2[068]|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-389]|8[04-69]))[2-9]\\\\d{6}\"], [\"\"], [\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"], [\"900[2-9]\\\\d{6}\"], [\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-9]|33|44|66|77|88)[2-9]\\\\d{6}\"], 0, 0, 0, [\"305209\\\\d{4}\"]]],\n \"UY\": [\"598\", \"0(?:0|1[3-9]\\\\d)\", \"0004\\\\d{2,9}|[1249]\\\\d{7}|(?:[49]\\\\d|80)\\\\d{5}\", [6, 7, 8, 9, 10, 11, 12, 13], [[\"(\\\\d{3})(\\\\d{3,4})\", \"$1 $2\", [\"0\"]], [\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[49]0|8\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"9\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[124]\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{2,4})\", \"$1 $2 $3\", [\"0\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{2,4})\", \"$1 $2 $3 $4\", [\"0\"]]], \"0\", 0, 0, 0, 0, 0, 0, \"00\", \" int. \"],\n \"UZ\": [\"998\", \"00\", \"(?:20|33|[5-79]\\\\d|88)\\\\d{7}\", [9], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[235-9]\"]]]],\n \"VA\": [\"39\", \"00\", \"0\\\\d{5,10}|3[0-8]\\\\d{7,10}|55\\\\d{8}|8\\\\d{5}(?:\\\\d{2,4})?|(?:1\\\\d|39)\\\\d{7,8}\", [6, 7, 8, 9, 10, 11, 12], 0, 0, 0, 0, 0, 0, \"06698\"],\n \"VC\": [\"1\", \"011\", \"(?:[58]\\\\d\\\\d|784|900)\\\\d{7}\", [10], 0, \"1\", 0, \"([2-7]\\\\d{6})$|1\", \"784$1\", 0, \"784\"],\n \"VE\": [\"58\", \"00\", \"[68]00\\\\d{7}|(?:[24]\\\\d|[59]0)\\\\d{8}\", [10], [[\"(\\\\d{3})(\\\\d{7})\", \"$1-$2\", [\"[24-689]\"], \"0$1\"]], \"0\"],\n \"VG\": [\"1\", \"011\", \"(?:284|[58]\\\\d\\\\d|900)\\\\d{7}\", [10], 0, \"1\", 0, \"([2-578]\\\\d{6})$|1\", \"284$1\", 0, \"284\"],\n \"VI\": [\"1\", \"011\", \"[58]\\\\d{9}|(?:34|90)0\\\\d{7}\", [10], 0, \"1\", 0, \"([2-9]\\\\d{6})$|1\", \"340$1\", 0, \"340\"],\n \"VN\": [\"84\", \"00\", \"[12]\\\\d{9}|[135-9]\\\\d{8}|[16]\\\\d{7}|[16-8]\\\\d{6}\", [7, 8, 9, 10], [[\"(\\\\d{2})(\\\\d{5})\", \"$1 $2\", [\"80\"], \"0$1\", 1], [\"(\\\\d{4})(\\\\d{4,6})\", \"$1 $2\", [\"1\"], 0, 1], [\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"6\"], \"0$1\", 1], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[357-9]\"], \"0$1\", 1], [\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"2[48]\"], \"0$1\", 1], [\"(\\\\d{3})(\\\\d{4})(\\\\d{3})\", \"$1 $2 $3\", [\"2\"], \"0$1\", 1]], \"0\"],\n \"VU\": [\"678\", \"00\", \"[57-9]\\\\d{6}|(?:[238]\\\\d|48)\\\\d{3}\", [5, 7], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[57-9]\"]]]],\n \"WF\": [\"681\", \"00\", \"(?:40|72)\\\\d{4}|8\\\\d{5}(?:\\\\d{3})?\", [6, 9], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3\", [\"[478]\"]], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"8\"]]]],\n \"WS\": [\"685\", \"0\", \"(?:[2-6]|8\\\\d{5})\\\\d{4}|[78]\\\\d{6}|[68]\\\\d{5}\", [5, 6, 7, 10], [[\"(\\\\d{5})\", \"$1\", [\"[2-5]|6[1-9]\"]], [\"(\\\\d{3})(\\\\d{3,7})\", \"$1 $2\", [\"[68]\"]], [\"(\\\\d{2})(\\\\d{5})\", \"$1 $2\", [\"7\"]]]],\n \"XK\": [\"383\", \"00\", \"2\\\\d{7,8}|3\\\\d{7,11}|(?:4\\\\d\\\\d|[89]00)\\\\d{5}\", [8, 9, 10, 11, 12], [[\"(\\\\d{3})(\\\\d{5})\", \"$1 $2\", [\"[89]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[2-4]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"2|39\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{7,10})\", \"$1 $2\", [\"3\"], \"0$1\"]], \"0\"],\n \"YE\": [\"967\", \"00\", \"(?:1|7\\\\d)\\\\d{7}|[1-7]\\\\d{6}\", [7, 8, 9], [[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"[1-6]|7(?:[24-6]|8[0-7])\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"7\"], \"0$1\"]], \"0\"],\n \"YT\": [\"262\", \"00\", \"(?:80|9\\\\d)\\\\d{7}|(?:26|63)9\\\\d{6}\", [9], 0, \"0\", 0, 0, 0, 0, 0, [[\"269(?:0[0-467]|15|5[0-4]|6\\\\d|[78]0)\\\\d{4}\"], [\"639(?:0[0-79]|1[019]|[267]\\\\d|3[09]|40|5[05-9]|9[04-79])\\\\d{4}\"], [\"80\\\\d{7}\"], 0, 0, 0, 0, 0, [\"9(?:(?:39|47)8[01]|769\\\\d)\\\\d{4}\"]]],\n \"ZA\": [\"27\", \"00\", \"[1-79]\\\\d{8}|8\\\\d{4,9}\", [5, 6, 7, 8, 9, 10], [[\"(\\\\d{2})(\\\\d{3,4})\", \"$1 $2\", [\"8[1-4]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\", \"$1 $2 $3\", [\"8[1-4]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"860\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[1-9]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"8\"], \"0$1\"]], \"0\"],\n \"ZM\": [\"260\", \"00\", \"800\\\\d{6}|(?:21|63|[79]\\\\d)\\\\d{7}\", [9], [[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[28]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{7})\", \"$1 $2\", [\"[79]\"], \"0$1\"]], \"0\"],\n \"ZW\": [\"263\", \"00\", \"2(?:[0-57-9]\\\\d{6,8}|6[0-24-9]\\\\d{6,7})|[38]\\\\d{9}|[35-8]\\\\d{8}|[3-6]\\\\d{7}|[1-689]\\\\d{6}|[1-3569]\\\\d{5}|[1356]\\\\d{4}\", [5, 6, 7, 8, 9, 10], [[\"(\\\\d{3})(\\\\d{3,5})\", \"$1 $2\", [\"2(?:0[45]|2[278]|[49]8)|3(?:[09]8|17)|6(?:[29]8|37|75)|[23][78]|(?:33|5[15]|6[68])[78]\"], \"0$1\"], [\"(\\\\d)(\\\\d{3})(\\\\d{2,4})\", \"$1 $2 $3\", [\"[49]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"80\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{7})\", \"$1 $2\", [\"24|8[13-59]|(?:2[05-79]|39|5[45]|6[15-8])2\", \"2(?:02[014]|4|[56]20|[79]2)|392|5(?:42|525)|6(?:[16-8]21|52[013])|8[13-59]\"], \"(0$1)\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"7\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"2(?:1[39]|2[0157]|[378]|[56][14])|3(?:12|29)\", \"2(?:1[39]|2[0157]|[378]|[56][14])|3(?:123|29)\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{6})\", \"$1 $2\", [\"8\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3,5})\", \"$1 $2\", [\"1|2(?:0[0-36-9]|12|29|[56])|3(?:1[0-689]|[24-6])|5(?:[0236-9]|1[2-4])|6(?:[013-59]|7[0-46-9])|(?:33|55|6[68])[0-69]|(?:29|3[09]|62)[0-79]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"29[013-9]|39|54\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{3,5})\", \"$1 $2\", [\"(?:25|54)8\", \"258|5483\"], \"0$1\"]], \"0\"]\n },\n \"nonGeographic\": {\n \"800\": [\"800\", 0, \"(?:00|[1-9]\\\\d)\\\\d{6}\", [8], [[\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"\\\\d\"]]], 0, 0, 0, 0, 0, 0, [0, 0, [\"(?:00|[1-9]\\\\d)\\\\d{6}\"]]],\n \"808\": [\"808\", 0, \"[1-9]\\\\d{7}\", [8], [[\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[1-9]\"]]], 0, 0, 0, 0, 0, 0, [0, 0, 0, 0, 0, 0, 0, 0, 0, [\"[1-9]\\\\d{7}\"]]],\n \"870\": [\"870\", 0, \"7\\\\d{11}|[35-7]\\\\d{8}\", [9, 12], [[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[35-7]\"]]], 0, 0, 0, 0, 0, 0, [0, [\"(?:[356]|774[45])\\\\d{8}|7[6-8]\\\\d{7}\"]]],\n \"878\": [\"878\", 0, \"10\\\\d{10}\", [12], [[\"(\\\\d{2})(\\\\d{5})(\\\\d{5})\", \"$1 $2 $3\", [\"1\"]]], 0, 0, 0, 0, 0, 0, [0, 0, 0, 0, 0, 0, 0, 0, [\"10\\\\d{10}\"]]],\n \"881\": [\"881\", 0, \"6\\\\d{9}|[0-36-9]\\\\d{8}\", [9, 10], [[\"(\\\\d)(\\\\d{3})(\\\\d{5})\", \"$1 $2 $3\", [\"[0-37-9]\"]], [\"(\\\\d)(\\\\d{3})(\\\\d{5,6})\", \"$1 $2 $3\", [\"6\"]]], 0, 0, 0, 0, 0, 0, [0, [\"6\\\\d{9}|[0-36-9]\\\\d{8}\"]]],\n \"882\": [\"882\", 0, \"[13]\\\\d{6}(?:\\\\d{2,5})?|[19]\\\\d{7}|(?:[25]\\\\d\\\\d|4)\\\\d{7}(?:\\\\d{2})?\", [7, 8, 9, 10, 11, 12], [[\"(\\\\d{2})(\\\\d{5})\", \"$1 $2\", [\"16|342\"]], [\"(\\\\d{2})(\\\\d{6})\", \"$1 $2\", [\"49\"]], [\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\", \"$1 $2 $3\", [\"1[36]|9\"]], [\"(\\\\d{2})(\\\\d{4})(\\\\d{3})\", \"$1 $2 $3\", [\"3[23]\"]], [\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\", \"$1 $2 $3\", [\"16\"]], [\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"10|23|3(?:[15]|4[57])|4|51\"]], [\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"34\"]], [\"(\\\\d{2})(\\\\d{4,5})(\\\\d{5})\", \"$1 $2 $3\", [\"[1-35]\"]]], 0, 0, 0, 0, 0, 0, [0, [\"342\\\\d{4}|(?:337|49)\\\\d{6}|(?:3(?:2|47|7\\\\d{3})|50\\\\d{3})\\\\d{7}\", [7, 8, 9, 10, 12]], 0, 0, 0, [\"348[57]\\\\d{7}\", [11]], 0, 0, [\"1(?:3(?:0[0347]|[13][0139]|2[035]|4[013568]|6[0459]|7[06]|8[15-8]|9[0689])\\\\d{4}|6\\\\d{5,10})|(?:345\\\\d|9[89])\\\\d{6}|(?:10|2(?:3|85\\\\d)|3(?:[15]|[69]\\\\d\\\\d)|4[15-8]|51)\\\\d{8}\"]]],\n \"883\": [\"883\", 0, \"(?:[1-4]\\\\d|51)\\\\d{6,10}\", [8, 9, 10, 11, 12], [[\"(\\\\d{3})(\\\\d{3})(\\\\d{2,8})\", \"$1 $2 $3\", [\"[14]|2[24-689]|3[02-689]|51[24-9]\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"510\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"21\"]], [\"(\\\\d{4})(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"51[13]\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3 $4\", [\"[235]\"]]], 0, 0, 0, 0, 0, 0, [0, 0, 0, 0, 0, 0, 0, 0, [\"(?:2(?:00\\\\d\\\\d|10)|(?:370[1-9]|51\\\\d0)\\\\d)\\\\d{7}|51(?:00\\\\d{5}|[24-9]0\\\\d{4,7})|(?:1[0-79]|2[24-689]|3[02-689]|4[0-4])0\\\\d{5,9}\"]]],\n \"888\": [\"888\", 0, \"\\\\d{11}\", [11], [[\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\", \"$1 $2 $3\"]], 0, 0, 0, 0, 0, 0, [0, 0, 0, 0, 0, 0, [\"\\\\d{11}\"]]],\n \"979\": [\"979\", 0, \"[1359]\\\\d{8}\", [9], [[\"(\\\\d)(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"[1359]\"]]], 0, 0, 0, 0, 0, 0, [0, 0, 0, [\"[1359]\\\\d{8}\"]]]\n }\n};","// Importing from a \".js\" file is a workaround for Node.js \"ES Modules\"\n// importing system which is even uncapable of importing \"*.json\" files.\nimport metadata from '../../metadata.min.json.js';\nexport default function withMetadataArgument(func, _arguments) {\n var args = Array.prototype.slice.call(_arguments);\n args.push(metadata);\n return func.apply(this, args);\n}","var objectConstructor = {}.constructor;\nexport default function isObject(object) {\n return object !== undefined && object !== null && object.constructor === objectConstructor;\n}","function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _s, _e;\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nimport isObject from './helpers/isObject.js'; // Extracts the following properties from function arguments:\n// * input `text`\n// * `options` object\n// * `metadata` JSON\n\nexport default function normalizeArguments(args) {\n var _Array$prototype$slic = Array.prototype.slice.call(args),\n _Array$prototype$slic2 = _slicedToArray(_Array$prototype$slic, 4),\n arg_1 = _Array$prototype$slic2[0],\n arg_2 = _Array$prototype$slic2[1],\n arg_3 = _Array$prototype$slic2[2],\n arg_4 = _Array$prototype$slic2[3];\n var text;\n var options;\n var metadata; // If the phone number is passed as a string.\n // `parsePhoneNumber('88005553535', ...)`.\n\n if (typeof arg_1 === 'string') {\n text = arg_1;\n } else throw new TypeError('A text for parsing must be a string.'); // If \"default country\" argument is being passed then move it to `options`.\n // `parsePhoneNumber('88005553535', 'RU', [options], metadata)`.\n\n if (!arg_2 || typeof arg_2 === 'string') {\n if (arg_4) {\n options = arg_3;\n metadata = arg_4;\n } else {\n options = undefined;\n metadata = arg_3;\n }\n if (arg_2) {\n options = _objectSpread({\n defaultCountry: arg_2\n }, options);\n }\n } // `defaultCountry` is not passed.\n // Example: `parsePhoneNumber('+78005553535', [options], metadata)`.\n else if (isObject(arg_2)) {\n if (arg_3) {\n options = arg_2;\n metadata = arg_3;\n } else {\n metadata = arg_2;\n }\n } else throw new Error(\"Invalid second argument: \".concat(arg_2));\n return {\n text: text,\n options: options,\n metadata: metadata\n };\n}","// The minimum length of the national significant number.\nexport var MIN_LENGTH_FOR_NSN = 2; // The ITU says the maximum length should be 15,\n// but one can find longer numbers in Germany.\n\nexport var MAX_LENGTH_FOR_NSN = 17; // The maximum length of the country calling code.\n\nexport var MAX_LENGTH_COUNTRY_CODE = 3; // Digits accepted in phone numbers\n// (ascii, fullwidth, arabic-indic, and eastern arabic digits).\n\nexport var VALID_DIGITS = \"0-9\\uFF10-\\uFF19\\u0660-\\u0669\\u06F0-\\u06F9\"; // `DASHES` will be right after the opening square bracket of the \"character class\"\n\nvar DASHES = \"-\\u2010-\\u2015\\u2212\\u30FC\\uFF0D\";\nvar SLASHES = \"\\uFF0F/\";\nvar DOTS = \"\\uFF0E.\";\nexport var WHITESPACE = \" \\xA0\\xAD\\u200B\\u2060\\u3000\";\nvar BRACKETS = \"()\\uFF08\\uFF09\\uFF3B\\uFF3D\\\\[\\\\]\"; // export const OPENING_BRACKETS = '(\\uFF08\\uFF3B\\\\\\['\n\nvar TILDES = \"~\\u2053\\u223C\\uFF5E\"; // Regular expression of acceptable punctuation found in phone numbers. This\n// excludes punctuation found as a leading character only. This consists of dash\n// characters, white space characters, full stops, slashes, square brackets,\n// parentheses and tildes. Full-width variants are also present.\n\nexport var VALID_PUNCTUATION = \"\".concat(DASHES).concat(SLASHES).concat(DOTS).concat(WHITESPACE).concat(BRACKETS).concat(TILDES);\nexport var PLUS_CHARS = \"+\\uFF0B\"; // const LEADING_PLUS_CHARS_PATTERN = new RegExp('^[' + PLUS_CHARS + ']+')","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return _assertThisInitialized(self);\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n return _wrapNativeSuper(Class);\n}\nfunction _construct(Parent, args, Class) {\n if (_isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n}\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\n// https://stackoverflow.com/a/46971044/970769\n// \"Breaking changes in Typescript 2.1\"\n// \"Extending built-ins like Error, Array, and Map may no longer work.\"\n// \"As a recommendation, you can manually adjust the prototype immediately after any super(...) calls.\"\n// https://github.com/Microsoft/TypeScript-wiki/blob/main/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\nvar ParseError = /*#__PURE__*/function (_Error) {\n _inherits(ParseError, _Error);\n var _super = _createSuper(ParseError);\n function ParseError(code) {\n var _this;\n _classCallCheck(this, ParseError);\n _this = _super.call(this, code); // Set the prototype explicitly.\n // Any subclass of FooError will have to manually set the prototype as well.\n\n Object.setPrototypeOf(_assertThisInitialized(_this), ParseError.prototype);\n _this.name = _this.constructor.name;\n return _this;\n }\n return _createClass(ParseError);\n}( /*#__PURE__*/_wrapNativeSuper(Error));\nexport { ParseError as default };","// Copy-pasted from:\n// https://github.com/substack/semver-compare/blob/master/index.js\n//\n// Inlining this function because some users reported issues with\n// importing from `semver-compare` in a browser with ES6 \"native\" modules.\n//\n// Fixes `semver-compare` not being able to compare versions with alpha/beta/etc \"tags\".\n// https://github.com/catamphetamine/libphonenumber-js/issues/381\nexport default function (a, b) {\n a = a.split('-');\n b = b.split('-');\n var pa = a[0].split('.');\n var pb = b[0].split('.');\n for (var i = 0; i < 3; i++) {\n var na = Number(pa[i]);\n var nb = Number(pb[i]);\n if (na > nb) return 1;\n if (nb > na) return -1;\n if (!isNaN(na) && isNaN(nb)) return 1;\n if (isNaN(na) && !isNaN(nb)) return -1;\n }\n if (a[1] && b[1]) {\n return a[1] > b[1] ? 1 : a[1] < b[1] ? -1 : 0;\n }\n return !a[1] && b[1] ? 1 : a[1] && !b[1] ? -1 : 0;\n}","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nimport compare from './tools/semver-compare.js';\nimport isObject from './helpers/isObject.js'; // Added \"possibleLengths\" and renamed\n// \"country_phone_code_to_countries\" to \"country_calling_codes\".\n\nvar V2 = '1.0.18'; // Added \"idd_prefix\" and \"default_idd_prefix\".\n\nvar V3 = '1.2.0'; // Moved `001` country code to \"nonGeographic\" section of metadata.\n\nvar V4 = '1.7.35';\nvar DEFAULT_EXT_PREFIX = ' ext. ';\nvar CALLING_CODE_REG_EXP = /^\\d+$/;\n/**\r\n * See: https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md\r\n */\n\nvar Metadata = /*#__PURE__*/function () {\n function Metadata(metadata) {\n _classCallCheck(this, Metadata);\n validateMetadata(metadata);\n this.metadata = metadata;\n setVersion.call(this, metadata);\n }\n _createClass(Metadata, [{\n key: \"getCountries\",\n value: function getCountries() {\n return Object.keys(this.metadata.countries).filter(function (_) {\n return _ !== '001';\n });\n }\n }, {\n key: \"getCountryMetadata\",\n value: function getCountryMetadata(countryCode) {\n return this.metadata.countries[countryCode];\n }\n }, {\n key: \"nonGeographic\",\n value: function nonGeographic() {\n if (this.v1 || this.v2 || this.v3) return; // `nonGeographical` was a typo.\n // It's present in metadata generated from `1.7.35` to `1.7.37`.\n // The test case could be found by searching for \"nonGeographical\".\n\n return this.metadata.nonGeographic || this.metadata.nonGeographical;\n }\n }, {\n key: \"hasCountry\",\n value: function hasCountry(country) {\n return this.getCountryMetadata(country) !== undefined;\n }\n }, {\n key: \"hasCallingCode\",\n value: function hasCallingCode(callingCode) {\n if (this.getCountryCodesForCallingCode(callingCode)) {\n return true;\n }\n if (this.nonGeographic()) {\n if (this.nonGeographic()[callingCode]) {\n return true;\n }\n } else {\n // A hacky workaround for old custom metadata (generated before V4).\n var countryCodes = this.countryCallingCodes()[callingCode];\n if (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') {\n return true;\n }\n }\n }\n }, {\n key: \"isNonGeographicCallingCode\",\n value: function isNonGeographicCallingCode(callingCode) {\n if (this.nonGeographic()) {\n return this.nonGeographic()[callingCode] ? true : false;\n } else {\n return this.getCountryCodesForCallingCode(callingCode) ? false : true;\n }\n } // Deprecated.\n }, {\n key: \"country\",\n value: function country(countryCode) {\n return this.selectNumberingPlan(countryCode);\n }\n }, {\n key: \"selectNumberingPlan\",\n value: function selectNumberingPlan(countryCode, callingCode) {\n // Supports just passing `callingCode` as the first argument.\n if (countryCode && CALLING_CODE_REG_EXP.test(countryCode)) {\n callingCode = countryCode;\n countryCode = null;\n }\n if (countryCode && countryCode !== '001') {\n if (!this.hasCountry(countryCode)) {\n throw new Error(\"Unknown country: \".concat(countryCode));\n }\n this.numberingPlan = new NumberingPlan(this.getCountryMetadata(countryCode), this);\n } else if (callingCode) {\n if (!this.hasCallingCode(callingCode)) {\n throw new Error(\"Unknown calling code: \".concat(callingCode));\n }\n this.numberingPlan = new NumberingPlan(this.getNumberingPlanMetadata(callingCode), this);\n } else {\n this.numberingPlan = undefined;\n }\n return this;\n }\n }, {\n key: \"getCountryCodesForCallingCode\",\n value: function getCountryCodesForCallingCode(callingCode) {\n var countryCodes = this.countryCallingCodes()[callingCode];\n if (countryCodes) {\n // Metadata before V4 included \"non-geographic entity\" calling codes\n // inside `country_calling_codes` (for example, `\"881\":[\"001\"]`).\n // Now the semantics of `country_calling_codes` has changed:\n // it's specifically for \"countries\" now.\n // Older versions of custom metadata will simply skip parsing\n // \"non-geographic entity\" phone numbers with new versions\n // of this library: it's not considered a bug,\n // because such numbers are extremely rare,\n // and developers extremely rarely use custom metadata.\n if (countryCodes.length === 1 && countryCodes[0].length === 3) {\n return;\n }\n return countryCodes;\n }\n }\n }, {\n key: \"getCountryCodeForCallingCode\",\n value: function getCountryCodeForCallingCode(callingCode) {\n var countryCodes = this.getCountryCodesForCallingCode(callingCode);\n if (countryCodes) {\n return countryCodes[0];\n }\n }\n }, {\n key: \"getNumberingPlanMetadata\",\n value: function getNumberingPlanMetadata(callingCode) {\n var countryCode = this.getCountryCodeForCallingCode(callingCode);\n if (countryCode) {\n return this.getCountryMetadata(countryCode);\n }\n if (this.nonGeographic()) {\n var metadata = this.nonGeographic()[callingCode];\n if (metadata) {\n return metadata;\n }\n } else {\n // A hacky workaround for old custom metadata (generated before V4).\n // In that metadata, there was no concept of \"non-geographic\" metadata\n // so metadata for `001` country code was stored along with other countries.\n // The test case can be found by searching for:\n // \"should work around `nonGeographic` metadata not existing\".\n var countryCodes = this.countryCallingCodes()[callingCode];\n if (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') {\n return this.metadata.countries['001'];\n }\n }\n } // Deprecated.\n }, {\n key: \"countryCallingCode\",\n value: function countryCallingCode() {\n return this.numberingPlan.callingCode();\n } // Deprecated.\n }, {\n key: \"IDDPrefix\",\n value: function IDDPrefix() {\n return this.numberingPlan.IDDPrefix();\n } // Deprecated.\n }, {\n key: \"defaultIDDPrefix\",\n value: function defaultIDDPrefix() {\n return this.numberingPlan.defaultIDDPrefix();\n } // Deprecated.\n }, {\n key: \"nationalNumberPattern\",\n value: function nationalNumberPattern() {\n return this.numberingPlan.nationalNumberPattern();\n } // Deprecated.\n }, {\n key: \"possibleLengths\",\n value: function possibleLengths() {\n return this.numberingPlan.possibleLengths();\n } // Deprecated.\n }, {\n key: \"formats\",\n value: function formats() {\n return this.numberingPlan.formats();\n } // Deprecated.\n }, {\n key: \"nationalPrefixForParsing\",\n value: function nationalPrefixForParsing() {\n return this.numberingPlan.nationalPrefixForParsing();\n } // Deprecated.\n }, {\n key: \"nationalPrefixTransformRule\",\n value: function nationalPrefixTransformRule() {\n return this.numberingPlan.nationalPrefixTransformRule();\n } // Deprecated.\n }, {\n key: \"leadingDigits\",\n value: function leadingDigits() {\n return this.numberingPlan.leadingDigits();\n } // Deprecated.\n }, {\n key: \"hasTypes\",\n value: function hasTypes() {\n return this.numberingPlan.hasTypes();\n } // Deprecated.\n }, {\n key: \"type\",\n value: function type(_type) {\n return this.numberingPlan.type(_type);\n } // Deprecated.\n }, {\n key: \"ext\",\n value: function ext() {\n return this.numberingPlan.ext();\n }\n }, {\n key: \"countryCallingCodes\",\n value: function countryCallingCodes() {\n if (this.v1) return this.metadata.country_phone_code_to_countries;\n return this.metadata.country_calling_codes;\n } // Deprecated.\n }, {\n key: \"chooseCountryByCountryCallingCode\",\n value: function chooseCountryByCountryCallingCode(callingCode) {\n return this.selectNumberingPlan(callingCode);\n }\n }, {\n key: \"hasSelectedNumberingPlan\",\n value: function hasSelectedNumberingPlan() {\n return this.numberingPlan !== undefined;\n }\n }]);\n return Metadata;\n}();\nexport { Metadata as default };\nvar NumberingPlan = /*#__PURE__*/function () {\n function NumberingPlan(metadata, globalMetadataObject) {\n _classCallCheck(this, NumberingPlan);\n this.globalMetadataObject = globalMetadataObject;\n this.metadata = metadata;\n setVersion.call(this, globalMetadataObject.metadata);\n }\n _createClass(NumberingPlan, [{\n key: \"callingCode\",\n value: function callingCode() {\n return this.metadata[0];\n } // Formatting information for regions which share\n // a country calling code is contained by only one region\n // for performance reasons. For example, for NANPA region\n // (\"North American Numbering Plan Administration\",\n // which includes USA, Canada, Cayman Islands, Bahamas, etc)\n // it will be contained in the metadata for `US`.\n }, {\n key: \"getDefaultCountryMetadataForRegion\",\n value: function getDefaultCountryMetadataForRegion() {\n return this.globalMetadataObject.getNumberingPlanMetadata(this.callingCode());\n } // Is always present.\n }, {\n key: \"IDDPrefix\",\n value: function IDDPrefix() {\n if (this.v1 || this.v2) return;\n return this.metadata[1];\n } // Is only present when a country supports multiple IDD prefixes.\n }, {\n key: \"defaultIDDPrefix\",\n value: function defaultIDDPrefix() {\n if (this.v1 || this.v2) return;\n return this.metadata[12];\n }\n }, {\n key: \"nationalNumberPattern\",\n value: function nationalNumberPattern() {\n if (this.v1 || this.v2) return this.metadata[1];\n return this.metadata[2];\n } // \"possible length\" data is always present in Google's metadata.\n }, {\n key: \"possibleLengths\",\n value: function possibleLengths() {\n if (this.v1) return;\n return this.metadata[this.v2 ? 2 : 3];\n }\n }, {\n key: \"_getFormats\",\n value: function _getFormats(metadata) {\n return metadata[this.v1 ? 2 : this.v2 ? 3 : 4];\n } // For countries of the same region (e.g. NANPA)\n // formats are all stored in the \"main\" country for that region.\n // E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\n }, {\n key: \"formats\",\n value: function formats() {\n var _this = this;\n var formats = this._getFormats(this.metadata) || this._getFormats(this.getDefaultCountryMetadataForRegion()) || [];\n return formats.map(function (_) {\n return new Format(_, _this);\n });\n }\n }, {\n key: \"nationalPrefix\",\n value: function nationalPrefix() {\n return this.metadata[this.v1 ? 3 : this.v2 ? 4 : 5];\n }\n }, {\n key: \"_getNationalPrefixFormattingRule\",\n value: function _getNationalPrefixFormattingRule(metadata) {\n return metadata[this.v1 ? 4 : this.v2 ? 5 : 6];\n } // For countries of the same region (e.g. NANPA)\n // national prefix formatting rule is stored in the \"main\" country for that region.\n // E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\n }, {\n key: \"nationalPrefixFormattingRule\",\n value: function nationalPrefixFormattingRule() {\n return this._getNationalPrefixFormattingRule(this.metadata) || this._getNationalPrefixFormattingRule(this.getDefaultCountryMetadataForRegion());\n }\n }, {\n key: \"_nationalPrefixForParsing\",\n value: function _nationalPrefixForParsing() {\n return this.metadata[this.v1 ? 5 : this.v2 ? 6 : 7];\n }\n }, {\n key: \"nationalPrefixForParsing\",\n value: function nationalPrefixForParsing() {\n // If `national_prefix_for_parsing` is not set explicitly,\n // then infer it from `national_prefix` (if any)\n return this._nationalPrefixForParsing() || this.nationalPrefix();\n }\n }, {\n key: \"nationalPrefixTransformRule\",\n value: function nationalPrefixTransformRule() {\n return this.metadata[this.v1 ? 6 : this.v2 ? 7 : 8];\n }\n }, {\n key: \"_getNationalPrefixIsOptionalWhenFormatting\",\n value: function _getNationalPrefixIsOptionalWhenFormatting() {\n return !!this.metadata[this.v1 ? 7 : this.v2 ? 8 : 9];\n } // For countries of the same region (e.g. NANPA)\n // \"national prefix is optional when formatting\" flag is\n // stored in the \"main\" country for that region.\n // E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\n }, {\n key: \"nationalPrefixIsOptionalWhenFormattingInNationalFormat\",\n value: function nationalPrefixIsOptionalWhenFormattingInNationalFormat() {\n return this._getNationalPrefixIsOptionalWhenFormatting(this.metadata) || this._getNationalPrefixIsOptionalWhenFormatting(this.getDefaultCountryMetadataForRegion());\n }\n }, {\n key: \"leadingDigits\",\n value: function leadingDigits() {\n return this.metadata[this.v1 ? 8 : this.v2 ? 9 : 10];\n }\n }, {\n key: \"types\",\n value: function types() {\n return this.metadata[this.v1 ? 9 : this.v2 ? 10 : 11];\n }\n }, {\n key: \"hasTypes\",\n value: function hasTypes() {\n // Versions 1.2.0 - 1.2.4: can be `[]`.\n\n /* istanbul ignore next */\n if (this.types() && this.types().length === 0) {\n return false;\n } // Versions <= 1.2.4: can be `undefined`.\n // Version >= 1.2.5: can be `0`.\n\n return !!this.types();\n }\n }, {\n key: \"type\",\n value: function type(_type2) {\n if (this.hasTypes() && getType(this.types(), _type2)) {\n return new Type(getType(this.types(), _type2), this);\n }\n }\n }, {\n key: \"ext\",\n value: function ext() {\n if (this.v1 || this.v2) return DEFAULT_EXT_PREFIX;\n return this.metadata[13] || DEFAULT_EXT_PREFIX;\n }\n }]);\n return NumberingPlan;\n}();\nvar Format = /*#__PURE__*/function () {\n function Format(format, metadata) {\n _classCallCheck(this, Format);\n this._format = format;\n this.metadata = metadata;\n }\n _createClass(Format, [{\n key: \"pattern\",\n value: function pattern() {\n return this._format[0];\n }\n }, {\n key: \"format\",\n value: function format() {\n return this._format[1];\n }\n }, {\n key: \"leadingDigitsPatterns\",\n value: function leadingDigitsPatterns() {\n return this._format[2] || [];\n }\n }, {\n key: \"nationalPrefixFormattingRule\",\n value: function nationalPrefixFormattingRule() {\n return this._format[3] || this.metadata.nationalPrefixFormattingRule();\n }\n }, {\n key: \"nationalPrefixIsOptionalWhenFormattingInNationalFormat\",\n value: function nationalPrefixIsOptionalWhenFormattingInNationalFormat() {\n return !!this._format[4] || this.metadata.nationalPrefixIsOptionalWhenFormattingInNationalFormat();\n }\n }, {\n key: \"nationalPrefixIsMandatoryWhenFormattingInNationalFormat\",\n value: function nationalPrefixIsMandatoryWhenFormattingInNationalFormat() {\n // National prefix is omitted if there's no national prefix formatting rule\n // set for this country, or when the national prefix formatting rule\n // contains no national prefix itself, or when this rule is set but\n // national prefix is optional for this phone number format\n // (and it is not enforced explicitly)\n return this.usesNationalPrefix() && !this.nationalPrefixIsOptionalWhenFormattingInNationalFormat();\n } // Checks whether national prefix formatting rule contains national prefix.\n }, {\n key: \"usesNationalPrefix\",\n value: function usesNationalPrefix() {\n return this.nationalPrefixFormattingRule() &&\n // Check that national prefix formatting rule is not a \"dummy\" one.\n !FIRST_GROUP_ONLY_PREFIX_PATTERN.test(this.nationalPrefixFormattingRule()) // In compressed metadata, `this.nationalPrefixFormattingRule()` is `0`\n // when `national_prefix_formatting_rule` is not present.\n // So, `true` or `false` are returned explicitly here, so that\n // `0` number isn't returned.\n ? true : false;\n }\n }, {\n key: \"internationalFormat\",\n value: function internationalFormat() {\n return this._format[5] || this.format();\n }\n }]);\n return Format;\n}();\n/**\r\n * A pattern that is used to determine if the national prefix formatting rule\r\n * has the first group only, i.e., does not start with the national prefix.\r\n * Note that the pattern explicitly allows for unbalanced parentheses.\r\n */\n\nvar FIRST_GROUP_ONLY_PREFIX_PATTERN = /^\\(?\\$1\\)?$/;\nvar Type = /*#__PURE__*/function () {\n function Type(type, metadata) {\n _classCallCheck(this, Type);\n this.type = type;\n this.metadata = metadata;\n }\n _createClass(Type, [{\n key: \"pattern\",\n value: function pattern() {\n if (this.metadata.v1) return this.type;\n return this.type[0];\n }\n }, {\n key: \"possibleLengths\",\n value: function possibleLengths() {\n if (this.metadata.v1) return;\n return this.type[1] || this.metadata.possibleLengths();\n }\n }]);\n return Type;\n}();\nfunction getType(types, type) {\n switch (type) {\n case 'FIXED_LINE':\n return types[0];\n case 'MOBILE':\n return types[1];\n case 'TOLL_FREE':\n return types[2];\n case 'PREMIUM_RATE':\n return types[3];\n case 'PERSONAL_NUMBER':\n return types[4];\n case 'VOICEMAIL':\n return types[5];\n case 'UAN':\n return types[6];\n case 'PAGER':\n return types[7];\n case 'VOIP':\n return types[8];\n case 'SHARED_COST':\n return types[9];\n }\n}\nexport function validateMetadata(metadata) {\n if (!metadata) {\n throw new Error('[libphonenumber-js] `metadata` argument not passed. Check your arguments.');\n } // `country_phone_code_to_countries` was renamed to\n // `country_calling_codes` in `1.0.18`.\n\n if (!isObject(metadata) || !isObject(metadata.countries)) {\n throw new Error(\"[libphonenumber-js] `metadata` argument was passed but it's not a valid metadata. Must be an object having `.countries` child object property. Got \".concat(isObject(metadata) ? 'an object of shape: { ' + Object.keys(metadata).join(', ') + ' }' : 'a ' + typeOf(metadata) + ': ' + metadata, \".\"));\n }\n} // Babel transforms `typeof` into some \"branches\"\n// so istanbul will show this as \"branch not covered\".\n\n/* istanbul ignore next */\n\nvar typeOf = function typeOf(_) {\n return _typeof(_);\n};\n/**\r\n * Returns extension prefix for a country.\r\n * @param {string} country\r\n * @param {object} metadata\r\n * @return {string?}\r\n * @example\r\n * // Returns \" ext. \"\r\n * getExtPrefix(\"US\")\r\n */\n\nexport function getExtPrefix(country, metadata) {\n metadata = new Metadata(metadata);\n if (metadata.hasCountry(country)) {\n return metadata.country(country).ext();\n }\n return DEFAULT_EXT_PREFIX;\n}\n/**\r\n * Returns \"country calling code\" for a country.\r\n * Throws an error if the country doesn't exist or isn't supported by this library.\r\n * @param {string} country\r\n * @param {object} metadata\r\n * @return {string}\r\n * @example\r\n * // Returns \"44\"\r\n * getCountryCallingCode(\"GB\")\r\n */\n\nexport function getCountryCallingCode(country, metadata) {\n metadata = new Metadata(metadata);\n if (metadata.hasCountry(country)) {\n return metadata.country(country).countryCallingCode();\n }\n throw new Error(\"Unknown country: \".concat(country));\n}\nexport function isSupportedCountry(country, metadata) {\n // metadata = new Metadata(metadata)\n // return metadata.hasCountry(country)\n return metadata.countries.hasOwnProperty(country);\n}\nfunction setVersion(metadata) {\n var version = metadata.version;\n if (typeof version === 'number') {\n this.v1 = version === 1;\n this.v2 = version === 2;\n this.v3 = version === 3;\n this.v4 = version === 4;\n } else {\n if (!version) {\n this.v1 = true;\n } else if (compare(version, V3) === -1) {\n this.v2 = true;\n } else if (compare(version, V4) === -1) {\n this.v3 = true;\n } else {\n this.v4 = true;\n }\n }\n} // const ISO_COUNTRY_CODE = /^[A-Z]{2}$/\n// function isCountryCode(countryCode) {\n// \treturn ISO_COUNTRY_CODE.test(countryCodeOrCountryCallingCode)\n// }","import { VALID_DIGITS } from '../../constants.js'; // The RFC 3966 format for extensions.\n\nvar RFC3966_EXTN_PREFIX = ';ext=';\n/**\r\n * Helper method for constructing regular expressions for parsing. Creates\r\n * an expression that captures up to max_length digits.\r\n * @return {string} RegEx pattern to capture extension digits.\r\n */\n\nvar getExtensionDigitsPattern = function getExtensionDigitsPattern(maxLength) {\n return \"([\".concat(VALID_DIGITS, \"]{1,\").concat(maxLength, \"})\");\n};\n/**\r\n * Helper initialiser method to create the regular-expression pattern to match\r\n * extensions.\r\n * Copy-pasted from Google's `libphonenumber`:\r\n * https://github.com/google/libphonenumber/blob/55b2646ec9393f4d3d6661b9c82ef9e258e8b829/javascript/i18n/phonenumbers/phonenumberutil.js#L759-L766\r\n * @return {string} RegEx pattern to capture extensions.\r\n */\n\nexport default function createExtensionPattern(purpose) {\n // We cap the maximum length of an extension based on the ambiguity of the way\n // the extension is prefixed. As per ITU, the officially allowed length for\n // extensions is actually 40, but we don't support this since we haven't seen real\n // examples and this introduces many false interpretations as the extension labels\n // are not standardized.\n\n /** @type {string} */\n var extLimitAfterExplicitLabel = '20';\n /** @type {string} */\n\n var extLimitAfterLikelyLabel = '15';\n /** @type {string} */\n\n var extLimitAfterAmbiguousChar = '9';\n /** @type {string} */\n\n var extLimitWhenNotSure = '6';\n /** @type {string} */\n\n var possibleSeparatorsBetweenNumberAndExtLabel = \"[ \\xA0\\\\t,]*\"; // Optional full stop (.) or colon, followed by zero or more spaces/tabs/commas.\n\n /** @type {string} */\n\n var possibleCharsAfterExtLabel = \"[:\\\\.\\uFF0E]?[ \\xA0\\\\t,-]*\";\n /** @type {string} */\n\n var optionalExtnSuffix = \"#?\"; // Here the extension is called out in more explicit way, i.e mentioning it obvious\n // patterns like \"ext.\".\n\n /** @type {string} */\n\n var explicitExtLabels = \"(?:e?xt(?:ensi(?:o\\u0301?|\\xF3))?n?|\\uFF45?\\uFF58\\uFF54\\uFF4E?|\\u0434\\u043E\\u0431|anexo)\"; // One-character symbols that can be used to indicate an extension, and less\n // commonly used or more ambiguous extension labels.\n\n /** @type {string} */\n\n var ambiguousExtLabels = \"(?:[x\\uFF58#\\uFF03~\\uFF5E]|int|\\uFF49\\uFF4E\\uFF54)\"; // When extension is not separated clearly.\n\n /** @type {string} */\n\n var ambiguousSeparator = \"[- ]+\"; // This is the same as possibleSeparatorsBetweenNumberAndExtLabel, but not matching\n // comma as extension label may have it.\n\n /** @type {string} */\n\n var possibleSeparatorsNumberExtLabelNoComma = \"[ \\xA0\\\\t]*\"; // \",,\" is commonly used for auto dialling the extension when connected. First\n // comma is matched through possibleSeparatorsBetweenNumberAndExtLabel, so we do\n // not repeat it here. Semi-colon works in Iphone and Android also to pop up a\n // button with the extension number following.\n\n /** @type {string} */\n\n var autoDiallingAndExtLabelsFound = \"(?:,{2}|;)\";\n /** @type {string} */\n\n var rfcExtn = RFC3966_EXTN_PREFIX + getExtensionDigitsPattern(extLimitAfterExplicitLabel);\n /** @type {string} */\n\n var explicitExtn = possibleSeparatorsBetweenNumberAndExtLabel + explicitExtLabels + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterExplicitLabel) + optionalExtnSuffix;\n /** @type {string} */\n\n var ambiguousExtn = possibleSeparatorsBetweenNumberAndExtLabel + ambiguousExtLabels + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterAmbiguousChar) + optionalExtnSuffix;\n /** @type {string} */\n\n var americanStyleExtnWithSuffix = ambiguousSeparator + getExtensionDigitsPattern(extLimitWhenNotSure) + \"#\";\n /** @type {string} */\n\n var autoDiallingExtn = possibleSeparatorsNumberExtLabelNoComma + autoDiallingAndExtLabelsFound + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterLikelyLabel) + optionalExtnSuffix;\n /** @type {string} */\n\n var onlyCommasExtn = possibleSeparatorsNumberExtLabelNoComma + \"(?:,)+\" + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterAmbiguousChar) + optionalExtnSuffix; // The first regular expression covers RFC 3966 format, where the extension is added\n // using \";ext=\". The second more generic where extension is mentioned with explicit\n // labels like \"ext:\". In both the above cases we allow more numbers in extension than\n // any other extension labels. The third one captures when single character extension\n // labels or less commonly used labels are used. In such cases we capture fewer\n // extension digits in order to reduce the chance of falsely interpreting two\n // numbers beside each other as a number + extension. The fourth one covers the\n // special case of American numbers where the extension is written with a hash\n // at the end, such as \"- 503#\". The fifth one is exclusively for extension\n // autodialling formats which are used when dialling and in this case we accept longer\n // extensions. The last one is more liberal on the number of commas that acts as\n // extension labels, so we have a strict cap on the number of digits in such extensions.\n\n return rfcExtn + \"|\" + explicitExtn + \"|\" + ambiguousExtn + \"|\" + americanStyleExtnWithSuffix + \"|\" + autoDiallingExtn + \"|\" + onlyCommasExtn;\n}","import { MIN_LENGTH_FOR_NSN, VALID_DIGITS, VALID_PUNCTUATION, PLUS_CHARS } from '../constants.js';\nimport createExtensionPattern from './extension/createExtensionPattern.js'; // Regular expression of viable phone numbers. This is location independent.\n// Checks we have at least three leading digits, and only valid punctuation,\n// alpha characters and digits in the phone number. Does not include extension\n// data. The symbol 'x' is allowed here as valid punctuation since it is often\n// used as a placeholder for carrier codes, for example in Brazilian phone\n// numbers. We also allow multiple '+' characters at the start.\n//\n// Corresponds to the following:\n// [digits]{minLengthNsn}|\n// plus_sign*\n// (([punctuation]|[star])*[digits]){3,}([punctuation]|[star]|[digits]|[alpha])*\n//\n// The first reg-ex is to allow short numbers (two digits long) to be parsed if\n// they are entered as \"15\" etc, but only if there is no punctuation in them.\n// The second expression restricts the number of digits to three or more, but\n// then allows them to be in international form, and to have alpha-characters\n// and punctuation. We split up the two reg-exes here and combine them when\n// creating the reg-ex VALID_PHONE_NUMBER_PATTERN itself so we can prefix it\n// with ^ and append $ to each branch.\n//\n// \"Note VALID_PUNCTUATION starts with a -,\n// so must be the first in the range\" (c) Google devs.\n// (wtf did they mean by saying that; probably nothing)\n//\n\nvar MIN_LENGTH_PHONE_NUMBER_PATTERN = '[' + VALID_DIGITS + ']{' + MIN_LENGTH_FOR_NSN + '}'; //\n// And this is the second reg-exp:\n// (see MIN_LENGTH_PHONE_NUMBER_PATTERN for a full description of this reg-exp)\n//\n\nexport var VALID_PHONE_NUMBER = '[' + PLUS_CHARS + ']{0,1}' + '(?:' + '[' + VALID_PUNCTUATION + ']*' + '[' + VALID_DIGITS + ']' + '){3,}' + '[' + VALID_PUNCTUATION + VALID_DIGITS + ']*'; // This regular expression isn't present in Google's `libphonenumber`\n// and is only used to determine whether the phone number being input\n// is too short for it to even consider it a \"valid\" number.\n// This is just a way to differentiate between a really invalid phone\n// number like \"abcde\" and a valid phone number that a user has just\n// started inputting, like \"+1\" or \"1\": both these cases would be\n// considered `NOT_A_NUMBER` by Google's `libphonenumber`, but this\n// library can provide a more detailed error message — whether it's\n// really \"not a number\", or is it just a start of a valid phone number.\n\nvar VALID_PHONE_NUMBER_START_REG_EXP = new RegExp('^' + '[' + PLUS_CHARS + ']{0,1}' + '(?:' + '[' + VALID_PUNCTUATION + ']*' + '[' + VALID_DIGITS + ']' + '){1,2}' + '$', 'i');\nexport var VALID_PHONE_NUMBER_WITH_EXTENSION = VALID_PHONE_NUMBER +\n// Phone number extensions\n'(?:' + createExtensionPattern() + ')?'; // The combined regular expression for valid phone numbers:\n//\n\nvar VALID_PHONE_NUMBER_PATTERN = new RegExp(\n// Either a short two-digit-only phone number\n'^' + MIN_LENGTH_PHONE_NUMBER_PATTERN + '$' + '|' +\n// Or a longer fully parsed phone number (min 3 characters)\n'^' + VALID_PHONE_NUMBER_WITH_EXTENSION + '$', 'i'); // Checks to see if the string of characters could possibly be a phone number at\n// all. At the moment, checks to see that the string begins with at least 2\n// digits, ignoring any punctuation commonly found in phone numbers. This method\n// does not require the number to be normalized in advance - but does assume\n// that leading non-number symbols have been removed, such as by the method\n// `extract_possible_number`.\n//\n\nexport default function isViablePhoneNumber(number) {\n return number.length >= MIN_LENGTH_FOR_NSN && VALID_PHONE_NUMBER_PATTERN.test(number);\n} // This is just a way to differentiate between a really invalid phone\n// number like \"abcde\" and a valid phone number that a user has just\n// started inputting, like \"+1\" or \"1\": both these cases would be\n// considered `NOT_A_NUMBER` by Google's `libphonenumber`, but this\n// library can provide a more detailed error message — whether it's\n// really \"not a number\", or is it just a start of a valid phone number.\n\nexport function isViablePhoneNumberStart(number) {\n return VALID_PHONE_NUMBER_START_REG_EXP.test(number);\n}","import createExtensionPattern from './createExtensionPattern.js'; // Regexp of all known extension prefixes used by different regions followed by\n// 1 or more valid digits, for use when parsing.\n\nvar EXTN_PATTERN = new RegExp('(?:' + createExtensionPattern() + ')$', 'i'); // Strips any extension (as in, the part of the number dialled after the call is\n// connected, usually indicated with extn, ext, x or similar) from the end of\n// the number, and returns it.\n\nexport default function extractExtension(number) {\n var start = number.search(EXTN_PATTERN);\n if (start < 0) {\n return {};\n } // If we find a potential extension, and the number preceding this is a viable\n // number, we assume it is an extension.\n\n var numberWithoutExtension = number.slice(0, start);\n var matches = number.match(EXTN_PATTERN);\n var i = 1;\n while (i < matches.length) {\n if (matches[i]) {\n return {\n number: numberWithoutExtension,\n ext: matches[i]\n };\n }\n i++;\n }\n}","function _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(it);\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\n\n// These mappings map a character (key) to a specific digit that should\n// replace it for normalization purposes. Non-European digits that\n// may be used in phone numbers are mapped to a European equivalent.\n//\n// E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\n//\nexport var DIGITS = {\n '0': '0',\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9',\n \"\\uFF10\": '0',\n // Fullwidth digit 0\n \"\\uFF11\": '1',\n // Fullwidth digit 1\n \"\\uFF12\": '2',\n // Fullwidth digit 2\n \"\\uFF13\": '3',\n // Fullwidth digit 3\n \"\\uFF14\": '4',\n // Fullwidth digit 4\n \"\\uFF15\": '5',\n // Fullwidth digit 5\n \"\\uFF16\": '6',\n // Fullwidth digit 6\n \"\\uFF17\": '7',\n // Fullwidth digit 7\n \"\\uFF18\": '8',\n // Fullwidth digit 8\n \"\\uFF19\": '9',\n // Fullwidth digit 9\n \"\\u0660\": '0',\n // Arabic-indic digit 0\n \"\\u0661\": '1',\n // Arabic-indic digit 1\n \"\\u0662\": '2',\n // Arabic-indic digit 2\n \"\\u0663\": '3',\n // Arabic-indic digit 3\n \"\\u0664\": '4',\n // Arabic-indic digit 4\n \"\\u0665\": '5',\n // Arabic-indic digit 5\n \"\\u0666\": '6',\n // Arabic-indic digit 6\n \"\\u0667\": '7',\n // Arabic-indic digit 7\n \"\\u0668\": '8',\n // Arabic-indic digit 8\n \"\\u0669\": '9',\n // Arabic-indic digit 9\n \"\\u06F0\": '0',\n // Eastern-Arabic digit 0\n \"\\u06F1\": '1',\n // Eastern-Arabic digit 1\n \"\\u06F2\": '2',\n // Eastern-Arabic digit 2\n \"\\u06F3\": '3',\n // Eastern-Arabic digit 3\n \"\\u06F4\": '4',\n // Eastern-Arabic digit 4\n \"\\u06F5\": '5',\n // Eastern-Arabic digit 5\n \"\\u06F6\": '6',\n // Eastern-Arabic digit 6\n \"\\u06F7\": '7',\n // Eastern-Arabic digit 7\n \"\\u06F8\": '8',\n // Eastern-Arabic digit 8\n \"\\u06F9\": '9' // Eastern-Arabic digit 9\n};\n\nexport function parseDigit(character) {\n return DIGITS[character];\n}\n/**\r\n * Parses phone number digits from a string.\r\n * Drops all punctuation leaving only digits.\r\n * Also converts wide-ascii and arabic-indic numerals to conventional numerals.\r\n * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n * @param {string} string\r\n * @return {string}\r\n * @example\r\n * ```js\r\n * parseDigits('8 (800) 555')\r\n * // Outputs '8800555'.\r\n * ```\r\n */\n\nexport default function parseDigits(string) {\n var result = ''; // Using `.split('')` here instead of normal `for ... of`\n // because the importing application doesn't neccessarily include an ES6 polyfill.\n // The `.split('')` approach discards \"exotic\" UTF-8 characters\n // (the ones consisting of four bytes) but digits\n // (including non-European ones) don't fall into that range\n // so such \"exotic\" characters would be discarded anyway.\n\n for (var _iterator = _createForOfIteratorHelperLoose(string.split('')), _step; !(_step = _iterator()).done;) {\n var character = _step.value;\n var digit = parseDigit(character);\n if (digit) {\n result += digit;\n }\n }\n return result;\n}","function _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(it);\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nimport { parseDigit } from './helpers/parseDigits.js';\n/**\r\n * Parses phone number characters from a string.\r\n * Drops all punctuation leaving only digits and the leading `+` sign (if any).\r\n * Also converts wide-ascii and arabic-indic numerals to conventional numerals.\r\n * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n * @param {string} string\r\n * @return {string}\r\n * @example\r\n * ```js\r\n * // Outputs '8800555'.\r\n * parseIncompletePhoneNumber('8 (800) 555')\r\n * // Outputs '+7800555'.\r\n * parseIncompletePhoneNumber('+7 800 555')\r\n * ```\r\n */\n\nexport default function parseIncompletePhoneNumber(string) {\n var result = ''; // Using `.split('')` here instead of normal `for ... of`\n // because the importing application doesn't neccessarily include an ES6 polyfill.\n // The `.split('')` approach discards \"exotic\" UTF-8 characters\n // (the ones consisting of four bytes) but digits\n // (including non-European ones) don't fall into that range\n // so such \"exotic\" characters would be discarded anyway.\n\n for (var _iterator = _createForOfIteratorHelperLoose(string.split('')), _step; !(_step = _iterator()).done;) {\n var character = _step.value;\n result += parsePhoneNumberCharacter(character, result) || '';\n }\n return result;\n}\n/**\r\n * Parses next character while parsing phone number digits (including a `+`)\r\n * from text: discards everything except `+` and digits, and `+` is only allowed\r\n * at the start of a phone number.\r\n * For example, is used in `react-phone-number-input` where it uses\r\n * [`input-format`](https://gitlab.com/catamphetamine/input-format).\r\n * @param {string} character - Yet another character from raw input string.\r\n * @param {string?} prevParsedCharacters - Previous parsed characters.\r\n * @param {function?} emitEvent - An optional \"emit event\" function.\r\n * @return {string?} The parsed character.\r\n */\n\nexport function parsePhoneNumberCharacter(character, prevParsedCharacters, emitEvent) {\n // Only allow a leading `+`.\n if (character === '+') {\n // If this `+` is not the first parsed character\n // then discard it.\n if (prevParsedCharacters) {\n // `emitEvent` argument was added to this `export`ed function on Dec 26th, 2023.\n // Any 3rd-party code that used to `import` and call this function before that\n // won't be passing any `emitEvent` argument.\n //\n // The addition of the `emitEvent` argument was to fix the slightly-weird behavior\n // of parsing an input string when the user inputs something like `\"2+7\"\n // https://github.com/catamphetamine/react-phone-number-input/issues/437\n //\n // If the parser encounters an unexpected `+` in a string being parsed\n // then it simply discards that out-of-place `+` and any following characters.\n //\n if (typeof emitEvent === 'function') {\n emitEvent('end');\n }\n return;\n }\n return '+';\n } // Allow digits.\n\n return parseDigit(character);\n}","function _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(it);\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\n\n/**\r\n * Merges two arrays.\r\n * @param {*} a\r\n * @param {*} b\r\n * @return {*}\r\n */\nexport default function mergeArrays(a, b) {\n var merged = a.slice();\n for (var _iterator = _createForOfIteratorHelperLoose(b), _step; !(_step = _iterator()).done;) {\n var element = _step.value;\n if (a.indexOf(element) < 0) {\n merged.push(element);\n }\n }\n return merged.sort(function (a, b) {\n return a - b;\n }); // ES6 version, requires Set polyfill.\n // let merged = new Set(a)\n // for (const element of b) {\n // \tmerged.add(i)\n // }\n // return Array.from(merged).sort((a, b) => a - b)\n}","import mergeArrays from './mergeArrays.js';\nexport default function checkNumberLength(nationalNumber, metadata) {\n return checkNumberLengthForType(nationalNumber, undefined, metadata);\n} // Checks whether a number is possible for the country based on its length.\n// Should only be called for the \"new\" metadata which has \"possible lengths\".\n\nexport function checkNumberLengthForType(nationalNumber, type, metadata) {\n var type_info = metadata.type(type); // There should always be \"\" set for every type element.\n // This is declared in the XML schema.\n // For size efficiency, where a sub-description (e.g. fixed-line)\n // has the same \"\" as the \"general description\", this is missing,\n // so we fall back to the \"general description\". Where no numbers of the type\n // exist at all, there is one possible length (-1) which is guaranteed\n // not to match the length of any real phone number.\n\n var possible_lengths = type_info && type_info.possibleLengths() || metadata.possibleLengths(); // let local_lengths = type_info && type.possibleLengthsLocal() || metadata.possibleLengthsLocal()\n // Metadata before version `1.0.18` didn't contain `possible_lengths`.\n\n if (!possible_lengths) {\n return 'IS_POSSIBLE';\n }\n if (type === 'FIXED_LINE_OR_MOBILE') {\n // No such country in metadata.\n\n /* istanbul ignore next */\n if (!metadata.type('FIXED_LINE')) {\n // The rare case has been encountered where no fixedLine data is available\n // (true for some non-geographic entities), so we just check mobile.\n return checkNumberLengthForType(nationalNumber, 'MOBILE', metadata);\n }\n var mobile_type = metadata.type('MOBILE');\n if (mobile_type) {\n // Merge the mobile data in if there was any. \"Concat\" creates a new\n // array, it doesn't edit possible_lengths in place, so we don't need a copy.\n // Note that when adding the possible lengths from mobile, we have\n // to again check they aren't empty since if they are this indicates\n // they are the same as the general desc and should be obtained from there.\n possible_lengths = mergeArrays(possible_lengths, mobile_type.possibleLengths()); // The current list is sorted; we need to merge in the new list and\n // re-sort (duplicates are okay). Sorting isn't so expensive because\n // the lists are very small.\n // if (local_lengths) {\n // \tlocal_lengths = mergeArrays(local_lengths, mobile_type.possibleLengthsLocal())\n // } else {\n // \tlocal_lengths = mobile_type.possibleLengthsLocal()\n // }\n }\n } // If the type doesn't exist then return 'INVALID_LENGTH'.\n else if (type && !type_info) {\n return 'INVALID_LENGTH';\n }\n var actual_length = nationalNumber.length; // In `libphonenumber-js` all \"local-only\" formats are dropped for simplicity.\n // // This is safe because there is never an overlap beween the possible lengths\n // // and the local-only lengths; this is checked at build time.\n // if (local_lengths && local_lengths.indexOf(nationalNumber.length) >= 0)\n // {\n // \treturn 'IS_POSSIBLE_LOCAL_ONLY'\n // }\n\n var minimum_length = possible_lengths[0];\n if (minimum_length === actual_length) {\n return 'IS_POSSIBLE';\n }\n if (minimum_length > actual_length) {\n return 'TOO_SHORT';\n }\n if (possible_lengths[possible_lengths.length - 1] < actual_length) {\n return 'TOO_LONG';\n } // We skip the first element since we've already checked it.\n\n return possible_lengths.indexOf(actual_length, 1) >= 0 ? 'IS_POSSIBLE' : 'INVALID_LENGTH';\n}","import Metadata from './metadata.js';\nimport checkNumberLength from './helpers/checkNumberLength.js';\n/**\r\n * Checks if a phone number is \"possible\" (basically just checks its length).\r\n *\r\n * isPossible(phoneNumberInstance, { ..., v2: true }, metadata)\r\n *\r\n * isPossible({ phone: '8005553535', country: 'RU' }, { ... }, metadata)\r\n * isPossible({ phone: '8005553535', country: 'RU' }, undefined, metadata)\r\n *\r\n * @param {object|PhoneNumber} input — If `options.v2: true` flag is passed, the `input` should be a `PhoneNumber` instance. Otherwise, it should be an object of shape `{ phone: '...', country: '...' }`.\r\n * @param {object} [options]\r\n * @param {object} metadata\r\n * @return {string}\r\n */\n\nexport default function isPossiblePhoneNumber(input, options, metadata) {\n /* istanbul ignore if */\n if (options === undefined) {\n options = {};\n }\n metadata = new Metadata(metadata);\n if (options.v2) {\n if (!input.countryCallingCode) {\n throw new Error('Invalid phone number object passed');\n }\n metadata.selectNumberingPlan(input.countryCallingCode);\n } else {\n if (!input.phone) {\n return false;\n }\n if (input.country) {\n if (!metadata.hasCountry(input.country)) {\n throw new Error(\"Unknown country: \".concat(input.country));\n }\n metadata.country(input.country);\n } else {\n if (!input.countryCallingCode) {\n throw new Error('Invalid phone number object passed');\n }\n metadata.selectNumberingPlan(input.countryCallingCode);\n }\n } // Old metadata (< 1.0.18) had no \"possible length\" data.\n\n if (metadata.possibleLengths()) {\n return isPossibleNumber(input.phone || input.nationalNumber, metadata);\n } else {\n // There was a bug between `1.7.35` and `1.7.37` where \"possible_lengths\"\n // were missing for \"non-geographical\" numbering plans.\n // Just assume the number is possible in such cases:\n // it's unlikely that anyone generated their custom metadata\n // in that short period of time (one day).\n // This code can be removed in some future major version update.\n if (input.countryCallingCode && metadata.isNonGeographicCallingCode(input.countryCallingCode)) {\n // \"Non-geographic entities\" did't have `possibleLengths`\n // due to a bug in metadata generation process.\n return true;\n } else {\n throw new Error('Missing \"possibleLengths\" in metadata. Perhaps the metadata has been generated before v1.0.18.');\n }\n }\n}\nexport function isPossibleNumber(nationalNumber, metadata) {\n //, isInternational) {\n switch (checkNumberLength(nationalNumber, metadata)) {\n case 'IS_POSSIBLE':\n return true;\n // This library ignores \"local-only\" phone numbers (for simplicity).\n // See the readme for more info on what are \"local-only\" phone numbers.\n // case 'IS_POSSIBLE_LOCAL_ONLY':\n // \treturn !isInternational\n\n default:\n return false;\n }\n}","/**\r\n * Checks whether the entire input sequence can be matched\r\n * against the regular expression.\r\n * @return {boolean}\r\n */\nexport default function matchesEntirely(text, regular_expression) {\n // If assigning the `''` default value is moved to the arguments above,\n // code coverage would decrease for some weird reason.\n text = text || '';\n return new RegExp('^(?:' + regular_expression + ')$').test(text);\n}","function _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(it);\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nimport Metadata from '../metadata.js';\nimport matchesEntirely from './matchesEntirely.js';\nvar NON_FIXED_LINE_PHONE_TYPES = ['MOBILE', 'PREMIUM_RATE', 'TOLL_FREE', 'SHARED_COST', 'VOIP', 'PERSONAL_NUMBER', 'PAGER', 'UAN', 'VOICEMAIL']; // Finds out national phone number type (fixed line, mobile, etc)\n\nexport default function getNumberType(input, options, metadata) {\n // If assigning the `{}` default value is moved to the arguments above,\n // code coverage would decrease for some weird reason.\n options = options || {}; // When `parse()` returns an empty object — `{}` —\n // that means that the phone number is malformed,\n // so it can't possibly be valid.\n\n if (!input.country && !input.countryCallingCode) {\n return;\n }\n metadata = new Metadata(metadata);\n metadata.selectNumberingPlan(input.country, input.countryCallingCode);\n var nationalNumber = options.v2 ? input.nationalNumber : input.phone; // The following is copy-pasted from the original function:\n // https://github.com/googlei18n/libphonenumber/blob/3ea547d4fbaa2d0b67588904dfa5d3f2557c27ff/javascript/i18n/phonenumbers/phonenumberutil.js#L2835\n // Is this national number even valid for this country\n\n if (!matchesEntirely(nationalNumber, metadata.nationalNumberPattern())) {\n return;\n } // Is it fixed line number\n\n if (isNumberTypeEqualTo(nationalNumber, 'FIXED_LINE', metadata)) {\n // Because duplicate regular expressions are removed\n // to reduce metadata size, if \"mobile\" pattern is \"\"\n // then it means it was removed due to being a duplicate of the fixed-line pattern.\n //\n if (metadata.type('MOBILE') && metadata.type('MOBILE').pattern() === '') {\n return 'FIXED_LINE_OR_MOBILE';\n } // `MOBILE` type pattern isn't included if it matched `FIXED_LINE` one.\n // For example, for \"US\" country.\n // Old metadata (< `1.0.18`) had a specific \"types\" data structure\n // that happened to be `undefined` for `MOBILE` in that case.\n // Newer metadata (>= `1.0.18`) has another data structure that is\n // not `undefined` for `MOBILE` in that case (it's just an empty array).\n // So this `if` is just for backwards compatibility with old metadata.\n\n if (!metadata.type('MOBILE')) {\n return 'FIXED_LINE_OR_MOBILE';\n } // Check if the number happens to qualify as both fixed line and mobile.\n // (no such country in the minimal metadata set)\n\n /* istanbul ignore if */\n\n if (isNumberTypeEqualTo(nationalNumber, 'MOBILE', metadata)) {\n return 'FIXED_LINE_OR_MOBILE';\n }\n return 'FIXED_LINE';\n }\n for (var _iterator = _createForOfIteratorHelperLoose(NON_FIXED_LINE_PHONE_TYPES), _step; !(_step = _iterator()).done;) {\n var type = _step.value;\n if (isNumberTypeEqualTo(nationalNumber, type, metadata)) {\n return type;\n }\n }\n}\nexport function isNumberTypeEqualTo(nationalNumber, type, metadata) {\n type = metadata.type(type);\n if (!type || !type.pattern()) {\n return false;\n } // Check if any possible number lengths are present;\n // if so, we use them to avoid checking\n // the validation pattern if they don't match.\n // If they are absent, this means they match\n // the general description, which we have\n // already checked before a specific number type.\n\n if (type.possibleLengths() && type.possibleLengths().indexOf(nationalNumber.length) < 0) {\n return false;\n }\n return matchesEntirely(nationalNumber, type.pattern());\n}","import Metadata from '../metadata.js';\n/**\r\n * Returns a list of countries that the phone number could potentially belong to.\r\n * @param {string} callingCode — Calling code.\r\n * @param {string} nationalNumber — National (significant) number.\r\n * @param {object} metadata — Metadata.\r\n * @return {string[]} A list of possible countries.\r\n */\n\nexport default function getPossibleCountriesForNumber(callingCode, nationalNumber, metadata) {\n var _metadata = new Metadata(metadata);\n var possibleCountries = _metadata.getCountryCodesForCallingCode(callingCode);\n if (!possibleCountries) {\n return [];\n }\n return possibleCountries.filter(function (country) {\n return couldNationalNumberBelongToCountry(nationalNumber, country, metadata);\n });\n}\nfunction couldNationalNumberBelongToCountry(nationalNumber, country, metadata) {\n var _metadata = new Metadata(metadata);\n _metadata.selectNumberingPlan(country);\n if (_metadata.numberingPlan.possibleLengths().indexOf(nationalNumber.length) >= 0) {\n return true;\n }\n return false;\n}","import { VALID_PUNCTUATION } from '../constants.js'; // Removes brackets and replaces dashes with spaces.\n//\n// E.g. \"(999) 111-22-33\" -> \"999 111 22 33\"\n//\n// For some reason Google's metadata contains ``s with brackets and dashes.\n// Meanwhile, there's no single opinion about using punctuation in international phone numbers.\n//\n// For example, Google's `` for USA is `+1 213-373-4253`.\n// And here's a quote from WikiPedia's \"North American Numbering Plan\" page:\n// https://en.wikipedia.org/wiki/North_American_Numbering_Plan\n//\n// \"The country calling code for all countries participating in the NANP is 1.\n// In international format, an NANP number should be listed as +1 301 555 01 00,\n// where 301 is an area code (Maryland).\"\n//\n// I personally prefer the international format without any punctuation.\n// For example, brackets are remnants of the old age, meaning that the\n// phone number part in brackets (so called \"area code\") can be omitted\n// if dialing within the same \"area\".\n// And hyphens were clearly introduced for splitting local numbers into memorizable groups.\n// For example, remembering \"5553535\" is difficult but \"555-35-35\" is much simpler.\n// Imagine a man taking a bus from home to work and seeing an ad with a phone number.\n// He has a couple of seconds to memorize that number until it passes by.\n// If it were spaces instead of hyphens the man wouldn't necessarily get it,\n// but with hyphens instead of spaces the grouping is more explicit.\n// I personally think that hyphens introduce visual clutter,\n// so I prefer replacing them with spaces in international numbers.\n// In the modern age all output is done on displays where spaces are clearly distinguishable\n// so hyphens can be safely replaced with spaces without losing any legibility.\n//\n\nexport default function applyInternationalSeparatorStyle(formattedNumber) {\n return formattedNumber.replace(new RegExp(\"[\".concat(VALID_PUNCTUATION, \"]+\"), 'g'), ' ').trim();\n}","import applyInternationalSeparatorStyle from './applyInternationalSeparatorStyle.js'; // This was originally set to $1 but there are some countries for which the\n// first group is not used in the national pattern (e.g. Argentina) so the $1\n// group does not match correctly. Therefore, we use `\\d`, so that the first\n// group actually used in the pattern will be matched.\n\nexport var FIRST_GROUP_PATTERN = /(\\$\\d)/;\nexport default function formatNationalNumberUsingFormat(number, format, _ref) {\n var useInternationalFormat = _ref.useInternationalFormat,\n withNationalPrefix = _ref.withNationalPrefix,\n carrierCode = _ref.carrierCode,\n metadata = _ref.metadata;\n var formattedNumber = number.replace(new RegExp(format.pattern()), useInternationalFormat ? format.internationalFormat() :\n // This library doesn't use `domestic_carrier_code_formatting_rule`,\n // because that one is only used when formatting phone numbers\n // for dialing from a mobile phone, and this is not a dialing library.\n // carrierCode && format.domesticCarrierCodeFormattingRule()\n // \t// First, replace the $CC in the formatting rule with the desired carrier code.\n // \t// Then, replace the $FG in the formatting rule with the first group\n // \t// and the carrier code combined in the appropriate way.\n // \t? format.format().replace(FIRST_GROUP_PATTERN, format.domesticCarrierCodeFormattingRule().replace('$CC', carrierCode))\n // \t: (\n // \t\twithNationalPrefix && format.nationalPrefixFormattingRule()\n // \t\t\t? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule())\n // \t\t\t: format.format()\n // \t)\n withNationalPrefix && format.nationalPrefixFormattingRule() ? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule()) : format.format());\n if (useInternationalFormat) {\n return applyInternationalSeparatorStyle(formattedNumber);\n }\n return formattedNumber;\n}","import Metadata from '../metadata.js';\n/**\r\n * Pattern that makes it easy to distinguish whether a region has a single\r\n * international dialing prefix or not. If a region has a single international\r\n * prefix (e.g. 011 in USA), it will be represented as a string that contains\r\n * a sequence of ASCII digits, and possibly a tilde, which signals waiting for\r\n * the tone. If there are multiple available international prefixes in a\r\n * region, they will be represented as a regex string that always contains one\r\n * or more characters that are not ASCII digits or a tilde.\r\n */\n\nvar SINGLE_IDD_PREFIX_REG_EXP = /^[\\d]+(?:[~\\u2053\\u223C\\uFF5E][\\d]+)?$/; // For regions that have multiple IDD prefixes\n// a preferred IDD prefix is returned.\n\nexport default function getIddPrefix(country, callingCode, metadata) {\n var countryMetadata = new Metadata(metadata);\n countryMetadata.selectNumberingPlan(country, callingCode);\n if (countryMetadata.defaultIDDPrefix()) {\n return countryMetadata.defaultIDDPrefix();\n }\n if (SINGLE_IDD_PREFIX_REG_EXP.test(countryMetadata.IDDPrefix())) {\n return countryMetadata.IDDPrefix();\n }\n}","function _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(it);\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\n\n// This is a port of Google Android `libphonenumber`'s\n// `phonenumberutil.js` of December 31th, 2018.\n//\n// https://github.com/googlei18n/libphonenumber/commits/master/javascript/i18n/phonenumbers/phonenumberutil.js\nimport matchesEntirely from './helpers/matchesEntirely.js';\nimport formatNationalNumberUsingFormat from './helpers/formatNationalNumberUsingFormat.js';\nimport Metadata, { getCountryCallingCode } from './metadata.js';\nimport getIddPrefix from './helpers/getIddPrefix.js';\nimport { formatRFC3966 } from './helpers/RFC3966.js';\nvar DEFAULT_OPTIONS = {\n formatExtension: function formatExtension(formattedNumber, extension, metadata) {\n return \"\".concat(formattedNumber).concat(metadata.ext()).concat(extension);\n }\n};\n/**\r\n * Formats a phone number.\r\n *\r\n * format(phoneNumberInstance, 'INTERNATIONAL', { ..., v2: true }, metadata)\r\n * format(phoneNumberInstance, 'NATIONAL', { ..., v2: true }, metadata)\r\n *\r\n * format({ phone: '8005553535', country: 'RU' }, 'INTERNATIONAL', { ... }, metadata)\r\n * format({ phone: '8005553535', country: 'RU' }, 'NATIONAL', undefined, metadata)\r\n *\r\n * @param {object|PhoneNumber} input — If `options.v2: true` flag is passed, the `input` should be a `PhoneNumber` instance. Otherwise, it should be an object of shape `{ phone: '...', country: '...' }`.\r\n * @param {string} format\r\n * @param {object} [options]\r\n * @param {object} metadata\r\n * @return {string}\r\n */\n\nexport default function formatNumber(input, format, options, metadata) {\n // Apply default options.\n if (options) {\n options = _objectSpread(_objectSpread({}, DEFAULT_OPTIONS), options);\n } else {\n options = DEFAULT_OPTIONS;\n }\n metadata = new Metadata(metadata);\n if (input.country && input.country !== '001') {\n // Validate `input.country`.\n if (!metadata.hasCountry(input.country)) {\n throw new Error(\"Unknown country: \".concat(input.country));\n }\n metadata.country(input.country);\n } else if (input.countryCallingCode) {\n metadata.selectNumberingPlan(input.countryCallingCode);\n } else return input.phone || '';\n var countryCallingCode = metadata.countryCallingCode();\n var nationalNumber = options.v2 ? input.nationalNumber : input.phone; // This variable should have been declared inside `case`s\n // but Babel has a bug and it says \"duplicate variable declaration\".\n\n var number;\n switch (format) {\n case 'NATIONAL':\n // Legacy argument support.\n // (`{ country: ..., phone: '' }`)\n if (!nationalNumber) {\n return '';\n }\n number = formatNationalNumber(nationalNumber, input.carrierCode, 'NATIONAL', metadata, options);\n return addExtension(number, input.ext, metadata, options.formatExtension);\n case 'INTERNATIONAL':\n // Legacy argument support.\n // (`{ country: ..., phone: '' }`)\n if (!nationalNumber) {\n return \"+\".concat(countryCallingCode);\n }\n number = formatNationalNumber(nationalNumber, null, 'INTERNATIONAL', metadata, options);\n number = \"+\".concat(countryCallingCode, \" \").concat(number);\n return addExtension(number, input.ext, metadata, options.formatExtension);\n case 'E.164':\n // `E.164` doesn't define \"phone number extensions\".\n return \"+\".concat(countryCallingCode).concat(nationalNumber);\n case 'RFC3966':\n return formatRFC3966({\n number: \"+\".concat(countryCallingCode).concat(nationalNumber),\n ext: input.ext\n });\n // For reference, here's Google's IDD formatter:\n // https://github.com/google/libphonenumber/blob/32719cf74e68796788d1ca45abc85dcdc63ba5b9/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L1546\n // Not saying that this IDD formatter replicates it 1:1, but it seems to work.\n // Who would even need to format phone numbers in IDD format anyway?\n\n case 'IDD':\n if (!options.fromCountry) {\n return; // throw new Error('`fromCountry` option not passed for IDD-prefixed formatting.')\n }\n\n var formattedNumber = formatIDD(nationalNumber, input.carrierCode, countryCallingCode, options.fromCountry, metadata);\n return addExtension(formattedNumber, input.ext, metadata, options.formatExtension);\n default:\n throw new Error(\"Unknown \\\"format\\\" argument passed to \\\"formatNumber()\\\": \\\"\".concat(format, \"\\\"\"));\n }\n}\nfunction formatNationalNumber(number, carrierCode, formatAs, metadata, options) {\n var format = chooseFormatForNumber(metadata.formats(), number);\n if (!format) {\n return number;\n }\n return formatNationalNumberUsingFormat(number, format, {\n useInternationalFormat: formatAs === 'INTERNATIONAL',\n withNationalPrefix: format.nationalPrefixIsOptionalWhenFormattingInNationalFormat() && options && options.nationalPrefix === false ? false : true,\n carrierCode: carrierCode,\n metadata: metadata\n });\n}\nexport function chooseFormatForNumber(availableFormats, nationalNnumber) {\n for (var _iterator = _createForOfIteratorHelperLoose(availableFormats), _step; !(_step = _iterator()).done;) {\n var format = _step.value;\n\n // Validate leading digits.\n // The test case for \"else path\" could be found by searching for\n // \"format.leadingDigitsPatterns().length === 0\".\n if (format.leadingDigitsPatterns().length > 0) {\n // The last leading_digits_pattern is used here, as it is the most detailed\n var lastLeadingDigitsPattern = format.leadingDigitsPatterns()[format.leadingDigitsPatterns().length - 1]; // If leading digits don't match then move on to the next phone number format\n\n if (nationalNnumber.search(lastLeadingDigitsPattern) !== 0) {\n continue;\n }\n } // Check that the national number matches the phone number format regular expression\n\n if (matchesEntirely(nationalNnumber, format.pattern())) {\n return format;\n }\n }\n}\nfunction addExtension(formattedNumber, ext, metadata, formatExtension) {\n return ext ? formatExtension(formattedNumber, ext, metadata) : formattedNumber;\n}\nfunction formatIDD(nationalNumber, carrierCode, countryCallingCode, fromCountry, metadata) {\n var fromCountryCallingCode = getCountryCallingCode(fromCountry, metadata.metadata); // When calling within the same country calling code.\n\n if (fromCountryCallingCode === countryCallingCode) {\n var formattedNumber = formatNationalNumber(nationalNumber, carrierCode, 'NATIONAL', metadata); // For NANPA regions, return the national format for these regions\n // but prefix it with the country calling code.\n\n if (countryCallingCode === '1') {\n return countryCallingCode + ' ' + formattedNumber;\n } // If regions share a country calling code, the country calling code need\n // not be dialled. This also applies when dialling within a region, so this\n // if clause covers both these cases. Technically this is the case for\n // dialling from La Reunion to other overseas departments of France (French\n // Guiana, Martinique, Guadeloupe), but not vice versa - so we don't cover\n // this edge case for now and for those cases return the version including\n // country calling code. Details here:\n // http://www.petitfute.com/voyage/225-info-pratiques-reunion\n //\n\n return formattedNumber;\n }\n var iddPrefix = getIddPrefix(fromCountry, undefined, metadata.metadata);\n if (iddPrefix) {\n return \"\".concat(iddPrefix, \" \").concat(countryCallingCode, \" \").concat(formatNationalNumber(nationalNumber, null, 'INTERNATIONAL', metadata));\n }\n}","function _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _s, _e;\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(it);\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nimport isViablePhoneNumber from './isViablePhoneNumber.js'; // https://www.ietf.org/rfc/rfc3966.txt\n\n/**\r\n * @param {string} text - Phone URI (RFC 3966).\r\n * @return {object} `{ ?number, ?ext }`.\r\n */\n\nexport function parseRFC3966(text) {\n var number;\n var ext; // Replace \"tel:\" with \"tel=\" for parsing convenience.\n\n text = text.replace(/^tel:/, 'tel=');\n for (var _iterator = _createForOfIteratorHelperLoose(text.split(';')), _step; !(_step = _iterator()).done;) {\n var part = _step.value;\n var _part$split = part.split('='),\n _part$split2 = _slicedToArray(_part$split, 2),\n name = _part$split2[0],\n value = _part$split2[1];\n switch (name) {\n case 'tel':\n number = value;\n break;\n case 'ext':\n ext = value;\n break;\n case 'phone-context':\n // Only \"country contexts\" are supported.\n // \"Domain contexts\" are ignored.\n if (value[0] === '+') {\n number = value + number;\n }\n break;\n }\n } // If the phone number is not viable, then abort.\n\n if (!isViablePhoneNumber(number)) {\n return {};\n }\n var result = {\n number: number\n };\n if (ext) {\n result.ext = ext;\n }\n return result;\n}\n/**\r\n * @param {object} - `{ ?number, ?extension }`.\r\n * @return {string} Phone URI (RFC 3966).\r\n */\n\nexport function formatRFC3966(_ref) {\n var number = _ref.number,\n ext = _ref.ext;\n if (!number) {\n return '';\n }\n if (number[0] !== '+') {\n throw new Error(\"\\\"formatRFC3966()\\\" expects \\\"number\\\" to be in E.164 format.\");\n }\n return \"tel:\".concat(number).concat(ext ? ';ext=' + ext : '');\n}","function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nimport Metadata from './metadata.js';\nimport isPossibleNumber from './isPossible.js';\nimport isValidNumber from './isValid.js'; // import checkNumberLength from './helpers/checkNumberLength.js'\n\nimport getNumberType from './helpers/getNumberType.js';\nimport getPossibleCountriesForNumber from './helpers/getPossibleCountriesForNumber.js';\nimport formatNumber from './format.js';\nvar USE_NON_GEOGRAPHIC_COUNTRY_CODE = false;\nvar PhoneNumber = /*#__PURE__*/function () {\n /**\r\n * @param {string} countryOrCountryCallingCode\r\n * @param {string} nationalNumber\r\n * @param {object} metadata — Metadata JSON\r\n * @return {PhoneNumber}\r\n */\n function PhoneNumber(countryOrCountryCallingCode, nationalNumber, metadata) {\n _classCallCheck(this, PhoneNumber);\n if (!countryOrCountryCallingCode) {\n throw new TypeError('`country` or `countryCallingCode` not passed');\n }\n if (!nationalNumber) {\n throw new TypeError('`nationalNumber` not passed');\n }\n if (!metadata) {\n throw new TypeError('`metadata` not passed');\n }\n var _getCountryAndCountry = getCountryAndCountryCallingCode(countryOrCountryCallingCode, metadata),\n country = _getCountryAndCountry.country,\n countryCallingCode = _getCountryAndCountry.countryCallingCode;\n this.country = country;\n this.countryCallingCode = countryCallingCode;\n this.nationalNumber = nationalNumber;\n this.number = '+' + this.countryCallingCode + this.nationalNumber; // Exclude `metadata` property output from `PhoneNumber.toString()`\n // so that it doesn't clutter the console output of Node.js.\n // Previously, when Node.js did `console.log(new PhoneNumber(...))`,\n // it would output the whole internal structure of the `metadata` object.\n\n this.getMetadata = function () {\n return metadata;\n };\n }\n _createClass(PhoneNumber, [{\n key: \"setExt\",\n value: function setExt(ext) {\n this.ext = ext;\n }\n }, {\n key: \"getPossibleCountries\",\n value: function getPossibleCountries() {\n if (this.country) {\n return [this.country];\n }\n return getPossibleCountriesForNumber(this.countryCallingCode, this.nationalNumber, this.getMetadata());\n }\n }, {\n key: \"isPossible\",\n value: function isPossible() {\n return isPossibleNumber(this, {\n v2: true\n }, this.getMetadata());\n }\n }, {\n key: \"isValid\",\n value: function isValid() {\n return isValidNumber(this, {\n v2: true\n }, this.getMetadata());\n }\n }, {\n key: \"isNonGeographic\",\n value: function isNonGeographic() {\n var metadata = new Metadata(this.getMetadata());\n return metadata.isNonGeographicCallingCode(this.countryCallingCode);\n }\n }, {\n key: \"isEqual\",\n value: function isEqual(phoneNumber) {\n return this.number === phoneNumber.number && this.ext === phoneNumber.ext;\n } // This function was originally meant to be an equivalent for `validatePhoneNumberLength()`,\n // but later it was found out that it doesn't include the possible `TOO_SHORT` result\n // returned from `parsePhoneNumberWithError()` in the original `validatePhoneNumberLength()`,\n // so eventually I simply commented out this method from the `PhoneNumber` class\n // and just left the `validatePhoneNumberLength()` function, even though that one would require\n // and additional step to also validate the actual country / calling code of the phone number.\n // validateLength() {\n // \tconst metadata = new Metadata(this.getMetadata())\n // \tmetadata.selectNumberingPlan(this.countryCallingCode)\n // \tconst result = checkNumberLength(this.nationalNumber, metadata)\n // \tif (result !== 'IS_POSSIBLE') {\n // \t\treturn result\n // \t}\n // }\n }, {\n key: \"getType\",\n value: function getType() {\n return getNumberType(this, {\n v2: true\n }, this.getMetadata());\n }\n }, {\n key: \"format\",\n value: function format(_format, options) {\n return formatNumber(this, _format, options ? _objectSpread(_objectSpread({}, options), {}, {\n v2: true\n }) : {\n v2: true\n }, this.getMetadata());\n }\n }, {\n key: \"formatNational\",\n value: function formatNational(options) {\n return this.format('NATIONAL', options);\n }\n }, {\n key: \"formatInternational\",\n value: function formatInternational(options) {\n return this.format('INTERNATIONAL', options);\n }\n }, {\n key: \"getURI\",\n value: function getURI(options) {\n return this.format('RFC3966', options);\n }\n }]);\n return PhoneNumber;\n}();\nexport { PhoneNumber as default };\nvar isCountryCode = function isCountryCode(value) {\n return /^[A-Z]{2}$/.test(value);\n};\nfunction getCountryAndCountryCallingCode(countryOrCountryCallingCode, metadataJson) {\n var country;\n var countryCallingCode;\n var metadata = new Metadata(metadataJson); // If country code is passed then derive `countryCallingCode` from it.\n // Also store the country code as `.country`.\n\n if (isCountryCode(countryOrCountryCallingCode)) {\n country = countryOrCountryCallingCode;\n metadata.selectNumberingPlan(country);\n countryCallingCode = metadata.countryCallingCode();\n } else {\n countryCallingCode = countryOrCountryCallingCode;\n /* istanbul ignore if */\n\n if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n if (metadata.isNonGeographicCallingCode(countryCallingCode)) {\n country = '001';\n }\n }\n }\n return {\n country: country,\n countryCallingCode: countryCallingCode\n };\n}","import Metadata from './metadata.js';\nimport matchesEntirely from './helpers/matchesEntirely.js';\nimport getNumberType from './helpers/getNumberType.js';\n/**\r\n * Checks if a given phone number is valid.\r\n *\r\n * isValid(phoneNumberInstance, { ..., v2: true }, metadata)\r\n *\r\n * isPossible({ phone: '8005553535', country: 'RU' }, { ... }, metadata)\r\n * isPossible({ phone: '8005553535', country: 'RU' }, undefined, metadata)\r\n *\r\n * If the `number` is a string, it will be parsed to an object,\r\n * but only if it contains only valid phone number characters (including punctuation).\r\n * If the `number` is an object, it is used as is.\r\n *\r\n * The optional `defaultCountry` argument is the default country.\r\n * I.e. it does not restrict to just that country,\r\n * e.g. in those cases where several countries share\r\n * the same phone numbering rules (NANPA, Britain, etc).\r\n * For example, even though the number `07624 369230`\r\n * belongs to the Isle of Man (\"IM\" country code)\r\n * calling `isValidNumber('07624369230', 'GB', metadata)`\r\n * still returns `true` because the country is not restricted to `GB`,\r\n * it's just that `GB` is the default one for the phone numbering rules.\r\n * For restricting the country see `isValidNumberForRegion()`\r\n * though restricting a country might not be a good idea.\r\n * https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion\r\n *\r\n * Examples:\r\n *\r\n * ```js\r\n * isValidNumber('+78005553535', metadata)\r\n * isValidNumber('8005553535', 'RU', metadata)\r\n * isValidNumber('88005553535', 'RU', metadata)\r\n * isValidNumber({ phone: '8005553535', country: 'RU' }, metadata)\r\n * ```\r\n */\n\nexport default function isValidNumber(input, options, metadata) {\n // If assigning the `{}` default value is moved to the arguments above,\n // code coverage would decrease for some weird reason.\n options = options || {};\n metadata = new Metadata(metadata);\n metadata.selectNumberingPlan(input.country, input.countryCallingCode); // By default, countries only have type regexps when it's required for\n // distinguishing different countries having the same `countryCallingCode`.\n\n if (metadata.hasTypes()) {\n return getNumberType(input, options, metadata.metadata) !== undefined;\n } // If there are no type regexps for this country in metadata then use\n // `nationalNumberPattern` as a \"better than nothing\" replacement.\n\n var nationalNumber = options.v2 ? input.nationalNumber : input.phone;\n return matchesEntirely(nationalNumber, metadata.nationalNumberPattern());\n}","import Metadata from '../metadata.js';\nimport { VALID_DIGITS } from '../constants.js';\nvar CAPTURING_DIGIT_PATTERN = new RegExp('([' + VALID_DIGITS + '])');\nexport default function stripIddPrefix(number, country, callingCode, metadata) {\n if (!country) {\n return;\n } // Check if the number is IDD-prefixed.\n\n var countryMetadata = new Metadata(metadata);\n countryMetadata.selectNumberingPlan(country, callingCode);\n var IDDPrefixPattern = new RegExp(countryMetadata.IDDPrefix());\n if (number.search(IDDPrefixPattern) !== 0) {\n return;\n } // Strip IDD prefix.\n\n number = number.slice(number.match(IDDPrefixPattern)[0].length); // If there're any digits after an IDD prefix,\n // then those digits are a country calling code.\n // Since no country code starts with a `0`,\n // the code below validates that the next digit (if present) is not `0`.\n\n var matchedGroups = number.match(CAPTURING_DIGIT_PATTERN);\n if (matchedGroups && matchedGroups[1] != null && matchedGroups[1].length > 0) {\n if (matchedGroups[1] === '0') {\n return;\n }\n }\n return number;\n}","/**\r\n * Strips any national prefix (such as 0, 1) present in a\r\n * (possibly incomplete) number provided.\r\n * \"Carrier codes\" are only used in Colombia and Brazil,\r\n * and only when dialing within those countries from a mobile phone to a fixed line number.\r\n * Sometimes it won't actually strip national prefix\r\n * and will instead prepend some digits to the `number`:\r\n * for example, when number `2345678` is passed with `VI` country selected,\r\n * it will return `{ number: \"3402345678\" }`, because `340` area code is prepended.\r\n * @param {string} number — National number digits.\r\n * @param {object} metadata — Metadata with country selected.\r\n * @return {object} `{ nationalNumber: string, nationalPrefix: string? carrierCode: string? }`. Even if a national prefix was extracted, it's not necessarily present in the returned object, so don't rely on its presence in the returned object in order to find out whether a national prefix has been extracted or not.\r\n */\nexport default function extractNationalNumberFromPossiblyIncompleteNumber(number, metadata) {\n if (number && metadata.numberingPlan.nationalPrefixForParsing()) {\n // See METADATA.md for the description of\n // `national_prefix_for_parsing` and `national_prefix_transform_rule`.\n // Attempt to parse the first digits as a national prefix.\n var prefixPattern = new RegExp('^(?:' + metadata.numberingPlan.nationalPrefixForParsing() + ')');\n var prefixMatch = prefixPattern.exec(number);\n if (prefixMatch) {\n var nationalNumber;\n var carrierCode; // https://gitlab.com/catamphetamine/libphonenumber-js/-/blob/master/METADATA.md#national_prefix_for_parsing--national_prefix_transform_rule\n // If a `national_prefix_for_parsing` has any \"capturing groups\"\n // then it means that the national (significant) number is equal to\n // those \"capturing groups\" transformed via `national_prefix_transform_rule`,\n // and nothing could be said about the actual national prefix:\n // what is it and was it even there.\n // If a `national_prefix_for_parsing` doesn't have any \"capturing groups\",\n // then everything it matches is a national prefix.\n // To determine whether `national_prefix_for_parsing` matched any\n // \"capturing groups\", the value of the result of calling `.exec()`\n // is looked at, and if it has non-undefined values where there're\n // \"capturing groups\" in the regular expression, then it means\n // that \"capturing groups\" have been matched.\n // It's not possible to tell whether there'll be any \"capturing gropus\"\n // before the matching process, because a `national_prefix_for_parsing`\n // could exhibit both behaviors.\n\n var capturedGroupsCount = prefixMatch.length - 1;\n var hasCapturedGroups = capturedGroupsCount > 0 && prefixMatch[capturedGroupsCount];\n if (metadata.nationalPrefixTransformRule() && hasCapturedGroups) {\n nationalNumber = number.replace(prefixPattern, metadata.nationalPrefixTransformRule()); // If there's more than one captured group,\n // then carrier code is the second one.\n\n if (capturedGroupsCount > 1) {\n carrierCode = prefixMatch[1];\n }\n } // If there're no \"capturing groups\",\n // or if there're \"capturing groups\" but no\n // `national_prefix_transform_rule`,\n // then just strip the national prefix from the number,\n // and possibly a carrier code.\n // Seems like there could be more.\n else {\n // `prefixBeforeNationalNumber` is the whole substring matched by\n // the `national_prefix_for_parsing` regular expression.\n // There seem to be no guarantees that it's just a national prefix.\n // For example, if there's a carrier code, it's gonna be a\n // part of `prefixBeforeNationalNumber` too.\n var prefixBeforeNationalNumber = prefixMatch[0];\n nationalNumber = number.slice(prefixBeforeNationalNumber.length); // If there's at least one captured group,\n // then carrier code is the first one.\n\n if (hasCapturedGroups) {\n carrierCode = prefixMatch[1];\n }\n } // Tries to guess whether a national prefix was present in the input.\n // This is not something copy-pasted from Google's library:\n // they don't seem to have an equivalent for that.\n // So this isn't an \"officially approved\" way of doing something like that.\n // But since there seems no other existing method, this library uses it.\n\n var nationalPrefix;\n if (hasCapturedGroups) {\n var possiblePositionOfTheFirstCapturedGroup = number.indexOf(prefixMatch[1]);\n var possibleNationalPrefix = number.slice(0, possiblePositionOfTheFirstCapturedGroup); // Example: an Argentinian (AR) phone number `0111523456789`.\n // `prefixMatch[0]` is `01115`, and `$1` is `11`,\n // and the rest of the phone number is `23456789`.\n // The national number is transformed via `9$1` to `91123456789`.\n // National prefix `0` is detected being present at the start.\n // if (possibleNationalPrefix.indexOf(metadata.numberingPlan.nationalPrefix()) === 0) {\n\n if (possibleNationalPrefix === metadata.numberingPlan.nationalPrefix()) {\n nationalPrefix = metadata.numberingPlan.nationalPrefix();\n }\n } else {\n nationalPrefix = prefixMatch[0];\n }\n return {\n nationalNumber: nationalNumber,\n nationalPrefix: nationalPrefix,\n carrierCode: carrierCode\n };\n }\n }\n return {\n nationalNumber: number\n };\n}","import extractNationalNumberFromPossiblyIncompleteNumber from './extractNationalNumberFromPossiblyIncompleteNumber.js';\nimport matchesEntirely from './matchesEntirely.js';\nimport checkNumberLength from './checkNumberLength.js';\n/**\r\n * Strips national prefix and carrier code from a complete phone number.\r\n * The difference from the non-\"FromCompleteNumber\" function is that\r\n * it won't extract national prefix if the resultant number is too short\r\n * to be a complete number for the selected phone numbering plan.\r\n * @param {string} number — Complete phone number digits.\r\n * @param {Metadata} metadata — Metadata with a phone numbering plan selected.\r\n * @return {object} `{ nationalNumber: string, carrierCode: string? }`.\r\n */\n\nexport default function extractNationalNumber(number, metadata) {\n // Parsing national prefixes and carrier codes\n // is only required for local phone numbers\n // but some people don't understand that\n // and sometimes write international phone numbers\n // with national prefixes (or maybe even carrier codes).\n // http://ucken.blogspot.ru/2016/03/trunk-prefixes-in-skype4b.html\n // Google's original library forgives such mistakes\n // and so does this library, because it has been requested:\n // https://github.com/catamphetamine/libphonenumber-js/issues/127\n var _extractNationalNumbe = extractNationalNumberFromPossiblyIncompleteNumber(number, metadata),\n carrierCode = _extractNationalNumbe.carrierCode,\n nationalNumber = _extractNationalNumbe.nationalNumber;\n if (nationalNumber !== number) {\n if (!shouldHaveExtractedNationalPrefix(number, nationalNumber, metadata)) {\n // Don't strip the national prefix.\n return {\n nationalNumber: number\n };\n } // Check the national (significant) number length after extracting national prefix and carrier code.\n // Legacy generated metadata (before `1.0.18`) didn't support the \"possible lengths\" feature.\n\n if (metadata.possibleLengths()) {\n // The number remaining after stripping the national prefix and carrier code\n // should be long enough to have a possible length for the country.\n // Otherwise, don't strip the national prefix and carrier code,\n // since the original number could be a valid number.\n // This check has been copy-pasted \"as is\" from Google's original library:\n // https://github.com/google/libphonenumber/blob/876268eb1ad6cdc1b7b5bef17fc5e43052702d57/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L3236-L3250\n // It doesn't check for the \"possibility\" of the original `number`.\n // I guess it's fine not checking that one. It works as is anyway.\n if (!isPossibleIncompleteNationalNumber(nationalNumber, metadata)) {\n // Don't strip the national prefix.\n return {\n nationalNumber: number\n };\n }\n }\n }\n return {\n nationalNumber: nationalNumber,\n carrierCode: carrierCode\n };\n} // In some countries, the same digit could be a national prefix\n// or a leading digit of a valid phone number.\n// For example, in Russia, national prefix is `8`,\n// and also `800 555 35 35` is a valid number\n// in which `8` is not a national prefix, but the first digit\n// of a national (significant) number.\n// Same's with Belarus:\n// `82004910060` is a valid national (significant) number,\n// but `2004910060` is not.\n// To support such cases (to prevent the code from always stripping\n// national prefix), a condition is imposed: a national prefix\n// is not extracted when the original number is \"viable\" and the\n// resultant number is not, a \"viable\" national number being the one\n// that matches `national_number_pattern`.\n\nfunction shouldHaveExtractedNationalPrefix(nationalNumberBefore, nationalNumberAfter, metadata) {\n // The equivalent in Google's code is:\n // https://github.com/google/libphonenumber/blob/e326fa1fc4283bb05eb35cb3c15c18f98a31af33/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L2969-L3004\n if (matchesEntirely(nationalNumberBefore, metadata.nationalNumberPattern()) && !matchesEntirely(nationalNumberAfter, metadata.nationalNumberPattern())) {\n return false;\n } // This \"is possible\" national number (length) check has been commented out\n // because it's superceded by the (effectively) same check done in the\n // `extractNationalNumber()` function after it calls `shouldHaveExtractedNationalPrefix()`.\n // In other words, why run the same check twice if it could only be run once.\n // // Check the national (significant) number length after extracting national prefix and carrier code.\n // // Fixes a minor \"weird behavior\" bug: https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/57\n // // (Legacy generated metadata (before `1.0.18`) didn't support the \"possible lengths\" feature).\n // if (metadata.possibleLengths()) {\n // \tif (isPossibleIncompleteNationalNumber(nationalNumberBefore, metadata) &&\n // \t\t!isPossibleIncompleteNationalNumber(nationalNumberAfter, metadata)) {\n // \t\treturn false\n // \t}\n // }\n\n return true;\n}\nfunction isPossibleIncompleteNationalNumber(nationalNumber, metadata) {\n switch (checkNumberLength(nationalNumber, metadata)) {\n case 'TOO_SHORT':\n case 'INVALID_LENGTH':\n // This library ignores \"local-only\" phone numbers (for simplicity).\n // See the readme for more info on what are \"local-only\" phone numbers.\n // case 'IS_POSSIBLE_LOCAL_ONLY':\n return false;\n default:\n return true;\n }\n}","import Metadata from '../metadata.js';\nimport matchesEntirely from './matchesEntirely.js';\nimport extractNationalNumber from './extractNationalNumber.js';\nimport checkNumberLength from './checkNumberLength.js';\nimport getCountryCallingCode from '../getCountryCallingCode.js';\n/**\r\n * Sometimes some people incorrectly input international phone numbers\r\n * without the leading `+`. This function corrects such input.\r\n * @param {string} number — Phone number digits.\r\n * @param {string?} country\r\n * @param {string?} callingCode\r\n * @param {object} metadata\r\n * @return {object} `{ countryCallingCode: string?, number: string }`.\r\n */\n\nexport default function extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(number, country, callingCode, metadata) {\n var countryCallingCode = country ? getCountryCallingCode(country, metadata) : callingCode;\n if (number.indexOf(countryCallingCode) === 0) {\n metadata = new Metadata(metadata);\n metadata.selectNumberingPlan(country, callingCode);\n var possibleShorterNumber = number.slice(countryCallingCode.length);\n var _extractNationalNumbe = extractNationalNumber(possibleShorterNumber, metadata),\n possibleShorterNationalNumber = _extractNationalNumbe.nationalNumber;\n var _extractNationalNumbe2 = extractNationalNumber(number, metadata),\n nationalNumber = _extractNationalNumbe2.nationalNumber; // If the number was not valid before but is valid now,\n // or if it was too long before, we consider the number\n // with the country calling code stripped to be a better result\n // and keep that instead.\n // For example, in Germany (+49), `49` is a valid area code,\n // so if a number starts with `49`, it could be both a valid\n // national German number or an international number without\n // a leading `+`.\n\n if (!matchesEntirely(nationalNumber, metadata.nationalNumberPattern()) && matchesEntirely(possibleShorterNationalNumber, metadata.nationalNumberPattern()) || checkNumberLength(nationalNumber, metadata) === 'TOO_LONG') {\n return {\n countryCallingCode: countryCallingCode,\n number: possibleShorterNumber\n };\n }\n }\n return {\n number: number\n };\n}","import stripIddPrefix from './stripIddPrefix.js';\nimport extractCountryCallingCodeFromInternationalNumberWithoutPlusSign from './extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js';\nimport Metadata from '../metadata.js';\nimport { MAX_LENGTH_COUNTRY_CODE } from '../constants.js';\n/**\r\n * Converts a phone number digits (possibly with a `+`)\r\n * into a calling code and the rest phone number digits.\r\n * The \"rest phone number digits\" could include\r\n * a national prefix, carrier code, and national\r\n * (significant) number.\r\n * @param {string} number — Phone number digits (possibly with a `+`).\r\n * @param {string} [country] — Default country.\r\n * @param {string} [callingCode] — Default calling code (some phone numbering plans are non-geographic).\r\n * @param {object} metadata\r\n * @return {object} `{ countryCallingCodeSource: string?, countryCallingCode: string?, number: string }`\r\n * @example\r\n * // Returns `{ countryCallingCode: \"1\", number: \"2133734253\" }`.\r\n * extractCountryCallingCode('2133734253', 'US', null, metadata)\r\n * extractCountryCallingCode('2133734253', null, '1', metadata)\r\n * extractCountryCallingCode('+12133734253', null, null, metadata)\r\n * extractCountryCallingCode('+12133734253', 'RU', null, metadata)\r\n */\n\nexport default function extractCountryCallingCode(number, country, callingCode, metadata) {\n if (!number) {\n return {};\n }\n var isNumberWithIddPrefix; // If this is not an international phone number,\n // then either extract an \"IDD\" prefix, or extract a\n // country calling code from a number by autocorrecting it\n // by prepending a leading `+` in cases when it starts\n // with the country calling code.\n // https://wikitravel.org/en/International_dialling_prefix\n // https://github.com/catamphetamine/libphonenumber-js/issues/376\n\n if (number[0] !== '+') {\n // Convert an \"out-of-country\" dialing phone number\n // to a proper international phone number.\n var numberWithoutIDD = stripIddPrefix(number, country, callingCode, metadata); // If an IDD prefix was stripped then\n // convert the number to international one\n // for subsequent parsing.\n\n if (numberWithoutIDD && numberWithoutIDD !== number) {\n isNumberWithIddPrefix = true;\n number = '+' + numberWithoutIDD;\n } else {\n // Check to see if the number starts with the country calling code\n // for the default country. If so, we remove the country calling code,\n // and do some checks on the validity of the number before and after.\n // https://github.com/catamphetamine/libphonenumber-js/issues/376\n if (country || callingCode) {\n var _extractCountryCallin = extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(number, country, callingCode, metadata),\n countryCallingCode = _extractCountryCallin.countryCallingCode,\n shorterNumber = _extractCountryCallin.number;\n if (countryCallingCode) {\n return {\n countryCallingCodeSource: 'FROM_NUMBER_WITHOUT_PLUS_SIGN',\n countryCallingCode: countryCallingCode,\n number: shorterNumber\n };\n }\n }\n return {\n // No need to set it to `UNSPECIFIED`. It can be just `undefined`.\n // countryCallingCodeSource: 'UNSPECIFIED',\n number: number\n };\n }\n } // Fast abortion: country codes do not begin with a '0'\n\n if (number[1] === '0') {\n return {};\n }\n metadata = new Metadata(metadata); // The thing with country phone codes\n // is that they are orthogonal to each other\n // i.e. there's no such country phone code A\n // for which country phone code B exists\n // where B starts with A.\n // Therefore, while scanning digits,\n // if a valid country code is found,\n // that means that it is the country code.\n //\n\n var i = 2;\n while (i - 1 <= MAX_LENGTH_COUNTRY_CODE && i <= number.length) {\n var _countryCallingCode = number.slice(1, i);\n if (metadata.hasCallingCode(_countryCallingCode)) {\n metadata.selectNumberingPlan(_countryCallingCode);\n return {\n countryCallingCodeSource: isNumberWithIddPrefix ? 'FROM_NUMBER_WITH_IDD' : 'FROM_NUMBER_WITH_PLUS_SIGN',\n countryCallingCode: _countryCallingCode,\n number: number.slice(i)\n };\n }\n i++;\n }\n return {};\n} // The possible values for the returned `countryCallingCodeSource` are:\n//\n// Copy-pasted from:\n// https://github.com/google/libphonenumber/blob/master/resources/phonenumber.proto\n//\n// // The source from which the country_code is derived. This is not set in the\n// // general parsing method, but in the method that parses and keeps raw_input.\n// // New fields could be added upon request.\n// enum CountryCodeSource {\n// // Default value returned if this is not set, because the phone number was\n// // created using parse, not parseAndKeepRawInput. hasCountryCodeSource will\n// // return false if this is the case.\n// UNSPECIFIED = 0;\n//\n// // The country_code is derived based on a phone number with a leading \"+\",\n// // e.g. the French number \"+33 1 42 68 53 00\".\n// FROM_NUMBER_WITH_PLUS_SIGN = 1;\n//\n// // The country_code is derived based on a phone number with a leading IDD,\n// // e.g. the French number \"011 33 1 42 68 53 00\", as it is dialled from US.\n// FROM_NUMBER_WITH_IDD = 5;\n//\n// // The country_code is derived based on a phone number without a leading\n// // \"+\", e.g. the French number \"33 1 42 68 53 00\" when defaultCountry is\n// // supplied as France.\n// FROM_NUMBER_WITHOUT_PLUS_SIGN = 10;\n//\n// // The country_code is derived NOT based on the phone number itself, but\n// // from the defaultCountry parameter provided in the parsing function by the\n// // clients. This happens mostly for numbers written in the national format\n// // (without country code). For example, this would be set when parsing the\n// // French number \"01 42 68 53 00\", when defaultCountry is supplied as\n// // France.\n// FROM_DEFAULT_COUNTRY = 20;\n// }","function _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(it);\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nimport Metadata from '../metadata.js';\nimport getNumberType from './getNumberType.js';\nexport default function getCountryByNationalNumber(nationalPhoneNumber, _ref) {\n var countries = _ref.countries,\n defaultCountry = _ref.defaultCountry,\n metadata = _ref.metadata;\n // Re-create `metadata` because it will be selecting a `country`.\n metadata = new Metadata(metadata);\n var matchingCountries = [];\n for (var _iterator = _createForOfIteratorHelperLoose(countries), _step; !(_step = _iterator()).done;) {\n var country = _step.value;\n metadata.country(country); // \"Leading digits\" patterns are only defined for about 20% of all countries.\n // By definition, matching \"leading digits\" is a sufficient but not a necessary\n // condition for a phone number to belong to a country.\n // The point of \"leading digits\" check is that it's the fastest one to get a match.\n // https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md#leading_digits\n // I'd suppose that \"leading digits\" patterns are mutually exclusive for different countries\n // because of the intended use of that feature.\n\n if (metadata.leadingDigits()) {\n if (nationalPhoneNumber && nationalPhoneNumber.search(metadata.leadingDigits()) === 0) {\n return country;\n }\n } // Else perform full validation with all of those\n // fixed-line/mobile/etc regular expressions.\n else if (getNumberType({\n phone: nationalPhoneNumber,\n country: country\n }, undefined, metadata.metadata)) {\n // If the `defaultCountry` is among the `matchingCountries` then return it.\n if (defaultCountry) {\n if (country === defaultCountry) {\n return country;\n }\n matchingCountries.push(country);\n } else {\n return country;\n }\n }\n } // Return the first (\"main\") one of the `matchingCountries`.\n\n if (matchingCountries.length > 0) {\n return matchingCountries[0];\n }\n}","import getCountryByNationalNumber from './getCountryByNationalNumber.js';\nvar USE_NON_GEOGRAPHIC_COUNTRY_CODE = false;\nexport default function getCountryByCallingCode(callingCode, _ref) {\n var nationalPhoneNumber = _ref.nationalNumber,\n defaultCountry = _ref.defaultCountry,\n metadata = _ref.metadata;\n\n /* istanbul ignore if */\n if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n if (metadata.isNonGeographicCallingCode(callingCode)) {\n return '001';\n }\n }\n var possibleCountries = metadata.getCountryCodesForCallingCode(callingCode);\n if (!possibleCountries) {\n return;\n } // If there's just one country corresponding to the country code,\n // then just return it, without further phone number digits validation.\n\n if (possibleCountries.length === 1) {\n return possibleCountries[0];\n }\n return getCountryByNationalNumber(nationalPhoneNumber, {\n countries: possibleCountries,\n defaultCountry: defaultCountry,\n metadata: metadata.metadata\n });\n}","// When phone numbers are written in `RFC3966` format — `\"tel:+12133734253\"` —\n// they can have their \"calling code\" part written separately in a `phone-context` parameter.\n// Example: `\"tel:12133734253;phone-context=+1\"`.\n// This function parses the full phone number from the local number and the `phone-context`\n// when the `phone-context` contains a `+` sign.\nimport { VALID_DIGITS // PLUS_CHARS\n} from '../constants.js';\nexport var PLUS_SIGN = '+';\nvar RFC3966_VISUAL_SEPARATOR_ = '[\\\\-\\\\.\\\\(\\\\)]?';\nvar RFC3966_PHONE_DIGIT_ = '(' + '[' + VALID_DIGITS + ']' + '|' + RFC3966_VISUAL_SEPARATOR_ + ')';\nvar RFC3966_GLOBAL_NUMBER_DIGITS_ = '^' + '\\\\' + PLUS_SIGN + RFC3966_PHONE_DIGIT_ + '*' + '[' + VALID_DIGITS + ']' + RFC3966_PHONE_DIGIT_ + '*' + '$';\n/**\r\n * Regular expression of valid global-number-digits for the phone-context\r\n * parameter, following the syntax defined in RFC3966.\r\n */\n\nvar RFC3966_GLOBAL_NUMBER_DIGITS_PATTERN_ = new RegExp(RFC3966_GLOBAL_NUMBER_DIGITS_, 'g'); // In this port of Google's library, we don't accept alpha characters in phone numbers.\n// const ALPHANUM_ = VALID_ALPHA_ + VALID_DIGITS\n\nvar ALPHANUM_ = VALID_DIGITS;\nvar RFC3966_DOMAINLABEL_ = '[' + ALPHANUM_ + ']+((\\\\-)*[' + ALPHANUM_ + '])*';\nvar VALID_ALPHA_ = 'a-zA-Z';\nvar RFC3966_TOPLABEL_ = '[' + VALID_ALPHA_ + ']+((\\\\-)*[' + ALPHANUM_ + '])*';\nvar RFC3966_DOMAINNAME_ = '^(' + RFC3966_DOMAINLABEL_ + '\\\\.)*' + RFC3966_TOPLABEL_ + '\\\\.?$';\n/**\r\n * Regular expression of valid domainname for the phone-context parameter,\r\n * following the syntax defined in RFC3966.\r\n */\n\nvar RFC3966_DOMAINNAME_PATTERN_ = new RegExp(RFC3966_DOMAINNAME_, 'g');\nexport var RFC3966_PREFIX_ = 'tel:';\nexport var RFC3966_PHONE_CONTEXT_ = ';phone-context=';\nexport var RFC3966_ISDN_SUBADDRESS_ = ';isub=';\n/**\r\n * Extracts the value of the phone-context parameter of `numberToExtractFrom`,\r\n * following the syntax defined in RFC3966.\r\n *\r\n * @param {string} numberToExtractFrom\r\n * @return {string|null} the extracted string (possibly empty), or `null` if no phone-context parameter is found.\r\n */\n\nexport default function extractPhoneContext(numberToExtractFrom) {\n var indexOfPhoneContext = numberToExtractFrom.indexOf(RFC3966_PHONE_CONTEXT_); // If no phone-context parameter is present\n\n if (indexOfPhoneContext < 0) {\n return null;\n }\n var phoneContextStart = indexOfPhoneContext + RFC3966_PHONE_CONTEXT_.length; // If phone-context parameter is empty\n\n if (phoneContextStart >= numberToExtractFrom.length) {\n return '';\n }\n var phoneContextEnd = numberToExtractFrom.indexOf(';', phoneContextStart); // If phone-context is not the last parameter\n\n if (phoneContextEnd >= 0) {\n return numberToExtractFrom.substring(phoneContextStart, phoneContextEnd);\n } else {\n return numberToExtractFrom.substring(phoneContextStart);\n }\n}\n/**\r\n * Returns whether the value of phoneContext follows the syntax defined in RFC3966.\r\n *\r\n * @param {string|null} phoneContext\r\n * @return {boolean}\r\n */\n\nexport function isPhoneContextValid(phoneContext) {\n if (phoneContext === null) {\n return true;\n }\n if (phoneContext.length === 0) {\n return false;\n } // Does phone-context value match pattern of global-number-digits or domainname.\n\n return RFC3966_GLOBAL_NUMBER_DIGITS_PATTERN_.test(phoneContext) || RFC3966_DOMAINNAME_PATTERN_.test(phoneContext);\n}","import extractPhoneContext, { isPhoneContextValid, PLUS_SIGN, RFC3966_PREFIX_, RFC3966_PHONE_CONTEXT_, RFC3966_ISDN_SUBADDRESS_ } from './extractPhoneContext.js';\nimport ParseError from '../ParseError.js';\n/**\r\n * @param {string} numberToParse\r\n * @param {string} nationalNumber\r\n * @return {}\r\n */\n\nexport default function extractFormattedPhoneNumberFromPossibleRfc3966NumberUri(numberToParse, _ref) {\n var extractFormattedPhoneNumber = _ref.extractFormattedPhoneNumber;\n var phoneContext = extractPhoneContext(numberToParse);\n if (!isPhoneContextValid(phoneContext)) {\n throw new ParseError('NOT_A_NUMBER');\n }\n var phoneNumberString;\n if (phoneContext === null) {\n // Extract a possible number from the string passed in.\n // (this strips leading characters that could not be the start of a phone number)\n phoneNumberString = extractFormattedPhoneNumber(numberToParse) || '';\n } else {\n phoneNumberString = ''; // If the phone context contains a phone number prefix, we need to capture\n // it, whereas domains will be ignored.\n\n if (phoneContext.charAt(0) === PLUS_SIGN) {\n phoneNumberString += phoneContext;\n } // Now append everything between the \"tel:\" prefix and the phone-context.\n // This should include the national number, an optional extension or\n // isdn-subaddress component. Note we also handle the case when \"tel:\" is\n // missing, as we have seen in some of the phone number inputs.\n // In that case, we append everything from the beginning.\n\n var indexOfRfc3966Prefix = numberToParse.indexOf(RFC3966_PREFIX_);\n var indexOfNationalNumber; // RFC 3966 \"tel:\" prefix is preset at this stage because\n // `isPhoneContextValid()` requires it to be present.\n\n /* istanbul ignore else */\n\n if (indexOfRfc3966Prefix >= 0) {\n indexOfNationalNumber = indexOfRfc3966Prefix + RFC3966_PREFIX_.length;\n } else {\n indexOfNationalNumber = 0;\n }\n var indexOfPhoneContext = numberToParse.indexOf(RFC3966_PHONE_CONTEXT_);\n phoneNumberString += numberToParse.substring(indexOfNationalNumber, indexOfPhoneContext);\n } // Delete the isdn-subaddress and everything after it if it is present.\n // Note extension won't appear at the same time with isdn-subaddress\n // according to paragraph 5.3 of the RFC3966 spec.\n\n var indexOfIsdn = phoneNumberString.indexOf(RFC3966_ISDN_SUBADDRESS_);\n if (indexOfIsdn > 0) {\n phoneNumberString = phoneNumberString.substring(0, indexOfIsdn);\n } // If both phone context and isdn-subaddress are absent but other\n // parameters are present, the parameters are left in nationalNumber.\n // This is because we are concerned about deleting content from a potential\n // number string when there is no strong evidence that the number is\n // actually written in RFC3966.\n\n if (phoneNumberString !== '') {\n return phoneNumberString;\n }\n}","// This is a port of Google Android `libphonenumber`'s\n// `phonenumberutil.js` of December 31th, 2018.\n//\n// https://github.com/googlei18n/libphonenumber/commits/master/javascript/i18n/phonenumbers/phonenumberutil.js\nimport { VALID_DIGITS, PLUS_CHARS, MIN_LENGTH_FOR_NSN, MAX_LENGTH_FOR_NSN } from './constants.js';\nimport ParseError from './ParseError.js';\nimport Metadata from './metadata.js';\nimport isViablePhoneNumber, { isViablePhoneNumberStart } from './helpers/isViablePhoneNumber.js';\nimport extractExtension from './helpers/extension/extractExtension.js';\nimport parseIncompletePhoneNumber from './parseIncompletePhoneNumber.js';\nimport getCountryCallingCode from './getCountryCallingCode.js';\nimport { isPossibleNumber } from './isPossible.js'; // import { parseRFC3966 } from './helpers/RFC3966.js'\n\nimport PhoneNumber from './PhoneNumber.js';\nimport matchesEntirely from './helpers/matchesEntirely.js';\nimport extractCountryCallingCode from './helpers/extractCountryCallingCode.js';\nimport extractNationalNumber from './helpers/extractNationalNumber.js';\nimport stripIddPrefix from './helpers/stripIddPrefix.js';\nimport getCountryByCallingCode from './helpers/getCountryByCallingCode.js';\nimport extractFormattedPhoneNumberFromPossibleRfc3966NumberUri from './helpers/extractFormattedPhoneNumberFromPossibleRfc3966NumberUri.js'; // We don't allow input strings for parsing to be longer than 250 chars.\n// This prevents malicious input from consuming CPU.\n\nvar MAX_INPUT_STRING_LENGTH = 250; // This consists of the plus symbol, digits, and arabic-indic digits.\n\nvar PHONE_NUMBER_START_PATTERN = new RegExp('[' + PLUS_CHARS + VALID_DIGITS + ']'); // Regular expression of trailing characters that we want to remove.\n// A trailing `#` is sometimes used when writing phone numbers with extensions in US.\n// Example: \"+1 (645) 123 1234-910#\" number has extension \"910\".\n\nvar AFTER_PHONE_NUMBER_END_PATTERN = new RegExp('[^' + VALID_DIGITS + '#' + ']+$');\nvar USE_NON_GEOGRAPHIC_COUNTRY_CODE = false; // Examples:\n//\n// ```js\n// parse('8 (800) 555-35-35', 'RU')\n// parse('8 (800) 555-35-35', 'RU', metadata)\n// parse('8 (800) 555-35-35', { country: { default: 'RU' } })\n// parse('8 (800) 555-35-35', { country: { default: 'RU' } }, metadata)\n// parse('+7 800 555 35 35')\n// parse('+7 800 555 35 35', metadata)\n// ```\n//\n\n/**\r\n * Parses a phone number.\r\n *\r\n * parse('123456789', { defaultCountry: 'RU', v2: true }, metadata)\r\n * parse('123456789', { defaultCountry: 'RU' }, metadata)\r\n * parse('123456789', undefined, metadata)\r\n *\r\n * @param {string} input\r\n * @param {object} [options]\r\n * @param {object} metadata\r\n * @return {object|PhoneNumber?} If `options.v2: true` flag is passed, it returns a `PhoneNumber?` instance. Otherwise, returns an object of shape `{ phone: '...', country: '...' }` (or just `{}` if no phone number was parsed).\r\n */\n\nexport default function parse(text, options, metadata) {\n // If assigning the `{}` default value is moved to the arguments above,\n // code coverage would decrease for some weird reason.\n options = options || {};\n metadata = new Metadata(metadata); // Validate `defaultCountry`.\n\n if (options.defaultCountry && !metadata.hasCountry(options.defaultCountry)) {\n if (options.v2) {\n throw new ParseError('INVALID_COUNTRY');\n }\n throw new Error(\"Unknown country: \".concat(options.defaultCountry));\n } // Parse the phone number.\n\n var _parseInput = parseInput(text, options.v2, options.extract),\n formattedPhoneNumber = _parseInput.number,\n ext = _parseInput.ext,\n error = _parseInput.error; // If the phone number is not viable then return nothing.\n\n if (!formattedPhoneNumber) {\n if (options.v2) {\n if (error === 'TOO_SHORT') {\n throw new ParseError('TOO_SHORT');\n }\n throw new ParseError('NOT_A_NUMBER');\n }\n return {};\n }\n var _parsePhoneNumber = parsePhoneNumber(formattedPhoneNumber, options.defaultCountry, options.defaultCallingCode, metadata),\n country = _parsePhoneNumber.country,\n nationalNumber = _parsePhoneNumber.nationalNumber,\n countryCallingCode = _parsePhoneNumber.countryCallingCode,\n countryCallingCodeSource = _parsePhoneNumber.countryCallingCodeSource,\n carrierCode = _parsePhoneNumber.carrierCode;\n if (!metadata.hasSelectedNumberingPlan()) {\n if (options.v2) {\n throw new ParseError('INVALID_COUNTRY');\n }\n return {};\n } // Validate national (significant) number length.\n\n if (!nationalNumber || nationalNumber.length < MIN_LENGTH_FOR_NSN) {\n // Won't throw here because the regexp already demands length > 1.\n\n /* istanbul ignore if */\n if (options.v2) {\n throw new ParseError('TOO_SHORT');\n } // Google's demo just throws an error in this case.\n\n return {};\n } // Validate national (significant) number length.\n //\n // A sidenote:\n //\n // They say that sometimes national (significant) numbers\n // can be longer than `MAX_LENGTH_FOR_NSN` (e.g. in Germany).\n // https://github.com/googlei18n/libphonenumber/blob/7e1748645552da39c4e1ba731e47969d97bdb539/resources/phonenumber.proto#L36\n // Such numbers will just be discarded.\n //\n\n if (nationalNumber.length > MAX_LENGTH_FOR_NSN) {\n if (options.v2) {\n throw new ParseError('TOO_LONG');\n } // Google's demo just throws an error in this case.\n\n return {};\n }\n if (options.v2) {\n var phoneNumber = new PhoneNumber(countryCallingCode, nationalNumber, metadata.metadata);\n if (country) {\n phoneNumber.country = country;\n }\n if (carrierCode) {\n phoneNumber.carrierCode = carrierCode;\n }\n if (ext) {\n phoneNumber.ext = ext;\n }\n phoneNumber.__countryCallingCodeSource = countryCallingCodeSource;\n return phoneNumber;\n } // Check if national phone number pattern matches the number.\n // National number pattern is different for each country,\n // even for those ones which are part of the \"NANPA\" group.\n\n var valid = (options.extended ? metadata.hasSelectedNumberingPlan() : country) ? matchesEntirely(nationalNumber, metadata.nationalNumberPattern()) : false;\n if (!options.extended) {\n return valid ? result(country, nationalNumber, ext) : {};\n } // isInternational: countryCallingCode !== undefined\n\n return {\n country: country,\n countryCallingCode: countryCallingCode,\n carrierCode: carrierCode,\n valid: valid,\n possible: valid ? true : options.extended === true && metadata.possibleLengths() && isPossibleNumber(nationalNumber, metadata) ? true : false,\n phone: nationalNumber,\n ext: ext\n };\n}\n/**\r\n * Extracts a formatted phone number from text.\r\n * Doesn't guarantee that the extracted phone number\r\n * is a valid phone number (for example, doesn't validate its length).\r\n * @param {string} text\r\n * @param {boolean} [extract] — If `false`, then will parse the entire `text` as a phone number.\r\n * @param {boolean} [throwOnError] — By default, it won't throw if the text is too long.\r\n * @return {string}\r\n * @example\r\n * // Returns \"(213) 373-4253\".\r\n * extractFormattedPhoneNumber(\"Call (213) 373-4253 for assistance.\")\r\n */\n\nfunction _extractFormattedPhoneNumber(text, extract, throwOnError) {\n if (!text) {\n return;\n }\n if (text.length > MAX_INPUT_STRING_LENGTH) {\n if (throwOnError) {\n throw new ParseError('TOO_LONG');\n }\n return;\n }\n if (extract === false) {\n return text;\n } // Attempt to extract a possible number from the string passed in\n\n var startsAt = text.search(PHONE_NUMBER_START_PATTERN);\n if (startsAt < 0) {\n return;\n }\n return text // Trim everything to the left of the phone number\n .slice(startsAt) // Remove trailing non-numerical characters\n .replace(AFTER_PHONE_NUMBER_END_PATTERN, '');\n}\n/**\r\n * @param {string} text - Input.\r\n * @param {boolean} v2 - Legacy API functions don't pass `v2: true` flag.\r\n * @param {boolean} [extract] - Whether to extract a phone number from `text`, or attempt to parse the entire text as a phone number.\r\n * @return {object} `{ ?number, ?ext }`.\r\n */\n\nfunction parseInput(text, v2, extract) {\n // // Parse RFC 3966 phone number URI.\n // if (text && text.indexOf('tel:') === 0) {\n // \treturn parseRFC3966(text)\n // }\n // let number = extractFormattedPhoneNumber(text, extract, v2)\n var number = extractFormattedPhoneNumberFromPossibleRfc3966NumberUri(text, {\n extractFormattedPhoneNumber: function extractFormattedPhoneNumber(text) {\n return _extractFormattedPhoneNumber(text, extract, v2);\n }\n }); // If the phone number is not viable, then abort.\n\n if (!number) {\n return {};\n }\n if (!isViablePhoneNumber(number)) {\n if (isViablePhoneNumberStart(number)) {\n return {\n error: 'TOO_SHORT'\n };\n }\n return {};\n } // Attempt to parse extension first, since it doesn't require region-specific\n // data and we want to have the non-normalised number here.\n\n var withExtensionStripped = extractExtension(number);\n if (withExtensionStripped.ext) {\n return withExtensionStripped;\n }\n return {\n number: number\n };\n}\n/**\r\n * Creates `parse()` result object.\r\n */\n\nfunction result(country, nationalNumber, ext) {\n var result = {\n country: country,\n phone: nationalNumber\n };\n if (ext) {\n result.ext = ext;\n }\n return result;\n}\n/**\r\n * Parses a viable phone number.\r\n * @param {string} formattedPhoneNumber — Example: \"(213) 373-4253\".\r\n * @param {string} [defaultCountry]\r\n * @param {string} [defaultCallingCode]\r\n * @param {Metadata} metadata\r\n * @return {object} Returns `{ country: string?, countryCallingCode: string?, nationalNumber: string? }`.\r\n */\n\nfunction parsePhoneNumber(formattedPhoneNumber, defaultCountry, defaultCallingCode, metadata) {\n // Extract calling code from phone number.\n var _extractCountryCallin = extractCountryCallingCode(parseIncompletePhoneNumber(formattedPhoneNumber), defaultCountry, defaultCallingCode, metadata.metadata),\n countryCallingCodeSource = _extractCountryCallin.countryCallingCodeSource,\n countryCallingCode = _extractCountryCallin.countryCallingCode,\n number = _extractCountryCallin.number; // Choose a country by `countryCallingCode`.\n\n var country;\n if (countryCallingCode) {\n metadata.selectNumberingPlan(countryCallingCode);\n } // If `formattedPhoneNumber` is passed in \"national\" format\n // then `number` is defined and `countryCallingCode` is `undefined`.\n else if (number && (defaultCountry || defaultCallingCode)) {\n metadata.selectNumberingPlan(defaultCountry, defaultCallingCode);\n if (defaultCountry) {\n country = defaultCountry;\n } else {\n /* istanbul ignore if */\n if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n if (metadata.isNonGeographicCallingCode(defaultCallingCode)) {\n country = '001';\n }\n }\n }\n countryCallingCode = defaultCallingCode || getCountryCallingCode(defaultCountry, metadata.metadata);\n } else return {};\n if (!number) {\n return {\n countryCallingCodeSource: countryCallingCodeSource,\n countryCallingCode: countryCallingCode\n };\n }\n var _extractNationalNumbe = extractNationalNumber(parseIncompletePhoneNumber(number), metadata),\n nationalNumber = _extractNationalNumbe.nationalNumber,\n carrierCode = _extractNationalNumbe.carrierCode; // Sometimes there are several countries\n // corresponding to the same country phone code\n // (e.g. NANPA countries all having `1` country phone code).\n // Therefore, to reliably determine the exact country,\n // national (significant) number should have been parsed first.\n //\n // When `metadata.json` is generated, all \"ambiguous\" country phone codes\n // get their countries populated with the full set of\n // \"phone number type\" regular expressions.\n //\n\n var exactCountry = getCountryByCallingCode(countryCallingCode, {\n nationalNumber: nationalNumber,\n defaultCountry: defaultCountry,\n metadata: metadata\n });\n if (exactCountry) {\n country = exactCountry;\n /* istanbul ignore if */\n\n if (exactCountry === '001') {// Can't happen with `USE_NON_GEOGRAPHIC_COUNTRY_CODE` being `false`.\n // If `USE_NON_GEOGRAPHIC_COUNTRY_CODE` is set to `true` for some reason,\n // then remove the \"istanbul ignore if\".\n } else {\n metadata.country(country);\n }\n }\n return {\n country: country,\n countryCallingCode: countryCallingCode,\n countryCallingCodeSource: countryCallingCodeSource,\n nationalNumber: nationalNumber,\n carrierCode: carrierCode\n };\n}","function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nimport parse from './parse.js';\nexport default function parsePhoneNumberWithError(text, options, metadata) {\n return parse(text, _objectSpread(_objectSpread({}, options), {}, {\n v2: true\n }), metadata);\n}","function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nimport normalizeArguments from './normalizeArguments.js';\nimport parsePhoneNumberWithError from './parsePhoneNumberWithError_.js';\nimport ParseError from './ParseError.js';\nimport Metadata from './metadata.js';\nimport checkNumberLength from './helpers/checkNumberLength.js';\nexport default function validatePhoneNumberLength() {\n var _normalizeArguments = normalizeArguments(arguments),\n text = _normalizeArguments.text,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n options = _objectSpread(_objectSpread({}, options), {}, {\n extract: false\n }); // Parse phone number.\n\n try {\n var phoneNumber = parsePhoneNumberWithError(text, options, metadata);\n metadata = new Metadata(metadata);\n metadata.selectNumberingPlan(phoneNumber.countryCallingCode);\n var result = checkNumberLength(phoneNumber.nationalNumber, metadata);\n if (result !== 'IS_POSSIBLE') {\n return result;\n }\n } catch (error) {\n /* istanbul ignore else */\n if (error instanceof ParseError) {\n return error.message;\n } else {\n throw error;\n }\n }\n}","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\n\n// This \"state\" object simply holds the state of the \"AsYouType\" parser:\n//\n// * `country?: string`\n// * `callingCode?: string`\n// * `digits: string`\n// * `international: boolean`\n// * `missingPlus: boolean`\n// * `IDDPrefix?: string`\n// * `carrierCode?: string`\n// * `nationalPrefix?: string`\n// * `nationalSignificantNumber?: string`\n// * `nationalSignificantNumberMatchesInput: boolean`\n// * `complexPrefixBeforeNationalSignificantNumber?: string`\n//\n// `state.country` and `state.callingCode` aren't required to be in sync.\n// For example, `state.country` could be `\"AR\"` and `state.callingCode` could be `undefined`.\n// So `state.country` and `state.callingCode` are totally independent.\n//\nvar AsYouTypeState = /*#__PURE__*/function () {\n function AsYouTypeState(_ref) {\n var onCountryChange = _ref.onCountryChange,\n onCallingCodeChange = _ref.onCallingCodeChange;\n _classCallCheck(this, AsYouTypeState);\n this.onCountryChange = onCountryChange;\n this.onCallingCodeChange = onCallingCodeChange;\n }\n _createClass(AsYouTypeState, [{\n key: \"reset\",\n value: function reset(_ref2) {\n var country = _ref2.country,\n callingCode = _ref2.callingCode;\n this.international = false;\n this.missingPlus = false;\n this.IDDPrefix = undefined;\n this.callingCode = undefined;\n this.digits = '';\n this.resetNationalSignificantNumber();\n this.initCountryAndCallingCode(country, callingCode);\n }\n }, {\n key: \"resetNationalSignificantNumber\",\n value: function resetNationalSignificantNumber() {\n this.nationalSignificantNumber = this.getNationalDigits();\n this.nationalSignificantNumberMatchesInput = true;\n this.nationalPrefix = undefined;\n this.carrierCode = undefined;\n this.complexPrefixBeforeNationalSignificantNumber = undefined;\n }\n }, {\n key: \"update\",\n value: function update(properties) {\n for (var _i = 0, _Object$keys = Object.keys(properties); _i < _Object$keys.length; _i++) {\n var key = _Object$keys[_i];\n this[key] = properties[key];\n }\n }\n }, {\n key: \"initCountryAndCallingCode\",\n value: function initCountryAndCallingCode(country, callingCode) {\n this.setCountry(country);\n this.setCallingCode(callingCode);\n }\n }, {\n key: \"setCountry\",\n value: function setCountry(country) {\n this.country = country;\n this.onCountryChange(country);\n }\n }, {\n key: \"setCallingCode\",\n value: function setCallingCode(callingCode) {\n this.callingCode = callingCode;\n this.onCallingCodeChange(callingCode, this.country);\n }\n }, {\n key: \"startInternationalNumber\",\n value: function startInternationalNumber(country, callingCode) {\n // Prepend the `+` to parsed input.\n this.international = true; // If a default country was set then reset it\n // because an explicitly international phone\n // number is being entered.\n\n this.initCountryAndCallingCode(country, callingCode);\n }\n }, {\n key: \"appendDigits\",\n value: function appendDigits(nextDigits) {\n this.digits += nextDigits;\n }\n }, {\n key: \"appendNationalSignificantNumberDigits\",\n value: function appendNationalSignificantNumberDigits(nextDigits) {\n this.nationalSignificantNumber += nextDigits;\n }\n /**\r\n * Returns the part of `this.digits` that corresponds to the national number.\r\n * Basically, all digits that have been input by the user, except for the\r\n * international prefix and the country calling code part\r\n * (if the number is an international one).\r\n * @return {string}\r\n */\n }, {\n key: \"getNationalDigits\",\n value: function getNationalDigits() {\n if (this.international) {\n return this.digits.slice((this.IDDPrefix ? this.IDDPrefix.length : 0) + (this.callingCode ? this.callingCode.length : 0));\n }\n return this.digits;\n }\n }, {\n key: \"getDigitsWithoutInternationalPrefix\",\n value: function getDigitsWithoutInternationalPrefix() {\n if (this.international) {\n if (this.IDDPrefix) {\n return this.digits.slice(this.IDDPrefix.length);\n }\n }\n return this.digits;\n }\n }]);\n return AsYouTypeState;\n}();\nexport { AsYouTypeState as default };","function _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(it);\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\n\n// Should be the same as `DIGIT_PLACEHOLDER` in `libphonenumber-metadata-generator`.\nexport var DIGIT_PLACEHOLDER = 'x'; // '\\u2008' (punctuation space)\n\nvar DIGIT_PLACEHOLDER_MATCHER = new RegExp(DIGIT_PLACEHOLDER); // Counts all occurences of a symbol in a string.\n// Unicode-unsafe (because using `.split()`).\n\nexport function countOccurences(symbol, string) {\n var count = 0; // Using `.split('')` to iterate through a string here\n // to avoid requiring `Symbol.iterator` polyfill.\n // `.split('')` is generally not safe for Unicode,\n // but in this particular case for counting brackets it is safe.\n // for (const character of string)\n\n for (var _iterator = _createForOfIteratorHelperLoose(string.split('')), _step; !(_step = _iterator()).done;) {\n var character = _step.value;\n if (character === symbol) {\n count++;\n }\n }\n return count;\n} // Repeats a string (or a symbol) N times.\n// http://stackoverflow.com/questions/202605/repeat-string-javascript\n\nexport function repeat(string, times) {\n if (times < 1) {\n return '';\n }\n var result = '';\n while (times > 1) {\n if (times & 1) {\n result += string;\n }\n times >>= 1;\n string += string;\n }\n return result + string;\n}\nexport function cutAndStripNonPairedParens(string, cutBeforeIndex) {\n if (string[cutBeforeIndex] === ')') {\n cutBeforeIndex++;\n }\n return stripNonPairedParens(string.slice(0, cutBeforeIndex));\n}\nexport function closeNonPairedParens(template, cut_before) {\n var retained_template = template.slice(0, cut_before);\n var opening_braces = countOccurences('(', retained_template);\n var closing_braces = countOccurences(')', retained_template);\n var dangling_braces = opening_braces - closing_braces;\n while (dangling_braces > 0 && cut_before < template.length) {\n if (template[cut_before] === ')') {\n dangling_braces--;\n }\n cut_before++;\n }\n return template.slice(0, cut_before);\n}\nexport function stripNonPairedParens(string) {\n var dangling_braces = [];\n var i = 0;\n while (i < string.length) {\n if (string[i] === '(') {\n dangling_braces.push(i);\n } else if (string[i] === ')') {\n dangling_braces.pop();\n }\n i++;\n }\n var start = 0;\n var cleared_string = '';\n dangling_braces.push(string.length);\n for (var _i = 0, _dangling_braces = dangling_braces; _i < _dangling_braces.length; _i++) {\n var index = _dangling_braces[_i];\n cleared_string += string.slice(start, index);\n start = index + 1;\n }\n return cleared_string;\n}\nexport function populateTemplateWithDigits(template, position, digits) {\n // Using `.split('')` to iterate through a string here\n // to avoid requiring `Symbol.iterator` polyfill.\n // `.split('')` is generally not safe for Unicode,\n // but in this particular case for `digits` it is safe.\n // for (const digit of digits)\n for (var _iterator2 = _createForOfIteratorHelperLoose(digits.split('')), _step2; !(_step2 = _iterator2()).done;) {\n var digit = _step2.value;\n\n // If there is room for more digits in current `template`,\n // then set the next digit in the `template`,\n // and return the formatted digits so far.\n // If more digits are entered than the current format could handle.\n if (template.slice(position + 1).search(DIGIT_PLACEHOLDER_MATCHER) < 0) {\n return;\n }\n position = template.search(DIGIT_PLACEHOLDER_MATCHER);\n template = template.replace(DIGIT_PLACEHOLDER_MATCHER, digit);\n }\n return [template, position];\n}","import checkNumberLength from './helpers/checkNumberLength.js';\nimport parseDigits from './helpers/parseDigits.js';\nimport formatNationalNumberUsingFormat from './helpers/formatNationalNumberUsingFormat.js';\nexport default function formatCompleteNumber(state, format, _ref) {\n var metadata = _ref.metadata,\n shouldTryNationalPrefixFormattingRule = _ref.shouldTryNationalPrefixFormattingRule,\n getSeparatorAfterNationalPrefix = _ref.getSeparatorAfterNationalPrefix;\n var matcher = new RegExp(\"^(?:\".concat(format.pattern(), \")$\"));\n if (matcher.test(state.nationalSignificantNumber)) {\n return formatNationalNumberWithAndWithoutNationalPrefixFormattingRule(state, format, {\n metadata: metadata,\n shouldTryNationalPrefixFormattingRule: shouldTryNationalPrefixFormattingRule,\n getSeparatorAfterNationalPrefix: getSeparatorAfterNationalPrefix\n });\n }\n}\nexport function canFormatCompleteNumber(nationalSignificantNumber, metadata) {\n return checkNumberLength(nationalSignificantNumber, metadata) === 'IS_POSSIBLE';\n}\nfunction formatNationalNumberWithAndWithoutNationalPrefixFormattingRule(state, format, _ref2) {\n var metadata = _ref2.metadata,\n shouldTryNationalPrefixFormattingRule = _ref2.shouldTryNationalPrefixFormattingRule,\n getSeparatorAfterNationalPrefix = _ref2.getSeparatorAfterNationalPrefix;\n // `format` has already been checked for `nationalPrefix` requirement.\n var nationalSignificantNumber = state.nationalSignificantNumber,\n international = state.international,\n nationalPrefix = state.nationalPrefix,\n carrierCode = state.carrierCode; // Format the number with using `national_prefix_formatting_rule`.\n // If the resulting formatted number is a valid formatted number, then return it.\n //\n // Google's AsYouType formatter is different in a way that it doesn't try\n // to format using the \"national prefix formatting rule\", and instead it\n // simply prepends a national prefix followed by a \" \" character.\n // This code does that too, but as a fallback.\n // The reason is that \"national prefix formatting rule\" may use parentheses,\n // which wouldn't be included has it used the simpler Google's way.\n //\n\n if (shouldTryNationalPrefixFormattingRule(format)) {\n var formattedNumber = formatNationalNumber(state, format, {\n useNationalPrefixFormattingRule: true,\n getSeparatorAfterNationalPrefix: getSeparatorAfterNationalPrefix,\n metadata: metadata\n });\n if (formattedNumber) {\n return formattedNumber;\n }\n } // Format the number without using `national_prefix_formatting_rule`.\n\n return formatNationalNumber(state, format, {\n useNationalPrefixFormattingRule: false,\n getSeparatorAfterNationalPrefix: getSeparatorAfterNationalPrefix,\n metadata: metadata\n });\n}\nfunction formatNationalNumber(state, format, _ref3) {\n var metadata = _ref3.metadata,\n useNationalPrefixFormattingRule = _ref3.useNationalPrefixFormattingRule,\n getSeparatorAfterNationalPrefix = _ref3.getSeparatorAfterNationalPrefix;\n var formattedNationalNumber = formatNationalNumberUsingFormat(state.nationalSignificantNumber, format, {\n carrierCode: state.carrierCode,\n useInternationalFormat: state.international,\n withNationalPrefix: useNationalPrefixFormattingRule,\n metadata: metadata\n });\n if (!useNationalPrefixFormattingRule) {\n if (state.nationalPrefix) {\n // If a national prefix was extracted, then just prepend it,\n // followed by a \" \" character.\n formattedNationalNumber = state.nationalPrefix + getSeparatorAfterNationalPrefix(format) + formattedNationalNumber;\n } else if (state.complexPrefixBeforeNationalSignificantNumber) {\n formattedNationalNumber = state.complexPrefixBeforeNationalSignificantNumber + ' ' + formattedNationalNumber;\n }\n }\n if (isValidFormattedNationalNumber(formattedNationalNumber, state)) {\n return formattedNationalNumber;\n }\n} // Check that the formatted phone number contains exactly\n// the same digits that have been input by the user.\n// For example, when \"0111523456789\" is input for `AR` country,\n// the extracted `this.nationalSignificantNumber` is \"91123456789\",\n// which means that the national part of `this.digits` isn't simply equal to\n// `this.nationalPrefix` + `this.nationalSignificantNumber`.\n//\n// Also, a `format` can add extra digits to the `this.nationalSignificantNumber`\n// being formatted via `metadata[country].national_prefix_transform_rule`.\n// For example, for `VI` country, it prepends `340` to the national number,\n// and if this check hasn't been implemented, then there would be a bug\n// when `340` \"area coude\" is \"duplicated\" during input for `VI` country:\n// https://github.com/catamphetamine/libphonenumber-js/issues/318\n//\n// So, all these \"gotchas\" are filtered out.\n//\n// In the original Google's code, the comments say:\n// \"Check that we didn't remove nor add any extra digits when we matched\n// this formatting pattern. This usually happens after we entered the last\n// digit during AYTF. Eg: In case of MX, we swallow mobile token (1) when\n// formatted but AYTF should retain all the number entered and not change\n// in order to match a format (of same leading digits and length) display\n// in that way.\"\n// \"If it's the same (i.e entered number and format is same), then it's\n// safe to return this in formatted number as nothing is lost / added.\"\n// Otherwise, don't use this format.\n// https://github.com/google/libphonenumber/commit/3e7c1f04f5e7200f87fb131e6f85c6e99d60f510#diff-9149457fa9f5d608a11bb975c6ef4bc5\n// https://github.com/google/libphonenumber/commit/3ac88c7106e7dcb553bcc794b15f19185928a1c6#diff-2dcb77e833422ee304da348b905cde0b\n//\n\nfunction isValidFormattedNationalNumber(formattedNationalNumber, state) {\n return parseDigits(formattedNationalNumber) === state.getNationalDigits();\n}","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nvar PatternParser = /*#__PURE__*/function () {\n function PatternParser() {\n _classCallCheck(this, PatternParser);\n }\n _createClass(PatternParser, [{\n key: \"parse\",\n value: function parse(pattern) {\n this.context = [{\n or: true,\n instructions: []\n }];\n this.parsePattern(pattern);\n if (this.context.length !== 1) {\n throw new Error('Non-finalized contexts left when pattern parse ended');\n }\n var _this$context$ = this.context[0],\n branches = _this$context$.branches,\n instructions = _this$context$.instructions;\n if (branches) {\n return {\n op: '|',\n args: branches.concat([expandSingleElementArray(instructions)])\n };\n }\n /* istanbul ignore if */\n\n if (instructions.length === 0) {\n throw new Error('Pattern is required');\n }\n if (instructions.length === 1) {\n return instructions[0];\n }\n return instructions;\n }\n }, {\n key: \"startContext\",\n value: function startContext(context) {\n this.context.push(context);\n }\n }, {\n key: \"endContext\",\n value: function endContext() {\n this.context.pop();\n }\n }, {\n key: \"getContext\",\n value: function getContext() {\n return this.context[this.context.length - 1];\n }\n }, {\n key: \"parsePattern\",\n value: function parsePattern(pattern) {\n if (!pattern) {\n throw new Error('Pattern is required');\n }\n var match = pattern.match(OPERATOR);\n if (!match) {\n if (ILLEGAL_CHARACTER_REGEXP.test(pattern)) {\n throw new Error(\"Illegal characters found in a pattern: \".concat(pattern));\n }\n this.getContext().instructions = this.getContext().instructions.concat(pattern.split(''));\n return;\n }\n var operator = match[1];\n var before = pattern.slice(0, match.index);\n var rightPart = pattern.slice(match.index + operator.length);\n switch (operator) {\n case '(?:':\n if (before) {\n this.parsePattern(before);\n }\n this.startContext({\n or: true,\n instructions: [],\n branches: []\n });\n break;\n case ')':\n if (!this.getContext().or) {\n throw new Error('\")\" operator must be preceded by \"(?:\" operator');\n }\n if (before) {\n this.parsePattern(before);\n }\n if (this.getContext().instructions.length === 0) {\n throw new Error('No instructions found after \"|\" operator in an \"or\" group');\n }\n var _this$getContext = this.getContext(),\n branches = _this$getContext.branches;\n branches.push(expandSingleElementArray(this.getContext().instructions));\n this.endContext();\n this.getContext().instructions.push({\n op: '|',\n args: branches\n });\n break;\n case '|':\n if (!this.getContext().or) {\n throw new Error('\"|\" operator can only be used inside \"or\" groups');\n }\n if (before) {\n this.parsePattern(before);\n } // The top-level is an implicit \"or\" group, if required.\n\n if (!this.getContext().branches) {\n // `branches` are not defined only for the root implicit \"or\" operator.\n\n /* istanbul ignore else */\n if (this.context.length === 1) {\n this.getContext().branches = [];\n } else {\n throw new Error('\"branches\" not found in an \"or\" group context');\n }\n }\n this.getContext().branches.push(expandSingleElementArray(this.getContext().instructions));\n this.getContext().instructions = [];\n break;\n case '[':\n if (before) {\n this.parsePattern(before);\n }\n this.startContext({\n oneOfSet: true\n });\n break;\n case ']':\n if (!this.getContext().oneOfSet) {\n throw new Error('\"]\" operator must be preceded by \"[\" operator');\n }\n this.endContext();\n this.getContext().instructions.push({\n op: '[]',\n args: parseOneOfSet(before)\n });\n break;\n\n /* istanbul ignore next */\n\n default:\n throw new Error(\"Unknown operator: \".concat(operator));\n }\n if (rightPart) {\n this.parsePattern(rightPart);\n }\n }\n }]);\n return PatternParser;\n}();\nexport { PatternParser as default };\nfunction parseOneOfSet(pattern) {\n var values = [];\n var i = 0;\n while (i < pattern.length) {\n if (pattern[i] === '-') {\n if (i === 0 || i === pattern.length - 1) {\n throw new Error(\"Couldn't parse a one-of set pattern: \".concat(pattern));\n }\n var prevValue = pattern[i - 1].charCodeAt(0) + 1;\n var nextValue = pattern[i + 1].charCodeAt(0) - 1;\n var value = prevValue;\n while (value <= nextValue) {\n values.push(String.fromCharCode(value));\n value++;\n }\n } else {\n values.push(pattern[i]);\n }\n i++;\n }\n return values;\n}\nvar ILLEGAL_CHARACTER_REGEXP = /[\\(\\)\\[\\]\\?\\:\\|]/;\nvar OPERATOR = new RegExp(\n// any of:\n'(' +\n// or operator\n'\\\\|' +\n// or\n'|' +\n// or group start\n'\\\\(\\\\?\\\\:' +\n// or\n'|' +\n// or group end\n'\\\\)' +\n// or\n'|' +\n// one-of set start\n'\\\\[' +\n// or\n'|' +\n// one-of set end\n'\\\\]' + ')');\nfunction expandSingleElementArray(array) {\n if (array.length === 1) {\n return array[0];\n }\n return array;\n}","function _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(it);\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nimport PatternParser from './AsYouTypeFormatter.PatternParser.js';\nvar PatternMatcher = /*#__PURE__*/function () {\n function PatternMatcher(pattern) {\n _classCallCheck(this, PatternMatcher);\n this.matchTree = new PatternParser().parse(pattern);\n }\n _createClass(PatternMatcher, [{\n key: \"match\",\n value: function match(string) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n allowOverflow = _ref.allowOverflow;\n if (!string) {\n throw new Error('String is required');\n }\n var result = _match(string.split(''), this.matchTree, true);\n if (result && result.match) {\n delete result.matchedChars;\n }\n if (result && result.overflow) {\n if (!allowOverflow) {\n return;\n }\n }\n return result;\n }\n }]);\n return PatternMatcher;\n}();\n/**\r\n * Matches `characters` against a pattern compiled into a `tree`.\r\n * @param {string[]} characters\r\n * @param {Tree} tree — A pattern compiled into a `tree`. See the `*.d.ts` file for the description of the `tree` structure.\r\n * @param {boolean} last — Whether it's the last (rightmost) subtree on its level of the match tree.\r\n * @return {object} See the `*.d.ts` file for the description of the result object.\r\n */\n\nexport { PatternMatcher as default };\nfunction _match(characters, tree, last) {\n // If `tree` is a string, then `tree` is a single character.\n // That's because when a pattern is parsed, multi-character-string parts\n // of a pattern are compiled into arrays of single characters.\n // I still wrote this piece of code for a \"general\" hypothetical case\n // when `tree` could be a string of several characters, even though\n // such case is not possible with the current implementation.\n if (typeof tree === 'string') {\n var characterString = characters.join('');\n if (tree.indexOf(characterString) === 0) {\n // `tree` is always a single character.\n // If `tree.indexOf(characterString) === 0`\n // then `characters.length === tree.length`.\n\n /* istanbul ignore else */\n if (characters.length === tree.length) {\n return {\n match: true,\n matchedChars: characters\n };\n } // `tree` is always a single character.\n // If `tree.indexOf(characterString) === 0`\n // then `characters.length === tree.length`.\n\n /* istanbul ignore next */\n\n return {\n partialMatch: true // matchedChars: characters\n };\n }\n\n if (characterString.indexOf(tree) === 0) {\n if (last) {\n // The `else` path is not possible because `tree` is always a single character.\n // The `else` case for `characters.length > tree.length` would be\n // `characters.length <= tree.length` which means `characters.length <= 1`.\n // `characters` array can't be empty, so that means `characters === [tree]`,\n // which would also mean `tree.indexOf(characterString) === 0` and that'd mean\n // that the `if (tree.indexOf(characterString) === 0)` condition before this\n // `if` condition would be entered, and returned from there, not reaching this code.\n\n /* istanbul ignore else */\n if (characters.length > tree.length) {\n return {\n overflow: true\n };\n }\n }\n return {\n match: true,\n matchedChars: characters.slice(0, tree.length)\n };\n }\n return;\n }\n if (Array.isArray(tree)) {\n var restCharacters = characters.slice();\n var i = 0;\n while (i < tree.length) {\n var subtree = tree[i];\n var result = _match(restCharacters, subtree, last && i === tree.length - 1);\n if (!result) {\n return;\n } else if (result.overflow) {\n return result;\n } else if (result.match) {\n // Continue with the next subtree with the rest of the characters.\n restCharacters = restCharacters.slice(result.matchedChars.length);\n if (restCharacters.length === 0) {\n if (i === tree.length - 1) {\n return {\n match: true,\n matchedChars: characters\n };\n } else {\n return {\n partialMatch: true // matchedChars: characters\n };\n }\n }\n } else {\n /* istanbul ignore else */\n if (result.partialMatch) {\n return {\n partialMatch: true // matchedChars: characters\n };\n } else {\n throw new Error(\"Unsupported match result:\\n\".concat(JSON.stringify(result, null, 2)));\n }\n }\n i++;\n } // If `last` then overflow has already been checked\n // by the last element of the `tree` array.\n\n /* istanbul ignore if */\n\n if (last) {\n return {\n overflow: true\n };\n }\n return {\n match: true,\n matchedChars: characters.slice(0, characters.length - restCharacters.length)\n };\n }\n switch (tree.op) {\n case '|':\n var partialMatch;\n for (var _iterator = _createForOfIteratorHelperLoose(tree.args), _step; !(_step = _iterator()).done;) {\n var branch = _step.value;\n var _result = _match(characters, branch, last);\n if (_result) {\n if (_result.overflow) {\n return _result;\n } else if (_result.match) {\n return {\n match: true,\n matchedChars: _result.matchedChars\n };\n } else {\n /* istanbul ignore else */\n if (_result.partialMatch) {\n partialMatch = true;\n } else {\n throw new Error(\"Unsupported match result:\\n\".concat(JSON.stringify(_result, null, 2)));\n }\n }\n }\n }\n if (partialMatch) {\n return {\n partialMatch: true // matchedChars: ...\n };\n } // Not even a partial match.\n\n return;\n case '[]':\n for (var _iterator2 = _createForOfIteratorHelperLoose(tree.args), _step2; !(_step2 = _iterator2()).done;) {\n var _char = _step2.value;\n if (characters[0] === _char) {\n if (characters.length === 1) {\n return {\n match: true,\n matchedChars: characters\n };\n }\n if (last) {\n return {\n overflow: true\n };\n }\n return {\n match: true,\n matchedChars: [_char]\n };\n }\n } // No character matches.\n\n return;\n\n /* istanbul ignore next */\n\n default:\n throw new Error(\"Unsupported instruction tree: \".concat(tree));\n }\n}","function _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(it);\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nimport { DIGIT_PLACEHOLDER, countOccurences, repeat, cutAndStripNonPairedParens, closeNonPairedParens, stripNonPairedParens, populateTemplateWithDigits } from './AsYouTypeFormatter.util.js';\nimport formatCompleteNumber, { canFormatCompleteNumber } from './AsYouTypeFormatter.complete.js';\nimport PatternMatcher from './AsYouTypeFormatter.PatternMatcher.js';\nimport parseDigits from './helpers/parseDigits.js';\nexport { DIGIT_PLACEHOLDER } from './AsYouTypeFormatter.util.js';\nimport { FIRST_GROUP_PATTERN } from './helpers/formatNationalNumberUsingFormat.js';\nimport { VALID_PUNCTUATION } from './constants.js';\nimport applyInternationalSeparatorStyle from './helpers/applyInternationalSeparatorStyle.js'; // Used in phone number format template creation.\n// Could be any digit, I guess.\n\nvar DUMMY_DIGIT = '9'; // I don't know why is it exactly `15`\n\nvar LONGEST_NATIONAL_PHONE_NUMBER_LENGTH = 15; // Create a phone number consisting only of the digit 9 that matches the\n// `number_pattern` by applying the pattern to the \"longest phone number\" string.\n\nvar LONGEST_DUMMY_PHONE_NUMBER = repeat(DUMMY_DIGIT, LONGEST_NATIONAL_PHONE_NUMBER_LENGTH); // A set of characters that, if found in a national prefix formatting rules, are an indicator to\n// us that we should separate the national prefix from the number when formatting.\n\nvar NATIONAL_PREFIX_SEPARATORS_PATTERN = /[- ]/; // Deprecated: Google has removed some formatting pattern related code from their repo.\n// https://github.com/googlei18n/libphonenumber/commit/a395b4fef3caf57c4bc5f082e1152a4d2bd0ba4c\n// \"We no longer have numbers in formatting matching patterns, only \\d.\"\n// Because this library supports generating custom metadata\n// some users may still be using old metadata so the relevant\n// code seems to stay until some next major version update.\n\nvar SUPPORT_LEGACY_FORMATTING_PATTERNS = true; // A pattern that is used to match character classes in regular expressions.\n// An example of a character class is \"[1-4]\".\n\nvar CREATE_CHARACTER_CLASS_PATTERN = SUPPORT_LEGACY_FORMATTING_PATTERNS && function () {\n return /\\[([^\\[\\]])*\\]/g;\n}; // Any digit in a regular expression that actually denotes a digit. For\n// example, in the regular expression \"80[0-2]\\d{6,10}\", the first 2 digits\n// (8 and 0) are standalone digits, but the rest are not.\n// Two look-aheads are needed because the number following \\\\d could be a\n// two-digit number, since the phone number can be as long as 15 digits.\n\nvar CREATE_STANDALONE_DIGIT_PATTERN = SUPPORT_LEGACY_FORMATTING_PATTERNS && function () {\n return /\\d(?=[^,}][^,}])/g;\n}; // A regular expression that is used to determine if a `format` is\n// suitable to be used in the \"as you type formatter\".\n// A `format` is suitable when the resulting formatted number has\n// the same digits as the user has entered.\n//\n// In the simplest case, that would mean that the format\n// doesn't add any additional digits when formatting a number.\n// Google says that it also shouldn't add \"star\" (`*`) characters,\n// like it does in some Israeli formats.\n// Such basic format would only contain \"valid punctuation\"\n// and \"captured group\" identifiers ($1, $2, etc).\n//\n// An example of a format that adds additional digits:\n//\n// Country: `AR` (Argentina).\n// Format:\n// {\n// \"pattern\": \"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\n// \"leading_digits_patterns\": [\"91\"],\n// \"national_prefix_formatting_rule\": \"0$1\",\n// \"format\": \"$2 15-$3-$4\",\n// \"international_format\": \"$1 $2 $3-$4\"\n// }\n//\n// In the format above, the `format` adds `15` to the digits when formatting a number.\n// A sidenote: this format actually is suitable because `national_prefix_for_parsing`\n// has previously removed `15` from a national number, so re-adding `15` in `format`\n// doesn't actually result in any extra digits added to user's input.\n// But verifying that would be a complex procedure, so the code chooses a simpler path:\n// it simply filters out all `format`s that contain anything but \"captured group\" ids.\n//\n// This regular expression is called `ELIGIBLE_FORMAT_PATTERN` in Google's\n// `libphonenumber` code.\n//\n\nvar NON_ALTERING_FORMAT_REG_EXP = new RegExp('[' + VALID_PUNCTUATION + ']*' +\n// Google developers say:\n// \"We require that the first matching group is present in the\n// output pattern to ensure no data is lost while formatting.\"\n'\\\\$1' + '[' + VALID_PUNCTUATION + ']*' + '(\\\\$\\\\d[' + VALID_PUNCTUATION + ']*)*' + '$'); // This is the minimum length of the leading digits of a phone number\n// to guarantee the first \"leading digits pattern\" for a phone number format\n// to be preemptive.\n\nvar MIN_LEADING_DIGITS_LENGTH = 3;\nvar AsYouTypeFormatter = /*#__PURE__*/function () {\n function AsYouTypeFormatter(_ref) {\n var state = _ref.state,\n metadata = _ref.metadata;\n _classCallCheck(this, AsYouTypeFormatter);\n this.metadata = metadata;\n this.resetFormat();\n }\n _createClass(AsYouTypeFormatter, [{\n key: \"resetFormat\",\n value: function resetFormat() {\n this.chosenFormat = undefined;\n this.template = undefined;\n this.nationalNumberTemplate = undefined;\n this.populatedNationalNumberTemplate = undefined;\n this.populatedNationalNumberTemplatePosition = -1;\n }\n }, {\n key: \"reset\",\n value: function reset(numberingPlan, state) {\n this.resetFormat();\n if (numberingPlan) {\n this.isNANP = numberingPlan.callingCode() === '1';\n this.matchingFormats = numberingPlan.formats();\n if (state.nationalSignificantNumber) {\n this.narrowDownMatchingFormats(state);\n }\n } else {\n this.isNANP = undefined;\n this.matchingFormats = [];\n }\n }\n /**\r\n * Formats an updated phone number.\r\n * @param {string} nextDigits — Additional phone number digits.\r\n * @param {object} state — `AsYouType` state.\r\n * @return {[string]} Returns undefined if the updated phone number can't be formatted using any of the available formats.\r\n */\n }, {\n key: \"format\",\n value: function format(nextDigits, state) {\n var _this = this;\n\n // See if the phone number digits can be formatted as a complete phone number.\n // If not, use the results from `formatNationalNumberWithNextDigits()`,\n // which formats based on the chosen formatting pattern.\n //\n // Attempting to format complete phone number first is how it's done\n // in Google's `libphonenumber`, so this library just follows it.\n // Google's `libphonenumber` code doesn't explain in detail why does it\n // attempt to format digits as a complete phone number\n // instead of just going with a previoulsy (or newly) chosen `format`:\n //\n // \"Checks to see if there is an exact pattern match for these digits.\n // If so, we should use this instead of any other formatting template\n // whose leadingDigitsPattern also matches the input.\"\n //\n if (canFormatCompleteNumber(state.nationalSignificantNumber, this.metadata)) {\n for (var _iterator = _createForOfIteratorHelperLoose(this.matchingFormats), _step; !(_step = _iterator()).done;) {\n var format = _step.value;\n var formattedCompleteNumber = formatCompleteNumber(state, format, {\n metadata: this.metadata,\n shouldTryNationalPrefixFormattingRule: function shouldTryNationalPrefixFormattingRule(format) {\n return _this.shouldTryNationalPrefixFormattingRule(format, {\n international: state.international,\n nationalPrefix: state.nationalPrefix\n });\n },\n getSeparatorAfterNationalPrefix: function getSeparatorAfterNationalPrefix(format) {\n return _this.getSeparatorAfterNationalPrefix(format);\n }\n });\n if (formattedCompleteNumber) {\n this.resetFormat();\n this.chosenFormat = format;\n this.setNationalNumberTemplate(formattedCompleteNumber.replace(/\\d/g, DIGIT_PLACEHOLDER), state);\n this.populatedNationalNumberTemplate = formattedCompleteNumber; // With a new formatting template, the matched position\n // using the old template needs to be reset.\n\n this.populatedNationalNumberTemplatePosition = this.template.lastIndexOf(DIGIT_PLACEHOLDER);\n return formattedCompleteNumber;\n }\n }\n } // Format the digits as a partial (incomplete) phone number\n // using the previously chosen formatting pattern (or a newly chosen one).\n\n return this.formatNationalNumberWithNextDigits(nextDigits, state);\n } // Formats the next phone number digits.\n }, {\n key: \"formatNationalNumberWithNextDigits\",\n value: function formatNationalNumberWithNextDigits(nextDigits, state) {\n var previouslyChosenFormat = this.chosenFormat; // Choose a format from the list of matching ones.\n\n var newlyChosenFormat = this.chooseFormat(state);\n if (newlyChosenFormat) {\n if (newlyChosenFormat === previouslyChosenFormat) {\n // If it can format the next (current) digits\n // using the previously chosen phone number format\n // then return the updated formatted number.\n return this.formatNextNationalNumberDigits(nextDigits);\n } else {\n // If a more appropriate phone number format\n // has been chosen for these \"leading digits\",\n // then re-format the national phone number part\n // using the newly selected format.\n return this.formatNextNationalNumberDigits(state.getNationalDigits());\n }\n }\n }\n }, {\n key: \"narrowDownMatchingFormats\",\n value: function narrowDownMatchingFormats(_ref2) {\n var _this2 = this;\n var nationalSignificantNumber = _ref2.nationalSignificantNumber,\n nationalPrefix = _ref2.nationalPrefix,\n international = _ref2.international;\n var leadingDigits = nationalSignificantNumber; // \"leading digits\" pattern list starts with a\n // \"leading digits\" pattern fitting a maximum of 3 leading digits.\n // So, after a user inputs 3 digits of a national (significant) phone number\n // this national (significant) number can already be formatted.\n // The next \"leading digits\" pattern is for 4 leading digits max,\n // and the \"leading digits\" pattern after it is for 5 leading digits max, etc.\n // This implementation is different from Google's\n // in that it searches for a fitting format\n // even if the user has entered less than\n // `MIN_LEADING_DIGITS_LENGTH` digits of a national number.\n // Because some leading digit patterns already match for a single first digit.\n\n var leadingDigitsPatternIndex = leadingDigits.length - MIN_LEADING_DIGITS_LENGTH;\n if (leadingDigitsPatternIndex < 0) {\n leadingDigitsPatternIndex = 0;\n }\n this.matchingFormats = this.matchingFormats.filter(function (format) {\n return _this2.formatSuits(format, international, nationalPrefix) && _this2.formatMatches(format, leadingDigits, leadingDigitsPatternIndex);\n }); // If there was a phone number format chosen\n // and it no longer holds given the new leading digits then reset it.\n // The test for this `if` condition is marked as:\n // \"Reset a chosen format when it no longer holds given the new leading digits\".\n // To construct a valid test case for this one can find a country\n // in `PhoneNumberMetadata.xml` yielding one format for 3 ``\n // and yielding another format for 4 `` (Australia in this case).\n\n if (this.chosenFormat && this.matchingFormats.indexOf(this.chosenFormat) === -1) {\n this.resetFormat();\n }\n }\n }, {\n key: \"formatSuits\",\n value: function formatSuits(format, international, nationalPrefix) {\n // When a prefix before a national (significant) number is\n // simply a national prefix, then it's parsed as `this.nationalPrefix`.\n // In more complex cases, a prefix before national (significant) number\n // could include a national prefix as well as some \"capturing groups\",\n // and in that case there's no info whether a national prefix has been parsed.\n // If national prefix is not used when formatting a phone number\n // using this format, but a national prefix has been entered by the user,\n // and was extracted, then discard such phone number format.\n // In Google's \"AsYouType\" formatter code, the equivalent would be this part:\n // https://github.com/google/libphonenumber/blob/0a45cfd96e71cad8edb0e162a70fcc8bd9728933/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L175-L184\n if (nationalPrefix && !format.usesNationalPrefix() &&\n // !format.domesticCarrierCodeFormattingRule() &&\n !format.nationalPrefixIsOptionalWhenFormattingInNationalFormat()) {\n return false;\n } // If national prefix is mandatory for this phone number format\n // and there're no guarantees that a national prefix is present in user input\n // then discard this phone number format as not suitable.\n // In Google's \"AsYouType\" formatter code, the equivalent would be this part:\n // https://github.com/google/libphonenumber/blob/0a45cfd96e71cad8edb0e162a70fcc8bd9728933/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L185-L193\n\n if (!international && !nationalPrefix && format.nationalPrefixIsMandatoryWhenFormattingInNationalFormat()) {\n return false;\n }\n return true;\n }\n }, {\n key: \"formatMatches\",\n value: function formatMatches(format, leadingDigits, leadingDigitsPatternIndex) {\n var leadingDigitsPatternsCount = format.leadingDigitsPatterns().length; // If this format is not restricted to a certain\n // leading digits pattern then it fits.\n // The test case could be found by searching for \"leadingDigitsPatternsCount === 0\".\n\n if (leadingDigitsPatternsCount === 0) {\n return true;\n } // Start narrowing down the list of possible formats based on the leading digits.\n // (only previously matched formats take part in the narrowing down process)\n // `leading_digits_patterns` start with 3 digits min\n // and then go up from there one digit at a time.\n\n leadingDigitsPatternIndex = Math.min(leadingDigitsPatternIndex, leadingDigitsPatternsCount - 1);\n var leadingDigitsPattern = format.leadingDigitsPatterns()[leadingDigitsPatternIndex]; // Google imposes a requirement on the leading digits\n // to be minimum 3 digits long in order to be eligible\n // for checking those with a leading digits pattern.\n //\n // Since `leading_digits_patterns` start with 3 digits min,\n // Google's original `libphonenumber` library only starts\n // excluding any non-matching formats only when the\n // national number entered so far is at least 3 digits long,\n // otherwise format matching would give false negatives.\n //\n // For example, when the digits entered so far are `2`\n // and the leading digits pattern is `21` –\n // it's quite obvious in this case that the format could be the one\n // but due to the absence of further digits it would give false negative.\n //\n // Also, `leading_digits_patterns` doesn't always correspond to a single\n // digits count. For example, `60|8` pattern would already match `8`\n // but the `60` part would require having at least two leading digits,\n // so the whole pattern would require inputting two digits first in order to\n // decide on whether it matches the input, even when the input is \"80\".\n //\n // This library — `libphonenumber-js` — allows filtering by `leading_digits_patterns`\n // even when there's only 1 or 2 digits of the national (significant) number.\n // To do that, it uses a non-strict pattern matcher written specifically for that.\n //\n\n if (leadingDigits.length < MIN_LEADING_DIGITS_LENGTH) {\n // Before leading digits < 3 matching was implemented:\n // return true\n //\n // After leading digits < 3 matching was implemented:\n try {\n return new PatternMatcher(leadingDigitsPattern).match(leadingDigits, {\n allowOverflow: true\n }) !== undefined;\n } catch (error) /* istanbul ignore next */\n {\n // There's a slight possibility that there could be some undiscovered bug\n // in the pattern matcher code. Since the \"leading digits < 3 matching\"\n // feature is not \"essential\" for operation, it can fall back to the old way\n // in case of any issues rather than halting the application's execution.\n console.error(error);\n return true;\n }\n } // If at least `MIN_LEADING_DIGITS_LENGTH` digits of a national number are\n // available then use the usual regular expression matching.\n //\n // The whole pattern is wrapped in round brackets (`()`) because\n // the pattern can use \"or\" operator (`|`) at the top level of the pattern.\n //\n\n return new RegExp(\"^(\".concat(leadingDigitsPattern, \")\")).test(leadingDigits);\n }\n }, {\n key: \"getFormatFormat\",\n value: function getFormatFormat(format, international) {\n return international ? format.internationalFormat() : format.format();\n }\n }, {\n key: \"chooseFormat\",\n value: function chooseFormat(state) {\n var _this3 = this;\n var _loop = function _loop() {\n var format = _step2.value;\n\n // If this format is currently being used\n // and is still suitable, then stick to it.\n if (_this3.chosenFormat === format) {\n return \"break\";\n } // Sometimes, a formatting rule inserts additional digits in a phone number,\n // and \"as you type\" formatter can't do that: it should only use the digits\n // that the user has input.\n //\n // For example, in Argentina, there's a format for mobile phone numbers:\n //\n // {\n // \"pattern\": \"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\n // \"leading_digits_patterns\": [\"91\"],\n // \"national_prefix_formatting_rule\": \"0$1\",\n // \"format\": \"$2 15-$3-$4\",\n // \"international_format\": \"$1 $2 $3-$4\"\n // }\n //\n // In that format, `international_format` is used instead of `format`\n // because `format` inserts `15` in the formatted number,\n // and `AsYouType` formatter should only use the digits\n // the user has actually input, without adding any extra digits.\n // In this case, it wouldn't make a difference, because the `15`\n // is first stripped when applying `national_prefix_for_parsing`\n // and then re-added when using `format`, so in reality it doesn't\n // add any new digits to the number, but to detect that, the code\n // would have to be more complex: it would have to try formatting\n // the digits using the format and then see if any digits have\n // actually been added or removed, and then, every time a new digit\n // is input, it should re-check whether the chosen format doesn't\n // alter the digits.\n //\n // Google's code doesn't go that far, and so does this library:\n // it simply requires that a `format` doesn't add any additonal\n // digits to user's input.\n //\n // Also, people in general should move from inputting phone numbers\n // in national format (possibly with national prefixes)\n // and use international phone number format instead:\n // it's a logical thing in the modern age of mobile phones,\n // globalization and the internet.\n //\n\n /* istanbul ignore if */\n\n if (!NON_ALTERING_FORMAT_REG_EXP.test(_this3.getFormatFormat(format, state.international))) {\n return \"continue\";\n }\n if (!_this3.createTemplateForFormat(format, state)) {\n // Remove the format if it can't generate a template.\n _this3.matchingFormats = _this3.matchingFormats.filter(function (_) {\n return _ !== format;\n });\n return \"continue\";\n }\n _this3.chosenFormat = format;\n return \"break\";\n };\n\n // When there are multiple available formats, the formatter uses the first\n // format where a formatting template could be created.\n //\n // For some weird reason, `istanbul` says \"else path not taken\"\n // for the `for of` line below. Supposedly that means that\n // the loop doesn't ever go over the last element in the list.\n // That's true because there always is `this.chosenFormat`\n // when `this.matchingFormats` is non-empty.\n // And, for some weird reason, it doesn't think that the case\n // with empty `this.matchingFormats` qualifies for a valid \"else\" path.\n // So simply muting this `istanbul` warning.\n // It doesn't skip the contents of the `for of` loop,\n // it just skips the `for of` line.\n //\n\n /* istanbul ignore next */\n for (var _iterator2 = _createForOfIteratorHelperLoose(this.matchingFormats.slice()), _step2; !(_step2 = _iterator2()).done;) {\n var _ret = _loop();\n if (_ret === \"break\") break;\n if (_ret === \"continue\") continue;\n }\n if (!this.chosenFormat) {\n // No format matches the national (significant) phone number.\n this.resetFormat();\n }\n return this.chosenFormat;\n }\n }, {\n key: \"createTemplateForFormat\",\n value: function createTemplateForFormat(format, state) {\n // The formatter doesn't format numbers when numberPattern contains '|', e.g.\n // (20|3)\\d{4}. In those cases we quickly return.\n // (Though there's no such format in current metadata)\n\n /* istanbul ignore if */\n if (SUPPORT_LEGACY_FORMATTING_PATTERNS && format.pattern().indexOf('|') >= 0) {\n return;\n } // Get formatting template for this phone number format\n\n var template = this.getTemplateForFormat(format, state); // If the national number entered is too long\n // for any phone number format, then abort.\n\n if (template) {\n this.setNationalNumberTemplate(template, state);\n return true;\n }\n }\n }, {\n key: \"getSeparatorAfterNationalPrefix\",\n value: function getSeparatorAfterNationalPrefix(format) {\n // `US` metadata doesn't have a `national_prefix_formatting_rule`,\n // so the `if` condition below doesn't apply to `US`,\n // but in reality there shoudl be a separator\n // between a national prefix and a national (significant) number.\n // So `US` national prefix separator is a \"special\" \"hardcoded\" case.\n if (this.isNANP) {\n return ' ';\n } // If a `format` has a `national_prefix_formatting_rule`\n // and that rule has a separator after a national prefix,\n // then it means that there should be a separator\n // between a national prefix and a national (significant) number.\n\n if (format && format.nationalPrefixFormattingRule() && NATIONAL_PREFIX_SEPARATORS_PATTERN.test(format.nationalPrefixFormattingRule())) {\n return ' ';\n } // At this point, there seems to be no clear evidence that\n // there should be a separator between a national prefix\n // and a national (significant) number. So don't insert one.\n\n return '';\n }\n }, {\n key: \"getInternationalPrefixBeforeCountryCallingCode\",\n value: function getInternationalPrefixBeforeCountryCallingCode(_ref3, options) {\n var IDDPrefix = _ref3.IDDPrefix,\n missingPlus = _ref3.missingPlus;\n if (IDDPrefix) {\n return options && options.spacing === false ? IDDPrefix : IDDPrefix + ' ';\n }\n if (missingPlus) {\n return '';\n }\n return '+';\n }\n }, {\n key: \"getTemplate\",\n value: function getTemplate(state) {\n if (!this.template) {\n return;\n } // `this.template` holds the template for a \"complete\" phone number.\n // The currently entered phone number is most likely not \"complete\",\n // so trim all non-populated digits.\n\n var index = -1;\n var i = 0;\n var internationalPrefix = state.international ? this.getInternationalPrefixBeforeCountryCallingCode(state, {\n spacing: false\n }) : '';\n while (i < internationalPrefix.length + state.getDigitsWithoutInternationalPrefix().length) {\n index = this.template.indexOf(DIGIT_PLACEHOLDER, index + 1);\n i++;\n }\n return cutAndStripNonPairedParens(this.template, index + 1);\n }\n }, {\n key: \"setNationalNumberTemplate\",\n value: function setNationalNumberTemplate(template, state) {\n this.nationalNumberTemplate = template;\n this.populatedNationalNumberTemplate = template; // With a new formatting template, the matched position\n // using the old template needs to be reset.\n\n this.populatedNationalNumberTemplatePosition = -1; // For convenience, the public `.template` property\n // contains the whole international number\n // if the phone number being input is international:\n // 'x' for the '+' sign, 'x'es for the country phone code,\n // a spacebar and then the template for the formatted national number.\n\n if (state.international) {\n this.template = this.getInternationalPrefixBeforeCountryCallingCode(state).replace(/[\\d\\+]/g, DIGIT_PLACEHOLDER) + repeat(DIGIT_PLACEHOLDER, state.callingCode.length) + ' ' + template;\n } else {\n this.template = template;\n }\n }\n /**\r\n * Generates formatting template for a national phone number,\r\n * optionally containing a national prefix, for a format.\r\n * @param {Format} format\r\n * @param {string} nationalPrefix\r\n * @return {string}\r\n */\n }, {\n key: \"getTemplateForFormat\",\n value: function getTemplateForFormat(format, _ref4) {\n var nationalSignificantNumber = _ref4.nationalSignificantNumber,\n international = _ref4.international,\n nationalPrefix = _ref4.nationalPrefix,\n complexPrefixBeforeNationalSignificantNumber = _ref4.complexPrefixBeforeNationalSignificantNumber;\n var pattern = format.pattern();\n /* istanbul ignore else */\n\n if (SUPPORT_LEGACY_FORMATTING_PATTERNS) {\n pattern = pattern // Replace anything in the form of [..] with \\d\n .replace(CREATE_CHARACTER_CLASS_PATTERN(), '\\\\d') // Replace any standalone digit (not the one in `{}`) with \\d\n .replace(CREATE_STANDALONE_DIGIT_PATTERN(), '\\\\d');\n } // Generate a dummy national number (consisting of `9`s)\n // that fits this format's `pattern`.\n //\n // This match will always succeed,\n // because the \"longest dummy phone number\"\n // has enough length to accomodate any possible\n // national phone number format pattern.\n //\n\n var digits = LONGEST_DUMMY_PHONE_NUMBER.match(pattern)[0]; // If the national number entered is too long\n // for any phone number format, then abort.\n\n if (nationalSignificantNumber.length > digits.length) {\n return;\n } // Get a formatting template which can be used to efficiently format\n // a partial number where digits are added one by one.\n // Below `strictPattern` is used for the\n // regular expression (with `^` and `$`).\n // This wasn't originally in Google's `libphonenumber`\n // and I guess they don't really need it\n // because they're not using \"templates\" to format phone numbers\n // but I added `strictPattern` after encountering\n // South Korean phone number formatting bug.\n //\n // Non-strict regular expression bug demonstration:\n //\n // this.nationalSignificantNumber : `111111111` (9 digits)\n //\n // pattern : (\\d{2})(\\d{3,4})(\\d{4})\n // format : `$1 $2 $3`\n // digits : `9999999999` (10 digits)\n //\n // '9999999999'.replace(new RegExp(/(\\d{2})(\\d{3,4})(\\d{4})/g), '$1 $2 $3') = \"99 9999 9999\"\n //\n // template : xx xxxx xxxx\n //\n // But the correct template in this case is `xx xxx xxxx`.\n // The template was generated incorrectly because of the\n // `{3,4}` variability in the `pattern`.\n //\n // The fix is, if `this.nationalSignificantNumber` has already sufficient length\n // to satisfy the `pattern` completely then `this.nationalSignificantNumber`\n // is used instead of `digits`.\n\n var strictPattern = new RegExp('^' + pattern + '$');\n var nationalNumberDummyDigits = nationalSignificantNumber.replace(/\\d/g, DUMMY_DIGIT); // If `this.nationalSignificantNumber` has already sufficient length\n // to satisfy the `pattern` completely then use it\n // instead of `digits`.\n\n if (strictPattern.test(nationalNumberDummyDigits)) {\n digits = nationalNumberDummyDigits;\n }\n var numberFormat = this.getFormatFormat(format, international);\n var nationalPrefixIncludedInTemplate; // If a user did input a national prefix (and that's guaranteed),\n // and if a `format` does have a national prefix formatting rule,\n // then see if that national prefix formatting rule\n // prepends exactly the same national prefix the user has input.\n // If that's the case, then use the `format` with the national prefix formatting rule.\n // Otherwise, use the `format` without the national prefix formatting rule,\n // and prepend a national prefix manually to it.\n\n if (this.shouldTryNationalPrefixFormattingRule(format, {\n international: international,\n nationalPrefix: nationalPrefix\n })) {\n var numberFormatWithNationalPrefix = numberFormat.replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule()); // If `national_prefix_formatting_rule` of a `format` simply prepends\n // national prefix at the start of a national (significant) number,\n // then such formatting can be used with `AsYouType` formatter.\n // There seems to be no `else` case: everywhere in metadata,\n // national prefix formatting rule is national prefix + $1,\n // or `($1)`, in which case such format isn't even considered\n // when the user has input a national prefix.\n\n /* istanbul ignore else */\n\n if (parseDigits(format.nationalPrefixFormattingRule()) === (nationalPrefix || '') + parseDigits('$1')) {\n numberFormat = numberFormatWithNationalPrefix;\n nationalPrefixIncludedInTemplate = true; // Replace all digits of the national prefix in the formatting template\n // with `DIGIT_PLACEHOLDER`s.\n\n if (nationalPrefix) {\n var i = nationalPrefix.length;\n while (i > 0) {\n numberFormat = numberFormat.replace(/\\d/, DIGIT_PLACEHOLDER);\n i--;\n }\n }\n }\n } // Generate formatting template for this phone number format.\n\n var template = digits // Format the dummy phone number according to the format.\n .replace(new RegExp(pattern), numberFormat) // Replace each dummy digit with a DIGIT_PLACEHOLDER.\n .replace(new RegExp(DUMMY_DIGIT, 'g'), DIGIT_PLACEHOLDER); // If a prefix of a national (significant) number is not as simple\n // as just a basic national prefix, then just prepend such prefix\n // before the national (significant) number, optionally spacing\n // the two with a whitespace.\n\n if (!nationalPrefixIncludedInTemplate) {\n if (complexPrefixBeforeNationalSignificantNumber) {\n // Prepend the prefix to the template manually.\n template = repeat(DIGIT_PLACEHOLDER, complexPrefixBeforeNationalSignificantNumber.length) + ' ' + template;\n } else if (nationalPrefix) {\n // Prepend national prefix to the template manually.\n template = repeat(DIGIT_PLACEHOLDER, nationalPrefix.length) + this.getSeparatorAfterNationalPrefix(format) + template;\n }\n }\n if (international) {\n template = applyInternationalSeparatorStyle(template);\n }\n return template;\n }\n }, {\n key: \"formatNextNationalNumberDigits\",\n value: function formatNextNationalNumberDigits(digits) {\n var result = populateTemplateWithDigits(this.populatedNationalNumberTemplate, this.populatedNationalNumberTemplatePosition, digits);\n if (!result) {\n // Reset the format.\n this.resetFormat();\n return;\n }\n this.populatedNationalNumberTemplate = result[0];\n this.populatedNationalNumberTemplatePosition = result[1]; // Return the formatted phone number so far.\n\n return cutAndStripNonPairedParens(this.populatedNationalNumberTemplate, this.populatedNationalNumberTemplatePosition + 1); // The old way which was good for `input-format` but is not so good\n // for `react-phone-number-input`'s default input (`InputBasic`).\n // return closeNonPairedParens(this.populatedNationalNumberTemplate, this.populatedNationalNumberTemplatePosition + 1)\n // \t.replace(new RegExp(DIGIT_PLACEHOLDER, 'g'), ' ')\n }\n }, {\n key: \"shouldTryNationalPrefixFormattingRule\",\n value: function shouldTryNationalPrefixFormattingRule(format, _ref5) {\n var international = _ref5.international,\n nationalPrefix = _ref5.nationalPrefix;\n if (format.nationalPrefixFormattingRule()) {\n // In some countries, `national_prefix_formatting_rule` is `($1)`,\n // so it applies even if the user hasn't input a national prefix.\n // `format.usesNationalPrefix()` detects such cases.\n var usesNationalPrefix = format.usesNationalPrefix();\n if (usesNationalPrefix && nationalPrefix || !usesNationalPrefix && !international) {\n return true;\n }\n }\n }\n }]);\n return AsYouTypeFormatter;\n}();\nexport { AsYouTypeFormatter as default };","function _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _s, _e;\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nimport _extractCountryCallingCode from './helpers/extractCountryCallingCode.js';\nimport extractCountryCallingCodeFromInternationalNumberWithoutPlusSign from './helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js';\nimport extractNationalNumberFromPossiblyIncompleteNumber from './helpers/extractNationalNumberFromPossiblyIncompleteNumber.js';\nimport stripIddPrefix from './helpers/stripIddPrefix.js';\nimport parseDigits from './helpers/parseDigits.js';\nimport { VALID_DIGITS, VALID_PUNCTUATION, PLUS_CHARS } from './constants.js';\nvar VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART = '[' + VALID_PUNCTUATION + VALID_DIGITS + ']+';\nvar VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART_PATTERN = new RegExp('^' + VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART + '$', 'i');\nvar VALID_FORMATTED_PHONE_NUMBER_PART = '(?:' + '[' + PLUS_CHARS + ']' + '[' + VALID_PUNCTUATION + VALID_DIGITS + ']*' + '|' + '[' + VALID_PUNCTUATION + VALID_DIGITS + ']+' + ')';\nvar AFTER_PHONE_NUMBER_DIGITS_END_PATTERN = new RegExp('[^' + VALID_PUNCTUATION + VALID_DIGITS + ']+' + '.*' + '$'); // Tests whether `national_prefix_for_parsing` could match\n// different national prefixes.\n// Matches anything that's not a digit or a square bracket.\n\nvar COMPLEX_NATIONAL_PREFIX = /[^\\d\\[\\]]/;\nvar AsYouTypeParser = /*#__PURE__*/function () {\n function AsYouTypeParser(_ref) {\n var defaultCountry = _ref.defaultCountry,\n defaultCallingCode = _ref.defaultCallingCode,\n metadata = _ref.metadata,\n onNationalSignificantNumberChange = _ref.onNationalSignificantNumberChange;\n _classCallCheck(this, AsYouTypeParser);\n this.defaultCountry = defaultCountry;\n this.defaultCallingCode = defaultCallingCode;\n this.metadata = metadata;\n this.onNationalSignificantNumberChange = onNationalSignificantNumberChange;\n }\n _createClass(AsYouTypeParser, [{\n key: \"input\",\n value: function input(text, state) {\n var _extractFormattedDigi = extractFormattedDigitsAndPlus(text),\n _extractFormattedDigi2 = _slicedToArray(_extractFormattedDigi, 2),\n formattedDigits = _extractFormattedDigi2[0],\n hasPlus = _extractFormattedDigi2[1];\n var digits = parseDigits(formattedDigits); // Checks for a special case: just a leading `+` has been entered.\n\n var justLeadingPlus;\n if (hasPlus) {\n if (!state.digits) {\n state.startInternationalNumber();\n if (!digits) {\n justLeadingPlus = true;\n }\n }\n }\n if (digits) {\n this.inputDigits(digits, state);\n }\n return {\n digits: digits,\n justLeadingPlus: justLeadingPlus\n };\n }\n /**\r\n * Inputs \"next\" phone number digits.\r\n * @param {string} digits\r\n * @return {string} [formattedNumber] Formatted national phone number (if it can be formatted at this stage). Returning `undefined` means \"don't format the national phone number at this stage\".\r\n */\n }, {\n key: \"inputDigits\",\n value: function inputDigits(nextDigits, state) {\n var digits = state.digits;\n var hasReceivedThreeLeadingDigits = digits.length < 3 && digits.length + nextDigits.length >= 3; // Append phone number digits.\n\n state.appendDigits(nextDigits); // Attempt to extract IDD prefix:\n // Some users input their phone number in international format,\n // but in an \"out-of-country\" dialing format instead of using the leading `+`.\n // https://github.com/catamphetamine/libphonenumber-js/issues/185\n // Detect such numbers as soon as there're at least 3 digits.\n // Google's library attempts to extract IDD prefix at 3 digits,\n // so this library just copies that behavior.\n // I guess that's because the most commot IDD prefixes are\n // `00` (Europe) and `011` (US).\n // There exist really long IDD prefixes too:\n // for example, in Australia the default IDD prefix is `0011`,\n // and it could even be as long as `14880011`.\n // An IDD prefix is extracted here, and then every time when\n // there's a new digit and the number couldn't be formatted.\n\n if (hasReceivedThreeLeadingDigits) {\n this.extractIddPrefix(state);\n }\n if (this.isWaitingForCountryCallingCode(state)) {\n if (!this.extractCountryCallingCode(state)) {\n return;\n }\n } else {\n state.appendNationalSignificantNumberDigits(nextDigits);\n } // If a phone number is being input in international format,\n // then it's not valid for it to have a national prefix.\n // Still, some people incorrectly input such numbers with a national prefix.\n // In such cases, only attempt to strip a national prefix if the number becomes too long.\n // (but that is done later, not here)\n\n if (!state.international) {\n if (!this.hasExtractedNationalSignificantNumber) {\n this.extractNationalSignificantNumber(state.getNationalDigits(), function (stateUpdate) {\n return state.update(stateUpdate);\n });\n }\n }\n }\n }, {\n key: \"isWaitingForCountryCallingCode\",\n value: function isWaitingForCountryCallingCode(_ref2) {\n var international = _ref2.international,\n callingCode = _ref2.callingCode;\n return international && !callingCode;\n } // Extracts a country calling code from a number\n // being entered in internatonal format.\n }, {\n key: \"extractCountryCallingCode\",\n value: function extractCountryCallingCode(state) {\n var _extractCountryCallin = _extractCountryCallingCode('+' + state.getDigitsWithoutInternationalPrefix(), this.defaultCountry, this.defaultCallingCode, this.metadata.metadata),\n countryCallingCode = _extractCountryCallin.countryCallingCode,\n number = _extractCountryCallin.number;\n if (countryCallingCode) {\n state.setCallingCode(countryCallingCode);\n state.update({\n nationalSignificantNumber: number\n });\n return true;\n }\n }\n }, {\n key: \"reset\",\n value: function reset(numberingPlan) {\n if (numberingPlan) {\n this.hasSelectedNumberingPlan = true;\n var nationalPrefixForParsing = numberingPlan._nationalPrefixForParsing();\n this.couldPossiblyExtractAnotherNationalSignificantNumber = nationalPrefixForParsing && COMPLEX_NATIONAL_PREFIX.test(nationalPrefixForParsing);\n } else {\n this.hasSelectedNumberingPlan = undefined;\n this.couldPossiblyExtractAnotherNationalSignificantNumber = undefined;\n }\n }\n /**\r\n * Extracts a national (significant) number from user input.\r\n * Google's library is different in that it only applies `national_prefix_for_parsing`\r\n * and doesn't apply `national_prefix_transform_rule` after that.\r\n * https://github.com/google/libphonenumber/blob/a3d70b0487875475e6ad659af404943211d26456/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L539\r\n * @return {boolean} [extracted]\r\n */\n }, {\n key: \"extractNationalSignificantNumber\",\n value: function extractNationalSignificantNumber(nationalDigits, setState) {\n if (!this.hasSelectedNumberingPlan) {\n return;\n }\n var _extractNationalNumbe = extractNationalNumberFromPossiblyIncompleteNumber(nationalDigits, this.metadata),\n nationalPrefix = _extractNationalNumbe.nationalPrefix,\n nationalNumber = _extractNationalNumbe.nationalNumber,\n carrierCode = _extractNationalNumbe.carrierCode;\n if (nationalNumber === nationalDigits) {\n return;\n }\n this.onExtractedNationalNumber(nationalPrefix, carrierCode, nationalNumber, nationalDigits, setState);\n return true;\n }\n /**\r\n * In Google's code this function is called \"attempt to extract longer NDD\".\r\n * \"Some national prefixes are a substring of others\", they say.\r\n * @return {boolean} [result] — Returns `true` if extracting a national prefix produced different results from what they were.\r\n */\n }, {\n key: \"extractAnotherNationalSignificantNumber\",\n value: function extractAnotherNationalSignificantNumber(nationalDigits, prevNationalSignificantNumber, setState) {\n if (!this.hasExtractedNationalSignificantNumber) {\n return this.extractNationalSignificantNumber(nationalDigits, setState);\n }\n if (!this.couldPossiblyExtractAnotherNationalSignificantNumber) {\n return;\n }\n var _extractNationalNumbe2 = extractNationalNumberFromPossiblyIncompleteNumber(nationalDigits, this.metadata),\n nationalPrefix = _extractNationalNumbe2.nationalPrefix,\n nationalNumber = _extractNationalNumbe2.nationalNumber,\n carrierCode = _extractNationalNumbe2.carrierCode; // If a national prefix has been extracted previously,\n // then it's always extracted as additional digits are added.\n // That's assuming `extractNationalNumberFromPossiblyIncompleteNumber()`\n // doesn't do anything different from what it currently does.\n // So, just in case, here's this check, though it doesn't occur.\n\n /* istanbul ignore if */\n\n if (nationalNumber === prevNationalSignificantNumber) {\n return;\n }\n this.onExtractedNationalNumber(nationalPrefix, carrierCode, nationalNumber, nationalDigits, setState);\n return true;\n }\n }, {\n key: \"onExtractedNationalNumber\",\n value: function onExtractedNationalNumber(nationalPrefix, carrierCode, nationalSignificantNumber, nationalDigits, setState) {\n var complexPrefixBeforeNationalSignificantNumber;\n var nationalSignificantNumberMatchesInput; // This check also works with empty `this.nationalSignificantNumber`.\n\n var nationalSignificantNumberIndex = nationalDigits.lastIndexOf(nationalSignificantNumber); // If the extracted national (significant) number is the\n // last substring of the `digits`, then it means that it hasn't been altered:\n // no digits have been removed from the national (significant) number\n // while applying `national_prefix_transform_rule`.\n // https://gitlab.com/catamphetamine/libphonenumber-js/-/blob/master/METADATA.md#national_prefix_for_parsing--national_prefix_transform_rule\n\n if (nationalSignificantNumberIndex >= 0 && nationalSignificantNumberIndex === nationalDigits.length - nationalSignificantNumber.length) {\n nationalSignificantNumberMatchesInput = true; // If a prefix of a national (significant) number is not as simple\n // as just a basic national prefix, then such prefix is stored in\n // `this.complexPrefixBeforeNationalSignificantNumber` property and will be\n // prepended \"as is\" to the national (significant) number to produce\n // a formatted result.\n\n var prefixBeforeNationalNumber = nationalDigits.slice(0, nationalSignificantNumberIndex); // `prefixBeforeNationalNumber` is always non-empty,\n // because `onExtractedNationalNumber()` isn't called\n // when a national (significant) number hasn't been actually \"extracted\":\n // when a national (significant) number is equal to the national part of `digits`,\n // then `onExtractedNationalNumber()` doesn't get called.\n\n if (prefixBeforeNationalNumber !== nationalPrefix) {\n complexPrefixBeforeNationalSignificantNumber = prefixBeforeNationalNumber;\n }\n }\n setState({\n nationalPrefix: nationalPrefix,\n carrierCode: carrierCode,\n nationalSignificantNumber: nationalSignificantNumber,\n nationalSignificantNumberMatchesInput: nationalSignificantNumberMatchesInput,\n complexPrefixBeforeNationalSignificantNumber: complexPrefixBeforeNationalSignificantNumber\n }); // `onExtractedNationalNumber()` is only called when\n // the national (significant) number actually did change.\n\n this.hasExtractedNationalSignificantNumber = true;\n this.onNationalSignificantNumberChange();\n }\n }, {\n key: \"reExtractNationalSignificantNumber\",\n value: function reExtractNationalSignificantNumber(state) {\n // Attempt to extract a national prefix.\n //\n // Some people incorrectly input national prefix\n // in an international phone number.\n // For example, some people write British phone numbers as `+44(0)...`.\n //\n // Also, in some rare cases, it is valid for a national prefix\n // to be a part of an international phone number.\n // For example, mobile phone numbers in Mexico are supposed to be\n // dialled internationally using a `1` national prefix,\n // so the national prefix will be part of an international number.\n //\n // Quote from:\n // https://www.mexperience.com/dialing-cell-phones-in-mexico/\n //\n // \"Dialing a Mexican cell phone from abroad\n // When you are calling a cell phone number in Mexico from outside Mexico,\n // it’s necessary to dial an additional “1” after Mexico’s country code\n // (which is “52”) and before the area code.\n // You also ignore the 045, and simply dial the area code and the\n // cell phone’s number.\n //\n // If you don’t add the “1”, you’ll receive a recorded announcement\n // asking you to redial using it.\n //\n // For example, if you are calling from the USA to a cell phone\n // in Mexico City, you would dial +52 – 1 – 55 – 1234 5678.\n // (Note that this is different to calling a land line in Mexico City\n // from abroad, where the number dialed would be +52 – 55 – 1234 5678)\".\n //\n // Google's demo output:\n // https://libphonenumber.appspot.com/phonenumberparser?number=%2b5215512345678&country=MX\n //\n if (this.extractAnotherNationalSignificantNumber(state.getNationalDigits(), state.nationalSignificantNumber, function (stateUpdate) {\n return state.update(stateUpdate);\n })) {\n return true;\n } // If no format matches the phone number, then it could be\n // \"a really long IDD\" (quote from a comment in Google's library).\n // An IDD prefix is first extracted when the user has entered at least 3 digits,\n // and then here — every time when there's a new digit and the number\n // couldn't be formatted.\n // For example, in Australia the default IDD prefix is `0011`,\n // and it could even be as long as `14880011`.\n //\n // Could also check `!hasReceivedThreeLeadingDigits` here\n // to filter out the case when this check duplicates the one\n // already performed when there're 3 leading digits,\n // but it's not a big deal, and in most cases there\n // will be a suitable `format` when there're 3 leading digits.\n //\n\n if (this.extractIddPrefix(state)) {\n this.extractCallingCodeAndNationalSignificantNumber(state);\n return true;\n } // Google's AsYouType formatter supports sort of an \"autocorrection\" feature\n // when it \"autocorrects\" numbers that have been input for a country\n // with that country's calling code.\n // Such \"autocorrection\" feature looks weird, but different people have been requesting it:\n // https://github.com/catamphetamine/libphonenumber-js/issues/376\n // https://github.com/catamphetamine/libphonenumber-js/issues/375\n // https://github.com/catamphetamine/libphonenumber-js/issues/316\n\n if (this.fixMissingPlus(state)) {\n this.extractCallingCodeAndNationalSignificantNumber(state);\n return true;\n }\n }\n }, {\n key: \"extractIddPrefix\",\n value: function extractIddPrefix(state) {\n // An IDD prefix can't be present in a number written with a `+`.\n // Also, don't re-extract an IDD prefix if has already been extracted.\n var international = state.international,\n IDDPrefix = state.IDDPrefix,\n digits = state.digits,\n nationalSignificantNumber = state.nationalSignificantNumber;\n if (international || IDDPrefix) {\n return;\n } // Some users input their phone number in \"out-of-country\"\n // dialing format instead of using the leading `+`.\n // https://github.com/catamphetamine/libphonenumber-js/issues/185\n // Detect such numbers.\n\n var numberWithoutIDD = stripIddPrefix(digits, this.defaultCountry, this.defaultCallingCode, this.metadata.metadata);\n if (numberWithoutIDD !== undefined && numberWithoutIDD !== digits) {\n // If an IDD prefix was stripped then convert the IDD-prefixed number\n // to international number for subsequent parsing.\n state.update({\n IDDPrefix: digits.slice(0, digits.length - numberWithoutIDD.length)\n });\n this.startInternationalNumber(state, {\n country: undefined,\n callingCode: undefined\n });\n return true;\n }\n }\n }, {\n key: \"fixMissingPlus\",\n value: function fixMissingPlus(state) {\n if (!state.international) {\n var _extractCountryCallin2 = extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(state.digits, this.defaultCountry, this.defaultCallingCode, this.metadata.metadata),\n newCallingCode = _extractCountryCallin2.countryCallingCode,\n number = _extractCountryCallin2.number;\n if (newCallingCode) {\n state.update({\n missingPlus: true\n });\n this.startInternationalNumber(state, {\n country: state.country,\n callingCode: newCallingCode\n });\n return true;\n }\n }\n }\n }, {\n key: \"startInternationalNumber\",\n value: function startInternationalNumber(state, _ref3) {\n var country = _ref3.country,\n callingCode = _ref3.callingCode;\n state.startInternationalNumber(country, callingCode); // If a national (significant) number has been extracted before, reset it.\n\n if (state.nationalSignificantNumber) {\n state.resetNationalSignificantNumber();\n this.onNationalSignificantNumberChange();\n this.hasExtractedNationalSignificantNumber = undefined;\n }\n }\n }, {\n key: \"extractCallingCodeAndNationalSignificantNumber\",\n value: function extractCallingCodeAndNationalSignificantNumber(state) {\n if (this.extractCountryCallingCode(state)) {\n // `this.extractCallingCode()` is currently called when the number\n // couldn't be formatted during the standard procedure.\n // Normally, the national prefix would be re-extracted\n // for an international number if such number couldn't be formatted,\n // but since it's already not able to be formatted,\n // there won't be yet another retry, so also extract national prefix here.\n this.extractNationalSignificantNumber(state.getNationalDigits(), function (stateUpdate) {\n return state.update(stateUpdate);\n });\n }\n }\n }]);\n return AsYouTypeParser;\n}();\n/**\r\n * Extracts formatted phone number from text (if there's any).\r\n * @param {string} text\r\n * @return {string} [formattedPhoneNumber]\r\n */\n\nexport { AsYouTypeParser as default };\nfunction extractFormattedPhoneNumber(text) {\n // Attempt to extract a possible number from the string passed in.\n var startsAt = text.search(VALID_FORMATTED_PHONE_NUMBER_PART);\n if (startsAt < 0) {\n return;\n } // Trim everything to the left of the phone number.\n\n text = text.slice(startsAt); // Trim the `+`.\n\n var hasPlus;\n if (text[0] === '+') {\n hasPlus = true;\n text = text.slice('+'.length);\n } // Trim everything to the right of the phone number.\n\n text = text.replace(AFTER_PHONE_NUMBER_DIGITS_END_PATTERN, ''); // Re-add the previously trimmed `+`.\n\n if (hasPlus) {\n text = '+' + text;\n }\n return text;\n}\n/**\r\n * Extracts formatted phone number digits (and a `+`) from text (if there're any).\r\n * @param {string} text\r\n * @return {any[]}\r\n */\n\nfunction _extractFormattedDigitsAndPlus(text) {\n // Extract a formatted phone number part from text.\n var extractedNumber = extractFormattedPhoneNumber(text) || ''; // Trim a `+`.\n\n if (extractedNumber[0] === '+') {\n return [extractedNumber.slice('+'.length), true];\n }\n return [extractedNumber];\n}\n/**\r\n * Extracts formatted phone number digits (and a `+`) from text (if there're any).\r\n * @param {string} text\r\n * @return {any[]}\r\n */\n\nexport function extractFormattedDigitsAndPlus(text) {\n var _extractFormattedDigi3 = _extractFormattedDigitsAndPlus(text),\n _extractFormattedDigi4 = _slicedToArray(_extractFormattedDigi3, 2),\n formattedDigits = _extractFormattedDigi4[0],\n hasPlus = _extractFormattedDigi4[1]; // If the extracted phone number part\n // can possibly be a part of some valid phone number\n // then parse phone number characters from a formatted phone number.\n\n if (!VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART_PATTERN.test(formattedDigits)) {\n formattedDigits = '';\n }\n return [formattedDigits, hasPlus];\n}","function _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _s, _e;\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nimport Metadata from './metadata.js';\nimport PhoneNumber from './PhoneNumber.js';\nimport AsYouTypeState from './AsYouTypeState.js';\nimport AsYouTypeFormatter, { DIGIT_PLACEHOLDER } from './AsYouTypeFormatter.js';\nimport AsYouTypeParser, { extractFormattedDigitsAndPlus } from './AsYouTypeParser.js';\nimport getCountryByCallingCode from './helpers/getCountryByCallingCode.js';\nimport getCountryByNationalNumber from './helpers/getCountryByNationalNumber.js';\nimport isObject from './helpers/isObject.js';\nvar USE_NON_GEOGRAPHIC_COUNTRY_CODE = false;\nvar AsYouType = /*#__PURE__*/function () {\n /**\r\n * @param {(string|object)?} [optionsOrDefaultCountry] - The default country used for parsing non-international phone numbers. Can also be an `options` object.\r\n * @param {Object} metadata\r\n */\n function AsYouType(optionsOrDefaultCountry, metadata) {\n _classCallCheck(this, AsYouType);\n this.metadata = new Metadata(metadata);\n var _this$getCountryAndCa = this.getCountryAndCallingCode(optionsOrDefaultCountry),\n _this$getCountryAndCa2 = _slicedToArray(_this$getCountryAndCa, 2),\n defaultCountry = _this$getCountryAndCa2[0],\n defaultCallingCode = _this$getCountryAndCa2[1]; // `this.defaultCountry` and `this.defaultCallingCode` aren't required to be in sync.\n // For example, `this.defaultCountry` could be `\"AR\"` and `this.defaultCallingCode` could be `undefined`.\n // So `this.defaultCountry` and `this.defaultCallingCode` are totally independent.\n\n this.defaultCountry = defaultCountry;\n this.defaultCallingCode = defaultCallingCode;\n this.reset();\n }\n _createClass(AsYouType, [{\n key: \"getCountryAndCallingCode\",\n value: function getCountryAndCallingCode(optionsOrDefaultCountry) {\n // Set `defaultCountry` and `defaultCallingCode` options.\n var defaultCountry;\n var defaultCallingCode; // Turns out `null` also has type \"object\". Weird.\n\n if (optionsOrDefaultCountry) {\n if (isObject(optionsOrDefaultCountry)) {\n defaultCountry = optionsOrDefaultCountry.defaultCountry;\n defaultCallingCode = optionsOrDefaultCountry.defaultCallingCode;\n } else {\n defaultCountry = optionsOrDefaultCountry;\n }\n }\n if (defaultCountry && !this.metadata.hasCountry(defaultCountry)) {\n defaultCountry = undefined;\n }\n if (defaultCallingCode) {\n /* istanbul ignore if */\n if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n if (this.metadata.isNonGeographicCallingCode(defaultCallingCode)) {\n defaultCountry = '001';\n }\n }\n }\n return [defaultCountry, defaultCallingCode];\n }\n /**\r\n * Inputs \"next\" phone number characters.\r\n * @param {string} text\r\n * @return {string} Formatted phone number characters that have been input so far.\r\n */\n }, {\n key: \"input\",\n value: function input(text) {\n var _this$parser$input = this.parser.input(text, this.state),\n digits = _this$parser$input.digits,\n justLeadingPlus = _this$parser$input.justLeadingPlus;\n if (justLeadingPlus) {\n this.formattedOutput = '+';\n } else if (digits) {\n this.determineTheCountryIfNeeded(); // Match the available formats by the currently available leading digits.\n\n if (this.state.nationalSignificantNumber) {\n this.formatter.narrowDownMatchingFormats(this.state);\n }\n var formattedNationalNumber;\n if (this.metadata.hasSelectedNumberingPlan()) {\n formattedNationalNumber = this.formatter.format(digits, this.state);\n }\n if (formattedNationalNumber === undefined) {\n // See if another national (significant) number could be re-extracted.\n if (this.parser.reExtractNationalSignificantNumber(this.state)) {\n this.determineTheCountryIfNeeded(); // If it could, then re-try formatting the new national (significant) number.\n\n var nationalDigits = this.state.getNationalDigits();\n if (nationalDigits) {\n formattedNationalNumber = this.formatter.format(nationalDigits, this.state);\n }\n }\n }\n this.formattedOutput = formattedNationalNumber ? this.getFullNumber(formattedNationalNumber) : this.getNonFormattedNumber();\n }\n return this.formattedOutput;\n }\n }, {\n key: \"reset\",\n value: function reset() {\n var _this = this;\n this.state = new AsYouTypeState({\n onCountryChange: function onCountryChange(country) {\n // Before version `1.6.0`, the official `AsYouType` formatter API\n // included the `.country` property of an `AsYouType` instance.\n // Since that property (along with the others) have been moved to\n // `this.state`, `this.country` property is emulated for compatibility\n // with the old versions.\n _this.country = country;\n },\n onCallingCodeChange: function onCallingCodeChange(callingCode, country) {\n _this.metadata.selectNumberingPlan(country, callingCode);\n _this.formatter.reset(_this.metadata.numberingPlan, _this.state);\n _this.parser.reset(_this.metadata.numberingPlan);\n }\n });\n this.formatter = new AsYouTypeFormatter({\n state: this.state,\n metadata: this.metadata\n });\n this.parser = new AsYouTypeParser({\n defaultCountry: this.defaultCountry,\n defaultCallingCode: this.defaultCallingCode,\n metadata: this.metadata,\n state: this.state,\n onNationalSignificantNumberChange: function onNationalSignificantNumberChange() {\n _this.determineTheCountryIfNeeded();\n _this.formatter.reset(_this.metadata.numberingPlan, _this.state);\n }\n });\n this.state.reset({\n country: this.defaultCountry,\n callingCode: this.defaultCallingCode\n });\n this.formattedOutput = '';\n return this;\n }\n /**\r\n * Returns `true` if the phone number is being input in international format.\r\n * In other words, returns `true` if and only if the parsed phone number starts with a `\"+\"`.\r\n * @return {boolean}\r\n */\n }, {\n key: \"isInternational\",\n value: function isInternational() {\n return this.state.international;\n }\n /**\r\n * Returns the \"calling code\" part of the phone number when it's being input\r\n * in an international format.\r\n * If no valid calling code has been entered so far, returns `undefined`.\r\n * @return {string} [callingCode]\r\n */\n }, {\n key: \"getCallingCode\",\n value: function getCallingCode() {\n // If the number is being input in national format and some \"default calling code\"\n // has been passed to `AsYouType` constructor, then `this.state.callingCode`\n // is equal to that \"default calling code\".\n //\n // If the number is being input in national format and no \"default calling code\"\n // has been passed to `AsYouType` constructor, then returns `undefined`,\n // even if a \"default country\" has been passed to `AsYouType` constructor.\n //\n if (this.isInternational()) {\n return this.state.callingCode;\n }\n } // A legacy alias.\n }, {\n key: \"getCountryCallingCode\",\n value: function getCountryCallingCode() {\n return this.getCallingCode();\n }\n /**\r\n * Returns a two-letter country code of the phone number.\r\n * Returns `undefined` for \"non-geographic\" phone numbering plans.\r\n * Returns `undefined` if no phone number has been input yet.\r\n * @return {string} [country]\r\n */\n }, {\n key: \"getCountry\",\n value: function getCountry() {\n var digits = this.state.digits; // Return `undefined` if no digits have been input yet.\n\n if (digits) {\n return this._getCountry();\n }\n }\n /**\r\n * Returns a two-letter country code of the phone number.\r\n * Returns `undefined` for \"non-geographic\" phone numbering plans.\r\n * @return {string} [country]\r\n */\n }, {\n key: \"_getCountry\",\n value: function _getCountry() {\n var country = this.state.country;\n /* istanbul ignore if */\n\n if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n // `AsYouType.getCountry()` returns `undefined`\n // for \"non-geographic\" phone numbering plans.\n if (country === '001') {\n return;\n }\n }\n return country;\n }\n }, {\n key: \"determineTheCountryIfNeeded\",\n value: function determineTheCountryIfNeeded() {\n // Suppose a user enters a phone number in international format,\n // and there're several countries corresponding to that country calling code,\n // and a country has been derived from the number, and then\n // a user enters one more digit and the number is no longer\n // valid for the derived country, so the country should be re-derived\n // on every new digit in those cases.\n //\n // If the phone number is being input in national format,\n // then it could be a case when `defaultCountry` wasn't specified\n // when creating `AsYouType` instance, and just `defaultCallingCode` was specified,\n // and that \"calling code\" could correspond to a \"non-geographic entity\",\n // or there could be several countries corresponding to that country calling code.\n // In those cases, `this.country` is `undefined` and should be derived\n // from the number. Again, if country calling code is ambiguous, then\n // `this.country` should be re-derived with each new digit.\n //\n if (!this.state.country || this.isCountryCallingCodeAmbiguous()) {\n this.determineTheCountry();\n }\n } // Prepends `+CountryCode ` in case of an international phone number\n }, {\n key: \"getFullNumber\",\n value: function getFullNumber(formattedNationalNumber) {\n var _this2 = this;\n if (this.isInternational()) {\n var prefix = function prefix(text) {\n return _this2.formatter.getInternationalPrefixBeforeCountryCallingCode(_this2.state, {\n spacing: text ? true : false\n }) + text;\n };\n var callingCode = this.state.callingCode;\n if (!callingCode) {\n return prefix(\"\".concat(this.state.getDigitsWithoutInternationalPrefix()));\n }\n if (!formattedNationalNumber) {\n return prefix(callingCode);\n }\n return prefix(\"\".concat(callingCode, \" \").concat(formattedNationalNumber));\n }\n return formattedNationalNumber;\n }\n }, {\n key: \"getNonFormattedNationalNumberWithPrefix\",\n value: function getNonFormattedNationalNumberWithPrefix() {\n var _this$state = this.state,\n nationalSignificantNumber = _this$state.nationalSignificantNumber,\n complexPrefixBeforeNationalSignificantNumber = _this$state.complexPrefixBeforeNationalSignificantNumber,\n nationalPrefix = _this$state.nationalPrefix;\n var number = nationalSignificantNumber;\n var prefix = complexPrefixBeforeNationalSignificantNumber || nationalPrefix;\n if (prefix) {\n number = prefix + number;\n }\n return number;\n }\n }, {\n key: \"getNonFormattedNumber\",\n value: function getNonFormattedNumber() {\n var nationalSignificantNumberMatchesInput = this.state.nationalSignificantNumberMatchesInput;\n return this.getFullNumber(nationalSignificantNumberMatchesInput ? this.getNonFormattedNationalNumberWithPrefix() : this.state.getNationalDigits());\n }\n }, {\n key: \"getNonFormattedTemplate\",\n value: function getNonFormattedTemplate() {\n var number = this.getNonFormattedNumber();\n if (number) {\n return number.replace(/[\\+\\d]/g, DIGIT_PLACEHOLDER);\n }\n }\n }, {\n key: \"isCountryCallingCodeAmbiguous\",\n value: function isCountryCallingCodeAmbiguous() {\n var callingCode = this.state.callingCode;\n var countryCodes = this.metadata.getCountryCodesForCallingCode(callingCode);\n return countryCodes && countryCodes.length > 1;\n } // Determines the country of the phone number\n // entered so far based on the country phone code\n // and the national phone number.\n }, {\n key: \"determineTheCountry\",\n value: function determineTheCountry() {\n this.state.setCountry(getCountryByCallingCode(this.isInternational() ? this.state.callingCode : this.defaultCallingCode, {\n nationalNumber: this.state.nationalSignificantNumber,\n defaultCountry: this.defaultCountry,\n metadata: this.metadata\n }));\n }\n /**\r\n * Returns a E.164 phone number value for the user's input.\r\n *\r\n * For example, for country `\"US\"` and input `\"(222) 333-4444\"`\r\n * it will return `\"+12223334444\"`.\r\n *\r\n * For international phone number input, it will also auto-correct\r\n * some minor errors such as using a national prefix when writing\r\n * an international phone number. For example, if the user inputs\r\n * `\"+44 0 7400 000000\"` then it will return an auto-corrected\r\n * `\"+447400000000\"` phone number value.\r\n *\r\n * Will return `undefined` if no digits have been input,\r\n * or when inputting a phone number in national format and no\r\n * default country or default \"country calling code\" have been set.\r\n *\r\n * @return {string} [value]\r\n */\n }, {\n key: \"getNumberValue\",\n value: function getNumberValue() {\n var _this$state2 = this.state,\n digits = _this$state2.digits,\n callingCode = _this$state2.callingCode,\n country = _this$state2.country,\n nationalSignificantNumber = _this$state2.nationalSignificantNumber; // Will return `undefined` if no digits have been input.\n\n if (!digits) {\n return;\n }\n if (this.isInternational()) {\n if (callingCode) {\n return '+' + callingCode + nationalSignificantNumber;\n } else {\n return '+' + digits;\n }\n } else {\n if (country || callingCode) {\n var callingCode_ = country ? this.metadata.countryCallingCode() : callingCode;\n return '+' + callingCode_ + nationalSignificantNumber;\n }\n }\n }\n /**\r\n * Returns an instance of `PhoneNumber` class.\r\n * Will return `undefined` if no national (significant) number\r\n * digits have been entered so far, or if no `defaultCountry` has been\r\n * set and the user enters a phone number not in international format.\r\n */\n }, {\n key: \"getNumber\",\n value: function getNumber() {\n var _this$state3 = this.state,\n nationalSignificantNumber = _this$state3.nationalSignificantNumber,\n carrierCode = _this$state3.carrierCode,\n callingCode = _this$state3.callingCode; // `this._getCountry()` is basically same as `this.state.country`\n // with the only change that it return `undefined` in case of a\n // \"non-geographic\" numbering plan instead of `\"001\"` \"internal use\" value.\n\n var country = this._getCountry();\n if (!nationalSignificantNumber) {\n return;\n } // `state.country` and `state.callingCode` aren't required to be in sync.\n // For example, `country` could be `\"AR\"` and `callingCode` could be `undefined`.\n // So `country` and `callingCode` are totally independent.\n\n if (!country && !callingCode) {\n return;\n } // By default, if `defaultCountry` parameter was passed when\n // creating `AsYouType` instance, `state.country` is gonna be\n // that `defaultCountry`, which doesn't entirely conform with\n // `parsePhoneNumber()`'s behavior where it attempts to determine\n // the country more precisely in cases when multiple countries\n // could correspond to the same `countryCallingCode`.\n // https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/103#note_1417192969\n //\n // Because `AsYouType.getNumber()` method is supposed to be a 1:1\n // equivalent for `parsePhoneNumber(AsYouType.getNumberValue())`,\n // then it should also behave accordingly in cases of `country` ambiguity.\n // That's how users of this library would expect it to behave anyway.\n //\n\n if (country) {\n if (country === this.defaultCountry) {\n // `state.country` and `state.callingCode` aren't required to be in sync.\n // For example, `state.country` could be `\"AR\"` and `state.callingCode` could be `undefined`.\n // So `state.country` and `state.callingCode` are totally independent.\n var metadata = new Metadata(this.metadata.metadata);\n metadata.selectNumberingPlan(country);\n var _callingCode = metadata.numberingPlan.callingCode();\n var ambiguousCountries = this.metadata.getCountryCodesForCallingCode(_callingCode);\n if (ambiguousCountries.length > 1) {\n var exactCountry = getCountryByNationalNumber(nationalSignificantNumber, {\n countries: ambiguousCountries,\n defaultCountry: this.defaultCountry,\n metadata: this.metadata.metadata\n });\n if (exactCountry) {\n country = exactCountry;\n }\n }\n }\n }\n var phoneNumber = new PhoneNumber(country || callingCode, nationalSignificantNumber, this.metadata.metadata);\n if (carrierCode) {\n phoneNumber.carrierCode = carrierCode;\n } // Phone number extensions are not supported by \"As You Type\" formatter.\n\n return phoneNumber;\n }\n /**\r\n * Returns `true` if the phone number is \"possible\".\r\n * Is just a shortcut for `PhoneNumber.isPossible()`.\r\n * @return {boolean}\r\n */\n }, {\n key: \"isPossible\",\n value: function isPossible() {\n var phoneNumber = this.getNumber();\n if (!phoneNumber) {\n return false;\n }\n return phoneNumber.isPossible();\n }\n /**\r\n * Returns `true` if the phone number is \"valid\".\r\n * Is just a shortcut for `PhoneNumber.isValid()`.\r\n * @return {boolean}\r\n */\n }, {\n key: \"isValid\",\n value: function isValid() {\n var phoneNumber = this.getNumber();\n if (!phoneNumber) {\n return false;\n }\n return phoneNumber.isValid();\n }\n /**\r\n * @deprecated\r\n * This method is used in `react-phone-number-input/source/input-control.js`\r\n * in versions before `3.0.16`.\r\n */\n }, {\n key: \"getNationalNumber\",\n value: function getNationalNumber() {\n return this.state.nationalSignificantNumber;\n }\n /**\r\n * Returns the phone number characters entered by the user.\r\n * @return {string}\r\n */\n }, {\n key: \"getChars\",\n value: function getChars() {\n return (this.state.international ? '+' : '') + this.state.digits;\n }\n /**\r\n * Returns the template for the formatted phone number.\r\n * @return {string}\r\n */\n }, {\n key: \"getTemplate\",\n value: function getTemplate() {\n return this.formatter.getTemplate(this.state) || this.getNonFormattedTemplate() || '';\n }\n }]);\n return AsYouType;\n}();\nexport { AsYouType as default };","// Importing from a \".js\" file is a workaround for Node.js \"ES Modules\"\n// importing system which is even uncapable of importing \"*.json\" files.\nimport metadata from '../../metadata.min.json.js';\nimport { AsYouType as _AsYouType } from '../../core/index.js';\nexport function AsYouType(country) {\n return _AsYouType.call(this, country, metadata);\n}\nAsYouType.prototype = Object.create(_AsYouType.prototype, {});\nAsYouType.prototype.constructor = AsYouType;","function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nimport parsePhoneNumberWithError from './parsePhoneNumberWithError_.js';\nimport ParseError from './ParseError.js';\nimport { isSupportedCountry } from './metadata.js';\nexport default function parsePhoneNumber(text, options, metadata) {\n // Validate `defaultCountry`.\n if (options && options.defaultCountry && !isSupportedCountry(options.defaultCountry, metadata)) {\n options = _objectSpread(_objectSpread({}, options), {}, {\n defaultCountry: undefined\n });\n } // Parse phone number.\n\n try {\n return parsePhoneNumberWithError(text, options, metadata);\n } catch (error) {\n /* istanbul ignore else */\n if (error instanceof ParseError) {//\n } else {\n throw error;\n }\n }\n}","function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nimport normalizeArguments from './normalizeArguments.js';\nimport parsePhoneNumber from './parsePhoneNumber_.js';\nexport default function isValidPhoneNumber() {\n var _normalizeArguments = normalizeArguments(arguments),\n text = _normalizeArguments.text,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n options = _objectSpread(_objectSpread({}, options), {}, {\n extract: false\n });\n var phoneNumber = parsePhoneNumber(text, options, metadata);\n return phoneNumber && phoneNumber.isValid() || false;\n}","import normalizeArguments from './normalizeArguments.js';\nimport parsePhoneNumber_ from './parsePhoneNumber_.js';\nexport default function parsePhoneNumber() {\n var _normalizeArguments = normalizeArguments(arguments),\n text = _normalizeArguments.text,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n return parsePhoneNumber_(text, options, metadata);\n}","import { Controller } from \"@hotwired/stimulus\";\nimport parsePhoneNumber, { AsYouType, validatePhoneNumberLength, isValidPhoneNumber } from 'libphonenumber-js';\n\nexport default class extends Controller {\n static targets = [\"phone\", \"zip\"];\n // phone_input = document.getElementById('submit-policy-phone');\n zip = document.getElementById('sumbit-policy-zip');\n phone_number;\n\n connect() {\n this.phoneTargets.forEach((phoneInput) => this.parsePhone(phoneInput));\n \n // this.phone_input && this.parsePhone();\n this.zip && this.parseZip();\n }\n\n parsePhone (phoneInput) {\n phoneInput.addEventListener('keyup', (e) => {\n if (validatePhoneNumberLength(e.target.value) === 'TOO_LONG') {\n phoneInput.value = this.phone_number\n return\n }\n let parsedPhone = new AsYouType('US').input(e.target.value)\n \n if (isValidPhoneNumber(parsedPhone, 'US')) {\n parsedPhone = parsePhoneNumber(parsedPhone, 'US').formatNational()\n }\n this.phone_number = parsedPhone\n phoneInput.value = this.phone_number\n })\n }\n\n parseZip() {\n this.zip.addEventListener('keyup', (e) => this.zip.value = e.target.value.length < 5 ? e.target.value : e.target.value.substring(0, 5))\n }\n\n}","import withMetadataArgument from './withMetadataArgument.js';\nimport { validatePhoneNumberLength as _validatePhoneNumberLength } from '../../core/index.js';\nexport function validatePhoneNumberLength() {\n return withMetadataArgument(_validatePhoneNumberLength, arguments);\n}","import withMetadataArgument from './withMetadataArgument.js';\nimport { isValidPhoneNumber as _isValidPhoneNumber } from '../../core/index.js';\nexport function isValidPhoneNumber() {\n return withMetadataArgument(_isValidPhoneNumber, arguments);\n}","import withMetadataArgument from './withMetadataArgument.js';\nimport { default as _parsePhoneNumber } from '../../core/index.js';\nexport function parsePhoneNumber() {\n return withMetadataArgument(_parsePhoneNumber, arguments);\n}","export class FetchResponse {\n constructor(response) {\n this.response = response;\n }\n get statusCode() {\n return this.response.status;\n }\n get redirected() {\n return this.response.redirected;\n }\n get ok() {\n return this.response.ok;\n }\n get unauthenticated() {\n return this.statusCode === 401;\n }\n get unprocessableEntity() {\n return this.statusCode === 422;\n }\n get authenticationURL() {\n return this.response.headers.get('WWW-Authenticate');\n }\n get contentType() {\n const contentType = this.response.headers.get('Content-Type') || '';\n return contentType.replace(/;.*$/, '');\n }\n get headers() {\n return this.response.headers;\n }\n get html() {\n if (this.contentType.match(/^(application|text)\\/(html|xhtml\\+xml)$/)) {\n return this.text;\n }\n return Promise.reject(new Error(`Expected an HTML response but got \"${this.contentType}\" instead`));\n }\n get json() {\n if (this.contentType.match(/^application\\/.*json$/)) {\n return this.responseJson || (this.responseJson = this.response.json());\n }\n return Promise.reject(new Error(`Expected a JSON response but got \"${this.contentType}\" instead`));\n }\n get text() {\n return this.responseText || (this.responseText = this.response.text());\n }\n get isTurboStream() {\n return this.contentType.match(/^text\\/vnd\\.turbo-stream\\.html/);\n }\n async renderTurboStream() {\n if (this.isTurboStream) {\n if (window.Turbo) {\n await window.Turbo.renderStreamMessage(await this.text);\n } else {\n console.warn('You must set `window.Turbo = Turbo` to automatically process Turbo Stream events with request.js');\n }\n } else {\n return Promise.reject(new Error(`Expected a Turbo Stream response but got \"${this.contentType}\" instead`));\n }\n }\n}","export class RequestInterceptor {\n static register(interceptor) {\n this.interceptor = interceptor;\n }\n static get() {\n return this.interceptor;\n }\n static reset() {\n this.interceptor = undefined;\n }\n}","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nexport function getCookie(name) {\n const cookies = document.cookie ? document.cookie.split('; ') : [];\n const prefix = `${encodeURIComponent(name)}=`;\n const cookie = cookies.find(cookie => cookie.startsWith(prefix));\n if (cookie) {\n const value = cookie.split('=').slice(1).join('=');\n if (value) {\n return decodeURIComponent(value);\n }\n }\n}\nexport function compact(object) {\n const result = {};\n for (const key in object) {\n const value = object[key];\n if (value !== undefined) {\n result[key] = value;\n }\n }\n return result;\n}\nexport function metaContent(name) {\n const element = document.head.querySelector(`meta[name=\"${name}\"]`);\n return element && element.content;\n}\nexport function stringEntriesFromFormData(formData) {\n return [...formData].reduce((entries, _ref) => {\n let _ref2 = _slicedToArray(_ref, 2),\n name = _ref2[0],\n value = _ref2[1];\n return entries.concat(typeof value === 'string' ? [[name, value]] : []);\n }, []);\n}\nexport function mergeEntries(searchParams, entries) {\n for (const _ref3 of entries) {\n var _ref4 = _slicedToArray(_ref3, 2);\n const name = _ref4[0];\n const value = _ref4[1];\n if (value instanceof window.File) continue;\n if (searchParams.has(name) && !name.includes('[]')) {\n searchParams.delete(name);\n searchParams.set(name, value);\n } else {\n searchParams.append(name, value);\n }\n }\n}","import { FetchResponse } from './fetch_response';\nimport { RequestInterceptor } from './request_interceptor';\nimport { getCookie, compact, metaContent, stringEntriesFromFormData, mergeEntries } from './lib/utils';\nexport class FetchRequest {\n constructor(method, url) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n this.method = method;\n this.options = options;\n this.originalUrl = url.toString();\n }\n async perform() {\n try {\n const requestInterceptor = RequestInterceptor.get();\n if (requestInterceptor) {\n await requestInterceptor(this);\n }\n } catch (error) {\n console.error(error);\n }\n const response = new FetchResponse(await window.fetch(this.url, this.fetchOptions));\n if (response.unauthenticated && response.authenticationURL) {\n return Promise.reject(window.location.href = response.authenticationURL);\n }\n if (response.ok && response.isTurboStream) {\n await response.renderTurboStream();\n }\n return response;\n }\n addHeader(key, value) {\n const headers = this.additionalHeaders;\n headers[key] = value;\n this.options.headers = headers;\n }\n sameHostname() {\n if (!this.originalUrl.startsWith('http:')) {\n return true;\n }\n try {\n return new URL(this.originalUrl).hostname === window.location.hostname;\n } catch (_) {\n return true;\n }\n }\n get fetchOptions() {\n return {\n method: this.method.toUpperCase(),\n headers: this.headers,\n body: this.formattedBody,\n signal: this.signal,\n credentials: 'same-origin',\n redirect: this.redirect\n };\n }\n get headers() {\n const baseHeaders = {\n 'X-Requested-With': 'XMLHttpRequest',\n 'Content-Type': this.contentType,\n Accept: this.accept\n };\n if (this.sameHostname()) {\n baseHeaders['X-CSRF-Token'] = this.csrfToken;\n }\n return compact(Object.assign(baseHeaders, this.additionalHeaders));\n }\n get csrfToken() {\n return getCookie(metaContent('csrf-param')) || metaContent('csrf-token');\n }\n get contentType() {\n if (this.options.contentType) {\n return this.options.contentType;\n } else if (this.body == null || this.body instanceof window.FormData) {\n return undefined;\n } else if (this.body instanceof window.File) {\n return this.body.type;\n }\n return 'application/json';\n }\n get accept() {\n switch (this.responseKind) {\n case 'html':\n return 'text/html, application/xhtml+xml';\n case 'turbo-stream':\n return 'text/vnd.turbo-stream.html, text/html, application/xhtml+xml';\n case 'json':\n return 'application/json, application/vnd.api+json';\n default:\n return '*/*';\n }\n }\n get body() {\n return this.options.body;\n }\n get query() {\n const originalQuery = (this.originalUrl.split('?')[1] || '').split('#')[0];\n const params = new URLSearchParams(originalQuery);\n let requestQuery = this.options.query;\n if (requestQuery instanceof window.FormData) {\n requestQuery = stringEntriesFromFormData(requestQuery);\n } else if (requestQuery instanceof window.URLSearchParams) {\n requestQuery = requestQuery.entries();\n } else {\n requestQuery = Object.entries(requestQuery || {});\n }\n mergeEntries(params, requestQuery);\n const query = params.toString();\n return query.length > 0 ? `?${query}` : '';\n }\n get url() {\n return this.originalUrl.split('?')[0].split('#')[0] + this.query;\n }\n get responseKind() {\n return this.options.responseKind || 'html';\n }\n get signal() {\n return this.options.signal;\n }\n get redirect() {\n return this.options.redirect || 'follow';\n }\n get additionalHeaders() {\n return this.options.headers || {};\n }\n get formattedBody() {\n const bodyIsAString = Object.prototype.toString.call(this.body) === '[object String]';\n const contentTypeIsJson = this.headers['Content-Type'] === 'application/json';\n if (contentTypeIsJson && !bodyIsAString) {\n return JSON.stringify(this.body);\n }\n return this.body;\n }\n}","import { Controller } from \"@hotwired/stimulus\"\nimport { get } from \"@rails/request.js\"\n\nexport default class extends Controller {\n static values = {\n url: String\n }\n\n connect() {\n console.info(\"Hello, from claim reason Controller!\", this.element)\n }\n\n change(event) {\n const url = new URL(this.urlValue)\n const params = new URLSearchParams(url.search)\n params.append('reason', event.target.selectedOptions[0].value)\n \n get(url, {\n query: params,\n responseKind: \"turbo-stream\"\n })\n }\n}\n","import { FetchRequest } from './fetch_request';\nasync function get(url, options) {\n const request = new FetchRequest('get', url, options);\n return request.perform();\n}\nasync function post(url, options) {\n const request = new FetchRequest('post', url, options);\n return request.perform();\n}\nasync function put(url, options) {\n const request = new FetchRequest('put', url, options);\n return request.perform();\n}\nasync function patch(url, options) {\n const request = new FetchRequest('patch', url, options);\n return request.perform();\n}\nasync function destroy(url, options) {\n const request = new FetchRequest('delete', url, options);\n return request.perform();\n}\nexport { get, post, put, patch, destroy };","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n/*\nTurbo 7.2.4\nCopyright © 2022 37signals LLC\n */\n(function () {\n if (window.Reflect === undefined || window.customElements === undefined || window.customElements.polyfillWrapFlushCallback) {\n return;\n }\n const BuiltInHTMLElement = HTMLElement;\n const wrapperForTheName = {\n HTMLElement: function HTMLElement() {\n return Reflect.construct(BuiltInHTMLElement, [], this.constructor);\n }\n };\n window.HTMLElement = wrapperForTheName[\"HTMLElement\"];\n HTMLElement.prototype = BuiltInHTMLElement.prototype;\n HTMLElement.prototype.constructor = HTMLElement;\n Object.setPrototypeOf(HTMLElement, BuiltInHTMLElement);\n})();\n\n/**\n * The MIT License (MIT)\n * \n * Copyright (c) 2019 Javan Makhmali\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n(function (prototype) {\n if (typeof prototype.requestSubmit == \"function\") return;\n prototype.requestSubmit = function (submitter) {\n if (submitter) {\n validateSubmitter(submitter, this);\n submitter.click();\n } else {\n submitter = document.createElement(\"input\");\n submitter.type = \"submit\";\n submitter.hidden = true;\n this.appendChild(submitter);\n submitter.click();\n this.removeChild(submitter);\n }\n };\n function validateSubmitter(submitter, form) {\n submitter instanceof HTMLElement || raise(TypeError, \"parameter 1 is not of type 'HTMLElement'\");\n submitter.type == \"submit\" || raise(TypeError, \"The specified element is not a submit button\");\n submitter.form == form || raise(DOMException, \"The specified element is not owned by this form element\", \"NotFoundError\");\n }\n function raise(errorConstructor, message, name) {\n throw new errorConstructor(\"Failed to execute 'requestSubmit' on 'HTMLFormElement': \" + message + \".\", name);\n }\n})(HTMLFormElement.prototype);\nconst submittersByForm = new WeakMap();\nfunction findSubmitterFromClickTarget(target) {\n const element = target instanceof Element ? target : target instanceof Node ? target.parentElement : null;\n const candidate = element ? element.closest(\"input, button\") : null;\n return (candidate === null || candidate === void 0 ? void 0 : candidate.type) == \"submit\" ? candidate : null;\n}\nfunction clickCaptured(event) {\n const submitter = findSubmitterFromClickTarget(event.target);\n if (submitter && submitter.form) {\n submittersByForm.set(submitter.form, submitter);\n }\n}\n(function () {\n if (\"submitter\" in Event.prototype) return;\n let prototype;\n if (\"SubmitEvent\" in window && /Apple Computer/.test(navigator.vendor)) {\n prototype = window.SubmitEvent.prototype;\n } else if (\"SubmitEvent\" in window) {\n return;\n } else {\n prototype = window.Event.prototype;\n }\n addEventListener(\"click\", clickCaptured, true);\n Object.defineProperty(prototype, \"submitter\", {\n get() {\n if (this.type == \"submit\" && this.target instanceof HTMLFormElement) {\n return submittersByForm.get(this.target);\n }\n }\n });\n})();\nvar FrameLoadingStyle;\n(function (FrameLoadingStyle) {\n FrameLoadingStyle[\"eager\"] = \"eager\";\n FrameLoadingStyle[\"lazy\"] = \"lazy\";\n})(FrameLoadingStyle || (FrameLoadingStyle = {}));\nclass FrameElement extends HTMLElement {\n constructor() {\n super();\n this.loaded = Promise.resolve();\n this.delegate = new FrameElement.delegateConstructor(this);\n }\n static get observedAttributes() {\n return [\"disabled\", \"complete\", \"loading\", \"src\"];\n }\n connectedCallback() {\n this.delegate.connect();\n }\n disconnectedCallback() {\n this.delegate.disconnect();\n }\n reload() {\n return this.delegate.sourceURLReloaded();\n }\n attributeChangedCallback(name) {\n if (name == \"loading\") {\n this.delegate.loadingStyleChanged();\n } else if (name == \"complete\") {\n this.delegate.completeChanged();\n } else if (name == \"src\") {\n this.delegate.sourceURLChanged();\n } else {\n this.delegate.disabledChanged();\n }\n }\n get src() {\n return this.getAttribute(\"src\");\n }\n set src(value) {\n if (value) {\n this.setAttribute(\"src\", value);\n } else {\n this.removeAttribute(\"src\");\n }\n }\n get loading() {\n return frameLoadingStyleFromString(this.getAttribute(\"loading\") || \"\");\n }\n set loading(value) {\n if (value) {\n this.setAttribute(\"loading\", value);\n } else {\n this.removeAttribute(\"loading\");\n }\n }\n get disabled() {\n return this.hasAttribute(\"disabled\");\n }\n set disabled(value) {\n if (value) {\n this.setAttribute(\"disabled\", \"\");\n } else {\n this.removeAttribute(\"disabled\");\n }\n }\n get autoscroll() {\n return this.hasAttribute(\"autoscroll\");\n }\n set autoscroll(value) {\n if (value) {\n this.setAttribute(\"autoscroll\", \"\");\n } else {\n this.removeAttribute(\"autoscroll\");\n }\n }\n get complete() {\n return !this.delegate.isLoading;\n }\n get isActive() {\n return this.ownerDocument === document && !this.isPreview;\n }\n get isPreview() {\n var _a, _b;\n return (_b = (_a = this.ownerDocument) === null || _a === void 0 ? void 0 : _a.documentElement) === null || _b === void 0 ? void 0 : _b.hasAttribute(\"data-turbo-preview\");\n }\n}\nfunction frameLoadingStyleFromString(style) {\n switch (style.toLowerCase()) {\n case \"lazy\":\n return FrameLoadingStyle.lazy;\n default:\n return FrameLoadingStyle.eager;\n }\n}\nfunction expandURL(locatable) {\n return new URL(locatable.toString(), document.baseURI);\n}\nfunction getAnchor(url) {\n let anchorMatch;\n if (url.hash) {\n return url.hash.slice(1);\n } else if (anchorMatch = url.href.match(/#(.*)$/)) {\n return anchorMatch[1];\n }\n}\nfunction getAction(form, submitter) {\n const action = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formaction\")) || form.getAttribute(\"action\") || form.action;\n return expandURL(action);\n}\nfunction getExtension(url) {\n return (getLastPathComponent(url).match(/\\.[^.]*$/) || [])[0] || \"\";\n}\nfunction isHTML(url) {\n return !!getExtension(url).match(/^(?:|\\.(?:htm|html|xhtml|php))$/);\n}\nfunction isPrefixedBy(baseURL, url) {\n const prefix = getPrefix(url);\n return baseURL.href === expandURL(prefix).href || baseURL.href.startsWith(prefix);\n}\nfunction locationIsVisitable(location, rootLocation) {\n return isPrefixedBy(location, rootLocation) && isHTML(location);\n}\nfunction getRequestURL(url) {\n const anchor = getAnchor(url);\n return anchor != null ? url.href.slice(0, -(anchor.length + 1)) : url.href;\n}\nfunction toCacheKey(url) {\n return getRequestURL(url);\n}\nfunction urlsAreEqual(left, right) {\n return expandURL(left).href == expandURL(right).href;\n}\nfunction getPathComponents(url) {\n return url.pathname.split(\"/\").slice(1);\n}\nfunction getLastPathComponent(url) {\n return getPathComponents(url).slice(-1)[0];\n}\nfunction getPrefix(url) {\n return addTrailingSlash(url.origin + url.pathname);\n}\nfunction addTrailingSlash(value) {\n return value.endsWith(\"/\") ? value : value + \"/\";\n}\nclass FetchResponse {\n constructor(response) {\n this.response = response;\n }\n get succeeded() {\n return this.response.ok;\n }\n get failed() {\n return !this.succeeded;\n }\n get clientError() {\n return this.statusCode >= 400 && this.statusCode <= 499;\n }\n get serverError() {\n return this.statusCode >= 500 && this.statusCode <= 599;\n }\n get redirected() {\n return this.response.redirected;\n }\n get location() {\n return expandURL(this.response.url);\n }\n get isHTML() {\n return this.contentType && this.contentType.match(/^(?:text\\/([^\\s;,]+\\b)?html|application\\/xhtml\\+xml)\\b/);\n }\n get statusCode() {\n return this.response.status;\n }\n get contentType() {\n return this.header(\"Content-Type\");\n }\n get responseText() {\n return this.response.clone().text();\n }\n get responseHTML() {\n if (this.isHTML) {\n return this.response.clone().text();\n } else {\n return Promise.resolve(undefined);\n }\n }\n header(name) {\n return this.response.headers.get(name);\n }\n}\nfunction isAction(action) {\n return action == \"advance\" || action == \"replace\" || action == \"restore\";\n}\nfunction activateScriptElement(element) {\n if (element.getAttribute(\"data-turbo-eval\") == \"false\") {\n return element;\n } else {\n const createdScriptElement = document.createElement(\"script\");\n const cspNonce = getMetaContent(\"csp-nonce\");\n if (cspNonce) {\n createdScriptElement.nonce = cspNonce;\n }\n createdScriptElement.textContent = element.textContent;\n createdScriptElement.async = false;\n copyElementAttributes(createdScriptElement, element);\n return createdScriptElement;\n }\n}\nfunction copyElementAttributes(destinationElement, sourceElement) {\n for (const _ref of sourceElement.attributes) {\n const name = _ref.name;\n const value = _ref.value;\n destinationElement.setAttribute(name, value);\n }\n}\nfunction createDocumentFragment(html) {\n const template = document.createElement(\"template\");\n template.innerHTML = html;\n return template.content;\n}\nfunction dispatch(eventName) {\n let _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n target = _ref2.target,\n cancelable = _ref2.cancelable,\n detail = _ref2.detail;\n const event = new CustomEvent(eventName, {\n cancelable,\n bubbles: true,\n detail\n });\n if (target && target.isConnected) {\n target.dispatchEvent(event);\n } else {\n document.documentElement.dispatchEvent(event);\n }\n return event;\n}\nfunction nextAnimationFrame() {\n return new Promise(resolve => requestAnimationFrame(() => resolve()));\n}\nfunction nextEventLoopTick() {\n return new Promise(resolve => setTimeout(() => resolve(), 0));\n}\nfunction nextMicrotask() {\n return Promise.resolve();\n}\nfunction parseHTMLDocument() {\n let html = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"\";\n return new DOMParser().parseFromString(html, \"text/html\");\n}\nfunction unindent(strings) {\n for (var _len = arguments.length, values = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n values[_key - 1] = arguments[_key];\n }\n const lines = interpolate(strings, values).replace(/^\\n/, \"\").split(\"\\n\");\n const match = lines[0].match(/^\\s+/);\n const indent = match ? match[0].length : 0;\n return lines.map(line => line.slice(indent)).join(\"\\n\");\n}\nfunction interpolate(strings, values) {\n return strings.reduce((result, string, i) => {\n const value = values[i] == undefined ? \"\" : values[i];\n return result + string + value;\n }, \"\");\n}\nfunction uuid() {\n return Array.from({\n length: 36\n }).map((_, i) => {\n if (i == 8 || i == 13 || i == 18 || i == 23) {\n return \"-\";\n } else if (i == 14) {\n return \"4\";\n } else if (i == 19) {\n return (Math.floor(Math.random() * 4) + 8).toString(16);\n } else {\n return Math.floor(Math.random() * 15).toString(16);\n }\n }).join(\"\");\n}\nfunction getAttribute(attributeName) {\n for (var _len2 = arguments.length, elements = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n elements[_key2 - 1] = arguments[_key2];\n }\n for (const value of elements.map(element => element === null || element === void 0 ? void 0 : element.getAttribute(attributeName))) {\n if (typeof value == \"string\") return value;\n }\n return null;\n}\nfunction hasAttribute(attributeName) {\n for (var _len3 = arguments.length, elements = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n elements[_key3 - 1] = arguments[_key3];\n }\n return elements.some(element => element && element.hasAttribute(attributeName));\n}\nfunction markAsBusy() {\n for (var _len4 = arguments.length, elements = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n elements[_key4] = arguments[_key4];\n }\n for (const element of elements) {\n if (element.localName == \"turbo-frame\") {\n element.setAttribute(\"busy\", \"\");\n }\n element.setAttribute(\"aria-busy\", \"true\");\n }\n}\nfunction clearBusyState() {\n for (var _len5 = arguments.length, elements = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n elements[_key5] = arguments[_key5];\n }\n for (const element of elements) {\n if (element.localName == \"turbo-frame\") {\n element.removeAttribute(\"busy\");\n }\n element.removeAttribute(\"aria-busy\");\n }\n}\nfunction waitForLoad(element) {\n let timeoutInMilliseconds = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2000;\n return new Promise(resolve => {\n const onComplete = () => {\n element.removeEventListener(\"error\", onComplete);\n element.removeEventListener(\"load\", onComplete);\n resolve();\n };\n element.addEventListener(\"load\", onComplete, {\n once: true\n });\n element.addEventListener(\"error\", onComplete, {\n once: true\n });\n setTimeout(resolve, timeoutInMilliseconds);\n });\n}\nfunction getHistoryMethodForAction(action) {\n switch (action) {\n case \"replace\":\n return history.replaceState;\n case \"advance\":\n case \"restore\":\n return history.pushState;\n }\n}\nfunction getVisitAction() {\n for (var _len6 = arguments.length, elements = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n elements[_key6] = arguments[_key6];\n }\n const action = getAttribute(\"data-turbo-action\", ...elements);\n return isAction(action) ? action : null;\n}\nfunction getMetaElement(name) {\n return document.querySelector(`meta[name=\"${name}\"]`);\n}\nfunction getMetaContent(name) {\n const element = getMetaElement(name);\n return element && element.content;\n}\nfunction setMetaContent(name, content) {\n let element = getMetaElement(name);\n if (!element) {\n element = document.createElement(\"meta\");\n element.setAttribute(\"name\", name);\n document.head.appendChild(element);\n }\n element.setAttribute(\"content\", content);\n return element;\n}\nvar FetchMethod;\n(function (FetchMethod) {\n FetchMethod[FetchMethod[\"get\"] = 0] = \"get\";\n FetchMethod[FetchMethod[\"post\"] = 1] = \"post\";\n FetchMethod[FetchMethod[\"put\"] = 2] = \"put\";\n FetchMethod[FetchMethod[\"patch\"] = 3] = \"patch\";\n FetchMethod[FetchMethod[\"delete\"] = 4] = \"delete\";\n})(FetchMethod || (FetchMethod = {}));\nfunction fetchMethodFromString(method) {\n switch (method.toLowerCase()) {\n case \"get\":\n return FetchMethod.get;\n case \"post\":\n return FetchMethod.post;\n case \"put\":\n return FetchMethod.put;\n case \"patch\":\n return FetchMethod.patch;\n case \"delete\":\n return FetchMethod.delete;\n }\n}\nclass FetchRequest {\n constructor(delegate, method, location) {\n let body = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : new URLSearchParams();\n let target = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;\n this.abortController = new AbortController();\n this.resolveRequestPromise = _value => {};\n this.delegate = delegate;\n this.method = method;\n this.headers = this.defaultHeaders;\n this.body = body;\n this.url = location;\n this.target = target;\n }\n get location() {\n return this.url;\n }\n get params() {\n return this.url.searchParams;\n }\n get entries() {\n return this.body ? Array.from(this.body.entries()) : [];\n }\n cancel() {\n this.abortController.abort();\n }\n async perform() {\n var _a, _b;\n const fetchOptions = this.fetchOptions;\n (_b = (_a = this.delegate).prepareHeadersForRequest) === null || _b === void 0 ? void 0 : _b.call(_a, this.headers, this);\n await this.allowRequestToBeIntercepted(fetchOptions);\n try {\n this.delegate.requestStarted(this);\n const response = await fetch(this.url.href, fetchOptions);\n return await this.receive(response);\n } catch (error) {\n if (error.name !== \"AbortError\") {\n if (this.willDelegateErrorHandling(error)) {\n this.delegate.requestErrored(this, error);\n }\n throw error;\n }\n } finally {\n this.delegate.requestFinished(this);\n }\n }\n async receive(response) {\n const fetchResponse = new FetchResponse(response);\n const event = dispatch(\"turbo:before-fetch-response\", {\n cancelable: true,\n detail: {\n fetchResponse\n },\n target: this.target\n });\n if (event.defaultPrevented) {\n this.delegate.requestPreventedHandlingResponse(this, fetchResponse);\n } else if (fetchResponse.succeeded) {\n this.delegate.requestSucceededWithResponse(this, fetchResponse);\n } else {\n this.delegate.requestFailedWithResponse(this, fetchResponse);\n }\n return fetchResponse;\n }\n get fetchOptions() {\n var _a;\n return {\n method: FetchMethod[this.method].toUpperCase(),\n credentials: \"same-origin\",\n headers: this.headers,\n redirect: \"follow\",\n body: this.isIdempotent ? null : this.body,\n signal: this.abortSignal,\n referrer: (_a = this.delegate.referrer) === null || _a === void 0 ? void 0 : _a.href\n };\n }\n get defaultHeaders() {\n return {\n Accept: \"text/html, application/xhtml+xml\"\n };\n }\n get isIdempotent() {\n return this.method == FetchMethod.get;\n }\n get abortSignal() {\n return this.abortController.signal;\n }\n acceptResponseType(mimeType) {\n this.headers[\"Accept\"] = [mimeType, this.headers[\"Accept\"]].join(\", \");\n }\n async allowRequestToBeIntercepted(fetchOptions) {\n const requestInterception = new Promise(resolve => this.resolveRequestPromise = resolve);\n const event = dispatch(\"turbo:before-fetch-request\", {\n cancelable: true,\n detail: {\n fetchOptions,\n url: this.url,\n resume: this.resolveRequestPromise\n },\n target: this.target\n });\n if (event.defaultPrevented) await requestInterception;\n }\n willDelegateErrorHandling(error) {\n const event = dispatch(\"turbo:fetch-request-error\", {\n target: this.target,\n cancelable: true,\n detail: {\n request: this,\n error: error\n }\n });\n return !event.defaultPrevented;\n }\n}\nclass AppearanceObserver {\n constructor(delegate, element) {\n this.started = false;\n this.intersect = entries => {\n const lastEntry = entries.slice(-1)[0];\n if (lastEntry === null || lastEntry === void 0 ? void 0 : lastEntry.isIntersecting) {\n this.delegate.elementAppearedInViewport(this.element);\n }\n };\n this.delegate = delegate;\n this.element = element;\n this.intersectionObserver = new IntersectionObserver(this.intersect);\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.intersectionObserver.observe(this.element);\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n this.intersectionObserver.unobserve(this.element);\n }\n }\n}\nclass StreamMessage {\n constructor(fragment) {\n this.fragment = importStreamElements(fragment);\n }\n static wrap(message) {\n if (typeof message == \"string\") {\n return new this(createDocumentFragment(message));\n } else {\n return message;\n }\n }\n}\nStreamMessage.contentType = \"text/vnd.turbo-stream.html\";\nfunction importStreamElements(fragment) {\n for (const element of fragment.querySelectorAll(\"turbo-stream\")) {\n const streamElement = document.importNode(element, true);\n for (const inertScriptElement of streamElement.templateElement.content.querySelectorAll(\"script\")) {\n inertScriptElement.replaceWith(activateScriptElement(inertScriptElement));\n }\n element.replaceWith(streamElement);\n }\n return fragment;\n}\nvar FormSubmissionState;\n(function (FormSubmissionState) {\n FormSubmissionState[FormSubmissionState[\"initialized\"] = 0] = \"initialized\";\n FormSubmissionState[FormSubmissionState[\"requesting\"] = 1] = \"requesting\";\n FormSubmissionState[FormSubmissionState[\"waiting\"] = 2] = \"waiting\";\n FormSubmissionState[FormSubmissionState[\"receiving\"] = 3] = \"receiving\";\n FormSubmissionState[FormSubmissionState[\"stopping\"] = 4] = \"stopping\";\n FormSubmissionState[FormSubmissionState[\"stopped\"] = 5] = \"stopped\";\n})(FormSubmissionState || (FormSubmissionState = {}));\nvar FormEnctype;\n(function (FormEnctype) {\n FormEnctype[\"urlEncoded\"] = \"application/x-www-form-urlencoded\";\n FormEnctype[\"multipart\"] = \"multipart/form-data\";\n FormEnctype[\"plain\"] = \"text/plain\";\n})(FormEnctype || (FormEnctype = {}));\nfunction formEnctypeFromString(encoding) {\n switch (encoding.toLowerCase()) {\n case FormEnctype.multipart:\n return FormEnctype.multipart;\n case FormEnctype.plain:\n return FormEnctype.plain;\n default:\n return FormEnctype.urlEncoded;\n }\n}\nclass FormSubmission {\n constructor(delegate, formElement, submitter) {\n let mustRedirect = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n this.state = FormSubmissionState.initialized;\n this.delegate = delegate;\n this.formElement = formElement;\n this.submitter = submitter;\n this.formData = buildFormData(formElement, submitter);\n this.location = expandURL(this.action);\n if (this.method == FetchMethod.get) {\n mergeFormDataEntries(this.location, [...this.body.entries()]);\n }\n this.fetchRequest = new FetchRequest(this, this.method, this.location, this.body, this.formElement);\n this.mustRedirect = mustRedirect;\n }\n static confirmMethod(message, _element, _submitter) {\n return Promise.resolve(confirm(message));\n }\n get method() {\n var _a;\n const method = ((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute(\"formmethod\")) || this.formElement.getAttribute(\"method\") || \"\";\n return fetchMethodFromString(method.toLowerCase()) || FetchMethod.get;\n }\n get action() {\n var _a;\n const formElementAction = typeof this.formElement.action === \"string\" ? this.formElement.action : null;\n if ((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.hasAttribute(\"formaction\")) {\n return this.submitter.getAttribute(\"formaction\") || \"\";\n } else {\n return this.formElement.getAttribute(\"action\") || formElementAction || \"\";\n }\n }\n get body() {\n if (this.enctype == FormEnctype.urlEncoded || this.method == FetchMethod.get) {\n return new URLSearchParams(this.stringFormData);\n } else {\n return this.formData;\n }\n }\n get enctype() {\n var _a;\n return formEnctypeFromString(((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute(\"formenctype\")) || this.formElement.enctype);\n }\n get isIdempotent() {\n return this.fetchRequest.isIdempotent;\n }\n get stringFormData() {\n return [...this.formData].reduce((entries, _ref3) => {\n let _ref4 = _slicedToArray(_ref3, 2),\n name = _ref4[0],\n value = _ref4[1];\n return entries.concat(typeof value == \"string\" ? [[name, value]] : []);\n }, []);\n }\n async start() {\n const _FormSubmissionState = FormSubmissionState,\n initialized = _FormSubmissionState.initialized,\n requesting = _FormSubmissionState.requesting;\n const confirmationMessage = getAttribute(\"data-turbo-confirm\", this.submitter, this.formElement);\n if (typeof confirmationMessage === \"string\") {\n const answer = await FormSubmission.confirmMethod(confirmationMessage, this.formElement, this.submitter);\n if (!answer) {\n return;\n }\n }\n if (this.state == initialized) {\n this.state = requesting;\n return this.fetchRequest.perform();\n }\n }\n stop() {\n const _FormSubmissionState2 = FormSubmissionState,\n stopping = _FormSubmissionState2.stopping,\n stopped = _FormSubmissionState2.stopped;\n if (this.state != stopping && this.state != stopped) {\n this.state = stopping;\n this.fetchRequest.cancel();\n return true;\n }\n }\n prepareHeadersForRequest(headers, request) {\n if (!request.isIdempotent) {\n const token = getCookieValue(getMetaContent(\"csrf-param\")) || getMetaContent(\"csrf-token\");\n if (token) {\n headers[\"X-CSRF-Token\"] = token;\n }\n }\n if (this.requestAcceptsTurboStreamResponse(request)) {\n request.acceptResponseType(StreamMessage.contentType);\n }\n }\n requestStarted(_request) {\n var _a;\n this.state = FormSubmissionState.waiting;\n (_a = this.submitter) === null || _a === void 0 ? void 0 : _a.setAttribute(\"disabled\", \"\");\n dispatch(\"turbo:submit-start\", {\n target: this.formElement,\n detail: {\n formSubmission: this\n }\n });\n this.delegate.formSubmissionStarted(this);\n }\n requestPreventedHandlingResponse(request, response) {\n this.result = {\n success: response.succeeded,\n fetchResponse: response\n };\n }\n requestSucceededWithResponse(request, response) {\n if (response.clientError || response.serverError) {\n this.delegate.formSubmissionFailedWithResponse(this, response);\n } else if (this.requestMustRedirect(request) && responseSucceededWithoutRedirect(response)) {\n const error = new Error(\"Form responses must redirect to another location\");\n this.delegate.formSubmissionErrored(this, error);\n } else {\n this.state = FormSubmissionState.receiving;\n this.result = {\n success: true,\n fetchResponse: response\n };\n this.delegate.formSubmissionSucceededWithResponse(this, response);\n }\n }\n requestFailedWithResponse(request, response) {\n this.result = {\n success: false,\n fetchResponse: response\n };\n this.delegate.formSubmissionFailedWithResponse(this, response);\n }\n requestErrored(request, error) {\n this.result = {\n success: false,\n error\n };\n this.delegate.formSubmissionErrored(this, error);\n }\n requestFinished(_request) {\n var _a;\n this.state = FormSubmissionState.stopped;\n (_a = this.submitter) === null || _a === void 0 ? void 0 : _a.removeAttribute(\"disabled\");\n dispatch(\"turbo:submit-end\", {\n target: this.formElement,\n detail: Object.assign({\n formSubmission: this\n }, this.result)\n });\n this.delegate.formSubmissionFinished(this);\n }\n requestMustRedirect(request) {\n return !request.isIdempotent && this.mustRedirect;\n }\n requestAcceptsTurboStreamResponse(request) {\n return !request.isIdempotent || hasAttribute(\"data-turbo-stream\", this.submitter, this.formElement);\n }\n}\nfunction buildFormData(formElement, submitter) {\n const formData = new FormData(formElement);\n const name = submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"name\");\n const value = submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"value\");\n if (name) {\n formData.append(name, value || \"\");\n }\n return formData;\n}\nfunction getCookieValue(cookieName) {\n if (cookieName != null) {\n const cookies = document.cookie ? document.cookie.split(\"; \") : [];\n const cookie = cookies.find(cookie => cookie.startsWith(cookieName));\n if (cookie) {\n const value = cookie.split(\"=\").slice(1).join(\"=\");\n return value ? decodeURIComponent(value) : undefined;\n }\n }\n}\nfunction responseSucceededWithoutRedirect(response) {\n return response.statusCode == 200 && !response.redirected;\n}\nfunction mergeFormDataEntries(url, entries) {\n const searchParams = new URLSearchParams();\n for (const _ref5 of entries) {\n var _ref6 = _slicedToArray(_ref5, 2);\n const name = _ref6[0];\n const value = _ref6[1];\n if (value instanceof File) continue;\n searchParams.append(name, value);\n }\n url.search = searchParams.toString();\n return url;\n}\nclass Snapshot {\n constructor(element) {\n this.element = element;\n }\n get activeElement() {\n return this.element.ownerDocument.activeElement;\n }\n get children() {\n return [...this.element.children];\n }\n hasAnchor(anchor) {\n return this.getElementForAnchor(anchor) != null;\n }\n getElementForAnchor(anchor) {\n return anchor ? this.element.querySelector(`[id='${anchor}'], a[name='${anchor}']`) : null;\n }\n get isConnected() {\n return this.element.isConnected;\n }\n get firstAutofocusableElement() {\n const inertDisabledOrHidden = \"[inert], :disabled, [hidden], details:not([open]), dialog:not([open])\";\n for (const element of this.element.querySelectorAll(\"[autofocus]\")) {\n if (element.closest(inertDisabledOrHidden) == null) return element;else continue;\n }\n return null;\n }\n get permanentElements() {\n return queryPermanentElementsAll(this.element);\n }\n getPermanentElementById(id) {\n return getPermanentElementById(this.element, id);\n }\n getPermanentElementMapForSnapshot(snapshot) {\n const permanentElementMap = {};\n for (const currentPermanentElement of this.permanentElements) {\n const id = currentPermanentElement.id;\n const newPermanentElement = snapshot.getPermanentElementById(id);\n if (newPermanentElement) {\n permanentElementMap[id] = [currentPermanentElement, newPermanentElement];\n }\n }\n return permanentElementMap;\n }\n}\nfunction getPermanentElementById(node, id) {\n return node.querySelector(`#${id}[data-turbo-permanent]`);\n}\nfunction queryPermanentElementsAll(node) {\n return node.querySelectorAll(\"[id][data-turbo-permanent]\");\n}\nclass FormSubmitObserver {\n constructor(delegate, eventTarget) {\n this.started = false;\n this.submitCaptured = () => {\n this.eventTarget.removeEventListener(\"submit\", this.submitBubbled, false);\n this.eventTarget.addEventListener(\"submit\", this.submitBubbled, false);\n };\n this.submitBubbled = event => {\n if (!event.defaultPrevented) {\n const form = event.target instanceof HTMLFormElement ? event.target : undefined;\n const submitter = event.submitter || undefined;\n if (form && submissionDoesNotDismissDialog(form, submitter) && submissionDoesNotTargetIFrame(form, submitter) && this.delegate.willSubmitForm(form, submitter)) {\n event.preventDefault();\n event.stopImmediatePropagation();\n this.delegate.formSubmitted(form, submitter);\n }\n }\n };\n this.delegate = delegate;\n this.eventTarget = eventTarget;\n }\n start() {\n if (!this.started) {\n this.eventTarget.addEventListener(\"submit\", this.submitCaptured, true);\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n this.eventTarget.removeEventListener(\"submit\", this.submitCaptured, true);\n this.started = false;\n }\n }\n}\nfunction submissionDoesNotDismissDialog(form, submitter) {\n const method = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formmethod\")) || form.getAttribute(\"method\");\n return method != \"dialog\";\n}\nfunction submissionDoesNotTargetIFrame(form, submitter) {\n const target = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formtarget\")) || form.target;\n for (const element of document.getElementsByName(target)) {\n if (element instanceof HTMLIFrameElement) return false;\n }\n return true;\n}\nclass View {\n constructor(delegate, element) {\n this.resolveRenderPromise = _value => {};\n this.resolveInterceptionPromise = _value => {};\n this.delegate = delegate;\n this.element = element;\n }\n scrollToAnchor(anchor) {\n const element = this.snapshot.getElementForAnchor(anchor);\n if (element) {\n this.scrollToElement(element);\n this.focusElement(element);\n } else {\n this.scrollToPosition({\n x: 0,\n y: 0\n });\n }\n }\n scrollToAnchorFromLocation(location) {\n this.scrollToAnchor(getAnchor(location));\n }\n scrollToElement(element) {\n element.scrollIntoView();\n }\n focusElement(element) {\n if (element instanceof HTMLElement) {\n if (element.hasAttribute(\"tabindex\")) {\n element.focus();\n } else {\n element.setAttribute(\"tabindex\", \"-1\");\n element.focus();\n element.removeAttribute(\"tabindex\");\n }\n }\n }\n scrollToPosition(_ref7) {\n let x = _ref7.x,\n y = _ref7.y;\n this.scrollRoot.scrollTo(x, y);\n }\n scrollToTop() {\n this.scrollToPosition({\n x: 0,\n y: 0\n });\n }\n get scrollRoot() {\n return window;\n }\n async render(renderer) {\n const isPreview = renderer.isPreview,\n shouldRender = renderer.shouldRender,\n snapshot = renderer.newSnapshot;\n if (shouldRender) {\n try {\n this.renderPromise = new Promise(resolve => this.resolveRenderPromise = resolve);\n this.renderer = renderer;\n await this.prepareToRenderSnapshot(renderer);\n const renderInterception = new Promise(resolve => this.resolveInterceptionPromise = resolve);\n const options = {\n resume: this.resolveInterceptionPromise,\n render: this.renderer.renderElement\n };\n const immediateRender = this.delegate.allowsImmediateRender(snapshot, options);\n if (!immediateRender) await renderInterception;\n await this.renderSnapshot(renderer);\n this.delegate.viewRenderedSnapshot(snapshot, isPreview);\n this.delegate.preloadOnLoadLinksForView(this.element);\n this.finishRenderingSnapshot(renderer);\n } finally {\n delete this.renderer;\n this.resolveRenderPromise(undefined);\n delete this.renderPromise;\n }\n } else {\n this.invalidate(renderer.reloadReason);\n }\n }\n invalidate(reason) {\n this.delegate.viewInvalidated(reason);\n }\n async prepareToRenderSnapshot(renderer) {\n this.markAsPreview(renderer.isPreview);\n await renderer.prepareToRender();\n }\n markAsPreview(isPreview) {\n if (isPreview) {\n this.element.setAttribute(\"data-turbo-preview\", \"\");\n } else {\n this.element.removeAttribute(\"data-turbo-preview\");\n }\n }\n async renderSnapshot(renderer) {\n await renderer.render();\n }\n finishRenderingSnapshot(renderer) {\n renderer.finishRendering();\n }\n}\nclass FrameView extends View {\n invalidate() {\n this.element.innerHTML = \"\";\n }\n get snapshot() {\n return new Snapshot(this.element);\n }\n}\nclass LinkInterceptor {\n constructor(delegate, element) {\n this.clickBubbled = event => {\n if (this.respondsToEventTarget(event.target)) {\n this.clickEvent = event;\n } else {\n delete this.clickEvent;\n }\n };\n this.linkClicked = event => {\n if (this.clickEvent && this.respondsToEventTarget(event.target) && event.target instanceof Element) {\n if (this.delegate.shouldInterceptLinkClick(event.target, event.detail.url, event.detail.originalEvent)) {\n this.clickEvent.preventDefault();\n event.preventDefault();\n this.delegate.linkClickIntercepted(event.target, event.detail.url, event.detail.originalEvent);\n }\n }\n delete this.clickEvent;\n };\n this.willVisit = _event => {\n delete this.clickEvent;\n };\n this.delegate = delegate;\n this.element = element;\n }\n start() {\n this.element.addEventListener(\"click\", this.clickBubbled);\n document.addEventListener(\"turbo:click\", this.linkClicked);\n document.addEventListener(\"turbo:before-visit\", this.willVisit);\n }\n stop() {\n this.element.removeEventListener(\"click\", this.clickBubbled);\n document.removeEventListener(\"turbo:click\", this.linkClicked);\n document.removeEventListener(\"turbo:before-visit\", this.willVisit);\n }\n respondsToEventTarget(target) {\n const element = target instanceof Element ? target : target instanceof Node ? target.parentElement : null;\n return element && element.closest(\"turbo-frame, html\") == this.element;\n }\n}\nclass LinkClickObserver {\n constructor(delegate, eventTarget) {\n this.started = false;\n this.clickCaptured = () => {\n this.eventTarget.removeEventListener(\"click\", this.clickBubbled, false);\n this.eventTarget.addEventListener(\"click\", this.clickBubbled, false);\n };\n this.clickBubbled = event => {\n if (event instanceof MouseEvent && this.clickEventIsSignificant(event)) {\n const target = event.composedPath && event.composedPath()[0] || event.target;\n const link = this.findLinkFromClickTarget(target);\n if (link && doesNotTargetIFrame(link)) {\n const location = this.getLocationForLink(link);\n if (this.delegate.willFollowLinkToLocation(link, location, event)) {\n event.preventDefault();\n this.delegate.followedLinkToLocation(link, location);\n }\n }\n }\n };\n this.delegate = delegate;\n this.eventTarget = eventTarget;\n }\n start() {\n if (!this.started) {\n this.eventTarget.addEventListener(\"click\", this.clickCaptured, true);\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n this.eventTarget.removeEventListener(\"click\", this.clickCaptured, true);\n this.started = false;\n }\n }\n clickEventIsSignificant(event) {\n return !(event.target && event.target.isContentEditable || event.defaultPrevented || event.which > 1 || event.altKey || event.ctrlKey || event.metaKey || event.shiftKey);\n }\n findLinkFromClickTarget(target) {\n if (target instanceof Element) {\n return target.closest(\"a[href]:not([target^=_]):not([download])\");\n }\n }\n getLocationForLink(link) {\n return expandURL(link.getAttribute(\"href\") || \"\");\n }\n}\nfunction doesNotTargetIFrame(anchor) {\n for (const element of document.getElementsByName(anchor.target)) {\n if (element instanceof HTMLIFrameElement) return false;\n }\n return true;\n}\nclass FormLinkClickObserver {\n constructor(delegate, element) {\n this.delegate = delegate;\n this.linkInterceptor = new LinkClickObserver(this, element);\n }\n start() {\n this.linkInterceptor.start();\n }\n stop() {\n this.linkInterceptor.stop();\n }\n willFollowLinkToLocation(link, location, originalEvent) {\n return this.delegate.willSubmitFormLinkToLocation(link, location, originalEvent) && link.hasAttribute(\"data-turbo-method\");\n }\n followedLinkToLocation(link, location) {\n const action = location.href;\n const form = document.createElement(\"form\");\n form.setAttribute(\"data-turbo\", \"true\");\n form.setAttribute(\"action\", action);\n form.setAttribute(\"hidden\", \"\");\n const method = link.getAttribute(\"data-turbo-method\");\n if (method) form.setAttribute(\"method\", method);\n const turboFrame = link.getAttribute(\"data-turbo-frame\");\n if (turboFrame) form.setAttribute(\"data-turbo-frame\", turboFrame);\n const turboAction = link.getAttribute(\"data-turbo-action\");\n if (turboAction) form.setAttribute(\"data-turbo-action\", turboAction);\n const turboConfirm = link.getAttribute(\"data-turbo-confirm\");\n if (turboConfirm) form.setAttribute(\"data-turbo-confirm\", turboConfirm);\n const turboStream = link.hasAttribute(\"data-turbo-stream\");\n if (turboStream) form.setAttribute(\"data-turbo-stream\", \"\");\n this.delegate.submittedFormLinkToLocation(link, location, form);\n document.body.appendChild(form);\n form.addEventListener(\"turbo:submit-end\", () => form.remove(), {\n once: true\n });\n requestAnimationFrame(() => form.requestSubmit());\n }\n}\nclass Bardo {\n constructor(delegate, permanentElementMap) {\n this.delegate = delegate;\n this.permanentElementMap = permanentElementMap;\n }\n static preservingPermanentElements(delegate, permanentElementMap, callback) {\n const bardo = new this(delegate, permanentElementMap);\n bardo.enter();\n callback();\n bardo.leave();\n }\n enter() {\n for (const id in this.permanentElementMap) {\n const _this$permanentElemen = _slicedToArray(this.permanentElementMap[id], 2),\n currentPermanentElement = _this$permanentElemen[0],\n newPermanentElement = _this$permanentElemen[1];\n this.delegate.enteringBardo(currentPermanentElement, newPermanentElement);\n this.replaceNewPermanentElementWithPlaceholder(newPermanentElement);\n }\n }\n leave() {\n for (const id in this.permanentElementMap) {\n const _this$permanentElemen2 = _slicedToArray(this.permanentElementMap[id], 1),\n currentPermanentElement = _this$permanentElemen2[0];\n this.replaceCurrentPermanentElementWithClone(currentPermanentElement);\n this.replacePlaceholderWithPermanentElement(currentPermanentElement);\n this.delegate.leavingBardo(currentPermanentElement);\n }\n }\n replaceNewPermanentElementWithPlaceholder(permanentElement) {\n const placeholder = createPlaceholderForPermanentElement(permanentElement);\n permanentElement.replaceWith(placeholder);\n }\n replaceCurrentPermanentElementWithClone(permanentElement) {\n const clone = permanentElement.cloneNode(true);\n permanentElement.replaceWith(clone);\n }\n replacePlaceholderWithPermanentElement(permanentElement) {\n const placeholder = this.getPlaceholderById(permanentElement.id);\n placeholder === null || placeholder === void 0 ? void 0 : placeholder.replaceWith(permanentElement);\n }\n getPlaceholderById(id) {\n return this.placeholders.find(element => element.content == id);\n }\n get placeholders() {\n return [...document.querySelectorAll(\"meta[name=turbo-permanent-placeholder][content]\")];\n }\n}\nfunction createPlaceholderForPermanentElement(permanentElement) {\n const element = document.createElement(\"meta\");\n element.setAttribute(\"name\", \"turbo-permanent-placeholder\");\n element.setAttribute(\"content\", permanentElement.id);\n return element;\n}\nclass Renderer {\n constructor(currentSnapshot, newSnapshot, renderElement, isPreview) {\n let willRender = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n this.activeElement = null;\n this.currentSnapshot = currentSnapshot;\n this.newSnapshot = newSnapshot;\n this.isPreview = isPreview;\n this.willRender = willRender;\n this.renderElement = renderElement;\n this.promise = new Promise((resolve, reject) => this.resolvingFunctions = {\n resolve,\n reject\n });\n }\n get shouldRender() {\n return true;\n }\n get reloadReason() {\n return;\n }\n prepareToRender() {\n return;\n }\n finishRendering() {\n if (this.resolvingFunctions) {\n this.resolvingFunctions.resolve();\n delete this.resolvingFunctions;\n }\n }\n preservingPermanentElements(callback) {\n Bardo.preservingPermanentElements(this, this.permanentElementMap, callback);\n }\n focusFirstAutofocusableElement() {\n const element = this.connectedSnapshot.firstAutofocusableElement;\n if (elementIsFocusable(element)) {\n element.focus();\n }\n }\n enteringBardo(currentPermanentElement) {\n if (this.activeElement) return;\n if (currentPermanentElement.contains(this.currentSnapshot.activeElement)) {\n this.activeElement = this.currentSnapshot.activeElement;\n }\n }\n leavingBardo(currentPermanentElement) {\n if (currentPermanentElement.contains(this.activeElement) && this.activeElement instanceof HTMLElement) {\n this.activeElement.focus();\n this.activeElement = null;\n }\n }\n get connectedSnapshot() {\n return this.newSnapshot.isConnected ? this.newSnapshot : this.currentSnapshot;\n }\n get currentElement() {\n return this.currentSnapshot.element;\n }\n get newElement() {\n return this.newSnapshot.element;\n }\n get permanentElementMap() {\n return this.currentSnapshot.getPermanentElementMapForSnapshot(this.newSnapshot);\n }\n}\nfunction elementIsFocusable(element) {\n return element && typeof element.focus == \"function\";\n}\nclass FrameRenderer extends Renderer {\n constructor(delegate, currentSnapshot, newSnapshot, renderElement, isPreview) {\n let willRender = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;\n super(currentSnapshot, newSnapshot, renderElement, isPreview, willRender);\n this.delegate = delegate;\n }\n static renderElement(currentElement, newElement) {\n var _a;\n const destinationRange = document.createRange();\n destinationRange.selectNodeContents(currentElement);\n destinationRange.deleteContents();\n const frameElement = newElement;\n const sourceRange = (_a = frameElement.ownerDocument) === null || _a === void 0 ? void 0 : _a.createRange();\n if (sourceRange) {\n sourceRange.selectNodeContents(frameElement);\n currentElement.appendChild(sourceRange.extractContents());\n }\n }\n get shouldRender() {\n return true;\n }\n async render() {\n await nextAnimationFrame();\n this.preservingPermanentElements(() => {\n this.loadFrameElement();\n });\n this.scrollFrameIntoView();\n await nextAnimationFrame();\n this.focusFirstAutofocusableElement();\n await nextAnimationFrame();\n this.activateScriptElements();\n }\n loadFrameElement() {\n this.delegate.willRenderFrame(this.currentElement, this.newElement);\n this.renderElement(this.currentElement, this.newElement);\n }\n scrollFrameIntoView() {\n if (this.currentElement.autoscroll || this.newElement.autoscroll) {\n const element = this.currentElement.firstElementChild;\n const block = readScrollLogicalPosition(this.currentElement.getAttribute(\"data-autoscroll-block\"), \"end\");\n const behavior = readScrollBehavior(this.currentElement.getAttribute(\"data-autoscroll-behavior\"), \"auto\");\n if (element) {\n element.scrollIntoView({\n block,\n behavior\n });\n return true;\n }\n }\n return false;\n }\n activateScriptElements() {\n for (const inertScriptElement of this.newScriptElements) {\n const activatedScriptElement = activateScriptElement(inertScriptElement);\n inertScriptElement.replaceWith(activatedScriptElement);\n }\n }\n get newScriptElements() {\n return this.currentElement.querySelectorAll(\"script\");\n }\n}\nfunction readScrollLogicalPosition(value, defaultValue) {\n if (value == \"end\" || value == \"start\" || value == \"center\" || value == \"nearest\") {\n return value;\n } else {\n return defaultValue;\n }\n}\nfunction readScrollBehavior(value, defaultValue) {\n if (value == \"auto\" || value == \"smooth\") {\n return value;\n } else {\n return defaultValue;\n }\n}\nclass ProgressBar {\n constructor() {\n this.hiding = false;\n this.value = 0;\n this.visible = false;\n this.trickle = () => {\n this.setValue(this.value + Math.random() / 100);\n };\n this.stylesheetElement = this.createStylesheetElement();\n this.progressElement = this.createProgressElement();\n this.installStylesheetElement();\n this.setValue(0);\n }\n static get defaultCSS() {\n return unindent`\n .turbo-progress-bar {\n position: fixed;\n display: block;\n top: 0;\n left: 0;\n height: 3px;\n background: #0076ff;\n z-index: 2147483647;\n transition:\n width ${ProgressBar.animationDuration}ms ease-out,\n opacity ${ProgressBar.animationDuration / 2}ms ${ProgressBar.animationDuration / 2}ms ease-in;\n transform: translate3d(0, 0, 0);\n }\n `;\n }\n show() {\n if (!this.visible) {\n this.visible = true;\n this.installProgressElement();\n this.startTrickling();\n }\n }\n hide() {\n if (this.visible && !this.hiding) {\n this.hiding = true;\n this.fadeProgressElement(() => {\n this.uninstallProgressElement();\n this.stopTrickling();\n this.visible = false;\n this.hiding = false;\n });\n }\n }\n setValue(value) {\n this.value = value;\n this.refresh();\n }\n installStylesheetElement() {\n document.head.insertBefore(this.stylesheetElement, document.head.firstChild);\n }\n installProgressElement() {\n this.progressElement.style.width = \"0\";\n this.progressElement.style.opacity = \"1\";\n document.documentElement.insertBefore(this.progressElement, document.body);\n this.refresh();\n }\n fadeProgressElement(callback) {\n this.progressElement.style.opacity = \"0\";\n setTimeout(callback, ProgressBar.animationDuration * 1.5);\n }\n uninstallProgressElement() {\n if (this.progressElement.parentNode) {\n document.documentElement.removeChild(this.progressElement);\n }\n }\n startTrickling() {\n if (!this.trickleInterval) {\n this.trickleInterval = window.setInterval(this.trickle, ProgressBar.animationDuration);\n }\n }\n stopTrickling() {\n window.clearInterval(this.trickleInterval);\n delete this.trickleInterval;\n }\n refresh() {\n requestAnimationFrame(() => {\n this.progressElement.style.width = `${10 + this.value * 90}%`;\n });\n }\n createStylesheetElement() {\n const element = document.createElement(\"style\");\n element.type = \"text/css\";\n element.textContent = ProgressBar.defaultCSS;\n if (this.cspNonce) {\n element.nonce = this.cspNonce;\n }\n return element;\n }\n createProgressElement() {\n const element = document.createElement(\"div\");\n element.className = \"turbo-progress-bar\";\n return element;\n }\n get cspNonce() {\n return getMetaContent(\"csp-nonce\");\n }\n}\nProgressBar.animationDuration = 300;\nclass HeadSnapshot extends Snapshot {\n constructor() {\n super(...arguments);\n this.detailsByOuterHTML = this.children.filter(element => !elementIsNoscript(element)).map(element => elementWithoutNonce(element)).reduce((result, element) => {\n const outerHTML = element.outerHTML;\n const details = outerHTML in result ? result[outerHTML] : {\n type: elementType(element),\n tracked: elementIsTracked(element),\n elements: []\n };\n return Object.assign(Object.assign({}, result), {\n [outerHTML]: Object.assign(Object.assign({}, details), {\n elements: [...details.elements, element]\n })\n });\n }, {});\n }\n get trackedElementSignature() {\n return Object.keys(this.detailsByOuterHTML).filter(outerHTML => this.detailsByOuterHTML[outerHTML].tracked).join(\"\");\n }\n getScriptElementsNotInSnapshot(snapshot) {\n return this.getElementsMatchingTypeNotInSnapshot(\"script\", snapshot);\n }\n getStylesheetElementsNotInSnapshot(snapshot) {\n return this.getElementsMatchingTypeNotInSnapshot(\"stylesheet\", snapshot);\n }\n getElementsMatchingTypeNotInSnapshot(matchedType, snapshot) {\n return Object.keys(this.detailsByOuterHTML).filter(outerHTML => !(outerHTML in snapshot.detailsByOuterHTML)).map(outerHTML => this.detailsByOuterHTML[outerHTML]).filter(_ref8 => {\n let type = _ref8.type;\n return type == matchedType;\n }).map(_ref9 => {\n let _ref9$elements = _slicedToArray(_ref9.elements, 1),\n element = _ref9$elements[0];\n return element;\n });\n }\n get provisionalElements() {\n return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => {\n const _this$detailsByOuterH = this.detailsByOuterHTML[outerHTML],\n type = _this$detailsByOuterH.type,\n tracked = _this$detailsByOuterH.tracked,\n elements = _this$detailsByOuterH.elements;\n if (type == null && !tracked) {\n return [...result, ...elements];\n } else if (elements.length > 1) {\n return [...result, ...elements.slice(1)];\n } else {\n return result;\n }\n }, []);\n }\n getMetaValue(name) {\n const element = this.findMetaElementByName(name);\n return element ? element.getAttribute(\"content\") : null;\n }\n findMetaElementByName(name) {\n return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => {\n const _this$detailsByOuterH2 = _slicedToArray(this.detailsByOuterHTML[outerHTML].elements, 1),\n element = _this$detailsByOuterH2[0];\n return elementIsMetaElementWithName(element, name) ? element : result;\n }, undefined);\n }\n}\nfunction elementType(element) {\n if (elementIsScript(element)) {\n return \"script\";\n } else if (elementIsStylesheet(element)) {\n return \"stylesheet\";\n }\n}\nfunction elementIsTracked(element) {\n return element.getAttribute(\"data-turbo-track\") == \"reload\";\n}\nfunction elementIsScript(element) {\n const tagName = element.localName;\n return tagName == \"script\";\n}\nfunction elementIsNoscript(element) {\n const tagName = element.localName;\n return tagName == \"noscript\";\n}\nfunction elementIsStylesheet(element) {\n const tagName = element.localName;\n return tagName == \"style\" || tagName == \"link\" && element.getAttribute(\"rel\") == \"stylesheet\";\n}\nfunction elementIsMetaElementWithName(element, name) {\n const tagName = element.localName;\n return tagName == \"meta\" && element.getAttribute(\"name\") == name;\n}\nfunction elementWithoutNonce(element) {\n if (element.hasAttribute(\"nonce\")) {\n element.setAttribute(\"nonce\", \"\");\n }\n return element;\n}\nclass PageSnapshot extends Snapshot {\n constructor(element, headSnapshot) {\n super(element);\n this.headSnapshot = headSnapshot;\n }\n static fromHTMLString() {\n let html = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"\";\n return this.fromDocument(parseHTMLDocument(html));\n }\n static fromElement(element) {\n return this.fromDocument(element.ownerDocument);\n }\n static fromDocument(_ref10) {\n let head = _ref10.head,\n body = _ref10.body;\n return new this(body, new HeadSnapshot(head));\n }\n clone() {\n const clonedElement = this.element.cloneNode(true);\n const selectElements = this.element.querySelectorAll(\"select\");\n const clonedSelectElements = clonedElement.querySelectorAll(\"select\");\n for (const _ref11 of selectElements.entries()) {\n var _ref12 = _slicedToArray(_ref11, 2);\n const index = _ref12[0];\n const source = _ref12[1];\n const clone = clonedSelectElements[index];\n for (const option of clone.selectedOptions) option.selected = false;\n for (const option of source.selectedOptions) clone.options[option.index].selected = true;\n }\n for (const clonedPasswordInput of clonedElement.querySelectorAll('input[type=\"password\"]')) {\n clonedPasswordInput.value = \"\";\n }\n return new PageSnapshot(clonedElement, this.headSnapshot);\n }\n get headElement() {\n return this.headSnapshot.element;\n }\n get rootLocation() {\n var _a;\n const root = (_a = this.getSetting(\"root\")) !== null && _a !== void 0 ? _a : \"/\";\n return expandURL(root);\n }\n get cacheControlValue() {\n return this.getSetting(\"cache-control\");\n }\n get isPreviewable() {\n return this.cacheControlValue != \"no-preview\";\n }\n get isCacheable() {\n return this.cacheControlValue != \"no-cache\";\n }\n get isVisitable() {\n return this.getSetting(\"visit-control\") != \"reload\";\n }\n getSetting(name) {\n return this.headSnapshot.getMetaValue(`turbo-${name}`);\n }\n}\nvar TimingMetric;\n(function (TimingMetric) {\n TimingMetric[\"visitStart\"] = \"visitStart\";\n TimingMetric[\"requestStart\"] = \"requestStart\";\n TimingMetric[\"requestEnd\"] = \"requestEnd\";\n TimingMetric[\"visitEnd\"] = \"visitEnd\";\n})(TimingMetric || (TimingMetric = {}));\nvar VisitState;\n(function (VisitState) {\n VisitState[\"initialized\"] = \"initialized\";\n VisitState[\"started\"] = \"started\";\n VisitState[\"canceled\"] = \"canceled\";\n VisitState[\"failed\"] = \"failed\";\n VisitState[\"completed\"] = \"completed\";\n})(VisitState || (VisitState = {}));\nconst defaultOptions = {\n action: \"advance\",\n historyChanged: false,\n visitCachedSnapshot: () => {},\n willRender: true,\n updateHistory: true,\n shouldCacheSnapshot: true,\n acceptsStreamResponse: false\n};\nvar SystemStatusCode;\n(function (SystemStatusCode) {\n SystemStatusCode[SystemStatusCode[\"networkFailure\"] = 0] = \"networkFailure\";\n SystemStatusCode[SystemStatusCode[\"timeoutFailure\"] = -1] = \"timeoutFailure\";\n SystemStatusCode[SystemStatusCode[\"contentTypeMismatch\"] = -2] = \"contentTypeMismatch\";\n})(SystemStatusCode || (SystemStatusCode = {}));\nclass Visit {\n constructor(delegate, location, restorationIdentifier) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n this.identifier = uuid();\n this.timingMetrics = {};\n this.followedRedirect = false;\n this.historyChanged = false;\n this.scrolled = false;\n this.shouldCacheSnapshot = true;\n this.acceptsStreamResponse = false;\n this.snapshotCached = false;\n this.state = VisitState.initialized;\n this.delegate = delegate;\n this.location = location;\n this.restorationIdentifier = restorationIdentifier || uuid();\n const _Object$assign = Object.assign(Object.assign({}, defaultOptions), options),\n action = _Object$assign.action,\n historyChanged = _Object$assign.historyChanged,\n referrer = _Object$assign.referrer,\n snapshot = _Object$assign.snapshot,\n snapshotHTML = _Object$assign.snapshotHTML,\n response = _Object$assign.response,\n visitCachedSnapshot = _Object$assign.visitCachedSnapshot,\n willRender = _Object$assign.willRender,\n updateHistory = _Object$assign.updateHistory,\n shouldCacheSnapshot = _Object$assign.shouldCacheSnapshot,\n acceptsStreamResponse = _Object$assign.acceptsStreamResponse;\n this.action = action;\n this.historyChanged = historyChanged;\n this.referrer = referrer;\n this.snapshot = snapshot;\n this.snapshotHTML = snapshotHTML;\n this.response = response;\n this.isSamePage = this.delegate.locationWithActionIsSamePage(this.location, this.action);\n this.visitCachedSnapshot = visitCachedSnapshot;\n this.willRender = willRender;\n this.updateHistory = updateHistory;\n this.scrolled = !willRender;\n this.shouldCacheSnapshot = shouldCacheSnapshot;\n this.acceptsStreamResponse = acceptsStreamResponse;\n }\n get adapter() {\n return this.delegate.adapter;\n }\n get view() {\n return this.delegate.view;\n }\n get history() {\n return this.delegate.history;\n }\n get restorationData() {\n return this.history.getRestorationDataForIdentifier(this.restorationIdentifier);\n }\n get silent() {\n return this.isSamePage;\n }\n start() {\n if (this.state == VisitState.initialized) {\n this.recordTimingMetric(TimingMetric.visitStart);\n this.state = VisitState.started;\n this.adapter.visitStarted(this);\n this.delegate.visitStarted(this);\n }\n }\n cancel() {\n if (this.state == VisitState.started) {\n if (this.request) {\n this.request.cancel();\n }\n this.cancelRender();\n this.state = VisitState.canceled;\n }\n }\n complete() {\n if (this.state == VisitState.started) {\n this.recordTimingMetric(TimingMetric.visitEnd);\n this.state = VisitState.completed;\n this.followRedirect();\n if (!this.followedRedirect) {\n this.adapter.visitCompleted(this);\n this.delegate.visitCompleted(this);\n }\n }\n }\n fail() {\n if (this.state == VisitState.started) {\n this.state = VisitState.failed;\n this.adapter.visitFailed(this);\n }\n }\n changeHistory() {\n var _a;\n if (!this.historyChanged && this.updateHistory) {\n const actionForHistory = this.location.href === ((_a = this.referrer) === null || _a === void 0 ? void 0 : _a.href) ? \"replace\" : this.action;\n const method = getHistoryMethodForAction(actionForHistory);\n this.history.update(method, this.location, this.restorationIdentifier);\n this.historyChanged = true;\n }\n }\n issueRequest() {\n if (this.hasPreloadedResponse()) {\n this.simulateRequest();\n } else if (this.shouldIssueRequest() && !this.request) {\n this.request = new FetchRequest(this, FetchMethod.get, this.location);\n this.request.perform();\n }\n }\n simulateRequest() {\n if (this.response) {\n this.startRequest();\n this.recordResponse();\n this.finishRequest();\n }\n }\n startRequest() {\n this.recordTimingMetric(TimingMetric.requestStart);\n this.adapter.visitRequestStarted(this);\n }\n recordResponse() {\n let response = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.response;\n this.response = response;\n if (response) {\n const statusCode = response.statusCode;\n if (isSuccessful(statusCode)) {\n this.adapter.visitRequestCompleted(this);\n } else {\n this.adapter.visitRequestFailedWithStatusCode(this, statusCode);\n }\n }\n }\n finishRequest() {\n this.recordTimingMetric(TimingMetric.requestEnd);\n this.adapter.visitRequestFinished(this);\n }\n loadResponse() {\n if (this.response) {\n const _this$response = this.response,\n statusCode = _this$response.statusCode,\n responseHTML = _this$response.responseHTML;\n this.render(async () => {\n if (this.shouldCacheSnapshot) this.cacheSnapshot();\n if (this.view.renderPromise) await this.view.renderPromise;\n if (isSuccessful(statusCode) && responseHTML != null) {\n await this.view.renderPage(PageSnapshot.fromHTMLString(responseHTML), false, this.willRender, this);\n this.performScroll();\n this.adapter.visitRendered(this);\n this.complete();\n } else {\n await this.view.renderError(PageSnapshot.fromHTMLString(responseHTML), this);\n this.adapter.visitRendered(this);\n this.fail();\n }\n });\n }\n }\n getCachedSnapshot() {\n const snapshot = this.view.getCachedSnapshotForLocation(this.location) || this.getPreloadedSnapshot();\n if (snapshot && (!getAnchor(this.location) || snapshot.hasAnchor(getAnchor(this.location)))) {\n if (this.action == \"restore\" || snapshot.isPreviewable) {\n return snapshot;\n }\n }\n }\n getPreloadedSnapshot() {\n if (this.snapshotHTML) {\n return PageSnapshot.fromHTMLString(this.snapshotHTML);\n }\n }\n hasCachedSnapshot() {\n return this.getCachedSnapshot() != null;\n }\n loadCachedSnapshot() {\n const snapshot = this.getCachedSnapshot();\n if (snapshot) {\n const isPreview = this.shouldIssueRequest();\n this.render(async () => {\n this.cacheSnapshot();\n if (this.isSamePage) {\n this.adapter.visitRendered(this);\n } else {\n if (this.view.renderPromise) await this.view.renderPromise;\n await this.view.renderPage(snapshot, isPreview, this.willRender, this);\n this.performScroll();\n this.adapter.visitRendered(this);\n if (!isPreview) {\n this.complete();\n }\n }\n });\n }\n }\n followRedirect() {\n var _a;\n if (this.redirectedToLocation && !this.followedRedirect && ((_a = this.response) === null || _a === void 0 ? void 0 : _a.redirected)) {\n this.adapter.visitProposedToLocation(this.redirectedToLocation, {\n action: \"replace\",\n response: this.response\n });\n this.followedRedirect = true;\n }\n }\n goToSamePageAnchor() {\n if (this.isSamePage) {\n this.render(async () => {\n this.cacheSnapshot();\n this.performScroll();\n this.changeHistory();\n this.adapter.visitRendered(this);\n });\n }\n }\n prepareHeadersForRequest(headers, request) {\n if (this.acceptsStreamResponse) {\n request.acceptResponseType(StreamMessage.contentType);\n }\n }\n requestStarted() {\n this.startRequest();\n }\n requestPreventedHandlingResponse(_request, _response) {}\n async requestSucceededWithResponse(request, response) {\n const responseHTML = await response.responseHTML;\n const redirected = response.redirected,\n statusCode = response.statusCode;\n if (responseHTML == undefined) {\n this.recordResponse({\n statusCode: SystemStatusCode.contentTypeMismatch,\n redirected\n });\n } else {\n this.redirectedToLocation = response.redirected ? response.location : undefined;\n this.recordResponse({\n statusCode: statusCode,\n responseHTML,\n redirected\n });\n }\n }\n async requestFailedWithResponse(request, response) {\n const responseHTML = await response.responseHTML;\n const redirected = response.redirected,\n statusCode = response.statusCode;\n if (responseHTML == undefined) {\n this.recordResponse({\n statusCode: SystemStatusCode.contentTypeMismatch,\n redirected\n });\n } else {\n this.recordResponse({\n statusCode: statusCode,\n responseHTML,\n redirected\n });\n }\n }\n requestErrored(_request, _error) {\n this.recordResponse({\n statusCode: SystemStatusCode.networkFailure,\n redirected: false\n });\n }\n requestFinished() {\n this.finishRequest();\n }\n performScroll() {\n if (!this.scrolled && !this.view.forceReloaded) {\n if (this.action == \"restore\") {\n this.scrollToRestoredPosition() || this.scrollToAnchor() || this.view.scrollToTop();\n } else {\n this.scrollToAnchor() || this.view.scrollToTop();\n }\n if (this.isSamePage) {\n this.delegate.visitScrolledToSamePageLocation(this.view.lastRenderedLocation, this.location);\n }\n this.scrolled = true;\n }\n }\n scrollToRestoredPosition() {\n const scrollPosition = this.restorationData.scrollPosition;\n if (scrollPosition) {\n this.view.scrollToPosition(scrollPosition);\n return true;\n }\n }\n scrollToAnchor() {\n const anchor = getAnchor(this.location);\n if (anchor != null) {\n this.view.scrollToAnchor(anchor);\n return true;\n }\n }\n recordTimingMetric(metric) {\n this.timingMetrics[metric] = new Date().getTime();\n }\n getTimingMetrics() {\n return Object.assign({}, this.timingMetrics);\n }\n getHistoryMethodForAction(action) {\n switch (action) {\n case \"replace\":\n return history.replaceState;\n case \"advance\":\n case \"restore\":\n return history.pushState;\n }\n }\n hasPreloadedResponse() {\n return typeof this.response == \"object\";\n }\n shouldIssueRequest() {\n if (this.isSamePage) {\n return false;\n } else if (this.action == \"restore\") {\n return !this.hasCachedSnapshot();\n } else {\n return this.willRender;\n }\n }\n cacheSnapshot() {\n if (!this.snapshotCached) {\n this.view.cacheSnapshot(this.snapshot).then(snapshot => snapshot && this.visitCachedSnapshot(snapshot));\n this.snapshotCached = true;\n }\n }\n async render(callback) {\n this.cancelRender();\n await new Promise(resolve => {\n this.frame = requestAnimationFrame(() => resolve());\n });\n await callback();\n delete this.frame;\n }\n cancelRender() {\n if (this.frame) {\n cancelAnimationFrame(this.frame);\n delete this.frame;\n }\n }\n}\nfunction isSuccessful(statusCode) {\n return statusCode >= 200 && statusCode < 300;\n}\nclass BrowserAdapter {\n constructor(session) {\n this.progressBar = new ProgressBar();\n this.showProgressBar = () => {\n this.progressBar.show();\n };\n this.session = session;\n }\n visitProposedToLocation(location, options) {\n this.navigator.startVisit(location, (options === null || options === void 0 ? void 0 : options.restorationIdentifier) || uuid(), options);\n }\n visitStarted(visit) {\n this.location = visit.location;\n visit.loadCachedSnapshot();\n visit.issueRequest();\n visit.goToSamePageAnchor();\n }\n visitRequestStarted(visit) {\n this.progressBar.setValue(0);\n if (visit.hasCachedSnapshot() || visit.action != \"restore\") {\n this.showVisitProgressBarAfterDelay();\n } else {\n this.showProgressBar();\n }\n }\n visitRequestCompleted(visit) {\n visit.loadResponse();\n }\n visitRequestFailedWithStatusCode(visit, statusCode) {\n switch (statusCode) {\n case SystemStatusCode.networkFailure:\n case SystemStatusCode.timeoutFailure:\n case SystemStatusCode.contentTypeMismatch:\n return this.reload({\n reason: \"request_failed\",\n context: {\n statusCode\n }\n });\n default:\n return visit.loadResponse();\n }\n }\n visitRequestFinished(_visit) {\n this.progressBar.setValue(1);\n this.hideVisitProgressBar();\n }\n visitCompleted(_visit) {}\n pageInvalidated(reason) {\n this.reload(reason);\n }\n visitFailed(_visit) {}\n visitRendered(_visit) {}\n formSubmissionStarted(_formSubmission) {\n this.progressBar.setValue(0);\n this.showFormProgressBarAfterDelay();\n }\n formSubmissionFinished(_formSubmission) {\n this.progressBar.setValue(1);\n this.hideFormProgressBar();\n }\n showVisitProgressBarAfterDelay() {\n this.visitProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n }\n hideVisitProgressBar() {\n this.progressBar.hide();\n if (this.visitProgressBarTimeout != null) {\n window.clearTimeout(this.visitProgressBarTimeout);\n delete this.visitProgressBarTimeout;\n }\n }\n showFormProgressBarAfterDelay() {\n if (this.formProgressBarTimeout == null) {\n this.formProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n }\n }\n hideFormProgressBar() {\n this.progressBar.hide();\n if (this.formProgressBarTimeout != null) {\n window.clearTimeout(this.formProgressBarTimeout);\n delete this.formProgressBarTimeout;\n }\n }\n reload(reason) {\n var _a;\n dispatch(\"turbo:reload\", {\n detail: reason\n });\n window.location.href = ((_a = this.location) === null || _a === void 0 ? void 0 : _a.toString()) || window.location.href;\n }\n get navigator() {\n return this.session.navigator;\n }\n}\nclass CacheObserver {\n constructor() {\n this.started = false;\n this.removeStaleElements = _event => {\n const staleElements = [...document.querySelectorAll('[data-turbo-cache=\"false\"]')];\n for (const element of staleElements) {\n element.remove();\n }\n };\n }\n start() {\n if (!this.started) {\n this.started = true;\n addEventListener(\"turbo:before-cache\", this.removeStaleElements, false);\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n removeEventListener(\"turbo:before-cache\", this.removeStaleElements, false);\n }\n }\n}\nclass FrameRedirector {\n constructor(session, element) {\n this.session = session;\n this.element = element;\n this.linkInterceptor = new LinkInterceptor(this, element);\n this.formSubmitObserver = new FormSubmitObserver(this, element);\n }\n start() {\n this.linkInterceptor.start();\n this.formSubmitObserver.start();\n }\n stop() {\n this.linkInterceptor.stop();\n this.formSubmitObserver.stop();\n }\n shouldInterceptLinkClick(element, _location, _event) {\n return this.shouldRedirect(element);\n }\n linkClickIntercepted(element, url, event) {\n const frame = this.findFrameElement(element);\n if (frame) {\n frame.delegate.linkClickIntercepted(element, url, event);\n }\n }\n willSubmitForm(element, submitter) {\n return element.closest(\"turbo-frame\") == null && this.shouldSubmit(element, submitter) && this.shouldRedirect(element, submitter);\n }\n formSubmitted(element, submitter) {\n const frame = this.findFrameElement(element, submitter);\n if (frame) {\n frame.delegate.formSubmitted(element, submitter);\n }\n }\n shouldSubmit(form, submitter) {\n var _a;\n const action = getAction(form, submitter);\n const meta = this.element.ownerDocument.querySelector(`meta[name=\"turbo-root\"]`);\n const rootLocation = expandURL((_a = meta === null || meta === void 0 ? void 0 : meta.content) !== null && _a !== void 0 ? _a : \"/\");\n return this.shouldRedirect(form, submitter) && locationIsVisitable(action, rootLocation);\n }\n shouldRedirect(element, submitter) {\n const isNavigatable = element instanceof HTMLFormElement ? this.session.submissionIsNavigatable(element, submitter) : this.session.elementIsNavigatable(element);\n if (isNavigatable) {\n const frame = this.findFrameElement(element, submitter);\n return frame ? frame != element.closest(\"turbo-frame\") : false;\n } else {\n return false;\n }\n }\n findFrameElement(element, submitter) {\n const id = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"data-turbo-frame\")) || element.getAttribute(\"data-turbo-frame\");\n if (id && id != \"_top\") {\n const frame = this.element.querySelector(`#${id}:not([disabled])`);\n if (frame instanceof FrameElement) {\n return frame;\n }\n }\n }\n}\nclass History {\n constructor(delegate) {\n this.restorationIdentifier = uuid();\n this.restorationData = {};\n this.started = false;\n this.pageLoaded = false;\n this.onPopState = event => {\n if (this.shouldHandlePopState()) {\n const _ref13 = event.state || {},\n turbo = _ref13.turbo;\n if (turbo) {\n this.location = new URL(window.location.href);\n const restorationIdentifier = turbo.restorationIdentifier;\n this.restorationIdentifier = restorationIdentifier;\n this.delegate.historyPoppedToLocationWithRestorationIdentifier(this.location, restorationIdentifier);\n }\n }\n };\n this.onPageLoad = async _event => {\n await nextMicrotask();\n this.pageLoaded = true;\n };\n this.delegate = delegate;\n }\n start() {\n if (!this.started) {\n addEventListener(\"popstate\", this.onPopState, false);\n addEventListener(\"load\", this.onPageLoad, false);\n this.started = true;\n this.replace(new URL(window.location.href));\n }\n }\n stop() {\n if (this.started) {\n removeEventListener(\"popstate\", this.onPopState, false);\n removeEventListener(\"load\", this.onPageLoad, false);\n this.started = false;\n }\n }\n push(location, restorationIdentifier) {\n this.update(history.pushState, location, restorationIdentifier);\n }\n replace(location, restorationIdentifier) {\n this.update(history.replaceState, location, restorationIdentifier);\n }\n update(method, location) {\n let restorationIdentifier = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : uuid();\n const state = {\n turbo: {\n restorationIdentifier\n }\n };\n method.call(history, state, \"\", location.href);\n this.location = location;\n this.restorationIdentifier = restorationIdentifier;\n }\n getRestorationDataForIdentifier(restorationIdentifier) {\n return this.restorationData[restorationIdentifier] || {};\n }\n updateRestorationData(additionalData) {\n const restorationIdentifier = this.restorationIdentifier;\n const restorationData = this.restorationData[restorationIdentifier];\n this.restorationData[restorationIdentifier] = Object.assign(Object.assign({}, restorationData), additionalData);\n }\n assumeControlOfScrollRestoration() {\n var _a;\n if (!this.previousScrollRestoration) {\n this.previousScrollRestoration = (_a = history.scrollRestoration) !== null && _a !== void 0 ? _a : \"auto\";\n history.scrollRestoration = \"manual\";\n }\n }\n relinquishControlOfScrollRestoration() {\n if (this.previousScrollRestoration) {\n history.scrollRestoration = this.previousScrollRestoration;\n delete this.previousScrollRestoration;\n }\n }\n shouldHandlePopState() {\n return this.pageIsLoaded();\n }\n pageIsLoaded() {\n return this.pageLoaded || document.readyState == \"complete\";\n }\n}\nclass Navigator {\n constructor(delegate) {\n this.delegate = delegate;\n }\n proposeVisit(location) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (this.delegate.allowsVisitingLocationWithAction(location, options.action)) {\n if (locationIsVisitable(location, this.view.snapshot.rootLocation)) {\n this.delegate.visitProposedToLocation(location, options);\n } else {\n window.location.href = location.toString();\n }\n }\n }\n startVisit(locatable, restorationIdentifier) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n this.stop();\n this.currentVisit = new Visit(this, expandURL(locatable), restorationIdentifier, Object.assign({\n referrer: this.location\n }, options));\n this.currentVisit.start();\n }\n submitForm(form, submitter) {\n this.stop();\n this.formSubmission = new FormSubmission(this, form, submitter, true);\n this.formSubmission.start();\n }\n stop() {\n if (this.formSubmission) {\n this.formSubmission.stop();\n delete this.formSubmission;\n }\n if (this.currentVisit) {\n this.currentVisit.cancel();\n delete this.currentVisit;\n }\n }\n get adapter() {\n return this.delegate.adapter;\n }\n get view() {\n return this.delegate.view;\n }\n get history() {\n return this.delegate.history;\n }\n formSubmissionStarted(formSubmission) {\n if (typeof this.adapter.formSubmissionStarted === \"function\") {\n this.adapter.formSubmissionStarted(formSubmission);\n }\n }\n async formSubmissionSucceededWithResponse(formSubmission, fetchResponse) {\n if (formSubmission == this.formSubmission) {\n const responseHTML = await fetchResponse.responseHTML;\n if (responseHTML) {\n const shouldCacheSnapshot = formSubmission.method == FetchMethod.get;\n if (!shouldCacheSnapshot) {\n this.view.clearSnapshotCache();\n }\n const statusCode = fetchResponse.statusCode,\n redirected = fetchResponse.redirected;\n const action = this.getActionForFormSubmission(formSubmission);\n const visitOptions = {\n action,\n shouldCacheSnapshot,\n response: {\n statusCode,\n responseHTML,\n redirected\n }\n };\n this.proposeVisit(fetchResponse.location, visitOptions);\n }\n }\n }\n async formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n const responseHTML = await fetchResponse.responseHTML;\n if (responseHTML) {\n const snapshot = PageSnapshot.fromHTMLString(responseHTML);\n if (fetchResponse.serverError) {\n await this.view.renderError(snapshot, this.currentVisit);\n } else {\n await this.view.renderPage(snapshot, false, true, this.currentVisit);\n }\n this.view.scrollToTop();\n this.view.clearSnapshotCache();\n }\n }\n formSubmissionErrored(formSubmission, error) {\n console.error(error);\n }\n formSubmissionFinished(formSubmission) {\n if (typeof this.adapter.formSubmissionFinished === \"function\") {\n this.adapter.formSubmissionFinished(formSubmission);\n }\n }\n visitStarted(visit) {\n this.delegate.visitStarted(visit);\n }\n visitCompleted(visit) {\n this.delegate.visitCompleted(visit);\n }\n locationWithActionIsSamePage(location, action) {\n const anchor = getAnchor(location);\n const currentAnchor = getAnchor(this.view.lastRenderedLocation);\n const isRestorationToTop = action === \"restore\" && typeof anchor === \"undefined\";\n return action !== \"replace\" && getRequestURL(location) === getRequestURL(this.view.lastRenderedLocation) && (isRestorationToTop || anchor != null && anchor !== currentAnchor);\n }\n visitScrolledToSamePageLocation(oldURL, newURL) {\n this.delegate.visitScrolledToSamePageLocation(oldURL, newURL);\n }\n get location() {\n return this.history.location;\n }\n get restorationIdentifier() {\n return this.history.restorationIdentifier;\n }\n getActionForFormSubmission(formSubmission) {\n const formElement = formSubmission.formElement,\n submitter = formSubmission.submitter;\n const action = getAttribute(\"data-turbo-action\", submitter, formElement);\n return isAction(action) ? action : \"advance\";\n }\n}\nvar PageStage;\n(function (PageStage) {\n PageStage[PageStage[\"initial\"] = 0] = \"initial\";\n PageStage[PageStage[\"loading\"] = 1] = \"loading\";\n PageStage[PageStage[\"interactive\"] = 2] = \"interactive\";\n PageStage[PageStage[\"complete\"] = 3] = \"complete\";\n})(PageStage || (PageStage = {}));\nclass PageObserver {\n constructor(delegate) {\n this.stage = PageStage.initial;\n this.started = false;\n this.interpretReadyState = () => {\n const readyState = this.readyState;\n if (readyState == \"interactive\") {\n this.pageIsInteractive();\n } else if (readyState == \"complete\") {\n this.pageIsComplete();\n }\n };\n this.pageWillUnload = () => {\n this.delegate.pageWillUnload();\n };\n this.delegate = delegate;\n }\n start() {\n if (!this.started) {\n if (this.stage == PageStage.initial) {\n this.stage = PageStage.loading;\n }\n document.addEventListener(\"readystatechange\", this.interpretReadyState, false);\n addEventListener(\"pagehide\", this.pageWillUnload, false);\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n document.removeEventListener(\"readystatechange\", this.interpretReadyState, false);\n removeEventListener(\"pagehide\", this.pageWillUnload, false);\n this.started = false;\n }\n }\n pageIsInteractive() {\n if (this.stage == PageStage.loading) {\n this.stage = PageStage.interactive;\n this.delegate.pageBecameInteractive();\n }\n }\n pageIsComplete() {\n this.pageIsInteractive();\n if (this.stage == PageStage.interactive) {\n this.stage = PageStage.complete;\n this.delegate.pageLoaded();\n }\n }\n get readyState() {\n return document.readyState;\n }\n}\nclass ScrollObserver {\n constructor(delegate) {\n this.started = false;\n this.onScroll = () => {\n this.updatePosition({\n x: window.pageXOffset,\n y: window.pageYOffset\n });\n };\n this.delegate = delegate;\n }\n start() {\n if (!this.started) {\n addEventListener(\"scroll\", this.onScroll, false);\n this.onScroll();\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n removeEventListener(\"scroll\", this.onScroll, false);\n this.started = false;\n }\n }\n updatePosition(position) {\n this.delegate.scrollPositionChanged(position);\n }\n}\nclass StreamMessageRenderer {\n render(_ref14) {\n let fragment = _ref14.fragment;\n Bardo.preservingPermanentElements(this, getPermanentElementMapForFragment(fragment), () => document.documentElement.appendChild(fragment));\n }\n enteringBardo(currentPermanentElement, newPermanentElement) {\n newPermanentElement.replaceWith(currentPermanentElement.cloneNode(true));\n }\n leavingBardo() {}\n}\nfunction getPermanentElementMapForFragment(fragment) {\n const permanentElementsInDocument = queryPermanentElementsAll(document.documentElement);\n const permanentElementMap = {};\n for (const permanentElementInDocument of permanentElementsInDocument) {\n const id = permanentElementInDocument.id;\n for (const streamElement of fragment.querySelectorAll(\"turbo-stream\")) {\n const elementInStream = getPermanentElementById(streamElement.templateElement.content, id);\n if (elementInStream) {\n permanentElementMap[id] = [permanentElementInDocument, elementInStream];\n }\n }\n }\n return permanentElementMap;\n}\nclass StreamObserver {\n constructor(delegate) {\n this.sources = new Set();\n this.started = false;\n this.inspectFetchResponse = event => {\n const response = fetchResponseFromEvent(event);\n if (response && fetchResponseIsStream(response)) {\n event.preventDefault();\n this.receiveMessageResponse(response);\n }\n };\n this.receiveMessageEvent = event => {\n if (this.started && typeof event.data == \"string\") {\n this.receiveMessageHTML(event.data);\n }\n };\n this.delegate = delegate;\n }\n start() {\n if (!this.started) {\n this.started = true;\n addEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n removeEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n }\n }\n connectStreamSource(source) {\n if (!this.streamSourceIsConnected(source)) {\n this.sources.add(source);\n source.addEventListener(\"message\", this.receiveMessageEvent, false);\n }\n }\n disconnectStreamSource(source) {\n if (this.streamSourceIsConnected(source)) {\n this.sources.delete(source);\n source.removeEventListener(\"message\", this.receiveMessageEvent, false);\n }\n }\n streamSourceIsConnected(source) {\n return this.sources.has(source);\n }\n async receiveMessageResponse(response) {\n const html = await response.responseHTML;\n if (html) {\n this.receiveMessageHTML(html);\n }\n }\n receiveMessageHTML(html) {\n this.delegate.receivedMessageFromStream(StreamMessage.wrap(html));\n }\n}\nfunction fetchResponseFromEvent(event) {\n var _a;\n const fetchResponse = (_a = event.detail) === null || _a === void 0 ? void 0 : _a.fetchResponse;\n if (fetchResponse instanceof FetchResponse) {\n return fetchResponse;\n }\n}\nfunction fetchResponseIsStream(response) {\n var _a;\n const contentType = (_a = response.contentType) !== null && _a !== void 0 ? _a : \"\";\n return contentType.startsWith(StreamMessage.contentType);\n}\nclass ErrorRenderer extends Renderer {\n static renderElement(currentElement, newElement) {\n const _document = document,\n documentElement = _document.documentElement,\n body = _document.body;\n documentElement.replaceChild(newElement, body);\n }\n async render() {\n this.replaceHeadAndBody();\n this.activateScriptElements();\n }\n replaceHeadAndBody() {\n const _document2 = document,\n documentElement = _document2.documentElement,\n head = _document2.head;\n documentElement.replaceChild(this.newHead, head);\n this.renderElement(this.currentElement, this.newElement);\n }\n activateScriptElements() {\n for (const replaceableElement of this.scriptElements) {\n const parentNode = replaceableElement.parentNode;\n if (parentNode) {\n const element = activateScriptElement(replaceableElement);\n parentNode.replaceChild(element, replaceableElement);\n }\n }\n }\n get newHead() {\n return this.newSnapshot.headSnapshot.element;\n }\n get scriptElements() {\n return document.documentElement.querySelectorAll(\"script\");\n }\n}\nclass PageRenderer extends Renderer {\n static renderElement(currentElement, newElement) {\n if (document.body && newElement instanceof HTMLBodyElement) {\n document.body.replaceWith(newElement);\n } else {\n document.documentElement.appendChild(newElement);\n }\n }\n get shouldRender() {\n return this.newSnapshot.isVisitable && this.trackedElementsAreIdentical;\n }\n get reloadReason() {\n if (!this.newSnapshot.isVisitable) {\n return {\n reason: \"turbo_visit_control_is_reload\"\n };\n }\n if (!this.trackedElementsAreIdentical) {\n return {\n reason: \"tracked_element_mismatch\"\n };\n }\n }\n async prepareToRender() {\n await this.mergeHead();\n }\n async render() {\n if (this.willRender) {\n this.replaceBody();\n }\n }\n finishRendering() {\n super.finishRendering();\n if (!this.isPreview) {\n this.focusFirstAutofocusableElement();\n }\n }\n get currentHeadSnapshot() {\n return this.currentSnapshot.headSnapshot;\n }\n get newHeadSnapshot() {\n return this.newSnapshot.headSnapshot;\n }\n get newElement() {\n return this.newSnapshot.element;\n }\n async mergeHead() {\n const newStylesheetElements = this.copyNewHeadStylesheetElements();\n this.copyNewHeadScriptElements();\n this.removeCurrentHeadProvisionalElements();\n this.copyNewHeadProvisionalElements();\n await newStylesheetElements;\n }\n replaceBody() {\n this.preservingPermanentElements(() => {\n this.activateNewBody();\n this.assignNewBody();\n });\n }\n get trackedElementsAreIdentical() {\n return this.currentHeadSnapshot.trackedElementSignature == this.newHeadSnapshot.trackedElementSignature;\n }\n async copyNewHeadStylesheetElements() {\n const loadingElements = [];\n for (const element of this.newHeadStylesheetElements) {\n loadingElements.push(waitForLoad(element));\n document.head.appendChild(element);\n }\n await Promise.all(loadingElements);\n }\n copyNewHeadScriptElements() {\n for (const element of this.newHeadScriptElements) {\n document.head.appendChild(activateScriptElement(element));\n }\n }\n removeCurrentHeadProvisionalElements() {\n for (const element of this.currentHeadProvisionalElements) {\n document.head.removeChild(element);\n }\n }\n copyNewHeadProvisionalElements() {\n for (const element of this.newHeadProvisionalElements) {\n document.head.appendChild(element);\n }\n }\n activateNewBody() {\n document.adoptNode(this.newElement);\n this.activateNewBodyScriptElements();\n }\n activateNewBodyScriptElements() {\n for (const inertScriptElement of this.newBodyScriptElements) {\n const activatedScriptElement = activateScriptElement(inertScriptElement);\n inertScriptElement.replaceWith(activatedScriptElement);\n }\n }\n assignNewBody() {\n this.renderElement(this.currentElement, this.newElement);\n }\n get newHeadStylesheetElements() {\n return this.newHeadSnapshot.getStylesheetElementsNotInSnapshot(this.currentHeadSnapshot);\n }\n get newHeadScriptElements() {\n return this.newHeadSnapshot.getScriptElementsNotInSnapshot(this.currentHeadSnapshot);\n }\n get currentHeadProvisionalElements() {\n return this.currentHeadSnapshot.provisionalElements;\n }\n get newHeadProvisionalElements() {\n return this.newHeadSnapshot.provisionalElements;\n }\n get newBodyScriptElements() {\n return this.newElement.querySelectorAll(\"script\");\n }\n}\nclass SnapshotCache {\n constructor(size) {\n this.keys = [];\n this.snapshots = {};\n this.size = size;\n }\n has(location) {\n return toCacheKey(location) in this.snapshots;\n }\n get(location) {\n if (this.has(location)) {\n const snapshot = this.read(location);\n this.touch(location);\n return snapshot;\n }\n }\n put(location, snapshot) {\n this.write(location, snapshot);\n this.touch(location);\n return snapshot;\n }\n clear() {\n this.snapshots = {};\n }\n read(location) {\n return this.snapshots[toCacheKey(location)];\n }\n write(location, snapshot) {\n this.snapshots[toCacheKey(location)] = snapshot;\n }\n touch(location) {\n const key = toCacheKey(location);\n const index = this.keys.indexOf(key);\n if (index > -1) this.keys.splice(index, 1);\n this.keys.unshift(key);\n this.trim();\n }\n trim() {\n for (const key of this.keys.splice(this.size)) {\n delete this.snapshots[key];\n }\n }\n}\nclass PageView extends View {\n constructor() {\n super(...arguments);\n this.snapshotCache = new SnapshotCache(10);\n this.lastRenderedLocation = new URL(location.href);\n this.forceReloaded = false;\n }\n renderPage(snapshot) {\n let isPreview = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n let willRender = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n let visit = arguments.length > 3 ? arguments[3] : undefined;\n const renderer = new PageRenderer(this.snapshot, snapshot, PageRenderer.renderElement, isPreview, willRender);\n if (!renderer.shouldRender) {\n this.forceReloaded = true;\n } else {\n visit === null || visit === void 0 ? void 0 : visit.changeHistory();\n }\n return this.render(renderer);\n }\n renderError(snapshot, visit) {\n visit === null || visit === void 0 ? void 0 : visit.changeHistory();\n const renderer = new ErrorRenderer(this.snapshot, snapshot, ErrorRenderer.renderElement, false);\n return this.render(renderer);\n }\n clearSnapshotCache() {\n this.snapshotCache.clear();\n }\n async cacheSnapshot() {\n let snapshot = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.snapshot;\n if (snapshot.isCacheable) {\n this.delegate.viewWillCacheSnapshot();\n const location = this.lastRenderedLocation;\n await nextEventLoopTick();\n const cachedSnapshot = snapshot.clone();\n this.snapshotCache.put(location, cachedSnapshot);\n return cachedSnapshot;\n }\n }\n getCachedSnapshotForLocation(location) {\n return this.snapshotCache.get(location);\n }\n get snapshot() {\n return PageSnapshot.fromElement(this.element);\n }\n}\nclass Preloader {\n constructor(delegate) {\n this.selector = \"a[data-turbo-preload]\";\n this.delegate = delegate;\n }\n get snapshotCache() {\n return this.delegate.navigator.view.snapshotCache;\n }\n start() {\n if (document.readyState === \"loading\") {\n return document.addEventListener(\"DOMContentLoaded\", () => {\n this.preloadOnLoadLinksForView(document.body);\n });\n } else {\n this.preloadOnLoadLinksForView(document.body);\n }\n }\n preloadOnLoadLinksForView(element) {\n for (const link of element.querySelectorAll(this.selector)) {\n this.preloadURL(link);\n }\n }\n async preloadURL(link) {\n const location = new URL(link.href);\n if (this.snapshotCache.has(location)) {\n return;\n }\n try {\n const response = await fetch(location.toString(), {\n headers: {\n \"VND.PREFETCH\": \"true\",\n Accept: \"text/html\"\n }\n });\n const responseText = await response.text();\n const snapshot = PageSnapshot.fromHTMLString(responseText);\n this.snapshotCache.put(location, snapshot);\n } catch (_) {}\n }\n}\nclass Session {\n constructor() {\n this.navigator = new Navigator(this);\n this.history = new History(this);\n this.preloader = new Preloader(this);\n this.view = new PageView(this, document.documentElement);\n this.adapter = new BrowserAdapter(this);\n this.pageObserver = new PageObserver(this);\n this.cacheObserver = new CacheObserver();\n this.linkClickObserver = new LinkClickObserver(this, window);\n this.formSubmitObserver = new FormSubmitObserver(this, document);\n this.scrollObserver = new ScrollObserver(this);\n this.streamObserver = new StreamObserver(this);\n this.formLinkClickObserver = new FormLinkClickObserver(this, document.documentElement);\n this.frameRedirector = new FrameRedirector(this, document.documentElement);\n this.streamMessageRenderer = new StreamMessageRenderer();\n this.drive = true;\n this.enabled = true;\n this.progressBarDelay = 500;\n this.started = false;\n this.formMode = \"on\";\n }\n start() {\n if (!this.started) {\n this.pageObserver.start();\n this.cacheObserver.start();\n this.formLinkClickObserver.start();\n this.linkClickObserver.start();\n this.formSubmitObserver.start();\n this.scrollObserver.start();\n this.streamObserver.start();\n this.frameRedirector.start();\n this.history.start();\n this.preloader.start();\n this.started = true;\n this.enabled = true;\n }\n }\n disable() {\n this.enabled = false;\n }\n stop() {\n if (this.started) {\n this.pageObserver.stop();\n this.cacheObserver.stop();\n this.formLinkClickObserver.stop();\n this.linkClickObserver.stop();\n this.formSubmitObserver.stop();\n this.scrollObserver.stop();\n this.streamObserver.stop();\n this.frameRedirector.stop();\n this.history.stop();\n this.started = false;\n }\n }\n registerAdapter(adapter) {\n this.adapter = adapter;\n }\n visit(location) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const frameElement = options.frame ? document.getElementById(options.frame) : null;\n if (frameElement instanceof FrameElement) {\n frameElement.src = location.toString();\n frameElement.loaded;\n } else {\n this.navigator.proposeVisit(expandURL(location), options);\n }\n }\n connectStreamSource(source) {\n this.streamObserver.connectStreamSource(source);\n }\n disconnectStreamSource(source) {\n this.streamObserver.disconnectStreamSource(source);\n }\n renderStreamMessage(message) {\n this.streamMessageRenderer.render(StreamMessage.wrap(message));\n }\n clearCache() {\n this.view.clearSnapshotCache();\n }\n setProgressBarDelay(delay) {\n this.progressBarDelay = delay;\n }\n setFormMode(mode) {\n this.formMode = mode;\n }\n get location() {\n return this.history.location;\n }\n get restorationIdentifier() {\n return this.history.restorationIdentifier;\n }\n historyPoppedToLocationWithRestorationIdentifier(location, restorationIdentifier) {\n if (this.enabled) {\n this.navigator.startVisit(location, restorationIdentifier, {\n action: \"restore\",\n historyChanged: true\n });\n } else {\n this.adapter.pageInvalidated({\n reason: \"turbo_disabled\"\n });\n }\n }\n scrollPositionChanged(position) {\n this.history.updateRestorationData({\n scrollPosition: position\n });\n }\n willSubmitFormLinkToLocation(link, location) {\n return this.elementIsNavigatable(link) && locationIsVisitable(location, this.snapshot.rootLocation);\n }\n submittedFormLinkToLocation() {}\n willFollowLinkToLocation(link, location, event) {\n return this.elementIsNavigatable(link) && locationIsVisitable(location, this.snapshot.rootLocation) && this.applicationAllowsFollowingLinkToLocation(link, location, event);\n }\n followedLinkToLocation(link, location) {\n const action = this.getActionForLink(link);\n const acceptsStreamResponse = link.hasAttribute(\"data-turbo-stream\");\n this.visit(location.href, {\n action,\n acceptsStreamResponse\n });\n }\n allowsVisitingLocationWithAction(location, action) {\n return this.locationWithActionIsSamePage(location, action) || this.applicationAllowsVisitingLocation(location);\n }\n visitProposedToLocation(location, options) {\n extendURLWithDeprecatedProperties(location);\n this.adapter.visitProposedToLocation(location, options);\n }\n visitStarted(visit) {\n if (!visit.acceptsStreamResponse) {\n markAsBusy(document.documentElement);\n }\n extendURLWithDeprecatedProperties(visit.location);\n if (!visit.silent) {\n this.notifyApplicationAfterVisitingLocation(visit.location, visit.action);\n }\n }\n visitCompleted(visit) {\n clearBusyState(document.documentElement);\n this.notifyApplicationAfterPageLoad(visit.getTimingMetrics());\n }\n locationWithActionIsSamePage(location, action) {\n return this.navigator.locationWithActionIsSamePage(location, action);\n }\n visitScrolledToSamePageLocation(oldURL, newURL) {\n this.notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL);\n }\n willSubmitForm(form, submitter) {\n const action = getAction(form, submitter);\n return this.submissionIsNavigatable(form, submitter) && locationIsVisitable(expandURL(action), this.snapshot.rootLocation);\n }\n formSubmitted(form, submitter) {\n this.navigator.submitForm(form, submitter);\n }\n pageBecameInteractive() {\n this.view.lastRenderedLocation = this.location;\n this.notifyApplicationAfterPageLoad();\n }\n pageLoaded() {\n this.history.assumeControlOfScrollRestoration();\n }\n pageWillUnload() {\n this.history.relinquishControlOfScrollRestoration();\n }\n receivedMessageFromStream(message) {\n this.renderStreamMessage(message);\n }\n viewWillCacheSnapshot() {\n var _a;\n if (!((_a = this.navigator.currentVisit) === null || _a === void 0 ? void 0 : _a.silent)) {\n this.notifyApplicationBeforeCachingSnapshot();\n }\n }\n allowsImmediateRender(_ref15, options) {\n let element = _ref15.element;\n const event = this.notifyApplicationBeforeRender(element, options);\n const defaultPrevented = event.defaultPrevented,\n render = event.detail.render;\n if (this.view.renderer && render) {\n this.view.renderer.renderElement = render;\n }\n return !defaultPrevented;\n }\n viewRenderedSnapshot(_snapshot, _isPreview) {\n this.view.lastRenderedLocation = this.history.location;\n this.notifyApplicationAfterRender();\n }\n preloadOnLoadLinksForView(element) {\n this.preloader.preloadOnLoadLinksForView(element);\n }\n viewInvalidated(reason) {\n this.adapter.pageInvalidated(reason);\n }\n frameLoaded(frame) {\n this.notifyApplicationAfterFrameLoad(frame);\n }\n frameRendered(fetchResponse, frame) {\n this.notifyApplicationAfterFrameRender(fetchResponse, frame);\n }\n applicationAllowsFollowingLinkToLocation(link, location, ev) {\n const event = this.notifyApplicationAfterClickingLinkToLocation(link, location, ev);\n return !event.defaultPrevented;\n }\n applicationAllowsVisitingLocation(location) {\n const event = this.notifyApplicationBeforeVisitingLocation(location);\n return !event.defaultPrevented;\n }\n notifyApplicationAfterClickingLinkToLocation(link, location, event) {\n return dispatch(\"turbo:click\", {\n target: link,\n detail: {\n url: location.href,\n originalEvent: event\n },\n cancelable: true\n });\n }\n notifyApplicationBeforeVisitingLocation(location) {\n return dispatch(\"turbo:before-visit\", {\n detail: {\n url: location.href\n },\n cancelable: true\n });\n }\n notifyApplicationAfterVisitingLocation(location, action) {\n return dispatch(\"turbo:visit\", {\n detail: {\n url: location.href,\n action\n }\n });\n }\n notifyApplicationBeforeCachingSnapshot() {\n return dispatch(\"turbo:before-cache\");\n }\n notifyApplicationBeforeRender(newBody, options) {\n return dispatch(\"turbo:before-render\", {\n detail: Object.assign({\n newBody\n }, options),\n cancelable: true\n });\n }\n notifyApplicationAfterRender() {\n return dispatch(\"turbo:render\");\n }\n notifyApplicationAfterPageLoad() {\n let timing = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return dispatch(\"turbo:load\", {\n detail: {\n url: this.location.href,\n timing\n }\n });\n }\n notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL) {\n dispatchEvent(new HashChangeEvent(\"hashchange\", {\n oldURL: oldURL.toString(),\n newURL: newURL.toString()\n }));\n }\n notifyApplicationAfterFrameLoad(frame) {\n return dispatch(\"turbo:frame-load\", {\n target: frame\n });\n }\n notifyApplicationAfterFrameRender(fetchResponse, frame) {\n return dispatch(\"turbo:frame-render\", {\n detail: {\n fetchResponse\n },\n target: frame,\n cancelable: true\n });\n }\n submissionIsNavigatable(form, submitter) {\n if (this.formMode == \"off\") {\n return false;\n } else {\n const submitterIsNavigatable = submitter ? this.elementIsNavigatable(submitter) : true;\n if (this.formMode == \"optin\") {\n return submitterIsNavigatable && form.closest('[data-turbo=\"true\"]') != null;\n } else {\n return submitterIsNavigatable && this.elementIsNavigatable(form);\n }\n }\n }\n elementIsNavigatable(element) {\n const container = element.closest(\"[data-turbo]\");\n const withinFrame = element.closest(\"turbo-frame\");\n if (this.drive || withinFrame) {\n if (container) {\n return container.getAttribute(\"data-turbo\") != \"false\";\n } else {\n return true;\n }\n } else {\n if (container) {\n return container.getAttribute(\"data-turbo\") == \"true\";\n } else {\n return false;\n }\n }\n }\n getActionForLink(link) {\n const action = link.getAttribute(\"data-turbo-action\");\n return isAction(action) ? action : \"advance\";\n }\n get snapshot() {\n return this.view.snapshot;\n }\n}\nfunction extendURLWithDeprecatedProperties(url) {\n Object.defineProperties(url, deprecatedLocationPropertyDescriptors);\n}\nconst deprecatedLocationPropertyDescriptors = {\n absoluteURL: {\n get() {\n return this.toString();\n }\n }\n};\nclass Cache {\n constructor(session) {\n this.session = session;\n }\n clear() {\n this.session.clearCache();\n }\n resetCacheControl() {\n this.setCacheControl(\"\");\n }\n exemptPageFromCache() {\n this.setCacheControl(\"no-cache\");\n }\n exemptPageFromPreview() {\n this.setCacheControl(\"no-preview\");\n }\n setCacheControl(value) {\n setMetaContent(\"turbo-cache-control\", value);\n }\n}\nconst StreamActions = {\n after() {\n this.targetElements.forEach(e => {\n var _a;\n return (_a = e.parentElement) === null || _a === void 0 ? void 0 : _a.insertBefore(this.templateContent, e.nextSibling);\n });\n },\n append() {\n this.removeDuplicateTargetChildren();\n this.targetElements.forEach(e => e.append(this.templateContent));\n },\n before() {\n this.targetElements.forEach(e => {\n var _a;\n return (_a = e.parentElement) === null || _a === void 0 ? void 0 : _a.insertBefore(this.templateContent, e);\n });\n },\n prepend() {\n this.removeDuplicateTargetChildren();\n this.targetElements.forEach(e => e.prepend(this.templateContent));\n },\n remove() {\n this.targetElements.forEach(e => e.remove());\n },\n replace() {\n this.targetElements.forEach(e => e.replaceWith(this.templateContent));\n },\n update() {\n this.targetElements.forEach(e => e.replaceChildren(this.templateContent));\n }\n};\nconst session = new Session();\nconst cache = new Cache(session);\nconst navigator$1 = session.navigator;\nfunction start() {\n session.start();\n}\nfunction registerAdapter(adapter) {\n session.registerAdapter(adapter);\n}\nfunction visit(location, options) {\n session.visit(location, options);\n}\nfunction connectStreamSource(source) {\n session.connectStreamSource(source);\n}\nfunction disconnectStreamSource(source) {\n session.disconnectStreamSource(source);\n}\nfunction renderStreamMessage(message) {\n session.renderStreamMessage(message);\n}\nfunction clearCache() {\n console.warn(\"Please replace `Turbo.clearCache()` with `Turbo.cache.clear()`. The top-level function is deprecated and will be removed in a future version of Turbo.`\");\n session.clearCache();\n}\nfunction setProgressBarDelay(delay) {\n session.setProgressBarDelay(delay);\n}\nfunction setConfirmMethod(confirmMethod) {\n FormSubmission.confirmMethod = confirmMethod;\n}\nfunction setFormMode(mode) {\n session.setFormMode(mode);\n}\nvar Turbo = /*#__PURE__*/Object.freeze({\n __proto__: null,\n navigator: navigator$1,\n session: session,\n cache: cache,\n PageRenderer: PageRenderer,\n PageSnapshot: PageSnapshot,\n FrameRenderer: FrameRenderer,\n start: start,\n registerAdapter: registerAdapter,\n visit: visit,\n connectStreamSource: connectStreamSource,\n disconnectStreamSource: disconnectStreamSource,\n renderStreamMessage: renderStreamMessage,\n clearCache: clearCache,\n setProgressBarDelay: setProgressBarDelay,\n setConfirmMethod: setConfirmMethod,\n setFormMode: setFormMode,\n StreamActions: StreamActions\n});\nclass FrameController {\n constructor(element) {\n this.fetchResponseLoaded = _fetchResponse => {};\n this.currentFetchRequest = null;\n this.resolveVisitPromise = () => {};\n this.connected = false;\n this.hasBeenLoaded = false;\n this.ignoredAttributes = new Set();\n this.action = null;\n this.visitCachedSnapshot = _ref16 => {\n let element = _ref16.element;\n const frame = element.querySelector(\"#\" + this.element.id);\n if (frame && this.previousFrameElement) {\n frame.replaceChildren(...this.previousFrameElement.children);\n }\n delete this.previousFrameElement;\n };\n this.element = element;\n this.view = new FrameView(this, this.element);\n this.appearanceObserver = new AppearanceObserver(this, this.element);\n this.formLinkClickObserver = new FormLinkClickObserver(this, this.element);\n this.linkInterceptor = new LinkInterceptor(this, this.element);\n this.restorationIdentifier = uuid();\n this.formSubmitObserver = new FormSubmitObserver(this, this.element);\n }\n connect() {\n if (!this.connected) {\n this.connected = true;\n if (this.loadingStyle == FrameLoadingStyle.lazy) {\n this.appearanceObserver.start();\n } else {\n this.loadSourceURL();\n }\n this.formLinkClickObserver.start();\n this.linkInterceptor.start();\n this.formSubmitObserver.start();\n }\n }\n disconnect() {\n if (this.connected) {\n this.connected = false;\n this.appearanceObserver.stop();\n this.formLinkClickObserver.stop();\n this.linkInterceptor.stop();\n this.formSubmitObserver.stop();\n }\n }\n disabledChanged() {\n if (this.loadingStyle == FrameLoadingStyle.eager) {\n this.loadSourceURL();\n }\n }\n sourceURLChanged() {\n if (this.isIgnoringChangesTo(\"src\")) return;\n if (this.element.isConnected) {\n this.complete = false;\n }\n if (this.loadingStyle == FrameLoadingStyle.eager || this.hasBeenLoaded) {\n this.loadSourceURL();\n }\n }\n sourceURLReloaded() {\n const src = this.element.src;\n this.ignoringChangesToAttribute(\"complete\", () => {\n this.element.removeAttribute(\"complete\");\n });\n this.element.src = null;\n this.element.src = src;\n return this.element.loaded;\n }\n completeChanged() {\n if (this.isIgnoringChangesTo(\"complete\")) return;\n this.loadSourceURL();\n }\n loadingStyleChanged() {\n if (this.loadingStyle == FrameLoadingStyle.lazy) {\n this.appearanceObserver.start();\n } else {\n this.appearanceObserver.stop();\n this.loadSourceURL();\n }\n }\n async loadSourceURL() {\n if (this.enabled && this.isActive && !this.complete && this.sourceURL) {\n this.element.loaded = this.visit(expandURL(this.sourceURL));\n this.appearanceObserver.stop();\n await this.element.loaded;\n this.hasBeenLoaded = true;\n }\n }\n async loadResponse(fetchResponse) {\n if (fetchResponse.redirected || fetchResponse.succeeded && fetchResponse.isHTML) {\n this.sourceURL = fetchResponse.response.url;\n }\n try {\n const html = await fetchResponse.responseHTML;\n if (html) {\n const _parseHTMLDocument = parseHTMLDocument(html),\n body = _parseHTMLDocument.body;\n const newFrameElement = await this.extractForeignFrameElement(body);\n if (newFrameElement) {\n const snapshot = new Snapshot(newFrameElement);\n const renderer = new FrameRenderer(this, this.view.snapshot, snapshot, FrameRenderer.renderElement, false, false);\n if (this.view.renderPromise) await this.view.renderPromise;\n this.changeHistory();\n await this.view.render(renderer);\n this.complete = true;\n session.frameRendered(fetchResponse, this.element);\n session.frameLoaded(this.element);\n this.fetchResponseLoaded(fetchResponse);\n } else if (this.willHandleFrameMissingFromResponse(fetchResponse)) {\n console.warn(`A matching frame for #${this.element.id} was missing from the response, transforming into full-page Visit.`);\n this.visitResponse(fetchResponse.response);\n }\n }\n } catch (error) {\n console.error(error);\n this.view.invalidate();\n } finally {\n this.fetchResponseLoaded = () => {};\n }\n }\n elementAppearedInViewport(_element) {\n this.loadSourceURL();\n }\n willSubmitFormLinkToLocation(link) {\n return this.shouldInterceptNavigation(link);\n }\n submittedFormLinkToLocation(link, _location, form) {\n const frame = this.findFrameElement(link);\n if (frame) form.setAttribute(\"data-turbo-frame\", frame.id);\n }\n shouldInterceptLinkClick(element, _location, _event) {\n return this.shouldInterceptNavigation(element);\n }\n linkClickIntercepted(element, location) {\n this.navigateFrame(element, location);\n }\n willSubmitForm(element, submitter) {\n return element.closest(\"turbo-frame\") == this.element && this.shouldInterceptNavigation(element, submitter);\n }\n formSubmitted(element, submitter) {\n if (this.formSubmission) {\n this.formSubmission.stop();\n }\n this.formSubmission = new FormSubmission(this, element, submitter);\n const fetchRequest = this.formSubmission.fetchRequest;\n this.prepareHeadersForRequest(fetchRequest.headers, fetchRequest);\n this.formSubmission.start();\n }\n prepareHeadersForRequest(headers, request) {\n var _a;\n headers[\"Turbo-Frame\"] = this.id;\n if ((_a = this.currentNavigationElement) === null || _a === void 0 ? void 0 : _a.hasAttribute(\"data-turbo-stream\")) {\n request.acceptResponseType(StreamMessage.contentType);\n }\n }\n requestStarted(_request) {\n markAsBusy(this.element);\n }\n requestPreventedHandlingResponse(_request, _response) {\n this.resolveVisitPromise();\n }\n async requestSucceededWithResponse(request, response) {\n await this.loadResponse(response);\n this.resolveVisitPromise();\n }\n async requestFailedWithResponse(request, response) {\n console.error(response);\n await this.loadResponse(response);\n this.resolveVisitPromise();\n }\n requestErrored(request, error) {\n console.error(error);\n this.resolveVisitPromise();\n }\n requestFinished(_request) {\n clearBusyState(this.element);\n }\n formSubmissionStarted(_ref17) {\n let formElement = _ref17.formElement;\n markAsBusy(formElement, this.findFrameElement(formElement));\n }\n formSubmissionSucceededWithResponse(formSubmission, response) {\n const frame = this.findFrameElement(formSubmission.formElement, formSubmission.submitter);\n frame.delegate.proposeVisitIfNavigatedWithAction(frame, formSubmission.formElement, formSubmission.submitter);\n frame.delegate.loadResponse(response);\n }\n formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n this.element.delegate.loadResponse(fetchResponse);\n }\n formSubmissionErrored(formSubmission, error) {\n console.error(error);\n }\n formSubmissionFinished(_ref18) {\n let formElement = _ref18.formElement;\n clearBusyState(formElement, this.findFrameElement(formElement));\n }\n allowsImmediateRender(_ref19, options) {\n let newFrame = _ref19.element;\n const event = dispatch(\"turbo:before-frame-render\", {\n target: this.element,\n detail: Object.assign({\n newFrame\n }, options),\n cancelable: true\n });\n const defaultPrevented = event.defaultPrevented,\n render = event.detail.render;\n if (this.view.renderer && render) {\n this.view.renderer.renderElement = render;\n }\n return !defaultPrevented;\n }\n viewRenderedSnapshot(_snapshot, _isPreview) {}\n preloadOnLoadLinksForView(element) {\n session.preloadOnLoadLinksForView(element);\n }\n viewInvalidated() {}\n willRenderFrame(currentElement, _newElement) {\n this.previousFrameElement = currentElement.cloneNode(true);\n }\n async visit(url) {\n var _a;\n const request = new FetchRequest(this, FetchMethod.get, url, new URLSearchParams(), this.element);\n (_a = this.currentFetchRequest) === null || _a === void 0 ? void 0 : _a.cancel();\n this.currentFetchRequest = request;\n return new Promise(resolve => {\n this.resolveVisitPromise = () => {\n this.resolveVisitPromise = () => {};\n this.currentFetchRequest = null;\n resolve();\n };\n request.perform();\n });\n }\n navigateFrame(element, url, submitter) {\n const frame = this.findFrameElement(element, submitter);\n this.pageSnapshot = PageSnapshot.fromElement(frame).clone();\n frame.delegate.proposeVisitIfNavigatedWithAction(frame, element, submitter);\n this.withCurrentNavigationElement(element, () => {\n frame.src = url;\n });\n }\n proposeVisitIfNavigatedWithAction(frame, element, submitter) {\n this.action = getVisitAction(submitter, element, frame);\n if (isAction(this.action)) {\n const visitCachedSnapshot = frame.delegate.visitCachedSnapshot;\n frame.delegate.fetchResponseLoaded = fetchResponse => {\n if (frame.src) {\n const statusCode = fetchResponse.statusCode,\n redirected = fetchResponse.redirected;\n const responseHTML = frame.ownerDocument.documentElement.outerHTML;\n const response = {\n statusCode,\n redirected,\n responseHTML\n };\n const options = {\n response,\n visitCachedSnapshot,\n willRender: false,\n updateHistory: false,\n restorationIdentifier: this.restorationIdentifier,\n snapshot: this.pageSnapshot\n };\n if (this.action) options.action = this.action;\n session.visit(frame.src, options);\n }\n };\n }\n }\n changeHistory() {\n if (this.action) {\n const method = getHistoryMethodForAction(this.action);\n session.history.update(method, expandURL(this.element.src || \"\"), this.restorationIdentifier);\n }\n }\n willHandleFrameMissingFromResponse(fetchResponse) {\n var _this = this;\n this.element.setAttribute(\"complete\", \"\");\n const response = fetchResponse.response;\n const visit = async function (url) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (url instanceof Response) {\n _this.visitResponse(url);\n } else {\n session.visit(url, options);\n }\n };\n const event = dispatch(\"turbo:frame-missing\", {\n target: this.element,\n detail: {\n response,\n visit\n },\n cancelable: true\n });\n return !event.defaultPrevented;\n }\n async visitResponse(response) {\n const wrapped = new FetchResponse(response);\n const responseHTML = await wrapped.responseHTML;\n const location = wrapped.location,\n redirected = wrapped.redirected,\n statusCode = wrapped.statusCode;\n return session.visit(location, {\n response: {\n redirected,\n statusCode,\n responseHTML\n }\n });\n }\n findFrameElement(element, submitter) {\n var _a;\n const id = getAttribute(\"data-turbo-frame\", submitter, element) || this.element.getAttribute(\"target\");\n return (_a = getFrameElementById(id)) !== null && _a !== void 0 ? _a : this.element;\n }\n async extractForeignFrameElement(container) {\n let element;\n const id = CSS.escape(this.id);\n try {\n element = activateElement(container.querySelector(`turbo-frame#${id}`), this.sourceURL);\n if (element) {\n return element;\n }\n element = activateElement(container.querySelector(`turbo-frame[src][recurse~=${id}]`), this.sourceURL);\n if (element) {\n await element.loaded;\n return await this.extractForeignFrameElement(element);\n }\n } catch (error) {\n console.error(error);\n return new FrameElement();\n }\n return null;\n }\n formActionIsVisitable(form, submitter) {\n const action = getAction(form, submitter);\n return locationIsVisitable(expandURL(action), this.rootLocation);\n }\n shouldInterceptNavigation(element, submitter) {\n const id = getAttribute(\"data-turbo-frame\", submitter, element) || this.element.getAttribute(\"target\");\n if (element instanceof HTMLFormElement && !this.formActionIsVisitable(element, submitter)) {\n return false;\n }\n if (!this.enabled || id == \"_top\") {\n return false;\n }\n if (id) {\n const frameElement = getFrameElementById(id);\n if (frameElement) {\n return !frameElement.disabled;\n }\n }\n if (!session.elementIsNavigatable(element)) {\n return false;\n }\n if (submitter && !session.elementIsNavigatable(submitter)) {\n return false;\n }\n return true;\n }\n get id() {\n return this.element.id;\n }\n get enabled() {\n return !this.element.disabled;\n }\n get sourceURL() {\n if (this.element.src) {\n return this.element.src;\n }\n }\n set sourceURL(sourceURL) {\n this.ignoringChangesToAttribute(\"src\", () => {\n this.element.src = sourceURL !== null && sourceURL !== void 0 ? sourceURL : null;\n });\n }\n get loadingStyle() {\n return this.element.loading;\n }\n get isLoading() {\n return this.formSubmission !== undefined || this.resolveVisitPromise() !== undefined;\n }\n get complete() {\n return this.element.hasAttribute(\"complete\");\n }\n set complete(value) {\n this.ignoringChangesToAttribute(\"complete\", () => {\n if (value) {\n this.element.setAttribute(\"complete\", \"\");\n } else {\n this.element.removeAttribute(\"complete\");\n }\n });\n }\n get isActive() {\n return this.element.isActive && this.connected;\n }\n get rootLocation() {\n var _a;\n const meta = this.element.ownerDocument.querySelector(`meta[name=\"turbo-root\"]`);\n const root = (_a = meta === null || meta === void 0 ? void 0 : meta.content) !== null && _a !== void 0 ? _a : \"/\";\n return expandURL(root);\n }\n isIgnoringChangesTo(attributeName) {\n return this.ignoredAttributes.has(attributeName);\n }\n ignoringChangesToAttribute(attributeName, callback) {\n this.ignoredAttributes.add(attributeName);\n callback();\n this.ignoredAttributes.delete(attributeName);\n }\n withCurrentNavigationElement(element, callback) {\n this.currentNavigationElement = element;\n callback();\n delete this.currentNavigationElement;\n }\n}\nfunction getFrameElementById(id) {\n if (id != null) {\n const element = document.getElementById(id);\n if (element instanceof FrameElement) {\n return element;\n }\n }\n}\nfunction activateElement(element, currentURL) {\n if (element) {\n const src = element.getAttribute(\"src\");\n if (src != null && currentURL != null && urlsAreEqual(src, currentURL)) {\n throw new Error(`Matching element has a source URL which references itself`);\n }\n if (element.ownerDocument !== document) {\n element = document.importNode(element, true);\n }\n if (element instanceof FrameElement) {\n element.connectedCallback();\n element.disconnectedCallback();\n return element;\n }\n }\n}\nclass StreamElement extends HTMLElement {\n static async renderElement(newElement) {\n await newElement.performAction();\n }\n async connectedCallback() {\n try {\n await this.render();\n } catch (error) {\n console.error(error);\n } finally {\n this.disconnect();\n }\n }\n async render() {\n var _a;\n return (_a = this.renderPromise) !== null && _a !== void 0 ? _a : this.renderPromise = (async () => {\n const event = this.beforeRenderEvent;\n if (this.dispatchEvent(event)) {\n await nextAnimationFrame();\n await event.detail.render(this);\n }\n })();\n }\n disconnect() {\n try {\n this.remove();\n } catch (_a) {}\n }\n removeDuplicateTargetChildren() {\n this.duplicateChildren.forEach(c => c.remove());\n }\n get duplicateChildren() {\n var _a;\n const existingChildren = this.targetElements.flatMap(e => [...e.children]).filter(c => !!c.id);\n const newChildrenIds = [...(((_a = this.templateContent) === null || _a === void 0 ? void 0 : _a.children) || [])].filter(c => !!c.id).map(c => c.id);\n return existingChildren.filter(c => newChildrenIds.includes(c.id));\n }\n get performAction() {\n if (this.action) {\n const actionFunction = StreamActions[this.action];\n if (actionFunction) {\n return actionFunction;\n }\n this.raise(\"unknown action\");\n }\n this.raise(\"action attribute is missing\");\n }\n get targetElements() {\n if (this.target) {\n return this.targetElementsById;\n } else if (this.targets) {\n return this.targetElementsByQuery;\n } else {\n this.raise(\"target or targets attribute is missing\");\n }\n }\n get templateContent() {\n return this.templateElement.content.cloneNode(true);\n }\n get templateElement() {\n if (this.firstElementChild === null) {\n const template = this.ownerDocument.createElement(\"template\");\n this.appendChild(template);\n return template;\n } else if (this.firstElementChild instanceof HTMLTemplateElement) {\n return this.firstElementChild;\n }\n this.raise(\"first child element must be a