{"version":3,"sources":["jsdelivr-header.js","/npm/ngast@0.6.2/ngast.bundle.js"],"names":[],"mappings":"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","file":"/npm/ngast@0.6.2/ngast.bundle.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/ngast@0.6.2/ngast.bundle.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/compiler-cli/src/ngtsc/transform'), require('typescript'), require('assert'), require('@angular/compiler'), require('@angular/compiler-cli'), require('@angular/compiler-cli/src/ngtsc/core'), require('@angular/compiler-cli/src/ngtsc/annotations'), require('@angular/compiler-cli/src/ngtsc/file_system'), require('@angular/compiler-cli/src/ngtsc/reflection'), require('@angular/compiler-cli/src/ngtsc/partial_evaluator'), require('@angular/compiler-cli/src/ngtsc/incremental'), require('@angular/compiler-cli/src/ngtsc/imports'), require('@angular/compiler-cli/src/ngtsc/metadata'), require('@angular/compiler-cli/src/ngtsc/scope'), require('@angular/compiler-cli/src/ngtsc/util/src/typescript'), require('@angular/compiler-cli/src/ngtsc/routing'), require('@angular/compiler-cli/src/ngtsc/cycles'), require('@angular/compiler-cli/src/ngtsc/resource'), require('@angular/compiler-cli/src/ngtsc/entry_point'), require('@angular/compiler-cli/src/ngtsc/perf'), require('@angular/compiler-cli/src/ngtsc/modulewithproviders'), require('@angular/compiler-cli/src/ngtsc/diagnostics'), require('path')) :\n    typeof define === 'function' && define.amd ? define(['exports', '@angular/compiler-cli/src/ngtsc/transform', 'typescript', 'assert', '@angular/compiler', '@angular/compiler-cli', '@angular/compiler-cli/src/ngtsc/core', '@angular/compiler-cli/src/ngtsc/annotations', '@angular/compiler-cli/src/ngtsc/file_system', '@angular/compiler-cli/src/ngtsc/reflection', '@angular/compiler-cli/src/ngtsc/partial_evaluator', '@angular/compiler-cli/src/ngtsc/incremental', '@angular/compiler-cli/src/ngtsc/imports', '@angular/compiler-cli/src/ngtsc/metadata', '@angular/compiler-cli/src/ngtsc/scope', '@angular/compiler-cli/src/ngtsc/util/src/typescript', '@angular/compiler-cli/src/ngtsc/routing', '@angular/compiler-cli/src/ngtsc/cycles', '@angular/compiler-cli/src/ngtsc/resource', '@angular/compiler-cli/src/ngtsc/entry_point', '@angular/compiler-cli/src/ngtsc/perf', '@angular/compiler-cli/src/ngtsc/modulewithproviders', '@angular/compiler-cli/src/ngtsc/diagnostics', 'path'], factory) :\n    (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.ngast = {}, global.transform, global.typescript, global.assert, global.compiler, global.compilerCli, global.core, global.annotations, global.file_system, global.reflection, global.partial_evaluator, global.incremental, global.imports, global.metadata, global.scope, global.typescript$1, global.routing, global.cycles, global.resource, global.entry_point, global.perf, global.modulewithproviders, global.diagnostics, global.path));\n}(this, (function (exports, transform, typescript, assert, compiler, compilerCli, core, annotations, file_system, reflection, partial_evaluator, incremental, imports, metadata, scope, typescript$1, routing, cycles, resource, entry_point, perf, modulewithproviders, diagnostics, path) { 'use strict';\n\n    var handlerName = {\n        'NgModule': 'NgModuleDecoratorHandler',\n        'Pipe': 'PipeDecoratorHandler',\n        'Injectable': 'InjectableDecoratorHandler',\n        'Directive': 'DirectiveDecoratorHandler',\n        'Component': 'ComponentDecoratorHandler'\n    };\n    var filterByHandler = function (annotation) { return function (trait) {\n        return trait.handler.name === handlerName[annotation];\n    }; };\n    var isAnalysed = function (trait) {\n        return (trait === null || trait === void 0 ? void 0 : trait.state) === transform.TraitState.Analyzed || (trait === null || trait === void 0 ? void 0 : trait.state) === transform.TraitState.Resolved;\n    };\n    var Symbol$1 = /** @class */ (function () {\n        function Symbol(workspace, node) {\n            this.workspace = workspace;\n            this.node = node;\n        }\n        Object.defineProperty(Symbol.prototype, \"name\", {\n            /** Name of the class */\n            get: function () {\n                return this.node.name.getText();\n            },\n            enumerable: false,\n            configurable: true\n        });\n        Object.defineProperty(Symbol.prototype, \"path\", {\n            /** Path where the class is declared */\n            get: function () {\n                if (!this._path) {\n                    this._path = this.node.getSourceFile().fileName;\n                }\n                return this._path;\n            },\n            enumerable: false,\n            configurable: true\n        });\n        Object.defineProperty(Symbol.prototype, \"diagnostics\", {\n            /** Logs from @angular/compiler when something got wrong */\n            get: function () {\n                var _a;\n                return ((_a = this.trait) === null || _a === void 0 ? void 0 : _a.state) === transform.TraitState.Analyzed ? this.trait.analysisDiagnostics : null;\n            },\n            enumerable: false,\n            configurable: true\n        });\n        Object.defineProperty(Symbol.prototype, \"isAnalysed\", {\n            /** Check if the ClassDeclaration has been analyzed by the trait compiler */\n            get: function () {\n                return isAnalysed(this.trait);\n            },\n            enumerable: false,\n            configurable: true\n        });\n        Object.defineProperty(Symbol.prototype, \"record\", {\n            /** The record of the ClassDeclaration in the trait compiler */\n            get: function () {\n                return this.workspace.traitCompiler.recordFor(this.node);\n            },\n            enumerable: false,\n            configurable: true\n        });\n        Object.defineProperty(Symbol.prototype, \"analysis\", {\n            /** The result of the analysis. Specific per annotation */\n            get: function () {\n                var _a;\n                this.ensureAnalysis();\n                if (((_a = this.trait) === null || _a === void 0 ? void 0 : _a.state) === transform.TraitState.Analyzed) {\n                    var message = \"An error occurred during analysis of \\\"\" + this.name + \"\\\": \";\n                    var error = this.diagnostics;\n                    throw new Error(message + error);\n                }\n                // As we analyzed the node above it should be ok...\n                if (isAnalysed(this.trait)) {\n                    return this.trait.analysis;\n                }\n                else {\n                    throw new Error(\"Analysis for node \" + this.name + \" couldn't be completed\");\n                }\n            },\n            enumerable: false,\n            configurable: true\n        });\n        Object.defineProperty(Symbol.prototype, \"trait\", {\n            get: function () {\n                var _a;\n                if (!this._trait) {\n                    this._trait = (_a = this.record) === null || _a === void 0 ? void 0 : _a.traits.find(filterByHandler(this.annotation));\n                }\n                return this._trait;\n            },\n            enumerable: false,\n            configurable: true\n        });\n        /** Analyse this specific ClassDeclaration */\n        Symbol.prototype.analyse = function () {\n            this.workspace.traitCompiler.analyzeNode(this.node);\n            this.workspace.traitCompiler.resolveNode(this.node);\n            // @question should we record NgModule Scope dependencies here ???\n        };\n        Symbol.prototype.ensureAnalysis = function () {\n            if (!this.record) {\n                this.analyse();\n            }\n        };\n        return Symbol;\n    }());\n\n    var annotationNames = ['NgModule', 'Pipe', 'Injectable', 'Directive', 'Component'];\n    var annotationTheta = {\n        'ɵmod': 'NgModule',\n        'ɵdir': 'Directive',\n        'ɵinj': 'Injectable',\n        'ɵpipe': 'Pipe',\n        'ɵcmp': 'Component',\n    };\n    function getDecoratorName(decorator) {\n        var expression = decorator.expression;\n        return typescript.isCallExpression(expression) && expression.expression.getText();\n    }\n    /** Verify if class is decorated with an annotation */\n    function hasLocalAnnotation(node, name) {\n        var _a;\n        return (_a = node.decorators) === null || _a === void 0 ? void 0 : _a.some(function (decorator) { return getDecoratorName(decorator) === name; });\n    }\n    /** Vrify if the dts class has the static annotation */\n    function hasDtsAnnotation(members, name) {\n        return members === null || members === void 0 ? void 0 : members.some(function (m) { return m.isStatic && m.name in annotationTheta; });\n    }\n    /** Get the name of the annotation of the local class if any */\n    function getLocalAnnotation(decorators) {\n        return decorators === null || decorators === void 0 ? void 0 : decorators.map(getDecoratorName).find(function (name) { return annotationNames.includes(name); });\n    }\n    /** Ge the name of the annotation of a dts class if any */\n    function getDtsAnnotation(members) {\n        var member = members === null || members === void 0 ? void 0 : members.find(function (m) { return m.isStatic && m.name in annotationTheta; });\n        return member ? annotationTheta[member.name] : undefined;\n    }\n    function assertDeps(deps, name) {\n        if (!deps || deps === 'invalid') {\n            throw new assert.AssertionError({ message: \"Invalid depenancies in \\\"\" + name + \"\\\".\" });\n        }\n    }\n    var exists = function (value) { return !!(value !== null && value !== void 0 ? value : false); };\n\n    /**\n     * @license\n     * Copyright Google Inc. 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    var $EOF = 0;\n    var $TAB = 9;\n    var $LF = 10;\n    var $VTAB = 11;\n    var $FF = 12;\n    var $CR = 13;\n    var $SPACE = 32;\n    var $BANG = 33;\n    var $DQ = 34;\n    var $HASH = 35;\n    var $$ = 36;\n    var $PERCENT = 37;\n    var $AMPERSAND = 38;\n    var $SQ = 39;\n    var $LPAREN = 40;\n    var $RPAREN = 41;\n    var $STAR = 42;\n    var $PLUS = 43;\n    var $COMMA = 44;\n    var $MINUS = 45;\n    var $PERIOD = 46;\n    var $SLASH = 47;\n    var $COLON = 58;\n    var $SEMICOLON = 59;\n    var $EQ = 61;\n    var $GT = 62;\n    var $QUESTION = 63;\n    var $0 = 48;\n    var $9 = 57;\n    var $A = 65;\n    var $Z = 90;\n    var $LBRACKET = 91;\n    var $BACKSLASH = 92;\n    var $RBRACKET = 93;\n    var $CARET = 94;\n    var $_ = 95;\n    var $a = 97;\n    var $z = 122;\n    var $LBRACE = 123;\n    var $RBRACE = 125;\n    var $NBSP = 160;\n    var $PIPE = 124;\n    var $TILDA = 126;\n    var $AT = 64;\n    function isWhitespace(code) {\n        return (code >= $TAB && code <= $SPACE) || (code == $NBSP);\n    }\n    function isDigit(code) {\n        return $0 <= code && code <= $9;\n    }\n    function isAsciiLetter(code) {\n        return code >= $a && code <= $z || code >= $A && code <= $Z;\n    }\n\n    /**\n     * @license\n     * Copyright Google Inc. 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    var ParseLocation = /** @class */ (function () {\n        function ParseLocation(file, offset, line, col) {\n            this.file = file;\n            this.offset = offset;\n            this.line = line;\n            this.col = col;\n        }\n        ParseLocation.prototype.toString = function () {\n            return this.offset != null ? this.file.url + \"@\" + this.line + \":\" + this.col : this.file.url;\n        };\n        ParseLocation.prototype.moveBy = function (delta) {\n            var source = this.file.content;\n            var len = source.length;\n            var offset = this.offset;\n            var line = this.line;\n            var col = this.col;\n            while (offset > 0 && delta < 0) {\n                offset--;\n                delta++;\n                var ch = source.charCodeAt(offset);\n                if (ch == $LF) {\n                    line--;\n                    var priorLine = source.substr(0, offset - 1).lastIndexOf(String.fromCharCode($LF));\n                    col = priorLine > 0 ? offset - priorLine : offset;\n                }\n                else {\n                    col--;\n                }\n            }\n            while (offset < len && delta > 0) {\n                var ch = source.charCodeAt(offset);\n                offset++;\n                delta--;\n                if (ch == $LF) {\n                    line++;\n                    col = 0;\n                }\n                else {\n                    col++;\n                }\n            }\n            return new ParseLocation(this.file, offset, line, col);\n        };\n        // Return the source around the location\n        // Up to `maxChars` or `maxLines` on each side of the location\n        ParseLocation.prototype.getContext = function (maxChars, maxLines) {\n            var content = this.file.content;\n            var startOffset = this.offset;\n            if (startOffset != null) {\n                if (startOffset > content.length - 1) {\n                    startOffset = content.length - 1;\n                }\n                var endOffset = startOffset;\n                var ctxChars = 0;\n                var ctxLines = 0;\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                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                return {\n                    before: content.substring(startOffset, this.offset),\n                    after: content.substring(this.offset, endOffset + 1),\n                };\n            }\n            return null;\n        };\n        return ParseLocation;\n    }());\n    var ParseSourceFile = /** @class */ (function () {\n        function ParseSourceFile(content, url) {\n            this.content = content;\n            this.url = url;\n        }\n        return ParseSourceFile;\n    }());\n    var ParseSourceSpan = /** @class */ (function () {\n        function ParseSourceSpan(start, end, details) {\n            if (details === void 0) { details = null; }\n            this.start = start;\n            this.end = end;\n            this.details = details;\n        }\n        ParseSourceSpan.prototype.toString = function () {\n            return this.start.file.content.substring(this.start.offset, this.end.offset);\n        };\n        return ParseSourceSpan;\n    }());\n    var ParseErrorLevel;\n    (function (ParseErrorLevel) {\n        ParseErrorLevel[ParseErrorLevel[\"WARNING\"] = 0] = \"WARNING\";\n        ParseErrorLevel[ParseErrorLevel[\"ERROR\"] = 1] = \"ERROR\";\n    })(ParseErrorLevel || (ParseErrorLevel = {}));\n    var ParseError = /** @class */ (function () {\n        function ParseError(span, msg, level) {\n            if (level === void 0) { level = ParseErrorLevel.ERROR; }\n            this.span = span;\n            this.msg = msg;\n            this.level = level;\n        }\n        ParseError.prototype.toString = function () {\n            var ctx = this.span.start.getContext(100, 3);\n            var contextStr = ctx ? \" (\\\"\" + ctx.before + \"[\" + ParseErrorLevel[this.level] + \" ->]\" + ctx.after + \"\\\")\" : '';\n            var details = this.span.details ? \", \" + this.span.details : '';\n            return \"\" + this.msg + contextStr + \": \" + this.span.start + details;\n        };\n        return ParseError;\n    }());\n\n    /**\n     * @license\n     * Copyright Google Inc. 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    var CssTokenType;\n    (function (CssTokenType) {\n        CssTokenType[CssTokenType[\"EOF\"] = 0] = \"EOF\";\n        CssTokenType[CssTokenType[\"String\"] = 1] = \"String\";\n        CssTokenType[CssTokenType[\"Comment\"] = 2] = \"Comment\";\n        CssTokenType[CssTokenType[\"Identifier\"] = 3] = \"Identifier\";\n        CssTokenType[CssTokenType[\"Number\"] = 4] = \"Number\";\n        CssTokenType[CssTokenType[\"IdentifierOrNumber\"] = 5] = \"IdentifierOrNumber\";\n        CssTokenType[CssTokenType[\"AtKeyword\"] = 6] = \"AtKeyword\";\n        CssTokenType[CssTokenType[\"Character\"] = 7] = \"Character\";\n        CssTokenType[CssTokenType[\"Whitespace\"] = 8] = \"Whitespace\";\n        CssTokenType[CssTokenType[\"Invalid\"] = 9] = \"Invalid\";\n    })(CssTokenType || (CssTokenType = {}));\n    var CssLexerMode;\n    (function (CssLexerMode) {\n        CssLexerMode[CssLexerMode[\"ALL\"] = 0] = \"ALL\";\n        CssLexerMode[CssLexerMode[\"ALL_TRACK_WS\"] = 1] = \"ALL_TRACK_WS\";\n        CssLexerMode[CssLexerMode[\"SELECTOR\"] = 2] = \"SELECTOR\";\n        CssLexerMode[CssLexerMode[\"PSEUDO_SELECTOR\"] = 3] = \"PSEUDO_SELECTOR\";\n        CssLexerMode[CssLexerMode[\"PSEUDO_SELECTOR_WITH_ARGUMENTS\"] = 4] = \"PSEUDO_SELECTOR_WITH_ARGUMENTS\";\n        CssLexerMode[CssLexerMode[\"ATTRIBUTE_SELECTOR\"] = 5] = \"ATTRIBUTE_SELECTOR\";\n        CssLexerMode[CssLexerMode[\"AT_RULE_QUERY\"] = 6] = \"AT_RULE_QUERY\";\n        CssLexerMode[CssLexerMode[\"MEDIA_QUERY\"] = 7] = \"MEDIA_QUERY\";\n        CssLexerMode[CssLexerMode[\"BLOCK\"] = 8] = \"BLOCK\";\n        CssLexerMode[CssLexerMode[\"KEYFRAME_BLOCK\"] = 9] = \"KEYFRAME_BLOCK\";\n        CssLexerMode[CssLexerMode[\"STYLE_BLOCK\"] = 10] = \"STYLE_BLOCK\";\n        CssLexerMode[CssLexerMode[\"STYLE_VALUE\"] = 11] = \"STYLE_VALUE\";\n        CssLexerMode[CssLexerMode[\"STYLE_VALUE_FUNCTION\"] = 12] = \"STYLE_VALUE_FUNCTION\";\n        CssLexerMode[CssLexerMode[\"STYLE_CALC_FUNCTION\"] = 13] = \"STYLE_CALC_FUNCTION\";\n    })(CssLexerMode || (CssLexerMode = {}));\n    var LexedCssResult = /** @class */ (function () {\n        function LexedCssResult(error, token) {\n            this.error = error;\n            this.token = token;\n        }\n        return LexedCssResult;\n    }());\n    function generateErrorMessage(input, message, errorValue, index, row, column) {\n        return message + \" at column \" + row + \":\" + column + \" in expression [\" +\n            findProblemCode(input, errorValue, index, column) + ']';\n    }\n    function findProblemCode(input, errorValue, index, column) {\n        var endOfProblemLine = index;\n        var current = charCode(input, index);\n        while (current > 0 && !isNewline(current)) {\n            current = charCode(input, ++endOfProblemLine);\n        }\n        var choppedString = input.substring(0, endOfProblemLine);\n        var pointerPadding = '';\n        for (var i = 0; i < column; i++) {\n            pointerPadding += ' ';\n        }\n        var pointerString = '';\n        for (var i = 0; i < errorValue.length; i++) {\n            pointerString += '^';\n        }\n        return choppedString + '\\n' + pointerPadding + pointerString + '\\n';\n    }\n    var CssToken = /** @class */ (function () {\n        function CssToken(index, column, line, type, strValue) {\n            this.index = index;\n            this.column = column;\n            this.line = line;\n            this.type = type;\n            this.strValue = strValue;\n            this.numValue = charCode(strValue, 0);\n        }\n        return CssToken;\n    }());\n    var CssLexer = /** @class */ (function () {\n        function CssLexer() {\n        }\n        CssLexer.prototype.scan = function (text, trackComments) {\n            if (trackComments === void 0) { trackComments = false; }\n            return new CssScanner(text, trackComments);\n        };\n        return CssLexer;\n    }());\n    function cssScannerError(token, message) {\n        var error = Error('CssParseError: ' + message);\n        error[ERROR_RAW_MESSAGE] = message;\n        error[ERROR_TOKEN] = token;\n        return error;\n    }\n    var ERROR_TOKEN = 'ngToken';\n    var ERROR_RAW_MESSAGE = 'ngRawMessage';\n    function getRawMessage(error) {\n        return error[ERROR_RAW_MESSAGE];\n    }\n    function _trackWhitespace(mode) {\n        switch (mode) {\n            case CssLexerMode.SELECTOR:\n            case CssLexerMode.PSEUDO_SELECTOR:\n            case CssLexerMode.ALL_TRACK_WS:\n            case CssLexerMode.STYLE_VALUE:\n                return true;\n            default:\n                return false;\n        }\n    }\n    var CssScanner = /** @class */ (function () {\n        function CssScanner(input, _trackComments) {\n            if (_trackComments === void 0) { _trackComments = false; }\n            this.input = input;\n            this._trackComments = _trackComments;\n            this.length = 0;\n            this.index = -1;\n            this.column = -1;\n            this.line = 0;\n            /** @internal */\n            this._currentMode = CssLexerMode.BLOCK;\n            /** @internal */\n            this._currentError = null;\n            this.length = this.input.length;\n            this.peekPeek = this.peekAt(0);\n            this.advance();\n        }\n        CssScanner.prototype.getMode = function () { return this._currentMode; };\n        CssScanner.prototype.setMode = function (mode) {\n            if (this._currentMode != mode) {\n                if (_trackWhitespace(this._currentMode) && !_trackWhitespace(mode)) {\n                    this.consumeWhitespace();\n                }\n                this._currentMode = mode;\n            }\n        };\n        CssScanner.prototype.advance = function () {\n            if (isNewline(this.peek)) {\n                this.column = 0;\n                this.line++;\n            }\n            else {\n                this.column++;\n            }\n            this.index++;\n            this.peek = this.peekPeek;\n            this.peekPeek = this.peekAt(this.index + 1);\n        };\n        CssScanner.prototype.peekAt = function (index) {\n            return index >= this.length ? $EOF : this.input.charCodeAt(index);\n        };\n        CssScanner.prototype.consumeEmptyStatements = function () {\n            this.consumeWhitespace();\n            while (this.peek == $SEMICOLON) {\n                this.advance();\n                this.consumeWhitespace();\n            }\n        };\n        CssScanner.prototype.consumeWhitespace = function () {\n            while (isWhitespace(this.peek) || isNewline(this.peek)) {\n                this.advance();\n                if (!this._trackComments && isCommentStart(this.peek, this.peekPeek)) {\n                    this.advance(); // /\n                    this.advance(); // *\n                    while (!isCommentEnd(this.peek, this.peekPeek)) {\n                        if (this.peek == $EOF) {\n                            this.error('Unterminated comment');\n                        }\n                        this.advance();\n                    }\n                    this.advance(); // *\n                    this.advance(); // /\n                }\n            }\n        };\n        CssScanner.prototype.consume = function (type, value) {\n            if (value === void 0) { value = null; }\n            var mode = this._currentMode;\n            this.setMode(_trackWhitespace(mode) ? CssLexerMode.ALL_TRACK_WS : CssLexerMode.ALL);\n            var previousIndex = this.index;\n            var previousLine = this.line;\n            var previousColumn = this.column;\n            var next = undefined;\n            var output = this.scan();\n            if (output != null) {\n                // just incase the inner scan method returned an error\n                if (output.error != null) {\n                    this.setMode(mode);\n                    return output;\n                }\n                next = output.token;\n            }\n            if (next == null) {\n                next = new CssToken(this.index, this.column, this.line, CssTokenType.EOF, 'end of file');\n            }\n            var isMatchingType = false;\n            if (type == CssTokenType.IdentifierOrNumber) {\n                // TODO (matsko): implement array traversal for lookup here\n                isMatchingType = next.type == CssTokenType.Number || next.type == CssTokenType.Identifier;\n            }\n            else {\n                isMatchingType = next.type == type;\n            }\n            // before throwing the error we need to bring back the former\n            // mode so that the parser can recover...\n            this.setMode(mode);\n            var error = null;\n            if (!isMatchingType || (value != null && value != next.strValue)) {\n                var errorMessage = CssTokenType[next.type] + ' does not match expected ' + CssTokenType[type] + ' value';\n                if (value != null) {\n                    errorMessage += ' (\"' + next.strValue + '\" should match \"' + value + '\")';\n                }\n                error = cssScannerError(next, generateErrorMessage(this.input, errorMessage, next.strValue, previousIndex, previousLine, previousColumn));\n            }\n            return new LexedCssResult(error, next);\n        };\n        CssScanner.prototype.scan = function () {\n            var trackWS = _trackWhitespace(this._currentMode);\n            if (this.index == 0 && !trackWS) { // first scan\n                this.consumeWhitespace();\n            }\n            var token = this._scan();\n            if (token == null)\n                return null;\n            var error = this._currentError;\n            this._currentError = null;\n            if (!trackWS) {\n                this.consumeWhitespace();\n            }\n            return new LexedCssResult(error, token);\n        };\n        /** @internal */\n        CssScanner.prototype._scan = function () {\n            var peek = this.peek;\n            var peekPeek = this.peekPeek;\n            if (peek == $EOF)\n                return null;\n            if (isCommentStart(peek, peekPeek)) {\n                // even if comments are not tracked we still lex the\n                // comment so we can move the pointer forward\n                var commentToken = this.scanComment();\n                if (this._trackComments) {\n                    return commentToken;\n                }\n            }\n            if (_trackWhitespace(this._currentMode) && (isWhitespace(peek) || isNewline(peek))) {\n                return this.scanWhitespace();\n            }\n            peek = this.peek;\n            peekPeek = this.peekPeek;\n            if (peek == $EOF)\n                return null;\n            if (isStringStart(peek, peekPeek)) {\n                return this.scanString();\n            }\n            // something like url(cool)\n            if (this._currentMode == CssLexerMode.STYLE_VALUE_FUNCTION) {\n                return this.scanCssValueFunction();\n            }\n            var isModifier = peek == $PLUS || peek == $MINUS;\n            var digitA = isModifier ? false : isDigit(peek);\n            var digitB = isDigit(peekPeek);\n            if (digitA || (isModifier && (peekPeek == $PERIOD || digitB)) ||\n                (peek == $PERIOD && digitB)) {\n                return this.scanNumber();\n            }\n            if (peek == $AT) {\n                return this.scanAtExpression();\n            }\n            if (isIdentifierStart(peek, peekPeek)) {\n                return this.scanIdentifier();\n            }\n            if (isValidCssCharacter(peek, this._currentMode)) {\n                return this.scanCharacter();\n            }\n            return this.error(\"Unexpected character [\" + String.fromCharCode(peek) + \"]\");\n        };\n        CssScanner.prototype.scanComment = function () {\n            if (this.assertCondition(isCommentStart(this.peek, this.peekPeek), 'Expected comment start value')) {\n                return null;\n            }\n            var start = this.index;\n            var startingColumn = this.column;\n            var startingLine = this.line;\n            this.advance(); // /\n            this.advance(); // *\n            while (!isCommentEnd(this.peek, this.peekPeek)) {\n                if (this.peek == $EOF) {\n                    this.error('Unterminated comment');\n                }\n                this.advance();\n            }\n            this.advance(); // *\n            this.advance(); // /\n            var str = this.input.substring(start, this.index);\n            return new CssToken(start, startingColumn, startingLine, CssTokenType.Comment, str);\n        };\n        CssScanner.prototype.scanWhitespace = function () {\n            var start = this.index;\n            var startingColumn = this.column;\n            var startingLine = this.line;\n            while (isWhitespace(this.peek) && this.peek != $EOF) {\n                this.advance();\n            }\n            var str = this.input.substring(start, this.index);\n            return new CssToken(start, startingColumn, startingLine, CssTokenType.Whitespace, str);\n        };\n        CssScanner.prototype.scanString = function () {\n            if (this.assertCondition(isStringStart(this.peek, this.peekPeek), 'Unexpected non-string starting value')) {\n                return null;\n            }\n            var target = this.peek;\n            var start = this.index;\n            var startingColumn = this.column;\n            var startingLine = this.line;\n            var previous = target;\n            this.advance();\n            while (!isCharMatch(target, previous, this.peek)) {\n                if (this.peek == $EOF || isNewline(this.peek)) {\n                    this.error('Unterminated quote');\n                }\n                previous = this.peek;\n                this.advance();\n            }\n            if (this.assertCondition(this.peek == target, 'Unterminated quote')) {\n                return null;\n            }\n            this.advance();\n            var str = this.input.substring(start, this.index);\n            return new CssToken(start, startingColumn, startingLine, CssTokenType.String, str);\n        };\n        CssScanner.prototype.scanNumber = function () {\n            var start = this.index;\n            var startingColumn = this.column;\n            if (this.peek == $PLUS || this.peek == $MINUS) {\n                this.advance();\n            }\n            var periodUsed = false;\n            while (isDigit(this.peek) || this.peek == $PERIOD) {\n                if (this.peek == $PERIOD) {\n                    if (periodUsed) {\n                        this.error('Unexpected use of a second period value');\n                    }\n                    periodUsed = true;\n                }\n                this.advance();\n            }\n            var strValue = this.input.substring(start, this.index);\n            return new CssToken(start, startingColumn, this.line, CssTokenType.Number, strValue);\n        };\n        CssScanner.prototype.scanIdentifier = function () {\n            if (this.assertCondition(isIdentifierStart(this.peek, this.peekPeek), 'Expected identifier starting value')) {\n                return null;\n            }\n            var start = this.index;\n            var startingColumn = this.column;\n            while (isIdentifierPart(this.peek)) {\n                this.advance();\n            }\n            var strValue = this.input.substring(start, this.index);\n            return new CssToken(start, startingColumn, this.line, CssTokenType.Identifier, strValue);\n        };\n        CssScanner.prototype.scanCssValueFunction = function () {\n            var start = this.index;\n            var startingColumn = this.column;\n            var parenBalance = 1;\n            while (this.peek != $EOF && parenBalance > 0) {\n                this.advance();\n                if (this.peek == $LPAREN) {\n                    parenBalance++;\n                }\n                else if (this.peek == $RPAREN) {\n                    parenBalance--;\n                }\n            }\n            var strValue = this.input.substring(start, this.index);\n            return new CssToken(start, startingColumn, this.line, CssTokenType.Identifier, strValue);\n        };\n        CssScanner.prototype.scanCharacter = function () {\n            var start = this.index;\n            var startingColumn = this.column;\n            if (this.assertCondition(isValidCssCharacter(this.peek, this._currentMode), charStr(this.peek) + ' is not a valid CSS character')) {\n                return null;\n            }\n            var c = this.input.substring(start, start + 1);\n            this.advance();\n            return new CssToken(start, startingColumn, this.line, CssTokenType.Character, c);\n        };\n        CssScanner.prototype.scanAtExpression = function () {\n            if (this.assertCondition(this.peek == $AT, 'Expected @ value')) {\n                return null;\n            }\n            var start = this.index;\n            var startingColumn = this.column;\n            this.advance();\n            if (isIdentifierStart(this.peek, this.peekPeek)) {\n                var ident = this.scanIdentifier();\n                var strValue = '@' + ident.strValue;\n                return new CssToken(start, startingColumn, this.line, CssTokenType.AtKeyword, strValue);\n            }\n            else {\n                return this.scanCharacter();\n            }\n        };\n        CssScanner.prototype.assertCondition = function (status, errorMessage) {\n            if (!status) {\n                this.error(errorMessage);\n                return true;\n            }\n            return false;\n        };\n        CssScanner.prototype.error = function (message, errorTokenValue, doNotAdvance) {\n            if (errorTokenValue === void 0) { errorTokenValue = null; }\n            if (doNotAdvance === void 0) { doNotAdvance = false; }\n            var index = this.index;\n            var column = this.column;\n            var line = this.line;\n            errorTokenValue = errorTokenValue || String.fromCharCode(this.peek);\n            var invalidToken = new CssToken(index, column, line, CssTokenType.Invalid, errorTokenValue);\n            var errorMessage = generateErrorMessage(this.input, message, errorTokenValue, index, line, column);\n            if (!doNotAdvance) {\n                this.advance();\n            }\n            this._currentError = cssScannerError(invalidToken, errorMessage);\n            return invalidToken;\n        };\n        return CssScanner;\n    }());\n    function isCharMatch(target, previous, code) {\n        return code == target && previous != $BACKSLASH;\n    }\n    function isCommentStart(code, next) {\n        return code == $SLASH && next == $STAR;\n    }\n    function isCommentEnd(code, next) {\n        return code == $STAR && next == $SLASH;\n    }\n    function isStringStart(code, next) {\n        var target = code;\n        if (target == $BACKSLASH) {\n            target = next;\n        }\n        return target == $DQ || target == $SQ;\n    }\n    function isIdentifierStart(code, next) {\n        var target = code;\n        if (target == $MINUS) {\n            target = next;\n        }\n        return isAsciiLetter(target) || target == $BACKSLASH || target == $MINUS ||\n            target == $_;\n    }\n    function isIdentifierPart(target) {\n        return isAsciiLetter(target) || target == $BACKSLASH || target == $MINUS ||\n            target == $_ || isDigit(target);\n    }\n    function isValidPseudoSelectorCharacter(code) {\n        switch (code) {\n            case $LPAREN:\n            case $RPAREN:\n                return true;\n            default:\n                return false;\n        }\n    }\n    function isValidKeyframeBlockCharacter(code) {\n        return code == $PERCENT;\n    }\n    function isValidAttributeSelectorCharacter(code) {\n        // value^*|$~=something\n        switch (code) {\n            case $$:\n            case $PIPE:\n            case $CARET:\n            case $TILDA:\n            case $STAR:\n            case $EQ:\n                return true;\n            default:\n                return false;\n        }\n    }\n    function isValidSelectorCharacter(code) {\n        // selector [ key   = value ]\n        // IDENT    C IDENT C IDENT C\n        // #id, .class, *+~>\n        // tag:PSEUDO\n        switch (code) {\n            case $HASH:\n            case $PERIOD:\n            case $TILDA:\n            case $STAR:\n            case $PLUS:\n            case $GT:\n            case $COLON:\n            case $PIPE:\n            case $COMMA:\n            case $LBRACKET:\n            case $RBRACKET:\n                return true;\n            default:\n                return false;\n        }\n    }\n    function isValidStyleBlockCharacter(code) {\n        // key:value;\n        // key:calc(something ... )\n        switch (code) {\n            case $HASH:\n            case $SEMICOLON:\n            case $COLON:\n            case $PERCENT:\n            case $SLASH:\n            case $BACKSLASH:\n            case $BANG:\n            case $PERIOD:\n            case $LPAREN:\n            case $RPAREN:\n                return true;\n            default:\n                return false;\n        }\n    }\n    function isValidMediaQueryRuleCharacter(code) {\n        // (min-width: 7.5em) and (orientation: landscape)\n        switch (code) {\n            case $LPAREN:\n            case $RPAREN:\n            case $COLON:\n            case $PERCENT:\n            case $PERIOD:\n                return true;\n            default:\n                return false;\n        }\n    }\n    function isValidAtRuleCharacter(code) {\n        // @document url(http://www.w3.org/page?something=on#hash),\n        switch (code) {\n            case $LPAREN:\n            case $RPAREN:\n            case $COLON:\n            case $PERCENT:\n            case $PERIOD:\n            case $SLASH:\n            case $BACKSLASH:\n            case $HASH:\n            case $EQ:\n            case $QUESTION:\n            case $AMPERSAND:\n            case $STAR:\n            case $COMMA:\n            case $MINUS:\n            case $PLUS:\n                return true;\n            default:\n                return false;\n        }\n    }\n    function isValidStyleFunctionCharacter(code) {\n        switch (code) {\n            case $PERIOD:\n            case $MINUS:\n            case $PLUS:\n            case $STAR:\n            case $SLASH:\n            case $LPAREN:\n            case $RPAREN:\n            case $COMMA:\n                return true;\n            default:\n                return false;\n        }\n    }\n    function isValidBlockCharacter(code) {\n        // @something { }\n        // IDENT\n        return code == $AT;\n    }\n    function isValidCssCharacter(code, mode) {\n        switch (mode) {\n            case CssLexerMode.ALL:\n            case CssLexerMode.ALL_TRACK_WS:\n                return true;\n            case CssLexerMode.SELECTOR:\n                return isValidSelectorCharacter(code);\n            case CssLexerMode.PSEUDO_SELECTOR_WITH_ARGUMENTS:\n                return isValidPseudoSelectorCharacter(code);\n            case CssLexerMode.ATTRIBUTE_SELECTOR:\n                return isValidAttributeSelectorCharacter(code);\n            case CssLexerMode.MEDIA_QUERY:\n                return isValidMediaQueryRuleCharacter(code);\n            case CssLexerMode.AT_RULE_QUERY:\n                return isValidAtRuleCharacter(code);\n            case CssLexerMode.KEYFRAME_BLOCK:\n                return isValidKeyframeBlockCharacter(code);\n            case CssLexerMode.STYLE_BLOCK:\n            case CssLexerMode.STYLE_VALUE:\n                return isValidStyleBlockCharacter(code);\n            case CssLexerMode.STYLE_CALC_FUNCTION:\n                return isValidStyleFunctionCharacter(code);\n            case CssLexerMode.BLOCK:\n                return isValidBlockCharacter(code);\n            default:\n                return false;\n        }\n    }\n    function charCode(input, index) {\n        return index >= input.length ? $EOF : input.charCodeAt(index);\n    }\n    function charStr(code) {\n        return String.fromCharCode(code);\n    }\n    function isNewline(code) {\n        switch (code) {\n            case $FF:\n            case $CR:\n            case $LF:\n            case $VTAB:\n                return true;\n            default:\n                return false;\n        }\n    }\n\n    /**\n     * @license\n     * Copyright Google Inc. 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    var __extends = (undefined && undefined.__extends) || (function () {\n        var extendStatics = function (d, b) {\n            extendStatics = Object.setPrototypeOf ||\n                ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n                function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n            return extendStatics(d, b);\n        };\n        return function (d, b) {\n            extendStatics(d, b);\n            function __() { this.constructor = d; }\n            d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n        };\n    })();\n    var BlockType;\n    (function (BlockType) {\n        BlockType[BlockType[\"Import\"] = 0] = \"Import\";\n        BlockType[BlockType[\"Charset\"] = 1] = \"Charset\";\n        BlockType[BlockType[\"Namespace\"] = 2] = \"Namespace\";\n        BlockType[BlockType[\"Supports\"] = 3] = \"Supports\";\n        BlockType[BlockType[\"Keyframes\"] = 4] = \"Keyframes\";\n        BlockType[BlockType[\"MediaQuery\"] = 5] = \"MediaQuery\";\n        BlockType[BlockType[\"Selector\"] = 6] = \"Selector\";\n        BlockType[BlockType[\"FontFace\"] = 7] = \"FontFace\";\n        BlockType[BlockType[\"Page\"] = 8] = \"Page\";\n        BlockType[BlockType[\"Document\"] = 9] = \"Document\";\n        BlockType[BlockType[\"Viewport\"] = 10] = \"Viewport\";\n        BlockType[BlockType[\"Unsupported\"] = 11] = \"Unsupported\";\n    })(BlockType || (BlockType = {}));\n    var CssAst = /** @class */ (function () {\n        function CssAst(location) {\n            this.location = location;\n        }\n        Object.defineProperty(CssAst.prototype, \"start\", {\n            get: function () { return this.location.start; },\n            enumerable: false,\n            configurable: true\n        });\n        Object.defineProperty(CssAst.prototype, \"end\", {\n            get: function () { return this.location.end; },\n            enumerable: false,\n            configurable: true\n        });\n        return CssAst;\n    }());\n    var CssStyleValueAst = /** @class */ (function (_super) {\n        __extends(CssStyleValueAst, _super);\n        function CssStyleValueAst(location, tokens, strValue) {\n            var _this = _super.call(this, location) || this;\n            _this.tokens = tokens;\n            _this.strValue = strValue;\n            return _this;\n        }\n        CssStyleValueAst.prototype.visit = function (visitor, context) { return visitor.visitCssValue(this); };\n        return CssStyleValueAst;\n    }(CssAst));\n    var CssRuleAst = /** @class */ (function (_super) {\n        __extends(CssRuleAst, _super);\n        function CssRuleAst(location) {\n            return _super.call(this, location) || this;\n        }\n        return CssRuleAst;\n    }(CssAst));\n    var CssBlockRuleAst = /** @class */ (function (_super) {\n        __extends(CssBlockRuleAst, _super);\n        function CssBlockRuleAst(location, type, block, name) {\n            if (name === void 0) { name = null; }\n            var _this = _super.call(this, location) || this;\n            _this.location = location;\n            _this.type = type;\n            _this.block = block;\n            _this.name = name;\n            return _this;\n        }\n        CssBlockRuleAst.prototype.visit = function (visitor, context) {\n            return visitor.visitCssBlock(this.block, context);\n        };\n        return CssBlockRuleAst;\n    }(CssRuleAst));\n    var CssKeyframeRuleAst = /** @class */ (function (_super) {\n        __extends(CssKeyframeRuleAst, _super);\n        function CssKeyframeRuleAst(location, name, block) {\n            return _super.call(this, location, BlockType.Keyframes, block, name) || this;\n        }\n        CssKeyframeRuleAst.prototype.visit = function (visitor, context) {\n            return visitor.visitCssKeyframeRule(this, context);\n        };\n        return CssKeyframeRuleAst;\n    }(CssBlockRuleAst));\n    var CssKeyframeDefinitionAst = /** @class */ (function (_super) {\n        __extends(CssKeyframeDefinitionAst, _super);\n        function CssKeyframeDefinitionAst(location, steps, block) {\n            var _this = _super.call(this, location, BlockType.Keyframes, block, mergeTokens(steps, ',')) || this;\n            _this.steps = steps;\n            return _this;\n        }\n        CssKeyframeDefinitionAst.prototype.visit = function (visitor, context) {\n            return visitor.visitCssKeyframeDefinition(this, context);\n        };\n        return CssKeyframeDefinitionAst;\n    }(CssBlockRuleAst));\n    var CssBlockDefinitionRuleAst = /** @class */ (function (_super) {\n        __extends(CssBlockDefinitionRuleAst, _super);\n        function CssBlockDefinitionRuleAst(location, strValue, type, query, block) {\n            var _this = _super.call(this, location, type, block) || this;\n            _this.strValue = strValue;\n            _this.query = query;\n            var firstCssToken = query.tokens[0];\n            _this.name = new CssToken(firstCssToken.index, firstCssToken.column, firstCssToken.line, CssTokenType.Identifier, _this.strValue);\n            return _this;\n        }\n        CssBlockDefinitionRuleAst.prototype.visit = function (visitor, context) {\n            return visitor.visitCssBlock(this.block, context);\n        };\n        return CssBlockDefinitionRuleAst;\n    }(CssBlockRuleAst));\n    var CssMediaQueryRuleAst = /** @class */ (function (_super) {\n        __extends(CssMediaQueryRuleAst, _super);\n        function CssMediaQueryRuleAst(location, strValue, query, block) {\n            return _super.call(this, location, strValue, BlockType.MediaQuery, query, block) || this;\n        }\n        CssMediaQueryRuleAst.prototype.visit = function (visitor, context) {\n            return visitor.visitCssMediaQueryRule(this, context);\n        };\n        return CssMediaQueryRuleAst;\n    }(CssBlockDefinitionRuleAst));\n    var CssAtRulePredicateAst = /** @class */ (function (_super) {\n        __extends(CssAtRulePredicateAst, _super);\n        function CssAtRulePredicateAst(location, strValue, tokens) {\n            var _this = _super.call(this, location) || this;\n            _this.strValue = strValue;\n            _this.tokens = tokens;\n            return _this;\n        }\n        CssAtRulePredicateAst.prototype.visit = function (visitor, context) {\n            return visitor.visitCssAtRulePredicate(this, context);\n        };\n        return CssAtRulePredicateAst;\n    }(CssAst));\n    var CssInlineRuleAst = /** @class */ (function (_super) {\n        __extends(CssInlineRuleAst, _super);\n        function CssInlineRuleAst(location, type, value) {\n            var _this = _super.call(this, location) || this;\n            _this.type = type;\n            _this.value = value;\n            return _this;\n        }\n        CssInlineRuleAst.prototype.visit = function (visitor, context) {\n            return visitor.visitCssInlineRule(this, context);\n        };\n        return CssInlineRuleAst;\n    }(CssRuleAst));\n    var CssSelectorRuleAst = /** @class */ (function (_super) {\n        __extends(CssSelectorRuleAst, _super);\n        function CssSelectorRuleAst(location, selectors, block) {\n            var _this = _super.call(this, location, BlockType.Selector, block) || this;\n            _this.selectors = selectors;\n            _this.strValue = selectors.map(function (selector) { return selector.strValue; }).join(',');\n            return _this;\n        }\n        CssSelectorRuleAst.prototype.visit = function (visitor, context) {\n            return visitor.visitCssSelectorRule(this, context);\n        };\n        return CssSelectorRuleAst;\n    }(CssBlockRuleAst));\n    var CssDefinitionAst = /** @class */ (function (_super) {\n        __extends(CssDefinitionAst, _super);\n        function CssDefinitionAst(location, property, value) {\n            var _this = _super.call(this, location) || this;\n            _this.property = property;\n            _this.value = value;\n            return _this;\n        }\n        CssDefinitionAst.prototype.visit = function (visitor, context) {\n            return visitor.visitCssDefinition(this, context);\n        };\n        return CssDefinitionAst;\n    }(CssAst));\n    var CssSelectorPartAst = /** @class */ (function (_super) {\n        __extends(CssSelectorPartAst, _super);\n        function CssSelectorPartAst(location) {\n            return _super.call(this, location) || this;\n        }\n        return CssSelectorPartAst;\n    }(CssAst));\n    var CssSelectorAst = /** @class */ (function (_super) {\n        __extends(CssSelectorAst, _super);\n        function CssSelectorAst(location, selectorParts) {\n            var _this = _super.call(this, location) || this;\n            _this.selectorParts = selectorParts;\n            _this.strValue = selectorParts.map(function (part) { return part.strValue; }).join('');\n            return _this;\n        }\n        CssSelectorAst.prototype.visit = function (visitor, context) {\n            return visitor.visitCssSelector(this, context);\n        };\n        return CssSelectorAst;\n    }(CssSelectorPartAst));\n    var CssSimpleSelectorAst = /** @class */ (function (_super) {\n        __extends(CssSimpleSelectorAst, _super);\n        function CssSimpleSelectorAst(location, tokens, strValue, pseudoSelectors, operator) {\n            var _this = _super.call(this, location) || this;\n            _this.tokens = tokens;\n            _this.strValue = strValue;\n            _this.pseudoSelectors = pseudoSelectors;\n            _this.operator = operator;\n            return _this;\n        }\n        CssSimpleSelectorAst.prototype.visit = function (visitor, context) {\n            return visitor.visitCssSimpleSelector(this, context);\n        };\n        return CssSimpleSelectorAst;\n    }(CssSelectorPartAst));\n    var CssPseudoSelectorAst = /** @class */ (function (_super) {\n        __extends(CssPseudoSelectorAst, _super);\n        function CssPseudoSelectorAst(location, strValue, name, tokens, innerSelectors) {\n            var _this = _super.call(this, location) || this;\n            _this.strValue = strValue;\n            _this.name = name;\n            _this.tokens = tokens;\n            _this.innerSelectors = innerSelectors;\n            return _this;\n        }\n        CssPseudoSelectorAst.prototype.visit = function (visitor, context) {\n            return visitor.visitCssPseudoSelector(this, context);\n        };\n        return CssPseudoSelectorAst;\n    }(CssSelectorPartAst));\n    var CssBlockAst = /** @class */ (function (_super) {\n        __extends(CssBlockAst, _super);\n        function CssBlockAst(location, entries) {\n            var _this = _super.call(this, location) || this;\n            _this.entries = entries;\n            return _this;\n        }\n        CssBlockAst.prototype.visit = function (visitor, context) { return visitor.visitCssBlock(this, context); };\n        return CssBlockAst;\n    }(CssAst));\n    /*\n     a style block is different from a standard block because it contains\n     css prop:value definitions. A regular block can contain a list of Ast entries.\n     */\n    var CssStylesBlockAst = /** @class */ (function (_super) {\n        __extends(CssStylesBlockAst, _super);\n        function CssStylesBlockAst(location, definitions) {\n            var _this = _super.call(this, location, definitions) || this;\n            _this.definitions = definitions;\n            return _this;\n        }\n        CssStylesBlockAst.prototype.visit = function (visitor, context) {\n            return visitor.visitCssStylesBlock(this, context);\n        };\n        return CssStylesBlockAst;\n    }(CssBlockAst));\n    var CssStyleSheetAst = /** @class */ (function (_super) {\n        __extends(CssStyleSheetAst, _super);\n        function CssStyleSheetAst(location, rules) {\n            var _this = _super.call(this, location) || this;\n            _this.rules = rules;\n            return _this;\n        }\n        CssStyleSheetAst.prototype.visit = function (visitor, context) {\n            return visitor.visitCssStyleSheet(this, context);\n        };\n        return CssStyleSheetAst;\n    }(CssAst));\n    var CssUnknownRuleAst = /** @class */ (function (_super) {\n        __extends(CssUnknownRuleAst, _super);\n        function CssUnknownRuleAst(location, ruleName, tokens) {\n            var _this = _super.call(this, location) || this;\n            _this.ruleName = ruleName;\n            _this.tokens = tokens;\n            return _this;\n        }\n        CssUnknownRuleAst.prototype.visit = function (visitor, context) {\n            return visitor.visitCssUnknownRule(this, context);\n        };\n        return CssUnknownRuleAst;\n    }(CssRuleAst));\n    var CssUnknownTokenListAst = /** @class */ (function (_super) {\n        __extends(CssUnknownTokenListAst, _super);\n        function CssUnknownTokenListAst(location, name, tokens) {\n            var _this = _super.call(this, location) || this;\n            _this.name = name;\n            _this.tokens = tokens;\n            return _this;\n        }\n        CssUnknownTokenListAst.prototype.visit = function (visitor, context) {\n            return visitor.visitCssUnknownTokenList(this, context);\n        };\n        return CssUnknownTokenListAst;\n    }(CssRuleAst));\n    function mergeTokens(tokens, separator) {\n        if (separator === void 0) { separator = ''; }\n        var mainToken = tokens[0];\n        var str = mainToken.strValue;\n        for (var i = 1; i < tokens.length; i++) {\n            str += separator + tokens[i].strValue;\n        }\n        return new CssToken(mainToken.index, mainToken.column, mainToken.line, mainToken.type, str);\n    }\n\n    /**\n     * @license\n     * Copyright Google Inc. 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    var __extends$1 = (undefined && undefined.__extends) || (function () {\n        var extendStatics = function (d, b) {\n            extendStatics = Object.setPrototypeOf ||\n                ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n                function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n            return extendStatics(d, b);\n        };\n        return function (d, b) {\n            extendStatics(d, b);\n            function __() { this.constructor = d; }\n            d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n        };\n    })();\n    var SPACE_OPERATOR = ' ';\n    var SLASH_CHARACTER = '/';\n    var GT_CHARACTER = '>';\n    var TRIPLE_GT_OPERATOR_STR = '>>>';\n    var DEEP_OPERATOR_STR = '/deep/';\n    var EOF_DELIM_FLAG = 1;\n    var RBRACE_DELIM_FLAG = 2;\n    var LBRACE_DELIM_FLAG = 4;\n    var COMMA_DELIM_FLAG = 8;\n    var COLON_DELIM_FLAG = 16;\n    var SEMICOLON_DELIM_FLAG = 32;\n    var NEWLINE_DELIM_FLAG = 64;\n    var RPAREN_DELIM_FLAG = 128;\n    var LPAREN_DELIM_FLAG = 256;\n    var SPACE_DELIM_FLAG = 512;\n    function _pseudoSelectorSupportsInnerSelectors(name) {\n        return ['not', 'host', 'host-context'].indexOf(name) >= 0;\n    }\n    function isSelectorOperatorCharacter(code) {\n        switch (code) {\n            case $SLASH:\n            case $TILDA:\n            case $PLUS:\n            case $GT:\n                return true;\n            default:\n                return isWhitespace(code);\n        }\n    }\n    function getDelimFromCharacter(code) {\n        switch (code) {\n            case $EOF:\n                return EOF_DELIM_FLAG;\n            case $COMMA:\n                return COMMA_DELIM_FLAG;\n            case $COLON:\n                return COLON_DELIM_FLAG;\n            case $SEMICOLON:\n                return SEMICOLON_DELIM_FLAG;\n            case $RBRACE:\n                return RBRACE_DELIM_FLAG;\n            case $LBRACE:\n                return LBRACE_DELIM_FLAG;\n            case $RPAREN:\n                return RPAREN_DELIM_FLAG;\n            case $SPACE:\n            case $TAB:\n                return SPACE_DELIM_FLAG;\n            default:\n                return isNewline(code) ? NEWLINE_DELIM_FLAG : 0;\n        }\n    }\n    function characterContainsDelimiter(code, delimiters) {\n        return (getDelimFromCharacter(code) & delimiters) > 0;\n    }\n    var ParsedCssResult = /** @class */ (function () {\n        function ParsedCssResult(errors, ast) {\n            this.errors = errors;\n            this.ast = ast;\n        }\n        return ParsedCssResult;\n    }());\n    var CssParser = /** @class */ (function () {\n        function CssParser() {\n            this._errors = [];\n        }\n        /**\n         * @param css the CSS code that will be parsed\n         * @param url the name of the CSS file containing the CSS source code\n         */\n        CssParser.prototype.parse = function (css, url) {\n            var lexer = new CssLexer();\n            this._file = new ParseSourceFile(css, url);\n            this._scanner = lexer.scan(css, false);\n            var ast = this._parseStyleSheet(EOF_DELIM_FLAG);\n            var errors = this._errors;\n            this._errors = [];\n            var result = new ParsedCssResult(errors, ast);\n            this._file = null;\n            this._scanner = null;\n            return result;\n        };\n        /** @internal */\n        CssParser.prototype._parseStyleSheet = function (delimiters) {\n            var results = [];\n            this._scanner.consumeEmptyStatements();\n            while (this._scanner.peek != $EOF) {\n                this._scanner.setMode(CssLexerMode.BLOCK);\n                results.push(this._parseRule(delimiters));\n            }\n            var span = null;\n            if (results.length > 0) {\n                var firstRule = results[0];\n                // we collect the last token like so incase there was an\n                // EOF token that was emitted sometime during the lexing\n                span = this._generateSourceSpan(firstRule, this._lastToken);\n            }\n            return new CssStyleSheetAst(span, results);\n        };\n        /** @internal */\n        CssParser.prototype._getSourceContent = function () { return this._scanner != null ? this._scanner.input : ''; };\n        /** @internal */\n        CssParser.prototype._extractSourceContent = function (start, end) {\n            return this._getSourceContent().substring(start, end + 1);\n        };\n        /** @internal */\n        CssParser.prototype._generateSourceSpan = function (start, end) {\n            if (end === void 0) { end = null; }\n            var startLoc;\n            if (start instanceof CssAst) {\n                startLoc = start.location.start;\n            }\n            else {\n                var token = start;\n                if (token == null) {\n                    // the data here is invalid, however, if and when this does\n                    // occur, any other errors associated with this will be collected\n                    token = this._lastToken;\n                }\n                startLoc = new ParseLocation(this._file, token.index, token.line, token.column);\n            }\n            if (end == null) {\n                end = this._lastToken;\n            }\n            var endLine = -1;\n            var endColumn = -1;\n            var endIndex = -1;\n            if (end instanceof CssAst) {\n                endLine = end.location.end.line;\n                endColumn = end.location.end.col;\n                endIndex = end.location.end.offset;\n            }\n            else if (end instanceof CssToken) {\n                endLine = end.line;\n                endColumn = end.column;\n                endIndex = end.index;\n            }\n            var endLoc = new ParseLocation(this._file, endIndex, endLine, endColumn);\n            return new ParseSourceSpan(startLoc, endLoc);\n        };\n        /** @internal */\n        CssParser.prototype._resolveBlockType = function (token) {\n            switch (token.strValue) {\n                case '@-o-keyframes':\n                case '@-moz-keyframes':\n                case '@-webkit-keyframes':\n                case '@keyframes':\n                    return BlockType.Keyframes;\n                case '@charset':\n                    return BlockType.Charset;\n                case '@import':\n                    return BlockType.Import;\n                case '@namespace':\n                    return BlockType.Namespace;\n                case '@page':\n                    return BlockType.Page;\n                case '@document':\n                    return BlockType.Document;\n                case '@media':\n                    return BlockType.MediaQuery;\n                case '@font-face':\n                    return BlockType.FontFace;\n                case '@viewport':\n                    return BlockType.Viewport;\n                case '@supports':\n                    return BlockType.Supports;\n                default:\n                    return BlockType.Unsupported;\n            }\n        };\n        /** @internal */\n        CssParser.prototype._parseRule = function (delimiters) {\n            if (this._scanner.peek == $AT) {\n                return this._parseAtRule(delimiters);\n            }\n            return this._parseSelectorRule(delimiters);\n        };\n        /** @internal */\n        CssParser.prototype._parseAtRule = function (delimiters) {\n            var start = this._getScannerIndex();\n            this._scanner.setMode(CssLexerMode.BLOCK);\n            var token = this._scan();\n            var startToken = token;\n            this._assertCondition(token.type == CssTokenType.AtKeyword, \"The CSS Rule \" + token.strValue + \" is not a valid [@] rule.\", token);\n            var block;\n            var type = this._resolveBlockType(token);\n            var span;\n            var tokens;\n            var endToken;\n            var end;\n            var strValue;\n            var query;\n            switch (type) {\n                case BlockType.Charset:\n                case BlockType.Namespace:\n                case BlockType.Import:\n                    var value = this._parseValue(delimiters);\n                    this._scanner.setMode(CssLexerMode.BLOCK);\n                    this._scanner.consumeEmptyStatements();\n                    span = this._generateSourceSpan(startToken, value);\n                    return new CssInlineRuleAst(span, type, value);\n                case BlockType.Viewport:\n                case BlockType.FontFace:\n                    block = this._parseStyleBlock(delimiters);\n                    span = this._generateSourceSpan(startToken, block);\n                    return new CssBlockRuleAst(span, type, block);\n                case BlockType.Keyframes:\n                    tokens = this._collectUntilDelim(delimiters | RBRACE_DELIM_FLAG | LBRACE_DELIM_FLAG);\n                    // keyframes only have one identifier name\n                    var name_1 = tokens[0];\n                    block = this._parseKeyframeBlock(delimiters);\n                    span = this._generateSourceSpan(startToken, block);\n                    return new CssKeyframeRuleAst(span, name_1, block);\n                case BlockType.MediaQuery:\n                    this._scanner.setMode(CssLexerMode.MEDIA_QUERY);\n                    tokens = this._collectUntilDelim(delimiters | RBRACE_DELIM_FLAG | LBRACE_DELIM_FLAG);\n                    endToken = tokens[tokens.length - 1];\n                    // we do not track the whitespace after the mediaQuery predicate ends\n                    // so we have to calculate the end string value on our own\n                    end = endToken.index + endToken.strValue.length - 1;\n                    strValue = this._extractSourceContent(start, end);\n                    span = this._generateSourceSpan(startToken, endToken);\n                    query = new CssAtRulePredicateAst(span, strValue, tokens);\n                    block = this._parseBlock(delimiters);\n                    strValue = this._extractSourceContent(start, this._getScannerIndex() - 1);\n                    span = this._generateSourceSpan(startToken, block);\n                    return new CssMediaQueryRuleAst(span, strValue, query, block);\n                case BlockType.Document:\n                case BlockType.Supports:\n                case BlockType.Page:\n                    this._scanner.setMode(CssLexerMode.AT_RULE_QUERY);\n                    tokens = this._collectUntilDelim(delimiters | RBRACE_DELIM_FLAG | LBRACE_DELIM_FLAG);\n                    endToken = tokens[tokens.length - 1];\n                    // we do not track the whitespace after this block rule predicate ends\n                    // so we have to calculate the end string value on our own\n                    end = endToken.index + endToken.strValue.length - 1;\n                    strValue = this._extractSourceContent(start, end);\n                    span = this._generateSourceSpan(startToken, tokens[tokens.length - 1]);\n                    query = new CssAtRulePredicateAst(span, strValue, tokens);\n                    block = this._parseBlock(delimiters);\n                    strValue = this._extractSourceContent(start, block.end.offset);\n                    span = this._generateSourceSpan(startToken, block);\n                    return new CssBlockDefinitionRuleAst(span, strValue, type, query, block);\n                // if a custom @rule { ... } is used it should still tokenize the insides\n                default:\n                    var listOfTokens_1 = [];\n                    var tokenName = token.strValue;\n                    this._scanner.setMode(CssLexerMode.ALL);\n                    this._error(generateErrorMessage(this._getSourceContent(), \"The CSS \\\"at\\\" rule \\\"\" + tokenName + \"\\\" is not allowed to used here\", token.strValue, token.index, token.line, token.column), token);\n                    this._collectUntilDelim(delimiters | LBRACE_DELIM_FLAG | SEMICOLON_DELIM_FLAG)\n                        .forEach(function (token) { listOfTokens_1.push(token); });\n                    if (this._scanner.peek == $LBRACE) {\n                        listOfTokens_1.push(this._consume(CssTokenType.Character, '{'));\n                        this._collectUntilDelim(delimiters | RBRACE_DELIM_FLAG | LBRACE_DELIM_FLAG)\n                            .forEach(function (token) { listOfTokens_1.push(token); });\n                        listOfTokens_1.push(this._consume(CssTokenType.Character, '}'));\n                    }\n                    endToken = listOfTokens_1[listOfTokens_1.length - 1];\n                    span = this._generateSourceSpan(startToken, endToken);\n                    return new CssUnknownRuleAst(span, tokenName, listOfTokens_1);\n            }\n        };\n        /** @internal */\n        CssParser.prototype._parseSelectorRule = function (delimiters) {\n            var start = this._getScannerIndex();\n            var selectors = this._parseSelectors(delimiters);\n            var block = this._parseStyleBlock(delimiters);\n            var ruleAst;\n            var span;\n            var startSelector = selectors[0];\n            if (block != null) {\n                span = this._generateSourceSpan(startSelector, block);\n                ruleAst = new CssSelectorRuleAst(span, selectors, block);\n            }\n            else {\n                var name_2 = this._extractSourceContent(start, this._getScannerIndex() - 1);\n                var innerTokens_1 = [];\n                selectors.forEach(function (selector) {\n                    selector.selectorParts.forEach(function (part) {\n                        part.tokens.forEach(function (token) { innerTokens_1.push(token); });\n                    });\n                });\n                var endToken = innerTokens_1[innerTokens_1.length - 1];\n                span = this._generateSourceSpan(startSelector, endToken);\n                ruleAst = new CssUnknownTokenListAst(span, name_2, innerTokens_1);\n            }\n            this._scanner.setMode(CssLexerMode.BLOCK);\n            this._scanner.consumeEmptyStatements();\n            return ruleAst;\n        };\n        /** @internal */\n        CssParser.prototype._parseSelectors = function (delimiters) {\n            delimiters |= LBRACE_DELIM_FLAG | SEMICOLON_DELIM_FLAG;\n            var selectors = [];\n            var isParsingSelectors = true;\n            while (isParsingSelectors) {\n                selectors.push(this._parseSelector(delimiters));\n                isParsingSelectors = !characterContainsDelimiter(this._scanner.peek, delimiters);\n                if (isParsingSelectors) {\n                    this._consume(CssTokenType.Character, ',');\n                    isParsingSelectors = !characterContainsDelimiter(this._scanner.peek, delimiters);\n                    if (isParsingSelectors) {\n                        this._scanner.consumeWhitespace();\n                    }\n                }\n            }\n            return selectors;\n        };\n        /** @internal */\n        CssParser.prototype._scan = function () {\n            var output = this._scanner.scan();\n            var token = output.token;\n            var error = output.error;\n            if (error != null) {\n                this._error(getRawMessage(error), token);\n            }\n            this._lastToken = token;\n            return token;\n        };\n        /** @internal */\n        CssParser.prototype._getScannerIndex = function () { return this._scanner.index; };\n        /** @internal */\n        CssParser.prototype._consume = function (type, value) {\n            if (value === void 0) { value = null; }\n            var output = this._scanner.consume(type, value);\n            var token = output.token;\n            var error = output.error;\n            if (error != null) {\n                this._error(getRawMessage(error), token);\n            }\n            this._lastToken = token;\n            return token;\n        };\n        /** @internal */\n        CssParser.prototype._parseKeyframeBlock = function (delimiters) {\n            delimiters |= RBRACE_DELIM_FLAG;\n            this._scanner.setMode(CssLexerMode.KEYFRAME_BLOCK);\n            var startToken = this._consume(CssTokenType.Character, '{');\n            var definitions = [];\n            while (!characterContainsDelimiter(this._scanner.peek, delimiters)) {\n                definitions.push(this._parseKeyframeDefinition(delimiters));\n            }\n            var endToken = this._consume(CssTokenType.Character, '}');\n            var span = this._generateSourceSpan(startToken, endToken);\n            return new CssBlockAst(span, definitions);\n        };\n        /** @internal */\n        CssParser.prototype._parseKeyframeDefinition = function (delimiters) {\n            var start = this._getScannerIndex();\n            var stepTokens = [];\n            delimiters |= LBRACE_DELIM_FLAG;\n            while (!characterContainsDelimiter(this._scanner.peek, delimiters)) {\n                stepTokens.push(this._parseKeyframeLabel(delimiters | COMMA_DELIM_FLAG));\n                if (this._scanner.peek != $LBRACE) {\n                    this._consume(CssTokenType.Character, ',');\n                }\n            }\n            var stylesBlock = this._parseStyleBlock(delimiters | RBRACE_DELIM_FLAG);\n            var span = this._generateSourceSpan(stepTokens[0], stylesBlock);\n            var ast = new CssKeyframeDefinitionAst(span, stepTokens, stylesBlock);\n            this._scanner.setMode(CssLexerMode.BLOCK);\n            return ast;\n        };\n        /** @internal */\n        CssParser.prototype._parseKeyframeLabel = function (delimiters) {\n            this._scanner.setMode(CssLexerMode.KEYFRAME_BLOCK);\n            return mergeTokens(this._collectUntilDelim(delimiters));\n        };\n        /** @internal */\n        CssParser.prototype._parsePseudoSelector = function (delimiters) {\n            var start = this._getScannerIndex();\n            delimiters &= ~COMMA_DELIM_FLAG;\n            // we keep the original value since we may use it to recurse when :not, :host are used\n            var startingDelims = delimiters;\n            var startToken = this._consume(CssTokenType.Character, ':');\n            var tokens = [startToken];\n            if (this._scanner.peek == $COLON) { // ::something\n                tokens.push(this._consume(CssTokenType.Character, ':'));\n            }\n            var innerSelectors = [];\n            this._scanner.setMode(CssLexerMode.PSEUDO_SELECTOR);\n            // host, host-context, lang, not, nth-child are all identifiers\n            var pseudoSelectorToken = this._consume(CssTokenType.Identifier);\n            var pseudoSelectorName = pseudoSelectorToken.strValue;\n            tokens.push(pseudoSelectorToken);\n            // host(), lang(), nth-child(), etc...\n            if (this._scanner.peek == $LPAREN) {\n                this._scanner.setMode(CssLexerMode.PSEUDO_SELECTOR_WITH_ARGUMENTS);\n                var openParenToken = this._consume(CssTokenType.Character, '(');\n                tokens.push(openParenToken);\n                // :host(innerSelector(s)), :not(selector), etc...\n                if (_pseudoSelectorSupportsInnerSelectors(pseudoSelectorName)) {\n                    var innerDelims = startingDelims | LPAREN_DELIM_FLAG | RPAREN_DELIM_FLAG;\n                    if (pseudoSelectorName == 'not') {\n                        // the inner selector inside of :not(...) can only be one\n                        // CSS selector (no commas allowed) ... This is according\n                        // to the CSS specification\n                        innerDelims |= COMMA_DELIM_FLAG;\n                    }\n                    // :host(a, b, c) {\n                    this._parseSelectors(innerDelims).forEach(function (selector, index) {\n                        innerSelectors.push(selector);\n                    });\n                }\n                else {\n                    // this branch is for things like \"en-us, 2k + 1, etc...\"\n                    // which all end up in pseudoSelectors like :lang, :nth-child, etc..\n                    var innerValueDelims = delimiters | LBRACE_DELIM_FLAG | COLON_DELIM_FLAG |\n                        RPAREN_DELIM_FLAG | LPAREN_DELIM_FLAG;\n                    while (!characterContainsDelimiter(this._scanner.peek, innerValueDelims)) {\n                        var token = this._scan();\n                        tokens.push(token);\n                    }\n                }\n                var closeParenToken = this._consume(CssTokenType.Character, ')');\n                tokens.push(closeParenToken);\n            }\n            var end = this._getScannerIndex() - 1;\n            var strValue = this._extractSourceContent(start, end);\n            var endToken = tokens[tokens.length - 1];\n            var span = this._generateSourceSpan(startToken, endToken);\n            return new CssPseudoSelectorAst(span, strValue, pseudoSelectorName, tokens, innerSelectors);\n        };\n        /** @internal */\n        CssParser.prototype._parseSimpleSelector = function (delimiters) {\n            var start = this._getScannerIndex();\n            delimiters |= COMMA_DELIM_FLAG;\n            this._scanner.setMode(CssLexerMode.SELECTOR);\n            var selectorCssTokens = [];\n            var pseudoSelectors = [];\n            var previousToken = undefined;\n            var selectorPartDelimiters = delimiters | SPACE_DELIM_FLAG;\n            var loopOverSelector = !characterContainsDelimiter(this._scanner.peek, selectorPartDelimiters);\n            var hasAttributeError = false;\n            while (loopOverSelector) {\n                var peek = this._scanner.peek;\n                switch (peek) {\n                    case $COLON:\n                        var innerPseudo = this._parsePseudoSelector(delimiters);\n                        pseudoSelectors.push(innerPseudo);\n                        this._scanner.setMode(CssLexerMode.SELECTOR);\n                        break;\n                    case $LBRACKET:\n                        // we set the mode after the scan because attribute mode does not\n                        // allow attribute [] values. And this also will catch any errors\n                        // if an extra \"[\" is used inside.\n                        selectorCssTokens.push(this._scan());\n                        this._scanner.setMode(CssLexerMode.ATTRIBUTE_SELECTOR);\n                        break;\n                    case $RBRACKET:\n                        if (this._scanner.getMode() != CssLexerMode.ATTRIBUTE_SELECTOR) {\n                            hasAttributeError = true;\n                        }\n                        // we set the mode early because attribute mode does not\n                        // allow attribute [] values\n                        this._scanner.setMode(CssLexerMode.SELECTOR);\n                        selectorCssTokens.push(this._scan());\n                        break;\n                    default:\n                        if (isSelectorOperatorCharacter(peek)) {\n                            loopOverSelector = false;\n                            continue;\n                        }\n                        var token = this._scan();\n                        previousToken = token;\n                        selectorCssTokens.push(token);\n                        break;\n                }\n                loopOverSelector = !characterContainsDelimiter(this._scanner.peek, selectorPartDelimiters);\n            }\n            hasAttributeError =\n                hasAttributeError || this._scanner.getMode() == CssLexerMode.ATTRIBUTE_SELECTOR;\n            if (hasAttributeError) {\n                this._error(\"Unbalanced CSS attribute selector at column \" + previousToken.line + \":\" + previousToken.column, previousToken);\n            }\n            var end = this._getScannerIndex() - 1;\n            // this happens if the selector is not directly followed by\n            // a comma or curly brace without a space in between\n            var operator = null;\n            var operatorScanCount = 0;\n            var lastOperatorToken = null;\n            if (!characterContainsDelimiter(this._scanner.peek, delimiters)) {\n                while (operator == null && !characterContainsDelimiter(this._scanner.peek, delimiters) &&\n                    isSelectorOperatorCharacter(this._scanner.peek)) {\n                    var token = this._scan();\n                    var tokenOperator = token.strValue;\n                    operatorScanCount++;\n                    lastOperatorToken = token;\n                    if (tokenOperator != SPACE_OPERATOR) {\n                        switch (tokenOperator) {\n                            case SLASH_CHARACTER:\n                                // /deep/ operator\n                                var deepToken = this._consume(CssTokenType.Identifier);\n                                var deepSlash = this._consume(CssTokenType.Character);\n                                var index = lastOperatorToken.index;\n                                var line = lastOperatorToken.line;\n                                var column = lastOperatorToken.column;\n                                if (deepToken != null && deepToken.strValue.toLowerCase() == 'deep' &&\n                                    deepSlash.strValue == SLASH_CHARACTER) {\n                                    token = new CssToken(lastOperatorToken.index, lastOperatorToken.column, lastOperatorToken.line, CssTokenType.Identifier, DEEP_OPERATOR_STR);\n                                }\n                                else {\n                                    var text = SLASH_CHARACTER + deepToken.strValue + deepSlash.strValue;\n                                    this._error(generateErrorMessage(this._getSourceContent(), text + \" is an invalid CSS operator\", text, index, line, column), lastOperatorToken);\n                                    token = new CssToken(index, column, line, CssTokenType.Invalid, text);\n                                }\n                                break;\n                            case GT_CHARACTER:\n                                // >>> operator\n                                if (this._scanner.peek == $GT && this._scanner.peekPeek == $GT) {\n                                    this._consume(CssTokenType.Character, GT_CHARACTER);\n                                    this._consume(CssTokenType.Character, GT_CHARACTER);\n                                    token = new CssToken(lastOperatorToken.index, lastOperatorToken.column, lastOperatorToken.line, CssTokenType.Identifier, TRIPLE_GT_OPERATOR_STR);\n                                }\n                                break;\n                        }\n                        operator = token;\n                    }\n                }\n                // so long as there is an operator then we can have an\n                // ending value that is beyond the selector value ...\n                // otherwise it's just a bunch of trailing whitespace\n                if (operator != null) {\n                    end = operator.index;\n                }\n            }\n            this._scanner.consumeWhitespace();\n            var strValue = this._extractSourceContent(start, end);\n            // if we do come across one or more spaces inside of\n            // the operators loop then an empty space is still a\n            // valid operator to use if something else was not found\n            if (operator == null && operatorScanCount > 0 && this._scanner.peek != $LBRACE) {\n                operator = lastOperatorToken;\n            }\n            // please note that `endToken` is reassigned multiple times below\n            // so please do not optimize the if statements into if/elseif\n            var startTokenOrAst = null;\n            var endTokenOrAst = null;\n            if (selectorCssTokens.length > 0) {\n                startTokenOrAst = startTokenOrAst || selectorCssTokens[0];\n                endTokenOrAst = selectorCssTokens[selectorCssTokens.length - 1];\n            }\n            if (pseudoSelectors.length > 0) {\n                startTokenOrAst = startTokenOrAst || pseudoSelectors[0];\n                endTokenOrAst = pseudoSelectors[pseudoSelectors.length - 1];\n            }\n            if (operator != null) {\n                startTokenOrAst = startTokenOrAst || operator;\n                endTokenOrAst = operator;\n            }\n            var span = this._generateSourceSpan(startTokenOrAst, endTokenOrAst);\n            return new CssSimpleSelectorAst(span, selectorCssTokens, strValue, pseudoSelectors, operator);\n        };\n        /** @internal */\n        CssParser.prototype._parseSelector = function (delimiters) {\n            delimiters |= COMMA_DELIM_FLAG;\n            this._scanner.setMode(CssLexerMode.SELECTOR);\n            var simpleSelectors = [];\n            while (!characterContainsDelimiter(this._scanner.peek, delimiters)) {\n                simpleSelectors.push(this._parseSimpleSelector(delimiters));\n                this._scanner.consumeWhitespace();\n            }\n            var firstSelector = simpleSelectors[0];\n            var lastSelector = simpleSelectors[simpleSelectors.length - 1];\n            var span = this._generateSourceSpan(firstSelector, lastSelector);\n            return new CssSelectorAst(span, simpleSelectors);\n        };\n        /** @internal */\n        CssParser.prototype._parseValue = function (delimiters) {\n            delimiters |= RBRACE_DELIM_FLAG | SEMICOLON_DELIM_FLAG | NEWLINE_DELIM_FLAG;\n            this._scanner.setMode(CssLexerMode.STYLE_VALUE);\n            var start = this._getScannerIndex();\n            var tokens = [];\n            var wsStr = '';\n            var previous = undefined;\n            while (!characterContainsDelimiter(this._scanner.peek, delimiters)) {\n                var token = void 0;\n                if (previous != null && previous.type == CssTokenType.Identifier &&\n                    this._scanner.peek == $LPAREN) {\n                    token = this._consume(CssTokenType.Character, '(');\n                    tokens.push(token);\n                    this._scanner.setMode(CssLexerMode.STYLE_VALUE_FUNCTION);\n                    token = this._scan();\n                    tokens.push(token);\n                    this._scanner.setMode(CssLexerMode.STYLE_VALUE);\n                    token = this._consume(CssTokenType.Character, ')');\n                    tokens.push(token);\n                }\n                else {\n                    token = this._scan();\n                    if (token.type == CssTokenType.Whitespace) {\n                        wsStr += token.strValue;\n                    }\n                    else {\n                        wsStr = '';\n                        tokens.push(token);\n                    }\n                }\n                previous = token;\n            }\n            var end = this._getScannerIndex() - 1;\n            this._scanner.consumeWhitespace();\n            var code = this._scanner.peek;\n            if (code == $SEMICOLON) {\n                this._consume(CssTokenType.Character, ';');\n            }\n            else if (code != $RBRACE) {\n                this._error(generateErrorMessage(this._getSourceContent(), \"The CSS key/value definition did not end with a semicolon\", previous.strValue, previous.index, previous.line, previous.column), previous);\n            }\n            var strValue = this._extractSourceContent(start, end);\n            var startToken = tokens[0];\n            var endToken = tokens[tokens.length - 1];\n            var span = this._generateSourceSpan(startToken, endToken);\n            return new CssStyleValueAst(span, tokens, strValue);\n        };\n        /** @internal */\n        CssParser.prototype._collectUntilDelim = function (delimiters, assertType) {\n            if (assertType === void 0) { assertType = null; }\n            var tokens = [];\n            while (!characterContainsDelimiter(this._scanner.peek, delimiters)) {\n                var val = assertType != null ? this._consume(assertType) : this._scan();\n                tokens.push(val);\n            }\n            return tokens;\n        };\n        /** @internal */\n        CssParser.prototype._parseBlock = function (delimiters) {\n            delimiters |= RBRACE_DELIM_FLAG;\n            this._scanner.setMode(CssLexerMode.BLOCK);\n            var startToken = this._consume(CssTokenType.Character, '{');\n            this._scanner.consumeEmptyStatements();\n            var results = [];\n            while (!characterContainsDelimiter(this._scanner.peek, delimiters)) {\n                results.push(this._parseRule(delimiters));\n            }\n            var endToken = this._consume(CssTokenType.Character, '}');\n            this._scanner.setMode(CssLexerMode.BLOCK);\n            this._scanner.consumeEmptyStatements();\n            var span = this._generateSourceSpan(startToken, endToken);\n            return new CssBlockAst(span, results);\n        };\n        /** @internal */\n        CssParser.prototype._parseStyleBlock = function (delimiters) {\n            delimiters |= RBRACE_DELIM_FLAG | LBRACE_DELIM_FLAG;\n            this._scanner.setMode(CssLexerMode.STYLE_BLOCK);\n            var startToken = this._consume(CssTokenType.Character, '{');\n            if (startToken.numValue != $LBRACE) {\n                return null;\n            }\n            var definitions = [];\n            this._scanner.consumeEmptyStatements();\n            while (!characterContainsDelimiter(this._scanner.peek, delimiters)) {\n                definitions.push(this._parseDefinition(delimiters));\n                this._scanner.consumeEmptyStatements();\n            }\n            var endToken = this._consume(CssTokenType.Character, '}');\n            this._scanner.setMode(CssLexerMode.STYLE_BLOCK);\n            this._scanner.consumeEmptyStatements();\n            var span = this._generateSourceSpan(startToken, endToken);\n            return new CssStylesBlockAst(span, definitions);\n        };\n        /** @internal */\n        CssParser.prototype._parseDefinition = function (delimiters) {\n            this._scanner.setMode(CssLexerMode.STYLE_BLOCK);\n            var prop = this._consume(CssTokenType.Identifier);\n            var parseValue = false;\n            var value = null;\n            var endToken = prop;\n            // the colon value separates the prop from the style.\n            // there are a few cases as to what could happen if it\n            // is missing\n            switch (this._scanner.peek) {\n                case $SEMICOLON:\n                case $RBRACE:\n                case $EOF:\n                    parseValue = false;\n                    break;\n                default:\n                    var propStr_1 = [prop.strValue];\n                    if (this._scanner.peek != $COLON) {\n                        // this will throw the error\n                        var nextValue = this._consume(CssTokenType.Character, ':');\n                        propStr_1.push(nextValue.strValue);\n                        var remainingTokens = this._collectUntilDelim(delimiters | COLON_DELIM_FLAG | SEMICOLON_DELIM_FLAG, CssTokenType.Identifier);\n                        if (remainingTokens.length > 0) {\n                            remainingTokens.forEach(function (token) { propStr_1.push(token.strValue); });\n                        }\n                        endToken = prop =\n                            new CssToken(prop.index, prop.column, prop.line, prop.type, propStr_1.join(' '));\n                    }\n                    // this means we've reached the end of the definition and/or block\n                    if (this._scanner.peek == $COLON) {\n                        this._consume(CssTokenType.Character, ':');\n                        parseValue = true;\n                    }\n                    break;\n            }\n            if (parseValue) {\n                value = this._parseValue(delimiters);\n                endToken = value;\n            }\n            else {\n                this._error(generateErrorMessage(this._getSourceContent(), \"The CSS property was not paired with a style value\", prop.strValue, prop.index, prop.line, prop.column), prop);\n            }\n            var span = this._generateSourceSpan(prop, endToken);\n            return new CssDefinitionAst(span, prop, value);\n        };\n        /** @internal */\n        CssParser.prototype._assertCondition = function (status, errorMessage, problemToken) {\n            if (!status) {\n                this._error(errorMessage, problemToken);\n                return true;\n            }\n            return false;\n        };\n        /** @internal */\n        CssParser.prototype._error = function (message, problemToken) {\n            var length = problemToken.strValue.length;\n            var error = CssParseError.create(this._file, 0, problemToken.line, problemToken.column, length, message);\n            this._errors.push(error);\n        };\n        return CssParser;\n    }());\n    var CssParseError = /** @class */ (function (_super) {\n        __extends$1(CssParseError, _super);\n        function CssParseError(span, message) {\n            return _super.call(this, span, message) || this;\n        }\n        CssParseError.create = function (file, offset, line, col, length, errMsg) {\n            var start = new ParseLocation(file, offset, line, col);\n            var end = new ParseLocation(file, offset, line, col + length);\n            var span = new ParseSourceSpan(start, end);\n            return new CssParseError(span, 'CSS Parse Error: ' + errMsg);\n        };\n        return CssParseError;\n    }(ParseError));\n\n    var parseCss = function (text) {\n        var parser = new CssParser();\n        return parser.parse(text, '').ast;\n    };\n\n    var TransformTemplateVisitor = /** @class */ (function () {\n        function TransformTemplateVisitor(_componentScope, _workspace) {\n            var _this = this;\n            this._componentScope = _componentScope;\n            this._workspace = _workspace;\n            this._matcher = new compiler.SelectorMatcher();\n            this._matcher = new compiler.SelectorMatcher();\n            this._componentScope.compilation.directives.forEach(function (directive) {\n                var selector = directive.selector;\n                if (!selector) {\n                    return;\n                }\n                _this._matcher.addSelectables(compiler.CssSelector.parse(selector), function () {\n                    return _this._workspace.getSymbol(directive.ref.node);\n                });\n            });\n        }\n        TransformTemplateVisitor.prototype.visit = function (node) {\n            return node.visit(this);\n        };\n        TransformTemplateVisitor.prototype.visitElement = function (element) {\n            return this._visitElementOrTemplate(element);\n        };\n        TransformTemplateVisitor.prototype.visitTemplate = function (template) {\n            return this._visitElementOrTemplate(template);\n        };\n        TransformTemplateVisitor.prototype.visitContent = function (content) {\n            var _this = this;\n            return {\n                component: null,\n                directives: [],\n                name: 'ng-content',\n                attributes: content.attributes.map(function (attribute) { return attribute.visit(_this); }),\n                children: [],\n                references: [],\n                variables: [],\n            };\n        };\n        TransformTemplateVisitor.prototype.visitVariable = function (variable) {\n            return variable.name;\n        };\n        TransformTemplateVisitor.prototype.visitReference = function (reference) {\n            return reference.name;\n        };\n        TransformTemplateVisitor.prototype.visitTextAttribute = function (attribute) {\n            return attribute.name;\n        };\n        TransformTemplateVisitor.prototype.visitBoundAttribute = function (attribute) {\n            return attribute.name;\n        };\n        TransformTemplateVisitor.prototype.visitBoundEvent = function (attribute) {\n            return attribute.name;\n        };\n        TransformTemplateVisitor.prototype.visitText = function (_) {\n            return;\n        };\n        TransformTemplateVisitor.prototype.visitBoundText = function (_) {\n            return;\n        };\n        TransformTemplateVisitor.prototype.visitIcu = function (_) {\n            return;\n        };\n        TransformTemplateVisitor.prototype._visitElementOrTemplate = function (element) {\n            var _this = this;\n            var _a;\n            var name = element instanceof compiler.TmplAstElement ? element.name : 'ng-template';\n            var directives = this._getDirectives(name, element);\n            var component = ((_a = directives.find(function (dir) { return dir.annotation === 'Component'; })) !== null && _a !== void 0 ? _a : null);\n            return {\n                name: name,\n                component: component,\n                directives: directives.filter(function (dir) { return dir.annotation === 'Directive'; }),\n                attributes: element.attributes.map(function (attribute) { return attribute.visit(_this); }),\n                children: element.children.map(function (child) { return child.visit(_this); }).filter(function (el) { return !!el; }),\n                references: element.references.map(function (ref) { return ref.visit(_this); }),\n                variables: [],\n            };\n        };\n        TransformTemplateVisitor.prototype._getDirectives = function (name, element) {\n            var selector = createCssSelector(name, getAttrsForDirectiveMatching(element));\n            var result = [];\n            this._matcher.match(selector, function (_, callback) {\n                result.push(callback());\n            });\n            return result;\n        };\n        return TransformTemplateVisitor;\n    }());\n    var splitNsName = function (elementName) {\n        if (elementName[0] != ':') {\n            return [null, elementName];\n        }\n        var colonIndex = elementName.indexOf(':', 1);\n        if (colonIndex == -1) {\n            throw new Error(\"Unsupported format \\\"\" + elementName + \"\\\" expecting \\\":namespace:name\\\"\");\n        }\n        return [elementName.slice(1, colonIndex), elementName.slice(colonIndex + 1)];\n    };\n    var createCssSelector = function (elementName, attributes) {\n        var cssSelector = new compiler.CssSelector();\n        var elementNameNoNs = splitNsName(elementName)[1];\n        cssSelector.setElement(elementNameNoNs);\n        Object.getOwnPropertyNames(attributes).forEach(function (name) {\n            var nameNoNs = splitNsName(name)[1];\n            var value = attributes[name];\n            cssSelector.addAttribute(nameNoNs, value);\n            if (name.toLowerCase() === 'class') {\n                var classes = value.trim().split(/\\s+/);\n                classes.forEach(function (className) { return cssSelector.addClassName(className); });\n            }\n        });\n        return cssSelector;\n    };\n    var getAttrsForDirectiveMatching = function (elOrTpl) {\n        var attributesMap = {};\n        if (elOrTpl instanceof compiler.TmplAstTemplate && elOrTpl.tagName !== 'ng-template') {\n            elOrTpl.templateAttrs.forEach(function (a) { return (attributesMap[a.name] = ''); });\n        }\n        else {\n            elOrTpl.attributes.forEach(function (a) {\n                if (!isI18nAttribute(a.name)) {\n                    attributesMap[a.name] = a.value;\n                }\n            });\n            elOrTpl.inputs.forEach(function (i) {\n                attributesMap[i.name] = '';\n            });\n            elOrTpl.outputs.forEach(function (o) {\n                attributesMap[o.name] = '';\n            });\n        }\n        return attributesMap;\n    };\n    /** Name of the i18n attributes **/\n    var I18N_ATTR = 'i18n';\n    var I18N_ATTR_PREFIX = 'i18n-';\n    var isI18nAttribute = function (name) {\n        return name === I18N_ATTR || name.startsWith(I18N_ATTR_PREFIX);\n    };\n\n    var __extends$2 = (undefined && undefined.__extends) || (function () {\n        var extendStatics = function (d, b) {\n            extendStatics = Object.setPrototypeOf ||\n                ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n                function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n            return extendStatics(d, b);\n        };\n        return function (d, b) {\n            extendStatics(d, b);\n            function __() { this.constructor = d; }\n            d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n        };\n    })();\n    var ComponentSymbol = /** @class */ (function (_super) {\n        __extends$2(ComponentSymbol, _super);\n        function ComponentSymbol() {\n            var _this = _super !== null && _super.apply(this, arguments) || this;\n            _this.annotation = 'Component';\n            return _this;\n        }\n        ComponentSymbol.prototype.assertScope = function () {\n            var scope = this.getScope();\n            if (scope === null) {\n                throw new Error(\"Could not find scope for component \" + this.name + \". Check [ComponentSymbol].diagnostics\");\n            }\n            else {\n                return scope;\n            }\n        };\n        Object.defineProperty(ComponentSymbol.prototype, \"deps\", {\n            /** @internal */\n            get: function () {\n                var _a;\n                return (_a = this.analysis) === null || _a === void 0 ? void 0 : _a.meta.deps;\n            },\n            enumerable: false,\n            configurable: true\n        });\n        Object.defineProperty(ComponentSymbol.prototype, \"metadata\", {\n            get: function () {\n                var _a;\n                var meta = (_a = this.analysis) === null || _a === void 0 ? void 0 : _a.meta;\n                if (!meta) {\n                    return null;\n                }\n                return {\n                    exportAs: meta.exportAs,\n                    changeDetection: meta.changeDetection,\n                    selector: meta.selector,\n                    inputs: meta.inputs,\n                    outputs: meta.outputs\n                };\n            },\n            enumerable: false,\n            configurable: true\n        });\n        /** Get the module scope of the component */\n        ComponentSymbol.prototype.getScope = function () {\n            this.ensureAnalysis();\n            return this.workspace.scopeRegistry.getScopeForComponent(this.node);\n        };\n        /** Return the list of available selectors for the template */\n        ComponentSymbol.prototype.getSelectorScope = function () {\n            var scope = this.assertScope();\n            if (!scope) {\n                return [];\n            }\n            else {\n                return scope.compilation.directives.map(function (d) { return d.selector; })\n                    .filter(exists)\n                    .map(function (selector) { return selector.split(',').map(function (s) { return s.trim(); }); })\n                    .flat();\n            }\n        };\n        /** Return the list of pipe available for the template */\n        ComponentSymbol.prototype.getPipeScope = function () {\n            var _a;\n            var scope = this.assertScope();\n            return (_a = scope === null || scope === void 0 ? void 0 : scope.compilation.pipes.map(function (p) { return p.name; })) !== null && _a !== void 0 ? _a : [];\n        };\n        /**\n         * Return class & factory providers specific to this class\n         * @note only providers specified in the `provider` fields of the component will be returned (not the module).\n         */\n        ComponentSymbol.prototype.getProviders = function () {\n            var _a;\n            var providers = (_a = this.analysis) === null || _a === void 0 ? void 0 : _a.meta.providers;\n            if (providers instanceof compiler.WrappedNodeExpr) {\n                return this.workspace.providerRegistry.getAllProviders(providers.node);\n            }\n            else {\n                return [];\n            }\n        };\n        /** Return dependencies injected in the constructor of the component */\n        ComponentSymbol.prototype.getDependencies = function () {\n            var _this = this;\n            assertDeps(this.deps, this.name);\n            return this.deps.map(function (dep) { return _this.workspace.findSymbol(dep.token, _this.path); }).filter(exists);\n        };\n        /** The Style AST provided by ngast */\n        ComponentSymbol.prototype.getStylesAst = function () {\n            var _a;\n            return (_a = this.analysis) === null || _a === void 0 ? void 0 : _a.meta.styles.map(function (s) { return parseCss(s); });\n        };\n        /** The Template AST provided by Ivy */\n        ComponentSymbol.prototype.getTemplateAst = function () {\n            var _a;\n            var scope = this.getScope();\n            if (scope === null) {\n                return null;\n            }\n            var visitor = new TransformTemplateVisitor(scope, this.workspace);\n            return (_a = this.analysis) === null || _a === void 0 ? void 0 : _a.meta.template.nodes.map(function (node) { return node.visit(visitor); });\n        };\n        return ComponentSymbol;\n    }(Symbol$1));\n\n    var __extends$3 = (undefined && undefined.__extends) || (function () {\n        var extendStatics = function (d, b) {\n            extendStatics = Object.setPrototypeOf ||\n                ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n                function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n            return extendStatics(d, b);\n        };\n        return function (d, b) {\n            extendStatics(d, b);\n            function __() { this.constructor = d; }\n            d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n        };\n    })();\n    var DirectiveSymbol = /** @class */ (function (_super) {\n        __extends$3(DirectiveSymbol, _super);\n        function DirectiveSymbol() {\n            var _this = _super !== null && _super.apply(this, arguments) || this;\n            _this.annotation = 'Directive';\n            return _this;\n        }\n        Object.defineProperty(DirectiveSymbol.prototype, \"deps\", {\n            /** @internal */\n            get: function () {\n                var _a;\n                return (_a = this.analysis) === null || _a === void 0 ? void 0 : _a.meta.deps;\n            },\n            enumerable: false,\n            configurable: true\n        });\n        Object.defineProperty(DirectiveSymbol.prototype, \"metadata\", {\n            get: function () {\n                var _a;\n                var meta = (_a = this.analysis) === null || _a === void 0 ? void 0 : _a.meta;\n                if (!meta) {\n                    return null;\n                }\n                return {\n                    exportAs: meta.exportAs,\n                    selector: meta.selector,\n                    inputs: meta.inputs,\n                    outputs: meta.outputs\n                };\n            },\n            enumerable: false,\n            configurable: true\n        });\n        /**\n         * Return class & factory providers specific to this class\n         * @note only providers specified in the `provider` fields of the directive will be returned (not the module).\n         */\n        DirectiveSymbol.prototype.getProviders = function () {\n            var _a;\n            var providers = (_a = this.analysis) === null || _a === void 0 ? void 0 : _a.meta.providers;\n            if (providers instanceof compiler.WrappedNodeExpr) {\n                return this.workspace.providerRegistry.getAllProviders(providers.node);\n            }\n            else {\n                return [];\n            }\n        };\n        /** Return dependencies injected in the constructor of the directive */\n        DirectiveSymbol.prototype.getDependencies = function () {\n            var _this = this;\n            assertDeps(this.deps, this.name);\n            return this.deps.map(function (dep) { return _this.workspace.findSymbol(dep.token); }).filter(exists);\n        };\n        return DirectiveSymbol;\n    }(Symbol$1));\n\n    var __extends$4 = (undefined && undefined.__extends) || (function () {\n        var extendStatics = function (d, b) {\n            extendStatics = Object.setPrototypeOf ||\n                ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n                function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n            return extendStatics(d, b);\n        };\n        return function (d, b) {\n            extendStatics(d, b);\n            function __() { this.constructor = d; }\n            d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n        };\n    })();\n    var InjectableSymbol = /** @class */ (function (_super) {\n        __extends$4(InjectableSymbol, _super);\n        function InjectableSymbol() {\n            var _this = _super !== null && _super.apply(this, arguments) || this;\n            _this.annotation = 'Injectable';\n            return _this;\n        }\n        Object.defineProperty(InjectableSymbol.prototype, \"deps\", {\n            /** @internal */\n            get: function () {\n                var _a, _b;\n                return ((_a = this.metadata) === null || _a === void 0 ? void 0 : _a.userDeps) ? this.metadata.userDeps\n                    : (_b = this.analysis) === null || _b === void 0 ? void 0 : _b.ctorDeps;\n            },\n            enumerable: false,\n            configurable: true\n        });\n        Object.defineProperty(InjectableSymbol.prototype, \"metadata\", {\n            get: function () {\n                var _a;\n                return (_a = this.analysis) === null || _a === void 0 ? void 0 : _a.meta;\n            },\n            enumerable: false,\n            configurable: true\n        });\n        /** Return dependencies injected in the constructor of the injectable */\n        InjectableSymbol.prototype.getDependencies = function () {\n            var _this = this;\n            assertDeps(this.deps, this.name);\n            return this.deps.map(function (dep) { return _this.workspace.findSymbol(dep.token, _this.path); }).filter(exists);\n        };\n        return InjectableSymbol;\n    }(Symbol$1));\n\n    var __extends$5 = (undefined && undefined.__extends) || (function () {\n        var extendStatics = function (d, b) {\n            extendStatics = Object.setPrototypeOf ||\n                ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n                function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n            return extendStatics(d, b);\n        };\n        return function (d, b) {\n            extendStatics(d, b);\n            function __() { this.constructor = d; }\n            d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n        };\n    })();\n    var NgModuleSymbol = /** @class */ (function (_super) {\n        __extends$5(NgModuleSymbol, _super);\n        function NgModuleSymbol() {\n            var _this = _super !== null && _super.apply(this, arguments) || this;\n            _this.annotation = 'NgModule';\n            return _this;\n        }\n        Object.defineProperty(NgModuleSymbol.prototype, \"deps\", {\n            /** @internal */\n            get: function () {\n                var _a;\n                return (_a = this.analysis) === null || _a === void 0 ? void 0 : _a.inj.deps;\n            },\n            enumerable: false,\n            configurable: true\n        });\n        Object.defineProperty(NgModuleSymbol.prototype, \"metadata\", {\n            get: function () {\n                var _a;\n                return (_a = this.analysis) === null || _a === void 0 ? void 0 : _a.mod;\n            },\n            enumerable: false,\n            configurable: true\n        });\n        Object.defineProperty(NgModuleSymbol.prototype, \"scope\", {\n            get: function () {\n                this.ensureAnalysis();\n                return this.workspace.scopeRegistry.getScopeOfModule(this.node);\n            },\n            enumerable: false,\n            configurable: true\n        });\n        /** Return dependencies injected in the constructor of the module */\n        NgModuleSymbol.prototype.getDependencies = function () {\n            var _this = this;\n            assertDeps(this.deps, this.name);\n            return this.deps.map(function (dep) { return _this.workspace.findSymbol(dep.token); }).filter(exists);\n        };\n        /** Get the providers of the module as InjectableSymbol */\n        NgModuleSymbol.prototype.getProviders = function () {\n            var _a;\n            return this.workspace.providerRegistry.getAllProviders((_a = this.analysis) === null || _a === void 0 ? void 0 : _a.providers);\n        };\n        /**\n         * Get all declaration class of the module as `ComponentSymbol | PipeSymbol | DirectiveSymbol`\n         * You can filter them using `declaration.isSymbol(name)` method:\n         * @example\n         * ```typescript\n         * const declarations = module.getDeclarations()\n         * const components = declarations.filter(declaration => declaration.isSymbol('Component'))\n         * ```\n         */\n        NgModuleSymbol.prototype.getDeclarations = function () {\n            var _this = this;\n            var _a;\n            return (_a = this.analysis) === null || _a === void 0 ? void 0 : _a.declarations.map(function (ref) { return _this.workspace.getSymbol(ref.node); });\n        };\n        /**\n         * Get all modules imported by the current module.\n         * You can filter them using `imported.isDts()`\n         * @example\n         * ```typescript\n         * const imported = module.getImports();\n         * const externalImports = imported.filter(import => import.isDts());\n         * ```\n         */\n        NgModuleSymbol.prototype.getImports = function () {\n            var _this = this;\n            var _a;\n            return (_a = this.analysis) === null || _a === void 0 ? void 0 : _a.imports.map(function (ref) { return _this.workspace.getSymbol(ref.node); });\n        };\n        /**\n         * Get all declaration class of the module as `ComponentSymbol | PipeSymbol | DirectiveSymbol`\n         * You can filter them using `exported.isSymbol(name)` method:\n         * @example\n         * ```typescript\n         * const exported = module.getExports()\n         * const components = exported.filter(export => export.isSymbol('Component'))\n         * ```\n         */\n        NgModuleSymbol.prototype.getExports = function () {\n            var _this = this;\n            var _a;\n            return (_a = this.analysis) === null || _a === void 0 ? void 0 : _a.exports.map(function (ref) { return _this.workspace.getSymbol(ref.node); });\n        };\n        /** Get the list of components bootstraped by the module if any */\n        NgModuleSymbol.prototype.getBootstap = function () {\n            var _this = this;\n            var _a;\n            return (_a = this.metadata) === null || _a === void 0 ? void 0 : _a.bootstrap.map(function (ref) { return _this.workspace.findSymbol(ref.value); });\n        };\n        return NgModuleSymbol;\n    }(Symbol$1));\n\n    var __extends$6 = (undefined && undefined.__extends) || (function () {\n        var extendStatics = function (d, b) {\n            extendStatics = Object.setPrototypeOf ||\n                ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n                function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n            return extendStatics(d, b);\n        };\n        return function (d, b) {\n            extendStatics(d, b);\n            function __() { this.constructor = d; }\n            d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n        };\n    })();\n    var PipeSymbol = /** @class */ (function (_super) {\n        __extends$6(PipeSymbol, _super);\n        function PipeSymbol() {\n            var _this = _super !== null && _super.apply(this, arguments) || this;\n            _this.annotation = 'Pipe';\n            return _this;\n        }\n        Object.defineProperty(PipeSymbol.prototype, \"deps\", {\n            /** @internal */\n            get: function () {\n                var _a;\n                return (_a = this.metadata) === null || _a === void 0 ? void 0 : _a.deps;\n            },\n            enumerable: false,\n            configurable: true\n        });\n        Object.defineProperty(PipeSymbol.prototype, \"metadata\", {\n            get: function () {\n                var _a;\n                return (_a = this.analysis) === null || _a === void 0 ? void 0 : _a.meta;\n            },\n            enumerable: false,\n            configurable: true\n        });\n        /** Return dependencies injected in the constructor of the pipe */\n        PipeSymbol.prototype.getDependencies = function () {\n            var _this = this;\n            assertDeps(this.deps, this.name);\n            return this.deps.map(function (dep) { return _this.workspace.findSymbol(dep.token); }).filter(exists);\n        };\n        return PipeSymbol;\n    }(Symbol$1));\n\n    var __extends$7 = (undefined && undefined.__extends) || (function () {\n        var extendStatics = function (d, b) {\n            extendStatics = Object.setPrototypeOf ||\n                ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n                function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n            return extendStatics(d, b);\n        };\n        return function (d, b) {\n            extendStatics(d, b);\n            function __() { this.constructor = d; }\n            d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n        };\n    })();\n    var __values = (undefined && undefined.__values) || function(o) {\n        var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n        if (m) return m.call(o);\n        if (o && typeof o.length === \"number\") return {\n            next: function () {\n                if (o && i >= o.length) o = void 0;\n                return { value: o && o[i++], done: !o };\n            }\n        };\n        throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n    };\n    /** TraitCompiler with friendly interface */\n    var NgastTraitCompiler = /** @class */ (function (_super) {\n        __extends$7(NgastTraitCompiler, _super);\n        function NgastTraitCompiler() {\n            return _super !== null && _super.apply(this, arguments) || this;\n        }\n        /** Perform analysis for one node */\n        NgastTraitCompiler.prototype.analyzeNode = function (node) {\n            this.analyzeClass(node, null);\n        };\n        NgastTraitCompiler.prototype.resolveNode = function (node) {\n            var e_1, _a, e_2, _b;\n            var record = this.recordFor(node);\n            try {\n                for (var _c = __values((record === null || record === void 0 ? void 0 : record.traits) || []), _d = _c.next(); !_d.done; _d = _c.next()) {\n                    var trait = _d.value;\n                    var handler = trait.handler;\n                    switch (trait.state) {\n                        case transform.TraitState.Skipped:\n                        case transform.TraitState.Pending:\n                            throw new Error(\"Resolving a trait that hasn't been analyzed: \" + node.name.text + \" / \" + Object.getPrototypeOf(trait.handler).constructor.name);\n                        case transform.TraitState.Resolved:\n                            throw new Error(\"Resolving an already resolved trait\");\n                    }\n                    if (handler.resolve === undefined) {\n                        // No resolution of this trait needed - it's considered successful by default.\n                        trait = trait.toResolved(null, null);\n                        continue;\n                    }\n                    var result = void 0;\n                    try {\n                        result = handler.resolve(node, trait.analysis);\n                    }\n                    catch (err) {\n                        if (err instanceof diagnostics.FatalDiagnosticError) {\n                            trait = trait.toResolved(null, [err.toDiagnostic()]);\n                            continue;\n                        }\n                        else {\n                            throw err;\n                        }\n                    }\n                    if (result.diagnostics !== undefined && result.diagnostics.length > 0) {\n                        trait = trait.toResolved(null, result.diagnostics);\n                    }\n                    else {\n                        if (result.data !== undefined) {\n                            trait = trait.toResolved(result.data, null);\n                        }\n                        else {\n                            trait = trait.toResolved(null, null);\n                        }\n                    }\n                    // @question reexportMap is a private property of TraitCompiler, I'm not sure how I can access it in another way\n                    if (result.reexports !== undefined) {\n                        var fileName = node.getSourceFile().fileName;\n                        if (!this['reexportMap'].has(fileName)) {\n                            this['reexportMap'].set(fileName, new Map());\n                        }\n                        var fileReexports = this['reexportMap'].get(fileName);\n                        try {\n                            for (var _e = (e_2 = void 0, __values(result.reexports)), _f = _e.next(); !_f.done; _f = _e.next()) {\n                                var reexport = _f.value;\n                                fileReexports.set(reexport.asAlias, [reexport.fromModule, reexport.symbolName]);\n                            }\n                        }\n                        catch (e_2_1) { e_2 = { error: e_2_1 }; }\n                        finally {\n                            try {\n                                if (_f && !_f.done && (_b = _e.return)) _b.call(_e);\n                            }\n                            finally { if (e_2) throw e_2.error; }\n                        }\n                    }\n                }\n            }\n            catch (e_1_1) { e_1 = { error: e_1_1 }; }\n            finally {\n                try {\n                    if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n                }\n                finally { if (e_1) throw e_1.error; }\n            }\n        };\n        NgastTraitCompiler.prototype.allRecords = function (annotation) {\n            var _this = this;\n            var records = [];\n            this.fileToClasses.forEach(function (nodes) {\n                nodes.forEach(function (node) {\n                    var record = _this.recordFor(node);\n                    if (record) {\n                        if (!annotation) {\n                            records.push(record);\n                        }\n                        else if (typescript$1.isFromDtsFile(node)) {\n                            var members = _this['reflector'].getMembersOfClass(node);\n                            if (hasDtsAnnotation(members)) {\n                                records.push(record);\n                            }\n                        }\n                        else if (hasLocalAnnotation(record.node, annotation)) {\n                            records.push(record);\n                        }\n                    }\n                });\n            });\n            return records;\n        };\n        return NgastTraitCompiler;\n    }(transform.TraitCompiler));\n\n    var symbolFactory = {\n        'NgModule': function (workspace, node) { return new NgModuleSymbol(workspace, node); },\n        'Injectable': function (workspace, node) { return new InjectableSymbol(workspace, node); },\n        'Directive': function (workspace, node) { return new DirectiveSymbol(workspace, node); },\n        'Component': function (workspace, node) { return new ComponentSymbol(workspace, node); },\n        'Pipe': function (workspace, node) { return new PipeSymbol(workspace, node); },\n    };\n\n    var __read = (undefined && undefined.__read) || function (o, n) {\n        var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n        if (!m) return o;\n        var i = m.call(o), r, ar = [], e;\n        try {\n            while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n        }\n        catch (error) { e = { error: error }; }\n        finally {\n            try {\n                if (r && !r.done && (m = i[\"return\"])) m.call(i);\n            }\n            finally { if (e) throw e.error; }\n        }\n        return ar;\n    };\n    var __values$1 = (undefined && undefined.__values) || function(o) {\n        var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n        if (m) return m.call(o);\n        if (o && typeof o.length === \"number\") return {\n            next: function () {\n                if (o && i >= o.length) o = void 0;\n                return { value: o && o[i++], done: !o };\n            }\n        };\n        throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n    };\n    /////////\n    // WIP //\n    /////////\n    var useKeys = ['useValue', 'useFactory', 'useExisting'];\n    function getProviderMetadata(provider) {\n        var provide = provider.get('provide');\n        if (!provide) {\n            return null;\n        }\n        var useKey = useKeys.find(function (key) { return provider.has(key); });\n        if (!useKey) {\n            return null;\n        }\n        var value = provider.get(useKey);\n        return { provide: provide, useKey: useKey, value: value };\n    }\n    var Provider = /** @class */ (function () {\n        function Provider(workspace, metadata) {\n            this.workspace = workspace;\n            this.metadata = metadata;\n        }\n        Object.defineProperty(Provider.prototype, \"name\", {\n            get: function () {\n                var _a;\n                if (typeof this.metadata.provide === 'string') {\n                    return this.metadata.provide;\n                }\n                if (this.metadata.provide instanceof imports.Reference) {\n                    if (typescript.isClassDeclaration(this.metadata.provide.node)) {\n                        return (_a = this.metadata.provide.node.name) === null || _a === void 0 ? void 0 : _a.text;\n                    }\n                }\n                if (this.metadata.provide instanceof partial_evaluator.DynamicValue) {\n                    if (typescript.isIdentifier(this.metadata.provide.node)) {\n                        return this.metadata.provide.node.text;\n                    }\n                }\n            },\n            enumerable: false,\n            configurable: true\n        });\n        return Provider;\n    }());\n    // TODO : It doesn't looks like a good idea to map with the real value instead of the token...\n    var ProviderRegistry = /** @class */ (function () {\n        function ProviderRegistry(workspace) {\n            this.workspace = workspace;\n            /** List of all the providers that are not injectables */\n            this.providers = new Map();\n        }\n        /** Record all providers in every NgModule, Component & Directive */\n        ProviderRegistry.prototype.recordAll = function () {\n            var e_1, _a, e_2, _b, e_3, _c;\n            var _this = this;\n            // Helper fn to get all analysis of an annotation\n            var getAllAnalysis = function (annotation) {\n                var records = _this.workspace.traitCompiler.allRecords(annotation);\n                return records.map(function (record) {\n                    var _a = __read(record.traits.filter(filterByHandler(annotation))\n                        .filter(isAnalysed)\n                        .map(function (trait) { return trait.analysis; }), 1), analysis = _a[0];\n                    return analysis;\n                });\n            };\n            try {\n                for (var _d = __values$1(getAllAnalysis('NgModule')), _e = _d.next(); !_e.done; _e = _d.next()) {\n                    var analysis = _e.value;\n                    if (analysis) {\n                        this.recordProviders(analysis.providers);\n                    }\n                }\n            }\n            catch (e_1_1) { e_1 = { error: e_1_1 }; }\n            finally {\n                try {\n                    if (_e && !_e.done && (_a = _d.return)) _a.call(_d);\n                }\n                finally { if (e_1) throw e_1.error; }\n            }\n            try {\n                for (var _f = __values$1(getAllAnalysis('Component')), _g = _f.next(); !_g.done; _g = _f.next()) {\n                    var analysis = _g.value;\n                    var providers = analysis === null || analysis === void 0 ? void 0 : analysis.meta.providers;\n                    if (providers instanceof compiler.WrappedNodeExpr) {\n                        this.recordProviders(providers.node);\n                    }\n                }\n            }\n            catch (e_2_1) { e_2 = { error: e_2_1 }; }\n            finally {\n                try {\n                    if (_g && !_g.done && (_b = _f.return)) _b.call(_f);\n                }\n                finally { if (e_2) throw e_2.error; }\n            }\n            try {\n                for (var _h = __values$1(getAllAnalysis('Directive')), _j = _h.next(); !_j.done; _j = _h.next()) {\n                    var analysis = _j.value;\n                    var providers = analysis === null || analysis === void 0 ? void 0 : analysis.meta.providers;\n                    if (providers instanceof compiler.WrappedNodeExpr) {\n                        this.recordProviders(providers.node);\n                    }\n                }\n            }\n            catch (e_3_1) { e_3 = { error: e_3_1 }; }\n            finally {\n                try {\n                    if (_j && !_j.done && (_c = _h.return)) _c.call(_h);\n                }\n                finally { if (e_3) throw e_3.error; }\n            }\n        };\n        /** Find all providers of a provider expression */\n        ProviderRegistry.prototype.recordProviders = function (expression) {\n            var _this = this;\n            if (expression) {\n                var resolveValue = this.workspace.evaluator.evaluate(expression);\n                var visit_1 = function (value) {\n                    if (Array.isArray(value)) {\n                        value.forEach(visit_1);\n                    }\n                    else if (value instanceof Map) {\n                        var metadata = getProviderMetadata(value);\n                        var key = getKeyFromProvide(metadata === null || metadata === void 0 ? void 0 : metadata.provide);\n                        if (metadata && key) {\n                            var provider = new Provider(_this.workspace, metadata);\n                            _this.providers.set(key, provider);\n                        }\n                    }\n                };\n                visit_1(resolveValue);\n            }\n        };\n        /** Get all providers from a list of providers in a decorator NgModule, Directive, Component */\n        ProviderRegistry.prototype.getAllProviders = function (expression) {\n            var _this = this;\n            var result = [];\n            if (expression) {\n                var resolveValue = this.workspace.evaluator.evaluate(expression);\n                var addInjectable_1 = function (ref) {\n                    var symbol = _this.workspace.getSymbol(ref.node);\n                    if (symbol) {\n                        result.push(symbol);\n                    }\n                };\n                var addProvider_1 = function (value) {\n                    var key = getKeyFromProvide(value);\n                    if (key && _this.providers.has(key)) {\n                        var provider = _this.providers.get(key);\n                        if (provider)\n                            result.push(provider);\n                    }\n                };\n                var visit_2 = function (value) {\n                    if (Array.isArray(value)) {\n                        value.forEach(visit_2);\n                    }\n                    else if (value instanceof Map) {\n                        if (value.has('useClass')) {\n                            addInjectable_1(value.get('useClass'));\n                        }\n                        else {\n                            addProvider_1(value.get('provide'));\n                        }\n                    }\n                    else {\n                        addInjectable_1(value);\n                    }\n                };\n                visit_2(resolveValue);\n            }\n            return result;\n        };\n        /** Return the provider for a token previously stored */\n        ProviderRegistry.prototype.getProvider = function (token) {\n            var value = this.workspace.evaluator.evaluate(token);\n            var key = getKeyFromProvide(value);\n            if (key && this.providers.has(key)) {\n                return this.providers.get(key);\n            }\n        };\n        return ProviderRegistry;\n    }());\n    // TODO: check to use declaration instead of Identifier ...\n    function getKeyFromProvide(provide) {\n        if (provide) {\n            if (provide instanceof partial_evaluator.DynamicValue && typescript.isIdentifier(provide.node)) {\n                return provide.node;\n            }\n            else if (typeof provide === 'string') {\n                return provide;\n            }\n        }\n    }\n\n    var __values$2 = (undefined && undefined.__values) || function(o) {\n        var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n        if (m) return m.call(o);\n        if (o && typeof o.length === \"number\") return {\n            next: function () {\n                if (o && i >= o.length) o = void 0;\n                return { value: o && o[i++], done: !o };\n            }\n        };\n        throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n    };\n    var __read$1 = (undefined && undefined.__read) || function (o, n) {\n        var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n        if (!m) return o;\n        var i = m.call(o), r, ar = [], e;\n        try {\n            while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n        }\n        catch (error) { e = { error: error }; }\n        finally {\n            try {\n                if (r && !r.done && (m = i[\"return\"])) m.call(i);\n            }\n            finally { if (e) throw e.error; }\n        }\n        return ar;\n    };\n    var __spread = (undefined && undefined.__spread) || function () {\n        for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$1(arguments[i]));\n        return ar;\n    };\n    // code from :\n    // https://github.com/angular/angular/blob/9.1.x/packages/compiler-cli/src/ngtsc/core/src/compiler.ts#L821\n    var ReferenceGraphAdapter = /** @class */ (function () {\n        function ReferenceGraphAdapter(graph) {\n            this.graph = graph;\n        }\n        ReferenceGraphAdapter.prototype.add = function (source) {\n            var e_1, _a;\n            var references = [];\n            for (var _i = 1; _i < arguments.length; _i++) {\n                references[_i - 1] = arguments[_i];\n            }\n            try {\n                for (var references_1 = __values$2(references), references_1_1 = references_1.next(); !references_1_1.done; references_1_1 = references_1.next()) {\n                    var node = references_1_1.value.node;\n                    var sourceFile = node.getSourceFile();\n                    if (sourceFile === undefined) {\n                        sourceFile = typescript.getOriginalNode(node).getSourceFile();\n                    }\n                    // Only record local references (not references into .d.ts files).\n                    if (sourceFile === undefined || !typescript$1.isDtsPath(sourceFile.fileName)) {\n                        this.graph.add(source, node);\n                    }\n                }\n            }\n            catch (e_1_1) { e_1 = { error: e_1_1 }; }\n            finally {\n                try {\n                    if (references_1_1 && !references_1_1.done && (_a = references_1.return)) _a.call(references_1);\n                }\n                finally { if (e_1) throw e_1.error; }\n            }\n        };\n        return ReferenceGraphAdapter;\n    }());\n    // All the code here comes from the ngtsc Compiler file, for more detail see :\n    // https://github.com/angular/angular/blob/9.1.x/packages/compiler-cli/src/ngtsc/core/src/compiler.ts\n    var WorkspaceSymbols = /** @class */ (function () {\n        function WorkspaceSymbols(tsconfigPath, fs, perfRecorder) {\n            if (fs === void 0) { fs = new file_system.NodeJSFileSystem(); }\n            if (perfRecorder === void 0) { perfRecorder = perf.NOOP_PERF_RECORDER; }\n            this.tsconfigPath = tsconfigPath;\n            this.fs = fs;\n            this.perfRecorder = perfRecorder;\n            this.toolkit = {};\n            this.isCore = false;\n            this.analysed = false;\n            var config = compilerCli.readConfiguration(this.tsconfigPath);\n            this.options = config.options;\n            this.rootNames = config.rootNames;\n        }\n        Object.defineProperty(WorkspaceSymbols.prototype, \"traitCompiler\", {\n            /////////////////////////////\n            // ------ PUBLIC API ----- //\n            /////////////////////////////\n            /** Process all classes in the program */\n            get: function () {\n                var _this = this;\n                return this.lazy('traitCompiler', function () { return new NgastTraitCompiler([_this.componentHandler, _this.directiveHandler, _this.pipeHandler, _this.injectableHandler, _this.moduleHandler], _this.reflector, _this.perfRecorder, _this.incrementalDriver, _this.options.compileNonExportedClasses !== false, transform.CompilationMode.FULL, _this.dtsTransforms); });\n            },\n            enumerable: false,\n            configurable: true\n        });\n        Object.defineProperty(WorkspaceSymbols.prototype, \"scopeRegistry\", {\n            /** Collects information about local NgModules, Directives, Components, and Pipes (declare in the ts.Program) */\n            get: function () {\n                var _this = this;\n                return this.lazy('scopeRegistry', function () {\n                    var depScopeReader = new scope.MetadataDtsModuleScopeResolver(_this.dtsReader, _this.aliasingHost);\n                    return new scope.LocalModuleScopeRegistry(_this.localMetaReader, depScopeReader, _this.refEmitter, _this.aliasingHost);\n                });\n            },\n            enumerable: false,\n            configurable: true\n        });\n        Object.defineProperty(WorkspaceSymbols.prototype, \"evaluator\", {\n            /** Evaluate typescript Expression & update the dependency graph accordingly */\n            get: function () {\n                var _this = this;\n                return this.lazy('evaluator', function () { return new partial_evaluator.PartialEvaluator(_this.reflector, _this.checker, _this.incrementalDriver.depGraph); });\n            },\n            enumerable: false,\n            configurable: true\n        });\n        Object.defineProperty(WorkspaceSymbols.prototype, \"providerRegistry\", {\n            /** Keep track of the providers other than Injectable */\n            get: function () {\n                var _this = this;\n                return this.lazy('providerRegistry', function () { return new ProviderRegistry(_this); });\n            },\n            enumerable: false,\n            configurable: true\n        });\n        WorkspaceSymbols.prototype.getClassRecords = function () {\n            this.ensureAnalysis();\n            return this.traitCompiler.allRecords();\n        };\n        WorkspaceSymbols.prototype.getAllModules = function () {\n            var _this = this;\n            this.ensureAnalysis();\n            return this.traitCompiler.allRecords('NgModule').map(function (_a) {\n                var node = _a.node;\n                return new NgModuleSymbol(_this, node);\n            });\n        };\n        WorkspaceSymbols.prototype.getAllComponents = function () {\n            var _this = this;\n            this.ensureAnalysis();\n            return this.traitCompiler.allRecords('Component').map(function (_a) {\n                var node = _a.node;\n                return new ComponentSymbol(_this, node);\n            });\n        };\n        WorkspaceSymbols.prototype.getAllDirectives = function () {\n            var _this = this;\n            this.ensureAnalysis();\n            return this.traitCompiler.allRecords('Directive').map(function (_a) {\n                var node = _a.node;\n                return new DirectiveSymbol(_this, node);\n            });\n        };\n        WorkspaceSymbols.prototype.getAllInjectable = function () {\n            var _this = this;\n            this.ensureAnalysis();\n            return this.traitCompiler.allRecords('Injectable').map(function (_a) {\n                var node = _a.node;\n                return new InjectableSymbol(_this, node);\n            });\n        };\n        WorkspaceSymbols.prototype.getAllPipes = function () {\n            var _this = this;\n            this.ensureAnalysis();\n            return this.traitCompiler.allRecords('Pipe').map(function (_a) {\n                var node = _a.node;\n                return new PipeSymbol(_this, node);\n            });\n        };\n        /** Find a symbol based on the class expression */\n        WorkspaceSymbols.prototype.findSymbol = function (token, relativeTo) {\n            var _a;\n            if (relativeTo === void 0) { relativeTo = ''; }\n            if (token instanceof compiler.WrappedNodeExpr) {\n                if (typescript.isIdentifier(token.node)) {\n                    var decl = this.reflector.getDeclarationOfIdentifier(token.node);\n                    if ((decl === null || decl === void 0 ? void 0 : decl.node) && this.reflector.isClass(decl.node)) {\n                        return this.getSymbol(decl.node);\n                    }\n                    else if (decl === null || decl === void 0 ? void 0 : decl.node) {\n                        return this.providerRegistry.getProvider(decl.node);\n                    }\n                }\n                else if (typescript.isToken(token.node)) {\n                    return this.providerRegistry.getProvider(token.node);\n                }\n            }\n            else if (token instanceof compiler.ExternalExpr) {\n                var dir = path.dirname(relativeTo);\n                var module_1 = (_a = token.value.moduleName) !== null && _a !== void 0 ? _a : '';\n                var moduleName = module_1.endsWith('.ts') ? module_1 : module_1 + \".ts\";\n                var path_1 = path.join(dir, moduleName);\n                return this.getAllInjectable().find(function (injectable) {\n                    return injectable.path === path_1 && injectable.name === token.value.name;\n                });\n            }\n        };\n        /** Find a symbol based on the class expression */\n        WorkspaceSymbols.prototype.getSymbol = function (node) {\n            var isDts = typescript$1.isFromDtsFile(node);\n            var annotation;\n            if (isDts) {\n                var members = this.reflector.getMembersOfClass(node);\n                annotation = getDtsAnnotation(members);\n            }\n            else {\n                annotation = getLocalAnnotation(node.decorators);\n            }\n            if (annotation && (annotation in symbolFactory)) {\n                var factory = symbolFactory[annotation];\n                return factory(this, node);\n            }\n        };\n        Object.defineProperty(WorkspaceSymbols.prototype, \"host\", {\n            /////////////////////////\n            // ----- PRIVATE ----- //\n            /////////////////////////\n            /** Angular wrapper around the typescript host compiler */\n            // TODO: add reusable program\n            get: function () {\n                var _this = this;\n                return this.lazy('host', function () {\n                    var baseHost = new file_system.NgtscCompilerHost(_this.fs, _this.options);\n                    return core.NgCompilerHost.wrap(baseHost, _this.rootNames, _this.options, _this.oldProgram || null);\n                });\n            },\n            enumerable: false,\n            configurable: true\n        });\n        Object.defineProperty(WorkspaceSymbols.prototype, \"program\", {\n            /** Typescript program */\n            get: function () {\n                var _this = this;\n                return this.lazy('program', function () { return typescript.createProgram({\n                    host: _this.host,\n                    rootNames: _this.host.inputFiles,\n                    options: _this.options\n                }); });\n            },\n            enumerable: false,\n            configurable: true\n        });\n        Object.defineProperty(WorkspaceSymbols.prototype, \"injectableHandler\", {\n            /** Handler for @Injectable() annotations */\n            get: function () {\n                var _this = this;\n                return this.lazy('injectableHandler', function () { return new annotations.InjectableDecoratorHandler(_this.reflector, _this.defaultImportTracker, _this.isCore, _this.options.strictInjectionParameters || false, _this.injectableRegistry); });\n            },\n            enumerable: false,\n            configurable: true\n        });\n        Object.defineProperty(WorkspaceSymbols.prototype, \"pipeHandler\", {\n            /** Handler for @Pipe() annotations */\n            get: function () {\n                var _this = this;\n                return this.lazy('pipeHandler', function () { return new annotations.PipeDecoratorHandler(_this.reflector, _this.evaluator, _this.metaRegistry, _this.scopeRegistry, _this.defaultImportTracker, _this.injectableRegistry, _this.isCore); });\n            },\n            enumerable: false,\n            configurable: true\n        });\n        Object.defineProperty(WorkspaceSymbols.prototype, \"directiveHandler\", {\n            /** Handler for @Directive() annotations */\n            get: function () {\n                var _this = this;\n                return this.lazy('directiveHandler', function () { return new annotations.DirectiveDecoratorHandler(_this.reflector, _this.evaluator, _this.metaRegistry, _this.scopeRegistry, _this.metaReader, _this.defaultImportTracker, _this.injectableRegistry, _this.isCore, !!_this.options.annotateForClosureCompiler, !!_this.options.compileNonExportedClasses); });\n            },\n            enumerable: false,\n            configurable: true\n        });\n        Object.defineProperty(WorkspaceSymbols.prototype, \"moduleHandler\", {\n            /** Handler for @NgModule() annotations */\n            get: function () {\n                var _this = this;\n                return this.lazy('moduleHandler', function () { return new annotations.NgModuleDecoratorHandler(_this.reflector, _this.evaluator, _this.metaReader, _this.metaRegistry, _this.scopeRegistry, _this.referencesRegistry, _this.isCore, _this.routeAnalyzer, _this.refEmitter, _this.host.factoryTracker, _this.defaultImportTracker, !!_this.options.annotateForClosureCompiler, _this.injectableRegistry, _this.options.i18nInLocale); });\n            },\n            enumerable: false,\n            configurable: true\n        });\n        Object.defineProperty(WorkspaceSymbols.prototype, \"componentHandler\", {\n            /** Handler for @Component() annotations */\n            get: function () {\n                var _this = this;\n                return this.lazy('componentHandler', function () { return new annotations.ComponentDecoratorHandler(_this.reflector, _this.evaluator, _this.metaRegistry, _this.metaReader, _this.scopeReader, _this.scopeRegistry, _this.templateMapping, _this.isCore, _this.resourceLoader, _this.host.rootDirs, _this.options.preserveWhitespaces || false, _this.options.i18nUseExternalIds !== false, _this.options.enableI18nLegacyMessageIdFormat !== false, false, _this.options.i18nNormalizeLineEndingsInICUs, _this.moduleResolver, _this.cycleAnalyzer, _this.refEmitter, _this.defaultImportTracker, _this.incrementalDriver.depGraph, _this.injectableRegistry, !!_this.options.annotateForClosureCompiler); });\n            },\n            enumerable: false,\n            configurable: true\n        });\n        Object.defineProperty(WorkspaceSymbols.prototype, \"reflector\", {\n            /** Static reflection of declarations using the TypeScript type checker */\n            get: function () {\n                var _this = this;\n                return this.lazy('reflector', function () { return new reflection.TypeScriptReflectionHost(_this.checker); });\n            },\n            enumerable: false,\n            configurable: true\n        });\n        Object.defineProperty(WorkspaceSymbols.prototype, \"checker\", {\n            /** Typescript type checker use to semantically analyze a source file */\n            get: function () {\n                var _this = this;\n                return this.lazy('checker', function () { return _this.program.getTypeChecker(); });\n            },\n            enumerable: false,\n            configurable: true\n        });\n        Object.defineProperty(WorkspaceSymbols.prototype, \"metaRegistry\", {\n            /** Register metadata from local NgModules, Directives, Components, and Pipes */\n            get: function () {\n                var _this = this;\n                return this.lazy('metaRegistry', function () { return new metadata.CompoundMetadataRegistry([_this.localMetaReader, _this.scopeRegistry]); });\n            },\n            enumerable: false,\n            configurable: true\n        });\n        Object.defineProperty(WorkspaceSymbols.prototype, \"metaReader\", {\n            /** Register metadata from local declaration files (.d.ts) */\n            get: function () {\n                var _this = this;\n                return this.lazy('metaReader', function () { return new metadata.CompoundMetadataReader([_this.localMetaReader, _this.dtsReader]); });\n            },\n            enumerable: false,\n            configurable: true\n        });\n        Object.defineProperty(WorkspaceSymbols.prototype, \"defaultImportTracker\", {\n            /** Registers and records usages of Identifers that came from default import statements (import X from 'some/module') */\n            get: function () {\n                return this.lazy('defaultImportTracker', function () { return new imports.DefaultImportTracker(); });\n            },\n            enumerable: false,\n            configurable: true\n        });\n        Object.defineProperty(WorkspaceSymbols.prototype, \"injectableRegistry\", {\n            /** Keeps track of classes that can be constructed via dependency injection (e.g. injectables, directives, pipes) */\n            get: function () {\n                var _this = this;\n                return this.lazy('injectableRegistry', function () { return new metadata.InjectableClassRegistry(_this.reflector); });\n            },\n            enumerable: false,\n            configurable: true\n        });\n        Object.defineProperty(WorkspaceSymbols.prototype, \"incrementalDriver\", {\n            // @todo() support oldProgram https://github.com/angular/angular/blob/master/packages/compiler-cli/src/ngtsc/core/src/compiler.ts#L130\n            get: function () {\n                var _this = this;\n                return this.lazy('incrementalDriver', function () { return incremental.IncrementalDriver.fresh(_this.program); });\n            },\n            enumerable: false,\n            configurable: true\n        });\n        Object.defineProperty(WorkspaceSymbols.prototype, \"templateMapping\", {\n            get: function () {\n                return this.lazy('templateMapping', function () { return new metadata.TemplateMapping(); });\n            },\n            enumerable: false,\n            configurable: true\n        });\n        Object.defineProperty(WorkspaceSymbols.prototype, \"resourceLoader\", {\n            /** (pre)Load resources using cache */\n            get: function () {\n                var _this = this;\n                return this.lazy('resourceLoader', function () { return new resource.AdapterResourceLoader(_this.host, _this.options); });\n            },\n            enumerable: false,\n            configurable: true\n        });\n        Object.defineProperty(WorkspaceSymbols.prototype, \"moduleResolver\", {\n            /** Resolve the module source-files references in lazy-loaded routes */\n            get: function () {\n                var _this = this;\n                return this.lazy('moduleResolver', function () {\n                    var moduleResolutionCache = typescript.createModuleResolutionCache(_this.host.getCurrentDirectory(), function (fileName) { return _this.host.getCanonicalFileName(fileName); });\n                    return new imports.ModuleResolver(_this.program, _this.options, _this.host, moduleResolutionCache);\n                });\n            },\n            enumerable: false,\n            configurable: true\n        });\n        Object.defineProperty(WorkspaceSymbols.prototype, \"entryPoint\", {\n            /** Entry source file of the host */\n            get: function () {\n                return this.host.entryPoint !== null ? typescript$1.getSourceFileOrNull(this.program, this.host.entryPoint) : null;\n            },\n            enumerable: false,\n            configurable: true\n        });\n        Object.defineProperty(WorkspaceSymbols.prototype, \"aliasingHost\", {\n            /** Generates and consumes alias re-exports */\n            get: function () {\n                var _this = this;\n                return this.lazy('aliasingHost', function () {\n                    var aliasingHost = null;\n                    var _a = _this.options, _useHostForImportGeneration = _a._useHostForImportGeneration, generateDeepReexports = _a.generateDeepReexports;\n                    if (_this.host.unifiedModulesHost === null || !_useHostForImportGeneration) {\n                        if (_this.entryPoint === null && generateDeepReexports === true) {\n                            aliasingHost = new imports.PrivateExportAliasingHost(_this.reflector);\n                        }\n                    }\n                    else {\n                        aliasingHost = new imports.UnifiedModulesAliasingHost(_this.host.unifiedModulesHost);\n                    }\n                    return aliasingHost;\n                });\n            },\n            enumerable: false,\n            configurable: true\n        });\n        Object.defineProperty(WorkspaceSymbols.prototype, \"refEmitter\", {\n            /** Generates `Expression`s which refer to `Reference`s in a given context. */\n            get: function () {\n                var _this = this;\n                return this.lazy('refEmitter', function () {\n                    var _a = _this.options, rootDir = _a.rootDir, rootDirs = _a.rootDirs, _useHostForImportGeneration = _a._useHostForImportGeneration;\n                    var refEmitter;\n                    if (_this.host.unifiedModulesHost === null || !_useHostForImportGeneration) {\n                        var localImportStrategy = void 0;\n                        if (rootDir !== undefined || (rootDirs === null || rootDirs === void 0 ? void 0 : rootDirs.length)) {\n                            localImportStrategy = new imports.LogicalProjectStrategy(_this.reflector, new file_system.LogicalFileSystem(__spread(_this.host.rootDirs), _this.host));\n                        }\n                        else {\n                            localImportStrategy = new imports.RelativePathStrategy(_this.reflector);\n                        }\n                        refEmitter = new imports.ReferenceEmitter([\n                            new imports.LocalIdentifierStrategy(),\n                            new imports.AbsoluteModuleStrategy(_this.program, _this.checker, _this.moduleResolver, _this.reflector),\n                            localImportStrategy,\n                        ]);\n                    }\n                    else {\n                        refEmitter = new imports.ReferenceEmitter([\n                            new imports.LocalIdentifierStrategy(),\n                            new imports.AliasStrategy(),\n                            new imports.UnifiedModulesStrategy(_this.reflector, _this.host.unifiedModulesHost),\n                        ]);\n                    }\n                    return refEmitter;\n                });\n            },\n            enumerable: false,\n            configurable: true\n        });\n        Object.defineProperty(WorkspaceSymbols.prototype, \"localMetaReader\", {\n            /** A registry of directive, pipe, and module metadata for types defined in the current compilation */\n            get: function () {\n                return this.lazy('localMetaReader', function () { return new metadata.LocalMetadataRegistry(); });\n            },\n            enumerable: false,\n            configurable: true\n        });\n        Object.defineProperty(WorkspaceSymbols.prototype, \"dtsReader\", {\n            /** A `MetadataReader` that can read metadata from `.d.ts` files, which have static Ivy properties */\n            get: function () {\n                var _this = this;\n                return this.lazy('dtsReader', function () { return new metadata.DtsMetadataReader(_this.checker, _this.reflector); });\n            },\n            enumerable: false,\n            configurable: true\n        });\n        Object.defineProperty(WorkspaceSymbols.prototype, \"scopeReader\", {\n            /** Read information about the compilation scope of components. */\n            get: function () {\n                return this.scopeRegistry;\n            },\n            enumerable: false,\n            configurable: true\n        });\n        Object.defineProperty(WorkspaceSymbols.prototype, \"referencesRegistry\", {\n            /** Used by DecoratorHandlers to register references during analysis */\n            get: function () {\n                var _this = this;\n                return this.lazy('referencesRegistry', function () {\n                    var referencesRegistry;\n                    if (_this.entryPoint !== null) {\n                        var exportReferenceGraph = new entry_point.ReferenceGraph();\n                        referencesRegistry = new ReferenceGraphAdapter(exportReferenceGraph);\n                    }\n                    else {\n                        referencesRegistry = new annotations.NoopReferencesRegistry();\n                    }\n                    return referencesRegistry;\n                });\n            },\n            enumerable: false,\n            configurable: true\n        });\n        Object.defineProperty(WorkspaceSymbols.prototype, \"cycleAnalyzer\", {\n            /** Analyzes a `ts.Program` for cycles. */\n            get: function () {\n                var _this = this;\n                return this.lazy('cycleAnalyzer', function () {\n                    var importGraph = new cycles.ImportGraph(_this.moduleResolver);\n                    return new cycles.CycleAnalyzer(importGraph);\n                });\n            },\n            enumerable: false,\n            configurable: true\n        });\n        Object.defineProperty(WorkspaceSymbols.prototype, \"dtsTransforms\", {\n            /** Keeps track of declaration transform (`DtsTransform`) per source file */\n            get: function () {\n                return this.lazy('dtsTransforms', function () { return new transform.DtsTransformRegistry(); });\n            },\n            enumerable: false,\n            configurable: true\n        });\n        Object.defineProperty(WorkspaceSymbols.prototype, \"mwpScanner\", {\n            /** Scan `ModuleWithProvider` classes */\n            get: function () {\n                var _this = this;\n                return this.lazy('mwpScanner', function () { return new modulewithproviders.ModuleWithProvidersScanner(_this.reflector, _this.evaluator, _this.refEmitter); });\n            },\n            enumerable: false,\n            configurable: true\n        });\n        Object.defineProperty(WorkspaceSymbols.prototype, \"routeAnalyzer\", {\n            /** Analyze lazy loaded routes */\n            get: function () {\n                var _this = this;\n                return this.lazy('routeAnalyzer', function () { return new routing.NgModuleRouteAnalyzer(_this.moduleResolver, _this.evaluator); });\n            },\n            enumerable: false,\n            configurable: true\n        });\n        /** Lazy load & memorize every tool in the `WorkspaceSymbols`'s toolkit */\n        WorkspaceSymbols.prototype.lazy = function (key, load) {\n            if (!this.toolkit[key]) {\n                this.toolkit[key] = load();\n            }\n            return this.toolkit[key];\n        };\n        /** Perform analysis on all projects */\n        WorkspaceSymbols.prototype.analyzeAll = function () {\n            var e_2, _a, e_3, _b, e_4, _c, e_5, _d;\n            var _this = this;\n            // Analyse all files\n            var analyzeSpan = this.perfRecorder.start('analyze');\n            var _loop_1 = function (sf) {\n                if (sf.isDeclarationFile) {\n                    return \"continue\";\n                }\n                var analyzeFileSpan = this_1.perfRecorder.start('analyzeFile', sf);\n                this_1.traitCompiler.analyzeSync(sf);\n                // Scan for ModuleWithProvider\n                var addTypeReplacement = function (node, type) {\n                    _this.dtsTransforms.getReturnTypeTransform(sf).addTypeReplacement(node, type);\n                };\n                this_1.mwpScanner.scan(sf, { addTypeReplacement: addTypeReplacement });\n                this_1.perfRecorder.stop(analyzeFileSpan);\n            };\n            var this_1 = this;\n            try {\n                for (var _e = __values$2(this.program.getSourceFiles()), _f = _e.next(); !_f.done; _f = _e.next()) {\n                    var sf = _f.value;\n                    _loop_1(sf);\n                }\n            }\n            catch (e_2_1) { e_2 = { error: e_2_1 }; }\n            finally {\n                try {\n                    if (_f && !_f.done && (_a = _e.return)) _a.call(_e);\n                }\n                finally { if (e_2) throw e_2.error; }\n            }\n            this.perfRecorder.stop(analyzeSpan);\n            // Resolve compilation\n            this.traitCompiler.resolve();\n            // Record NgModule Scope dependencies\n            var recordSpan = this.perfRecorder.start('recordDependencies');\n            var depGraph = this.incrementalDriver.depGraph;\n            try {\n                for (var _g = __values$2(this.scopeRegistry.getCompilationScopes()), _h = _g.next(); !_h.done; _h = _g.next()) {\n                    var scope = _h.value;\n                    var file = scope.declaration.getSourceFile();\n                    var ngModuleFile = scope.ngModule.getSourceFile();\n                    depGraph.addTransitiveDependency(ngModuleFile, file);\n                    depGraph.addDependency(file, ngModuleFile);\n                    var meta = this.metaReader.getDirectiveMetadata(new imports.Reference(scope.declaration));\n                    // For components\n                    if (meta !== null && meta.isComponent) {\n                        depGraph.addTransitiveResources(ngModuleFile, file);\n                        try {\n                            for (var _j = (e_4 = void 0, __values$2(scope.directives)), _k = _j.next(); !_k.done; _k = _j.next()) {\n                                var directive = _k.value;\n                                depGraph.addTransitiveDependency(file, directive.ref.node.getSourceFile());\n                            }\n                        }\n                        catch (e_4_1) { e_4 = { error: e_4_1 }; }\n                        finally {\n                            try {\n                                if (_k && !_k.done && (_c = _j.return)) _c.call(_j);\n                            }\n                            finally { if (e_4) throw e_4.error; }\n                        }\n                        try {\n                            for (var _l = (e_5 = void 0, __values$2(scope.pipes)), _m = _l.next(); !_m.done; _m = _l.next()) {\n                                var pipe = _m.value;\n                                depGraph.addTransitiveDependency(file, pipe.ref.node.getSourceFile());\n                            }\n                        }\n                        catch (e_5_1) { e_5 = { error: e_5_1 }; }\n                        finally {\n                            try {\n                                if (_m && !_m.done && (_d = _l.return)) _d.call(_l);\n                            }\n                            finally { if (e_5) throw e_5.error; }\n                        }\n                    }\n                }\n            }\n            catch (e_3_1) { e_3 = { error: e_3_1 }; }\n            finally {\n                try {\n                    if (_h && !_h.done && (_b = _g.return)) _b.call(_g);\n                }\n                finally { if (e_3) throw e_3.error; }\n            }\n            this.perfRecorder.stop(recordSpan);\n            // Calculate which files need to be emitted\n            this.incrementalDriver.recordSuccessfulAnalysis(this.traitCompiler);\n            this.analysed = true;\n        };\n        WorkspaceSymbols.prototype.ensureAnalysis = function () {\n            if (!this.analysed) {\n                this.analyzeAll();\n                this.providerRegistry.recordAll();\n                // TODO: Implements the ProviderRegistry to keep track of FactoryProvider, ValueProvider, ...\n            }\n        };\n        return WorkspaceSymbols;\n    }());\n\n    exports.ComponentSymbol = ComponentSymbol;\n    exports.DirectiveSymbol = DirectiveSymbol;\n    exports.InjectableSymbol = InjectableSymbol;\n    exports.NgModuleSymbol = NgModuleSymbol;\n    exports.NgastTraitCompiler = NgastTraitCompiler;\n    exports.PipeSymbol = PipeSymbol;\n    exports.Symbol = Symbol$1;\n    exports.WorkspaceSymbols = WorkspaceSymbols;\n    exports.annotationNames = annotationNames;\n    exports.annotationTheta = annotationTheta;\n    exports.assertDeps = assertDeps;\n    exports.exists = exists;\n    exports.filterByHandler = filterByHandler;\n    exports.getDecoratorName = getDecoratorName;\n    exports.getDtsAnnotation = getDtsAnnotation;\n    exports.getLocalAnnotation = getLocalAnnotation;\n    exports.hasDtsAnnotation = hasDtsAnnotation;\n    exports.hasLocalAnnotation = hasLocalAnnotation;\n    exports.isAnalysed = isAnalysed;\n    exports.symbolFactory = symbolFactory;\n\n    Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n"]}