{"version":3,"file":"polyfills.f71c48538269bf4b.js","mappings":"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GAAsB,KAAlBA,EAAY,GACd,MAAO,CAAC,KAAMA,GAGhB,MAAMC,EAAaD,EAAYnnC,QAAQ,IAAK,GAE5C,IAAmB,IAAfonC,EACF,MAAM,IAAIlvD,MAAM,uBAAuBivD,kCAGzC,MAAO,CAACA,EAAY7uD,MAAM,EAAG8uD,GAAaD,EAAY7uD,MAAM8uD,EAAa,GAC3E,CAGM,SAAUC,GAAc73C,GAC5B,MAAmC,iBAA5B03C,GAAY13C,GAAS,EAC9B,CAGM,SAAU83C,GAAY93C,GAC1B,MAAmC,eAA5B03C,GAAY13C,GAAS,EAC9B,CASM,SAAU+3C,GAAYC,GAC1B,OAAoB,OAAbA,EAAoB,KAAON,GAAYM,GAAU,EAC1D,CAEgB,YAAepvD,EAAgBqvD,GAC7C,OAAOrvD,EAAS,IAAIA,KAAUqvD,IAAcA,CAC9C,EAvDA,SAAYtG,GACVA,2BACAA,+CACAA,oCACF,CAJA,CAAYA,QAIX,WEFqBuG,ICKtB,MA6DMC,GAAmB,CACvB,w6BAGA,ivCACA,+6CACA,gPACA,0kCACA,uBACA,2CACA,uBACA,wCACA,uBACA,kCACA,yCACA,4LACA,uKACA,eACA,yBACA,iCACA,wSACA,8GACA,sCACA,+BACA,4BACA,2BACA,0BACA,8BACA,yCACA,6BACA,0BACA,uDACA,wCACA,qCACA,uGACA,iGACA,6QACA,mDACA,sBACA,wCACA,6BACA,kMACA,qKACA,8ZACA,+BACA,8BACA,6BACA,+JACA,yBACA,4HACA,8BACA,yDACA,2DACA,sCACA,kDACA,uIACA,yCACA,6EACA,wDACA,wBACA,gDACA,yBACA,2BACA,qCACA,mCACA,0HACA,0GACA,0BACA,kEACA,sBACA,2CACA,8BACA,mHACA,+DACA,oHACA,iDACA,wDACA,0BACA,wMACA,8BACA,2BACA,sDACA,iCACA,yBACA,wHACA,wBACA,+BACA,qCACA,wCACA,6BACA,+BACA,2BACA,mBACA,sBACA,8BACA,sBACA,4BACA,kCACA,0BACA,+BACA,gCACA,gCACA,6BACA,2BACA,sBACA,+CACA,+CACA,+CACA,+CACA,6BACA,sBACA,sBACA,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","names":["_SELECTOR_REGEXP","RegExp","CssSelector","constructor","this","element","classNames","attrs","notSelectors","static","selector","results","_addResult","res","cssSel","length","push","match","cssSelector","current","inNot","lastIndex","exec","Error","tag","prefix","addAttribute","slice","addClassName","setElement","attribute","unescapeAttribute","attr","result","escaping","i","char","charAt","escapeAttribute","replace","isElementSelector","hasElementSelector","getAttrs","join","concat","name","value","toLowerCase","toString","forEach","klass","notSelector","ViewEncapsulation","ChangeDetectionStrategy","NO_ERRORS_SCHEMA","SecurityContext","MissingTranslationStrategy","parserSelectorToR3Selector","positive","parserSelectorToSimpleSelector","classes","negative","map","parserSelectorToNegativeSelector","parseSelectorToR3Selector","parse","BigInteger","digits","clone","add","other","addToSelf","maxNrOfDigits","Math","max","carry","digitSum","BigIntForMultiplication","powerOfTwos","getValue","multiplyBy","num","product","zero","multiplyByAndAddTo","exponent","getMultipliedByPowerOfTwo","previousPower","textEncoder","computeDigest","message","sha1","str","TextEncoder","utf8","encode","words32","bytesToWords32","bytes","endian","size","wordAt","Endian","Big","len","w","Uint32Array","a","b","c","d","e","h0","h1","h2","h3","h4","j","rol32","fkVal","fk","f","k","temp","reduce","add32","toHexU32","serializeNodes","nodes","visit","serializerVisitor","meaning","decimalDigest","id","computeDecimalDigest","visitor","_SerializerIgnoreIcuExpVisitor","computeMsgId","_SerializerVisitor","visitText","text","context","visitContainer","container","children","child","visitIcu","icu","strCases","Object","keys","cases","expression","type","visitTagPlaceholder","ph","isVoid","startName","closeName","visitPlaceholder","visitIcuPlaceholder","padStart","index","fingerprint","view","DataView","buffer","byteOffset","byteLength","hi","hash32","lo","msg","msgFingerprint","meaningFingerprint","add64","ah","al","bh","bl","add32to64","l","rol64","count","h","wordsToDecimalString","decimal","base256","toThePowerOf","end","getUint32","mix","remainder","getUint8","low","high","byteAt","word","BigIntExponentiation","base","exponents","one","TypeModifier","BuiltinTypeName","Type","modifiers","None","hasModifier","modifier","BuiltinType","super","visitType","visitBuiltinType","ExpressionType","typeParams","visitExpressionType","Dynamic","INFERRED_TYPE","Inferred","BOOL_TYPE","Bool","NUMBER_TYPE","Int","Number","STRING_TYPE","String","NONE_TYPE","Function","UnaryOperator","BinaryOperator","isEquivalent","areAllEquivalentPredicate","equivalentPredicate","baseElement","otherElement","Expression","sourceSpan","prop","ReadPropExpr","key","ReadKeyExpr","callFn","params","pure","InvokeFunctionExpr","instantiate","InstantiateExpr","conditional","trueCase","falseCase","ConditionalExpr","equals","rhs","BinaryOperatorExpr","Equals","notEquals","NotEquals","identical","Identical","notIdentical","NotIdentical","minus","Minus","plus","Plus","divide","Divide","multiply","Multiply","modulo","Modulo","and","And","bitwiseAnd","parens","BitwiseAnd","or","Or","lower","Lower","lowerEquals","LowerEquals","bigger","Bigger","biggerEquals","BiggerEquals","isBlank","TYPED_NULL_EXPR","nullishCoalesce","NullishCoalesce","toStmt","ExpressionStatement","ReadVarExpr","isConstant","visitExpression","visitReadVarExpr","set","WriteVarExpr","TypeofExpr","expr","visitTypeofExpr","WrappedNodeExpr","node","visitWrappedNodeExpr","visitWriteVarExpr","toDeclStmt","DeclareVarStmt","toConstDecl","StmtModifier","Final","WriteKeyExpr","receiver","visitWriteKeyExpr","WritePropExpr","visitWritePropExpr","fn","args","areAllEquivalent","visitInvokeFunctionExpr","TaggedTemplateExpr","template","elements","expressions","visitTaggedTemplateExpr","classExpr","visitInstantiateExpr","LiteralExpr","visitLiteralExpr","TemplateLiteral","TemplateLiteralElement","rawText","escapeForTemplateLiteral","escapeSlashes","LiteralPiece","PlaceholderPiece","associatedMessage","LocalizedString","metaBlock","messageParts","placeHolderNames","visitLocalizedString","serializeI18nHead","description","customId","legacyIds","legacyId","createCookedRawString","getMessagePartSourceSpan","getPlaceholderSourceSpan","serializeI18nTemplatePart","partIndex","placeholder","messagePart","messageString","escapeStartingColon","escapeColons","range","cooked","raw","ExternalExpr","moduleName","runtime","visitExternalExpr","condition","nullSafeIsEquivalent","visitConditionalExpr","NotExpr","visitNotExpr","FnParam","param","FunctionExpr","statements","visitFunctionExpr","DeclareFunctionStmt","UnaryOperatorExpr","operator","visitUnaryOperatorExpr","lhs","visitBinaryOperatorExpr","visitReadPropExpr","visitReadKeyExpr","LiteralArrayExpr","entries","every","visitLiteralArrayExpr","LiteralMapEntry","quoted","LiteralMapExpr","valueType","visitLiteralMapExpr","NULL_EXPR","LeadingComment","multiline","trailingNewline","JSDocComment","tags","serializeTags","tagName","tagToString","out","Statement","leadingComments","addLeadingComment","leadingComment","stmt","visitStatement","visitDeclareVarStmt","visitDeclareFunctionStmt","visitExpressionStmt","ReturnStatement","visitReturnStmt","IfStmt","visitIfStmt","variable","importExpr","expressionType","typeModifiers","typeofExpr","literalArr","values","literalMap","body","ifStmt","thenClause","elseClause","taggedTemplate","literal","localizedString","placeholderNames","isNull","exp","UNKNOWN_VALUE_KEY","o.variable","KEY_CONTEXT","FixupExpression","o.Expression","resolved","original","fixup","shared","ConstantPool","isClosureCompilerEnabled","Map","nextNameIndex","getConstLiteral","forceShared","o.LiteralExpr","isLongStringLiteral","keyOf","literals","get","newValue","freshName","definition","usage","o.FunctionExpr","o.ReturnStatement","o.INFERRED_TYPE","o.StmtModifier","getLiteralFactory","o.LiteralArrayExpr","argumentsForKey","o.literalArr","_getLiteralFactory","expressionForKey","o.literalMap","resultMap","literalFactory","literalFactories","literalFactoryArguments","filter","resultExpressions","pureFunctionDeclaration","o.fn","isVariable","o.FnParam","o.DYNAMIC_TYPE","uniqueName","KeyVisitor","invalid","visitAssertNotNullExpr","visitCastExpr","visitCommaExpr","ast","entry","quote","mapKey","arg","o.ReadVarExpr","CORE","Identifiers","NEW_METHOD","TRANSFORM_METHOD","PATCH_DEPS","core","namespaceHTML","namespaceMathML","namespaceSVG","elementStart","elementEnd","advance","syntheticHostProperty","syntheticHostListener","attributeInterpolate1","attributeInterpolate2","attributeInterpolate3","attributeInterpolate4","attributeInterpolate5","attributeInterpolate6","attributeInterpolate7","attributeInterpolate8","attributeInterpolateV","classProp","elementContainerStart","elementContainerEnd","elementContainer","styleMap","styleMapInterpolate1","styleMapInterpolate2","styleMapInterpolate3","styleMapInterpolate4","styleMapInterpolate5","styleMapInterpolate6","styleMapInterpolate7","styleMapInterpolate8","styleMapInterpolateV","classMap","classMapInterpolate1","classMapInterpolate2","classMapInterpolate3","classMapInterpolate4","classMapInterpolate5","classMapInterpolate6","classMapInterpolate7","classMapInterpolate8","classMapInterpolateV","styleProp","stylePropInterpolate1","stylePropInterpolate2","stylePropInterpolate3","stylePropInterpolate4","stylePropInterpolate5","stylePropInterpolate6","stylePropInterpolate7","stylePropInterpolate8","stylePropInterpolateV","nextContext","resetView","templateCreate","enableBindings","disableBindings","getCurrentView","textInterpolate","textInterpolate1","textInterpolate2","textInterpolate3","textInterpolate4","textInterpolate5","textInterpolate6","textInterpolate7","textInterpolate8","textInterpolateV","restoreView","pureFunction0","pureFunction1","pureFunction2","pureFunction3","pureFunction4","pureFunction5","pureFunction6","pureFunction7","pureFunction8","pureFunctionV","pipeBind1","pipeBind2","pipeBind3","pipeBind4","pipeBindV","hostProperty","property","propertyInterpolate","propertyInterpolate1","propertyInterpolate2","propertyInterpolate3","propertyInterpolate4","propertyInterpolate5","propertyInterpolate6","propertyInterpolate7","propertyInterpolate8","propertyInterpolateV","i18n","i18nAttributes","i18nExp","i18nStart","i18nEnd","i18nApply","i18nPostprocess","pipe","projection","projectionDef","reference","inject","injectAttribute","directiveInject","invalidFactory","invalidFactoryDep","templateRefExtractor","forwardRef","resolveForwardRef","ɵɵdefineInjectable","declareInjectable","InjectableDeclaration","resolveWindow","resolveDocument","resolveBody","defineComponent","declareComponent","setComponentScope","declareFactory","FactoryTarget","defineDirective","declareDirective","InjectorDef","InjectorDeclaration","defineInjector","declareInjector","defineNgModule","declareNgModule","setNgModuleScope","registerNgModuleType","PipeDeclaration","definePipe","declarePipe","declareClassMetadata","setClassMetadata","queryRefresh","viewQuery","loadQuery","contentQuery","NgOnChangesFeature","InheritDefinitionFeature","CopyDefinitionFeature","StandaloneFeature","ProvidersFeature","HostDirectivesFeature","listener","sanitizeHtml","sanitizeStyle","sanitizeResourceUrl","sanitizeScript","sanitizeUrl","sanitizeUrlOrResourceUrl","trustConstantHtml","trustConstantResourceUrl","validateIframeAttribute","DASH_CASE_REGEXP","_splitAt","input","character","defaultValues","characterIndex","indexOf","trim","error","stringify","token","Array","isArray","overriddenName","newLineIndex","substring","_global","global","window","self","WorkerGlobalScope","SourceMapGenerator","file","lines","lastCol0","hasMappings","addSource","url","content","sourcesContent","has","addLine","addMapping","col0","sourceUrl","sourceLine0","sourceCol0","currentLine","toJSON","sourcesIndex","sources","from","mappings","lastSourceIndex","lastSourceLine0","lastSourceCol0","segments","segment","segAsStr","toBase64VLQ","version","sourceRoot","toJsComment","toBase64String","b64","encoded","utf8Encode","codePoint","charCodeAt","i1","i2","i3","toBase64Digit","JSON","digit","_SINGLE_QUOTE_ESCAPE_STRING_RE","_LEGAL_IDENTIFIER_RE","_EmittedLine","indent","partsLength","parts","srcSpans","EmitterVisitorContext","_indent","_lines","_currentLine","println","lastPart","print","lineIsEmpty","lineLength","part","newLine","removeEmptyLastLine","pop","incIndent","decIndent","toSource","sourceLines","_createIndent","toSourceMapGenerator","genFilePath","startsAtLine","firstOffsetMapped","mapFirstOffsetIfNeeded","line","lineIdx","spans","spanIdx","span","source","start","sourceLine","sourceCol","col","spanOf","column","emittedLine","columnsLeft","AbstractEmitterVisitor","_escapeDollarInStrings","printLeadingComments","ctx","undefined","comment","o.JSDocComment","split","hasElseCase","visitAllStatements","lineWasEmpty","visitAllExpressions","escapeIdentifier","head","opStr","o.UnaryOperator","o.BinaryOperator","visitAllObjects","separator","handler","incrementedIndent","escapeDollar","alwaysQuote","test","numParams","o.expressionType","prepareSyntheticPropertyName","accessor","escapedName","phase","guard","guardExpr","o.ExternalExpr","guardNotDefined","o.BinaryOperatorExpr","o.TypeofExpr","o.literal","guardUndefinedOrTrue","wrapReference","wrapped","o.WrappedNodeExpr","refs","shouldForwardDeclare","ref","convertFromMaybeForwardRefExpression","generateForwardRef","o.importExpr","R3FactoryDelegateType","compileFactoryFunction","meta","t","baseFactoryVar","typeForCtor","isDelegatedFactoryMetadata","internalType","ctorExpr","deps","o.InstantiateExpr","injectDependencies","target","retExpr","makeConditionalFactory","nonCtorExpr","r","o.NULL_EXPR","ctorStmt","R3","o.ifStmt","delegateArgs","delegateDeps","delegateType","Class","o.InvokeFunctionExpr","delegate","isExpressionFactoryMetadata","getInheritedFactoryCall","getInheritedFactory","baseFactory","factoryFn","o.DeclareVarStmt","createFactoryType","ctorDepsType","createCtorDepsType","hasTypes","attributeTypes","dep","createCtorDepType","attributeNameType","optional","host","skipSelf","o.NONE_TYPE","FactoryDeclaration","typeWithParameters","typeArgumentCount","compileInjectDependency","flags","Pipe","flagsParam","injectArgs","injectFn","getInjectFn","Component","Directive","NgModule","Injectable","Comment","_visitor","Text","BoundText","visitBoundText","TextAttribute","keySpan","valueSpan","visitTextAttribute","BoundAttribute","securityContext","unit","visitBoundAttribute","BoundEvent","handlerSpan","event","targetOrPhase","visitBoundEvent","Element","attributes","inputs","outputs","references","startSourceSpan","endSourceSpan","visitElement","Template","templateAttrs","variables","visitTemplate","Content","visitContent","Variable","visitVariable","Reference","visitReference","Icu","vars","placeholders","newNode","Message","placeholderToMessage","serializeMessage","messageNodes","LocalizeMessageStringVisitor","n","filePath","startLine","startCol","endLine","endCol","Container","TagPlaceholder","Placeholder","IcuPlaceholder","expressionPlaceholder","_Visitor","visitTag","strAttrs","_serializeAttributes","strChildren","visitDeclaration","decl","visitDoctype","doctype","rootTag","dtd","toPublicName","internalName","toUpperCase","I18N_ATTR_PREFIX","isI18nAttribute","startsWith","isI18nRootNode","i18n.Message","isSingleI18nIcu","i18n.Icu","hasI18nMeta","icuFromI18nMessage","wrapI18nPlaceholder","contextId","startsAt","placeholdersToParams","updatePlaceholderMap","assembleBoundTextPlaceholders","bindingStartIndex","startIdx","find","i18n.Container","i18n.Placeholder","idx","formatI18nPlaceholderNamesInMap","useCamelCase","_params","formatI18nPlaceholderName","publicName","chunks","postfix","shift","getTranslationConstPrefix","extra","declareI18nVariable","UNSAFE_OBJECT_KEY_NAME_REGEXP","TEMPORARY_NAME","CONTEXT_NAME","RENDER_FLAGS","RESTORED_VIEW_CONTEXT_NAME","CHAINABLE_INSTRUCTIONS","Set","invokeInstruction","asLiteral","keepDeclared","getOwnPropertyNames","mapToExpression","declaredName","minifiedName","needsDeclaredName","trimTrailingNulls","parameters","o.isNull","query","constantPool","predicate","selectors","DefinitionMap","toLiteralMap","getInterpolationArgsLength","interpolation","strings","getInstructionStatements","instructions","pendingExpression","pendingExpressionType","chainLength","resolvedParams","paramsOrFn","resolveForwardRefs","factoryMeta","useClass","useClassOnSelf","delegateToFactory","useFactory","useValue","useExisting","injectableProps","providedIn","createInjectableType","o.ExpressionType","unwrapForwardRefs","createFactoryFunction","UNUSABLE_INTERPOLATION_REGEXPS","InterpolationConfig","markers","identifier","regexp","assertInterpolationSymbols","DEFAULT_INTERPOLATION_CONFIG","$LBRACE","$RBRACE","isWhitespace","code","isDigit","isAsciiLetter","isNewLine","isOctalDigit","isQuote","ParseLocation","offset","moveBy","delta","priorLine","lastIndexOf","fromCharCode","ch","getContext","maxChars","maxLines","startOffset","endOffset","ctxChars","ctxLines","before","after","ParseSourceFile","ParseSourceSpan","fullStart","details","ParseErrorLevel","ParseError","level","ERROR","contextualMessage","_anonymousTypeIndex","sanitizeIdentifier","makeTemplateObjectPolyfill","AbstractJsEmitterVisitor","_visitParams","policy","trustedScriptFromString","script","getPolicy","trustedTypes","createPolicy","createScript","s","eval","bind","JitEvaluator","evaluateStatements","refResolver","createSourceMaps","converter","JitEmitterVisitor","createRoot","isUseStrictStatement","statement","createReturnStmt","evaluateCode","getArgs","createSourceMap","fnBody","fnArgNames","fnArgValues","argName","emptyFn","newTrustedFunctionForJIT","headerLines","executeFunction","_evalArgNames","_evalArgValues","_evalExportedVars","o.LiteralMapExpr","resultVar","o.LiteralMapEntry","_emitReferenceToExternal","resolveExternalReference","Exported","identifierName","compileIdentifier","__anonymousType","__forward_ref__","compileInjector","definitionMap","providers","imports","createInjectorType","R3JitReflector","hasOwnProperty","R3SelectorScopeMode","R3TemplateDependencyKind","ParsedPropertyType","_Mode","compileNgModule","adjacentType","bootstrap","declarations","exports","schemas","containsForwardDecls","selectorScopeMode","refsToArray","Inline","SideEffect","setNgModuleScopeCall","generateSetNgModuleScopeCall","moduleType","scopeMap","fnCall","guardedCall","jitOnlyGuardedExpression","guardedExpression","iife","createNgModuleType","includeImportTypes","publicDeclarationTypes","NgModuleDeclaration","tupleTypeOf","tupleOfTypes","types","o.typeofExpr","typeofTypes","compilePipeFromMetadata","metadata","definitionMapValues","pipeName","isStandalone","createPipeType","ParserError","errLocation","ctxLocation","ParseSpan","toAbsolute","absoluteOffset","AbsoluteSourceSpan","AST","ASTWithName","nameSpan","EmptyExpr","ImplicitReceiver","visitImplicitReceiver","ThisReceiver","visitThisReceiver","Chain","visitChain","Conditional","trueExp","falseExp","visitConditional","PropertyRead","visitPropertyRead","PropertyWrite","visitPropertyWrite","SafePropertyRead","visitSafePropertyRead","KeyedRead","visitKeyedRead","SafeKeyedRead","visitSafeKeyedRead","KeyedWrite","visitKeyedWrite","BindingPipe","visitPipe","LiteralPrimitive","visitLiteralPrimitive","LiteralArray","visitLiteralArray","LiteralMap","visitLiteralMap","Interpolation","visitInterpolation","Binary","operation","left","right","visitBinary","Unary","binaryOp","binaryLeft","binaryRight","visitUnary","PrefixNot","visitPrefixNot","NonNullAssert","visitNonNullAssert","Call","argumentSpan","visitCall","SafeCall","visitSafeCall","ASTWithSource","location","errors","visitASTWithSource","VariableBinding","ExpressionBinding","RecursiveAstVisitor","visitAll","asts","AstTransformer","createPlus","createMinus","AstMemoryEfficientTransformer","obj","modified","ParsedProperty","isLiteral","LITERAL_ATTR","isAnimation","ANIMATION","ParsedEvent","ParsedVariable","BoundElementProperty","EventHandlerVars","localResolver","implicitReceiver","action","bindingId","baseSourceSpan","implicitReceiverAccesses","globals","DefaultLocalResolver","actionWithoutBuiltins","converterFactory","convertBuiltins","_BuiltinAstConverter","convertPropertyBindingBuiltins","createLiteralArrayConverter","argCount","createLiteralMapConverter","createPipeConverter","_AstToIrVisitor","actionStmts","flattenStatements","prependTemporaryDecls","temporaryCount","unshift","temporaryDeclaration","usesImplicitReceiver","notifyImplicitReceiverUse","lastStatement","o.ExpressionStatement","ConvertPropertyBindingResult","stmts","currValExpr","convertPropertyBinding","expressionWithoutBuiltins","outputExpr","getStatementsFromVisitor","temporaryName","temporaryNumber","ensureExpressionMode","mode","convertToStatementIfNeeded","cdAst.AstTransformer","_converterFactory","BuiltinFunctionCall","_localResolver","_implicitReceiver","supportsInterpolation","_currentTemporary","op","o.UnaryOperatorExpr","_visit","convertSourceSpan","convertNullishCoalesce","ensureStatementMode","InterpolationExpression","leftMostSafe","leftMostSafeNode","convertSafeAccess","maybeRestoreView","_getLocal","cdAst.ThisReceiver","getLocal","o.not","prevUsesImplicitReceiver","addImplicitReceiverAccess","varExpr","localExpr","o.ReadPropExpr","cdAst.PropertyRead","convertedArgs","cdAst.ImplicitReceiver","_resultMap","_nodeMap","temporary","needsTemporaryInSafeAccess","allocateTemporary","cdAst.SafeCall","cdAst.Call","cdAst.SafeKeyedRead","cdAst.KeyedRead","access","delete","releaseTemporary","visitSome","some","tempNumber","output","unsupported","cdAst.EmptyExpr","_SECURITY_SCHEMA","SECURITY_SCHEMA","registerContext","HTML","STYLE","URL","RESOURCE_URL","specs","spec","IFRAME_SECURITY_SENSITIVE_ATTRS","isIframeSecuritySensitiveAttr","attrName","animationKeywords","ShadowCss","strictStyling","_animationDeclarationKeyframesRe","shimCssText","cssText","hostSelector","commentsWithHash","extractCommentsWithHash","_commentWithHashRe","stripComments","_commentRe","_insertDirectives","_scopeCssText","_insertPolyfillDirectivesInCssText","_insertPolyfillRulesInCssText","_scopeKeyframesRelatedCss","scopeSelector","unscopedKeyframesSet","scopedKeyframesCssText","processRules","rule","_scopeLocalKeyframeDeclarations","_scopeAnimationRule","_","keyframeName","endSpaces","unescapeQuotes","_scopeAnimationKeyframe","keyframe","spaces1","spaces2","animationDeclarations","leadingSpaces","quotedName","nonQuotedName","_match","commaSeparatedKeyframes","_cssContentNextSelectorRe","m","_cssContentRuleRe","unscopedRules","_extractUnscopedRulesFromCssText","_insertPolyfillHostInCssText","_convertColonHost","_convertColonHostContext","_convertShadowDOMSelectors","_scopeSelectors","_cssContentUnscopedRuleRe","_cssColonHostRe","hostSelectors","otherSelectors","convertedSelectors","hostSelectorArray","p","convertedSelector","_polyfillHostNoCombinator","_polyfillHost","_cssColonHostContextReGlobal","selectorText","contextSelectorGroups","_cssColonHostContextRe","newContextSelectors","contextSelectorGroupsLength","repeatGroups","contextSelectors","combineHostContextSelectors","hostMarker","_polyfillHostRe","otherSelectorsHasHost","combined","contextSelector","previousSelectors","_shadowDOMSelectorsRe","pattern","_scopeSelector","_stripScopingSelectors","CssRule","_shadowDeepSelectors","_polyfillHostNoCombinatorRe","strict","deepParts","shallowPart","otherParts","_selectorNeedsScoping","_applyStrictSelectorScope","_applySelectorScope","_makeScopeMatcher","_selectorReSuffix","_applySimpleSelectorScope","replaceBy","hnc","colon","_scopeSelectorPart","scopedP","matches","safeContent","SafeSelector","scopedSelector","startIndex","sep","shouldScope","restore","_colonHostContextRe","_polyfillHostContext","_colonHostRe","_escapeRegexMatches","_content","pseudo","_ph","keep","_parenSuffix","BLOCK_PLACEHOLDER","_ruleRe","CONTENT_PAIRS","COMMA_IN_PLACEHOLDER","SEMI_IN_PLACEHOLDER","COLON_IN_PLACEHOLDER","_cssCommaInPlaceholderReGlobal","_cssSemiInPlaceholderReGlobal","_cssColonInPlaceholderReGlobal","ruleCallback","escaped","escapeInStrings","currentQuoteChar","ESCAPE_IN_STRING_MAP","substr","inputWithEscapedBlocks","escapeBlocks","charPairs","resultParts","escapedBlocks","openChar","closeChar","openCharCount","nonBlockStartIndex","blockStartIndex","StringWithEscapedBlocks","nextBlockIndex","unescapeInStrings","escapedString","suffix","contentPrefix","blocks","isQuoted","groups","multiples","stripUnnecessaryQuotes","qS","tempValue","hyphenate","v","StylingBuilder","_directiveExpr","_hasInitialValues","hasBindings","hasBindingsWithPipes","_classMapInput","_styleMapInput","_singleStyleInputs","_singleClassInputs","_lastStylingInput","_firstStylingInput","_initialStyleValues","_initialClassValues","registerBoundInput","binding","registerInputBasedOnName","registerStyleInput","registerClassInput","isStyle","isMapBased","isEmptyExpression","isCssCustomProperty","hasOverrideFlag","bindingSuffix","parseProperty","registerIntoMap","_stylesIndex","_checkForPipes","_classesIndex","registerStyleAttr","styles","parenDepth","valueStart","propStart","currentProp","valueHasQuotes","styleVal","parseStyle","registerClassAttr","populateInitialStylingAttrs","assignHostAttrs","buildClassMapInstruction","valueConverter","_buildMapBasedInstruction","buildStyleMapInstruction","isClassBased","stylingInput","totalBindingSlotsRequired","mapValue","getClassMapInterpolationExpression","getStyleMapInterpolationExpression","calls","allocateBindingSlots","convertFn","convertResult","_buildSingleInputs","getInterpolationExpressionFn","previousInstruction","referenceForCall","call","_buildClassInputs","_buildStyleInputs","getStylePropInterpolationExpression","buildUpdateLevelInstructions","styleMapInstruction","classMapInstruction","overrideIndex","unitIndex","TokenType","KEYWORDS","Lexer","tokenize","scanner","_Scanner","tokens","scanToken","Token","numValue","strValue","isCharacter","Character","isNumber","isString","isOperator","Operator","isIdentifier","Identifier","isPrivateIdentifier","PrivateIdentifier","isKeyword","Keyword","isKeywordLet","isKeywordAs","isKeywordNull","isKeywordUndefined","isKeywordTrue","isKeywordFalse","isKeywordThis","isError","toNumber","newCharacterToken","newOperatorToken","EOF","peek","isIdentifierStart","scanIdentifier","chars.isDigit","scanNumber","chars.$LBRACE","chars.$RBRACE","scanCharacter","scanString","scanPrivateIdentifier","scanOperator","scanQuestion","scanComplexOperator","chars.isWhitespace","twoCode","two","threeCode","three","isIdentifierPart","newKeywordToken","newIdentifierToken","newPrivateIdentifierToken","simple","hasSeparators","isExponentStart","isExponentSign","parseIntAutoRadix","parseInt","isNaN","parseFloat","newNumberToken","marker","unescapedCode","hex","unescape","last","newStringToken","position","newErrorToken","chars.isAsciiLetter","SplitInterpolation","offsets","TemplateBindingParseResult","templateBindings","warnings","Parser","_lexer","parseAction","isAssignmentEvent","interpolationConfig","_checkNoInterpolation","sourceToLex","_stripComments","_ParseAST","parseChain","parseBinding","_parseBindingAst","checkSimpleExpression","checker","SimpleExpressionChecker","parseSimpleBinding","_reportError","parseTemplateBindings","templateKey","templateValue","templateUrl","absoluteKeyOffset","absoluteValueOffset","parseInterpolation","interpolatedTokens","splitInterpolation","expressionNodes","expressionText","createInterpolationAst","parseInterpolationExpression","inputToTemplateIndexMap","getIndexMapForOriginalTemplate","offsetMap","consumedInOriginalTemplate","consumedInInput","tokenIndex","currentToken","decoded","lengthOfParts","sum","atInterpolation","extendLastString","interpStart","interpEnd","exprStart","exprEnd","_getInterpolationEndIndex","fullEnd","piece","wrapLiteralPrimitive","_commentStart","outerQuote","nextChar","chars.isQuote","endIndex","charIndex","_forEachUnquotedChar","expressionEnd","currentQuote","escapeCount","ParseContextFlags","TagContentType","parseFlags","rparensExpected","rbracketsExpected","rbracesExpected","next","atEOF","inputIndex","currentEndIndex","currentAbsoluteOffset","artificialEndIndex","tmp","serial","sourceSpanCache","withContext","cb","ret","consumeOptionalCharacter","peekKeywordLet","peekKeywordAs","expectCharacter","consumeOptionalOperator","expectOperator","prettyPrintToken","tok","expectIdentifierOrKeyword","_reportErrorForPrivateIdentifier","expectIdentifierOrKeywordOrString","exprs","parsePipe","errorIndex","artificialStart","artificialEnd","parseExpression","nameStart","fullSpanEnd","nameId","parseConditional","parseLogicalOr","yes","no","parseLogicalAnd","parseNullishCoalescing","parseEquality","parseRelational","parseAdditive","parseMultiplicative","parsePrefix","parseCallChain","parsePrimary","parseAccessMember","parseCall","parseKeyedReadOrWrite","parseExpressionList","parseLiteralMap","literalValue","terminator","keyStart","readReceiver","isSafe","Writable","consumeOptionalAssignment","argumentStart","parseCallArguments","positionals","expectTemplateBindingKey","operatorFound","bindings","parseDirectiveKeywordBindings","letBinding","parseLetBinding","parseAsBinding","consumeStatementTerminator","getDirectiveBoundTarget","spanEnd","asBinding","spanStart","locationText","skip","extraMessage","errorMessage","NodeWithI18n","Expansion","switchValue","switchValueSourceSpan","visitExpansion","ExpansionCase","valueSourceSpan","expSourceSpan","visitExpansionCase","Attribute","valueTokens","visitAttribute","visitComment","astResult","splitNsName","elementName","colonIndex","isNgContainer","isNgContent","getNsPrefix","fullName","localName","ElementSchemaRegistry","SCHEMA","_ATTR_TO_PROP","class","for","formaction","innerHtml","readonly","tabindex","_PROP_TO_ATTR","inverted","propertyName","attributeName","DomElementSchemaRegistry","_eventSchema","encodedType","events","strType","strProperties","properties","typeNames","superName","_schema","superType","superEvent","hasProperty","propName","schemaMetas","schema","CUSTOM_ELEMENTS_SCHEMA","hasElement","isAttribute","getMappedPropName","NONE","getDefaultComponentElementName","validateProperty","validateAttribute","allKnownElementNames","allKnownAttributesOfElement","elementProperties","allKnownEventsOfElement","normalizeAnimationStyleProperty","dashCaseToCamelCase","normalizeAnimationStyleValue","camelCaseProp","userProvidedProp","val","strVal","errorMsg","_isPixelDimensionStyle","valAndSuffixMatch","HtmlTagDefinition","closedByChildren","implicitNamespacePrefix","contentType","PARSABLE_DATA","closedByParent","ignoreFirstLf","preventNamespaceInheritance","canSelfClose","isClosedByChild","getContentType","default","DEFAULT_TAG_DEFINITION","TAG_DEFINITIONS","getHtmlTagDefinition","area","embed","link","img","hr","br","track","wbr","thead","tbody","tfoot","tr","td","th","svg","foreignObject","math","li","dt","dd","rb","rt","rtc","rp","optgroup","option","pre","listing","style","RAW_TEXT","title","ESCAPABLE_RAW_TEXT","textarea","knownTagName","NAMED_ENTITIES","AElig","AMP","amp","Aacute","Abreve","Acirc","Acy","Afr","Agrave","Alpha","Amacr","Aogon","Aopf","ApplyFunction","af","Aring","angst","Ascr","Assign","colone","coloneq","Atilde","Auml","Backslash","setminus","setmn","smallsetminus","ssetmn","Barv","Barwed","doublebarwedge","Bcy","Because","becaus","because","Bernoullis","Bscr","bernou","Beta","Bfr","Bopf","Breve","breve","Bumpeq","HumpDownHump","bump","CHcy","COPY","copy","Cacute","Cap","CapitalDifferentialD","DD","Cayleys","Cfr","Ccaron","Ccedil","Ccirc","Cconint","Cdot","Cedilla","cedil","CenterDot","centerdot","middot","Chi","CircleDot","odot","CircleMinus","ominus","CirclePlus","oplus","CircleTimes","otimes","ClockwiseContourIntegral","cwconint","CloseCurlyDoubleQuote","rdquo","rdquor","CloseCurlyQuote","rsquo","rsquor","Colon","Proportion","Colone","Congruent","equiv","Conint","DoubleContourIntegral","ContourIntegral","conint","oint","Copf","complexes","Coproduct","coprod","CounterClockwiseContourIntegral","awconint","Cross","Cscr","Cup","CupCap","asympeq","DDotrahd","DJcy","DScy","DZcy","Dagger","ddagger","Darr","Dashv","DoubleLeftTee","Dcaron","Dcy","Del","nabla","Delta","Dfr","DiacriticalAcute","acute","DiacriticalDot","dot","DiacriticalDoubleAcute","dblac","DiacriticalGrave","grave","DiacriticalTilde","tilde","Diamond","diam","diamond","DifferentialD","Dopf","Dot","DoubleDot","die","uml","DotDot","DotEqual","doteq","esdot","DoubleDownArrow","Downarrow","dArr","DoubleLeftArrow","Leftarrow","lArr","DoubleLeftRightArrow","Leftrightarrow","hArr","iff","DoubleLongLeftArrow","Longleftarrow","xlArr","DoubleLongLeftRightArrow","Longleftrightarrow","xhArr","DoubleLongRightArrow","Longrightarrow","xrArr","DoubleRightArrow","Implies","Rightarrow","rArr","DoubleRightTee","vDash","DoubleUpArrow","Uparrow","uArr","DoubleUpDownArrow","Updownarrow","vArr","DoubleVerticalBar","par","parallel","shortparallel","spar","DownArrow","ShortDownArrow","darr","downarrow","DownArrowBar","DownArrowUpArrow","duarr","DownBreve","DownLeftRightVector","DownLeftTeeVector","DownLeftVector","leftharpoondown","lhard","DownLeftVectorBar","DownRightTeeVector","DownRightVector","rhard","rightharpoondown","DownRightVectorBar","DownTee","top","DownTeeArrow","mapstodown","Dscr","Dstrok","ENG","ETH","Eacute","Ecaron","Ecirc","Ecy","Edot","Efr","Egrave","in","isin","isinv","Emacr","EmptySmallSquare","EmptyVerySmallSquare","Eogon","Eopf","Epsilon","Equal","EqualTilde","eqsim","esim","Equilibrium","rightleftharpoons","rlhar","Escr","expectation","Esim","Eta","Euml","Exists","exist","ExponentialE","ee","exponentiale","Fcy","Ffr","FilledSmallSquare","FilledVerySmallSquare","blacksquare","squarf","squf","Fopf","ForAll","forall","Fouriertrf","Fscr","GJcy","GT","gt","Gamma","Gammad","Gbreve","Gcedil","Gcirc","Gcy","Gdot","Gfr","Gg","ggg","Gopf","GreaterEqual","ge","geq","GreaterEqualLess","gel","gtreqless","GreaterFullEqual","gE","geqq","GreaterGreater","GreaterLess","gl","gtrless","GreaterSlantEqual","geqslant","ges","GreaterTilde","gsim","gtrsim","Gscr","Gt","NestedGreaterGreater","gg","HARDcy","Hacek","caron","Hat","Hcirc","Hfr","Poincareplane","HilbertSpace","Hscr","hamilt","Hopf","quaternions","HorizontalLine","boxh","Hstrok","HumpEqual","bumpe","bumpeq","IEcy","IJlig","IOcy","Iacute","Icirc","Icy","Idot","Ifr","Im","image","imagpart","Igrave","Imacr","ImaginaryI","ii","Integral","int","Intersection","bigcap","xcap","InvisibleComma","ic","InvisibleTimes","it","Iogon","Iopf","Iota","Iscr","imagline","Itilde","Iukcy","Iuml","Jcirc","Jcy","Jfr","Jopf","Jscr","Jsercy","Jukcy","KHcy","KJcy","Kappa","Kcedil","Kcy","Kfr","Kopf","Kscr","LJcy","LT","lt","Lacute","Lambda","Lang","Laplacetrf","Lscr","lagran","Larr","twoheadleftarrow","Lcaron","Lcedil","Lcy","LeftAngleBracket","lang","langle","LeftArrow","ShortLeftArrow","larr","leftarrow","slarr","LeftArrowBar","larrb","LeftArrowRightArrow","leftrightarrows","lrarr","LeftCeiling","lceil","LeftDoubleBracket","lobrk","LeftDownTeeVector","LeftDownVector","dharl","downharpoonleft","LeftDownVectorBar","LeftFloor","lfloor","LeftRightArrow","harr","leftrightarrow","LeftRightVector","LeftTee","dashv","LeftTeeArrow","mapstoleft","LeftTeeVector","LeftTriangle","vartriangleleft","vltri","LeftTriangleBar","LeftTriangleEqual","ltrie","trianglelefteq","LeftUpDownVector","LeftUpTeeVector","LeftUpVector","uharl","upharpoonleft","LeftUpVectorBar","LeftVector","leftharpoonup","lharu","LeftVectorBar","LessEqualGreater","leg","lesseqgtr","LessFullEqual","lE","leqq","LessGreater","lessgtr","lg","LessLess","LessSlantEqual","leqslant","les","LessTilde","lesssim","lsim","Lfr","Ll","Lleftarrow","lAarr","Lmidot","LongLeftArrow","longleftarrow","xlarr","LongLeftRightArrow","longleftrightarrow","xharr","LongRightArrow","longrightarrow","xrarr","Lopf","LowerLeftArrow","swarr","swarrow","LowerRightArrow","searr","searrow","Lsh","lsh","Lstrok","Lt","NestedLessLess","ll","Mcy","MediumSpace","Mellintrf","Mscr","phmmat","Mfr","MinusPlus","mnplus","mp","Mopf","Mu","NJcy","Nacute","Ncaron","Ncedil","Ncy","NegativeMediumSpace","NegativeThickSpace","NegativeThinSpace","NegativeVeryThinSpace","ZeroWidthSpace","NewLine","Nfr","NoBreak","NonBreakingSpace","nbsp","Nopf","naturals","Not","NotCongruent","nequiv","NotCupCap","NotDoubleVerticalBar","npar","nparallel","nshortparallel","nspar","NotElement","notin","notinva","NotEqual","ne","NotEqualTilde","nesim","NotExists","nexist","nexists","NotGreater","ngt","ngtr","NotGreaterEqual","nge","ngeq","NotGreaterFullEqual","ngE","ngeqq","NotGreaterGreater","nGtv","NotGreaterLess","ntgl","NotGreaterSlantEqual","ngeqslant","nges","NotGreaterTilde","ngsim","NotHumpDownHump","nbump","NotHumpEqual","nbumpe","NotLeftTriangle","nltri","ntriangleleft","NotLeftTriangleBar","NotLeftTriangleEqual","nltrie","ntrianglelefteq","NotLess","nless","nlt","NotLessEqual","nle","nleq","NotLessGreater","ntlg","NotLessLess","nLtv","NotLessSlantEqual","nleqslant","nles","NotLessTilde","nlsim","NotNestedGreaterGreater","NotNestedLessLess","NotPrecedes","npr","nprec","NotPrecedesEqual","npre","npreceq","NotPrecedesSlantEqual","nprcue","NotReverseElement","notni","notniva","NotRightTriangle","nrtri","ntriangleright","NotRightTriangleBar","NotRightTriangleEqual","nrtrie","ntrianglerighteq","NotSquareSubset","NotSquareSubsetEqual","nsqsube","NotSquareSuperset","NotSquareSupersetEqual","nsqsupe","NotSubset","nsubset","vnsub","NotSubsetEqual","nsube","nsubseteq","NotSucceeds","nsc","nsucc","NotSucceedsEqual","nsce","nsucceq","NotSucceedsSlantEqual","nsccue","NotSucceedsTilde","NotSuperset","nsupset","vnsup","NotSupersetEqual","nsupe","nsupseteq","NotTilde","nsim","NotTildeEqual","nsime","nsimeq","NotTildeFullEqual","ncong","NotTildeTilde","nap","napprox","NotVerticalBar","nmid","nshortmid","nsmid","Nscr","Ntilde","Nu","OElig","Oacute","Ocirc","Ocy","Odblac","Ofr","Ograve","Omacr","Omega","ohm","Omicron","Oopf","OpenCurlyDoubleQuote","ldquo","OpenCurlyQuote","lsquo","Oscr","Oslash","Otilde","Otimes","Ouml","OverBar","oline","OverBrace","OverBracket","tbrk","OverParenthesis","PartialD","Pcy","Pfr","Phi","Pi","PlusMinus","plusmn","pm","Popf","primes","Pr","Precedes","pr","prec","PrecedesEqual","preceq","PrecedesSlantEqual","prcue","preccurlyeq","PrecedesTilde","precsim","prsim","Prime","Product","prod","Proportional","propto","varpropto","vprop","Pscr","Psi","QUOT","quot","Qfr","Qopf","rationals","Qscr","RBarr","drbkarow","REG","circledR","reg","Racute","Rang","Rarr","twoheadrightarrow","Rarrtl","Rcaron","Rcedil","Rcy","Re","Rfr","real","realpart","ReverseElement","SuchThat","ni","niv","ReverseEquilibrium","leftrightharpoons","lrhar","ReverseUpEquilibrium","duhar","Rho","RightAngleBracket","rang","rangle","RightArrow","ShortRightArrow","rarr","rightarrow","srarr","RightArrowBar","rarrb","RightArrowLeftArrow","rightleftarrows","rlarr","RightCeiling","rceil","RightDoubleBracket","robrk","RightDownTeeVector","RightDownVector","dharr","downharpoonright","RightDownVectorBar","RightFloor","rfloor","RightTee","vdash","RightTeeArrow","mapsto","RightTeeVector","RightTriangle","vartriangleright","vrtri","RightTriangleBar","RightTriangleEqual","rtrie","trianglerighteq","RightUpDownVector","RightUpTeeVector","RightUpVector","uharr","upharpoonright","RightUpVectorBar","RightVector","rharu","rightharpoonup","RightVectorBar","Ropf","reals","RoundImplies","Rrightarrow","rAarr","Rscr","realine","Rsh","rsh","RuleDelayed","SHCHcy","SHcy","SOFTcy","Sacute","Sc","Scaron","Scedil","Scirc","Scy","Sfr","ShortUpArrow","UpArrow","uarr","uparrow","Sigma","SmallCircle","compfn","Sopf","Sqrt","radic","Square","squ","square","SquareIntersection","sqcap","SquareSubset","sqsub","sqsubset","SquareSubsetEqual","sqsube","sqsubseteq","SquareSuperset","sqsup","sqsupset","SquareSupersetEqual","sqsupe","sqsupseteq","SquareUnion","sqcup","Sscr","Star","sstarf","Sub","Subset","SubsetEqual","sube","subseteq","Succeeds","sc","succ","SucceedsEqual","sce","succeq","SucceedsSlantEqual","sccue","succcurlyeq","SucceedsTilde","scsim","succsim","Sum","Sup","Supset","Superset","sup","supset","SupersetEqual","supe","supseteq","THORN","TRADE","trade","TSHcy","TScy","Tab","Tau","Tcaron","Tcedil","Tcy","Tfr","Therefore","there4","therefore","Theta","ThickSpace","ThinSpace","thinsp","Tilde","sim","thicksim","thksim","TildeEqual","sime","simeq","TildeFullEqual","cong","TildeTilde","ap","approx","asymp","thickapprox","thkap","Topf","TripleDot","tdot","Tscr","Tstrok","Uacute","Uarr","Uarrocir","Ubrcy","Ubreve","Ucirc","Ucy","Udblac","Ufr","Ugrave","Umacr","UnderBar","lowbar","UnderBrace","UnderBracket","bbrk","UnderParenthesis","Union","bigcup","xcup","UnionPlus","uplus","Uogon","Uopf","UpArrowBar","UpArrowDownArrow","udarr","UpDownArrow","updownarrow","varr","UpEquilibrium","udhar","UpTee","bot","bottom","perp","UpTeeArrow","mapstoup","UpperLeftArrow","nwarr","nwarrow","UpperRightArrow","nearr","nearrow","Upsi","upsih","Upsilon","Uring","Uscr","Utilde","Uuml","VDash","Vbar","Vcy","Vdash","Vdashl","Vee","bigvee","xvee","Verbar","Vert","VerticalBar","mid","shortmid","smid","VerticalLine","verbar","vert","VerticalSeparator","VerticalTilde","wr","wreath","VeryThinSpace","hairsp","Vfr","Vopf","Vscr","Vvdash","Wcirc","Wedge","bigwedge","xwedge","Wfr","Wopf","Wscr","Xfr","Xi","Xopf","Xscr","YAcy","YIcy","YUcy","Yacute","Ycirc","Ycy","Yfr","Yopf","Yscr","Yuml","ZHcy","Zacute","Zcaron","Zcy","Zdot","Zeta","Zfr","zeetrf","Zopf","integers","Zscr","aacute","abreve","ac","mstpos","acE","acd","acirc","acy","aelig","afr","agrave","alefsym","aleph","alpha","amacr","amalg","wedge","andand","andd","andslope","andv","ang","angle","ange","angmsd","measuredangle","angmsdaa","angmsdab","angmsdac","angmsdad","angmsdae","angmsdaf","angmsdag","angmsdah","angrt","angrtvb","angrtvbd","angsph","angzarr","aogon","aopf","apE","apacir","ape","approxeq","apid","apos","aring","ascr","midast","atilde","auml","awint","bNot","backcong","bcong","backepsilon","bepsi","backprime","bprime","backsim","bsim","backsimeq","bsime","barvee","barwed","barwedge","bbrktbrk","bcy","bdquo","ldquor","bemptyv","beta","beth","between","twixt","bfr","bigcirc","xcirc","bigodot","xodot","bigoplus","xoplus","bigotimes","xotime","bigsqcup","xsqcup","bigstar","starf","bigtriangledown","xdtri","bigtriangleup","xutri","biguplus","xuplus","bkarow","rbarr","blacklozenge","lozf","blacktriangle","utrif","blacktriangledown","dtrif","blacktriangleleft","ltrif","blacktriangleright","rtrif","blank","blk12","blk14","blk34","block","bne","bnequiv","bnot","bopf","bowtie","boxDL","boxDR","boxDl","boxDr","boxH","boxHD","boxHU","boxHd","boxHu","boxUL","boxUR","boxUl","boxUr","boxV","boxVH","boxVL","boxVR","boxVh","boxVl","boxVr","boxbox","boxdL","boxdR","boxdl","boxdr","boxhD","boxhU","boxhd","boxhu","boxminus","minusb","boxplus","plusb","boxtimes","timesb","boxuL","boxuR","boxul","boxur","boxv","boxvH","boxvL","boxvR","boxvh","boxvl","boxvr","brvbar","bscr","bsemi","bsol","bsolb","bsolhsub","bull","bullet","bumpE","cacute","cap","capand","capbrcup","capcap","capcup","capdot","caps","caret","ccaps","ccaron","ccedil","ccirc","ccups","ccupssm","cdot","cemptyv","cent","cfr","chcy","check","checkmark","chi","cir","cirE","circ","circeq","cire","circlearrowleft","olarr","circlearrowright","orarr","circledS","oS","circledast","oast","circledcirc","ocir","circleddash","odash","cirfnint","cirmid","cirscir","clubs","clubsuit","comma","commat","comp","complement","congdot","copf","copysr","crarr","cross","cscr","csub","csube","csup","csupe","ctdot","cudarrl","cudarrr","cuepr","curlyeqprec","cuesc","curlyeqsucc","cularr","curvearrowleft","cularrp","cup","cupbrcap","cupcap","cupcup","cupdot","cupor","cups","curarr","curvearrowright","curarrm","curlyvee","cuvee","curlywedge","cuwed","curren","cwint","cylcty","dHar","dagger","daleth","dash","hyphen","dbkarow","rBarr","dcaron","dcy","ddarr","downdownarrows","ddotseq","eDDot","deg","demptyv","dfisht","dfr","diamondsuit","diams","digamma","gammad","disin","div","divideontimes","divonx","djcy","dlcorn","llcorner","dlcrop","dollar","dopf","doteqdot","eDot","dotminus","minusd","dotplus","plusdo","dotsquare","sdotb","drcorn","lrcorner","drcrop","dscr","dscy","dsol","dstrok","dtdot","dtri","triangledown","dwangle","dzcy","dzigrarr","eacute","easter","ecaron","ecir","eqcirc","ecirc","ecolon","eqcolon","ecy","edot","efDot","fallingdotseq","efr","eg","egrave","egs","eqslantgtr","egsdot","el","elinters","ell","els","eqslantless","elsdot","emacr","empty","emptyset","emptyv","varnothing","emsp13","emsp14","emsp","eng","ensp","eogon","eopf","epar","eparsl","eplus","epsi","epsilon","epsiv","straightepsilon","varepsilon","equest","questeq","equivDD","eqvparsl","erDot","risingdotseq","erarr","escr","eta","eth","euml","euro","excl","fcy","female","ffilig","fflig","ffllig","ffr","filig","fjlig","flat","fllig","fltns","fnof","fopf","fork","pitchfork","forkv","fpartint","frac12","half","frac13","frac14","frac15","frac16","frac18","frac23","frac25","frac34","frac35","frac38","frac45","frac56","frac58","frac78","frasl","frown","sfrown","fscr","gEl","gtreqqless","gacute","gamma","gap","gtrapprox","gbreve","gcirc","gcy","gdot","gescc","gesdot","gesdoto","gesdotol","gesl","gesles","gfr","gimel","gjcy","glE","gla","glj","gnE","gneqq","gnap","gnapprox","gne","gneq","gnsim","gopf","gscr","gsime","gsiml","gtcc","gtcir","gtdot","gtrdot","gtlPar","gtquest","gtrarr","gvertneqq","gvnE","hardcy","harrcir","harrw","leftrightsquigarrow","hbar","hslash","planck","plankv","hcirc","hearts","heartsuit","hellip","mldr","hercon","hfr","hksearow","searhk","hkswarow","swarhk","hoarr","homtht","hookleftarrow","larrhk","hookrightarrow","rarrhk","hopf","horbar","hscr","hstrok","hybull","iacute","icirc","icy","iecy","iexcl","ifr","igrave","iiiint","qint","iiint","tint","iinfin","iiota","ijlig","imacr","imath","inodot","imof","imped","incare","infin","infintie","intcal","intercal","intlarhk","intprod","iprod","iocy","iogon","iopf","iota","iquest","iscr","isinE","isindot","isins","isinsv","itilde","iukcy","iuml","jcirc","jcy","jfr","jmath","jopf","jscr","jsercy","jukcy","kappa","kappav","varkappa","kcedil","kcy","kfr","kgreen","khcy","kjcy","kopf","kscr","lAtail","lBarr","lEg","lesseqqgtr","lHar","lacute","laemptyv","lambda","langd","lap","lessapprox","laquo","larrbfs","larrfs","larrlp","looparrowleft","larrpl","larrsim","larrtl","leftarrowtail","lat","latail","late","lates","lbarr","lbbrk","lbrace","lcub","lbrack","lsqb","lbrke","lbrksld","lbrkslu","lcaron","lcedil","lcy","ldca","ldrdhar","ldrushar","ldsh","le","leq","leftleftarrows","llarr","leftthreetimes","lthree","lescc","lesdot","lesdoto","lesdotor","lesg","lesges","lessdot","ltdot","lfisht","lfr","lgE","lharul","lhblk","ljcy","llhard","lltri","lmidot","lmoust","lmoustache","lnE","lneqq","lnap","lnapprox","lne","lneq","lnsim","loang","loarr","longmapsto","xmap","looparrowright","rarrlp","lopar","lopf","loplus","lotimes","lowast","loz","lozenge","lpar","lparlt","lrhard","lrm","lrtri","lsaquo","lscr","lsime","lsimg","lsquor","sbquo","lstrok","ltcc","ltcir","ltimes","ltlarr","ltquest","ltrPar","ltri","triangleleft","lurdshar","luruhar","lvertneqq","lvnE","mDDot","macr","strns","male","malt","maltese","mcomma","mcy","mdash","mfr","mho","micro","midcir","minusdu","mlcp","models","mopf","mscr","mu","multimap","mumap","nGg","nGt","nLeftarrow","nlArr","nLeftrightarrow","nhArr","nLl","nLt","nRightarrow","nrArr","nVDash","nVdash","nacute","nang","napE","napid","napos","natur","natural","ncap","ncaron","ncedil","ncongdot","ncup","ncy","ndash","neArr","nearhk","nedot","nesear","toea","nfr","nharr","nleftrightarrow","nhpar","nis","nisd","njcy","nlE","nleqq","nlarr","nleftarrow","nldr","nopf","not","notinE","notindot","notinvb","notinvc","notnivb","notnivc","nparsl","npart","npolint","nrarr","nrightarrow","nrarrc","nrarrw","nscr","nsub","nsubE","nsubseteqq","nsup","nsupE","nsupseteqq","ntilde","nu","numero","numsp","nvDash","nvHarr","nvap","nvdash","nvge","nvgt","nvinfin","nvlArr","nvle","nvlt","nvltrie","nvrArr","nvrtrie","nvsim","nwArr","nwarhk","nwnear","oacute","ocirc","ocy","odblac","odiv","odsold","oelig","ofcir","ofr","ogon","ograve","ogt","ohbar","olcir","olcross","olt","omacr","omega","omicron","omid","oopf","opar","operp","vee","ord","order","orderof","oscr","ordf","ordm","origof","oror","orslope","orv","oslash","osol","otilde","otimesas","ouml","ovbar","para","parsim","parsl","pcy","percnt","period","permil","pertenk","pfr","phi","phiv","straightphi","varphi","phone","pi","piv","varpi","planckh","plusacir","pluscir","plusdu","pluse","plussim","plustwo","pointint","popf","pound","prE","prap","precapprox","precnapprox","prnap","precneqq","prnE","precnsim","prnsim","prime","profalar","profline","profsurf","prurel","pscr","psi","puncsp","qfr","qopf","qprime","qscr","quatint","quest","rAtail","rHar","race","racute","raemptyv","rangd","raquo","rarrap","rarrbfs","rarrc","rarrfs","rarrpl","rarrsim","rarrtl","rightarrowtail","rarrw","rightsquigarrow","ratail","ratio","rbbrk","rbrace","rcub","rbrack","rsqb","rbrke","rbrksld","rbrkslu","rcaron","rcedil","rcy","rdca","rdldhar","rdsh","rect","rfisht","rfr","rharul","rho","rhov","varrho","rightrightarrows","rrarr","rightthreetimes","rthree","ring","rlm","rmoust","rmoustache","rnmid","roang","roarr","ropar","ropf","roplus","rotimes","rpar","rpargt","rppolint","rsaquo","rscr","rtimes","rtri","triangleright","rtriltri","ruluhar","rx","sacute","scE","scap","succapprox","scaron","scedil","scirc","scnE","succneqq","scnap","succnapprox","scnsim","succnsim","scpolint","scy","sdot","sdote","seArr","sect","semi","seswar","tosa","sext","sfr","sharp","shchcy","shcy","shy","sigma","sigmaf","sigmav","varsigma","simdot","simg","simgE","siml","simlE","simne","simplus","simrarr","smashp","smeparsl","smile","ssmile","smt","smte","smtes","softcy","sol","solb","solbar","sopf","spades","spadesuit","sqcaps","sqcups","sscr","star","sub","subset","subE","subseteqq","subdot","subedot","submult","subnE","subsetneqq","subne","subsetneq","subplus","subrarr","subsim","subsub","subsup","sung","sup1","sup2","sup3","supE","supseteqq","supdot","supdsub","supedot","suphsol","suphsub","suplarr","supmult","supnE","supsetneqq","supne","supsetneq","supplus","supsim","supsub","supsup","swArr","swnwar","szlig","tau","tcaron","tcedil","tcy","telrec","tfr","theta","thetasym","thetav","vartheta","thorn","times","timesbar","timesd","topbot","topcir","topf","topfork","tprime","triangle","utri","triangleq","trie","tridot","triminus","triplus","trisb","tritime","trpezium","tscr","tscy","tshcy","tstrok","uHar","uacute","ubrcy","ubreve","ucirc","ucy","udblac","ufisht","ufr","ugrave","uhblk","ulcorn","ulcorner","ulcrop","ultri","umacr","uogon","uopf","upsi","upsilon","upuparrows","uuarr","urcorn","urcorner","urcrop","uring","urtri","uscr","utdot","utilde","uuml","uwangle","vBar","vBarv","vangrt","varsubsetneq","vsubne","varsubsetneqq","vsubnE","varsupsetneq","vsupne","varsupsetneqq","vsupnE","vcy","veebar","veeeq","vellip","vfr","vopf","vscr","vzigzag","wcirc","wedbar","wedgeq","weierp","wp","wfr","wopf","wscr","xfr","xi","xnis","xopf","xscr","yacute","yacy","ycirc","ycy","yen","yfr","yicy","yopf","yscr","yucy","yuml","zacute","zcaron","zcy","zdot","zeta","zfr","zhcy","zigrarr","zopf","zscr","zwj","zwnj","ngsp","TokenError","tokenType","TokenizeResult","nonNormalizedIcuExpressions","_CR_OR_CRLF_REGEXP","_unexpectedCharacterErrorMsg","charCode","_unknownEntityErrorMsg","entitySrc","CharacterReferenceType","_ControlFlowError","_Tokenizer","_file","_getTagDefinition","options","_currentTokenStart","_currentTokenType","_expansionCaseStack","_inInterpolation","_tokenizeIcu","tokenizeExpansionForms","_interpolationConfig","_leadingTriviaCodePoints","leadingTriviaChars","codePointAt","endPos","startPos","_cursor","EscapedCharacterCursor","PlainCharacterCursor","_preserveLineEndings","preserveLineEndings","_escapedString","_i18nNormalizeLineEndingsInICUs","i18nNormalizeLineEndingsInICUs","init","handleError","_processCarriageReturns","_attemptCharCode","_consumeCdata","_consumeComment","_consumeDocType","_consumeTagClose","_consumeTagOpen","_tokenizeExpansionForm","_consumeWithInterpolation","_isTextEnd","_isTagStart","_beginToken","_endToken","isExpansionFormStart","_consumeExpansionFormStart","isExpansionCaseStart","_isInExpansionForm","_consumeExpansionCaseStart","_isInExpansionCase","_consumeExpansionCaseEnd","_consumeExpansionFormEnd","getSpan","_createError","CursorError","cursor","_attemptCharCodeCaseInsensitive","compareCharCodeCaseInsensitive","code1","code2","toUpperCaseCharCode","_requireCharCode","_attemptStr","chars","charsLeft","initialPosition","_attemptStrCaseInsensitive","_requireStr","_attemptCharCodeUntilFn","_requireCharCodeUntilFn","diff","_attemptUntilChar","_readChar","fromCodePoint","_consumeEntity","textTokenType","isHex","codeStart","isDigitEntityEnd","entityType","HEX","DEC","_unparsableEntityErrorMsg","entityStr","getChars","strNum","isNamedEntityEnd","_consumeRawText","consumeEntities","endMarkerPredicate","tagCloseStart","foundEndMarker","contentStart","_consumePrefixAndName","nameOrPrefixStart","isPrefixEnd","isNameEnd","openTagToken","_consumeTagOpenStart","isNotWhitespace","_consumeAttributeName","_consumeAttributeValue","_consumeTagOpenEnd","contentTokenType","_consumeRawTextWithTagClose","attrNameStart","prefixAndName","quoteChar","_consumeQuote","endPredicate","_readUntil","normalizedCondition","conditionToken","interpolationTokenType","endInterpolation","_consumeInterpolation","interpolationStart","prematureEndPredicate","expressionStart","inQuote","inComment","_getProcessedChars","isInterpolation","isAsciiHexDigit","chars.isAsciiHexDigit","fileOrCursor","state","advanceState","updatePeek","leadingTriviaCodePoints","startLocation","locationFromCursor","endLocation","fullStartLocation","pos","currentChar","chars.isNewLine","internalState","processEscapeSequence","chars.$LF","chars.$CR","chars.$VTAB","chars.$TAB","chars.$BSPACE","chars.$FF","digitStart","decodeHexDigits","chars.isOctalDigit","octal","previous","TreeError","ParseTreeResult","rootNodes","getTagDefinition","tokenizeResult","tokenizer","mergeTextTokens","srcTokens","dstTokens","lastDstToken","parser","_TreeBuilder","build","_index","_elementStack","_advance","_peek","_consumeStartTag","_consumeEndTag","_closeVoidElement","_consumeText","_consumeExpansion","prev","_advanceIf","_startToken","_addToParent","html.Comment","expCase","_parseExpansionCase","create","html.Expansion","_collectExpansionExpTokens","expansionCaseParser","html.ExpansionCase","expansionFormStack","lastOnStack","startSpan","parent","_getParentElement","decodeEntity","endSpan","html.Text","startTagToken","_consumeAttr","_getElementFullName","selfClosing","tagDef","html.Element","_pushElement","_popElement","parentEl","endTagToken","errMsg","unexpectedCloseTagDetected","stackIndex","splice","mergeNsAndName","attrEnd","valueStartSpan","valueEnd","valueToken","html.Attribute","parentElement","parentTagName","stack","entity","HtmlParser","PRESERVE_WS_ATTR_NAME","SKIP_WS_TRIM_TAGS","WS_CHARS","NO_WS_REGEXP","WS_REPLACE_REGEXP","replaceNgsp","WhitespaceVisitor","hasPreserveWhitespacesAttr","html.visitAll","visitAllWithSiblings","isNotBlank","hasExpansionSibling","createWhitespaceProcessedTextToken","processWhitespace","expansion","expansionCase","mapLiteral","TRUSTED_TYPES_SINKS","ANIMATE_PROP_PREFIX","BindingParser","_exprParser","_schemaRegistry","createBoundHostProperties","boundProps","parsePropertyBinding","createDirectiveHostEventAsts","hostListeners","targetEvents","parseEvent","sourceInfo","_reportExpressionParserErrors","parseInlineTemplateBinding","tplKey","tplValue","targetMatchableAttrs","targetProps","targetVars","isIvyAst","_parseTemplateBindings","bindingSpan","moveParseSourceSpan","srcSpan","_parsePropertyAst","parseLiteralAttr","bindingsResult","warning","WARNING","isAnimationLabel","_parseAnimation","isHost","isAnimationProp","_parseBinding","parsePropertyInterpolation","DEFAULT","isHostBinding","createBoundElementProperty","elementSelector","boundProp","skipValidation","mapPropertyName","bindingType","boundPropertyName","securityContexts","_validatePropertyOrAttributeName","calcPossibleSecurityContexts","nsSeparatorIdx","ns","mappedPropName","_parseAnimationEvent","_parseRegularEvent","splitAtPeriod","eventName","_parseAction","splitAtColon","isAttr","report","registry","ctxs","elementNames","notElementNames","possibleElementNames","sort","absoluteSpan","startDiff","endDiff","URL_WITH_SCHEMA_REGEXP","preparseElement","selectAttr","hrefAttr","relAttr","nonBindable","projectAs","lcAttrName","normalizeNgContentSelect","nodeName","PreparsedElementType","OTHER","NG_CONTENT","SCRIPT","STYLESHEET","PreparsedElement","BIND_NAME_REGEXP","BINDING_DELIMS","HtmlAstToIvyAst","bindingParser","styleUrls","ngContentSelectors","commentNodes","inI18nBlock","isI18nRootElement","reportError","preparsedElement","contents","textContents","isStyleUrlResolvable","schemeMatch","isTemplateElement","isNgTemplate","parsedProperties","boundEvents","i18nAttrsMeta","templateParsedProperties","templateVariables","elementHasInlineTemplate","hasBinding","normalizedName","normalizeAttributeName","isTemplateBinding","parsedVariables","t.Variable","parseAttribute","NON_BINDABLE_VISITOR","parsedElement","isEmptyTextNode","isCommentNode","t.Content","extractAttributes","t.Template","bound","t.Element","hoistedAttrs","t.TextAttribute","_visitTextWithInterpolation","formattedKey","t.BoundText","t.Icu","collectCommentNodes","t.Comment","i18nPropsMeta","bep","t.BoundAttribute","fromBoundElementProperty","matchableAttributes","createKeySpan","normalizationAdjustment","keySpanStart","keySpanEnd","bindParts","parseVariable","parseReference","addEvents","parseAssignmentEvent","delims","endsWith","valueNoNgsp","t.Text","t.Reference","NonBindableVisitor","t.BoundEvent","fromParsedEvent","TagType","I18nContext","templateIndex","isEmitted","_unresolvedCtxCount","_registry","setupRegistry","getUniqueId","getSeqNumberGenerator","icus","appendTag","closed","isRoot","isResolved","getSerializedPlaceholders","serializePlaceholderValue","appendBinding","appendIcu","appendBoundText","appendTemplate","TEMPLATE","appendElement","ELEMENT","appendProjection","forkChildContext","reconcileChildContext","findTemplateFn","phs","tmplIdx","findIndex","isCloseTag","tmpl","wrap","symbol","wrapTag","data","serializer","IcuSerializerVisitor","formatPh","serializeIcuNode","TAG_TO_PLACEHOLDER_NAMES","A","B","BR","EM","H1","H2","H3","H4","H5","H6","HR","I","LI","LINK","OL","P","Q","S","SMALL","SUB","SUP","TBODY","TD","TFOOT","TH","THEAD","TR","TT","U","UL","PlaceholderRegistry","_placeHolderNameCounts","_signatureToName","getStartTagPlaceholderName","signature","_hashTag","upperTag","baseName","_generateUniqueName","getCloseTagPlaceholderName","_hashClosingTag","getPlaceholderName","upperName","getUniquePlaceholder","_expParser","ExpressionParser","ExpressionLexer","createI18nMessageFactory","_I18nVisitor","visitNodeFn","toI18nMessage","noopVisitNodeFn","_html","_expressionParser","isIcu","icuDepth","placeholderRegistry","placeholderToContent","i18nodes","startPhName","closePhName","i18n.TagPlaceholder","i18n.Text","i18nIcuCases","i18nIcu","caze","expPh","phName","i18n.IcuPlaceholder","_icuCase","_context","previousI18n","hasInterpolation","extractPlaceholderName","reusePreviousSourceSpans","assertSingleContainerMessage","assertEquivalentNodes","previousNodes","_CUSTOM_PH_EXP","I18nError","setI18nRefs","htmlNode","i18nNode","html.NodeWithI18n","previousMessage","I18nMetaVisitor","keepI18nAttrs","enableI18nLegacyMessageIdFormat","_errors","_generateI18nMessage","_parseMetadata","_createI18nMessage","_setMessageId","_setLegacyIds","visitAllWithErrors","hasI18nAttrs","attrsMeta","isTrustedTypesSink","currentMessage","idIndex","descIndex","meaningAndDesc","parseI18nMeta","createGoogleGetMsgStatements","closureVar","placeholderValues","serializeI18nMessageForGetMsg","original_code","googGetMsgStmt","i18nMetaToJSDoc","o.jsDocComment","GetMsgSerializerVisitor","createLocalizeStatements","placeHolders","serializeI18nMessageForLocalize","pieces","LocalizeSerializerVisitor","processMessagePieces","o.PlaceholderPiece","createEmptyMessagePart","o.LiteralPiece","getSourceSpan","startNode","endNode","o.localizedString","variableInitialization","createPlaceholderPiece","EVENT_BINDING_SCOPE_GLOBALS","GLOBAL_TARGET_RESOLVERS","LEADING_TRIVIA_CHARS","prepareEventListenerParameters","eventAst","handlerName","scope","eventArgumentName","implicitReceiverExpr","bindingLevel","getOrCreateSharedContextVar","bindingStatements","convertActionBinding","variableDeclarations","restoreViewStatement","prepareSyntheticListenerName","fnName","fnArgs","handlerFn","TemplateDefinitionBuilder","parentBindingScope","contextName","i18nContext","templateName","_namespace","relativeContextFilePath","i18nUseExternalIds","_constants","createComponentDefConsts","prepareStatements","constExpressions","i18nVarRefsCache","_dataIndex","_bindingContext","_prefixCode","_creationCodeFns","_updateCodeFns","_currentIndex","_tempVariables","_nestedTemplateFns","_pureFunctionSlots","_bindingSlots","_ngContentReservedSlots","_ngContentSelectorsOffset","_implicitReceiverExpr","_bindingScope","nestedScope","fileBasedI18nSuffix","_valueConverter","ValueConverter","allocateDataSlot","numSlots","allocatePureFunctionSlots","slot","creationInstruction","buildTemplateFunction","ngContentSelectorsOffset","registerContextVariables","initI18nContext","isSingleElementTemplate","selfClosingI18nInstruction","hasTextChildrenOnly","t.visitAll","updatePipeSlotOffsets","buildTemplateFn","r3ReservedSlots","core.parseSelectorToR3Selector","creationStatements","updateStatements","creationVariables","viewSnapshotStatements","updateVariables","creationBlock","renderFlagCheckIfStmt","updateBlock","o.NUMBER_TYPE","i18nTranslate","transformFn","_ref","i18nGenerateMainBlockVar","createClosureModeGuard","getTranslationDeclStmts","i18nGenerateClosureVar","scopedName","freshReferenceName","retrievalLevel","relativeLevel","isListenerScope","hasRestoreViewVariable","notifyRestoredViewContextUse","getSharedContextName","generateNextContextExpr","i18nAppendBindings","i18nBindProps","props","label","assembleI18nBoundString","acc","lastIdx","messageId","uniqueSuffix","i18nUpdateRef","icuMapping","addToConsts","updateInstructionWithAdvance","getConstCount","updateInstruction","i18nAttributesInstruction","nodeIndex","i18nAttrArgs","converted","constIndex","getNamespaceInstruction","namespaceKey","addNamespaceInstruction","nsInstruction","interpolatedUpdateInstruction","instruction","elementIndex","getUpdateInstructionArguments","ngContent","projectionSlotIdx","nonContentSelectAttributes","getAttributeExpressions","stylingBuilder","isNonBindableMode","outputAttrs","checkIsNgContainer","allOtherInputs","boundI18nAttrs","addAttrsToConsts","prepareRefsArray","wasInNamespace","currentNamespace","hasChildren","createSelfClosingInstruction","createSelfClosingI18nInstruction","outputAst","prepareListenerParameter","stylingInstructions","limit","processStylingUpdateInstruction","emptyValueBindInstruction","propertyBindings","attributeBindings","inputType","hasValue","getBindingFunctionParams","attrNamespace","isAttributeBinding","sanitizationRef","resolveSanitizationFn","isIframeElement","namespaceLiteral","getPropertyInterpolationExpression","getAttributeInterpolationExpression","boundValue","propertyBinding","attributeBinding","NG_TEMPLATE_TAG_NAME","tagNameWithoutNamespace","attrsExprs","templateVisitor","templateFunctionExpr","getVarCount","templatePropertyBindings","i18nInputs","arr","conditionFn","truthy","falsy","item","partitionArray","getTextInterpolationExpression","initWasInvoked","formatted","getConsts","getNgContentSelectors","bindingContext","instructionFn","fns","prepend","addAdvanceInstructionIfNecessary","originalSlots","getImplicitReceiverExpr","convertedPropertyBinding","valExpr","convertUpdateArguments","contextVariableExpression","expressionWithArgumentsToExtract","renderAttributes","alreadySeen","attrExprs","ngProjectAsAttr","i18nVarRef","getAttributeNameLiterals","trustedConstAttribute","addAttrExpr","getNgProjectAsLiteral","parsedR3Selector","attrsLengthBeforeInputs","o.TYPED_NULL_EXPR","consts","flatMap","variableName","nextContextStmt","refExpr","bindingFnName","prepareSyntheticListenerFunctionName","allocateSlot","_pipeBindExprs","slotPseudoLocal","pureFunctionSlot","isVarLength","pipeBindingCallInfo","pipeBindingIdentifiers","pipeBindExpr","bindingSlots","array","pureFunctionIdentifiers","relativeLevelDiff","allocateSlots","startSlot","pureFunctionCallInfo","attributeNamespace","nameLiteral","SHARED_CONTEXT_KEY","BindingScope","referenceNameIndex","restoreViewVariable","usesRestoredViewContext","declareLocalCallback","declare","priority","maybeGenerateSharedContextVar","getComponentProperty","localRef","newScope","generateSharedContextVar","bindingKey","sharedCtxObj","componentValue","restoreCall","currentContextLevel","levelDiff","currStmts","parseTemplate","preserveWhitespaces","makeBindingParser","parseResult","alwaysAttemptHtmlToR3AstConversion","parsedTemplate","i18nMetaVisitor","i18nMetaResult","htmlAstToRender3Ast","htmlNodes","transformer","elementRegistry","core.SecurityContext","o.taggedTemplate","o.TemplateLiteral","o.TemplateLiteralElement","isTextNode","deferredParams","eagerParams","fnParams","NG_I18N_CLOSURE_MODE","o.STRING_TYPE","ATTR_REGEX","baseDirectiveFields","queries","createContentQueriesFunction","createStatements","tempAllocator","temporaryAllocator","prepareQueryParams","getQueryList","refresh","updateDirective","first","contentQueriesFnName","viewQueries","createViewQueriesFunction","queryDefinition","viewQueryFnName","createHostBindingsFunction","hostBindingsMetadata","typeSourceSpan","styleBuilder","styleAttr","classAttr","specialAttributes","createInstructions","updateInstructions","hostBindingSourceSpan","eventBindings","listeners","createHostListeners","listenerParams","syntheticListenerParams","bindingName","allOtherBindings","totalHostVarsCount","getValueConverter","originalVarsCount","syntheticHostBindings","bindingExpr","bindingFn","getBindingNameAndInstruction","sanitizerFn","instructionParams","bindingParams","hostAttrs","convertAttributesToExpressions","convertStylingCall","hostBindingsFnName","conditionallyCreateMapObjectLiteral","exportAs","addFeatures","features","viewProviders","usesInheritance","fullInheritance","lifecycle","usesOnChanges","hostDirectives","createHostDirectivesFeatureArg","compileComponentFromMetadata","firstSelector","selectorAttributes","templateTypeName","changeDetection","templateBuilder","createRootScope","templateFunctionExpression","constsExpr","compileDeclarationList","list","resolvedList","declarationListEmitMode","encapsulation","core.ViewEncapsulation","Emulated","styleNodes","compileStyles","shadowCss","animations","core.ChangeDetectionStrategy","Default","createComponentType","createBaseDirectiveTypeParams","stringArrayAsType","createHostDirectivesType","ComponentDeclaration","getQueryPredicate","toQueryFlags","read","descendants","emitDistinctChangesOnly","stringAsType","stringMapAsLiteralExpression","selectorForType","q","createDirectiveType","DirectiveDeclaration","implicit","attrMatches","HOST_REG_EXP","hostMeta","directive","hasForwardRef","inputsLiteral","createHostDirectivesMappingArray","outputsLiteral","isForwardReference","mapping","ResourceLoader","CompilerFacadeImpl","jitEvaluator","compilePipe","angularCoreEnv","sourceMapUrl","facade","jitExpression","compilePipeDeclaration","declaration","convertDeclarePipeFacadeToMetadata","compileInjectable","computeProvidedIn","convertToProviderExpression","wrapExpression","convertR3DependencyMetadata","compileInjectableDeclaration","convertR3DeclareDependencyMetadata","compileInjectorDeclaration","convertDeclareInjectorFacadeToMetadata","compileNgModuleDeclaration","compileNgModuleDeclarationExpression","compileDirective","convertDirectiveFacadeToMetadata","compileDirectiveFromMeta","compileDirectiveDeclaration","convertDeclareDirectiveFacadeToMetadata","createParseSourceSpan","compileDirectiveFromMetadata","compileComponent","parseJitTemplate","elementSchemaRegistry","convertDeclarationFacadeToMetadata","jitExpressionSourceMap","compileComponentFromMeta","compileComponentDeclaration","convertDeclareComponentFacadeToMetadata","dependencies","innerDep","kind","convertDirectiveDeclarationToMetadata","convertPipeDeclarationToMetadata","components","directives","pipes","dir","convertPipeMapToMetadata","compileFactory","factoryRes","convertR3DependencyMetadataArray","compileFactoryDeclaration","typeName","r3JitTypeSourceSpan","sourceFile","def","preStatements","$def","convertToR3QueryMetadata","convertQueryPredicate","convertQueryDeclarationToMetadata","createMayBeForwardRefExpression","inputsFromMetadata","parseInputOutputs","outputsFromMetadata","propMetadata","inputsFromType","outputsFromType","field","ann","isInput","bindingPropertyName","isOutput","extractHostBindings","convertHostDirectivesToMetadata","convertHostDeclarationToMetadata","convertOpaqueValuesToExpressions","classAttribute","styleAttribute","hostDirective","isComponent","fromArray","parsed","err","facades","isAttributeDep","rawToken","createR3DependencyMetadata","parseHostBindings","verifyHostBindings","hostPropertyName","getSafePropertyAccessString","isHostListener","ngMetadataName","Version","full","splits","major","minor","patch","_VisitorMode","XmlTagDefinition","requireExtraParent","currentParent","publishFacade","ng","ɵcompilerFacade","cookedIndex","rawIndex","MissingTranslationError","parsedMessage","describeMessage","$localize","translate","translation","stripBlock","rawMessagePart","findEndOfBlock","globalThis","performance","mark","performanceMeasure","measure","symbolPrefix","__Zone_symbol_prefix","__symbol__","checkDuplicate","Zone","Promise","patches","ZoneAwarePromise","root","zone","_currentZoneFrame","currentTask","_currentTask","ignoreDuplicate","perfName","_api","_parent","_name","zoneSpec","_properties","_zoneDelegate","_ZoneDelegate","getZoneWith","callback","_callback","intercept","runGuarded","arguments","run","applyThis","applyArgs","invoke","runTask","task","NO_ZONE","notScheduled","eventTask","macroTask","reEntryGuard","running","_transitionTo","scheduled","runCount","previousTask","isPeriodic","cancelFn","invokeTask","unknown","_updateTaskCount","scheduleTask","newZone","scheduling","zoneDelegates","_zoneDelegates","_zone","scheduleMicroTask","customSchedule","ZoneTask","microTask","scheduleMacroTask","customCancel","scheduleEventTask","cancelTask","canceling","DELEGATE_ZS","onHasTask","hasTaskState","hasTask","onScheduleTask","onInvokeTask","onCancelTask","parentDelegate","_taskCounts","_parentDelegate","_forkZS","onFork","_forkDlgt","_forkCurrZone","_interceptZS","onIntercept","_interceptDlgt","_interceptCurrZone","_invokeZS","onInvoke","_invokeDlgt","_invokeCurrZone","_handleErrorZS","onHandleError","_handleErrorDlgt","_handleErrorCurrZone","_scheduleTaskZS","_scheduleTaskDlgt","_scheduleTaskCurrZone","_invokeTaskZS","_invokeTaskDlgt","_invokeTaskCurrZone","_cancelTaskZS","_cancelTaskDlgt","_cancelTaskCurrZone","_hasTaskZS","_hasTaskDlgt","_hasTaskDlgtOwner","_hasTaskCurrZone","zoneSpecHasTask","parentHasTask","targetZone","apply","returnTask","scheduleFn","isEmpty","counts","change","_state","useG","_numberOfNestedTaskFrames","drainMicroTaskQueue","cancelScheduleRequest","toState","fromState1","fromState2","handleId","prototype","symbolSetTimeout","symbolPromise","symbolThen","nativeMicroTaskQueuePromise","_microTaskQueue","_isDrainingMicrotaskQueue","nativeScheduleMicroTask","func","resolve","nativeThen","then","queue","onUnhandledError","microtaskDrainDone","currentZoneFrame","noop","showUncaughtError","patchEventTarget","patchOnProperties","patchMethod","bindArguments","patchThen","patchMacroTask","patchEventPrototype","isIEOrEdge","getGlobalObjects","ObjectDefineProperty","ObjectGetOwnPropertyDescriptor","ObjectCreate","ArraySlice","patchClass","wrapWithCurrentZone","filterProperties","attachOriginToPatched","_redefineProperty","patchCallbacks","getOwnPropertyDescriptor","defineProperty","ObjectGetPrototypeOf","getPrototypeOf","ADD_EVENT_LISTENER_STR","REMOVE_EVENT_LISTENER_STR","ZONE_SYMBOL_ADD_EVENT_LISTENER","ZONE_SYMBOL_REMOVE_EVENT_LISTENER","TRUE_STR","FALSE_STR","ZONE_SYMBOL_PREFIX","scheduleMacroTaskWithCurrentZone","zoneSymbol","isWindowExists","internalWindow","isPropertyWritable","propertyDesc","writable","isWebWorker","isNode","process","isBrowser","HTMLElement","isMix","zoneSymbolEventNames$1","wrapFn","eventNameSymbol","errorEvent","filename","lineno","colno","preventDefault","patchProperty","desc","enumerable","configurable","onPropPatchedSymbol","originalDescGet","originalDescSet","removeEventListener","addEventListener","removeAttribute","onProperties","originalInstanceKey","className","OriginalClass","instance","patchFn","proto","delegateName","patchDelegate","funcName","metaCreator","setNative","cbIdx","patched","isDetectedIEOrEdge","ieOrEdge","ua","navigator","userAgent","__load_patch","api","_uncaughtPromiseErrors","isDisableWrappingUncaughtPromiseRejection","rejection","console","uncaughtPromiseError","throwOriginal","handleUnhandledRejection","UNHANDLED_PROMISE_REJECTION_HANDLER_SYMBOL","isThenable","forwardResolution","forwardRejection","reject","symbolState","symbolValue","symbolFinally","symbolParentPromiseValue","symbolParentPromiseState","UNRESOLVED","RESOLVED","REJECTED","makeResolver","promise","resolvePromise","once","wasCalled","wrappedFunction","CURRENT_TASK_TRACE_SYMBOL","onceWrapper","TypeError","clearRejectedNoCatch","trace","scheduleResolveOrReject","readableObjectToString","REJECTION_HANDLED_HANDLER","chainPromise","onFulfilled","onRejected","promiseState","parentPromiseValue","isFinallyPromise","AggregateError","Symbol","iterator","promises","finished","rej","onResolve","onReject","allWithCallback","thenCallback","status","errorCallback","reason","unresolvedCount","valueIndex","resolvedValues","curValueIndex","thenErr","executor","toStringTag","species","C","catch","finally","onFinally","all","NativePromise","symbolThenPatched","Ctor","originalThen","zoneify","resultPromise","ctor","originalFunctionToString","ORIGINAL_DELEGATE_SYMBOL","PROMISE_SYMBOL","ERROR_SYMBOL","newFunctionToString","originalDelegate","nativePromise","nativeError","originalObjectToString","passiveSupported","OPTIMIZED_ZONE_EVENT_TASK_DATA","zoneSymbolEventNames","globalSources","EVENT_NAME_SYMBOL_REGX","IMMEDIATE_PROPAGATION_SYMBOL","prepareEventNames","eventNameToString","falseEventName","trueEventName","symbolCapture","apis","patchOptions","ADD_EVENT_LISTENER","REMOVE_EVENT_LISTENER","rm","LISTENERS_EVENT_LISTENER","REMOVE_ALL_LISTENERS_EVENT_LISTENER","rmAll","zoneSymbolAddEventListener","ADD_EVENT_LISTENER_SOURCE","PREPEND_EVENT_LISTENER","PREPEND_EVENT_LISTENER_SOURCE","isRemoved","handleEvent","globalCallback","isCapture","tasks","copyTasks","globalZoneAwareCallback","globalZoneAwareCaptureCallback","patchEventTargetMethods","useGlobalCallback","validateHandler","vh","chkDup","returnTarget","taskData","nativeAddEventListener","nativeRemoveEventListener","nativeListeners","nativeRemoveAllListeners","nativePrependEventListener","buildEventListenerOptions","passive","capture","isExisting","symbolEventNames","symbolEventName","existingTasks","allRemoved","compare","typeOfDelegate","unpatchedEvents","passiveEvents","makeAddListener","nativeListener","customScheduleFn","customCancelFn","transferEventName","isHandleEvent","constructorName","targetSource","existingTask","findEventTasks","symbolCaptureEventName","captureTasks","removeTasks","evtName","foundTasks","captureFalseTasks","captureTrueTasks","Event","targetName","method","callbacks","nativeDelegate","opts","descriptor","ignoreProperties","tip","ip","targetIgnoreProperties","patchFilteredProperties","getOnEventNames","propertyDescriptorPatch","__Zone_ignore_on_properties","patchTargets","ignoreErrorProperties","isIE","eventNames","SYMBOL_BLACK_LISTED_EVENTS","SYMBOL_UNPATCHED_EVENTS","taskSymbol","patchTimer","setName","cancelName","nameSuffix","clearNative","tasksByHandleId","clearTask","delay","handle","unref","legacyPatch","clear","blockingMethods","patchEvent","eventTargetPatch","EVENT_TARGET","EventTarget","XMLHttpRequestEventTarget","patchCustomElements","customElements","patchXHR","XMLHttpRequest","XMLHttpRequestPrototype","oriAddListener","oriRemoveListener","XMLHttpRequestEventTargetPrototype","READY_STATE_CHANGE","SCHEDULED","XHR_SCHEDULED","XHR_ERROR_BEFORE_SCHEDULED","XHR_LISTENER","newListener","readyState","DONE","aborted","loadTasks","oriInvoke","XHR_TASK","sendNative","placeholderCallback","abortNative","openNative","XHR_SYNC","XHR_URL","fetchTaskAborting","fetchTaskScheduling","findPendingTask","geolocation","patchPrototype","fnNames","findPromiseRejectionHandler","PromiseRejectionEvent","evt"],"sourceRoot":"webpack:///","sources":["../packages/compiler/src/selector.ts","../packages/compiler/src/core.ts","../packages/compiler/src/i18n/big_integer.ts","../packages/compiler/src/i18n/digest.ts","../packages/compiler/src/output/output_ast.ts","../packages/compiler/src/constant_pool.ts","../packages/compiler/src/render3/r3_identifiers.ts","../packages/compiler/src/util.ts","../packages/compiler/src/output/source_map.ts","../packages/compiler/src/output/abstract_emitter.ts","../packages/compiler/src/render3/util.ts","../packages/compiler/src/render3/r3_factory.ts","../packages/compiler/src/render3/r3_ast.ts","../packages/compiler/src/i18n/i18n_ast.ts","../packages/compiler/src/i18n/serializers/xml_helper.ts","../packages/compiler/src/i18n/serializers/xmb.ts","../packages/compiler/src/render3/view/i18n/util.ts","../packages/compiler/src/render3/view/util.ts","../packages/compiler/src/injectable_compiler_2.ts","../packages/compiler/src/assertions.ts","../packages/compiler/src/ml_parser/interpolation_config.ts","../packages/compiler/src/chars.ts","../packages/compiler/src/parse_util.ts","../packages/compiler/src/output/abstract_js_emitter.ts","../packages/compiler/src/output/output_jit_trusted_types.ts","../packages/compiler/src/output/output_jit.ts","../packages/compiler/src/render3/r3_injector_compiler.ts","../packages/compiler/src/render3/r3_jit.ts","../packages/compiler/src/render3/r3_module_compiler.ts","../packages/compiler/src/render3/view/api.ts","../packages/compiler/src/expression_parser/ast.ts","../packages/compiler/src/compiler_util/expression_converter.ts","../packages/compiler/src/render3/r3_pipe_compiler.ts","../packages/compiler/src/schema/dom_security_schema.ts","../packages/compiler/src/shadow_css.ts","../packages/compiler/src/render3/view/style_parser.ts","../packages/compiler/src/render3/view/styling_builder.ts","../packages/compiler/src/expression_parser/lexer.ts","../packages/compiler/src/expression_parser/parser.ts","../packages/compiler/src/ml_parser/tags.ts","../packages/compiler/src/ml_parser/ast.ts","../packages/compiler/src/schema/element_schema_registry.ts","../packages/compiler/src/schema/dom_element_schema_registry.ts","../packages/compiler/src/ml_parser/html_tags.ts","../packages/compiler/src/ml_parser/entities.ts","../packages/compiler/src/ml_parser/lexer.ts","../packages/compiler/src/ml_parser/parser.ts","../packages/compiler/src/ml_parser/html_parser.ts","../packages/compiler/src/ml_parser/html_whitespaces.ts","../packages/compiler/src/output/map_util.ts","../packages/compiler/src/schema/trusted_types_sinks.ts","../packages/compiler/src/template_parser/binding_parser.ts","../packages/compiler/src/style_url_resolver.ts","../packages/compiler/src/template_parser/template_preparser.ts","../packages/compiler/src/render3/r3_template_transform.ts","../packages/compiler/src/render3/view/i18n/context.ts","../packages/compiler/src/render3/view/i18n/icu_serializer.ts","../packages/compiler/src/i18n/serializers/placeholder.ts","../packages/compiler/src/i18n/i18n_parser.ts","../packages/compiler/src/i18n/parse_util.ts","../packages/compiler/src/render3/view/i18n/meta.ts","../packages/compiler/src/render3/view/i18n/get_msg_utils.ts","../packages/compiler/src/render3/view/i18n/localize_utils.ts","../packages/compiler/src/render3/view/template.ts","../packages/compiler/src/render3/view/compiler.ts","../packages/compiler/src/resource_loader.ts","../packages/compiler/src/jit_compiler_facade.ts","../packages/compiler/src/version.ts","../packages/compiler/src/i18n/extractor_merger.ts","../packages/compiler/src/ml_parser/xml_tags.ts","../packages/compiler/src/render3/partial/api.ts","../packages/compiler/src/compiler.ts","../packages/localize/src/utils/src/messages.ts","../packages/localize/src/utils/src/constants.ts","../packages/localize/src/utils/src/translations.ts","../packages/localize/src/localize/src/global.ts","../packages/localize/src/localize/src/localize.ts","../packages/localize/init/index.ts","./node_modules/zone.js/fesm2015/zone.js"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nconst _SELECTOR_REGEXP = new RegExp(\n '(\\\\:not\\\\()|' + // 1: \":not(\"\n '(([\\\\.\\\\#]?)[-\\\\w]+)|' + // 2: \"tag\"; 3: \".\"/\"#\";\n // \"-\" should appear first in the regexp below as FF31 parses \"[.-\\w]\" as a range\n // 4: attribute; 5: attribute_string; 6: attribute_value\n '(?:\\\\[([-.\\\\w*\\\\\\\\$]+)(?:=([\\\"\\']?)([^\\\\]\\\"\\']*)\\\\5)?\\\\])|' + // \"[name]\", \"[name=value]\",\n // \"[name=\"value\"]\",\n // \"[name='value']\"\n '(\\\\))|' + // 7: \")\"\n '(\\\\s*,\\\\s*)', // 8: \",\"\n 'g');\n\n/**\n * These offsets should match the match-groups in `_SELECTOR_REGEXP` offsets.\n */\nconst enum SelectorRegexp {\n ALL = 0, // The whole match\n NOT = 1,\n TAG = 2,\n PREFIX = 3,\n ATTRIBUTE = 4,\n ATTRIBUTE_STRING = 5,\n ATTRIBUTE_VALUE = 6,\n NOT_END = 7,\n SEPARATOR = 8,\n}\n/**\n * A css selector contains an element name,\n * css classes and attribute/value pairs with the purpose\n * of selecting subsets out of them.\n */\nexport class CssSelector {\n element: string|null = null;\n classNames: string[] = [];\n /**\n * The selectors are encoded in pairs where:\n * - even locations are attribute names\n * - odd locations are attribute values.\n *\n * Example:\n * Selector: `[key1=value1][key2]` would parse to:\n * ```\n * ['key1', 'value1', 'key2', '']\n * ```\n */\n attrs: string[] = [];\n notSelectors: CssSelector[] = [];\n\n static parse(selector: string): CssSelector[] {\n const results: CssSelector[] = [];\n const _addResult = (res: CssSelector[], cssSel: CssSelector) => {\n if (cssSel.notSelectors.length > 0 && !cssSel.element && cssSel.classNames.length == 0 &&\n cssSel.attrs.length == 0) {\n cssSel.element = '*';\n }\n res.push(cssSel);\n };\n let cssSelector = new CssSelector();\n let match: string[]|null;\n let current = cssSelector;\n let inNot = false;\n _SELECTOR_REGEXP.lastIndex = 0;\n while (match = _SELECTOR_REGEXP.exec(selector)) {\n if (match[SelectorRegexp.NOT]) {\n if (inNot) {\n throw new Error('Nesting :not in a selector is not allowed');\n }\n inNot = true;\n current = new CssSelector();\n cssSelector.notSelectors.push(current);\n }\n const tag = match[SelectorRegexp.TAG];\n if (tag) {\n const prefix = match[SelectorRegexp.PREFIX];\n if (prefix === '#') {\n // #hash\n current.addAttribute('id', tag.slice(1));\n } else if (prefix === '.') {\n // Class\n current.addClassName(tag.slice(1));\n } else {\n // Element\n current.setElement(tag);\n }\n }\n const attribute = match[SelectorRegexp.ATTRIBUTE];\n\n if (attribute) {\n current.addAttribute(\n current.unescapeAttribute(attribute), match[SelectorRegexp.ATTRIBUTE_VALUE]);\n }\n if (match[SelectorRegexp.NOT_END]) {\n inNot = false;\n current = cssSelector;\n }\n if (match[SelectorRegexp.SEPARATOR]) {\n if (inNot) {\n throw new Error('Multiple selectors in :not are not supported');\n }\n _addResult(results, cssSelector);\n cssSelector = current = new CssSelector();\n }\n }\n _addResult(results, cssSelector);\n return results;\n }\n\n /**\n * Unescape `\\$` sequences from the CSS attribute selector.\n *\n * This is needed because `$` can have a special meaning in CSS selectors,\n * but we might want to match an attribute that contains `$`.\n * [MDN web link for more\n * info](https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors).\n * @param attr the attribute to unescape.\n * @returns the unescaped string.\n */\n unescapeAttribute(attr: string): string {\n let result = '';\n let escaping = false;\n for (let i = 0; i < attr.length; i++) {\n const char = attr.charAt(i);\n if (char === '\\\\') {\n escaping = true;\n continue;\n }\n if (char === '$' && !escaping) {\n throw new Error(\n `Error in attribute selector \"${attr}\". ` +\n `Unescaped \"$\" is not supported. Please escape with \"\\\\$\".`);\n }\n escaping = false;\n result += char;\n }\n return result;\n }\n\n /**\n * Escape `$` sequences from the CSS attribute selector.\n *\n * This is needed because `$` can have a special meaning in CSS selectors,\n * with this method we are escaping `$` with `\\$'.\n * [MDN web link for more\n * info](https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors).\n * @param attr the attribute to escape.\n * @returns the escaped string. \n */\n escapeAttribute(attr: string): string {\n return attr.replace(/\\\\/g, '\\\\\\\\').replace(/\\$/g, '\\\\$');\n }\n\n isElementSelector(): boolean {\n return this.hasElementSelector() && this.classNames.length == 0 && this.attrs.length == 0 &&\n this.notSelectors.length === 0;\n }\n\n hasElementSelector(): boolean {\n return !!this.element;\n }\n\n setElement(element: string|null = null) {\n this.element = element;\n }\n\n getAttrs(): string[] {\n const result: string[] = [];\n if (this.classNames.length > 0) {\n result.push('class', this.classNames.join(' '));\n }\n return result.concat(this.attrs);\n }\n\n addAttribute(name: string, value: string = '') {\n this.attrs.push(name, value && value.toLowerCase() || '');\n }\n\n addClassName(name: string) {\n this.classNames.push(name.toLowerCase());\n }\n\n toString(): string {\n let res: string = this.element || '';\n if (this.classNames) {\n this.classNames.forEach(klass => res += `.${klass}`);\n }\n if (this.attrs) {\n for (let i = 0; i < this.attrs.length; i += 2) {\n const name = this.escapeAttribute(this.attrs[i]);\n const value = this.attrs[i + 1];\n res += `[${name}${value ? '=' + value : ''}]`;\n }\n }\n this.notSelectors.forEach(notSelector => res += `:not(${notSelector})`);\n return res;\n }\n}\n\n/**\n * Reads a list of CssSelectors and allows to calculate which ones\n * are contained in a given CssSelector.\n */\nexport class SelectorMatcher {\n static createNotMatcher(notSelectors: CssSelector[]): SelectorMatcher {\n const notMatcher = new SelectorMatcher();\n notMatcher.addSelectables(notSelectors, null);\n return notMatcher;\n }\n\n private _elementMap = new Map[]>();\n private _elementPartialMap = new Map>();\n private _classMap = new Map[]>();\n private _classPartialMap = new Map>();\n private _attrValueMap = new Map[]>>();\n private _attrValuePartialMap = new Map>>();\n private _listContexts: SelectorListContext[] = [];\n\n addSelectables(cssSelectors: CssSelector[], callbackCtxt?: T) {\n let listContext: SelectorListContext = null!;\n if (cssSelectors.length > 1) {\n listContext = new SelectorListContext(cssSelectors);\n this._listContexts.push(listContext);\n }\n for (let i = 0; i < cssSelectors.length; i++) {\n this._addSelectable(cssSelectors[i], callbackCtxt as T, listContext);\n }\n }\n\n /**\n * Add an object that can be found later on by calling `match`.\n * @param cssSelector A css selector\n * @param callbackCtxt An opaque object that will be given to the callback of the `match` function\n */\n private _addSelectable(\n cssSelector: CssSelector, callbackCtxt: T, listContext: SelectorListContext) {\n let matcher: SelectorMatcher = this;\n const element = cssSelector.element;\n const classNames = cssSelector.classNames;\n const attrs = cssSelector.attrs;\n const selectable = new SelectorContext(cssSelector, callbackCtxt, listContext);\n\n if (element) {\n const isTerminal = attrs.length === 0 && classNames.length === 0;\n if (isTerminal) {\n this._addTerminal(matcher._elementMap, element, selectable);\n } else {\n matcher = this._addPartial(matcher._elementPartialMap, element);\n }\n }\n\n if (classNames) {\n for (let i = 0; i < classNames.length; i++) {\n const isTerminal = attrs.length === 0 && i === classNames.length - 1;\n const className = classNames[i];\n if (isTerminal) {\n this._addTerminal(matcher._classMap, className, selectable);\n } else {\n matcher = this._addPartial(matcher._classPartialMap, className);\n }\n }\n }\n\n if (attrs) {\n for (let i = 0; i < attrs.length; i += 2) {\n const isTerminal = i === attrs.length - 2;\n const name = attrs[i];\n const value = attrs[i + 1];\n if (isTerminal) {\n const terminalMap = matcher._attrValueMap;\n let terminalValuesMap = terminalMap.get(name);\n if (!terminalValuesMap) {\n terminalValuesMap = new Map[]>();\n terminalMap.set(name, terminalValuesMap);\n }\n this._addTerminal(terminalValuesMap, value, selectable);\n } else {\n const partialMap = matcher._attrValuePartialMap;\n let partialValuesMap = partialMap.get(name);\n if (!partialValuesMap) {\n partialValuesMap = new Map>();\n partialMap.set(name, partialValuesMap);\n }\n matcher = this._addPartial(partialValuesMap, value);\n }\n }\n }\n }\n\n private _addTerminal(\n map: Map[]>, name: string, selectable: SelectorContext) {\n let terminalList = map.get(name);\n if (!terminalList) {\n terminalList = [];\n map.set(name, terminalList);\n }\n terminalList.push(selectable);\n }\n\n private _addPartial(map: Map>, name: string): SelectorMatcher {\n let matcher = map.get(name);\n if (!matcher) {\n matcher = new SelectorMatcher();\n map.set(name, matcher);\n }\n return matcher;\n }\n\n /**\n * Find the objects that have been added via `addSelectable`\n * whose css selector is contained in the given css selector.\n * @param cssSelector A css selector\n * @param matchedCallback This callback will be called with the object handed into `addSelectable`\n * @return boolean true if a match was found\n */\n match(cssSelector: CssSelector, matchedCallback: ((c: CssSelector, a: T) => void)|null): boolean {\n let result = false;\n const element = cssSelector.element!;\n const classNames = cssSelector.classNames;\n const attrs = cssSelector.attrs;\n\n for (let i = 0; i < this._listContexts.length; i++) {\n this._listContexts[i].alreadyMatched = false;\n }\n\n result = this._matchTerminal(this._elementMap, element, cssSelector, matchedCallback) || result;\n result = this._matchPartial(this._elementPartialMap, element, cssSelector, matchedCallback) ||\n result;\n\n if (classNames) {\n for (let i = 0; i < classNames.length; i++) {\n const className = classNames[i];\n result =\n this._matchTerminal(this._classMap, className, cssSelector, matchedCallback) || result;\n result =\n this._matchPartial(this._classPartialMap, className, cssSelector, matchedCallback) ||\n result;\n }\n }\n\n if (attrs) {\n for (let i = 0; i < attrs.length; i += 2) {\n const name = attrs[i];\n const value = attrs[i + 1];\n\n const terminalValuesMap = this._attrValueMap.get(name)!;\n if (value) {\n result =\n this._matchTerminal(terminalValuesMap, '', cssSelector, matchedCallback) || result;\n }\n result =\n this._matchTerminal(terminalValuesMap, value, cssSelector, matchedCallback) || result;\n\n const partialValuesMap = this._attrValuePartialMap.get(name)!;\n if (value) {\n result = this._matchPartial(partialValuesMap, '', cssSelector, matchedCallback) || result;\n }\n result =\n this._matchPartial(partialValuesMap, value, cssSelector, matchedCallback) || result;\n }\n }\n return result;\n }\n\n /** @internal */\n _matchTerminal(\n map: Map[]>, name: string, cssSelector: CssSelector,\n matchedCallback: ((c: CssSelector, a: any) => void)|null): boolean {\n if (!map || typeof name !== 'string') {\n return false;\n }\n\n let selectables: SelectorContext[] = map.get(name) || [];\n const starSelectables: SelectorContext[] = map.get('*')!;\n if (starSelectables) {\n selectables = selectables.concat(starSelectables);\n }\n if (selectables.length === 0) {\n return false;\n }\n let selectable: SelectorContext;\n let result = false;\n for (let i = 0; i < selectables.length; i++) {\n selectable = selectables[i];\n result = selectable.finalize(cssSelector, matchedCallback) || result;\n }\n return result;\n }\n\n /** @internal */\n _matchPartial(\n map: Map>, name: string, cssSelector: CssSelector,\n matchedCallback: ((c: CssSelector, a: any) => void)|null): boolean {\n if (!map || typeof name !== 'string') {\n return false;\n }\n\n const nestedSelector = map.get(name);\n if (!nestedSelector) {\n return false;\n }\n // TODO(perf): get rid of recursion and measure again\n // TODO(perf): don't pass the whole selector into the recursion,\n // but only the not processed parts\n return nestedSelector.match(cssSelector, matchedCallback);\n }\n}\n\n\nexport class SelectorListContext {\n alreadyMatched: boolean = false;\n\n constructor(public selectors: CssSelector[]) {}\n}\n\n// Store context to pass back selector and context when a selector is matched\nexport class SelectorContext {\n notSelectors: CssSelector[];\n\n constructor(\n public selector: CssSelector, public cbContext: T, public listContext: SelectorListContext) {\n this.notSelectors = selector.notSelectors;\n }\n\n finalize(cssSelector: CssSelector, callback: ((c: CssSelector, a: T) => void)|null): boolean {\n let result = true;\n if (this.notSelectors.length > 0 && (!this.listContext || !this.listContext.alreadyMatched)) {\n const notMatcher = SelectorMatcher.createNotMatcher(this.notSelectors);\n result = !notMatcher.match(cssSelector, null);\n }\n if (result && callback && (!this.listContext || !this.listContext.alreadyMatched)) {\n if (this.listContext) {\n this.listContext.alreadyMatched = true;\n }\n callback(this.selector, this.cbContext);\n }\n return result;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n// Attention:\n// This file duplicates types and values from @angular/core\n// so that we are able to make @angular/compiler independent of @angular/core.\n// This is important to prevent a build cycle, as @angular/core needs to\n// be compiled with the compiler.\n\nimport {CssSelector} from './selector';\n\n// Stores the default value of `emitDistinctChangesOnly` when the `emitDistinctChangesOnly` is not\n// explicitly set.\nexport const emitDistinctChangesOnlyDefaultValue = true;\n\nexport enum ViewEncapsulation {\n Emulated = 0,\n // Historically the 1 value was for `Native` encapsulation which has been removed as of v11.\n None = 2,\n ShadowDom = 3\n}\n\nexport enum ChangeDetectionStrategy {\n OnPush = 0,\n Default = 1\n}\n\nexport interface Input {\n bindingPropertyName?: string;\n}\n\nexport interface Output {\n bindingPropertyName?: string;\n}\n\nexport interface HostBinding {\n hostPropertyName?: string;\n}\n\nexport interface HostListener {\n eventName?: string;\n args?: string[];\n}\n\nexport interface SchemaMetadata {\n name: string;\n}\n\nexport const CUSTOM_ELEMENTS_SCHEMA: SchemaMetadata = {\n name: 'custom-elements'\n};\n\nexport const NO_ERRORS_SCHEMA: SchemaMetadata = {\n name: 'no-errors-schema'\n};\n\nexport interface Type extends Function {\n new(...args: any[]): any;\n}\nexport const Type = Function;\n\nexport enum SecurityContext {\n NONE = 0,\n HTML = 1,\n STYLE = 2,\n SCRIPT = 3,\n URL = 4,\n RESOURCE_URL = 5,\n}\n\n/**\n * Injection flags for DI.\n */\nexport const enum InjectFlags {\n Default = 0,\n\n /**\n * Specifies that an injector should retrieve a dependency from any injector until reaching the\n * host element of the current component. (Only used with Element Injector)\n */\n Host = 1 << 0,\n /** Don't descend into ancestors of the node requesting injection. */\n Self = 1 << 1,\n /** Skip the node that is requesting injection. */\n SkipSelf = 1 << 2,\n /** Inject `defaultValue` instead if token not found. */\n Optional = 1 << 3,\n /**\n * This token is being injected into a pipe.\n * @internal\n */\n ForPipe = 1 << 4,\n}\n\nexport enum MissingTranslationStrategy {\n Error = 0,\n Warning = 1,\n Ignore = 2,\n}\n\n/**\n * Flags used to generate R3-style CSS Selectors. They are pasted from\n * core/src/render3/projection.ts because they cannot be referenced directly.\n */\nexport const enum SelectorFlags {\n /** Indicates this is the beginning of a new negative selector */\n NOT = 0b0001,\n\n /** Mode for matching attributes */\n ATTRIBUTE = 0b0010,\n\n /** Mode for matching tag names */\n ELEMENT = 0b0100,\n\n /** Mode for matching class names */\n CLASS = 0b1000,\n}\n\n// These are a copy the CSS types from core/src/render3/interfaces/projection.ts\n// They are duplicated here as they cannot be directly referenced from core.\nexport type R3CssSelector = (string|SelectorFlags)[];\nexport type R3CssSelectorList = R3CssSelector[];\n\nfunction parserSelectorToSimpleSelector(selector: CssSelector): R3CssSelector {\n const classes = selector.classNames && selector.classNames.length ?\n [SelectorFlags.CLASS, ...selector.classNames] :\n [];\n const elementName = selector.element && selector.element !== '*' ? selector.element : '';\n return [elementName, ...selector.attrs, ...classes];\n}\n\nfunction parserSelectorToNegativeSelector(selector: CssSelector): R3CssSelector {\n const classes = selector.classNames && selector.classNames.length ?\n [SelectorFlags.CLASS, ...selector.classNames] :\n [];\n\n if (selector.element) {\n return [\n SelectorFlags.NOT | SelectorFlags.ELEMENT, selector.element, ...selector.attrs, ...classes\n ];\n } else if (selector.attrs.length) {\n return [SelectorFlags.NOT | SelectorFlags.ATTRIBUTE, ...selector.attrs, ...classes];\n } else {\n return selector.classNames && selector.classNames.length ?\n [SelectorFlags.NOT | SelectorFlags.CLASS, ...selector.classNames] :\n [];\n }\n}\n\nfunction parserSelectorToR3Selector(selector: CssSelector): R3CssSelector {\n const positive = parserSelectorToSimpleSelector(selector);\n\n const negative: R3CssSelectorList = selector.notSelectors && selector.notSelectors.length ?\n selector.notSelectors.map(notSelector => parserSelectorToNegativeSelector(notSelector)) :\n [];\n\n return positive.concat(...negative);\n}\n\nexport function parseSelectorToR3Selector(selector: string|null): R3CssSelectorList {\n return selector ? CssSelector.parse(selector).map(parserSelectorToR3Selector) : [];\n}\n\n// Pasted from render3/interfaces/definition since it cannot be referenced directly\n/**\n * Flags passed into template functions to determine which blocks (i.e. creation, update)\n * should be executed.\n *\n * Typically, a template runs both the creation block and the update block on initialization and\n * subsequent runs only execute the update block. However, dynamically created views require that\n * the creation block be executed separately from the update block (for backwards compat).\n */\nexport const enum RenderFlags {\n /* Whether to run the creation block (e.g. create elements and directives) */\n Create = 0b01,\n\n /* Whether to run the update block (e.g. refresh bindings) */\n Update = 0b10\n}\n\n// Pasted from render3/interfaces/node.ts\n/**\n * A set of marker values to be used in the attributes arrays. These markers indicate that some\n * items are not regular attributes and the processing should be adapted accordingly.\n */\nexport const enum AttributeMarker {\n /**\n * Marker indicates that the following 3 values in the attributes array are:\n * namespaceUri, attributeName, attributeValue\n * in that order.\n */\n NamespaceURI = 0,\n\n /**\n * Signals class declaration.\n *\n * Each value following `Classes` designates a class name to include on the element.\n * ## Example:\n *\n * Given:\n * ```\n *
...\n * ```\n *\n * the generated code is:\n * ```\n * var _c1 = [AttributeMarker.Classes, 'foo', 'bar', 'baz'];\n * ```\n */\n Classes = 1,\n\n /**\n * Signals style declaration.\n *\n * Each pair of values following `Styles` designates a style name and value to include on the\n * element.\n * ## Example:\n *\n * Given:\n * ```\n *
...
\n * ```\n *\n * the generated code is:\n * ```\n * var _c1 = [AttributeMarker.Styles, 'width', '100px', 'height'. '200px', 'color', 'red'];\n * ```\n */\n Styles = 2,\n\n /**\n * Signals that the following attribute names were extracted from input or output bindings.\n *\n * For example, given the following HTML:\n *\n * ```\n *
\n * ```\n *\n * the generated code is:\n *\n * ```\n * var _c1 = ['moo', 'car', AttributeMarker.Bindings, 'foo', 'bar'];\n * ```\n */\n Bindings = 3,\n\n /**\n * Signals that the following attribute names were hoisted from an inline-template declaration.\n *\n * For example, given the following HTML:\n *\n * ```\n *
\n * ```\n *\n * the generated code for the `template()` instruction would include:\n *\n * ```\n * ['dirA', '', AttributeMarker.Bindings, 'dirB', AttributeMarker.Template, 'ngFor', 'ngForOf',\n * 'ngForTrackBy', 'let-value']\n * ```\n *\n * while the generated code for the `element()` instruction inside the template function would\n * include:\n *\n * ```\n * ['dirA', '', AttributeMarker.Bindings, 'dirB']\n * ```\n */\n Template = 4,\n\n /**\n * Signals that the following attribute is `ngProjectAs` and its value is a parsed `CssSelector`.\n *\n * For example, given the following HTML:\n *\n * ```\n *

\n * ```\n *\n * the generated code for the `element()` instruction would include:\n *\n * ```\n * ['attr', 'value', AttributeMarker.ProjectAs, ['', 'title', '']]\n * ```\n */\n ProjectAs = 5,\n\n /**\n * Signals that the following attribute will be translated by runtime i18n\n *\n * For example, given the following HTML:\n *\n * ```\n *
\n * ```\n *\n * the generated code is:\n *\n * ```\n * var _c1 = ['moo', 'car', AttributeMarker.I18n, 'foo', 'bar'];\n */\n I18n = 6,\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Represents a big integer using a buffer of its individual digits, with the least significant\n * digit stored at the beginning of the array (little endian).\n *\n * For performance reasons, each instance is mutable. The addition operation can be done in-place\n * to reduce memory pressure of allocation for the digits array.\n */\nexport class BigInteger {\n static zero(): BigInteger {\n return new BigInteger([0]);\n }\n\n static one(): BigInteger {\n return new BigInteger([1]);\n }\n\n /**\n * Creates a big integer using its individual digits in little endian storage.\n */\n private constructor(private readonly digits: number[]) {}\n\n /**\n * Creates a clone of this instance.\n */\n clone(): BigInteger {\n return new BigInteger(this.digits.slice());\n }\n\n /**\n * Returns a new big integer with the sum of `this` and `other` as its value. This does not mutate\n * `this` but instead returns a new instance, unlike `addToSelf`.\n */\n add(other: BigInteger): BigInteger {\n const result = this.clone();\n result.addToSelf(other);\n return result;\n }\n\n /**\n * Adds `other` to the instance itself, thereby mutating its value.\n */\n addToSelf(other: BigInteger): void {\n const maxNrOfDigits = Math.max(this.digits.length, other.digits.length);\n let carry = 0;\n for (let i = 0; i < maxNrOfDigits; i++) {\n let digitSum = carry;\n if (i < this.digits.length) {\n digitSum += this.digits[i];\n }\n if (i < other.digits.length) {\n digitSum += other.digits[i];\n }\n\n if (digitSum >= 10) {\n this.digits[i] = digitSum - 10;\n carry = 1;\n } else {\n this.digits[i] = digitSum;\n carry = 0;\n }\n }\n\n // Apply a remaining carry if needed.\n if (carry > 0) {\n this.digits[maxNrOfDigits] = 1;\n }\n }\n\n /**\n * Builds the decimal string representation of the big integer. As this is stored in\n * little endian, the digits are concatenated in reverse order.\n */\n toString(): string {\n let res = '';\n for (let i = this.digits.length - 1; i >= 0; i--) {\n res += this.digits[i];\n }\n return res;\n }\n}\n\n/**\n * Represents a big integer which is optimized for multiplication operations, as its power-of-twos\n * are memoized. See `multiplyBy()` for details on the multiplication algorithm.\n */\nexport class BigIntForMultiplication {\n /**\n * Stores all memoized power-of-twos, where each index represents `this.number * 2^index`.\n */\n private readonly powerOfTwos: BigInteger[];\n\n constructor(value: BigInteger) {\n this.powerOfTwos = [value];\n }\n\n /**\n * Returns the big integer itself.\n */\n getValue(): BigInteger {\n return this.powerOfTwos[0];\n }\n\n /**\n * Computes the value for `num * b`, where `num` is a JS number and `b` is a big integer. The\n * value for `b` is represented by a storage model that is optimized for this computation.\n *\n * This operation is implemented in N(log2(num)) by continuous halving of the number, where the\n * least-significant bit (LSB) is tested in each iteration. If the bit is set, the bit's index is\n * used as exponent into the power-of-two multiplication of `b`.\n *\n * As an example, consider the multiplication num=42, b=1337. In binary 42 is 0b00101010 and the\n * algorithm unrolls into the following iterations:\n *\n * Iteration | num | LSB | b * 2^iter | Add? | product\n * -----------|------------|------|------------|------|--------\n * 0 | 0b00101010 | 0 | 1337 | No | 0\n * 1 | 0b00010101 | 1 | 2674 | Yes | 2674\n * 2 | 0b00001010 | 0 | 5348 | No | 2674\n * 3 | 0b00000101 | 1 | 10696 | Yes | 13370\n * 4 | 0b00000010 | 0 | 21392 | No | 13370\n * 5 | 0b00000001 | 1 | 42784 | Yes | 56154\n * 6 | 0b00000000 | 0 | 85568 | No | 56154\n *\n * The computed product of 56154 is indeed the correct result.\n *\n * The `BigIntForMultiplication` representation for a big integer provides memoized access to the\n * power-of-two values to reduce the workload in computing those values.\n */\n multiplyBy(num: number): BigInteger {\n const product = BigInteger.zero();\n this.multiplyByAndAddTo(num, product);\n return product;\n }\n\n /**\n * See `multiplyBy()` for details. This function allows for the computed product to be added\n * directly to the provided result big integer.\n */\n multiplyByAndAddTo(num: number, result: BigInteger): void {\n for (let exponent = 0; num !== 0; num = num >>> 1, exponent++) {\n if (num & 1) {\n const value = this.getMultipliedByPowerOfTwo(exponent);\n result.addToSelf(value);\n }\n }\n }\n\n /**\n * Computes and memoizes the big integer value for `this.number * 2^exponent`.\n */\n private getMultipliedByPowerOfTwo(exponent: number): BigInteger {\n // Compute the powers up until the requested exponent, where each value is computed from its\n // predecessor. This is simple as `this.number * 2^(exponent - 1)` only has to be doubled (i.e.\n // added to itself) to reach `this.number * 2^exponent`.\n for (let i = this.powerOfTwos.length; i <= exponent; i++) {\n const previousPower = this.powerOfTwos[i - 1];\n this.powerOfTwos[i] = previousPower.add(previousPower);\n }\n return this.powerOfTwos[exponent];\n }\n}\n\n/**\n * Represents an exponentiation operation for the provided base, of which exponents are computed and\n * memoized. The results are represented by a `BigIntForMultiplication` which is tailored for\n * multiplication operations by memoizing the power-of-twos. This effectively results in a matrix\n * representation that is lazily computed upon request.\n */\nexport class BigIntExponentiation {\n private readonly exponents = [new BigIntForMultiplication(BigInteger.one())];\n\n constructor(private readonly base: number) {}\n\n /**\n * Compute the value for `this.base^exponent`, resulting in a big integer that is optimized for\n * further multiplication operations.\n */\n toThePowerOf(exponent: number): BigIntForMultiplication {\n // Compute the results up until the requested exponent, where every value is computed from its\n // predecessor. This is because `this.base^(exponent - 1)` only has to be multiplied by `base`\n // to reach `this.base^exponent`.\n for (let i = this.exponents.length; i <= exponent; i++) {\n const value = this.exponents[i - 1].multiplyBy(this.base);\n this.exponents[i] = new BigIntForMultiplication(value);\n }\n return this.exponents[exponent];\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Byte} from '../util';\n\nimport {BigIntExponentiation} from './big_integer';\nimport * as i18n from './i18n_ast';\n\n/**\n * A lazily created TextEncoder instance for converting strings into UTF-8 bytes\n */\nlet textEncoder: TextEncoder|undefined;\n\n/**\n * Return the message id or compute it using the XLIFF1 digest.\n */\nexport function digest(message: i18n.Message): string {\n return message.id || computeDigest(message);\n}\n\n/**\n * Compute the message id using the XLIFF1 digest.\n */\nexport function computeDigest(message: i18n.Message): string {\n return sha1(serializeNodes(message.nodes).join('') + `[${message.meaning}]`);\n}\n\n/**\n * Return the message id or compute it using the XLIFF2/XMB/$localize digest.\n */\nexport function decimalDigest(message: i18n.Message): string {\n return message.id || computeDecimalDigest(message);\n}\n\n/**\n * Compute the message id using the XLIFF2/XMB/$localize digest.\n */\nexport function computeDecimalDigest(message: i18n.Message): string {\n const visitor = new _SerializerIgnoreIcuExpVisitor();\n const parts = message.nodes.map(a => a.visit(visitor, null));\n return computeMsgId(parts.join(''), message.meaning);\n}\n\n/**\n * Serialize the i18n ast to something xml-like in order to generate an UID.\n *\n * The visitor is also used in the i18n parser tests\n *\n * @internal\n */\nclass _SerializerVisitor implements i18n.Visitor {\n visitText(text: i18n.Text, context: any): any {\n return text.value;\n }\n\n visitContainer(container: i18n.Container, context: any): any {\n return `[${container.children.map(child => child.visit(this)).join(', ')}]`;\n }\n\n visitIcu(icu: i18n.Icu, context: any): any {\n const strCases =\n Object.keys(icu.cases).map((k: string) => `${k} {${icu.cases[k].visit(this)}}`);\n return `{${icu.expression}, ${icu.type}, ${strCases.join(', ')}}`;\n }\n\n visitTagPlaceholder(ph: i18n.TagPlaceholder, context: any): any {\n return ph.isVoid ?\n `` :\n `${\n ph.children.map(child => child.visit(this)).join(', ')}`;\n }\n\n visitPlaceholder(ph: i18n.Placeholder, context: any): any {\n return ph.value ? `${ph.value}` : ``;\n }\n\n visitIcuPlaceholder(ph: i18n.IcuPlaceholder, context?: any): any {\n return `${ph.value.visit(this)}`;\n }\n}\n\nconst serializerVisitor = new _SerializerVisitor();\n\nexport function serializeNodes(nodes: i18n.Node[]): string[] {\n return nodes.map(a => a.visit(serializerVisitor, null));\n}\n\n/**\n * Serialize the i18n ast to something xml-like in order to generate an UID.\n *\n * Ignore the ICU expressions so that message IDs stays identical if only the expression changes.\n *\n * @internal\n */\nclass _SerializerIgnoreIcuExpVisitor extends _SerializerVisitor {\n override visitIcu(icu: i18n.Icu, context: any): any {\n let strCases = Object.keys(icu.cases).map((k: string) => `${k} {${icu.cases[k].visit(this)}}`);\n // Do not take the expression into account\n return `{${icu.type}, ${strCases.join(', ')}}`;\n }\n}\n\n/**\n * Compute the SHA1 of the given string\n *\n * see https://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf\n *\n * WARNING: this function has not been designed not tested with security in mind.\n * DO NOT USE IT IN A SECURITY SENSITIVE CONTEXT.\n */\nexport function sha1(str: string): string {\n textEncoder ??= new TextEncoder();\n const utf8 = [...textEncoder.encode(str)];\n const words32 = bytesToWords32(utf8, Endian.Big);\n const len = utf8.length * 8;\n\n const w = new Uint32Array(80);\n let a = 0x67452301, b = 0xefcdab89, c = 0x98badcfe, d = 0x10325476, e = 0xc3d2e1f0;\n\n words32[len >> 5] |= 0x80 << (24 - len % 32);\n words32[((len + 64 >> 9) << 4) + 15] = len;\n\n for (let i = 0; i < words32.length; i += 16) {\n const h0 = a, h1 = b, h2 = c, h3 = d, h4 = e;\n\n for (let j = 0; j < 80; j++) {\n if (j < 16) {\n w[j] = words32[i + j];\n } else {\n w[j] = rol32(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1);\n }\n\n const fkVal = fk(j, b, c, d);\n const f = fkVal[0];\n const k = fkVal[1];\n const temp = [rol32(a, 5), f, e, k, w[j]].reduce(add32);\n e = d;\n d = c;\n c = rol32(b, 30);\n b = a;\n a = temp;\n }\n a = add32(a, h0);\n b = add32(b, h1);\n c = add32(c, h2);\n d = add32(d, h3);\n e = add32(e, h4);\n }\n\n // Convert the output parts to a 160-bit hexadecimal string\n return toHexU32(a) + toHexU32(b) + toHexU32(c) + toHexU32(d) + toHexU32(e);\n}\n\n/**\n * Convert and format a number as a string representing a 32-bit unsigned hexadecimal number.\n * @param value The value to format as a string.\n * @returns A hexadecimal string representing the value.\n */\nfunction toHexU32(value: number): string {\n // unsigned right shift of zero ensures an unsigned 32-bit number\n return (value >>> 0).toString(16).padStart(8, '0');\n}\n\nfunction fk(index: number, b: number, c: number, d: number): [number, number] {\n if (index < 20) {\n return [(b & c) | (~b & d), 0x5a827999];\n }\n\n if (index < 40) {\n return [b ^ c ^ d, 0x6ed9eba1];\n }\n\n if (index < 60) {\n return [(b & c) | (b & d) | (c & d), 0x8f1bbcdc];\n }\n\n return [b ^ c ^ d, 0xca62c1d6];\n}\n\n/**\n * Compute the fingerprint of the given string\n *\n * The output is 64 bit number encoded as a decimal string\n *\n * based on:\n * https://github.com/google/closure-compiler/blob/master/src/com/google/javascript/jscomp/GoogleJsMessageIdGenerator.java\n */\nexport function fingerprint(str: string): [number, number] {\n textEncoder ??= new TextEncoder();\n const utf8 = textEncoder.encode(str);\n const view = new DataView(utf8.buffer, utf8.byteOffset, utf8.byteLength);\n\n let hi = hash32(view, utf8.length, 0);\n let lo = hash32(view, utf8.length, 102072);\n\n if (hi == 0 && (lo == 0 || lo == 1)) {\n hi = hi ^ 0x130f9bef;\n lo = lo ^ -0x6b5f56d8;\n }\n\n return [hi, lo];\n}\n\nexport function computeMsgId(msg: string, meaning: string = ''): string {\n let msgFingerprint = fingerprint(msg);\n\n if (meaning) {\n const meaningFingerprint = fingerprint(meaning);\n msgFingerprint = add64(rol64(msgFingerprint, 1), meaningFingerprint);\n }\n\n const hi = msgFingerprint[0];\n const lo = msgFingerprint[1];\n\n return wordsToDecimalString(hi & 0x7fffffff, lo);\n}\n\nfunction hash32(view: DataView, length: number, c: number): number {\n let a = 0x9e3779b9, b = 0x9e3779b9;\n let index = 0;\n\n const end = length - 12;\n for (; index <= end; index += 12) {\n a += view.getUint32(index, true);\n b += view.getUint32(index + 4, true);\n c += view.getUint32(index + 8, true);\n const res = mix(a, b, c);\n a = res[0], b = res[1], c = res[2];\n }\n\n const remainder = length - index;\n\n // the first byte of c is reserved for the length\n c += length;\n\n if (remainder >= 4) {\n a += view.getUint32(index, true);\n index += 4;\n\n if (remainder >= 8) {\n b += view.getUint32(index, true);\n index += 4;\n\n // Partial 32-bit word for c\n if (remainder >= 9) {\n c += view.getUint8(index++) << 8;\n }\n if (remainder >= 10) {\n c += view.getUint8(index++) << 16;\n }\n if (remainder === 11) {\n c += view.getUint8(index++) << 24;\n }\n } else {\n // Partial 32-bit word for b\n if (remainder >= 5) {\n b += view.getUint8(index++);\n }\n if (remainder >= 6) {\n b += view.getUint8(index++) << 8;\n }\n if (remainder === 7) {\n b += view.getUint8(index++) << 16;\n }\n }\n } else {\n // Partial 32-bit word for a\n if (remainder >= 1) {\n a += view.getUint8(index++);\n }\n if (remainder >= 2) {\n a += view.getUint8(index++) << 8;\n }\n if (remainder === 3) {\n a += view.getUint8(index++) << 16;\n }\n }\n\n return mix(a, b, c)[2];\n}\n\n// clang-format off\nfunction mix(a: number, b: number, c: number): [number, number, number] {\n a -= b; a -= c; a ^= c >>> 13;\n b -= c; b -= a; b ^= a << 8;\n c -= a; c -= b; c ^= b >>> 13;\n a -= b; a -= c; a ^= c >>> 12;\n b -= c; b -= a; b ^= a << 16;\n c -= a; c -= b; c ^= b >>> 5;\n a -= b; a -= c; a ^= c >>> 3;\n b -= c; b -= a; b ^= a << 10;\n c -= a; c -= b; c ^= b >>> 15;\n return [a, b, c];\n}\n// clang-format on\n\n// Utils\n\nenum Endian {\n Little,\n Big,\n}\n\nfunction add32(a: number, b: number): number {\n return add32to64(a, b)[1];\n}\n\nfunction add32to64(a: number, b: number): [number, number] {\n const low = (a & 0xffff) + (b & 0xffff);\n const high = (a >>> 16) + (b >>> 16) + (low >>> 16);\n return [high >>> 16, (high << 16) | (low & 0xffff)];\n}\n\nfunction add64(a: [number, number], b: [number, number]): [number, number] {\n const ah = a[0], al = a[1];\n const bh = b[0], bl = b[1];\n const result = add32to64(al, bl);\n const carry = result[0];\n const l = result[1];\n const h = add32(add32(ah, bh), carry);\n return [h, l];\n}\n\n// Rotate a 32b number left `count` position\nfunction rol32(a: number, count: number): number {\n return (a << count) | (a >>> (32 - count));\n}\n\n// Rotate a 64b number left `count` position\nfunction rol64(num: [number, number], count: number): [number, number] {\n const hi = num[0], lo = num[1];\n const h = (hi << count) | (lo >>> (32 - count));\n const l = (lo << count) | (hi >>> (32 - count));\n return [h, l];\n}\n\nfunction bytesToWords32(bytes: Byte[], endian: Endian): number[] {\n const size = (bytes.length + 3) >>> 2;\n const words32 = [];\n\n for (let i = 0; i < size; i++) {\n words32[i] = wordAt(bytes, i * 4, endian);\n }\n\n return words32;\n}\n\nfunction byteAt(bytes: Byte[], index: number): Byte {\n return index >= bytes.length ? 0 : bytes[index];\n}\n\nfunction wordAt(bytes: Byte[], index: number, endian: Endian): number {\n let word = 0;\n if (endian === Endian.Big) {\n for (let i = 0; i < 4; i++) {\n word += byteAt(bytes, index + i) << (24 - 8 * i);\n }\n } else {\n for (let i = 0; i < 4; i++) {\n word += byteAt(bytes, index + i) << 8 * i;\n }\n }\n return word;\n}\n\n/**\n * Create a shared exponentiation pool for base-256 computations. This shared pool provides memoized\n * power-of-256 results with memoized power-of-two computations for efficient multiplication.\n *\n * For our purposes, this can be safely stored as a global without memory concerns. The reason is\n * that we encode two words, so only need the 0th (for the low word) and 4th (for the high word)\n * exponent.\n */\nconst base256 = new BigIntExponentiation(256);\n\n/**\n * Represents two 32-bit words as a single decimal number. This requires a big integer storage\n * model as JS numbers are not accurate enough to represent the 64-bit number.\n *\n * Based on https://www.danvk.org/hex2dec.html\n */\nfunction wordsToDecimalString(hi: number, lo: number): string {\n // Encode the four bytes in lo in the lower digits of the decimal number.\n // Note: the multiplication results in lo itself but represented by a big integer using its\n // decimal digits.\n const decimal = base256.toThePowerOf(0).multiplyBy(lo);\n\n // Encode the four bytes in hi above the four lo bytes. lo is a maximum of (2^8)^4, which is why\n // this multiplication factor is applied.\n base256.toThePowerOf(4).multiplyByAndAddTo(hi, decimal);\n\n return decimal.toString();\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {computeMsgId} from '../i18n/digest';\nimport {Message} from '../i18n/i18n_ast';\nimport {ParseSourceSpan} from '../parse_util';\nimport {I18nMeta} from '../render3/view/i18n/meta';\n\n//// Types\nexport enum TypeModifier {\n None = 0,\n Const = 1 << 0,\n}\n\nexport abstract class Type {\n constructor(public modifiers: TypeModifier = TypeModifier.None) {}\n abstract visitType(visitor: TypeVisitor, context: any): any;\n\n hasModifier(modifier: TypeModifier): boolean {\n return (this.modifiers & modifier) !== 0;\n }\n}\n\nexport enum BuiltinTypeName {\n Dynamic,\n Bool,\n String,\n Int,\n Number,\n Function,\n Inferred,\n None,\n}\n\nexport class BuiltinType extends Type {\n constructor(public name: BuiltinTypeName, modifiers?: TypeModifier) {\n super(modifiers);\n }\n override visitType(visitor: TypeVisitor, context: any): any {\n return visitor.visitBuiltinType(this, context);\n }\n}\n\nexport class ExpressionType extends Type {\n constructor(\n public value: Expression, modifiers?: TypeModifier, public typeParams: Type[]|null = null) {\n super(modifiers);\n }\n override visitType(visitor: TypeVisitor, context: any): any {\n return visitor.visitExpressionType(this, context);\n }\n}\n\n\nexport class ArrayType extends Type {\n constructor(public of: Type, modifiers?: TypeModifier) {\n super(modifiers);\n }\n override visitType(visitor: TypeVisitor, context: any): any {\n return visitor.visitArrayType(this, context);\n }\n}\n\n\nexport class MapType extends Type {\n public valueType: Type|null;\n constructor(valueType: Type|null|undefined, modifiers?: TypeModifier) {\n super(modifiers);\n this.valueType = valueType || null;\n }\n override visitType(visitor: TypeVisitor, context: any): any {\n return visitor.visitMapType(this, context);\n }\n}\n\nexport const DYNAMIC_TYPE = new BuiltinType(BuiltinTypeName.Dynamic);\nexport const INFERRED_TYPE = new BuiltinType(BuiltinTypeName.Inferred);\nexport const BOOL_TYPE = new BuiltinType(BuiltinTypeName.Bool);\nexport const INT_TYPE = new BuiltinType(BuiltinTypeName.Int);\nexport const NUMBER_TYPE = new BuiltinType(BuiltinTypeName.Number);\nexport const STRING_TYPE = new BuiltinType(BuiltinTypeName.String);\nexport const FUNCTION_TYPE = new BuiltinType(BuiltinTypeName.Function);\nexport const NONE_TYPE = new BuiltinType(BuiltinTypeName.None);\n\nexport interface TypeVisitor {\n visitBuiltinType(type: BuiltinType, context: any): any;\n visitExpressionType(type: ExpressionType, context: any): any;\n visitArrayType(type: ArrayType, context: any): any;\n visitMapType(type: MapType, context: any): any;\n}\n\n///// Expressions\n\nexport enum UnaryOperator {\n Minus,\n Plus,\n}\n\nexport enum BinaryOperator {\n Equals,\n NotEquals,\n Identical,\n NotIdentical,\n Minus,\n Plus,\n Divide,\n Multiply,\n Modulo,\n And,\n Or,\n BitwiseAnd,\n Lower,\n LowerEquals,\n Bigger,\n BiggerEquals,\n NullishCoalesce,\n}\n\nexport function nullSafeIsEquivalent(\n base: T|null, other: T|null) {\n if (base == null || other == null) {\n return base == other;\n }\n return base.isEquivalent(other);\n}\n\nfunction areAllEquivalentPredicate(\n base: T[], other: T[], equivalentPredicate: (baseElement: T, otherElement: T) => boolean) {\n const len = base.length;\n if (len !== other.length) {\n return false;\n }\n for (let i = 0; i < len; i++) {\n if (!equivalentPredicate(base[i], other[i])) {\n return false;\n }\n }\n return true;\n}\n\nexport function areAllEquivalent(\n base: T[], other: T[]) {\n return areAllEquivalentPredicate(\n base, other, (baseElement: T, otherElement: T) => baseElement.isEquivalent(otherElement));\n}\n\nexport abstract class Expression {\n public type: Type|null;\n public sourceSpan: ParseSourceSpan|null;\n\n constructor(type: Type|null|undefined, sourceSpan?: ParseSourceSpan|null) {\n this.type = type || null;\n this.sourceSpan = sourceSpan || null;\n }\n\n abstract visitExpression(visitor: ExpressionVisitor, context: any): any;\n\n /**\n * Calculates whether this expression produces the same value as the given expression.\n * Note: We don't check Types nor ParseSourceSpans nor function arguments.\n */\n abstract isEquivalent(e: Expression): boolean;\n\n /**\n * Return true if the expression is constant.\n */\n abstract isConstant(): boolean;\n\n prop(name: string, sourceSpan?: ParseSourceSpan|null): ReadPropExpr {\n return new ReadPropExpr(this, name, null, sourceSpan);\n }\n\n key(index: Expression, type?: Type|null, sourceSpan?: ParseSourceSpan|null): ReadKeyExpr {\n return new ReadKeyExpr(this, index, type, sourceSpan);\n }\n\n callFn(params: Expression[], sourceSpan?: ParseSourceSpan|null, pure?: boolean):\n InvokeFunctionExpr {\n return new InvokeFunctionExpr(this, params, null, sourceSpan, pure);\n }\n\n instantiate(params: Expression[], type?: Type|null, sourceSpan?: ParseSourceSpan|null):\n InstantiateExpr {\n return new InstantiateExpr(this, params, type, sourceSpan);\n }\n\n conditional(\n trueCase: Expression, falseCase: Expression|null = null,\n sourceSpan?: ParseSourceSpan|null): ConditionalExpr {\n return new ConditionalExpr(this, trueCase, falseCase, null, sourceSpan);\n }\n\n equals(rhs: Expression, sourceSpan?: ParseSourceSpan|null): BinaryOperatorExpr {\n return new BinaryOperatorExpr(BinaryOperator.Equals, this, rhs, null, sourceSpan);\n }\n notEquals(rhs: Expression, sourceSpan?: ParseSourceSpan|null): BinaryOperatorExpr {\n return new BinaryOperatorExpr(BinaryOperator.NotEquals, this, rhs, null, sourceSpan);\n }\n identical(rhs: Expression, sourceSpan?: ParseSourceSpan|null): BinaryOperatorExpr {\n return new BinaryOperatorExpr(BinaryOperator.Identical, this, rhs, null, sourceSpan);\n }\n notIdentical(rhs: Expression, sourceSpan?: ParseSourceSpan|null): BinaryOperatorExpr {\n return new BinaryOperatorExpr(BinaryOperator.NotIdentical, this, rhs, null, sourceSpan);\n }\n minus(rhs: Expression, sourceSpan?: ParseSourceSpan|null): BinaryOperatorExpr {\n return new BinaryOperatorExpr(BinaryOperator.Minus, this, rhs, null, sourceSpan);\n }\n plus(rhs: Expression, sourceSpan?: ParseSourceSpan|null): BinaryOperatorExpr {\n return new BinaryOperatorExpr(BinaryOperator.Plus, this, rhs, null, sourceSpan);\n }\n divide(rhs: Expression, sourceSpan?: ParseSourceSpan|null): BinaryOperatorExpr {\n return new BinaryOperatorExpr(BinaryOperator.Divide, this, rhs, null, sourceSpan);\n }\n multiply(rhs: Expression, sourceSpan?: ParseSourceSpan|null): BinaryOperatorExpr {\n return new BinaryOperatorExpr(BinaryOperator.Multiply, this, rhs, null, sourceSpan);\n }\n modulo(rhs: Expression, sourceSpan?: ParseSourceSpan|null): BinaryOperatorExpr {\n return new BinaryOperatorExpr(BinaryOperator.Modulo, this, rhs, null, sourceSpan);\n }\n and(rhs: Expression, sourceSpan?: ParseSourceSpan|null): BinaryOperatorExpr {\n return new BinaryOperatorExpr(BinaryOperator.And, this, rhs, null, sourceSpan);\n }\n bitwiseAnd(rhs: Expression, sourceSpan?: ParseSourceSpan|null, parens: boolean = true):\n BinaryOperatorExpr {\n return new BinaryOperatorExpr(BinaryOperator.BitwiseAnd, this, rhs, null, sourceSpan, parens);\n }\n or(rhs: Expression, sourceSpan?: ParseSourceSpan|null): BinaryOperatorExpr {\n return new BinaryOperatorExpr(BinaryOperator.Or, this, rhs, null, sourceSpan);\n }\n lower(rhs: Expression, sourceSpan?: ParseSourceSpan|null): BinaryOperatorExpr {\n return new BinaryOperatorExpr(BinaryOperator.Lower, this, rhs, null, sourceSpan);\n }\n lowerEquals(rhs: Expression, sourceSpan?: ParseSourceSpan|null): BinaryOperatorExpr {\n return new BinaryOperatorExpr(BinaryOperator.LowerEquals, this, rhs, null, sourceSpan);\n }\n bigger(rhs: Expression, sourceSpan?: ParseSourceSpan|null): BinaryOperatorExpr {\n return new BinaryOperatorExpr(BinaryOperator.Bigger, this, rhs, null, sourceSpan);\n }\n biggerEquals(rhs: Expression, sourceSpan?: ParseSourceSpan|null): BinaryOperatorExpr {\n return new BinaryOperatorExpr(BinaryOperator.BiggerEquals, this, rhs, null, sourceSpan);\n }\n isBlank(sourceSpan?: ParseSourceSpan|null): Expression {\n // Note: We use equals by purpose here to compare to null and undefined in JS.\n // We use the typed null to allow strictNullChecks to narrow types.\n return this.equals(TYPED_NULL_EXPR, sourceSpan);\n }\n nullishCoalesce(rhs: Expression, sourceSpan?: ParseSourceSpan|null): BinaryOperatorExpr {\n return new BinaryOperatorExpr(BinaryOperator.NullishCoalesce, this, rhs, null, sourceSpan);\n }\n\n toStmt(): Statement {\n return new ExpressionStatement(this, null);\n }\n}\n\nexport class ReadVarExpr extends Expression {\n constructor(public name: string, type?: Type|null, sourceSpan?: ParseSourceSpan|null) {\n super(type, sourceSpan);\n }\n\n override isEquivalent(e: Expression): boolean {\n return e instanceof ReadVarExpr && this.name === e.name;\n }\n\n override isConstant() {\n return false;\n }\n\n override visitExpression(visitor: ExpressionVisitor, context: any): any {\n return visitor.visitReadVarExpr(this, context);\n }\n\n set(value: Expression): WriteVarExpr {\n return new WriteVarExpr(this.name, value, null, this.sourceSpan);\n }\n}\n\nexport class TypeofExpr extends Expression {\n constructor(public expr: Expression, type?: Type|null, sourceSpan?: ParseSourceSpan|null) {\n super(type, sourceSpan);\n }\n\n override visitExpression(visitor: ExpressionVisitor, context: any) {\n return visitor.visitTypeofExpr(this, context);\n }\n\n override isEquivalent(e: Expression): boolean {\n return e instanceof TypeofExpr && e.expr.isEquivalent(this.expr);\n }\n\n override isConstant(): boolean {\n return this.expr.isConstant();\n }\n}\n\nexport class WrappedNodeExpr extends Expression {\n constructor(public node: T, type?: Type|null, sourceSpan?: ParseSourceSpan|null) {\n super(type, sourceSpan);\n }\n\n override isEquivalent(e: Expression): boolean {\n return e instanceof WrappedNodeExpr && this.node === e.node;\n }\n\n override isConstant() {\n return false;\n }\n\n override visitExpression(visitor: ExpressionVisitor, context: any): any {\n return visitor.visitWrappedNodeExpr(this, context);\n }\n}\n\nexport class WriteVarExpr extends Expression {\n public value: Expression;\n constructor(\n public name: string, value: Expression, type?: Type|null, sourceSpan?: ParseSourceSpan|null) {\n super(type || value.type, sourceSpan);\n this.value = value;\n }\n\n override isEquivalent(e: Expression): boolean {\n return e instanceof WriteVarExpr && this.name === e.name && this.value.isEquivalent(e.value);\n }\n\n override isConstant() {\n return false;\n }\n\n override visitExpression(visitor: ExpressionVisitor, context: any): any {\n return visitor.visitWriteVarExpr(this, context);\n }\n\n toDeclStmt(type?: Type|null, modifiers?: StmtModifier): DeclareVarStmt {\n return new DeclareVarStmt(this.name, this.value, type, modifiers, this.sourceSpan);\n }\n\n toConstDecl(): DeclareVarStmt {\n return this.toDeclStmt(INFERRED_TYPE, StmtModifier.Final);\n }\n}\n\n\nexport class WriteKeyExpr extends Expression {\n public value: Expression;\n constructor(\n public receiver: Expression, public index: Expression, value: Expression, type?: Type|null,\n sourceSpan?: ParseSourceSpan|null) {\n super(type || value.type, sourceSpan);\n this.value = value;\n }\n\n override isEquivalent(e: Expression): boolean {\n return e instanceof WriteKeyExpr && this.receiver.isEquivalent(e.receiver) &&\n this.index.isEquivalent(e.index) && this.value.isEquivalent(e.value);\n }\n\n override isConstant() {\n return false;\n }\n\n override visitExpression(visitor: ExpressionVisitor, context: any): any {\n return visitor.visitWriteKeyExpr(this, context);\n }\n}\n\n\nexport class WritePropExpr extends Expression {\n public value: Expression;\n constructor(\n public receiver: Expression, public name: string, value: Expression, type?: Type|null,\n sourceSpan?: ParseSourceSpan|null) {\n super(type || value.type, sourceSpan);\n this.value = value;\n }\n\n override isEquivalent(e: Expression): boolean {\n return e instanceof WritePropExpr && this.receiver.isEquivalent(e.receiver) &&\n this.name === e.name && this.value.isEquivalent(e.value);\n }\n\n override isConstant() {\n return false;\n }\n\n override visitExpression(visitor: ExpressionVisitor, context: any): any {\n return visitor.visitWritePropExpr(this, context);\n }\n}\n\nexport class InvokeFunctionExpr extends Expression {\n constructor(\n public fn: Expression, public args: Expression[], type?: Type|null,\n sourceSpan?: ParseSourceSpan|null, public pure = false) {\n super(type, sourceSpan);\n }\n\n override isEquivalent(e: Expression): boolean {\n return e instanceof InvokeFunctionExpr && this.fn.isEquivalent(e.fn) &&\n areAllEquivalent(this.args, e.args) && this.pure === e.pure;\n }\n\n override isConstant() {\n return false;\n }\n\n override visitExpression(visitor: ExpressionVisitor, context: any): any {\n return visitor.visitInvokeFunctionExpr(this, context);\n }\n}\n\n\nexport class TaggedTemplateExpr extends Expression {\n constructor(\n public tag: Expression, public template: TemplateLiteral, type?: Type|null,\n sourceSpan?: ParseSourceSpan|null) {\n super(type, sourceSpan);\n }\n\n override isEquivalent(e: Expression): boolean {\n return e instanceof TaggedTemplateExpr && this.tag.isEquivalent(e.tag) &&\n areAllEquivalentPredicate(\n this.template.elements, e.template.elements, (a, b) => a.text === b.text) &&\n areAllEquivalent(this.template.expressions, e.template.expressions);\n }\n\n override isConstant() {\n return false;\n }\n\n override visitExpression(visitor: ExpressionVisitor, context: any): any {\n return visitor.visitTaggedTemplateExpr(this, context);\n }\n}\n\n\nexport class InstantiateExpr extends Expression {\n constructor(\n public classExpr: Expression, public args: Expression[], type?: Type|null,\n sourceSpan?: ParseSourceSpan|null) {\n super(type, sourceSpan);\n }\n\n override isEquivalent(e: Expression): boolean {\n return e instanceof InstantiateExpr && this.classExpr.isEquivalent(e.classExpr) &&\n areAllEquivalent(this.args, e.args);\n }\n\n override isConstant() {\n return false;\n }\n\n override visitExpression(visitor: ExpressionVisitor, context: any): any {\n return visitor.visitInstantiateExpr(this, context);\n }\n}\n\n\nexport class LiteralExpr extends Expression {\n constructor(\n public value: number|string|boolean|null|undefined, type?: Type|null,\n sourceSpan?: ParseSourceSpan|null) {\n super(type, sourceSpan);\n }\n\n override isEquivalent(e: Expression): boolean {\n return e instanceof LiteralExpr && this.value === e.value;\n }\n\n override isConstant() {\n return true;\n }\n\n override visitExpression(visitor: ExpressionVisitor, context: any): any {\n return visitor.visitLiteralExpr(this, context);\n }\n}\n\nexport class TemplateLiteral {\n constructor(public elements: TemplateLiteralElement[], public expressions: Expression[]) {}\n}\nexport class TemplateLiteralElement {\n rawText: string;\n constructor(public text: string, public sourceSpan?: ParseSourceSpan, rawText?: string) {\n // If `rawText` is not provided, try to extract the raw string from its\n // associated `sourceSpan`. If that is also not available, \"fake\" the raw\n // string instead by escaping the following control sequences:\n // - \"\\\" would otherwise indicate that the next character is a control character.\n // - \"`\" and \"${\" are template string control sequences that would otherwise prematurely\n // indicate the end of the template literal element.\n this.rawText =\n rawText ?? sourceSpan?.toString() ?? escapeForTemplateLiteral(escapeSlashes(text));\n }\n}\n\nexport class LiteralPiece {\n constructor(public text: string, public sourceSpan: ParseSourceSpan) {}\n}\nexport class PlaceholderPiece {\n /**\n * Create a new instance of a `PlaceholderPiece`.\n *\n * @param text the name of this placeholder (e.g. `PH_1`).\n * @param sourceSpan the location of this placeholder in its localized message the source code.\n * @param associatedMessage reference to another message that this placeholder is associated with.\n * The `associatedMessage` is mainly used to provide a relationship to an ICU message that has\n * been extracted out from the message containing the placeholder.\n */\n constructor(\n public text: string, public sourceSpan: ParseSourceSpan, public associatedMessage?: Message) {\n }\n}\n\nexport type MessagePiece = LiteralPiece|PlaceholderPiece;\n\nconst MEANING_SEPARATOR = '|';\nconst ID_SEPARATOR = '@@';\nconst LEGACY_ID_INDICATOR = '␟';\n\nexport class LocalizedString extends Expression {\n constructor(\n readonly metaBlock: I18nMeta, readonly messageParts: LiteralPiece[],\n readonly placeHolderNames: PlaceholderPiece[], readonly expressions: Expression[],\n sourceSpan?: ParseSourceSpan|null) {\n super(STRING_TYPE, sourceSpan);\n }\n\n override isEquivalent(e: Expression): boolean {\n // return e instanceof LocalizedString && this.message === e.message;\n return false;\n }\n\n override isConstant() {\n return false;\n }\n\n override visitExpression(visitor: ExpressionVisitor, context: any): any {\n return visitor.visitLocalizedString(this, context);\n }\n\n /**\n * Serialize the given `meta` and `messagePart` into \"cooked\" and \"raw\" strings that can be used\n * in a `$localize` tagged string. The format of the metadata is the same as that parsed by\n * `parseI18nMeta()`.\n *\n * @param meta The metadata to serialize\n * @param messagePart The first part of the tagged string\n */\n serializeI18nHead(): CookedRawString {\n let metaBlock = this.metaBlock.description || '';\n if (this.metaBlock.meaning) {\n metaBlock = `${this.metaBlock.meaning}${MEANING_SEPARATOR}${metaBlock}`;\n }\n if (this.metaBlock.customId) {\n metaBlock = `${metaBlock}${ID_SEPARATOR}${this.metaBlock.customId}`;\n }\n if (this.metaBlock.legacyIds) {\n this.metaBlock.legacyIds.forEach(legacyId => {\n metaBlock = `${metaBlock}${LEGACY_ID_INDICATOR}${legacyId}`;\n });\n }\n return createCookedRawString(\n metaBlock, this.messageParts[0].text, this.getMessagePartSourceSpan(0));\n }\n\n getMessagePartSourceSpan(i: number): ParseSourceSpan|null {\n return this.messageParts[i]?.sourceSpan ?? this.sourceSpan;\n }\n\n getPlaceholderSourceSpan(i: number): ParseSourceSpan {\n return this.placeHolderNames[i]?.sourceSpan ?? this.expressions[i]?.sourceSpan ??\n this.sourceSpan;\n }\n\n /**\n * Serialize the given `placeholderName` and `messagePart` into \"cooked\" and \"raw\" strings that\n * can be used in a `$localize` tagged string.\n *\n * The format is `:[@@]:`.\n *\n * The `associated-id` is the message id of the (usually an ICU) message to which this placeholder\n * refers.\n *\n * @param partIndex The index of the message part to serialize.\n */\n serializeI18nTemplatePart(partIndex: number): CookedRawString {\n const placeholder = this.placeHolderNames[partIndex - 1];\n const messagePart = this.messageParts[partIndex];\n let metaBlock = placeholder.text;\n if (placeholder.associatedMessage?.legacyIds.length === 0) {\n metaBlock += `${ID_SEPARATOR}${\n computeMsgId(\n placeholder.associatedMessage.messageString, placeholder.associatedMessage.meaning)}`;\n }\n return createCookedRawString(\n metaBlock, messagePart.text, this.getMessagePartSourceSpan(partIndex));\n }\n}\n\n/**\n * A structure to hold the cooked and raw strings of a template literal element, along with its\n * source-span range.\n */\nexport interface CookedRawString {\n cooked: string;\n raw: string;\n range: ParseSourceSpan|null;\n}\n\nconst escapeSlashes = (str: string): string => str.replace(/\\\\/g, '\\\\\\\\');\nconst escapeStartingColon = (str: string): string => str.replace(/^:/, '\\\\:');\nconst escapeColons = (str: string): string => str.replace(/:/g, '\\\\:');\nconst escapeForTemplateLiteral = (str: string): string =>\n str.replace(/`/g, '\\\\`').replace(/\\${/g, '$\\\\{');\n\n/**\n * Creates a `{cooked, raw}` object from the `metaBlock` and `messagePart`.\n *\n * The `raw` text must have various character sequences escaped:\n * * \"\\\" would otherwise indicate that the next character is a control character.\n * * \"`\" and \"${\" are template string control sequences that would otherwise prematurely indicate\n * the end of a message part.\n * * \":\" inside a metablock would prematurely indicate the end of the metablock.\n * * \":\" at the start of a messagePart with no metablock would erroneously indicate the start of a\n * metablock.\n *\n * @param metaBlock Any metadata that should be prepended to the string\n * @param messagePart The message part of the string\n */\nfunction createCookedRawString(\n metaBlock: string, messagePart: string, range: ParseSourceSpan|null): CookedRawString {\n if (metaBlock === '') {\n return {\n cooked: messagePart,\n raw: escapeForTemplateLiteral(escapeStartingColon(escapeSlashes(messagePart))),\n range,\n };\n } else {\n return {\n cooked: `:${metaBlock}:${messagePart}`,\n raw: escapeForTemplateLiteral(\n `:${escapeColons(escapeSlashes(metaBlock))}:${escapeSlashes(messagePart)}`),\n range,\n };\n }\n}\n\nexport class ExternalExpr extends Expression {\n constructor(\n public value: ExternalReference, type?: Type|null, public typeParams: Type[]|null = null,\n sourceSpan?: ParseSourceSpan|null) {\n super(type, sourceSpan);\n }\n\n override isEquivalent(e: Expression): boolean {\n return e instanceof ExternalExpr && this.value.name === e.value.name &&\n this.value.moduleName === e.value.moduleName && this.value.runtime === e.value.runtime;\n }\n\n override isConstant() {\n return false;\n }\n\n override visitExpression(visitor: ExpressionVisitor, context: any): any {\n return visitor.visitExternalExpr(this, context);\n }\n}\n\nexport class ExternalReference {\n constructor(public moduleName: string|null, public name: string|null, public runtime?: any|null) {\n }\n // Note: no isEquivalent method here as we use this as an interface too.\n}\n\nexport class ConditionalExpr extends Expression {\n public trueCase: Expression;\n\n constructor(\n public condition: Expression, trueCase: Expression, public falseCase: Expression|null = null,\n type?: Type|null, sourceSpan?: ParseSourceSpan|null) {\n super(type || trueCase.type, sourceSpan);\n this.trueCase = trueCase;\n }\n\n override isEquivalent(e: Expression): boolean {\n return e instanceof ConditionalExpr && this.condition.isEquivalent(e.condition) &&\n this.trueCase.isEquivalent(e.trueCase) && nullSafeIsEquivalent(this.falseCase, e.falseCase);\n }\n\n override isConstant() {\n return false;\n }\n\n override visitExpression(visitor: ExpressionVisitor, context: any): any {\n return visitor.visitConditionalExpr(this, context);\n }\n}\n\n\nexport class NotExpr extends Expression {\n constructor(public condition: Expression, sourceSpan?: ParseSourceSpan|null) {\n super(BOOL_TYPE, sourceSpan);\n }\n\n override isEquivalent(e: Expression): boolean {\n return e instanceof NotExpr && this.condition.isEquivalent(e.condition);\n }\n\n override isConstant() {\n return false;\n }\n\n override visitExpression(visitor: ExpressionVisitor, context: any): any {\n return visitor.visitNotExpr(this, context);\n }\n}\n\nexport class FnParam {\n constructor(public name: string, public type: Type|null = null) {}\n\n isEquivalent(param: FnParam): boolean {\n return this.name === param.name;\n }\n}\n\n\nexport class FunctionExpr extends Expression {\n constructor(\n public params: FnParam[], public statements: Statement[], type?: Type|null,\n sourceSpan?: ParseSourceSpan|null, public name?: string|null) {\n super(type, sourceSpan);\n }\n\n override isEquivalent(e: Expression): boolean {\n return e instanceof FunctionExpr && areAllEquivalent(this.params, e.params) &&\n areAllEquivalent(this.statements, e.statements);\n }\n\n override isConstant() {\n return false;\n }\n\n override visitExpression(visitor: ExpressionVisitor, context: any): any {\n return visitor.visitFunctionExpr(this, context);\n }\n\n toDeclStmt(name: string, modifiers?: StmtModifier): DeclareFunctionStmt {\n return new DeclareFunctionStmt(\n name, this.params, this.statements, this.type, modifiers, this.sourceSpan);\n }\n}\n\n\nexport class UnaryOperatorExpr extends Expression {\n constructor(\n public operator: UnaryOperator, public expr: Expression, type?: Type|null,\n sourceSpan?: ParseSourceSpan|null, public parens: boolean = true) {\n super(type || NUMBER_TYPE, sourceSpan);\n }\n\n override isEquivalent(e: Expression): boolean {\n return e instanceof UnaryOperatorExpr && this.operator === e.operator &&\n this.expr.isEquivalent(e.expr);\n }\n\n override isConstant() {\n return false;\n }\n\n override visitExpression(visitor: ExpressionVisitor, context: any): any {\n return visitor.visitUnaryOperatorExpr(this, context);\n }\n}\n\n\nexport class BinaryOperatorExpr extends Expression {\n public lhs: Expression;\n constructor(\n public operator: BinaryOperator, lhs: Expression, public rhs: Expression, type?: Type|null,\n sourceSpan?: ParseSourceSpan|null, public parens: boolean = true) {\n super(type || lhs.type, sourceSpan);\n this.lhs = lhs;\n }\n\n override isEquivalent(e: Expression): boolean {\n return e instanceof BinaryOperatorExpr && this.operator === e.operator &&\n this.lhs.isEquivalent(e.lhs) && this.rhs.isEquivalent(e.rhs);\n }\n\n override isConstant() {\n return false;\n }\n\n override visitExpression(visitor: ExpressionVisitor, context: any): any {\n return visitor.visitBinaryOperatorExpr(this, context);\n }\n}\n\n\nexport class ReadPropExpr extends Expression {\n constructor(\n public receiver: Expression, public name: string, type?: Type|null,\n sourceSpan?: ParseSourceSpan|null) {\n super(type, sourceSpan);\n }\n\n override isEquivalent(e: Expression): boolean {\n return e instanceof ReadPropExpr && this.receiver.isEquivalent(e.receiver) &&\n this.name === e.name;\n }\n\n override isConstant() {\n return false;\n }\n\n override visitExpression(visitor: ExpressionVisitor, context: any): any {\n return visitor.visitReadPropExpr(this, context);\n }\n\n set(value: Expression): WritePropExpr {\n return new WritePropExpr(this.receiver, this.name, value, null, this.sourceSpan);\n }\n}\n\n\nexport class ReadKeyExpr extends Expression {\n constructor(\n public receiver: Expression, public index: Expression, type?: Type|null,\n sourceSpan?: ParseSourceSpan|null) {\n super(type, sourceSpan);\n }\n\n override isEquivalent(e: Expression): boolean {\n return e instanceof ReadKeyExpr && this.receiver.isEquivalent(e.receiver) &&\n this.index.isEquivalent(e.index);\n }\n\n override isConstant() {\n return false;\n }\n\n override visitExpression(visitor: ExpressionVisitor, context: any): any {\n return visitor.visitReadKeyExpr(this, context);\n }\n\n set(value: Expression): WriteKeyExpr {\n return new WriteKeyExpr(this.receiver, this.index, value, null, this.sourceSpan);\n }\n}\n\n\nexport class LiteralArrayExpr extends Expression {\n public entries: Expression[];\n constructor(entries: Expression[], type?: Type|null, sourceSpan?: ParseSourceSpan|null) {\n super(type, sourceSpan);\n this.entries = entries;\n }\n\n override isConstant() {\n return this.entries.every(e => e.isConstant());\n }\n\n override isEquivalent(e: Expression): boolean {\n return e instanceof LiteralArrayExpr && areAllEquivalent(this.entries, e.entries);\n }\n override visitExpression(visitor: ExpressionVisitor, context: any): any {\n return visitor.visitLiteralArrayExpr(this, context);\n }\n}\n\nexport class LiteralMapEntry {\n constructor(public key: string, public value: Expression, public quoted: boolean) {}\n isEquivalent(e: LiteralMapEntry): boolean {\n return this.key === e.key && this.value.isEquivalent(e.value);\n }\n}\n\nexport class LiteralMapExpr extends Expression {\n public valueType: Type|null = null;\n constructor(\n public entries: LiteralMapEntry[], type?: MapType|null, sourceSpan?: ParseSourceSpan|null) {\n super(type, sourceSpan);\n if (type) {\n this.valueType = type.valueType;\n }\n }\n\n override isEquivalent(e: Expression): boolean {\n return e instanceof LiteralMapExpr && areAllEquivalent(this.entries, e.entries);\n }\n\n override isConstant() {\n return this.entries.every(e => e.value.isConstant());\n }\n\n override visitExpression(visitor: ExpressionVisitor, context: any): any {\n return visitor.visitLiteralMapExpr(this, context);\n }\n}\n\nexport class CommaExpr extends Expression {\n constructor(public parts: Expression[], sourceSpan?: ParseSourceSpan|null) {\n super(parts[parts.length - 1].type, sourceSpan);\n }\n\n override isEquivalent(e: Expression): boolean {\n return e instanceof CommaExpr && areAllEquivalent(this.parts, e.parts);\n }\n\n override isConstant() {\n return false;\n }\n\n override visitExpression(visitor: ExpressionVisitor, context: any): any {\n return visitor.visitCommaExpr(this, context);\n }\n}\n\nexport interface ExpressionVisitor {\n visitReadVarExpr(ast: ReadVarExpr, context: any): any;\n visitWriteVarExpr(expr: WriteVarExpr, context: any): any;\n visitWriteKeyExpr(expr: WriteKeyExpr, context: any): any;\n visitWritePropExpr(expr: WritePropExpr, context: any): any;\n visitInvokeFunctionExpr(ast: InvokeFunctionExpr, context: any): any;\n visitTaggedTemplateExpr(ast: TaggedTemplateExpr, context: any): any;\n visitInstantiateExpr(ast: InstantiateExpr, context: any): any;\n visitLiteralExpr(ast: LiteralExpr, context: any): any;\n visitLocalizedString(ast: LocalizedString, context: any): any;\n visitExternalExpr(ast: ExternalExpr, context: any): any;\n visitConditionalExpr(ast: ConditionalExpr, context: any): any;\n visitNotExpr(ast: NotExpr, context: any): any;\n visitFunctionExpr(ast: FunctionExpr, context: any): any;\n visitUnaryOperatorExpr(ast: UnaryOperatorExpr, context: any): any;\n visitBinaryOperatorExpr(ast: BinaryOperatorExpr, context: any): any;\n visitReadPropExpr(ast: ReadPropExpr, context: any): any;\n visitReadKeyExpr(ast: ReadKeyExpr, context: any): any;\n visitLiteralArrayExpr(ast: LiteralArrayExpr, context: any): any;\n visitLiteralMapExpr(ast: LiteralMapExpr, context: any): any;\n visitCommaExpr(ast: CommaExpr, context: any): any;\n visitWrappedNodeExpr(ast: WrappedNodeExpr, context: any): any;\n visitTypeofExpr(ast: TypeofExpr, context: any): any;\n}\n\nexport const NULL_EXPR = new LiteralExpr(null, null, null);\nexport const TYPED_NULL_EXPR = new LiteralExpr(null, INFERRED_TYPE, null);\n\n//// Statements\nexport enum StmtModifier {\n None = 0,\n Final = 1 << 0,\n Private = 1 << 1,\n Exported = 1 << 2,\n Static = 1 << 3,\n}\n\nexport class LeadingComment {\n constructor(public text: string, public multiline: boolean, public trailingNewline: boolean) {}\n toString() {\n return this.multiline ? ` ${this.text} ` : this.text;\n }\n}\nexport class JSDocComment extends LeadingComment {\n constructor(public tags: JSDocTag[]) {\n super('', /* multiline */ true, /* trailingNewline */ true);\n }\n override toString(): string {\n return serializeTags(this.tags);\n }\n}\n\nexport abstract class Statement {\n constructor(\n public modifiers: StmtModifier = StmtModifier.None,\n public sourceSpan: ParseSourceSpan|null = null, public leadingComments?: LeadingComment[]) {}\n /**\n * Calculates whether this statement produces the same value as the given statement.\n * Note: We don't check Types nor ParseSourceSpans nor function arguments.\n */\n abstract isEquivalent(stmt: Statement): boolean;\n\n abstract visitStatement(visitor: StatementVisitor, context: any): any;\n\n hasModifier(modifier: StmtModifier): boolean {\n return (this.modifiers & modifier) !== 0;\n }\n\n addLeadingComment(leadingComment: LeadingComment): void {\n this.leadingComments = this.leadingComments ?? [];\n this.leadingComments.push(leadingComment);\n }\n}\n\n\nexport class DeclareVarStmt extends Statement {\n public type: Type|null;\n constructor(\n public name: string, public value?: Expression, type?: Type|null, modifiers?: StmtModifier,\n sourceSpan?: ParseSourceSpan|null, leadingComments?: LeadingComment[]) {\n super(modifiers, sourceSpan, leadingComments);\n this.type = type || (value && value.type) || null;\n }\n override isEquivalent(stmt: Statement): boolean {\n return stmt instanceof DeclareVarStmt && this.name === stmt.name &&\n (this.value ? !!stmt.value && this.value.isEquivalent(stmt.value) : !stmt.value);\n }\n override visitStatement(visitor: StatementVisitor, context: any): any {\n return visitor.visitDeclareVarStmt(this, context);\n }\n}\n\nexport class DeclareFunctionStmt extends Statement {\n public type: Type|null;\n constructor(\n public name: string, public params: FnParam[], public statements: Statement[],\n type?: Type|null, modifiers?: StmtModifier, sourceSpan?: ParseSourceSpan|null,\n leadingComments?: LeadingComment[]) {\n super(modifiers, sourceSpan, leadingComments);\n this.type = type || null;\n }\n override isEquivalent(stmt: Statement): boolean {\n return stmt instanceof DeclareFunctionStmt && areAllEquivalent(this.params, stmt.params) &&\n areAllEquivalent(this.statements, stmt.statements);\n }\n override visitStatement(visitor: StatementVisitor, context: any): any {\n return visitor.visitDeclareFunctionStmt(this, context);\n }\n}\n\nexport class ExpressionStatement extends Statement {\n constructor(\n public expr: Expression, sourceSpan?: ParseSourceSpan|null,\n leadingComments?: LeadingComment[]) {\n super(StmtModifier.None, sourceSpan, leadingComments);\n }\n override isEquivalent(stmt: Statement): boolean {\n return stmt instanceof ExpressionStatement && this.expr.isEquivalent(stmt.expr);\n }\n override visitStatement(visitor: StatementVisitor, context: any): any {\n return visitor.visitExpressionStmt(this, context);\n }\n}\n\n\nexport class ReturnStatement extends Statement {\n constructor(\n public value: Expression, sourceSpan: ParseSourceSpan|null = null,\n leadingComments?: LeadingComment[]) {\n super(StmtModifier.None, sourceSpan, leadingComments);\n }\n override isEquivalent(stmt: Statement): boolean {\n return stmt instanceof ReturnStatement && this.value.isEquivalent(stmt.value);\n }\n override visitStatement(visitor: StatementVisitor, context: any): any {\n return visitor.visitReturnStmt(this, context);\n }\n}\n\nexport class IfStmt extends Statement {\n constructor(\n public condition: Expression, public trueCase: Statement[],\n public falseCase: Statement[] = [], sourceSpan?: ParseSourceSpan|null,\n leadingComments?: LeadingComment[]) {\n super(StmtModifier.None, sourceSpan, leadingComments);\n }\n override isEquivalent(stmt: Statement): boolean {\n return stmt instanceof IfStmt && this.condition.isEquivalent(stmt.condition) &&\n areAllEquivalent(this.trueCase, stmt.trueCase) &&\n areAllEquivalent(this.falseCase, stmt.falseCase);\n }\n override visitStatement(visitor: StatementVisitor, context: any): any {\n return visitor.visitIfStmt(this, context);\n }\n}\n\nexport interface StatementVisitor {\n visitDeclareVarStmt(stmt: DeclareVarStmt, context: any): any;\n visitDeclareFunctionStmt(stmt: DeclareFunctionStmt, context: any): any;\n visitExpressionStmt(stmt: ExpressionStatement, context: any): any;\n visitReturnStmt(stmt: ReturnStatement, context: any): any;\n visitIfStmt(stmt: IfStmt, context: any): any;\n}\n\nexport class RecursiveAstVisitor implements StatementVisitor, ExpressionVisitor {\n visitType(ast: Type, context: any): any {\n return ast;\n }\n visitExpression(ast: Expression, context: any): any {\n if (ast.type) {\n ast.type.visitType(this, context);\n }\n return ast;\n }\n visitBuiltinType(type: BuiltinType, context: any): any {\n return this.visitType(type, context);\n }\n visitExpressionType(type: ExpressionType, context: any): any {\n type.value.visitExpression(this, context);\n if (type.typeParams !== null) {\n type.typeParams.forEach(param => this.visitType(param, context));\n }\n return this.visitType(type, context);\n }\n visitArrayType(type: ArrayType, context: any): any {\n return this.visitType(type, context);\n }\n visitMapType(type: MapType, context: any): any {\n return this.visitType(type, context);\n }\n visitWrappedNodeExpr(ast: WrappedNodeExpr, context: any): any {\n return ast;\n }\n visitTypeofExpr(ast: TypeofExpr, context: any): any {\n return this.visitExpression(ast, context);\n }\n visitReadVarExpr(ast: ReadVarExpr, context: any): any {\n return this.visitExpression(ast, context);\n }\n visitWriteVarExpr(ast: WriteVarExpr, context: any): any {\n ast.value.visitExpression(this, context);\n return this.visitExpression(ast, context);\n }\n visitWriteKeyExpr(ast: WriteKeyExpr, context: any): any {\n ast.receiver.visitExpression(this, context);\n ast.index.visitExpression(this, context);\n ast.value.visitExpression(this, context);\n return this.visitExpression(ast, context);\n }\n visitWritePropExpr(ast: WritePropExpr, context: any): any {\n ast.receiver.visitExpression(this, context);\n ast.value.visitExpression(this, context);\n return this.visitExpression(ast, context);\n }\n visitInvokeFunctionExpr(ast: InvokeFunctionExpr, context: any): any {\n ast.fn.visitExpression(this, context);\n this.visitAllExpressions(ast.args, context);\n return this.visitExpression(ast, context);\n }\n visitTaggedTemplateExpr(ast: TaggedTemplateExpr, context: any): any {\n ast.tag.visitExpression(this, context);\n this.visitAllExpressions(ast.template.expressions, context);\n return this.visitExpression(ast, context);\n }\n visitInstantiateExpr(ast: InstantiateExpr, context: any): any {\n ast.classExpr.visitExpression(this, context);\n this.visitAllExpressions(ast.args, context);\n return this.visitExpression(ast, context);\n }\n visitLiteralExpr(ast: LiteralExpr, context: any): any {\n return this.visitExpression(ast, context);\n }\n visitLocalizedString(ast: LocalizedString, context: any): any {\n return this.visitExpression(ast, context);\n }\n visitExternalExpr(ast: ExternalExpr, context: any): any {\n if (ast.typeParams) {\n ast.typeParams.forEach(type => type.visitType(this, context));\n }\n return this.visitExpression(ast, context);\n }\n visitConditionalExpr(ast: ConditionalExpr, context: any): any {\n ast.condition.visitExpression(this, context);\n ast.trueCase.visitExpression(this, context);\n ast.falseCase!.visitExpression(this, context);\n return this.visitExpression(ast, context);\n }\n visitNotExpr(ast: NotExpr, context: any): any {\n ast.condition.visitExpression(this, context);\n return this.visitExpression(ast, context);\n }\n visitFunctionExpr(ast: FunctionExpr, context: any): any {\n this.visitAllStatements(ast.statements, context);\n return this.visitExpression(ast, context);\n }\n visitUnaryOperatorExpr(ast: UnaryOperatorExpr, context: any): any {\n ast.expr.visitExpression(this, context);\n return this.visitExpression(ast, context);\n }\n visitBinaryOperatorExpr(ast: BinaryOperatorExpr, context: any): any {\n ast.lhs.visitExpression(this, context);\n ast.rhs.visitExpression(this, context);\n return this.visitExpression(ast, context);\n }\n visitReadPropExpr(ast: ReadPropExpr, context: any): any {\n ast.receiver.visitExpression(this, context);\n return this.visitExpression(ast, context);\n }\n visitReadKeyExpr(ast: ReadKeyExpr, context: any): any {\n ast.receiver.visitExpression(this, context);\n ast.index.visitExpression(this, context);\n return this.visitExpression(ast, context);\n }\n visitLiteralArrayExpr(ast: LiteralArrayExpr, context: any): any {\n this.visitAllExpressions(ast.entries, context);\n return this.visitExpression(ast, context);\n }\n visitLiteralMapExpr(ast: LiteralMapExpr, context: any): any {\n ast.entries.forEach((entry) => entry.value.visitExpression(this, context));\n return this.visitExpression(ast, context);\n }\n visitCommaExpr(ast: CommaExpr, context: any): any {\n this.visitAllExpressions(ast.parts, context);\n return this.visitExpression(ast, context);\n }\n visitAllExpressions(exprs: Expression[], context: any): void {\n exprs.forEach(expr => expr.visitExpression(this, context));\n }\n\n visitDeclareVarStmt(stmt: DeclareVarStmt, context: any): any {\n if (stmt.value) {\n stmt.value.visitExpression(this, context);\n }\n if (stmt.type) {\n stmt.type.visitType(this, context);\n }\n return stmt;\n }\n visitDeclareFunctionStmt(stmt: DeclareFunctionStmt, context: any): any {\n this.visitAllStatements(stmt.statements, context);\n if (stmt.type) {\n stmt.type.visitType(this, context);\n }\n return stmt;\n }\n visitExpressionStmt(stmt: ExpressionStatement, context: any): any {\n stmt.expr.visitExpression(this, context);\n return stmt;\n }\n visitReturnStmt(stmt: ReturnStatement, context: any): any {\n stmt.value.visitExpression(this, context);\n return stmt;\n }\n visitIfStmt(stmt: IfStmt, context: any): any {\n stmt.condition.visitExpression(this, context);\n this.visitAllStatements(stmt.trueCase, context);\n this.visitAllStatements(stmt.falseCase, context);\n return stmt;\n }\n visitAllStatements(stmts: Statement[], context: any): void {\n stmts.forEach(stmt => stmt.visitStatement(this, context));\n }\n}\n\nexport function leadingComment(\n text: string, multiline: boolean = false, trailingNewline: boolean = true): LeadingComment {\n return new LeadingComment(text, multiline, trailingNewline);\n}\n\nexport function jsDocComment(tags: JSDocTag[] = []): JSDocComment {\n return new JSDocComment(tags);\n}\n\nexport function variable(\n name: string, type?: Type|null, sourceSpan?: ParseSourceSpan|null): ReadVarExpr {\n return new ReadVarExpr(name, type, sourceSpan);\n}\n\nexport function importExpr(\n id: ExternalReference, typeParams: Type[]|null = null,\n sourceSpan?: ParseSourceSpan|null): ExternalExpr {\n return new ExternalExpr(id, null, typeParams, sourceSpan);\n}\n\nexport function importType(\n id: ExternalReference, typeParams?: Type[]|null, typeModifiers?: TypeModifier): ExpressionType|\n null {\n return id != null ? expressionType(importExpr(id, typeParams, null), typeModifiers) : null;\n}\n\nexport function expressionType(\n expr: Expression, typeModifiers?: TypeModifier, typeParams?: Type[]|null): ExpressionType {\n return new ExpressionType(expr, typeModifiers, typeParams);\n}\n\nexport function typeofExpr(expr: Expression) {\n return new TypeofExpr(expr);\n}\n\nexport function literalArr(\n values: Expression[], type?: Type|null, sourceSpan?: ParseSourceSpan|null): LiteralArrayExpr {\n return new LiteralArrayExpr(values, type, sourceSpan);\n}\n\nexport function literalMap(\n values: {key: string, quoted: boolean, value: Expression}[],\n type: MapType|null = null): LiteralMapExpr {\n return new LiteralMapExpr(\n values.map(e => new LiteralMapEntry(e.key, e.value, e.quoted)), type, null);\n}\n\nexport function unary(\n operator: UnaryOperator, expr: Expression, type?: Type,\n sourceSpan?: ParseSourceSpan|null): UnaryOperatorExpr {\n return new UnaryOperatorExpr(operator, expr, type, sourceSpan);\n}\n\nexport function not(expr: Expression, sourceSpan?: ParseSourceSpan|null): NotExpr {\n return new NotExpr(expr, sourceSpan);\n}\n\nexport function fn(\n params: FnParam[], body: Statement[], type?: Type|null, sourceSpan?: ParseSourceSpan|null,\n name?: string|null): FunctionExpr {\n return new FunctionExpr(params, body, type, sourceSpan, name);\n}\n\nexport function ifStmt(\n condition: Expression, thenClause: Statement[], elseClause?: Statement[],\n sourceSpan?: ParseSourceSpan, leadingComments?: LeadingComment[]) {\n return new IfStmt(condition, thenClause, elseClause, sourceSpan, leadingComments);\n}\n\nexport function taggedTemplate(\n tag: Expression, template: TemplateLiteral, type?: Type|null,\n sourceSpan?: ParseSourceSpan|null): TaggedTemplateExpr {\n return new TaggedTemplateExpr(tag, template, type, sourceSpan);\n}\n\nexport function literal(\n value: any, type?: Type|null, sourceSpan?: ParseSourceSpan|null): LiteralExpr {\n return new LiteralExpr(value, type, sourceSpan);\n}\n\nexport function localizedString(\n metaBlock: I18nMeta, messageParts: LiteralPiece[], placeholderNames: PlaceholderPiece[],\n expressions: Expression[], sourceSpan?: ParseSourceSpan|null): LocalizedString {\n return new LocalizedString(metaBlock, messageParts, placeholderNames, expressions, sourceSpan);\n}\n\nexport function isNull(exp: Expression): boolean {\n return exp instanceof LiteralExpr && exp.value === null;\n}\n\n// The list of JSDoc tags that we currently support. Extend it if needed.\nexport const enum JSDocTagName {\n Desc = 'desc',\n Id = 'id',\n Meaning = 'meaning',\n Suppress = 'suppress',\n}\n\n/*\n * TypeScript has an API for JSDoc already, but it's not exposed.\n * https://github.com/Microsoft/TypeScript/issues/7393\n * For now we create types that are similar to theirs so that migrating\n * to their API will be easier. See e.g. `ts.JSDocTag` and `ts.JSDocComment`.\n */\nexport type JSDocTag = {\n // `tagName` is e.g. \"param\" in an `@param` declaration\n tagName: JSDocTagName|string,\n // Any remaining text on the tag, e.g. the description\n text?: string,\n}|{\n // no `tagName` for plain text documentation that occurs before any `@param` lines\n tagName?: undefined, text: string,\n};\n\n/*\n * Serializes a `Tag` into a string.\n * Returns a string like \" @foo {bar} baz\" (note the leading whitespace before `@foo`).\n */\nfunction tagToString(tag: JSDocTag): string {\n let out = '';\n if (tag.tagName) {\n out += ` @${tag.tagName}`;\n }\n if (tag.text) {\n if (tag.text.match(/\\/\\*|\\*\\//)) {\n throw new Error('JSDoc text cannot contain \"/*\" and \"*/\"');\n }\n out += ' ' + tag.text.replace(/@/g, '\\\\@');\n }\n return out;\n}\n\nfunction serializeTags(tags: JSDocTag[]): string {\n if (tags.length === 0) return '';\n\n if (tags.length === 1 && tags[0].tagName && !tags[0].text) {\n // The JSDOC comment is a single simple tag: e.g `/** @tagname */`.\n return `*${tagToString(tags[0])} `;\n }\n\n let out = '*\\n';\n for (const tag of tags) {\n out += ' *';\n // If the tagToString is multi-line, insert \" * \" prefixes on lines.\n out += tagToString(tag).replace(/\\n/g, '\\n * ');\n out += '\\n';\n }\n out += ' ';\n return out;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport * as o from './output/output_ast';\n\nconst CONSTANT_PREFIX = '_c';\n\n/**\n * `ConstantPool` tries to reuse literal factories when two or more literals are identical.\n * We determine whether literals are identical by creating a key out of their AST using the\n * `KeyVisitor`. This constant is used to replace dynamic expressions which can't be safely\n * converted into a key. E.g. given an expression `{foo: bar()}`, since we don't know what\n * the result of `bar` will be, we create a key that looks like `{foo: }`. Note\n * that we use a variable, rather than something like `null` in order to avoid collisions.\n */\nconst UNKNOWN_VALUE_KEY = o.variable('');\n\n/**\n * Context to use when producing a key.\n *\n * This ensures we see the constant not the reference variable when producing\n * a key.\n */\nconst KEY_CONTEXT = {};\n\n/**\n * Generally all primitive values are excluded from the `ConstantPool`, but there is an exclusion\n * for strings that reach a certain length threshold. This constant defines the length threshold for\n * strings.\n */\nconst POOL_INCLUSION_LENGTH_THRESHOLD_FOR_STRINGS = 50;\n\n/**\n * A node that is a place-holder that allows the node to be replaced when the actual\n * node is known.\n *\n * This allows the constant pool to change an expression from a direct reference to\n * a constant to a shared constant. It returns a fix-up node that is later allowed to\n * change the referenced expression.\n */\nclass FixupExpression extends o.Expression {\n private original: o.Expression;\n\n // TODO(issue/24571): remove '!'.\n shared!: boolean;\n\n constructor(public resolved: o.Expression) {\n super(resolved.type);\n this.original = resolved;\n }\n\n override visitExpression(visitor: o.ExpressionVisitor, context: any): any {\n if (context === KEY_CONTEXT) {\n // When producing a key we want to traverse the constant not the\n // variable used to refer to it.\n return this.original.visitExpression(visitor, context);\n } else {\n return this.resolved.visitExpression(visitor, context);\n }\n }\n\n override isEquivalent(e: o.Expression): boolean {\n return e instanceof FixupExpression && this.resolved.isEquivalent(e.resolved);\n }\n\n override isConstant() {\n return true;\n }\n\n fixup(expression: o.Expression) {\n this.resolved = expression;\n this.shared = true;\n }\n}\n\n/**\n * A constant pool allows a code emitter to share constant in an output context.\n *\n * The constant pool also supports sharing access to ivy definitions references.\n */\nexport class ConstantPool {\n statements: o.Statement[] = [];\n private literals = new Map();\n private literalFactories = new Map();\n\n private nextNameIndex = 0;\n\n constructor(private readonly isClosureCompilerEnabled: boolean = false) {}\n\n getConstLiteral(literal: o.Expression, forceShared?: boolean): o.Expression {\n if ((literal instanceof o.LiteralExpr && !isLongStringLiteral(literal)) ||\n literal instanceof FixupExpression) {\n // Do no put simple literals into the constant pool or try to produce a constant for a\n // reference to a constant.\n return literal;\n }\n const key = this.keyOf(literal);\n let fixup = this.literals.get(key);\n let newValue = false;\n if (!fixup) {\n fixup = new FixupExpression(literal);\n this.literals.set(key, fixup);\n newValue = true;\n }\n\n if ((!newValue && !fixup.shared) || (newValue && forceShared)) {\n // Replace the expression with a variable\n const name = this.freshName();\n let definition: o.WriteVarExpr;\n let usage: o.Expression;\n if (this.isClosureCompilerEnabled && isLongStringLiteral(literal)) {\n // For string literals, Closure will **always** inline the string at\n // **all** usages, duplicating it each time. For large strings, this\n // unnecessarily bloats bundle size. To work around this restriction, we\n // wrap the string in a function, and call that function for each usage.\n // This tricks Closure into using inline logic for functions instead of\n // string literals. Function calls are only inlined if the body is small\n // enough to be worth it. By doing this, very large strings will be\n // shared across multiple usages, rather than duplicating the string at\n // each usage site.\n //\n // const myStr = function() { return \"very very very long string\"; };\n // const usage1 = myStr();\n // const usage2 = myStr();\n definition = o.variable(name).set(new o.FunctionExpr(\n [], // Params.\n [\n // Statements.\n new o.ReturnStatement(literal),\n ],\n ));\n usage = o.variable(name).callFn([]);\n } else {\n // Just declare and use the variable directly, without a function call\n // indirection. This saves a few bytes and avoids an unnecessary call.\n definition = o.variable(name).set(literal);\n usage = o.variable(name);\n }\n\n this.statements.push(definition.toDeclStmt(o.INFERRED_TYPE, o.StmtModifier.Final));\n fixup.fixup(usage);\n }\n\n return fixup;\n }\n\n getLiteralFactory(literal: o.LiteralArrayExpr|o.LiteralMapExpr):\n {literalFactory: o.Expression, literalFactoryArguments: o.Expression[]} {\n // Create a pure function that builds an array of a mix of constant and variable expressions\n if (literal instanceof o.LiteralArrayExpr) {\n const argumentsForKey = literal.entries.map(e => e.isConstant() ? e : UNKNOWN_VALUE_KEY);\n const key = this.keyOf(o.literalArr(argumentsForKey));\n return this._getLiteralFactory(key, literal.entries, entries => o.literalArr(entries));\n } else {\n const expressionForKey = o.literalMap(\n literal.entries.map(e => ({\n key: e.key,\n value: e.value.isConstant() ? e.value : UNKNOWN_VALUE_KEY,\n quoted: e.quoted\n })));\n const key = this.keyOf(expressionForKey);\n return this._getLiteralFactory(\n key, literal.entries.map(e => e.value),\n entries => o.literalMap(entries.map((value, index) => ({\n key: literal.entries[index].key,\n value,\n quoted: literal.entries[index].quoted\n }))));\n }\n }\n\n private _getLiteralFactory(\n key: string, values: o.Expression[], resultMap: (parameters: o.Expression[]) => o.Expression):\n {literalFactory: o.Expression, literalFactoryArguments: o.Expression[]} {\n let literalFactory = this.literalFactories.get(key);\n const literalFactoryArguments = values.filter((e => !e.isConstant()));\n if (!literalFactory) {\n const resultExpressions = values.map(\n (e, index) => e.isConstant() ? this.getConstLiteral(e, true) : o.variable(`a${index}`));\n const parameters =\n resultExpressions.filter(isVariable).map(e => new o.FnParam(e.name!, o.DYNAMIC_TYPE));\n const pureFunctionDeclaration =\n o.fn(parameters, [new o.ReturnStatement(resultMap(resultExpressions))], o.INFERRED_TYPE);\n const name = this.freshName();\n this.statements.push(o.variable(name)\n .set(pureFunctionDeclaration)\n .toDeclStmt(o.INFERRED_TYPE, o.StmtModifier.Final));\n literalFactory = o.variable(name);\n this.literalFactories.set(key, literalFactory);\n }\n return {literalFactory, literalFactoryArguments};\n }\n\n /**\n * Produce a unique name.\n *\n * The name might be unique among different prefixes if any of the prefixes end in\n * a digit so the prefix should be a constant string (not based on user input) and\n * must not end in a digit.\n */\n uniqueName(prefix: string): string {\n return `${prefix}${this.nextNameIndex++}`;\n }\n\n private freshName(): string {\n return this.uniqueName(CONSTANT_PREFIX);\n }\n\n private keyOf(expression: o.Expression) {\n return expression.visitExpression(new KeyVisitor(), KEY_CONTEXT);\n }\n}\n\n/**\n * Visitor used to determine if 2 expressions are equivalent and can be shared in the\n * `ConstantPool`.\n *\n * When the id (string) generated by the visitor is equal, expressions are considered equivalent.\n */\nclass KeyVisitor implements o.ExpressionVisitor {\n visitLiteralExpr(ast: o.LiteralExpr): string {\n return `${typeof ast.value === 'string' ? '\"' + ast.value + '\"' : ast.value}`;\n }\n\n visitLiteralArrayExpr(ast: o.LiteralArrayExpr, context: object): string {\n return `[${ast.entries.map(entry => entry.visitExpression(this, context)).join(',')}]`;\n }\n\n visitLiteralMapExpr(ast: o.LiteralMapExpr, context: object): string {\n const mapKey = (entry: o.LiteralMapEntry) => {\n const quote = entry.quoted ? '\"' : '';\n return `${quote}${entry.key}${quote}`;\n };\n const mapEntry = (entry: o.LiteralMapEntry) =>\n `${mapKey(entry)}:${entry.value.visitExpression(this, context)}`;\n return `{${ast.entries.map(mapEntry).join(',')}`;\n }\n\n visitExternalExpr(ast: o.ExternalExpr): string {\n return ast.value.moduleName ? `EX:${ast.value.moduleName}:${ast.value.name}` :\n `EX:${ast.value.runtime.name}`;\n }\n\n visitReadVarExpr(node: o.ReadVarExpr) {\n return `VAR:${node.name}`;\n }\n\n visitTypeofExpr(node: o.TypeofExpr, context: any): string {\n return `TYPEOF:${node.expr.visitExpression(this, context)}`;\n }\n\n visitWrappedNodeExpr = invalid;\n visitWriteVarExpr = invalid;\n visitWriteKeyExpr = invalid;\n visitWritePropExpr = invalid;\n visitInvokeFunctionExpr = invalid;\n visitTaggedTemplateExpr = invalid;\n visitInstantiateExpr = invalid;\n visitConditionalExpr = invalid;\n visitNotExpr = invalid;\n visitAssertNotNullExpr = invalid;\n visitCastExpr = invalid;\n visitFunctionExpr = invalid;\n visitUnaryOperatorExpr = invalid;\n visitBinaryOperatorExpr = invalid;\n visitReadPropExpr = invalid;\n visitReadKeyExpr = invalid;\n visitCommaExpr = invalid;\n visitLocalizedString = invalid;\n}\n\nfunction invalid(this: o.ExpressionVisitor, arg: o.Expression|o.Statement): never {\n throw new Error(\n `Invalid state: Visitor ${this.constructor.name} doesn't handle ${arg.constructor.name}`);\n}\n\nfunction isVariable(e: o.Expression): e is o.ReadVarExpr {\n return e instanceof o.ReadVarExpr;\n}\n\nfunction isLongStringLiteral(expr: o.Expression): boolean {\n return expr instanceof o.LiteralExpr && typeof expr.value === 'string' &&\n expr.value.length >= POOL_INCLUSION_LENGTH_THRESHOLD_FOR_STRINGS;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport * as o from '../output/output_ast';\n\nconst CORE = '@angular/core';\n\nexport class Identifiers {\n /* Methods */\n static NEW_METHOD = 'factory';\n static TRANSFORM_METHOD = 'transform';\n static PATCH_DEPS = 'patchedDeps';\n\n static core: o.ExternalReference = {name: null, moduleName: CORE};\n\n /* Instructions */\n static namespaceHTML: o.ExternalReference = {name: 'ɵɵnamespaceHTML', moduleName: CORE};\n\n static namespaceMathML: o.ExternalReference = {name: 'ɵɵnamespaceMathML', moduleName: CORE};\n\n static namespaceSVG: o.ExternalReference = {name: 'ɵɵnamespaceSVG', moduleName: CORE};\n\n static element: o.ExternalReference = {name: 'ɵɵelement', moduleName: CORE};\n\n static elementStart: o.ExternalReference = {name: 'ɵɵelementStart', moduleName: CORE};\n\n static elementEnd: o.ExternalReference = {name: 'ɵɵelementEnd', moduleName: CORE};\n\n static advance: o.ExternalReference = {name: 'ɵɵadvance', moduleName: CORE};\n\n static syntheticHostProperty:\n o.ExternalReference = {name: 'ɵɵsyntheticHostProperty', moduleName: CORE};\n\n static syntheticHostListener:\n o.ExternalReference = {name: 'ɵɵsyntheticHostListener', moduleName: CORE};\n\n static attribute: o.ExternalReference = {name: 'ɵɵattribute', moduleName: CORE};\n\n static attributeInterpolate1:\n o.ExternalReference = {name: 'ɵɵattributeInterpolate1', moduleName: CORE};\n static attributeInterpolate2:\n o.ExternalReference = {name: 'ɵɵattributeInterpolate2', moduleName: CORE};\n static attributeInterpolate3:\n o.ExternalReference = {name: 'ɵɵattributeInterpolate3', moduleName: CORE};\n static attributeInterpolate4:\n o.ExternalReference = {name: 'ɵɵattributeInterpolate4', moduleName: CORE};\n static attributeInterpolate5:\n o.ExternalReference = {name: 'ɵɵattributeInterpolate5', moduleName: CORE};\n static attributeInterpolate6:\n o.ExternalReference = {name: 'ɵɵattributeInterpolate6', moduleName: CORE};\n static attributeInterpolate7:\n o.ExternalReference = {name: 'ɵɵattributeInterpolate7', moduleName: CORE};\n static attributeInterpolate8:\n o.ExternalReference = {name: 'ɵɵattributeInterpolate8', moduleName: CORE};\n static attributeInterpolateV:\n o.ExternalReference = {name: 'ɵɵattributeInterpolateV', moduleName: CORE};\n\n static classProp: o.ExternalReference = {name: 'ɵɵclassProp', moduleName: CORE};\n\n static elementContainerStart:\n o.ExternalReference = {name: 'ɵɵelementContainerStart', moduleName: CORE};\n\n static elementContainerEnd:\n o.ExternalReference = {name: 'ɵɵelementContainerEnd', moduleName: CORE};\n\n static elementContainer: o.ExternalReference = {name: 'ɵɵelementContainer', moduleName: CORE};\n\n static styleMap: o.ExternalReference = {name: 'ɵɵstyleMap', moduleName: CORE};\n\n static styleMapInterpolate1:\n o.ExternalReference = {name: 'ɵɵstyleMapInterpolate1', moduleName: CORE};\n static styleMapInterpolate2:\n o.ExternalReference = {name: 'ɵɵstyleMapInterpolate2', moduleName: CORE};\n static styleMapInterpolate3:\n o.ExternalReference = {name: 'ɵɵstyleMapInterpolate3', moduleName: CORE};\n static styleMapInterpolate4:\n o.ExternalReference = {name: 'ɵɵstyleMapInterpolate4', moduleName: CORE};\n static styleMapInterpolate5:\n o.ExternalReference = {name: 'ɵɵstyleMapInterpolate5', moduleName: CORE};\n static styleMapInterpolate6:\n o.ExternalReference = {name: 'ɵɵstyleMapInterpolate6', moduleName: CORE};\n static styleMapInterpolate7:\n o.ExternalReference = {name: 'ɵɵstyleMapInterpolate7', moduleName: CORE};\n static styleMapInterpolate8:\n o.ExternalReference = {name: 'ɵɵstyleMapInterpolate8', moduleName: CORE};\n static styleMapInterpolateV:\n o.ExternalReference = {name: 'ɵɵstyleMapInterpolateV', moduleName: CORE};\n\n static classMap: o.ExternalReference = {name: 'ɵɵclassMap', moduleName: CORE};\n\n static classMapInterpolate1:\n o.ExternalReference = {name: 'ɵɵclassMapInterpolate1', moduleName: CORE};\n static classMapInterpolate2:\n o.ExternalReference = {name: 'ɵɵclassMapInterpolate2', moduleName: CORE};\n static classMapInterpolate3:\n o.ExternalReference = {name: 'ɵɵclassMapInterpolate3', moduleName: CORE};\n static classMapInterpolate4:\n o.ExternalReference = {name: 'ɵɵclassMapInterpolate4', moduleName: CORE};\n static classMapInterpolate5:\n o.ExternalReference = {name: 'ɵɵclassMapInterpolate5', moduleName: CORE};\n static classMapInterpolate6:\n o.ExternalReference = {name: 'ɵɵclassMapInterpolate6', moduleName: CORE};\n static classMapInterpolate7:\n o.ExternalReference = {name: 'ɵɵclassMapInterpolate7', moduleName: CORE};\n static classMapInterpolate8:\n o.ExternalReference = {name: 'ɵɵclassMapInterpolate8', moduleName: CORE};\n static classMapInterpolateV:\n o.ExternalReference = {name: 'ɵɵclassMapInterpolateV', moduleName: CORE};\n\n static styleProp: o.ExternalReference = {name: 'ɵɵstyleProp', moduleName: CORE};\n\n static stylePropInterpolate1:\n o.ExternalReference = {name: 'ɵɵstylePropInterpolate1', moduleName: CORE};\n static stylePropInterpolate2:\n o.ExternalReference = {name: 'ɵɵstylePropInterpolate2', moduleName: CORE};\n static stylePropInterpolate3:\n o.ExternalReference = {name: 'ɵɵstylePropInterpolate3', moduleName: CORE};\n static stylePropInterpolate4:\n o.ExternalReference = {name: 'ɵɵstylePropInterpolate4', moduleName: CORE};\n static stylePropInterpolate5:\n o.ExternalReference = {name: 'ɵɵstylePropInterpolate5', moduleName: CORE};\n static stylePropInterpolate6:\n o.ExternalReference = {name: 'ɵɵstylePropInterpolate6', moduleName: CORE};\n static stylePropInterpolate7:\n o.ExternalReference = {name: 'ɵɵstylePropInterpolate7', moduleName: CORE};\n static stylePropInterpolate8:\n o.ExternalReference = {name: 'ɵɵstylePropInterpolate8', moduleName: CORE};\n static stylePropInterpolateV:\n o.ExternalReference = {name: 'ɵɵstylePropInterpolateV', moduleName: CORE};\n\n static nextContext: o.ExternalReference = {name: 'ɵɵnextContext', moduleName: CORE};\n\n static resetView: o.ExternalReference = {name: 'ɵɵresetView', moduleName: CORE};\n\n static templateCreate: o.ExternalReference = {name: 'ɵɵtemplate', moduleName: CORE};\n\n static text: o.ExternalReference = {name: 'ɵɵtext', moduleName: CORE};\n\n static enableBindings: o.ExternalReference = {name: 'ɵɵenableBindings', moduleName: CORE};\n\n static disableBindings: o.ExternalReference = {name: 'ɵɵdisableBindings', moduleName: CORE};\n\n static getCurrentView: o.ExternalReference = {name: 'ɵɵgetCurrentView', moduleName: CORE};\n\n static textInterpolate: o.ExternalReference = {name: 'ɵɵtextInterpolate', moduleName: CORE};\n static textInterpolate1: o.ExternalReference = {name: 'ɵɵtextInterpolate1', moduleName: CORE};\n static textInterpolate2: o.ExternalReference = {name: 'ɵɵtextInterpolate2', moduleName: CORE};\n static textInterpolate3: o.ExternalReference = {name: 'ɵɵtextInterpolate3', moduleName: CORE};\n static textInterpolate4: o.ExternalReference = {name: 'ɵɵtextInterpolate4', moduleName: CORE};\n static textInterpolate5: o.ExternalReference = {name: 'ɵɵtextInterpolate5', moduleName: CORE};\n static textInterpolate6: o.ExternalReference = {name: 'ɵɵtextInterpolate6', moduleName: CORE};\n static textInterpolate7: o.ExternalReference = {name: 'ɵɵtextInterpolate7', moduleName: CORE};\n static textInterpolate8: o.ExternalReference = {name: 'ɵɵtextInterpolate8', moduleName: CORE};\n static textInterpolateV: o.ExternalReference = {name: 'ɵɵtextInterpolateV', moduleName: CORE};\n\n static restoreView: o.ExternalReference = {name: 'ɵɵrestoreView', moduleName: CORE};\n\n static pureFunction0: o.ExternalReference = {name: 'ɵɵpureFunction0', moduleName: CORE};\n static pureFunction1: o.ExternalReference = {name: 'ɵɵpureFunction1', moduleName: CORE};\n static pureFunction2: o.ExternalReference = {name: 'ɵɵpureFunction2', moduleName: CORE};\n static pureFunction3: o.ExternalReference = {name: 'ɵɵpureFunction3', moduleName: CORE};\n static pureFunction4: o.ExternalReference = {name: 'ɵɵpureFunction4', moduleName: CORE};\n static pureFunction5: o.ExternalReference = {name: 'ɵɵpureFunction5', moduleName: CORE};\n static pureFunction6: o.ExternalReference = {name: 'ɵɵpureFunction6', moduleName: CORE};\n static pureFunction7: o.ExternalReference = {name: 'ɵɵpureFunction7', moduleName: CORE};\n static pureFunction8: o.ExternalReference = {name: 'ɵɵpureFunction8', moduleName: CORE};\n static pureFunctionV: o.ExternalReference = {name: 'ɵɵpureFunctionV', moduleName: CORE};\n\n static pipeBind1: o.ExternalReference = {name: 'ɵɵpipeBind1', moduleName: CORE};\n static pipeBind2: o.ExternalReference = {name: 'ɵɵpipeBind2', moduleName: CORE};\n static pipeBind3: o.ExternalReference = {name: 'ɵɵpipeBind3', moduleName: CORE};\n static pipeBind4: o.ExternalReference = {name: 'ɵɵpipeBind4', moduleName: CORE};\n static pipeBindV: o.ExternalReference = {name: 'ɵɵpipeBindV', moduleName: CORE};\n\n static hostProperty: o.ExternalReference = {name: 'ɵɵhostProperty', moduleName: CORE};\n\n static property: o.ExternalReference = {name: 'ɵɵproperty', moduleName: CORE};\n\n static propertyInterpolate:\n o.ExternalReference = {name: 'ɵɵpropertyInterpolate', moduleName: CORE};\n static propertyInterpolate1:\n o.ExternalReference = {name: 'ɵɵpropertyInterpolate1', moduleName: CORE};\n static propertyInterpolate2:\n o.ExternalReference = {name: 'ɵɵpropertyInterpolate2', moduleName: CORE};\n static propertyInterpolate3:\n o.ExternalReference = {name: 'ɵɵpropertyInterpolate3', moduleName: CORE};\n static propertyInterpolate4:\n o.ExternalReference = {name: 'ɵɵpropertyInterpolate4', moduleName: CORE};\n static propertyInterpolate5:\n o.ExternalReference = {name: 'ɵɵpropertyInterpolate5', moduleName: CORE};\n static propertyInterpolate6:\n o.ExternalReference = {name: 'ɵɵpropertyInterpolate6', moduleName: CORE};\n static propertyInterpolate7:\n o.ExternalReference = {name: 'ɵɵpropertyInterpolate7', moduleName: CORE};\n static propertyInterpolate8:\n o.ExternalReference = {name: 'ɵɵpropertyInterpolate8', moduleName: CORE};\n static propertyInterpolateV:\n o.ExternalReference = {name: 'ɵɵpropertyInterpolateV', moduleName: CORE};\n\n static i18n: o.ExternalReference = {name: 'ɵɵi18n', moduleName: CORE};\n static i18nAttributes: o.ExternalReference = {name: 'ɵɵi18nAttributes', moduleName: CORE};\n static i18nExp: o.ExternalReference = {name: 'ɵɵi18nExp', moduleName: CORE};\n static i18nStart: o.ExternalReference = {name: 'ɵɵi18nStart', moduleName: CORE};\n static i18nEnd: o.ExternalReference = {name: 'ɵɵi18nEnd', moduleName: CORE};\n static i18nApply: o.ExternalReference = {name: 'ɵɵi18nApply', moduleName: CORE};\n static i18nPostprocess: o.ExternalReference = {name: 'ɵɵi18nPostprocess', moduleName: CORE};\n\n static pipe: o.ExternalReference = {name: 'ɵɵpipe', moduleName: CORE};\n\n static projection: o.ExternalReference = {name: 'ɵɵprojection', moduleName: CORE};\n static projectionDef: o.ExternalReference = {name: 'ɵɵprojectionDef', moduleName: CORE};\n\n static reference: o.ExternalReference = {name: 'ɵɵreference', moduleName: CORE};\n\n static inject: o.ExternalReference = {name: 'ɵɵinject', moduleName: CORE};\n\n static injectAttribute: o.ExternalReference = {name: 'ɵɵinjectAttribute', moduleName: CORE};\n\n static directiveInject: o.ExternalReference = {name: 'ɵɵdirectiveInject', moduleName: CORE};\n static invalidFactory: o.ExternalReference = {name: 'ɵɵinvalidFactory', moduleName: CORE};\n static invalidFactoryDep: o.ExternalReference = {name: 'ɵɵinvalidFactoryDep', moduleName: CORE};\n\n static templateRefExtractor:\n o.ExternalReference = {name: 'ɵɵtemplateRefExtractor', moduleName: CORE};\n\n static forwardRef: o.ExternalReference = {name: 'forwardRef', moduleName: CORE};\n static resolveForwardRef: o.ExternalReference = {name: 'resolveForwardRef', moduleName: CORE};\n\n static ɵɵdefineInjectable: o.ExternalReference = {name: 'ɵɵdefineInjectable', moduleName: CORE};\n static declareInjectable: o.ExternalReference = {name: 'ɵɵngDeclareInjectable', moduleName: CORE};\n static InjectableDeclaration:\n o.ExternalReference = {name: 'ɵɵInjectableDeclaration', moduleName: CORE};\n\n static resolveWindow: o.ExternalReference = {name: 'ɵɵresolveWindow', moduleName: CORE};\n static resolveDocument: o.ExternalReference = {name: 'ɵɵresolveDocument', moduleName: CORE};\n static resolveBody: o.ExternalReference = {name: 'ɵɵresolveBody', moduleName: CORE};\n\n static defineComponent: o.ExternalReference = {name: 'ɵɵdefineComponent', moduleName: CORE};\n static declareComponent: o.ExternalReference = {name: 'ɵɵngDeclareComponent', moduleName: CORE};\n\n static setComponentScope: o.ExternalReference = {name: 'ɵɵsetComponentScope', moduleName: CORE};\n\n static ChangeDetectionStrategy: o.ExternalReference = {\n name: 'ChangeDetectionStrategy',\n moduleName: CORE,\n };\n static ViewEncapsulation: o.ExternalReference = {\n name: 'ViewEncapsulation',\n moduleName: CORE,\n };\n\n static ComponentDeclaration: o.ExternalReference = {\n name: 'ɵɵComponentDeclaration',\n moduleName: CORE,\n };\n\n static FactoryDeclaration: o.ExternalReference = {\n name: 'ɵɵFactoryDeclaration',\n moduleName: CORE,\n };\n static declareFactory: o.ExternalReference = {name: 'ɵɵngDeclareFactory', moduleName: CORE};\n static FactoryTarget: o.ExternalReference = {name: 'ɵɵFactoryTarget', moduleName: CORE};\n\n static defineDirective: o.ExternalReference = {name: 'ɵɵdefineDirective', moduleName: CORE};\n static declareDirective: o.ExternalReference = {name: 'ɵɵngDeclareDirective', moduleName: CORE};\n\n static DirectiveDeclaration: o.ExternalReference = {\n name: 'ɵɵDirectiveDeclaration',\n moduleName: CORE,\n };\n\n static InjectorDef: o.ExternalReference = {name: 'ɵɵInjectorDef', moduleName: CORE};\n static InjectorDeclaration:\n o.ExternalReference = {name: 'ɵɵInjectorDeclaration', moduleName: CORE};\n\n static defineInjector: o.ExternalReference = {name: 'ɵɵdefineInjector', moduleName: CORE};\n static declareInjector: o.ExternalReference = {name: 'ɵɵngDeclareInjector', moduleName: CORE};\n\n static NgModuleDeclaration: o.ExternalReference = {\n name: 'ɵɵNgModuleDeclaration',\n moduleName: CORE,\n };\n\n static ModuleWithProviders: o.ExternalReference = {\n name: 'ModuleWithProviders',\n moduleName: CORE,\n };\n\n static defineNgModule: o.ExternalReference = {name: 'ɵɵdefineNgModule', moduleName: CORE};\n static declareNgModule: o.ExternalReference = {name: 'ɵɵngDeclareNgModule', moduleName: CORE};\n static setNgModuleScope: o.ExternalReference = {name: 'ɵɵsetNgModuleScope', moduleName: CORE};\n static registerNgModuleType:\n o.ExternalReference = {name: 'ɵɵregisterNgModuleType', moduleName: CORE};\n\n\n static PipeDeclaration: o.ExternalReference = {name: 'ɵɵPipeDeclaration', moduleName: CORE};\n\n static definePipe: o.ExternalReference = {name: 'ɵɵdefinePipe', moduleName: CORE};\n static declarePipe: o.ExternalReference = {name: 'ɵɵngDeclarePipe', moduleName: CORE};\n\n static declareClassMetadata:\n o.ExternalReference = {name: 'ɵɵngDeclareClassMetadata', moduleName: CORE};\n static setClassMetadata: o.ExternalReference = {name: 'ɵsetClassMetadata', moduleName: CORE};\n\n static queryRefresh: o.ExternalReference = {name: 'ɵɵqueryRefresh', moduleName: CORE};\n static viewQuery: o.ExternalReference = {name: 'ɵɵviewQuery', moduleName: CORE};\n static loadQuery: o.ExternalReference = {name: 'ɵɵloadQuery', moduleName: CORE};\n static contentQuery: o.ExternalReference = {name: 'ɵɵcontentQuery', moduleName: CORE};\n\n static NgOnChangesFeature: o.ExternalReference = {name: 'ɵɵNgOnChangesFeature', moduleName: CORE};\n\n static InheritDefinitionFeature:\n o.ExternalReference = {name: 'ɵɵInheritDefinitionFeature', moduleName: CORE};\n\n static CopyDefinitionFeature:\n o.ExternalReference = {name: 'ɵɵCopyDefinitionFeature', moduleName: CORE};\n\n static StandaloneFeature: o.ExternalReference = {name: 'ɵɵStandaloneFeature', moduleName: CORE};\n\n static ProvidersFeature: o.ExternalReference = {name: 'ɵɵProvidersFeature', moduleName: CORE};\n\n static HostDirectivesFeature:\n o.ExternalReference = {name: 'ɵɵHostDirectivesFeature', moduleName: CORE};\n\n static listener: o.ExternalReference = {name: 'ɵɵlistener', moduleName: CORE};\n\n static getInheritedFactory: o.ExternalReference = {\n name: 'ɵɵgetInheritedFactory',\n moduleName: CORE,\n };\n\n // sanitization-related functions\n static sanitizeHtml: o.ExternalReference = {name: 'ɵɵsanitizeHtml', moduleName: CORE};\n static sanitizeStyle: o.ExternalReference = {name: 'ɵɵsanitizeStyle', moduleName: CORE};\n static sanitizeResourceUrl:\n o.ExternalReference = {name: 'ɵɵsanitizeResourceUrl', moduleName: CORE};\n static sanitizeScript: o.ExternalReference = {name: 'ɵɵsanitizeScript', moduleName: CORE};\n static sanitizeUrl: o.ExternalReference = {name: 'ɵɵsanitizeUrl', moduleName: CORE};\n static sanitizeUrlOrResourceUrl:\n o.ExternalReference = {name: 'ɵɵsanitizeUrlOrResourceUrl', moduleName: CORE};\n static trustConstantHtml: o.ExternalReference = {name: 'ɵɵtrustConstantHtml', moduleName: CORE};\n static trustConstantResourceUrl:\n o.ExternalReference = {name: 'ɵɵtrustConstantResourceUrl', moduleName: CORE};\n static validateIframeAttribute:\n o.ExternalReference = {name: 'ɵɵvalidateIframeAttribute', moduleName: CORE};\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nconst DASH_CASE_REGEXP = /-+([a-z0-9])/g;\n\nexport function dashCaseToCamelCase(input: string): string {\n return input.replace(DASH_CASE_REGEXP, (...m: any[]) => m[1].toUpperCase());\n}\n\nexport function splitAtColon(input: string, defaultValues: string[]): string[] {\n return _splitAt(input, ':', defaultValues);\n}\n\nexport function splitAtPeriod(input: string, defaultValues: string[]): string[] {\n return _splitAt(input, '.', defaultValues);\n}\n\nfunction _splitAt(input: string, character: string, defaultValues: string[]): string[] {\n const characterIndex = input.indexOf(character);\n if (characterIndex == -1) return defaultValues;\n return [input.slice(0, characterIndex).trim(), input.slice(characterIndex + 1).trim()];\n}\n\nexport function noUndefined(val: T|undefined): T {\n return val === undefined ? null! : val;\n}\n\nexport function error(msg: string): never {\n throw new Error(`Internal Error: ${msg}`);\n}\n\n// Escape characters that have a special meaning in Regular Expressions\nexport function escapeRegExp(s: string): string {\n return s.replace(/([.*+?^=!:${}()|[\\]\\/\\\\])/g, '\\\\$1');\n}\n\nexport type Byte = number;\n\nexport function utf8Encode(str: string): Byte[] {\n let encoded: Byte[] = [];\n for (let index = 0; index < str.length; index++) {\n let codePoint = str.charCodeAt(index);\n\n // decode surrogate\n // see https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n if (codePoint >= 0xd800 && codePoint <= 0xdbff && str.length > (index + 1)) {\n const low = str.charCodeAt(index + 1);\n if (low >= 0xdc00 && low <= 0xdfff) {\n index++;\n codePoint = ((codePoint - 0xd800) << 10) + low - 0xdc00 + 0x10000;\n }\n }\n\n if (codePoint <= 0x7f) {\n encoded.push(codePoint);\n } else if (codePoint <= 0x7ff) {\n encoded.push(((codePoint >> 6) & 0x1F) | 0xc0, (codePoint & 0x3f) | 0x80);\n } else if (codePoint <= 0xffff) {\n encoded.push(\n (codePoint >> 12) | 0xe0, ((codePoint >> 6) & 0x3f) | 0x80, (codePoint & 0x3f) | 0x80);\n } else if (codePoint <= 0x1fffff) {\n encoded.push(\n ((codePoint >> 18) & 0x07) | 0xf0, ((codePoint >> 12) & 0x3f) | 0x80,\n ((codePoint >> 6) & 0x3f) | 0x80, (codePoint & 0x3f) | 0x80);\n }\n }\n\n return encoded;\n}\n\nexport function stringify(token: any): string {\n if (typeof token === 'string') {\n return token;\n }\n\n if (Array.isArray(token)) {\n return '[' + token.map(stringify).join(', ') + ']';\n }\n\n if (token == null) {\n return '' + token;\n }\n\n if (token.overriddenName) {\n return `${token.overriddenName}`;\n }\n\n if (token.name) {\n return `${token.name}`;\n }\n\n if (!token.toString) {\n return 'object';\n }\n\n // WARNING: do not try to `JSON.stringify(token)` here\n // see https://github.com/angular/angular/issues/23440\n const res = token.toString();\n\n if (res == null) {\n return '' + res;\n }\n\n const newLineIndex = res.indexOf('\\n');\n return newLineIndex === -1 ? res : res.substring(0, newLineIndex);\n}\n\nexport class Version {\n public readonly major: string;\n public readonly minor: string;\n public readonly patch: string;\n\n constructor(public full: string) {\n const splits = full.split('.');\n this.major = splits[0];\n this.minor = splits[1];\n this.patch = splits.slice(2).join('.');\n }\n}\n\nexport interface Console {\n log(message: string): void;\n warn(message: string): void;\n}\n\n\ndeclare var WorkerGlobalScope: any;\n// CommonJS / Node have global context exposed as \"global\" variable.\n// We don't want to include the whole node.d.ts this this compilation unit so we'll just fake\n// the global \"global\" var for now.\ndeclare var global: any;\n\n// Check `global` first, because in Node tests both `global` and `window` may be defined and our\n// `_global` variable should point to the NodeJS `global` in that case. Note: Typeof/Instanceof\n// checks are considered side-effects in Terser. We explicitly mark this as side-effect free:\n// https://github.com/terser/terser/issues/250.\nconst _global: {[name: string]: any} = (/* @__PURE__ */ (\n () => (typeof global !== 'undefined' && global) || (typeof window !== 'undefined' && window) ||\n (typeof self !== 'undefined' && typeof WorkerGlobalScope !== 'undefined' &&\n self instanceof WorkerGlobalScope && self))());\n\nexport {_global as global};\n\nexport function newArray(size: number): T[];\nexport function newArray(size: number, value: T): T[];\nexport function newArray(size: number, value?: T): T[] {\n const list: T[] = [];\n for (let i = 0; i < size; i++) {\n list.push(value!);\n }\n return list;\n}\n\n/**\n * Partitions a given array into 2 arrays, based on a boolean value returned by the condition\n * function.\n *\n * @param arr Input array that should be partitioned\n * @param conditionFn Condition function that is called for each item in a given array and returns a\n * boolean value.\n */\nexport function partitionArray(\n arr: (T|F)[], conditionFn: (value: T|F) => boolean): [T[], F[]] {\n const truthy: T[] = [];\n const falsy: F[] = [];\n for (const item of arr) {\n (conditionFn(item) ? truthy : falsy).push(item as any);\n }\n return [truthy, falsy];\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {utf8Encode} from '../util';\n\n// https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit\nconst VERSION = 3;\n\nconst JS_B64_PREFIX = '# sourceMappingURL=data:application/json;base64,';\n\ntype Segment = {\n col0: number,\n sourceUrl?: string,\n sourceLine0?: number,\n sourceCol0?: number,\n};\n\nexport type SourceMap = {\n version: number,\n file?: string,\n sourceRoot: string,\n sources: string[],\n sourcesContent: (string|null)[],\n mappings: string,\n};\n\nexport class SourceMapGenerator {\n private sourcesContent: Map = new Map();\n private lines: Segment[][] = [];\n private lastCol0: number = 0;\n private hasMappings = false;\n\n constructor(private file: string|null = null) {}\n\n // The content is `null` when the content is expected to be loaded using the URL\n addSource(url: string, content: string|null = null): this {\n if (!this.sourcesContent.has(url)) {\n this.sourcesContent.set(url, content);\n }\n return this;\n }\n\n addLine(): this {\n this.lines.push([]);\n this.lastCol0 = 0;\n return this;\n }\n\n addMapping(col0: number, sourceUrl?: string, sourceLine0?: number, sourceCol0?: number): this {\n if (!this.currentLine) {\n throw new Error(`A line must be added before mappings can be added`);\n }\n if (sourceUrl != null && !this.sourcesContent.has(sourceUrl)) {\n throw new Error(`Unknown source file \"${sourceUrl}\"`);\n }\n if (col0 == null) {\n throw new Error(`The column in the generated code must be provided`);\n }\n if (col0 < this.lastCol0) {\n throw new Error(`Mapping should be added in output order`);\n }\n if (sourceUrl && (sourceLine0 == null || sourceCol0 == null)) {\n throw new Error(`The source location must be provided when a source url is provided`);\n }\n\n this.hasMappings = true;\n this.lastCol0 = col0;\n this.currentLine.push({col0, sourceUrl, sourceLine0, sourceCol0});\n return this;\n }\n\n /**\n * @internal strip this from published d.ts files due to\n * https://github.com/microsoft/TypeScript/issues/36216\n */\n private get currentLine(): Segment[]|null {\n return this.lines.slice(-1)[0];\n }\n\n toJSON(): SourceMap|null {\n if (!this.hasMappings) {\n return null;\n }\n\n const sourcesIndex = new Map();\n const sources: string[] = [];\n const sourcesContent: (string|null)[] = [];\n\n Array.from(this.sourcesContent.keys()).forEach((url: string, i: number) => {\n sourcesIndex.set(url, i);\n sources.push(url);\n sourcesContent.push(this.sourcesContent.get(url) || null);\n });\n\n let mappings: string = '';\n let lastCol0: number = 0;\n let lastSourceIndex: number = 0;\n let lastSourceLine0: number = 0;\n let lastSourceCol0: number = 0;\n\n this.lines.forEach(segments => {\n lastCol0 = 0;\n\n mappings += segments\n .map(segment => {\n // zero-based starting column of the line in the generated code\n let segAsStr = toBase64VLQ(segment.col0 - lastCol0);\n lastCol0 = segment.col0;\n\n if (segment.sourceUrl != null) {\n // zero-based index into the “sources” list\n segAsStr +=\n toBase64VLQ(sourcesIndex.get(segment.sourceUrl)! - lastSourceIndex);\n lastSourceIndex = sourcesIndex.get(segment.sourceUrl)!;\n // the zero-based starting line in the original source\n segAsStr += toBase64VLQ(segment.sourceLine0! - lastSourceLine0);\n lastSourceLine0 = segment.sourceLine0!;\n // the zero-based starting column in the original source\n segAsStr += toBase64VLQ(segment.sourceCol0! - lastSourceCol0);\n lastSourceCol0 = segment.sourceCol0!;\n }\n\n return segAsStr;\n })\n .join(',');\n mappings += ';';\n });\n\n mappings = mappings.slice(0, -1);\n\n return {\n 'file': this.file || '',\n 'version': VERSION,\n 'sourceRoot': '',\n 'sources': sources,\n 'sourcesContent': sourcesContent,\n 'mappings': mappings,\n };\n }\n\n toJsComment(): string {\n return this.hasMappings ? '//' + JS_B64_PREFIX + toBase64String(JSON.stringify(this, null, 0)) :\n '';\n }\n}\n\nexport function toBase64String(value: string): string {\n let b64 = '';\n const encoded = utf8Encode(value);\n for (let i = 0; i < encoded.length;) {\n const i1 = encoded[i++];\n const i2 = i < encoded.length ? encoded[i++] : null;\n const i3 = i < encoded.length ? encoded[i++] : null;\n b64 += toBase64Digit(i1 >> 2);\n b64 += toBase64Digit(((i1 & 3) << 4) | (i2 === null ? 0 : i2 >> 4));\n b64 += i2 === null ? '=' : toBase64Digit(((i2 & 15) << 2) | (i3 === null ? 0 : i3 >> 6));\n b64 += i2 === null || i3 === null ? '=' : toBase64Digit(i3 & 63);\n }\n\n return b64;\n}\n\nfunction toBase64VLQ(value: number): string {\n value = value < 0 ? ((-value) << 1) + 1 : value << 1;\n\n let out = '';\n do {\n let digit = value & 31;\n value = value >> 5;\n if (value > 0) {\n digit = digit | 32;\n }\n out += toBase64Digit(digit);\n } while (value > 0);\n\n return out;\n}\n\nconst B64_DIGITS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\nfunction toBase64Digit(value: number): string {\n if (value < 0 || value >= 64) {\n throw new Error(`Can only encode value in the range [0, 63]`);\n }\n\n return B64_DIGITS[value];\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {ParseSourceSpan} from '../parse_util';\n\nimport * as o from './output_ast';\nimport {SourceMapGenerator} from './source_map';\n\nconst _SINGLE_QUOTE_ESCAPE_STRING_RE = /'|\\\\|\\n|\\r|\\$/g;\nconst _LEGAL_IDENTIFIER_RE = /^[$A-Z_][0-9A-Z_$]*$/i;\nconst _INDENT_WITH = ' ';\n\nclass _EmittedLine {\n partsLength = 0;\n parts: string[] = [];\n srcSpans: (ParseSourceSpan|null)[] = [];\n constructor(public indent: number) {}\n}\n\nexport class EmitterVisitorContext {\n static createRoot(): EmitterVisitorContext {\n return new EmitterVisitorContext(0);\n }\n\n private _lines: _EmittedLine[];\n\n constructor(private _indent: number) {\n this._lines = [new _EmittedLine(_indent)];\n }\n\n /**\n * @internal strip this from published d.ts files due to\n * https://github.com/microsoft/TypeScript/issues/36216\n */\n private get _currentLine(): _EmittedLine {\n return this._lines[this._lines.length - 1];\n }\n\n println(from?: {sourceSpan: ParseSourceSpan|null}|null, lastPart: string = ''): void {\n this.print(from || null, lastPart, true);\n }\n\n lineIsEmpty(): boolean {\n return this._currentLine.parts.length === 0;\n }\n\n lineLength(): number {\n return this._currentLine.indent * _INDENT_WITH.length + this._currentLine.partsLength;\n }\n\n print(from: {sourceSpan: ParseSourceSpan|null}|null, part: string, newLine: boolean = false) {\n if (part.length > 0) {\n this._currentLine.parts.push(part);\n this._currentLine.partsLength += part.length;\n this._currentLine.srcSpans.push(from && from.sourceSpan || null);\n }\n if (newLine) {\n this._lines.push(new _EmittedLine(this._indent));\n }\n }\n\n removeEmptyLastLine() {\n if (this.lineIsEmpty()) {\n this._lines.pop();\n }\n }\n\n incIndent() {\n this._indent++;\n if (this.lineIsEmpty()) {\n this._currentLine.indent = this._indent;\n }\n }\n\n decIndent() {\n this._indent--;\n if (this.lineIsEmpty()) {\n this._currentLine.indent = this._indent;\n }\n }\n\n toSource(): string {\n return this.sourceLines\n .map(l => l.parts.length > 0 ? _createIndent(l.indent) + l.parts.join('') : '')\n .join('\\n');\n }\n\n toSourceMapGenerator(genFilePath: string, startsAtLine: number = 0): SourceMapGenerator {\n const map = new SourceMapGenerator(genFilePath);\n\n let firstOffsetMapped = false;\n const mapFirstOffsetIfNeeded = () => {\n if (!firstOffsetMapped) {\n // Add a single space so that tools won't try to load the file from disk.\n // Note: We are using virtual urls like `ng:///`, so we have to\n // provide a content here.\n map.addSource(genFilePath, ' ').addMapping(0, genFilePath, 0, 0);\n firstOffsetMapped = true;\n }\n };\n\n for (let i = 0; i < startsAtLine; i++) {\n map.addLine();\n mapFirstOffsetIfNeeded();\n }\n\n this.sourceLines.forEach((line, lineIdx) => {\n map.addLine();\n\n const spans = line.srcSpans;\n const parts = line.parts;\n let col0 = line.indent * _INDENT_WITH.length;\n let spanIdx = 0;\n // skip leading parts without source spans\n while (spanIdx < spans.length && !spans[spanIdx]) {\n col0 += parts[spanIdx].length;\n spanIdx++;\n }\n if (spanIdx < spans.length && lineIdx === 0 && col0 === 0) {\n firstOffsetMapped = true;\n } else {\n mapFirstOffsetIfNeeded();\n }\n\n while (spanIdx < spans.length) {\n const span = spans[spanIdx]!;\n const source = span.start.file;\n const sourceLine = span.start.line;\n const sourceCol = span.start.col;\n map.addSource(source.url, source.content)\n .addMapping(col0, source.url, sourceLine, sourceCol);\n\n col0 += parts[spanIdx].length;\n spanIdx++;\n\n // assign parts without span or the same span to the previous segment\n while (spanIdx < spans.length && (span === spans[spanIdx] || !spans[spanIdx])) {\n col0 += parts[spanIdx].length;\n spanIdx++;\n }\n }\n });\n\n return map;\n }\n\n spanOf(line: number, column: number): ParseSourceSpan|null {\n const emittedLine = this._lines[line];\n if (emittedLine) {\n let columnsLeft = column - _createIndent(emittedLine.indent).length;\n for (let partIndex = 0; partIndex < emittedLine.parts.length; partIndex++) {\n const part = emittedLine.parts[partIndex];\n if (part.length > columnsLeft) {\n return emittedLine.srcSpans[partIndex];\n }\n columnsLeft -= part.length;\n }\n }\n return null;\n }\n\n /**\n * @internal strip this from published d.ts files due to\n * https://github.com/microsoft/TypeScript/issues/36216\n */\n private get sourceLines(): _EmittedLine[] {\n if (this._lines.length && this._lines[this._lines.length - 1].parts.length === 0) {\n return this._lines.slice(0, -1);\n }\n return this._lines;\n }\n}\n\nexport abstract class AbstractEmitterVisitor implements o.StatementVisitor, o.ExpressionVisitor {\n constructor(private _escapeDollarInStrings: boolean) {}\n\n protected printLeadingComments(stmt: o.Statement, ctx: EmitterVisitorContext): void {\n if (stmt.leadingComments === undefined) {\n return;\n }\n for (const comment of stmt.leadingComments) {\n if (comment instanceof o.JSDocComment) {\n ctx.print(stmt, `/*${comment.toString()}*/`, comment.trailingNewline);\n } else {\n if (comment.multiline) {\n ctx.print(stmt, `/* ${comment.text} */`, comment.trailingNewline);\n } else {\n comment.text.split('\\n').forEach((line) => {\n ctx.println(stmt, `// ${line}`);\n });\n }\n }\n }\n }\n\n visitExpressionStmt(stmt: o.ExpressionStatement, ctx: EmitterVisitorContext): any {\n this.printLeadingComments(stmt, ctx);\n stmt.expr.visitExpression(this, ctx);\n ctx.println(stmt, ';');\n return null;\n }\n\n visitReturnStmt(stmt: o.ReturnStatement, ctx: EmitterVisitorContext): any {\n this.printLeadingComments(stmt, ctx);\n ctx.print(stmt, `return `);\n stmt.value.visitExpression(this, ctx);\n ctx.println(stmt, ';');\n return null;\n }\n\n visitIfStmt(stmt: o.IfStmt, ctx: EmitterVisitorContext): any {\n this.printLeadingComments(stmt, ctx);\n ctx.print(stmt, `if (`);\n stmt.condition.visitExpression(this, ctx);\n ctx.print(stmt, `) {`);\n const hasElseCase = stmt.falseCase != null && stmt.falseCase.length > 0;\n if (stmt.trueCase.length <= 1 && !hasElseCase) {\n ctx.print(stmt, ` `);\n this.visitAllStatements(stmt.trueCase, ctx);\n ctx.removeEmptyLastLine();\n ctx.print(stmt, ` `);\n } else {\n ctx.println();\n ctx.incIndent();\n this.visitAllStatements(stmt.trueCase, ctx);\n ctx.decIndent();\n if (hasElseCase) {\n ctx.println(stmt, `} else {`);\n ctx.incIndent();\n this.visitAllStatements(stmt.falseCase, ctx);\n ctx.decIndent();\n }\n }\n ctx.println(stmt, `}`);\n return null;\n }\n\n abstract visitDeclareVarStmt(stmt: o.DeclareVarStmt, ctx: EmitterVisitorContext): any;\n\n visitWriteVarExpr(expr: o.WriteVarExpr, ctx: EmitterVisitorContext): any {\n const lineWasEmpty = ctx.lineIsEmpty();\n if (!lineWasEmpty) {\n ctx.print(expr, '(');\n }\n ctx.print(expr, `${expr.name} = `);\n expr.value.visitExpression(this, ctx);\n if (!lineWasEmpty) {\n ctx.print(expr, ')');\n }\n return null;\n }\n visitWriteKeyExpr(expr: o.WriteKeyExpr, ctx: EmitterVisitorContext): any {\n const lineWasEmpty = ctx.lineIsEmpty();\n if (!lineWasEmpty) {\n ctx.print(expr, '(');\n }\n expr.receiver.visitExpression(this, ctx);\n ctx.print(expr, `[`);\n expr.index.visitExpression(this, ctx);\n ctx.print(expr, `] = `);\n expr.value.visitExpression(this, ctx);\n if (!lineWasEmpty) {\n ctx.print(expr, ')');\n }\n return null;\n }\n visitWritePropExpr(expr: o.WritePropExpr, ctx: EmitterVisitorContext): any {\n const lineWasEmpty = ctx.lineIsEmpty();\n if (!lineWasEmpty) {\n ctx.print(expr, '(');\n }\n expr.receiver.visitExpression(this, ctx);\n ctx.print(expr, `.${expr.name} = `);\n expr.value.visitExpression(this, ctx);\n if (!lineWasEmpty) {\n ctx.print(expr, ')');\n }\n return null;\n }\n\n visitInvokeFunctionExpr(expr: o.InvokeFunctionExpr, ctx: EmitterVisitorContext): any {\n expr.fn.visitExpression(this, ctx);\n ctx.print(expr, `(`);\n this.visitAllExpressions(expr.args, ctx, ',');\n ctx.print(expr, `)`);\n return null;\n }\n visitTaggedTemplateExpr(expr: o.TaggedTemplateExpr, ctx: EmitterVisitorContext): any {\n expr.tag.visitExpression(this, ctx);\n ctx.print(expr, '`' + expr.template.elements[0].rawText);\n for (let i = 1; i < expr.template.elements.length; i++) {\n ctx.print(expr, '${');\n expr.template.expressions[i - 1].visitExpression(this, ctx);\n ctx.print(expr, `}${expr.template.elements[i].rawText}`);\n }\n ctx.print(expr, '`');\n return null;\n }\n visitWrappedNodeExpr(ast: o.WrappedNodeExpr, ctx: EmitterVisitorContext): any {\n throw new Error('Abstract emitter cannot visit WrappedNodeExpr.');\n }\n visitTypeofExpr(expr: o.TypeofExpr, ctx: EmitterVisitorContext): any {\n ctx.print(expr, 'typeof ');\n expr.expr.visitExpression(this, ctx);\n }\n visitReadVarExpr(ast: o.ReadVarExpr, ctx: EmitterVisitorContext): any {\n ctx.print(ast, ast.name);\n return null;\n }\n visitInstantiateExpr(ast: o.InstantiateExpr, ctx: EmitterVisitorContext): any {\n ctx.print(ast, `new `);\n ast.classExpr.visitExpression(this, ctx);\n ctx.print(ast, `(`);\n this.visitAllExpressions(ast.args, ctx, ',');\n ctx.print(ast, `)`);\n return null;\n }\n\n visitLiteralExpr(ast: o.LiteralExpr, ctx: EmitterVisitorContext): any {\n const value = ast.value;\n if (typeof value === 'string') {\n ctx.print(ast, escapeIdentifier(value, this._escapeDollarInStrings));\n } else {\n ctx.print(ast, `${value}`);\n }\n return null;\n }\n\n visitLocalizedString(ast: o.LocalizedString, ctx: EmitterVisitorContext): any {\n const head = ast.serializeI18nHead();\n ctx.print(ast, '$localize `' + head.raw);\n for (let i = 1; i < ast.messageParts.length; i++) {\n ctx.print(ast, '${');\n ast.expressions[i - 1].visitExpression(this, ctx);\n ctx.print(ast, `}${ast.serializeI18nTemplatePart(i).raw}`);\n }\n ctx.print(ast, '`');\n return null;\n }\n\n abstract visitExternalExpr(ast: o.ExternalExpr, ctx: EmitterVisitorContext): any;\n\n visitConditionalExpr(ast: o.ConditionalExpr, ctx: EmitterVisitorContext): any {\n ctx.print(ast, `(`);\n ast.condition.visitExpression(this, ctx);\n ctx.print(ast, '? ');\n ast.trueCase.visitExpression(this, ctx);\n ctx.print(ast, ': ');\n ast.falseCase!.visitExpression(this, ctx);\n ctx.print(ast, `)`);\n return null;\n }\n visitNotExpr(ast: o.NotExpr, ctx: EmitterVisitorContext): any {\n ctx.print(ast, '!');\n ast.condition.visitExpression(this, ctx);\n return null;\n }\n abstract visitFunctionExpr(ast: o.FunctionExpr, ctx: EmitterVisitorContext): any;\n abstract visitDeclareFunctionStmt(stmt: o.DeclareFunctionStmt, context: any): any;\n\n visitUnaryOperatorExpr(ast: o.UnaryOperatorExpr, ctx: EmitterVisitorContext): any {\n let opStr: string;\n switch (ast.operator) {\n case o.UnaryOperator.Plus:\n opStr = '+';\n break;\n case o.UnaryOperator.Minus:\n opStr = '-';\n break;\n default:\n throw new Error(`Unknown operator ${ast.operator}`);\n }\n if (ast.parens) ctx.print(ast, `(`);\n ctx.print(ast, opStr);\n ast.expr.visitExpression(this, ctx);\n if (ast.parens) ctx.print(ast, `)`);\n return null;\n }\n\n visitBinaryOperatorExpr(ast: o.BinaryOperatorExpr, ctx: EmitterVisitorContext): any {\n let opStr: string;\n switch (ast.operator) {\n case o.BinaryOperator.Equals:\n opStr = '==';\n break;\n case o.BinaryOperator.Identical:\n opStr = '===';\n break;\n case o.BinaryOperator.NotEquals:\n opStr = '!=';\n break;\n case o.BinaryOperator.NotIdentical:\n opStr = '!==';\n break;\n case o.BinaryOperator.And:\n opStr = '&&';\n break;\n case o.BinaryOperator.BitwiseAnd:\n opStr = '&';\n break;\n case o.BinaryOperator.Or:\n opStr = '||';\n break;\n case o.BinaryOperator.Plus:\n opStr = '+';\n break;\n case o.BinaryOperator.Minus:\n opStr = '-';\n break;\n case o.BinaryOperator.Divide:\n opStr = '/';\n break;\n case o.BinaryOperator.Multiply:\n opStr = '*';\n break;\n case o.BinaryOperator.Modulo:\n opStr = '%';\n break;\n case o.BinaryOperator.Lower:\n opStr = '<';\n break;\n case o.BinaryOperator.LowerEquals:\n opStr = '<=';\n break;\n case o.BinaryOperator.Bigger:\n opStr = '>';\n break;\n case o.BinaryOperator.BiggerEquals:\n opStr = '>=';\n break;\n case o.BinaryOperator.NullishCoalesce:\n opStr = '??';\n break;\n default:\n throw new Error(`Unknown operator ${ast.operator}`);\n }\n if (ast.parens) ctx.print(ast, `(`);\n ast.lhs.visitExpression(this, ctx);\n ctx.print(ast, ` ${opStr} `);\n ast.rhs.visitExpression(this, ctx);\n if (ast.parens) ctx.print(ast, `)`);\n return null;\n }\n\n visitReadPropExpr(ast: o.ReadPropExpr, ctx: EmitterVisitorContext): any {\n ast.receiver.visitExpression(this, ctx);\n ctx.print(ast, `.`);\n ctx.print(ast, ast.name);\n return null;\n }\n visitReadKeyExpr(ast: o.ReadKeyExpr, ctx: EmitterVisitorContext): any {\n ast.receiver.visitExpression(this, ctx);\n ctx.print(ast, `[`);\n ast.index.visitExpression(this, ctx);\n ctx.print(ast, `]`);\n return null;\n }\n visitLiteralArrayExpr(ast: o.LiteralArrayExpr, ctx: EmitterVisitorContext): any {\n ctx.print(ast, `[`);\n this.visitAllExpressions(ast.entries, ctx, ',');\n ctx.print(ast, `]`);\n return null;\n }\n visitLiteralMapExpr(ast: o.LiteralMapExpr, ctx: EmitterVisitorContext): any {\n ctx.print(ast, `{`);\n this.visitAllObjects(entry => {\n ctx.print(ast, `${escapeIdentifier(entry.key, this._escapeDollarInStrings, entry.quoted)}:`);\n entry.value.visitExpression(this, ctx);\n }, ast.entries, ctx, ',');\n ctx.print(ast, `}`);\n return null;\n }\n visitCommaExpr(ast: o.CommaExpr, ctx: EmitterVisitorContext): any {\n ctx.print(ast, '(');\n this.visitAllExpressions(ast.parts, ctx, ',');\n ctx.print(ast, ')');\n return null;\n }\n visitAllExpressions(expressions: o.Expression[], ctx: EmitterVisitorContext, separator: string):\n void {\n this.visitAllObjects(expr => expr.visitExpression(this, ctx), expressions, ctx, separator);\n }\n\n visitAllObjects(\n handler: (t: T) => void, expressions: T[], ctx: EmitterVisitorContext,\n separator: string): void {\n let incrementedIndent = false;\n for (let i = 0; i < expressions.length; i++) {\n if (i > 0) {\n if (ctx.lineLength() > 80) {\n ctx.print(null, separator, true);\n if (!incrementedIndent) {\n // continuation are marked with double indent.\n ctx.incIndent();\n ctx.incIndent();\n incrementedIndent = true;\n }\n } else {\n ctx.print(null, separator, false);\n }\n }\n handler(expressions[i]);\n }\n if (incrementedIndent) {\n // continuation are marked with double indent.\n ctx.decIndent();\n ctx.decIndent();\n }\n }\n\n visitAllStatements(statements: o.Statement[], ctx: EmitterVisitorContext): void {\n statements.forEach((stmt) => stmt.visitStatement(this, ctx));\n }\n}\n\nexport function escapeIdentifier(\n input: string, escapeDollar: boolean, alwaysQuote: boolean = true): any {\n if (input == null) {\n return null;\n }\n const body = input.replace(_SINGLE_QUOTE_ESCAPE_STRING_RE, (...match: string[]) => {\n if (match[0] == '$') {\n return escapeDollar ? '\\\\$' : '$';\n } else if (match[0] == '\\n') {\n return '\\\\n';\n } else if (match[0] == '\\r') {\n return '\\\\r';\n } else {\n return `\\\\${match[0]}`;\n }\n });\n const requiresQuotes = alwaysQuote || !_LEGAL_IDENTIFIER_RE.test(body);\n return requiresQuotes ? `'${body}'` : body;\n}\n\nfunction _createIndent(count: number): string {\n let res = '';\n for (let i = 0; i < count; i++) {\n res += _INDENT_WITH;\n }\n return res;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {escapeIdentifier} from '../output/abstract_emitter';\nimport * as o from '../output/output_ast';\n\nimport {Identifiers} from './r3_identifiers';\n\nexport function typeWithParameters(type: o.Expression, numParams: number): o.ExpressionType {\n if (numParams === 0) {\n return o.expressionType(type);\n }\n const params: o.Type[] = [];\n for (let i = 0; i < numParams; i++) {\n params.push(o.DYNAMIC_TYPE);\n }\n return o.expressionType(type, undefined, params);\n}\n\nexport interface R3Reference {\n value: o.Expression;\n type: o.Expression;\n}\n\n/**\n * Result of compilation of a render3 code unit, e.g. component, directive, pipe, etc.\n */\nexport interface R3CompiledExpression {\n expression: o.Expression;\n type: o.Type;\n statements: o.Statement[];\n}\n\nconst ANIMATE_SYMBOL_PREFIX = '@';\nexport function prepareSyntheticPropertyName(name: string) {\n return `${ANIMATE_SYMBOL_PREFIX}${name}`;\n}\n\nexport function prepareSyntheticListenerName(name: string, phase: string) {\n return `${ANIMATE_SYMBOL_PREFIX}${name}.${phase}`;\n}\n\nexport function getSafePropertyAccessString(accessor: string, name: string): string {\n const escapedName = escapeIdentifier(name, false, false);\n return escapedName !== name ? `${accessor}[${escapedName}]` : `${accessor}.${name}`;\n}\n\nexport function prepareSyntheticListenerFunctionName(name: string, phase: string) {\n return `animation_${name}_${phase}`;\n}\n\nexport function jitOnlyGuardedExpression(expr: o.Expression): o.Expression {\n return guardedExpression('ngJitMode', expr);\n}\n\nexport function devOnlyGuardedExpression(expr: o.Expression): o.Expression {\n return guardedExpression('ngDevMode', expr);\n}\n\nexport function guardedExpression(guard: string, expr: o.Expression): o.Expression {\n const guardExpr = new o.ExternalExpr({name: guard, moduleName: null});\n const guardNotDefined = new o.BinaryOperatorExpr(\n o.BinaryOperator.Identical, new o.TypeofExpr(guardExpr), o.literal('undefined'));\n const guardUndefinedOrTrue = new o.BinaryOperatorExpr(\n o.BinaryOperator.Or, guardNotDefined, guardExpr, /* type */ undefined,\n /* sourceSpan */ undefined, true);\n return new o.BinaryOperatorExpr(o.BinaryOperator.And, guardUndefinedOrTrue, expr);\n}\n\nexport function wrapReference(value: any): R3Reference {\n const wrapped = new o.WrappedNodeExpr(value);\n return {value: wrapped, type: wrapped};\n}\n\nexport function refsToArray(refs: R3Reference[], shouldForwardDeclare: boolean): o.Expression {\n const values = o.literalArr(refs.map(ref => ref.value));\n return shouldForwardDeclare ? o.fn([], [new o.ReturnStatement(values)]) : values;\n}\n\n\n/**\n * Describes an expression that may have been wrapped in a `forwardRef()` guard.\n *\n * This is used when describing expressions that can refer to types that may eagerly reference types\n * that have not yet been defined.\n */\nexport interface MaybeForwardRefExpression {\n /**\n * The unwrapped expression.\n */\n expression: T;\n /**\n * Specified whether the `expression` contains a reference to something that has not yet been\n * defined, and whether the expression is still wrapped in a `forwardRef()` call.\n *\n * If this value is `ForwardRefHandling.None` then the `expression` is safe to use as-is.\n *\n * Otherwise the `expression` was wrapped in a call to `forwardRef()` and must not be eagerly\n * evaluated. Instead it must be wrapped in a function closure that will be evaluated lazily to\n * allow the definition of the expression to be evaluated first.\n *\n * In full AOT compilation it can be safe to unwrap the `forwardRef()` call up front if the\n * expression will actually be evaluated lazily inside a function call after the value of\n * `expression` has been defined.\n *\n * But in other cases, such as partial AOT compilation or JIT compilation the expression will be\n * evaluated eagerly in top level code so will need to continue to be wrapped in a `forwardRef()`\n * call.\n *\n */\n forwardRef: ForwardRefHandling;\n}\n\nexport function createMayBeForwardRefExpression(\n expression: T, forwardRef: ForwardRefHandling): MaybeForwardRefExpression {\n return {expression, forwardRef};\n}\n\n/**\n * Convert a `MaybeForwardRefExpression` to an `Expression`, possibly wrapping its expression in a\n * `forwardRef()` call.\n *\n * If `MaybeForwardRefExpression.forwardRef` is `ForwardRefHandling.Unwrapped` then the expression\n * was originally wrapped in a `forwardRef()` call to prevent the value from being eagerly evaluated\n * in the code.\n *\n * See `packages/compiler-cli/src/ngtsc/annotations/src/injectable.ts` and\n * `packages/compiler/src/jit_compiler_facade.ts` for more information.\n */\nexport function convertFromMaybeForwardRefExpression(\n {expression, forwardRef}: MaybeForwardRefExpression): o.Expression {\n switch (forwardRef) {\n case ForwardRefHandling.None:\n case ForwardRefHandling.Wrapped:\n return expression;\n case ForwardRefHandling.Unwrapped:\n return generateForwardRef(expression);\n }\n}\n\n/**\n * Generate an expression that has the given `expr` wrapped in the following form:\n *\n * ```\n * forwardRef(() => expr)\n * ```\n */\nexport function generateForwardRef(expr: o.Expression): o.Expression {\n return o.importExpr(Identifiers.forwardRef).callFn([o.fn([], [new o.ReturnStatement(expr)])]);\n}\n\n/**\n * Specifies how a forward ref has been handled in a MaybeForwardRefExpression\n */\nexport const enum ForwardRefHandling {\n /** The expression was not wrapped in a `forwardRef()` call in the first place. */\n None,\n /** The expression is still wrapped in a `forwardRef()` call. */\n Wrapped,\n /** The expression was wrapped in a `forwardRef()` call but has since been unwrapped. */\n Unwrapped,\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {InjectFlags} from '../core';\nimport * as o from '../output/output_ast';\nimport {Identifiers as R3} from '../render3/r3_identifiers';\nimport {R3CompiledExpression, R3Reference, typeWithParameters} from './util';\n\n\n/**\n * Metadata required by the factory generator to generate a `factory` function for a type.\n */\nexport interface R3ConstructorFactoryMetadata {\n /**\n * String name of the type being generated (used to name the factory function).\n */\n name: string;\n\n /**\n * An expression representing the interface type being constructed.\n */\n type: R3Reference;\n\n /**\n * An expression representing the constructor type, intended for use within a class definition\n * itself.\n *\n * This can differ from the outer `type` if the class is being compiled by ngcc and is inside\n * an IIFE structure that uses a different name internally.\n */\n internalType: o.Expression;\n\n /** Number of arguments for the `type`. */\n typeArgumentCount: number;\n\n /**\n * Regardless of whether `fnOrClass` is a constructor function or a user-defined factory, it\n * may have 0 or more parameters, which will be injected according to the `R3DependencyMetadata`\n * for those parameters. If this is `null`, then the type's constructor is nonexistent and will\n * be inherited from `fnOrClass` which is interpreted as the current type. If this is `'invalid'`,\n * then one or more of the parameters wasn't resolvable and any attempt to use these deps will\n * result in a runtime error.\n */\n deps: R3DependencyMetadata[]|'invalid'|null;\n\n /**\n * Type of the target being created by the factory.\n */\n target: FactoryTarget;\n}\n\nexport enum R3FactoryDelegateType {\n Class = 0,\n Function = 1,\n}\n\nexport interface R3DelegatedFnOrClassMetadata extends R3ConstructorFactoryMetadata {\n delegate: o.Expression;\n delegateType: R3FactoryDelegateType;\n delegateDeps: R3DependencyMetadata[];\n}\n\nexport interface R3ExpressionFactoryMetadata extends R3ConstructorFactoryMetadata {\n expression: o.Expression;\n}\n\nexport type R3FactoryMetadata =\n R3ConstructorFactoryMetadata|R3DelegatedFnOrClassMetadata|R3ExpressionFactoryMetadata;\n\nexport enum FactoryTarget {\n Directive = 0,\n Component = 1,\n Injectable = 2,\n Pipe = 3,\n NgModule = 4,\n}\n\nexport interface R3DependencyMetadata {\n /**\n * An expression representing the token or value to be injected.\n * Or `null` if the dependency could not be resolved - making it invalid.\n */\n token: o.Expression|null;\n\n /**\n * If an @Attribute decorator is present, this is the literal type of the attribute name, or\n * the unknown type if no literal type is available (e.g. the attribute name is an expression).\n * Otherwise it is null;\n */\n attributeNameType: o.Expression|null;\n\n /**\n * Whether the dependency has an @Host qualifier.\n */\n host: boolean;\n\n /**\n * Whether the dependency has an @Optional qualifier.\n */\n optional: boolean;\n\n /**\n * Whether the dependency has an @Self qualifier.\n */\n self: boolean;\n\n /**\n * Whether the dependency has an @SkipSelf qualifier.\n */\n skipSelf: boolean;\n}\n\n/**\n * Construct a factory function expression for the given `R3FactoryMetadata`.\n */\nexport function compileFactoryFunction(meta: R3FactoryMetadata): R3CompiledExpression {\n const t = o.variable('t');\n let baseFactoryVar: o.ReadVarExpr|null = null;\n\n // The type to instantiate via constructor invocation. If there is no delegated factory, meaning\n // this type is always created by constructor invocation, then this is the type-to-create\n // parameter provided by the user (t) if specified, or the current type if not. If there is a\n // delegated factory (which is used to create the current type) then this is only the type-to-\n // create parameter (t).\n const typeForCtor = !isDelegatedFactoryMetadata(meta) ?\n new o.BinaryOperatorExpr(o.BinaryOperator.Or, t, meta.internalType) :\n t;\n\n let ctorExpr: o.Expression|null = null;\n if (meta.deps !== null) {\n // There is a constructor (either explicitly or implicitly defined).\n if (meta.deps !== 'invalid') {\n ctorExpr = new o.InstantiateExpr(typeForCtor, injectDependencies(meta.deps, meta.target));\n }\n } else {\n // There is no constructor, use the base class' factory to construct typeForCtor.\n baseFactoryVar = o.variable(`ɵ${meta.name}_BaseFactory`);\n ctorExpr = baseFactoryVar.callFn([typeForCtor]);\n }\n\n const body: o.Statement[] = [];\n let retExpr: o.Expression|null = null;\n\n function makeConditionalFactory(nonCtorExpr: o.Expression): o.ReadVarExpr {\n const r = o.variable('r');\n body.push(r.set(o.NULL_EXPR).toDeclStmt());\n const ctorStmt = ctorExpr !== null ? r.set(ctorExpr).toStmt() :\n o.importExpr(R3.invalidFactory).callFn([]).toStmt();\n body.push(o.ifStmt(t, [ctorStmt], [r.set(nonCtorExpr).toStmt()]));\n return r;\n }\n\n if (isDelegatedFactoryMetadata(meta)) {\n // This type is created with a delegated factory. If a type parameter is not specified, call\n // the factory instead.\n const delegateArgs = injectDependencies(meta.delegateDeps, meta.target);\n // Either call `new delegate(...)` or `delegate(...)` depending on meta.delegateType.\n const factoryExpr = new (\n meta.delegateType === R3FactoryDelegateType.Class ?\n o.InstantiateExpr :\n o.InvokeFunctionExpr)(meta.delegate, delegateArgs);\n retExpr = makeConditionalFactory(factoryExpr);\n } else if (isExpressionFactoryMetadata(meta)) {\n // TODO(alxhub): decide whether to lower the value here or in the caller\n retExpr = makeConditionalFactory(meta.expression);\n } else {\n retExpr = ctorExpr;\n }\n\n\n if (retExpr === null) {\n // The expression cannot be formed so render an `ɵɵinvalidFactory()` call.\n body.push(o.importExpr(R3.invalidFactory).callFn([]).toStmt());\n } else if (baseFactoryVar !== null) {\n // This factory uses a base factory, so call `ɵɵgetInheritedFactory()` to compute it.\n const getInheritedFactoryCall =\n o.importExpr(R3.getInheritedFactory).callFn([meta.internalType]);\n // Memoize the base factoryFn: `baseFactory || (baseFactory = ɵɵgetInheritedFactory(...))`\n const baseFactory = new o.BinaryOperatorExpr(\n o.BinaryOperator.Or, baseFactoryVar, baseFactoryVar.set(getInheritedFactoryCall));\n body.push(new o.ReturnStatement(baseFactory.callFn([typeForCtor])));\n } else {\n // This is straightforward factory, just return it.\n body.push(new o.ReturnStatement(retExpr));\n }\n\n let factoryFn: o.Expression = o.fn(\n [new o.FnParam('t', o.DYNAMIC_TYPE)], body, o.INFERRED_TYPE, undefined,\n `${meta.name}_Factory`);\n\n if (baseFactoryVar !== null) {\n // There is a base factory variable so wrap its declaration along with the factory function into\n // an IIFE.\n factoryFn = o.fn([], [\n new o.DeclareVarStmt(baseFactoryVar.name!), new o.ReturnStatement(factoryFn)\n ]).callFn([], /* sourceSpan */ undefined, /* pure */ true);\n }\n\n return {\n expression: factoryFn,\n statements: [],\n type: createFactoryType(meta),\n };\n}\n\nexport function createFactoryType(meta: R3FactoryMetadata) {\n const ctorDepsType =\n meta.deps !== null && meta.deps !== 'invalid' ? createCtorDepsType(meta.deps) : o.NONE_TYPE;\n return o.expressionType(o.importExpr(\n R3.FactoryDeclaration,\n [typeWithParameters(meta.type.type, meta.typeArgumentCount), ctorDepsType]));\n}\n\nfunction injectDependencies(deps: R3DependencyMetadata[], target: FactoryTarget): o.Expression[] {\n return deps.map((dep, index) => compileInjectDependency(dep, target, index));\n}\n\nfunction compileInjectDependency(\n dep: R3DependencyMetadata, target: FactoryTarget, index: number): o.Expression {\n // Interpret the dependency according to its resolved type.\n if (dep.token === null) {\n return o.importExpr(R3.invalidFactoryDep).callFn([o.literal(index)]);\n } else if (dep.attributeNameType === null) {\n // Build up the injection flags according to the metadata.\n const flags = InjectFlags.Default | (dep.self ? InjectFlags.Self : 0) |\n (dep.skipSelf ? InjectFlags.SkipSelf : 0) | (dep.host ? InjectFlags.Host : 0) |\n (dep.optional ? InjectFlags.Optional : 0) |\n (target === FactoryTarget.Pipe ? InjectFlags.ForPipe : 0);\n\n // If this dependency is optional or otherwise has non-default flags, then additional\n // parameters describing how to inject the dependency must be passed to the inject function\n // that's being used.\n let flagsParam: o.LiteralExpr|null =\n (flags !== InjectFlags.Default || dep.optional) ? o.literal(flags) : null;\n\n // Build up the arguments to the injectFn call.\n const injectArgs = [dep.token];\n if (flagsParam) {\n injectArgs.push(flagsParam);\n }\n const injectFn = getInjectFn(target);\n return o.importExpr(injectFn).callFn(injectArgs);\n } else {\n // The `dep.attributeTypeName` value is defined, which indicates that this is an `@Attribute()`\n // type dependency. For the generated JS we still want to use the `dep.token` value in case the\n // name given for the attribute is not a string literal. For example given `@Attribute(foo())`,\n // we want to generate `ɵɵinjectAttribute(foo())`.\n //\n // The `dep.attributeTypeName` is only actually used (in `createCtorDepType()`) to generate\n // typings.\n return o.importExpr(R3.injectAttribute).callFn([dep.token]);\n }\n}\n\nfunction createCtorDepsType(deps: R3DependencyMetadata[]): o.Type {\n let hasTypes = false;\n const attributeTypes = deps.map(dep => {\n const type = createCtorDepType(dep);\n if (type !== null) {\n hasTypes = true;\n return type;\n } else {\n return o.literal(null);\n }\n });\n\n if (hasTypes) {\n return o.expressionType(o.literalArr(attributeTypes));\n } else {\n return o.NONE_TYPE;\n }\n}\n\nfunction createCtorDepType(dep: R3DependencyMetadata): o.LiteralMapExpr|null {\n const entries: {key: string, quoted: boolean, value: o.Expression}[] = [];\n\n if (dep.attributeNameType !== null) {\n entries.push({key: 'attribute', value: dep.attributeNameType, quoted: false});\n }\n if (dep.optional) {\n entries.push({key: 'optional', value: o.literal(true), quoted: false});\n }\n if (dep.host) {\n entries.push({key: 'host', value: o.literal(true), quoted: false});\n }\n if (dep.self) {\n entries.push({key: 'self', value: o.literal(true), quoted: false});\n }\n if (dep.skipSelf) {\n entries.push({key: 'skipSelf', value: o.literal(true), quoted: false});\n }\n\n return entries.length > 0 ? o.literalMap(entries) : null;\n}\n\nexport function isDelegatedFactoryMetadata(meta: R3FactoryMetadata):\n meta is R3DelegatedFnOrClassMetadata {\n return (meta as any).delegateType !== undefined;\n}\n\nexport function isExpressionFactoryMetadata(meta: R3FactoryMetadata):\n meta is R3ExpressionFactoryMetadata {\n return (meta as any).expression !== undefined;\n}\n\nfunction getInjectFn(target: FactoryTarget): o.ExternalReference {\n switch (target) {\n case FactoryTarget.Component:\n case FactoryTarget.Directive:\n case FactoryTarget.Pipe:\n return R3.directiveInject;\n case FactoryTarget.NgModule:\n case FactoryTarget.Injectable:\n default:\n return R3.inject;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {SecurityContext} from '../core';\nimport {AST, BindingType, BoundElementProperty, ParsedEvent, ParsedEventType} from '../expression_parser/ast';\nimport {I18nMeta} from '../i18n/i18n_ast';\nimport {ParseSourceSpan} from '../parse_util';\n\nexport interface Node {\n sourceSpan: ParseSourceSpan;\n visit(visitor: Visitor): Result;\n}\n\n/**\n * This is an R3 `Node`-like wrapper for a raw `html.Comment` node. We do not currently\n * require the implementation of a visitor for Comments as they are only collected at\n * the top-level of the R3 AST, and only if `Render3ParseOptions['collectCommentNodes']`\n * is true.\n */\nexport class Comment implements Node {\n constructor(public value: string, public sourceSpan: ParseSourceSpan) {}\n visit(_visitor: Visitor): Result {\n throw new Error('visit() not implemented for Comment');\n }\n}\n\nexport class Text implements Node {\n constructor(public value: string, public sourceSpan: ParseSourceSpan) {}\n visit(visitor: Visitor): Result {\n return visitor.visitText(this);\n }\n}\n\nexport class BoundText implements Node {\n constructor(public value: AST, public sourceSpan: ParseSourceSpan, public i18n?: I18nMeta) {}\n visit(visitor: Visitor): Result {\n return visitor.visitBoundText(this);\n }\n}\n\n/**\n * Represents a text attribute in the template.\n *\n * `valueSpan` may not be present in cases where there is no value `
`.\n * `keySpan` may also not be present for synthetic attributes from ICU expansions.\n */\nexport class TextAttribute implements Node {\n constructor(\n public name: string, public value: string, public sourceSpan: ParseSourceSpan,\n readonly keySpan: ParseSourceSpan|undefined, public valueSpan?: ParseSourceSpan,\n public i18n?: I18nMeta) {}\n visit(visitor: Visitor): Result {\n return visitor.visitTextAttribute(this);\n }\n}\n\nexport class BoundAttribute implements Node {\n constructor(\n public name: string, public type: BindingType, public securityContext: SecurityContext,\n public value: AST, public unit: string|null, public sourceSpan: ParseSourceSpan,\n readonly keySpan: ParseSourceSpan, public valueSpan: ParseSourceSpan|undefined,\n public i18n: I18nMeta|undefined) {}\n\n static fromBoundElementProperty(prop: BoundElementProperty, i18n?: I18nMeta): BoundAttribute {\n if (prop.keySpan === undefined) {\n throw new Error(\n `Unexpected state: keySpan must be defined for bound attributes but was not for ${\n prop.name}: ${prop.sourceSpan}`);\n }\n return new BoundAttribute(\n prop.name, prop.type, prop.securityContext, prop.value, prop.unit, prop.sourceSpan,\n prop.keySpan, prop.valueSpan, i18n);\n }\n\n visit(visitor: Visitor): Result {\n return visitor.visitBoundAttribute(this);\n }\n}\n\nexport class BoundEvent implements Node {\n constructor(\n public name: string, public type: ParsedEventType, public handler: AST,\n public target: string|null, public phase: string|null, public sourceSpan: ParseSourceSpan,\n public handlerSpan: ParseSourceSpan, readonly keySpan: ParseSourceSpan) {}\n\n static fromParsedEvent(event: ParsedEvent) {\n const target: string|null = event.type === ParsedEventType.Regular ? event.targetOrPhase : null;\n const phase: string|null =\n event.type === ParsedEventType.Animation ? event.targetOrPhase : null;\n if (event.keySpan === undefined) {\n throw new Error(`Unexpected state: keySpan must be defined for bound event but was not for ${\n event.name}: ${event.sourceSpan}`);\n }\n return new BoundEvent(\n event.name, event.type, event.handler, target, phase, event.sourceSpan, event.handlerSpan,\n event.keySpan);\n }\n\n visit(visitor: Visitor): Result {\n return visitor.visitBoundEvent(this);\n }\n}\n\nexport class Element implements Node {\n constructor(\n public name: string, public attributes: TextAttribute[], public inputs: BoundAttribute[],\n public outputs: BoundEvent[], public children: Node[], public references: Reference[],\n public sourceSpan: ParseSourceSpan, public startSourceSpan: ParseSourceSpan,\n public endSourceSpan: ParseSourceSpan|null, public i18n?: I18nMeta) {}\n visit(visitor: Visitor): Result {\n return visitor.visitElement(this);\n }\n}\n\nexport class Template implements Node {\n constructor(\n // tagName is the name of the container element, if applicable.\n // `null` is a special case for when there is a structural directive on an `ng-template` so\n // the renderer can differentiate between the synthetic template and the one written in the\n // file.\n public tagName: string|null,\n public attributes: TextAttribute[],\n public inputs: BoundAttribute[],\n public outputs: BoundEvent[],\n public templateAttrs: (BoundAttribute|TextAttribute)[],\n public children: Node[],\n public references: Reference[],\n public variables: Variable[],\n public sourceSpan: ParseSourceSpan,\n public startSourceSpan: ParseSourceSpan,\n public endSourceSpan: ParseSourceSpan|null,\n public i18n?: I18nMeta,\n ) {}\n visit(visitor: Visitor): Result {\n return visitor.visitTemplate(this);\n }\n}\n\nexport class Content implements Node {\n readonly name = 'ng-content';\n\n constructor(\n public selector: string, public attributes: TextAttribute[],\n public sourceSpan: ParseSourceSpan, public i18n?: I18nMeta) {}\n visit(visitor: Visitor): Result {\n return visitor.visitContent(this);\n }\n}\n\nexport class Variable implements Node {\n constructor(\n public name: string, public value: string, public sourceSpan: ParseSourceSpan,\n readonly keySpan: ParseSourceSpan, public valueSpan?: ParseSourceSpan) {}\n visit(visitor: Visitor): Result {\n return visitor.visitVariable(this);\n }\n}\n\nexport class Reference implements Node {\n constructor(\n public name: string, public value: string, public sourceSpan: ParseSourceSpan,\n readonly keySpan: ParseSourceSpan, public valueSpan?: ParseSourceSpan) {}\n visit(visitor: Visitor): Result {\n return visitor.visitReference(this);\n }\n}\n\nexport class Icu implements Node {\n constructor(\n public vars: {[name: string]: BoundText},\n public placeholders: {[name: string]: Text|BoundText}, public sourceSpan: ParseSourceSpan,\n public i18n?: I18nMeta) {}\n visit(visitor: Visitor): Result {\n return visitor.visitIcu(this);\n }\n}\n\nexport interface Visitor {\n // Returning a truthy value from `visit()` will prevent `visitAll()` from the call to the typed\n // method and result returned will become the result included in `visitAll()`s result array.\n visit?(node: Node): Result;\n\n visitElement(element: Element): Result;\n visitTemplate(template: Template): Result;\n visitContent(content: Content): Result;\n visitVariable(variable: Variable): Result;\n visitReference(reference: Reference): Result;\n visitTextAttribute(attribute: TextAttribute): Result;\n visitBoundAttribute(attribute: BoundAttribute): Result;\n visitBoundEvent(attribute: BoundEvent): Result;\n visitText(text: Text): Result;\n visitBoundText(text: BoundText): Result;\n visitIcu(icu: Icu): Result;\n}\n\nexport class NullVisitor implements Visitor {\n visitElement(element: Element): void {}\n visitTemplate(template: Template): void {}\n visitContent(content: Content): void {}\n visitVariable(variable: Variable): void {}\n visitReference(reference: Reference): void {}\n visitTextAttribute(attribute: TextAttribute): void {}\n visitBoundAttribute(attribute: BoundAttribute): void {}\n visitBoundEvent(attribute: BoundEvent): void {}\n visitText(text: Text): void {}\n visitBoundText(text: BoundText): void {}\n visitIcu(icu: Icu): void {}\n}\n\nexport class RecursiveVisitor implements Visitor {\n visitElement(element: Element): void {\n visitAll(this, element.attributes);\n visitAll(this, element.inputs);\n visitAll(this, element.outputs);\n visitAll(this, element.children);\n visitAll(this, element.references);\n }\n visitTemplate(template: Template): void {\n visitAll(this, template.attributes);\n visitAll(this, template.inputs);\n visitAll(this, template.outputs);\n visitAll(this, template.children);\n visitAll(this, template.references);\n visitAll(this, template.variables);\n }\n visitContent(content: Content): void {}\n visitVariable(variable: Variable): void {}\n visitReference(reference: Reference): void {}\n visitTextAttribute(attribute: TextAttribute): void {}\n visitBoundAttribute(attribute: BoundAttribute): void {}\n visitBoundEvent(attribute: BoundEvent): void {}\n visitText(text: Text): void {}\n visitBoundText(text: BoundText): void {}\n visitIcu(icu: Icu): void {}\n}\n\nexport class TransformVisitor implements Visitor {\n visitElement(element: Element): Node {\n const newAttributes = transformAll(this, element.attributes);\n const newInputs = transformAll(this, element.inputs);\n const newOutputs = transformAll(this, element.outputs);\n const newChildren = transformAll(this, element.children);\n const newReferences = transformAll(this, element.references);\n if (newAttributes != element.attributes || newInputs != element.inputs ||\n newOutputs != element.outputs || newChildren != element.children ||\n newReferences != element.references) {\n return new Element(\n element.name, newAttributes, newInputs, newOutputs, newChildren, newReferences,\n element.sourceSpan, element.startSourceSpan, element.endSourceSpan);\n }\n return element;\n }\n\n visitTemplate(template: Template): Node {\n const newAttributes = transformAll(this, template.attributes);\n const newInputs = transformAll(this, template.inputs);\n const newOutputs = transformAll(this, template.outputs);\n const newTemplateAttrs = transformAll(this, template.templateAttrs);\n const newChildren = transformAll(this, template.children);\n const newReferences = transformAll(this, template.references);\n const newVariables = transformAll(this, template.variables);\n if (newAttributes != template.attributes || newInputs != template.inputs ||\n newOutputs != template.outputs || newTemplateAttrs != template.templateAttrs ||\n newChildren != template.children || newReferences != template.references ||\n newVariables != template.variables) {\n return new Template(\n template.tagName, newAttributes, newInputs, newOutputs, newTemplateAttrs, newChildren,\n newReferences, newVariables, template.sourceSpan, template.startSourceSpan,\n template.endSourceSpan);\n }\n return template;\n }\n\n visitContent(content: Content): Node {\n return content;\n }\n\n visitVariable(variable: Variable): Node {\n return variable;\n }\n visitReference(reference: Reference): Node {\n return reference;\n }\n visitTextAttribute(attribute: TextAttribute): Node {\n return attribute;\n }\n visitBoundAttribute(attribute: BoundAttribute): Node {\n return attribute;\n }\n visitBoundEvent(attribute: BoundEvent): Node {\n return attribute;\n }\n visitText(text: Text): Node {\n return text;\n }\n visitBoundText(text: BoundText): Node {\n return text;\n }\n visitIcu(icu: Icu): Node {\n return icu;\n }\n}\n\nexport function visitAll(visitor: Visitor, nodes: Node[]): Result[] {\n const result: Result[] = [];\n if (visitor.visit) {\n for (const node of nodes) {\n const newNode = visitor.visit(node) || node.visit(visitor);\n }\n } else {\n for (const node of nodes) {\n const newNode = node.visit(visitor);\n if (newNode) {\n result.push(newNode);\n }\n }\n }\n return result;\n}\n\nexport function transformAll(\n visitor: Visitor, nodes: Result[]): Result[] {\n const result: Result[] = [];\n let changed = false;\n for (const node of nodes) {\n const newNode = node.visit(visitor);\n if (newNode) {\n result.push(newNode as Result);\n }\n changed = changed || newNode != node;\n }\n return changed ? result : nodes;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {ParseSourceSpan} from '../parse_util';\n\n/**\n * Describes the text contents of a placeholder as it appears in an ICU expression, including its\n * source span information.\n */\nexport interface MessagePlaceholder {\n /** The text contents of the placeholder */\n text: string;\n\n /** The source span of the placeholder */\n sourceSpan: ParseSourceSpan;\n}\n\nexport class Message {\n sources: MessageSpan[];\n id: string = this.customId;\n /** The ids to use if there are no custom id and if `i18nLegacyMessageIdFormat` is not empty */\n legacyIds: string[] = [];\n\n messageString = serializeMessage(this.nodes);\n\n /**\n * @param nodes message AST\n * @param placeholders maps placeholder names to static content and their source spans\n * @param placeholderToMessage maps placeholder names to messages (used for nested ICU messages)\n * @param meaning\n * @param description\n * @param customId\n */\n constructor(\n public nodes: Node[], public placeholders: {[phName: string]: MessagePlaceholder},\n public placeholderToMessage: {[phName: string]: Message}, public meaning: string,\n public description: string, public customId: string) {\n if (nodes.length) {\n this.sources = [{\n filePath: nodes[0].sourceSpan.start.file.url,\n startLine: nodes[0].sourceSpan.start.line + 1,\n startCol: nodes[0].sourceSpan.start.col + 1,\n endLine: nodes[nodes.length - 1].sourceSpan.end.line + 1,\n endCol: nodes[0].sourceSpan.start.col + 1\n }];\n } else {\n this.sources = [];\n }\n }\n}\n\n// line and columns indexes are 1 based\nexport interface MessageSpan {\n filePath: string;\n startLine: number;\n startCol: number;\n endLine: number;\n endCol: number;\n}\n\nexport interface Node {\n sourceSpan: ParseSourceSpan;\n visit(visitor: Visitor, context?: any): any;\n}\n\nexport class Text implements Node {\n constructor(public value: string, public sourceSpan: ParseSourceSpan) {}\n\n visit(visitor: Visitor, context?: any): any {\n return visitor.visitText(this, context);\n }\n}\n\n// TODO(vicb): do we really need this node (vs an array) ?\nexport class Container implements Node {\n constructor(public children: Node[], public sourceSpan: ParseSourceSpan) {}\n\n visit(visitor: Visitor, context?: any): any {\n return visitor.visitContainer(this, context);\n }\n}\n\nexport class Icu implements Node {\n // TODO(issue/24571): remove '!'.\n public expressionPlaceholder!: string;\n constructor(\n public expression: string, public type: string, public cases: {[k: string]: Node},\n public sourceSpan: ParseSourceSpan) {}\n\n visit(visitor: Visitor, context?: any): any {\n return visitor.visitIcu(this, context);\n }\n}\n\nexport class TagPlaceholder implements Node {\n constructor(\n public tag: string, public attrs: {[k: string]: string}, public startName: string,\n public closeName: string, public children: Node[], public isVoid: boolean,\n // TODO sourceSpan should cover all (we need a startSourceSpan and endSourceSpan)\n public sourceSpan: ParseSourceSpan, public startSourceSpan: ParseSourceSpan|null,\n public endSourceSpan: ParseSourceSpan|null) {}\n\n visit(visitor: Visitor, context?: any): any {\n return visitor.visitTagPlaceholder(this, context);\n }\n}\n\nexport class Placeholder implements Node {\n constructor(public value: string, public name: string, public sourceSpan: ParseSourceSpan) {}\n\n visit(visitor: Visitor, context?: any): any {\n return visitor.visitPlaceholder(this, context);\n }\n}\n\nexport class IcuPlaceholder implements Node {\n /** Used to capture a message computed from a previous processing pass (see `setI18nRefs()`). */\n previousMessage?: Message;\n constructor(public value: Icu, public name: string, public sourceSpan: ParseSourceSpan) {}\n\n visit(visitor: Visitor, context?: any): any {\n return visitor.visitIcuPlaceholder(this, context);\n }\n}\n\n/**\n * Each HTML node that is affect by an i18n tag will also have an `i18n` property that is of type\n * `I18nMeta`.\n * This information is either a `Message`, which indicates it is the root of an i18n message, or a\n * `Node`, which indicates is it part of a containing `Message`.\n */\nexport type I18nMeta = Message|Node;\n\nexport interface Visitor {\n visitText(text: Text, context?: any): any;\n visitContainer(container: Container, context?: any): any;\n visitIcu(icu: Icu, context?: any): any;\n visitTagPlaceholder(ph: TagPlaceholder, context?: any): any;\n visitPlaceholder(ph: Placeholder, context?: any): any;\n visitIcuPlaceholder(ph: IcuPlaceholder, context?: any): any;\n}\n\n// Clone the AST\nexport class CloneVisitor implements Visitor {\n visitText(text: Text, context?: any): Text {\n return new Text(text.value, text.sourceSpan);\n }\n\n visitContainer(container: Container, context?: any): Container {\n const children = container.children.map(n => n.visit(this, context));\n return new Container(children, container.sourceSpan);\n }\n\n visitIcu(icu: Icu, context?: any): Icu {\n const cases: {[k: string]: Node} = {};\n Object.keys(icu.cases).forEach(key => cases[key] = icu.cases[key].visit(this, context));\n const msg = new Icu(icu.expression, icu.type, cases, icu.sourceSpan);\n msg.expressionPlaceholder = icu.expressionPlaceholder;\n return msg;\n }\n\n visitTagPlaceholder(ph: TagPlaceholder, context?: any): TagPlaceholder {\n const children = ph.children.map(n => n.visit(this, context));\n return new TagPlaceholder(\n ph.tag, ph.attrs, ph.startName, ph.closeName, children, ph.isVoid, ph.sourceSpan,\n ph.startSourceSpan, ph.endSourceSpan);\n }\n\n visitPlaceholder(ph: Placeholder, context?: any): Placeholder {\n return new Placeholder(ph.value, ph.name, ph.sourceSpan);\n }\n\n visitIcuPlaceholder(ph: IcuPlaceholder, context?: any): IcuPlaceholder {\n return new IcuPlaceholder(ph.value, ph.name, ph.sourceSpan);\n }\n}\n\n// Visit all the nodes recursively\nexport class RecurseVisitor implements Visitor {\n visitText(text: Text, context?: any): any {}\n\n visitContainer(container: Container, context?: any): any {\n container.children.forEach(child => child.visit(this));\n }\n\n visitIcu(icu: Icu, context?: any): any {\n Object.keys(icu.cases).forEach(k => {\n icu.cases[k].visit(this);\n });\n }\n\n visitTagPlaceholder(ph: TagPlaceholder, context?: any): any {\n ph.children.forEach(child => child.visit(this));\n }\n\n visitPlaceholder(ph: Placeholder, context?: any): any {}\n\n visitIcuPlaceholder(ph: IcuPlaceholder, context?: any): any {}\n}\n\n\n/**\n * Serialize the message to the Localize backtick string format that would appear in compiled code.\n */\nfunction serializeMessage(messageNodes: Node[]): string {\n const visitor = new LocalizeMessageStringVisitor();\n const str = messageNodes.map(n => n.visit(visitor)).join('');\n return str;\n}\n\nclass LocalizeMessageStringVisitor implements Visitor {\n visitText(text: Text): any {\n return text.value;\n }\n\n visitContainer(container: Container): any {\n return container.children.map(child => child.visit(this)).join('');\n }\n\n visitIcu(icu: Icu): any {\n const strCases =\n Object.keys(icu.cases).map((k: string) => `${k} {${icu.cases[k].visit(this)}}`);\n return `{${icu.expressionPlaceholder}, ${icu.type}, ${strCases.join(' ')}}`;\n }\n\n visitTagPlaceholder(ph: TagPlaceholder): any {\n const children = ph.children.map(child => child.visit(this)).join('');\n return `{$${ph.startName}}${children}{$${ph.closeName}}`;\n }\n\n visitPlaceholder(ph: Placeholder): any {\n return `{$${ph.name}}`;\n }\n\n visitIcuPlaceholder(ph: IcuPlaceholder): any {\n return `{$${ph.name}}`;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport interface IVisitor {\n visitTag(tag: Tag): any;\n visitText(text: Text): any;\n visitDeclaration(decl: Declaration): any;\n visitDoctype(doctype: Doctype): any;\n}\n\nclass _Visitor implements IVisitor {\n visitTag(tag: Tag): string {\n const strAttrs = this._serializeAttributes(tag.attrs);\n\n if (tag.children.length == 0) {\n return `<${tag.name}${strAttrs}/>`;\n }\n\n const strChildren = tag.children.map(node => node.visit(this));\n return `<${tag.name}${strAttrs}>${strChildren.join('')}`;\n }\n\n visitText(text: Text): string {\n return text.value;\n }\n\n visitDeclaration(decl: Declaration): string {\n return ``;\n }\n\n private _serializeAttributes(attrs: {[k: string]: string}) {\n const strAttrs = Object.keys(attrs).map((name: string) => `${name}=\"${attrs[name]}\"`).join(' ');\n return strAttrs.length > 0 ? ' ' + strAttrs : '';\n }\n\n visitDoctype(doctype: Doctype): any {\n return ``;\n }\n}\n\nconst _visitor = new _Visitor();\n\nexport function serialize(nodes: Node[]): string {\n return nodes.map((node: Node): string => node.visit(_visitor)).join('');\n}\n\nexport interface Node {\n visit(visitor: IVisitor): any;\n}\n\nexport class Declaration implements Node {\n public attrs: {[k: string]: string} = {};\n\n constructor(unescapedAttrs: {[k: string]: string}) {\n Object.keys(unescapedAttrs).forEach((k: string) => {\n this.attrs[k] = escapeXml(unescapedAttrs[k]);\n });\n }\n\n visit(visitor: IVisitor): any {\n return visitor.visitDeclaration(this);\n }\n}\n\nexport class Doctype implements Node {\n constructor(public rootTag: string, public dtd: string) {}\n\n visit(visitor: IVisitor): any {\n return visitor.visitDoctype(this);\n }\n}\n\nexport class Tag implements Node {\n public attrs: {[k: string]: string} = {};\n\n constructor(\n public name: string, unescapedAttrs: {[k: string]: string} = {},\n public children: Node[] = []) {\n Object.keys(unescapedAttrs).forEach((k: string) => {\n this.attrs[k] = escapeXml(unescapedAttrs[k]);\n });\n }\n\n visit(visitor: IVisitor): any {\n return visitor.visitTag(this);\n }\n}\n\nexport class Text implements Node {\n value: string;\n constructor(unescapedValue: string) {\n this.value = escapeXml(unescapedValue);\n }\n\n visit(visitor: IVisitor): any {\n return visitor.visitText(this);\n }\n}\n\nexport class CR extends Text {\n constructor(ws: number = 0) {\n super(`\\n${new Array(ws + 1).join(' ')}`);\n }\n}\n\nconst _ESCAPED_CHARS: [RegExp, string][] = [\n [/&/g, '&'],\n [/\"/g, '"'],\n [/'/g, '''],\n [//g, '>'],\n];\n\n// Escape `_ESCAPED_CHARS` characters in the given text with encoded entities\nexport function escapeXml(text: string): string {\n return _ESCAPED_CHARS.reduce(\n (text: string, entry: [RegExp, string]) => text.replace(entry[0], entry[1]), text);\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {decimalDigest} from '../digest';\nimport * as i18n from '../i18n_ast';\n\nimport {PlaceholderMapper, Serializer, SimplePlaceholderMapper} from './serializer';\nimport * as xml from './xml_helper';\n\nconst _MESSAGES_TAG = 'messagebundle';\nconst _MESSAGE_TAG = 'msg';\nconst _PLACEHOLDER_TAG = 'ph';\nconst _EXAMPLE_TAG = 'ex';\nconst _SOURCE_TAG = 'source';\n\nconst _DOCTYPE = `\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n`;\n\nexport class Xmb extends Serializer {\n override write(messages: i18n.Message[], locale: string|null): string {\n const exampleVisitor = new ExampleVisitor();\n const visitor = new _Visitor();\n let rootNode = new xml.Tag(_MESSAGES_TAG);\n\n messages.forEach(message => {\n const attrs: {[k: string]: string} = {id: message.id};\n\n if (message.description) {\n attrs['desc'] = message.description;\n }\n\n if (message.meaning) {\n attrs['meaning'] = message.meaning;\n }\n\n let sourceTags: xml.Tag[] = [];\n message.sources.forEach((source: i18n.MessageSpan) => {\n sourceTags.push(new xml.Tag(\n _SOURCE_TAG, {},\n [new xml.Text(`${source.filePath}:${source.startLine}${\n source.endLine !== source.startLine ? ',' + source.endLine : ''}`)]));\n });\n\n rootNode.children.push(\n new xml.CR(2),\n new xml.Tag(_MESSAGE_TAG, attrs, [...sourceTags, ...visitor.serialize(message.nodes)]));\n });\n\n rootNode.children.push(new xml.CR());\n\n return xml.serialize([\n new xml.Declaration({version: '1.0', encoding: 'UTF-8'}),\n new xml.CR(),\n new xml.Doctype(_MESSAGES_TAG, _DOCTYPE),\n new xml.CR(),\n exampleVisitor.addDefaultExamples(rootNode),\n new xml.CR(),\n ]);\n }\n\n override load(content: string, url: string):\n {locale: string, i18nNodesByMsgId: {[msgId: string]: i18n.Node[]}} {\n throw new Error('Unsupported');\n }\n\n override digest(message: i18n.Message): string {\n return digest(message);\n }\n\n\n override createNameMapper(message: i18n.Message): PlaceholderMapper {\n return new SimplePlaceholderMapper(message, toPublicName);\n }\n}\n\nclass _Visitor implements i18n.Visitor {\n visitText(text: i18n.Text, context?: any): xml.Node[] {\n return [new xml.Text(text.value)];\n }\n\n visitContainer(container: i18n.Container, context: any): xml.Node[] {\n const nodes: xml.Node[] = [];\n container.children.forEach((node: i18n.Node) => nodes.push(...node.visit(this)));\n return nodes;\n }\n\n visitIcu(icu: i18n.Icu, context?: any): xml.Node[] {\n const nodes = [new xml.Text(`{${icu.expressionPlaceholder}, ${icu.type}, `)];\n\n Object.keys(icu.cases).forEach((c: string) => {\n nodes.push(new xml.Text(`${c} {`), ...icu.cases[c].visit(this), new xml.Text(`} `));\n });\n\n nodes.push(new xml.Text(`}`));\n\n return nodes;\n }\n\n visitTagPlaceholder(ph: i18n.TagPlaceholder, context?: any): xml.Node[] {\n const startTagAsText = new xml.Text(`<${ph.tag}>`);\n const startEx = new xml.Tag(_EXAMPLE_TAG, {}, [startTagAsText]);\n // TC requires PH to have a non empty EX, and uses the text node to show the \"original\" value.\n const startTagPh =\n new xml.Tag(_PLACEHOLDER_TAG, {name: ph.startName}, [startEx, startTagAsText]);\n if (ph.isVoid) {\n // void tags have no children nor closing tags\n return [startTagPh];\n }\n\n const closeTagAsText = new xml.Text(``);\n const closeEx = new xml.Tag(_EXAMPLE_TAG, {}, [closeTagAsText]);\n // TC requires PH to have a non empty EX, and uses the text node to show the \"original\" value.\n const closeTagPh =\n new xml.Tag(_PLACEHOLDER_TAG, {name: ph.closeName}, [closeEx, closeTagAsText]);\n\n return [startTagPh, ...this.serialize(ph.children), closeTagPh];\n }\n\n visitPlaceholder(ph: i18n.Placeholder, context?: any): xml.Node[] {\n const interpolationAsText = new xml.Text(`{{${ph.value}}}`);\n // Example tag needs to be not-empty for TC.\n const exTag = new xml.Tag(_EXAMPLE_TAG, {}, [interpolationAsText]);\n return [\n // TC requires PH to have a non empty EX, and uses the text node to show the \"original\" value.\n new xml.Tag(_PLACEHOLDER_TAG, {name: ph.name}, [exTag, interpolationAsText])\n ];\n }\n\n visitIcuPlaceholder(ph: i18n.IcuPlaceholder, context?: any): xml.Node[] {\n const icuExpression = ph.value.expression;\n const icuType = ph.value.type;\n const icuCases = Object.keys(ph.value.cases).map((value: string) => value + ' {...}').join(' ');\n const icuAsText = new xml.Text(`{${icuExpression}, ${icuType}, ${icuCases}}`);\n const exTag = new xml.Tag(_EXAMPLE_TAG, {}, [icuAsText]);\n return [\n // TC requires PH to have a non empty EX, and uses the text node to show the \"original\" value.\n new xml.Tag(_PLACEHOLDER_TAG, {name: ph.name}, [exTag, icuAsText])\n ];\n }\n\n serialize(nodes: i18n.Node[]): xml.Node[] {\n return [].concat(...nodes.map(node => node.visit(this)));\n }\n}\n\nexport function digest(message: i18n.Message): string {\n return decimalDigest(message);\n}\n\n// TC requires at least one non-empty example on placeholders\nclass ExampleVisitor implements xml.IVisitor {\n addDefaultExamples(node: xml.Node): xml.Node {\n node.visit(this);\n return node;\n }\n\n visitTag(tag: xml.Tag): void {\n if (tag.name === _PLACEHOLDER_TAG) {\n if (!tag.children || tag.children.length == 0) {\n const exText = new xml.Text(tag.attrs['name'] || '...');\n tag.children = [new xml.Tag(_EXAMPLE_TAG, {}, [exText])];\n }\n } else if (tag.children) {\n tag.children.forEach(node => node.visit(this));\n }\n }\n\n visitText(text: xml.Text): void {}\n visitDeclaration(decl: xml.Declaration): void {}\n visitDoctype(doctype: xml.Doctype): void {}\n}\n\n// XMB/XTB placeholders can only contain A-Z, 0-9 and _\nexport function toPublicName(internalName: string): string {\n return internalName.toUpperCase().replace(/[^A-Z0-9_]/g, '_');\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport * as i18n from '../../../i18n/i18n_ast';\nimport {toPublicName} from '../../../i18n/serializers/xmb';\nimport * as html from '../../../ml_parser/ast';\nimport * as o from '../../../output/output_ast';\nimport * as t from '../../r3_ast';\n\n/* Closure variables holding messages must be named `MSG_[A-Z0-9]+` */\nconst CLOSURE_TRANSLATION_VAR_PREFIX = 'MSG_';\n\n/**\n * Prefix for non-`goog.getMsg` i18n-related vars.\n * Note: the prefix uses lowercase characters intentionally due to a Closure behavior that\n * considers variables like `I18N_0` as constants and throws an error when their value changes.\n */\nexport const TRANSLATION_VAR_PREFIX = 'i18n_';\n\n/** Name of the i18n attributes **/\nexport const I18N_ATTR = 'i18n';\nexport const I18N_ATTR_PREFIX = 'i18n-';\n\n/** Prefix of var expressions used in ICUs */\nexport const I18N_ICU_VAR_PREFIX = 'VAR_';\n\n/** Prefix of ICU expressions for post processing */\nexport const I18N_ICU_MAPPING_PREFIX = 'I18N_EXP_';\n\n/** Placeholder wrapper for i18n expressions **/\nexport const I18N_PLACEHOLDER_SYMBOL = '�';\n\nexport function isI18nAttribute(name: string): boolean {\n return name === I18N_ATTR || name.startsWith(I18N_ATTR_PREFIX);\n}\n\nexport function isI18nRootNode(meta?: i18n.I18nMeta): meta is i18n.Message {\n return meta instanceof i18n.Message;\n}\n\nexport function isSingleI18nIcu(meta?: i18n.I18nMeta): boolean {\n return isI18nRootNode(meta) && meta.nodes.length === 1 && meta.nodes[0] instanceof i18n.Icu;\n}\n\nexport function hasI18nMeta(node: t.Node&{i18n?: i18n.I18nMeta}): boolean {\n return !!node.i18n;\n}\n\nexport function hasI18nAttrs(element: html.Element): boolean {\n return element.attrs.some((attr: html.Attribute) => isI18nAttribute(attr.name));\n}\n\nexport function icuFromI18nMessage(message: i18n.Message) {\n return message.nodes[0] as i18n.IcuPlaceholder;\n}\n\nexport function wrapI18nPlaceholder(content: string|number, contextId: number = 0): string {\n const blockId = contextId > 0 ? `:${contextId}` : '';\n return `${I18N_PLACEHOLDER_SYMBOL}${content}${blockId}${I18N_PLACEHOLDER_SYMBOL}`;\n}\n\nexport function assembleI18nBoundString(\n strings: string[], bindingStartIndex: number = 0, contextId: number = 0): string {\n if (!strings.length) return '';\n let acc = '';\n const lastIdx = strings.length - 1;\n for (let i = 0; i < lastIdx; i++) {\n acc += `${strings[i]}${wrapI18nPlaceholder(bindingStartIndex + i, contextId)}`;\n }\n acc += strings[lastIdx];\n return acc;\n}\n\nexport function getSeqNumberGenerator(startsAt: number = 0): () => number {\n let current = startsAt;\n return () => current++;\n}\n\nexport function placeholdersToParams(placeholders: Map):\n {[name: string]: o.LiteralExpr} {\n const params: {[name: string]: o.LiteralExpr} = {};\n placeholders.forEach((values: string[], key: string) => {\n params[key] = o.literal(values.length > 1 ? `[${values.join('|')}]` : values[0]);\n });\n return params;\n}\n\nexport function updatePlaceholderMap(map: Map, name: string, ...values: any[]) {\n const current = map.get(name) || [];\n current.push(...values);\n map.set(name, current);\n}\n\nexport function assembleBoundTextPlaceholders(\n meta: i18n.I18nMeta, bindingStartIndex: number = 0, contextId: number = 0): Map {\n const startIdx = bindingStartIndex;\n const placeholders = new Map();\n const node =\n meta instanceof i18n.Message ? meta.nodes.find(node => node instanceof i18n.Container) : meta;\n if (node) {\n (node as i18n.Container)\n .children\n .filter((child: i18n.Node): child is i18n.Placeholder => child instanceof i18n.Placeholder)\n .forEach((child: i18n.Placeholder, idx: number) => {\n const content = wrapI18nPlaceholder(startIdx + idx, contextId);\n updatePlaceholderMap(placeholders, child.name, content);\n });\n }\n return placeholders;\n}\n\n/**\n * Format the placeholder names in a map of placeholders to expressions.\n *\n * The placeholder names are converted from \"internal\" format (e.g. `START_TAG_DIV_1`) to \"external\"\n * format (e.g. `startTagDiv_1`).\n *\n * @param params A map of placeholder names to expressions.\n * @param useCamelCase whether to camelCase the placeholder name when formatting.\n * @returns A new map of formatted placeholder names to expressions.\n */\nexport function formatI18nPlaceholderNamesInMap(\n params: {[name: string]: o.Expression} = {}, useCamelCase: boolean) {\n const _params: {[key: string]: o.Expression} = {};\n if (params && Object.keys(params).length) {\n Object.keys(params).forEach(\n key => _params[formatI18nPlaceholderName(key, useCamelCase)] = params[key]);\n }\n return _params;\n}\n\n/**\n * Converts internal placeholder names to public-facing format\n * (for example to use in goog.getMsg call).\n * Example: `START_TAG_DIV_1` is converted to `startTagDiv_1`.\n *\n * @param name The placeholder name that should be formatted\n * @returns Formatted placeholder name\n */\nexport function formatI18nPlaceholderName(name: string, useCamelCase: boolean = true): string {\n const publicName = toPublicName(name);\n if (!useCamelCase) {\n return publicName;\n }\n const chunks = publicName.split('_');\n if (chunks.length === 1) {\n // if no \"_\" found - just lowercase the value\n return name.toLowerCase();\n }\n let postfix;\n // eject last element if it's a number\n if (/^\\d+$/.test(chunks[chunks.length - 1])) {\n postfix = chunks.pop();\n }\n let raw = chunks.shift()!.toLowerCase();\n if (chunks.length) {\n raw += chunks.map(c => c.charAt(0).toUpperCase() + c.slice(1).toLowerCase()).join('');\n }\n return postfix ? `${raw}_${postfix}` : raw;\n}\n\n/**\n * Generates a prefix for translation const name.\n *\n * @param extra Additional local prefix that should be injected into translation var name\n * @returns Complete translation const prefix\n */\nexport function getTranslationConstPrefix(extra: string): string {\n return `${CLOSURE_TRANSLATION_VAR_PREFIX}${extra}`.toUpperCase();\n}\n\n/**\n * Generate AST to declare a variable. E.g. `var I18N_1;`.\n * @param variable the name of the variable to declare.\n */\nexport function declareI18nVariable(variable: o.ReadVarExpr): o.Statement {\n return new o.DeclareVarStmt(\n variable.name!, undefined, o.INFERRED_TYPE, undefined, variable.sourceSpan);\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {ConstantPool} from '../../constant_pool';\nimport {Interpolation} from '../../expression_parser/ast';\nimport * as o from '../../output/output_ast';\nimport {ParseSourceSpan} from '../../parse_util';\nimport {splitAtColon} from '../../util';\nimport * as t from '../r3_ast';\nimport {Identifiers as R3} from '../r3_identifiers';\nimport {ForwardRefHandling} from '../util';\n\nimport {R3QueryMetadata} from './api';\nimport {isI18nAttribute} from './i18n/util';\n\n\n/**\n * Checks whether an object key contains potentially unsafe chars, thus the key should be wrapped in\n * quotes. Note: we do not wrap all keys into quotes, as it may have impact on minification and may\n * bot work in some cases when object keys are mangled by minifier.\n *\n * TODO(FW-1136): this is a temporary solution, we need to come up with a better way of working with\n * inputs that contain potentially unsafe chars.\n */\nconst UNSAFE_OBJECT_KEY_NAME_REGEXP = /[-.]/;\n\n/** Name of the temporary to use during data binding */\nexport const TEMPORARY_NAME = '_t';\n\n/** Name of the context parameter passed into a template function */\nexport const CONTEXT_NAME = 'ctx';\n\n/** Name of the RenderFlag passed into a template function */\nexport const RENDER_FLAGS = 'rf';\n\n/** The prefix reference variables */\nexport const REFERENCE_PREFIX = '_r';\n\n/** The name of the implicit context reference */\nexport const IMPLICIT_REFERENCE = '$implicit';\n\n/** Non bindable attribute name **/\nexport const NON_BINDABLE_ATTR = 'ngNonBindable';\n\n/** Name for the variable keeping track of the context returned by `ɵɵrestoreView`. */\nexport const RESTORED_VIEW_CONTEXT_NAME = 'restoredCtx';\n\n/**\n * Maximum length of a single instruction chain. Because our output AST uses recursion, we're\n * limited in how many expressions we can nest before we reach the call stack limit. This\n * length is set very conservatively in order to reduce the chance of problems.\n */\nconst MAX_CHAIN_LENGTH = 500;\n\n/** Instructions that support chaining. */\nconst CHAINABLE_INSTRUCTIONS = new Set([\n R3.element,\n R3.elementStart,\n R3.elementEnd,\n R3.elementContainer,\n R3.elementContainerStart,\n R3.elementContainerEnd,\n R3.i18nExp,\n R3.listener,\n R3.classProp,\n R3.syntheticHostListener,\n R3.hostProperty,\n R3.syntheticHostProperty,\n R3.property,\n R3.propertyInterpolate1,\n R3.propertyInterpolate2,\n R3.propertyInterpolate3,\n R3.propertyInterpolate4,\n R3.propertyInterpolate5,\n R3.propertyInterpolate6,\n R3.propertyInterpolate7,\n R3.propertyInterpolate8,\n R3.propertyInterpolateV,\n R3.attribute,\n R3.attributeInterpolate1,\n R3.attributeInterpolate2,\n R3.attributeInterpolate3,\n R3.attributeInterpolate4,\n R3.attributeInterpolate5,\n R3.attributeInterpolate6,\n R3.attributeInterpolate7,\n R3.attributeInterpolate8,\n R3.attributeInterpolateV,\n R3.styleProp,\n R3.stylePropInterpolate1,\n R3.stylePropInterpolate2,\n R3.stylePropInterpolate3,\n R3.stylePropInterpolate4,\n R3.stylePropInterpolate5,\n R3.stylePropInterpolate6,\n R3.stylePropInterpolate7,\n R3.stylePropInterpolate8,\n R3.stylePropInterpolateV,\n R3.textInterpolate,\n R3.textInterpolate1,\n R3.textInterpolate2,\n R3.textInterpolate3,\n R3.textInterpolate4,\n R3.textInterpolate5,\n R3.textInterpolate6,\n R3.textInterpolate7,\n R3.textInterpolate8,\n R3.textInterpolateV,\n]);\n\n/**\n * Possible types that can be used to generate the parameters of an instruction call.\n * If the parameters are a function, the function will be invoked at the time the instruction\n * is generated.\n */\nexport type InstructionParams = (o.Expression|o.Expression[])|(() => (o.Expression|o.Expression[]));\n\n/** Necessary information to generate a call to an instruction function. */\nexport interface Instruction {\n span: ParseSourceSpan|null;\n reference: o.ExternalReference;\n paramsOrFn?: InstructionParams;\n}\n\n/** Generates a call to a single instruction. */\nexport function invokeInstruction(\n span: ParseSourceSpan|null, reference: o.ExternalReference,\n params: o.Expression[]): o.Expression {\n return o.importExpr(reference, null, span).callFn(params, span);\n}\n\n/**\n * Creates an allocator for a temporary variable.\n *\n * A variable declaration is added to the statements the first time the allocator is invoked.\n */\nexport function temporaryAllocator(statements: o.Statement[], name: string): () => o.ReadVarExpr {\n let temp: o.ReadVarExpr|null = null;\n return () => {\n if (!temp) {\n statements.push(new o.DeclareVarStmt(TEMPORARY_NAME, undefined, o.DYNAMIC_TYPE));\n temp = o.variable(name);\n }\n return temp;\n };\n}\n\n\nexport function invalid(this: t.Visitor, arg: o.Expression|o.Statement|t.Node): never {\n throw new Error(\n `Invalid state: Visitor ${this.constructor.name} doesn't handle ${arg.constructor.name}`);\n}\n\nexport function asLiteral(value: any): o.Expression {\n if (Array.isArray(value)) {\n return o.literalArr(value.map(asLiteral));\n }\n return o.literal(value, o.INFERRED_TYPE);\n}\n\nexport function conditionallyCreateMapObjectLiteral(\n keys: {[key: string]: string|string[]}, keepDeclared?: boolean): o.Expression|null {\n if (Object.getOwnPropertyNames(keys).length > 0) {\n return mapToExpression(keys, keepDeclared);\n }\n return null;\n}\n\nfunction mapToExpression(\n map: {[key: string]: string|string[]}, keepDeclared?: boolean): o.Expression {\n return o.literalMap(Object.getOwnPropertyNames(map).map(key => {\n // canonical syntax: `dirProp: publicProp`\n const value = map[key];\n let declaredName: string;\n let publicName: string;\n let minifiedName: string;\n let needsDeclaredName: boolean;\n if (Array.isArray(value)) {\n [publicName, declaredName] = value;\n minifiedName = key;\n needsDeclaredName = publicName !== declaredName;\n } else {\n minifiedName = declaredName = key;\n publicName = value;\n needsDeclaredName = false;\n }\n return {\n key: minifiedName,\n // put quotes around keys that contain potentially unsafe characters\n quoted: UNSAFE_OBJECT_KEY_NAME_REGEXP.test(minifiedName),\n value: (keepDeclared && needsDeclaredName) ?\n o.literalArr([asLiteral(publicName), asLiteral(declaredName)]) :\n asLiteral(publicName)\n };\n }));\n}\n\n/**\n * Remove trailing null nodes as they are implied.\n */\nexport function trimTrailingNulls(parameters: o.Expression[]): o.Expression[] {\n while (o.isNull(parameters[parameters.length - 1])) {\n parameters.pop();\n }\n return parameters;\n}\n\nexport function getQueryPredicate(\n query: R3QueryMetadata, constantPool: ConstantPool): o.Expression {\n if (Array.isArray(query.predicate)) {\n let predicate: o.Expression[] = [];\n query.predicate.forEach((selector: string): void => {\n // Each item in predicates array may contain strings with comma-separated refs\n // (for ex. 'ref, ref1, ..., refN'), thus we extract individual refs and store them\n // as separate array entities\n const selectors = selector.split(',').map(token => o.literal(token.trim()));\n predicate.push(...selectors);\n });\n return constantPool.getConstLiteral(o.literalArr(predicate), true);\n } else {\n // The original predicate may have been wrapped in a `forwardRef()` call.\n switch (query.predicate.forwardRef) {\n case ForwardRefHandling.None:\n case ForwardRefHandling.Unwrapped:\n return query.predicate.expression;\n case ForwardRefHandling.Wrapped:\n return o.importExpr(R3.resolveForwardRef).callFn([query.predicate.expression]);\n }\n }\n}\n\n/**\n * A representation for an object literal used during codegen of definition objects. The generic\n * type `T` allows to reference a documented type of the generated structure, such that the\n * property names that are set can be resolved to their documented declaration.\n */\nexport class DefinitionMap {\n values: {key: string, quoted: boolean, value: o.Expression}[] = [];\n\n set(key: keyof T, value: o.Expression|null): void {\n if (value) {\n this.values.push({key: key as string, value, quoted: false});\n }\n }\n\n toLiteralMap(): o.LiteralMapExpr {\n return o.literalMap(this.values);\n }\n}\n\n/**\n * Extract a map of properties to values for a given element or template node, which can be used\n * by the directive matching machinery.\n *\n * @param elOrTpl the element or template in question\n * @return an object set up for directive matching. For attributes on the element/template, this\n * object maps a property name to its (static) value. For any bindings, this map simply maps the\n * property name to an empty string.\n */\nexport function getAttrsForDirectiveMatching(elOrTpl: t.Element|\n t.Template): {[name: string]: string} {\n const attributesMap: {[name: string]: string} = {};\n\n\n if (elOrTpl instanceof t.Template && elOrTpl.tagName !== 'ng-template') {\n elOrTpl.templateAttrs.forEach(a => attributesMap[a.name] = '');\n } else {\n elOrTpl.attributes.forEach(a => {\n if (!isI18nAttribute(a.name)) {\n attributesMap[a.name] = a.value;\n }\n });\n\n elOrTpl.inputs.forEach(i => {\n attributesMap[i.name] = '';\n });\n elOrTpl.outputs.forEach(o => {\n attributesMap[o.name] = '';\n });\n }\n\n return attributesMap;\n}\n\n/**\n * Gets the number of arguments expected to be passed to a generated instruction in the case of\n * interpolation instructions.\n * @param interpolation An interpolation ast\n */\nexport function getInterpolationArgsLength(interpolation: Interpolation) {\n const {expressions, strings} = interpolation;\n if (expressions.length === 1 && strings.length === 2 && strings[0] === '' && strings[1] === '') {\n // If the interpolation has one interpolated value, but the prefix and suffix are both empty\n // strings, we only pass one argument, to a special instruction like `propertyInterpolate` or\n // `textInterpolate`.\n return 1;\n } else {\n return expressions.length + strings.length;\n }\n}\n\n/**\n * Generates the final instruction call statements based on the passed in configuration.\n * Will try to chain instructions as much as possible, if chaining is supported.\n */\nexport function getInstructionStatements(instructions: Instruction[]): o.Statement[] {\n const statements: o.Statement[] = [];\n let pendingExpression: o.Expression|null = null;\n let pendingExpressionType: o.ExternalReference|null = null;\n let chainLength = 0;\n\n for (const current of instructions) {\n const resolvedParams =\n (typeof current.paramsOrFn === 'function' ? current.paramsOrFn() : current.paramsOrFn) ??\n [];\n const params = Array.isArray(resolvedParams) ? resolvedParams : [resolvedParams];\n\n // If the current instruction is the same as the previous one\n // and it can be chained, add another call to the chain.\n if (chainLength < MAX_CHAIN_LENGTH && pendingExpressionType === current.reference &&\n CHAINABLE_INSTRUCTIONS.has(pendingExpressionType)) {\n // We'll always have a pending expression when there's a pending expression type.\n pendingExpression = pendingExpression!.callFn(params, pendingExpression!.sourceSpan);\n chainLength++;\n } else {\n if (pendingExpression !== null) {\n statements.push(pendingExpression.toStmt());\n }\n pendingExpression = invokeInstruction(current.span, current.reference, params);\n pendingExpressionType = current.reference;\n chainLength = 0;\n }\n }\n\n // Since the current instruction adds the previous one to the statements,\n // we may be left with the final one at the end that is still pending.\n if (pendingExpression !== null) {\n statements.push(pendingExpression.toStmt());\n }\n\n return statements;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport * as o from './output/output_ast';\nimport {compileFactoryFunction, FactoryTarget, R3DependencyMetadata, R3FactoryDelegateType, R3FactoryMetadata} from './render3/r3_factory';\nimport {Identifiers} from './render3/r3_identifiers';\nimport {convertFromMaybeForwardRefExpression, ForwardRefHandling, generateForwardRef, MaybeForwardRefExpression, R3CompiledExpression, R3Reference, typeWithParameters} from './render3/util';\nimport {DefinitionMap} from './render3/view/util';\n\nexport interface R3InjectableMetadata {\n name: string;\n type: R3Reference;\n internalType: o.Expression;\n typeArgumentCount: number;\n providedIn: MaybeForwardRefExpression;\n useClass?: MaybeForwardRefExpression;\n useFactory?: o.Expression;\n useExisting?: MaybeForwardRefExpression;\n useValue?: MaybeForwardRefExpression;\n deps?: R3DependencyMetadata[];\n}\n\nexport function compileInjectable(\n meta: R3InjectableMetadata, resolveForwardRefs: boolean): R3CompiledExpression {\n let result: {expression: o.Expression, statements: o.Statement[]}|null = null;\n\n const factoryMeta: R3FactoryMetadata = {\n name: meta.name,\n type: meta.type,\n internalType: meta.internalType,\n typeArgumentCount: meta.typeArgumentCount,\n deps: [],\n target: FactoryTarget.Injectable,\n };\n\n if (meta.useClass !== undefined) {\n // meta.useClass has two modes of operation. Either deps are specified, in which case `new` is\n // used to instantiate the class with dependencies injected, or deps are not specified and\n // the factory of the class is used to instantiate it.\n //\n // A special case exists for useClass: Type where Type is the injectable type itself and no\n // deps are specified, in which case 'useClass' is effectively ignored.\n\n const useClassOnSelf = meta.useClass.expression.isEquivalent(meta.internalType);\n let deps: R3DependencyMetadata[]|undefined = undefined;\n if (meta.deps !== undefined) {\n deps = meta.deps;\n }\n\n if (deps !== undefined) {\n // factory: () => new meta.useClass(...deps)\n result = compileFactoryFunction({\n ...factoryMeta,\n delegate: meta.useClass.expression,\n delegateDeps: deps,\n delegateType: R3FactoryDelegateType.Class,\n });\n } else if (useClassOnSelf) {\n result = compileFactoryFunction(factoryMeta);\n } else {\n result = {\n statements: [],\n expression: delegateToFactory(\n meta.type.value as o.WrappedNodeExpr,\n meta.useClass.expression as o.WrappedNodeExpr, resolveForwardRefs)\n };\n }\n } else if (meta.useFactory !== undefined) {\n if (meta.deps !== undefined) {\n result = compileFactoryFunction({\n ...factoryMeta,\n delegate: meta.useFactory,\n delegateDeps: meta.deps || [],\n delegateType: R3FactoryDelegateType.Function,\n });\n } else {\n result = {\n statements: [],\n expression: o.fn([], [new o.ReturnStatement(meta.useFactory.callFn([]))])\n };\n }\n } else if (meta.useValue !== undefined) {\n // Note: it's safe to use `meta.useValue` instead of the `USE_VALUE in meta` check used for\n // client code because meta.useValue is an Expression which will be defined even if the actual\n // value is undefined.\n result = compileFactoryFunction({\n ...factoryMeta,\n expression: meta.useValue.expression,\n });\n } else if (meta.useExisting !== undefined) {\n // useExisting is an `inject` call on the existing token.\n result = compileFactoryFunction({\n ...factoryMeta,\n expression: o.importExpr(Identifiers.inject).callFn([meta.useExisting.expression]),\n });\n } else {\n result = {\n statements: [],\n expression: delegateToFactory(\n meta.type.value as o.WrappedNodeExpr, meta.internalType as o.WrappedNodeExpr,\n resolveForwardRefs)\n };\n }\n\n const token = meta.internalType;\n\n const injectableProps =\n new DefinitionMap<{token: o.Expression, factory: o.Expression, providedIn: o.Expression}>();\n injectableProps.set('token', token);\n injectableProps.set('factory', result.expression);\n\n // Only generate providedIn property if it has a non-null value\n if ((meta.providedIn.expression as o.LiteralExpr).value !== null) {\n injectableProps.set('providedIn', convertFromMaybeForwardRefExpression(meta.providedIn));\n }\n\n const expression = o.importExpr(Identifiers.ɵɵdefineInjectable)\n .callFn([injectableProps.toLiteralMap()], undefined, true);\n return {\n expression,\n type: createInjectableType(meta),\n statements: result.statements,\n };\n}\n\nexport function createInjectableType(meta: R3InjectableMetadata) {\n return new o.ExpressionType(o.importExpr(\n Identifiers.InjectableDeclaration,\n [typeWithParameters(meta.type.type, meta.typeArgumentCount)]));\n}\n\nfunction delegateToFactory(\n type: o.WrappedNodeExpr, internalType: o.WrappedNodeExpr,\n unwrapForwardRefs: boolean): o.Expression {\n if (type.node === internalType.node) {\n // The types are the same, so we can simply delegate directly to the type's factory.\n // ```\n // factory: type.ɵfac\n // ```\n return internalType.prop('ɵfac');\n }\n\n if (!unwrapForwardRefs) {\n // The type is not wrapped in a `forwardRef()`, so we create a simple factory function that\n // accepts a sub-type as an argument.\n // ```\n // factory: function(t) { return internalType.ɵfac(t); }\n // ```\n return createFactoryFunction(internalType);\n }\n\n // The internalType is actually wrapped in a `forwardRef()` so we need to resolve that before\n // calling its factory.\n // ```\n // factory: function(t) { return core.resolveForwardRef(type).ɵfac(t); }\n // ```\n const unwrappedType = o.importExpr(Identifiers.resolveForwardRef).callFn([internalType]);\n return createFactoryFunction(unwrappedType);\n}\n\nfunction createFactoryFunction(type: o.Expression): o.FunctionExpr {\n return o.fn(\n [new o.FnParam('t', o.DYNAMIC_TYPE)],\n [new o.ReturnStatement(type.prop('ɵfac').callFn([o.variable('t')]))]);\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nconst UNUSABLE_INTERPOLATION_REGEXPS = [\n /^\\s*$/, // empty\n /[<>]/, // html tag\n /^[{}]$/, // i18n expansion\n /&(#|[a-z])/i, // character reference,\n /^\\/\\//, // comment\n];\n\nexport function assertInterpolationSymbols(identifier: string, value: any): void {\n if (value != null && !(Array.isArray(value) && value.length == 2)) {\n throw new Error(`Expected '${identifier}' to be an array, [start, end].`);\n } else if (value != null) {\n const start = value[0] as string;\n const end = value[1] as string;\n // Check for unusable interpolation symbols\n UNUSABLE_INTERPOLATION_REGEXPS.forEach(regexp => {\n if (regexp.test(start) || regexp.test(end)) {\n throw new Error(`['${start}', '${end}'] contains unusable interpolation symbol.`);\n }\n });\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {assertInterpolationSymbols} from '../assertions';\n\nexport class InterpolationConfig {\n static fromArray(markers: [string, string]|null): InterpolationConfig {\n if (!markers) {\n return DEFAULT_INTERPOLATION_CONFIG;\n }\n\n assertInterpolationSymbols('interpolation', markers);\n return new InterpolationConfig(markers[0], markers[1]);\n }\n\n constructor(public start: string, public end: string) {}\n}\n\nexport const DEFAULT_INTERPOLATION_CONFIG: InterpolationConfig =\n new InterpolationConfig('{{', '}}');\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport const $EOF = 0;\nexport const $BSPACE = 8;\nexport const $TAB = 9;\nexport const $LF = 10;\nexport const $VTAB = 11;\nexport const $FF = 12;\nexport const $CR = 13;\nexport const $SPACE = 32;\nexport const $BANG = 33;\nexport const $DQ = 34;\nexport const $HASH = 35;\nexport const $$ = 36;\nexport const $PERCENT = 37;\nexport const $AMPERSAND = 38;\nexport const $SQ = 39;\nexport const $LPAREN = 40;\nexport const $RPAREN = 41;\nexport const $STAR = 42;\nexport const $PLUS = 43;\nexport const $COMMA = 44;\nexport const $MINUS = 45;\nexport const $PERIOD = 46;\nexport const $SLASH = 47;\nexport const $COLON = 58;\nexport const $SEMICOLON = 59;\nexport const $LT = 60;\nexport const $EQ = 61;\nexport const $GT = 62;\nexport const $QUESTION = 63;\n\nexport const $0 = 48;\nexport const $7 = 55;\nexport const $9 = 57;\n\nexport const $A = 65;\nexport const $E = 69;\nexport const $F = 70;\nexport const $X = 88;\nexport const $Z = 90;\n\nexport const $LBRACKET = 91;\nexport const $BACKSLASH = 92;\nexport const $RBRACKET = 93;\nexport const $CARET = 94;\nexport const $_ = 95;\n\nexport const $a = 97;\nexport const $b = 98;\nexport const $e = 101;\nexport const $f = 102;\nexport const $n = 110;\nexport const $r = 114;\nexport const $t = 116;\nexport const $u = 117;\nexport const $v = 118;\nexport const $x = 120;\nexport const $z = 122;\n\nexport const $LBRACE = 123;\nexport const $BAR = 124;\nexport const $RBRACE = 125;\nexport const $NBSP = 160;\n\nexport const $PIPE = 124;\nexport const $TILDA = 126;\nexport const $AT = 64;\n\nexport const $BT = 96;\n\nexport function isWhitespace(code: number): boolean {\n return (code >= $TAB && code <= $SPACE) || (code == $NBSP);\n}\n\nexport function isDigit(code: number): boolean {\n return $0 <= code && code <= $9;\n}\n\nexport function isAsciiLetter(code: number): boolean {\n return code >= $a && code <= $z || code >= $A && code <= $Z;\n}\n\nexport function isAsciiHexDigit(code: number): boolean {\n return code >= $a && code <= $f || code >= $A && code <= $F || isDigit(code);\n}\n\nexport function isNewLine(code: number): boolean {\n return code === $LF || code === $CR;\n}\n\nexport function isOctalDigit(code: number): boolean {\n return $0 <= code && code <= $7;\n}\n\nexport function isQuote(code: number): boolean {\n return code === $SQ || code === $DQ || code === $BT;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport * as chars from './chars';\nimport {stringify} from './util';\n\nexport class ParseLocation {\n constructor(\n public file: ParseSourceFile, public offset: number, public line: number,\n public col: number) {}\n\n toString(): string {\n return this.offset != null ? `${this.file.url}@${this.line}:${this.col}` : this.file.url;\n }\n\n moveBy(delta: number): ParseLocation {\n const source = this.file.content;\n const len = source.length;\n let offset = this.offset;\n let line = this.line;\n let col = this.col;\n while (offset > 0 && delta < 0) {\n offset--;\n delta++;\n const ch = source.charCodeAt(offset);\n if (ch == chars.$LF) {\n line--;\n const priorLine =\n source.substring(0, offset - 1).lastIndexOf(String.fromCharCode(chars.$LF));\n col = priorLine > 0 ? offset - priorLine : offset;\n } else {\n col--;\n }\n }\n while (offset < len && delta > 0) {\n const ch = source.charCodeAt(offset);\n offset++;\n delta--;\n if (ch == chars.$LF) {\n line++;\n col = 0;\n } else {\n col++;\n }\n }\n return new ParseLocation(this.file, offset, line, col);\n }\n\n // Return the source around the location\n // Up to `maxChars` or `maxLines` on each side of the location\n getContext(maxChars: number, maxLines: number): {before: string, after: string}|null {\n const content = this.file.content;\n let startOffset = this.offset;\n\n if (startOffset != null) {\n if (startOffset > content.length - 1) {\n startOffset = content.length - 1;\n }\n let endOffset = startOffset;\n let ctxChars = 0;\n let ctxLines = 0;\n\n while (ctxChars < maxChars && startOffset > 0) {\n startOffset--;\n ctxChars++;\n if (content[startOffset] == '\\n') {\n if (++ctxLines == maxLines) {\n break;\n }\n }\n }\n\n ctxChars = 0;\n ctxLines = 0;\n while (ctxChars < maxChars && endOffset < content.length - 1) {\n endOffset++;\n ctxChars++;\n if (content[endOffset] == '\\n') {\n if (++ctxLines == maxLines) {\n break;\n }\n }\n }\n\n return {\n before: content.substring(startOffset, this.offset),\n after: content.substring(this.offset, endOffset + 1),\n };\n }\n\n return null;\n }\n}\n\nexport class ParseSourceFile {\n constructor(public content: string, public url: string) {}\n}\n\nexport class ParseSourceSpan {\n /**\n * Create an object that holds information about spans of tokens/nodes captured during\n * lexing/parsing of text.\n *\n * @param start\n * The location of the start of the span (having skipped leading trivia).\n * Skipping leading trivia makes source-spans more \"user friendly\", since things like HTML\n * elements will appear to begin at the start of the opening tag, rather than at the start of any\n * leading trivia, which could include newlines.\n *\n * @param end\n * The location of the end of the span.\n *\n * @param fullStart\n * The start of the token without skipping the leading trivia.\n * This is used by tooling that splits tokens further, such as extracting Angular interpolations\n * from text tokens. Such tooling creates new source-spans relative to the original token's\n * source-span. If leading trivia characters have been skipped then the new source-spans may be\n * incorrectly offset.\n *\n * @param details\n * Additional information (such as identifier names) that should be associated with the span.\n */\n constructor(\n public start: ParseLocation, public end: ParseLocation,\n public fullStart: ParseLocation = start, public details: string|null = null) {}\n\n toString(): string {\n return this.start.file.content.substring(this.start.offset, this.end.offset);\n }\n}\n\nexport enum ParseErrorLevel {\n WARNING,\n ERROR,\n}\n\nexport class ParseError {\n constructor(\n public span: ParseSourceSpan, public msg: string,\n public level: ParseErrorLevel = ParseErrorLevel.ERROR) {}\n\n contextualMessage(): string {\n const ctx = this.span.start.getContext(100, 3);\n return ctx ? `${this.msg} (\"${ctx.before}[${ParseErrorLevel[this.level]} ->]${ctx.after}\")` :\n this.msg;\n }\n\n toString(): string {\n const details = this.span.details ? `, ${this.span.details}` : '';\n return `${this.contextualMessage()}: ${this.span.start}${details}`;\n }\n}\n\n/**\n * Generates Source Span object for a given R3 Type for JIT mode.\n *\n * @param kind Component or Directive.\n * @param typeName name of the Component or Directive.\n * @param sourceUrl reference to Component or Directive source.\n * @returns instance of ParseSourceSpan that represent a given Component or Directive.\n */\nexport function r3JitTypeSourceSpan(\n kind: string, typeName: string, sourceUrl: string): ParseSourceSpan {\n const sourceFileName = `in ${kind} ${typeName} in ${sourceUrl}`;\n const sourceFile = new ParseSourceFile('', sourceFileName);\n return new ParseSourceSpan(\n new ParseLocation(sourceFile, -1, -1, -1), new ParseLocation(sourceFile, -1, -1, -1));\n}\n\nlet _anonymousTypeIndex = 0;\n\nexport function identifierName(compileIdentifier: CompileIdentifierMetadata|null|undefined): string|\n null {\n if (!compileIdentifier || !compileIdentifier.reference) {\n return null;\n }\n const ref = compileIdentifier.reference;\n if (ref['__anonymousType']) {\n return ref['__anonymousType'];\n }\n if (ref['__forward_ref__']) {\n // We do not want to try to stringify a `forwardRef()` function because that would cause the\n // inner function to be evaluated too early, defeating the whole point of the `forwardRef`.\n return '__forward_ref__';\n }\n let identifier = stringify(ref);\n if (identifier.indexOf('(') >= 0) {\n // case: anonymous functions!\n identifier = `anonymous_${_anonymousTypeIndex++}`;\n ref['__anonymousType'] = identifier;\n } else {\n identifier = sanitizeIdentifier(identifier);\n }\n return identifier;\n}\n\nexport interface CompileIdentifierMetadata {\n reference: any;\n}\n\nexport function sanitizeIdentifier(name: string): string {\n return name.replace(/\\W/g, '_');\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {AbstractEmitterVisitor, EmitterVisitorContext, escapeIdentifier} from './abstract_emitter';\nimport * as o from './output_ast';\n\n/**\n * In TypeScript, tagged template functions expect a \"template object\", which is an array of\n * \"cooked\" strings plus a `raw` property that contains an array of \"raw\" strings. This is\n * typically constructed with a function called `__makeTemplateObject(cooked, raw)`, but it may not\n * be available in all environments.\n *\n * This is a JavaScript polyfill that uses __makeTemplateObject when it's available, but otherwise\n * creates an inline helper with the same functionality.\n *\n * In the inline function, if `Object.defineProperty` is available we use that to attach the `raw`\n * array.\n */\nconst makeTemplateObjectPolyfill =\n '(this&&this.__makeTemplateObject||function(e,t){return Object.defineProperty?Object.defineProperty(e,\"raw\",{value:t}):e.raw=t,e})';\n\nexport abstract class AbstractJsEmitterVisitor extends AbstractEmitterVisitor {\n constructor() {\n super(false);\n }\n\n override visitWrappedNodeExpr(ast: o.WrappedNodeExpr, ctx: EmitterVisitorContext): any {\n throw new Error('Cannot emit a WrappedNodeExpr in Javascript.');\n }\n\n override visitDeclareVarStmt(stmt: o.DeclareVarStmt, ctx: EmitterVisitorContext): any {\n ctx.print(stmt, `var ${stmt.name}`);\n if (stmt.value) {\n ctx.print(stmt, ' = ');\n stmt.value.visitExpression(this, ctx);\n }\n ctx.println(stmt, `;`);\n return null;\n }\n override visitTaggedTemplateExpr(ast: o.TaggedTemplateExpr, ctx: EmitterVisitorContext): any {\n // The following convoluted piece of code is effectively the downlevelled equivalent of\n // ```\n // tag`...`\n // ```\n // which is effectively like:\n // ```\n // tag(__makeTemplateObject(cooked, raw), expression1, expression2, ...);\n // ```\n const elements = ast.template.elements;\n ast.tag.visitExpression(this, ctx);\n ctx.print(ast, `(${makeTemplateObjectPolyfill}(`);\n ctx.print(ast, `[${elements.map(part => escapeIdentifier(part.text, false)).join(', ')}], `);\n ctx.print(ast, `[${elements.map(part => escapeIdentifier(part.rawText, false)).join(', ')}])`);\n ast.template.expressions.forEach(expression => {\n ctx.print(ast, ', ');\n expression.visitExpression(this, ctx);\n });\n ctx.print(ast, ')');\n return null;\n }\n override visitFunctionExpr(ast: o.FunctionExpr, ctx: EmitterVisitorContext): any {\n ctx.print(ast, `function${ast.name ? ' ' + ast.name : ''}(`);\n this._visitParams(ast.params, ctx);\n ctx.println(ast, `) {`);\n ctx.incIndent();\n this.visitAllStatements(ast.statements, ctx);\n ctx.decIndent();\n ctx.print(ast, `}`);\n return null;\n }\n override visitDeclareFunctionStmt(stmt: o.DeclareFunctionStmt, ctx: EmitterVisitorContext): any {\n ctx.print(stmt, `function ${stmt.name}(`);\n this._visitParams(stmt.params, ctx);\n ctx.println(stmt, `) {`);\n ctx.incIndent();\n this.visitAllStatements(stmt.statements, ctx);\n ctx.decIndent();\n ctx.println(stmt, `}`);\n return null;\n }\n override visitLocalizedString(ast: o.LocalizedString, ctx: EmitterVisitorContext): any {\n // The following convoluted piece of code is effectively the downlevelled equivalent of\n // ```\n // $localize `...`\n // ```\n // which is effectively like:\n // ```\n // $localize(__makeTemplateObject(cooked, raw), expression1, expression2, ...);\n // ```\n ctx.print(ast, `$localize(${makeTemplateObjectPolyfill}(`);\n const parts = [ast.serializeI18nHead()];\n for (let i = 1; i < ast.messageParts.length; i++) {\n parts.push(ast.serializeI18nTemplatePart(i));\n }\n ctx.print(ast, `[${parts.map(part => escapeIdentifier(part.cooked, false)).join(', ')}], `);\n ctx.print(ast, `[${parts.map(part => escapeIdentifier(part.raw, false)).join(', ')}])`);\n ast.expressions.forEach(expression => {\n ctx.print(ast, ', ');\n expression.visitExpression(this, ctx);\n });\n ctx.print(ast, ')');\n return null;\n }\n\n private _visitParams(params: o.FnParam[], ctx: EmitterVisitorContext): void {\n this.visitAllObjects(param => ctx.print(null, param.name), params, ctx, ',');\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @fileoverview\n * A module to facilitate use of a Trusted Types policy within the JIT\n * compiler. It lazily constructs the Trusted Types policy, providing helper\n * utilities for promoting strings to Trusted Types. When Trusted Types are not\n * available, strings are used as a fallback.\n * @security All use of this module is security-sensitive and should go through\n * security review.\n */\n\nimport {global} from '../util';\n\n/**\n * While Angular only uses Trusted Types internally for the time being,\n * references to Trusted Types could leak into our core.d.ts, which would force\n * anyone compiling against @angular/core to provide the @types/trusted-types\n * package in their compilation unit.\n *\n * Until https://github.com/microsoft/TypeScript/issues/30024 is resolved, we\n * will keep Angular's public API surface free of references to Trusted Types.\n * For internal and semi-private APIs that need to reference Trusted Types, the\n * minimal type definitions for the Trusted Types API provided by this module\n * should be used instead. They are marked as \"declare\" to prevent them from\n * being renamed by compiler optimization.\n *\n * Adapted from\n * https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/trusted-types/index.d.ts\n * but restricted to the API surface used within Angular.\n */\n\nexport declare interface TrustedScript {\n __brand__: 'TrustedScript';\n}\n\nexport declare interface TrustedTypePolicyFactory {\n createPolicy(policyName: string, policyOptions: {\n createScript?: (input: string) => string,\n }): TrustedTypePolicy;\n}\n\nexport declare interface TrustedTypePolicy {\n createScript(input: string): TrustedScript;\n}\n\n\n/**\n * The Trusted Types policy, or null if Trusted Types are not\n * enabled/supported, or undefined if the policy has not been created yet.\n */\nlet policy: TrustedTypePolicy|null|undefined;\n\n/**\n * Returns the Trusted Types policy, or null if Trusted Types are not\n * enabled/supported. The first call to this function will create the policy.\n */\nfunction getPolicy(): TrustedTypePolicy|null {\n if (policy === undefined) {\n policy = null;\n if (global.trustedTypes) {\n try {\n policy =\n (global.trustedTypes as TrustedTypePolicyFactory).createPolicy('angular#unsafe-jit', {\n createScript: (s: string) => s,\n });\n } catch {\n // trustedTypes.createPolicy throws if called with a name that is\n // already registered, even in report-only mode. Until the API changes,\n // catch the error not to break the applications functionally. In such\n // cases, the code will fall back to using strings.\n }\n }\n }\n return policy;\n}\n\n/**\n * Unsafely promote a string to a TrustedScript, falling back to strings when\n * Trusted Types are not available.\n * @security In particular, it must be assured that the provided string will\n * never cause an XSS vulnerability if used in a context that will be\n * interpreted and executed as a script by a browser, e.g. when calling eval.\n */\nfunction trustedScriptFromString(script: string): TrustedScript|string {\n return getPolicy()?.createScript(script) || script;\n}\n\n/**\n * Unsafely call the Function constructor with the given string arguments.\n * @security This is a security-sensitive function; any use of this function\n * must go through security review. In particular, it must be assured that it\n * is only called from the JIT compiler, as use in other code can lead to XSS\n * vulnerabilities.\n */\nexport function newTrustedFunctionForJIT(...args: string[]): Function {\n if (!global.trustedTypes) {\n // In environments that don't support Trusted Types, fall back to the most\n // straightforward implementation:\n return new Function(...args);\n }\n\n // Chrome currently does not support passing TrustedScript to the Function\n // constructor. The following implements the workaround proposed on the page\n // below, where the Chromium bug is also referenced:\n // https://github.com/w3c/webappsec-trusted-types/wiki/Trusted-Types-for-function-constructor\n const fnArgs = args.slice(0, -1).join(',');\n const fnBody = args[args.length - 1];\n const body = `(function anonymous(${fnArgs}\n) { ${fnBody}\n})`;\n\n // Using eval directly confuses the compiler and prevents this module from\n // being stripped out of JS binaries even if not used. The global['eval']\n // indirection fixes that.\n const fn = global['eval'](trustedScriptFromString(body) as string) as Function;\n if (fn.bind === undefined) {\n // Workaround for a browser bug that only exists in Chrome 83, where passing\n // a TrustedScript to eval just returns the TrustedScript back without\n // evaluating it. In that case, fall back to the most straightforward\n // implementation:\n return new Function(...args);\n }\n\n // To completely mimic the behavior of calling \"new Function\", two more\n // things need to happen:\n // 1. Stringifying the resulting function should return its source code\n fn.toString = () => body;\n // 2. When calling the resulting function, `this` should refer to `global`\n return fn.bind(global);\n\n // When Trusted Types support in Function constructors is widely available,\n // the implementation of this function can be simplified to:\n // return new Function(...args.map(a => trustedScriptFromString(a)));\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {identifierName} from '../parse_util';\n\nimport {EmitterVisitorContext} from './abstract_emitter';\nimport {AbstractJsEmitterVisitor} from './abstract_js_emitter';\nimport * as o from './output_ast';\nimport {newTrustedFunctionForJIT} from './output_jit_trusted_types';\n\nexport interface ExternalReferenceResolver {\n resolveExternalReference(ref: o.ExternalReference): unknown;\n}\n\n/**\n * A helper class to manage the evaluation of JIT generated code.\n */\nexport class JitEvaluator {\n /**\n *\n * @param sourceUrl The URL of the generated code.\n * @param statements An array of Angular statement AST nodes to be evaluated.\n * @param refResolver Resolves `o.ExternalReference`s into values.\n * @param createSourceMaps If true then create a source-map for the generated code and include it\n * inline as a source-map comment.\n * @returns A map of all the variables in the generated code.\n */\n evaluateStatements(\n sourceUrl: string, statements: o.Statement[], refResolver: ExternalReferenceResolver,\n createSourceMaps: boolean): {[key: string]: any} {\n const converter = new JitEmitterVisitor(refResolver);\n const ctx = EmitterVisitorContext.createRoot();\n // Ensure generated code is in strict mode\n if (statements.length > 0 && !isUseStrictStatement(statements[0])) {\n statements = [\n o.literal('use strict').toStmt(),\n ...statements,\n ];\n }\n converter.visitAllStatements(statements, ctx);\n converter.createReturnStmt(ctx);\n return this.evaluateCode(sourceUrl, ctx, converter.getArgs(), createSourceMaps);\n }\n\n /**\n * Evaluate a piece of JIT generated code.\n * @param sourceUrl The URL of this generated code.\n * @param ctx A context object that contains an AST of the code to be evaluated.\n * @param vars A map containing the names and values of variables that the evaluated code might\n * reference.\n * @param createSourceMap If true then create a source-map for the generated code and include it\n * inline as a source-map comment.\n * @returns The result of evaluating the code.\n */\n evaluateCode(\n sourceUrl: string, ctx: EmitterVisitorContext, vars: {[key: string]: any},\n createSourceMap: boolean): any {\n let fnBody = `\"use strict\";${ctx.toSource()}\\n//# sourceURL=${sourceUrl}`;\n const fnArgNames: string[] = [];\n const fnArgValues: any[] = [];\n for (const argName in vars) {\n fnArgValues.push(vars[argName]);\n fnArgNames.push(argName);\n }\n if (createSourceMap) {\n // using `new Function(...)` generates a header, 1 line of no arguments, 2 lines otherwise\n // E.g. ```\n // function anonymous(a,b,c\n // /**/) { ... }```\n // We don't want to hard code this fact, so we auto detect it via an empty function first.\n const emptyFn = newTrustedFunctionForJIT(...fnArgNames.concat('return null;')).toString();\n const headerLines = emptyFn.slice(0, emptyFn.indexOf('return null;')).split('\\n').length - 1;\n fnBody += `\\n${ctx.toSourceMapGenerator(sourceUrl, headerLines).toJsComment()}`;\n }\n const fn = newTrustedFunctionForJIT(...fnArgNames.concat(fnBody));\n return this.executeFunction(fn, fnArgValues);\n }\n\n /**\n * Execute a JIT generated function by calling it.\n *\n * This method can be overridden in tests to capture the functions that are generated\n * by this `JitEvaluator` class.\n *\n * @param fn A function to execute.\n * @param args The arguments to pass to the function being executed.\n * @returns The return value of the executed function.\n */\n executeFunction(fn: Function, args: any[]) {\n return fn(...args);\n }\n}\n\n/**\n * An Angular AST visitor that converts AST nodes into executable JavaScript code.\n */\nexport class JitEmitterVisitor extends AbstractJsEmitterVisitor {\n private _evalArgNames: string[] = [];\n private _evalArgValues: any[] = [];\n private _evalExportedVars: string[] = [];\n\n constructor(private refResolver: ExternalReferenceResolver) {\n super();\n }\n\n createReturnStmt(ctx: EmitterVisitorContext) {\n const stmt = new o.ReturnStatement(new o.LiteralMapExpr(this._evalExportedVars.map(\n resultVar => new o.LiteralMapEntry(resultVar, o.variable(resultVar), false))));\n stmt.visitStatement(this, ctx);\n }\n\n getArgs(): {[key: string]: any} {\n const result: {[key: string]: any} = {};\n for (let i = 0; i < this._evalArgNames.length; i++) {\n result[this._evalArgNames[i]] = this._evalArgValues[i];\n }\n return result;\n }\n\n override visitExternalExpr(ast: o.ExternalExpr, ctx: EmitterVisitorContext): any {\n this._emitReferenceToExternal(ast, this.refResolver.resolveExternalReference(ast.value), ctx);\n return null;\n }\n\n override visitWrappedNodeExpr(ast: o.WrappedNodeExpr, ctx: EmitterVisitorContext): any {\n this._emitReferenceToExternal(ast, ast.node, ctx);\n return null;\n }\n\n override visitDeclareVarStmt(stmt: o.DeclareVarStmt, ctx: EmitterVisitorContext): any {\n if (stmt.hasModifier(o.StmtModifier.Exported)) {\n this._evalExportedVars.push(stmt.name);\n }\n return super.visitDeclareVarStmt(stmt, ctx);\n }\n\n override visitDeclareFunctionStmt(stmt: o.DeclareFunctionStmt, ctx: EmitterVisitorContext): any {\n if (stmt.hasModifier(o.StmtModifier.Exported)) {\n this._evalExportedVars.push(stmt.name);\n }\n return super.visitDeclareFunctionStmt(stmt, ctx);\n }\n\n private _emitReferenceToExternal(ast: o.Expression, value: any, ctx: EmitterVisitorContext):\n void {\n let id = this._evalArgValues.indexOf(value);\n if (id === -1) {\n id = this._evalArgValues.length;\n this._evalArgValues.push(value);\n const name = identifierName({reference: value}) || 'val';\n this._evalArgNames.push(`jit_${name}_${id}`);\n }\n ctx.print(ast, this._evalArgNames[id]);\n }\n}\n\n\nfunction isUseStrictStatement(statement: o.Statement): boolean {\n return statement.isEquivalent(o.literal('use strict').toStmt());\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport * as o from '../output/output_ast';\nimport {Identifiers as R3} from './r3_identifiers';\nimport {R3CompiledExpression, R3Reference} from './util';\nimport {DefinitionMap} from './view/util';\n\nexport interface R3InjectorMetadata {\n name: string;\n type: R3Reference;\n internalType: o.Expression;\n providers: o.Expression|null;\n imports: o.Expression[];\n}\n\nexport function compileInjector(meta: R3InjectorMetadata): R3CompiledExpression {\n const definitionMap = new DefinitionMap<{providers: o.Expression; imports: o.Expression;}>();\n\n if (meta.providers !== null) {\n definitionMap.set('providers', meta.providers);\n }\n\n if (meta.imports.length > 0) {\n definitionMap.set('imports', o.literalArr(meta.imports));\n }\n\n const expression =\n o.importExpr(R3.defineInjector).callFn([definitionMap.toLiteralMap()], undefined, true);\n const type = createInjectorType(meta);\n return {expression, type, statements: []};\n}\n\nexport function createInjectorType(meta: R3InjectorMetadata): o.Type {\n return new o.ExpressionType(\n o.importExpr(R3.InjectorDeclaration, [new o.ExpressionType(meta.type.type)]));\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport * as o from '../output/output_ast';\nimport {ExternalReferenceResolver} from '../output/output_jit';\n\n/**\n * Implementation of `CompileReflector` which resolves references to @angular/core\n * symbols at runtime, according to a consumer-provided mapping.\n *\n * Only supports `resolveExternalReference`, all other methods throw.\n */\nexport class R3JitReflector implements ExternalReferenceResolver {\n constructor(private context: {[key: string]: unknown}) {}\n\n resolveExternalReference(ref: o.ExternalReference): unknown {\n // This reflector only handles @angular/core imports.\n if (ref.moduleName !== '@angular/core') {\n throw new Error(`Cannot resolve external reference to ${\n ref.moduleName}, only references to @angular/core are supported.`);\n }\n if (!this.context.hasOwnProperty(ref.name!)) {\n throw new Error(`No value provided for @angular/core symbol '${ref.name!}'.`);\n }\n return this.context[ref.name!];\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {R3DeclareNgModuleFacade} from '../compiler_facade_interface';\nimport * as o from '../output/output_ast';\n\nimport {Identifiers as R3} from './r3_identifiers';\nimport {jitOnlyGuardedExpression, R3CompiledExpression, R3Reference, refsToArray} from './util';\nimport {DefinitionMap} from './view/util';\n\n/**\n * How the selector scope of an NgModule (its declarations, imports, and exports) should be emitted\n * as a part of the NgModule definition.\n */\nexport enum R3SelectorScopeMode {\n /**\n * Emit the declarations inline into the module definition.\n *\n * This option is useful in certain contexts where it's known that JIT support is required. The\n * tradeoff here is that this emit style prevents directives and pipes from being tree-shaken if\n * they are unused, but the NgModule is used.\n */\n Inline,\n\n /**\n * Emit the declarations using a side effectful function call, `ɵɵsetNgModuleScope`, that is\n * guarded with the `ngJitMode` flag.\n *\n * This form of emit supports JIT and can be optimized away if the `ngJitMode` flag is set to\n * false, which allows unused directives and pipes to be tree-shaken.\n */\n SideEffect,\n\n /**\n * Don't generate selector scopes at all.\n *\n * This is useful for contexts where JIT support is known to be unnecessary.\n */\n Omit,\n}\n\n/**\n * Metadata required by the module compiler to generate a module def (`ɵmod`) for a type.\n */\nexport interface R3NgModuleMetadata {\n /**\n * An expression representing the module type being compiled.\n */\n type: R3Reference;\n\n /**\n * An expression representing the module type being compiled, intended for use within a class\n * definition itself.\n *\n * This can differ from the outer `type` if the class is being compiled by ngcc and is inside\n * an IIFE structure that uses a different name internally.\n */\n internalType: o.Expression;\n\n /**\n * An expression intended for use by statements that are adjacent (i.e. tightly coupled) to but\n * not internal to a class definition.\n *\n * This can differ from the outer `type` if the class is being compiled by ngcc and is inside\n * an IIFE structure that uses a different name internally.\n */\n adjacentType: o.Expression;\n\n /**\n * An array of expressions representing the bootstrap components specified by the module.\n */\n bootstrap: R3Reference[];\n\n /**\n * An array of expressions representing the directives and pipes declared by the module.\n */\n declarations: R3Reference[];\n\n /**\n * Those declarations which should be visible to downstream consumers. If not specified, all\n * declarations are made visible to downstream consumers.\n */\n publicDeclarationTypes: o.Expression[]|null;\n\n /**\n * An array of expressions representing the imports of the module.\n */\n imports: R3Reference[];\n\n /**\n * Whether or not to include `imports` in generated type declarations.\n */\n includeImportTypes: boolean;\n\n /**\n * An array of expressions representing the exports of the module.\n */\n exports: R3Reference[];\n\n /**\n * How to emit the selector scope values (declarations, imports, exports).\n */\n selectorScopeMode: R3SelectorScopeMode;\n\n /**\n * Whether to generate closure wrappers for bootstrap, declarations, imports, and exports.\n */\n containsForwardDecls: boolean;\n\n /**\n * The set of schemas that declare elements to be allowed in the NgModule.\n */\n schemas: R3Reference[]|null;\n\n /** Unique ID or expression representing the unique ID of an NgModule. */\n id: o.Expression|null;\n}\n\n/**\n * The shape of the object literal that is passed to the `ɵɵdefineNgModule()` call.\n */\ninterface R3NgModuleDefMap {\n /**\n * An expression representing the module type being compiled.\n */\n type: o.Expression;\n /**\n * An expression evaluating to an array of expressions representing the bootstrap components\n * specified by the module.\n */\n bootstrap?: o.Expression;\n /**\n * An expression evaluating to an array of expressions representing the directives and pipes\n * declared by the module.\n */\n declarations?: o.Expression;\n /**\n * An expression evaluating to an array of expressions representing the imports of the module.\n */\n imports?: o.Expression;\n /**\n * An expression evaluating to an array of expressions representing the exports of the module.\n */\n exports?: o.Expression;\n /**\n * A literal array expression containing the schemas that declare elements to be allowed in the\n * NgModule.\n */\n schemas?: o.LiteralArrayExpr;\n /**\n * An expression evaluating to the unique ID of an NgModule.\n * */\n id?: o.Expression;\n}\n\n/**\n * Construct an `R3NgModuleDef` for the given `R3NgModuleMetadata`.\n */\nexport function compileNgModule(meta: R3NgModuleMetadata): R3CompiledExpression {\n const {\n adjacentType,\n internalType,\n bootstrap,\n declarations,\n imports,\n exports,\n schemas,\n containsForwardDecls,\n selectorScopeMode,\n id\n } = meta;\n\n const statements: o.Statement[] = [];\n const definitionMap = new DefinitionMap();\n definitionMap.set('type', internalType);\n\n if (bootstrap.length > 0) {\n definitionMap.set('bootstrap', refsToArray(bootstrap, containsForwardDecls));\n }\n\n if (selectorScopeMode === R3SelectorScopeMode.Inline) {\n // If requested to emit scope information inline, pass the `declarations`, `imports` and\n // `exports` to the `ɵɵdefineNgModule()` call directly.\n\n if (declarations.length > 0) {\n definitionMap.set('declarations', refsToArray(declarations, containsForwardDecls));\n }\n\n if (imports.length > 0) {\n definitionMap.set('imports', refsToArray(imports, containsForwardDecls));\n }\n\n if (exports.length > 0) {\n definitionMap.set('exports', refsToArray(exports, containsForwardDecls));\n }\n } else if (selectorScopeMode === R3SelectorScopeMode.SideEffect) {\n // In this mode, scope information is not passed into `ɵɵdefineNgModule` as it\n // would prevent tree-shaking of the declarations, imports and exports references. Instead, it's\n // patched onto the NgModule definition with a `ɵɵsetNgModuleScope` call that's guarded by the\n // `ngJitMode` flag.\n const setNgModuleScopeCall = generateSetNgModuleScopeCall(meta);\n if (setNgModuleScopeCall !== null) {\n statements.push(setNgModuleScopeCall);\n }\n } else {\n // Selector scope emit was not requested, so skip it.\n }\n\n if (schemas !== null && schemas.length > 0) {\n definitionMap.set('schemas', o.literalArr(schemas.map(ref => ref.value)));\n }\n\n if (id !== null) {\n definitionMap.set('id', id);\n\n // Generate a side-effectful call to register this NgModule by its id, as per the semantics of\n // NgModule ids.\n statements.push(o.importExpr(R3.registerNgModuleType).callFn([adjacentType, id]).toStmt());\n }\n\n const expression =\n o.importExpr(R3.defineNgModule).callFn([definitionMap.toLiteralMap()], undefined, true);\n const type = createNgModuleType(meta);\n\n return {expression, type, statements};\n}\n\n/**\n * This function is used in JIT mode to generate the call to `ɵɵdefineNgModule()` from a call to\n * `ɵɵngDeclareNgModule()`.\n */\nexport function compileNgModuleDeclarationExpression(meta: R3DeclareNgModuleFacade): o.Expression {\n const definitionMap = new DefinitionMap();\n definitionMap.set('type', new o.WrappedNodeExpr(meta.type));\n if (meta.bootstrap !== undefined) {\n definitionMap.set('bootstrap', new o.WrappedNodeExpr(meta.bootstrap));\n }\n if (meta.declarations !== undefined) {\n definitionMap.set('declarations', new o.WrappedNodeExpr(meta.declarations));\n }\n if (meta.imports !== undefined) {\n definitionMap.set('imports', new o.WrappedNodeExpr(meta.imports));\n }\n if (meta.exports !== undefined) {\n definitionMap.set('exports', new o.WrappedNodeExpr(meta.exports));\n }\n if (meta.schemas !== undefined) {\n definitionMap.set('schemas', new o.WrappedNodeExpr(meta.schemas));\n }\n if (meta.id !== undefined) {\n definitionMap.set('id', new o.WrappedNodeExpr(meta.id));\n }\n return o.importExpr(R3.defineNgModule).callFn([definitionMap.toLiteralMap()]);\n}\n\nexport function createNgModuleType(\n {type: moduleType, declarations, exports, imports, includeImportTypes, publicDeclarationTypes}:\n R3NgModuleMetadata): o.ExpressionType {\n return new o.ExpressionType(o.importExpr(R3.NgModuleDeclaration, [\n new o.ExpressionType(moduleType.type),\n publicDeclarationTypes === null ? tupleTypeOf(declarations) :\n tupleOfTypes(publicDeclarationTypes),\n includeImportTypes ? tupleTypeOf(imports) : o.NONE_TYPE,\n tupleTypeOf(exports),\n ]));\n}\n\n/**\n * Generates a function call to `ɵɵsetNgModuleScope` with all necessary information so that the\n * transitive module scope can be computed during runtime in JIT mode. This call is marked pure\n * such that the references to declarations, imports and exports may be elided causing these\n * symbols to become tree-shakeable.\n */\nfunction generateSetNgModuleScopeCall(meta: R3NgModuleMetadata): o.Statement|null {\n const {adjacentType: moduleType, declarations, imports, exports, containsForwardDecls} = meta;\n\n const scopeMap = new DefinitionMap<\n {declarations: o.Expression, imports: o.Expression, exports: o.Expression}>();\n\n if (declarations.length > 0) {\n scopeMap.set('declarations', refsToArray(declarations, containsForwardDecls));\n }\n\n if (imports.length > 0) {\n scopeMap.set('imports', refsToArray(imports, containsForwardDecls));\n }\n\n if (exports.length > 0) {\n scopeMap.set('exports', refsToArray(exports, containsForwardDecls));\n }\n\n if (Object.keys(scopeMap.values).length === 0) {\n return null;\n }\n\n // setNgModuleScope(...)\n const fnCall = new o.InvokeFunctionExpr(\n /* fn */ o.importExpr(R3.setNgModuleScope),\n /* args */[moduleType, scopeMap.toLiteralMap()]);\n\n // (ngJitMode guard) && setNgModuleScope(...)\n const guardedCall = jitOnlyGuardedExpression(fnCall);\n\n // function() { (ngJitMode guard) && setNgModuleScope(...); }\n const iife = new o.FunctionExpr(\n /* params */[],\n /* statements */[guardedCall.toStmt()]);\n\n // (function() { (ngJitMode guard) && setNgModuleScope(...); })()\n const iifeCall = new o.InvokeFunctionExpr(\n /* fn */ iife,\n /* args */[]);\n\n return iifeCall.toStmt();\n}\n\nfunction tupleTypeOf(exp: R3Reference[]): o.Type {\n const types = exp.map(ref => o.typeofExpr(ref.type));\n return exp.length > 0 ? o.expressionType(o.literalArr(types)) : o.NONE_TYPE;\n}\n\nfunction tupleOfTypes(types: o.Expression[]): o.Type {\n const typeofTypes = types.map(type => o.typeofExpr(type));\n return types.length > 0 ? o.expressionType(o.literalArr(typeofTypes)) : o.NONE_TYPE;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {ChangeDetectionStrategy, ViewEncapsulation} from '../../core';\nimport {InterpolationConfig} from '../../ml_parser/interpolation_config';\nimport * as o from '../../output/output_ast';\nimport {ParseSourceSpan} from '../../parse_util';\nimport * as t from '../r3_ast';\nimport {R3DependencyMetadata} from '../r3_factory';\nimport {MaybeForwardRefExpression, R3Reference} from '../util';\n\n\n/**\n * Information needed to compile a directive for the render3 runtime.\n */\nexport interface R3DirectiveMetadata {\n /**\n * Name of the directive type.\n */\n name: string;\n\n /**\n * An expression representing a reference to the directive itself.\n */\n type: R3Reference;\n\n /**\n * An expression representing a reference to the directive being compiled, intended for use within\n * a class definition itself.\n *\n * This can differ from the outer `type` if the class is being compiled by ngcc and is inside\n * an IIFE structure that uses a different name internally.\n */\n internalType: o.Expression;\n\n /**\n * Number of generic type parameters of the type itself.\n */\n typeArgumentCount: number;\n\n /**\n * A source span for the directive type.\n */\n typeSourceSpan: ParseSourceSpan;\n\n /**\n * Dependencies of the directive's constructor.\n */\n deps: R3DependencyMetadata[]|'invalid'|null;\n\n /**\n * Unparsed selector of the directive, or `null` if there was no selector.\n */\n selector: string|null;\n\n /**\n * Information about the content queries made by the directive.\n */\n queries: R3QueryMetadata[];\n\n /**\n * Information about the view queries made by the directive.\n */\n viewQueries: R3QueryMetadata[];\n\n /**\n * Mappings indicating how the directive interacts with its host element (host bindings,\n * listeners, etc).\n */\n host: R3HostMetadata;\n\n /**\n * Information about usage of specific lifecycle events which require special treatment in the\n * code generator.\n */\n lifecycle: {\n /**\n * Whether the directive uses NgOnChanges.\n */\n usesOnChanges: boolean;\n };\n\n /**\n * A mapping of inputs from class property names to binding property names, or to a tuple of\n * binding property name and class property name if the names are different.\n */\n inputs: {[field: string]: string|[string, string]};\n\n /**\n * A mapping of outputs from class property names to binding property names, or to a tuple of\n * binding property name and class property name if the names are different.\n */\n outputs: {[field: string]: string};\n\n /**\n * Whether or not the component or directive inherits from another class\n */\n usesInheritance: boolean;\n\n /**\n * Whether or not the component or directive inherits its entire decorator from its base class.\n */\n fullInheritance: boolean;\n\n /**\n * Reference name under which to export the directive's type in a template,\n * if any.\n */\n exportAs: string[]|null;\n\n /**\n * The list of providers defined in the directive.\n */\n providers: o.Expression|null;\n\n /**\n * Whether or not the component or directive is standalone.\n */\n isStandalone: boolean;\n\n /**\n * Additional directives applied to the directive host.\n */\n hostDirectives: R3HostDirectiveMetadata[]|null;\n}\n\n/**\n * Specifies how a list of declaration type references should be emitted into the generated code.\n */\nexport const enum DeclarationListEmitMode {\n /**\n * The list of declarations is emitted into the generated code as is.\n *\n * ```\n * directives: [MyDir],\n * ```\n */\n Direct,\n\n /**\n * The list of declarations is emitted into the generated code wrapped inside a closure, which\n * is needed when at least one declaration is a forward reference.\n *\n * ```\n * directives: function () { return [MyDir, ForwardDir]; },\n * ```\n */\n Closure,\n\n /**\n * Similar to `Closure`, with the addition that the list of declarations can contain individual\n * items that are themselves forward references. This is relevant for JIT compilations, as\n * unwrapping the forwardRef cannot be done statically so must be deferred. This mode emits\n * the declaration list using a mapping transform through `resolveForwardRef` to ensure that\n * any forward references within the list are resolved when the outer closure is invoked.\n *\n * Consider the case where the runtime has captured two declarations in two distinct values:\n * ```\n * const dirA = MyDir;\n * const dirB = forwardRef(function() { return ForwardRef; });\n * ```\n *\n * This mode would emit the declarations captured in `dirA` and `dirB` as follows:\n * ```\n * directives: function () { return [dirA, dirB].map(ng.resolveForwardRef); },\n * ```\n */\n ClosureResolved,\n}\n\n/**\n * Information needed to compile a component for the render3 runtime.\n */\nexport interface R3ComponentMetadata extends\n R3DirectiveMetadata {\n /**\n * Information about the component's template.\n */\n template: {\n /**\n * Parsed nodes of the template.\n */\n nodes: t.Node[];\n\n /**\n * Any ng-content selectors extracted from the template. Contains `*` when an ng-content\n * element without selector is present.\n */\n ngContentSelectors: string[];\n };\n\n declarations: DeclarationT[];\n\n /**\n * Specifies how the 'directives' and/or `pipes` array, if generated, need to be emitted.\n */\n declarationListEmitMode: DeclarationListEmitMode;\n\n /**\n * A collection of styling data that will be applied and scoped to the component.\n */\n styles: string[];\n\n /**\n * An encapsulation policy for the component's styling.\n * Possible values:\n * - `ViewEncapsulation.Emulated`: Apply modified component styles in order to emulate\n * a native Shadow DOM CSS encapsulation behavior.\n * - `ViewEncapsulation.None`: Apply component styles globally without any sort of encapsulation.\n * - `ViewEncapsulation.ShadowDom`: Use the browser's native Shadow DOM API to encapsulate styles.\n */\n encapsulation: ViewEncapsulation;\n\n /**\n * A collection of animation triggers that will be used in the component template.\n */\n animations: o.Expression|null;\n\n /**\n * The list of view providers defined in the component.\n */\n viewProviders: o.Expression|null;\n\n /**\n * Path to the .ts file in which this template's generated code will be included, relative to\n * the compilation root. This will be used to generate identifiers that need to be globally\n * unique in certain contexts (such as g3).\n */\n relativeContextFilePath: string;\n\n /**\n * Whether translation variable name should contain external message id\n * (used by Closure Compiler's output of `goog.getMsg` for transition period).\n */\n i18nUseExternalIds: boolean;\n\n /**\n * Overrides the default interpolation start and end delimiters ({{ and }}).\n */\n interpolation: InterpolationConfig;\n\n /**\n * Strategy used for detecting changes in the component.\n */\n changeDetection?: ChangeDetectionStrategy;\n}\n\n\nexport enum R3TemplateDependencyKind {\n Directive = 0,\n Pipe = 1,\n NgModule = 2,\n}\n\n/**\n * A dependency that's used within a component template.\n */\nexport interface R3TemplateDependency {\n kind: R3TemplateDependencyKind;\n\n /**\n * The type of the dependency as an expression.\n */\n type: o.Expression;\n}\n\n/**\n * A dependency that's used within a component template\n */\nexport type R3TemplateDependencyMetadata =\n R3DirectiveDependencyMetadata|R3PipeDependencyMetadata|R3NgModuleDependencyMetadata;\n\n/**\n * Information about a directive that is used in a component template. Only the stable, public\n * facing information of the directive is stored here.\n */\nexport interface R3DirectiveDependencyMetadata extends R3TemplateDependency {\n kind: R3TemplateDependencyKind.Directive;\n\n /**\n * The selector of the directive.\n */\n selector: string;\n\n /**\n * The binding property names of the inputs of the directive.\n */\n inputs: string[];\n\n /**\n * The binding property names of the outputs of the directive.\n */\n outputs: string[];\n\n /**\n * Name under which the directive is exported, if any (exportAs in Angular). Null otherwise.\n */\n exportAs: string[]|null;\n\n /**\n * If true then this directive is actually a component; otherwise it is not.\n */\n isComponent: boolean;\n}\n\nexport interface R3PipeDependencyMetadata extends R3TemplateDependency {\n kind: R3TemplateDependencyKind.Pipe;\n\n name: string;\n}\n\nexport interface R3NgModuleDependencyMetadata extends R3TemplateDependency {\n kind: R3TemplateDependencyKind.NgModule;\n}\n\n/**\n * Information needed to compile a query (view or content).\n */\nexport interface R3QueryMetadata {\n /**\n * Name of the property on the class to update with query results.\n */\n propertyName: string;\n\n /**\n * Whether to read only the first matching result, or an array of results.\n */\n first: boolean;\n\n /**\n * Either an expression representing a type or `InjectionToken` for the query\n * predicate, or a set of string selectors.\n */\n predicate: MaybeForwardRefExpression|string[];\n\n /**\n * Whether to include only direct children or all descendants.\n */\n descendants: boolean;\n\n /**\n * If the `QueryList` should fire change event only if actual change to query was computed (vs old\n * behavior where the change was fired whenever the query was recomputed, even if the recomputed\n * query resulted in the same list.)\n */\n emitDistinctChangesOnly: boolean;\n\n /**\n * An expression representing a type to read from each matched node, or null if the default value\n * for a given node is to be returned.\n */\n read: o.Expression|null;\n\n /**\n * Whether or not this query should collect only static results.\n *\n * If static is true, the query's results will be set on the component after nodes are created,\n * but before change detection runs. This means that any results that relied upon change detection\n * to run (e.g. results inside *ngIf or *ngFor views) will not be collected. Query results are\n * available in the ngOnInit hook.\n *\n * If static is false, the query's results will be set on the component after change detection\n * runs. This means that the query results can contain nodes inside *ngIf or *ngFor views, but\n * the results will not be available in the ngOnInit hook (only in the ngAfterContentInit for\n * content hooks and ngAfterViewInit for view hooks).\n */\n static: boolean;\n}\n\n/**\n * Mappings indicating how the class interacts with its\n * host element (host bindings, listeners, etc).\n */\nexport interface R3HostMetadata {\n /**\n * A mapping of attribute binding keys to `o.Expression`s.\n */\n attributes: {[key: string]: o.Expression};\n\n /**\n * A mapping of event binding keys to unparsed expressions.\n */\n listeners: {[key: string]: string};\n\n /**\n * A mapping of property binding keys to unparsed expressions.\n */\n properties: {[key: string]: string};\n\n specialAttributes: {styleAttr?: string; classAttr?: string;};\n}\n\n/**\n * Information needed to compile a host directive for the render3 runtime.\n */\nexport interface R3HostDirectiveMetadata {\n /** An expression representing the host directive class itself. */\n directive: R3Reference;\n\n /** Whether the expression referring to the host directive is a forward reference. */\n isForwardReference: boolean;\n\n /** Inputs from the host directive that will be exposed on the host. */\n inputs: {[publicName: string]: string}|null;\n\n /** Outputs from the host directive that will be exposed on the host. */\n outputs: {[publicName: string]: string}|null;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {SecurityContext} from '../core';\nimport {ParseSourceSpan} from '../parse_util';\n\nexport class ParserError {\n public message: string;\n constructor(\n message: string, public input: string, public errLocation: string, public ctxLocation?: any) {\n this.message = `Parser Error: ${message} ${errLocation} [${input}] in ${ctxLocation}`;\n }\n}\n\nexport class ParseSpan {\n constructor(public start: number, public end: number) {}\n toAbsolute(absoluteOffset: number): AbsoluteSourceSpan {\n return new AbsoluteSourceSpan(absoluteOffset + this.start, absoluteOffset + this.end);\n }\n}\n\nexport abstract class AST {\n constructor(\n public span: ParseSpan,\n /**\n * Absolute location of the expression AST in a source code file.\n */\n public sourceSpan: AbsoluteSourceSpan) {}\n\n abstract visit(visitor: AstVisitor, context?: any): any;\n\n toString(): string {\n return 'AST';\n }\n}\n\nexport abstract class ASTWithName extends AST {\n constructor(\n span: ParseSpan, sourceSpan: AbsoluteSourceSpan, public nameSpan: AbsoluteSourceSpan) {\n super(span, sourceSpan);\n }\n}\n\nexport class EmptyExpr extends AST {\n override visit(visitor: AstVisitor, context: any = null) {\n // do nothing\n }\n}\n\nexport class ImplicitReceiver extends AST {\n override visit(visitor: AstVisitor, context: any = null): any {\n return visitor.visitImplicitReceiver(this, context);\n }\n}\n\n/**\n * Receiver when something is accessed through `this` (e.g. `this.foo`). Note that this class\n * inherits from `ImplicitReceiver`, because accessing something through `this` is treated the\n * same as accessing it implicitly inside of an Angular template (e.g. `[attr.title]=\"this.title\"`\n * is the same as `[attr.title]=\"title\"`.). Inheriting allows for the `this` accesses to be treated\n * the same as implicit ones, except for a couple of exceptions like `$event` and `$any`.\n * TODO: we should find a way for this class not to extend from `ImplicitReceiver` in the future.\n */\nexport class ThisReceiver extends ImplicitReceiver {\n override visit(visitor: AstVisitor, context: any = null): any {\n return visitor.visitThisReceiver?.(this, context);\n }\n}\n\n/**\n * Multiple expressions separated by a semicolon.\n */\nexport class Chain extends AST {\n constructor(span: ParseSpan, sourceSpan: AbsoluteSourceSpan, public expressions: any[]) {\n super(span, sourceSpan);\n }\n override visit(visitor: AstVisitor, context: any = null): any {\n return visitor.visitChain(this, context);\n }\n}\n\nexport class Conditional extends AST {\n constructor(\n span: ParseSpan, sourceSpan: AbsoluteSourceSpan, public condition: AST, public trueExp: AST,\n public falseExp: AST) {\n super(span, sourceSpan);\n }\n override visit(visitor: AstVisitor, context: any = null): any {\n return visitor.visitConditional(this, context);\n }\n}\n\nexport class PropertyRead extends ASTWithName {\n constructor(\n span: ParseSpan, sourceSpan: AbsoluteSourceSpan, nameSpan: AbsoluteSourceSpan,\n public receiver: AST, public name: string) {\n super(span, sourceSpan, nameSpan);\n }\n override visit(visitor: AstVisitor, context: any = null): any {\n return visitor.visitPropertyRead(this, context);\n }\n}\n\nexport class PropertyWrite extends ASTWithName {\n constructor(\n span: ParseSpan, sourceSpan: AbsoluteSourceSpan, nameSpan: AbsoluteSourceSpan,\n public receiver: AST, public name: string, public value: AST) {\n super(span, sourceSpan, nameSpan);\n }\n override visit(visitor: AstVisitor, context: any = null): any {\n return visitor.visitPropertyWrite(this, context);\n }\n}\n\nexport class SafePropertyRead extends ASTWithName {\n constructor(\n span: ParseSpan, sourceSpan: AbsoluteSourceSpan, nameSpan: AbsoluteSourceSpan,\n public receiver: AST, public name: string) {\n super(span, sourceSpan, nameSpan);\n }\n override visit(visitor: AstVisitor, context: any = null): any {\n return visitor.visitSafePropertyRead(this, context);\n }\n}\n\nexport class KeyedRead extends AST {\n constructor(\n span: ParseSpan, sourceSpan: AbsoluteSourceSpan, public receiver: AST, public key: AST) {\n super(span, sourceSpan);\n }\n override visit(visitor: AstVisitor, context: any = null): any {\n return visitor.visitKeyedRead(this, context);\n }\n}\n\nexport class SafeKeyedRead extends AST {\n constructor(\n span: ParseSpan, sourceSpan: AbsoluteSourceSpan, public receiver: AST, public key: AST) {\n super(span, sourceSpan);\n }\n override visit(visitor: AstVisitor, context: any = null): any {\n return visitor.visitSafeKeyedRead(this, context);\n }\n}\n\nexport class KeyedWrite extends AST {\n constructor(\n span: ParseSpan, sourceSpan: AbsoluteSourceSpan, public receiver: AST, public key: AST,\n public value: AST) {\n super(span, sourceSpan);\n }\n override visit(visitor: AstVisitor, context: any = null): any {\n return visitor.visitKeyedWrite(this, context);\n }\n}\n\nexport class BindingPipe extends ASTWithName {\n constructor(\n span: ParseSpan, sourceSpan: AbsoluteSourceSpan, public exp: AST, public name: string,\n public args: any[], nameSpan: AbsoluteSourceSpan) {\n super(span, sourceSpan, nameSpan);\n }\n override visit(visitor: AstVisitor, context: any = null): any {\n return visitor.visitPipe(this, context);\n }\n}\n\nexport class LiteralPrimitive extends AST {\n constructor(span: ParseSpan, sourceSpan: AbsoluteSourceSpan, public value: any) {\n super(span, sourceSpan);\n }\n override visit(visitor: AstVisitor, context: any = null): any {\n return visitor.visitLiteralPrimitive(this, context);\n }\n}\n\nexport class LiteralArray extends AST {\n constructor(span: ParseSpan, sourceSpan: AbsoluteSourceSpan, public expressions: any[]) {\n super(span, sourceSpan);\n }\n override visit(visitor: AstVisitor, context: any = null): any {\n return visitor.visitLiteralArray(this, context);\n }\n}\n\nexport type LiteralMapKey = {\n key: string; quoted: boolean;\n};\n\nexport class LiteralMap extends AST {\n constructor(\n span: ParseSpan, sourceSpan: AbsoluteSourceSpan, public keys: LiteralMapKey[],\n public values: any[]) {\n super(span, sourceSpan);\n }\n override visit(visitor: AstVisitor, context: any = null): any {\n return visitor.visitLiteralMap(this, context);\n }\n}\n\nexport class Interpolation extends AST {\n constructor(\n span: ParseSpan, sourceSpan: AbsoluteSourceSpan, public strings: any[],\n public expressions: any[]) {\n super(span, sourceSpan);\n }\n override visit(visitor: AstVisitor, context: any = null): any {\n return visitor.visitInterpolation(this, context);\n }\n}\n\nexport class Binary extends AST {\n constructor(\n span: ParseSpan, sourceSpan: AbsoluteSourceSpan, public operation: string, public left: AST,\n public right: AST) {\n super(span, sourceSpan);\n }\n override visit(visitor: AstVisitor, context: any = null): any {\n return visitor.visitBinary(this, context);\n }\n}\n\n/**\n * For backwards compatibility reasons, `Unary` inherits from `Binary` and mimics the binary AST\n * node that was originally used. This inheritance relation can be deleted in some future major,\n * after consumers have been given a chance to fully support Unary.\n */\nexport class Unary extends Binary {\n // Redeclare the properties that are inherited from `Binary` as `never`, as consumers should not\n // depend on these fields when operating on `Unary`.\n override left: never = null as never;\n override right: never = null as never;\n override operation: never = null as never;\n\n /**\n * Creates a unary minus expression \"-x\", represented as `Binary` using \"0 - x\".\n */\n static createMinus(span: ParseSpan, sourceSpan: AbsoluteSourceSpan, expr: AST): Unary {\n return new Unary(\n span, sourceSpan, '-', expr, '-', new LiteralPrimitive(span, sourceSpan, 0), expr);\n }\n\n /**\n * Creates a unary plus expression \"+x\", represented as `Binary` using \"x - 0\".\n */\n static createPlus(span: ParseSpan, sourceSpan: AbsoluteSourceSpan, expr: AST): Unary {\n return new Unary(\n span, sourceSpan, '+', expr, '-', expr, new LiteralPrimitive(span, sourceSpan, 0));\n }\n\n /**\n * During the deprecation period this constructor is private, to avoid consumers from creating\n * a `Unary` with the fallback properties for `Binary`.\n */\n private constructor(\n span: ParseSpan, sourceSpan: AbsoluteSourceSpan, public operator: string, public expr: AST,\n binaryOp: string, binaryLeft: AST, binaryRight: AST) {\n super(span, sourceSpan, binaryOp, binaryLeft, binaryRight);\n }\n\n override visit(visitor: AstVisitor, context: any = null): any {\n if (visitor.visitUnary !== undefined) {\n return visitor.visitUnary(this, context);\n }\n return visitor.visitBinary(this, context);\n }\n}\n\nexport class PrefixNot extends AST {\n constructor(span: ParseSpan, sourceSpan: AbsoluteSourceSpan, public expression: AST) {\n super(span, sourceSpan);\n }\n override visit(visitor: AstVisitor, context: any = null): any {\n return visitor.visitPrefixNot(this, context);\n }\n}\n\nexport class NonNullAssert extends AST {\n constructor(span: ParseSpan, sourceSpan: AbsoluteSourceSpan, public expression: AST) {\n super(span, sourceSpan);\n }\n override visit(visitor: AstVisitor, context: any = null): any {\n return visitor.visitNonNullAssert(this, context);\n }\n}\n\nexport class Call extends AST {\n constructor(\n span: ParseSpan, sourceSpan: AbsoluteSourceSpan, public receiver: AST, public args: AST[],\n public argumentSpan: AbsoluteSourceSpan) {\n super(span, sourceSpan);\n }\n override visit(visitor: AstVisitor, context: any = null): any {\n return visitor.visitCall(this, context);\n }\n}\n\nexport class SafeCall extends AST {\n constructor(\n span: ParseSpan, sourceSpan: AbsoluteSourceSpan, public receiver: AST, public args: AST[],\n public argumentSpan: AbsoluteSourceSpan) {\n super(span, sourceSpan);\n }\n override visit(visitor: AstVisitor, context: any = null): any {\n return visitor.visitSafeCall(this, context);\n }\n}\n\n\n/**\n * Records the absolute position of a text span in a source file, where `start` and `end` are the\n * starting and ending byte offsets, respectively, of the text span in a source file.\n */\nexport class AbsoluteSourceSpan {\n constructor(public readonly start: number, public readonly end: number) {}\n}\n\nexport class ASTWithSource extends AST {\n constructor(\n public ast: AST, public source: string|null, public location: string, absoluteOffset: number,\n public errors: ParserError[]) {\n super(\n new ParseSpan(0, source === null ? 0 : source.length),\n new AbsoluteSourceSpan(\n absoluteOffset, source === null ? absoluteOffset : absoluteOffset + source.length));\n }\n override visit(visitor: AstVisitor, context: any = null): any {\n if (visitor.visitASTWithSource) {\n return visitor.visitASTWithSource(this, context);\n }\n return this.ast.visit(visitor, context);\n }\n override toString(): string {\n return `${this.source} in ${this.location}`;\n }\n}\n\n/**\n * TemplateBinding refers to a particular key-value pair in a microsyntax\n * expression. A few examples are:\n *\n * |---------------------|--------------|---------|--------------|\n * | expression | key | value | binding type |\n * |---------------------|--------------|---------|--------------|\n * | 1. let item | item | null | variable |\n * | 2. of items | ngForOf | items | expression |\n * | 3. let x = y | x | y | variable |\n * | 4. index as i | i | index | variable |\n * | 5. trackBy: func | ngForTrackBy | func | expression |\n * | 6. *ngIf=\"cond\" | ngIf | cond | expression |\n * |---------------------|--------------|---------|--------------|\n *\n * (6) is a notable exception because it is a binding from the template key in\n * the LHS of a HTML attribute to the expression in the RHS. All other bindings\n * in the example above are derived solely from the RHS.\n */\nexport type TemplateBinding = VariableBinding|ExpressionBinding;\n\nexport class VariableBinding {\n /**\n * @param sourceSpan entire span of the binding.\n * @param key name of the LHS along with its span.\n * @param value optional value for the RHS along with its span.\n */\n constructor(\n public readonly sourceSpan: AbsoluteSourceSpan,\n public readonly key: TemplateBindingIdentifier,\n public readonly value: TemplateBindingIdentifier|null) {}\n}\n\nexport class ExpressionBinding {\n /**\n * @param sourceSpan entire span of the binding.\n * @param key binding name, like ngForOf, ngForTrackBy, ngIf, along with its\n * span. Note that the length of the span may not be the same as\n * `key.source.length`. For example,\n * 1. key.source = ngFor, key.span is for \"ngFor\"\n * 2. key.source = ngForOf, key.span is for \"of\"\n * 3. key.source = ngForTrackBy, key.span is for \"trackBy\"\n * @param value optional expression for the RHS.\n */\n constructor(\n public readonly sourceSpan: AbsoluteSourceSpan,\n public readonly key: TemplateBindingIdentifier, public readonly value: ASTWithSource|null) {}\n}\n\nexport interface TemplateBindingIdentifier {\n source: string;\n span: AbsoluteSourceSpan;\n}\n\nexport interface AstVisitor {\n /**\n * The `visitUnary` method is declared as optional for backwards compatibility. In an upcoming\n * major release, this method will be made required.\n */\n visitUnary?(ast: Unary, context: any): any;\n visitBinary(ast: Binary, context: any): any;\n visitChain(ast: Chain, context: any): any;\n visitConditional(ast: Conditional, context: any): any;\n /**\n * The `visitThisReceiver` method is declared as optional for backwards compatibility.\n * In an upcoming major release, this method will be made required.\n */\n visitThisReceiver?(ast: ThisReceiver, context: any): any;\n visitImplicitReceiver(ast: ImplicitReceiver, context: any): any;\n visitInterpolation(ast: Interpolation, context: any): any;\n visitKeyedRead(ast: KeyedRead, context: any): any;\n visitKeyedWrite(ast: KeyedWrite, context: any): any;\n visitLiteralArray(ast: LiteralArray, context: any): any;\n visitLiteralMap(ast: LiteralMap, context: any): any;\n visitLiteralPrimitive(ast: LiteralPrimitive, context: any): any;\n visitPipe(ast: BindingPipe, context: any): any;\n visitPrefixNot(ast: PrefixNot, context: any): any;\n visitNonNullAssert(ast: NonNullAssert, context: any): any;\n visitPropertyRead(ast: PropertyRead, context: any): any;\n visitPropertyWrite(ast: PropertyWrite, context: any): any;\n visitSafePropertyRead(ast: SafePropertyRead, context: any): any;\n visitSafeKeyedRead(ast: SafeKeyedRead, context: any): any;\n visitCall(ast: Call, context: any): any;\n visitSafeCall(ast: SafeCall, context: any): any;\n visitASTWithSource?(ast: ASTWithSource, context: any): any;\n /**\n * This function is optionally defined to allow classes that implement this\n * interface to selectively decide if the specified `ast` should be visited.\n * @param ast node to visit\n * @param context context that gets passed to the node and all its children\n */\n visit?(ast: AST, context?: any): any;\n}\n\nexport class RecursiveAstVisitor implements AstVisitor {\n visit(ast: AST, context?: any): any {\n // The default implementation just visits every node.\n // Classes that extend RecursiveAstVisitor should override this function\n // to selectively visit the specified node.\n ast.visit(this, context);\n }\n visitUnary(ast: Unary, context: any): any {\n this.visit(ast.expr, context);\n }\n visitBinary(ast: Binary, context: any): any {\n this.visit(ast.left, context);\n this.visit(ast.right, context);\n }\n visitChain(ast: Chain, context: any): any {\n this.visitAll(ast.expressions, context);\n }\n visitConditional(ast: Conditional, context: any): any {\n this.visit(ast.condition, context);\n this.visit(ast.trueExp, context);\n this.visit(ast.falseExp, context);\n }\n visitPipe(ast: BindingPipe, context: any): any {\n this.visit(ast.exp, context);\n this.visitAll(ast.args, context);\n }\n visitImplicitReceiver(ast: ThisReceiver, context: any): any {}\n visitThisReceiver(ast: ThisReceiver, context: any): any {}\n visitInterpolation(ast: Interpolation, context: any): any {\n this.visitAll(ast.expressions, context);\n }\n visitKeyedRead(ast: KeyedRead, context: any): any {\n this.visit(ast.receiver, context);\n this.visit(ast.key, context);\n }\n visitKeyedWrite(ast: KeyedWrite, context: any): any {\n this.visit(ast.receiver, context);\n this.visit(ast.key, context);\n this.visit(ast.value, context);\n }\n visitLiteralArray(ast: LiteralArray, context: any): any {\n this.visitAll(ast.expressions, context);\n }\n visitLiteralMap(ast: LiteralMap, context: any): any {\n this.visitAll(ast.values, context);\n }\n visitLiteralPrimitive(ast: LiteralPrimitive, context: any): any {}\n visitPrefixNot(ast: PrefixNot, context: any): any {\n this.visit(ast.expression, context);\n }\n visitNonNullAssert(ast: NonNullAssert, context: any): any {\n this.visit(ast.expression, context);\n }\n visitPropertyRead(ast: PropertyRead, context: any): any {\n this.visit(ast.receiver, context);\n }\n visitPropertyWrite(ast: PropertyWrite, context: any): any {\n this.visit(ast.receiver, context);\n this.visit(ast.value, context);\n }\n visitSafePropertyRead(ast: SafePropertyRead, context: any): any {\n this.visit(ast.receiver, context);\n }\n visitSafeKeyedRead(ast: SafeKeyedRead, context: any): any {\n this.visit(ast.receiver, context);\n this.visit(ast.key, context);\n }\n visitCall(ast: Call, context: any): any {\n this.visit(ast.receiver, context);\n this.visitAll(ast.args, context);\n }\n visitSafeCall(ast: SafeCall, context: any): any {\n this.visit(ast.receiver, context);\n this.visitAll(ast.args, context);\n }\n // This is not part of the AstVisitor interface, just a helper method\n visitAll(asts: AST[], context: any): any {\n for (const ast of asts) {\n this.visit(ast, context);\n }\n }\n}\n\nexport class AstTransformer implements AstVisitor {\n visitImplicitReceiver(ast: ImplicitReceiver, context: any): AST {\n return ast;\n }\n\n visitThisReceiver(ast: ThisReceiver, context: any): AST {\n return ast;\n }\n\n visitInterpolation(ast: Interpolation, context: any): AST {\n return new Interpolation(ast.span, ast.sourceSpan, ast.strings, this.visitAll(ast.expressions));\n }\n\n visitLiteralPrimitive(ast: LiteralPrimitive, context: any): AST {\n return new LiteralPrimitive(ast.span, ast.sourceSpan, ast.value);\n }\n\n visitPropertyRead(ast: PropertyRead, context: any): AST {\n return new PropertyRead(\n ast.span, ast.sourceSpan, ast.nameSpan, ast.receiver.visit(this), ast.name);\n }\n\n visitPropertyWrite(ast: PropertyWrite, context: any): AST {\n return new PropertyWrite(\n ast.span, ast.sourceSpan, ast.nameSpan, ast.receiver.visit(this), ast.name,\n ast.value.visit(this));\n }\n\n visitSafePropertyRead(ast: SafePropertyRead, context: any): AST {\n return new SafePropertyRead(\n ast.span, ast.sourceSpan, ast.nameSpan, ast.receiver.visit(this), ast.name);\n }\n\n visitLiteralArray(ast: LiteralArray, context: any): AST {\n return new LiteralArray(ast.span, ast.sourceSpan, this.visitAll(ast.expressions));\n }\n\n visitLiteralMap(ast: LiteralMap, context: any): AST {\n return new LiteralMap(ast.span, ast.sourceSpan, ast.keys, this.visitAll(ast.values));\n }\n\n visitUnary(ast: Unary, context: any): AST {\n switch (ast.operator) {\n case '+':\n return Unary.createPlus(ast.span, ast.sourceSpan, ast.expr.visit(this));\n case '-':\n return Unary.createMinus(ast.span, ast.sourceSpan, ast.expr.visit(this));\n default:\n throw new Error(`Unknown unary operator ${ast.operator}`);\n }\n }\n\n visitBinary(ast: Binary, context: any): AST {\n return new Binary(\n ast.span, ast.sourceSpan, ast.operation, ast.left.visit(this), ast.right.visit(this));\n }\n\n visitPrefixNot(ast: PrefixNot, context: any): AST {\n return new PrefixNot(ast.span, ast.sourceSpan, ast.expression.visit(this));\n }\n\n visitNonNullAssert(ast: NonNullAssert, context: any): AST {\n return new NonNullAssert(ast.span, ast.sourceSpan, ast.expression.visit(this));\n }\n\n visitConditional(ast: Conditional, context: any): AST {\n return new Conditional(\n ast.span, ast.sourceSpan, ast.condition.visit(this), ast.trueExp.visit(this),\n ast.falseExp.visit(this));\n }\n\n visitPipe(ast: BindingPipe, context: any): AST {\n return new BindingPipe(\n ast.span, ast.sourceSpan, ast.exp.visit(this), ast.name, this.visitAll(ast.args),\n ast.nameSpan);\n }\n\n visitKeyedRead(ast: KeyedRead, context: any): AST {\n return new KeyedRead(ast.span, ast.sourceSpan, ast.receiver.visit(this), ast.key.visit(this));\n }\n\n visitKeyedWrite(ast: KeyedWrite, context: any): AST {\n return new KeyedWrite(\n ast.span, ast.sourceSpan, ast.receiver.visit(this), ast.key.visit(this),\n ast.value.visit(this));\n }\n\n visitCall(ast: Call, context: any): AST {\n return new Call(\n ast.span, ast.sourceSpan, ast.receiver.visit(this), this.visitAll(ast.args),\n ast.argumentSpan);\n }\n\n visitSafeCall(ast: SafeCall, context: any): AST {\n return new SafeCall(\n ast.span, ast.sourceSpan, ast.receiver.visit(this), this.visitAll(ast.args),\n ast.argumentSpan);\n }\n\n visitAll(asts: any[]): any[] {\n const res = [];\n for (let i = 0; i < asts.length; ++i) {\n res[i] = asts[i].visit(this);\n }\n return res;\n }\n\n visitChain(ast: Chain, context: any): AST {\n return new Chain(ast.span, ast.sourceSpan, this.visitAll(ast.expressions));\n }\n\n visitSafeKeyedRead(ast: SafeKeyedRead, context: any): AST {\n return new SafeKeyedRead(\n ast.span, ast.sourceSpan, ast.receiver.visit(this), ast.key.visit(this));\n }\n}\n\n// A transformer that only creates new nodes if the transformer makes a change or\n// a change is made a child node.\nexport class AstMemoryEfficientTransformer implements AstVisitor {\n visitImplicitReceiver(ast: ImplicitReceiver, context: any): AST {\n return ast;\n }\n\n visitThisReceiver(ast: ThisReceiver, context: any): AST {\n return ast;\n }\n\n visitInterpolation(ast: Interpolation, context: any): Interpolation {\n const expressions = this.visitAll(ast.expressions);\n if (expressions !== ast.expressions)\n return new Interpolation(ast.span, ast.sourceSpan, ast.strings, expressions);\n return ast;\n }\n\n visitLiteralPrimitive(ast: LiteralPrimitive, context: any): AST {\n return ast;\n }\n\n visitPropertyRead(ast: PropertyRead, context: any): AST {\n const receiver = ast.receiver.visit(this);\n if (receiver !== ast.receiver) {\n return new PropertyRead(ast.span, ast.sourceSpan, ast.nameSpan, receiver, ast.name);\n }\n return ast;\n }\n\n visitPropertyWrite(ast: PropertyWrite, context: any): AST {\n const receiver = ast.receiver.visit(this);\n const value = ast.value.visit(this);\n if (receiver !== ast.receiver || value !== ast.value) {\n return new PropertyWrite(ast.span, ast.sourceSpan, ast.nameSpan, receiver, ast.name, value);\n }\n return ast;\n }\n\n visitSafePropertyRead(ast: SafePropertyRead, context: any): AST {\n const receiver = ast.receiver.visit(this);\n if (receiver !== ast.receiver) {\n return new SafePropertyRead(ast.span, ast.sourceSpan, ast.nameSpan, receiver, ast.name);\n }\n return ast;\n }\n\n visitLiteralArray(ast: LiteralArray, context: any): AST {\n const expressions = this.visitAll(ast.expressions);\n if (expressions !== ast.expressions) {\n return new LiteralArray(ast.span, ast.sourceSpan, expressions);\n }\n return ast;\n }\n\n visitLiteralMap(ast: LiteralMap, context: any): AST {\n const values = this.visitAll(ast.values);\n if (values !== ast.values) {\n return new LiteralMap(ast.span, ast.sourceSpan, ast.keys, values);\n }\n return ast;\n }\n\n visitUnary(ast: Unary, context: any): AST {\n const expr = ast.expr.visit(this);\n if (expr !== ast.expr) {\n switch (ast.operator) {\n case '+':\n return Unary.createPlus(ast.span, ast.sourceSpan, expr);\n case '-':\n return Unary.createMinus(ast.span, ast.sourceSpan, expr);\n default:\n throw new Error(`Unknown unary operator ${ast.operator}`);\n }\n }\n return ast;\n }\n\n visitBinary(ast: Binary, context: any): AST {\n const left = ast.left.visit(this);\n const right = ast.right.visit(this);\n if (left !== ast.left || right !== ast.right) {\n return new Binary(ast.span, ast.sourceSpan, ast.operation, left, right);\n }\n return ast;\n }\n\n visitPrefixNot(ast: PrefixNot, context: any): AST {\n const expression = ast.expression.visit(this);\n if (expression !== ast.expression) {\n return new PrefixNot(ast.span, ast.sourceSpan, expression);\n }\n return ast;\n }\n\n visitNonNullAssert(ast: NonNullAssert, context: any): AST {\n const expression = ast.expression.visit(this);\n if (expression !== ast.expression) {\n return new NonNullAssert(ast.span, ast.sourceSpan, expression);\n }\n return ast;\n }\n\n visitConditional(ast: Conditional, context: any): AST {\n const condition = ast.condition.visit(this);\n const trueExp = ast.trueExp.visit(this);\n const falseExp = ast.falseExp.visit(this);\n if (condition !== ast.condition || trueExp !== ast.trueExp || falseExp !== ast.falseExp) {\n return new Conditional(ast.span, ast.sourceSpan, condition, trueExp, falseExp);\n }\n return ast;\n }\n\n visitPipe(ast: BindingPipe, context: any): AST {\n const exp = ast.exp.visit(this);\n const args = this.visitAll(ast.args);\n if (exp !== ast.exp || args !== ast.args) {\n return new BindingPipe(ast.span, ast.sourceSpan, exp, ast.name, args, ast.nameSpan);\n }\n return ast;\n }\n\n visitKeyedRead(ast: KeyedRead, context: any): AST {\n const obj = ast.receiver.visit(this);\n const key = ast.key.visit(this);\n if (obj !== ast.receiver || key !== ast.key) {\n return new KeyedRead(ast.span, ast.sourceSpan, obj, key);\n }\n return ast;\n }\n\n visitKeyedWrite(ast: KeyedWrite, context: any): AST {\n const obj = ast.receiver.visit(this);\n const key = ast.key.visit(this);\n const value = ast.value.visit(this);\n if (obj !== ast.receiver || key !== ast.key || value !== ast.value) {\n return new KeyedWrite(ast.span, ast.sourceSpan, obj, key, value);\n }\n return ast;\n }\n\n visitAll(asts: any[]): any[] {\n const res = [];\n let modified = false;\n for (let i = 0; i < asts.length; ++i) {\n const original = asts[i];\n const value = original.visit(this);\n res[i] = value;\n modified = modified || value !== original;\n }\n return modified ? res : asts;\n }\n\n visitChain(ast: Chain, context: any): AST {\n const expressions = this.visitAll(ast.expressions);\n if (expressions !== ast.expressions) {\n return new Chain(ast.span, ast.sourceSpan, expressions);\n }\n return ast;\n }\n\n\n visitCall(ast: Call, context: any): AST {\n const receiver = ast.receiver.visit(this);\n const args = this.visitAll(ast.args);\n if (receiver !== ast.receiver || args !== ast.args) {\n return new Call(ast.span, ast.sourceSpan, receiver, args, ast.argumentSpan);\n }\n return ast;\n }\n\n visitSafeCall(ast: SafeCall, context: any): AST {\n const receiver = ast.receiver.visit(this);\n const args = this.visitAll(ast.args);\n if (receiver !== ast.receiver || args !== ast.args) {\n return new SafeCall(ast.span, ast.sourceSpan, receiver, args, ast.argumentSpan);\n }\n return ast;\n }\n\n visitSafeKeyedRead(ast: SafeKeyedRead, context: any): AST {\n const obj = ast.receiver.visit(this);\n const key = ast.key.visit(this);\n if (obj !== ast.receiver || key !== ast.key) {\n return new SafeKeyedRead(ast.span, ast.sourceSpan, obj, key);\n }\n return ast;\n }\n}\n\n// Bindings\n\nexport class ParsedProperty {\n public readonly isLiteral: boolean;\n public readonly isAnimation: boolean;\n\n constructor(\n public name: string, public expression: ASTWithSource, public type: ParsedPropertyType,\n public sourceSpan: ParseSourceSpan, readonly keySpan: ParseSourceSpan,\n public valueSpan: ParseSourceSpan|undefined) {\n this.isLiteral = this.type === ParsedPropertyType.LITERAL_ATTR;\n this.isAnimation = this.type === ParsedPropertyType.ANIMATION;\n }\n}\n\nexport enum ParsedPropertyType {\n DEFAULT,\n LITERAL_ATTR,\n ANIMATION\n}\n\nexport const enum ParsedEventType {\n // DOM or Directive event\n Regular,\n // Animation specific event\n Animation,\n}\n\nexport class ParsedEvent {\n // Regular events have a target\n // Animation events have a phase\n constructor(\n public name: string, public targetOrPhase: string, public type: ParsedEventType,\n public handler: ASTWithSource, public sourceSpan: ParseSourceSpan,\n public handlerSpan: ParseSourceSpan, readonly keySpan: ParseSourceSpan) {}\n}\n\n/**\n * ParsedVariable represents a variable declaration in a microsyntax expression.\n */\nexport class ParsedVariable {\n constructor(\n public readonly name: string, public readonly value: string,\n public readonly sourceSpan: ParseSourceSpan, public readonly keySpan: ParseSourceSpan,\n public readonly valueSpan?: ParseSourceSpan) {}\n}\n\nexport const enum BindingType {\n // A regular binding to a property (e.g. `[property]=\"expression\"`).\n Property,\n // A binding to an element attribute (e.g. `[attr.name]=\"expression\"`).\n Attribute,\n // A binding to a CSS class (e.g. `[class.name]=\"condition\"`).\n Class,\n // A binding to a style rule (e.g. `[style.rule]=\"expression\"`).\n Style,\n // A binding to an animation reference (e.g. `[animate.key]=\"expression\"`).\n Animation,\n}\n\nexport class BoundElementProperty {\n constructor(\n public name: string, public type: BindingType, public securityContext: SecurityContext,\n public value: ASTWithSource, public unit: string|null, public sourceSpan: ParseSourceSpan,\n readonly keySpan: ParseSourceSpan|undefined, public valueSpan: ParseSourceSpan|undefined) {}\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport * as cdAst from '../expression_parser/ast';\nimport * as o from '../output/output_ast';\nimport {ParseSourceSpan} from '../parse_util';\n\nexport class EventHandlerVars {\n static event = o.variable('$event');\n}\n\nexport interface LocalResolver {\n getLocal(name: string): o.Expression|null;\n notifyImplicitReceiverUse(): void;\n globals?: Set;\n maybeRestoreView(): void;\n}\n\n/**\n * Converts the given expression AST into an executable output AST, assuming the expression is\n * used in an action binding (e.g. an event handler).\n */\nexport function convertActionBinding(\n localResolver: LocalResolver|null, implicitReceiver: o.Expression, action: cdAst.AST,\n bindingId: string, baseSourceSpan?: ParseSourceSpan, implicitReceiverAccesses?: Set,\n globals?: Set): o.Statement[] {\n if (!localResolver) {\n localResolver = new DefaultLocalResolver(globals);\n }\n const actionWithoutBuiltins = convertPropertyBindingBuiltins(\n {\n createLiteralArrayConverter: (argCount: number) => {\n // Note: no caching for literal arrays in actions.\n return (args: o.Expression[]) => o.literalArr(args);\n },\n createLiteralMapConverter: (keys: {key: string, quoted: boolean}[]) => {\n // Note: no caching for literal maps in actions.\n return (values: o.Expression[]) => {\n const entries = keys.map((k, i) => ({\n key: k.key,\n value: values[i],\n quoted: k.quoted,\n }));\n return o.literalMap(entries);\n };\n },\n createPipeConverter: (name: string) => {\n throw new Error(`Illegal State: Actions are not allowed to contain pipes. Pipe: ${name}`);\n }\n },\n action);\n\n const visitor = new _AstToIrVisitor(\n localResolver, implicitReceiver, bindingId, /* supportsInterpolation */ false, baseSourceSpan,\n implicitReceiverAccesses);\n const actionStmts: o.Statement[] = [];\n flattenStatements(actionWithoutBuiltins.visit(visitor, _Mode.Statement), actionStmts);\n prependTemporaryDecls(visitor.temporaryCount, bindingId, actionStmts);\n\n if (visitor.usesImplicitReceiver) {\n localResolver.notifyImplicitReceiverUse();\n }\n\n const lastIndex = actionStmts.length - 1;\n if (lastIndex >= 0) {\n const lastStatement = actionStmts[lastIndex];\n // Ensure that the value of the last expression statement is returned\n if (lastStatement instanceof o.ExpressionStatement) {\n actionStmts[lastIndex] = new o.ReturnStatement(lastStatement.expr);\n }\n }\n return actionStmts;\n}\n\nexport interface BuiltinConverter {\n (args: o.Expression[]): o.Expression;\n}\n\nexport interface BuiltinConverterFactory {\n createLiteralArrayConverter(argCount: number): BuiltinConverter;\n createLiteralMapConverter(keys: {key: string, quoted: boolean}[]): BuiltinConverter;\n createPipeConverter(name: string, argCount: number): BuiltinConverter;\n}\n\nexport function convertPropertyBindingBuiltins(\n converterFactory: BuiltinConverterFactory, ast: cdAst.AST): cdAst.AST {\n return convertBuiltins(converterFactory, ast);\n}\n\nexport class ConvertPropertyBindingResult {\n constructor(public stmts: o.Statement[], public currValExpr: o.Expression) {}\n}\n\n/**\n * Converts the given expression AST into an executable output AST, assuming the expression\n * is used in property binding. The expression has to be preprocessed via\n * `convertPropertyBindingBuiltins`.\n */\nexport function convertPropertyBinding(\n localResolver: LocalResolver|null, implicitReceiver: o.Expression,\n expressionWithoutBuiltins: cdAst.AST, bindingId: string): ConvertPropertyBindingResult {\n if (!localResolver) {\n localResolver = new DefaultLocalResolver();\n }\n const visitor = new _AstToIrVisitor(\n localResolver, implicitReceiver, bindingId, /* supportsInterpolation */ false);\n const outputExpr: o.Expression = expressionWithoutBuiltins.visit(visitor, _Mode.Expression);\n const stmts: o.Statement[] = getStatementsFromVisitor(visitor, bindingId);\n\n if (visitor.usesImplicitReceiver) {\n localResolver.notifyImplicitReceiverUse();\n }\n\n return new ConvertPropertyBindingResult(stmts, outputExpr);\n}\n\n/**\n * Given some expression, such as a binding or interpolation expression, and a context expression to\n * look values up on, visit each facet of the given expression resolving values from the context\n * expression such that a list of arguments can be derived from the found values that can be used as\n * arguments to an external update instruction.\n *\n * @param localResolver The resolver to use to look up expressions by name appropriately\n * @param contextVariableExpression The expression representing the context variable used to create\n * the final argument expressions\n * @param expressionWithArgumentsToExtract The expression to visit to figure out what values need to\n * be resolved and what arguments list to build.\n * @param bindingId A name prefix used to create temporary variable names if they're needed for the\n * arguments generated\n * @returns An array of expressions that can be passed as arguments to instruction expressions like\n * `o.importExpr(R3.propertyInterpolate).callFn(result)`\n */\nexport function convertUpdateArguments(\n localResolver: LocalResolver, contextVariableExpression: o.Expression,\n expressionWithArgumentsToExtract: cdAst.Interpolation, bindingId: string) {\n const visitor = new _AstToIrVisitor(\n localResolver, contextVariableExpression, bindingId, /* supportsInterpolation */ true);\n const outputExpr = visitor.visitInterpolation(expressionWithArgumentsToExtract, _Mode.Expression);\n\n if (visitor.usesImplicitReceiver) {\n localResolver.notifyImplicitReceiverUse();\n }\n\n const stmts = getStatementsFromVisitor(visitor, bindingId);\n const args = outputExpr.args;\n return {stmts, args};\n}\n\nfunction getStatementsFromVisitor(visitor: _AstToIrVisitor, bindingId: string) {\n const stmts: o.Statement[] = [];\n for (let i = 0; i < visitor.temporaryCount; i++) {\n stmts.push(temporaryDeclaration(bindingId, i));\n }\n return stmts;\n}\n\nfunction convertBuiltins(converterFactory: BuiltinConverterFactory, ast: cdAst.AST): cdAst.AST {\n const visitor = new _BuiltinAstConverter(converterFactory);\n return ast.visit(visitor);\n}\n\nfunction temporaryName(bindingId: string, temporaryNumber: number): string {\n return `tmp_${bindingId}_${temporaryNumber}`;\n}\n\nfunction temporaryDeclaration(bindingId: string, temporaryNumber: number): o.Statement {\n return new o.DeclareVarStmt(temporaryName(bindingId, temporaryNumber));\n}\n\nfunction prependTemporaryDecls(\n temporaryCount: number, bindingId: string, statements: o.Statement[]) {\n for (let i = temporaryCount - 1; i >= 0; i--) {\n statements.unshift(temporaryDeclaration(bindingId, i));\n }\n}\n\nenum _Mode {\n Statement,\n Expression\n}\n\nfunction ensureStatementMode(mode: _Mode, ast: cdAst.AST) {\n if (mode !== _Mode.Statement) {\n throw new Error(`Expected a statement, but saw ${ast}`);\n }\n}\n\nfunction ensureExpressionMode(mode: _Mode, ast: cdAst.AST) {\n if (mode !== _Mode.Expression) {\n throw new Error(`Expected an expression, but saw ${ast}`);\n }\n}\n\nfunction convertToStatementIfNeeded(mode: _Mode, expr: o.Expression): o.Expression|o.Statement {\n if (mode === _Mode.Statement) {\n return expr.toStmt();\n } else {\n return expr;\n }\n}\n\nclass _BuiltinAstConverter extends cdAst.AstTransformer {\n constructor(private _converterFactory: BuiltinConverterFactory) {\n super();\n }\n override visitPipe(ast: cdAst.BindingPipe, context: any): any {\n const args = [ast.exp, ...ast.args].map(ast => ast.visit(this, context));\n return new BuiltinFunctionCall(\n ast.span, ast.sourceSpan, args,\n this._converterFactory.createPipeConverter(ast.name, args.length));\n }\n override visitLiteralArray(ast: cdAst.LiteralArray, context: any): any {\n const args = ast.expressions.map(ast => ast.visit(this, context));\n return new BuiltinFunctionCall(\n ast.span, ast.sourceSpan, args,\n this._converterFactory.createLiteralArrayConverter(ast.expressions.length));\n }\n override visitLiteralMap(ast: cdAst.LiteralMap, context: any): any {\n const args = ast.values.map(ast => ast.visit(this, context));\n\n return new BuiltinFunctionCall(\n ast.span, ast.sourceSpan, args, this._converterFactory.createLiteralMapConverter(ast.keys));\n }\n}\n\nclass _AstToIrVisitor implements cdAst.AstVisitor {\n private _nodeMap = new Map();\n private _resultMap = new Map();\n private _currentTemporary: number = 0;\n public temporaryCount: number = 0;\n public usesImplicitReceiver: boolean = false;\n\n constructor(\n private _localResolver: LocalResolver, private _implicitReceiver: o.Expression,\n private bindingId: string, private supportsInterpolation: boolean,\n private baseSourceSpan?: ParseSourceSpan, private implicitReceiverAccesses?: Set) {}\n\n visitUnary(ast: cdAst.Unary, mode: _Mode): any {\n let op: o.UnaryOperator;\n switch (ast.operator) {\n case '+':\n op = o.UnaryOperator.Plus;\n break;\n case '-':\n op = o.UnaryOperator.Minus;\n break;\n default:\n throw new Error(`Unsupported operator ${ast.operator}`);\n }\n\n return convertToStatementIfNeeded(\n mode,\n new o.UnaryOperatorExpr(\n op, this._visit(ast.expr, _Mode.Expression), undefined,\n this.convertSourceSpan(ast.span)));\n }\n\n visitBinary(ast: cdAst.Binary, mode: _Mode): any {\n let op: o.BinaryOperator;\n switch (ast.operation) {\n case '+':\n op = o.BinaryOperator.Plus;\n break;\n case '-':\n op = o.BinaryOperator.Minus;\n break;\n case '*':\n op = o.BinaryOperator.Multiply;\n break;\n case '/':\n op = o.BinaryOperator.Divide;\n break;\n case '%':\n op = o.BinaryOperator.Modulo;\n break;\n case '&&':\n op = o.BinaryOperator.And;\n break;\n case '||':\n op = o.BinaryOperator.Or;\n break;\n case '==':\n op = o.BinaryOperator.Equals;\n break;\n case '!=':\n op = o.BinaryOperator.NotEquals;\n break;\n case '===':\n op = o.BinaryOperator.Identical;\n break;\n case '!==':\n op = o.BinaryOperator.NotIdentical;\n break;\n case '<':\n op = o.BinaryOperator.Lower;\n break;\n case '>':\n op = o.BinaryOperator.Bigger;\n break;\n case '<=':\n op = o.BinaryOperator.LowerEquals;\n break;\n case '>=':\n op = o.BinaryOperator.BiggerEquals;\n break;\n case '??':\n return this.convertNullishCoalesce(ast, mode);\n default:\n throw new Error(`Unsupported operation ${ast.operation}`);\n }\n\n return convertToStatementIfNeeded(\n mode,\n new o.BinaryOperatorExpr(\n op, this._visit(ast.left, _Mode.Expression), this._visit(ast.right, _Mode.Expression),\n undefined, this.convertSourceSpan(ast.span)));\n }\n\n visitChain(ast: cdAst.Chain, mode: _Mode): any {\n ensureStatementMode(mode, ast);\n return this.visitAll(ast.expressions, mode);\n }\n\n visitConditional(ast: cdAst.Conditional, mode: _Mode): any {\n const value: o.Expression = this._visit(ast.condition, _Mode.Expression);\n return convertToStatementIfNeeded(\n mode,\n value.conditional(\n this._visit(ast.trueExp, _Mode.Expression), this._visit(ast.falseExp, _Mode.Expression),\n this.convertSourceSpan(ast.span)));\n }\n\n visitPipe(ast: cdAst.BindingPipe, mode: _Mode): any {\n throw new Error(\n `Illegal state: Pipes should have been converted into functions. Pipe: ${ast.name}`);\n }\n\n visitImplicitReceiver(ast: cdAst.ImplicitReceiver, mode: _Mode): any {\n ensureExpressionMode(mode, ast);\n this.usesImplicitReceiver = true;\n return this._implicitReceiver;\n }\n\n visitThisReceiver(ast: cdAst.ThisReceiver, mode: _Mode): any {\n return this.visitImplicitReceiver(ast, mode);\n }\n\n visitInterpolation(ast: cdAst.Interpolation, mode: _Mode): InterpolationExpression {\n if (!this.supportsInterpolation) {\n throw new Error('Unexpected interpolation');\n }\n\n ensureExpressionMode(mode, ast);\n let args: o.Expression[] = [];\n for (let i = 0; i < ast.strings.length - 1; i++) {\n args.push(o.literal(ast.strings[i]));\n args.push(this._visit(ast.expressions[i], _Mode.Expression));\n }\n args.push(o.literal(ast.strings[ast.strings.length - 1]));\n\n // If we're dealing with an interpolation of 1 value with an empty prefix and suffix, reduce the\n // args returned to just the value, because we're going to pass it to a special instruction.\n const strings = ast.strings;\n if (strings.length === 2 && strings[0] === '' && strings[1] === '') {\n // Single argument interpolate instructions.\n args = [args[1]];\n } else if (ast.expressions.length >= 9) {\n // 9 or more arguments must be passed to the `interpolateV`-style instructions, which accept\n // an array of arguments\n args = [o.literalArr(args)];\n }\n\n return new InterpolationExpression(args);\n }\n\n visitKeyedRead(ast: cdAst.KeyedRead, mode: _Mode): any {\n const leftMostSafe = this.leftMostSafeNode(ast);\n if (leftMostSafe) {\n return this.convertSafeAccess(ast, leftMostSafe, mode);\n } else {\n return convertToStatementIfNeeded(\n mode,\n this._visit(ast.receiver, _Mode.Expression).key(this._visit(ast.key, _Mode.Expression)));\n }\n }\n\n visitKeyedWrite(ast: cdAst.KeyedWrite, mode: _Mode): any {\n const obj: o.Expression = this._visit(ast.receiver, _Mode.Expression);\n const key: o.Expression = this._visit(ast.key, _Mode.Expression);\n const value: o.Expression = this._visit(ast.value, _Mode.Expression);\n\n if (obj === this._implicitReceiver) {\n this._localResolver.maybeRestoreView();\n }\n\n return convertToStatementIfNeeded(mode, obj.key(key).set(value));\n }\n\n visitLiteralArray(ast: cdAst.LiteralArray, mode: _Mode): any {\n throw new Error(`Illegal State: literal arrays should have been converted into functions`);\n }\n\n visitLiteralMap(ast: cdAst.LiteralMap, mode: _Mode): any {\n throw new Error(`Illegal State: literal maps should have been converted into functions`);\n }\n\n visitLiteralPrimitive(ast: cdAst.LiteralPrimitive, mode: _Mode): any {\n // For literal values of null, undefined, true, or false allow type interference\n // to infer the type.\n const type =\n ast.value === null || ast.value === undefined || ast.value === true || ast.value === true ?\n o.INFERRED_TYPE :\n undefined;\n return convertToStatementIfNeeded(\n mode, o.literal(ast.value, type, this.convertSourceSpan(ast.span)));\n }\n\n private _getLocal(name: string, receiver: cdAst.AST): o.Expression|null {\n if (this._localResolver.globals?.has(name) && receiver instanceof cdAst.ThisReceiver) {\n return null;\n }\n\n return this._localResolver.getLocal(name);\n }\n\n visitPrefixNot(ast: cdAst.PrefixNot, mode: _Mode): any {\n return convertToStatementIfNeeded(mode, o.not(this._visit(ast.expression, _Mode.Expression)));\n }\n\n visitNonNullAssert(ast: cdAst.NonNullAssert, mode: _Mode): any {\n return convertToStatementIfNeeded(mode, this._visit(ast.expression, _Mode.Expression));\n }\n\n visitPropertyRead(ast: cdAst.PropertyRead, mode: _Mode): any {\n const leftMostSafe = this.leftMostSafeNode(ast);\n if (leftMostSafe) {\n return this.convertSafeAccess(ast, leftMostSafe, mode);\n } else {\n let result: any = null;\n const prevUsesImplicitReceiver = this.usesImplicitReceiver;\n const receiver = this._visit(ast.receiver, _Mode.Expression);\n if (receiver === this._implicitReceiver) {\n result = this._getLocal(ast.name, ast.receiver);\n if (result) {\n // Restore the previous \"usesImplicitReceiver\" state since the implicit\n // receiver has been replaced with a resolved local expression.\n this.usesImplicitReceiver = prevUsesImplicitReceiver;\n this.addImplicitReceiverAccess(ast.name);\n }\n }\n if (result == null) {\n result = receiver.prop(ast.name, this.convertSourceSpan(ast.span));\n }\n return convertToStatementIfNeeded(mode, result);\n }\n }\n\n visitPropertyWrite(ast: cdAst.PropertyWrite, mode: _Mode): any {\n const receiver: o.Expression = this._visit(ast.receiver, _Mode.Expression);\n const prevUsesImplicitReceiver = this.usesImplicitReceiver;\n\n let varExpr: o.ReadPropExpr|null = null;\n if (receiver === this._implicitReceiver) {\n const localExpr = this._getLocal(ast.name, ast.receiver);\n if (localExpr) {\n if (localExpr instanceof o.ReadPropExpr) {\n // If the local variable is a property read expression, it's a reference\n // to a 'context.property' value and will be used as the target of the\n // write expression.\n varExpr = localExpr;\n // Restore the previous \"usesImplicitReceiver\" state since the implicit\n // receiver has been replaced with a resolved local expression.\n this.usesImplicitReceiver = prevUsesImplicitReceiver;\n this.addImplicitReceiverAccess(ast.name);\n } else {\n // Otherwise it's an error.\n const receiver = ast.name;\n const value = (ast.value instanceof cdAst.PropertyRead) ? ast.value.name : undefined;\n throw new Error(`Cannot assign value \"${value}\" to template variable \"${\n receiver}\". Template variables are read-only.`);\n }\n }\n }\n // If no local expression could be produced, use the original receiver's\n // property as the target.\n if (varExpr === null) {\n varExpr = receiver.prop(ast.name, this.convertSourceSpan(ast.span));\n }\n return convertToStatementIfNeeded(mode, varExpr.set(this._visit(ast.value, _Mode.Expression)));\n }\n\n visitSafePropertyRead(ast: cdAst.SafePropertyRead, mode: _Mode): any {\n return this.convertSafeAccess(ast, this.leftMostSafeNode(ast), mode);\n }\n\n visitSafeKeyedRead(ast: cdAst.SafeKeyedRead, mode: _Mode): any {\n return this.convertSafeAccess(ast, this.leftMostSafeNode(ast), mode);\n }\n\n visitAll(asts: cdAst.AST[], mode: _Mode): any {\n return asts.map(ast => this._visit(ast, mode));\n }\n\n visitCall(ast: cdAst.Call, mode: _Mode): any {\n const leftMostSafe = this.leftMostSafeNode(ast);\n if (leftMostSafe) {\n return this.convertSafeAccess(ast, leftMostSafe, mode);\n }\n\n const convertedArgs = this.visitAll(ast.args, _Mode.Expression);\n\n if (ast instanceof BuiltinFunctionCall) {\n return convertToStatementIfNeeded(mode, ast.converter(convertedArgs));\n }\n\n const receiver = ast.receiver;\n if (receiver instanceof cdAst.PropertyRead &&\n receiver.receiver instanceof cdAst.ImplicitReceiver &&\n !(receiver.receiver instanceof cdAst.ThisReceiver) && receiver.name === '$any') {\n if (convertedArgs.length !== 1) {\n throw new Error(`Invalid call to $any, expected 1 argument but received ${\n convertedArgs.length || 'none'}`);\n }\n return convertToStatementIfNeeded(mode, convertedArgs[0] as o.Expression);\n }\n\n const call = this._visit(receiver, _Mode.Expression)\n .callFn(convertedArgs, this.convertSourceSpan(ast.span));\n return convertToStatementIfNeeded(mode, call);\n }\n\n visitSafeCall(ast: cdAst.SafeCall, mode: _Mode): any {\n return this.convertSafeAccess(ast, this.leftMostSafeNode(ast), mode);\n }\n\n private _visit(ast: cdAst.AST, mode: _Mode): any {\n const result = this._resultMap.get(ast);\n if (result) return result;\n return (this._nodeMap.get(ast) || ast).visit(this, mode);\n }\n\n private convertSafeAccess(\n ast: cdAst.AST, leftMostSafe: cdAst.SafePropertyRead|cdAst.SafeKeyedRead|cdAst.SafeCall,\n mode: _Mode): any {\n // If the expression contains a safe access node on the left it needs to be converted to\n // an expression that guards the access to the member by checking the receiver for blank. As\n // execution proceeds from left to right, the left most part of the expression must be guarded\n // first but, because member access is left associative, the right side of the expression is at\n // the top of the AST. The desired result requires lifting a copy of the left part of the\n // expression up to test it for blank before generating the unguarded version.\n\n // Consider, for example the following expression: a?.b.c?.d.e\n\n // This results in the ast:\n // .\n // / \\\n // ?. e\n // / \\\n // . d\n // / \\\n // ?. c\n // / \\\n // a b\n\n // The following tree should be generated:\n //\n // /---- ? ----\\\n // / | \\\n // a /--- ? ---\\ null\n // / | \\\n // . . null\n // / \\ / \\\n // . c . e\n // / \\ / \\\n // a b . d\n // / \\\n // . c\n // / \\\n // a b\n //\n // Notice that the first guard condition is the left hand of the left most safe access node\n // which comes in as leftMostSafe to this routine.\n\n let guardedExpression = this._visit(leftMostSafe.receiver, _Mode.Expression);\n let temporary: o.ReadVarExpr|undefined = undefined;\n if (this.needsTemporaryInSafeAccess(leftMostSafe.receiver)) {\n // If the expression has method calls or pipes then we need to save the result into a\n // temporary variable to avoid calling stateful or impure code more than once.\n temporary = this.allocateTemporary();\n\n // Preserve the result in the temporary variable\n guardedExpression = temporary.set(guardedExpression);\n\n // Ensure all further references to the guarded expression refer to the temporary instead.\n this._resultMap.set(leftMostSafe.receiver, temporary);\n }\n const condition = guardedExpression.isBlank();\n\n // Convert the ast to an unguarded access to the receiver's member. The map will substitute\n // leftMostNode with its unguarded version in the call to `this.visit()`.\n if (leftMostSafe instanceof cdAst.SafeCall) {\n this._nodeMap.set(\n leftMostSafe,\n new cdAst.Call(\n leftMostSafe.span, leftMostSafe.sourceSpan, leftMostSafe.receiver, leftMostSafe.args,\n leftMostSafe.argumentSpan));\n } else if (leftMostSafe instanceof cdAst.SafeKeyedRead) {\n this._nodeMap.set(\n leftMostSafe,\n new cdAst.KeyedRead(\n leftMostSafe.span, leftMostSafe.sourceSpan, leftMostSafe.receiver, leftMostSafe.key));\n } else {\n this._nodeMap.set(\n leftMostSafe,\n new cdAst.PropertyRead(\n leftMostSafe.span, leftMostSafe.sourceSpan, leftMostSafe.nameSpan,\n leftMostSafe.receiver, leftMostSafe.name));\n }\n\n // Recursively convert the node now without the guarded member access.\n const access = this._visit(ast, _Mode.Expression);\n\n // Remove the mapping. This is not strictly required as the converter only traverses each node\n // once but is safer if the conversion is changed to traverse the nodes more than once.\n this._nodeMap.delete(leftMostSafe);\n\n // If we allocated a temporary, release it.\n if (temporary) {\n this.releaseTemporary(temporary);\n }\n\n // Produce the conditional\n return convertToStatementIfNeeded(mode, condition.conditional(o.NULL_EXPR, access));\n }\n\n private convertNullishCoalesce(ast: cdAst.Binary, mode: _Mode): any {\n const left: o.Expression = this._visit(ast.left, _Mode.Expression);\n const right: o.Expression = this._visit(ast.right, _Mode.Expression);\n const temporary = this.allocateTemporary();\n this.releaseTemporary(temporary);\n\n // Generate the following expression. It is identical to how TS\n // transpiles binary expressions with a nullish coalescing operator.\n // let temp;\n // (temp = a) !== null && temp !== undefined ? temp : b;\n return convertToStatementIfNeeded(\n mode,\n temporary.set(left)\n .notIdentical(o.NULL_EXPR)\n .and(temporary.notIdentical(o.literal(undefined)))\n .conditional(temporary, right));\n }\n\n // Given an expression of the form a?.b.c?.d.e then the left most safe node is\n // the (a?.b). The . and ?. are left associative thus can be rewritten as:\n // ((((a?.c).b).c)?.d).e. This returns the most deeply nested safe read or\n // safe method call as this needs to be transformed initially to:\n // a == null ? null : a.c.b.c?.d.e\n // then to:\n // a == null ? null : a.b.c == null ? null : a.b.c.d.e\n private leftMostSafeNode(ast: cdAst.AST): cdAst.SafePropertyRead|cdAst.SafeKeyedRead {\n const visit = (visitor: cdAst.AstVisitor, ast: cdAst.AST): any => {\n return (this._nodeMap.get(ast) || ast).visit(visitor);\n };\n return ast.visit({\n visitUnary(ast: cdAst.Unary) {\n return null;\n },\n visitBinary(ast: cdAst.Binary) {\n return null;\n },\n visitChain(ast: cdAst.Chain) {\n return null;\n },\n visitConditional(ast: cdAst.Conditional) {\n return null;\n },\n visitCall(ast: cdAst.Call) {\n return visit(this, ast.receiver);\n },\n visitSafeCall(ast: cdAst.SafeCall) {\n return visit(this, ast.receiver) || ast;\n },\n visitImplicitReceiver(ast: cdAst.ImplicitReceiver) {\n return null;\n },\n visitThisReceiver(ast: cdAst.ThisReceiver) {\n return null;\n },\n visitInterpolation(ast: cdAst.Interpolation) {\n return null;\n },\n visitKeyedRead(ast: cdAst.KeyedRead) {\n return visit(this, ast.receiver);\n },\n visitKeyedWrite(ast: cdAst.KeyedWrite) {\n return null;\n },\n visitLiteralArray(ast: cdAst.LiteralArray) {\n return null;\n },\n visitLiteralMap(ast: cdAst.LiteralMap) {\n return null;\n },\n visitLiteralPrimitive(ast: cdAst.LiteralPrimitive) {\n return null;\n },\n visitPipe(ast: cdAst.BindingPipe) {\n return null;\n },\n visitPrefixNot(ast: cdAst.PrefixNot) {\n return null;\n },\n visitNonNullAssert(ast: cdAst.NonNullAssert) {\n return null;\n },\n visitPropertyRead(ast: cdAst.PropertyRead) {\n return visit(this, ast.receiver);\n },\n visitPropertyWrite(ast: cdAst.PropertyWrite) {\n return null;\n },\n visitSafePropertyRead(ast: cdAst.SafePropertyRead) {\n return visit(this, ast.receiver) || ast;\n },\n visitSafeKeyedRead(ast: cdAst.SafeKeyedRead) {\n return visit(this, ast.receiver) || ast;\n }\n });\n }\n\n // Returns true of the AST includes a method or a pipe indicating that, if the\n // expression is used as the target of a safe property or method access then\n // the expression should be stored into a temporary variable.\n private needsTemporaryInSafeAccess(ast: cdAst.AST): boolean {\n const visit = (visitor: cdAst.AstVisitor, ast: cdAst.AST): boolean => {\n return ast && (this._nodeMap.get(ast) || ast).visit(visitor);\n };\n const visitSome = (visitor: cdAst.AstVisitor, ast: cdAst.AST[]): boolean => {\n return ast.some(ast => visit(visitor, ast));\n };\n return ast.visit({\n visitUnary(ast: cdAst.Unary): boolean {\n return visit(this, ast.expr);\n },\n visitBinary(ast: cdAst.Binary): boolean {\n return visit(this, ast.left) || visit(this, ast.right);\n },\n visitChain(ast: cdAst.Chain) {\n return false;\n },\n visitConditional(ast: cdAst.Conditional): boolean {\n return visit(this, ast.condition) || visit(this, ast.trueExp) || visit(this, ast.falseExp);\n },\n visitCall(ast: cdAst.Call) {\n return true;\n },\n visitSafeCall(ast: cdAst.SafeCall) {\n return true;\n },\n visitImplicitReceiver(ast: cdAst.ImplicitReceiver) {\n return false;\n },\n visitThisReceiver(ast: cdAst.ThisReceiver) {\n return false;\n },\n visitInterpolation(ast: cdAst.Interpolation) {\n return visitSome(this, ast.expressions);\n },\n visitKeyedRead(ast: cdAst.KeyedRead) {\n return false;\n },\n visitKeyedWrite(ast: cdAst.KeyedWrite) {\n return false;\n },\n visitLiteralArray(ast: cdAst.LiteralArray) {\n return true;\n },\n visitLiteralMap(ast: cdAst.LiteralMap) {\n return true;\n },\n visitLiteralPrimitive(ast: cdAst.LiteralPrimitive) {\n return false;\n },\n visitPipe(ast: cdAst.BindingPipe) {\n return true;\n },\n visitPrefixNot(ast: cdAst.PrefixNot) {\n return visit(this, ast.expression);\n },\n visitNonNullAssert(ast: cdAst.PrefixNot) {\n return visit(this, ast.expression);\n },\n visitPropertyRead(ast: cdAst.PropertyRead) {\n return false;\n },\n visitPropertyWrite(ast: cdAst.PropertyWrite) {\n return false;\n },\n visitSafePropertyRead(ast: cdAst.SafePropertyRead) {\n return false;\n },\n visitSafeKeyedRead(ast: cdAst.SafeKeyedRead) {\n return false;\n }\n });\n }\n\n private allocateTemporary(): o.ReadVarExpr {\n const tempNumber = this._currentTemporary++;\n this.temporaryCount = Math.max(this._currentTemporary, this.temporaryCount);\n return new o.ReadVarExpr(temporaryName(this.bindingId, tempNumber));\n }\n\n private releaseTemporary(temporary: o.ReadVarExpr) {\n this._currentTemporary--;\n if (temporary.name != temporaryName(this.bindingId, this._currentTemporary)) {\n throw new Error(`Temporary ${temporary.name} released out of order`);\n }\n }\n\n /**\n * Creates an absolute `ParseSourceSpan` from the relative `ParseSpan`.\n *\n * `ParseSpan` objects are relative to the start of the expression.\n * This method converts these to full `ParseSourceSpan` objects that\n * show where the span is within the overall source file.\n *\n * @param span the relative span to convert.\n * @returns a `ParseSourceSpan` for the given span or null if no\n * `baseSourceSpan` was provided to this class.\n */\n private convertSourceSpan(span: cdAst.ParseSpan) {\n if (this.baseSourceSpan) {\n const start = this.baseSourceSpan.start.moveBy(span.start);\n const end = this.baseSourceSpan.start.moveBy(span.end);\n const fullStart = this.baseSourceSpan.fullStart.moveBy(span.start);\n return new ParseSourceSpan(start, end, fullStart);\n } else {\n return null;\n }\n }\n\n /** Adds the name of an AST to the list of implicit receiver accesses. */\n private addImplicitReceiverAccess(name: string) {\n if (this.implicitReceiverAccesses) {\n this.implicitReceiverAccesses.add(name);\n }\n }\n}\n\nfunction flattenStatements(arg: any, output: o.Statement[]) {\n if (Array.isArray(arg)) {\n (arg).forEach((entry) => flattenStatements(entry, output));\n } else {\n output.push(arg);\n }\n}\n\nfunction unsupported(): never {\n throw new Error('Unsupported operation');\n}\n\nclass InterpolationExpression extends o.Expression {\n constructor(public args: o.Expression[]) {\n super(null, null);\n }\n\n override isConstant = unsupported;\n override isEquivalent = unsupported;\n override visitExpression = unsupported;\n}\n\nclass DefaultLocalResolver implements LocalResolver {\n constructor(public globals?: Set) {}\n notifyImplicitReceiverUse(): void {}\n maybeRestoreView(): void {}\n getLocal(name: string): o.Expression|null {\n if (name === EventHandlerVars.event.name) {\n return EventHandlerVars.event;\n }\n return null;\n }\n}\n\nexport class BuiltinFunctionCall extends cdAst.Call {\n constructor(\n span: cdAst.ParseSpan, sourceSpan: cdAst.AbsoluteSourceSpan, args: cdAst.AST[],\n public converter: BuiltinConverter) {\n super(span, sourceSpan, new cdAst.EmptyExpr(span, sourceSpan), args, null!);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport * as o from '../output/output_ast';\n\nimport {R3DependencyMetadata} from './r3_factory';\nimport {Identifiers as R3} from './r3_identifiers';\nimport {R3CompiledExpression, R3Reference, typeWithParameters} from './util';\n\nexport interface R3PipeMetadata {\n /**\n * Name of the pipe type.\n */\n name: string;\n\n /**\n * An expression representing a reference to the pipe itself.\n */\n type: R3Reference;\n\n /**\n * An expression representing the pipe being compiled, intended for use within a class definition\n * itself.\n *\n * This can differ from the outer `type` if the class is being compiled by ngcc and is inside an\n * IIFE structure that uses a different name internally.\n */\n internalType: o.Expression;\n\n /**\n * Number of generic type parameters of the type itself.\n */\n typeArgumentCount: number;\n\n /**\n * Name of the pipe.\n */\n pipeName: string;\n\n /**\n * Dependencies of the pipe's constructor.\n */\n deps: R3DependencyMetadata[]|null;\n\n /**\n * Whether the pipe is marked as pure.\n */\n pure: boolean;\n\n /**\n * Whether the pipe is standalone.\n */\n isStandalone: boolean;\n}\n\nexport function compilePipeFromMetadata(metadata: R3PipeMetadata): R3CompiledExpression {\n const definitionMapValues: {key: string, quoted: boolean, value: o.Expression}[] = [];\n\n // e.g. `name: 'myPipe'`\n definitionMapValues.push({key: 'name', value: o.literal(metadata.pipeName), quoted: false});\n\n // e.g. `type: MyPipe`\n definitionMapValues.push({key: 'type', value: metadata.type.value, quoted: false});\n\n // e.g. `pure: true`\n definitionMapValues.push({key: 'pure', value: o.literal(metadata.pure), quoted: false});\n\n if (metadata.isStandalone) {\n definitionMapValues.push({key: 'standalone', value: o.literal(true), quoted: false});\n }\n\n const expression =\n o.importExpr(R3.definePipe).callFn([o.literalMap(definitionMapValues)], undefined, true);\n const type = createPipeType(metadata);\n\n return {expression, type, statements: []};\n}\n\nexport function createPipeType(metadata: R3PipeMetadata): o.Type {\n return new o.ExpressionType(o.importExpr(R3.PipeDeclaration, [\n typeWithParameters(metadata.type.type, metadata.typeArgumentCount),\n new o.ExpressionType(new o.LiteralExpr(metadata.pipeName)),\n new o.ExpressionType(new o.LiteralExpr(metadata.isStandalone)),\n ]));\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {SecurityContext} from '../core';\n\n// =================================================================================================\n// =================================================================================================\n// =========== S T O P - S T O P - S T O P - S T O P - S T O P - S T O P ===========\n// =================================================================================================\n// =================================================================================================\n//\n// DO NOT EDIT THIS LIST OF SECURITY SENSITIVE PROPERTIES WITHOUT A SECURITY REVIEW!\n// Reach out to mprobst for details.\n//\n// =================================================================================================\n\n/** Map from tagName|propertyName to SecurityContext. Properties applying to all tags use '*'. */\nlet _SECURITY_SCHEMA!: {[k: string]: SecurityContext};\n\nexport function SECURITY_SCHEMA(): {[k: string]: SecurityContext} {\n if (!_SECURITY_SCHEMA) {\n _SECURITY_SCHEMA = {};\n // Case is insignificant below, all element and attribute names are lower-cased for lookup.\n\n registerContext(SecurityContext.HTML, [\n 'iframe|srcdoc',\n '*|innerHTML',\n '*|outerHTML',\n ]);\n registerContext(SecurityContext.STYLE, ['*|style']);\n // NB: no SCRIPT contexts here, they are never allowed due to the parser stripping them.\n registerContext(SecurityContext.URL, [\n '*|formAction',\n 'area|href',\n 'area|ping',\n 'audio|src',\n 'a|href',\n 'a|ping',\n 'blockquote|cite',\n 'body|background',\n 'del|cite',\n 'form|action',\n 'img|src',\n 'input|src',\n 'ins|cite',\n 'q|cite',\n 'source|src',\n 'track|src',\n 'video|poster',\n 'video|src',\n ]);\n registerContext(SecurityContext.RESOURCE_URL, [\n 'applet|code',\n 'applet|codebase',\n 'base|href',\n 'embed|src',\n 'frame|src',\n 'head|profile',\n 'html|manifest',\n 'iframe|src',\n 'link|href',\n 'media|src',\n 'object|codebase',\n 'object|data',\n 'script|src',\n ]);\n }\n return _SECURITY_SCHEMA;\n}\n\nfunction registerContext(ctx: SecurityContext, specs: string[]) {\n for (const spec of specs) _SECURITY_SCHEMA[spec.toLowerCase()] = ctx;\n}\n\n/**\n * The set of security-sensitive attributes of an `