diff --git a/dist/ng-select2/3rdpartylicenses.txt b/dist/ng-select2/3rdpartylicenses.txt index ad415be..a401534 100644 --- a/dist/ng-select2/3rdpartylicenses.txt +++ b/dist/ng-select2/3rdpartylicenses.txt @@ -67,31 +67,31 @@ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -@angular/common@6.0.7 +@angular/common@7.1.1 MIT MIT -@angular/compiler@6.0.7 +@angular/compiler@7.1.1 MIT MIT -@angular/core@6.0.7 +@angular/core@7.1.1 MIT MIT -@angular/forms@6.0.7 +@angular/forms@7.1.1 MIT MIT -@angular/platform-browser-dynamic@6.0.7 +@angular/platform-browser-dynamic@7.1.1 MIT MIT -@angular/platform-browser@6.0.7 +@angular/platform-browser@7.1.1 MIT MIT -rxjs@6.2.1 +rxjs@6.3.3 Apache-2.0 Apache License Version 2.0, January 2004 diff --git a/dist/ng-select2/main.js b/dist/ng-select2/main.js index 2faf3cb..d9984be 100644 --- a/dist/ng-select2/main.js +++ b/dist/ng-select2/main.js @@ -29,6 +29,37 @@ var Select2Hint = /** @class */ (function () { +/***/ }), + +/***/ "./projects/ng-select2-component/src/lib/select2-label.component.ts": +/*!**************************************************************************!*\ + !*** ./projects/ng-select2-component/src/lib/select2-label.component.ts ***! + \**************************************************************************/ +/*! exports provided: Select2Label */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Select2Label", function() { return Select2Label; }); +/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm5/core.js"); +var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; + +var Select2Label = /** @class */ (function () { + function Select2Label() { + } + Select2Label = __decorate([ + Object(_angular_core__WEBPACK_IMPORTED_MODULE_0__["Directive"])({ selector: 'select2-label' }) + ], Select2Label); + return Select2Label; +}()); + + + /***/ }), /***/ "./projects/ng-select2-component/src/lib/select2-utils.ts": @@ -409,7 +440,7 @@ var Select2Utils = /** @class */ (function () { /*! no static exports found */ /***/ (function(module, exports) { -module.exports = "
\r\n
\r\n
\r\n \r\n  \r\n {{select2Option.label}}\r\n {{placeholder}}\r\n \r\n \r\n \r\n \r\n
    \r\n 0\"\r\n class=\"select2-selection__placeholder\">{{placeholder}}\r\n
  • \r\n ×\r\n {{op.label}}\r\n
  • \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
    \r\n \r\n
  • \r\n {{groupOrOption.label}}\r\n
      \r\n
    • {{option.label}}
    • \r\n
    \r\n
  • \r\n
  • \r\n {{groupOrOption.label}}\r\n
  • \r\n
    \r\n
\r\n
\r\n
\r\n
\r\n
" +module.exports = "
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n  \r\n {{select2Option.label}}\r\n {{placeholder}}\r\n \r\n \r\n \r\n \r\n
    \r\n 0\"\r\n class=\"select2-selection__placeholder\">{{placeholder}}\r\n
  • \r\n ×\r\n {{op.label}}\r\n
  • \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
    \r\n \r\n
  • \r\n {{groupOrOption.label}}\r\n
      \r\n
    • {{option.label}}
    • \r\n
    \r\n
  • \r\n
  • \r\n {{groupOrOption.label}}\r\n
  • \r\n
    \r\n
\r\n
\r\n
\r\n
\r\n
" /***/ }), @@ -420,7 +451,7 @@ module.exports = "
\r\n
0 + ? refs.indexOf(code) !== -1 + : false; + }; /** * Sets the selected option based on a value. If no option can be * found with the designated value, the select trigger is cleared. @@ -1014,7 +1071,7 @@ var Select2 = /** @class */ (function () { __decorate([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_0__["Input"])(), Object(_angular_core__WEBPACK_IMPORTED_MODULE_0__["HostBinding"])('id'), - __metadata("design:type", Object), + __metadata("design:type", String), __metadata("design:paramtypes", [String]) ], Select2.prototype, "id", null); __decorate([ @@ -1089,6 +1146,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _angular_forms__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/forms */ "./node_modules/@angular/forms/fesm5/forms.js"); /* harmony import */ var _select2_component__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./select2.component */ "./projects/ng-select2-component/src/lib/select2.component.ts"); /* harmony import */ var _select2_hint_component__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./select2-hint.component */ "./projects/ng-select2-component/src/lib/select2-hint.component.ts"); +/* harmony import */ var _select2_label_component__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./select2-label.component */ "./projects/ng-select2-component/src/lib/select2-label.component.ts"); var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); @@ -1100,6 +1158,7 @@ var __decorate = (undefined && undefined.__decorate) || function (decorators, ta + var Select2Module = /** @class */ (function () { function Select2Module() { } @@ -1112,12 +1171,14 @@ var Select2Module = /** @class */ (function () { ], declarations: [ _select2_hint_component__WEBPACK_IMPORTED_MODULE_4__["Select2Hint"], + _select2_label_component__WEBPACK_IMPORTED_MODULE_5__["Select2Label"], _select2_component__WEBPACK_IMPORTED_MODULE_3__["Select2"] ], exports: [ _angular_forms__WEBPACK_IMPORTED_MODULE_2__["FormsModule"], _angular_forms__WEBPACK_IMPORTED_MODULE_2__["ReactiveFormsModule"], _select2_hint_component__WEBPACK_IMPORTED_MODULE_4__["Select2Hint"], + _select2_label_component__WEBPACK_IMPORTED_MODULE_5__["Select2Label"], _select2_component__WEBPACK_IMPORTED_MODULE_3__["Select2"] ] }) @@ -1133,7 +1194,7 @@ var Select2Module = /** @class */ (function () { /*!*********************************************************!*\ !*** ./projects/ng-select2-component/src/public_api.ts ***! \*********************************************************/ -/*! exports provided: Select2, Select2Hint, timeout, Select2Utils, Select2Module */ +/*! exports provided: Select2, Select2Hint, Select2Label, timeout, Select2Utils, Select2Module */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -1144,13 +1205,16 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _lib_select2_hint_component__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lib/select2-hint.component */ "./projects/ng-select2-component/src/lib/select2-hint.component.ts"); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Select2Hint", function() { return _lib_select2_hint_component__WEBPACK_IMPORTED_MODULE_1__["Select2Hint"]; }); -/* harmony import */ var _lib_select2_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./lib/select2-utils */ "./projects/ng-select2-component/src/lib/select2-utils.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeout", function() { return _lib_select2_utils__WEBPACK_IMPORTED_MODULE_2__["timeout"]; }); +/* harmony import */ var _lib_select2_label_component__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./lib/select2-label.component */ "./projects/ng-select2-component/src/lib/select2-label.component.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Select2Label", function() { return _lib_select2_label_component__WEBPACK_IMPORTED_MODULE_2__["Select2Label"]; }); + +/* harmony import */ var _lib_select2_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./lib/select2-utils */ "./projects/ng-select2-component/src/lib/select2-utils.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeout", function() { return _lib_select2_utils__WEBPACK_IMPORTED_MODULE_3__["timeout"]; }); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Select2Utils", function() { return _lib_select2_utils__WEBPACK_IMPORTED_MODULE_2__["Select2Utils"]; }); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Select2Utils", function() { return _lib_select2_utils__WEBPACK_IMPORTED_MODULE_3__["Select2Utils"]; }); -/* harmony import */ var _lib_select2_module__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./lib/select2.module */ "./projects/ng-select2-component/src/lib/select2.module.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Select2Module", function() { return _lib_select2_module__WEBPACK_IMPORTED_MODULE_3__["Select2Module"]; }); +/* harmony import */ var _lib_select2_module__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./lib/select2.module */ "./projects/ng-select2-component/src/lib/select2.module.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Select2Module", function() { return _lib_select2_module__WEBPACK_IMPORTED_MODULE_4__["Select2Module"]; }); /* * Public API Surface of ng-select2-component @@ -1161,6 +1225,7 @@ __webpack_require__.r(__webpack_exports__); + /***/ }), /***/ "./src/$$_lazy_route_resource lazy recursive": @@ -1174,7 +1239,7 @@ function webpackEmptyAsyncContext(req) { // Here Promise.resolve().then() is used instead of new Promise() to prevent // uncaught exception popping up in devtools return Promise.resolve().then(function() { - var e = new Error('Cannot find module "' + req + '".'); + var e = new Error("Cannot find module '" + req + "'"); e.code = 'MODULE_NOT_FOUND'; throw e; }); @@ -1193,7 +1258,7 @@ webpackEmptyAsyncContext.id = "./src/$$_lazy_route_resource lazy recursive"; /*! no static exports found */ /***/ (function(module, exports) { -module.exports = "" +module.exports = "\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2FwcC5jb21wb25lbnQuY3NzIn0= */" /***/ }), @@ -1204,7 +1269,7 @@ module.exports = "" /*! no static exports found */ /***/ (function(module, exports) { -module.exports = "
\r\n the source code of the demo\r\n

1. options in group ({{value1}})

\r\n \r\n \r\n

2. options ({{value2}})

\r\n \r\n \r\n

3. less options ({{value3}})

\r\n \r\n \r\n

4. disabled ({{value4}})

\r\n \r\n\r\n \r\n

5. hide search box ({{value5}})

\r\n \r\n \r\n

6. placeholder ({{value6}})

\r\n \r\n \r\n

7. open and search event ({{value7}})

\r\n \r\n \r\n

9. multiple ({{value9}})

\r\n \r\n \r\n

10. form binding ({{value10}})

\r\n
\r\n \r\n \r\n \r\n
\r\n

11. material style ({{value11}})

\r\n \r\n \r\n

12. boolean value ({{value12}})

\r\n \r\n \r\n

13. FormControl

\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
" +module.exports = "
\r\n the source code of the demo\r\n

1. options in group ({{value1}})

\r\n \r\n \r\n

2. options ({{value2}})

\r\n \r\n \r\n

3. less options ({{value3}})

\r\n \r\n \r\n

4. disabled ({{value4}})

\r\n \r\n\r\n \r\n

5. hide search box ({{value5}})

\r\n \r\n \r\n

6. placeholder ({{value6}})

\r\n \r\n \r\n

7. open and search event ({{value7}})

\r\n \r\n \r\n

9. multiple ({{value9}})

\r\n \r\n \r\n

10. form binding ({{value10}})

\r\n
\r\n \r\n \r\n \r\n
\r\n

11. material style ({{value11}})

\r\n \r\n \r\n

12. boolean value ({{value12}})

\r\n \r\n \r\n

13. FormControl

\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n

14. with label ({{value14}})

\r\n \r\n Select a state\r\n \r\n
" /***/ }), @@ -1247,6 +1312,7 @@ var AppComponent = /** @class */ (function () { this.data10 = JSON.parse(JSON.stringify(_app_data__WEBPACK_IMPORTED_MODULE_2__["data1"])); this.data11 = JSON.parse(JSON.stringify(_app_data__WEBPACK_IMPORTED_MODULE_2__["data1"])); this.data12 = _app_data__WEBPACK_IMPORTED_MODULE_2__["data12"]; + this.data14 = _app_data__WEBPACK_IMPORTED_MODULE_2__["data2"]; this.minCountForSearch = Infinity; this.value1 = 'CA'; this.value2 = 'CA'; @@ -1259,6 +1325,7 @@ var AppComponent = /** @class */ (function () { this.value10 = 'CA'; this.value11 = 'CA'; this.value12 = true; + this.value14 = ''; this.fg = new _angular_forms__WEBPACK_IMPORTED_MODULE_1__["FormGroup"]({ state: new _angular_forms__WEBPACK_IMPORTED_MODULE_1__["FormControl"]() }); @@ -1318,6 +1385,9 @@ var AppComponent = /** @class */ (function () { AppComponent.prototype.update12 = function (value) { this.value12 = value; }; + AppComponent.prototype.update14 = function (value) { + this.value14 = value; + }; AppComponent.prototype.resetForm = function () { this.fg.reset(this.formData()); }; @@ -1618,7 +1688,7 @@ Object(_angular_platform_browser_dynamic__WEBPACK_IMPORTED_MODULE_1__["platformB /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -module.exports = __webpack_require__(/*! C:\Data\sources-svn\pitch\ng-select2\src\main.ts */"./src/main.ts"); +module.exports = __webpack_require__(/*! c:\Data\sources-svn\pitch\ng-select2\src\main.ts */"./src/main.ts"); /***/ }) diff --git a/dist/ng-select2/main.js.map b/dist/ng-select2/main.js.map index f4c9010..5e986b9 100644 --- a/dist/ng-select2/main.js.map +++ b/dist/ng-select2/main.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///./projects/ng-select2-component/src/lib/select2-hint.component.ts","webpack:///./projects/ng-select2-component/src/lib/select2-utils.ts","webpack:///./projects/ng-select2-component/src/lib/select2.component.html","webpack:///./projects/ng-select2-component/src/lib/select2.component.scss","webpack:///./projects/ng-select2-component/src/lib/select2.component.ts","webpack:///./projects/ng-select2-component/src/lib/select2.module.ts","webpack:///./projects/ng-select2-component/src/public_api.ts","webpack:///./src/$_lazy_route_resource lazy namespace object","webpack:///./src/app/app.component.css","webpack:///./src/app/app.component.html","webpack:///./src/app/app.component.ts","webpack:///./src/app/app.data.ts","webpack:///./src/app/app.module.ts","webpack:///./src/environments/environment.ts","webpack:///./src/main.ts"],"names":[],"mappings":"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","file":"main.js","sourcesContent":["import { Directive } from '@angular/core';\r\n\r\n@Directive({ selector: 'select2-hint' })\r\nexport class Select2Hint { }\r\n","export interface Select2Group {\r\n label: string;\r\n options: Select2Option[];\r\n classes?: string;\r\n}\r\n\r\nexport interface Select2Option {\r\n value: Select2Value;\r\n label: string;\r\n disabled?: boolean;\r\n component?: string | Function;\r\n classes?: string;\r\n}\r\n\r\nexport type Select2Value = string | number | boolean;\r\n\r\nexport type Select2UpdateValue = Select2Value | Select2Value[];\r\n\r\nexport type Select2Data = (Select2Group | Select2Option)[];\r\n\r\nexport const timeout = 200;\r\n\r\nconst unicodePatterns: { l: string, s: RegExp }[] = [\r\n { l: 'a', s: /[ⓐaẚàáâầấẫẩãāăằắẵẳȧǡäǟảåǻǎȁȃạậặḁąⱥɐ]/gi },\r\n { l: 'aa', s: /ꜳ/gi },\r\n { l: 'ae', s: /[æǽǣ]/gi },\r\n { l: 'ao', s: /ꜵ/gi },\r\n { l: 'au', s: /ꜷ/gi },\r\n { l: 'av', s: /[ꜹꜻ]/gi },\r\n { l: 'ay', s: /ꜽ/gi },\r\n { l: 'b', s: /[ⓑbḃḅḇƀƃɓ]/gi },\r\n { l: 'c', s: /[ⓒcćĉċčçḉƈȼꜿↄ]/gi },\r\n { l: 'd', s: /[ⓓdḋďḍḑḓḏđƌɖɗꝺ]/gi },\r\n { l: 'dz', s: /[dzdž]/gi },\r\n { l: 'e', s: /[ⓔeèéêềếễểẽēḕḗĕėëẻěȅȇẹệȩḝęḙḛɇɛǝ]/gi },\r\n { l: 'f', s: /[ⓕfḟƒꝼ]/gi },\r\n { l: 'g', s: /[ⓖgǵĝḡğġǧģǥɠꞡᵹꝿ]/gi },\r\n { l: 'h', s: /[ⓗhĥḣḧȟḥḩḫẖħⱨⱶɥ]/gi },\r\n { l: 'hv', s: /ƕ/gi },\r\n { l: 'i', s: /[ⓘiìíîĩīĭİïḯỉǐȉȋịįḭɨı]/gi },\r\n { l: 'j', s: /[ⓙjĵǰɉ]/gi },\r\n { l: 'k', s: /[ⓚkḱǩḳķḵƙⱪꝁꝃꝅꞣ]/gi },\r\n { l: 'l', s: /[ⓛlŀĺľḷḹļḽḻſłƚɫⱡꝉꞁꝇꝆ]/gi },\r\n { l: 'lj', s: /lj/gi },\r\n { l: 'm', s: /[ⓜmḿṁṃɱɯ]/gi },\r\n { l: 'n', s: /[ⓝnǹńñṅňṇņṋṉƞɲʼnꞑꞥ]/gi },\r\n { l: 'nj', s: /nj/gi },\r\n { l: 'o', s: /[ⓞoòóôồốỗổõṍȭṏōṑṓŏȯȱöȫỏőǒȍȏơờớỡởợọộǫǭøǿɔƟꝋꝍɵ]/gi },\r\n { l: 'oi', s: /ƣ/gi },\r\n { l: 'oe', s: /œ/gi },\r\n { l: 'oo', s: /ꝏ/gi },\r\n { l: 'ou', s: /ȣ/gi },\r\n { l: 'p', s: /[ⓟpṕṗƥᵽꝑꝓꝕ]/gi },\r\n { l: 'q', s: /[ⓠqɋꝗꝙ]/gi },\r\n { l: 'r', s: /[ⓡrŕṙřȑȓṛṝŗṟɍɽꝛꞧꞃ]/gi },\r\n { l: 's', s: /[ⓢsßẞśṥŝṡšṧṣṩșşȿꞩꞅẛ]/gi },\r\n { l: 't', s: /[ⓣtṫẗťṭțţṱṯŧƭʈⱦꞇ]/gi },\r\n { l: 'tz', s: /ꜩ/gi },\r\n { l: 'u', s: /[ⓤuùúûũṹūṻŭüǜǘǖǚủůűǔȕȗưừứữửựụṳųṷṵʉ]/gi },\r\n { l: 'v', s: /[ⓥvṽṿʋꝟʌ]/gi },\r\n { l: 'vy', s: /ꝡ/gi },\r\n { l: 'w', s: /[ⓦwẁẃŵẇẅẘẉⱳ]/gi },\r\n { l: 'x', s: /[ⓧxẋẍ]/gi },\r\n { l: 'y', s: /[ⓨyỳýŷỹȳẏÿỷẙỵƴɏỿ]/gi },\r\n { l: 'z', s: /[ⓩzźẑżžẓẕƶȥɀⱬꝣ]/gi }\r\n];\r\n\r\nconst defaultMinCountForSearch = 6;\r\n\r\nexport class Select2Utils {\r\n\r\n private static getScrollUpIndex(data: Select2Data, value: Select2Value) {\r\n let index = 0;\r\n for (const groupOrOption of data) {\r\n const options = (groupOrOption as Select2Group).options;\r\n if (options) {\r\n index++;\r\n const valueIndex = options.findIndex(op => op.value === value);\r\n if (valueIndex !== -1) {\r\n return index + valueIndex;\r\n } else {\r\n index += options.length;\r\n }\r\n } else {\r\n if ((groupOrOption as Select2Option).value === value) {\r\n return index;\r\n } else {\r\n index++;\r\n }\r\n }\r\n }\r\n return 0;\r\n }\r\n\r\n static getOptionByValue(data: Select2Data, value: Select2Value | null | undefined) {\r\n for (const groupOrOption of data) {\r\n const options = (groupOrOption as Select2Group).options;\r\n if (options) {\r\n for (const option of options) {\r\n if (option.value === value) {\r\n return option;\r\n }\r\n }\r\n } else {\r\n if ((groupOrOption as Select2Option).value === value) {\r\n return groupOrOption as Select2Option;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n static getOptionsByValue(\r\n data: Select2Data,\r\n value: Select2UpdateValue | null | undefined,\r\n multiple: boolean | null | undefined\r\n ) {\r\n if (multiple) {\r\n const values: Select2Value[] = Array.isArray(value) ? value : [];\r\n const result: Select2Option[] = [];\r\n for (const v of values) {\r\n const option = Select2Utils.getOptionByValue(data, v);\r\n if (option) {\r\n result.push(option);\r\n }\r\n }\r\n return result;\r\n }\r\n return Select2Utils.getOptionByValue(data, value as Select2Value | null | undefined);\r\n }\r\n\r\n static getFirstAvailableOption(data: Select2Data) {\r\n for (const groupOrOption of data) {\r\n const options = (groupOrOption as Select2Group).options;\r\n if (options) {\r\n for (const option of options) {\r\n if (!option.disabled) {\r\n return option.value;\r\n }\r\n }\r\n } else {\r\n const option = groupOrOption as Select2Option;\r\n if (!option.disabled) {\r\n return option.value;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n private static getOptionsCount(data: Select2Data) {\r\n let count = 0;\r\n for (const groupOrOption of data) {\r\n const options = (groupOrOption as Select2Group).options;\r\n if (options) {\r\n count += options.length;\r\n } else {\r\n count++;\r\n }\r\n }\r\n return count;\r\n }\r\n\r\n static valueIsNotInFilteredData(filteredData: Select2Data, value: Select2Value | null | undefined) {\r\n if (Select2Utils.isNullOrUndefined(value)) {\r\n return true;\r\n }\r\n for (const groupOrOption of filteredData) {\r\n const options = (groupOrOption as Select2Group).options;\r\n if (options) {\r\n for (const option of options) {\r\n if (option.value === value) {\r\n return false;\r\n }\r\n }\r\n } else {\r\n if ((groupOrOption as Select2Option).value === value) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n // tslint:disable-next-line:cognitive-complexity\r\n static getPreviousOption(filteredData: Select2Data, hoveringValue: Select2Value | null | undefined) {\r\n let findIt = Select2Utils.isNullOrUndefined(hoveringValue);\r\n for (let i = filteredData.length - 1; i >= 0; i--) {\r\n const groupOrOption = filteredData[i];\r\n const options = (groupOrOption as Select2Group).options;\r\n if (options) {\r\n for (let j = options.length - 1; j >= 0; j--) {\r\n const option = options[j];\r\n if (findIt) {\r\n if (!option.disabled) {\r\n return option.value;\r\n }\r\n }\r\n findIt = option.value === hoveringValue;\r\n }\r\n } else {\r\n const option = groupOrOption as Select2Option;\r\n if (findIt) {\r\n if (!option.disabled) {\r\n return option.value;\r\n }\r\n }\r\n findIt = option.value === hoveringValue;\r\n }\r\n }\r\n return findIt ? hoveringValue : null;\r\n }\r\n // tslint:disable-next-line:cognitive-complexity\r\n static getNextOption(filteredData: Select2Data, hoveringValue: Select2Value | null | undefined) {\r\n let findIt = Select2Utils.isNullOrUndefined(hoveringValue);\r\n for (const groupOrOption of filteredData) {\r\n const options = (groupOrOption as Select2Group).options;\r\n if (options) {\r\n for (const option of options) {\r\n if (findIt) {\r\n if (!option.disabled) {\r\n return option.value;\r\n }\r\n } else {\r\n findIt = option.value === hoveringValue;\r\n }\r\n }\r\n } else {\r\n const option = groupOrOption as Select2Option;\r\n if (findIt) {\r\n if (!option.disabled) {\r\n return option.value;\r\n }\r\n } else {\r\n findIt = option.value === hoveringValue;\r\n }\r\n }\r\n }\r\n return findIt ? hoveringValue : null;\r\n }\r\n\r\n private static isNullOrUndefined(value: any) {\r\n return value === null || value === undefined;\r\n }\r\n\r\n static getLastScrollTopIndex(\r\n hoveringValue: Select2Value | null | undefined,\r\n results: HTMLElement,\r\n filteredData: Select2Data,\r\n lastScrollTopIndex: number\r\n ) {\r\n if (Select2Utils.isNullOrUndefined(hoveringValue)) {\r\n results.scrollTop = 0;\r\n return 0;\r\n } else {\r\n const scrollTop = Select2Utils.getScrollUpIndex(filteredData, hoveringValue!);\r\n if (scrollTop - lastScrollTopIndex > 5) {\r\n lastScrollTopIndex += scrollTop - lastScrollTopIndex - 5;\r\n const item = results.querySelectorAll('li').item(scrollTop);\r\n if (item) {\r\n results.scrollTop = item.offsetTop - results.offsetHeight;\r\n }\r\n return lastScrollTopIndex;\r\n }\r\n if (lastScrollTopIndex - scrollTop > 0) {\r\n lastScrollTopIndex -= lastScrollTopIndex - scrollTop;\r\n const item = results.querySelectorAll('li').item(lastScrollTopIndex - 1);\r\n if (item) {\r\n results.scrollTop = item.offsetTop;\r\n }\r\n return lastScrollTopIndex;\r\n }\r\n return null;\r\n }\r\n }\r\n\r\n private static containSearchText(\r\n label: string,\r\n searchText: string | null,\r\n editPattern: ((str: string) => string) | undefined\r\n ): boolean {\r\n return searchText\r\n ? Select2Utils\r\n .formatSansUnicode(label)\r\n .match(new RegExp(Select2Utils.formatPattern(searchText, editPattern), 'i')) !== null\r\n : true;\r\n }\r\n\r\n private static protectPattern(str: string): string {\r\n return str.replace(new RegExp('[\\\\-\\\\[\\\\]\\\\/\\\\{\\\\}\\\\(\\\\)\\\\*\\\\+\\\\?\\\\.\\\\\\\\\\\\^\\\\$\\\\|]', 'g'), '\\\\$&');\r\n }\r\n\r\n private static formatSansUnicode(str: string): string {\r\n for (const unicodePattern of unicodePatterns) {\r\n str = str.replace(unicodePattern.s, unicodePattern.l);\r\n }\r\n return str;\r\n }\r\n\r\n private static formatPattern(str: string, editPattern: ((str: string) => string) | undefined): string {\r\n str = Select2Utils.formatSansUnicode(Select2Utils.protectPattern(str));\r\n\r\n if (editPattern && typeof editPattern === 'function') {\r\n str = editPattern(str);\r\n }\r\n return str;\r\n }\r\n\r\n static getFilteredData(data: Select2Data, searchText: string | null, editPattern?: (str: string) => string): Select2Data {\r\n if (searchText) {\r\n const result: Select2Data = [];\r\n for (const groupOrOption of data) {\r\n const options = (groupOrOption as Select2Group).options;\r\n if (options) {\r\n if (options.some(group => Select2Utils.containSearchText(group.label, searchText, editPattern))) {\r\n const filteredOptions = options.filter(\r\n group => Select2Utils.containSearchText(group.label, searchText, editPattern)\r\n );\r\n result.push({\r\n label: groupOrOption.label,\r\n options: filteredOptions\r\n });\r\n }\r\n } else if (Select2Utils.containSearchText(groupOrOption.label, searchText, editPattern)) {\r\n result.push(groupOrOption);\r\n }\r\n }\r\n return result;\r\n } else {\r\n return data;\r\n }\r\n }\r\n\r\n static getOptionStyle(value: Select2Value, hoveringValue: Select2Value | null | undefined) {\r\n return value === hoveringValue\r\n ? 'select2-results__option select2-results__option--highlighted'\r\n : 'select2-results__option';\r\n }\r\n\r\n static getDropdownStyle(isOpen: boolean) {\r\n return isOpen\r\n ? 'select2-container select2-container--default select2-container-dropdown select2-container--open'\r\n : 'select2-container select2-container--default select2-container-dropdown';\r\n }\r\n\r\n static getContainerStyle(disabled: boolean | undefined, isOpen: boolean) {\r\n return `select2 select2-container select2-container--default ${disabled ? 'select2-container--disabled' : ''} `\r\n + `${isOpen ? 'select2-container--open' : ''} select2-container--below select2-container--focus`;\r\n }\r\n\r\n static getSelectionStyle(multiple: boolean | undefined) {\r\n return `select2-selection select2-selection--${multiple ? 'multiple' : 'single'}`;\r\n }\r\n\r\n\r\n static isSearchboxHiddex(data: Select2Data, minCountForSearch?: number) {\r\n if (typeof minCountForSearch !== 'number') {\r\n minCountForSearch = defaultMinCountForSearch;\r\n }\r\n const optionCount = Select2Utils.getOptionsCount(data);\r\n return optionCount < minCountForSearch;\r\n }\r\n\r\n static getSearchStyle(isHidden: boolean) {\r\n return isHidden\r\n ? 'select2-search select2-search--dropdown select2-search--hide'\r\n : 'select2-search select2-search--dropdown';\r\n }\r\n\r\n static isSelected(\r\n options: Select2Option | Select2Option[] | null,\r\n option: Select2Option,\r\n multiple: boolean | null | undefined\r\n ) {\r\n if (multiple) {\r\n return options && (options as Select2Option[]).some(op => op.value === option.value) ? 'true' : 'false';\r\n } else {\r\n return options && option.value === (options as Select2Option).value ? 'true' : 'false';\r\n }\r\n }\r\n\r\n static removeSelection(options: Select2Option | Select2Option[] | null, option: Select2Option) {\r\n for (let i = 0; i < (options as Select2Option[]).length; i++) {\r\n if ((options as Select2Option[])[i].value === option.value) {\r\n (options as Select2Option[]).splice(i, 1);\r\n return;\r\n }\r\n }\r\n }\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n
\\r\\n \\r\\n  \\r\\n {{select2Option.label}}\\r\\n {{placeholder}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n 0\\\"\\r\\n class=\\\"select2-selection__placeholder\\\">{{placeholder}}\\r\\n
  • \\r\\n ×\\r\\n {{op.label}}\\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
    \\r\\n \\r\\n
  • \\r\\n {{groupOrOption.label}}\\r\\n
      \\r\\n
    • {{option.label}}
    • \\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n {{groupOrOption.label}}\\r\\n
  • \\r\\n
    \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","module.exports = \".select2-container {\\n box-sizing: border-box;\\n display: inline-block;\\n margin: 0;\\n position: relative;\\n vertical-align: middle;\\n width: 100%; }\\n .select2-container .select2-container-dropdown {\\n position: absolute; }\\n .select2-container .select2-selection--single {\\n box-sizing: border-box;\\n cursor: pointer;\\n display: block;\\n height: 28px;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none; }\\n .select2-container .select2-selection--single .select2-selection__rendered {\\n display: block;\\n padding-left: 8px;\\n padding-right: 20px;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap; }\\n .select2-container .select2-selection--single .select2-selection__clear {\\n position: relative; }\\n .select2-container .select2-selection--multiple {\\n box-sizing: border-box;\\n cursor: pointer;\\n display: block;\\n min-height: 32px;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none; }\\n .select2-container .select2-selection--multiple .select2-selection__rendered {\\n display: inline-block;\\n overflow: hidden;\\n padding-left: 8px;\\n text-overflow: ellipsis;\\n white-space: nowrap; }\\n .select2-container .select2-search--inline {\\n float: left; }\\n .select2-container .select2-search--inline .select2-search__field {\\n box-sizing: border-box;\\n border: none;\\n font-size: 100%;\\n margin-top: 5px;\\n padding: 0; }\\n .select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button {\\n -webkit-appearance: none; }\\n .select2-dropdown {\\n background-color: white;\\n border: 1px solid #aaa;\\n border-radius: 4px;\\n box-sizing: border-box;\\n display: block;\\n position: absolute;\\n left: -100000px;\\n width: 100%;\\n z-index: 1051; }\\n .select2-results {\\n display: block; }\\n .select2-results__options {\\n list-style: none;\\n margin: 0;\\n padding: 0; }\\n .select2-results__option {\\n padding: 6px;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none; }\\n .select2-results__option[aria-selected] {\\n cursor: pointer; }\\n .select2-container--open .select2-dropdown {\\n left: 0; }\\n .select2-container--open .select2-dropdown--above {\\n border-bottom: none;\\n border-bottom-left-radius: 0;\\n border-bottom-right-radius: 0; }\\n .select2-container--open .select2-dropdown--below {\\n border-top: none;\\n border-top-left-radius: 0;\\n border-top-right-radius: 0; }\\n .select2-search--dropdown {\\n display: block;\\n padding: 4px; }\\n .select2-search--dropdown .select2-search__field {\\n padding: 4px;\\n width: 100%;\\n box-sizing: border-box; }\\n .select2-search--dropdown .select2-search__field::-webkit-search-cancel-button {\\n -webkit-appearance: none; }\\n .select2-search--dropdown.select2-search--hide {\\n display: none; }\\n .select2-close-mask {\\n border: 0;\\n margin: 0;\\n padding: 0;\\n display: block;\\n position: fixed;\\n left: 0;\\n top: 0;\\n min-height: 100%;\\n min-width: 100%;\\n height: auto;\\n width: auto;\\n opacity: 0;\\n z-index: 99;\\n background-color: #fff;\\n filter: alpha(opacity=0); }\\n .select2-hidden-accessible {\\n border: 0 !important;\\n clip: rect(0 0 0 0) !important;\\n height: 1px !important;\\n margin: -1px !important;\\n overflow: hidden !important;\\n padding: 0 !important;\\n position: absolute !important;\\n width: 1px !important; }\\n .select2-container--default .select2-selection--single {\\n background-color: #fff;\\n border: 1px solid #aaa;\\n border-radius: 4px; }\\n .select2-container--default .select2-selection--single .select2-selection__rendered {\\n color: #444;\\n line-height: 28px; }\\n .select2-container--default .select2-selection--single .select2-selection__clear {\\n cursor: pointer;\\n float: right;\\n font-weight: bold; }\\n .select2-container--default .select2-selection--single .select2-selection__placeholder {\\n color: #999; }\\n .select2-container--default .select2-selection--single .select2-selection__placeholder__option {\\n display: none; }\\n .select2-container--default .select2-selection--single .select2-selection__arrow {\\n height: 26px;\\n position: absolute;\\n top: 1px;\\n right: 1px;\\n width: 20px; }\\n .select2-container--default .select2-selection--single .select2-selection__arrow b {\\n border-color: #888 transparent;\\n border-style: solid;\\n border-width: 5px 4px 0;\\n height: 0;\\n left: 50%;\\n margin-left: -4px;\\n margin-top: -2px;\\n position: absolute;\\n top: 50%;\\n width: 0; }\\n .select2-container--default.select2-container--disabled .select2-selection--single {\\n background-color: #eee;\\n cursor: default; }\\n .select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear {\\n display: none; }\\n .select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b {\\n border-color: transparent transparent #888;\\n border-width: 0 4px 5px; }\\n .select2-container--default .select2-selection--multiple {\\n background-color: white;\\n border: 1px solid #aaa;\\n border-radius: 4px;\\n cursor: text; }\\n .select2-container--default .select2-selection--multiple .select2-selection__rendered {\\n box-sizing: border-box;\\n list-style: none;\\n margin: 0;\\n padding: 0 5px;\\n width: 100%; }\\n .select2-container--default .select2-selection--multiple .select2-selection__rendered li {\\n list-style: none; }\\n .select2-container--default .select2-selection--multiple .select2-selection__placeholder {\\n color: #999;\\n margin-top: 5px;\\n float: left; }\\n .select2-container--default .select2-selection--multiple .select2-selection__placeholder__option {\\n display: none; }\\n .select2-container--default .select2-selection--multiple .select2-selection__clear {\\n cursor: pointer;\\n float: right;\\n font-weight: bold;\\n margin-top: 5px;\\n margin-right: 10px; }\\n .select2-container--default .select2-selection--multiple .select2-selection__choice {\\n background-color: #e4e4e4;\\n border: 1px solid #aaa;\\n border-radius: 4px;\\n cursor: default;\\n float: left;\\n margin-right: 5px;\\n margin-top: 5px;\\n padding: 0 5px; }\\n .select2-container--default .select2-selection--multiple .select2-selection__choice__remove {\\n color: #999;\\n cursor: pointer;\\n display: inline-block;\\n font-weight: bold;\\n margin-right: 2px; }\\n .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {\\n color: #333; }\\n .select2-container--default.select2-container--focused .select2-selection--multiple {\\n border: solid black 1px;\\n outline: 0; }\\n .select2-container--default:not(.select2-container--open) .select2-focused .select2-selection--single,\\n.select2-container--default:not(.select2-container--open) .select2-focused .select2-selection--multiple {\\n border: solid black 1px;\\n outline: 0; }\\n .select2-container--default.select2-container--disabled .select2-selection--multiple {\\n background-color: #eee;\\n cursor: default; }\\n .select2-container--default.select2-container--disabled .select2-selection__choice__remove {\\n display: none; }\\n .select2-container--default.select2-container--open.select2-container--above .select2-selection--single,\\n.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple {\\n border-top-left-radius: 0;\\n border-top-right-radius: 0; }\\n .select2-container--default.select2-container--open.select2-container--below .select2-selection--single,\\n.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple {\\n border-bottom-left-radius: 0;\\n border-bottom-right-radius: 0; }\\n .select2-container--default .select2-search--dropdown .select2-search__field {\\n border: 1px solid #aaa; }\\n .select2-container--default .select2-search--inline .select2-search__field {\\n background: transparent;\\n border: none;\\n outline: 0;\\n box-shadow: none;\\n -webkit-appearance: textfield; }\\n .select2-container--default .select2-results > .select2-results__options {\\n max-height: 200px;\\n overflow-y: auto; }\\n .select2-container--default .select2-results__option[role=group] {\\n padding: 0; }\\n .select2-container--default .select2-results__option[aria-disabled=true] {\\n color: #999; }\\n .select2-container--default .select2-results__option[aria-selected=true] {\\n background-color: #ddd; }\\n .select2-container--default .select2-results__option .select2-results__option {\\n padding-left: 1em; }\\n .select2-container--default .select2-results__option .select2-results__option .select2-results__group {\\n padding-left: 0; }\\n .select2-container--default .select2-results__option .select2-results__option .select2-results__option {\\n margin-left: -1em;\\n padding-left: 2em; }\\n .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option {\\n margin-left: -2em;\\n padding-left: 3em; }\\n .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {\\n margin-left: -3em;\\n padding-left: 4em; }\\n .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {\\n margin-left: -4em;\\n padding-left: 5em; }\\n .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {\\n margin-left: -5em;\\n padding-left: 6em; }\\n .select2-container--default .select2-results__option--highlighted[aria-selected] {\\n background-color: #5897fb;\\n color: white; }\\n .select2-container--default .select2-results__group {\\n cursor: default;\\n display: block;\\n padding: 6px;\\n color: gray; }\\n /* stylelint-disable-next-line selector-type-no-unknown */\\n :host.material {\\n display: inline-block;\\n width: 300px; }\\n :host.material > .select2-container {\\n padding-bottom: 1.29688em;\\n vertical-align: inherit; }\\n :host.material > .select2-container .selection {\\n padding: 0.4375em 0;\\n border-top: 0.84375em solid transparent;\\n display: inline-flex;\\n align-items: baseline;\\n width: 100%;\\n height: auto; }\\n :host.material .select2-container--default .select2-selection--single,\\n :host.material .select2-container--default .select2-selection--multiple {\\n width: 100%;\\n border: 0;\\n border-radius: 0;\\n height: 24px;\\n box-sizing: border-box; }\\n :host.material .select2-container--default .select2-selection--single::before,\\n :host.material .select2-container--default .select2-selection--multiple::before {\\n content: ' ';\\n display: block;\\n position: absolute;\\n bottom: 1.65em;\\n background-color: #ddd;\\n height: 1px;\\n width: 100%; }\\n :host.material .select2-container--default .select2-selection--single::after,\\n :host.material .select2-container--default .select2-selection--multiple::after {\\n content: ' ';\\n display: block;\\n position: absolute;\\n bottom: 1.63em;\\n background-color: #5a419e;\\n height: 2px;\\n width: 0%;\\n left: 50%;\\n transition: none; }\\n :host.material .select2-container--default .select2-selection--single .select2-selection__rendered,\\n :host.material .select2-container--default .select2-selection--multiple .select2-selection__rendered {\\n padding-left: 1px;\\n line-height: inherit; }\\n :host.material .select2-container--default .select2-selection--single .select2-selection__placeholder,\\n :host.material .select2-container--default .select2-selection--multiple .select2-selection__placeholder {\\n display: block;\\n color: rgba(0, 0, 0, 0.38);\\n transition: -webkit-transform 0.3s;\\n transition: transform 0.3s;\\n transition: transform 0.3s, -webkit-transform 0.3s;\\n position: absolute;\\n -webkit-transform-origin: 0 21px;\\n transform-origin: 0 21px;\\n left: 0;\\n top: 20px; }\\n :host.material .select2-container--default .select2-container--open {\\n left: 0;\\n bottom: 1.6em; }\\n :host.material .select2-container--default .select2-selection__placeholder__option {\\n -webkit-transform: translateY(-1.5em) scale(0.75) perspective(100px) translateZ(0.001px);\\n transform: translateY(-1.5em) scale(0.75) perspective(100px) translateZ(0.001px);\\n width: 133.33333%; }\\n :host.material .select2-container--default .select2-selection__arrow {\\n top: 20px; }\\n :host.material .select2-container--default.select2-container--open .select2-selection--single::after,\\n :host.material .select2-container--default.select2-container--open .select2-selection--multiple::after,\\n :host.material .select2-container--default .select2-focused .select2-selection--single::after,\\n :host.material .select2-container--default .select2-focused .select2-selection--multiple::after {\\n transition: width 0.3s cubic-bezier(0.12, 1, 0.77, 1), left 0.3s cubic-bezier(0.12, 1, 0.77, 1);\\n width: 100%;\\n left: 0%; }\\n :host.material .select2-container--default .select2-dropdown {\\n border-radius: 0;\\n border: 0;\\n box-shadow: 0 5px 5px rgba(0, 0, 0, 0.5); }\\n :host.material .select2-container--default .select2-results__option[aria-selected=true],\\n :host.material .select2-container--default .select2-results__option--highlighted[aria-selected] {\\n background-color: rgba(0, 0, 0, 0.04);\\n color: #000; }\\n :host.material .select2-container--default .select2-results__option[aria-selected=true] {\\n color: #ff5722; }\\n :host.material .select2-container--default.select2-container--disabled .select2-selection--single,\\n :host.material .select2-container--default.select2-container--disabled .select2-selection--multiple {\\n background-color: transparent; }\\n :host.material .select2-container--default.select2-container--disabled .select2-selection--single::before,\\n :host.material .select2-container--default.select2-container--disabled .select2-selection--multiple::before {\\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.26) 0, rgba(0, 0, 0, 0.26) 33%, transparent 0);\\n background-size: 4px 1px;\\n background-repeat: repeat-x;\\n background-color: transparent;\\n background-position: 0 bottom; }\\n :host.material.ng-invalid.ng-touched .select2-container--default .select2-selection--single::before, :host.material.ng-invalid.ng-touched .select2-container--default .select2-selection--single::after,\\n :host.material.ng-invalid.ng-touched .select2-container--default .select2-selection--multiple::before,\\n :host.material.ng-invalid.ng-touched .select2-container--default .select2-selection--multiple::after {\\n background-color: red; }\\n :host.material:not(.select2-container--open) .select2-focused .select2-selection--single,\\n :host.material:not(.select2-container--open) .select2-focused .select2-selection--multiple {\\n border: 0; }\\n :host.material .select2-subscript-wrapper {\\n position: absolute;\\n top: calc(100% - 1.72917em);\\n font-size: 75%; }\\n /* stylelint-disable selector-type-no-unknown */\\n @supports (-moz-appearance: none) {\\n select2.material .select2-container--default .select2-selection--single,\\n select2.material .select2-container--default .select2-selection--multiple {\\n height: 26px; } }\\n @supports (-ms-scroll-limit: 0) {\\n select2.material .select2-container--default .select2-selection--single,\\n select2.material .select2-container--default .select2-selection--multiple {\\n height: 25px; } }\\n\"","import {\r\n Component, Input, Output, EventEmitter, ElementRef, ViewChild, Optional, Self, ChangeDetectorRef,\r\n Attribute, OnInit, OnDestroy, DoCheck, AfterViewInit, HostBinding\r\n} from '@angular/core';\r\nimport {\r\n FormGroupDirective, NgControl, NgForm, ControlValueAccessor\r\n} from '@angular/forms';\r\n\r\nimport { Subject } from 'rxjs';\r\n\r\nimport {\r\n Select2Data, Select2Option, Select2Value, Select2Utils, Select2UpdateValue, timeout\r\n} from './select2-utils';\r\n\r\nlet nextUniqueId = 0;\r\n\r\n@Component({\r\n selector: 'select2',\r\n templateUrl: './select2.component.html',\r\n styleUrls: ['./select2.component.scss']\r\n})\r\nexport class Select2 implements ControlValueAccessor, OnInit, OnDestroy, DoCheck, AfterViewInit {\r\n\r\n /** data of options & optiongrps */\r\n @Input() data!: Select2Data;\r\n /** minimal data of show the search field */\r\n @Input() minCountForSearch?: number;\r\n @Input() placeholder?: string;\r\n @Input() customSearchEnabled?: boolean;\r\n @Input() multiple?: boolean;\r\n\r\n /** use the material style */\r\n @Input() material?: '' | true;\r\n\r\n /** use it for change the pattern of the filter search */\r\n @Input() editPattern!: (str: string) => string;\r\n\r\n @Output() update = new EventEmitter();\r\n @Output() open = new EventEmitter();\r\n @Output() search = new EventEmitter();\r\n\r\n option: Select2Option | Select2Option[] | null = null;\r\n isOpen = false;\r\n searchStyle!: string;\r\n\r\n @ViewChild('selection') selection!: ElementRef;\r\n @ViewChild('results') private results!: ElementRef;\r\n @ViewChild('searchInput') private searchInput!: ElementRef;\r\n private hoveringValue: Select2Value | null | undefined = null;\r\n private innerSearchText = '';\r\n private lastScrollTopIndex = 0;\r\n private isSearchboxHidden!: boolean;\r\n private selectionElement!: HTMLElement;\r\n private searchInputElement!: HTMLElement;\r\n private resultsElement!: HTMLElement;\r\n\r\n // tslint:disable:member-ordering\r\n private _stateChanges = new Subject();\r\n\r\n /** Whether the element is focused or not. */\r\n focused = false;\r\n\r\n /** View -> model callback called when select has been touched */\r\n private _onTouched = () => {\r\n // do nothing\r\n }\r\n\r\n /** View -> model callback called when value changes */\r\n private _onChange: (value: any) => void = () => {\r\n // do nothing\r\n }\r\n\r\n get select2Options() {\r\n return this.multiple ? this.option as Select2Option[] : null;\r\n }\r\n get select2Option() {\r\n return this.multiple ? null : this.option as Select2Option;\r\n }\r\n get searchText() {\r\n return this.innerSearchText;\r\n }\r\n set searchText(text: string) {\r\n if (this.customSearchEnabled) {\r\n this.search.emit(text);\r\n }\r\n this.innerSearchText = text;\r\n }\r\n\r\n get dropdownStyle() {\r\n return Select2Utils.getDropdownStyle(this.isOpen);\r\n }\r\n\r\n get filteredData(): Select2Data {\r\n const result = this.customSearchEnabled\r\n ? this.data\r\n : Select2Utils.getFilteredData(this.data, this.searchText, this.editPattern);\r\n\r\n if (Select2Utils.valueIsNotInFilteredData(result, this.hoveringValue)) {\r\n this.hoveringValue = Select2Utils.getFirstAvailableOption(result);\r\n\r\n if (this.resultsElement) {\r\n const lastScrollTopIndex = Select2Utils.getLastScrollTopIndex(\r\n this.hoveringValue,\r\n this.resultsElement,\r\n result,\r\n this.lastScrollTopIndex\r\n );\r\n if (lastScrollTopIndex !== null) {\r\n this.lastScrollTopIndex = lastScrollTopIndex;\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n get containerStyle() {\r\n return Select2Utils.getContainerStyle(this.disabled, this.isOpen);\r\n }\r\n\r\n get selectionStyle() {\r\n return Select2Utils.getSelectionStyle(this.multiple);\r\n }\r\n\r\n /** Unique id of the element. */\r\n @Input()\r\n @HostBinding('id')\r\n get id() { return this._id; }\r\n set id(value: string) { this._id = value || this._uid; }\r\n\r\n /** Whether the element is required. */\r\n @Input()\r\n get required() { return this._required; }\r\n set required(value: any) { this._required = this._coerceBooleanProperty(value); }\r\n\r\n /** Whether the element is disabled. */\r\n @Input()\r\n get disabled() { return this._control ? this._control.disabled : this._disabled; }\r\n set disabled(value: any) { this._disabled = this._coerceBooleanProperty(value); }\r\n\r\n /** Whether the element is readonly. */\r\n @Input()\r\n get readonly() { return this._readonly; }\r\n set readonly(value: any) { this._readonly = this._coerceBooleanProperty(value); }\r\n\r\n /** The input element's value. */\r\n @Input()\r\n get value() { return this._value; }\r\n set value(value: Select2UpdateValue) {\r\n setTimeout(() => {\r\n this._value = value;\r\n this.writeValue(value);\r\n });\r\n }\r\n\r\n /** Tab index for the select2 element. */\r\n @Input()\r\n get tabIndex(): number { return this.disabled ? -1 : this._tabIndex; }\r\n set tabIndex(value: number) {\r\n if (typeof value !== 'undefined') {\r\n this._tabIndex = value;\r\n }\r\n }\r\n\r\n @HostBinding('attr.aria-invalid')\r\n get ariaInvalid() {\r\n return this._isErrorState();\r\n }\r\n\r\n @HostBinding('class.material')\r\n get classMaterial() {\r\n return this.material === '' || this.material === true;\r\n }\r\n\r\n /** Tab index for the element. */\r\n private _tabIndex: number;\r\n\r\n private _disabled = false;\r\n private _required = false;\r\n private _readonly = false;\r\n private _clickDetection = false;\r\n private _clickDetectionFc: (e: MouseEvent) => void;\r\n private _id!: string;\r\n private _uid = `select2-${nextUniqueId++}`;\r\n private _value!: Select2UpdateValue;\r\n private _previousNativeValue: Select2UpdateValue = this._value;\r\n\r\n constructor(\r\n private _changeDetectorRef: ChangeDetectorRef,\r\n @Optional() private _parentForm: NgForm,\r\n @Optional() private _parentFormGroup: FormGroupDirective,\r\n @Self() @Optional() public _control: NgControl,\r\n @Attribute('tabindex') tabIndex: string\r\n ) {\r\n this.id = this.id;\r\n this._tabIndex = parseInt(tabIndex, 10) || 0;\r\n\r\n if (this._control) {\r\n this._control.valueAccessor = this;\r\n }\r\n\r\n this._clickDetectionFc = this.clickDetection.bind(this);\r\n }\r\n\r\n ngOnInit() {\r\n const option = Select2Utils.getOptionsByValue(\r\n this.data,\r\n this._control ? this._control.value : this.value,\r\n this.multiple\r\n );\r\n if (option !== null) {\r\n this.option = option;\r\n }\r\n if (!Array.isArray(option)) {\r\n this.hoveringValue = this.value as string | undefined;\r\n }\r\n this.isSearchboxHidden = this.customSearchEnabled\r\n ? false\r\n : Select2Utils.isSearchboxHiddex(this.data, this.minCountForSearch);\r\n this.searchStyle = Select2Utils.getSearchStyle(this.isSearchboxHidden);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.selectionElement = this.selection.nativeElement as HTMLElement;\r\n this.searchInputElement = this.searchInput.nativeElement as HTMLElement;\r\n this.resultsElement = this.results.nativeElement as HTMLElement;\r\n }\r\n\r\n ngDoCheck() {\r\n this._dirtyCheckNativeValue();\r\n }\r\n\r\n ngOnDestroy() {\r\n window.document.body.removeEventListener('click', this._clickDetectionFc);\r\n }\r\n\r\n getOptionStyle(option: Select2Option) {\r\n return Select2Utils.getOptionStyle(option.value, this.hoveringValue)\r\n + (option.classes ? ' ' + option.classes : '');\r\n }\r\n\r\n mouseenter(option: Select2Option) {\r\n if (!option.disabled) {\r\n this.hoveringValue = option.value;\r\n }\r\n }\r\n\r\n click(option: Select2Option) {\r\n if (!option.disabled) {\r\n this.select(option);\r\n }\r\n }\r\n\r\n toggleOpenAndClose() {\r\n if (this.disabled) {\r\n return;\r\n }\r\n this.focused = true;\r\n this.isOpen = !this.isOpen;\r\n if (this.isOpen) {\r\n this.innerSearchText = '';\r\n this.focusSearchboxOrResultsElement();\r\n\r\n if (this.resultsElement) {\r\n const lastScrollTopIndex = Select2Utils.getLastScrollTopIndex(\r\n this.hoveringValue,\r\n this.resultsElement,\r\n this.data,\r\n this.lastScrollTopIndex\r\n );\r\n if (lastScrollTopIndex !== null) {\r\n this.lastScrollTopIndex = lastScrollTopIndex;\r\n }\r\n }\r\n this.open.emit();\r\n }\r\n\r\n if (this.isOpen && !this._clickDetection) {\r\n setTimeout(() => {\r\n window.document.body.addEventListener('click', this._clickDetectionFc, false);\r\n this._clickDetection = true;\r\n }, timeout);\r\n }\r\n\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n\r\n private clickDetection(e: MouseEvent) {\r\n if (!this.ifParentContainsClass(e.target as HTMLElement, 'selection')) {\r\n if (this.isOpen && !this.ifParentContainsClass(e.target as HTMLElement, 'select2-dropdown')) {\r\n this.toggleOpenAndClose();\r\n }\r\n if (!this.ifParentContainsId(e.target as HTMLElement, this._id)) {\r\n this.clickExit();\r\n }\r\n } else if (this.isOpen && !this.ifParentContainsId(e.target as HTMLElement, this._id)) {\r\n this.toggleOpenAndClose();\r\n this.clickExit();\r\n }\r\n }\r\n\r\n private clickExit() {\r\n this.focused = false;\r\n window.document.body.removeEventListener('click', this._clickDetectionFc);\r\n this._clickDetection = false;\r\n }\r\n\r\n private ifParentContainsClass(element: HTMLElement, cssClass: string): boolean {\r\n return this.getParentElementByClass(element, cssClass) !== null;\r\n }\r\n\r\n private ifParentContainsId(element: HTMLElement, id: string): boolean {\r\n return this.getParentElementById(element, id) !== null;\r\n }\r\n\r\n private getParentElementByClass(element: HTMLElement, cssClass: string): HTMLElement | null {\r\n if (this.containClasses(element, cssClass.trim().split(/\\s+/))) {\r\n return element;\r\n }\r\n return element.parentElement\r\n ? this.getParentElementByClass(element.parentElement, cssClass)\r\n : null;\r\n }\r\n\r\n private getParentElementById(element: HTMLElement, id: string): HTMLElement | null {\r\n if (element.id === id) {\r\n return element;\r\n }\r\n return element.parentElement\r\n ? this.getParentElementById(element.parentElement, id)\r\n : null;\r\n }\r\n\r\n private containClasses(element: HTMLElement, cssClasses: string[]): boolean {\r\n if (!element.classList) {\r\n return false;\r\n }\r\n for (const cssClass of cssClasses) {\r\n if (!element.classList.contains(cssClass)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n focusin() {\r\n if (this.disabled) {\r\n return;\r\n }\r\n this.focused = true;\r\n }\r\n\r\n focusout() {\r\n if (this.selectionElement && !this.selectionElement.classList.contains('select2-focused')) {\r\n this.focused = false;\r\n this._onTouched();\r\n }\r\n }\r\n\r\n private moveUp() {\r\n this.hoveringValue = Select2Utils.getPreviousOption(this.filteredData, this.hoveringValue);\r\n\r\n if (this.resultsElement) {\r\n const lastScrollTopIndex = Select2Utils.getLastScrollTopIndex(\r\n this.hoveringValue,\r\n this.resultsElement,\r\n this.filteredData,\r\n this.lastScrollTopIndex\r\n );\r\n if (lastScrollTopIndex !== null) {\r\n this.lastScrollTopIndex = lastScrollTopIndex;\r\n }\r\n }\r\n }\r\n\r\n private moveDown() {\r\n this.hoveringValue = Select2Utils.getNextOption(this.filteredData, this.hoveringValue);\r\n\r\n if (this.resultsElement) {\r\n const lastScrollTopIndex = Select2Utils.getLastScrollTopIndex(\r\n this.hoveringValue,\r\n this.resultsElement,\r\n this.filteredData,\r\n this.lastScrollTopIndex\r\n );\r\n if (lastScrollTopIndex !== null) {\r\n this.lastScrollTopIndex = lastScrollTopIndex;\r\n }\r\n }\r\n }\r\n\r\n private selectByEnter() {\r\n if (this.hoveringValue) {\r\n const option = Select2Utils.getOptionByValue(this.data, this.hoveringValue);\r\n this.select(option);\r\n }\r\n }\r\n\r\n select(option: Select2Option | null) {\r\n let value: any;\r\n if (option !== null) {\r\n if (this.multiple) {\r\n const options = this.option as Select2Option[];\r\n const index = options.findIndex(op => op.value === option.value);\r\n if (index === -1) {\r\n options.push(option);\r\n } else {\r\n options.splice(index, 1);\r\n }\r\n value = (this.option as Select2Option[]).map(op => op.value);\r\n } else {\r\n this.option = option;\r\n this.isOpen = false;\r\n if (this.selectionElement) {\r\n this.selectionElement.focus();\r\n }\r\n value = this.option.value;\r\n }\r\n } else if (this._control) {\r\n this.option = null;\r\n }\r\n\r\n if (this._control) {\r\n\r\n this._onChange(value);\r\n }\r\n this.update.emit(value);\r\n }\r\n\r\n keyDown(e: KeyboardEvent) {\r\n if (e.keyCode === 40) {\r\n this.moveDown();\r\n e.preventDefault();\r\n } else if (e.keyCode === 38) {\r\n this.moveUp();\r\n e.preventDefault();\r\n } else if (e.keyCode === 13) {\r\n this.selectByEnter();\r\n e.preventDefault();\r\n } else if (e.keyCode === 9 && this.isOpen) {\r\n this.toggleOpenAndClose();\r\n this.focused = false;\r\n }\r\n }\r\n\r\n openKey(e: KeyboardEvent) {\r\n if (e.keyCode === 40 || e.keyCode === 38 || e.keyCode === 13) {\r\n this.toggleOpenAndClose();\r\n e.preventDefault();\r\n } else if (e.keyCode === 9) {\r\n this.focused = false;\r\n this._onTouched();\r\n }\r\n }\r\n\r\n trackBy(index: number, item: Select2Option): any {\r\n return item.value;\r\n }\r\n\r\n searchUpdate(e: Event) {\r\n this.searchText = (e.target as HTMLInputElement).value;\r\n }\r\n\r\n isSelected(option: Select2Option) {\r\n return Select2Utils.isSelected(this.option, option, this.multiple);\r\n }\r\n\r\n isDisabled(option: Select2Option) {\r\n return option.disabled ? 'true' : 'false';\r\n }\r\n\r\n removeSelection(e: MouseEvent, option: Select2Option) {\r\n Select2Utils.removeSelection(this.option, option);\r\n\r\n const value = (this.option as Select2Option[]).map(op => op.value);\r\n if (this._control) {\r\n this._onChange(value);\r\n }\r\n this.update.emit(value);\r\n\r\n\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n if (this.isOpen) {\r\n this.focusSearchboxOrResultsElement();\r\n }\r\n }\r\n\r\n /**\r\n * Sets the model value. Implemented as part of ControlValueAccessor.\r\n * @param value\r\n */\r\n writeValue(value: any) {\r\n this._setSelectionByValue(value);\r\n }\r\n\r\n /**\r\n * Saves a callback function to be invoked when the select's value\r\n * changes from user input. Part of the ControlValueAccessor interface\r\n * required to integrate with Angular's core forms API.\r\n *\r\n * @param fn Callback to be triggered when the value changes.\r\n */\r\n registerOnChange(fn: (value: any) => void): void {\r\n this._onChange = fn;\r\n }\r\n\r\n /**\r\n * Saves a callback function to be invoked when the select is blurred\r\n * by the user. Part of the ControlValueAccessor interface required\r\n * to integrate with Angular's core forms API.\r\n *\r\n * @param fn Callback to be triggered when the component has been touched.\r\n */\r\n registerOnTouched(fn: () => {}): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n /**\r\n * Sets whether the component should be disabled.\r\n * Implemented as part of ControlValueAccessor.\r\n * @param isDisabled\r\n */\r\n setDisabledState(isDisabled: boolean) {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n _isErrorState(): boolean {\r\n const isInvalid = this._control && this._control.invalid;\r\n const isTouched = this._control && this._control.touched;\r\n const isSubmitted = (this._parentFormGroup && this._parentFormGroup.submitted) ||\r\n (this._parentForm && this._parentForm.submitted);\r\n\r\n return !!(isInvalid && (isTouched || isSubmitted));\r\n }\r\n\r\n /**\r\n * Sets the selected option based on a value. If no option can be\r\n * found with the designated value, the select trigger is cleared.\r\n */\r\n private _setSelectionByValue(value: any | any[]): void {\r\n if (this.option || (value !== undefined && value !== null)) {\r\n const isArray = Array.isArray(value);\r\n if (this.multiple && value && !isArray) {\r\n throw new Error('Non array value.');\r\n } else if (this.data) {\r\n if (this._control && this.multiple) {\r\n this.option = []; // if value is null, then empty option and return\r\n if (isArray) {\r\n // value is not null. Preselect value\r\n const selectedValues: any = Select2Utils.getOptionsByValue(this.data, value, this.multiple);\r\n selectedValues.map(\r\n item => this.select(item)\r\n );\r\n }\r\n } else {\r\n this.select(Select2Utils.getOptionByValue(this.data, value));\r\n }\r\n } else if (this._control) {\r\n this._control.viewToModelUpdate(value);\r\n }\r\n\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n }\r\n\r\n /** Does some manual dirty checking on the native input `value` property. */\r\n private _dirtyCheckNativeValue() {\r\n const newValue = this.value;\r\n\r\n if (this._previousNativeValue !== newValue) {\r\n this._previousNativeValue = newValue;\r\n this._stateChanges.next();\r\n }\r\n }\r\n\r\n private _coerceBooleanProperty(value: any): boolean {\r\n return value != null && `${value}` !== 'false';\r\n }\r\n\r\n private focusSearchboxOrResultsElement() {\r\n if (!this.isSearchboxHidden) {\r\n if (this.searchInputElement) {\r\n this.searchInputElement.focus();\r\n }\r\n } else {\r\n if (this.resultsElement) {\r\n this.resultsElement.focus();\r\n }\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { Select2 } from './select2.component';\r\nimport { Select2Hint } from './select2-hint.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule\r\n ],\r\n declarations: [\r\n Select2Hint,\r\n Select2\r\n ],\r\n exports: [\r\n FormsModule,\r\n ReactiveFormsModule,\r\n Select2Hint,\r\n Select2\r\n ]\r\n})\r\nexport class Select2Module { }\r\n","/*\r\n * Public API Surface of ng-select2-component\r\n */\r\n\r\nexport * from './lib/select2.component';\r\nexport * from './lib/select2-hint.component';\r\nexport * from './lib/select2-utils';\r\nexport * from './lib/select2.module';\r\n","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error('Cannot find module \"' + req + '\".');\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"./src/$$_lazy_route_resource lazy recursive\";","module.exports = \"\"","module.exports = \"
\\r\\n the source code of the demo\\r\\n

1. options in group ({{value1}})

\\r\\n \\r\\n \\r\\n

2. options ({{value2}})

\\r\\n \\r\\n \\r\\n

3. less options ({{value3}})

\\r\\n \\r\\n \\r\\n

4. disabled ({{value4}})

\\r\\n \\r\\n\\r\\n \\r\\n

5. hide search box ({{value5}})

\\r\\n \\r\\n \\r\\n

6. placeholder ({{value6}})

\\r\\n \\r\\n \\r\\n

7. open and search event ({{value7}})

\\r\\n \\r\\n \\r\\n

9. multiple ({{value9}})

\\r\\n \\r\\n \\r\\n

10. form binding ({{value10}})

\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n

11. material style ({{value11}})

\\r\\n \\r\\n \\r\\n

12. boolean value ({{value12}})

\\r\\n \\r\\n \\r\\n

13. FormControl

\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\"","import { Component } from '@angular/core';\r\nimport { Validators, FormControl, FormBuilder, FormGroup } from '@angular/forms';\r\n\r\nimport { Select2Option, Select2Data } from 'projects/ng-select2-component/src/lib/select2-utils';\r\n\r\nimport { data1, data2, data3, data5, data12 } from './app.data';\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.css']\r\n})\r\nexport class AppComponent {\r\n data1 = data1;\r\n data2 = data2;\r\n data3 = data3;\r\n data4: Select2Data = JSON.parse(JSON.stringify(data3));\r\n data5 = data5;\r\n data6: Select2Data = JSON.parse(JSON.stringify(data3));\r\n data7: Select2Option[] = [];\r\n data9: Select2Data = JSON.parse(JSON.stringify(data1));\r\n data10: Select2Data = JSON.parse(JSON.stringify(data1));\r\n data11: Select2Data = JSON.parse(JSON.stringify(data1));\r\n data12 = data12;\r\n\r\n minCountForSearch = Infinity;\r\n\r\n ctrlForm: FormGroup;\r\n\r\n value1 = 'CA';\r\n value2 = 'CA';\r\n value3 = 'foo';\r\n value4 = 'bar';\r\n value5 = 'foo3';\r\n value6 = '';\r\n value7 = '';\r\n value9: string[] = [];\r\n value10 = 'CA';\r\n value11 = 'CA';\r\n value12 = true;\r\n\r\n fg: FormGroup = new FormGroup({\r\n state: new FormControl()\r\n });\r\n\r\n constructor(private fb: FormBuilder) {\r\n this.ctrlForm = this.fb.group({\r\n test10: new FormControl(null, Validators.required)\r\n });\r\n\r\n this.fg.patchValue(this.formData());\r\n }\r\n\r\n update1(value: string) {\r\n this.value1 = value;\r\n }\r\n\r\n update2(value: string) {\r\n this.value2 = value;\r\n }\r\n\r\n update3(value: string) {\r\n this.value3 = value;\r\n }\r\n\r\n update5(value: string) {\r\n this.value5 = value;\r\n }\r\n\r\n update6(value: string) {\r\n this.value6 = value;\r\n }\r\n\r\n open7() {\r\n this.data7 = JSON.parse(JSON.stringify(data2));\r\n }\r\n\r\n update7(value: string) {\r\n this.value7 = value;\r\n }\r\n\r\n search7(text: string) {\r\n this.data7 = text\r\n ? (JSON.parse(JSON.stringify(data2)) as Select2Option[])\r\n .filter(option => option.label.toLowerCase().indexOf(text.toLowerCase()) > -1)\r\n : JSON.parse(JSON.stringify(data2));\r\n }\r\n\r\n update9(value: string[]) {\r\n this.value9 = value;\r\n }\r\n\r\n reset9() {\r\n this.value9 = ['CA'];\r\n }\r\n\r\n reset10() {\r\n const test10 = this.ctrlForm.get('test10');\r\n if (test10) {\r\n test10.reset();\r\n }\r\n }\r\n\r\n change10() {\r\n const test10 = this.ctrlForm.get('test10');\r\n if (test10) {\r\n test10.setValue('UT');\r\n }\r\n }\r\n\r\n update11(value: string) {\r\n this.value11 = value;\r\n }\r\n\r\n update12(value: boolean) {\r\n this.value12 = value;\r\n }\r\n\r\n resetForm() {\r\n this.fg.reset(this.formData());\r\n }\r\n print() {\r\n console.log('FormControl', this.fg.value);\r\n }\r\n\r\n formData() {\r\n return {\r\n state: ['CA', 'NV']\r\n };\r\n }\r\n}\r\n","import { Select2Data } from 'projects/ng-select2-component/src/lib/select2-utils';\r\n\r\nexport const data1: Select2Data = [\r\n {\r\n label: 'Alaskan/Hawaiian Time Zone',\r\n options: [\r\n { value: 'AK', label: 'Alaska' },\r\n { value: 'HI', label: 'Hawaii', disabled: true }\r\n ]\r\n },\r\n {\r\n label: 'Pacific Time Zone',\r\n options: [\r\n { value: 'CA', label: 'California' },\r\n { value: 'NV', label: 'Nevada' },\r\n { value: 'OR', label: 'Oregon' },\r\n { value: 'WA', label: 'Washington' }\r\n ]\r\n },\r\n {\r\n label: 'Mountain Time Zone',\r\n options: [\r\n { value: 'AZ', label: 'Arizona' },\r\n { value: 'CO', label: 'Colorado' },\r\n { value: 'ID', label: 'Idaho' },\r\n { value: 'MT', label: 'Montana' },\r\n { value: 'NE', label: 'Nebraska' },\r\n { value: 'NM', label: 'New Mexico' },\r\n { value: 'ND', label: 'North Dakota' },\r\n { value: 'UT', label: 'Utah' },\r\n { value: 'WY', label: 'Wyoming' }\r\n ]\r\n },\r\n {\r\n label: 'Central Time Zone',\r\n options: [\r\n { value: 'AL', label: 'Alabama' },\r\n { value: 'AR', label: 'Arkansas' },\r\n { value: 'IL', label: 'Illinois' },\r\n { value: 'IA', label: 'Iowa' },\r\n { value: 'KS', label: 'Kansas' },\r\n { value: 'KY', label: 'Kentucky' },\r\n { value: 'LA', label: 'Louisiana' },\r\n { value: 'MN', label: 'Minnesota' },\r\n { value: 'MS', label: 'Mississippi' },\r\n { value: 'MO', label: 'Missouri' },\r\n { value: 'OK', label: 'Oklahoma' },\r\n { value: 'SD', label: 'South Dakota' },\r\n { value: 'TX', label: 'Texas' },\r\n { value: 'TN', label: 'Tennessee' },\r\n { value: 'WI', label: 'Wisconsin' }\r\n ]\r\n },\r\n {\r\n label: 'Eastern Time Zone',\r\n options: [\r\n { value: 'CT', label: 'Connecticut' },\r\n { value: 'DE', label: 'Delaware' },\r\n { value: 'FL', label: 'Florida' },\r\n { value: 'GA', label: 'Georgia' },\r\n { value: 'IN', label: 'Indiana' },\r\n { value: 'ME', label: 'Maine' },\r\n { value: 'MD', label: 'Maryland' },\r\n { value: 'MA', label: 'Massachusetts' },\r\n { value: 'MI', label: 'Michigan' },\r\n { value: 'NH', label: 'New Hampshire' },\r\n { value: 'NJ', label: 'New Jersey' },\r\n { value: 'NY', label: 'New York' },\r\n { value: 'NC', label: 'North Carolina' },\r\n { value: 'OH', label: 'Ohio' },\r\n { value: 'PA', label: 'Pennsylvania' },\r\n { value: 'RI', label: 'Rhode Island' },\r\n { value: 'SC', label: 'South Carolina' },\r\n { value: 'VT', label: 'Vermont' },\r\n { value: 'VA', label: 'Virginia' },\r\n { value: 'WV', label: 'West Virginia' }\r\n ]\r\n }\r\n];\r\n\r\nexport const data2: Select2Data = [\r\n { value: 'AK', label: 'Alaska' },\r\n { value: 'HI', label: 'Hawaii', disabled: true },\r\n { value: 'CA', label: 'California' },\r\n { value: 'NV', label: 'Nevada' },\r\n { value: 'OR', label: 'Oregon' },\r\n { value: 'WA', label: 'Washington' },\r\n { value: 'AZ', label: 'Arizona' },\r\n { value: 'CO', label: 'Colorado' },\r\n { value: 'ID', label: 'Idaho' },\r\n { value: 'MT', label: 'Montana' },\r\n { value: 'NE', label: 'Nebraska' },\r\n { value: 'NM', label: 'New Mexico' },\r\n { value: 'ND', label: 'North Dakota' },\r\n { value: 'UT', label: 'Utah' },\r\n { value: 'WY', label: 'Wyoming' },\r\n { value: 'AL', label: 'Alabama' },\r\n { value: 'AR', label: 'Arkansas' },\r\n { value: 'IL', label: 'Illinois' },\r\n { value: 'IA', label: 'Iowa' },\r\n { value: 'KS', label: 'Kansas' },\r\n { value: 'KY', label: 'Kentucky' },\r\n { value: 'LA', label: 'Louisiana' },\r\n { value: 'MN', label: 'Minnesota' },\r\n { value: 'MS', label: 'Mississippi' },\r\n { value: 'MO', label: 'Missouri' },\r\n { value: 'OK', label: 'Oklahoma' },\r\n { value: 'SD', label: 'South Dakota' },\r\n { value: 'TX', label: 'Texas' },\r\n { value: 'TN', label: 'Tennessee' },\r\n { value: 'WI', label: 'Wisconsin' },\r\n { value: 'CT', label: 'Connecticut' },\r\n { value: 'DE', label: 'Delaware' },\r\n { value: 'FL', label: 'Florida' },\r\n { value: 'GA', label: 'Georgia' },\r\n { value: 'IN', label: 'Indiana' },\r\n { value: 'ME', label: 'Maine' },\r\n { value: 'MD', label: 'Maryland' },\r\n { value: 'MA', label: 'Massachusetts' },\r\n { value: 'MI', label: 'Michigan' },\r\n { value: 'NH', label: 'New Hampshire' },\r\n { value: 'NJ', label: 'New Jersey' },\r\n { value: 'NY', label: 'New York' },\r\n { value: 'NC', label: 'North Carolina' },\r\n { value: 'OH', label: 'Ohio' },\r\n { value: 'PA', label: 'Pennsylvania' },\r\n { value: 'RI', label: 'Rhode Island' },\r\n { value: 'SC', label: 'South Carolina' },\r\n { value: 'VT', label: 'Vermont' },\r\n { value: 'VA', label: 'Virginia' },\r\n { value: 'WV', label: 'West Virginia' }\r\n];\r\n\r\nexport const data3: Select2Data = [\r\n { value: 'foo', label: 'foo' },\r\n { value: 'bar', label: 'bar' },\r\n { value: 'baz', label: 'baz' }\r\n];\r\n\r\nexport const data5: Select2Data = [\r\n { value: 'foo1', label: 'foo1' },\r\n { value: 'foo2', label: 'foo2' },\r\n { value: 'foo3', label: 'foo3' },\r\n { value: 'foo4', label: 'foo4' },\r\n { value: 'foo5', label: 'foo5' },\r\n { value: 'foo6', label: 'foo6' }\r\n];\r\n\r\nexport const data12: Select2Data = [\r\n { value: true, label: 'true' },\r\n { value: false, label: 'false' }\r\n];\r\n","import { BrowserModule } from '@angular/platform-browser';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { AppComponent } from './app.component';\r\nimport { Select2Module } from 'projects/ng-select2-component/src/public_api';\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent\r\n ],\r\n imports: [\r\n BrowserModule,\r\n FormsModule,\r\n Select2Module\r\n ],\r\n providers: [],\r\n bootstrap: [AppComponent]\r\n})\r\nexport class AppModule { }\r\n","// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build ---prod` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\nexport const environment = {\r\n production: false\r\n};\r\n\r\n/*\r\n * In development mode, to ignore zone related error stack frames such as\r\n * `zone.run`, `zoneDelegate.invokeTask` for easier debugging, you can\r\n * import the following file, but please comment it out in production mode\r\n * because it will have performance impact when throw error\r\n */\r\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule)\r\n .catch(err => console.log(err));\r\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///./projects/ng-select2-component/src/lib/select2-hint.component.ts","webpack:///./projects/ng-select2-component/src/lib/select2-label.component.ts","webpack:///./projects/ng-select2-component/src/lib/select2-utils.ts","webpack:///./projects/ng-select2-component/src/lib/select2.component.html","webpack:///./projects/ng-select2-component/src/lib/select2.component.scss","webpack:///./projects/ng-select2-component/src/lib/select2.component.ts","webpack:///./projects/ng-select2-component/src/lib/select2.module.ts","webpack:///./projects/ng-select2-component/src/public_api.ts","webpack:///./src/$_lazy_route_resource lazy namespace object","webpack:///./src/app/app.component.css","webpack:///./src/app/app.component.html","webpack:///./src/app/app.component.ts","webpack:///./src/app/app.data.ts","webpack:///./src/app/app.module.ts","webpack:///./src/environments/environment.ts","webpack:///./src/main.ts"],"names":[],"mappings":"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","file":"main.js","sourcesContent":["import { Directive } from '@angular/core';\r\n\r\n@Directive({ selector: 'select2-hint' })\r\nexport class Select2Hint { }\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({ selector: 'select2-label' })\r\nexport class Select2Label { }\r\n","export interface Select2Group {\r\n label: string;\r\n options: Select2Option[];\r\n classes?: string;\r\n}\r\n\r\nexport interface Select2Option {\r\n value: Select2Value;\r\n label: string;\r\n disabled?: boolean;\r\n component?: string | Function;\r\n classes?: string;\r\n}\r\n\r\nexport type Select2Value = string | number | boolean;\r\n\r\nexport type Select2UpdateValue = Select2Value | Select2Value[];\r\n\r\nexport type Select2Data = (Select2Group | Select2Option)[];\r\n\r\nexport const timeout = 200;\r\n\r\nconst unicodePatterns: { l: string, s: RegExp }[] = [\r\n { l: 'a', s: /[ⓐaẚàáâầấẫẩãāăằắẵẳȧǡäǟảåǻǎȁȃạậặḁąⱥɐ]/gi },\r\n { l: 'aa', s: /ꜳ/gi },\r\n { l: 'ae', s: /[æǽǣ]/gi },\r\n { l: 'ao', s: /ꜵ/gi },\r\n { l: 'au', s: /ꜷ/gi },\r\n { l: 'av', s: /[ꜹꜻ]/gi },\r\n { l: 'ay', s: /ꜽ/gi },\r\n { l: 'b', s: /[ⓑbḃḅḇƀƃɓ]/gi },\r\n { l: 'c', s: /[ⓒcćĉċčçḉƈȼꜿↄ]/gi },\r\n { l: 'd', s: /[ⓓdḋďḍḑḓḏđƌɖɗꝺ]/gi },\r\n { l: 'dz', s: /[dzdž]/gi },\r\n { l: 'e', s: /[ⓔeèéêềếễểẽēḕḗĕėëẻěȅȇẹệȩḝęḙḛɇɛǝ]/gi },\r\n { l: 'f', s: /[ⓕfḟƒꝼ]/gi },\r\n { l: 'g', s: /[ⓖgǵĝḡğġǧģǥɠꞡᵹꝿ]/gi },\r\n { l: 'h', s: /[ⓗhĥḣḧȟḥḩḫẖħⱨⱶɥ]/gi },\r\n { l: 'hv', s: /ƕ/gi },\r\n { l: 'i', s: /[ⓘiìíîĩīĭİïḯỉǐȉȋịįḭɨı]/gi },\r\n { l: 'j', s: /[ⓙjĵǰɉ]/gi },\r\n { l: 'k', s: /[ⓚkḱǩḳķḵƙⱪꝁꝃꝅꞣ]/gi },\r\n { l: 'l', s: /[ⓛlŀĺľḷḹļḽḻſłƚɫⱡꝉꞁꝇꝆ]/gi },\r\n { l: 'lj', s: /lj/gi },\r\n { l: 'm', s: /[ⓜmḿṁṃɱɯ]/gi },\r\n { l: 'n', s: /[ⓝnǹńñṅňṇņṋṉƞɲʼnꞑꞥ]/gi },\r\n { l: 'nj', s: /nj/gi },\r\n { l: 'o', s: /[ⓞoòóôồốỗổõṍȭṏōṑṓŏȯȱöȫỏőǒȍȏơờớỡởợọộǫǭøǿɔƟꝋꝍɵ]/gi },\r\n { l: 'oi', s: /ƣ/gi },\r\n { l: 'oe', s: /œ/gi },\r\n { l: 'oo', s: /ꝏ/gi },\r\n { l: 'ou', s: /ȣ/gi },\r\n { l: 'p', s: /[ⓟpṕṗƥᵽꝑꝓꝕ]/gi },\r\n { l: 'q', s: /[ⓠqɋꝗꝙ]/gi },\r\n { l: 'r', s: /[ⓡrŕṙřȑȓṛṝŗṟɍɽꝛꞧꞃ]/gi },\r\n { l: 's', s: /[ⓢsßẞśṥŝṡšṧṣṩșşȿꞩꞅẛ]/gi },\r\n { l: 't', s: /[ⓣtṫẗťṭțţṱṯŧƭʈⱦꞇ]/gi },\r\n { l: 'tz', s: /ꜩ/gi },\r\n { l: 'u', s: /[ⓤuùúûũṹūṻŭüǜǘǖǚủůűǔȕȗưừứữửựụṳųṷṵʉ]/gi },\r\n { l: 'v', s: /[ⓥvṽṿʋꝟʌ]/gi },\r\n { l: 'vy', s: /ꝡ/gi },\r\n { l: 'w', s: /[ⓦwẁẃŵẇẅẘẉⱳ]/gi },\r\n { l: 'x', s: /[ⓧxẋẍ]/gi },\r\n { l: 'y', s: /[ⓨyỳýŷỹȳẏÿỷẙỵƴɏỿ]/gi },\r\n { l: 'z', s: /[ⓩzźẑżžẓẕƶȥɀⱬꝣ]/gi }\r\n];\r\n\r\nconst defaultMinCountForSearch = 6;\r\n\r\nexport class Select2Utils {\r\n\r\n private static getScrollUpIndex(data: Select2Data, value: Select2Value) {\r\n let index = 0;\r\n for (const groupOrOption of data) {\r\n const options = (groupOrOption as Select2Group).options;\r\n if (options) {\r\n index++;\r\n const valueIndex = options.findIndex(op => op.value === value);\r\n if (valueIndex !== -1) {\r\n return index + valueIndex;\r\n } else {\r\n index += options.length;\r\n }\r\n } else {\r\n if ((groupOrOption as Select2Option).value === value) {\r\n return index;\r\n } else {\r\n index++;\r\n }\r\n }\r\n }\r\n return 0;\r\n }\r\n\r\n static getOptionByValue(data: Select2Data, value: Select2Value | null | undefined) {\r\n for (const groupOrOption of data) {\r\n const options = (groupOrOption as Select2Group).options;\r\n if (options) {\r\n for (const option of options) {\r\n if (option.value === value) {\r\n return option;\r\n }\r\n }\r\n } else {\r\n if ((groupOrOption as Select2Option).value === value) {\r\n return groupOrOption as Select2Option;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n static getOptionsByValue(\r\n data: Select2Data,\r\n value: Select2UpdateValue | null | undefined,\r\n multiple: boolean | null | undefined\r\n ) {\r\n if (multiple) {\r\n const values: Select2Value[] = Array.isArray(value) ? value : [];\r\n const result: Select2Option[] = [];\r\n for (const v of values) {\r\n const option = Select2Utils.getOptionByValue(data, v);\r\n if (option) {\r\n result.push(option);\r\n }\r\n }\r\n return result;\r\n }\r\n return Select2Utils.getOptionByValue(data, value as Select2Value | null | undefined);\r\n }\r\n\r\n static getFirstAvailableOption(data: Select2Data) {\r\n for (const groupOrOption of data) {\r\n const options = (groupOrOption as Select2Group).options;\r\n if (options) {\r\n for (const option of options) {\r\n if (!option.disabled) {\r\n return option.value;\r\n }\r\n }\r\n } else {\r\n const option = groupOrOption as Select2Option;\r\n if (!option.disabled) {\r\n return option.value;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n private static getOptionsCount(data: Select2Data) {\r\n let count = 0;\r\n for (const groupOrOption of data) {\r\n const options = (groupOrOption as Select2Group).options;\r\n if (options) {\r\n count += options.length;\r\n } else {\r\n count++;\r\n }\r\n }\r\n return count;\r\n }\r\n\r\n static valueIsNotInFilteredData(filteredData: Select2Data, value: Select2Value | null | undefined) {\r\n if (Select2Utils.isNullOrUndefined(value)) {\r\n return true;\r\n }\r\n for (const groupOrOption of filteredData) {\r\n const options = (groupOrOption as Select2Group).options;\r\n if (options) {\r\n for (const option of options) {\r\n if (option.value === value) {\r\n return false;\r\n }\r\n }\r\n } else {\r\n if ((groupOrOption as Select2Option).value === value) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n // tslint:disable-next-line:cognitive-complexity\r\n static getPreviousOption(filteredData: Select2Data, hoveringValue: Select2Value | null | undefined) {\r\n let findIt = Select2Utils.isNullOrUndefined(hoveringValue);\r\n for (let i = filteredData.length - 1; i >= 0; i--) {\r\n const groupOrOption = filteredData[i];\r\n const options = (groupOrOption as Select2Group).options;\r\n if (options) {\r\n for (let j = options.length - 1; j >= 0; j--) {\r\n const option = options[j];\r\n if (findIt) {\r\n if (!option.disabled) {\r\n return option.value;\r\n }\r\n }\r\n findIt = option.value === hoveringValue;\r\n }\r\n } else {\r\n const option = groupOrOption as Select2Option;\r\n if (findIt) {\r\n if (!option.disabled) {\r\n return option.value;\r\n }\r\n }\r\n findIt = option.value === hoveringValue;\r\n }\r\n }\r\n return findIt ? hoveringValue : null;\r\n }\r\n // tslint:disable-next-line:cognitive-complexity\r\n static getNextOption(filteredData: Select2Data, hoveringValue: Select2Value | null | undefined) {\r\n let findIt = Select2Utils.isNullOrUndefined(hoveringValue);\r\n for (const groupOrOption of filteredData) {\r\n const options = (groupOrOption as Select2Group).options;\r\n if (options) {\r\n for (const option of options) {\r\n if (findIt) {\r\n if (!option.disabled) {\r\n return option.value;\r\n }\r\n } else {\r\n findIt = option.value === hoveringValue;\r\n }\r\n }\r\n } else {\r\n const option = groupOrOption as Select2Option;\r\n if (findIt) {\r\n if (!option.disabled) {\r\n return option.value;\r\n }\r\n } else {\r\n findIt = option.value === hoveringValue;\r\n }\r\n }\r\n }\r\n return findIt ? hoveringValue : null;\r\n }\r\n\r\n private static isNullOrUndefined(value: any) {\r\n return value === null || value === undefined;\r\n }\r\n\r\n static getLastScrollTopIndex(\r\n hoveringValue: Select2Value | null | undefined,\r\n results: HTMLElement,\r\n filteredData: Select2Data,\r\n lastScrollTopIndex: number\r\n ) {\r\n if (Select2Utils.isNullOrUndefined(hoveringValue)) {\r\n results.scrollTop = 0;\r\n return 0;\r\n } else {\r\n const scrollTop = Select2Utils.getScrollUpIndex(filteredData, hoveringValue!);\r\n if (scrollTop - lastScrollTopIndex > 5) {\r\n lastScrollTopIndex += scrollTop - lastScrollTopIndex - 5;\r\n const item = results.querySelectorAll('li').item(scrollTop);\r\n if (item) {\r\n results.scrollTop = item.offsetTop - results.offsetHeight;\r\n }\r\n return lastScrollTopIndex;\r\n }\r\n if (lastScrollTopIndex - scrollTop > 0) {\r\n lastScrollTopIndex -= lastScrollTopIndex - scrollTop;\r\n const item = results.querySelectorAll('li').item(lastScrollTopIndex - 1);\r\n if (item) {\r\n results.scrollTop = item.offsetTop;\r\n }\r\n return lastScrollTopIndex;\r\n }\r\n return null;\r\n }\r\n }\r\n\r\n private static containSearchText(\r\n label: string,\r\n searchText: string | null,\r\n editPattern: ((str: string) => string) | undefined\r\n ): boolean {\r\n return searchText\r\n ? Select2Utils\r\n .formatSansUnicode(label)\r\n .match(new RegExp(Select2Utils.formatPattern(searchText, editPattern), 'i')) !== null\r\n : true;\r\n }\r\n\r\n private static protectPattern(str: string): string {\r\n return str.replace(new RegExp('[\\\\-\\\\[\\\\]\\\\/\\\\{\\\\}\\\\(\\\\)\\\\*\\\\+\\\\?\\\\.\\\\\\\\\\\\^\\\\$\\\\|]', 'g'), '\\\\$&');\r\n }\r\n\r\n private static formatSansUnicode(str: string): string {\r\n for (const unicodePattern of unicodePatterns) {\r\n str = str.replace(unicodePattern.s, unicodePattern.l);\r\n }\r\n return str;\r\n }\r\n\r\n private static formatPattern(str: string, editPattern: ((str: string) => string) | undefined): string {\r\n str = Select2Utils.formatSansUnicode(Select2Utils.protectPattern(str));\r\n\r\n if (editPattern && typeof editPattern === 'function') {\r\n str = editPattern(str);\r\n }\r\n return str;\r\n }\r\n\r\n static getFilteredData(data: Select2Data, searchText: string | null, editPattern?: (str: string) => string): Select2Data {\r\n if (searchText) {\r\n const result: Select2Data = [];\r\n for (const groupOrOption of data) {\r\n const options = (groupOrOption as Select2Group).options;\r\n if (options) {\r\n if (options.some(group => Select2Utils.containSearchText(group.label, searchText, editPattern))) {\r\n const filteredOptions = options.filter(\r\n group => Select2Utils.containSearchText(group.label, searchText, editPattern)\r\n );\r\n result.push({\r\n label: groupOrOption.label,\r\n options: filteredOptions\r\n });\r\n }\r\n } else if (Select2Utils.containSearchText(groupOrOption.label, searchText, editPattern)) {\r\n result.push(groupOrOption);\r\n }\r\n }\r\n return result;\r\n } else {\r\n return data;\r\n }\r\n }\r\n\r\n static getOptionStyle(value: Select2Value, hoveringValue: Select2Value | null | undefined) {\r\n return value === hoveringValue\r\n ? 'select2-results__option select2-results__option--highlighted'\r\n : 'select2-results__option';\r\n }\r\n\r\n static getDropdownStyle(isOpen: boolean) {\r\n return isOpen\r\n ? 'select2-container select2-container--default select2-container-dropdown select2-container--open'\r\n : 'select2-container select2-container--default select2-container-dropdown';\r\n }\r\n\r\n static getContainerStyle(disabled: boolean | undefined, isOpen: boolean) {\r\n return `select2 select2-container select2-container--default ${disabled ? 'select2-container--disabled' : ''} `\r\n + `${isOpen ? 'select2-container--open' : ''} select2-container--below select2-container--focus`;\r\n }\r\n\r\n static getSelectionStyle(multiple: boolean | undefined) {\r\n return `select2-selection select2-selection--${multiple ? 'multiple' : 'single'}`;\r\n }\r\n\r\n\r\n static isSearchboxHiddex(data: Select2Data, minCountForSearch?: number) {\r\n if (typeof minCountForSearch !== 'number') {\r\n minCountForSearch = defaultMinCountForSearch;\r\n }\r\n const optionCount = Select2Utils.getOptionsCount(data);\r\n return optionCount < minCountForSearch;\r\n }\r\n\r\n static getSearchStyle(isHidden: boolean) {\r\n return isHidden\r\n ? 'select2-search select2-search--dropdown select2-search--hide'\r\n : 'select2-search select2-search--dropdown';\r\n }\r\n\r\n static isSelected(\r\n options: Select2Option | Select2Option[] | null,\r\n option: Select2Option,\r\n multiple: boolean | null | undefined\r\n ) {\r\n if (multiple) {\r\n return options && (options as Select2Option[]).some(op => op.value === option.value) ? 'true' : 'false';\r\n } else {\r\n return options && option.value === (options as Select2Option).value ? 'true' : 'false';\r\n }\r\n }\r\n\r\n static removeSelection(options: Select2Option | Select2Option[] | null, option: Select2Option) {\r\n for (let i = 0; i < (options as Select2Option[]).length; i++) {\r\n if ((options as Select2Option[])[i].value === option.value) {\r\n (options as Select2Option[]).splice(i, 1);\r\n return;\r\n }\r\n }\r\n }\r\n}\r\n","module.exports = \"
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n  \\r\\n {{select2Option.label}}\\r\\n {{placeholder}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n 0\\\"\\r\\n class=\\\"select2-selection__placeholder\\\">{{placeholder}}\\r\\n
  • \\r\\n ×\\r\\n {{op.label}}\\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
    \\r\\n \\r\\n
  • \\r\\n {{groupOrOption.label}}\\r\\n
      \\r\\n
    • {{option.label}}
    • \\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n {{groupOrOption.label}}\\r\\n
  • \\r\\n
    \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","module.exports = \".select2-container {\\n box-sizing: border-box;\\n display: inline-block;\\n margin: 0;\\n position: relative;\\n vertical-align: middle;\\n width: 100%; }\\n .select2-container .select2-container-dropdown {\\n position: absolute;\\n width: 0px; }\\n .select2-container .select2-selection--single {\\n box-sizing: border-box;\\n cursor: pointer;\\n display: block;\\n height: 28px;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none; }\\n .select2-container .select2-selection--single .select2-selection__rendered {\\n display: block;\\n padding-left: 8px;\\n padding-right: 20px;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap; }\\n .select2-container .select2-selection--single .select2-selection__clear {\\n position: relative; }\\n .select2-container .select2-selection--multiple {\\n box-sizing: border-box;\\n cursor: pointer;\\n display: block;\\n min-height: 32px;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none; }\\n .select2-container .select2-selection--multiple .select2-selection__rendered {\\n display: inline-block;\\n overflow: hidden;\\n padding-left: 8px;\\n text-overflow: ellipsis;\\n white-space: nowrap; }\\n .select2-container .select2-search--inline {\\n float: left; }\\n .select2-container .select2-search--inline .select2-search__field {\\n box-sizing: border-box;\\n border: none;\\n font-size: 100%;\\n margin-top: 5px;\\n padding: 0; }\\n .select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button {\\n -webkit-appearance: none; }\\n .select2-dropdown {\\n background-color: white;\\n border: 1px solid #aaa;\\n border-radius: 4px;\\n box-sizing: border-box;\\n display: block;\\n position: absolute;\\n left: -100000px;\\n width: 100%;\\n z-index: 1051; }\\n .select2-results {\\n display: block; }\\n .select2-results__options {\\n list-style: none;\\n margin: 0;\\n padding: 0; }\\n .select2-results__option {\\n padding: 6px;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none; }\\n .select2-results__option[aria-selected] {\\n cursor: pointer; }\\n .select2-container.select2-container-dropdown.select2-container--open {\\n width: 100%; }\\n .select2-container--open .select2-dropdown {\\n left: 0; }\\n .select2-container--open .select2-dropdown--above {\\n border-bottom: none;\\n border-bottom-left-radius: 0;\\n border-bottom-right-radius: 0; }\\n .select2-container--open .select2-dropdown--below {\\n border-top: none;\\n border-top-left-radius: 0;\\n border-top-right-radius: 0; }\\n .select2-search--dropdown {\\n display: block;\\n padding: 4px; }\\n .select2-search--dropdown .select2-search__field {\\n padding: 4px;\\n width: 100%;\\n box-sizing: border-box; }\\n .select2-search--dropdown .select2-search__field::-webkit-search-cancel-button {\\n -webkit-appearance: none; }\\n .select2-search--dropdown.select2-search--hide {\\n display: none; }\\n .select2-close-mask {\\n border: 0;\\n margin: 0;\\n padding: 0;\\n display: block;\\n position: fixed;\\n left: 0;\\n top: 0;\\n min-height: 100%;\\n min-width: 100%;\\n height: auto;\\n width: auto;\\n opacity: 0;\\n z-index: 99;\\n background-color: #fff;\\n filter: alpha(opacity=0); }\\n .select2-hidden-accessible {\\n border: 0 !important;\\n clip: rect(0 0 0 0) !important;\\n height: 1px !important;\\n margin: -1px !important;\\n overflow: hidden !important;\\n padding: 0 !important;\\n position: absolute !important;\\n width: 1px !important; }\\n .select2-container--default .select2-selection--single {\\n background-color: #fff;\\n border: 1px solid #aaa;\\n border-radius: 4px; }\\n .select2-container--default .select2-selection--single .select2-selection__rendered {\\n color: #444;\\n line-height: 28px; }\\n .select2-container--default .select2-selection--single .select2-selection__clear {\\n cursor: pointer;\\n float: right;\\n font-weight: bold; }\\n .select2-container--default .select2-selection--single .select2-selection__placeholder {\\n color: #999; }\\n .select2-container--default .select2-selection--single .select2-selection__placeholder__option {\\n display: none; }\\n .select2-container--default .select2-selection--single .select2-selection__arrow {\\n height: 26px;\\n position: absolute;\\n top: 1px;\\n right: 1px;\\n width: 20px; }\\n .select2-container--default .select2-selection--single .select2-selection__arrow b {\\n border-color: #888 transparent;\\n border-style: solid;\\n border-width: 5px 4px 0;\\n height: 0;\\n left: 50%;\\n margin-left: -4px;\\n margin-top: -2px;\\n position: absolute;\\n top: 50%;\\n width: 0; }\\n .select2-container--default.select2-container--disabled .select2-selection--single {\\n background-color: #eee;\\n cursor: default; }\\n .select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear {\\n display: none; }\\n .select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b {\\n border-color: transparent transparent #888;\\n border-width: 0 4px 5px; }\\n .select2-container--default .select2-selection--multiple {\\n background-color: white;\\n border: 1px solid #aaa;\\n border-radius: 4px;\\n cursor: text; }\\n .select2-container--default .select2-selection--multiple .select2-selection__rendered {\\n box-sizing: border-box;\\n list-style: none;\\n margin: 0;\\n padding: 0 5px;\\n width: 100%; }\\n .select2-container--default .select2-selection--multiple .select2-selection__rendered li {\\n list-style: none; }\\n .select2-container--default .select2-selection--multiple .select2-selection__placeholder {\\n color: #999;\\n margin-top: 5px;\\n float: left; }\\n .select2-container--default .select2-selection--multiple .select2-selection__placeholder__option {\\n display: none; }\\n .select2-container--default .select2-selection--multiple .select2-selection__clear {\\n cursor: pointer;\\n float: right;\\n font-weight: bold;\\n margin-top: 5px;\\n margin-right: 10px; }\\n .select2-container--default .select2-selection--multiple .select2-selection__choice {\\n background-color: #e4e4e4;\\n border: 1px solid #aaa;\\n border-radius: 4px;\\n cursor: default;\\n float: left;\\n margin-right: 5px;\\n margin-top: 5px;\\n padding: 0 5px; }\\n .select2-container--default .select2-selection--multiple .select2-selection__choice__remove {\\n color: #999;\\n cursor: pointer;\\n display: inline-block;\\n font-weight: bold;\\n margin-right: 2px; }\\n .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {\\n color: #333; }\\n .select2-container--default.select2-container--focused .select2-selection--multiple {\\n border: solid black 1px;\\n outline: 0; }\\n .select2-container--default:not(.select2-container--open) .select2-focused .select2-selection--single,\\n.select2-container--default:not(.select2-container--open) .select2-focused .select2-selection--multiple {\\n border: solid black 1px;\\n outline: 0; }\\n .select2-container--default.select2-container--disabled .select2-selection--multiple {\\n background-color: #eee;\\n cursor: default; }\\n .select2-container--default.select2-container--disabled .select2-selection__choice__remove {\\n display: none; }\\n .select2-container--default.select2-container--open.select2-container--above .select2-selection--single,\\n.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple {\\n border-top-left-radius: 0;\\n border-top-right-radius: 0; }\\n .select2-container--default.select2-container--open.select2-container--below .select2-selection--single,\\n.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple {\\n border-bottom-left-radius: 0;\\n border-bottom-right-radius: 0; }\\n .select2-container--default .select2-search--dropdown .select2-search__field {\\n border: 1px solid #aaa; }\\n .select2-container--default .select2-search--inline .select2-search__field {\\n background: transparent;\\n border: none;\\n outline: 0;\\n box-shadow: none;\\n -webkit-appearance: textfield; }\\n .select2-container--default .select2-results > .select2-results__options {\\n max-height: 200px;\\n overflow-y: auto; }\\n .select2-container--default .select2-results__option[role=group] {\\n padding: 0; }\\n .select2-container--default .select2-results__option[aria-disabled=true] {\\n color: #999; }\\n .select2-container--default .select2-results__option[aria-selected=true] {\\n background-color: #ddd; }\\n .select2-container--default .select2-results__option .select2-results__option {\\n padding-left: 1em; }\\n .select2-container--default .select2-results__option .select2-results__option .select2-results__group {\\n padding-left: 0; }\\n .select2-container--default .select2-results__option .select2-results__option .select2-results__option {\\n margin-left: -1em;\\n padding-left: 2em; }\\n .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option {\\n margin-left: -2em;\\n padding-left: 3em; }\\n .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {\\n margin-left: -3em;\\n padding-left: 4em; }\\n .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {\\n margin-left: -4em;\\n padding-left: 5em; }\\n .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {\\n margin-left: -5em;\\n padding-left: 6em; }\\n .select2-container--default .select2-results__option--highlighted[aria-selected] {\\n background-color: #5897fb;\\n color: white; }\\n .select2-container--default .select2-results__group {\\n cursor: default;\\n display: block;\\n padding: 6px;\\n color: gray; }\\n /* stylelint-disable-next-line selector-type-no-unknown */\\n :host.material {\\n display: inline-block;\\n width: 300px; }\\n :host.material > .select2-container {\\n padding-bottom: 1.29688em;\\n vertical-align: inherit; }\\n :host.material > .select2-container .selection {\\n padding: 0.4375em 0;\\n border-top: 0.84375em solid transparent;\\n display: inline-flex;\\n align-items: baseline;\\n width: 100%;\\n height: auto; }\\n :host.material .select2-container--default .select2-selection--single,\\n :host.material .select2-container--default .select2-selection--multiple {\\n width: 100%;\\n border: 0;\\n border-radius: 0;\\n height: 24px;\\n box-sizing: border-box; }\\n :host.material .select2-container--default .select2-selection--single::before,\\n :host.material .select2-container--default .select2-selection--multiple::before {\\n content: ' ';\\n display: block;\\n position: absolute;\\n bottom: 1.65em;\\n background-color: #ddd;\\n height: 1px;\\n width: 100%; }\\n :host.material .select2-container--default .select2-selection--single::after,\\n :host.material .select2-container--default .select2-selection--multiple::after {\\n content: ' ';\\n display: block;\\n position: absolute;\\n bottom: 1.63em;\\n background-color: #5a419e;\\n height: 2px;\\n width: 0%;\\n left: 50%;\\n transition: none; }\\n :host.material .select2-container--default .select2-selection--single .select2-selection__rendered,\\n :host.material .select2-container--default .select2-selection--multiple .select2-selection__rendered {\\n padding-left: 1px;\\n line-height: inherit; }\\n :host.material .select2-container--default .select2-selection--single .select2-selection__placeholder,\\n :host.material .select2-container--default .select2-selection--multiple .select2-selection__placeholder {\\n display: block;\\n color: rgba(0, 0, 0, 0.38);\\n transition: -webkit-transform 0.3s;\\n transition: transform 0.3s;\\n transition: transform 0.3s, -webkit-transform 0.3s;\\n position: absolute;\\n -webkit-transform-origin: 0 21px;\\n transform-origin: 0 21px;\\n left: 0;\\n top: 20px; }\\n :host.material .select2-container--default .select2-container--open {\\n left: 0;\\n bottom: 1.6em; }\\n :host.material .select2-container--default .select2-selection__placeholder__option {\\n -webkit-transform: translateY(-1.5em) scale(0.75) perspective(100px) translateZ(0.001px);\\n transform: translateY(-1.5em) scale(0.75) perspective(100px) translateZ(0.001px);\\n width: 133.33333%; }\\n :host.material .select2-container--default .select2-selection__arrow {\\n top: 20px; }\\n :host.material .select2-container--default.select2-container--open .select2-selection--single::after,\\n :host.material .select2-container--default.select2-container--open .select2-selection--multiple::after,\\n :host.material .select2-container--default .select2-focused .select2-selection--single::after,\\n :host.material .select2-container--default .select2-focused .select2-selection--multiple::after {\\n transition: width 0.3s cubic-bezier(0.12, 1, 0.77, 1), left 0.3s cubic-bezier(0.12, 1, 0.77, 1);\\n width: 100%;\\n left: 0%; }\\n :host.material .select2-container--default .select2-dropdown {\\n border-radius: 0;\\n border: 0;\\n box-shadow: 0 5px 5px rgba(0, 0, 0, 0.5); }\\n :host.material .select2-container--default .select2-results__option[aria-selected=true],\\n :host.material .select2-container--default .select2-results__option--highlighted[aria-selected] {\\n background-color: rgba(0, 0, 0, 0.04);\\n color: #000; }\\n :host.material .select2-container--default .select2-results__option[aria-selected=true] {\\n color: #ff5722; }\\n :host.material .select2-container--default.select2-container--disabled .select2-selection--single,\\n :host.material .select2-container--default.select2-container--disabled .select2-selection--multiple {\\n background-color: transparent; }\\n :host.material .select2-container--default.select2-container--disabled .select2-selection--single::before,\\n :host.material .select2-container--default.select2-container--disabled .select2-selection--multiple::before {\\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.26) 0, rgba(0, 0, 0, 0.26) 33%, transparent 0);\\n background-size: 4px 1px;\\n background-repeat: repeat-x;\\n background-color: transparent;\\n background-position: 0 bottom; }\\n :host.material.ng-invalid.ng-touched .select2-container--default .select2-selection--single::before, :host.material.ng-invalid.ng-touched .select2-container--default .select2-selection--single::after,\\n :host.material.ng-invalid.ng-touched .select2-container--default .select2-selection--multiple::before,\\n :host.material.ng-invalid.ng-touched .select2-container--default .select2-selection--multiple::after {\\n background-color: red; }\\n :host.material:not(.select2-container--open) .select2-focused .select2-selection--single,\\n :host.material:not(.select2-container--open) .select2-focused .select2-selection--multiple {\\n border: 0; }\\n :host.material .select2-subscript-wrapper {\\n position: absolute;\\n top: calc(100% - 1.72917em);\\n font-size: 75%; }\\n /* stylelint-disable selector-type-no-unknown */\\n @supports (-moz-appearance: none) {\\n select2.material .select2-container--default .select2-selection--single,\\n select2.material .select2-container--default .select2-selection--multiple {\\n height: 26px; } }\\n @supports (-ms-scroll-limit: 0) {\\n select2.material .select2-container--default .select2-selection--single,\\n select2.material .select2-container--default .select2-selection--multiple {\\n height: 25px; } }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInByb2plY3RzL25nLXNlbGVjdDItY29tcG9uZW50L3NyYy9saWIvYzpcXERhdGFcXHNvdXJjZXMtc3ZuXFxwaXRjaFxcbmctc2VsZWN0Mi9wcm9qZWN0c1xcbmctc2VsZWN0Mi1jb21wb25lbnRcXHNyY1xcbGliXFxzZWxlY3QyLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0ksdUJBQXNCO0VBQ3RCLHNCQUFxQjtFQUNyQixVQUFTO0VBQ1QsbUJBQWtCO0VBQ2xCLHVCQUFzQjtFQUN0QixZQUFXLEVBMkRkO0VBakVEO0lBU1EsbUJBQWtCO0lBQ2xCLFdBQVUsRUFDYjtFQVhMO0lBY1EsdUJBQXNCO0lBQ3RCLGdCQUFlO0lBQ2YsZUFBYztJQUNkLGFBQVk7SUFDWiwwQkFBaUI7T0FBakIsdUJBQWlCO1FBQWpCLHNCQUFpQjtZQUFqQixrQkFBaUIsRUFjcEI7RUFoQ0w7TUFxQlksZUFBYztNQUNkLGtCQUFpQjtNQUNqQixvQkFBbUI7TUFDbkIsaUJBQWdCO01BQ2hCLHdCQUF1QjtNQUN2QixvQkFBbUIsRUFDdEI7RUEzQlQ7TUE4QlksbUJBQWtCLEVBQ3JCO0VBL0JUO0lBbUNRLHVCQUFzQjtJQUN0QixnQkFBZTtJQUNmLGVBQWM7SUFDZCxpQkFBZ0I7SUFDaEIsMEJBQWlCO09BQWpCLHVCQUFpQjtRQUFqQixzQkFBaUI7WUFBakIsa0JBQWlCLEVBU3BCO0VBaERMO01BMENZLHNCQUFxQjtNQUNyQixpQkFBZ0I7TUFDaEIsa0JBQWlCO01BQ2pCLHdCQUF1QjtNQUN2QixvQkFBbUIsRUFDdEI7RUEvQ1Q7SUFtRFEsWUFBVyxFQWFkO0VBaEVMO01Bc0RZLHVCQUFzQjtNQUN0QixhQUFZO01BQ1osZ0JBQWU7TUFDZixnQkFBZTtNQUNmLFdBQVUsRUFLYjtFQS9EVDtRQTZEZ0IseUJBQXdCLEVBQzNCO0VBS2I7RUFDSSx3QkFBdUI7RUFDdkIsdUJBQXNCO0VBQ3RCLG1CQUFrQjtFQUNsQix1QkFBc0I7RUFDdEIsZUFBYztF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SUFFSSxhQUFZLEVBQ2YsRUFBQSIsImZpbGUiOiJwcm9qZWN0cy9uZy1zZWxlY3QyLWNvbXBvbmVudC9zcmMvbGliL3NlbGVjdDIuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuc2VsZWN0Mi1jb250YWluZXIge1xyXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIG1hcmdpbjogMDtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuXHJcbiAgICAuc2VsZWN0Mi1jb250YWluZXItZHJvcGRvd24ge1xyXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICB3aWR0aDogMHB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIHtcclxuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICBoZWlnaHQ6IDI4cHg7XHJcbiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XHJcblxyXG4gICAgICAgIC5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWQge1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiA4cHg7XHJcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7XHJcbiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICAgICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG4gICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLnNlbGVjdDItc2VsZWN0aW9uX19jbGVhciB7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLnNlbGVjdDItc2VsZWN0aW9uLS1tdWx0aXBsZSB7XHJcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgbWluLWhlaWdodDogMzJweDtcclxuICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTtcclxuXHJcbiAgICAgICAgLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCB7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiA4cHg7XHJcbiAgICAgICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG4gICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuc2VsZWN0Mi1zZWFyY2gtLWlubGluZSB7XHJcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XHJcblxyXG4gICAgICAgIC5zZWxlY3QyLXNlYXJjaF9fZmllbGQge1xyXG4gICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgICAgICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTAwJTtcclxuICAgICAgICAgICAgbWFyZ2luLXRvcDogNXB4O1xyXG4gICAgICAgICAgICBwYWRkaW5nOiAwO1xyXG5cclxuICAgICAgICAgICAgJjo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbiB7XHJcbiAgICAgICAgICAgICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbi5zZWxlY3QyLWRyb3Bkb3duIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgI2FhYTtcclxuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIGxlZnQ6IC0xMDAwMDBweDtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgei1pbmRleDogMTA1MTtcclxufVxyXG5cclxuLnNlbGVjdDItcmVzdWx0cyB7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxufVxyXG5cclxuLnNlbGVjdDItcmVzdWx0c19fb3B0aW9ucyB7XHJcbiAgICBsaXN0LXN0eWxlOiBub25lO1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgcGFkZGluZzogMDtcclxufVxyXG5cclxuLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uIHtcclxuICAgIHBhZGRpbmc6IDZweDtcclxuICAgIHVzZXItc2VsZWN0OiBub25lO1xyXG5cclxuICAgICZbYXJpYS1zZWxlY3RlZF0ge1xyXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIH1cclxufVxyXG5cclxuLnNlbGVjdDItY29udGFpbmVyLnNlbGVjdDItY29udGFpbmVyLWRyb3Bkb3duLnNlbGVjdDItY29udGFpbmVyLS1vcGVuIHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4uc2VsZWN0Mi1jb250YWluZXItLW9wZW4gLnNlbGVjdDItZHJvcGRvd24ge1xyXG4gICAgbGVmdDogMDtcclxufVxyXG5cclxuLnNlbGVjdDItY29udGFpbmVyLS1vcGVuIC5zZWxlY3QyLWRyb3Bkb3duLS1hYm92ZSB7XHJcbiAgICBib3JkZXItYm90dG9tOiBub25lO1xyXG4gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcclxuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xyXG59XHJcblxyXG4uc2VsZWN0Mi1jb250YWluZXItLW9wZW4gLnNlbGVjdDItZHJvcGRvd24tLWJlbG93IHtcclxuICAgIGJvcmRlci10b3A6IG5vbmU7XHJcbiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwO1xyXG4gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XHJcbn1cclxuXHJcbi5zZWxlY3QyLXNlYXJjaC0tZHJvcGRvd24ge1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICBwYWRkaW5nOiA0cHg7XHJcblxyXG4gICAgLnNlbGVjdDItc2VhcmNoX19maWVsZCB7XHJcbiAgICAgICAgcGFkZGluZzogNHB4O1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcblxyXG4gICAgICAgICY6Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24ge1xyXG4gICAgICAgICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICYuc2VsZWN0Mi1zZWFyY2gtLWhpZGUge1xyXG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICB9XHJcbn1cclxuXHJcbi5zZWxlY3QyLWNsb3NlLW1hc2sge1xyXG4gICAgYm9yZGVyOiAwO1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgcGFkZGluZzogMDtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgbGVmdDogMDtcclxuICAgIHRvcDogMDtcclxuICAgIG1pbi1oZWlnaHQ6IDEwMCU7XHJcbiAgICBtaW4td2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IGF1dG87XHJcbiAgICB3aWR0aDogYXV0bztcclxuICAgIG9wYWNpdHk6IDA7XHJcbiAgICB6LWluZGV4OiA5OTtcclxuXHJcbiAgICAvLyBzdHlsZXMgcmVxdWlyZWQgZm9yIElFIHRvIHdvcmtcclxuXHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xyXG4gICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5ID0gMCk7XHJcbn1cclxuXHJcbi5zZWxlY3QyLWhpZGRlbi1hY2Nlc3NpYmxlIHtcclxuICAgIGJvcmRlcjogMCAhaW1wb3J0YW50O1xyXG4gICAgY2xpcDogcmVjdCgwIDAgMCAwKSAhaW1wb3J0YW50O1xyXG4gICAgaGVpZ2h0OiAxcHggIWltcG9ydGFudDtcclxuICAgIG1hcmdpbjogLTFweCAhaW1wb3J0YW50O1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50O1xyXG4gICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XHJcbiAgICB3aWR0aDogMXB4ICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCB7XHJcbiAgICAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcclxuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjYWFhO1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcclxuXHJcbiAgICAgICAgLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCB7XHJcbiAgICAgICAgICAgIGNvbG9yOiAjNDQ0O1xyXG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMjhweDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5zZWxlY3QyLXNlbGVjdGlvbl9fY2xlYXIge1xyXG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgICAgICAgIGZsb2F0OiByaWdodDtcclxuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuc2VsZWN0Mi1zZWxlY3Rpb25fX3BsYWNlaG9sZGVyIHtcclxuICAgICAgICAgICAgY29sb3I6ICM5OTk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuc2VsZWN0Mi1zZWxlY3Rpb25fX3BsYWNlaG9sZGVyX19vcHRpb24ge1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLnNlbGVjdDItc2VsZWN0aW9uX19hcnJvdyB7XHJcbiAgICAgICAgICAgIGhlaWdodDogMjZweDtcclxuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgICAgICB0b3A6IDFweDtcclxuICAgICAgICAgICAgcmlnaHQ6IDFweDtcclxuICAgICAgICAgICAgd2lkdGg6IDIwcHg7XHJcblxyXG4gICAgICAgICAgICBiIHtcclxuICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogIzg4OCB0cmFuc3BhcmVudDtcclxuICAgICAgICAgICAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XHJcbiAgICAgICAgICAgICAgICBib3JkZXItd2lkdGg6IDVweCA0cHggMDtcclxuICAgICAgICAgICAgICAgIGhlaWdodDogMDtcclxuICAgICAgICAgICAgICAgIGxlZnQ6IDUwJTtcclxuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAtNHB4O1xyXG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogLTJweDtcclxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICAgICAgICAgIHRvcDogNTAlO1xyXG4gICAgICAgICAgICAgICAgd2lkdGg6IDA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgJi5zZWxlY3QyLWNvbnRhaW5lci0tZGlzYWJsZWQge1xyXG4gICAgICAgIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTtcclxuICAgICAgICAgICAgY3Vyc29yOiBkZWZhdWx0O1xyXG5cclxuICAgICAgICAgICAgLnNlbGVjdDItc2VsZWN0aW9uX19jbGVhciB7XHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICYuc2VsZWN0Mi1jb250YWluZXItLW9wZW4ge1xyXG4gICAgICAgIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIHtcclxuICAgICAgICAgICAgLnNlbGVjdDItc2VsZWN0aW9uX19hcnJvdyB7XHJcbiAgICAgICAgICAgICAgICBiIHtcclxuICAgICAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICM4ODg7XHJcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXdpZHRoOiAwIDRweCA1cHg7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLnNlbGVjdDItc2VsZWN0aW9uLS1tdWx0aXBsZSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XHJcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2FhYTtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7XHJcbiAgICAgICAgY3Vyc29yOiB0ZXh0O1xyXG5cclxuICAgICAgICAuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkIHtcclxuICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgICAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcclxuICAgICAgICAgICAgbWFyZ2luOiAwO1xyXG4gICAgICAgICAgICBwYWRkaW5nOiAwIDVweDtcclxuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XHJcblxyXG4gICAgICAgICAgICBsaSB7XHJcbiAgICAgICAgICAgICAgICBsaXN0LXN0eWxlOiBub25lO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuc2VsZWN0Mi1zZWxlY3Rpb25fX3BsYWNlaG9sZGVyIHtcclxuICAgICAgICAgICAgY29sb3I6ICM5OTk7XHJcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDVweDtcclxuICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuc2VsZWN0Mi1zZWxlY3Rpb25fX3BsYWNlaG9sZGVyX19vcHRpb24ge1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLnNlbGVjdDItc2VsZWN0aW9uX19jbGVhciB7XHJcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgICAgICAgZmxvYXQ6IHJpZ2h0O1xyXG4gICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgICAgICAgICAgbWFyZ2luLXRvcDogNXB4O1xyXG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuc2VsZWN0Mi1zZWxlY3Rpb25fX2Nob2ljZSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlNGU0ZTQ7XHJcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNhYWE7XHJcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICAgICAgICAgICAgY3Vyc29yOiBkZWZhdWx0O1xyXG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcclxuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiA1cHg7XHJcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDVweDtcclxuICAgICAgICAgICAgcGFkZGluZzogMCA1cHg7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuc2VsZWN0Mi1zZWxlY3Rpb25fX2Nob2ljZV9fcmVtb3ZlIHtcclxuICAgICAgICAgICAgY29sb3I6ICM5OTk7XHJcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAycHg7XHJcblxyXG4gICAgICAgICAgICAmOmhvdmVyIHtcclxuICAgICAgICAgICAgICAgIGNvbG9yOiAjMzMzO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICYuc2VsZWN0Mi1jb250YWluZXItLWZvY3VzZWQge1xyXG4gICAgICAgIC5zZWxlY3QyLXNlbGVjdGlvbi0tbXVsdGlwbGUge1xyXG4gICAgICAgICAgICBib3JkZXI6IHNvbGlkIGJsYWNrIDFweDtcclxuICAgICAgICAgICAgb3V0bGluZTogMDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgJjpub3QoLnNlbGVjdDItY29udGFpbmVyLS1vcGVuKSAuc2VsZWN0Mi1mb2N1c2VkIHtcclxuICAgICAgICAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSxcclxuICAgICAgICAuc2VsZWN0Mi1zZWxlY3Rpb24tLW11bHRpcGxlIHtcclxuICAgICAgICAgICAgYm9yZGVyOiBzb2xpZCBibGFjayAxcHg7XHJcbiAgICAgICAgICAgIG91dGxpbmU6IDA7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICYuc2VsZWN0Mi1jb250YWluZXItLWRpc2FibGVkIHtcclxuICAgICAgICAuc2VsZWN0Mi1zZWxlY3Rpb24tLW11bHRpcGxlIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTtcclxuICAgICAgICAgICAgY3Vyc29yOiBkZWZhdWx0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLnNlbGVjdDItc2VsZWN0aW9uX19jaG9pY2VfX3JlbW92ZSB7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICYuc2VsZWN0Mi1jb250YWluZXItLW9wZW4uc2VsZWN0Mi1jb250YWluZXItLWFib3ZlIHtcclxuICAgICAgICAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSxcclxuICAgICAgICAuc2VsZWN0Mi1zZWxlY3Rpb24tLW11bHRpcGxlIHtcclxuICAgICAgICAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDtcclxuICAgICAgICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICYuc2VsZWN0Mi1jb250YWluZXItLW9wZW4uc2VsZWN0Mi1jb250YWluZXItLWJlbG93IHtcclxuICAgICAgICAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSxcclxuICAgICAgICAuc2VsZWN0Mi1zZWxlY3Rpb24tLW11bHRpcGxlIHtcclxuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcclxuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5zZWxlY3QyLXNlYXJjaC0tZHJvcGRvd24ge1xyXG4gICAgICAgIC5zZWxlY3QyLXNlYXJjaF9fZmllbGQge1xyXG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjYWFhO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuc2VsZWN0Mi1zZWFyY2gtLWlubGluZSB7XHJcbiAgICAgICAgLnNlbGVjdDItc2VhcmNoX19maWVsZCB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4gICAgICAgICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgICAgICAgIG91dGxpbmU6IDA7XHJcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XHJcbiAgICAgICAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogdGV4dGZpZWxkO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuc2VsZWN0Mi1yZXN1bHRzID4gLnNlbGVjdDItcmVzdWx0c19fb3B0aW9ucyB7XHJcbiAgICAgICAgbWF4LWhlaWdodDogMjAwcHg7XHJcbiAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcclxuICAgIH1cclxuXHJcbiAgICAuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24ge1xyXG4gICAgICAgICZbcm9sZT1ncm91cF0ge1xyXG4gICAgICAgICAgICBwYWRkaW5nOiAwO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJlthcmlhLWRpc2FibGVkPXRydWVdIHtcclxuICAgICAgICAgICAgY29sb3I6ICM5OTk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmW2FyaWEtc2VsZWN0ZWQ9dHJ1ZV0ge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGRkO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uIHtcclxuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAxZW07XHJcblxyXG4gICAgICAgICAgICAuc2VsZWN0Mi1yZXN1bHRzX19ncm91cCB7XHJcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbiB7XHJcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogLTFlbTtcclxuICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMmVtO1xyXG5cclxuICAgICAgICAgICAgICAgIC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IC0yZW07XHJcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAzZW07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAtM2VtO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDRlbTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogLTRlbTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogNWVtO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IC01ZW07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiA2ZW07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1oaWdobGlnaHRlZFthcmlhLXNlbGVjdGVkXSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzU4OTdmYjtcclxuICAgICAgICBjb2xvcjogd2hpdGU7XHJcbiAgICB9XHJcblxyXG4gICAgLnNlbGVjdDItcmVzdWx0c19fZ3JvdXAge1xyXG4gICAgICAgIGN1cnNvcjogZGVmYXVsdDtcclxuICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICBwYWRkaW5nOiA2cHg7XHJcbiAgICAgICAgY29sb3I6IGdyYXk7XHJcbiAgICB9XHJcbn1cclxuXHJcbi8vIG1hdGVyaWFsIHN0eWxlXHJcbi8qIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBzZWxlY3Rvci10eXBlLW5vLXVua25vd24gKi9cclxuOmhvc3QubWF0ZXJpYWwge1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgd2lkdGg6IDMwMHB4O1xyXG5cclxuICAgICYgPiAuc2VsZWN0Mi1jb250YWluZXIge1xyXG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAxLjI5Njg4ZW07XHJcbiAgICAgICAgdmVydGljYWwtYWxpZ246IGluaGVyaXQ7XHJcblxyXG4gICAgICAgIC5zZWxlY3Rpb24ge1xyXG4gICAgICAgICAgICBwYWRkaW5nOiAwLjQzNzVlbSAwO1xyXG4gICAgICAgICAgICBib3JkZXItdG9wOiAwLjg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnQ7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xyXG4gICAgICAgICAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7XHJcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgICAgICBoZWlnaHQ6IGF1dG87XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCB7XHJcbiAgICAgICAgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUsXHJcbiAgICAgICAgLnNlbGVjdDItc2VsZWN0aW9uLS1tdWx0aXBsZSB7XHJcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgICAgICBib3JkZXI6IDA7XHJcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDA7XHJcbiAgICAgICAgICAgIGhlaWdodDogMjRweDtcclxuICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuXHJcbiAgICAgICAgICAgICY6OmJlZm9yZSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZW50OiAnICc7XHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICAgICAgICAgIGJvdHRvbTogMS42NWVtO1xyXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2RkZDtcclxuICAgICAgICAgICAgICAgIGhlaWdodDogMXB4O1xyXG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICY6OmFmdGVyIHtcclxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcgJztcclxuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgICAgICAgICAgYm90dG9tOiAxLjYzZW07XHJcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWE0MTllO1xyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAycHg7XHJcbiAgICAgICAgICAgICAgICB3aWR0aDogMCU7XHJcbiAgICAgICAgICAgICAgICBsZWZ0OiA1MCU7XHJcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBub25lO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkIHtcclxuICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMXB4O1xyXG4gICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC5zZWxlY3QyLXNlbGVjdGlvbl9fcGxhY2Vob2xkZXIge1xyXG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgICAgICAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjM4KTtcclxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzO1xyXG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogMCAyMXB4O1xyXG4gICAgICAgICAgICAgICAgbGVmdDogMDtcclxuICAgICAgICAgICAgICAgIHRvcDogMjBweDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLnNlbGVjdDItY29udGFpbmVyLS1vcGVuIHtcclxuICAgICAgICAgICAgbGVmdDogMDtcclxuICAgICAgICAgICAgYm90dG9tOiAxLjZlbTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5zZWxlY3QyLXNlbGVjdGlvbl9fcGxhY2Vob2xkZXJfX29wdGlvbiB7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMS41ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpO1xyXG4gICAgICAgICAgICB3aWR0aDogMTMzLjMzMzMzJTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5zZWxlY3QyLXNlbGVjdGlvbl9fYXJyb3cge1xyXG4gICAgICAgICAgICB0b3A6IDIwcHg7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmLnNlbGVjdDItY29udGFpbmVyLS1vcGVuLFxyXG4gICAgICAgIC5zZWxlY3QyLWZvY3VzZWQge1xyXG4gICAgICAgICAgICAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZTo6YWZ0ZXIsXHJcbiAgICAgICAgICAgIC5zZWxlY3QyLXNlbGVjdGlvbi0tbXVsdGlwbGU6OmFmdGVyIHtcclxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IHdpZHRoIDAuM3MgY3ViaWMtYmV6aWVyKDAuMTIsIDEsIDAuNzcsIDEpLCBsZWZ0IDAuM3MgY3ViaWMtYmV6aWVyKDAuMTIsIDEsIDAuNzcsIDEpO1xyXG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgICAgICAgICBsZWZ0OiAwJTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLnNlbGVjdDItZHJvcGRvd24ge1xyXG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAwO1xyXG4gICAgICAgICAgICBib3JkZXI6IDA7XHJcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgNXB4IDVweCByZ2JhKDAsIDAsIDAsIDAuNSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb25bYXJpYS1zZWxlY3RlZD10cnVlXSxcclxuICAgICAgICAuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24tLWhpZ2hsaWdodGVkW2FyaWEtc2VsZWN0ZWRdIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjA0KTtcclxuICAgICAgICAgICAgY29sb3I6ICMwMDA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb25bYXJpYS1zZWxlY3RlZD10cnVlXSB7XHJcbiAgICAgICAgICAgIGNvbG9yOiAjZmY1NzIyO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi5zZWxlY3QyLWNvbnRhaW5lci0tZGlzYWJsZWQgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUsXHJcbiAgICAgICAgJi5zZWxlY3QyLWNvbnRhaW5lci0tZGlzYWJsZWQgLnNlbGVjdDItc2VsZWN0aW9uLS1tdWx0aXBsZSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG5cclxuICAgICAgICAgICAgJjo6YmVmb3JlIHtcclxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAwLjI2KSAwLCByZ2JhKDAsIDAsIDAsIDAuMjYpIDMzJSwgdHJhbnNwYXJlbnQgMCk7XHJcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IDRweCAxcHg7XHJcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7XHJcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDAgYm90dG9tO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICYubmctaW52YWxpZC5uZy10b3VjaGVkIC5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSxcclxuICAgICYubmctaW52YWxpZC5uZy10b3VjaGVkIC5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1zZWxlY3Rpb24tLW11bHRpcGxlIHtcclxuICAgICAgICAmOjpiZWZvcmUsXHJcbiAgICAgICAgJjo6YWZ0ZXIge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICY6bm90KC5zZWxlY3QyLWNvbnRhaW5lci0tb3BlbikgLnNlbGVjdDItZm9jdXNlZCB7XHJcbiAgICAgICAgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUsXHJcbiAgICAgICAgLnNlbGVjdDItc2VsZWN0aW9uLS1tdWx0aXBsZSB7XHJcbiAgICAgICAgICAgIGJvcmRlcjogMDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLnNlbGVjdDItc3Vic2NyaXB0LXdyYXBwZXIge1xyXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICB0b3A6IGNhbGMoMTAwJSAtIDEuNzI5MTdlbSk7XHJcbiAgICAgICAgZm9udC1zaXplOiA3NSU7XHJcbiAgICB9XHJcbn1cclxuXHJcbi8vIG1hdGVyaWFsIGZpeCAoZmlyZWZveClcclxuLyogc3R5bGVsaW50LWRpc2FibGUgc2VsZWN0b3ItdHlwZS1uby11bmtub3duICovXHJcbkBzdXBwb3J0cyAoLW1vei1hcHBlYXJhbmNlOiBub25lKSB7XHJcbiAgICBzZWxlY3QyLm1hdGVyaWFsIC5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSxcclxuICAgIHNlbGVjdDIubWF0ZXJpYWwgLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0IC5zZWxlY3QyLXNlbGVjdGlvbi0tbXVsdGlwbGUge1xyXG4gICAgICAgIGhlaWdodDogMjZweDtcclxuICAgIH1cclxufVxyXG5cclxuLy8gbWF0ZXJpYWwgZml4IChtcyBlZGdlKVxyXG5cclxuQHN1cHBvcnRzICgtbXMtc2Nyb2xsLWxpbWl0OiAwKSB7XHJcbiAgICBzZWxlY3QyLm1hdGVyaWFsIC5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSxcclxuICAgIHNlbGVjdDIubWF0ZXJpYWwgLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0IC5zZWxlY3QyLXNlbGVjdGlvbi0tbXVsdGlwbGUge1xyXG4gICAgICAgIGhlaWdodDogMjVweDtcclxuICAgIH1cclxufVxyXG4iXX0= */\"","import {\r\n Component, Input, Output, EventEmitter, ElementRef, ViewChild, Optional, Self, ChangeDetectorRef,\r\n Attribute, OnInit, OnDestroy, DoCheck, AfterViewInit, HostBinding\r\n} from '@angular/core';\r\nimport {\r\n FormGroupDirective, NgControl, NgForm, ControlValueAccessor\r\n} from '@angular/forms';\r\n\r\nimport { Subject } from 'rxjs';\r\n\r\nimport {\r\n Select2Data, Select2Option, Select2Value, Select2Utils, Select2UpdateValue, timeout\r\n} from './select2-utils';\r\n\r\nlet nextUniqueId = 0;\r\n\r\n@Component({\r\n selector: 'select2',\r\n templateUrl: './select2.component.html',\r\n styleUrls: ['./select2.component.scss']\r\n})\r\nexport class Select2 implements ControlValueAccessor, OnInit, OnDestroy, DoCheck, AfterViewInit {\r\n\r\n /** data of options & optiongrps */\r\n @Input() data!: Select2Data;\r\n /** minimal data of show the search field */\r\n @Input() minCountForSearch?: number;\r\n @Input() placeholder?: string;\r\n @Input() customSearchEnabled?: boolean;\r\n @Input() multiple?: boolean;\r\n\r\n /** use the material style */\r\n @Input() material?: '' | true;\r\n\r\n /** use it for change the pattern of the filter search */\r\n @Input() editPattern!: (str: string) => string;\r\n\r\n @Output() update = new EventEmitter();\r\n @Output() open = new EventEmitter();\r\n @Output() search = new EventEmitter();\r\n\r\n option: Select2Option | Select2Option[] | null = null;\r\n isOpen = false;\r\n searchStyle!: string;\r\n\r\n @ViewChild('selection') selection!: ElementRef;\r\n @ViewChild('results') private results!: ElementRef;\r\n @ViewChild('searchInput') private searchInput!: ElementRef;\r\n private hoveringValue: Select2Value | null | undefined = null;\r\n private innerSearchText = '';\r\n private lastScrollTopIndex = 0;\r\n private isSearchboxHidden!: boolean;\r\n private selectionElement!: HTMLElement;\r\n private searchInputElement!: HTMLElement;\r\n private resultsElement!: HTMLElement;\r\n\r\n // tslint:disable:member-ordering\r\n private _stateChanges = new Subject();\r\n\r\n /** Whether the element is focused or not. */\r\n focused = false;\r\n\r\n /** View -> model callback called when select has been touched */\r\n private _onTouched = () => {\r\n // do nothing\r\n }\r\n\r\n /** View -> model callback called when value changes */\r\n private _onChange: (value: any) => void = () => {\r\n // do nothing\r\n }\r\n\r\n get select2Options() {\r\n return this.multiple ? this.option as Select2Option[] : null;\r\n }\r\n get select2Option() {\r\n return this.multiple ? null : this.option as Select2Option;\r\n }\r\n get searchText() {\r\n return this.innerSearchText;\r\n }\r\n set searchText(text: string) {\r\n if (this.customSearchEnabled) {\r\n this.search.emit(text);\r\n }\r\n this.innerSearchText = text;\r\n }\r\n\r\n get dropdownStyle() {\r\n return Select2Utils.getDropdownStyle(this.isOpen);\r\n }\r\n\r\n get filteredData(): Select2Data {\r\n const result = this.customSearchEnabled\r\n ? this.data\r\n : Select2Utils.getFilteredData(this.data, this.searchText, this.editPattern);\r\n\r\n if (Select2Utils.valueIsNotInFilteredData(result, this.hoveringValue)) {\r\n this.hoveringValue = Select2Utils.getFirstAvailableOption(result);\r\n\r\n if (this.resultsElement) {\r\n const lastScrollTopIndex = Select2Utils.getLastScrollTopIndex(\r\n this.hoveringValue,\r\n this.resultsElement,\r\n result,\r\n this.lastScrollTopIndex\r\n );\r\n if (lastScrollTopIndex !== null) {\r\n this.lastScrollTopIndex = lastScrollTopIndex;\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n get containerStyle() {\r\n return Select2Utils.getContainerStyle(this.disabled, this.isOpen);\r\n }\r\n\r\n get selectionStyle() {\r\n return Select2Utils.getSelectionStyle(this.multiple);\r\n }\r\n\r\n /** Unique id of the element. */\r\n @Input()\r\n @HostBinding('id')\r\n get id() { return this._id; }\r\n set id(value: string) { this._id = value || this._uid; }\r\n\r\n /** Whether the element is required. */\r\n @Input()\r\n get required() { return this._required; }\r\n set required(value: any) { this._required = this._coerceBooleanProperty(value); }\r\n\r\n /** Whether the element is disabled. */\r\n @Input()\r\n get disabled() { return this._control ? this._control.disabled : this._disabled; }\r\n set disabled(value: any) { this._disabled = this._coerceBooleanProperty(value); }\r\n\r\n /** Whether the element is readonly. */\r\n @Input()\r\n get readonly() { return this._readonly; }\r\n set readonly(value: any) { this._readonly = this._coerceBooleanProperty(value); }\r\n\r\n /** The input element's value. */\r\n @Input()\r\n get value() { return this._value; }\r\n set value(value: Select2UpdateValue) {\r\n setTimeout(() => {\r\n this._value = value;\r\n this.writeValue(value);\r\n });\r\n }\r\n\r\n /** Tab index for the select2 element. */\r\n @Input()\r\n get tabIndex(): number { return this.disabled ? -1 : this._tabIndex; }\r\n set tabIndex(value: number) {\r\n if (typeof value !== 'undefined') {\r\n this._tabIndex = value;\r\n }\r\n }\r\n\r\n @HostBinding('attr.aria-invalid')\r\n get ariaInvalid() {\r\n return this._isErrorState();\r\n }\r\n\r\n @HostBinding('class.material')\r\n get classMaterial() {\r\n return this.material === '' || this.material === true;\r\n }\r\n\r\n /** Tab index for the element. */\r\n private _tabIndex: number;\r\n\r\n private _disabled = false;\r\n private _required = false;\r\n private _readonly = false;\r\n private _clickDetection = false;\r\n private _clickDetectionFc: (e: MouseEvent) => void;\r\n private _id!: string;\r\n private _uid = `select2-${nextUniqueId++}`;\r\n private _value!: Select2UpdateValue;\r\n private _previousNativeValue: Select2UpdateValue = this._value;\r\n\r\n constructor(\r\n private _changeDetectorRef: ChangeDetectorRef,\r\n @Optional() private _parentForm: NgForm,\r\n @Optional() private _parentFormGroup: FormGroupDirective,\r\n @Self() @Optional() public _control: NgControl,\r\n @Attribute('tabindex') tabIndex: string\r\n ) {\r\n this.id = this.id;\r\n this._tabIndex = parseInt(tabIndex, 10) || 0;\r\n\r\n if (this._control) {\r\n this._control.valueAccessor = this;\r\n }\r\n\r\n this._clickDetectionFc = this.clickDetection.bind(this);\r\n }\r\n\r\n ngOnInit() {\r\n const option = Select2Utils.getOptionsByValue(\r\n this.data,\r\n this._control ? this._control.value : this.value,\r\n this.multiple\r\n );\r\n if (option !== null) {\r\n this.option = option;\r\n }\r\n if (!Array.isArray(option)) {\r\n this.hoveringValue = this.value as string | undefined;\r\n }\r\n this.isSearchboxHidden = this.customSearchEnabled\r\n ? false\r\n : Select2Utils.isSearchboxHiddex(this.data, this.minCountForSearch);\r\n this.searchStyle = Select2Utils.getSearchStyle(this.isSearchboxHidden);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.selectionElement = this.selection.nativeElement as HTMLElement;\r\n this.searchInputElement = this.searchInput.nativeElement as HTMLElement;\r\n this.resultsElement = this.results.nativeElement as HTMLElement;\r\n }\r\n\r\n ngDoCheck() {\r\n this._dirtyCheckNativeValue();\r\n }\r\n\r\n ngOnDestroy() {\r\n window.document.body.removeEventListener('click', this._clickDetectionFc);\r\n }\r\n\r\n getOptionStyle(option: Select2Option) {\r\n return Select2Utils.getOptionStyle(option.value, this.hoveringValue)\r\n + (option.classes ? ' ' + option.classes : '');\r\n }\r\n\r\n mouseenter(option: Select2Option) {\r\n if (!option.disabled) {\r\n this.hoveringValue = option.value;\r\n }\r\n }\r\n\r\n click(option: Select2Option) {\r\n if (!option.disabled) {\r\n this.select(option);\r\n }\r\n }\r\n\r\n toggleOpenAndClose() {\r\n if (this.disabled) {\r\n return;\r\n }\r\n this.focused = true;\r\n this.isOpen = !this.isOpen;\r\n if (this.isOpen) {\r\n this.innerSearchText = '';\r\n this.focusSearchboxOrResultsElement();\r\n\r\n if (this.resultsElement) {\r\n const lastScrollTopIndex = Select2Utils.getLastScrollTopIndex(\r\n this.hoveringValue,\r\n this.resultsElement,\r\n this.data,\r\n this.lastScrollTopIndex\r\n );\r\n if (lastScrollTopIndex !== null) {\r\n this.lastScrollTopIndex = lastScrollTopIndex;\r\n }\r\n }\r\n this.open.emit();\r\n }\r\n\r\n if (this.isOpen && !this._clickDetection) {\r\n setTimeout(() => {\r\n window.document.body.addEventListener('click', this._clickDetectionFc, false);\r\n this._clickDetection = true;\r\n }, timeout);\r\n }\r\n\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n\r\n private clickDetection(e: MouseEvent) {\r\n if (!this.ifParentContainsClass(e.target as HTMLElement, 'selection')) {\r\n if (this.isOpen && !this.ifParentContainsClass(e.target as HTMLElement, 'select2-dropdown')) {\r\n this.toggleOpenAndClose();\r\n }\r\n if (!this.ifParentContainsId(e.target as HTMLElement, this._id)) {\r\n this.clickExit();\r\n }\r\n } else if (this.isOpen && !this.ifParentContainsId(e.target as HTMLElement, this._id)) {\r\n this.toggleOpenAndClose();\r\n this.clickExit();\r\n }\r\n }\r\n\r\n private clickExit() {\r\n this.focused = false;\r\n window.document.body.removeEventListener('click', this._clickDetectionFc);\r\n this._clickDetection = false;\r\n }\r\n\r\n private ifParentContainsClass(element: HTMLElement, cssClass: string): boolean {\r\n return this.getParentElementByClass(element, cssClass) !== null;\r\n }\r\n\r\n private ifParentContainsId(element: HTMLElement, id: string): boolean {\r\n return this.getParentElementById(element, id) !== null;\r\n }\r\n\r\n private getParentElementByClass(element: HTMLElement, cssClass: string): HTMLElement | null {\r\n if (this.containClasses(element, cssClass.trim().split(/\\s+/))) {\r\n return element;\r\n }\r\n return element.parentElement\r\n ? this.getParentElementByClass(element.parentElement, cssClass)\r\n : null;\r\n }\r\n\r\n private getParentElementById(element: HTMLElement, id: string): HTMLElement | null {\r\n if (element.id === id) {\r\n return element;\r\n }\r\n return element.parentElement\r\n ? this.getParentElementById(element.parentElement, id)\r\n : null;\r\n }\r\n\r\n private containClasses(element: HTMLElement, cssClasses: string[]): boolean {\r\n if (!element.classList) {\r\n return false;\r\n }\r\n for (const cssClass of cssClasses) {\r\n if (!element.classList.contains(cssClass)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n focusin() {\r\n if (this.disabled) {\r\n return;\r\n }\r\n this.focused = true;\r\n }\r\n\r\n focusout() {\r\n if (this.selectionElement && !this.selectionElement.classList.contains('select2-focused')) {\r\n this.focused = false;\r\n this._onTouched();\r\n }\r\n }\r\n\r\n private moveUp() {\r\n this.hoveringValue = Select2Utils.getPreviousOption(this.filteredData, this.hoveringValue);\r\n\r\n if (this.resultsElement) {\r\n const lastScrollTopIndex = Select2Utils.getLastScrollTopIndex(\r\n this.hoveringValue,\r\n this.resultsElement,\r\n this.filteredData,\r\n this.lastScrollTopIndex\r\n );\r\n if (lastScrollTopIndex !== null) {\r\n this.lastScrollTopIndex = lastScrollTopIndex;\r\n }\r\n }\r\n }\r\n\r\n private moveDown() {\r\n this.hoveringValue = Select2Utils.getNextOption(this.filteredData, this.hoveringValue);\r\n\r\n if (this.resultsElement) {\r\n const lastScrollTopIndex = Select2Utils.getLastScrollTopIndex(\r\n this.hoveringValue,\r\n this.resultsElement,\r\n this.filteredData,\r\n this.lastScrollTopIndex\r\n );\r\n if (lastScrollTopIndex !== null) {\r\n this.lastScrollTopIndex = lastScrollTopIndex;\r\n }\r\n }\r\n }\r\n\r\n private selectByEnter() {\r\n if (this.hoveringValue) {\r\n const option = Select2Utils.getOptionByValue(this.data, this.hoveringValue);\r\n this.select(option);\r\n }\r\n }\r\n\r\n select(option: Select2Option | null) {\r\n let value: any;\r\n if (option !== null) {\r\n if (this.multiple) {\r\n const options = this.option as Select2Option[];\r\n const index = options.findIndex(op => op.value === option.value);\r\n if (index === -1) {\r\n options.push(option);\r\n } else {\r\n options.splice(index, 1);\r\n }\r\n value = (this.option as Select2Option[]).map(op => op.value);\r\n } else {\r\n this.option = option;\r\n this.isOpen = false;\r\n if (this.selectionElement) {\r\n this.selectionElement.focus();\r\n }\r\n value = this.option.value;\r\n }\r\n } else if (this._control) {\r\n this.option = null;\r\n }\r\n\r\n if (this._control) {\r\n\r\n this._onChange(value);\r\n }\r\n this.update.emit(value);\r\n }\r\n\r\n keyDown(e: KeyboardEvent) {\r\n if (this._testKey(e, ['ArrowDown', 40])) {\r\n this.moveDown();\r\n e.preventDefault();\r\n } else if (this._testKey(e, ['ArrowUp', 38])) {\r\n this.moveUp();\r\n e.preventDefault();\r\n } else if (this._testKey(e, ['Enter', 13])) {\r\n this.selectByEnter();\r\n e.preventDefault();\r\n } else if (this._testKey(e, ['Escape', 'Tab', 9, 27]) && this.isOpen) {\r\n this.toggleOpenAndClose();\r\n this.focused = false;\r\n }\r\n }\r\n\r\n openKey(e: KeyboardEvent) {\r\n if (this._testKey(e, ['ArrowDown', 'ArrowUp', 'Enter', 40, 38, 13])) {\r\n this.toggleOpenAndClose();\r\n e.preventDefault();\r\n } else if (this._testKey(e, ['Escape', 9])) {\r\n this.focused = false;\r\n this._onTouched();\r\n }\r\n }\r\n\r\n trackBy(_index: number, item: Select2Option): any {\r\n return item.value;\r\n }\r\n\r\n searchUpdate(e: Event) {\r\n this.searchText = (e.target as HTMLInputElement).value;\r\n }\r\n\r\n isSelected(option: Select2Option) {\r\n return Select2Utils.isSelected(this.option, option, this.multiple);\r\n }\r\n\r\n isDisabled(option: Select2Option) {\r\n return option.disabled ? 'true' : 'false';\r\n }\r\n\r\n removeSelection(e: MouseEvent, option: Select2Option) {\r\n Select2Utils.removeSelection(this.option, option);\r\n\r\n const value = (this.option as Select2Option[]).map(op => op.value);\r\n if (this._control) {\r\n this._onChange(value);\r\n }\r\n this.update.emit(value);\r\n\r\n\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n if (this.isOpen) {\r\n this.focusSearchboxOrResultsElement();\r\n }\r\n }\r\n\r\n /**\r\n * Sets the model value. Implemented as part of ControlValueAccessor.\r\n * @param value\r\n */\r\n writeValue(value: any) {\r\n this._setSelectionByValue(value);\r\n }\r\n\r\n /**\r\n * Saves a callback function to be invoked when the select's value\r\n * changes from user input. Part of the ControlValueAccessor interface\r\n * required to integrate with Angular's core forms API.\r\n *\r\n * @param fn Callback to be triggered when the value changes.\r\n */\r\n registerOnChange(fn: (value: any) => void): void {\r\n this._onChange = fn;\r\n }\r\n\r\n /**\r\n * Saves a callback function to be invoked when the select is blurred\r\n * by the user. Part of the ControlValueAccessor interface required\r\n * to integrate with Angular's core forms API.\r\n *\r\n * @param fn Callback to be triggered when the component has been touched.\r\n */\r\n registerOnTouched(fn: () => {}): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n /**\r\n * Sets whether the component should be disabled.\r\n * Implemented as part of ControlValueAccessor.\r\n * @param isDisabled\r\n */\r\n setDisabledState(isDisabled: boolean) {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n _isErrorState(): boolean {\r\n const isInvalid = this._control && this._control.invalid;\r\n const isTouched = this._control && this._control.touched;\r\n const isSubmitted = (this._parentFormGroup && this._parentFormGroup.submitted) ||\r\n (this._parentForm && this._parentForm.submitted);\r\n\r\n return !!(isInvalid && (isTouched || isSubmitted));\r\n }\r\n\r\n private _testKey(event: KeyboardEvent, refs: (number | string)[] = []): boolean {\r\n return this._isKey(this._getKey(event), refs);\r\n }\r\n\r\n\r\n private _getKey(event: KeyboardEvent): number | string {\r\n let code: number | string;\r\n\r\n if (event.key !== undefined) {\r\n code = event.key;\r\n } else if (event['keyIdentifier'] !== undefined) {\r\n code = event['keyIdentifier'];\r\n } else if (event['keyCode'] !== undefined) {\r\n code = event['keyCode'];\r\n } else {\r\n event.preventDefault();\r\n }\r\n\r\n return code;\r\n }\r\n\r\n private _isKey(code: number | string, refs: (number | string)[] = []): boolean {\r\n return refs && refs.length > 0\r\n ? refs.indexOf(code) !== -1\r\n : false;\r\n }\r\n\r\n /**\r\n * Sets the selected option based on a value. If no option can be\r\n * found with the designated value, the select trigger is cleared.\r\n */\r\n private _setSelectionByValue(value: any | any[]): void {\r\n if (this.option || (value !== undefined && value !== null)) {\r\n const isArray = Array.isArray(value);\r\n if (this.multiple && value && !isArray) {\r\n throw new Error('Non array value.');\r\n } else if (this.data) {\r\n if (this._control && this.multiple) {\r\n this.option = []; // if value is null, then empty option and return\r\n if (isArray) {\r\n // value is not null. Preselect value\r\n const selectedValues: any = Select2Utils.getOptionsByValue(this.data, value, this.multiple);\r\n selectedValues.map(\r\n item => this.select(item)\r\n );\r\n }\r\n } else {\r\n this.select(Select2Utils.getOptionByValue(this.data, value));\r\n }\r\n } else if (this._control) {\r\n this._control.viewToModelUpdate(value);\r\n }\r\n\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n }\r\n\r\n /** Does some manual dirty checking on the native input `value` property. */\r\n private _dirtyCheckNativeValue() {\r\n const newValue = this.value;\r\n\r\n if (this._previousNativeValue !== newValue) {\r\n this._previousNativeValue = newValue;\r\n this._stateChanges.next();\r\n }\r\n }\r\n\r\n private _coerceBooleanProperty(value: any): boolean {\r\n return value != null && `${value}` !== 'false';\r\n }\r\n\r\n private focusSearchboxOrResultsElement() {\r\n if (!this.isSearchboxHidden) {\r\n if (this.searchInputElement) {\r\n this.searchInputElement.focus();\r\n }\r\n } else {\r\n if (this.resultsElement) {\r\n this.resultsElement.focus();\r\n }\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { Select2 } from './select2.component';\r\nimport { Select2Hint } from './select2-hint.component';\r\nimport { Select2Label } from './select2-label.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule\r\n ],\r\n declarations: [\r\n Select2Hint,\r\n Select2Label,\r\n Select2\r\n ],\r\n exports: [\r\n FormsModule,\r\n ReactiveFormsModule,\r\n Select2Hint,\r\n Select2Label,\r\n Select2\r\n ]\r\n})\r\nexport class Select2Module { }\r\n","/*\r\n * Public API Surface of ng-select2-component\r\n */\r\n\r\nexport * from './lib/select2.component';\r\nexport * from './lib/select2-hint.component';\r\nexport * from './lib/select2-label.component';\r\nexport * from './lib/select2-utils';\r\nexport * from './lib/select2.module';\r\n","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"./src/$$_lazy_route_resource lazy recursive\";","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2FwcC5jb21wb25lbnQuY3NzIn0= */\"","module.exports = \"
\\r\\n the source code of the demo\\r\\n

1. options in group ({{value1}})

\\r\\n \\r\\n \\r\\n

2. options ({{value2}})

\\r\\n \\r\\n \\r\\n

3. less options ({{value3}})

\\r\\n \\r\\n \\r\\n

4. disabled ({{value4}})

\\r\\n \\r\\n\\r\\n \\r\\n

5. hide search box ({{value5}})

\\r\\n \\r\\n \\r\\n

6. placeholder ({{value6}})

\\r\\n \\r\\n \\r\\n

7. open and search event ({{value7}})

\\r\\n \\r\\n \\r\\n

9. multiple ({{value9}})

\\r\\n \\r\\n \\r\\n

10. form binding ({{value10}})

\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n

11. material style ({{value11}})

\\r\\n \\r\\n \\r\\n

12. boolean value ({{value12}})

\\r\\n \\r\\n \\r\\n

13. FormControl

\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n

14. with label ({{value14}})

\\r\\n \\r\\n Select a state\\r\\n \\r\\n
\"","import { Component } from '@angular/core';\r\nimport { Validators, FormControl, FormBuilder, FormGroup } from '@angular/forms';\r\n\r\nimport { Select2Option, Select2Data } from 'projects/ng-select2-component/src/lib/select2-utils';\r\n\r\nimport { data1, data2, data3, data5, data12 } from './app.data';\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.css']\r\n})\r\nexport class AppComponent {\r\n data1 = data1;\r\n data2 = data2;\r\n data3 = data3;\r\n data4: Select2Data = JSON.parse(JSON.stringify(data3));\r\n data5 = data5;\r\n data6: Select2Data = JSON.parse(JSON.stringify(data3));\r\n data7: Select2Option[] = [];\r\n data9: Select2Data = JSON.parse(JSON.stringify(data1));\r\n data10: Select2Data = JSON.parse(JSON.stringify(data1));\r\n data11: Select2Data = JSON.parse(JSON.stringify(data1));\r\n data12 = data12;\r\n data14 = data2;\r\n\r\n minCountForSearch = Infinity;\r\n\r\n ctrlForm: FormGroup;\r\n\r\n value1 = 'CA';\r\n value2 = 'CA';\r\n value3 = 'foo';\r\n value4 = 'bar';\r\n value5 = 'foo3';\r\n value6 = '';\r\n value7 = '';\r\n value9: string[] = [];\r\n value10 = 'CA';\r\n value11 = 'CA';\r\n value12 = true;\r\n value14 = '';\r\n\r\n fg: FormGroup = new FormGroup({\r\n state: new FormControl()\r\n });\r\n\r\n constructor(private fb: FormBuilder) {\r\n this.ctrlForm = this.fb.group({\r\n test10: new FormControl(null, Validators.required)\r\n });\r\n\r\n this.fg.patchValue(this.formData());\r\n }\r\n\r\n update1(value: string) {\r\n this.value1 = value;\r\n }\r\n\r\n update2(value: string) {\r\n this.value2 = value;\r\n }\r\n\r\n update3(value: string) {\r\n this.value3 = value;\r\n }\r\n\r\n update5(value: string) {\r\n this.value5 = value;\r\n }\r\n\r\n update6(value: string) {\r\n this.value6 = value;\r\n }\r\n\r\n open7() {\r\n this.data7 = JSON.parse(JSON.stringify(data2));\r\n }\r\n\r\n update7(value: string) {\r\n this.value7 = value;\r\n }\r\n\r\n search7(text: string) {\r\n this.data7 = text\r\n ? (JSON.parse(JSON.stringify(data2)) as Select2Option[])\r\n .filter(option => option.label.toLowerCase().indexOf(text.toLowerCase()) > -1)\r\n : JSON.parse(JSON.stringify(data2));\r\n }\r\n\r\n update9(value: string[]) {\r\n this.value9 = value;\r\n }\r\n\r\n reset9() {\r\n this.value9 = ['CA'];\r\n }\r\n\r\n reset10() {\r\n const test10 = this.ctrlForm.get('test10');\r\n if (test10) {\r\n test10.reset();\r\n }\r\n }\r\n\r\n change10() {\r\n const test10 = this.ctrlForm.get('test10');\r\n if (test10) {\r\n test10.setValue('UT');\r\n }\r\n }\r\n\r\n update11(value: string) {\r\n this.value11 = value;\r\n }\r\n\r\n update12(value: boolean) {\r\n this.value12 = value;\r\n }\r\n\r\n update14(value: string) {\r\n this.value14 = value;\r\n }\r\n\r\n resetForm() {\r\n this.fg.reset(this.formData());\r\n }\r\n print() {\r\n console.log('FormControl', this.fg.value);\r\n }\r\n\r\n formData() {\r\n return {\r\n state: ['CA', 'NV']\r\n };\r\n }\r\n}\r\n","import { Select2Data } from 'projects/ng-select2-component/src/lib/select2-utils';\r\n\r\nexport const data1: Select2Data = [\r\n {\r\n label: 'Alaskan/Hawaiian Time Zone',\r\n options: [\r\n { value: 'AK', label: 'Alaska' },\r\n { value: 'HI', label: 'Hawaii', disabled: true }\r\n ]\r\n },\r\n {\r\n label: 'Pacific Time Zone',\r\n options: [\r\n { value: 'CA', label: 'California' },\r\n { value: 'NV', label: 'Nevada' },\r\n { value: 'OR', label: 'Oregon' },\r\n { value: 'WA', label: 'Washington' }\r\n ]\r\n },\r\n {\r\n label: 'Mountain Time Zone',\r\n options: [\r\n { value: 'AZ', label: 'Arizona' },\r\n { value: 'CO', label: 'Colorado' },\r\n { value: 'ID', label: 'Idaho' },\r\n { value: 'MT', label: 'Montana' },\r\n { value: 'NE', label: 'Nebraska' },\r\n { value: 'NM', label: 'New Mexico' },\r\n { value: 'ND', label: 'North Dakota' },\r\n { value: 'UT', label: 'Utah' },\r\n { value: 'WY', label: 'Wyoming' }\r\n ]\r\n },\r\n {\r\n label: 'Central Time Zone',\r\n options: [\r\n { value: 'AL', label: 'Alabama' },\r\n { value: 'AR', label: 'Arkansas' },\r\n { value: 'IL', label: 'Illinois' },\r\n { value: 'IA', label: 'Iowa' },\r\n { value: 'KS', label: 'Kansas' },\r\n { value: 'KY', label: 'Kentucky' },\r\n { value: 'LA', label: 'Louisiana' },\r\n { value: 'MN', label: 'Minnesota' },\r\n { value: 'MS', label: 'Mississippi' },\r\n { value: 'MO', label: 'Missouri' },\r\n { value: 'OK', label: 'Oklahoma' },\r\n { value: 'SD', label: 'South Dakota' },\r\n { value: 'TX', label: 'Texas' },\r\n { value: 'TN', label: 'Tennessee' },\r\n { value: 'WI', label: 'Wisconsin' }\r\n ]\r\n },\r\n {\r\n label: 'Eastern Time Zone',\r\n options: [\r\n { value: 'CT', label: 'Connecticut' },\r\n { value: 'DE', label: 'Delaware' },\r\n { value: 'FL', label: 'Florida' },\r\n { value: 'GA', label: 'Georgia' },\r\n { value: 'IN', label: 'Indiana' },\r\n { value: 'ME', label: 'Maine' },\r\n { value: 'MD', label: 'Maryland' },\r\n { value: 'MA', label: 'Massachusetts' },\r\n { value: 'MI', label: 'Michigan' },\r\n { value: 'NH', label: 'New Hampshire' },\r\n { value: 'NJ', label: 'New Jersey' },\r\n { value: 'NY', label: 'New York' },\r\n { value: 'NC', label: 'North Carolina' },\r\n { value: 'OH', label: 'Ohio' },\r\n { value: 'PA', label: 'Pennsylvania' },\r\n { value: 'RI', label: 'Rhode Island' },\r\n { value: 'SC', label: 'South Carolina' },\r\n { value: 'VT', label: 'Vermont' },\r\n { value: 'VA', label: 'Virginia' },\r\n { value: 'WV', label: 'West Virginia' }\r\n ]\r\n }\r\n];\r\n\r\nexport const data2: Select2Data = [\r\n { value: 'AK', label: 'Alaska' },\r\n { value: 'HI', label: 'Hawaii', disabled: true },\r\n { value: 'CA', label: 'California' },\r\n { value: 'NV', label: 'Nevada' },\r\n { value: 'OR', label: 'Oregon' },\r\n { value: 'WA', label: 'Washington' },\r\n { value: 'AZ', label: 'Arizona' },\r\n { value: 'CO', label: 'Colorado' },\r\n { value: 'ID', label: 'Idaho' },\r\n { value: 'MT', label: 'Montana' },\r\n { value: 'NE', label: 'Nebraska' },\r\n { value: 'NM', label: 'New Mexico' },\r\n { value: 'ND', label: 'North Dakota' },\r\n { value: 'UT', label: 'Utah' },\r\n { value: 'WY', label: 'Wyoming' },\r\n { value: 'AL', label: 'Alabama' },\r\n { value: 'AR', label: 'Arkansas' },\r\n { value: 'IL', label: 'Illinois' },\r\n { value: 'IA', label: 'Iowa' },\r\n { value: 'KS', label: 'Kansas' },\r\n { value: 'KY', label: 'Kentucky' },\r\n { value: 'LA', label: 'Louisiana' },\r\n { value: 'MN', label: 'Minnesota' },\r\n { value: 'MS', label: 'Mississippi' },\r\n { value: 'MO', label: 'Missouri' },\r\n { value: 'OK', label: 'Oklahoma' },\r\n { value: 'SD', label: 'South Dakota' },\r\n { value: 'TX', label: 'Texas' },\r\n { value: 'TN', label: 'Tennessee' },\r\n { value: 'WI', label: 'Wisconsin' },\r\n { value: 'CT', label: 'Connecticut' },\r\n { value: 'DE', label: 'Delaware' },\r\n { value: 'FL', label: 'Florida' },\r\n { value: 'GA', label: 'Georgia' },\r\n { value: 'IN', label: 'Indiana' },\r\n { value: 'ME', label: 'Maine' },\r\n { value: 'MD', label: 'Maryland' },\r\n { value: 'MA', label: 'Massachusetts' },\r\n { value: 'MI', label: 'Michigan' },\r\n { value: 'NH', label: 'New Hampshire' },\r\n { value: 'NJ', label: 'New Jersey' },\r\n { value: 'NY', label: 'New York' },\r\n { value: 'NC', label: 'North Carolina' },\r\n { value: 'OH', label: 'Ohio' },\r\n { value: 'PA', label: 'Pennsylvania' },\r\n { value: 'RI', label: 'Rhode Island' },\r\n { value: 'SC', label: 'South Carolina' },\r\n { value: 'VT', label: 'Vermont' },\r\n { value: 'VA', label: 'Virginia' },\r\n { value: 'WV', label: 'West Virginia' }\r\n];\r\n\r\nexport const data3: Select2Data = [\r\n { value: 'foo', label: 'foo' },\r\n { value: 'bar', label: 'bar' },\r\n { value: 'baz', label: 'baz' }\r\n];\r\n\r\nexport const data5: Select2Data = [\r\n { value: 'foo1', label: 'foo1' },\r\n { value: 'foo2', label: 'foo2' },\r\n { value: 'foo3', label: 'foo3' },\r\n { value: 'foo4', label: 'foo4' },\r\n { value: 'foo5', label: 'foo5' },\r\n { value: 'foo6', label: 'foo6' }\r\n];\r\n\r\nexport const data12: Select2Data = [\r\n { value: true, label: 'true' },\r\n { value: false, label: 'false' }\r\n];\r\n","import { BrowserModule } from '@angular/platform-browser';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { AppComponent } from './app.component';\r\nimport { Select2Module } from 'projects/ng-select2-component/src/public_api';\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent\r\n ],\r\n imports: [\r\n BrowserModule,\r\n FormsModule,\r\n Select2Module\r\n ],\r\n providers: [],\r\n bootstrap: [AppComponent]\r\n})\r\nexport class AppModule { }\r\n","// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build ---prod` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\nexport const environment = {\r\n production: false\r\n};\r\n\r\n/*\r\n * In development mode, to ignore zone related error stack frames such as\r\n * `zone.run`, `zoneDelegate.invokeTask` for easier debugging, you can\r\n * import the following file, but please comment it out in production mode\r\n * because it will have performance impact when throw error\r\n */\r\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule)\r\n .catch(err => console.log(err));\r\n"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/ng-select2/polyfills.js b/dist/ng-select2/polyfills.js index f3d3bc8..7d5696f 100644 --- a/dist/ng-select2/polyfills.js +++ b/dist/ng-select2/polyfills.js @@ -1,5 +1,28 @@ (window["webpackJsonp"] = window["webpackJsonp"] || []).push([["polyfills"],{ +/***/ "./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js": +/*!**************************************************************************************************!*\ + !*** ./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js ***! + \**************************************************************************************************/ +/*! no exports provided */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var core_js_es7_reflect__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/es7/reflect */ "./node_modules/core-js/es7/reflect.js"); +/* harmony import */ var core_js_es7_reflect__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_es7_reflect__WEBPACK_IMPORTED_MODULE_0__); +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ + + + +/***/ }), + /***/ "./node_modules/core-js/es7/reflect.js": /*!*********************************************!*\ !*** ./node_modules/core-js/es7/reflect.js ***! @@ -3233,10 +3256,10 @@ Zone.__load_patch('ZoneAwarePromise', function (global, Zone, api) { reject = rej; }); function onResolve(value) { - promise && (promise = null || resolve(value)); + promise && (promise = false || resolve(value)); } function onReject(error) { - promise && (promise = null || reject(error)); + promise && (promise = false || reject(error)); } for (var _i = 0, values_1 = values; _i < values_1.length; _i++) { var value = values_1[_i]; @@ -5467,13 +5490,14 @@ __webpack_require__.r(__webpack_exports__); /***/ }), /***/ 1: -/*!********************************!*\ - !*** multi ./src/polyfills.ts ***! - \********************************/ +/*!***************************************************************************************************************************!*\ + !*** multi ./src/polyfills.ts ./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js ***! + \***************************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -module.exports = __webpack_require__(/*! C:\Data\sources-svn\pitch\ng-select2\src\polyfills.ts */"./src/polyfills.ts"); +__webpack_require__(/*! c:\Data\sources-svn\pitch\ng-select2\src\polyfills.ts */"./src/polyfills.ts"); +module.exports = __webpack_require__(/*! c:\Data\sources-svn\pitch\ng-select2\node_modules\@angular-devkit\build-angular\src\angular-cli-files\models\jit-polyfills.js */"./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js"); /***/ }) diff --git a/dist/ng-select2/polyfills.js.map b/dist/ng-select2/polyfills.js.map index 10cd689..0d82de7 100644 --- a/dist/ng-select2/polyfills.js.map +++ b/dist/ng-select2/polyfills.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///./node_modules/core-js/es7/reflect.js","webpack:///./node_modules/core-js/modules/_a-function.js","webpack:///./node_modules/core-js/modules/_an-instance.js","webpack:///./node_modules/core-js/modules/_an-object.js","webpack:///./node_modules/core-js/modules/_array-from-iterable.js","webpack:///./node_modules/core-js/modules/_array-includes.js","webpack:///./node_modules/core-js/modules/_array-methods.js","webpack:///./node_modules/core-js/modules/_array-species-constructor.js","webpack:///./node_modules/core-js/modules/_array-species-create.js","webpack:///./node_modules/core-js/modules/_classof.js","webpack:///./node_modules/core-js/modules/_cof.js","webpack:///./node_modules/core-js/modules/_collection-strong.js","webpack:///./node_modules/core-js/modules/_collection-weak.js","webpack:///./node_modules/core-js/modules/_collection.js","webpack:///./node_modules/core-js/modules/_core.js","webpack:///./node_modules/core-js/modules/_ctx.js","webpack:///./node_modules/core-js/modules/_defined.js","webpack:///./node_modules/core-js/modules/_descriptors.js","webpack:///./node_modules/core-js/modules/_dom-create.js","webpack:///./node_modules/core-js/modules/_enum-bug-keys.js","webpack:///./node_modules/core-js/modules/_export.js","webpack:///./node_modules/core-js/modules/_fails.js","webpack:///./node_modules/core-js/modules/_for-of.js","webpack:///./node_modules/core-js/modules/_global.js","webpack:///./node_modules/core-js/modules/_has.js","webpack:///./node_modules/core-js/modules/_hide.js","webpack:///./node_modules/core-js/modules/_html.js","webpack:///./node_modules/core-js/modules/_ie8-dom-define.js","webpack:///./node_modules/core-js/modules/_inherit-if-required.js","webpack:///./node_modules/core-js/modules/_iobject.js","webpack:///./node_modules/core-js/modules/_is-array-iter.js","webpack:///./node_modules/core-js/modules/_is-array.js","webpack:///./node_modules/core-js/modules/_is-object.js","webpack:///./node_modules/core-js/modules/_iter-call.js","webpack:///./node_modules/core-js/modules/_iter-create.js","webpack:///./node_modules/core-js/modules/_iter-define.js","webpack:///./node_modules/core-js/modules/_iter-detect.js","webpack:///./node_modules/core-js/modules/_iter-step.js","webpack:///./node_modules/core-js/modules/_iterators.js","webpack:///./node_modules/core-js/modules/_library.js","webpack:///./node_modules/core-js/modules/_meta.js","webpack:///./node_modules/core-js/modules/_metadata.js","webpack:///./node_modules/core-js/modules/_object-assign.js","webpack:///./node_modules/core-js/modules/_object-create.js","webpack:///./node_modules/core-js/modules/_object-dp.js","webpack:///./node_modules/core-js/modules/_object-dps.js","webpack:///./node_modules/core-js/modules/_object-gopd.js","webpack:///./node_modules/core-js/modules/_object-gops.js","webpack:///./node_modules/core-js/modules/_object-gpo.js","webpack:///./node_modules/core-js/modules/_object-keys-internal.js","webpack:///./node_modules/core-js/modules/_object-keys.js","webpack:///./node_modules/core-js/modules/_object-pie.js","webpack:///./node_modules/core-js/modules/_property-desc.js","webpack:///./node_modules/core-js/modules/_redefine-all.js","webpack:///./node_modules/core-js/modules/_redefine.js","webpack:///./node_modules/core-js/modules/_set-proto.js","webpack:///./node_modules/core-js/modules/_set-species.js","webpack:///./node_modules/core-js/modules/_set-to-string-tag.js","webpack:///./node_modules/core-js/modules/_shared-key.js","webpack:///./node_modules/core-js/modules/_shared.js","webpack:///./node_modules/core-js/modules/_to-absolute-index.js","webpack:///./node_modules/core-js/modules/_to-integer.js","webpack:///./node_modules/core-js/modules/_to-iobject.js","webpack:///./node_modules/core-js/modules/_to-length.js","webpack:///./node_modules/core-js/modules/_to-object.js","webpack:///./node_modules/core-js/modules/_to-primitive.js","webpack:///./node_modules/core-js/modules/_uid.js","webpack:///./node_modules/core-js/modules/_validate-collection.js","webpack:///./node_modules/core-js/modules/_wks.js","webpack:///./node_modules/core-js/modules/core.get-iterator-method.js","webpack:///./node_modules/core-js/modules/es6.map.js","webpack:///./node_modules/core-js/modules/es6.set.js","webpack:///./node_modules/core-js/modules/es6.weak-map.js","webpack:///./node_modules/core-js/modules/es7.reflect.define-metadata.js","webpack:///./node_modules/core-js/modules/es7.reflect.delete-metadata.js","webpack:///./node_modules/core-js/modules/es7.reflect.get-metadata-keys.js","webpack:///./node_modules/core-js/modules/es7.reflect.get-metadata.js","webpack:///./node_modules/core-js/modules/es7.reflect.get-own-metadata-keys.js","webpack:///./node_modules/core-js/modules/es7.reflect.get-own-metadata.js","webpack:///./node_modules/core-js/modules/es7.reflect.has-metadata.js","webpack:///./node_modules/core-js/modules/es7.reflect.has-own-metadata.js","webpack:///./node_modules/core-js/modules/es7.reflect.metadata.js","webpack:///./node_modules/zone.js/dist/zone.js","webpack:///./src/polyfills.ts"],"names":[],"mappings":";;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACTA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;ACJA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACJA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,YAAY,eAAe;AAChC;AACA,KAAK;AACL;AACA;;;;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,eAAe;AACzB;AACA;AACA;AACA,wCAAwC;AACxC;AACA,8BAA8B;AAC9B,6BAA6B;AAC7B,+BAA+B;AAC/B,mCAAmC;AACnC,SAAS,iCAAiC;AAC1C;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC3CA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;ACfA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;ACLA;AACA;AACA;AACA;AACA,2BAA2B,kBAAkB,EAAE;;AAE/C;AACA;AACA;AACA;AACA,GAAG,YAAY;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACtBA,iBAAiB;;AAEjB;AACA;AACA;;;;;;;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,6BAA6B;AAC7B,0BAA0B;AAC1B,0BAA0B;AAC1B,qBAAqB;AACrB;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,8EAA8E,OAAO;AACrF;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC,qBAAqB;AACrB,0BAA0B;AAC1B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;;;;;;;;;;;;AC/IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,qBAAqB;AACrB,0BAA0B;AAC1B;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;;;;;;;;;;;ACpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO,mCAAmC,gCAAgC,aAAa;AACvF,8BAA8B,mCAAmC,aAAa;AAC9E;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,qDAAqD;AACrD;AACA,kDAAkD,iBAAiB,EAAE;AACrE;AACA,wDAAwD,aAAa,EAAE,EAAE;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;;;;;;;;;;;ACpFA,6BAA6B;AAC7B,uCAAuC;;;;;;;;;;;;ACDvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACJA;AACA;AACA,iCAAiC,QAAQ,mBAAmB,UAAU,EAAE,EAAE;AAC1E,CAAC;;;;;;;;;;;;ACHD;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACNA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kFAAkF,uBAAuB;AACzG,iEAAiE;AACjE,+DAA+D;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,eAAe;AACf,eAAe;AACf,eAAe;AACf,gBAAgB;AAChB;;;;;;;;;;;;AC1CA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,iBAAiB,EAAE;AAC1D;AACA;AACA;AACA;AACA;AACA,mEAAmE,gBAAgB;AACnF;AACA;AACA,GAAG,4CAA4C,gCAAgC;AAC/E;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA,yCAAyC;;;;;;;;;;;;ACLzC,uBAAuB;AACvB;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;;;;;;;;;;;ACPA;AACA;;;;;;;;;;;;ACDA;AACA,uIAAsE,mBAAmB,UAAU,EAAE,EAAE;AACvG,CAAC;;;;;;;;;;;;ACFD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACLA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACJA;AACA;AACA;;;;;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;;AAEA;AACA,uMAAkF,aAAa,EAAE;;AAEjG;AACA,qDAAqD,4BAA4B;AACjF;AACA;;;;;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;;AAEA,8BAA8B,aAAa;;AAE3C;AACA;AACA;AACA;AACA;AACA,yCAAyC,oCAAoC;AAC7E,6CAA6C,oCAAoC;AACjF,KAAK,4BAA4B,oCAAoC;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,mBAAmB;AACnC;AACA;AACA,kCAAkC,2BAA2B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;;;;;;;;;;;ACpEA;AACA;;AAEA;AACA;AACA,iCAAiC,qBAAqB;AACtD;AACA,iCAAiC,SAAS,EAAE;AAC5C,CAAC,YAAY;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,SAAS,qBAAqB;AAC3D,iCAAiC,aAAa;AAC9C;AACA,GAAG,YAAY;AACf;AACA;;;;;;;;;;;;ACrBA;AACA,UAAU;AACV;;;;;;;;;;;;ACFA;;;;;;;;;;;;ACAA;;;;;;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,CAAC;AACD;AACA,qBAAqB;AACrB;AACA,SAAS;AACT,GAAG,EAAE;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACpDA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,gBAAgB,EAAE;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,UAAU,EAAE;AAChD,mBAAmB,sCAAsC;AACzD,CAAC,qCAAqC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;;;;;;;;;;;ACjCD;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;;;;;;;;;;ACxCA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,YAAY;AACf;AACA;AACA;AACA;;;;;;;;;;;;ACfA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG,YAAY;AACf;AACA;;;;;;;;;;;;ACfA;;;;;;;;;;;;ACAA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;ACZA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AChBA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;ACNA,cAAc;;;;;;;;;;;;ACAd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA,CAAC;AACD;AACA,CAAC;;;;;;;;;;;;AC9BD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA,OAAO,YAAY,cAAc;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,GAAG;AACR;AACA;;;;;;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAsB,aAAa;AACnC,GAAG;AACH;;;;;;;;;;;;ACZA;AACA;AACA;;AAEA;AACA,oEAAoE,iCAAiC;AACrG;;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACJA;AACA;AACA;AACA,kDAAkD;;AAElD;AACA,qEAAqE;AACrE,CAAC;AACD;AACA;AACA;AACA,CAAC;;;;;;;;;;;;ACXD;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACLA;AACA;AACA;AACA;AACA,2DAA2D;AAC3D;;;;;;;;;;;;ACLA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACJA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACJA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACPA;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,mEAAmE;AAC5F,CAAC;AACD;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;AClBD;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,mEAAmE;AAC5F,CAAC;AACD;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACbD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,uBAAuB,4EAA4E,EAAE;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,GAAG;AACH;;;;;;;;;;;;AC1DA;AACA;AACA;AACA;;AAEA,cAAc;AACd;AACA,CAAC,EAAE;;;;;;;;;;;;ACPH;AACA;AACA;AACA;AACA;;AAEA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAE;;;;;;;;;;;;ACdH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAc;AACd;AACA,CAAC,EAAE;;;;;;;;;;;;AClBH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAc;AACd;AACA,CAAC,EAAE;;;;;;;;;;;;AChBH;AACA;AACA;AACA;;AAEA,cAAc;AACd;AACA,CAAC,EAAE;;;;;;;;;;;;ACPH;AACA;AACA;AACA;;AAEA,cAAc;AACd;AACA;AACA,CAAC,EAAE;;;;;;;;;;;;ACRH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAc;AACd;AACA,CAAC,EAAE;;;;;;;;;;;;ACfH;AACA;AACA;AACA;;AAEA,cAAc;AACd;AACA;AACA,CAAC,EAAE;;;;;;;;;;;;ACRH;AACA;AACA;AACA;AACA;;AAEA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAE;;;;;;;;;;;;ACdH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UACA;AACA,CAAC,qBAAqB;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,uBAAuB;AAC9D,uCAAuC,kBAAkB;AACzD,oCAAoC,eAAe;AACnD,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,kBAAkB;AACzD,uCAAuC,kBAAkB;AACzD,oCAAoC,eAAe;AACnD,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,0BAA0B;AACrD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,kFAAkF,gEAAgE,EAAE;AACpJ;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA,uCAAuC,0BAA0B,EAAE;AACnE;AACA;AACA;AACA,wCAAwC,6DAA6D,EAAE;AACvG,uCAAuC,WAAW,EAAE;AACpD;AACA,kCAAkC,aAAa,EAAE;AACjD,oCAAoC,aAAa,EAAE;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,6BAA6B;AAC7B;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4HAA4H,wBAAwB,oCAAoC;AACxL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gFAAgF,sEAAsE;AACtJ;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,oDAAoD;AAC5F;AACA;AACA;AACA;AACA;AACA,2BAA2B,mCAAmC;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,qEAAqE,gBAAgB;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,sBAAsB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,+CAA+C,sBAAsB;AACrE;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,QAAQ;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,mBAAmB,oBAAoB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,uBAAuB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,yBAAyB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,EAAE;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,EAAE;AACR;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,oCAAoC;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,sBAAsB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,sBAAsB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,0BAA0B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,sBAAsB;AAChE,qCAAqC,iBAAiB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,8BAA8B;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,0BAA0B;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,0BAA0B;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,iBAAiB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,wBAAwB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,wBAAwB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0FAA0F;AAC1F;AACA;AACA;AACA;AACA;AACA,UAAU,EAAE;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,EAAE;AACZ;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,EAAE;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,0BAA0B,EAAE;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,6BAA6B,EAAE;AACpF;AACA;AACA;AACA;AACA,8CAA8C,kDAAkD,EAAE;AAClG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,0FAA0F;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,+BAA+B,EAAE;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,gBAAgB;AACrF;AACA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,0BAA0B;AAC7C;AACA;AACA,uBAAuB,uBAAuB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA,yCAAyC,6BAA6B;AACtE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,mBAAmB,4BAA4B;AAC/C;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,SAAS;AACT;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mFAAmF;AACnF;AACA;AACA;AACA,UAAU,EAAE;AACZ;AACA,mFAAmF;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,EAAE;AACZ,qFAAqF;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,EAAE;AACZ;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,0CAA0C;AAC5G;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;;;;;;;;;;;;;;ACn/FD;AAAA;AAAA;;;;;;;;;;;;;;GAcG;AAEH;;GAEG;AAEH,mEAAmE;AACnE,+BAA+B;AAC/B,+BAA+B;AAC/B,iCAAiC;AACjC,kCAAkC;AAClC,oCAAoC;AACpC,+BAA+B;AAC/B,6BAA6B;AAC7B,+BAA+B;AAC/B,6BAA6B;AAC7B,8BAA8B;AAC9B,+BAA+B;AAC/B,4BAA4B;AAC5B,iCAAiC;AACjC,4BAA4B;AAE5B,+EAA+E;AAC/E,oEAAoE;AAEpE,gEAAgE;AAChE,gCAAgC;AAGhC,yCAAyC;AACzC,kGAAkG;AACrE;AAG7B;;;;IAII;AACJ,8EAA8E;AAE9E;;;GAGG;AAEF,sGAAsG;AACtG,iGAAiG;AACjG,sHAAsH;AAEtH;;;EAGE;AACH,4DAA4D;AAE5D;;GAEG;AACwB,CAAE,6BAA6B;AAI1D;;GAEG","file":"polyfills.js","sourcesContent":["require('../modules/es7.reflect.define-metadata');\nrequire('../modules/es7.reflect.delete-metadata');\nrequire('../modules/es7.reflect.get-metadata');\nrequire('../modules/es7.reflect.get-metadata-keys');\nrequire('../modules/es7.reflect.get-own-metadata');\nrequire('../modules/es7.reflect.get-own-metadata-keys');\nrequire('../modules/es7.reflect.has-metadata');\nrequire('../modules/es7.reflect.has-own-metadata');\nrequire('../modules/es7.reflect.metadata');\nmodule.exports = require('../modules/_core').Reflect;\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","var forOf = require('./_for-of');\n\nmodule.exports = function (iter, ITERATOR) {\n var result = [];\n forOf(iter, false, result.push, result, ITERATOR);\n return result;\n};\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n","var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","'use strict';\nvar dP = require('./_object-dp').f;\nvar create = require('./_object-create');\nvar redefineAll = require('./_redefine-all');\nvar ctx = require('./_ctx');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar $iterDefine = require('./_iter-define');\nvar step = require('./_iter-step');\nvar setSpecies = require('./_set-species');\nvar DESCRIPTORS = require('./_descriptors');\nvar fastKey = require('./_meta').fastKey;\nvar validate = require('./_validate-collection');\nvar SIZE = DESCRIPTORS ? '_s' : 'size';\n\nvar getEntry = function (that, key) {\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return that._i[index];\n // frozen object case\n for (entry = that._f; entry; entry = entry.n) {\n if (entry.k == key) return entry;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = create(null); // index\n that._f = undefined; // first entry\n that._l = undefined; // last entry\n that[SIZE] = 0; // size\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {\n entry.r = true;\n if (entry.p) entry.p = entry.p.n = undefined;\n delete data[entry.i];\n }\n that._f = that._l = undefined;\n that[SIZE] = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = validate(this, NAME);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.n;\n var prev = entry.p;\n delete that._i[entry.i];\n entry.r = true;\n if (prev) prev.n = next;\n if (next) next.p = prev;\n if (that._f == entry) that._f = next;\n if (that._l == entry) that._l = prev;\n that[SIZE]--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n validate(this, NAME);\n var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.n : this._f) {\n f(entry.v, entry.k, this);\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(validate(this, NAME), key);\n }\n });\n if (DESCRIPTORS) dP(C.prototype, 'size', {\n get: function () {\n return validate(this, NAME)[SIZE];\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var entry = getEntry(that, key);\n var prev, index;\n // change existing entry\n if (entry) {\n entry.v = value;\n // create new entry\n } else {\n that._l = entry = {\n i: index = fastKey(key, true), // <- index\n k: key, // <- key\n v: value, // <- value\n p: prev = that._l, // <- previous entry\n n: undefined, // <- next entry\n r: false // <- removed\n };\n if (!that._f) that._f = entry;\n if (prev) prev.n = entry;\n that[SIZE]++;\n // add to index\n if (index !== 'F') that._i[index] = entry;\n } return that;\n },\n getEntry: getEntry,\n setStrong: function (C, NAME, IS_MAP) {\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n $iterDefine(C, NAME, function (iterated, kind) {\n this._t = validate(iterated, NAME); // target\n this._k = kind; // kind\n this._l = undefined; // previous\n }, function () {\n var that = this;\n var kind = that._k;\n var entry = that._l;\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n // get next entry\n if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n // or finish the iteration\n that._t = undefined;\n return step(1);\n }\n // return step by kind\n if (kind == 'keys') return step(0, entry.k);\n if (kind == 'values') return step(0, entry.v);\n return step(0, [entry.k, entry.v]);\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(NAME);\n }\n};\n","'use strict';\nvar redefineAll = require('./_redefine-all');\nvar getWeak = require('./_meta').getWeak;\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar createArrayMethod = require('./_array-methods');\nvar $has = require('./_has');\nvar validate = require('./_validate-collection');\nvar arrayFind = createArrayMethod(5);\nvar arrayFindIndex = createArrayMethod(6);\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (that) {\n return that._l || (that._l = new UncaughtFrozenStore());\n};\nvar UncaughtFrozenStore = function () {\n this.a = [];\n};\nvar findUncaughtFrozen = function (store, key) {\n return arrayFind(store.a, function (it) {\n return it[0] === key;\n });\n};\nUncaughtFrozenStore.prototype = {\n get: function (key) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) return entry[1];\n },\n has: function (key) {\n return !!findUncaughtFrozen(this, key);\n },\n set: function (key, value) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) entry[1] = value;\n else this.a.push([key, value]);\n },\n 'delete': function (key) {\n var index = arrayFindIndex(this.a, function (it) {\n return it[0] === key;\n });\n if (~index) this.a.splice(index, 1);\n return !!~index;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = id++; // collection id\n that._l = undefined; // leak store for uncaught frozen objects\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.3.3.2 WeakMap.prototype.delete(key)\n // 23.4.3.3 WeakSet.prototype.delete(value)\n 'delete': function (key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);\n return data && $has(data, this._i) && delete data[this._i];\n },\n // 23.3.3.4 WeakMap.prototype.has(key)\n // 23.4.3.4 WeakSet.prototype.has(value)\n has: function has(key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);\n return data && $has(data, this._i);\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var data = getWeak(anObject(key), true);\n if (data === true) uncaughtFrozenStore(that).set(key, value);\n else data[that._i] = value;\n return that;\n },\n ufstore: uncaughtFrozenStore\n};\n","'use strict';\nvar global = require('./_global');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar redefineAll = require('./_redefine-all');\nvar meta = require('./_meta');\nvar forOf = require('./_for-of');\nvar anInstance = require('./_an-instance');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar $iterDetect = require('./_iter-detect');\nvar setToStringTag = require('./_set-to-string-tag');\nvar inheritIfRequired = require('./_inherit-if-required');\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n var Base = global[NAME];\n var C = Base;\n var ADDER = IS_MAP ? 'set' : 'add';\n var proto = C && C.prototype;\n var O = {};\n var fixMethod = function (KEY) {\n var fn = proto[KEY];\n redefine(proto, KEY,\n KEY == 'delete' ? function (a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'has' ? function has(a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'get' ? function get(a) {\n return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; }\n : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; }\n );\n };\n if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n new C().entries().next();\n }))) {\n // create collection constructor\n C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n redefineAll(C.prototype, methods);\n meta.NEED = true;\n } else {\n var instance = new C();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new C();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n if (!ACCEPT_ITERABLES) {\n C = wrapper(function (target, iterable) {\n anInstance(target, C, NAME);\n var that = inheritIfRequired(new Base(), target, C);\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n return that;\n });\n C.prototype = proto;\n proto.constructor = C;\n }\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n // weak collections should not contains .clear method\n if (IS_WEAK && proto.clear) delete proto.clear;\n }\n\n setToStringTag(C, NAME);\n\n O[NAME] = C;\n $export($export.G + $export.W + $export.F * (C != Base), O);\n\n if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n return C;\n};\n","var core = module.exports = { version: '2.5.7' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar setPrototypeOf = require('./_set-proto').set;\nmodule.exports = function (that, target, C) {\n var S = target.constructor;\n var P;\n if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n setPrototypeOf(that, P);\n } return that;\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","module.exports = {};\n","module.exports = false;\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","var Map = require('./es6.map');\nvar $export = require('./_export');\nvar shared = require('./_shared')('metadata');\nvar store = shared.store || (shared.store = new (require('./es6.weak-map'))());\n\nvar getOrCreateMetadataMap = function (target, targetKey, create) {\n var targetMetadata = store.get(target);\n if (!targetMetadata) {\n if (!create) return undefined;\n store.set(target, targetMetadata = new Map());\n }\n var keyMetadata = targetMetadata.get(targetKey);\n if (!keyMetadata) {\n if (!create) return undefined;\n targetMetadata.set(targetKey, keyMetadata = new Map());\n } return keyMetadata;\n};\nvar ordinaryHasOwnMetadata = function (MetadataKey, O, P) {\n var metadataMap = getOrCreateMetadataMap(O, P, false);\n return metadataMap === undefined ? false : metadataMap.has(MetadataKey);\n};\nvar ordinaryGetOwnMetadata = function (MetadataKey, O, P) {\n var metadataMap = getOrCreateMetadataMap(O, P, false);\n return metadataMap === undefined ? undefined : metadataMap.get(MetadataKey);\n};\nvar ordinaryDefineOwnMetadata = function (MetadataKey, MetadataValue, O, P) {\n getOrCreateMetadataMap(O, P, true).set(MetadataKey, MetadataValue);\n};\nvar ordinaryOwnMetadataKeys = function (target, targetKey) {\n var metadataMap = getOrCreateMetadataMap(target, targetKey, false);\n var keys = [];\n if (metadataMap) metadataMap.forEach(function (_, key) { keys.push(key); });\n return keys;\n};\nvar toMetaKey = function (it) {\n return it === undefined || typeof it == 'symbol' ? it : String(it);\n};\nvar exp = function (O) {\n $export($export.S, 'Reflect', O);\n};\n\nmodule.exports = {\n store: store,\n map: getOrCreateMetadataMap,\n has: ordinaryHasOwnMetadata,\n get: ordinaryGetOwnMetadata,\n set: ordinaryDefineOwnMetadata,\n keys: ordinaryOwnMetadataKeys,\n key: toMetaKey,\n exp: exp\n};\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n } return T;\n} : $assign;\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","exports.f = Object.getOwnPropertySymbols;\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","exports.f = {}.propertyIsEnumerable;\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var redefine = require('./_redefine');\nmodule.exports = function (target, src, safe) {\n for (var key in src) redefine(target, key, src[key], safe);\n return target;\n};\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar TO_STRING = 'toString';\nvar $toString = Function[TO_STRING];\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","'use strict';\nvar global = require('./_global');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n var C = global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2018 Denis Pushkarev (zloirock.ru)'\n});\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it, TYPE) {\n if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n return it;\n};\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar MAP = 'Map';\n\n// 23.1 Map Objects\nmodule.exports = require('./_collection')(MAP, function (get) {\n return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = strong.getEntry(validate(this, MAP), key);\n return entry && entry.v;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);\n }\n}, strong, true);\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar SET = 'Set';\n\n// 23.2 Set Objects\nmodule.exports = require('./_collection')(SET, function (get) {\n return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);\n }\n}, strong);\n","'use strict';\nvar each = require('./_array-methods')(0);\nvar redefine = require('./_redefine');\nvar meta = require('./_meta');\nvar assign = require('./_object-assign');\nvar weak = require('./_collection-weak');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar validate = require('./_validate-collection');\nvar WEAK_MAP = 'WeakMap';\nvar getWeak = meta.getWeak;\nvar isExtensible = Object.isExtensible;\nvar uncaughtFrozenStore = weak.ufstore;\nvar tmp = {};\nvar InternalMap;\n\nvar wrapper = function (get) {\n return function WeakMap() {\n return get(this, arguments.length > 0 ? arguments[0] : undefined);\n };\n};\n\nvar methods = {\n // 23.3.3.3 WeakMap.prototype.get(key)\n get: function get(key) {\n if (isObject(key)) {\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);\n return data ? data[this._i] : undefined;\n }\n },\n // 23.3.3.5 WeakMap.prototype.set(key, value)\n set: function set(key, value) {\n return weak.def(validate(this, WEAK_MAP), key, value);\n }\n};\n\n// 23.3 WeakMap Objects\nvar $WeakMap = module.exports = require('./_collection')(WEAK_MAP, wrapper, methods, weak, true, true);\n\n// IE11 WeakMap frozen keys fix\nif (fails(function () { return new $WeakMap().set((Object.freeze || Object)(tmp), 7).get(tmp) != 7; })) {\n InternalMap = weak.getConstructor(wrapper, WEAK_MAP);\n assign(InternalMap.prototype, methods);\n meta.NEED = true;\n each(['delete', 'has', 'get', 'set'], function (key) {\n var proto = $WeakMap.prototype;\n var method = proto[key];\n redefine(proto, key, function (a, b) {\n // store frozen objects on internal weakmap shim\n if (isObject(a) && !isExtensible(a)) {\n if (!this._f) this._f = new InternalMap();\n var result = this._f[key](a, b);\n return key == 'set' ? this : result;\n // store all the rest on native weakmap\n } return method.call(this, a, b);\n });\n });\n}\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar toMetaKey = metadata.key;\nvar ordinaryDefineOwnMetadata = metadata.set;\n\nmetadata.exp({ defineMetadata: function defineMetadata(metadataKey, metadataValue, target, targetKey) {\n ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), toMetaKey(targetKey));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar toMetaKey = metadata.key;\nvar getOrCreateMetadataMap = metadata.map;\nvar store = metadata.store;\n\nmetadata.exp({ deleteMetadata: function deleteMetadata(metadataKey, target /* , targetKey */) {\n var targetKey = arguments.length < 3 ? undefined : toMetaKey(arguments[2]);\n var metadataMap = getOrCreateMetadataMap(anObject(target), targetKey, false);\n if (metadataMap === undefined || !metadataMap['delete'](metadataKey)) return false;\n if (metadataMap.size) return true;\n var targetMetadata = store.get(target);\n targetMetadata['delete'](targetKey);\n return !!targetMetadata.size || store['delete'](target);\n} });\n","var Set = require('./es6.set');\nvar from = require('./_array-from-iterable');\nvar metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar ordinaryOwnMetadataKeys = metadata.keys;\nvar toMetaKey = metadata.key;\n\nvar ordinaryMetadataKeys = function (O, P) {\n var oKeys = ordinaryOwnMetadataKeys(O, P);\n var parent = getPrototypeOf(O);\n if (parent === null) return oKeys;\n var pKeys = ordinaryMetadataKeys(parent, P);\n return pKeys.length ? oKeys.length ? from(new Set(oKeys.concat(pKeys))) : pKeys : oKeys;\n};\n\nmetadata.exp({ getMetadataKeys: function getMetadataKeys(target /* , targetKey */) {\n return ordinaryMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar ordinaryHasOwnMetadata = metadata.has;\nvar ordinaryGetOwnMetadata = metadata.get;\nvar toMetaKey = metadata.key;\n\nvar ordinaryGetMetadata = function (MetadataKey, O, P) {\n var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn) return ordinaryGetOwnMetadata(MetadataKey, O, P);\n var parent = getPrototypeOf(O);\n return parent !== null ? ordinaryGetMetadata(MetadataKey, parent, P) : undefined;\n};\n\nmetadata.exp({ getMetadata: function getMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryGetMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar ordinaryOwnMetadataKeys = metadata.keys;\nvar toMetaKey = metadata.key;\n\nmetadata.exp({ getOwnMetadataKeys: function getOwnMetadataKeys(target /* , targetKey */) {\n return ordinaryOwnMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar ordinaryGetOwnMetadata = metadata.get;\nvar toMetaKey = metadata.key;\n\nmetadata.exp({ getOwnMetadata: function getOwnMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryGetOwnMetadata(metadataKey, anObject(target)\n , arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar ordinaryHasOwnMetadata = metadata.has;\nvar toMetaKey = metadata.key;\n\nvar ordinaryHasMetadata = function (MetadataKey, O, P) {\n var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn) return true;\n var parent = getPrototypeOf(O);\n return parent !== null ? ordinaryHasMetadata(MetadataKey, parent, P) : false;\n};\n\nmetadata.exp({ hasMetadata: function hasMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryHasMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar ordinaryHasOwnMetadata = metadata.has;\nvar toMetaKey = metadata.key;\n\nmetadata.exp({ hasOwnMetadata: function hasOwnMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryHasOwnMetadata(metadataKey, anObject(target)\n , arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n","var $metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar toMetaKey = $metadata.key;\nvar ordinaryDefineOwnMetadata = $metadata.set;\n\n$metadata.exp({ metadata: function metadata(metadataKey, metadataValue) {\n return function decorator(target, targetKey) {\n ordinaryDefineOwnMetadata(\n metadataKey, metadataValue,\n (targetKey !== undefined ? anObject : aFunction)(target),\n toMetaKey(targetKey)\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(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(factory());\n}(this, (function () { 'use strict';\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 */\nvar Zone$1 = (function (global) {\n var FUNCTION = 'function';\n var performance = global['performance'];\n function mark(name) {\n performance && performance['mark'] && performance['mark'](name);\n }\n function performanceMeasure(name, label) {\n performance && performance['measure'] && performance['measure'](name, label);\n }\n mark('Zone');\n if (global['Zone']) {\n throw new Error('Zone already loaded.');\n }\n var Zone = /** @class */ (function () {\n function Zone(parent, zoneSpec) {\n this._properties = null;\n this._parent = parent;\n this._name = zoneSpec ? zoneSpec.name || 'unnamed' : '';\n this._properties = zoneSpec && zoneSpec.properties || {};\n this._zoneDelegate =\n new ZoneDelegate(this, this._parent && this._parent._zoneDelegate, zoneSpec);\n }\n Zone.assertZonePatched = function () {\n if (global['Promise'] !== patches['ZoneAwarePromise']) {\n throw new Error('Zone.js has detected that ZoneAwarePromise `(window|global).Promise` ' +\n 'has been overwritten.\\n' +\n 'Most likely cause is that a Promise polyfill has been loaded ' +\n 'after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. ' +\n 'If you must load one, do so before loading zone.js.)');\n }\n };\n Object.defineProperty(Zone, \"root\", {\n get: function () {\n var zone = Zone.current;\n while (zone.parent) {\n zone = zone.parent;\n }\n return zone;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Zone, \"current\", {\n get: function () {\n return _currentZoneFrame.zone;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Zone, \"currentTask\", {\n get: function () {\n return _currentTask;\n },\n enumerable: true,\n configurable: true\n });\n Zone.__load_patch = function (name, fn) {\n if (patches.hasOwnProperty(name)) {\n throw Error('Already loaded patch: ' + name);\n }\n else if (!global['__Zone_disable_' + name]) {\n var perfName = 'Zone:' + name;\n mark(perfName);\n patches[name] = fn(global, Zone, _api);\n performanceMeasure(perfName, perfName);\n }\n };\n Object.defineProperty(Zone.prototype, \"parent\", {\n get: function () {\n return this._parent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Zone.prototype, \"name\", {\n get: function () {\n return this._name;\n },\n enumerable: true,\n configurable: true\n });\n Zone.prototype.get = function (key) {\n var zone = this.getZoneWith(key);\n if (zone)\n return zone._properties[key];\n };\n Zone.prototype.getZoneWith = function (key) {\n var current = this;\n while (current) {\n if (current._properties.hasOwnProperty(key)) {\n return current;\n }\n current = current._parent;\n }\n return null;\n };\n Zone.prototype.fork = function (zoneSpec) {\n if (!zoneSpec)\n throw new Error('ZoneSpec required!');\n return this._zoneDelegate.fork(this, zoneSpec);\n };\n Zone.prototype.wrap = function (callback, source) {\n if (typeof callback !== FUNCTION) {\n throw new Error('Expecting function got: ' + callback);\n }\n var _callback = this._zoneDelegate.intercept(this, callback, source);\n var zone = this;\n return function () {\n return zone.runGuarded(_callback, this, arguments, source);\n };\n };\n Zone.prototype.run = function (callback, applyThis, applyArgs, source) {\n if (applyThis === void 0) { applyThis = undefined; }\n if (applyArgs === void 0) { applyArgs = null; }\n if (source === void 0) { source = null; }\n _currentZoneFrame = { parent: _currentZoneFrame, zone: this };\n try {\n return this._zoneDelegate.invoke(this, callback, applyThis, applyArgs, source);\n }\n finally {\n _currentZoneFrame = _currentZoneFrame.parent;\n }\n };\n Zone.prototype.runGuarded = function (callback, applyThis, applyArgs, source) {\n if (applyThis === void 0) { applyThis = null; }\n if (applyArgs === void 0) { applyArgs = null; }\n if (source === void 0) { source = null; }\n _currentZoneFrame = { parent: _currentZoneFrame, zone: this };\n try {\n try {\n return this._zoneDelegate.invoke(this, callback, applyThis, applyArgs, source);\n }\n catch (error) {\n if (this._zoneDelegate.handleError(this, error)) {\n throw error;\n }\n }\n }\n finally {\n _currentZoneFrame = _currentZoneFrame.parent;\n }\n };\n Zone.prototype.runTask = function (task, applyThis, applyArgs) {\n if (task.zone != this) {\n throw new Error('A task can only be run in the zone of creation! (Creation: ' +\n (task.zone || NO_ZONE).name + '; Execution: ' + this.name + ')');\n }\n // https://github.com/angular/zone.js/issues/778, sometimes eventTask\n // will run in notScheduled(canceled) state, we should not try to\n // run such kind of task but just return\n // we have to define an variable here, if not\n // typescript compiler will complain below\n var isNotScheduled = task.state === notScheduled;\n if (isNotScheduled && task.type === eventTask) {\n return;\n }\n var reEntryGuard = task.state != running;\n reEntryGuard && task._transitionTo(running, scheduled);\n task.runCount++;\n var previousTask = _currentTask;\n _currentTask = task;\n _currentZoneFrame = { parent: _currentZoneFrame, zone: this };\n try {\n if (task.type == macroTask && task.data && !task.data.isPeriodic) {\n task.cancelFn = null;\n }\n try {\n return this._zoneDelegate.invokeTask(this, task, applyThis, applyArgs);\n }\n catch (error) {\n if (this._zoneDelegate.handleError(this, error)) {\n throw error;\n }\n }\n }\n finally {\n // if the task's state is notScheduled or unknown, then it has already been cancelled\n // we should not reset the state to scheduled\n if (task.state !== notScheduled && task.state !== unknown) {\n if (task.type == eventTask || (task.data && task.data.isPeriodic)) {\n reEntryGuard && task._transitionTo(scheduled, running);\n }\n else {\n task.runCount = 0;\n this._updateTaskCount(task, -1);\n reEntryGuard &&\n task._transitionTo(notScheduled, running, notScheduled);\n }\n }\n _currentZoneFrame = _currentZoneFrame.parent;\n _currentTask = previousTask;\n }\n };\n Zone.prototype.scheduleTask = function (task) {\n if (task.zone && task.zone !== this) {\n // check if the task was rescheduled, the newZone\n // should not be the children of the original zone\n var newZone = this;\n while (newZone) {\n if (newZone === task.zone) {\n throw Error(\"can not reschedule task to \" + this\n .name + \" which is descendants of the original zone \" + task.zone.name);\n }\n newZone = newZone.parent;\n }\n }\n task._transitionTo(scheduling, notScheduled);\n var zoneDelegates = [];\n task._zoneDelegates = zoneDelegates;\n task._zone = this;\n try {\n task = this._zoneDelegate.scheduleTask(this, task);\n }\n catch (err) {\n // should set task's state to unknown when scheduleTask throw error\n // because the err may from reschedule, so the fromState maybe notScheduled\n task._transitionTo(unknown, scheduling, notScheduled);\n // TODO: @JiaLiPassion, should we check the result from handleError?\n this._zoneDelegate.handleError(this, err);\n throw err;\n }\n if (task._zoneDelegates === zoneDelegates) {\n // we have to check because internally the delegate can reschedule the task.\n this._updateTaskCount(task, 1);\n }\n if (task.state == scheduling) {\n task._transitionTo(scheduled, scheduling);\n }\n return task;\n };\n Zone.prototype.scheduleMicroTask = function (source, callback, data, customSchedule) {\n return this.scheduleTask(new ZoneTask(microTask, source, callback, data, customSchedule, null));\n };\n Zone.prototype.scheduleMacroTask = function (source, callback, data, customSchedule, customCancel) {\n return this.scheduleTask(new ZoneTask(macroTask, source, callback, data, customSchedule, customCancel));\n };\n Zone.prototype.scheduleEventTask = function (source, callback, data, customSchedule, customCancel) {\n return this.scheduleTask(new ZoneTask(eventTask, source, callback, data, customSchedule, customCancel));\n };\n Zone.prototype.cancelTask = function (task) {\n if (task.zone != this)\n throw new Error('A task can only be cancelled in the zone of creation! (Creation: ' +\n (task.zone || NO_ZONE).name + '; Execution: ' + this.name + ')');\n task._transitionTo(canceling, scheduled, running);\n try {\n this._zoneDelegate.cancelTask(this, task);\n }\n catch (err) {\n // if error occurs when cancelTask, transit the state to unknown\n task._transitionTo(unknown, canceling);\n this._zoneDelegate.handleError(this, err);\n throw err;\n }\n this._updateTaskCount(task, -1);\n task._transitionTo(notScheduled, canceling);\n task.runCount = 0;\n return task;\n };\n Zone.prototype._updateTaskCount = function (task, count) {\n var zoneDelegates = task._zoneDelegates;\n if (count == -1) {\n task._zoneDelegates = null;\n }\n for (var i = 0; i < zoneDelegates.length; i++) {\n zoneDelegates[i]._updateTaskCount(task.type, count);\n }\n };\n Zone.__symbol__ = __symbol__;\n return Zone;\n }());\n var DELEGATE_ZS = {\n name: '',\n onHasTask: function (delegate, _, target, hasTaskState) {\n return delegate.hasTask(target, hasTaskState);\n },\n onScheduleTask: function (delegate, _, target, task) {\n return delegate.scheduleTask(target, task);\n },\n onInvokeTask: function (delegate, _, target, task, applyThis, applyArgs) { return delegate.invokeTask(target, task, applyThis, applyArgs); },\n onCancelTask: function (delegate, _, target, task) {\n return delegate.cancelTask(target, task);\n }\n };\n var ZoneDelegate = /** @class */ (function () {\n function ZoneDelegate(zone, parentDelegate, zoneSpec) {\n this._taskCounts = { 'microTask': 0, 'macroTask': 0, 'eventTask': 0 };\n this.zone = zone;\n this._parentDelegate = parentDelegate;\n this._forkZS = zoneSpec && (zoneSpec && zoneSpec.onFork ? zoneSpec : parentDelegate._forkZS);\n this._forkDlgt = zoneSpec && (zoneSpec.onFork ? parentDelegate : parentDelegate._forkDlgt);\n this._forkCurrZone = zoneSpec && (zoneSpec.onFork ? this.zone : parentDelegate.zone);\n this._interceptZS =\n zoneSpec && (zoneSpec.onIntercept ? zoneSpec : parentDelegate._interceptZS);\n this._interceptDlgt =\n zoneSpec && (zoneSpec.onIntercept ? parentDelegate : parentDelegate._interceptDlgt);\n this._interceptCurrZone =\n zoneSpec && (zoneSpec.onIntercept ? this.zone : parentDelegate.zone);\n this._invokeZS = zoneSpec && (zoneSpec.onInvoke ? zoneSpec : parentDelegate._invokeZS);\n this._invokeDlgt =\n zoneSpec && (zoneSpec.onInvoke ? parentDelegate : parentDelegate._invokeDlgt);\n this._invokeCurrZone = zoneSpec && (zoneSpec.onInvoke ? this.zone : parentDelegate.zone);\n this._handleErrorZS =\n zoneSpec && (zoneSpec.onHandleError ? zoneSpec : parentDelegate._handleErrorZS);\n this._handleErrorDlgt =\n zoneSpec && (zoneSpec.onHandleError ? parentDelegate : parentDelegate._handleErrorDlgt);\n this._handleErrorCurrZone =\n zoneSpec && (zoneSpec.onHandleError ? this.zone : parentDelegate.zone);\n this._scheduleTaskZS =\n zoneSpec && (zoneSpec.onScheduleTask ? zoneSpec : parentDelegate._scheduleTaskZS);\n this._scheduleTaskDlgt =\n zoneSpec && (zoneSpec.onScheduleTask ? parentDelegate : parentDelegate._scheduleTaskDlgt);\n this._scheduleTaskCurrZone =\n zoneSpec && (zoneSpec.onScheduleTask ? this.zone : parentDelegate.zone);\n this._invokeTaskZS =\n zoneSpec && (zoneSpec.onInvokeTask ? zoneSpec : parentDelegate._invokeTaskZS);\n this._invokeTaskDlgt =\n zoneSpec && (zoneSpec.onInvokeTask ? parentDelegate : parentDelegate._invokeTaskDlgt);\n this._invokeTaskCurrZone =\n zoneSpec && (zoneSpec.onInvokeTask ? this.zone : parentDelegate.zone);\n this._cancelTaskZS =\n zoneSpec && (zoneSpec.onCancelTask ? zoneSpec : parentDelegate._cancelTaskZS);\n this._cancelTaskDlgt =\n zoneSpec && (zoneSpec.onCancelTask ? parentDelegate : parentDelegate._cancelTaskDlgt);\n this._cancelTaskCurrZone =\n zoneSpec && (zoneSpec.onCancelTask ? this.zone : parentDelegate.zone);\n this._hasTaskZS = null;\n this._hasTaskDlgt = null;\n this._hasTaskDlgtOwner = null;\n this._hasTaskCurrZone = null;\n var zoneSpecHasTask = zoneSpec && zoneSpec.onHasTask;\n var parentHasTask = parentDelegate && parentDelegate._hasTaskZS;\n if (zoneSpecHasTask || parentHasTask) {\n // If we need to report hasTask, than this ZS needs to do ref counting on tasks. In such\n // a case all task related interceptors must go through this ZD. We can't short circuit it.\n this._hasTaskZS = zoneSpecHasTask ? zoneSpec : DELEGATE_ZS;\n this._hasTaskDlgt = parentDelegate;\n this._hasTaskDlgtOwner = this;\n this._hasTaskCurrZone = zone;\n if (!zoneSpec.onScheduleTask) {\n this._scheduleTaskZS = DELEGATE_ZS;\n this._scheduleTaskDlgt = parentDelegate;\n this._scheduleTaskCurrZone = this.zone;\n }\n if (!zoneSpec.onInvokeTask) {\n this._invokeTaskZS = DELEGATE_ZS;\n this._invokeTaskDlgt = parentDelegate;\n this._invokeTaskCurrZone = this.zone;\n }\n if (!zoneSpec.onCancelTask) {\n this._cancelTaskZS = DELEGATE_ZS;\n this._cancelTaskDlgt = parentDelegate;\n this._cancelTaskCurrZone = this.zone;\n }\n }\n }\n ZoneDelegate.prototype.fork = function (targetZone, zoneSpec) {\n return this._forkZS ? this._forkZS.onFork(this._forkDlgt, this.zone, targetZone, zoneSpec) :\n new Zone(targetZone, zoneSpec);\n };\n ZoneDelegate.prototype.intercept = function (targetZone, callback, source) {\n return this._interceptZS ?\n this._interceptZS.onIntercept(this._interceptDlgt, this._interceptCurrZone, targetZone, callback, source) :\n callback;\n };\n ZoneDelegate.prototype.invoke = function (targetZone, callback, applyThis, applyArgs, source) {\n return this._invokeZS ?\n this._invokeZS.onInvoke(this._invokeDlgt, this._invokeCurrZone, targetZone, callback, applyThis, applyArgs, source) :\n callback.apply(applyThis, applyArgs);\n };\n ZoneDelegate.prototype.handleError = function (targetZone, error) {\n return this._handleErrorZS ?\n this._handleErrorZS.onHandleError(this._handleErrorDlgt, this._handleErrorCurrZone, targetZone, error) :\n true;\n };\n ZoneDelegate.prototype.scheduleTask = function (targetZone, task) {\n var returnTask = task;\n if (this._scheduleTaskZS) {\n if (this._hasTaskZS) {\n returnTask._zoneDelegates.push(this._hasTaskDlgtOwner);\n }\n returnTask = this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt, this._scheduleTaskCurrZone, targetZone, task);\n if (!returnTask)\n returnTask = task;\n }\n else {\n if (task.scheduleFn) {\n task.scheduleFn(task);\n }\n else if (task.type == microTask) {\n scheduleMicroTask(task);\n }\n else {\n throw new Error('Task is missing scheduleFn.');\n }\n }\n return returnTask;\n };\n ZoneDelegate.prototype.invokeTask = function (targetZone, task, applyThis, applyArgs) {\n return this._invokeTaskZS ?\n this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt, this._invokeTaskCurrZone, targetZone, task, applyThis, applyArgs) :\n task.callback.apply(applyThis, applyArgs);\n };\n ZoneDelegate.prototype.cancelTask = function (targetZone, task) {\n var value;\n if (this._cancelTaskZS) {\n value = this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt, this._cancelTaskCurrZone, targetZone, task);\n }\n else {\n if (!task.cancelFn) {\n throw Error('Task is not cancelable');\n }\n value = task.cancelFn(task);\n }\n return value;\n };\n ZoneDelegate.prototype.hasTask = function (targetZone, isEmpty) {\n // hasTask should not throw error so other ZoneDelegate\n // can still trigger hasTask callback\n try {\n return this._hasTaskZS &&\n this._hasTaskZS.onHasTask(this._hasTaskDlgt, this._hasTaskCurrZone, targetZone, isEmpty);\n }\n catch (err) {\n this.handleError(targetZone, err);\n }\n };\n ZoneDelegate.prototype._updateTaskCount = function (type, count) {\n var counts = this._taskCounts;\n var prev = counts[type];\n var next = counts[type] = prev + count;\n if (next < 0) {\n throw new Error('More tasks executed then were scheduled.');\n }\n if (prev == 0 || next == 0) {\n var isEmpty = {\n microTask: counts['microTask'] > 0,\n macroTask: counts['macroTask'] > 0,\n eventTask: counts['eventTask'] > 0,\n change: type\n };\n this.hasTask(this.zone, isEmpty);\n }\n };\n return ZoneDelegate;\n }());\n var ZoneTask = /** @class */ (function () {\n function ZoneTask(type, source, callback, options, scheduleFn, cancelFn) {\n this._zone = null;\n this.runCount = 0;\n this._zoneDelegates = null;\n this._state = 'notScheduled';\n this.type = type;\n this.source = source;\n this.data = options;\n this.scheduleFn = scheduleFn;\n this.cancelFn = cancelFn;\n this.callback = callback;\n var self = this;\n // TODO: @JiaLiPassion options should have interface\n if (type === eventTask && options && options.useG) {\n this.invoke = ZoneTask.invokeTask;\n }\n else {\n this.invoke = function () {\n return ZoneTask.invokeTask.call(global, self, this, arguments);\n };\n }\n }\n ZoneTask.invokeTask = function (task, target, args) {\n if (!task) {\n task = this;\n }\n _numberOfNestedTaskFrames++;\n try {\n task.runCount++;\n return task.zone.runTask(task, target, args);\n }\n finally {\n if (_numberOfNestedTaskFrames == 1) {\n drainMicroTaskQueue();\n }\n _numberOfNestedTaskFrames--;\n }\n };\n Object.defineProperty(ZoneTask.prototype, \"zone\", {\n get: function () {\n return this._zone;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ZoneTask.prototype, \"state\", {\n get: function () {\n return this._state;\n },\n enumerable: true,\n configurable: true\n });\n ZoneTask.prototype.cancelScheduleRequest = function () {\n this._transitionTo(notScheduled, scheduling);\n };\n ZoneTask.prototype._transitionTo = function (toState, fromState1, fromState2) {\n if (this._state === fromState1 || this._state === fromState2) {\n this._state = toState;\n if (toState == notScheduled) {\n this._zoneDelegates = null;\n }\n }\n else {\n throw new Error(this.type + \" '\" + this.source + \"': can not transition to '\" + toState + \"', expecting state '\" + fromState1 + \"'\" + (fromState2 ?\n ' or \\'' + fromState2 + '\\'' :\n '') + \", was '\" + this._state + \"'.\");\n }\n };\n ZoneTask.prototype.toString = function () {\n if (this.data && typeof this.data.handleId !== 'undefined') {\n return this.data.handleId;\n }\n else {\n return Object.prototype.toString.call(this);\n }\n };\n // add toJSON method to prevent cyclic error when\n // call JSON.stringify(zoneTask)\n ZoneTask.prototype.toJSON = function () {\n return {\n type: this.type,\n state: this.state,\n source: this.source,\n zone: this.zone.name,\n runCount: this.runCount\n };\n };\n return ZoneTask;\n }());\n //////////////////////////////////////////////////////\n //////////////////////////////////////////////////////\n /// MICROTASK QUEUE\n //////////////////////////////////////////////////////\n //////////////////////////////////////////////////////\n var symbolSetTimeout = __symbol__('setTimeout');\n var symbolPromise = __symbol__('Promise');\n var symbolThen = __symbol__('then');\n var _microTaskQueue = [];\n var _isDrainingMicrotaskQueue = false;\n var nativeMicroTaskQueuePromise;\n function scheduleMicroTask(task) {\n // if we are not running in any task, and there has not been anything scheduled\n // we must bootstrap the initial task creation by manually scheduling the drain\n if (_numberOfNestedTaskFrames === 0 && _microTaskQueue.length === 0) {\n // We are not running in Task, so we need to kickstart the microtask queue.\n if (!nativeMicroTaskQueuePromise) {\n if (global[symbolPromise]) {\n nativeMicroTaskQueuePromise = global[symbolPromise].resolve(0);\n }\n }\n if (nativeMicroTaskQueuePromise) {\n nativeMicroTaskQueuePromise[symbolThen](drainMicroTaskQueue);\n }\n else {\n global[symbolSetTimeout](drainMicroTaskQueue, 0);\n }\n }\n task && _microTaskQueue.push(task);\n }\n function drainMicroTaskQueue() {\n if (!_isDrainingMicrotaskQueue) {\n _isDrainingMicrotaskQueue = true;\n while (_microTaskQueue.length) {\n var queue = _microTaskQueue;\n _microTaskQueue = [];\n for (var i = 0; i < queue.length; i++) {\n var task = queue[i];\n try {\n task.zone.runTask(task, null, null);\n }\n catch (error) {\n _api.onUnhandledError(error);\n }\n }\n }\n _api.microtaskDrainDone();\n _isDrainingMicrotaskQueue = false;\n }\n }\n //////////////////////////////////////////////////////\n //////////////////////////////////////////////////////\n /// BOOTSTRAP\n //////////////////////////////////////////////////////\n //////////////////////////////////////////////////////\n var NO_ZONE = { name: 'NO ZONE' };\n var notScheduled = 'notScheduled', scheduling = 'scheduling', scheduled = 'scheduled', running = 'running', canceling = 'canceling', unknown = 'unknown';\n var microTask = 'microTask', macroTask = 'macroTask', eventTask = 'eventTask';\n var patches = {};\n var _api = {\n symbol: __symbol__,\n currentZoneFrame: function () { return _currentZoneFrame; },\n onUnhandledError: noop,\n microtaskDrainDone: noop,\n scheduleMicroTask: scheduleMicroTask,\n showUncaughtError: function () { return !Zone[__symbol__('ignoreConsoleErrorUncaughtError')]; },\n patchEventTarget: function () { return []; },\n patchOnProperties: noop,\n patchMethod: function () { return noop; },\n bindArguments: function () { return null; },\n setNativePromise: function (NativePromise) {\n // sometimes NativePromise.resolve static function\n // is not ready yet, (such as core-js/es6.promise)\n // so we need to check here.\n if (NativePromise && typeof NativePromise.resolve === FUNCTION) {\n nativeMicroTaskQueuePromise = NativePromise.resolve(0);\n }\n },\n };\n var _currentZoneFrame = { parent: null, zone: new Zone(null, null) };\n var _currentTask = null;\n var _numberOfNestedTaskFrames = 0;\n function noop() { }\n function __symbol__(name) {\n return '__zone_symbol__' + name;\n }\n performanceMeasure('Zone', 'Zone');\n return global['Zone'] = Zone;\n})(typeof window !== 'undefined' && window || typeof self !== 'undefined' && self || global);\n\nZone.__load_patch('ZoneAwarePromise', function (global, Zone, api) {\n var ObjectGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n var ObjectDefineProperty = Object.defineProperty;\n function readableObjectToString(obj) {\n if (obj && obj.toString === Object.prototype.toString) {\n var className = obj.constructor && obj.constructor.name;\n return (className ? className : '') + ': ' + JSON.stringify(obj);\n }\n return obj ? obj.toString() : Object.prototype.toString.call(obj);\n }\n var __symbol__ = api.symbol;\n var _uncaughtPromiseErrors = [];\n var symbolPromise = __symbol__('Promise');\n var symbolThen = __symbol__('then');\n var creationTrace = '__creationTrace__';\n api.onUnhandledError = function (e) {\n if (api.showUncaughtError()) {\n var rejection = e && e.rejection;\n if (rejection) {\n console.error('Unhandled Promise rejection:', rejection instanceof Error ? rejection.message : rejection, '; Zone:', e.zone.name, '; Task:', e.task && e.task.source, '; Value:', rejection, rejection instanceof Error ? rejection.stack : undefined);\n }\n else {\n console.error(e);\n }\n }\n };\n api.microtaskDrainDone = function () {\n while (_uncaughtPromiseErrors.length) {\n var _loop_1 = function () {\n var uncaughtPromiseError = _uncaughtPromiseErrors.shift();\n try {\n uncaughtPromiseError.zone.runGuarded(function () {\n throw uncaughtPromiseError;\n });\n }\n catch (error) {\n handleUnhandledRejection(error);\n }\n };\n while (_uncaughtPromiseErrors.length) {\n _loop_1();\n }\n }\n };\n var UNHANDLED_PROMISE_REJECTION_HANDLER_SYMBOL = __symbol__('unhandledPromiseRejectionHandler');\n function handleUnhandledRejection(e) {\n api.onUnhandledError(e);\n try {\n var handler = Zone[UNHANDLED_PROMISE_REJECTION_HANDLER_SYMBOL];\n if (handler && typeof handler === 'function') {\n handler.call(this, e);\n }\n }\n catch (err) {\n }\n }\n function isThenable(value) {\n return value && value.then;\n }\n function forwardResolution(value) {\n return value;\n }\n function forwardRejection(rejection) {\n return ZoneAwarePromise.reject(rejection);\n }\n var symbolState = __symbol__('state');\n var symbolValue = __symbol__('value');\n var symbolFinally = __symbol__('finally');\n var symbolParentPromiseValue = __symbol__('parentPromiseValue');\n var symbolParentPromiseState = __symbol__('parentPromiseState');\n var source = 'Promise.then';\n var UNRESOLVED = null;\n var RESOLVED = true;\n var REJECTED = false;\n var REJECTED_NO_CATCH = 0;\n function makeResolver(promise, state) {\n return function (v) {\n try {\n resolvePromise(promise, state, v);\n }\n catch (err) {\n resolvePromise(promise, false, err);\n }\n // Do not return value or you will break the Promise spec.\n };\n }\n var once = function () {\n var wasCalled = false;\n return function wrapper(wrappedFunction) {\n return function () {\n if (wasCalled) {\n return;\n }\n wasCalled = true;\n wrappedFunction.apply(null, arguments);\n };\n };\n };\n var TYPE_ERROR = 'Promise resolved with itself';\n var CURRENT_TASK_TRACE_SYMBOL = __symbol__('currentTaskTrace');\n // Promise Resolution\n function resolvePromise(promise, state, value) {\n var onceWrapper = once();\n if (promise === value) {\n throw new TypeError(TYPE_ERROR);\n }\n if (promise[symbolState] === UNRESOLVED) {\n // should only get value.then once based on promise spec.\n var then = null;\n try {\n if (typeof value === 'object' || typeof value === 'function') {\n then = value && value.then;\n }\n }\n catch (err) {\n onceWrapper(function () {\n resolvePromise(promise, false, err);\n })();\n return promise;\n }\n // if (value instanceof ZoneAwarePromise) {\n if (state !== REJECTED && value instanceof ZoneAwarePromise &&\n value.hasOwnProperty(symbolState) && value.hasOwnProperty(symbolValue) &&\n value[symbolState] !== UNRESOLVED) {\n clearRejectedNoCatch(value);\n resolvePromise(promise, value[symbolState], value[symbolValue]);\n }\n else if (state !== REJECTED && typeof then === 'function') {\n try {\n then.call(value, onceWrapper(makeResolver(promise, state)), onceWrapper(makeResolver(promise, false)));\n }\n catch (err) {\n onceWrapper(function () {\n resolvePromise(promise, false, err);\n })();\n }\n }\n else {\n promise[symbolState] = state;\n var queue = promise[symbolValue];\n promise[symbolValue] = value;\n if (promise[symbolFinally] === symbolFinally) {\n // the promise is generated by Promise.prototype.finally \n if (state === RESOLVED) {\n // the state is resolved, should ignore the value\n // and use parent promise value\n promise[symbolState] = promise[symbolParentPromiseState];\n promise[symbolValue] = promise[symbolParentPromiseValue];\n }\n }\n // record task information in value when error occurs, so we can\n // do some additional work such as render longStackTrace\n if (state === REJECTED && value instanceof Error) {\n // check if longStackTraceZone is here\n var trace = Zone.currentTask && Zone.currentTask.data &&\n Zone.currentTask.data[creationTrace];\n if (trace) {\n // only keep the long stack trace into error when in longStackTraceZone\n ObjectDefineProperty(value, CURRENT_TASK_TRACE_SYMBOL, { configurable: true, enumerable: false, writable: true, value: trace });\n }\n }\n for (var i = 0; i < queue.length;) {\n scheduleResolveOrReject(promise, queue[i++], queue[i++], queue[i++], queue[i++]);\n }\n if (queue.length == 0 && state == REJECTED) {\n promise[symbolState] = REJECTED_NO_CATCH;\n try {\n // try to print more readable error log\n throw new Error('Uncaught (in promise): ' + readableObjectToString(value) +\n (value && value.stack ? '\\n' + value.stack : ''));\n }\n catch (err) {\n var error_1 = err;\n error_1.rejection = value;\n error_1.promise = promise;\n error_1.zone = Zone.current;\n error_1.task = Zone.currentTask;\n _uncaughtPromiseErrors.push(error_1);\n api.scheduleMicroTask(); // to make sure that it is running\n }\n }\n }\n }\n // Resolving an already resolved promise is a noop.\n return promise;\n }\n var REJECTION_HANDLED_HANDLER = __symbol__('rejectionHandledHandler');\n function clearRejectedNoCatch(promise) {\n if (promise[symbolState] === REJECTED_NO_CATCH) {\n // if the promise is rejected no catch status\n // and queue.length > 0, means there is a error handler\n // here to handle the rejected promise, we should trigger\n // windows.rejectionhandled eventHandler or nodejs rejectionHandled\n // eventHandler\n try {\n var handler = Zone[REJECTION_HANDLED_HANDLER];\n if (handler && typeof handler === 'function') {\n handler.call(this, { rejection: promise[symbolValue], promise: promise });\n }\n }\n catch (err) {\n }\n promise[symbolState] = REJECTED;\n for (var i = 0; i < _uncaughtPromiseErrors.length; i++) {\n if (promise === _uncaughtPromiseErrors[i].promise) {\n _uncaughtPromiseErrors.splice(i, 1);\n }\n }\n }\n }\n function scheduleResolveOrReject(promise, zone, chainPromise, onFulfilled, onRejected) {\n clearRejectedNoCatch(promise);\n var promiseState = promise[symbolState];\n var delegate = promiseState ?\n (typeof onFulfilled === 'function') ? onFulfilled : forwardResolution :\n (typeof onRejected === 'function') ? onRejected : forwardRejection;\n zone.scheduleMicroTask(source, function () {\n try {\n var parentPromiseValue = promise[symbolValue];\n var isFinallyPromise = chainPromise && symbolFinally === chainPromise[symbolFinally];\n if (isFinallyPromise) {\n // if the promise is generated from finally call, keep parent promise's state and value\n chainPromise[symbolParentPromiseValue] = parentPromiseValue;\n chainPromise[symbolParentPromiseState] = promiseState;\n }\n // should not pass value to finally callback\n var value = zone.run(delegate, undefined, isFinallyPromise && delegate !== forwardRejection && delegate !== forwardResolution ? [] : [parentPromiseValue]);\n resolvePromise(chainPromise, true, value);\n }\n catch (error) {\n // if error occurs, should always return this error\n resolvePromise(chainPromise, false, error);\n }\n }, chainPromise);\n }\n var ZONE_AWARE_PROMISE_TO_STRING = 'function ZoneAwarePromise() { [native code] }';\n var ZoneAwarePromise = /** @class */ (function () {\n function ZoneAwarePromise(executor) {\n var promise = this;\n if (!(promise instanceof ZoneAwarePromise)) {\n throw new Error('Must be an instanceof Promise.');\n }\n promise[symbolState] = UNRESOLVED;\n promise[symbolValue] = []; // queue;\n try {\n executor && executor(makeResolver(promise, RESOLVED), makeResolver(promise, REJECTED));\n }\n catch (error) {\n resolvePromise(promise, false, error);\n }\n }\n ZoneAwarePromise.toString = function () {\n return ZONE_AWARE_PROMISE_TO_STRING;\n };\n ZoneAwarePromise.resolve = function (value) {\n return resolvePromise(new this(null), RESOLVED, value);\n };\n ZoneAwarePromise.reject = function (error) {\n return resolvePromise(new this(null), REJECTED, error);\n };\n ZoneAwarePromise.race = function (values) {\n var resolve;\n var reject;\n var promise = new this(function (res, rej) {\n resolve = res;\n reject = rej;\n });\n function onResolve(value) {\n promise && (promise = null || resolve(value));\n }\n function onReject(error) {\n promise && (promise = null || reject(error));\n }\n for (var _i = 0, values_1 = values; _i < values_1.length; _i++) {\n var value = values_1[_i];\n if (!isThenable(value)) {\n value = this.resolve(value);\n }\n value.then(onResolve, onReject);\n }\n return promise;\n };\n ZoneAwarePromise.all = function (values) {\n var resolve;\n var reject;\n var promise = new this(function (res, rej) {\n resolve = res;\n reject = rej;\n });\n var count = 0;\n var resolvedValues = [];\n for (var _i = 0, values_2 = values; _i < values_2.length; _i++) {\n var value = values_2[_i];\n if (!isThenable(value)) {\n value = this.resolve(value);\n }\n value.then((function (index) { return function (value) {\n resolvedValues[index] = value;\n count--;\n if (!count) {\n resolve(resolvedValues);\n }\n }; })(count), reject);\n count++;\n }\n if (!count)\n resolve(resolvedValues);\n return promise;\n };\n ZoneAwarePromise.prototype.then = function (onFulfilled, onRejected) {\n var chainPromise = new this.constructor(null);\n var zone = Zone.current;\n if (this[symbolState] == UNRESOLVED) {\n this[symbolValue].push(zone, chainPromise, onFulfilled, onRejected);\n }\n else {\n scheduleResolveOrReject(this, zone, chainPromise, onFulfilled, onRejected);\n }\n return chainPromise;\n };\n ZoneAwarePromise.prototype.catch = function (onRejected) {\n return this.then(null, onRejected);\n };\n ZoneAwarePromise.prototype.finally = function (onFinally) {\n var chainPromise = new this.constructor(null);\n chainPromise[symbolFinally] = symbolFinally;\n var zone = Zone.current;\n if (this[symbolState] == UNRESOLVED) {\n this[symbolValue].push(zone, chainPromise, onFinally, onFinally);\n }\n else {\n scheduleResolveOrReject(this, zone, chainPromise, onFinally, onFinally);\n }\n return chainPromise;\n };\n return ZoneAwarePromise;\n }());\n // Protect against aggressive optimizers dropping seemingly unused properties.\n // E.g. Closure Compiler in advanced mode.\n ZoneAwarePromise['resolve'] = ZoneAwarePromise.resolve;\n ZoneAwarePromise['reject'] = ZoneAwarePromise.reject;\n ZoneAwarePromise['race'] = ZoneAwarePromise.race;\n ZoneAwarePromise['all'] = ZoneAwarePromise.all;\n var NativePromise = global[symbolPromise] = global['Promise'];\n var ZONE_AWARE_PROMISE = Zone.__symbol__('ZoneAwarePromise');\n var desc = ObjectGetOwnPropertyDescriptor(global, 'Promise');\n if (!desc || desc.configurable) {\n desc && delete desc.writable;\n desc && delete desc.value;\n if (!desc) {\n desc = { configurable: true, enumerable: true };\n }\n desc.get = function () {\n // if we already set ZoneAwarePromise, use patched one\n // otherwise return native one.\n return global[ZONE_AWARE_PROMISE] ? global[ZONE_AWARE_PROMISE] : global[symbolPromise];\n };\n desc.set = function (NewNativePromise) {\n if (NewNativePromise === ZoneAwarePromise) {\n // if the NewNativePromise is ZoneAwarePromise\n // save to global\n global[ZONE_AWARE_PROMISE] = NewNativePromise;\n }\n else {\n // if the NewNativePromise is not ZoneAwarePromise\n // for example: after load zone.js, some library just\n // set es6-promise to global, if we set it to global\n // directly, assertZonePatched will fail and angular\n // will not loaded, so we just set the NewNativePromise\n // to global[symbolPromise], so the result is just like\n // we load ES6 Promise before zone.js\n global[symbolPromise] = NewNativePromise;\n if (!NewNativePromise.prototype[symbolThen]) {\n patchThen(NewNativePromise);\n }\n api.setNativePromise(NewNativePromise);\n }\n };\n ObjectDefineProperty(global, 'Promise', desc);\n }\n global['Promise'] = ZoneAwarePromise;\n var symbolThenPatched = __symbol__('thenPatched');\n function patchThen(Ctor) {\n var proto = Ctor.prototype;\n var prop = ObjectGetOwnPropertyDescriptor(proto, 'then');\n if (prop && (prop.writable === false || !prop.configurable)) {\n // check Ctor.prototype.then propertyDescriptor is writable or not\n // in meteor env, writable is false, we should ignore such case\n return;\n }\n var originalThen = proto.then;\n // Keep a reference to the original method.\n proto[symbolThen] = originalThen;\n Ctor.prototype.then = function (onResolve, onReject) {\n var _this = this;\n var wrapped = new ZoneAwarePromise(function (resolve, reject) {\n originalThen.call(_this, resolve, reject);\n });\n return wrapped.then(onResolve, onReject);\n };\n Ctor[symbolThenPatched] = true;\n }\n function zoneify(fn) {\n return function () {\n var resultPromise = fn.apply(this, arguments);\n if (resultPromise instanceof ZoneAwarePromise) {\n return resultPromise;\n }\n var ctor = resultPromise.constructor;\n if (!ctor[symbolThenPatched]) {\n patchThen(ctor);\n }\n return resultPromise;\n };\n }\n if (NativePromise) {\n patchThen(NativePromise);\n var fetch_1 = global['fetch'];\n if (typeof fetch_1 == 'function') {\n global['fetch'] = zoneify(fetch_1);\n }\n }\n // This is not part of public API, but it is useful for tests, so we expose it.\n Promise[Zone.__symbol__('uncaughtPromiseErrors')] = _uncaughtPromiseErrors;\n return ZoneAwarePromise;\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/**\n * Suppress closure compiler errors about unknown 'Zone' variable\n * @fileoverview\n * @suppress {undefinedVars,globalThis,missingRequire}\n */\n// issue #989, to reduce bundle size, use short name\n/** Object.getOwnPropertyDescriptor */\nvar ObjectGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n/** Object.defineProperty */\nvar ObjectDefineProperty = Object.defineProperty;\n/** Object.getPrototypeOf */\nvar ObjectGetPrototypeOf = Object.getPrototypeOf;\n/** Object.create */\nvar ObjectCreate = Object.create;\n/** Array.prototype.slice */\nvar ArraySlice = Array.prototype.slice;\n/** addEventListener string const */\nvar ADD_EVENT_LISTENER_STR = 'addEventListener';\n/** removeEventListener string const */\nvar REMOVE_EVENT_LISTENER_STR = 'removeEventListener';\n/** zoneSymbol addEventListener */\nvar ZONE_SYMBOL_ADD_EVENT_LISTENER = Zone.__symbol__(ADD_EVENT_LISTENER_STR);\n/** zoneSymbol removeEventListener */\nvar ZONE_SYMBOL_REMOVE_EVENT_LISTENER = Zone.__symbol__(REMOVE_EVENT_LISTENER_STR);\n/** true string const */\nvar TRUE_STR = 'true';\n/** false string const */\nvar FALSE_STR = 'false';\n/** __zone_symbol__ string const */\nvar ZONE_SYMBOL_PREFIX = '__zone_symbol__';\nfunction wrapWithCurrentZone(callback, source) {\n return Zone.current.wrap(callback, source);\n}\nfunction scheduleMacroTaskWithCurrentZone(source, callback, data, customSchedule, customCancel) {\n return Zone.current.scheduleMacroTask(source, callback, data, customSchedule, customCancel);\n}\nvar zoneSymbol = Zone.__symbol__;\nvar isWindowExists = typeof window !== 'undefined';\nvar internalWindow = isWindowExists ? window : undefined;\nvar _global = isWindowExists && internalWindow || typeof self === 'object' && self || global;\nvar REMOVE_ATTRIBUTE = 'removeAttribute';\nvar NULL_ON_PROP_VALUE = [null];\nfunction bindArguments(args, source) {\n for (var i = args.length - 1; i >= 0; i--) {\n if (typeof args[i] === 'function') {\n args[i] = wrapWithCurrentZone(args[i], source + '_' + i);\n }\n }\n return args;\n}\nfunction patchPrototype(prototype, fnNames) {\n var source = prototype.constructor['name'];\n var _loop_1 = function (i) {\n var name_1 = fnNames[i];\n var delegate = prototype[name_1];\n if (delegate) {\n var prototypeDesc = ObjectGetOwnPropertyDescriptor(prototype, name_1);\n if (!isPropertyWritable(prototypeDesc)) {\n return \"continue\";\n }\n prototype[name_1] = (function (delegate) {\n var patched = function () {\n return delegate.apply(this, bindArguments(arguments, source + '.' + name_1));\n };\n attachOriginToPatched(patched, delegate);\n return patched;\n })(delegate);\n }\n };\n for (var i = 0; i < fnNames.length; i++) {\n _loop_1(i);\n }\n}\nfunction isPropertyWritable(propertyDesc) {\n if (!propertyDesc) {\n return true;\n }\n if (propertyDesc.writable === false) {\n return false;\n }\n return !(typeof propertyDesc.get === 'function' && typeof propertyDesc.set === 'undefined');\n}\nvar isWebWorker = (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope);\n// Make sure to access `process` through `_global` so that WebPack does not accidentally browserify\n// this code.\nvar isNode = (!('nw' in _global) && typeof _global.process !== 'undefined' &&\n {}.toString.call(_global.process) === '[object process]');\nvar isBrowser = !isNode && !isWebWorker && !!(isWindowExists && internalWindow['HTMLElement']);\n// we are in electron of nw, so we are both browser and nodejs\n// Make sure to access `process` through `_global` so that WebPack does not accidentally browserify\n// this code.\nvar isMix = typeof _global.process !== 'undefined' &&\n {}.toString.call(_global.process) === '[object process]' && !isWebWorker &&\n !!(isWindowExists && internalWindow['HTMLElement']);\nvar zoneSymbolEventNames = {};\nvar wrapFn = function (event) {\n // https://github.com/angular/zone.js/issues/911, in IE, sometimes\n // event will be undefined, so we need to use window.event\n event = event || _global.event;\n if (!event) {\n return;\n }\n var eventNameSymbol = zoneSymbolEventNames[event.type];\n if (!eventNameSymbol) {\n eventNameSymbol = zoneSymbolEventNames[event.type] = zoneSymbol('ON_PROPERTY' + event.type);\n }\n var target = this || event.target || _global;\n var listener = target[eventNameSymbol];\n var result = listener && listener.apply(this, arguments);\n if (result != undefined && !result) {\n event.preventDefault();\n }\n return result;\n};\nfunction patchProperty(obj, prop, prototype) {\n var desc = ObjectGetOwnPropertyDescriptor(obj, prop);\n if (!desc && prototype) {\n // when patch window object, use prototype to check prop exist or not\n var prototypeDesc = ObjectGetOwnPropertyDescriptor(prototype, prop);\n if (prototypeDesc) {\n desc = { enumerable: true, configurable: true };\n }\n }\n // if the descriptor not exists or is not configurable\n // just return\n if (!desc || !desc.configurable) {\n return;\n }\n // A property descriptor cannot have getter/setter and be writable\n // deleting the writable and value properties avoids this error:\n //\n // TypeError: property descriptors must not specify a value or be writable when a\n // getter or setter has been specified\n delete desc.writable;\n delete desc.value;\n var originalDescGet = desc.get;\n var originalDescSet = desc.set;\n // substr(2) cuz 'onclick' -> 'click', etc\n var eventName = prop.substr(2);\n var eventNameSymbol = zoneSymbolEventNames[eventName];\n if (!eventNameSymbol) {\n eventNameSymbol = zoneSymbolEventNames[eventName] = zoneSymbol('ON_PROPERTY' + eventName);\n }\n desc.set = function (newValue) {\n // in some of windows's onproperty callback, this is undefined\n // so we need to check it\n var target = this;\n if (!target && obj === _global) {\n target = _global;\n }\n if (!target) {\n return;\n }\n var previousValue = target[eventNameSymbol];\n if (previousValue) {\n target.removeEventListener(eventName, wrapFn);\n }\n // issue #978, when onload handler was added before loading zone.js\n // we should remove it with originalDescSet\n if (originalDescSet) {\n originalDescSet.apply(target, NULL_ON_PROP_VALUE);\n }\n if (typeof newValue === 'function') {\n target[eventNameSymbol] = newValue;\n target.addEventListener(eventName, wrapFn, false);\n }\n else {\n target[eventNameSymbol] = null;\n }\n };\n // The getter would return undefined for unassigned properties but the default value of an\n // unassigned property is null\n desc.get = function () {\n // in some of windows's onproperty callback, this is undefined\n // so we need to check it\n var target = this;\n if (!target && obj === _global) {\n target = _global;\n }\n if (!target) {\n return null;\n }\n var listener = target[eventNameSymbol];\n if (listener) {\n return listener;\n }\n else if (originalDescGet) {\n // result will be null when use inline event attribute,\n // such as \n // because the onclick function is internal raw uncompiled handler\n // the onclick will be evaluated when first time event was triggered or\n // the property is accessed, https://github.com/angular/zone.js/issues/525\n // so we should use original native get to retrieve the handler\n var value = originalDescGet && originalDescGet.call(this);\n if (value) {\n desc.set.call(this, value);\n if (typeof target[REMOVE_ATTRIBUTE] === 'function') {\n target.removeAttribute(prop);\n }\n return value;\n }\n }\n return null;\n };\n ObjectDefineProperty(obj, prop, desc);\n}\nfunction patchOnProperties(obj, properties, prototype) {\n if (properties) {\n for (var i = 0; i < properties.length; i++) {\n patchProperty(obj, 'on' + properties[i], prototype);\n }\n }\n else {\n var onProperties = [];\n for (var prop in obj) {\n if (prop.substr(0, 2) == 'on') {\n onProperties.push(prop);\n }\n }\n for (var j = 0; j < onProperties.length; j++) {\n patchProperty(obj, onProperties[j], prototype);\n }\n }\n}\nvar originalInstanceKey = zoneSymbol('originalInstance');\n// wrap some native API on `window`\nfunction patchClass(className) {\n var OriginalClass = _global[className];\n if (!OriginalClass)\n return;\n // keep original class in global\n _global[zoneSymbol(className)] = OriginalClass;\n _global[className] = function () {\n var a = bindArguments(arguments, className);\n switch (a.length) {\n case 0:\n this[originalInstanceKey] = new OriginalClass();\n break;\n case 1:\n this[originalInstanceKey] = new OriginalClass(a[0]);\n break;\n case 2:\n this[originalInstanceKey] = new OriginalClass(a[0], a[1]);\n break;\n case 3:\n this[originalInstanceKey] = new OriginalClass(a[0], a[1], a[2]);\n break;\n case 4:\n this[originalInstanceKey] = new OriginalClass(a[0], a[1], a[2], a[3]);\n break;\n default:\n throw new Error('Arg list too long.');\n }\n };\n // attach original delegate to patched function\n attachOriginToPatched(_global[className], OriginalClass);\n var instance = new OriginalClass(function () { });\n var prop;\n for (prop in instance) {\n // https://bugs.webkit.org/show_bug.cgi?id=44721\n if (className === 'XMLHttpRequest' && prop === 'responseBlob')\n continue;\n (function (prop) {\n if (typeof instance[prop] === 'function') {\n _global[className].prototype[prop] = function () {\n return this[originalInstanceKey][prop].apply(this[originalInstanceKey], arguments);\n };\n }\n else {\n ObjectDefineProperty(_global[className].prototype, prop, {\n set: function (fn) {\n if (typeof fn === 'function') {\n this[originalInstanceKey][prop] = wrapWithCurrentZone(fn, className + '.' + prop);\n // keep callback in wrapped function so we can\n // use it in Function.prototype.toString to return\n // the native one.\n attachOriginToPatched(this[originalInstanceKey][prop], fn);\n }\n else {\n this[originalInstanceKey][prop] = fn;\n }\n },\n get: function () {\n return this[originalInstanceKey][prop];\n }\n });\n }\n }(prop));\n }\n for (prop in OriginalClass) {\n if (prop !== 'prototype' && OriginalClass.hasOwnProperty(prop)) {\n _global[className][prop] = OriginalClass[prop];\n }\n }\n}\nfunction patchMethod(target, name, patchFn) {\n var proto = target;\n while (proto && !proto.hasOwnProperty(name)) {\n proto = ObjectGetPrototypeOf(proto);\n }\n if (!proto && target[name]) {\n // somehow we did not find it, but we can see it. This happens on IE for Window properties.\n proto = target;\n }\n var delegateName = zoneSymbol(name);\n var delegate;\n if (proto && !(delegate = proto[delegateName])) {\n delegate = proto[delegateName] = proto[name];\n // check whether proto[name] is writable\n // some property is readonly in safari, such as HtmlCanvasElement.prototype.toBlob\n var desc = proto && ObjectGetOwnPropertyDescriptor(proto, name);\n if (isPropertyWritable(desc)) {\n var patchDelegate_1 = patchFn(delegate, delegateName, name);\n proto[name] = function () {\n return patchDelegate_1(this, arguments);\n };\n attachOriginToPatched(proto[name], delegate);\n }\n }\n return delegate;\n}\n// TODO: @JiaLiPassion, support cancel task later if necessary\nfunction patchMacroTask(obj, funcName, metaCreator) {\n var setNative = null;\n function scheduleTask(task) {\n var data = task.data;\n data.args[data.cbIdx] = function () {\n task.invoke.apply(this, arguments);\n };\n setNative.apply(data.target, data.args);\n return task;\n }\n setNative = patchMethod(obj, funcName, function (delegate) { return function (self, args) {\n var meta = metaCreator(self, args);\n if (meta.cbIdx >= 0 && typeof args[meta.cbIdx] === 'function') {\n return scheduleMacroTaskWithCurrentZone(meta.name, args[meta.cbIdx], meta, scheduleTask, null);\n }\n else {\n // cause an error by calling it directly.\n return delegate.apply(self, args);\n }\n }; });\n}\n\nfunction attachOriginToPatched(patched, original) {\n patched[zoneSymbol('OriginalDelegate')] = original;\n}\nvar isDetectedIEOrEdge = false;\nvar ieOrEdge = false;\nfunction isIEOrEdge() {\n if (isDetectedIEOrEdge) {\n return ieOrEdge;\n }\n isDetectedIEOrEdge = true;\n try {\n var ua = internalWindow.navigator.userAgent;\n if (ua.indexOf('MSIE ') !== -1 || ua.indexOf('Trident/') !== -1 || ua.indexOf('Edge/') !== -1) {\n ieOrEdge = true;\n }\n return ieOrEdge;\n }\n catch (error) {\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// override Function.prototype.toString to make zone.js patched function\n// look like native function\nZone.__load_patch('toString', function (global) {\n // patch Func.prototype.toString to let them look like native\n var originalFunctionToString = Function.prototype.toString;\n var ORIGINAL_DELEGATE_SYMBOL = zoneSymbol('OriginalDelegate');\n var PROMISE_SYMBOL = zoneSymbol('Promise');\n var ERROR_SYMBOL = zoneSymbol('Error');\n var newFunctionToString = function toString() {\n if (typeof this === 'function') {\n var originalDelegate = this[ORIGINAL_DELEGATE_SYMBOL];\n if (originalDelegate) {\n if (typeof originalDelegate === 'function') {\n return originalFunctionToString.apply(this[ORIGINAL_DELEGATE_SYMBOL], arguments);\n }\n else {\n return Object.prototype.toString.call(originalDelegate);\n }\n }\n if (this === Promise) {\n var nativePromise = global[PROMISE_SYMBOL];\n if (nativePromise) {\n return originalFunctionToString.apply(nativePromise, arguments);\n }\n }\n if (this === Error) {\n var nativeError = global[ERROR_SYMBOL];\n if (nativeError) {\n return originalFunctionToString.apply(nativeError, arguments);\n }\n }\n }\n return originalFunctionToString.apply(this, arguments);\n };\n newFunctionToString[ORIGINAL_DELEGATE_SYMBOL] = originalFunctionToString;\n Function.prototype.toString = newFunctionToString;\n // patch Object.prototype.toString to let them look like native\n var originalObjectToString = Object.prototype.toString;\n var PROMISE_OBJECT_TO_STRING = '[object Promise]';\n Object.prototype.toString = function () {\n if (this instanceof Promise) {\n return PROMISE_OBJECT_TO_STRING;\n }\n return originalObjectToString.apply(this, arguments);\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/**\n * @fileoverview\n * @suppress {missingRequire}\n */\n// an identifier to tell ZoneTask do not create a new invoke closure\nvar OPTIMIZED_ZONE_EVENT_TASK_DATA = {\n useG: true\n};\nvar zoneSymbolEventNames$1 = {};\nvar globalSources = {};\nvar EVENT_NAME_SYMBOL_REGX = /^__zone_symbol__(\\w+)(true|false)$/;\nvar IMMEDIATE_PROPAGATION_SYMBOL = ('__zone_symbol__propagationStopped');\nfunction patchEventTarget(_global, apis, patchOptions) {\n var ADD_EVENT_LISTENER = (patchOptions && patchOptions.add) || ADD_EVENT_LISTENER_STR;\n var REMOVE_EVENT_LISTENER = (patchOptions && patchOptions.rm) || REMOVE_EVENT_LISTENER_STR;\n var LISTENERS_EVENT_LISTENER = (patchOptions && patchOptions.listeners) || 'eventListeners';\n var REMOVE_ALL_LISTENERS_EVENT_LISTENER = (patchOptions && patchOptions.rmAll) || 'removeAllListeners';\n var zoneSymbolAddEventListener = zoneSymbol(ADD_EVENT_LISTENER);\n var ADD_EVENT_LISTENER_SOURCE = '.' + ADD_EVENT_LISTENER + ':';\n var PREPEND_EVENT_LISTENER = 'prependListener';\n var PREPEND_EVENT_LISTENER_SOURCE = '.' + PREPEND_EVENT_LISTENER + ':';\n var invokeTask = function (task, target, event) {\n // for better performance, check isRemoved which is set\n // by removeEventListener\n if (task.isRemoved) {\n return;\n }\n var delegate = task.callback;\n if (typeof delegate === 'object' && delegate.handleEvent) {\n // create the bind version of handleEvent when invoke\n task.callback = function (event) { return delegate.handleEvent(event); };\n task.originalDelegate = delegate;\n }\n // invoke static task.invoke\n task.invoke(task, target, [event]);\n var options = task.options;\n if (options && typeof options === 'object' && options.once) {\n // if options.once is true, after invoke once remove listener here\n // only browser need to do this, nodejs eventEmitter will cal removeListener\n // inside EventEmitter.once\n var delegate_1 = task.originalDelegate ? task.originalDelegate : task.callback;\n target[REMOVE_EVENT_LISTENER].call(target, event.type, delegate_1, options);\n }\n };\n // global shared zoneAwareCallback to handle all event callback with capture = false\n var globalZoneAwareCallback = function (event) {\n // https://github.com/angular/zone.js/issues/911, in IE, sometimes\n // event will be undefined, so we need to use window.event\n event = event || _global.event;\n if (!event) {\n return;\n }\n // event.target is needed for Samsung TV and SourceBuffer\n // || global is needed https://github.com/angular/zone.js/issues/190\n var target = this || event.target || _global;\n var tasks = target[zoneSymbolEventNames$1[event.type][FALSE_STR]];\n if (tasks) {\n // invoke all tasks which attached to current target with given event.type and capture = false\n // for performance concern, if task.length === 1, just invoke\n if (tasks.length === 1) {\n invokeTask(tasks[0], target, event);\n }\n else {\n // https://github.com/angular/zone.js/issues/836\n // copy the tasks array before invoke, to avoid\n // the callback will remove itself or other listener\n var copyTasks = tasks.slice();\n for (var i = 0; i < copyTasks.length; i++) {\n if (event && event[IMMEDIATE_PROPAGATION_SYMBOL] === true) {\n break;\n }\n invokeTask(copyTasks[i], target, event);\n }\n }\n }\n };\n // global shared zoneAwareCallback to handle all event callback with capture = true\n var globalZoneAwareCaptureCallback = function (event) {\n // https://github.com/angular/zone.js/issues/911, in IE, sometimes\n // event will be undefined, so we need to use window.event\n event = event || _global.event;\n if (!event) {\n return;\n }\n // event.target is needed for Samsung TV and SourceBuffer\n // || global is needed https://github.com/angular/zone.js/issues/190\n var target = this || event.target || _global;\n var tasks = target[zoneSymbolEventNames$1[event.type][TRUE_STR]];\n if (tasks) {\n // invoke all tasks which attached to current target with given event.type and capture = false\n // for performance concern, if task.length === 1, just invoke\n if (tasks.length === 1) {\n invokeTask(tasks[0], target, event);\n }\n else {\n // https://github.com/angular/zone.js/issues/836\n // copy the tasks array before invoke, to avoid\n // the callback will remove itself or other listener\n var copyTasks = tasks.slice();\n for (var i = 0; i < copyTasks.length; i++) {\n if (event && event[IMMEDIATE_PROPAGATION_SYMBOL] === true) {\n break;\n }\n invokeTask(copyTasks[i], target, event);\n }\n }\n }\n };\n function patchEventTargetMethods(obj, patchOptions) {\n if (!obj) {\n return false;\n }\n var useGlobalCallback = true;\n if (patchOptions && patchOptions.useG !== undefined) {\n useGlobalCallback = patchOptions.useG;\n }\n var validateHandler = patchOptions && patchOptions.vh;\n var checkDuplicate = true;\n if (patchOptions && patchOptions.chkDup !== undefined) {\n checkDuplicate = patchOptions.chkDup;\n }\n var returnTarget = false;\n if (patchOptions && patchOptions.rt !== undefined) {\n returnTarget = patchOptions.rt;\n }\n var proto = obj;\n while (proto && !proto.hasOwnProperty(ADD_EVENT_LISTENER)) {\n proto = ObjectGetPrototypeOf(proto);\n }\n if (!proto && obj[ADD_EVENT_LISTENER]) {\n // somehow we did not find it, but we can see it. This happens on IE for Window properties.\n proto = obj;\n }\n if (!proto) {\n return false;\n }\n if (proto[zoneSymbolAddEventListener]) {\n return false;\n }\n // a shared global taskData to pass data for scheduleEventTask\n // so we do not need to create a new object just for pass some data\n var taskData = {};\n var nativeAddEventListener = proto[zoneSymbolAddEventListener] = proto[ADD_EVENT_LISTENER];\n var nativeRemoveEventListener = proto[zoneSymbol(REMOVE_EVENT_LISTENER)] =\n proto[REMOVE_EVENT_LISTENER];\n var nativeListeners = proto[zoneSymbol(LISTENERS_EVENT_LISTENER)] =\n proto[LISTENERS_EVENT_LISTENER];\n var nativeRemoveAllListeners = proto[zoneSymbol(REMOVE_ALL_LISTENERS_EVENT_LISTENER)] =\n proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER];\n var nativePrependEventListener;\n if (patchOptions && patchOptions.prepend) {\n nativePrependEventListener = proto[zoneSymbol(patchOptions.prepend)] =\n proto[patchOptions.prepend];\n }\n var customScheduleGlobal = function () {\n // if there is already a task for the eventName + capture,\n // just return, because we use the shared globalZoneAwareCallback here.\n if (taskData.isExisting) {\n return;\n }\n return nativeAddEventListener.call(taskData.target, taskData.eventName, taskData.capture ? globalZoneAwareCaptureCallback : globalZoneAwareCallback, taskData.options);\n };\n var customCancelGlobal = function (task) {\n // if task is not marked as isRemoved, this call is directly\n // from Zone.prototype.cancelTask, we should remove the task\n // from tasksList of target first\n if (!task.isRemoved) {\n var symbolEventNames = zoneSymbolEventNames$1[task.eventName];\n var symbolEventName = void 0;\n if (symbolEventNames) {\n symbolEventName = symbolEventNames[task.capture ? TRUE_STR : FALSE_STR];\n }\n var existingTasks = symbolEventName && task.target[symbolEventName];\n if (existingTasks) {\n for (var i = 0; i < existingTasks.length; i++) {\n var existingTask = existingTasks[i];\n if (existingTask === task) {\n existingTasks.splice(i, 1);\n // set isRemoved to data for faster invokeTask check\n task.isRemoved = true;\n if (existingTasks.length === 0) {\n // all tasks for the eventName + capture have gone,\n // remove globalZoneAwareCallback and remove the task cache from target\n task.allRemoved = true;\n task.target[symbolEventName] = null;\n }\n break;\n }\n }\n }\n }\n // if all tasks for the eventName + capture have gone,\n // we will really remove the global event callback,\n // if not, return\n if (!task.allRemoved) {\n return;\n }\n return nativeRemoveEventListener.call(task.target, task.eventName, task.capture ? globalZoneAwareCaptureCallback : globalZoneAwareCallback, task.options);\n };\n var customScheduleNonGlobal = function (task) {\n return nativeAddEventListener.call(taskData.target, taskData.eventName, task.invoke, taskData.options);\n };\n var customSchedulePrepend = function (task) {\n return nativePrependEventListener.call(taskData.target, taskData.eventName, task.invoke, taskData.options);\n };\n var customCancelNonGlobal = function (task) {\n return nativeRemoveEventListener.call(task.target, task.eventName, task.invoke, task.options);\n };\n var customSchedule = useGlobalCallback ? customScheduleGlobal : customScheduleNonGlobal;\n var customCancel = useGlobalCallback ? customCancelGlobal : customCancelNonGlobal;\n var compareTaskCallbackVsDelegate = function (task, delegate) {\n var typeOfDelegate = typeof delegate;\n return (typeOfDelegate === 'function' && task.callback === delegate) ||\n (typeOfDelegate === 'object' && task.originalDelegate === delegate);\n };\n var compare = (patchOptions && patchOptions.diff) ? patchOptions.diff : compareTaskCallbackVsDelegate;\n var blackListedEvents = Zone[Zone.__symbol__('BLACK_LISTED_EVENTS')];\n var makeAddListener = function (nativeListener, addSource, customScheduleFn, customCancelFn, returnTarget, prepend) {\n if (returnTarget === void 0) { returnTarget = false; }\n if (prepend === void 0) { prepend = false; }\n return function () {\n var target = this || _global;\n var delegate = arguments[1];\n if (!delegate) {\n return nativeListener.apply(this, arguments);\n }\n // don't create the bind delegate function for handleEvent\n // case here to improve addEventListener performance\n // we will create the bind delegate when invoke\n var isHandleEvent = false;\n if (typeof delegate !== 'function') {\n if (!delegate.handleEvent) {\n return nativeListener.apply(this, arguments);\n }\n isHandleEvent = true;\n }\n if (validateHandler && !validateHandler(nativeListener, delegate, target, arguments)) {\n return;\n }\n var eventName = arguments[0];\n var options = arguments[2];\n if (blackListedEvents) {\n // check black list\n for (var i = 0; i < blackListedEvents.length; i++) {\n if (eventName === blackListedEvents[i]) {\n return nativeListener.apply(this, arguments);\n }\n }\n }\n var capture;\n var once = false;\n if (options === undefined) {\n capture = false;\n }\n else if (options === true) {\n capture = true;\n }\n else if (options === false) {\n capture = false;\n }\n else {\n capture = options ? !!options.capture : false;\n once = options ? !!options.once : false;\n }\n var zone = Zone.current;\n var symbolEventNames = zoneSymbolEventNames$1[eventName];\n var symbolEventName;\n if (!symbolEventNames) {\n // the code is duplicate, but I just want to get some better performance\n var falseEventName = eventName + FALSE_STR;\n var trueEventName = eventName + TRUE_STR;\n var symbol = ZONE_SYMBOL_PREFIX + falseEventName;\n var symbolCapture = ZONE_SYMBOL_PREFIX + trueEventName;\n zoneSymbolEventNames$1[eventName] = {};\n zoneSymbolEventNames$1[eventName][FALSE_STR] = symbol;\n zoneSymbolEventNames$1[eventName][TRUE_STR] = symbolCapture;\n symbolEventName = capture ? symbolCapture : symbol;\n }\n else {\n symbolEventName = symbolEventNames[capture ? TRUE_STR : FALSE_STR];\n }\n var existingTasks = target[symbolEventName];\n var isExisting = false;\n if (existingTasks) {\n // already have task registered\n isExisting = true;\n if (checkDuplicate) {\n for (var i = 0; i < existingTasks.length; i++) {\n if (compare(existingTasks[i], delegate)) {\n // same callback, same capture, same event name, just return\n return;\n }\n }\n }\n }\n else {\n existingTasks = target[symbolEventName] = [];\n }\n var source;\n var constructorName = target.constructor['name'];\n var targetSource = globalSources[constructorName];\n if (targetSource) {\n source = targetSource[eventName];\n }\n if (!source) {\n source = constructorName + addSource + eventName;\n }\n // do not create a new object as task.data to pass those things\n // just use the global shared one\n taskData.options = options;\n if (once) {\n // if addEventListener with once options, we don't pass it to\n // native addEventListener, instead we keep the once setting\n // and handle ourselves.\n taskData.options.once = false;\n }\n taskData.target = target;\n taskData.capture = capture;\n taskData.eventName = eventName;\n taskData.isExisting = isExisting;\n var data = useGlobalCallback ? OPTIMIZED_ZONE_EVENT_TASK_DATA : null;\n // keep taskData into data to allow onScheduleEventTask to access the task information\n if (data) {\n data.taskData = taskData;\n }\n var task = zone.scheduleEventTask(source, delegate, data, customScheduleFn, customCancelFn);\n // should clear taskData.target to avoid memory leak\n // issue, https://github.com/angular/angular/issues/20442\n taskData.target = null;\n // need to clear up taskData because it is a global object\n if (data) {\n data.taskData = null;\n }\n // have to save those information to task in case\n // application may call task.zone.cancelTask() directly\n if (once) {\n options.once = true;\n }\n task.options = options;\n task.target = target;\n task.capture = capture;\n task.eventName = eventName;\n if (isHandleEvent) {\n // save original delegate for compare to check duplicate\n task.originalDelegate = delegate;\n }\n if (!prepend) {\n existingTasks.push(task);\n }\n else {\n existingTasks.unshift(task);\n }\n if (returnTarget) {\n return target;\n }\n };\n };\n proto[ADD_EVENT_LISTENER] = makeAddListener(nativeAddEventListener, ADD_EVENT_LISTENER_SOURCE, customSchedule, customCancel, returnTarget);\n if (nativePrependEventListener) {\n proto[PREPEND_EVENT_LISTENER] = makeAddListener(nativePrependEventListener, PREPEND_EVENT_LISTENER_SOURCE, customSchedulePrepend, customCancel, returnTarget, true);\n }\n proto[REMOVE_EVENT_LISTENER] = function () {\n var target = this || _global;\n var eventName = arguments[0];\n var options = arguments[2];\n var capture;\n if (options === undefined) {\n capture = false;\n }\n else if (options === true) {\n capture = true;\n }\n else if (options === false) {\n capture = false;\n }\n else {\n capture = options ? !!options.capture : false;\n }\n var delegate = arguments[1];\n if (!delegate) {\n return nativeRemoveEventListener.apply(this, arguments);\n }\n if (validateHandler &&\n !validateHandler(nativeRemoveEventListener, delegate, target, arguments)) {\n return;\n }\n var symbolEventNames = zoneSymbolEventNames$1[eventName];\n var symbolEventName;\n if (symbolEventNames) {\n symbolEventName = symbolEventNames[capture ? TRUE_STR : FALSE_STR];\n }\n var existingTasks = symbolEventName && target[symbolEventName];\n if (existingTasks) {\n for (var i = 0; i < existingTasks.length; i++) {\n var existingTask = existingTasks[i];\n if (compare(existingTask, delegate)) {\n existingTasks.splice(i, 1);\n // set isRemoved to data for faster invokeTask check\n existingTask.isRemoved = true;\n if (existingTasks.length === 0) {\n // all tasks for the eventName + capture have gone,\n // remove globalZoneAwareCallback and remove the task cache from target\n existingTask.allRemoved = true;\n target[symbolEventName] = null;\n }\n existingTask.zone.cancelTask(existingTask);\n if (returnTarget) {\n return target;\n }\n return;\n }\n }\n }\n // issue 930, didn't find the event name or callback\n // from zone kept existingTasks, the callback maybe\n // added outside of zone, we need to call native removeEventListener\n // to try to remove it.\n return nativeRemoveEventListener.apply(this, arguments);\n };\n proto[LISTENERS_EVENT_LISTENER] = function () {\n var target = this || _global;\n var eventName = arguments[0];\n var listeners = [];\n var tasks = findEventTasks(target, eventName);\n for (var i = 0; i < tasks.length; i++) {\n var task = tasks[i];\n var delegate = task.originalDelegate ? task.originalDelegate : task.callback;\n listeners.push(delegate);\n }\n return listeners;\n };\n proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER] = function () {\n var target = this || _global;\n var eventName = arguments[0];\n if (!eventName) {\n var keys = Object.keys(target);\n for (var i = 0; i < keys.length; i++) {\n var prop = keys[i];\n var match = EVENT_NAME_SYMBOL_REGX.exec(prop);\n var evtName = match && match[1];\n // in nodejs EventEmitter, removeListener event is\n // used for monitoring the removeListener call,\n // so just keep removeListener eventListener until\n // all other eventListeners are removed\n if (evtName && evtName !== 'removeListener') {\n this[REMOVE_ALL_LISTENERS_EVENT_LISTENER].call(this, evtName);\n }\n }\n // remove removeListener listener finally\n this[REMOVE_ALL_LISTENERS_EVENT_LISTENER].call(this, 'removeListener');\n }\n else {\n var symbolEventNames = zoneSymbolEventNames$1[eventName];\n if (symbolEventNames) {\n var symbolEventName = symbolEventNames[FALSE_STR];\n var symbolCaptureEventName = symbolEventNames[TRUE_STR];\n var tasks = target[symbolEventName];\n var captureTasks = target[symbolCaptureEventName];\n if (tasks) {\n var removeTasks = tasks.slice();\n for (var i = 0; i < removeTasks.length; i++) {\n var task = removeTasks[i];\n var delegate = task.originalDelegate ? task.originalDelegate : task.callback;\n this[REMOVE_EVENT_LISTENER].call(this, eventName, delegate, task.options);\n }\n }\n if (captureTasks) {\n var removeTasks = captureTasks.slice();\n for (var i = 0; i < removeTasks.length; i++) {\n var task = removeTasks[i];\n var delegate = task.originalDelegate ? task.originalDelegate : task.callback;\n this[REMOVE_EVENT_LISTENER].call(this, eventName, delegate, task.options);\n }\n }\n }\n }\n if (returnTarget) {\n return this;\n }\n };\n // for native toString patch\n attachOriginToPatched(proto[ADD_EVENT_LISTENER], nativeAddEventListener);\n attachOriginToPatched(proto[REMOVE_EVENT_LISTENER], nativeRemoveEventListener);\n if (nativeRemoveAllListeners) {\n attachOriginToPatched(proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER], nativeRemoveAllListeners);\n }\n if (nativeListeners) {\n attachOriginToPatched(proto[LISTENERS_EVENT_LISTENER], nativeListeners);\n }\n return true;\n }\n var results = [];\n for (var i = 0; i < apis.length; i++) {\n results[i] = patchEventTargetMethods(apis[i], patchOptions);\n }\n return results;\n}\nfunction findEventTasks(target, eventName) {\n var foundTasks = [];\n for (var prop in target) {\n var match = EVENT_NAME_SYMBOL_REGX.exec(prop);\n var evtName = match && match[1];\n if (evtName && (!eventName || evtName === eventName)) {\n var tasks = target[prop];\n if (tasks) {\n for (var i = 0; i < tasks.length; i++) {\n foundTasks.push(tasks[i]);\n }\n }\n }\n }\n return foundTasks;\n}\nfunction patchEventPrototype(global, api) {\n var Event = global['Event'];\n if (Event && Event.prototype) {\n api.patchMethod(Event.prototype, 'stopImmediatePropagation', function (delegate) { return function (self, args) {\n self[IMMEDIATE_PROPAGATION_SYMBOL] = true;\n // we need to call the native stopImmediatePropagation\n // in case in some hybrid application, some part of\n // application will be controlled by zone, some are not\n delegate && delegate.apply(self, args);\n }; });\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/**\n * @fileoverview\n * @suppress {missingRequire}\n */\nvar taskSymbol = zoneSymbol('zoneTask');\nfunction patchTimer(window, setName, cancelName, nameSuffix) {\n var setNative = null;\n var clearNative = null;\n setName += nameSuffix;\n cancelName += nameSuffix;\n var tasksByHandleId = {};\n function scheduleTask(task) {\n var data = task.data;\n function timer() {\n try {\n task.invoke.apply(this, arguments);\n }\n finally {\n // issue-934, task will be cancelled\n // even it is a periodic task such as\n // setInterval\n if (!(task.data && task.data.isPeriodic)) {\n if (typeof data.handleId === 'number') {\n // in non-nodejs env, we remove timerId\n // from local cache\n delete tasksByHandleId[data.handleId];\n }\n else if (data.handleId) {\n // Node returns complex objects as handleIds\n // we remove task reference from timer object\n data.handleId[taskSymbol] = null;\n }\n }\n }\n }\n data.args[0] = timer;\n data.handleId = setNative.apply(window, data.args);\n return task;\n }\n function clearTask(task) {\n return clearNative(task.data.handleId);\n }\n setNative =\n patchMethod(window, setName, function (delegate) { return function (self, args) {\n if (typeof args[0] === 'function') {\n var options = {\n handleId: null,\n isPeriodic: nameSuffix === 'Interval',\n delay: (nameSuffix === 'Timeout' || nameSuffix === 'Interval') ? args[1] || 0 : null,\n args: args\n };\n var task = scheduleMacroTaskWithCurrentZone(setName, args[0], options, scheduleTask, clearTask);\n if (!task) {\n return task;\n }\n // Node.js must additionally support the ref and unref functions.\n var handle = task.data.handleId;\n if (typeof handle === 'number') {\n // for non nodejs env, we save handleId: task\n // mapping in local cache for clearTimeout\n tasksByHandleId[handle] = task;\n }\n else if (handle) {\n // for nodejs env, we save task\n // reference in timerId Object for clearTimeout\n handle[taskSymbol] = task;\n }\n // check whether handle is null, because some polyfill or browser\n // may return undefined from setTimeout/setInterval/setImmediate/requestAnimationFrame\n if (handle && handle.ref && handle.unref && typeof handle.ref === 'function' &&\n typeof handle.unref === 'function') {\n task.ref = handle.ref.bind(handle);\n task.unref = handle.unref.bind(handle);\n }\n if (typeof handle === 'number' || handle) {\n return handle;\n }\n return task;\n }\n else {\n // cause an error by calling it directly.\n return delegate.apply(window, args);\n }\n }; });\n clearNative =\n patchMethod(window, cancelName, function (delegate) { return function (self, args) {\n var id = args[0];\n var task;\n if (typeof id === 'number') {\n // non nodejs env.\n task = tasksByHandleId[id];\n }\n else {\n // nodejs env.\n task = id && id[taskSymbol];\n // other environments.\n if (!task) {\n task = id;\n }\n }\n if (task && typeof task.type === 'string') {\n if (task.state !== 'notScheduled' &&\n (task.cancelFn && task.data.isPeriodic || task.runCount === 0)) {\n if (typeof id === 'number') {\n delete tasksByHandleId[id];\n }\n else if (id) {\n id[taskSymbol] = null;\n }\n // Do not cancel already canceled functions\n task.zone.cancelTask(task);\n }\n }\n else {\n // cause an error by calling it directly.\n delegate.apply(window, args);\n }\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/*\n * This is necessary for Chrome and Chrome mobile, to enable\n * things like redefining `createdCallback` on an element.\n */\nvar _defineProperty = Object[zoneSymbol('defineProperty')] = Object.defineProperty;\nvar _getOwnPropertyDescriptor = Object[zoneSymbol('getOwnPropertyDescriptor')] =\n Object.getOwnPropertyDescriptor;\nvar _create = Object.create;\nvar unconfigurablesKey = zoneSymbol('unconfigurables');\nfunction propertyPatch() {\n Object.defineProperty = function (obj, prop, desc) {\n if (isUnconfigurable(obj, prop)) {\n throw new TypeError('Cannot assign to read only property \\'' + prop + '\\' of ' + obj);\n }\n var originalConfigurableFlag = desc.configurable;\n if (prop !== 'prototype') {\n desc = rewriteDescriptor(obj, prop, desc);\n }\n return _tryDefineProperty(obj, prop, desc, originalConfigurableFlag);\n };\n Object.defineProperties = function (obj, props) {\n Object.keys(props).forEach(function (prop) {\n Object.defineProperty(obj, prop, props[prop]);\n });\n return obj;\n };\n Object.create = function (obj, proto) {\n if (typeof proto === 'object' && !Object.isFrozen(proto)) {\n Object.keys(proto).forEach(function (prop) {\n proto[prop] = rewriteDescriptor(obj, prop, proto[prop]);\n });\n }\n return _create(obj, proto);\n };\n Object.getOwnPropertyDescriptor = function (obj, prop) {\n var desc = _getOwnPropertyDescriptor(obj, prop);\n if (isUnconfigurable(obj, prop)) {\n desc.configurable = false;\n }\n return desc;\n };\n}\nfunction _redefineProperty(obj, prop, desc) {\n var originalConfigurableFlag = desc.configurable;\n desc = rewriteDescriptor(obj, prop, desc);\n return _tryDefineProperty(obj, prop, desc, originalConfigurableFlag);\n}\nfunction isUnconfigurable(obj, prop) {\n return obj && obj[unconfigurablesKey] && obj[unconfigurablesKey][prop];\n}\nfunction rewriteDescriptor(obj, prop, desc) {\n // issue-927, if the desc is frozen, don't try to change the desc\n if (!Object.isFrozen(desc)) {\n desc.configurable = true;\n }\n if (!desc.configurable) {\n // issue-927, if the obj is frozen, don't try to set the desc to obj\n if (!obj[unconfigurablesKey] && !Object.isFrozen(obj)) {\n _defineProperty(obj, unconfigurablesKey, { writable: true, value: {} });\n }\n if (obj[unconfigurablesKey]) {\n obj[unconfigurablesKey][prop] = true;\n }\n }\n return desc;\n}\nfunction _tryDefineProperty(obj, prop, desc, originalConfigurableFlag) {\n try {\n return _defineProperty(obj, prop, desc);\n }\n catch (error) {\n if (desc.configurable) {\n // In case of errors, when the configurable flag was likely set by rewriteDescriptor(), let's\n // retry with the original flag value\n if (typeof originalConfigurableFlag == 'undefined') {\n delete desc.configurable;\n }\n else {\n desc.configurable = originalConfigurableFlag;\n }\n try {\n return _defineProperty(obj, prop, desc);\n }\n catch (error) {\n var descJson = null;\n try {\n descJson = JSON.stringify(desc);\n }\n catch (error) {\n descJson = desc.toString();\n }\n console.log(\"Attempting to configure '\" + prop + \"' with descriptor '\" + descJson + \"' on object '\" + obj + \"' and got error, giving up: \" + error);\n }\n }\n else {\n throw error;\n }\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// we have to patch the instance since the proto is non-configurable\nfunction apply(api, _global) {\n var WS = _global.WebSocket;\n // On Safari window.EventTarget doesn't exist so need to patch WS add/removeEventListener\n // On older Chrome, no need since EventTarget was already patched\n if (!_global.EventTarget) {\n patchEventTarget(_global, [WS.prototype]);\n }\n _global.WebSocket = function (x, y) {\n var socket = arguments.length > 1 ? new WS(x, y) : new WS(x);\n var proxySocket;\n var proxySocketProto;\n // Safari 7.0 has non-configurable own 'onmessage' and friends properties on the socket instance\n var onmessageDesc = ObjectGetOwnPropertyDescriptor(socket, 'onmessage');\n if (onmessageDesc && onmessageDesc.configurable === false) {\n proxySocket = ObjectCreate(socket);\n // socket have own property descriptor 'onopen', 'onmessage', 'onclose', 'onerror'\n // but proxySocket not, so we will keep socket as prototype and pass it to\n // patchOnProperties method\n proxySocketProto = socket;\n [ADD_EVENT_LISTENER_STR, REMOVE_EVENT_LISTENER_STR, 'send', 'close'].forEach(function (propName) {\n proxySocket[propName] = function () {\n var args = ArraySlice.call(arguments);\n if (propName === ADD_EVENT_LISTENER_STR || propName === REMOVE_EVENT_LISTENER_STR) {\n var eventName = args.length > 0 ? args[0] : undefined;\n if (eventName) {\n var propertySymbol = Zone.__symbol__('ON_PROPERTY' + eventName);\n socket[propertySymbol] = proxySocket[propertySymbol];\n }\n }\n return socket[propName].apply(socket, args);\n };\n });\n }\n else {\n // we can patch the real socket\n proxySocket = socket;\n }\n patchOnProperties(proxySocket, ['close', 'error', 'message', 'open'], proxySocketProto);\n return proxySocket;\n };\n var globalWebSocket = _global['WebSocket'];\n for (var prop in WS) {\n globalWebSocket[prop] = WS[prop];\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/**\n * @fileoverview\n * @suppress {globalThis}\n */\nvar globalEventHandlersEventNames = [\n 'abort',\n 'animationcancel',\n 'animationend',\n 'animationiteration',\n 'auxclick',\n 'beforeinput',\n 'blur',\n 'cancel',\n 'canplay',\n 'canplaythrough',\n 'change',\n 'compositionstart',\n 'compositionupdate',\n 'compositionend',\n 'cuechange',\n 'click',\n 'close',\n 'contextmenu',\n 'curechange',\n 'dblclick',\n 'drag',\n 'dragend',\n 'dragenter',\n 'dragexit',\n 'dragleave',\n 'dragover',\n 'drop',\n 'durationchange',\n 'emptied',\n 'ended',\n 'error',\n 'focus',\n 'focusin',\n 'focusout',\n 'gotpointercapture',\n 'input',\n 'invalid',\n 'keydown',\n 'keypress',\n 'keyup',\n 'load',\n 'loadstart',\n 'loadeddata',\n 'loadedmetadata',\n 'lostpointercapture',\n 'mousedown',\n 'mouseenter',\n 'mouseleave',\n 'mousemove',\n 'mouseout',\n 'mouseover',\n 'mouseup',\n 'mousewheel',\n 'orientationchange',\n 'pause',\n 'play',\n 'playing',\n 'pointercancel',\n 'pointerdown',\n 'pointerenter',\n 'pointerleave',\n 'pointerlockchange',\n 'mozpointerlockchange',\n 'webkitpointerlockerchange',\n 'pointerlockerror',\n 'mozpointerlockerror',\n 'webkitpointerlockerror',\n 'pointermove',\n 'pointout',\n 'pointerover',\n 'pointerup',\n 'progress',\n 'ratechange',\n 'reset',\n 'resize',\n 'scroll',\n 'seeked',\n 'seeking',\n 'select',\n 'selectionchange',\n 'selectstart',\n 'show',\n 'sort',\n 'stalled',\n 'submit',\n 'suspend',\n 'timeupdate',\n 'volumechange',\n 'touchcancel',\n 'touchmove',\n 'touchstart',\n 'touchend',\n 'transitioncancel',\n 'transitionend',\n 'waiting',\n 'wheel'\n];\nvar documentEventNames = [\n 'afterscriptexecute', 'beforescriptexecute', 'DOMContentLoaded', 'fullscreenchange',\n 'mozfullscreenchange', 'webkitfullscreenchange', 'msfullscreenchange', 'fullscreenerror',\n 'mozfullscreenerror', 'webkitfullscreenerror', 'msfullscreenerror', 'readystatechange',\n 'visibilitychange'\n];\nvar windowEventNames = [\n 'absolutedeviceorientation',\n 'afterinput',\n 'afterprint',\n 'appinstalled',\n 'beforeinstallprompt',\n 'beforeprint',\n 'beforeunload',\n 'devicelight',\n 'devicemotion',\n 'deviceorientation',\n 'deviceorientationabsolute',\n 'deviceproximity',\n 'hashchange',\n 'languagechange',\n 'message',\n 'mozbeforepaint',\n 'offline',\n 'online',\n 'paint',\n 'pageshow',\n 'pagehide',\n 'popstate',\n 'rejectionhandled',\n 'storage',\n 'unhandledrejection',\n 'unload',\n 'userproximity',\n 'vrdisplyconnected',\n 'vrdisplaydisconnected',\n 'vrdisplaypresentchange'\n];\nvar htmlElementEventNames = [\n 'beforecopy', 'beforecut', 'beforepaste', 'copy', 'cut', 'paste', 'dragstart', 'loadend',\n 'animationstart', 'search', 'transitionrun', 'transitionstart', 'webkitanimationend',\n 'webkitanimationiteration', 'webkitanimationstart', 'webkittransitionend'\n];\nvar mediaElementEventNames = ['encrypted', 'waitingforkey', 'msneedkey', 'mozinterruptbegin', 'mozinterruptend'];\nvar ieElementEventNames = [\n 'activate',\n 'afterupdate',\n 'ariarequest',\n 'beforeactivate',\n 'beforedeactivate',\n 'beforeeditfocus',\n 'beforeupdate',\n 'cellchange',\n 'controlselect',\n 'dataavailable',\n 'datasetchanged',\n 'datasetcomplete',\n 'errorupdate',\n 'filterchange',\n 'layoutcomplete',\n 'losecapture',\n 'move',\n 'moveend',\n 'movestart',\n 'propertychange',\n 'resizeend',\n 'resizestart',\n 'rowenter',\n 'rowexit',\n 'rowsdelete',\n 'rowsinserted',\n 'command',\n 'compassneedscalibration',\n 'deactivate',\n 'help',\n 'mscontentzoom',\n 'msmanipulationstatechanged',\n 'msgesturechange',\n 'msgesturedoubletap',\n 'msgestureend',\n 'msgesturehold',\n 'msgesturestart',\n 'msgesturetap',\n 'msgotpointercapture',\n 'msinertiastart',\n 'mslostpointercapture',\n 'mspointercancel',\n 'mspointerdown',\n 'mspointerenter',\n 'mspointerhover',\n 'mspointerleave',\n 'mspointermove',\n 'mspointerout',\n 'mspointerover',\n 'mspointerup',\n 'pointerout',\n 'mssitemodejumplistitemremoved',\n 'msthumbnailclick',\n 'stop',\n 'storagecommit'\n];\nvar webglEventNames = ['webglcontextrestored', 'webglcontextlost', 'webglcontextcreationerror'];\nvar formEventNames = ['autocomplete', 'autocompleteerror'];\nvar detailEventNames = ['toggle'];\nvar frameEventNames = ['load'];\nvar frameSetEventNames = ['blur', 'error', 'focus', 'load', 'resize', 'scroll', 'messageerror'];\nvar marqueeEventNames = ['bounce', 'finish', 'start'];\nvar XMLHttpRequestEventNames = [\n 'loadstart', 'progress', 'abort', 'error', 'load', 'progress', 'timeout', 'loadend',\n 'readystatechange'\n];\nvar IDBIndexEventNames = ['upgradeneeded', 'complete', 'abort', 'success', 'error', 'blocked', 'versionchange', 'close'];\nvar websocketEventNames = ['close', 'error', 'open', 'message'];\nvar workerEventNames = ['error', 'message'];\nvar eventNames = globalEventHandlersEventNames.concat(webglEventNames, formEventNames, detailEventNames, documentEventNames, windowEventNames, htmlElementEventNames, ieElementEventNames);\nfunction filterProperties(target, onProperties, ignoreProperties) {\n if (!ignoreProperties) {\n return onProperties;\n }\n var tip = ignoreProperties.filter(function (ip) { return ip.target === target; });\n if (!tip || tip.length === 0) {\n return onProperties;\n }\n var targetIgnoreProperties = tip[0].ignoreProperties;\n return onProperties.filter(function (op) { return targetIgnoreProperties.indexOf(op) === -1; });\n}\nfunction patchFilteredProperties(target, onProperties, ignoreProperties, prototype) {\n // check whether target is available, sometimes target will be undefined\n // because different browser or some 3rd party plugin.\n if (!target) {\n return;\n }\n var filteredProperties = filterProperties(target, onProperties, ignoreProperties);\n patchOnProperties(target, filteredProperties, prototype);\n}\nfunction propertyDescriptorPatch(api, _global) {\n if (isNode && !isMix) {\n return;\n }\n var supportsWebSocket = typeof WebSocket !== 'undefined';\n if (canPatchViaPropertyDescriptor()) {\n var ignoreProperties = _global.__Zone_ignore_on_properties;\n // for browsers that we can patch the descriptor: Chrome & Firefox\n if (isBrowser) {\n var internalWindow = window;\n // in IE/Edge, onProp not exist in window object, but in WindowPrototype\n // so we need to pass WindowPrototype to check onProp exist or not\n patchFilteredProperties(internalWindow, eventNames.concat(['messageerror']), ignoreProperties, ObjectGetPrototypeOf(internalWindow));\n patchFilteredProperties(Document.prototype, eventNames, ignoreProperties);\n if (typeof internalWindow['SVGElement'] !== 'undefined') {\n patchFilteredProperties(internalWindow['SVGElement'].prototype, eventNames, ignoreProperties);\n }\n patchFilteredProperties(Element.prototype, eventNames, ignoreProperties);\n patchFilteredProperties(HTMLElement.prototype, eventNames, ignoreProperties);\n patchFilteredProperties(HTMLMediaElement.prototype, mediaElementEventNames, ignoreProperties);\n patchFilteredProperties(HTMLFrameSetElement.prototype, windowEventNames.concat(frameSetEventNames), ignoreProperties);\n patchFilteredProperties(HTMLBodyElement.prototype, windowEventNames.concat(frameSetEventNames), ignoreProperties);\n patchFilteredProperties(HTMLFrameElement.prototype, frameEventNames, ignoreProperties);\n patchFilteredProperties(HTMLIFrameElement.prototype, frameEventNames, ignoreProperties);\n var HTMLMarqueeElement_1 = internalWindow['HTMLMarqueeElement'];\n if (HTMLMarqueeElement_1) {\n patchFilteredProperties(HTMLMarqueeElement_1.prototype, marqueeEventNames, ignoreProperties);\n }\n var Worker_1 = internalWindow['Worker'];\n if (Worker_1) {\n patchFilteredProperties(Worker_1.prototype, workerEventNames, ignoreProperties);\n }\n }\n patchFilteredProperties(XMLHttpRequest.prototype, XMLHttpRequestEventNames, ignoreProperties);\n var XMLHttpRequestEventTarget = _global['XMLHttpRequestEventTarget'];\n if (XMLHttpRequestEventTarget) {\n patchFilteredProperties(XMLHttpRequestEventTarget && XMLHttpRequestEventTarget.prototype, XMLHttpRequestEventNames, ignoreProperties);\n }\n if (typeof IDBIndex !== 'undefined') {\n patchFilteredProperties(IDBIndex.prototype, IDBIndexEventNames, ignoreProperties);\n patchFilteredProperties(IDBRequest.prototype, IDBIndexEventNames, ignoreProperties);\n patchFilteredProperties(IDBOpenDBRequest.prototype, IDBIndexEventNames, ignoreProperties);\n patchFilteredProperties(IDBDatabase.prototype, IDBIndexEventNames, ignoreProperties);\n patchFilteredProperties(IDBTransaction.prototype, IDBIndexEventNames, ignoreProperties);\n patchFilteredProperties(IDBCursor.prototype, IDBIndexEventNames, ignoreProperties);\n }\n if (supportsWebSocket) {\n patchFilteredProperties(WebSocket.prototype, websocketEventNames, ignoreProperties);\n }\n }\n else {\n // Safari, Android browsers (Jelly Bean)\n patchViaCapturingAllTheEvents();\n patchClass('XMLHttpRequest');\n if (supportsWebSocket) {\n apply(api, _global);\n }\n }\n}\nfunction canPatchViaPropertyDescriptor() {\n if ((isBrowser || isMix) && !ObjectGetOwnPropertyDescriptor(HTMLElement.prototype, 'onclick') &&\n typeof Element !== 'undefined') {\n // WebKit https://bugs.webkit.org/show_bug.cgi?id=134364\n // IDL interface attributes are not configurable\n var desc = ObjectGetOwnPropertyDescriptor(Element.prototype, 'onclick');\n if (desc && !desc.configurable)\n return false;\n }\n var ON_READY_STATE_CHANGE = 'onreadystatechange';\n var XMLHttpRequestPrototype = XMLHttpRequest.prototype;\n var xhrDesc = ObjectGetOwnPropertyDescriptor(XMLHttpRequestPrototype, ON_READY_STATE_CHANGE);\n // add enumerable and configurable here because in opera\n // by default XMLHttpRequest.prototype.onreadystatechange is undefined\n // without adding enumerable and configurable will cause onreadystatechange\n // non-configurable\n // and if XMLHttpRequest.prototype.onreadystatechange is undefined,\n // we should set a real desc instead a fake one\n if (xhrDesc) {\n ObjectDefineProperty(XMLHttpRequestPrototype, ON_READY_STATE_CHANGE, {\n enumerable: true,\n configurable: true,\n get: function () {\n return true;\n }\n });\n var req = new XMLHttpRequest();\n var result = !!req.onreadystatechange;\n // restore original desc\n ObjectDefineProperty(XMLHttpRequestPrototype, ON_READY_STATE_CHANGE, xhrDesc || {});\n return result;\n }\n else {\n var SYMBOL_FAKE_ONREADYSTATECHANGE_1 = zoneSymbol('fake');\n ObjectDefineProperty(XMLHttpRequestPrototype, ON_READY_STATE_CHANGE, {\n enumerable: true,\n configurable: true,\n get: function () {\n return this[SYMBOL_FAKE_ONREADYSTATECHANGE_1];\n },\n set: function (value) {\n this[SYMBOL_FAKE_ONREADYSTATECHANGE_1] = value;\n }\n });\n var req = new XMLHttpRequest();\n var detectFunc = function () { };\n req.onreadystatechange = detectFunc;\n var result = req[SYMBOL_FAKE_ONREADYSTATECHANGE_1] === detectFunc;\n req.onreadystatechange = null;\n return result;\n }\n}\nvar unboundKey = zoneSymbol('unbound');\n// Whenever any eventListener fires, we check the eventListener target and all parents\n// for `onwhatever` properties and replace them with zone-bound functions\n// - Chrome (for now)\nfunction patchViaCapturingAllTheEvents() {\n var _loop_1 = function (i) {\n var property = eventNames[i];\n var onproperty = 'on' + property;\n self.addEventListener(property, function (event) {\n var elt = event.target, bound, source;\n if (elt) {\n source = elt.constructor['name'] + '.' + onproperty;\n }\n else {\n source = 'unknown.' + onproperty;\n }\n while (elt) {\n if (elt[onproperty] && !elt[onproperty][unboundKey]) {\n bound = wrapWithCurrentZone(elt[onproperty], source);\n bound[unboundKey] = elt[onproperty];\n elt[onproperty] = bound;\n }\n elt = elt.parentElement;\n }\n }, true);\n };\n for (var i = 0; i < eventNames.length; i++) {\n _loop_1(i);\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 */\nfunction eventTargetPatch(_global, api) {\n var WTF_ISSUE_555 = 'Anchor,Area,Audio,BR,Base,BaseFont,Body,Button,Canvas,Content,DList,Directory,Div,Embed,FieldSet,Font,Form,Frame,FrameSet,HR,Head,Heading,Html,IFrame,Image,Input,Keygen,LI,Label,Legend,Link,Map,Marquee,Media,Menu,Meta,Meter,Mod,OList,Object,OptGroup,Option,Output,Paragraph,Pre,Progress,Quote,Script,Select,Source,Span,Style,TableCaption,TableCell,TableCol,Table,TableRow,TableSection,TextArea,Title,Track,UList,Unknown,Video';\n var NO_EVENT_TARGET = 'ApplicationCache,EventSource,FileReader,InputMethodContext,MediaController,MessagePort,Node,Performance,SVGElementInstance,SharedWorker,TextTrack,TextTrackCue,TextTrackList,WebKitNamedFlow,Window,Worker,WorkerGlobalScope,XMLHttpRequest,XMLHttpRequestEventTarget,XMLHttpRequestUpload,IDBRequest,IDBOpenDBRequest,IDBDatabase,IDBTransaction,IDBCursor,DBIndex,WebSocket'\n .split(',');\n var EVENT_TARGET = 'EventTarget';\n var apis = [];\n var isWtf = _global['wtf'];\n var WTF_ISSUE_555_ARRAY = WTF_ISSUE_555.split(',');\n if (isWtf) {\n // Workaround for: https://github.com/google/tracing-framework/issues/555\n apis = WTF_ISSUE_555_ARRAY.map(function (v) { return 'HTML' + v + 'Element'; }).concat(NO_EVENT_TARGET);\n }\n else if (_global[EVENT_TARGET]) {\n apis.push(EVENT_TARGET);\n }\n else {\n // Note: EventTarget is not available in all browsers,\n // if it's not available, we instead patch the APIs in the IDL that inherit from EventTarget\n apis = NO_EVENT_TARGET;\n }\n var isDisableIECheck = _global['__Zone_disable_IE_check'] || false;\n var isEnableCrossContextCheck = _global['__Zone_enable_cross_context_check'] || false;\n var ieOrEdge = isIEOrEdge();\n var ADD_EVENT_LISTENER_SOURCE = '.addEventListener:';\n var FUNCTION_WRAPPER = '[object FunctionWrapper]';\n var BROWSER_TOOLS = 'function __BROWSERTOOLS_CONSOLE_SAFEFUNC() { [native code] }';\n // predefine all __zone_symbol__ + eventName + true/false string\n for (var i = 0; i < eventNames.length; i++) {\n var eventName = eventNames[i];\n var falseEventName = eventName + FALSE_STR;\n var trueEventName = eventName + TRUE_STR;\n var symbol = ZONE_SYMBOL_PREFIX + falseEventName;\n var symbolCapture = ZONE_SYMBOL_PREFIX + trueEventName;\n zoneSymbolEventNames$1[eventName] = {};\n zoneSymbolEventNames$1[eventName][FALSE_STR] = symbol;\n zoneSymbolEventNames$1[eventName][TRUE_STR] = symbolCapture;\n }\n // predefine all task.source string\n for (var i = 0; i < WTF_ISSUE_555.length; i++) {\n var target = WTF_ISSUE_555_ARRAY[i];\n var targets = globalSources[target] = {};\n for (var j = 0; j < eventNames.length; j++) {\n var eventName = eventNames[j];\n targets[eventName] = target + ADD_EVENT_LISTENER_SOURCE + eventName;\n }\n }\n var checkIEAndCrossContext = function (nativeDelegate, delegate, target, args) {\n if (!isDisableIECheck && ieOrEdge) {\n if (isEnableCrossContextCheck) {\n try {\n var testString = delegate.toString();\n if ((testString === FUNCTION_WRAPPER || testString == BROWSER_TOOLS)) {\n nativeDelegate.apply(target, args);\n return false;\n }\n }\n catch (error) {\n nativeDelegate.apply(target, args);\n return false;\n }\n }\n else {\n var testString = delegate.toString();\n if ((testString === FUNCTION_WRAPPER || testString == BROWSER_TOOLS)) {\n nativeDelegate.apply(target, args);\n return false;\n }\n }\n }\n else if (isEnableCrossContextCheck) {\n try {\n delegate.toString();\n }\n catch (error) {\n nativeDelegate.apply(target, args);\n return false;\n }\n }\n return true;\n };\n var apiTypes = [];\n for (var i = 0; i < apis.length; i++) {\n var type = _global[apis[i]];\n apiTypes.push(type && type.prototype);\n }\n // vh is validateHandler to check event handler\n // is valid or not(for security check)\n patchEventTarget(_global, apiTypes, { vh: checkIEAndCrossContext });\n api.patchEventTarget = patchEventTarget;\n return true;\n}\nfunction patchEvent(global, api) {\n patchEventPrototype(global, api);\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 */\nfunction registerElementPatch(_global) {\n if ((!isBrowser && !isMix) || !('registerElement' in _global.document)) {\n return;\n }\n var _registerElement = document.registerElement;\n var callbacks = ['createdCallback', 'attachedCallback', 'detachedCallback', 'attributeChangedCallback'];\n document.registerElement = function (name, opts) {\n if (opts && opts.prototype) {\n callbacks.forEach(function (callback) {\n var source = 'Document.registerElement::' + callback;\n var prototype = opts.prototype;\n if (prototype.hasOwnProperty(callback)) {\n var descriptor = ObjectGetOwnPropertyDescriptor(prototype, callback);\n if (descriptor && descriptor.value) {\n descriptor.value = wrapWithCurrentZone(descriptor.value, source);\n _redefineProperty(opts.prototype, callback, descriptor);\n }\n else {\n prototype[callback] = wrapWithCurrentZone(prototype[callback], source);\n }\n }\n else if (prototype[callback]) {\n prototype[callback] = wrapWithCurrentZone(prototype[callback], source);\n }\n });\n }\n return _registerElement.call(document, name, opts);\n };\n attachOriginToPatched(document.registerElement, _registerElement);\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/**\n * @fileoverview\n * @suppress {missingRequire}\n */\nZone.__load_patch('util', function (global, Zone, api) {\n api.patchOnProperties = patchOnProperties;\n api.patchMethod = patchMethod;\n api.bindArguments = bindArguments;\n});\nZone.__load_patch('timers', function (global) {\n var set = 'set';\n var clear = 'clear';\n patchTimer(global, set, clear, 'Timeout');\n patchTimer(global, set, clear, 'Interval');\n patchTimer(global, set, clear, 'Immediate');\n});\nZone.__load_patch('requestAnimationFrame', function (global) {\n patchTimer(global, 'request', 'cancel', 'AnimationFrame');\n patchTimer(global, 'mozRequest', 'mozCancel', 'AnimationFrame');\n patchTimer(global, 'webkitRequest', 'webkitCancel', 'AnimationFrame');\n});\nZone.__load_patch('blocking', function (global, Zone) {\n var blockingMethods = ['alert', 'prompt', 'confirm'];\n for (var i = 0; i < blockingMethods.length; i++) {\n var name_1 = blockingMethods[i];\n patchMethod(global, name_1, function (delegate, symbol, name) {\n return function (s, args) {\n return Zone.current.run(delegate, global, args, name);\n };\n });\n }\n});\nZone.__load_patch('EventTarget', function (global, Zone, api) {\n // load blackListEvents from global\n var SYMBOL_BLACK_LISTED_EVENTS = Zone.__symbol__('BLACK_LISTED_EVENTS');\n if (global[SYMBOL_BLACK_LISTED_EVENTS]) {\n Zone[SYMBOL_BLACK_LISTED_EVENTS] = global[SYMBOL_BLACK_LISTED_EVENTS];\n }\n patchEvent(global, api);\n eventTargetPatch(global, api);\n // patch XMLHttpRequestEventTarget's addEventListener/removeEventListener\n var XMLHttpRequestEventTarget = global['XMLHttpRequestEventTarget'];\n if (XMLHttpRequestEventTarget && XMLHttpRequestEventTarget.prototype) {\n api.patchEventTarget(global, [XMLHttpRequestEventTarget.prototype]);\n }\n patchClass('MutationObserver');\n patchClass('WebKitMutationObserver');\n patchClass('IntersectionObserver');\n patchClass('FileReader');\n});\nZone.__load_patch('on_property', function (global, Zone, api) {\n propertyDescriptorPatch(api, global);\n propertyPatch();\n registerElementPatch(global);\n});\nZone.__load_patch('canvas', function (global) {\n var HTMLCanvasElement = global['HTMLCanvasElement'];\n if (typeof HTMLCanvasElement !== 'undefined' && HTMLCanvasElement.prototype &&\n HTMLCanvasElement.prototype.toBlob) {\n patchMacroTask(HTMLCanvasElement.prototype, 'toBlob', function (self, args) {\n return { name: 'HTMLCanvasElement.toBlob', target: self, cbIdx: 0, args: args };\n });\n }\n});\nZone.__load_patch('XHR', function (global, Zone) {\n // Treat XMLHttpRequest as a macrotask.\n patchXHR(global);\n var XHR_TASK = zoneSymbol('xhrTask');\n var XHR_SYNC = zoneSymbol('xhrSync');\n var XHR_LISTENER = zoneSymbol('xhrListener');\n var XHR_SCHEDULED = zoneSymbol('xhrScheduled');\n var XHR_URL = zoneSymbol('xhrURL');\n function patchXHR(window) {\n var XMLHttpRequestPrototype = XMLHttpRequest.prototype;\n function findPendingTask(target) {\n return target[XHR_TASK];\n }\n var oriAddListener = XMLHttpRequestPrototype[ZONE_SYMBOL_ADD_EVENT_LISTENER];\n var oriRemoveListener = XMLHttpRequestPrototype[ZONE_SYMBOL_REMOVE_EVENT_LISTENER];\n if (!oriAddListener) {\n var XMLHttpRequestEventTarget = window['XMLHttpRequestEventTarget'];\n if (XMLHttpRequestEventTarget) {\n var XMLHttpRequestEventTargetPrototype = XMLHttpRequestEventTarget.prototype;\n oriAddListener = XMLHttpRequestEventTargetPrototype[ZONE_SYMBOL_ADD_EVENT_LISTENER];\n oriRemoveListener = XMLHttpRequestEventTargetPrototype[ZONE_SYMBOL_REMOVE_EVENT_LISTENER];\n }\n }\n var READY_STATE_CHANGE = 'readystatechange';\n var SCHEDULED = 'scheduled';\n function scheduleTask(task) {\n XMLHttpRequest[XHR_SCHEDULED] = false;\n var data = task.data;\n var target = data.target;\n // remove existing event listener\n var listener = target[XHR_LISTENER];\n if (!oriAddListener) {\n oriAddListener = target[ZONE_SYMBOL_ADD_EVENT_LISTENER];\n oriRemoveListener = target[ZONE_SYMBOL_REMOVE_EVENT_LISTENER];\n }\n if (listener) {\n oriRemoveListener.call(target, READY_STATE_CHANGE, listener);\n }\n var newListener = target[XHR_LISTENER] = function () {\n if (target.readyState === target.DONE) {\n // sometimes on some browsers XMLHttpRequest will fire onreadystatechange with\n // readyState=4 multiple times, so we need to check task state here\n if (!data.aborted && XMLHttpRequest[XHR_SCHEDULED] && task.state === SCHEDULED) {\n task.invoke();\n }\n }\n };\n oriAddListener.call(target, READY_STATE_CHANGE, newListener);\n var storedTask = target[XHR_TASK];\n if (!storedTask) {\n target[XHR_TASK] = task;\n }\n sendNative.apply(target, data.args);\n XMLHttpRequest[XHR_SCHEDULED] = true;\n return task;\n }\n function placeholderCallback() { }\n function clearTask(task) {\n var data = task.data;\n // Note - ideally, we would call data.target.removeEventListener here, but it's too late\n // to prevent it from firing. So instead, we store info for the event listener.\n data.aborted = true;\n return abortNative.apply(data.target, data.args);\n }\n var openNative = patchMethod(XMLHttpRequestPrototype, 'open', function () { return function (self, args) {\n self[XHR_SYNC] = args[2] == false;\n self[XHR_URL] = args[1];\n return openNative.apply(self, args);\n }; });\n var XMLHTTPREQUEST_SOURCE = 'XMLHttpRequest.send';\n var sendNative = patchMethod(XMLHttpRequestPrototype, 'send', function () { return function (self, args) {\n if (self[XHR_SYNC]) {\n // if the XHR is sync there is no task to schedule, just execute the code.\n return sendNative.apply(self, args);\n }\n else {\n var options = {\n target: self,\n url: self[XHR_URL],\n isPeriodic: false,\n delay: null,\n args: args,\n aborted: false\n };\n return scheduleMacroTaskWithCurrentZone(XMLHTTPREQUEST_SOURCE, placeholderCallback, options, scheduleTask, clearTask);\n }\n }; });\n var abortNative = patchMethod(XMLHttpRequestPrototype, 'abort', function () { return function (self) {\n var task = findPendingTask(self);\n if (task && typeof task.type == 'string') {\n // If the XHR has already completed, do nothing.\n // If the XHR has already been aborted, do nothing.\n // Fix #569, call abort multiple times before done will cause\n // macroTask task count be negative number\n if (task.cancelFn == null || (task.data && task.data.aborted)) {\n return;\n }\n task.zone.cancelTask(task);\n }\n // Otherwise, we are trying to abort an XHR which has not yet been sent, so there is no\n // task\n // to cancel. Do nothing.\n }; });\n }\n});\nZone.__load_patch('geolocation', function (global) {\n /// GEO_LOCATION\n if (global['navigator'] && global['navigator'].geolocation) {\n patchPrototype(global['navigator'].geolocation, ['getCurrentPosition', 'watchPosition']);\n }\n});\nZone.__load_patch('PromiseRejectionEvent', function (global, Zone) {\n // handle unhandled promise rejection\n function findPromiseRejectionHandler(evtName) {\n return function (e) {\n var eventTasks = findEventTasks(global, evtName);\n eventTasks.forEach(function (eventTask) {\n // windows has added unhandledrejection event listener\n // trigger the event listener\n var PromiseRejectionEvent = global['PromiseRejectionEvent'];\n if (PromiseRejectionEvent) {\n var evt = new PromiseRejectionEvent(evtName, { promise: e.promise, reason: e.rejection });\n eventTask.invoke(evt);\n }\n });\n };\n }\n if (global['PromiseRejectionEvent']) {\n Zone[zoneSymbol('unhandledPromiseRejectionHandler')] =\n findPromiseRejectionHandler('unhandledrejection');\n Zone[zoneSymbol('rejectionHandledHandler')] =\n findPromiseRejectionHandler('rejectionhandled');\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\n})));\n","/**\r\n * This file includes polyfills needed by Angular and is loaded before the app.\r\n * You can add your own extra polyfills to this file.\r\n *\r\n * This file is divided into 2 sections:\r\n * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.\r\n * 2. Application imports. Files imported after ZoneJS that should be loaded before your main\r\n * file.\r\n *\r\n * The current setup is for so-called \"evergreen\" browsers; the last versions of browsers that\r\n * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),\r\n * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.\r\n *\r\n * Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html\r\n */\r\n\r\n/***************************************************************************************************\r\n * BROWSER POLYFILLS\r\n */\r\n\r\n/** IE9, IE10 and IE11 requires all of the following polyfills. **/\r\n// import 'core-js/es6/symbol';\r\n// import 'core-js/es6/object';\r\n// import 'core-js/es6/function';\r\n// import 'core-js/es6/parse-int';\r\n// import 'core-js/es6/parse-float';\r\n// import 'core-js/es6/number';\r\n// import 'core-js/es6/math';\r\n// import 'core-js/es6/string';\r\n// import 'core-js/es6/date';\r\n// import 'core-js/es6/array';\r\n// import 'core-js/es6/regexp';\r\n// import 'core-js/es6/map';\r\n// import 'core-js/es6/weak-map';\r\n// import 'core-js/es6/set';\r\n\r\n/** IE10 and IE11 requires the following for NgClass support on SVG elements */\r\n// import 'classlist.js'; // Run `npm install --save classlist.js`.\r\n\r\n/** IE10 and IE11 requires the following for the Reflect API. */\r\n// import 'core-js/es6/reflect';\r\n\r\n\r\n/** Evergreen browsers require these. **/\r\n// Used for reflect-metadata in JIT. If you use AOT (and only Angular decorators), you can remove.\r\nimport 'core-js/es7/reflect';\r\n\r\n\r\n/**\r\n * Web Animations `@angular/platform-browser/animations`\r\n * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari.\r\n * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0).\r\n **/\r\n// import 'web-animations-js'; // Run `npm install --save web-animations-js`.\r\n\r\n/**\r\n * By default, zone.js will patch all possible macroTask and DomEvents\r\n * user can disable parts of macroTask/DomEvents patch by setting following flags\r\n */\r\n\r\n // (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame\r\n // (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick\r\n // (window as any).__zone_symbol__BLACK_LISTED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames\r\n\r\n /*\r\n * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js\r\n * with the following flag, it will bypass `zone.js` patch for IE/Edge\r\n */\r\n// (window as any).__Zone_enable_cross_context_check = true;\r\n\r\n/***************************************************************************************************\r\n * Zone JS is required by default for Angular itself.\r\n */\r\nimport 'zone.js/dist/zone'; // Included with Angular CLI.\r\n\r\n\r\n\r\n/***************************************************************************************************\r\n * APPLICATION IMPORTS\r\n */\r\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js","webpack:///./node_modules/core-js/es7/reflect.js","webpack:///./node_modules/core-js/modules/_a-function.js","webpack:///./node_modules/core-js/modules/_an-instance.js","webpack:///./node_modules/core-js/modules/_an-object.js","webpack:///./node_modules/core-js/modules/_array-from-iterable.js","webpack:///./node_modules/core-js/modules/_array-includes.js","webpack:///./node_modules/core-js/modules/_array-methods.js","webpack:///./node_modules/core-js/modules/_array-species-constructor.js","webpack:///./node_modules/core-js/modules/_array-species-create.js","webpack:///./node_modules/core-js/modules/_classof.js","webpack:///./node_modules/core-js/modules/_cof.js","webpack:///./node_modules/core-js/modules/_collection-strong.js","webpack:///./node_modules/core-js/modules/_collection-weak.js","webpack:///./node_modules/core-js/modules/_collection.js","webpack:///./node_modules/core-js/modules/_core.js","webpack:///./node_modules/core-js/modules/_ctx.js","webpack:///./node_modules/core-js/modules/_defined.js","webpack:///./node_modules/core-js/modules/_descriptors.js","webpack:///./node_modules/core-js/modules/_dom-create.js","webpack:///./node_modules/core-js/modules/_enum-bug-keys.js","webpack:///./node_modules/core-js/modules/_export.js","webpack:///./node_modules/core-js/modules/_fails.js","webpack:///./node_modules/core-js/modules/_for-of.js","webpack:///./node_modules/core-js/modules/_global.js","webpack:///./node_modules/core-js/modules/_has.js","webpack:///./node_modules/core-js/modules/_hide.js","webpack:///./node_modules/core-js/modules/_html.js","webpack:///./node_modules/core-js/modules/_ie8-dom-define.js","webpack:///./node_modules/core-js/modules/_inherit-if-required.js","webpack:///./node_modules/core-js/modules/_iobject.js","webpack:///./node_modules/core-js/modules/_is-array-iter.js","webpack:///./node_modules/core-js/modules/_is-array.js","webpack:///./node_modules/core-js/modules/_is-object.js","webpack:///./node_modules/core-js/modules/_iter-call.js","webpack:///./node_modules/core-js/modules/_iter-create.js","webpack:///./node_modules/core-js/modules/_iter-define.js","webpack:///./node_modules/core-js/modules/_iter-detect.js","webpack:///./node_modules/core-js/modules/_iter-step.js","webpack:///./node_modules/core-js/modules/_iterators.js","webpack:///./node_modules/core-js/modules/_library.js","webpack:///./node_modules/core-js/modules/_meta.js","webpack:///./node_modules/core-js/modules/_metadata.js","webpack:///./node_modules/core-js/modules/_object-assign.js","webpack:///./node_modules/core-js/modules/_object-create.js","webpack:///./node_modules/core-js/modules/_object-dp.js","webpack:///./node_modules/core-js/modules/_object-dps.js","webpack:///./node_modules/core-js/modules/_object-gopd.js","webpack:///./node_modules/core-js/modules/_object-gops.js","webpack:///./node_modules/core-js/modules/_object-gpo.js","webpack:///./node_modules/core-js/modules/_object-keys-internal.js","webpack:///./node_modules/core-js/modules/_object-keys.js","webpack:///./node_modules/core-js/modules/_object-pie.js","webpack:///./node_modules/core-js/modules/_property-desc.js","webpack:///./node_modules/core-js/modules/_redefine-all.js","webpack:///./node_modules/core-js/modules/_redefine.js","webpack:///./node_modules/core-js/modules/_set-proto.js","webpack:///./node_modules/core-js/modules/_set-species.js","webpack:///./node_modules/core-js/modules/_set-to-string-tag.js","webpack:///./node_modules/core-js/modules/_shared-key.js","webpack:///./node_modules/core-js/modules/_shared.js","webpack:///./node_modules/core-js/modules/_to-absolute-index.js","webpack:///./node_modules/core-js/modules/_to-integer.js","webpack:///./node_modules/core-js/modules/_to-iobject.js","webpack:///./node_modules/core-js/modules/_to-length.js","webpack:///./node_modules/core-js/modules/_to-object.js","webpack:///./node_modules/core-js/modules/_to-primitive.js","webpack:///./node_modules/core-js/modules/_uid.js","webpack:///./node_modules/core-js/modules/_validate-collection.js","webpack:///./node_modules/core-js/modules/_wks.js","webpack:///./node_modules/core-js/modules/core.get-iterator-method.js","webpack:///./node_modules/core-js/modules/es6.map.js","webpack:///./node_modules/core-js/modules/es6.set.js","webpack:///./node_modules/core-js/modules/es6.weak-map.js","webpack:///./node_modules/core-js/modules/es7.reflect.define-metadata.js","webpack:///./node_modules/core-js/modules/es7.reflect.delete-metadata.js","webpack:///./node_modules/core-js/modules/es7.reflect.get-metadata-keys.js","webpack:///./node_modules/core-js/modules/es7.reflect.get-metadata.js","webpack:///./node_modules/core-js/modules/es7.reflect.get-own-metadata-keys.js","webpack:///./node_modules/core-js/modules/es7.reflect.get-own-metadata.js","webpack:///./node_modules/core-js/modules/es7.reflect.has-metadata.js","webpack:///./node_modules/core-js/modules/es7.reflect.has-own-metadata.js","webpack:///./node_modules/core-js/modules/es7.reflect.metadata.js","webpack:///./node_modules/zone.js/dist/zone.js","webpack:///./src/polyfills.ts"],"names":[],"mappings":"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A;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC,qBAAqB;AACrB,0BAA0B;AAC1B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;;;;;;;;;;;;AC/Ia;AACb,kBAAkB,mBAAO,CAAC,wEAAiB;AAC3C,cAAc,mBAAO,CAAC,wDAAS;AAC/B,eAAe,mBAAO,CAAC,kEAAc;AACrC,eAAe,mBAAO,CAAC,kEAAc;AACrC,iBAAiB,mBAAO,CAAC,sEAAgB;AACzC,YAAY,mBAAO,CAAC,4DAAW;AAC/B,wBAAwB,mBAAO,CAAC,0EAAkB;AAClD,WAAW,mBAAO,CAAC,sDAAQ;AAC3B,eAAe,mBAAO,CAAC,sFAAwB;AAC/C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,qBAAqB;AACrB,0BAA0B;AAC1B;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;;;;;;;;;;;ACpFa;AACb,aAAa,mBAAO,CAAC,4DAAW;AAChC,cAAc,mBAAO,CAAC,4DAAW;AACjC,eAAe,mBAAO,CAAC,gE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AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;;;;;;;;;;;ACpEA,eAAe,mBAAO,CAAC,sDAAQ;AAC/B;;AAEA;AACA;AACA,iCAAiC,qBAAqB;AACtD;AACA,iCAAiC,SAAS,EAAE;AAC5C,CAAC,YAAY;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,SAAS,qBAAqB;AAC3D,iCAAiC,aAAa;AAC9C;AACA,GAAG,YAAY;AACf;AACA;;;;;;;;;;;;ACrBA;AACA,UAAU;AACV;;;;;;;;;;;;ACFA;;;;;;;;;;;;ACAA;;;;;;;;;;;;ACAA,WAAW,mBAAO,CAAC,sDAAQ;AAC3B,eAAe,mBAAO,CAAC,kEAAc;AACrC,UAAU,mBAAO,CAAC,sDAAQ;AAC1B,cAAc,mBAAO,CAAC,kEAAc;AACpC;AACA;AACA;AACA;AACA,cAAc,mBAAO,CAAC,0DAAU;AAChC,iDAAiD;AACjD,CAAC;AACD;AACA,qBAAqB;AACrB;AACA,SAAS;AACT,GAAG,EAAE;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACpDA,UAAU,mBAAO,CAAC,4DAAW;AAC7B,cAAc,mBAAO,CAAC,4DAAW;AACjC,aAAa,mBAAO,CAAC,4DAAW;AAChC,iDAAiD,mBAAO,CAAC,sEAAgB;;AAEzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,gBAAgB,EAAE;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A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gEAAa;AACrC,eAAe,mBAAO,CAAC,kEAAc;AACrC,gBAAgB,mBAAO,CAAC,oEAAe;AACvC;AACA;;AAEA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAE;;;;;;;;;;;;ACdH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,KAA4D;AAC7D,CAAC,SACW;AACZ,CAAC,qBAAqB;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,uBAAuB;AAC9D,uCAAuC,kBAAkB;AACzD,oCAAoC,eAAe;AACnD,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,kBAAkB;AACzD,uCAAuC,kBAAkB;AACzD,oCAAoC,eAAe;AACnD,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,0BAA0B;AACrD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,kFAAkF,gEAAgE,EAAE;AACpJ;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA,uCAAuC,0BAA0B,EAAE;AACnE;AACA;AACA;AACA,wCAAwC,6DAA6D,EAAE;AACvG,uCAAuC,WAAW,EAAE;AACpD;AACA,kCAAkC,aAAa,EAAE;AACjD,oCAAoC,aAAa,EAAE;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,6BAA6B;AAC7B;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4HAA4H,wBAAwB,oCAAoC;AACxL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gFAAgF,sEAAsE;AACtJ;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,oDAAoD;AAC5F;AACA;AACA;AACA;AACA;AACA,2BAA2B,mCAAmC;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,qEAAqE,gBAAgB;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,sCAAsC,MAAI;AAC1C;AACA;AACA,sCAAsC,MAAI;AAC1C;AACA,+CAA+C,sBAAsB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,+CAA+C,sBAAsB;AACrE;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,QAAQ;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,mBAAmB,oBAAoB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,uBAAuB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,yBAAyB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,EAAE;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,EAAE;AACR;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,oCAAoC;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,sBAAsB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,sBAAsB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,0BAA0B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,sBAAsB;AAChE,qCAAqC,iBAAiB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,8BAA8B;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,0BAA0B;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,0BAA0B;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,iBAAiB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,wBAAwB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,wBAAwB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0FAA0F;AAC1F;AACA;AACA;AACA;AACA;AACA,UAAU,EAAE;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,EAAE;AACZ;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,EAAE;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,0BAA0B,EAAE;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,6BAA6B,EAAE;AACpF;AACA;AACA;AACA;AACA,8CAA8C,kDAAkD,EAAE;AAClG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,0FAA0F;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,+BAA+B,EAAE;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,gBAAgB;AACrF;AACA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,0BAA0B;AAC7C;AACA;AACA,uBAAuB,uBAAuB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA,yCAAyC,6BAA6B;AACtE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,mBAAmB,4BAA4B;AAC/C;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,SAAS;AACT;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mFAAmF;AACnF;AACA;AACA;AACA,UAAU,EAAE;AACZ;AACA,mFAAmF;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,EAAE;AACZ,qFAAqF;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,EAAE;AACZ;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,0CAA0C;AAC5G;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;;;;;;;;;;;ACn/FD;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;GAcG;AAEH;;GAEG;AAEH,mEAAmE;AACnE,+BAA+B;AAC/B,+BAA+B;AAC/B,iCAAiC;AACjC,kCAAkC;AAClC,oCAAoC;AACpC,+BAA+B;AAC/B,6BAA6B;AAC7B,+BAA+B;AAC/B,6BAA6B;AAC7B,8BAA8B;AAC9B,+BAA+B;AAC/B,4BAA4B;AAC5B,iCAAiC;AACjC,4BAA4B;AAE5B,+EAA+E;AAC/E,oEAAoE;AAEpE,gEAAgE;AAChE,gCAAgC;AAGhC,yCAAyC;AACzC,kGAAkG;AACrE;AAG7B;;;;IAII;AACJ,8EAA8E;AAE9E;;;GAGG;AAEF,sGAAsG;AACtG,iGAAiG;AACjG,sHAAsH;AAEtH;;;EAGE;AACH,4DAA4D;AAE5D;;GAEG;AACwB,CAAE,6BAA6B;AAI1D;;GAEG","file":"polyfills.js","sourcesContent":["/**\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 */\nimport 'core-js/es7/reflect';\n","require('../modules/es7.reflect.define-metadata');\nrequire('../modules/es7.reflect.delete-metadata');\nrequire('../modules/es7.reflect.get-metadata');\nrequire('../modules/es7.reflect.get-metadata-keys');\nrequire('../modules/es7.reflect.get-own-metadata');\nrequire('../modules/es7.reflect.get-own-metadata-keys');\nrequire('../modules/es7.reflect.has-metadata');\nrequire('../modules/es7.reflect.has-own-metadata');\nrequire('../modules/es7.reflect.metadata');\nmodule.exports = require('../modules/_core').Reflect;\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","var forOf = require('./_for-of');\n\nmodule.exports = function (iter, ITERATOR) {\n var result = [];\n forOf(iter, false, result.push, result, ITERATOR);\n return result;\n};\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n","var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","'use strict';\nvar dP = require('./_object-dp').f;\nvar create = require('./_object-create');\nvar redefineAll = require('./_redefine-all');\nvar ctx = require('./_ctx');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar $iterDefine = require('./_iter-define');\nvar step = require('./_iter-step');\nvar setSpecies = require('./_set-species');\nvar DESCRIPTORS = require('./_descriptors');\nvar fastKey = require('./_meta').fastKey;\nvar validate = require('./_validate-collection');\nvar SIZE = DESCRIPTORS ? '_s' : 'size';\n\nvar getEntry = function (that, key) {\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return that._i[index];\n // frozen object case\n for (entry = that._f; entry; entry = entry.n) {\n if (entry.k == key) return entry;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = create(null); // index\n that._f = undefined; // first entry\n that._l = undefined; // last entry\n that[SIZE] = 0; // size\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {\n entry.r = true;\n if (entry.p) entry.p = entry.p.n = undefined;\n delete data[entry.i];\n }\n that._f = that._l = undefined;\n that[SIZE] = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = validate(this, NAME);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.n;\n var prev = entry.p;\n delete that._i[entry.i];\n entry.r = true;\n if (prev) prev.n = next;\n if (next) next.p = prev;\n if (that._f == entry) that._f = next;\n if (that._l == entry) that._l = prev;\n that[SIZE]--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n validate(this, NAME);\n var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.n : this._f) {\n f(entry.v, entry.k, this);\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(validate(this, NAME), key);\n }\n });\n if (DESCRIPTORS) dP(C.prototype, 'size', {\n get: function () {\n return validate(this, NAME)[SIZE];\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var entry = getEntry(that, key);\n var prev, index;\n // change existing entry\n if (entry) {\n entry.v = value;\n // create new entry\n } else {\n that._l = entry = {\n i: index = fastKey(key, true), // <- index\n k: key, // <- key\n v: value, // <- value\n p: prev = that._l, // <- previous entry\n n: undefined, // <- next entry\n r: false // <- removed\n };\n if (!that._f) that._f = entry;\n if (prev) prev.n = entry;\n that[SIZE]++;\n // add to index\n if (index !== 'F') that._i[index] = entry;\n } return that;\n },\n getEntry: getEntry,\n setStrong: function (C, NAME, IS_MAP) {\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n $iterDefine(C, NAME, function (iterated, kind) {\n this._t = validate(iterated, NAME); // target\n this._k = kind; // kind\n this._l = undefined; // previous\n }, function () {\n var that = this;\n var kind = that._k;\n var entry = that._l;\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n // get next entry\n if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n // or finish the iteration\n that._t = undefined;\n return step(1);\n }\n // return step by kind\n if (kind == 'keys') return step(0, entry.k);\n if (kind == 'values') return step(0, entry.v);\n return step(0, [entry.k, entry.v]);\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(NAME);\n }\n};\n","'use strict';\nvar redefineAll = require('./_redefine-all');\nvar getWeak = require('./_meta').getWeak;\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar createArrayMethod = require('./_array-methods');\nvar $has = require('./_has');\nvar validate = require('./_validate-collection');\nvar arrayFind = createArrayMethod(5);\nvar arrayFindIndex = createArrayMethod(6);\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (that) {\n return that._l || (that._l = new UncaughtFrozenStore());\n};\nvar UncaughtFrozenStore = function () {\n this.a = [];\n};\nvar findUncaughtFrozen = function (store, key) {\n return arrayFind(store.a, function (it) {\n return it[0] === key;\n });\n};\nUncaughtFrozenStore.prototype = {\n get: function (key) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) return entry[1];\n },\n has: function (key) {\n return !!findUncaughtFrozen(this, key);\n },\n set: function (key, value) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) entry[1] = value;\n else this.a.push([key, value]);\n },\n 'delete': function (key) {\n var index = arrayFindIndex(this.a, function (it) {\n return it[0] === key;\n });\n if (~index) this.a.splice(index, 1);\n return !!~index;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = id++; // collection id\n that._l = undefined; // leak store for uncaught frozen objects\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.3.3.2 WeakMap.prototype.delete(key)\n // 23.4.3.3 WeakSet.prototype.delete(value)\n 'delete': function (key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);\n return data && $has(data, this._i) && delete data[this._i];\n },\n // 23.3.3.4 WeakMap.prototype.has(key)\n // 23.4.3.4 WeakSet.prototype.has(value)\n has: function has(key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);\n return data && $has(data, this._i);\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var data = getWeak(anObject(key), true);\n if (data === true) uncaughtFrozenStore(that).set(key, value);\n else data[that._i] = value;\n return that;\n },\n ufstore: uncaughtFrozenStore\n};\n","'use strict';\nvar global = require('./_global');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar redefineAll = require('./_redefine-all');\nvar meta = require('./_meta');\nvar forOf = require('./_for-of');\nvar anInstance = require('./_an-instance');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar $iterDetect = require('./_iter-detect');\nvar setToStringTag = require('./_set-to-string-tag');\nvar inheritIfRequired = require('./_inherit-if-required');\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n var Base = global[NAME];\n var C = Base;\n var ADDER = IS_MAP ? 'set' : 'add';\n var proto = C && C.prototype;\n var O = {};\n var fixMethod = function (KEY) {\n var fn = proto[KEY];\n redefine(proto, KEY,\n KEY == 'delete' ? function (a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'has' ? function has(a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'get' ? function get(a) {\n return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; }\n : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; }\n );\n };\n if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n new C().entries().next();\n }))) {\n // create collection constructor\n C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n redefineAll(C.prototype, methods);\n meta.NEED = true;\n } else {\n var instance = new C();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new C();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n if (!ACCEPT_ITERABLES) {\n C = wrapper(function (target, iterable) {\n anInstance(target, C, NAME);\n var that = inheritIfRequired(new Base(), target, C);\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n return that;\n });\n C.prototype = proto;\n proto.constructor = C;\n }\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n // weak collections should not contains .clear method\n if (IS_WEAK && proto.clear) delete proto.clear;\n }\n\n setToStringTag(C, NAME);\n\n O[NAME] = C;\n $export($export.G + $export.W + $export.F * (C != Base), O);\n\n if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n return C;\n};\n","var core = module.exports = { version: '2.5.7' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar setPrototypeOf = require('./_set-proto').set;\nmodule.exports = function (that, target, C) {\n var S = target.constructor;\n var P;\n if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n setPrototypeOf(that, P);\n } return that;\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","module.exports = {};\n","module.exports = false;\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","var Map = require('./es6.map');\nvar $export = require('./_export');\nvar shared = require('./_shared')('metadata');\nvar store = shared.store || (shared.store = new (require('./es6.weak-map'))());\n\nvar getOrCreateMetadataMap = function (target, targetKey, create) {\n var targetMetadata = store.get(target);\n if (!targetMetadata) {\n if (!create) return undefined;\n store.set(target, targetMetadata = new Map());\n }\n var keyMetadata = targetMetadata.get(targetKey);\n if (!keyMetadata) {\n if (!create) return undefined;\n targetMetadata.set(targetKey, keyMetadata = new Map());\n } return keyMetadata;\n};\nvar ordinaryHasOwnMetadata = function (MetadataKey, O, P) {\n var metadataMap = getOrCreateMetadataMap(O, P, false);\n return metadataMap === undefined ? false : metadataMap.has(MetadataKey);\n};\nvar ordinaryGetOwnMetadata = function (MetadataKey, O, P) {\n var metadataMap = getOrCreateMetadataMap(O, P, false);\n return metadataMap === undefined ? undefined : metadataMap.get(MetadataKey);\n};\nvar ordinaryDefineOwnMetadata = function (MetadataKey, MetadataValue, O, P) {\n getOrCreateMetadataMap(O, P, true).set(MetadataKey, MetadataValue);\n};\nvar ordinaryOwnMetadataKeys = function (target, targetKey) {\n var metadataMap = getOrCreateMetadataMap(target, targetKey, false);\n var keys = [];\n if (metadataMap) metadataMap.forEach(function (_, key) { keys.push(key); });\n return keys;\n};\nvar toMetaKey = function (it) {\n return it === undefined || typeof it == 'symbol' ? it : String(it);\n};\nvar exp = function (O) {\n $export($export.S, 'Reflect', O);\n};\n\nmodule.exports = {\n store: store,\n map: getOrCreateMetadataMap,\n has: ordinaryHasOwnMetadata,\n get: ordinaryGetOwnMetadata,\n set: ordinaryDefineOwnMetadata,\n keys: ordinaryOwnMetadataKeys,\n key: toMetaKey,\n exp: exp\n};\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n } return T;\n} : $assign;\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","exports.f = Object.getOwnPropertySymbols;\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","exports.f = {}.propertyIsEnumerable;\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var redefine = require('./_redefine');\nmodule.exports = function (target, src, safe) {\n for (var key in src) redefine(target, key, src[key], safe);\n return target;\n};\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar TO_STRING = 'toString';\nvar $toString = Function[TO_STRING];\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","'use strict';\nvar global = require('./_global');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n var C = global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2018 Denis Pushkarev (zloirock.ru)'\n});\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it, TYPE) {\n if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n return it;\n};\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar MAP = 'Map';\n\n// 23.1 Map Objects\nmodule.exports = require('./_collection')(MAP, function (get) {\n return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = strong.getEntry(validate(this, MAP), key);\n return entry && entry.v;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);\n }\n}, strong, true);\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar SET = 'Set';\n\n// 23.2 Set Objects\nmodule.exports = require('./_collection')(SET, function (get) {\n return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);\n }\n}, strong);\n","'use strict';\nvar each = require('./_array-methods')(0);\nvar redefine = require('./_redefine');\nvar meta = require('./_meta');\nvar assign = require('./_object-assign');\nvar weak = require('./_collection-weak');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar validate = require('./_validate-collection');\nvar WEAK_MAP = 'WeakMap';\nvar getWeak = meta.getWeak;\nvar isExtensible = Object.isExtensible;\nvar uncaughtFrozenStore = weak.ufstore;\nvar tmp = {};\nvar InternalMap;\n\nvar wrapper = function (get) {\n return function WeakMap() {\n return get(this, arguments.length > 0 ? arguments[0] : undefined);\n };\n};\n\nvar methods = {\n // 23.3.3.3 WeakMap.prototype.get(key)\n get: function get(key) {\n if (isObject(key)) {\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);\n return data ? data[this._i] : undefined;\n }\n },\n // 23.3.3.5 WeakMap.prototype.set(key, value)\n set: function set(key, value) {\n return weak.def(validate(this, WEAK_MAP), key, value);\n }\n};\n\n// 23.3 WeakMap Objects\nvar $WeakMap = module.exports = require('./_collection')(WEAK_MAP, wrapper, methods, weak, true, true);\n\n// IE11 WeakMap frozen keys fix\nif (fails(function () { return new $WeakMap().set((Object.freeze || Object)(tmp), 7).get(tmp) != 7; })) {\n InternalMap = weak.getConstructor(wrapper, WEAK_MAP);\n assign(InternalMap.prototype, methods);\n meta.NEED = true;\n each(['delete', 'has', 'get', 'set'], function (key) {\n var proto = $WeakMap.prototype;\n var method = proto[key];\n redefine(proto, key, function (a, b) {\n // store frozen objects on internal weakmap shim\n if (isObject(a) && !isExtensible(a)) {\n if (!this._f) this._f = new InternalMap();\n var result = this._f[key](a, b);\n return key == 'set' ? this : result;\n // store all the rest on native weakmap\n } return method.call(this, a, b);\n });\n });\n}\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar toMetaKey = metadata.key;\nvar ordinaryDefineOwnMetadata = metadata.set;\n\nmetadata.exp({ defineMetadata: function defineMetadata(metadataKey, metadataValue, target, targetKey) {\n ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), toMetaKey(targetKey));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar toMetaKey = metadata.key;\nvar getOrCreateMetadataMap = metadata.map;\nvar store = metadata.store;\n\nmetadata.exp({ deleteMetadata: function deleteMetadata(metadataKey, target /* , targetKey */) {\n var targetKey = arguments.length < 3 ? undefined : toMetaKey(arguments[2]);\n var metadataMap = getOrCreateMetadataMap(anObject(target), targetKey, false);\n if (metadataMap === undefined || !metadataMap['delete'](metadataKey)) return false;\n if (metadataMap.size) return true;\n var targetMetadata = store.get(target);\n targetMetadata['delete'](targetKey);\n return !!targetMetadata.size || store['delete'](target);\n} });\n","var Set = require('./es6.set');\nvar from = require('./_array-from-iterable');\nvar metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar ordinaryOwnMetadataKeys = metadata.keys;\nvar toMetaKey = metadata.key;\n\nvar ordinaryMetadataKeys = function (O, P) {\n var oKeys = ordinaryOwnMetadataKeys(O, P);\n var parent = getPrototypeOf(O);\n if (parent === null) return oKeys;\n var pKeys = ordinaryMetadataKeys(parent, P);\n return pKeys.length ? oKeys.length ? from(new Set(oKeys.concat(pKeys))) : pKeys : oKeys;\n};\n\nmetadata.exp({ getMetadataKeys: function getMetadataKeys(target /* , targetKey */) {\n return ordinaryMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar ordinaryHasOwnMetadata = metadata.has;\nvar ordinaryGetOwnMetadata = metadata.get;\nvar toMetaKey = metadata.key;\n\nvar ordinaryGetMetadata = function (MetadataKey, O, P) {\n var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn) return ordinaryGetOwnMetadata(MetadataKey, O, P);\n var parent = getPrototypeOf(O);\n return parent !== null ? ordinaryGetMetadata(MetadataKey, parent, P) : undefined;\n};\n\nmetadata.exp({ getMetadata: function getMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryGetMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar ordinaryOwnMetadataKeys = metadata.keys;\nvar toMetaKey = metadata.key;\n\nmetadata.exp({ getOwnMetadataKeys: function getOwnMetadataKeys(target /* , targetKey */) {\n return ordinaryOwnMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar ordinaryGetOwnMetadata = metadata.get;\nvar toMetaKey = metadata.key;\n\nmetadata.exp({ getOwnMetadata: function getOwnMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryGetOwnMetadata(metadataKey, anObject(target)\n , arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar ordinaryHasOwnMetadata = metadata.has;\nvar toMetaKey = metadata.key;\n\nvar ordinaryHasMetadata = function (MetadataKey, O, P) {\n var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn) return true;\n var parent = getPrototypeOf(O);\n return parent !== null ? ordinaryHasMetadata(MetadataKey, parent, P) : false;\n};\n\nmetadata.exp({ hasMetadata: function hasMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryHasMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar ordinaryHasOwnMetadata = metadata.has;\nvar toMetaKey = metadata.key;\n\nmetadata.exp({ hasOwnMetadata: function hasOwnMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryHasOwnMetadata(metadataKey, anObject(target)\n , arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n","var $metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar toMetaKey = $metadata.key;\nvar ordinaryDefineOwnMetadata = $metadata.set;\n\n$metadata.exp({ metadata: function metadata(metadataKey, metadataValue) {\n return function decorator(target, targetKey) {\n ordinaryDefineOwnMetadata(\n metadataKey, metadataValue,\n (targetKey !== undefined ? anObject : aFunction)(target),\n toMetaKey(targetKey)\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(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(factory());\n}(this, (function () { 'use strict';\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 */\nvar Zone$1 = (function (global) {\n var FUNCTION = 'function';\n var performance = global['performance'];\n function mark(name) {\n performance && performance['mark'] && performance['mark'](name);\n }\n function performanceMeasure(name, label) {\n performance && performance['measure'] && performance['measure'](name, label);\n }\n mark('Zone');\n if (global['Zone']) {\n throw new Error('Zone already loaded.');\n }\n var Zone = /** @class */ (function () {\n function Zone(parent, zoneSpec) {\n this._properties = null;\n this._parent = parent;\n this._name = zoneSpec ? zoneSpec.name || 'unnamed' : '';\n this._properties = zoneSpec && zoneSpec.properties || {};\n this._zoneDelegate =\n new ZoneDelegate(this, this._parent && this._parent._zoneDelegate, zoneSpec);\n }\n Zone.assertZonePatched = function () {\n if (global['Promise'] !== patches['ZoneAwarePromise']) {\n throw new Error('Zone.js has detected that ZoneAwarePromise `(window|global).Promise` ' +\n 'has been overwritten.\\n' +\n 'Most likely cause is that a Promise polyfill has been loaded ' +\n 'after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. ' +\n 'If you must load one, do so before loading zone.js.)');\n }\n };\n Object.defineProperty(Zone, \"root\", {\n get: function () {\n var zone = Zone.current;\n while (zone.parent) {\n zone = zone.parent;\n }\n return zone;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Zone, \"current\", {\n get: function () {\n return _currentZoneFrame.zone;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Zone, \"currentTask\", {\n get: function () {\n return _currentTask;\n },\n enumerable: true,\n configurable: true\n });\n Zone.__load_patch = function (name, fn) {\n if (patches.hasOwnProperty(name)) {\n throw Error('Already loaded patch: ' + name);\n }\n else if (!global['__Zone_disable_' + name]) {\n var perfName = 'Zone:' + name;\n mark(perfName);\n patches[name] = fn(global, Zone, _api);\n performanceMeasure(perfName, perfName);\n }\n };\n Object.defineProperty(Zone.prototype, \"parent\", {\n get: function () {\n return this._parent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Zone.prototype, \"name\", {\n get: function () {\n return this._name;\n },\n enumerable: true,\n configurable: true\n });\n Zone.prototype.get = function (key) {\n var zone = this.getZoneWith(key);\n if (zone)\n return zone._properties[key];\n };\n Zone.prototype.getZoneWith = function (key) {\n var current = this;\n while (current) {\n if (current._properties.hasOwnProperty(key)) {\n return current;\n }\n current = current._parent;\n }\n return null;\n };\n Zone.prototype.fork = function (zoneSpec) {\n if (!zoneSpec)\n throw new Error('ZoneSpec required!');\n return this._zoneDelegate.fork(this, zoneSpec);\n };\n Zone.prototype.wrap = function (callback, source) {\n if (typeof callback !== FUNCTION) {\n throw new Error('Expecting function got: ' + callback);\n }\n var _callback = this._zoneDelegate.intercept(this, callback, source);\n var zone = this;\n return function () {\n return zone.runGuarded(_callback, this, arguments, source);\n };\n };\n Zone.prototype.run = function (callback, applyThis, applyArgs, source) {\n if (applyThis === void 0) { applyThis = undefined; }\n if (applyArgs === void 0) { applyArgs = null; }\n if (source === void 0) { source = null; }\n _currentZoneFrame = { parent: _currentZoneFrame, zone: this };\n try {\n return this._zoneDelegate.invoke(this, callback, applyThis, applyArgs, source);\n }\n finally {\n _currentZoneFrame = _currentZoneFrame.parent;\n }\n };\n Zone.prototype.runGuarded = function (callback, applyThis, applyArgs, source) {\n if (applyThis === void 0) { applyThis = null; }\n if (applyArgs === void 0) { applyArgs = null; }\n if (source === void 0) { source = null; }\n _currentZoneFrame = { parent: _currentZoneFrame, zone: this };\n try {\n try {\n return this._zoneDelegate.invoke(this, callback, applyThis, applyArgs, source);\n }\n catch (error) {\n if (this._zoneDelegate.handleError(this, error)) {\n throw error;\n }\n }\n }\n finally {\n _currentZoneFrame = _currentZoneFrame.parent;\n }\n };\n Zone.prototype.runTask = function (task, applyThis, applyArgs) {\n if (task.zone != this) {\n throw new Error('A task can only be run in the zone of creation! (Creation: ' +\n (task.zone || NO_ZONE).name + '; Execution: ' + this.name + ')');\n }\n // https://github.com/angular/zone.js/issues/778, sometimes eventTask\n // will run in notScheduled(canceled) state, we should not try to\n // run such kind of task but just return\n // we have to define an variable here, if not\n // typescript compiler will complain below\n var isNotScheduled = task.state === notScheduled;\n if (isNotScheduled && task.type === eventTask) {\n return;\n }\n var reEntryGuard = task.state != running;\n reEntryGuard && task._transitionTo(running, scheduled);\n task.runCount++;\n var previousTask = _currentTask;\n _currentTask = task;\n _currentZoneFrame = { parent: _currentZoneFrame, zone: this };\n try {\n if (task.type == macroTask && task.data && !task.data.isPeriodic) {\n task.cancelFn = null;\n }\n try {\n return this._zoneDelegate.invokeTask(this, task, applyThis, applyArgs);\n }\n catch (error) {\n if (this._zoneDelegate.handleError(this, error)) {\n throw error;\n }\n }\n }\n finally {\n // if the task's state is notScheduled or unknown, then it has already been cancelled\n // we should not reset the state to scheduled\n if (task.state !== notScheduled && task.state !== unknown) {\n if (task.type == eventTask || (task.data && task.data.isPeriodic)) {\n reEntryGuard && task._transitionTo(scheduled, running);\n }\n else {\n task.runCount = 0;\n this._updateTaskCount(task, -1);\n reEntryGuard &&\n task._transitionTo(notScheduled, running, notScheduled);\n }\n }\n _currentZoneFrame = _currentZoneFrame.parent;\n _currentTask = previousTask;\n }\n };\n Zone.prototype.scheduleTask = function (task) {\n if (task.zone && task.zone !== this) {\n // check if the task was rescheduled, the newZone\n // should not be the children of the original zone\n var newZone = this;\n while (newZone) {\n if (newZone === task.zone) {\n throw Error(\"can not reschedule task to \" + this\n .name + \" which is descendants of the original zone \" + task.zone.name);\n }\n newZone = newZone.parent;\n }\n }\n task._transitionTo(scheduling, notScheduled);\n var zoneDelegates = [];\n task._zoneDelegates = zoneDelegates;\n task._zone = this;\n try {\n task = this._zoneDelegate.scheduleTask(this, task);\n }\n catch (err) {\n // should set task's state to unknown when scheduleTask throw error\n // because the err may from reschedule, so the fromState maybe notScheduled\n task._transitionTo(unknown, scheduling, notScheduled);\n // TODO: @JiaLiPassion, should we check the result from handleError?\n this._zoneDelegate.handleError(this, err);\n throw err;\n }\n if (task._zoneDelegates === zoneDelegates) {\n // we have to check because internally the delegate can reschedule the task.\n this._updateTaskCount(task, 1);\n }\n if (task.state == scheduling) {\n task._transitionTo(scheduled, scheduling);\n }\n return task;\n };\n Zone.prototype.scheduleMicroTask = function (source, callback, data, customSchedule) {\n return this.scheduleTask(new ZoneTask(microTask, source, callback, data, customSchedule, null));\n };\n Zone.prototype.scheduleMacroTask = function (source, callback, data, customSchedule, customCancel) {\n return this.scheduleTask(new ZoneTask(macroTask, source, callback, data, customSchedule, customCancel));\n };\n Zone.prototype.scheduleEventTask = function (source, callback, data, customSchedule, customCancel) {\n return this.scheduleTask(new ZoneTask(eventTask, source, callback, data, customSchedule, customCancel));\n };\n Zone.prototype.cancelTask = function (task) {\n if (task.zone != this)\n throw new Error('A task can only be cancelled in the zone of creation! (Creation: ' +\n (task.zone || NO_ZONE).name + '; Execution: ' + this.name + ')');\n task._transitionTo(canceling, scheduled, running);\n try {\n this._zoneDelegate.cancelTask(this, task);\n }\n catch (err) {\n // if error occurs when cancelTask, transit the state to unknown\n task._transitionTo(unknown, canceling);\n this._zoneDelegate.handleError(this, err);\n throw err;\n }\n this._updateTaskCount(task, -1);\n task._transitionTo(notScheduled, canceling);\n task.runCount = 0;\n return task;\n };\n Zone.prototype._updateTaskCount = function (task, count) {\n var zoneDelegates = task._zoneDelegates;\n if (count == -1) {\n task._zoneDelegates = null;\n }\n for (var i = 0; i < zoneDelegates.length; i++) {\n zoneDelegates[i]._updateTaskCount(task.type, count);\n }\n };\n Zone.__symbol__ = __symbol__;\n return Zone;\n }());\n var DELEGATE_ZS = {\n name: '',\n onHasTask: function (delegate, _, target, hasTaskState) {\n return delegate.hasTask(target, hasTaskState);\n },\n onScheduleTask: function (delegate, _, target, task) {\n return delegate.scheduleTask(target, task);\n },\n onInvokeTask: function (delegate, _, target, task, applyThis, applyArgs) { return delegate.invokeTask(target, task, applyThis, applyArgs); },\n onCancelTask: function (delegate, _, target, task) {\n return delegate.cancelTask(target, task);\n }\n };\n var ZoneDelegate = /** @class */ (function () {\n function ZoneDelegate(zone, parentDelegate, zoneSpec) {\n this._taskCounts = { 'microTask': 0, 'macroTask': 0, 'eventTask': 0 };\n this.zone = zone;\n this._parentDelegate = parentDelegate;\n this._forkZS = zoneSpec && (zoneSpec && zoneSpec.onFork ? zoneSpec : parentDelegate._forkZS);\n this._forkDlgt = zoneSpec && (zoneSpec.onFork ? parentDelegate : parentDelegate._forkDlgt);\n this._forkCurrZone = zoneSpec && (zoneSpec.onFork ? this.zone : parentDelegate.zone);\n this._interceptZS =\n zoneSpec && (zoneSpec.onIntercept ? zoneSpec : parentDelegate._interceptZS);\n this._interceptDlgt =\n zoneSpec && (zoneSpec.onIntercept ? parentDelegate : parentDelegate._interceptDlgt);\n this._interceptCurrZone =\n zoneSpec && (zoneSpec.onIntercept ? this.zone : parentDelegate.zone);\n this._invokeZS = zoneSpec && (zoneSpec.onInvoke ? zoneSpec : parentDelegate._invokeZS);\n this._invokeDlgt =\n zoneSpec && (zoneSpec.onInvoke ? parentDelegate : parentDelegate._invokeDlgt);\n this._invokeCurrZone = zoneSpec && (zoneSpec.onInvoke ? this.zone : parentDelegate.zone);\n this._handleErrorZS =\n zoneSpec && (zoneSpec.onHandleError ? zoneSpec : parentDelegate._handleErrorZS);\n this._handleErrorDlgt =\n zoneSpec && (zoneSpec.onHandleError ? parentDelegate : parentDelegate._handleErrorDlgt);\n this._handleErrorCurrZone =\n zoneSpec && (zoneSpec.onHandleError ? this.zone : parentDelegate.zone);\n this._scheduleTaskZS =\n zoneSpec && (zoneSpec.onScheduleTask ? zoneSpec : parentDelegate._scheduleTaskZS);\n this._scheduleTaskDlgt =\n zoneSpec && (zoneSpec.onScheduleTask ? parentDelegate : parentDelegate._scheduleTaskDlgt);\n this._scheduleTaskCurrZone =\n zoneSpec && (zoneSpec.onScheduleTask ? this.zone : parentDelegate.zone);\n this._invokeTaskZS =\n zoneSpec && (zoneSpec.onInvokeTask ? zoneSpec : parentDelegate._invokeTaskZS);\n this._invokeTaskDlgt =\n zoneSpec && (zoneSpec.onInvokeTask ? parentDelegate : parentDelegate._invokeTaskDlgt);\n this._invokeTaskCurrZone =\n zoneSpec && (zoneSpec.onInvokeTask ? this.zone : parentDelegate.zone);\n this._cancelTaskZS =\n zoneSpec && (zoneSpec.onCancelTask ? zoneSpec : parentDelegate._cancelTaskZS);\n this._cancelTaskDlgt =\n zoneSpec && (zoneSpec.onCancelTask ? parentDelegate : parentDelegate._cancelTaskDlgt);\n this._cancelTaskCurrZone =\n zoneSpec && (zoneSpec.onCancelTask ? this.zone : parentDelegate.zone);\n this._hasTaskZS = null;\n this._hasTaskDlgt = null;\n this._hasTaskDlgtOwner = null;\n this._hasTaskCurrZone = null;\n var zoneSpecHasTask = zoneSpec && zoneSpec.onHasTask;\n var parentHasTask = parentDelegate && parentDelegate._hasTaskZS;\n if (zoneSpecHasTask || parentHasTask) {\n // If we need to report hasTask, than this ZS needs to do ref counting on tasks. In such\n // a case all task related interceptors must go through this ZD. We can't short circuit it.\n this._hasTaskZS = zoneSpecHasTask ? zoneSpec : DELEGATE_ZS;\n this._hasTaskDlgt = parentDelegate;\n this._hasTaskDlgtOwner = this;\n this._hasTaskCurrZone = zone;\n if (!zoneSpec.onScheduleTask) {\n this._scheduleTaskZS = DELEGATE_ZS;\n this._scheduleTaskDlgt = parentDelegate;\n this._scheduleTaskCurrZone = this.zone;\n }\n if (!zoneSpec.onInvokeTask) {\n this._invokeTaskZS = DELEGATE_ZS;\n this._invokeTaskDlgt = parentDelegate;\n this._invokeTaskCurrZone = this.zone;\n }\n if (!zoneSpec.onCancelTask) {\n this._cancelTaskZS = DELEGATE_ZS;\n this._cancelTaskDlgt = parentDelegate;\n this._cancelTaskCurrZone = this.zone;\n }\n }\n }\n ZoneDelegate.prototype.fork = function (targetZone, zoneSpec) {\n return this._forkZS ? this._forkZS.onFork(this._forkDlgt, this.zone, targetZone, zoneSpec) :\n new Zone(targetZone, zoneSpec);\n };\n ZoneDelegate.prototype.intercept = function (targetZone, callback, source) {\n return this._interceptZS ?\n this._interceptZS.onIntercept(this._interceptDlgt, this._interceptCurrZone, targetZone, callback, source) :\n callback;\n };\n ZoneDelegate.prototype.invoke = function (targetZone, callback, applyThis, applyArgs, source) {\n return this._invokeZS ?\n this._invokeZS.onInvoke(this._invokeDlgt, this._invokeCurrZone, targetZone, callback, applyThis, applyArgs, source) :\n callback.apply(applyThis, applyArgs);\n };\n ZoneDelegate.prototype.handleError = function (targetZone, error) {\n return this._handleErrorZS ?\n this._handleErrorZS.onHandleError(this._handleErrorDlgt, this._handleErrorCurrZone, targetZone, error) :\n true;\n };\n ZoneDelegate.prototype.scheduleTask = function (targetZone, task) {\n var returnTask = task;\n if (this._scheduleTaskZS) {\n if (this._hasTaskZS) {\n returnTask._zoneDelegates.push(this._hasTaskDlgtOwner);\n }\n returnTask = this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt, this._scheduleTaskCurrZone, targetZone, task);\n if (!returnTask)\n returnTask = task;\n }\n else {\n if (task.scheduleFn) {\n task.scheduleFn(task);\n }\n else if (task.type == microTask) {\n scheduleMicroTask(task);\n }\n else {\n throw new Error('Task is missing scheduleFn.');\n }\n }\n return returnTask;\n };\n ZoneDelegate.prototype.invokeTask = function (targetZone, task, applyThis, applyArgs) {\n return this._invokeTaskZS ?\n this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt, this._invokeTaskCurrZone, targetZone, task, applyThis, applyArgs) :\n task.callback.apply(applyThis, applyArgs);\n };\n ZoneDelegate.prototype.cancelTask = function (targetZone, task) {\n var value;\n if (this._cancelTaskZS) {\n value = this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt, this._cancelTaskCurrZone, targetZone, task);\n }\n else {\n if (!task.cancelFn) {\n throw Error('Task is not cancelable');\n }\n value = task.cancelFn(task);\n }\n return value;\n };\n ZoneDelegate.prototype.hasTask = function (targetZone, isEmpty) {\n // hasTask should not throw error so other ZoneDelegate\n // can still trigger hasTask callback\n try {\n return this._hasTaskZS &&\n this._hasTaskZS.onHasTask(this._hasTaskDlgt, this._hasTaskCurrZone, targetZone, isEmpty);\n }\n catch (err) {\n this.handleError(targetZone, err);\n }\n };\n ZoneDelegate.prototype._updateTaskCount = function (type, count) {\n var counts = this._taskCounts;\n var prev = counts[type];\n var next = counts[type] = prev + count;\n if (next < 0) {\n throw new Error('More tasks executed then were scheduled.');\n }\n if (prev == 0 || next == 0) {\n var isEmpty = {\n microTask: counts['microTask'] > 0,\n macroTask: counts['macroTask'] > 0,\n eventTask: counts['eventTask'] > 0,\n change: type\n };\n this.hasTask(this.zone, isEmpty);\n }\n };\n return ZoneDelegate;\n }());\n var ZoneTask = /** @class */ (function () {\n function ZoneTask(type, source, callback, options, scheduleFn, cancelFn) {\n this._zone = null;\n this.runCount = 0;\n this._zoneDelegates = null;\n this._state = 'notScheduled';\n this.type = type;\n this.source = source;\n this.data = options;\n this.scheduleFn = scheduleFn;\n this.cancelFn = cancelFn;\n this.callback = callback;\n var self = this;\n // TODO: @JiaLiPassion options should have interface\n if (type === eventTask && options && options.useG) {\n this.invoke = ZoneTask.invokeTask;\n }\n else {\n this.invoke = function () {\n return ZoneTask.invokeTask.call(global, self, this, arguments);\n };\n }\n }\n ZoneTask.invokeTask = function (task, target, args) {\n if (!task) {\n task = this;\n }\n _numberOfNestedTaskFrames++;\n try {\n task.runCount++;\n return task.zone.runTask(task, target, args);\n }\n finally {\n if (_numberOfNestedTaskFrames == 1) {\n drainMicroTaskQueue();\n }\n _numberOfNestedTaskFrames--;\n }\n };\n Object.defineProperty(ZoneTask.prototype, \"zone\", {\n get: function () {\n return this._zone;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ZoneTask.prototype, \"state\", {\n get: function () {\n return this._state;\n },\n enumerable: true,\n configurable: true\n });\n ZoneTask.prototype.cancelScheduleRequest = function () {\n this._transitionTo(notScheduled, scheduling);\n };\n ZoneTask.prototype._transitionTo = function (toState, fromState1, fromState2) {\n if (this._state === fromState1 || this._state === fromState2) {\n this._state = toState;\n if (toState == notScheduled) {\n this._zoneDelegates = null;\n }\n }\n else {\n throw new Error(this.type + \" '\" + this.source + \"': can not transition to '\" + toState + \"', expecting state '\" + fromState1 + \"'\" + (fromState2 ?\n ' or \\'' + fromState2 + '\\'' :\n '') + \", was '\" + this._state + \"'.\");\n }\n };\n ZoneTask.prototype.toString = function () {\n if (this.data && typeof this.data.handleId !== 'undefined') {\n return this.data.handleId;\n }\n else {\n return Object.prototype.toString.call(this);\n }\n };\n // add toJSON method to prevent cyclic error when\n // call JSON.stringify(zoneTask)\n ZoneTask.prototype.toJSON = function () {\n return {\n type: this.type,\n state: this.state,\n source: this.source,\n zone: this.zone.name,\n runCount: this.runCount\n };\n };\n return ZoneTask;\n }());\n //////////////////////////////////////////////////////\n //////////////////////////////////////////////////////\n /// MICROTASK QUEUE\n //////////////////////////////////////////////////////\n //////////////////////////////////////////////////////\n var symbolSetTimeout = __symbol__('setTimeout');\n var symbolPromise = __symbol__('Promise');\n var symbolThen = __symbol__('then');\n var _microTaskQueue = [];\n var _isDrainingMicrotaskQueue = false;\n var nativeMicroTaskQueuePromise;\n function scheduleMicroTask(task) {\n // if we are not running in any task, and there has not been anything scheduled\n // we must bootstrap the initial task creation by manually scheduling the drain\n if (_numberOfNestedTaskFrames === 0 && _microTaskQueue.length === 0) {\n // We are not running in Task, so we need to kickstart the microtask queue.\n if (!nativeMicroTaskQueuePromise) {\n if (global[symbolPromise]) {\n nativeMicroTaskQueuePromise = global[symbolPromise].resolve(0);\n }\n }\n if (nativeMicroTaskQueuePromise) {\n nativeMicroTaskQueuePromise[symbolThen](drainMicroTaskQueue);\n }\n else {\n global[symbolSetTimeout](drainMicroTaskQueue, 0);\n }\n }\n task && _microTaskQueue.push(task);\n }\n function drainMicroTaskQueue() {\n if (!_isDrainingMicrotaskQueue) {\n _isDrainingMicrotaskQueue = true;\n while (_microTaskQueue.length) {\n var queue = _microTaskQueue;\n _microTaskQueue = [];\n for (var i = 0; i < queue.length; i++) {\n var task = queue[i];\n try {\n task.zone.runTask(task, null, null);\n }\n catch (error) {\n _api.onUnhandledError(error);\n }\n }\n }\n _api.microtaskDrainDone();\n _isDrainingMicrotaskQueue = false;\n }\n }\n //////////////////////////////////////////////////////\n //////////////////////////////////////////////////////\n /// BOOTSTRAP\n //////////////////////////////////////////////////////\n //////////////////////////////////////////////////////\n var NO_ZONE = { name: 'NO ZONE' };\n var notScheduled = 'notScheduled', scheduling = 'scheduling', scheduled = 'scheduled', running = 'running', canceling = 'canceling', unknown = 'unknown';\n var microTask = 'microTask', macroTask = 'macroTask', eventTask = 'eventTask';\n var patches = {};\n var _api = {\n symbol: __symbol__,\n currentZoneFrame: function () { return _currentZoneFrame; },\n onUnhandledError: noop,\n microtaskDrainDone: noop,\n scheduleMicroTask: scheduleMicroTask,\n showUncaughtError: function () { return !Zone[__symbol__('ignoreConsoleErrorUncaughtError')]; },\n patchEventTarget: function () { return []; },\n patchOnProperties: noop,\n patchMethod: function () { return noop; },\n bindArguments: function () { return null; },\n setNativePromise: function (NativePromise) {\n // sometimes NativePromise.resolve static function\n // is not ready yet, (such as core-js/es6.promise)\n // so we need to check here.\n if (NativePromise && typeof NativePromise.resolve === FUNCTION) {\n nativeMicroTaskQueuePromise = NativePromise.resolve(0);\n }\n },\n };\n var _currentZoneFrame = { parent: null, zone: new Zone(null, null) };\n var _currentTask = null;\n var _numberOfNestedTaskFrames = 0;\n function noop() { }\n function __symbol__(name) {\n return '__zone_symbol__' + name;\n }\n performanceMeasure('Zone', 'Zone');\n return global['Zone'] = Zone;\n})(typeof window !== 'undefined' && window || typeof self !== 'undefined' && self || global);\n\nZone.__load_patch('ZoneAwarePromise', function (global, Zone, api) {\n var ObjectGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n var ObjectDefineProperty = Object.defineProperty;\n function readableObjectToString(obj) {\n if (obj && obj.toString === Object.prototype.toString) {\n var className = obj.constructor && obj.constructor.name;\n return (className ? className : '') + ': ' + JSON.stringify(obj);\n }\n return obj ? obj.toString() : Object.prototype.toString.call(obj);\n }\n var __symbol__ = api.symbol;\n var _uncaughtPromiseErrors = [];\n var symbolPromise = __symbol__('Promise');\n var symbolThen = __symbol__('then');\n var creationTrace = '__creationTrace__';\n api.onUnhandledError = function (e) {\n if (api.showUncaughtError()) {\n var rejection = e && e.rejection;\n if (rejection) {\n console.error('Unhandled Promise rejection:', rejection instanceof Error ? rejection.message : rejection, '; Zone:', e.zone.name, '; Task:', e.task && e.task.source, '; Value:', rejection, rejection instanceof Error ? rejection.stack : undefined);\n }\n else {\n console.error(e);\n }\n }\n };\n api.microtaskDrainDone = function () {\n while (_uncaughtPromiseErrors.length) {\n var _loop_1 = function () {\n var uncaughtPromiseError = _uncaughtPromiseErrors.shift();\n try {\n uncaughtPromiseError.zone.runGuarded(function () {\n throw uncaughtPromiseError;\n });\n }\n catch (error) {\n handleUnhandledRejection(error);\n }\n };\n while (_uncaughtPromiseErrors.length) {\n _loop_1();\n }\n }\n };\n var UNHANDLED_PROMISE_REJECTION_HANDLER_SYMBOL = __symbol__('unhandledPromiseRejectionHandler');\n function handleUnhandledRejection(e) {\n api.onUnhandledError(e);\n try {\n var handler = Zone[UNHANDLED_PROMISE_REJECTION_HANDLER_SYMBOL];\n if (handler && typeof handler === 'function') {\n handler.call(this, e);\n }\n }\n catch (err) {\n }\n }\n function isThenable(value) {\n return value && value.then;\n }\n function forwardResolution(value) {\n return value;\n }\n function forwardRejection(rejection) {\n return ZoneAwarePromise.reject(rejection);\n }\n var symbolState = __symbol__('state');\n var symbolValue = __symbol__('value');\n var symbolFinally = __symbol__('finally');\n var symbolParentPromiseValue = __symbol__('parentPromiseValue');\n var symbolParentPromiseState = __symbol__('parentPromiseState');\n var source = 'Promise.then';\n var UNRESOLVED = null;\n var RESOLVED = true;\n var REJECTED = false;\n var REJECTED_NO_CATCH = 0;\n function makeResolver(promise, state) {\n return function (v) {\n try {\n resolvePromise(promise, state, v);\n }\n catch (err) {\n resolvePromise(promise, false, err);\n }\n // Do not return value or you will break the Promise spec.\n };\n }\n var once = function () {\n var wasCalled = false;\n return function wrapper(wrappedFunction) {\n return function () {\n if (wasCalled) {\n return;\n }\n wasCalled = true;\n wrappedFunction.apply(null, arguments);\n };\n };\n };\n var TYPE_ERROR = 'Promise resolved with itself';\n var CURRENT_TASK_TRACE_SYMBOL = __symbol__('currentTaskTrace');\n // Promise Resolution\n function resolvePromise(promise, state, value) {\n var onceWrapper = once();\n if (promise === value) {\n throw new TypeError(TYPE_ERROR);\n }\n if (promise[symbolState] === UNRESOLVED) {\n // should only get value.then once based on promise spec.\n var then = null;\n try {\n if (typeof value === 'object' || typeof value === 'function') {\n then = value && value.then;\n }\n }\n catch (err) {\n onceWrapper(function () {\n resolvePromise(promise, false, err);\n })();\n return promise;\n }\n // if (value instanceof ZoneAwarePromise) {\n if (state !== REJECTED && value instanceof ZoneAwarePromise &&\n value.hasOwnProperty(symbolState) && value.hasOwnProperty(symbolValue) &&\n value[symbolState] !== UNRESOLVED) {\n clearRejectedNoCatch(value);\n resolvePromise(promise, value[symbolState], value[symbolValue]);\n }\n else if (state !== REJECTED && typeof then === 'function') {\n try {\n then.call(value, onceWrapper(makeResolver(promise, state)), onceWrapper(makeResolver(promise, false)));\n }\n catch (err) {\n onceWrapper(function () {\n resolvePromise(promise, false, err);\n })();\n }\n }\n else {\n promise[symbolState] = state;\n var queue = promise[symbolValue];\n promise[symbolValue] = value;\n if (promise[symbolFinally] === symbolFinally) {\n // the promise is generated by Promise.prototype.finally \n if (state === RESOLVED) {\n // the state is resolved, should ignore the value\n // and use parent promise value\n promise[symbolState] = promise[symbolParentPromiseState];\n promise[symbolValue] = promise[symbolParentPromiseValue];\n }\n }\n // record task information in value when error occurs, so we can\n // do some additional work such as render longStackTrace\n if (state === REJECTED && value instanceof Error) {\n // check if longStackTraceZone is here\n var trace = Zone.currentTask && Zone.currentTask.data &&\n Zone.currentTask.data[creationTrace];\n if (trace) {\n // only keep the long stack trace into error when in longStackTraceZone\n ObjectDefineProperty(value, CURRENT_TASK_TRACE_SYMBOL, { configurable: true, enumerable: false, writable: true, value: trace });\n }\n }\n for (var i = 0; i < queue.length;) {\n scheduleResolveOrReject(promise, queue[i++], queue[i++], queue[i++], queue[i++]);\n }\n if (queue.length == 0 && state == REJECTED) {\n promise[symbolState] = REJECTED_NO_CATCH;\n try {\n // try to print more readable error log\n throw new Error('Uncaught (in promise): ' + readableObjectToString(value) +\n (value && value.stack ? '\\n' + value.stack : ''));\n }\n catch (err) {\n var error_1 = err;\n error_1.rejection = value;\n error_1.promise = promise;\n error_1.zone = Zone.current;\n error_1.task = Zone.currentTask;\n _uncaughtPromiseErrors.push(error_1);\n api.scheduleMicroTask(); // to make sure that it is running\n }\n }\n }\n }\n // Resolving an already resolved promise is a noop.\n return promise;\n }\n var REJECTION_HANDLED_HANDLER = __symbol__('rejectionHandledHandler');\n function clearRejectedNoCatch(promise) {\n if (promise[symbolState] === REJECTED_NO_CATCH) {\n // if the promise is rejected no catch status\n // and queue.length > 0, means there is a error handler\n // here to handle the rejected promise, we should trigger\n // windows.rejectionhandled eventHandler or nodejs rejectionHandled\n // eventHandler\n try {\n var handler = Zone[REJECTION_HANDLED_HANDLER];\n if (handler && typeof handler === 'function') {\n handler.call(this, { rejection: promise[symbolValue], promise: promise });\n }\n }\n catch (err) {\n }\n promise[symbolState] = REJECTED;\n for (var i = 0; i < _uncaughtPromiseErrors.length; i++) {\n if (promise === _uncaughtPromiseErrors[i].promise) {\n _uncaughtPromiseErrors.splice(i, 1);\n }\n }\n }\n }\n function scheduleResolveOrReject(promise, zone, chainPromise, onFulfilled, onRejected) {\n clearRejectedNoCatch(promise);\n var promiseState = promise[symbolState];\n var delegate = promiseState ?\n (typeof onFulfilled === 'function') ? onFulfilled : forwardResolution :\n (typeof onRejected === 'function') ? onRejected : forwardRejection;\n zone.scheduleMicroTask(source, function () {\n try {\n var parentPromiseValue = promise[symbolValue];\n var isFinallyPromise = chainPromise && symbolFinally === chainPromise[symbolFinally];\n if (isFinallyPromise) {\n // if the promise is generated from finally call, keep parent promise's state and value\n chainPromise[symbolParentPromiseValue] = parentPromiseValue;\n chainPromise[symbolParentPromiseState] = promiseState;\n }\n // should not pass value to finally callback\n var value = zone.run(delegate, undefined, isFinallyPromise && delegate !== forwardRejection && delegate !== forwardResolution ? [] : [parentPromiseValue]);\n resolvePromise(chainPromise, true, value);\n }\n catch (error) {\n // if error occurs, should always return this error\n resolvePromise(chainPromise, false, error);\n }\n }, chainPromise);\n }\n var ZONE_AWARE_PROMISE_TO_STRING = 'function ZoneAwarePromise() { [native code] }';\n var ZoneAwarePromise = /** @class */ (function () {\n function ZoneAwarePromise(executor) {\n var promise = this;\n if (!(promise instanceof ZoneAwarePromise)) {\n throw new Error('Must be an instanceof Promise.');\n }\n promise[symbolState] = UNRESOLVED;\n promise[symbolValue] = []; // queue;\n try {\n executor && executor(makeResolver(promise, RESOLVED), makeResolver(promise, REJECTED));\n }\n catch (error) {\n resolvePromise(promise, false, error);\n }\n }\n ZoneAwarePromise.toString = function () {\n return ZONE_AWARE_PROMISE_TO_STRING;\n };\n ZoneAwarePromise.resolve = function (value) {\n return resolvePromise(new this(null), RESOLVED, value);\n };\n ZoneAwarePromise.reject = function (error) {\n return resolvePromise(new this(null), REJECTED, error);\n };\n ZoneAwarePromise.race = function (values) {\n var resolve;\n var reject;\n var promise = new this(function (res, rej) {\n resolve = res;\n reject = rej;\n });\n function onResolve(value) {\n promise && (promise = null || resolve(value));\n }\n function onReject(error) {\n promise && (promise = null || reject(error));\n }\n for (var _i = 0, values_1 = values; _i < values_1.length; _i++) {\n var value = values_1[_i];\n if (!isThenable(value)) {\n value = this.resolve(value);\n }\n value.then(onResolve, onReject);\n }\n return promise;\n };\n ZoneAwarePromise.all = function (values) {\n var resolve;\n var reject;\n var promise = new this(function (res, rej) {\n resolve = res;\n reject = rej;\n });\n var count = 0;\n var resolvedValues = [];\n for (var _i = 0, values_2 = values; _i < values_2.length; _i++) {\n var value = values_2[_i];\n if (!isThenable(value)) {\n value = this.resolve(value);\n }\n value.then((function (index) { return function (value) {\n resolvedValues[index] = value;\n count--;\n if (!count) {\n resolve(resolvedValues);\n }\n }; })(count), reject);\n count++;\n }\n if (!count)\n resolve(resolvedValues);\n return promise;\n };\n ZoneAwarePromise.prototype.then = function (onFulfilled, onRejected) {\n var chainPromise = new this.constructor(null);\n var zone = Zone.current;\n if (this[symbolState] == UNRESOLVED) {\n this[symbolValue].push(zone, chainPromise, onFulfilled, onRejected);\n }\n else {\n scheduleResolveOrReject(this, zone, chainPromise, onFulfilled, onRejected);\n }\n return chainPromise;\n };\n ZoneAwarePromise.prototype.catch = function (onRejected) {\n return this.then(null, onRejected);\n };\n ZoneAwarePromise.prototype.finally = function (onFinally) {\n var chainPromise = new this.constructor(null);\n chainPromise[symbolFinally] = symbolFinally;\n var zone = Zone.current;\n if (this[symbolState] == UNRESOLVED) {\n this[symbolValue].push(zone, chainPromise, onFinally, onFinally);\n }\n else {\n scheduleResolveOrReject(this, zone, chainPromise, onFinally, onFinally);\n }\n return chainPromise;\n };\n return ZoneAwarePromise;\n }());\n // Protect against aggressive optimizers dropping seemingly unused properties.\n // E.g. Closure Compiler in advanced mode.\n ZoneAwarePromise['resolve'] = ZoneAwarePromise.resolve;\n ZoneAwarePromise['reject'] = ZoneAwarePromise.reject;\n ZoneAwarePromise['race'] = ZoneAwarePromise.race;\n ZoneAwarePromise['all'] = ZoneAwarePromise.all;\n var NativePromise = global[symbolPromise] = global['Promise'];\n var ZONE_AWARE_PROMISE = Zone.__symbol__('ZoneAwarePromise');\n var desc = ObjectGetOwnPropertyDescriptor(global, 'Promise');\n if (!desc || desc.configurable) {\n desc && delete desc.writable;\n desc && delete desc.value;\n if (!desc) {\n desc = { configurable: true, enumerable: true };\n }\n desc.get = function () {\n // if we already set ZoneAwarePromise, use patched one\n // otherwise return native one.\n return global[ZONE_AWARE_PROMISE] ? global[ZONE_AWARE_PROMISE] : global[symbolPromise];\n };\n desc.set = function (NewNativePromise) {\n if (NewNativePromise === ZoneAwarePromise) {\n // if the NewNativePromise is ZoneAwarePromise\n // save to global\n global[ZONE_AWARE_PROMISE] = NewNativePromise;\n }\n else {\n // if the NewNativePromise is not ZoneAwarePromise\n // for example: after load zone.js, some library just\n // set es6-promise to global, if we set it to global\n // directly, assertZonePatched will fail and angular\n // will not loaded, so we just set the NewNativePromise\n // to global[symbolPromise], so the result is just like\n // we load ES6 Promise before zone.js\n global[symbolPromise] = NewNativePromise;\n if (!NewNativePromise.prototype[symbolThen]) {\n patchThen(NewNativePromise);\n }\n api.setNativePromise(NewNativePromise);\n }\n };\n ObjectDefineProperty(global, 'Promise', desc);\n }\n global['Promise'] = ZoneAwarePromise;\n var symbolThenPatched = __symbol__('thenPatched');\n function patchThen(Ctor) {\n var proto = Ctor.prototype;\n var prop = ObjectGetOwnPropertyDescriptor(proto, 'then');\n if (prop && (prop.writable === false || !prop.configurable)) {\n // check Ctor.prototype.then propertyDescriptor is writable or not\n // in meteor env, writable is false, we should ignore such case\n return;\n }\n var originalThen = proto.then;\n // Keep a reference to the original method.\n proto[symbolThen] = originalThen;\n Ctor.prototype.then = function (onResolve, onReject) {\n var _this = this;\n var wrapped = new ZoneAwarePromise(function (resolve, reject) {\n originalThen.call(_this, resolve, reject);\n });\n return wrapped.then(onResolve, onReject);\n };\n Ctor[symbolThenPatched] = true;\n }\n function zoneify(fn) {\n return function () {\n var resultPromise = fn.apply(this, arguments);\n if (resultPromise instanceof ZoneAwarePromise) {\n return resultPromise;\n }\n var ctor = resultPromise.constructor;\n if (!ctor[symbolThenPatched]) {\n patchThen(ctor);\n }\n return resultPromise;\n };\n }\n if (NativePromise) {\n patchThen(NativePromise);\n var fetch_1 = global['fetch'];\n if (typeof fetch_1 == 'function') {\n global['fetch'] = zoneify(fetch_1);\n }\n }\n // This is not part of public API, but it is useful for tests, so we expose it.\n Promise[Zone.__symbol__('uncaughtPromiseErrors')] = _uncaughtPromiseErrors;\n return ZoneAwarePromise;\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/**\n * Suppress closure compiler errors about unknown 'Zone' variable\n * @fileoverview\n * @suppress {undefinedVars,globalThis,missingRequire}\n */\n// issue #989, to reduce bundle size, use short name\n/** Object.getOwnPropertyDescriptor */\nvar ObjectGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n/** Object.defineProperty */\nvar ObjectDefineProperty = Object.defineProperty;\n/** Object.getPrototypeOf */\nvar ObjectGetPrototypeOf = Object.getPrototypeOf;\n/** Object.create */\nvar ObjectCreate = Object.create;\n/** Array.prototype.slice */\nvar ArraySlice = Array.prototype.slice;\n/** addEventListener string const */\nvar ADD_EVENT_LISTENER_STR = 'addEventListener';\n/** removeEventListener string const */\nvar REMOVE_EVENT_LISTENER_STR = 'removeEventListener';\n/** zoneSymbol addEventListener */\nvar ZONE_SYMBOL_ADD_EVENT_LISTENER = Zone.__symbol__(ADD_EVENT_LISTENER_STR);\n/** zoneSymbol removeEventListener */\nvar ZONE_SYMBOL_REMOVE_EVENT_LISTENER = Zone.__symbol__(REMOVE_EVENT_LISTENER_STR);\n/** true string const */\nvar TRUE_STR = 'true';\n/** false string const */\nvar FALSE_STR = 'false';\n/** __zone_symbol__ string const */\nvar ZONE_SYMBOL_PREFIX = '__zone_symbol__';\nfunction wrapWithCurrentZone(callback, source) {\n return Zone.current.wrap(callback, source);\n}\nfunction scheduleMacroTaskWithCurrentZone(source, callback, data, customSchedule, customCancel) {\n return Zone.current.scheduleMacroTask(source, callback, data, customSchedule, customCancel);\n}\nvar zoneSymbol = Zone.__symbol__;\nvar isWindowExists = typeof window !== 'undefined';\nvar internalWindow = isWindowExists ? window : undefined;\nvar _global = isWindowExists && internalWindow || typeof self === 'object' && self || global;\nvar REMOVE_ATTRIBUTE = 'removeAttribute';\nvar NULL_ON_PROP_VALUE = [null];\nfunction bindArguments(args, source) {\n for (var i = args.length - 1; i >= 0; i--) {\n if (typeof args[i] === 'function') {\n args[i] = wrapWithCurrentZone(args[i], source + '_' + i);\n }\n }\n return args;\n}\nfunction patchPrototype(prototype, fnNames) {\n var source = prototype.constructor['name'];\n var _loop_1 = function (i) {\n var name_1 = fnNames[i];\n var delegate = prototype[name_1];\n if (delegate) {\n var prototypeDesc = ObjectGetOwnPropertyDescriptor(prototype, name_1);\n if (!isPropertyWritable(prototypeDesc)) {\n return \"continue\";\n }\n prototype[name_1] = (function (delegate) {\n var patched = function () {\n return delegate.apply(this, bindArguments(arguments, source + '.' + name_1));\n };\n attachOriginToPatched(patched, delegate);\n return patched;\n })(delegate);\n }\n };\n for (var i = 0; i < fnNames.length; i++) {\n _loop_1(i);\n }\n}\nfunction isPropertyWritable(propertyDesc) {\n if (!propertyDesc) {\n return true;\n }\n if (propertyDesc.writable === false) {\n return false;\n }\n return !(typeof propertyDesc.get === 'function' && typeof propertyDesc.set === 'undefined');\n}\nvar isWebWorker = (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope);\n// Make sure to access `process` through `_global` so that WebPack does not accidentally browserify\n// this code.\nvar isNode = (!('nw' in _global) && typeof _global.process !== 'undefined' &&\n {}.toString.call(_global.process) === '[object process]');\nvar isBrowser = !isNode && !isWebWorker && !!(isWindowExists && internalWindow['HTMLElement']);\n// we are in electron of nw, so we are both browser and nodejs\n// Make sure to access `process` through `_global` so that WebPack does not accidentally browserify\n// this code.\nvar isMix = typeof _global.process !== 'undefined' &&\n {}.toString.call(_global.process) === '[object process]' && !isWebWorker &&\n !!(isWindowExists && internalWindow['HTMLElement']);\nvar zoneSymbolEventNames = {};\nvar wrapFn = function (event) {\n // https://github.com/angular/zone.js/issues/911, in IE, sometimes\n // event will be undefined, so we need to use window.event\n event = event || _global.event;\n if (!event) {\n return;\n }\n var eventNameSymbol = zoneSymbolEventNames[event.type];\n if (!eventNameSymbol) {\n eventNameSymbol = zoneSymbolEventNames[event.type] = zoneSymbol('ON_PROPERTY' + event.type);\n }\n var target = this || event.target || _global;\n var listener = target[eventNameSymbol];\n var result = listener && listener.apply(this, arguments);\n if (result != undefined && !result) {\n event.preventDefault();\n }\n return result;\n};\nfunction patchProperty(obj, prop, prototype) {\n var desc = ObjectGetOwnPropertyDescriptor(obj, prop);\n if (!desc && prototype) {\n // when patch window object, use prototype to check prop exist or not\n var prototypeDesc = ObjectGetOwnPropertyDescriptor(prototype, prop);\n if (prototypeDesc) {\n desc = { enumerable: true, configurable: true };\n }\n }\n // if the descriptor not exists or is not configurable\n // just return\n if (!desc || !desc.configurable) {\n return;\n }\n // A property descriptor cannot have getter/setter and be writable\n // deleting the writable and value properties avoids this error:\n //\n // TypeError: property descriptors must not specify a value or be writable when a\n // getter or setter has been specified\n delete desc.writable;\n delete desc.value;\n var originalDescGet = desc.get;\n var originalDescSet = desc.set;\n // substr(2) cuz 'onclick' -> 'click', etc\n var eventName = prop.substr(2);\n var eventNameSymbol = zoneSymbolEventNames[eventName];\n if (!eventNameSymbol) {\n eventNameSymbol = zoneSymbolEventNames[eventName] = zoneSymbol('ON_PROPERTY' + eventName);\n }\n desc.set = function (newValue) {\n // in some of windows's onproperty callback, this is undefined\n // so we need to check it\n var target = this;\n if (!target && obj === _global) {\n target = _global;\n }\n if (!target) {\n return;\n }\n var previousValue = target[eventNameSymbol];\n if (previousValue) {\n target.removeEventListener(eventName, wrapFn);\n }\n // issue #978, when onload handler was added before loading zone.js\n // we should remove it with originalDescSet\n if (originalDescSet) {\n originalDescSet.apply(target, NULL_ON_PROP_VALUE);\n }\n if (typeof newValue === 'function') {\n target[eventNameSymbol] = newValue;\n target.addEventListener(eventName, wrapFn, false);\n }\n else {\n target[eventNameSymbol] = null;\n }\n };\n // The getter would return undefined for unassigned properties but the default value of an\n // unassigned property is null\n desc.get = function () {\n // in some of windows's onproperty callback, this is undefined\n // so we need to check it\n var target = this;\n if (!target && obj === _global) {\n target = _global;\n }\n if (!target) {\n return null;\n }\n var listener = target[eventNameSymbol];\n if (listener) {\n return listener;\n }\n else if (originalDescGet) {\n // result will be null when use inline event attribute,\n // such as \n // because the onclick function is internal raw uncompiled handler\n // the onclick will be evaluated when first time event was triggered or\n // the property is accessed, https://github.com/angular/zone.js/issues/525\n // so we should use original native get to retrieve the handler\n var value = originalDescGet && originalDescGet.call(this);\n if (value) {\n desc.set.call(this, value);\n if (typeof target[REMOVE_ATTRIBUTE] === 'function') {\n target.removeAttribute(prop);\n }\n return value;\n }\n }\n return null;\n };\n ObjectDefineProperty(obj, prop, desc);\n}\nfunction patchOnProperties(obj, properties, prototype) {\n if (properties) {\n for (var i = 0; i < properties.length; i++) {\n patchProperty(obj, 'on' + properties[i], prototype);\n }\n }\n else {\n var onProperties = [];\n for (var prop in obj) {\n if (prop.substr(0, 2) == 'on') {\n onProperties.push(prop);\n }\n }\n for (var j = 0; j < onProperties.length; j++) {\n patchProperty(obj, onProperties[j], prototype);\n }\n }\n}\nvar originalInstanceKey = zoneSymbol('originalInstance');\n// wrap some native API on `window`\nfunction patchClass(className) {\n var OriginalClass = _global[className];\n if (!OriginalClass)\n return;\n // keep original class in global\n _global[zoneSymbol(className)] = OriginalClass;\n _global[className] = function () {\n var a = bindArguments(arguments, className);\n switch (a.length) {\n case 0:\n this[originalInstanceKey] = new OriginalClass();\n break;\n case 1:\n this[originalInstanceKey] = new OriginalClass(a[0]);\n break;\n case 2:\n this[originalInstanceKey] = new OriginalClass(a[0], a[1]);\n break;\n case 3:\n this[originalInstanceKey] = new OriginalClass(a[0], a[1], a[2]);\n break;\n case 4:\n this[originalInstanceKey] = new OriginalClass(a[0], a[1], a[2], a[3]);\n break;\n default:\n throw new Error('Arg list too long.');\n }\n };\n // attach original delegate to patched function\n attachOriginToPatched(_global[className], OriginalClass);\n var instance = new OriginalClass(function () { });\n var prop;\n for (prop in instance) {\n // https://bugs.webkit.org/show_bug.cgi?id=44721\n if (className === 'XMLHttpRequest' && prop === 'responseBlob')\n continue;\n (function (prop) {\n if (typeof instance[prop] === 'function') {\n _global[className].prototype[prop] = function () {\n return this[originalInstanceKey][prop].apply(this[originalInstanceKey], arguments);\n };\n }\n else {\n ObjectDefineProperty(_global[className].prototype, prop, {\n set: function (fn) {\n if (typeof fn === 'function') {\n this[originalInstanceKey][prop] = wrapWithCurrentZone(fn, className + '.' + prop);\n // keep callback in wrapped function so we can\n // use it in Function.prototype.toString to return\n // the native one.\n attachOriginToPatched(this[originalInstanceKey][prop], fn);\n }\n else {\n this[originalInstanceKey][prop] = fn;\n }\n },\n get: function () {\n return this[originalInstanceKey][prop];\n }\n });\n }\n }(prop));\n }\n for (prop in OriginalClass) {\n if (prop !== 'prototype' && OriginalClass.hasOwnProperty(prop)) {\n _global[className][prop] = OriginalClass[prop];\n }\n }\n}\nfunction patchMethod(target, name, patchFn) {\n var proto = target;\n while (proto && !proto.hasOwnProperty(name)) {\n proto = ObjectGetPrototypeOf(proto);\n }\n if (!proto && target[name]) {\n // somehow we did not find it, but we can see it. This happens on IE for Window properties.\n proto = target;\n }\n var delegateName = zoneSymbol(name);\n var delegate;\n if (proto && !(delegate = proto[delegateName])) {\n delegate = proto[delegateName] = proto[name];\n // check whether proto[name] is writable\n // some property is readonly in safari, such as HtmlCanvasElement.prototype.toBlob\n var desc = proto && ObjectGetOwnPropertyDescriptor(proto, name);\n if (isPropertyWritable(desc)) {\n var patchDelegate_1 = patchFn(delegate, delegateName, name);\n proto[name] = function () {\n return patchDelegate_1(this, arguments);\n };\n attachOriginToPatched(proto[name], delegate);\n }\n }\n return delegate;\n}\n// TODO: @JiaLiPassion, support cancel task later if necessary\nfunction patchMacroTask(obj, funcName, metaCreator) {\n var setNative = null;\n function scheduleTask(task) {\n var data = task.data;\n data.args[data.cbIdx] = function () {\n task.invoke.apply(this, arguments);\n };\n setNative.apply(data.target, data.args);\n return task;\n }\n setNative = patchMethod(obj, funcName, function (delegate) { return function (self, args) {\n var meta = metaCreator(self, args);\n if (meta.cbIdx >= 0 && typeof args[meta.cbIdx] === 'function') {\n return scheduleMacroTaskWithCurrentZone(meta.name, args[meta.cbIdx], meta, scheduleTask, null);\n }\n else {\n // cause an error by calling it directly.\n return delegate.apply(self, args);\n }\n }; });\n}\n\nfunction attachOriginToPatched(patched, original) {\n patched[zoneSymbol('OriginalDelegate')] = original;\n}\nvar isDetectedIEOrEdge = false;\nvar ieOrEdge = false;\nfunction isIEOrEdge() {\n if (isDetectedIEOrEdge) {\n return ieOrEdge;\n }\n isDetectedIEOrEdge = true;\n try {\n var ua = internalWindow.navigator.userAgent;\n if (ua.indexOf('MSIE ') !== -1 || ua.indexOf('Trident/') !== -1 || ua.indexOf('Edge/') !== -1) {\n ieOrEdge = true;\n }\n return ieOrEdge;\n }\n catch (error) {\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// override Function.prototype.toString to make zone.js patched function\n// look like native function\nZone.__load_patch('toString', function (global) {\n // patch Func.prototype.toString to let them look like native\n var originalFunctionToString = Function.prototype.toString;\n var ORIGINAL_DELEGATE_SYMBOL = zoneSymbol('OriginalDelegate');\n var PROMISE_SYMBOL = zoneSymbol('Promise');\n var ERROR_SYMBOL = zoneSymbol('Error');\n var newFunctionToString = function toString() {\n if (typeof this === 'function') {\n var originalDelegate = this[ORIGINAL_DELEGATE_SYMBOL];\n if (originalDelegate) {\n if (typeof originalDelegate === 'function') {\n return originalFunctionToString.apply(this[ORIGINAL_DELEGATE_SYMBOL], arguments);\n }\n else {\n return Object.prototype.toString.call(originalDelegate);\n }\n }\n if (this === Promise) {\n var nativePromise = global[PROMISE_SYMBOL];\n if (nativePromise) {\n return originalFunctionToString.apply(nativePromise, arguments);\n }\n }\n if (this === Error) {\n var nativeError = global[ERROR_SYMBOL];\n if (nativeError) {\n return originalFunctionToString.apply(nativeError, arguments);\n }\n }\n }\n return originalFunctionToString.apply(this, arguments);\n };\n newFunctionToString[ORIGINAL_DELEGATE_SYMBOL] = originalFunctionToString;\n Function.prototype.toString = newFunctionToString;\n // patch Object.prototype.toString to let them look like native\n var originalObjectToString = Object.prototype.toString;\n var PROMISE_OBJECT_TO_STRING = '[object Promise]';\n Object.prototype.toString = function () {\n if (this instanceof Promise) {\n return PROMISE_OBJECT_TO_STRING;\n }\n return originalObjectToString.apply(this, arguments);\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/**\n * @fileoverview\n * @suppress {missingRequire}\n */\n// an identifier to tell ZoneTask do not create a new invoke closure\nvar OPTIMIZED_ZONE_EVENT_TASK_DATA = {\n useG: true\n};\nvar zoneSymbolEventNames$1 = {};\nvar globalSources = {};\nvar EVENT_NAME_SYMBOL_REGX = /^__zone_symbol__(\\w+)(true|false)$/;\nvar IMMEDIATE_PROPAGATION_SYMBOL = ('__zone_symbol__propagationStopped');\nfunction patchEventTarget(_global, apis, patchOptions) {\n var ADD_EVENT_LISTENER = (patchOptions && patchOptions.add) || ADD_EVENT_LISTENER_STR;\n var REMOVE_EVENT_LISTENER = (patchOptions && patchOptions.rm) || REMOVE_EVENT_LISTENER_STR;\n var LISTENERS_EVENT_LISTENER = (patchOptions && patchOptions.listeners) || 'eventListeners';\n var REMOVE_ALL_LISTENERS_EVENT_LISTENER = (patchOptions && patchOptions.rmAll) || 'removeAllListeners';\n var zoneSymbolAddEventListener = zoneSymbol(ADD_EVENT_LISTENER);\n var ADD_EVENT_LISTENER_SOURCE = '.' + ADD_EVENT_LISTENER + ':';\n var PREPEND_EVENT_LISTENER = 'prependListener';\n var PREPEND_EVENT_LISTENER_SOURCE = '.' + PREPEND_EVENT_LISTENER + ':';\n var invokeTask = function (task, target, event) {\n // for better performance, check isRemoved which is set\n // by removeEventListener\n if (task.isRemoved) {\n return;\n }\n var delegate = task.callback;\n if (typeof delegate === 'object' && delegate.handleEvent) {\n // create the bind version of handleEvent when invoke\n task.callback = function (event) { return delegate.handleEvent(event); };\n task.originalDelegate = delegate;\n }\n // invoke static task.invoke\n task.invoke(task, target, [event]);\n var options = task.options;\n if (options && typeof options === 'object' && options.once) {\n // if options.once is true, after invoke once remove listener here\n // only browser need to do this, nodejs eventEmitter will cal removeListener\n // inside EventEmitter.once\n var delegate_1 = task.originalDelegate ? task.originalDelegate : task.callback;\n target[REMOVE_EVENT_LISTENER].call(target, event.type, delegate_1, options);\n }\n };\n // global shared zoneAwareCallback to handle all event callback with capture = false\n var globalZoneAwareCallback = function (event) {\n // https://github.com/angular/zone.js/issues/911, in IE, sometimes\n // event will be undefined, so we need to use window.event\n event = event || _global.event;\n if (!event) {\n return;\n }\n // event.target is needed for Samsung TV and SourceBuffer\n // || global is needed https://github.com/angular/zone.js/issues/190\n var target = this || event.target || _global;\n var tasks = target[zoneSymbolEventNames$1[event.type][FALSE_STR]];\n if (tasks) {\n // invoke all tasks which attached to current target with given event.type and capture = false\n // for performance concern, if task.length === 1, just invoke\n if (tasks.length === 1) {\n invokeTask(tasks[0], target, event);\n }\n else {\n // https://github.com/angular/zone.js/issues/836\n // copy the tasks array before invoke, to avoid\n // the callback will remove itself or other listener\n var copyTasks = tasks.slice();\n for (var i = 0; i < copyTasks.length; i++) {\n if (event && event[IMMEDIATE_PROPAGATION_SYMBOL] === true) {\n break;\n }\n invokeTask(copyTasks[i], target, event);\n }\n }\n }\n };\n // global shared zoneAwareCallback to handle all event callback with capture = true\n var globalZoneAwareCaptureCallback = function (event) {\n // https://github.com/angular/zone.js/issues/911, in IE, sometimes\n // event will be undefined, so we need to use window.event\n event = event || _global.event;\n if (!event) {\n return;\n }\n // event.target is needed for Samsung TV and SourceBuffer\n // || global is needed https://github.com/angular/zone.js/issues/190\n var target = this || event.target || _global;\n var tasks = target[zoneSymbolEventNames$1[event.type][TRUE_STR]];\n if (tasks) {\n // invoke all tasks which attached to current target with given event.type and capture = false\n // for performance concern, if task.length === 1, just invoke\n if (tasks.length === 1) {\n invokeTask(tasks[0], target, event);\n }\n else {\n // https://github.com/angular/zone.js/issues/836\n // copy the tasks array before invoke, to avoid\n // the callback will remove itself or other listener\n var copyTasks = tasks.slice();\n for (var i = 0; i < copyTasks.length; i++) {\n if (event && event[IMMEDIATE_PROPAGATION_SYMBOL] === true) {\n break;\n }\n invokeTask(copyTasks[i], target, event);\n }\n }\n }\n };\n function patchEventTargetMethods(obj, patchOptions) {\n if (!obj) {\n return false;\n }\n var useGlobalCallback = true;\n if (patchOptions && patchOptions.useG !== undefined) {\n useGlobalCallback = patchOptions.useG;\n }\n var validateHandler = patchOptions && patchOptions.vh;\n var checkDuplicate = true;\n if (patchOptions && patchOptions.chkDup !== undefined) {\n checkDuplicate = patchOptions.chkDup;\n }\n var returnTarget = false;\n if (patchOptions && patchOptions.rt !== undefined) {\n returnTarget = patchOptions.rt;\n }\n var proto = obj;\n while (proto && !proto.hasOwnProperty(ADD_EVENT_LISTENER)) {\n proto = ObjectGetPrototypeOf(proto);\n }\n if (!proto && obj[ADD_EVENT_LISTENER]) {\n // somehow we did not find it, but we can see it. This happens on IE for Window properties.\n proto = obj;\n }\n if (!proto) {\n return false;\n }\n if (proto[zoneSymbolAddEventListener]) {\n return false;\n }\n // a shared global taskData to pass data for scheduleEventTask\n // so we do not need to create a new object just for pass some data\n var taskData = {};\n var nativeAddEventListener = proto[zoneSymbolAddEventListener] = proto[ADD_EVENT_LISTENER];\n var nativeRemoveEventListener = proto[zoneSymbol(REMOVE_EVENT_LISTENER)] =\n proto[REMOVE_EVENT_LISTENER];\n var nativeListeners = proto[zoneSymbol(LISTENERS_EVENT_LISTENER)] =\n proto[LISTENERS_EVENT_LISTENER];\n var nativeRemoveAllListeners = proto[zoneSymbol(REMOVE_ALL_LISTENERS_EVENT_LISTENER)] =\n proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER];\n var nativePrependEventListener;\n if (patchOptions && patchOptions.prepend) {\n nativePrependEventListener = proto[zoneSymbol(patchOptions.prepend)] =\n proto[patchOptions.prepend];\n }\n var customScheduleGlobal = function () {\n // if there is already a task for the eventName + capture,\n // just return, because we use the shared globalZoneAwareCallback here.\n if (taskData.isExisting) {\n return;\n }\n return nativeAddEventListener.call(taskData.target, taskData.eventName, taskData.capture ? globalZoneAwareCaptureCallback : globalZoneAwareCallback, taskData.options);\n };\n var customCancelGlobal = function (task) {\n // if task is not marked as isRemoved, this call is directly\n // from Zone.prototype.cancelTask, we should remove the task\n // from tasksList of target first\n if (!task.isRemoved) {\n var symbolEventNames = zoneSymbolEventNames$1[task.eventName];\n var symbolEventName = void 0;\n if (symbolEventNames) {\n symbolEventName = symbolEventNames[task.capture ? TRUE_STR : FALSE_STR];\n }\n var existingTasks = symbolEventName && task.target[symbolEventName];\n if (existingTasks) {\n for (var i = 0; i < existingTasks.length; i++) {\n var existingTask = existingTasks[i];\n if (existingTask === task) {\n existingTasks.splice(i, 1);\n // set isRemoved to data for faster invokeTask check\n task.isRemoved = true;\n if (existingTasks.length === 0) {\n // all tasks for the eventName + capture have gone,\n // remove globalZoneAwareCallback and remove the task cache from target\n task.allRemoved = true;\n task.target[symbolEventName] = null;\n }\n break;\n }\n }\n }\n }\n // if all tasks for the eventName + capture have gone,\n // we will really remove the global event callback,\n // if not, return\n if (!task.allRemoved) {\n return;\n }\n return nativeRemoveEventListener.call(task.target, task.eventName, task.capture ? globalZoneAwareCaptureCallback : globalZoneAwareCallback, task.options);\n };\n var customScheduleNonGlobal = function (task) {\n return nativeAddEventListener.call(taskData.target, taskData.eventName, task.invoke, taskData.options);\n };\n var customSchedulePrepend = function (task) {\n return nativePrependEventListener.call(taskData.target, taskData.eventName, task.invoke, taskData.options);\n };\n var customCancelNonGlobal = function (task) {\n return nativeRemoveEventListener.call(task.target, task.eventName, task.invoke, task.options);\n };\n var customSchedule = useGlobalCallback ? customScheduleGlobal : customScheduleNonGlobal;\n var customCancel = useGlobalCallback ? customCancelGlobal : customCancelNonGlobal;\n var compareTaskCallbackVsDelegate = function (task, delegate) {\n var typeOfDelegate = typeof delegate;\n return (typeOfDelegate === 'function' && task.callback === delegate) ||\n (typeOfDelegate === 'object' && task.originalDelegate === delegate);\n };\n var compare = (patchOptions && patchOptions.diff) ? patchOptions.diff : compareTaskCallbackVsDelegate;\n var blackListedEvents = Zone[Zone.__symbol__('BLACK_LISTED_EVENTS')];\n var makeAddListener = function (nativeListener, addSource, customScheduleFn, customCancelFn, returnTarget, prepend) {\n if (returnTarget === void 0) { returnTarget = false; }\n if (prepend === void 0) { prepend = false; }\n return function () {\n var target = this || _global;\n var delegate = arguments[1];\n if (!delegate) {\n return nativeListener.apply(this, arguments);\n }\n // don't create the bind delegate function for handleEvent\n // case here to improve addEventListener performance\n // we will create the bind delegate when invoke\n var isHandleEvent = false;\n if (typeof delegate !== 'function') {\n if (!delegate.handleEvent) {\n return nativeListener.apply(this, arguments);\n }\n isHandleEvent = true;\n }\n if (validateHandler && !validateHandler(nativeListener, delegate, target, arguments)) {\n return;\n }\n var eventName = arguments[0];\n var options = arguments[2];\n if (blackListedEvents) {\n // check black list\n for (var i = 0; i < blackListedEvents.length; i++) {\n if (eventName === blackListedEvents[i]) {\n return nativeListener.apply(this, arguments);\n }\n }\n }\n var capture;\n var once = false;\n if (options === undefined) {\n capture = false;\n }\n else if (options === true) {\n capture = true;\n }\n else if (options === false) {\n capture = false;\n }\n else {\n capture = options ? !!options.capture : false;\n once = options ? !!options.once : false;\n }\n var zone = Zone.current;\n var symbolEventNames = zoneSymbolEventNames$1[eventName];\n var symbolEventName;\n if (!symbolEventNames) {\n // the code is duplicate, but I just want to get some better performance\n var falseEventName = eventName + FALSE_STR;\n var trueEventName = eventName + TRUE_STR;\n var symbol = ZONE_SYMBOL_PREFIX + falseEventName;\n var symbolCapture = ZONE_SYMBOL_PREFIX + trueEventName;\n zoneSymbolEventNames$1[eventName] = {};\n zoneSymbolEventNames$1[eventName][FALSE_STR] = symbol;\n zoneSymbolEventNames$1[eventName][TRUE_STR] = symbolCapture;\n symbolEventName = capture ? symbolCapture : symbol;\n }\n else {\n symbolEventName = symbolEventNames[capture ? TRUE_STR : FALSE_STR];\n }\n var existingTasks = target[symbolEventName];\n var isExisting = false;\n if (existingTasks) {\n // already have task registered\n isExisting = true;\n if (checkDuplicate) {\n for (var i = 0; i < existingTasks.length; i++) {\n if (compare(existingTasks[i], delegate)) {\n // same callback, same capture, same event name, just return\n return;\n }\n }\n }\n }\n else {\n existingTasks = target[symbolEventName] = [];\n }\n var source;\n var constructorName = target.constructor['name'];\n var targetSource = globalSources[constructorName];\n if (targetSource) {\n source = targetSource[eventName];\n }\n if (!source) {\n source = constructorName + addSource + eventName;\n }\n // do not create a new object as task.data to pass those things\n // just use the global shared one\n taskData.options = options;\n if (once) {\n // if addEventListener with once options, we don't pass it to\n // native addEventListener, instead we keep the once setting\n // and handle ourselves.\n taskData.options.once = false;\n }\n taskData.target = target;\n taskData.capture = capture;\n taskData.eventName = eventName;\n taskData.isExisting = isExisting;\n var data = useGlobalCallback ? OPTIMIZED_ZONE_EVENT_TASK_DATA : null;\n // keep taskData into data to allow onScheduleEventTask to access the task information\n if (data) {\n data.taskData = taskData;\n }\n var task = zone.scheduleEventTask(source, delegate, data, customScheduleFn, customCancelFn);\n // should clear taskData.target to avoid memory leak\n // issue, https://github.com/angular/angular/issues/20442\n taskData.target = null;\n // need to clear up taskData because it is a global object\n if (data) {\n data.taskData = null;\n }\n // have to save those information to task in case\n // application may call task.zone.cancelTask() directly\n if (once) {\n options.once = true;\n }\n task.options = options;\n task.target = target;\n task.capture = capture;\n task.eventName = eventName;\n if (isHandleEvent) {\n // save original delegate for compare to check duplicate\n task.originalDelegate = delegate;\n }\n if (!prepend) {\n existingTasks.push(task);\n }\n else {\n existingTasks.unshift(task);\n }\n if (returnTarget) {\n return target;\n }\n };\n };\n proto[ADD_EVENT_LISTENER] = makeAddListener(nativeAddEventListener, ADD_EVENT_LISTENER_SOURCE, customSchedule, customCancel, returnTarget);\n if (nativePrependEventListener) {\n proto[PREPEND_EVENT_LISTENER] = makeAddListener(nativePrependEventListener, PREPEND_EVENT_LISTENER_SOURCE, customSchedulePrepend, customCancel, returnTarget, true);\n }\n proto[REMOVE_EVENT_LISTENER] = function () {\n var target = this || _global;\n var eventName = arguments[0];\n var options = arguments[2];\n var capture;\n if (options === undefined) {\n capture = false;\n }\n else if (options === true) {\n capture = true;\n }\n else if (options === false) {\n capture = false;\n }\n else {\n capture = options ? !!options.capture : false;\n }\n var delegate = arguments[1];\n if (!delegate) {\n return nativeRemoveEventListener.apply(this, arguments);\n }\n if (validateHandler &&\n !validateHandler(nativeRemoveEventListener, delegate, target, arguments)) {\n return;\n }\n var symbolEventNames = zoneSymbolEventNames$1[eventName];\n var symbolEventName;\n if (symbolEventNames) {\n symbolEventName = symbolEventNames[capture ? TRUE_STR : FALSE_STR];\n }\n var existingTasks = symbolEventName && target[symbolEventName];\n if (existingTasks) {\n for (var i = 0; i < existingTasks.length; i++) {\n var existingTask = existingTasks[i];\n if (compare(existingTask, delegate)) {\n existingTasks.splice(i, 1);\n // set isRemoved to data for faster invokeTask check\n existingTask.isRemoved = true;\n if (existingTasks.length === 0) {\n // all tasks for the eventName + capture have gone,\n // remove globalZoneAwareCallback and remove the task cache from target\n existingTask.allRemoved = true;\n target[symbolEventName] = null;\n }\n existingTask.zone.cancelTask(existingTask);\n if (returnTarget) {\n return target;\n }\n return;\n }\n }\n }\n // issue 930, didn't find the event name or callback\n // from zone kept existingTasks, the callback maybe\n // added outside of zone, we need to call native removeEventListener\n // to try to remove it.\n return nativeRemoveEventListener.apply(this, arguments);\n };\n proto[LISTENERS_EVENT_LISTENER] = function () {\n var target = this || _global;\n var eventName = arguments[0];\n var listeners = [];\n var tasks = findEventTasks(target, eventName);\n for (var i = 0; i < tasks.length; i++) {\n var task = tasks[i];\n var delegate = task.originalDelegate ? task.originalDelegate : task.callback;\n listeners.push(delegate);\n }\n return listeners;\n };\n proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER] = function () {\n var target = this || _global;\n var eventName = arguments[0];\n if (!eventName) {\n var keys = Object.keys(target);\n for (var i = 0; i < keys.length; i++) {\n var prop = keys[i];\n var match = EVENT_NAME_SYMBOL_REGX.exec(prop);\n var evtName = match && match[1];\n // in nodejs EventEmitter, removeListener event is\n // used for monitoring the removeListener call,\n // so just keep removeListener eventListener until\n // all other eventListeners are removed\n if (evtName && evtName !== 'removeListener') {\n this[REMOVE_ALL_LISTENERS_EVENT_LISTENER].call(this, evtName);\n }\n }\n // remove removeListener listener finally\n this[REMOVE_ALL_LISTENERS_EVENT_LISTENER].call(this, 'removeListener');\n }\n else {\n var symbolEventNames = zoneSymbolEventNames$1[eventName];\n if (symbolEventNames) {\n var symbolEventName = symbolEventNames[FALSE_STR];\n var symbolCaptureEventName = symbolEventNames[TRUE_STR];\n var tasks = target[symbolEventName];\n var captureTasks = target[symbolCaptureEventName];\n if (tasks) {\n var removeTasks = tasks.slice();\n for (var i = 0; i < removeTasks.length; i++) {\n var task = removeTasks[i];\n var delegate = task.originalDelegate ? task.originalDelegate : task.callback;\n this[REMOVE_EVENT_LISTENER].call(this, eventName, delegate, task.options);\n }\n }\n if (captureTasks) {\n var removeTasks = captureTasks.slice();\n for (var i = 0; i < removeTasks.length; i++) {\n var task = removeTasks[i];\n var delegate = task.originalDelegate ? task.originalDelegate : task.callback;\n this[REMOVE_EVENT_LISTENER].call(this, eventName, delegate, task.options);\n }\n }\n }\n }\n if (returnTarget) {\n return this;\n }\n };\n // for native toString patch\n attachOriginToPatched(proto[ADD_EVENT_LISTENER], nativeAddEventListener);\n attachOriginToPatched(proto[REMOVE_EVENT_LISTENER], nativeRemoveEventListener);\n if (nativeRemoveAllListeners) {\n attachOriginToPatched(proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER], nativeRemoveAllListeners);\n }\n if (nativeListeners) {\n attachOriginToPatched(proto[LISTENERS_EVENT_LISTENER], nativeListeners);\n }\n return true;\n }\n var results = [];\n for (var i = 0; i < apis.length; i++) {\n results[i] = patchEventTargetMethods(apis[i], patchOptions);\n }\n return results;\n}\nfunction findEventTasks(target, eventName) {\n var foundTasks = [];\n for (var prop in target) {\n var match = EVENT_NAME_SYMBOL_REGX.exec(prop);\n var evtName = match && match[1];\n if (evtName && (!eventName || evtName === eventName)) {\n var tasks = target[prop];\n if (tasks) {\n for (var i = 0; i < tasks.length; i++) {\n foundTasks.push(tasks[i]);\n }\n }\n }\n }\n return foundTasks;\n}\nfunction patchEventPrototype(global, api) {\n var Event = global['Event'];\n if (Event && Event.prototype) {\n api.patchMethod(Event.prototype, 'stopImmediatePropagation', function (delegate) { return function (self, args) {\n self[IMMEDIATE_PROPAGATION_SYMBOL] = true;\n // we need to call the native stopImmediatePropagation\n // in case in some hybrid application, some part of\n // application will be controlled by zone, some are not\n delegate && delegate.apply(self, args);\n }; });\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/**\n * @fileoverview\n * @suppress {missingRequire}\n */\nvar taskSymbol = zoneSymbol('zoneTask');\nfunction patchTimer(window, setName, cancelName, nameSuffix) {\n var setNative = null;\n var clearNative = null;\n setName += nameSuffix;\n cancelName += nameSuffix;\n var tasksByHandleId = {};\n function scheduleTask(task) {\n var data = task.data;\n function timer() {\n try {\n task.invoke.apply(this, arguments);\n }\n finally {\n // issue-934, task will be cancelled\n // even it is a periodic task such as\n // setInterval\n if (!(task.data && task.data.isPeriodic)) {\n if (typeof data.handleId === 'number') {\n // in non-nodejs env, we remove timerId\n // from local cache\n delete tasksByHandleId[data.handleId];\n }\n else if (data.handleId) {\n // Node returns complex objects as handleIds\n // we remove task reference from timer object\n data.handleId[taskSymbol] = null;\n }\n }\n }\n }\n data.args[0] = timer;\n data.handleId = setNative.apply(window, data.args);\n return task;\n }\n function clearTask(task) {\n return clearNative(task.data.handleId);\n }\n setNative =\n patchMethod(window, setName, function (delegate) { return function (self, args) {\n if (typeof args[0] === 'function') {\n var options = {\n handleId: null,\n isPeriodic: nameSuffix === 'Interval',\n delay: (nameSuffix === 'Timeout' || nameSuffix === 'Interval') ? args[1] || 0 : null,\n args: args\n };\n var task = scheduleMacroTaskWithCurrentZone(setName, args[0], options, scheduleTask, clearTask);\n if (!task) {\n return task;\n }\n // Node.js must additionally support the ref and unref functions.\n var handle = task.data.handleId;\n if (typeof handle === 'number') {\n // for non nodejs env, we save handleId: task\n // mapping in local cache for clearTimeout\n tasksByHandleId[handle] = task;\n }\n else if (handle) {\n // for nodejs env, we save task\n // reference in timerId Object for clearTimeout\n handle[taskSymbol] = task;\n }\n // check whether handle is null, because some polyfill or browser\n // may return undefined from setTimeout/setInterval/setImmediate/requestAnimationFrame\n if (handle && handle.ref && handle.unref && typeof handle.ref === 'function' &&\n typeof handle.unref === 'function') {\n task.ref = handle.ref.bind(handle);\n task.unref = handle.unref.bind(handle);\n }\n if (typeof handle === 'number' || handle) {\n return handle;\n }\n return task;\n }\n else {\n // cause an error by calling it directly.\n return delegate.apply(window, args);\n }\n }; });\n clearNative =\n patchMethod(window, cancelName, function (delegate) { return function (self, args) {\n var id = args[0];\n var task;\n if (typeof id === 'number') {\n // non nodejs env.\n task = tasksByHandleId[id];\n }\n else {\n // nodejs env.\n task = id && id[taskSymbol];\n // other environments.\n if (!task) {\n task = id;\n }\n }\n if (task && typeof task.type === 'string') {\n if (task.state !== 'notScheduled' &&\n (task.cancelFn && task.data.isPeriodic || task.runCount === 0)) {\n if (typeof id === 'number') {\n delete tasksByHandleId[id];\n }\n else if (id) {\n id[taskSymbol] = null;\n }\n // Do not cancel already canceled functions\n task.zone.cancelTask(task);\n }\n }\n else {\n // cause an error by calling it directly.\n delegate.apply(window, args);\n }\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/*\n * This is necessary for Chrome and Chrome mobile, to enable\n * things like redefining `createdCallback` on an element.\n */\nvar _defineProperty = Object[zoneSymbol('defineProperty')] = Object.defineProperty;\nvar _getOwnPropertyDescriptor = Object[zoneSymbol('getOwnPropertyDescriptor')] =\n Object.getOwnPropertyDescriptor;\nvar _create = Object.create;\nvar unconfigurablesKey = zoneSymbol('unconfigurables');\nfunction propertyPatch() {\n Object.defineProperty = function (obj, prop, desc) {\n if (isUnconfigurable(obj, prop)) {\n throw new TypeError('Cannot assign to read only property \\'' + prop + '\\' of ' + obj);\n }\n var originalConfigurableFlag = desc.configurable;\n if (prop !== 'prototype') {\n desc = rewriteDescriptor(obj, prop, desc);\n }\n return _tryDefineProperty(obj, prop, desc, originalConfigurableFlag);\n };\n Object.defineProperties = function (obj, props) {\n Object.keys(props).forEach(function (prop) {\n Object.defineProperty(obj, prop, props[prop]);\n });\n return obj;\n };\n Object.create = function (obj, proto) {\n if (typeof proto === 'object' && !Object.isFrozen(proto)) {\n Object.keys(proto).forEach(function (prop) {\n proto[prop] = rewriteDescriptor(obj, prop, proto[prop]);\n });\n }\n return _create(obj, proto);\n };\n Object.getOwnPropertyDescriptor = function (obj, prop) {\n var desc = _getOwnPropertyDescriptor(obj, prop);\n if (isUnconfigurable(obj, prop)) {\n desc.configurable = false;\n }\n return desc;\n };\n}\nfunction _redefineProperty(obj, prop, desc) {\n var originalConfigurableFlag = desc.configurable;\n desc = rewriteDescriptor(obj, prop, desc);\n return _tryDefineProperty(obj, prop, desc, originalConfigurableFlag);\n}\nfunction isUnconfigurable(obj, prop) {\n return obj && obj[unconfigurablesKey] && obj[unconfigurablesKey][prop];\n}\nfunction rewriteDescriptor(obj, prop, desc) {\n // issue-927, if the desc is frozen, don't try to change the desc\n if (!Object.isFrozen(desc)) {\n desc.configurable = true;\n }\n if (!desc.configurable) {\n // issue-927, if the obj is frozen, don't try to set the desc to obj\n if (!obj[unconfigurablesKey] && !Object.isFrozen(obj)) {\n _defineProperty(obj, unconfigurablesKey, { writable: true, value: {} });\n }\n if (obj[unconfigurablesKey]) {\n obj[unconfigurablesKey][prop] = true;\n }\n }\n return desc;\n}\nfunction _tryDefineProperty(obj, prop, desc, originalConfigurableFlag) {\n try {\n return _defineProperty(obj, prop, desc);\n }\n catch (error) {\n if (desc.configurable) {\n // In case of errors, when the configurable flag was likely set by rewriteDescriptor(), let's\n // retry with the original flag value\n if (typeof originalConfigurableFlag == 'undefined') {\n delete desc.configurable;\n }\n else {\n desc.configurable = originalConfigurableFlag;\n }\n try {\n return _defineProperty(obj, prop, desc);\n }\n catch (error) {\n var descJson = null;\n try {\n descJson = JSON.stringify(desc);\n }\n catch (error) {\n descJson = desc.toString();\n }\n console.log(\"Attempting to configure '\" + prop + \"' with descriptor '\" + descJson + \"' on object '\" + obj + \"' and got error, giving up: \" + error);\n }\n }\n else {\n throw error;\n }\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// we have to patch the instance since the proto is non-configurable\nfunction apply(api, _global) {\n var WS = _global.WebSocket;\n // On Safari window.EventTarget doesn't exist so need to patch WS add/removeEventListener\n // On older Chrome, no need since EventTarget was already patched\n if (!_global.EventTarget) {\n patchEventTarget(_global, [WS.prototype]);\n }\n _global.WebSocket = function (x, y) {\n var socket = arguments.length > 1 ? new WS(x, y) : new WS(x);\n var proxySocket;\n var proxySocketProto;\n // Safari 7.0 has non-configurable own 'onmessage' and friends properties on the socket instance\n var onmessageDesc = ObjectGetOwnPropertyDescriptor(socket, 'onmessage');\n if (onmessageDesc && onmessageDesc.configurable === false) {\n proxySocket = ObjectCreate(socket);\n // socket have own property descriptor 'onopen', 'onmessage', 'onclose', 'onerror'\n // but proxySocket not, so we will keep socket as prototype and pass it to\n // patchOnProperties method\n proxySocketProto = socket;\n [ADD_EVENT_LISTENER_STR, REMOVE_EVENT_LISTENER_STR, 'send', 'close'].forEach(function (propName) {\n proxySocket[propName] = function () {\n var args = ArraySlice.call(arguments);\n if (propName === ADD_EVENT_LISTENER_STR || propName === REMOVE_EVENT_LISTENER_STR) {\n var eventName = args.length > 0 ? args[0] : undefined;\n if (eventName) {\n var propertySymbol = Zone.__symbol__('ON_PROPERTY' + eventName);\n socket[propertySymbol] = proxySocket[propertySymbol];\n }\n }\n return socket[propName].apply(socket, args);\n };\n });\n }\n else {\n // we can patch the real socket\n proxySocket = socket;\n }\n patchOnProperties(proxySocket, ['close', 'error', 'message', 'open'], proxySocketProto);\n return proxySocket;\n };\n var globalWebSocket = _global['WebSocket'];\n for (var prop in WS) {\n globalWebSocket[prop] = WS[prop];\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/**\n * @fileoverview\n * @suppress {globalThis}\n */\nvar globalEventHandlersEventNames = [\n 'abort',\n 'animationcancel',\n 'animationend',\n 'animationiteration',\n 'auxclick',\n 'beforeinput',\n 'blur',\n 'cancel',\n 'canplay',\n 'canplaythrough',\n 'change',\n 'compositionstart',\n 'compositionupdate',\n 'compositionend',\n 'cuechange',\n 'click',\n 'close',\n 'contextmenu',\n 'curechange',\n 'dblclick',\n 'drag',\n 'dragend',\n 'dragenter',\n 'dragexit',\n 'dragleave',\n 'dragover',\n 'drop',\n 'durationchange',\n 'emptied',\n 'ended',\n 'error',\n 'focus',\n 'focusin',\n 'focusout',\n 'gotpointercapture',\n 'input',\n 'invalid',\n 'keydown',\n 'keypress',\n 'keyup',\n 'load',\n 'loadstart',\n 'loadeddata',\n 'loadedmetadata',\n 'lostpointercapture',\n 'mousedown',\n 'mouseenter',\n 'mouseleave',\n 'mousemove',\n 'mouseout',\n 'mouseover',\n 'mouseup',\n 'mousewheel',\n 'orientationchange',\n 'pause',\n 'play',\n 'playing',\n 'pointercancel',\n 'pointerdown',\n 'pointerenter',\n 'pointerleave',\n 'pointerlockchange',\n 'mozpointerlockchange',\n 'webkitpointerlockerchange',\n 'pointerlockerror',\n 'mozpointerlockerror',\n 'webkitpointerlockerror',\n 'pointermove',\n 'pointout',\n 'pointerover',\n 'pointerup',\n 'progress',\n 'ratechange',\n 'reset',\n 'resize',\n 'scroll',\n 'seeked',\n 'seeking',\n 'select',\n 'selectionchange',\n 'selectstart',\n 'show',\n 'sort',\n 'stalled',\n 'submit',\n 'suspend',\n 'timeupdate',\n 'volumechange',\n 'touchcancel',\n 'touchmove',\n 'touchstart',\n 'touchend',\n 'transitioncancel',\n 'transitionend',\n 'waiting',\n 'wheel'\n];\nvar documentEventNames = [\n 'afterscriptexecute', 'beforescriptexecute', 'DOMContentLoaded', 'fullscreenchange',\n 'mozfullscreenchange', 'webkitfullscreenchange', 'msfullscreenchange', 'fullscreenerror',\n 'mozfullscreenerror', 'webkitfullscreenerror', 'msfullscreenerror', 'readystatechange',\n 'visibilitychange'\n];\nvar windowEventNames = [\n 'absolutedeviceorientation',\n 'afterinput',\n 'afterprint',\n 'appinstalled',\n 'beforeinstallprompt',\n 'beforeprint',\n 'beforeunload',\n 'devicelight',\n 'devicemotion',\n 'deviceorientation',\n 'deviceorientationabsolute',\n 'deviceproximity',\n 'hashchange',\n 'languagechange',\n 'message',\n 'mozbeforepaint',\n 'offline',\n 'online',\n 'paint',\n 'pageshow',\n 'pagehide',\n 'popstate',\n 'rejectionhandled',\n 'storage',\n 'unhandledrejection',\n 'unload',\n 'userproximity',\n 'vrdisplyconnected',\n 'vrdisplaydisconnected',\n 'vrdisplaypresentchange'\n];\nvar htmlElementEventNames = [\n 'beforecopy', 'beforecut', 'beforepaste', 'copy', 'cut', 'paste', 'dragstart', 'loadend',\n 'animationstart', 'search', 'transitionrun', 'transitionstart', 'webkitanimationend',\n 'webkitanimationiteration', 'webkitanimationstart', 'webkittransitionend'\n];\nvar mediaElementEventNames = ['encrypted', 'waitingforkey', 'msneedkey', 'mozinterruptbegin', 'mozinterruptend'];\nvar ieElementEventNames = [\n 'activate',\n 'afterupdate',\n 'ariarequest',\n 'beforeactivate',\n 'beforedeactivate',\n 'beforeeditfocus',\n 'beforeupdate',\n 'cellchange',\n 'controlselect',\n 'dataavailable',\n 'datasetchanged',\n 'datasetcomplete',\n 'errorupdate',\n 'filterchange',\n 'layoutcomplete',\n 'losecapture',\n 'move',\n 'moveend',\n 'movestart',\n 'propertychange',\n 'resizeend',\n 'resizestart',\n 'rowenter',\n 'rowexit',\n 'rowsdelete',\n 'rowsinserted',\n 'command',\n 'compassneedscalibration',\n 'deactivate',\n 'help',\n 'mscontentzoom',\n 'msmanipulationstatechanged',\n 'msgesturechange',\n 'msgesturedoubletap',\n 'msgestureend',\n 'msgesturehold',\n 'msgesturestart',\n 'msgesturetap',\n 'msgotpointercapture',\n 'msinertiastart',\n 'mslostpointercapture',\n 'mspointercancel',\n 'mspointerdown',\n 'mspointerenter',\n 'mspointerhover',\n 'mspointerleave',\n 'mspointermove',\n 'mspointerout',\n 'mspointerover',\n 'mspointerup',\n 'pointerout',\n 'mssitemodejumplistitemremoved',\n 'msthumbnailclick',\n 'stop',\n 'storagecommit'\n];\nvar webglEventNames = ['webglcontextrestored', 'webglcontextlost', 'webglcontextcreationerror'];\nvar formEventNames = ['autocomplete', 'autocompleteerror'];\nvar detailEventNames = ['toggle'];\nvar frameEventNames = ['load'];\nvar frameSetEventNames = ['blur', 'error', 'focus', 'load', 'resize', 'scroll', 'messageerror'];\nvar marqueeEventNames = ['bounce', 'finish', 'start'];\nvar XMLHttpRequestEventNames = [\n 'loadstart', 'progress', 'abort', 'error', 'load', 'progress', 'timeout', 'loadend',\n 'readystatechange'\n];\nvar IDBIndexEventNames = ['upgradeneeded', 'complete', 'abort', 'success', 'error', 'blocked', 'versionchange', 'close'];\nvar websocketEventNames = ['close', 'error', 'open', 'message'];\nvar workerEventNames = ['error', 'message'];\nvar eventNames = globalEventHandlersEventNames.concat(webglEventNames, formEventNames, detailEventNames, documentEventNames, windowEventNames, htmlElementEventNames, ieElementEventNames);\nfunction filterProperties(target, onProperties, ignoreProperties) {\n if (!ignoreProperties) {\n return onProperties;\n }\n var tip = ignoreProperties.filter(function (ip) { return ip.target === target; });\n if (!tip || tip.length === 0) {\n return onProperties;\n }\n var targetIgnoreProperties = tip[0].ignoreProperties;\n return onProperties.filter(function (op) { return targetIgnoreProperties.indexOf(op) === -1; });\n}\nfunction patchFilteredProperties(target, onProperties, ignoreProperties, prototype) {\n // check whether target is available, sometimes target will be undefined\n // because different browser or some 3rd party plugin.\n if (!target) {\n return;\n }\n var filteredProperties = filterProperties(target, onProperties, ignoreProperties);\n patchOnProperties(target, filteredProperties, prototype);\n}\nfunction propertyDescriptorPatch(api, _global) {\n if (isNode && !isMix) {\n return;\n }\n var supportsWebSocket = typeof WebSocket !== 'undefined';\n if (canPatchViaPropertyDescriptor()) {\n var ignoreProperties = _global.__Zone_ignore_on_properties;\n // for browsers that we can patch the descriptor: Chrome & Firefox\n if (isBrowser) {\n var internalWindow = window;\n // in IE/Edge, onProp not exist in window object, but in WindowPrototype\n // so we need to pass WindowPrototype to check onProp exist or not\n patchFilteredProperties(internalWindow, eventNames.concat(['messageerror']), ignoreProperties, ObjectGetPrototypeOf(internalWindow));\n patchFilteredProperties(Document.prototype, eventNames, ignoreProperties);\n if (typeof internalWindow['SVGElement'] !== 'undefined') {\n patchFilteredProperties(internalWindow['SVGElement'].prototype, eventNames, ignoreProperties);\n }\n patchFilteredProperties(Element.prototype, eventNames, ignoreProperties);\n patchFilteredProperties(HTMLElement.prototype, eventNames, ignoreProperties);\n patchFilteredProperties(HTMLMediaElement.prototype, mediaElementEventNames, ignoreProperties);\n patchFilteredProperties(HTMLFrameSetElement.prototype, windowEventNames.concat(frameSetEventNames), ignoreProperties);\n patchFilteredProperties(HTMLBodyElement.prototype, windowEventNames.concat(frameSetEventNames), ignoreProperties);\n patchFilteredProperties(HTMLFrameElement.prototype, frameEventNames, ignoreProperties);\n patchFilteredProperties(HTMLIFrameElement.prototype, frameEventNames, ignoreProperties);\n var HTMLMarqueeElement_1 = internalWindow['HTMLMarqueeElement'];\n if (HTMLMarqueeElement_1) {\n patchFilteredProperties(HTMLMarqueeElement_1.prototype, marqueeEventNames, ignoreProperties);\n }\n var Worker_1 = internalWindow['Worker'];\n if (Worker_1) {\n patchFilteredProperties(Worker_1.prototype, workerEventNames, ignoreProperties);\n }\n }\n patchFilteredProperties(XMLHttpRequest.prototype, XMLHttpRequestEventNames, ignoreProperties);\n var XMLHttpRequestEventTarget = _global['XMLHttpRequestEventTarget'];\n if (XMLHttpRequestEventTarget) {\n patchFilteredProperties(XMLHttpRequestEventTarget && XMLHttpRequestEventTarget.prototype, XMLHttpRequestEventNames, ignoreProperties);\n }\n if (typeof IDBIndex !== 'undefined') {\n patchFilteredProperties(IDBIndex.prototype, IDBIndexEventNames, ignoreProperties);\n patchFilteredProperties(IDBRequest.prototype, IDBIndexEventNames, ignoreProperties);\n patchFilteredProperties(IDBOpenDBRequest.prototype, IDBIndexEventNames, ignoreProperties);\n patchFilteredProperties(IDBDatabase.prototype, IDBIndexEventNames, ignoreProperties);\n patchFilteredProperties(IDBTransaction.prototype, IDBIndexEventNames, ignoreProperties);\n patchFilteredProperties(IDBCursor.prototype, IDBIndexEventNames, ignoreProperties);\n }\n if (supportsWebSocket) {\n patchFilteredProperties(WebSocket.prototype, websocketEventNames, ignoreProperties);\n }\n }\n else {\n // Safari, Android browsers (Jelly Bean)\n patchViaCapturingAllTheEvents();\n patchClass('XMLHttpRequest');\n if (supportsWebSocket) {\n apply(api, _global);\n }\n }\n}\nfunction canPatchViaPropertyDescriptor() {\n if ((isBrowser || isMix) && !ObjectGetOwnPropertyDescriptor(HTMLElement.prototype, 'onclick') &&\n typeof Element !== 'undefined') {\n // WebKit https://bugs.webkit.org/show_bug.cgi?id=134364\n // IDL interface attributes are not configurable\n var desc = ObjectGetOwnPropertyDescriptor(Element.prototype, 'onclick');\n if (desc && !desc.configurable)\n return false;\n }\n var ON_READY_STATE_CHANGE = 'onreadystatechange';\n var XMLHttpRequestPrototype = XMLHttpRequest.prototype;\n var xhrDesc = ObjectGetOwnPropertyDescriptor(XMLHttpRequestPrototype, ON_READY_STATE_CHANGE);\n // add enumerable and configurable here because in opera\n // by default XMLHttpRequest.prototype.onreadystatechange is undefined\n // without adding enumerable and configurable will cause onreadystatechange\n // non-configurable\n // and if XMLHttpRequest.prototype.onreadystatechange is undefined,\n // we should set a real desc instead a fake one\n if (xhrDesc) {\n ObjectDefineProperty(XMLHttpRequestPrototype, ON_READY_STATE_CHANGE, {\n enumerable: true,\n configurable: true,\n get: function () {\n return true;\n }\n });\n var req = new XMLHttpRequest();\n var result = !!req.onreadystatechange;\n // restore original desc\n ObjectDefineProperty(XMLHttpRequestPrototype, ON_READY_STATE_CHANGE, xhrDesc || {});\n return result;\n }\n else {\n var SYMBOL_FAKE_ONREADYSTATECHANGE_1 = zoneSymbol('fake');\n ObjectDefineProperty(XMLHttpRequestPrototype, ON_READY_STATE_CHANGE, {\n enumerable: true,\n configurable: true,\n get: function () {\n return this[SYMBOL_FAKE_ONREADYSTATECHANGE_1];\n },\n set: function (value) {\n this[SYMBOL_FAKE_ONREADYSTATECHANGE_1] = value;\n }\n });\n var req = new XMLHttpRequest();\n var detectFunc = function () { };\n req.onreadystatechange = detectFunc;\n var result = req[SYMBOL_FAKE_ONREADYSTATECHANGE_1] === detectFunc;\n req.onreadystatechange = null;\n return result;\n }\n}\nvar unboundKey = zoneSymbol('unbound');\n// Whenever any eventListener fires, we check the eventListener target and all parents\n// for `onwhatever` properties and replace them with zone-bound functions\n// - Chrome (for now)\nfunction patchViaCapturingAllTheEvents() {\n var _loop_1 = function (i) {\n var property = eventNames[i];\n var onproperty = 'on' + property;\n self.addEventListener(property, function (event) {\n var elt = event.target, bound, source;\n if (elt) {\n source = elt.constructor['name'] + '.' + onproperty;\n }\n else {\n source = 'unknown.' + onproperty;\n }\n while (elt) {\n if (elt[onproperty] && !elt[onproperty][unboundKey]) {\n bound = wrapWithCurrentZone(elt[onproperty], source);\n bound[unboundKey] = elt[onproperty];\n elt[onproperty] = bound;\n }\n elt = elt.parentElement;\n }\n }, true);\n };\n for (var i = 0; i < eventNames.length; i++) {\n _loop_1(i);\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 */\nfunction eventTargetPatch(_global, api) {\n var WTF_ISSUE_555 = 'Anchor,Area,Audio,BR,Base,BaseFont,Body,Button,Canvas,Content,DList,Directory,Div,Embed,FieldSet,Font,Form,Frame,FrameSet,HR,Head,Heading,Html,IFrame,Image,Input,Keygen,LI,Label,Legend,Link,Map,Marquee,Media,Menu,Meta,Meter,Mod,OList,Object,OptGroup,Option,Output,Paragraph,Pre,Progress,Quote,Script,Select,Source,Span,Style,TableCaption,TableCell,TableCol,Table,TableRow,TableSection,TextArea,Title,Track,UList,Unknown,Video';\n var NO_EVENT_TARGET = 'ApplicationCache,EventSource,FileReader,InputMethodContext,MediaController,MessagePort,Node,Performance,SVGElementInstance,SharedWorker,TextTrack,TextTrackCue,TextTrackList,WebKitNamedFlow,Window,Worker,WorkerGlobalScope,XMLHttpRequest,XMLHttpRequestEventTarget,XMLHttpRequestUpload,IDBRequest,IDBOpenDBRequest,IDBDatabase,IDBTransaction,IDBCursor,DBIndex,WebSocket'\n .split(',');\n var EVENT_TARGET = 'EventTarget';\n var apis = [];\n var isWtf = _global['wtf'];\n var WTF_ISSUE_555_ARRAY = WTF_ISSUE_555.split(',');\n if (isWtf) {\n // Workaround for: https://github.com/google/tracing-framework/issues/555\n apis = WTF_ISSUE_555_ARRAY.map(function (v) { return 'HTML' + v + 'Element'; }).concat(NO_EVENT_TARGET);\n }\n else if (_global[EVENT_TARGET]) {\n apis.push(EVENT_TARGET);\n }\n else {\n // Note: EventTarget is not available in all browsers,\n // if it's not available, we instead patch the APIs in the IDL that inherit from EventTarget\n apis = NO_EVENT_TARGET;\n }\n var isDisableIECheck = _global['__Zone_disable_IE_check'] || false;\n var isEnableCrossContextCheck = _global['__Zone_enable_cross_context_check'] || false;\n var ieOrEdge = isIEOrEdge();\n var ADD_EVENT_LISTENER_SOURCE = '.addEventListener:';\n var FUNCTION_WRAPPER = '[object FunctionWrapper]';\n var BROWSER_TOOLS = 'function __BROWSERTOOLS_CONSOLE_SAFEFUNC() { [native code] }';\n // predefine all __zone_symbol__ + eventName + true/false string\n for (var i = 0; i < eventNames.length; i++) {\n var eventName = eventNames[i];\n var falseEventName = eventName + FALSE_STR;\n var trueEventName = eventName + TRUE_STR;\n var symbol = ZONE_SYMBOL_PREFIX + falseEventName;\n var symbolCapture = ZONE_SYMBOL_PREFIX + trueEventName;\n zoneSymbolEventNames$1[eventName] = {};\n zoneSymbolEventNames$1[eventName][FALSE_STR] = symbol;\n zoneSymbolEventNames$1[eventName][TRUE_STR] = symbolCapture;\n }\n // predefine all task.source string\n for (var i = 0; i < WTF_ISSUE_555.length; i++) {\n var target = WTF_ISSUE_555_ARRAY[i];\n var targets = globalSources[target] = {};\n for (var j = 0; j < eventNames.length; j++) {\n var eventName = eventNames[j];\n targets[eventName] = target + ADD_EVENT_LISTENER_SOURCE + eventName;\n }\n }\n var checkIEAndCrossContext = function (nativeDelegate, delegate, target, args) {\n if (!isDisableIECheck && ieOrEdge) {\n if (isEnableCrossContextCheck) {\n try {\n var testString = delegate.toString();\n if ((testString === FUNCTION_WRAPPER || testString == BROWSER_TOOLS)) {\n nativeDelegate.apply(target, args);\n return false;\n }\n }\n catch (error) {\n nativeDelegate.apply(target, args);\n return false;\n }\n }\n else {\n var testString = delegate.toString();\n if ((testString === FUNCTION_WRAPPER || testString == BROWSER_TOOLS)) {\n nativeDelegate.apply(target, args);\n return false;\n }\n }\n }\n else if (isEnableCrossContextCheck) {\n try {\n delegate.toString();\n }\n catch (error) {\n nativeDelegate.apply(target, args);\n return false;\n }\n }\n return true;\n };\n var apiTypes = [];\n for (var i = 0; i < apis.length; i++) {\n var type = _global[apis[i]];\n apiTypes.push(type && type.prototype);\n }\n // vh is validateHandler to check event handler\n // is valid or not(for security check)\n patchEventTarget(_global, apiTypes, { vh: checkIEAndCrossContext });\n api.patchEventTarget = patchEventTarget;\n return true;\n}\nfunction patchEvent(global, api) {\n patchEventPrototype(global, api);\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 */\nfunction registerElementPatch(_global) {\n if ((!isBrowser && !isMix) || !('registerElement' in _global.document)) {\n return;\n }\n var _registerElement = document.registerElement;\n var callbacks = ['createdCallback', 'attachedCallback', 'detachedCallback', 'attributeChangedCallback'];\n document.registerElement = function (name, opts) {\n if (opts && opts.prototype) {\n callbacks.forEach(function (callback) {\n var source = 'Document.registerElement::' + callback;\n var prototype = opts.prototype;\n if (prototype.hasOwnProperty(callback)) {\n var descriptor = ObjectGetOwnPropertyDescriptor(prototype, callback);\n if (descriptor && descriptor.value) {\n descriptor.value = wrapWithCurrentZone(descriptor.value, source);\n _redefineProperty(opts.prototype, callback, descriptor);\n }\n else {\n prototype[callback] = wrapWithCurrentZone(prototype[callback], source);\n }\n }\n else if (prototype[callback]) {\n prototype[callback] = wrapWithCurrentZone(prototype[callback], source);\n }\n });\n }\n return _registerElement.call(document, name, opts);\n };\n attachOriginToPatched(document.registerElement, _registerElement);\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/**\n * @fileoverview\n * @suppress {missingRequire}\n */\nZone.__load_patch('util', function (global, Zone, api) {\n api.patchOnProperties = patchOnProperties;\n api.patchMethod = patchMethod;\n api.bindArguments = bindArguments;\n});\nZone.__load_patch('timers', function (global) {\n var set = 'set';\n var clear = 'clear';\n patchTimer(global, set, clear, 'Timeout');\n patchTimer(global, set, clear, 'Interval');\n patchTimer(global, set, clear, 'Immediate');\n});\nZone.__load_patch('requestAnimationFrame', function (global) {\n patchTimer(global, 'request', 'cancel', 'AnimationFrame');\n patchTimer(global, 'mozRequest', 'mozCancel', 'AnimationFrame');\n patchTimer(global, 'webkitRequest', 'webkitCancel', 'AnimationFrame');\n});\nZone.__load_patch('blocking', function (global, Zone) {\n var blockingMethods = ['alert', 'prompt', 'confirm'];\n for (var i = 0; i < blockingMethods.length; i++) {\n var name_1 = blockingMethods[i];\n patchMethod(global, name_1, function (delegate, symbol, name) {\n return function (s, args) {\n return Zone.current.run(delegate, global, args, name);\n };\n });\n }\n});\nZone.__load_patch('EventTarget', function (global, Zone, api) {\n // load blackListEvents from global\n var SYMBOL_BLACK_LISTED_EVENTS = Zone.__symbol__('BLACK_LISTED_EVENTS');\n if (global[SYMBOL_BLACK_LISTED_EVENTS]) {\n Zone[SYMBOL_BLACK_LISTED_EVENTS] = global[SYMBOL_BLACK_LISTED_EVENTS];\n }\n patchEvent(global, api);\n eventTargetPatch(global, api);\n // patch XMLHttpRequestEventTarget's addEventListener/removeEventListener\n var XMLHttpRequestEventTarget = global['XMLHttpRequestEventTarget'];\n if (XMLHttpRequestEventTarget && XMLHttpRequestEventTarget.prototype) {\n api.patchEventTarget(global, [XMLHttpRequestEventTarget.prototype]);\n }\n patchClass('MutationObserver');\n patchClass('WebKitMutationObserver');\n patchClass('IntersectionObserver');\n patchClass('FileReader');\n});\nZone.__load_patch('on_property', function (global, Zone, api) {\n propertyDescriptorPatch(api, global);\n propertyPatch();\n registerElementPatch(global);\n});\nZone.__load_patch('canvas', function (global) {\n var HTMLCanvasElement = global['HTMLCanvasElement'];\n if (typeof HTMLCanvasElement !== 'undefined' && HTMLCanvasElement.prototype &&\n HTMLCanvasElement.prototype.toBlob) {\n patchMacroTask(HTMLCanvasElement.prototype, 'toBlob', function (self, args) {\n return { name: 'HTMLCanvasElement.toBlob', target: self, cbIdx: 0, args: args };\n });\n }\n});\nZone.__load_patch('XHR', function (global, Zone) {\n // Treat XMLHttpRequest as a macrotask.\n patchXHR(global);\n var XHR_TASK = zoneSymbol('xhrTask');\n var XHR_SYNC = zoneSymbol('xhrSync');\n var XHR_LISTENER = zoneSymbol('xhrListener');\n var XHR_SCHEDULED = zoneSymbol('xhrScheduled');\n var XHR_URL = zoneSymbol('xhrURL');\n function patchXHR(window) {\n var XMLHttpRequestPrototype = XMLHttpRequest.prototype;\n function findPendingTask(target) {\n return target[XHR_TASK];\n }\n var oriAddListener = XMLHttpRequestPrototype[ZONE_SYMBOL_ADD_EVENT_LISTENER];\n var oriRemoveListener = XMLHttpRequestPrototype[ZONE_SYMBOL_REMOVE_EVENT_LISTENER];\n if (!oriAddListener) {\n var XMLHttpRequestEventTarget = window['XMLHttpRequestEventTarget'];\n if (XMLHttpRequestEventTarget) {\n var XMLHttpRequestEventTargetPrototype = XMLHttpRequestEventTarget.prototype;\n oriAddListener = XMLHttpRequestEventTargetPrototype[ZONE_SYMBOL_ADD_EVENT_LISTENER];\n oriRemoveListener = XMLHttpRequestEventTargetPrototype[ZONE_SYMBOL_REMOVE_EVENT_LISTENER];\n }\n }\n var READY_STATE_CHANGE = 'readystatechange';\n var SCHEDULED = 'scheduled';\n function scheduleTask(task) {\n XMLHttpRequest[XHR_SCHEDULED] = false;\n var data = task.data;\n var target = data.target;\n // remove existing event listener\n var listener = target[XHR_LISTENER];\n if (!oriAddListener) {\n oriAddListener = target[ZONE_SYMBOL_ADD_EVENT_LISTENER];\n oriRemoveListener = target[ZONE_SYMBOL_REMOVE_EVENT_LISTENER];\n }\n if (listener) {\n oriRemoveListener.call(target, READY_STATE_CHANGE, listener);\n }\n var newListener = target[XHR_LISTENER] = function () {\n if (target.readyState === target.DONE) {\n // sometimes on some browsers XMLHttpRequest will fire onreadystatechange with\n // readyState=4 multiple times, so we need to check task state here\n if (!data.aborted && XMLHttpRequest[XHR_SCHEDULED] && task.state === SCHEDULED) {\n task.invoke();\n }\n }\n };\n oriAddListener.call(target, READY_STATE_CHANGE, newListener);\n var storedTask = target[XHR_TASK];\n if (!storedTask) {\n target[XHR_TASK] = task;\n }\n sendNative.apply(target, data.args);\n XMLHttpRequest[XHR_SCHEDULED] = true;\n return task;\n }\n function placeholderCallback() { }\n function clearTask(task) {\n var data = task.data;\n // Note - ideally, we would call data.target.removeEventListener here, but it's too late\n // to prevent it from firing. So instead, we store info for the event listener.\n data.aborted = true;\n return abortNative.apply(data.target, data.args);\n }\n var openNative = patchMethod(XMLHttpRequestPrototype, 'open', function () { return function (self, args) {\n self[XHR_SYNC] = args[2] == false;\n self[XHR_URL] = args[1];\n return openNative.apply(self, args);\n }; });\n var XMLHTTPREQUEST_SOURCE = 'XMLHttpRequest.send';\n var sendNative = patchMethod(XMLHttpRequestPrototype, 'send', function () { return function (self, args) {\n if (self[XHR_SYNC]) {\n // if the XHR is sync there is no task to schedule, just execute the code.\n return sendNative.apply(self, args);\n }\n else {\n var options = {\n target: self,\n url: self[XHR_URL],\n isPeriodic: false,\n delay: null,\n args: args,\n aborted: false\n };\n return scheduleMacroTaskWithCurrentZone(XMLHTTPREQUEST_SOURCE, placeholderCallback, options, scheduleTask, clearTask);\n }\n }; });\n var abortNative = patchMethod(XMLHttpRequestPrototype, 'abort', function () { return function (self) {\n var task = findPendingTask(self);\n if (task && typeof task.type == 'string') {\n // If the XHR has already completed, do nothing.\n // If the XHR has already been aborted, do nothing.\n // Fix #569, call abort multiple times before done will cause\n // macroTask task count be negative number\n if (task.cancelFn == null || (task.data && task.data.aborted)) {\n return;\n }\n task.zone.cancelTask(task);\n }\n // Otherwise, we are trying to abort an XHR which has not yet been sent, so there is no\n // task\n // to cancel. Do nothing.\n }; });\n }\n});\nZone.__load_patch('geolocation', function (global) {\n /// GEO_LOCATION\n if (global['navigator'] && global['navigator'].geolocation) {\n patchPrototype(global['navigator'].geolocation, ['getCurrentPosition', 'watchPosition']);\n }\n});\nZone.__load_patch('PromiseRejectionEvent', function (global, Zone) {\n // handle unhandled promise rejection\n function findPromiseRejectionHandler(evtName) {\n return function (e) {\n var eventTasks = findEventTasks(global, evtName);\n eventTasks.forEach(function (eventTask) {\n // windows has added unhandledrejection event listener\n // trigger the event listener\n var PromiseRejectionEvent = global['PromiseRejectionEvent'];\n if (PromiseRejectionEvent) {\n var evt = new PromiseRejectionEvent(evtName, { promise: e.promise, reason: e.rejection });\n eventTask.invoke(evt);\n }\n });\n };\n }\n if (global['PromiseRejectionEvent']) {\n Zone[zoneSymbol('unhandledPromiseRejectionHandler')] =\n findPromiseRejectionHandler('unhandledrejection');\n Zone[zoneSymbol('rejectionHandledHandler')] =\n findPromiseRejectionHandler('rejectionhandled');\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\n})));\n","/**\r\n * This file includes polyfills needed by Angular and is loaded before the app.\r\n * You can add your own extra polyfills to this file.\r\n *\r\n * This file is divided into 2 sections:\r\n * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.\r\n * 2. Application imports. Files imported after ZoneJS that should be loaded before your main\r\n * file.\r\n *\r\n * The current setup is for so-called \"evergreen\" browsers; the last versions of browsers that\r\n * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),\r\n * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.\r\n *\r\n * Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html\r\n */\r\n\r\n/***************************************************************************************************\r\n * BROWSER POLYFILLS\r\n */\r\n\r\n/** IE9, IE10 and IE11 requires all of the following polyfills. **/\r\n// import 'core-js/es6/symbol';\r\n// import 'core-js/es6/object';\r\n// import 'core-js/es6/function';\r\n// import 'core-js/es6/parse-int';\r\n// import 'core-js/es6/parse-float';\r\n// import 'core-js/es6/number';\r\n// import 'core-js/es6/math';\r\n// import 'core-js/es6/string';\r\n// import 'core-js/es6/date';\r\n// import 'core-js/es6/array';\r\n// import 'core-js/es6/regexp';\r\n// import 'core-js/es6/map';\r\n// import 'core-js/es6/weak-map';\r\n// import 'core-js/es6/set';\r\n\r\n/** IE10 and IE11 requires the following for NgClass support on SVG elements */\r\n// import 'classlist.js'; // Run `npm install --save classlist.js`.\r\n\r\n/** IE10 and IE11 requires the following for the Reflect API. */\r\n// import 'core-js/es6/reflect';\r\n\r\n\r\n/** Evergreen browsers require these. **/\r\n// Used for reflect-metadata in JIT. If you use AOT (and only Angular decorators), you can remove.\r\nimport 'core-js/es7/reflect';\r\n\r\n\r\n/**\r\n * Web Animations `@angular/platform-browser/animations`\r\n * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari.\r\n * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0).\r\n **/\r\n// import 'web-animations-js'; // Run `npm install --save web-animations-js`.\r\n\r\n/**\r\n * By default, zone.js will patch all possible macroTask and DomEvents\r\n * user can disable parts of macroTask/DomEvents patch by setting following flags\r\n */\r\n\r\n // (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame\r\n // (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick\r\n // (window as any).__zone_symbol__BLACK_LISTED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames\r\n\r\n /*\r\n * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js\r\n * with the following flag, it will bypass `zone.js` patch for IE/Edge\r\n */\r\n// (window as any).__Zone_enable_cross_context_check = true;\r\n\r\n/***************************************************************************************************\r\n * Zone JS is required by default for Angular itself.\r\n */\r\nimport 'zone.js/dist/zone'; // Included with Angular CLI.\r\n\r\n\r\n\r\n/***************************************************************************************************\r\n * APPLICATION IMPORTS\r\n */\r\n"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/ng-select2/runtime.js b/dist/ng-select2/runtime.js index d2c03a5..fd2c03c 100644 --- a/dist/ng-select2/runtime.js +++ b/dist/ng-select2/runtime.js @@ -4,6 +4,7 @@ /******/ var chunkIds = data[0]; /******/ var moreModules = data[1]; /******/ var executeModules = data[2]; +/******/ /******/ // add "moreModules" to the modules object, /******/ // then flag all "chunkIds" as loaded and fire callback /******/ var moduleId, chunkId, i = 0, resolves = []; @@ -20,6 +21,7 @@ /******/ } /******/ } /******/ if(parentJsonpFunction) parentJsonpFunction(data); +/******/ /******/ while(resolves.length) { /******/ resolves.shift()(); /******/ } @@ -93,19 +95,34 @@ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); /******/ } /******/ }; /******/ /******/ // define __esModule on exports /******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? diff --git a/dist/ng-select2/runtime.js.map b/dist/ng-select2/runtime.js.map index 0812ea9..c9491c1 100644 --- a/dist/ng-select2/runtime.js.map +++ b/dist/ng-select2/runtime.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap"],"names":[],"mappings":";AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAQ,oBAAoB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yBAAiB,4BAA4B;AAC7C;AACA;AACA,0BAAkB,2BAA2B;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;;AAEA;AACA;AACA,yDAAiD,cAAc;AAC/D;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;AAEA;AACA;AACA;AACA;AACA,wBAAgB,uBAAuB;AACvC;;;AAGA;AACA","file":"runtime.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"runtime\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// run deferred modules from other chunks\n \tcheckDeferredModules();\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap"],"names":[],"mappings":";AAAA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAQ,oBAAoB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yBAAiB,4BAA4B;AAC7C;AACA;AACA,0BAAkB,2BAA2B;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,kDAA0C,gCAAgC;AAC1E;AACA;;AAEA;AACA;AACA;AACA,gEAAwD,kBAAkB;AAC1E;AACA,yDAAiD,cAAc;AAC/D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAyC,iCAAiC;AAC1E,wHAAgH,mBAAmB,EAAE;AACrI;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;AAEA;AACA;AACA;AACA;AACA,wBAAgB,uBAAuB;AACvC;;;AAGA;AACA","file":"runtime.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"runtime\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// run deferred modules from other chunks\n \tcheckDeferredModules();\n"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/ng-select2/styles.js b/dist/ng-select2/styles.js index 9f0a7ab..56de796 100644 --- a/dist/ng-select2/styles.js +++ b/dist/ng-select2/styles.js @@ -1,13 +1,13 @@ (window["webpackJsonp"] = window["webpackJsonp"] || []).push([["styles"],{ -/***/ "./node_modules/raw-loader/index.js!./node_modules/postcss-loader/lib/index.js??embedded!./src/styles.css": -/*!**********************************************************************************************!*\ - !*** ./node_modules/raw-loader!./node_modules/postcss-loader/lib??embedded!./src/styles.css ***! - \**********************************************************************************************/ +/***/ "./node_modules/@angular-devkit/build-angular/src/angular-cli-files/plugins/raw-css-loader.js!./node_modules/postcss-loader/src/index.js?!./src/styles.css": +/*!*****************************************************************************************************************************************************************!*\ + !*** ./node_modules/@angular-devkit/build-angular/src/angular-cli-files/plugins/raw-css-loader.js!./node_modules/postcss-loader/src??embedded!./src/styles.css ***! + \*****************************************************************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { -module.exports = "/* You can add global styles to this file, and also import other style files */\r\n" +module.exports = [[module.i, "/* You can add global styles to this file, and also import other style files */\r\n\r\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9zdHlsZXMuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtFQUErRSIsImZpbGUiOiJzcmMvc3R5bGVzLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIFlvdSBjYW4gYWRkIGdsb2JhbCBzdHlsZXMgdG8gdGhpcyBmaWxlLCBhbmQgYWxzbyBpbXBvcnQgb3RoZXIgc3R5bGUgZmlsZXMgKi9cclxuIl19 */", '', '']] /***/ }), @@ -43,14 +43,17 @@ var isOldIE = memoize(function () { return window && document && document.all && !window.atob; }); -var getTarget = function (target) { +var getTarget = function (target, parent) { + if (parent){ + return parent.querySelector(target); + } return document.querySelector(target); }; var getElement = (function (fn) { var memo = {}; - return function(target) { + return function(target, parent) { // If passing function in options, then use it for resolve "head" element. // Useful for Shadow Root style i.e // { @@ -60,7 +63,7 @@ var getElement = (function (fn) { return target(); } if (typeof memo[target] === "undefined") { - var styleTarget = getTarget.call(this, target); + var styleTarget = getTarget.call(this, target, parent); // Special case to return head of iframe instead of iframe itself if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) { try { @@ -201,7 +204,7 @@ function insertStyleElement (options, style) { } else if (options.insertAt === "bottom") { target.appendChild(style); } else if (typeof options.insertAt === "object" && options.insertAt.before) { - var nextSibling = getElement(options.insertInto + " " + options.insertAt.before); + var nextSibling = getElement(options.insertAt.before, target); target.insertBefore(style, nextSibling); } else { throw new Error("[Style Loader]\n\n Invalid value for parameter 'insertAt' ('options.insertAt') found.\n Must be 'top', 'bottom', or Object.\n (https://github.com/webpack-contrib/style-loader#insertat)\n"); @@ -225,6 +228,13 @@ function createStyleElement (options) { options.attrs.type = "text/css"; } + if(options.attrs.nonce === undefined) { + var nonce = getNonce(); + if (nonce) { + options.attrs.nonce = nonce; + } + } + addAttrs(style, options.attrs); insertStyleElement(options, style); @@ -251,12 +261,20 @@ function addAttrs (el, attrs) { }); } +function getNonce() { + if (false) {} + + return __webpack_require__.nc; +} + function addStyle (obj, options) { var style, update, remove, result; // If a transform function was defined, run it on the css if (options.transform && obj.css) { - result = options.transform(obj.css); + result = typeof options.transform === 'function' + ? options.transform(obj.css) + : options.transform.default(obj.css); if (result) { // If transform returns a value, use that instead of the original css. @@ -510,7 +528,7 @@ module.exports = function (css) { /***/ (function(module, exports, __webpack_require__) { -var content = __webpack_require__(/*! !../node_modules/raw-loader!../node_modules/postcss-loader/lib??embedded!./styles.css */ "./node_modules/raw-loader/index.js!./node_modules/postcss-loader/lib/index.js??embedded!./src/styles.css"); +var content = __webpack_require__(/*! !../node_modules/@angular-devkit/build-angular/src/angular-cli-files/plugins/raw-css-loader.js!../node_modules/postcss-loader/src??embedded!./styles.css */ "./node_modules/@angular-devkit/build-angular/src/angular-cli-files/plugins/raw-css-loader.js!./node_modules/postcss-loader/src/index.js?!./src/styles.css"); if(typeof content === 'string') content = [[module.i, content, '']]; @@ -539,7 +557,7 @@ if(false) {} /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -module.exports = __webpack_require__(/*! C:\Data\sources-svn\pitch\ng-select2\src\styles.css */"./src/styles.css"); +module.exports = __webpack_require__(/*! c:\Data\sources-svn\pitch\ng-select2\src\styles.css */"./src/styles.css"); /***/ }) diff --git a/dist/ng-select2/styles.js.map b/dist/ng-select2/styles.js.map index 398d86f..43bbf3c 100644 --- a/dist/ng-select2/styles.js.map +++ b/dist/ng-select2/styles.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///./src/styles.css","webpack:///./node_modules/style-loader/lib/addStyles.js","webpack:///./node_modules/style-loader/lib/urls.js","webpack:///./src/styles.css?811a"],"names":[],"mappings":";;;;;;;;;AAAA,sG;;;;;;;;;;;ACAA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA,iBAAiB,mBAAmB;AACpC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iBAAiB,sBAAsB;AACvC;;AAEA;AACA,mBAAmB,2BAA2B;;AAE9C;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,mBAAmB;AACnC;AACA;;AAEA;AACA;;AAEA,iBAAiB,2BAA2B;AAC5C;AACA;;AAEA,QAAQ,uBAAuB;AAC/B;AACA;AACA,GAAG;AACH;;AAEA,iBAAiB,uBAAuB;AACxC;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gBAAgB,iBAAiB;AACjC;AACA;AACA;AACA;AACA;AACA,cAAc;;AAEd,kDAAkD,sBAAsB;AACxE;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD;AACvD;;AAEA,6BAA6B,mBAAmB;;AAEhD;;AAEA;;AAEA;AACA;;;;;;;;;;;;;AC1XA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,WAAW,EAAE;AACrD,wCAAwC,WAAW,EAAE;;AAErD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,sCAAsC;AACtC,GAAG;AACH;AACA,8DAA8D;AAC9D;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;;;;;;;;;;;;ACvFA;;AAEA;;AAEA;AACA;;;;AAIA,eAAe;;AAEf;AACA;;AAEA;;AAEA;;AAEA,Y","file":"styles.js","sourcesContent":["module.exports = \"/* You can add global styles to this file, and also import other style files */\\r\\n\"","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\nvar stylesInDom = {};\n\nvar\tmemoize = function (fn) {\n\tvar memo;\n\n\treturn function () {\n\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\n\t\treturn memo;\n\t};\n};\n\nvar isOldIE = memoize(function () {\n\t// Test for IE <= 9 as proposed by Browserhacks\n\t// @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n\t// Tests for existence of standard globals is to allow style-loader\n\t// to operate correctly into non-standard environments\n\t// @see https://github.com/webpack-contrib/style-loader/issues/177\n\treturn window && document && document.all && !window.atob;\n});\n\nvar getTarget = function (target) {\n return document.querySelector(target);\n};\n\nvar getElement = (function (fn) {\n\tvar memo = {};\n\n\treturn function(target) {\n // If passing function in options, then use it for resolve \"head\" element.\n // Useful for Shadow Root style i.e\n // {\n // insertInto: function () { return document.querySelector(\"#foo\").shadowRoot }\n // }\n if (typeof target === 'function') {\n return target();\n }\n if (typeof memo[target] === \"undefined\") {\n\t\t\tvar styleTarget = getTarget.call(this, target);\n\t\t\t// Special case to return head of iframe instead of iframe itself\n\t\t\tif (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n\t\t\t\ttry {\n\t\t\t\t\t// This will throw an exception if access to iframe is blocked\n\t\t\t\t\t// due to cross-origin restrictions\n\t\t\t\t\tstyleTarget = styleTarget.contentDocument.head;\n\t\t\t\t} catch(e) {\n\t\t\t\t\tstyleTarget = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\tmemo[target] = styleTarget;\n\t\t}\n\t\treturn memo[target]\n\t};\n})();\n\nvar singleton = null;\nvar\tsingletonCounter = 0;\nvar\tstylesInsertedAtTop = [];\n\nvar\tfixUrls = require(\"./urls\");\n\nmodule.exports = function(list, options) {\n\tif (typeof DEBUG !== \"undefined\" && DEBUG) {\n\t\tif (typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n\t}\n\n\toptions = options || {};\n\n\toptions.attrs = typeof options.attrs === \"object\" ? options.attrs : {};\n\n\t// Force single-tag solution on IE6-9, which has a hard limit on the # of + + + could become: + + +
+ +
+ + Note the use of @polyfill in the comment above a ShadowDOM specific style + declaration. This is a directive to the styling shim to use the selector + in comments in lieu of the next selector when running under polyfill. +*/ +var ShadowCss = /** @class */ (function () { + function ShadowCss() { + this.strictStyling = true; + } + /* + * Shim some cssText with the given selector. Returns cssText that can + * be included in the document via WebComponents.ShadowCSS.addCssToDocument(css). + * + * When strictStyling is true: + * - selector is the attribute added to all elements inside the host, + * - hostSelector is the attribute added to the host itself. + */ + ShadowCss.prototype.shimCssText = function (cssText, selector, hostSelector) { + if (hostSelector === void 0) { hostSelector = ''; } + var commentsWithHash = extractCommentsWithHash(cssText); + cssText = stripComments(cssText); + cssText = this._insertDirectives(cssText); + var scopedCssText = this._scopeCssText(cssText, selector, hostSelector); + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])([scopedCssText], commentsWithHash).join('\n'); }; - Xliff.prototype.load = function (content, url) { - // xliff to xml nodes - var xliffParser = new XliffParser(); - var _a = xliffParser.parse(content, url), locale = _a.locale, msgIdToHtml = _a.msgIdToHtml, errors = _a.errors; - // xml nodes to i18n nodes - var i18nNodesByMsgId = {}; - var converter = new XmlToI18n(); - Object.keys(msgIdToHtml).forEach(function (msgId) { - var _a = converter.convert(msgIdToHtml[msgId], url), i18nNodes = _a.i18nNodes, e = _a.errors; - errors.push.apply(errors, Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])(e)); - i18nNodesByMsgId[msgId] = i18nNodes; + ShadowCss.prototype._insertDirectives = function (cssText) { + cssText = this._insertPolyfillDirectivesInCssText(cssText); + return this._insertPolyfillRulesInCssText(cssText); + }; + /* + * Process styles to convert native ShadowDOM rules that will trip + * up the css parser; we rely on decorating the stylesheet with inert rules. + * + * For example, we convert this rule: + * + * polyfill-next-selector { content: ':host menu-item'; } + * ::content menu-item { + * + * to this: + * + * scopeName menu-item { + * + **/ + ShadowCss.prototype._insertPolyfillDirectivesInCssText = function (cssText) { + // Difference with webcomponents.js: does not handle comments + return cssText.replace(_cssContentNextSelectorRe, function () { + var m = []; + for (var _i = 0; _i < arguments.length; _i++) { + m[_i] = arguments[_i]; + } + return m[2] + '{'; }); - if (errors.length) { - throw new Error("xliff parse errors:\n" + errors.join('\n')); + }; + /* + * Process styles to add rules which will only apply under the polyfill + * + * For example, we convert this rule: + * + * polyfill-rule { + * content: ':host menu-item'; + * ... + * } + * + * to this: + * + * scopeName menu-item {...} + * + **/ + ShadowCss.prototype._insertPolyfillRulesInCssText = function (cssText) { + // Difference with webcomponents.js: does not handle comments + return cssText.replace(_cssContentRuleRe, function () { + var m = []; + for (var _i = 0; _i < arguments.length; _i++) { + m[_i] = arguments[_i]; + } + var rule = m[0].replace(m[1], '').replace(m[2], ''); + return m[4] + rule; + }); + }; + /* Ensure styles are scoped. Pseudo-scoping takes a rule like: + * + * .foo {... } + * + * and converts this to + * + * scopeName .foo { ... } + */ + ShadowCss.prototype._scopeCssText = function (cssText, scopeSelector, hostSelector) { + var unscopedRules = this._extractUnscopedRulesFromCssText(cssText); + // replace :host and :host-context -shadowcsshost and -shadowcsshost respectively + cssText = this._insertPolyfillHostInCssText(cssText); + cssText = this._convertColonHost(cssText); + cssText = this._convertColonHostContext(cssText); + cssText = this._convertShadowDOMSelectors(cssText); + if (scopeSelector) { + cssText = this._scopeSelectors(cssText, scopeSelector, hostSelector); } - return { locale: locale, i18nNodesByMsgId: i18nNodesByMsgId }; + cssText = cssText + '\n' + unscopedRules; + return cssText.trim(); }; - Xliff.prototype.digest = function (message) { return digest(message); }; - return Xliff; -}(Serializer)); -var _WriteVisitor = /** @class */ (function () { - function _WriteVisitor() { - } - _WriteVisitor.prototype.visitText = function (text, context) { return [new Text$2(text.value)]; }; - _WriteVisitor.prototype.visitContainer = function (container, context) { - var _this = this; - var nodes = []; - container.children.forEach(function (node) { return nodes.push.apply(nodes, Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])(node.visit(_this))); }); - return nodes; + /* + * Process styles to add rules which will only apply under the polyfill + * and do not process via CSSOM. (CSSOM is destructive to rules on rare + * occasions, e.g. -webkit-calc on Safari.) + * For example, we convert this rule: + * + * @polyfill-unscoped-rule { + * content: 'menu-item'; + * ... } + * + * to this: + * + * menu-item {...} + * + **/ + ShadowCss.prototype._extractUnscopedRulesFromCssText = function (cssText) { + // Difference with webcomponents.js: does not handle comments + var r = ''; + var m; + _cssContentUnscopedRuleRe.lastIndex = 0; + while ((m = _cssContentUnscopedRuleRe.exec(cssText)) !== null) { + var rule = m[0].replace(m[2], '').replace(m[1], m[4]); + r += rule + '\n\n'; + } + return r; }; - _WriteVisitor.prototype.visitIcu = function (icu, context) { - var _this = this; - var nodes = [new Text$2("{" + icu.expressionPlaceholder + ", " + icu.type + ", ")]; - Object.keys(icu.cases).forEach(function (c) { - nodes.push.apply(nodes, Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])([new Text$2(c + " {")], icu.cases[c].visit(_this), [new Text$2("} ")])); + /* + * convert a rule like :host(.foo) > .bar { } + * + * to + * + * .foo > .bar + */ + ShadowCss.prototype._convertColonHost = function (cssText) { + return this._convertColonRule(cssText, _cssColonHostRe, this._colonHostPartReplacer); + }; + /* + * convert a rule like :host-context(.foo) > .bar { } + * + * to + * + * .foo > .bar, .foo scopeName > .bar { } + * + * and + * + * :host-context(.foo:host) .bar { ... } + * + * to + * + * .foo .bar { ... } + */ + ShadowCss.prototype._convertColonHostContext = function (cssText) { + return this._convertColonRule(cssText, _cssColonHostContextRe, this._colonHostContextPartReplacer); + }; + ShadowCss.prototype._convertColonRule = function (cssText, regExp, partReplacer) { + // m[1] = :host(-context), m[2] = contents of (), m[3] rest of rule + return cssText.replace(regExp, function () { + var m = []; + for (var _i = 0; _i < arguments.length; _i++) { + m[_i] = arguments[_i]; + } + if (m[2]) { + var parts = m[2].split(','); + var r = []; + for (var i = 0; i < parts.length; i++) { + var p = parts[i].trim(); + if (!p) + break; + r.push(partReplacer(_polyfillHostNoCombinator, p, m[3])); + } + return r.join(','); + } + else { + return _polyfillHostNoCombinator + m[3]; + } }); - nodes.push(new Text$2("}")); - return nodes; }; - _WriteVisitor.prototype.visitTagPlaceholder = function (ph, context) { - var ctype = getCtypeForTag(ph.tag); - if (ph.isVoid) { - // void tags have no children nor closing tags - return [new Tag(_PLACEHOLDER_TAG, { id: ph.startName, ctype: ctype, 'equiv-text': "<" + ph.tag + "/>" })]; + ShadowCss.prototype._colonHostContextPartReplacer = function (host, part, suffix) { + if (part.indexOf(_polyfillHost) > -1) { + return this._colonHostPartReplacer(host, part, suffix); + } + else { + return host + part + suffix + ', ' + part + ' ' + host + suffix; } - var startTagPh = new Tag(_PLACEHOLDER_TAG, { id: ph.startName, ctype: ctype, 'equiv-text': "<" + ph.tag + ">" }); - var closeTagPh = new Tag(_PLACEHOLDER_TAG, { id: ph.closeName, ctype: ctype, 'equiv-text': "" }); - return Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])([startTagPh], this.serialize(ph.children), [closeTagPh]); }; - _WriteVisitor.prototype.visitPlaceholder = function (ph, context) { - return [new Tag(_PLACEHOLDER_TAG, { id: ph.name, 'equiv-text': "{{" + ph.value + "}}" })]; + ShadowCss.prototype._colonHostPartReplacer = function (host, part, suffix) { + return host + part.replace(_polyfillHost, '') + suffix; }; - _WriteVisitor.prototype.visitIcuPlaceholder = function (ph, context) { - var equivText = "{" + ph.value.expression + ", " + ph.value.type + ", " + Object.keys(ph.value.cases).map(function (value) { return value + ' {...}'; }).join(' ') + "}"; - return [new Tag(_PLACEHOLDER_TAG, { id: ph.name, 'equiv-text': equivText })]; + /* + * Convert combinators like ::shadow and pseudo-elements like ::content + * by replacing with space. + */ + ShadowCss.prototype._convertShadowDOMSelectors = function (cssText) { + return _shadowDOMSelectorsRe.reduce(function (result, pattern) { return result.replace(pattern, ' '); }, cssText); }; - _WriteVisitor.prototype.serialize = function (nodes) { + // change a selector like 'div' to 'name div' + ShadowCss.prototype._scopeSelectors = function (cssText, scopeSelector, hostSelector) { var _this = this; - return [].concat.apply([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])(nodes.map(function (node) { return node.visit(_this); }))); - }; - return _WriteVisitor; -}()); -// TODO(vicb): add error management (structure) -// Extract messages as xml nodes from the xliff file -var XliffParser = /** @class */ (function () { - function XliffParser() { - this._locale = null; - } - XliffParser.prototype.parse = function (xliff, url) { - this._unitMlString = null; - this._msgIdToHtml = {}; - var xml = new XmlParser().parse(xliff, url, false); - this._errors = xml.errors; - visitAll(this, xml.rootNodes, null); - return { - msgIdToHtml: this._msgIdToHtml, - errors: this._errors, - locale: this._locale, - }; + return processRules(cssText, function (rule) { + var selector = rule.selector; + var content = rule.content; + if (rule.selector[0] != '@') { + selector = + _this._scopeSelector(rule.selector, scopeSelector, hostSelector, _this.strictStyling); + } + else if (rule.selector.startsWith('@media') || rule.selector.startsWith('@supports') || + rule.selector.startsWith('@page') || rule.selector.startsWith('@document')) { + content = _this._scopeSelectors(rule.content, scopeSelector, hostSelector); + } + return new CssRule(selector, content); + }); }; - XliffParser.prototype.visitElement = function (element, context) { - switch (element.name) { - case _UNIT_TAG: - this._unitMlString = null; - var idAttr = element.attrs.find(function (attr) { return attr.name === 'id'; }); - if (!idAttr) { - this._addError(element, "<" + _UNIT_TAG + "> misses the \"id\" attribute"); + ShadowCss.prototype._scopeSelector = function (selector, scopeSelector, hostSelector, strict) { + var _this = this; + return selector.split(',') + .map(function (part) { return part.trim().split(_shadowDeepSelectors); }) + .map(function (deepParts) { + var _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(deepParts), shallowPart = _a[0], otherParts = _a.slice(1); + var applyScope = function (shallowPart) { + if (_this._selectorNeedsScoping(shallowPart, scopeSelector)) { + return strict ? + _this._applyStrictSelectorScope(shallowPart, scopeSelector, hostSelector) : + _this._applySelectorScope(shallowPart, scopeSelector, hostSelector); } else { - var id = idAttr.value; - if (this._msgIdToHtml.hasOwnProperty(id)) { - this._addError(element, "Duplicated translations for msg " + id); - } - else { - visitAll(this, element.children, null); - if (typeof this._unitMlString === 'string') { - this._msgIdToHtml[id] = this._unitMlString; - } - else { - this._addError(element, "Message " + id + " misses a translation"); - } - } - } - break; - // ignore those tags - case _SOURCE_TAG: - case _SEGMENT_SOURCE_TAG: - break; - case _TARGET_TAG: - var innerTextStart = element.startSourceSpan.end.offset; - var innerTextEnd = element.endSourceSpan.start.offset; - var content = element.startSourceSpan.start.file.content; - var innerText = content.slice(innerTextStart, innerTextEnd); - this._unitMlString = innerText; - break; - case _FILE_TAG: - var localeAttr = element.attrs.find(function (attr) { return attr.name === 'target-language'; }); - if (localeAttr) { - this._locale = localeAttr.value; + return shallowPart; } - visitAll(this, element.children, null); - break; - default: - // TODO(vicb): assert file structure, xliff version - // For now only recurse on unhandled nodes - visitAll(this, element.children, null); - } + }; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])([applyScope(shallowPart)], otherParts).join(' '); + }) + .join(', '); }; - XliffParser.prototype.visitAttribute = function (attribute, context) { }; - XliffParser.prototype.visitText = function (text, context) { }; - XliffParser.prototype.visitComment = function (comment, context) { }; - XliffParser.prototype.visitExpansion = function (expansion, context) { }; - XliffParser.prototype.visitExpansionCase = function (expansionCase, context) { }; - XliffParser.prototype._addError = function (node, message) { - this._errors.push(new I18nError(node.sourceSpan, message)); + ShadowCss.prototype._selectorNeedsScoping = function (selector, scopeSelector) { + var re = this._makeScopeMatcher(scopeSelector); + return !re.test(selector); }; - return XliffParser; -}()); -// Convert ml nodes (xliff syntax) to i18n nodes -var XmlToI18n = /** @class */ (function () { - function XmlToI18n() { - } - XmlToI18n.prototype.convert = function (message, url) { - var xmlIcu = new XmlParser().parse(message, url, true); - this._errors = xmlIcu.errors; - var i18nNodes = this._errors.length > 0 || xmlIcu.rootNodes.length == 0 ? - [] : [].concat.apply([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])(visitAll(this, xmlIcu.rootNodes))); - return { - i18nNodes: i18nNodes, - errors: this._errors, - }; + ShadowCss.prototype._makeScopeMatcher = function (scopeSelector) { + var lre = /\[/g; + var rre = /\]/g; + scopeSelector = scopeSelector.replace(lre, '\\[').replace(rre, '\\]'); + return new RegExp('^(' + scopeSelector + ')' + _selectorReSuffix, 'm'); }; - XmlToI18n.prototype.visitText = function (text, context) { return new Text$1(text.value, text.sourceSpan); }; - XmlToI18n.prototype.visitElement = function (el, context) { - if (el.name === _PLACEHOLDER_TAG) { - var nameAttr = el.attrs.find(function (attr) { return attr.name === 'id'; }); - if (nameAttr) { - return new Placeholder('', nameAttr.value, el.sourceSpan); - } - this._addError(el, "<" + _PLACEHOLDER_TAG + "> misses the \"id\" attribute"); - return null; - } - if (el.name === _MARKER_TAG) { - return [].concat.apply([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])(visitAll(this, el.children))); + ShadowCss.prototype._applySelectorScope = function (selector, scopeSelector, hostSelector) { + // Difference from webcomponents.js: scopeSelector could not be an array + return this._applySimpleSelectorScope(selector, scopeSelector, hostSelector); + }; + // scope via name and [is=name] + ShadowCss.prototype._applySimpleSelectorScope = function (selector, scopeSelector, hostSelector) { + // In Android browser, the lastIndex is not reset when the regex is used in String.replace() + _polyfillHostRe.lastIndex = 0; + if (_polyfillHostRe.test(selector)) { + var replaceBy_1 = this.strictStyling ? "[" + hostSelector + "]" : scopeSelector; + return selector + .replace(_polyfillHostNoCombinatorRe, function (hnc, selector) { + return selector.replace(/([^:]*)(:*)(.*)/, function (_, before, colon, after) { + return before + replaceBy_1 + colon + after; + }); + }) + .replace(_polyfillHostRe, replaceBy_1 + ' '); } - this._addError(el, "Unexpected tag"); - return null; + return scopeSelector + ' ' + selector; }; - XmlToI18n.prototype.visitExpansion = function (icu, context) { - var caseMap = {}; - visitAll(this, icu.cases).forEach(function (c) { - caseMap[c.value] = new Container(c.nodes, icu.sourceSpan); + // return a selector with [name] suffix on each simple selector + // e.g. .foo.bar > .zot becomes .foo[name].bar[name] > .zot[name] /** @internal */ + ShadowCss.prototype._applyStrictSelectorScope = function (selector, scopeSelector, hostSelector) { + var _this = this; + var isRe = /\[is=([^\]]*)\]/g; + scopeSelector = scopeSelector.replace(isRe, function (_) { + var parts = []; + for (var _i = 1; _i < arguments.length; _i++) { + parts[_i - 1] = arguments[_i]; + } + return parts[0]; }); - return new Icu(icu.switchValue, icu.type, caseMap, icu.sourceSpan); - }; - XmlToI18n.prototype.visitExpansionCase = function (icuCase, context) { - return { - value: icuCase.value, - nodes: visitAll(this, icuCase.expression), + var attrName = '[' + scopeSelector + ']'; + var _scopeSelectorPart = function (p) { + var scopedP = p.trim(); + if (!scopedP) { + return ''; + } + if (p.indexOf(_polyfillHostNoCombinator) > -1) { + scopedP = _this._applySimpleSelectorScope(p, scopeSelector, hostSelector); + } + else { + // remove :host since it should be unnecessary + var t = p.replace(_polyfillHostRe, ''); + if (t.length > 0) { + var matches = t.match(/([^:]*)(:*)(.*)/); + if (matches) { + scopedP = matches[1] + attrName + matches[2] + matches[3]; + } + } + } + return scopedP; }; + var safeContent = new SafeSelector(selector); + selector = safeContent.content(); + var scopedSelector = ''; + var startIndex = 0; + var res; + var sep = /( |>|\+|~(?!=))\s*/g; + // If a selector appears before :host it should not be shimmed as it + // matches on ancestor elements and not on elements in the host's shadow + // `:host-context(div)` is transformed to + // `-shadowcsshost-no-combinatordiv, div -shadowcsshost-no-combinator` + // the `div` is not part of the component in the 2nd selectors and should not be scoped. + // Historically `component-tag:host` was matching the component so we also want to preserve + // this behavior to avoid breaking legacy apps (it should not match). + // The behavior should be: + // - `tag:host` -> `tag[h]` (this is to avoid breaking legacy apps, should not match anything) + // - `tag :host` -> `tag [h]` (`tag` is not scoped because it's considered part of a + // `:host-context(tag)`) + var hasHost = selector.indexOf(_polyfillHostNoCombinator) > -1; + // Only scope parts after the first `-shadowcsshost-no-combinator` when it is present + var shouldScope = !hasHost; + while ((res = sep.exec(selector)) !== null) { + var separator = res[1]; + var part_1 = selector.slice(startIndex, res.index).trim(); + shouldScope = shouldScope || part_1.indexOf(_polyfillHostNoCombinator) > -1; + var scopedPart = shouldScope ? _scopeSelectorPart(part_1) : part_1; + scopedSelector += scopedPart + " " + separator + " "; + startIndex = sep.lastIndex; + } + var part = selector.substring(startIndex); + shouldScope = shouldScope || part.indexOf(_polyfillHostNoCombinator) > -1; + scopedSelector += shouldScope ? _scopeSelectorPart(part) : part; + // replace the placeholders with their original values + return safeContent.restore(scopedSelector); }; - XmlToI18n.prototype.visitComment = function (comment, context) { }; - XmlToI18n.prototype.visitAttribute = function (attribute, context) { }; - XmlToI18n.prototype._addError = function (node, message) { - this._errors.push(new I18nError(node.sourceSpan, message)); - }; - return XmlToI18n; + ShadowCss.prototype._insertPolyfillHostInCssText = function (selector) { + return selector.replace(_colonHostContextRe, _polyfillHostContext) + .replace(_colonHostRe, _polyfillHost); + }; + return ShadowCss; }()); -function getCtypeForTag(tag) { - switch (tag.toLowerCase()) { - case 'br': - return 'lb'; - case 'img': - return 'image'; - default: - return "x-" + tag; +var SafeSelector = /** @class */ (function () { + function SafeSelector(selector) { + var _this = this; + this.placeholders = []; + this.index = 0; + // Replaces attribute selectors with placeholders. + // The WS in [attr="va lue"] would otherwise be interpreted as a selector separator. + selector = selector.replace(/(\[[^\]]*\])/g, function (_, keep) { + var replaceBy = "__ph-" + _this.index + "__"; + _this.placeholders.push(keep); + _this.index++; + return replaceBy; + }); + // Replaces the expression in `:nth-child(2n + 1)` with a placeholder. + // WS and "+" would otherwise be interpreted as selector separators. + this._content = selector.replace(/(:nth-[-\w]+)(\([^)]+\))/g, function (_, pseudo, exp) { + var replaceBy = "__ph-" + _this.index + "__"; + _this.placeholders.push(exp); + _this.index++; + return pseudo + replaceBy; + }); + } + SafeSelector.prototype.restore = function (content) { + var _this = this; + return content.replace(/__ph-(\d+)__/g, function (ph, index) { return _this.placeholders[+index]; }); + }; + SafeSelector.prototype.content = function () { return this._content; }; + return SafeSelector; +}()); +var _cssContentNextSelectorRe = /polyfill-next-selector[^}]*content:[\s]*?(['"])(.*?)\1[;\s]*}([^{]*?){/gim; +var _cssContentRuleRe = /(polyfill-rule)[^}]*(content:[\s]*(['"])(.*?)\3)[;\s]*[^}]*}/gim; +var _cssContentUnscopedRuleRe = /(polyfill-unscoped-rule)[^}]*(content:[\s]*(['"])(.*?)\3)[;\s]*[^}]*}/gim; +var _polyfillHost = '-shadowcsshost'; +// note: :host-context pre-processed to -shadowcsshostcontext. +var _polyfillHostContext = '-shadowcsscontext'; +var _parenSuffix = ')(?:\\((' + + '(?:\\([^)(]*\\)|[^)(]*)+?' + + ')\\))?([^,{]*)'; +var _cssColonHostRe = new RegExp('(' + _polyfillHost + _parenSuffix, 'gim'); +var _cssColonHostContextRe = new RegExp('(' + _polyfillHostContext + _parenSuffix, 'gim'); +var _polyfillHostNoCombinator = _polyfillHost + '-no-combinator'; +var _polyfillHostNoCombinatorRe = /-shadowcsshost-no-combinator([^\s]*)/; +var _shadowDOMSelectorsRe = [ + /::shadow/g, + /::content/g, + // Deprecated selectors + /\/shadow-deep\//g, + /\/shadow\//g, +]; +// The deep combinator is deprecated in the CSS spec +// Support for `>>>`, `deep`, `::ng-deep` is then also deprecated and will be removed in the future. +// see https://github.com/angular/angular/pull/17677 +var _shadowDeepSelectors = /(?:>>>)|(?:\/deep\/)|(?:::ng-deep)/g; +var _selectorReSuffix = '([>\\s~+\[.,{:][\\s\\S]*)?$'; +var _polyfillHostRe = /-shadowcsshost/gim; +var _colonHostRe = /:host/gim; +var _colonHostContextRe = /:host-context/gim; +var _commentRe = /\/\*\s*[\s\S]*?\*\//g; +function stripComments(input) { + return input.replace(_commentRe, ''); +} +var _commentWithHashRe = /\/\*\s*#\s*source(Mapping)?URL=[\s\S]+?\*\//g; +function extractCommentsWithHash(input) { + return input.match(_commentWithHashRe) || []; +} +var _ruleRe = /(\s*)([^;\{\}]+?)(\s*)((?:{%BLOCK%}?\s*;?)|(?:\s*;))/g; +var _curlyRe = /([{}])/g; +var OPEN_CURLY = '{'; +var CLOSE_CURLY = '}'; +var BLOCK_PLACEHOLDER = '%BLOCK%'; +var CssRule = /** @class */ (function () { + function CssRule(selector, content) { + this.selector = selector; + this.content = content; + } + return CssRule; +}()); +function processRules(input, ruleCallback) { + var inputWithEscapedBlocks = escapeBlocks(input); + var nextBlockIndex = 0; + return inputWithEscapedBlocks.escapedString.replace(_ruleRe, function () { + var m = []; + for (var _i = 0; _i < arguments.length; _i++) { + m[_i] = arguments[_i]; + } + var selector = m[2]; + var content = ''; + var suffix = m[4]; + var contentPrefix = ''; + if (suffix && suffix.startsWith('{' + BLOCK_PLACEHOLDER)) { + content = inputWithEscapedBlocks.blocks[nextBlockIndex++]; + suffix = suffix.substring(BLOCK_PLACEHOLDER.length + 1); + contentPrefix = '{'; + } + var rule = ruleCallback(new CssRule(selector, content)); + return "" + m[1] + rule.selector + m[3] + contentPrefix + rule.content + suffix; + }); +} +var StringWithEscapedBlocks = /** @class */ (function () { + function StringWithEscapedBlocks(escapedString, blocks) { + this.escapedString = escapedString; + this.blocks = blocks; + } + return StringWithEscapedBlocks; +}()); +function escapeBlocks(input) { + var inputParts = input.split(_curlyRe); + var resultParts = []; + var escapedBlocks = []; + var bracketCount = 0; + var currentBlockParts = []; + for (var partIndex = 0; partIndex < inputParts.length; partIndex++) { + var part = inputParts[partIndex]; + if (part == CLOSE_CURLY) { + bracketCount--; + } + if (bracketCount > 0) { + currentBlockParts.push(part); + } + else { + if (currentBlockParts.length > 0) { + escapedBlocks.push(currentBlockParts.join('')); + resultParts.push(BLOCK_PLACEHOLDER); + currentBlockParts = []; + } + resultParts.push(part); + } + if (part == OPEN_CURLY) { + bracketCount++; + } + } + if (currentBlockParts.length > 0) { + escapedBlocks.push(currentBlockParts.join('')); + resultParts.push(BLOCK_PLACEHOLDER); } + return new StringWithEscapedBlocks(resultParts.join(''), escapedBlocks); } /** @@ -12899,307 +14587,475 @@ function getCtypeForTag(tag) { * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ -var _VERSION$1 = '2.0'; -var _XMLNS$1 = 'urn:oasis:names:tc:xliff:document:2.0'; -// TODO(vicb): make this a param (s/_/-/) -var _DEFAULT_SOURCE_LANG$1 = 'en'; -var _PLACEHOLDER_TAG$1 = 'ph'; -var _PLACEHOLDER_SPANNING_TAG = 'pc'; -var _MARKER_TAG$1 = 'mrk'; -var _XLIFF_TAG = 'xliff'; -var _SOURCE_TAG$1 = 'source'; -var _TARGET_TAG$1 = 'target'; -var _UNIT_TAG$1 = 'unit'; -// http://docs.oasis-open.org/xliff/xliff-core/v2.0/os/xliff-core-v2.0-os.html -var Xliff2 = /** @class */ (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(Xliff2, _super); - function Xliff2() { - return _super !== null && _super.apply(this, arguments) || this; +var COMPONENT_VARIABLE = '%COMP%'; +var HOST_ATTR = "_nghost-" + COMPONENT_VARIABLE; +var CONTENT_ATTR = "_ngcontent-" + COMPONENT_VARIABLE; +var StylesCompileDependency = /** @class */ (function () { + function StylesCompileDependency(name, moduleUrl, setValue) { + this.name = name; + this.moduleUrl = moduleUrl; + this.setValue = setValue; } - Xliff2.prototype.write = function (messages, locale) { - var visitor = new _WriteVisitor$1(); - var units = []; - messages.forEach(function (message) { - var unit = new Tag(_UNIT_TAG$1, { id: message.id }); - var notes = new Tag('notes'); - if (message.description || message.meaning) { - if (message.description) { - notes.children.push(new CR(8), new Tag('note', { category: 'description' }, [new Text$2(message.description)])); - } - if (message.meaning) { - notes.children.push(new CR(8), new Tag('note', { category: 'meaning' }, [new Text$2(message.meaning)])); - } - } - message.sources.forEach(function (source) { - notes.children.push(new CR(8), new Tag('note', { category: 'location' }, [ - new Text$2(source.filePath + ":" + source.startLine + (source.endLine !== source.startLine ? ',' + source.endLine : '')) - ])); - }); - notes.children.push(new CR(6)); - unit.children.push(new CR(6), notes); - var segment = new Tag('segment'); - segment.children.push(new CR(8), new Tag(_SOURCE_TAG$1, {}, visitor.serialize(message.nodes)), new CR(6)); - unit.children.push(new CR(6), segment, new CR(4)); - units.push(new CR(4), unit); - }); - var file = new Tag('file', { 'original': 'ng.template', id: 'ngi18n' }, Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])(units, [new CR(2)])); - var xliff = new Tag(_XLIFF_TAG, { version: _VERSION$1, xmlns: _XMLNS$1, srcLang: locale || _DEFAULT_SOURCE_LANG$1 }, [new CR(2), file, new CR()]); - return serialize([ - new Declaration({ version: '1.0', encoding: 'UTF-8' }), new CR(), xliff, new CR() - ]); + return StylesCompileDependency; +}()); +var CompiledStylesheet = /** @class */ (function () { + function CompiledStylesheet(outputCtx, stylesVar, dependencies, isShimmed, meta) { + this.outputCtx = outputCtx; + this.stylesVar = stylesVar; + this.dependencies = dependencies; + this.isShimmed = isShimmed; + this.meta = meta; + } + return CompiledStylesheet; +}()); +var StyleCompiler = /** @class */ (function () { + function StyleCompiler(_urlResolver) { + this._urlResolver = _urlResolver; + this._shadowCss = new ShadowCss(); + } + StyleCompiler.prototype.compileComponent = function (outputCtx, comp) { + var template = comp.template; + return this._compileStyles(outputCtx, comp, new CompileStylesheetMetadata({ + styles: template.styles, + styleUrls: template.styleUrls, + moduleUrl: identifierModuleUrl(comp.type) + }), this.needsStyleShim(comp), true); }; - Xliff2.prototype.load = function (content, url) { - // xliff to xml nodes - var xliff2Parser = new Xliff2Parser(); - var _a = xliff2Parser.parse(content, url), locale = _a.locale, msgIdToHtml = _a.msgIdToHtml, errors = _a.errors; - // xml nodes to i18n nodes - var i18nNodesByMsgId = {}; - var converter = new XmlToI18n$1(); - Object.keys(msgIdToHtml).forEach(function (msgId) { - var _a = converter.convert(msgIdToHtml[msgId], url), i18nNodes = _a.i18nNodes, e = _a.errors; - errors.push.apply(errors, Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])(e)); - i18nNodesByMsgId[msgId] = i18nNodes; - }); - if (errors.length) { - throw new Error("xliff2 parse errors:\n" + errors.join('\n')); - } - return { locale: locale, i18nNodesByMsgId: i18nNodesByMsgId }; + StyleCompiler.prototype.compileStyles = function (outputCtx, comp, stylesheet, shim) { + if (shim === void 0) { shim = this.needsStyleShim(comp); } + return this._compileStyles(outputCtx, comp, stylesheet, shim, false); }; - Xliff2.prototype.digest = function (message) { return decimalDigest(message); }; - return Xliff2; -}(Serializer)); -var _WriteVisitor$1 = /** @class */ (function () { - function _WriteVisitor() { - } - _WriteVisitor.prototype.visitText = function (text, context) { return [new Text$2(text.value)]; }; - _WriteVisitor.prototype.visitContainer = function (container, context) { - var _this = this; - var nodes = []; - container.children.forEach(function (node) { return nodes.push.apply(nodes, Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])(node.visit(_this))); }); - return nodes; + StyleCompiler.prototype.needsStyleShim = function (comp) { + return comp.template.encapsulation === ViewEncapsulation.Emulated; }; - _WriteVisitor.prototype.visitIcu = function (icu, context) { + StyleCompiler.prototype._compileStyles = function (outputCtx, comp, stylesheet, shim, isComponentStylesheet) { var _this = this; - var nodes = [new Text$2("{" + icu.expressionPlaceholder + ", " + icu.type + ", ")]; - Object.keys(icu.cases).forEach(function (c) { - nodes.push.apply(nodes, Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])([new Text$2(c + " {")], icu.cases[c].visit(_this), [new Text$2("} ")])); + var styleExpressions = stylesheet.styles.map(function (plainStyle) { return literal(_this._shimIfNeeded(plainStyle, shim)); }); + var dependencies = []; + stylesheet.styleUrls.forEach(function (styleUrl) { + var exprIndex = styleExpressions.length; + // Note: This placeholder will be filled later. + styleExpressions.push(null); + dependencies.push(new StylesCompileDependency(getStylesVarName(null), styleUrl, function (value) { return styleExpressions[exprIndex] = outputCtx.importExpr(value); })); }); - nodes.push(new Text$2("}")); - return nodes; + // styles variable contains plain strings and arrays of other styles arrays (recursive), + // so we set its type to dynamic. + var stylesVar = getStylesVarName(isComponentStylesheet ? comp : null); + var stmt = variable(stylesVar) + .set(literalArr(styleExpressions, new ArrayType(DYNAMIC_TYPE, [TypeModifier.Const]))) + .toDeclStmt(null, isComponentStylesheet ? [StmtModifier.Final] : [ + StmtModifier.Final, StmtModifier.Exported + ]); + outputCtx.statements.push(stmt); + return new CompiledStylesheet(outputCtx, stylesVar, dependencies, shim, stylesheet); }; - _WriteVisitor.prototype.visitTagPlaceholder = function (ph, context) { - var _this = this; - var type = getTypeForTag(ph.tag); - if (ph.isVoid) { - var tagPh = new Tag(_PLACEHOLDER_TAG$1, { - id: (this._nextPlaceholderId++).toString(), - equiv: ph.startName, - type: type, - disp: "<" + ph.tag + "/>", - }); - return [tagPh]; + StyleCompiler.prototype._shimIfNeeded = function (style, shim) { + return shim ? this._shadowCss.shimCssText(style, CONTENT_ATTR, HOST_ATTR) : style; + }; + return StyleCompiler; +}()); +function getStylesVarName(component) { + var result = "styles"; + if (component) { + result += "_" + identifierName(component.type); + } + return result; +} + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +/** + * Parses string representation of a style and converts it into object literal. + * + * @param value string representation of style as used in the `style` attribute in HTML. + * Example: `color: red; height: auto`. + * @returns an object literal. `{ color: 'red', height: 'auto'}`. + */ +function parse(value) { + var styles = {}; + var i = 0; + var parenDepth = 0; + var quote = 0 /* QuoteNone */; + var valueStart = 0; + var propStart = 0; + var currentProp = null; + var valueHasQuotes = false; + while (i < value.length) { + var token = value.charCodeAt(i++); + switch (token) { + case 40 /* OpenParen */: + parenDepth++; + break; + case 41 /* CloseParen */: + parenDepth--; + break; + case 39 /* QuoteSingle */: + // valueStart needs to be there since prop values don't + // have quotes in CSS + valueHasQuotes = valueHasQuotes || valueStart > 0; + if (quote === 0 /* QuoteNone */) { + quote = 39 /* QuoteSingle */; + } + else if (quote === 39 /* QuoteSingle */ && value.charCodeAt(i - 1) !== 92 /* BackSlash */) { + quote = 0 /* QuoteNone */; + } + break; + case 34 /* QuoteDouble */: + // same logic as above + valueHasQuotes = valueHasQuotes || valueStart > 0; + if (quote === 0 /* QuoteNone */) { + quote = 34 /* QuoteDouble */; + } + else if (quote === 34 /* QuoteDouble */ && value.charCodeAt(i - 1) !== 92 /* BackSlash */) { + quote = 0 /* QuoteNone */; + } + break; + case 58 /* Colon */: + if (!currentProp && parenDepth === 0 && quote === 0 /* QuoteNone */) { + currentProp = hyphenate(value.substring(propStart, i - 1).trim()); + valueStart = i; + } + break; + case 59 /* Semicolon */: + if (currentProp && valueStart > 0 && parenDepth === 0 && quote === 0 /* QuoteNone */) { + var styleVal = value.substring(valueStart, i - 1).trim(); + styles[currentProp] = valueHasQuotes ? stripUnnecessaryQuotes(styleVal) : styleVal; + propStart = i; + valueStart = 0; + currentProp = null; + valueHasQuotes = false; + } + break; } - var tagPc = new Tag(_PLACEHOLDER_SPANNING_TAG, { - id: (this._nextPlaceholderId++).toString(), - equivStart: ph.startName, - equivEnd: ph.closeName, - type: type, - dispStart: "<" + ph.tag + ">", - dispEnd: "", - }); - var nodes = [].concat.apply([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])(ph.children.map(function (node) { return node.visit(_this); }))); - if (nodes.length) { - nodes.forEach(function (node) { return tagPc.children.push(node); }); + } + if (currentProp && valueStart) { + var styleVal = value.substr(valueStart).trim(); + styles[currentProp] = valueHasQuotes ? stripUnnecessaryQuotes(styleVal) : styleVal; + } + return styles; +} +function stripUnnecessaryQuotes(value) { + var qS = value.charCodeAt(0); + var qE = value.charCodeAt(value.length - 1); + if (qS == qE && (qS == 39 /* QuoteSingle */ || qS == 34 /* QuoteDouble */)) { + var tempValue = value.substring(1, value.length - 1); + // special case to avoid using a multi-quoted string that was just chomped + // (e.g. `font-family: "Verdana", "sans-serif"`) + if (tempValue.indexOf('\'') == -1 && tempValue.indexOf('"') == -1) { + value = tempValue; } - else { - tagPc.children.push(new Text$2('')); + } + return value; +} +function hyphenate(value) { + return value.replace(/[a-z][A-Z]/g, function (v) { + return v.charAt(0) + '-' + v.charAt(1); + }).toLowerCase(); +} + +/** + * Produces creation/update instructions for all styling bindings (class and style) + * + * The builder class below handles producing instructions for the following cases: + * + * - Static style/class attributes (style="..." and class="...") + * - Dynamic style/class map bindings ([style]="map" and [class]="map|string") + * - Dynamic style/class property bindings ([style.prop]="exp" and [class.name]="exp") + * + * Due to the complex relationship of all of these cases, the instructions generated + * for these attributes/properties/bindings must be done so in the correct order. The + * order which these must be generated is as follows: + * + * if (createMode) { + * elementStyling(...) + * } + * if (updateMode) { + * elementStylingMap(...) + * elementStyleProp(...) + * elementClassProp(...) + * elementStylingApp(...) + * } + * + * The creation/update methods within the builder class produce these instructions. + */ +var StylingBuilder = /** @class */ (function () { + function StylingBuilder(_elementIndexExpr, _directiveIndexExpr) { + this._elementIndexExpr = _elementIndexExpr; + this._directiveIndexExpr = _directiveIndexExpr; + this.hasBindingsOrInitialValues = false; + this._classMapInput = null; + this._styleMapInput = null; + this._singleStyleInputs = null; + this._singleClassInputs = null; + this._lastStylingInput = null; + // maps are used instead of hash maps because a Map will + // retain the ordering of the keys + this._stylesIndex = new Map(); + this._classesIndex = new Map(); + this._initialStyleValues = {}; + this._initialClassValues = {}; + this._useDefaultSanitizer = false; + this._applyFnRequired = false; + } + StylingBuilder.prototype.registerBoundInput = function (input) { + // [attr.style] or [attr.class] are skipped in the code below, + // they should not be treated as styling-based bindings since + // they are intended to be written directly to the attr and + // will therefore skip all style/class resolution that is present + // with style="", [style]="" and [style.prop]="", class="", + // [class.prop]="". [class]="" assignments + var name = input.name; + var binding = null; + switch (input.type) { + case 0 /* Property */: + if (name == 'style') { + binding = this.registerStyleInput(null, input.value, '', input.sourceSpan); + } + else if (isClassBinding(input.name)) { + binding = this.registerClassInput(null, input.value, input.sourceSpan); + } + break; + case 3 /* Style */: + binding = this.registerStyleInput(input.name, input.value, input.unit, input.sourceSpan); + break; + case 2 /* Class */: + binding = this.registerClassInput(input.name, input.value, input.sourceSpan); + break; } - return [tagPc]; + return binding ? true : false; }; - _WriteVisitor.prototype.visitPlaceholder = function (ph, context) { - var idStr = (this._nextPlaceholderId++).toString(); - return [new Tag(_PLACEHOLDER_TAG$1, { - id: idStr, - equiv: ph.name, - disp: "{{" + ph.value + "}}", - })]; + StylingBuilder.prototype.registerStyleInput = function (propertyName, value, unit, sourceSpan) { + var entry = { name: propertyName, unit: unit, value: value, sourceSpan: sourceSpan }; + if (propertyName) { + (this._singleStyleInputs = this._singleStyleInputs || []).push(entry); + this._useDefaultSanitizer = this._useDefaultSanitizer || isStyleSanitizable(propertyName); + registerIntoMap(this._stylesIndex, propertyName); + this.hasBindingsOrInitialValues = true; + } + else { + this._useDefaultSanitizer = true; + this._styleMapInput = entry; + } + this._lastStylingInput = entry; + this.hasBindingsOrInitialValues = true; + this._applyFnRequired = true; + return entry; }; - _WriteVisitor.prototype.visitIcuPlaceholder = function (ph, context) { - var cases = Object.keys(ph.value.cases).map(function (value) { return value + ' {...}'; }).join(' '); - var idStr = (this._nextPlaceholderId++).toString(); - return [new Tag(_PLACEHOLDER_TAG$1, { id: idStr, equiv: ph.name, disp: "{" + ph.value.expression + ", " + ph.value.type + ", " + cases + "}" })]; + StylingBuilder.prototype.registerClassInput = function (className, value, sourceSpan) { + var entry = { name: className, value: value, sourceSpan: sourceSpan }; + if (className) { + (this._singleClassInputs = this._singleClassInputs || []).push(entry); + this.hasBindingsOrInitialValues = true; + registerIntoMap(this._classesIndex, className); + } + else { + this._classMapInput = entry; + } + this._lastStylingInput = entry; + this.hasBindingsOrInitialValues = true; + this._applyFnRequired = true; + return entry; }; - _WriteVisitor.prototype.serialize = function (nodes) { + StylingBuilder.prototype.registerStyleAttr = function (value) { var _this = this; - this._nextPlaceholderId = 0; - return [].concat.apply([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])(nodes.map(function (node) { return node.visit(_this); }))); + this._initialStyleValues = parse(value); + Object.keys(this._initialStyleValues).forEach(function (prop) { + registerIntoMap(_this._stylesIndex, prop); + _this.hasBindingsOrInitialValues = true; + }); }; - return _WriteVisitor; -}()); -// Extract messages as xml nodes from the xliff file -var Xliff2Parser = /** @class */ (function () { - function Xliff2Parser() { - this._locale = null; - } - Xliff2Parser.prototype.parse = function (xliff, url) { - this._unitMlString = null; - this._msgIdToHtml = {}; - var xml = new XmlParser().parse(xliff, url, false); - this._errors = xml.errors; - visitAll(this, xml.rootNodes, null); - return { - msgIdToHtml: this._msgIdToHtml, - errors: this._errors, - locale: this._locale, - }; + StylingBuilder.prototype.registerClassAttr = function (value) { + var _this = this; + this._initialClassValues = {}; + value.split(/\s+/g).forEach(function (className) { + _this._initialClassValues[className] = true; + registerIntoMap(_this._classesIndex, className); + _this.hasBindingsOrInitialValues = true; + }); }; - Xliff2Parser.prototype.visitElement = function (element, context) { - switch (element.name) { - case _UNIT_TAG$1: - this._unitMlString = null; - var idAttr = element.attrs.find(function (attr) { return attr.name === 'id'; }); - if (!idAttr) { - this._addError(element, "<" + _UNIT_TAG$1 + "> misses the \"id\" attribute"); + StylingBuilder.prototype._buildInitExpr = function (registry, initialValues) { + var exprs = []; + var nameAndValueExprs = []; + // _c0 = [prop, prop2, prop3, ...] + registry.forEach(function (value, key) { + var keyLiteral = literal(key); + exprs.push(keyLiteral); + var initialValue = initialValues[key]; + if (initialValue) { + nameAndValueExprs.push(keyLiteral, literal(initialValue)); + } + }); + if (nameAndValueExprs.length) { + // _c0 = [... MARKER ...] + exprs.push(literal(1 /* VALUES_MODE */)); + // _c0 = [prop, VALUE, prop2, VALUE2, ...] + exprs.push.apply(exprs, Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])(nameAndValueExprs)); + } + return exprs.length ? literalArr(exprs) : null; + }; + StylingBuilder.prototype.buildCreateLevelInstruction = function (sourceSpan, constantPool) { + if (this.hasBindingsOrInitialValues) { + var initialClasses = this._buildInitExpr(this._classesIndex, this._initialClassValues); + var initialStyles = this._buildInitExpr(this._stylesIndex, this._initialStyleValues); + // in the event that a [style] binding is used then sanitization will + // always be imported because it is not possible to know ahead of time + // whether style bindings will use or not use any sanitizable properties + // that isStyleSanitizable() will detect + var useSanitizer = this._useDefaultSanitizer; + var params_1 = []; + if (initialClasses) { + // the template compiler handles initial class styling (e.g. class="foo") values + // in a special command called `elementClass` so that the initial class + // can be processed during runtime. These initial class values are bound to + // a constant because the inital class values do not change (since they're static). + params_1.push(constantPool.getConstLiteral(initialClasses, true)); + } + else if (initialStyles || useSanitizer) { + // no point in having an extra `null` value unless there are follow-up params + params_1.push(NULL_EXPR); + } + if (initialStyles) { + // the template compiler handles initial style (e.g. style="foo") values + // in a special command called `elementStyle` so that the initial styles + // can be processed during runtime. These initial styles values are bound to + // a constant because the inital style values do not change (since they're static). + params_1.push(constantPool.getConstLiteral(initialStyles, true)); + } + else if (useSanitizer || this._directiveIndexExpr) { + // no point in having an extra `null` value unless there are follow-up params + params_1.push(NULL_EXPR); + } + if (useSanitizer || this._directiveIndexExpr) { + params_1.push(useSanitizer ? importExpr(Identifiers$1.defaultStyleSanitizer) : NULL_EXPR); + if (this._directiveIndexExpr) { + params_1.push(this._directiveIndexExpr); } - else { - var id = idAttr.value; - if (this._msgIdToHtml.hasOwnProperty(id)) { - this._addError(element, "Duplicated translations for msg " + id); + } + return { sourceSpan: sourceSpan, reference: Identifiers$1.elementStyling, buildParams: function () { return params_1; } }; + } + return null; + }; + StylingBuilder.prototype._buildStylingMap = function (valueConverter) { + var _this = this; + if (this._classMapInput || this._styleMapInput) { + var stylingInput = this._classMapInput || this._styleMapInput; + // these values must be outside of the update block so that they can + // be evaluted (the AST visit call) during creation time so that any + // pipes can be picked up in time before the template is built + var mapBasedClassValue_1 = this._classMapInput ? this._classMapInput.value.visit(valueConverter) : null; + var mapBasedStyleValue_1 = this._styleMapInput ? this._styleMapInput.value.visit(valueConverter) : null; + return { + sourceSpan: stylingInput.sourceSpan, + reference: Identifiers$1.elementStylingMap, + buildParams: function (convertFn) { + var params = [_this._elementIndexExpr]; + if (mapBasedClassValue_1) { + params.push(convertFn(mapBasedClassValue_1)); } - else { - visitAll(this, element.children, null); - if (typeof this._unitMlString === 'string') { - this._msgIdToHtml[id] = this._unitMlString; - } - else { - this._addError(element, "Message " + id + " misses a translation"); - } + else if (_this._styleMapInput) { + params.push(NULL_EXPR); } + if (mapBasedStyleValue_1) { + params.push(convertFn(mapBasedStyleValue_1)); + } + else if (_this._directiveIndexExpr) { + params.push(NULL_EXPR); + } + if (_this._directiveIndexExpr) { + params.push(_this._directiveIndexExpr); + } + return params; } - break; - case _SOURCE_TAG$1: - // ignore source message - break; - case _TARGET_TAG$1: - var innerTextStart = element.startSourceSpan.end.offset; - var innerTextEnd = element.endSourceSpan.start.offset; - var content = element.startSourceSpan.start.file.content; - var innerText = content.slice(innerTextStart, innerTextEnd); - this._unitMlString = innerText; - break; - case _XLIFF_TAG: - var localeAttr = element.attrs.find(function (attr) { return attr.name === 'trgLang'; }); - if (localeAttr) { - this._locale = localeAttr.value; - } - var versionAttr = element.attrs.find(function (attr) { return attr.name === 'version'; }); - if (versionAttr) { - var version = versionAttr.value; - if (version !== '2.0') { - this._addError(element, "The XLIFF file version " + version + " is not compatible with XLIFF 2.0 serializer"); + }; + } + return null; + }; + StylingBuilder.prototype._buildSingleInputs = function (reference, inputs, mapIndex, allowUnits, valueConverter) { + var _this = this; + return inputs.map(function (input) { + var bindingIndex = mapIndex.get(input.name); + var value = input.value.visit(valueConverter); + return { + sourceSpan: input.sourceSpan, + reference: reference, + buildParams: function (convertFn) { + var params = [_this._elementIndexExpr, literal(bindingIndex), convertFn(value)]; + if (allowUnits) { + if (input.unit) { + params.push(literal(input.unit)); + } + else if (_this._directiveIndexExpr) { + params.push(NULL_EXPR); + } } - else { - visitAll(this, element.children, null); + if (_this._directiveIndexExpr) { + params.push(_this._directiveIndexExpr); } + return params; } - break; - default: - visitAll(this, element.children, null); + }; + }); + }; + StylingBuilder.prototype._buildClassInputs = function (valueConverter) { + if (this._singleClassInputs) { + return this._buildSingleInputs(Identifiers$1.elementClassProp, this._singleClassInputs, this._classesIndex, false, valueConverter); } + return []; }; - Xliff2Parser.prototype.visitAttribute = function (attribute, context) { }; - Xliff2Parser.prototype.visitText = function (text, context) { }; - Xliff2Parser.prototype.visitComment = function (comment, context) { }; - Xliff2Parser.prototype.visitExpansion = function (expansion, context) { }; - Xliff2Parser.prototype.visitExpansionCase = function (expansionCase, context) { }; - Xliff2Parser.prototype._addError = function (node, message) { - this._errors.push(new I18nError(node.sourceSpan, message)); + StylingBuilder.prototype._buildStyleInputs = function (valueConverter) { + if (this._singleStyleInputs) { + return this._buildSingleInputs(Identifiers$1.elementStyleProp, this._singleStyleInputs, this._stylesIndex, true, valueConverter); + } + return []; }; - return Xliff2Parser; -}()); -// Convert ml nodes (xliff syntax) to i18n nodes -var XmlToI18n$1 = /** @class */ (function () { - function XmlToI18n() { - } - XmlToI18n.prototype.convert = function (message, url) { - var xmlIcu = new XmlParser().parse(message, url, true); - this._errors = xmlIcu.errors; - var i18nNodes = this._errors.length > 0 || xmlIcu.rootNodes.length == 0 ? - [] : [].concat.apply([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])(visitAll(this, xmlIcu.rootNodes))); - return { - i18nNodes: i18nNodes, - errors: this._errors, - }; - }; - XmlToI18n.prototype.visitText = function (text, context) { return new Text$1(text.value, text.sourceSpan); }; - XmlToI18n.prototype.visitElement = function (el, context) { + StylingBuilder.prototype._buildApplyFn = function () { var _this = this; - switch (el.name) { - case _PLACEHOLDER_TAG$1: - var nameAttr = el.attrs.find(function (attr) { return attr.name === 'equiv'; }); - if (nameAttr) { - return [new Placeholder('', nameAttr.value, el.sourceSpan)]; - } - this._addError(el, "<" + _PLACEHOLDER_TAG$1 + "> misses the \"equiv\" attribute"); - break; - case _PLACEHOLDER_SPANNING_TAG: - var startAttr = el.attrs.find(function (attr) { return attr.name === 'equivStart'; }); - var endAttr = el.attrs.find(function (attr) { return attr.name === 'equivEnd'; }); - if (!startAttr) { - this._addError(el, "<" + _PLACEHOLDER_TAG$1 + "> misses the \"equivStart\" attribute"); - } - else if (!endAttr) { - this._addError(el, "<" + _PLACEHOLDER_TAG$1 + "> misses the \"equivEnd\" attribute"); - } - else { - var startId = startAttr.value; - var endId = endAttr.value; - var nodes = []; - return nodes.concat.apply(nodes, Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])([new Placeholder('', startId, el.sourceSpan)], el.children.map(function (node) { return node.visit(_this, null); }), [new Placeholder('', endId, el.sourceSpan)])); - } - break; - case _MARKER_TAG$1: - return [].concat.apply([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])(visitAll(this, el.children))); - default: - this._addError(el, "Unexpected tag"); - } - return null; - }; - XmlToI18n.prototype.visitExpansion = function (icu, context) { - var caseMap = {}; - visitAll(this, icu.cases).forEach(function (c) { - caseMap[c.value] = new Container(c.nodes, icu.sourceSpan); - }); - return new Icu(icu.switchValue, icu.type, caseMap, icu.sourceSpan); - }; - XmlToI18n.prototype.visitExpansionCase = function (icuCase, context) { return { - value: icuCase.value, - nodes: [].concat.apply([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])(visitAll(this, icuCase.expression))), + sourceSpan: this._lastStylingInput ? this._lastStylingInput.sourceSpan : null, + reference: Identifiers$1.elementStylingApply, + buildParams: function () { + var params = [_this._elementIndexExpr]; + if (_this._directiveIndexExpr) { + params.push(_this._directiveIndexExpr); + } + return params; + } }; }; - XmlToI18n.prototype.visitComment = function (comment, context) { }; - XmlToI18n.prototype.visitAttribute = function (attribute, context) { }; - XmlToI18n.prototype._addError = function (node, message) { - this._errors.push(new I18nError(node.sourceSpan, message)); + StylingBuilder.prototype.buildUpdateLevelInstructions = function (valueConverter) { + var instructions = []; + if (this.hasBindingsOrInitialValues) { + var mapInstruction = this._buildStylingMap(valueConverter); + if (mapInstruction) { + instructions.push(mapInstruction); + } + instructions.push.apply(instructions, Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])(this._buildStyleInputs(valueConverter))); + instructions.push.apply(instructions, Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])(this._buildClassInputs(valueConverter))); + if (this._applyFnRequired) { + instructions.push(this._buildApplyFn()); + } + } + return instructions; }; - return XmlToI18n; + return StylingBuilder; }()); -function getTypeForTag(tag) { - switch (tag.toLowerCase()) { - case 'br': - case 'b': - case 'i': - case 'u': - return 'fmt'; - case 'img': - return 'image'; - case 'a': - return 'link'; - default: - return 'other'; +function isClassBinding(name) { + return name == 'className' || name == 'class'; +} +function registerIntoMap(map, key) { + if (!map.has(key)) { + map.set(key, map.size); } } +function isStyleSanitizable(prop) { + return prop === 'background-image' || prop === 'background' || prop === 'border-image' || + prop === 'filter' || prop === 'list-style' || prop === 'list-style-image'; +} /** * @license @@ -13208,133 +15064,349 @@ function getTypeForTag(tag) { * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ -var _MESSAGES_TAG = 'messagebundle'; -var _MESSAGE_TAG = 'msg'; -var _PLACEHOLDER_TAG$2 = 'ph'; -var _EXEMPLE_TAG = 'ex'; -var _SOURCE_TAG$2 = 'source'; -var _DOCTYPE = "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"; -var Xmb = /** @class */ (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(Xmb, _super); - function Xmb() { - return _super !== null && _super.apply(this, arguments) || this; +var TokenType; +(function (TokenType) { + TokenType[TokenType["Character"] = 0] = "Character"; + TokenType[TokenType["Identifier"] = 1] = "Identifier"; + TokenType[TokenType["Keyword"] = 2] = "Keyword"; + TokenType[TokenType["String"] = 3] = "String"; + TokenType[TokenType["Operator"] = 4] = "Operator"; + TokenType[TokenType["Number"] = 5] = "Number"; + TokenType[TokenType["Error"] = 6] = "Error"; +})(TokenType || (TokenType = {})); +var KEYWORDS = ['var', 'let', 'as', 'null', 'undefined', 'true', 'false', 'if', 'else', 'this']; +var Lexer = /** @class */ (function () { + function Lexer() { } - Xmb.prototype.write = function (messages, locale) { - var exampleVisitor = new ExampleVisitor(); - var visitor = new _Visitor$2(); - var rootNode = new Tag(_MESSAGES_TAG); - messages.forEach(function (message) { - var attrs = { id: message.id }; - if (message.description) { - attrs['desc'] = message.description; - } - if (message.meaning) { - attrs['meaning'] = message.meaning; - } - var sourceTags = []; - message.sources.forEach(function (source) { - sourceTags.push(new Tag(_SOURCE_TAG$2, {}, [ - new Text$2(source.filePath + ":" + source.startLine + (source.endLine !== source.startLine ? ',' + source.endLine : '')) - ])); - }); - rootNode.children.push(new CR(2), new Tag(_MESSAGE_TAG, attrs, Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])(sourceTags, visitor.serialize(message.nodes)))); - }); - rootNode.children.push(new CR()); - return serialize([ - new Declaration({ version: '1.0', encoding: 'UTF-8' }), - new CR(), - new Doctype(_MESSAGES_TAG, _DOCTYPE), - new CR(), - exampleVisitor.addDefaultExamples(rootNode), - new CR(), - ]); + Lexer.prototype.tokenize = function (text) { + var scanner = new _Scanner(text); + var tokens = []; + var token = scanner.scanToken(); + while (token != null) { + tokens.push(token); + token = scanner.scanToken(); + } + return tokens; }; - Xmb.prototype.load = function (content, url) { - throw new Error('Unsupported'); + return Lexer; +}()); +var Token = /** @class */ (function () { + function Token(index, type, numValue, strValue) { + this.index = index; + this.type = type; + this.numValue = numValue; + this.strValue = strValue; + } + Token.prototype.isCharacter = function (code) { + return this.type == TokenType.Character && this.numValue == code; }; - Xmb.prototype.digest = function (message) { return digest$1(message); }; - Xmb.prototype.createNameMapper = function (message) { - return new SimplePlaceholderMapper(message, toPublicName); + Token.prototype.isNumber = function () { return this.type == TokenType.Number; }; + Token.prototype.isString = function () { return this.type == TokenType.String; }; + Token.prototype.isOperator = function (operator) { + return this.type == TokenType.Operator && this.strValue == operator; }; - return Xmb; -}(Serializer)); -var _Visitor$2 = /** @class */ (function () { - function _Visitor() { - } - _Visitor.prototype.visitText = function (text, context) { return [new Text$2(text.value)]; }; - _Visitor.prototype.visitContainer = function (container, context) { - var _this = this; - var nodes = []; - container.children.forEach(function (node) { return nodes.push.apply(nodes, Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])(node.visit(_this))); }); - return nodes; + Token.prototype.isIdentifier = function () { return this.type == TokenType.Identifier; }; + Token.prototype.isKeyword = function () { return this.type == TokenType.Keyword; }; + Token.prototype.isKeywordLet = function () { return this.type == TokenType.Keyword && this.strValue == 'let'; }; + Token.prototype.isKeywordAs = function () { return this.type == TokenType.Keyword && this.strValue == 'as'; }; + Token.prototype.isKeywordNull = function () { return this.type == TokenType.Keyword && this.strValue == 'null'; }; + Token.prototype.isKeywordUndefined = function () { + return this.type == TokenType.Keyword && this.strValue == 'undefined'; }; - _Visitor.prototype.visitIcu = function (icu, context) { - var _this = this; - var nodes = [new Text$2("{" + icu.expressionPlaceholder + ", " + icu.type + ", ")]; - Object.keys(icu.cases).forEach(function (c) { - nodes.push.apply(nodes, Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])([new Text$2(c + " {")], icu.cases[c].visit(_this), [new Text$2("} ")])); - }); - nodes.push(new Text$2("}")); - return nodes; + Token.prototype.isKeywordTrue = function () { return this.type == TokenType.Keyword && this.strValue == 'true'; }; + Token.prototype.isKeywordFalse = function () { return this.type == TokenType.Keyword && this.strValue == 'false'; }; + Token.prototype.isKeywordThis = function () { return this.type == TokenType.Keyword && this.strValue == 'this'; }; + Token.prototype.isError = function () { return this.type == TokenType.Error; }; + Token.prototype.toNumber = function () { return this.type == TokenType.Number ? this.numValue : -1; }; + Token.prototype.toString = function () { + switch (this.type) { + case TokenType.Character: + case TokenType.Identifier: + case TokenType.Keyword: + case TokenType.Operator: + case TokenType.String: + case TokenType.Error: + return this.strValue; + case TokenType.Number: + return this.numValue.toString(); + default: + return null; + } }; - _Visitor.prototype.visitTagPlaceholder = function (ph, context) { - var startEx = new Tag(_EXEMPLE_TAG, {}, [new Text$2("<" + ph.tag + ">")]); - var startTagPh = new Tag(_PLACEHOLDER_TAG$2, { name: ph.startName }, [startEx]); - if (ph.isVoid) { - // void tags have no children nor closing tags - return [startTagPh]; + return Token; +}()); +function newCharacterToken(index, code) { + return new Token(index, TokenType.Character, code, String.fromCharCode(code)); +} +function newIdentifierToken(index, text) { + return new Token(index, TokenType.Identifier, 0, text); +} +function newKeywordToken(index, text) { + return new Token(index, TokenType.Keyword, 0, text); +} +function newOperatorToken(index, text) { + return new Token(index, TokenType.Operator, 0, text); +} +function newStringToken(index, text) { + return new Token(index, TokenType.String, 0, text); +} +function newNumberToken(index, n) { + return new Token(index, TokenType.Number, n, ''); +} +function newErrorToken(index, message) { + return new Token(index, TokenType.Error, 0, message); +} +var EOF = new Token(-1, TokenType.Character, 0, ''); +var _Scanner = /** @class */ (function () { + function _Scanner(input) { + this.input = input; + this.peek = 0; + this.index = -1; + this.length = input.length; + this.advance(); + } + _Scanner.prototype.advance = function () { + this.peek = ++this.index >= this.length ? $EOF : this.input.charCodeAt(this.index); + }; + _Scanner.prototype.scanToken = function () { + var input = this.input, length = this.length; + var peek = this.peek, index = this.index; + // Skip whitespace. + while (peek <= $SPACE) { + if (++index >= length) { + peek = $EOF; + break; + } + else { + peek = input.charCodeAt(index); + } } - var closeEx = new Tag(_EXEMPLE_TAG, {}, [new Text$2("")]); - var closeTagPh = new Tag(_PLACEHOLDER_TAG$2, { name: ph.closeName }, [closeEx]); - return Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])([startTagPh], this.serialize(ph.children), [closeTagPh]); + this.peek = peek; + this.index = index; + if (index >= length) { + return null; + } + // Handle identifiers and numbers. + if (isIdentifierStart(peek)) + return this.scanIdentifier(); + if (isDigit(peek)) + return this.scanNumber(index); + var start = index; + switch (peek) { + case $PERIOD: + this.advance(); + return isDigit(this.peek) ? this.scanNumber(start) : + newCharacterToken(start, $PERIOD); + case $LPAREN: + case $RPAREN: + case $LBRACE: + case $RBRACE: + case $LBRACKET: + case $RBRACKET: + case $COMMA: + case $COLON: + case $SEMICOLON: + return this.scanCharacter(start, peek); + case $SQ: + case $DQ: + return this.scanString(); + case $HASH: + case $PLUS: + case $MINUS: + case $STAR: + case $SLASH: + case $PERCENT: + case $CARET: + return this.scanOperator(start, String.fromCharCode(peek)); + case $QUESTION: + return this.scanComplexOperator(start, '?', $PERIOD, '.'); + case $LT: + case $GT: + return this.scanComplexOperator(start, String.fromCharCode(peek), $EQ, '='); + case $BANG: + case $EQ: + return this.scanComplexOperator(start, String.fromCharCode(peek), $EQ, '=', $EQ, '='); + case $AMPERSAND: + return this.scanComplexOperator(start, '&', $AMPERSAND, '&'); + case $BAR: + return this.scanComplexOperator(start, '|', $BAR, '|'); + case $NBSP: + while (isWhitespace(this.peek)) + this.advance(); + return this.scanToken(); + } + this.advance(); + return this.error("Unexpected character [" + String.fromCharCode(peek) + "]", 0); }; - _Visitor.prototype.visitPlaceholder = function (ph, context) { - var exTag = new Tag(_EXEMPLE_TAG, {}, [new Text$2("{{" + ph.value + "}}")]); - return [new Tag(_PLACEHOLDER_TAG$2, { name: ph.name }, [exTag])]; + _Scanner.prototype.scanCharacter = function (start, code) { + this.advance(); + return newCharacterToken(start, code); }; - _Visitor.prototype.visitIcuPlaceholder = function (ph, context) { - var exTag = new Tag(_EXEMPLE_TAG, {}, [ - new Text$2("{" + ph.value.expression + ", " + ph.value.type + ", " + Object.keys(ph.value.cases).map(function (value) { return value + ' {...}'; }).join(' ') + "}") - ]); - return [new Tag(_PLACEHOLDER_TAG$2, { name: ph.name }, [exTag])]; + _Scanner.prototype.scanOperator = function (start, str) { + this.advance(); + return newOperatorToken(start, str); }; - _Visitor.prototype.serialize = function (nodes) { - var _this = this; - return [].concat.apply([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])(nodes.map(function (node) { return node.visit(_this); }))); + /** + * Tokenize a 2/3 char long operator + * + * @param start start index in the expression + * @param one first symbol (always part of the operator) + * @param twoCode code point for the second symbol + * @param two second symbol (part of the operator when the second code point matches) + * @param threeCode code point for the third symbol + * @param three third symbol (part of the operator when provided and matches source expression) + */ + _Scanner.prototype.scanComplexOperator = function (start, one, twoCode, two, threeCode, three) { + this.advance(); + var str = one; + if (this.peek == twoCode) { + this.advance(); + str += two; + } + if (threeCode != null && this.peek == threeCode) { + this.advance(); + str += three; + } + return newOperatorToken(start, str); }; - return _Visitor; -}()); -function digest$1(message) { - return decimalDigest(message); -} -// TC requires at least one non-empty example on placeholders -var ExampleVisitor = /** @class */ (function () { - function ExampleVisitor() { - } - ExampleVisitor.prototype.addDefaultExamples = function (node) { - node.visit(this); - return node; + _Scanner.prototype.scanIdentifier = function () { + var start = this.index; + this.advance(); + while (isIdentifierPart(this.peek)) + this.advance(); + var str = this.input.substring(start, this.index); + return KEYWORDS.indexOf(str) > -1 ? newKeywordToken(start, str) : + newIdentifierToken(start, str); }; - ExampleVisitor.prototype.visitTag = function (tag) { - var _this = this; - if (tag.name === _PLACEHOLDER_TAG$2) { - if (!tag.children || tag.children.length == 0) { - var exText = new Text$2(tag.attrs['name'] || '...'); - tag.children = [new Tag(_EXEMPLE_TAG, {}, [exText])]; + _Scanner.prototype.scanNumber = function (start) { + var simple = (this.index === start); + this.advance(); // Skip initial digit. + while (true) { + if (isDigit(this.peek)) ; + else if (this.peek == $PERIOD) { + simple = false; + } + else if (isExponentStart(this.peek)) { + this.advance(); + if (isExponentSign(this.peek)) + this.advance(); + if (!isDigit(this.peek)) + return this.error('Invalid exponent', -1); + simple = false; + } + else { + break; } + this.advance(); } - else if (tag.children) { - tag.children.forEach(function (node) { return node.visit(_this); }); + var str = this.input.substring(start, this.index); + var value = simple ? parseIntAutoRadix(str) : parseFloat(str); + return newNumberToken(start, value); + }; + _Scanner.prototype.scanString = function () { + var start = this.index; + var quote = this.peek; + this.advance(); // Skip initial quote. + var buffer = ''; + var marker = this.index; + var input = this.input; + while (this.peek != quote) { + if (this.peek == $BACKSLASH) { + buffer += input.substring(marker, this.index); + this.advance(); + var unescapedCode = void 0; + // Workaround for TS2.1-introduced type strictness + this.peek = this.peek; + if (this.peek == $u) { + // 4 character hex code for unicode character. + var hex = input.substring(this.index + 1, this.index + 5); + if (/^[0-9a-f]+$/i.test(hex)) { + unescapedCode = parseInt(hex, 16); + } + else { + return this.error("Invalid unicode escape [\\u" + hex + "]", 0); + } + for (var i = 0; i < 5; i++) { + this.advance(); + } + } + else { + unescapedCode = unescape(this.peek); + this.advance(); + } + buffer += String.fromCharCode(unescapedCode); + marker = this.index; + } + else if (this.peek == $EOF) { + return this.error('Unterminated quote', 0); + } + else { + this.advance(); + } } + var last = input.substring(marker, this.index); + this.advance(); // Skip terminating quote. + return newStringToken(start, buffer + last); }; - ExampleVisitor.prototype.visitText = function (text) { }; - ExampleVisitor.prototype.visitDeclaration = function (decl) { }; - ExampleVisitor.prototype.visitDoctype = function (doctype) { }; - return ExampleVisitor; + _Scanner.prototype.error = function (message, offset) { + var position = this.index + offset; + return newErrorToken(position, "Lexer Error: " + message + " at column " + position + " in expression [" + this.input + "]"); + }; + return _Scanner; }()); -// XMB/XTB placeholders can only contain A-Z, 0-9 and _ -function toPublicName(internalName) { - return internalName.toUpperCase().replace(/[^A-Z0-9_]/g, '_'); +function isIdentifierStart(code) { + return ($a <= code && code <= $z) || ($A <= code && code <= $Z) || + (code == $_) || (code == $$); +} +function isIdentifier(input) { + if (input.length == 0) + return false; + var scanner = new _Scanner(input); + if (!isIdentifierStart(scanner.peek)) + return false; + scanner.advance(); + while (scanner.peek !== $EOF) { + if (!isIdentifierPart(scanner.peek)) + return false; + scanner.advance(); + } + return true; +} +function isIdentifierPart(code) { + return isAsciiLetter(code) || isDigit(code) || (code == $_) || + (code == $$); +} +function isExponentStart(code) { + return code == $e || code == $E; +} +function isExponentSign(code) { + return code == $MINUS || code == $PLUS; +} +function isQuote(code) { + return code === $SQ || code === $DQ || code === $BT; +} +function unescape(code) { + switch (code) { + case $n: + return $LF; + case $f: + return $FF; + case $r: + return $CR; + case $t: + return $TAB; + case $v: + return $VTAB; + default: + return code; + } +} +function parseIntAutoRadix(text) { + var result = parseInt(text); + if (isNaN(result)) { + throw new Error('Invalid integer literal when parsing ' + text); + } + return result; } /** @@ -13344,173 +15416,41 @@ function toPublicName(internalName) { * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ -var _TRANSLATIONS_TAG = 'translationbundle'; -var _TRANSLATION_TAG = 'translation'; -var _PLACEHOLDER_TAG$3 = 'ph'; -var Xtb = /** @class */ (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(Xtb, _super); - function Xtb() { - return _super !== null && _super.apply(this, arguments) || this; +function assertArrayOfStrings(identifier, value) { + if (value == null) { + return; } - Xtb.prototype.write = function (messages, locale) { throw new Error('Unsupported'); }; - Xtb.prototype.load = function (content, url) { - // xtb to xml nodes - var xtbParser = new XtbParser(); - var _a = xtbParser.parse(content, url), locale = _a.locale, msgIdToHtml = _a.msgIdToHtml, errors = _a.errors; - // xml nodes to i18n nodes - var i18nNodesByMsgId = {}; - var converter = new XmlToI18n$2(); - // Because we should be able to load xtb files that rely on features not supported by angular, - // we need to delay the conversion of html to i18n nodes so that non angular messages are not - // converted - Object.keys(msgIdToHtml).forEach(function (msgId) { - var valueFn = function () { - var _a = converter.convert(msgIdToHtml[msgId], url), i18nNodes = _a.i18nNodes, errors = _a.errors; - if (errors.length) { - throw new Error("xtb parse errors:\n" + errors.join('\n')); - } - return i18nNodes; - }; - createLazyProperty(i18nNodesByMsgId, msgId, valueFn); - }); - if (errors.length) { - throw new Error("xtb parse errors:\n" + errors.join('\n')); - } - return { locale: locale, i18nNodesByMsgId: i18nNodesByMsgId }; - }; - Xtb.prototype.digest = function (message) { return digest$1(message); }; - Xtb.prototype.createNameMapper = function (message) { - return new SimplePlaceholderMapper(message, toPublicName); - }; - return Xtb; -}(Serializer)); -function createLazyProperty(messages, id, valueFn) { - Object.defineProperty(messages, id, { - configurable: true, - enumerable: true, - get: function () { - var value = valueFn(); - Object.defineProperty(messages, id, { enumerable: true, value: value }); - return value; - }, - set: function (_) { throw new Error('Could not overwrite an XTB translation'); }, - }); -} -// Extract messages as xml nodes from the xtb file -var XtbParser = /** @class */ (function () { - function XtbParser() { - this._locale = null; + if (!Array.isArray(value)) { + throw new Error("Expected '" + identifier + "' to be an array of strings."); } - XtbParser.prototype.parse = function (xtb, url) { - this._bundleDepth = 0; - this._msgIdToHtml = {}; - // We can not parse the ICU messages at this point as some messages might not originate - // from Angular that could not be lex'd. - var xml = new XmlParser().parse(xtb, url, false); - this._errors = xml.errors; - visitAll(this, xml.rootNodes); - return { - msgIdToHtml: this._msgIdToHtml, - errors: this._errors, - locale: this._locale, - }; - }; - XtbParser.prototype.visitElement = function (element, context) { - switch (element.name) { - case _TRANSLATIONS_TAG: - this._bundleDepth++; - if (this._bundleDepth > 1) { - this._addError(element, "<" + _TRANSLATIONS_TAG + "> elements can not be nested"); - } - var langAttr = element.attrs.find(function (attr) { return attr.name === 'lang'; }); - if (langAttr) { - this._locale = langAttr.value; - } - visitAll(this, element.children, null); - this._bundleDepth--; - break; - case _TRANSLATION_TAG: - var idAttr = element.attrs.find(function (attr) { return attr.name === 'id'; }); - if (!idAttr) { - this._addError(element, "<" + _TRANSLATION_TAG + "> misses the \"id\" attribute"); - } - else { - var id = idAttr.value; - if (this._msgIdToHtml.hasOwnProperty(id)) { - this._addError(element, "Duplicated translations for msg " + id); - } - else { - var innerTextStart = element.startSourceSpan.end.offset; - var innerTextEnd = element.endSourceSpan.start.offset; - var content = element.startSourceSpan.start.file.content; - var innerText = content.slice(innerTextStart, innerTextEnd); - this._msgIdToHtml[id] = innerText; - } - } - break; - default: - this._addError(element, 'Unexpected tag'); + for (var i = 0; i < value.length; i += 1) { + if (typeof value[i] !== 'string') { + throw new Error("Expected '" + identifier + "' to be an array of strings."); } - }; - XtbParser.prototype.visitAttribute = function (attribute, context) { }; - XtbParser.prototype.visitText = function (text, context) { }; - XtbParser.prototype.visitComment = function (comment, context) { }; - XtbParser.prototype.visitExpansion = function (expansion, context) { }; - XtbParser.prototype.visitExpansionCase = function (expansionCase, context) { }; - XtbParser.prototype._addError = function (node, message) { - this._errors.push(new I18nError(node.sourceSpan, message)); - }; - return XtbParser; -}()); -// Convert ml nodes (xtb syntax) to i18n nodes -var XmlToI18n$2 = /** @class */ (function () { - function XmlToI18n() { } - XmlToI18n.prototype.convert = function (message, url) { - var xmlIcu = new XmlParser().parse(message, url, true); - this._errors = xmlIcu.errors; - var i18nNodes = this._errors.length > 0 || xmlIcu.rootNodes.length == 0 ? - [] : - visitAll(this, xmlIcu.rootNodes); - return { - i18nNodes: i18nNodes, - errors: this._errors, - }; - }; - XmlToI18n.prototype.visitText = function (text, context) { return new Text$1(text.value, text.sourceSpan); }; - XmlToI18n.prototype.visitExpansion = function (icu, context) { - var caseMap = {}; - visitAll(this, icu.cases).forEach(function (c) { - caseMap[c.value] = new Container(c.nodes, icu.sourceSpan); - }); - return new Icu(icu.switchValue, icu.type, caseMap, icu.sourceSpan); - }; - XmlToI18n.prototype.visitExpansionCase = function (icuCase, context) { - return { - value: icuCase.value, - nodes: visitAll(this, icuCase.expression), - }; - }; - XmlToI18n.prototype.visitElement = function (el, context) { - if (el.name === _PLACEHOLDER_TAG$3) { - var nameAttr = el.attrs.find(function (attr) { return attr.name === 'name'; }); - if (nameAttr) { - return new Placeholder('', nameAttr.value, el.sourceSpan); +} +var INTERPOLATION_BLACKLIST_REGEXPS = [ + /^\s*$/, + /[<>]/, + /^[{}]$/, + /&(#|[a-z])/i, + /^\/\//, +]; +function assertInterpolationSymbols(identifier, value) { + if (value != null && !(Array.isArray(value) && value.length == 2)) { + throw new Error("Expected '" + identifier + "' to be an array, [start, end]."); + } + else if (value != null) { + var start_1 = value[0]; + var end_1 = value[1]; + // black list checking + INTERPOLATION_BLACKLIST_REGEXPS.forEach(function (regexp) { + if (regexp.test(start_1) || regexp.test(end_1)) { + throw new Error("['" + start_1 + "', '" + end_1 + "'] contains unusable interpolation symbol."); } - this._addError(el, "<" + _PLACEHOLDER_TAG$3 + "> misses the \"name\" attribute"); - } - else { - this._addError(el, "Unexpected tag"); - } - return null; - }; - XmlToI18n.prototype.visitComment = function (comment, context) { }; - XmlToI18n.prototype.visitAttribute = function (attribute, context) { }; - XmlToI18n.prototype._addError = function (node, message) { - this._errors.push(new I18nError(node.sourceSpan, message)); - }; - return XmlToI18n; -}()); + }); + } +} /** * @license @@ -13519,18 +15459,21 @@ var XmlToI18n$2 = /** @class */ (function () { * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ -var HtmlParser = /** @class */ (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(HtmlParser, _super); - function HtmlParser() { - return _super.call(this, getHtmlTagDefinition) || this; +var InterpolationConfig = /** @class */ (function () { + function InterpolationConfig(start, end) { + this.start = start; + this.end = end; } - HtmlParser.prototype.parse = function (source, url, parseExpansionForms, interpolationConfig) { - if (parseExpansionForms === void 0) { parseExpansionForms = false; } - if (interpolationConfig === void 0) { interpolationConfig = DEFAULT_INTERPOLATION_CONFIG; } - return _super.prototype.parse.call(this, source, url, parseExpansionForms, interpolationConfig); + InterpolationConfig.fromArray = function (markers) { + if (!markers) { + return DEFAULT_INTERPOLATION_CONFIG; + } + assertInterpolationSymbols('interpolation', markers); + return new InterpolationConfig(markers[0], markers[1]); }; - return HtmlParser; -}(Parser$1)); + return InterpolationConfig; +}()); +var DEFAULT_INTERPOLATION_CONFIG = new InterpolationConfig('{{', '}}'); /** * @license @@ -13539,1672 +15482,1614 @@ var HtmlParser = /** @class */ (function (_super) { * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ -/** - * A container for translated messages - */ -var TranslationBundle = /** @class */ (function () { - function TranslationBundle(_i18nNodesByMsgId, locale, digest, mapperFactory, missingTranslationStrategy, console) { - if (_i18nNodesByMsgId === void 0) { _i18nNodesByMsgId = {}; } - if (missingTranslationStrategy === void 0) { missingTranslationStrategy = MissingTranslationStrategy.Warning; } - this._i18nNodesByMsgId = _i18nNodesByMsgId; - this.digest = digest; - this.mapperFactory = mapperFactory; - this._i18nToHtml = new I18nToHtmlVisitor(_i18nNodesByMsgId, locale, digest, mapperFactory, missingTranslationStrategy, console); +var SplitInterpolation = /** @class */ (function () { + function SplitInterpolation(strings, expressions, offsets) { + this.strings = strings; + this.expressions = expressions; + this.offsets = offsets; } - // Creates a `TranslationBundle` by parsing the given `content` with the `serializer`. - TranslationBundle.load = function (content, url, serializer, missingTranslationStrategy, console) { - var _a = serializer.load(content, url), locale = _a.locale, i18nNodesByMsgId = _a.i18nNodesByMsgId; - var digestFn = function (m) { return serializer.digest(m); }; - var mapperFactory = function (m) { return serializer.createNameMapper(m); }; - return new TranslationBundle(i18nNodesByMsgId, locale, digestFn, mapperFactory, missingTranslationStrategy, console); - }; - // Returns the translation as HTML nodes from the given source message. - TranslationBundle.prototype.get = function (srcMsg) { - var html = this._i18nToHtml.convert(srcMsg); - if (html.errors.length) { - throw new Error(html.errors.join('\n')); - } - return html.nodes; - }; - TranslationBundle.prototype.has = function (srcMsg) { return this.digest(srcMsg) in this._i18nNodesByMsgId; }; - return TranslationBundle; + return SplitInterpolation; }()); -var I18nToHtmlVisitor = /** @class */ (function () { - function I18nToHtmlVisitor(_i18nNodesByMsgId, _locale, _digest, _mapperFactory, _missingTranslationStrategy, _console) { - if (_i18nNodesByMsgId === void 0) { _i18nNodesByMsgId = {}; } - this._i18nNodesByMsgId = _i18nNodesByMsgId; - this._locale = _locale; - this._digest = _digest; - this._mapperFactory = _mapperFactory; - this._missingTranslationStrategy = _missingTranslationStrategy; - this._console = _console; - this._contextStack = []; - this._errors = []; +var TemplateBindingParseResult = /** @class */ (function () { + function TemplateBindingParseResult(templateBindings, warnings, errors) { + this.templateBindings = templateBindings; + this.warnings = warnings; + this.errors = errors; } - I18nToHtmlVisitor.prototype.convert = function (srcMsg) { - this._contextStack.length = 0; - this._errors.length = 0; - // i18n to text - var text = this._convertToText(srcMsg); - // text to html - var url = srcMsg.nodes[0].sourceSpan.start.file.url; - var html = new HtmlParser().parse(text, url, true); - return { - nodes: html.rootNodes, - errors: Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])(this._errors, html.errors), - }; + return TemplateBindingParseResult; +}()); +function _createInterpolateRegExp(config) { + var pattern = escapeRegExp(config.start) + '([\\s\\S]*?)' + escapeRegExp(config.end); + return new RegExp(pattern, 'g'); +} +var Parser = /** @class */ (function () { + function Parser(_lexer) { + this._lexer = _lexer; + this.errors = []; + } + Parser.prototype.parseAction = function (input, location, interpolationConfig) { + if (interpolationConfig === void 0) { interpolationConfig = DEFAULT_INTERPOLATION_CONFIG; } + this._checkNoInterpolation(input, location, interpolationConfig); + var sourceToLex = this._stripComments(input); + var tokens = this._lexer.tokenize(this._stripComments(input)); + var ast = new _ParseAST(input, location, tokens, sourceToLex.length, true, this.errors, input.length - sourceToLex.length) + .parseChain(); + return new ASTWithSource(ast, input, location, this.errors); }; - I18nToHtmlVisitor.prototype.visitText = function (text, context) { - // `convert()` uses an `HtmlParser` to return `html.Node`s - // we should then make sure that any special characters are escaped - return escapeXml(text.value); + Parser.prototype.parseBinding = function (input, location, interpolationConfig) { + if (interpolationConfig === void 0) { interpolationConfig = DEFAULT_INTERPOLATION_CONFIG; } + var ast = this._parseBindingAst(input, location, interpolationConfig); + return new ASTWithSource(ast, input, location, this.errors); }; - I18nToHtmlVisitor.prototype.visitContainer = function (container, context) { - var _this = this; - return container.children.map(function (n) { return n.visit(_this); }).join(''); + Parser.prototype.parseSimpleBinding = function (input, location, interpolationConfig) { + if (interpolationConfig === void 0) { interpolationConfig = DEFAULT_INTERPOLATION_CONFIG; } + var ast = this._parseBindingAst(input, location, interpolationConfig); + var errors = SimpleExpressionChecker.check(ast); + if (errors.length > 0) { + this._reportError("Host binding expression cannot contain " + errors.join(' '), input, location); + } + return new ASTWithSource(ast, input, location, this.errors); }; - I18nToHtmlVisitor.prototype.visitIcu = function (icu, context) { - var _this = this; - var cases = Object.keys(icu.cases).map(function (k) { return k + " {" + icu.cases[k].visit(_this) + "}"; }); - // TODO(vicb): Once all format switch to using expression placeholders - // we should throw when the placeholder is not in the source message - var exp = this._srcMsg.placeholders.hasOwnProperty(icu.expression) ? - this._srcMsg.placeholders[icu.expression] : - icu.expression; - return "{" + exp + ", " + icu.type + ", " + cases.join(' ') + "}"; + Parser.prototype._reportError = function (message, input, errLocation, ctxLocation) { + this.errors.push(new ParserError(message, input, errLocation, ctxLocation)); }; - I18nToHtmlVisitor.prototype.visitPlaceholder = function (ph, context) { - var phName = this._mapper(ph.name); - if (this._srcMsg.placeholders.hasOwnProperty(phName)) { - return this._srcMsg.placeholders[phName]; - } - if (this._srcMsg.placeholderToMessage.hasOwnProperty(phName)) { - return this._convertToText(this._srcMsg.placeholderToMessage[phName]); + Parser.prototype._parseBindingAst = function (input, location, interpolationConfig) { + // Quotes expressions use 3rd-party expression language. We don't want to use + // our lexer or parser for that, so we check for that ahead of time. + var quote = this._parseQuote(input, location); + if (quote != null) { + return quote; } - this._addError(ph, "Unknown placeholder \"" + ph.name + "\""); - return ''; + this._checkNoInterpolation(input, location, interpolationConfig); + var sourceToLex = this._stripComments(input); + var tokens = this._lexer.tokenize(sourceToLex); + return new _ParseAST(input, location, tokens, sourceToLex.length, false, this.errors, input.length - sourceToLex.length) + .parseChain(); }; - // Loaded message contains only placeholders (vs tag and icu placeholders). - // However when a translation can not be found, we need to serialize the source message - // which can contain tag placeholders - I18nToHtmlVisitor.prototype.visitTagPlaceholder = function (ph, context) { - var _this = this; - var tag = "" + ph.tag; - var attrs = Object.keys(ph.attrs).map(function (name) { return name + "=\"" + ph.attrs[name] + "\""; }).join(' '); - if (ph.isVoid) { - return "<" + tag + " " + attrs + "/>"; - } - var children = ph.children.map(function (c) { return c.visit(_this); }).join(''); - return "<" + tag + " " + attrs + ">" + children + ""; + Parser.prototype._parseQuote = function (input, location) { + if (input == null) + return null; + var prefixSeparatorIndex = input.indexOf(':'); + if (prefixSeparatorIndex == -1) + return null; + var prefix = input.substring(0, prefixSeparatorIndex).trim(); + if (!isIdentifier(prefix)) + return null; + var uninterpretedExpression = input.substring(prefixSeparatorIndex + 1); + return new Quote(new ParseSpan(0, input.length), prefix, uninterpretedExpression, location); }; - // Loaded message contains only placeholders (vs tag and icu placeholders). - // However when a translation can not be found, we need to serialize the source message - // which can contain tag placeholders - I18nToHtmlVisitor.prototype.visitIcuPlaceholder = function (ph, context) { - // An ICU placeholder references the source message to be serialized - return this._convertToText(this._srcMsg.placeholderToMessage[ph.name]); + Parser.prototype.parseTemplateBindings = function (tplKey, tplValue, location) { + var tokens = this._lexer.tokenize(tplValue); + return new _ParseAST(tplValue, location, tokens, tplValue.length, false, this.errors, 0) + .parseTemplateBindings(tplKey); }; - /** - * Convert a source message to a translated text string: - * - text nodes are replaced with their translation, - * - placeholders are replaced with their content, - * - ICU nodes are converted to ICU expressions. - */ - I18nToHtmlVisitor.prototype._convertToText = function (srcMsg) { - var _this = this; - var id = this._digest(srcMsg); - var mapper = this._mapperFactory ? this._mapperFactory(srcMsg) : null; - var nodes; - this._contextStack.push({ msg: this._srcMsg, mapper: this._mapper }); - this._srcMsg = srcMsg; - if (this._i18nNodesByMsgId.hasOwnProperty(id)) { - // When there is a translation use its nodes as the source - // And create a mapper to convert serialized placeholder names to internal names - nodes = this._i18nNodesByMsgId[id]; - this._mapper = function (name) { return mapper ? mapper.toInternalName(name) : name; }; + Parser.prototype.parseInterpolation = function (input, location, interpolationConfig) { + if (interpolationConfig === void 0) { interpolationConfig = DEFAULT_INTERPOLATION_CONFIG; } + var split = this.splitInterpolation(input, location, interpolationConfig); + if (split == null) + return null; + var expressions = []; + for (var i = 0; i < split.expressions.length; ++i) { + var expressionText = split.expressions[i]; + var sourceToLex = this._stripComments(expressionText); + var tokens = this._lexer.tokenize(sourceToLex); + var ast = new _ParseAST(input, location, tokens, sourceToLex.length, false, this.errors, split.offsets[i] + (expressionText.length - sourceToLex.length)) + .parseChain(); + expressions.push(ast); } - else { - // When no translation has been found - // - report an error / a warning / nothing, - // - use the nodes from the original message - // - placeholders are already internal and need no mapper - if (this._missingTranslationStrategy === MissingTranslationStrategy.Error) { - var ctx = this._locale ? " for locale \"" + this._locale + "\"" : ''; - this._addError(srcMsg.nodes[0], "Missing translation for message \"" + id + "\"" + ctx); + return new ASTWithSource(new Interpolation(new ParseSpan(0, input == null ? 0 : input.length), split.strings, expressions), input, location, this.errors); + }; + Parser.prototype.splitInterpolation = function (input, location, interpolationConfig) { + if (interpolationConfig === void 0) { interpolationConfig = DEFAULT_INTERPOLATION_CONFIG; } + var regexp = _createInterpolateRegExp(interpolationConfig); + var parts = input.split(regexp); + if (parts.length <= 1) { + return null; + } + var strings = []; + var expressions = []; + var offsets = []; + var offset = 0; + for (var i = 0; i < parts.length; i++) { + var part = parts[i]; + if (i % 2 === 0) { + // fixed string + strings.push(part); + offset += part.length; } - else if (this._console && - this._missingTranslationStrategy === MissingTranslationStrategy.Warning) { - var ctx = this._locale ? " for locale \"" + this._locale + "\"" : ''; - this._console.warn("Missing translation for message \"" + id + "\"" + ctx); + else if (part.trim().length > 0) { + offset += interpolationConfig.start.length; + expressions.push(part); + offsets.push(offset); + offset += part.length + interpolationConfig.end.length; + } + else { + this._reportError('Blank expressions are not allowed in interpolated strings', input, "at column " + this._findInterpolationErrorColumn(parts, i, interpolationConfig) + " in", location); + expressions.push('$implict'); + offsets.push(offset); } - nodes = srcMsg.nodes; - this._mapper = function (name) { return name; }; } - var text = nodes.map(function (node) { return node.visit(_this); }).join(''); - var context = this._contextStack.pop(); - this._srcMsg = context.msg; - this._mapper = context.mapper; - return text; + return new SplitInterpolation(strings, expressions, offsets); }; - I18nToHtmlVisitor.prototype._addError = function (el, msg) { - this._errors.push(new I18nError(el.sourceSpan, msg)); + Parser.prototype.wrapLiteralPrimitive = function (input, location) { + return new ASTWithSource(new LiteralPrimitive(new ParseSpan(0, input == null ? 0 : input.length), input), input, location, this.errors); }; - return I18nToHtmlVisitor; -}()); - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -var I18NHtmlParser = /** @class */ (function () { - function I18NHtmlParser(_htmlParser, translations, translationsFormat, missingTranslation, console) { - if (missingTranslation === void 0) { missingTranslation = MissingTranslationStrategy.Warning; } - this._htmlParser = _htmlParser; - if (translations) { - var serializer = createSerializer(translationsFormat); - this._translationBundle = - TranslationBundle.load(translations, 'i18n', serializer, missingTranslation, console); + Parser.prototype._stripComments = function (input) { + var i = this._commentStart(input); + return i != null ? input.substring(0, i).trim() : input; + }; + Parser.prototype._commentStart = function (input) { + var outerQuote = null; + for (var i = 0; i < input.length - 1; i++) { + var char = input.charCodeAt(i); + var nextChar = input.charCodeAt(i + 1); + if (char === $SLASH && nextChar == $SLASH && outerQuote == null) + return i; + if (outerQuote === char) { + outerQuote = null; + } + else if (outerQuote == null && isQuote(char)) { + outerQuote = char; + } } - else { - this._translationBundle = - new TranslationBundle({}, null, digest, undefined, missingTranslation, console); + return null; + }; + Parser.prototype._checkNoInterpolation = function (input, location, interpolationConfig) { + var regexp = _createInterpolateRegExp(interpolationConfig); + var parts = input.split(regexp); + if (parts.length > 1) { + this._reportError("Got interpolation (" + interpolationConfig.start + interpolationConfig.end + ") where expression was expected", input, "at column " + this._findInterpolationErrorColumn(parts, 1, interpolationConfig) + " in", location); } - } - I18NHtmlParser.prototype.parse = function (source, url, parseExpansionForms, interpolationConfig) { - if (parseExpansionForms === void 0) { parseExpansionForms = false; } - if (interpolationConfig === void 0) { interpolationConfig = DEFAULT_INTERPOLATION_CONFIG; } - var parseResult = this._htmlParser.parse(source, url, parseExpansionForms, interpolationConfig); - if (parseResult.errors.length) { - return new ParseTreeResult(parseResult.rootNodes, parseResult.errors); + }; + Parser.prototype._findInterpolationErrorColumn = function (parts, partInErrIdx, interpolationConfig) { + var errLocation = ''; + for (var j = 0; j < partInErrIdx; j++) { + errLocation += j % 2 === 0 ? + parts[j] : + "" + interpolationConfig.start + parts[j] + interpolationConfig.end; } - return mergeTranslations(parseResult.rootNodes, this._translationBundle, interpolationConfig, [], {}); + return errLocation.length; }; - return I18NHtmlParser; + return Parser; }()); -function createSerializer(format) { - format = (format || 'xlf').toLowerCase(); - switch (format) { - case 'xmb': - return new Xmb(); - case 'xtb': - return new Xtb(); - case 'xliff2': - case 'xlf2': - return new Xliff2(); - case 'xliff': - case 'xlf': - default: - return new Xliff(); - } -} - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -var CORE = '@angular/core'; -var Identifiers = /** @class */ (function () { - function Identifiers() { +var _ParseAST = /** @class */ (function () { + function _ParseAST(input, location, tokens, inputLength, parseAction, errors, offset) { + this.input = input; + this.location = location; + this.tokens = tokens; + this.inputLength = inputLength; + this.parseAction = parseAction; + this.errors = errors; + this.offset = offset; + this.rparensExpected = 0; + this.rbracketsExpected = 0; + this.rbracesExpected = 0; + this.index = 0; } - Identifiers.ANALYZE_FOR_ENTRY_COMPONENTS = { - name: 'ANALYZE_FOR_ENTRY_COMPONENTS', - moduleName: CORE, - }; - Identifiers.ElementRef = { name: 'ElementRef', moduleName: CORE }; - Identifiers.NgModuleRef = { name: 'NgModuleRef', moduleName: CORE }; - Identifiers.ViewContainerRef = { name: 'ViewContainerRef', moduleName: CORE }; - Identifiers.ChangeDetectorRef = { - name: 'ChangeDetectorRef', - moduleName: CORE, - }; - Identifiers.QueryList = { name: 'QueryList', moduleName: CORE }; - Identifiers.TemplateRef = { name: 'TemplateRef', moduleName: CORE }; - Identifiers.CodegenComponentFactoryResolver = { - name: 'ɵCodegenComponentFactoryResolver', - moduleName: CORE, - }; - Identifiers.ComponentFactoryResolver = { - name: 'ComponentFactoryResolver', - moduleName: CORE, - }; - Identifiers.ComponentFactory = { name: 'ComponentFactory', moduleName: CORE }; - Identifiers.ComponentRef = { name: 'ComponentRef', moduleName: CORE }; - Identifiers.NgModuleFactory = { name: 'NgModuleFactory', moduleName: CORE }; - Identifiers.createModuleFactory = { - name: 'ɵcmf', - moduleName: CORE, - }; - Identifiers.moduleDef = { - name: 'ɵmod', - moduleName: CORE, - }; - Identifiers.moduleProviderDef = { - name: 'ɵmpd', - moduleName: CORE, - }; - Identifiers.RegisterModuleFactoryFn = { - name: 'ɵregisterModuleFactory', - moduleName: CORE, - }; - Identifiers.inject = { name: 'inject', moduleName: CORE }; - Identifiers.INJECTOR = { name: 'INJECTOR', moduleName: CORE }; - Identifiers.Injector = { name: 'Injector', moduleName: CORE }; - Identifiers.defineInjectable = { name: 'defineInjectable', moduleName: CORE }; - Identifiers.ViewEncapsulation = { - name: 'ViewEncapsulation', - moduleName: CORE, - }; - Identifiers.ChangeDetectionStrategy = { - name: 'ChangeDetectionStrategy', - moduleName: CORE, - }; - Identifiers.SecurityContext = { - name: 'SecurityContext', - moduleName: CORE, - }; - Identifiers.LOCALE_ID = { name: 'LOCALE_ID', moduleName: CORE }; - Identifiers.TRANSLATIONS_FORMAT = { - name: 'TRANSLATIONS_FORMAT', - moduleName: CORE, - }; - Identifiers.inlineInterpolate = { - name: 'ɵinlineInterpolate', - moduleName: CORE, - }; - Identifiers.interpolate = { name: 'ɵinterpolate', moduleName: CORE }; - Identifiers.EMPTY_ARRAY = { name: 'ɵEMPTY_ARRAY', moduleName: CORE }; - Identifiers.EMPTY_MAP = { name: 'ɵEMPTY_MAP', moduleName: CORE }; - Identifiers.Renderer = { name: 'Renderer', moduleName: CORE }; - Identifiers.viewDef = { name: 'ɵvid', moduleName: CORE }; - Identifiers.elementDef = { name: 'ɵeld', moduleName: CORE }; - Identifiers.anchorDef = { name: 'ɵand', moduleName: CORE }; - Identifiers.textDef = { name: 'ɵted', moduleName: CORE }; - Identifiers.directiveDef = { name: 'ɵdid', moduleName: CORE }; - Identifiers.providerDef = { name: 'ɵprd', moduleName: CORE }; - Identifiers.queryDef = { name: 'ɵqud', moduleName: CORE }; - Identifiers.pureArrayDef = { name: 'ɵpad', moduleName: CORE }; - Identifiers.pureObjectDef = { name: 'ɵpod', moduleName: CORE }; - Identifiers.purePipeDef = { name: 'ɵppd', moduleName: CORE }; - Identifiers.pipeDef = { name: 'ɵpid', moduleName: CORE }; - Identifiers.nodeValue = { name: 'ɵnov', moduleName: CORE }; - Identifiers.ngContentDef = { name: 'ɵncd', moduleName: CORE }; - Identifiers.unwrapValue = { name: 'ɵunv', moduleName: CORE }; - Identifiers.createRendererType2 = { name: 'ɵcrt', moduleName: CORE }; - // type only - Identifiers.RendererType2 = { - name: 'RendererType2', - moduleName: CORE, - }; - // type only - Identifiers.ViewDefinition = { - name: 'ɵViewDefinition', - moduleName: CORE, + _ParseAST.prototype.peek = function (offset) { + var i = this.index + offset; + return i < this.tokens.length ? this.tokens[i] : EOF; }; - Identifiers.createComponentFactory = { name: 'ɵccf', moduleName: CORE }; - return Identifiers; -}()); -function createTokenForReference(reference) { - return { identifier: { reference: reference } }; -} -function createTokenForExternalReference(reflector, reference) { - return createTokenForReference(reflector.resolveExternalReference(reference)); -} - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -//// Types -var TypeModifier; -(function (TypeModifier) { - TypeModifier[TypeModifier["Const"] = 0] = "Const"; -})(TypeModifier || (TypeModifier = {})); -var Type$1 = /** @class */ (function () { - function Type(modifiers) { - if (modifiers === void 0) { modifiers = null; } - this.modifiers = modifiers; - if (!modifiers) { - this.modifiers = []; + Object.defineProperty(_ParseAST.prototype, "next", { + get: function () { return this.peek(0); }, + enumerable: true, + configurable: true + }); + Object.defineProperty(_ParseAST.prototype, "inputIndex", { + get: function () { + return (this.index < this.tokens.length) ? this.next.index + this.offset : + this.inputLength + this.offset; + }, + enumerable: true, + configurable: true + }); + _ParseAST.prototype.span = function (start) { return new ParseSpan(start, this.inputIndex); }; + _ParseAST.prototype.advance = function () { this.index++; }; + _ParseAST.prototype.optionalCharacter = function (code) { + if (this.next.isCharacter(code)) { + this.advance(); + return true; + } + else { + return false; } - } - Type.prototype.hasModifier = function (modifier) { return this.modifiers.indexOf(modifier) !== -1; }; - return Type; -}()); -var BuiltinTypeName; -(function (BuiltinTypeName) { - BuiltinTypeName[BuiltinTypeName["Dynamic"] = 0] = "Dynamic"; - BuiltinTypeName[BuiltinTypeName["Bool"] = 1] = "Bool"; - BuiltinTypeName[BuiltinTypeName["String"] = 2] = "String"; - BuiltinTypeName[BuiltinTypeName["Int"] = 3] = "Int"; - BuiltinTypeName[BuiltinTypeName["Number"] = 4] = "Number"; - BuiltinTypeName[BuiltinTypeName["Function"] = 5] = "Function"; - BuiltinTypeName[BuiltinTypeName["Inferred"] = 6] = "Inferred"; -})(BuiltinTypeName || (BuiltinTypeName = {})); -var BuiltinType = /** @class */ (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(BuiltinType, _super); - function BuiltinType(name, modifiers) { - if (modifiers === void 0) { modifiers = null; } - var _this = _super.call(this, modifiers) || this; - _this.name = name; - return _this; - } - BuiltinType.prototype.visitType = function (visitor, context) { - return visitor.visitBuiltinType(this, context); - }; - return BuiltinType; -}(Type$1)); -var ExpressionType = /** @class */ (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(ExpressionType, _super); - function ExpressionType(value, modifiers) { - if (modifiers === void 0) { modifiers = null; } - var _this = _super.call(this, modifiers) || this; - _this.value = value; - return _this; - } - ExpressionType.prototype.visitType = function (visitor, context) { - return visitor.visitExpressionType(this, context); }; - return ExpressionType; -}(Type$1)); -var ArrayType = /** @class */ (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(ArrayType, _super); - function ArrayType(of, modifiers) { - if (modifiers === void 0) { modifiers = null; } - var _this = _super.call(this, modifiers) || this; - _this.of = of; - return _this; - } - ArrayType.prototype.visitType = function (visitor, context) { - return visitor.visitArrayType(this, context); + _ParseAST.prototype.peekKeywordLet = function () { return this.next.isKeywordLet(); }; + _ParseAST.prototype.peekKeywordAs = function () { return this.next.isKeywordAs(); }; + _ParseAST.prototype.expectCharacter = function (code) { + if (this.optionalCharacter(code)) + return; + this.error("Missing expected " + String.fromCharCode(code)); }; - return ArrayType; -}(Type$1)); -var MapType = /** @class */ (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(MapType, _super); - function MapType(valueType, modifiers) { - if (modifiers === void 0) { modifiers = null; } - var _this = _super.call(this, modifiers) || this; - _this.valueType = valueType || null; - return _this; - } - MapType.prototype.visitType = function (visitor, context) { return visitor.visitMapType(this, context); }; - return MapType; -}(Type$1)); -var DYNAMIC_TYPE = new BuiltinType(BuiltinTypeName.Dynamic); -var INFERRED_TYPE = new BuiltinType(BuiltinTypeName.Inferred); -var BOOL_TYPE = new BuiltinType(BuiltinTypeName.Bool); -var INT_TYPE = new BuiltinType(BuiltinTypeName.Int); -var NUMBER_TYPE = new BuiltinType(BuiltinTypeName.Number); -var STRING_TYPE = new BuiltinType(BuiltinTypeName.String); -var FUNCTION_TYPE = new BuiltinType(BuiltinTypeName.Function); -///// Expressions -var BinaryOperator; -(function (BinaryOperator) { - BinaryOperator[BinaryOperator["Equals"] = 0] = "Equals"; - BinaryOperator[BinaryOperator["NotEquals"] = 1] = "NotEquals"; - BinaryOperator[BinaryOperator["Identical"] = 2] = "Identical"; - BinaryOperator[BinaryOperator["NotIdentical"] = 3] = "NotIdentical"; - BinaryOperator[BinaryOperator["Minus"] = 4] = "Minus"; - BinaryOperator[BinaryOperator["Plus"] = 5] = "Plus"; - BinaryOperator[BinaryOperator["Divide"] = 6] = "Divide"; - BinaryOperator[BinaryOperator["Multiply"] = 7] = "Multiply"; - BinaryOperator[BinaryOperator["Modulo"] = 8] = "Modulo"; - BinaryOperator[BinaryOperator["And"] = 9] = "And"; - BinaryOperator[BinaryOperator["Or"] = 10] = "Or"; - BinaryOperator[BinaryOperator["BitwiseAnd"] = 11] = "BitwiseAnd"; - BinaryOperator[BinaryOperator["Lower"] = 12] = "Lower"; - BinaryOperator[BinaryOperator["LowerEquals"] = 13] = "LowerEquals"; - BinaryOperator[BinaryOperator["Bigger"] = 14] = "Bigger"; - BinaryOperator[BinaryOperator["BiggerEquals"] = 15] = "BiggerEquals"; -})(BinaryOperator || (BinaryOperator = {})); -function nullSafeIsEquivalent(base, other) { - if (base == null || other == null) { - return base == other; - } - return base.isEquivalent(other); -} -function areAllEquivalent(base, other) { - var len = base.length; - if (len !== other.length) { - return false; - } - for (var i = 0; i < len; i++) { - if (!base[i].isEquivalent(other[i])) { + _ParseAST.prototype.optionalOperator = function (op) { + if (this.next.isOperator(op)) { + this.advance(); + return true; + } + else { return false; } - } - return true; -} -var Expression = /** @class */ (function () { - function Expression(type, sourceSpan) { - this.type = type || null; - this.sourceSpan = sourceSpan || null; - } - Expression.prototype.prop = function (name, sourceSpan) { - return new ReadPropExpr(this, name, null, sourceSpan); - }; - Expression.prototype.key = function (index, type, sourceSpan) { - return new ReadKeyExpr(this, index, type, sourceSpan); }; - Expression.prototype.callMethod = function (name, params, sourceSpan) { - return new InvokeMethodExpr(this, name, params, null, sourceSpan); + _ParseAST.prototype.expectOperator = function (operator) { + if (this.optionalOperator(operator)) + return; + this.error("Missing expected operator " + operator); }; - Expression.prototype.callFn = function (params, sourceSpan) { - return new InvokeFunctionExpr(this, params, null, sourceSpan); + _ParseAST.prototype.expectIdentifierOrKeyword = function () { + var n = this.next; + if (!n.isIdentifier() && !n.isKeyword()) { + this.error("Unexpected token " + n + ", expected identifier or keyword"); + return ''; + } + this.advance(); + return n.toString(); }; - Expression.prototype.instantiate = function (params, type, sourceSpan) { - return new InstantiateExpr(this, params, type, sourceSpan); + _ParseAST.prototype.expectIdentifierOrKeywordOrString = function () { + var n = this.next; + if (!n.isIdentifier() && !n.isKeyword() && !n.isString()) { + this.error("Unexpected token " + n + ", expected identifier, keyword, or string"); + return ''; + } + this.advance(); + return n.toString(); }; - Expression.prototype.conditional = function (trueCase, falseCase, sourceSpan) { - if (falseCase === void 0) { falseCase = null; } - return new ConditionalExpr(this, trueCase, falseCase, null, sourceSpan); + _ParseAST.prototype.parseChain = function () { + var exprs = []; + var start = this.inputIndex; + while (this.index < this.tokens.length) { + var expr = this.parsePipe(); + exprs.push(expr); + if (this.optionalCharacter($SEMICOLON)) { + if (!this.parseAction) { + this.error('Binding expression cannot contain chained expression'); + } + while (this.optionalCharacter($SEMICOLON)) { + } // read all semicolons + } + else if (this.index < this.tokens.length) { + this.error("Unexpected token '" + this.next + "'"); + } + } + if (exprs.length == 0) + return new EmptyExpr(this.span(start)); + if (exprs.length == 1) + return exprs[0]; + return new Chain(this.span(start), exprs); }; - Expression.prototype.equals = function (rhs, sourceSpan) { - return new BinaryOperatorExpr(BinaryOperator.Equals, this, rhs, null, sourceSpan); + _ParseAST.prototype.parsePipe = function () { + var result = this.parseExpression(); + if (this.optionalOperator('|')) { + if (this.parseAction) { + this.error('Cannot have a pipe in an action expression'); + } + do { + var name_1 = this.expectIdentifierOrKeyword(); + var args = []; + while (this.optionalCharacter($COLON)) { + args.push(this.parseExpression()); + } + result = new BindingPipe(this.span(result.span.start), result, name_1, args); + } while (this.optionalOperator('|')); + } + return result; }; - Expression.prototype.notEquals = function (rhs, sourceSpan) { - return new BinaryOperatorExpr(BinaryOperator.NotEquals, this, rhs, null, sourceSpan); + _ParseAST.prototype.parseExpression = function () { return this.parseConditional(); }; + _ParseAST.prototype.parseConditional = function () { + var start = this.inputIndex; + var result = this.parseLogicalOr(); + if (this.optionalOperator('?')) { + var yes = this.parsePipe(); + var no = void 0; + if (!this.optionalCharacter($COLON)) { + var end = this.inputIndex; + var expression = this.input.substring(start, end); + this.error("Conditional expression " + expression + " requires all 3 expressions"); + no = new EmptyExpr(this.span(start)); + } + else { + no = this.parsePipe(); + } + return new Conditional(this.span(start), result, yes, no); + } + else { + return result; + } }; - Expression.prototype.identical = function (rhs, sourceSpan) { - return new BinaryOperatorExpr(BinaryOperator.Identical, this, rhs, null, sourceSpan); + _ParseAST.prototype.parseLogicalOr = function () { + // '||' + var result = this.parseLogicalAnd(); + while (this.optionalOperator('||')) { + var right = this.parseLogicalAnd(); + result = new Binary(this.span(result.span.start), '||', result, right); + } + return result; }; - Expression.prototype.notIdentical = function (rhs, sourceSpan) { - return new BinaryOperatorExpr(BinaryOperator.NotIdentical, this, rhs, null, sourceSpan); + _ParseAST.prototype.parseLogicalAnd = function () { + // '&&' + var result = this.parseEquality(); + while (this.optionalOperator('&&')) { + var right = this.parseEquality(); + result = new Binary(this.span(result.span.start), '&&', result, right); + } + return result; }; - Expression.prototype.minus = function (rhs, sourceSpan) { - return new BinaryOperatorExpr(BinaryOperator.Minus, this, rhs, null, sourceSpan); + _ParseAST.prototype.parseEquality = function () { + // '==','!=','===','!==' + var result = this.parseRelational(); + while (this.next.type == TokenType.Operator) { + var operator = this.next.strValue; + switch (operator) { + case '==': + case '===': + case '!=': + case '!==': + this.advance(); + var right = this.parseRelational(); + result = new Binary(this.span(result.span.start), operator, result, right); + continue; + } + break; + } + return result; }; - Expression.prototype.plus = function (rhs, sourceSpan) { - return new BinaryOperatorExpr(BinaryOperator.Plus, this, rhs, null, sourceSpan); + _ParseAST.prototype.parseRelational = function () { + // '<', '>', '<=', '>=' + var result = this.parseAdditive(); + while (this.next.type == TokenType.Operator) { + var operator = this.next.strValue; + switch (operator) { + case '<': + case '>': + case '<=': + case '>=': + this.advance(); + var right = this.parseAdditive(); + result = new Binary(this.span(result.span.start), operator, result, right); + continue; + } + break; + } + return result; }; - Expression.prototype.divide = function (rhs, sourceSpan) { - return new BinaryOperatorExpr(BinaryOperator.Divide, this, rhs, null, sourceSpan); + _ParseAST.prototype.parseAdditive = function () { + // '+', '-' + var result = this.parseMultiplicative(); + while (this.next.type == TokenType.Operator) { + var operator = this.next.strValue; + switch (operator) { + case '+': + case '-': + this.advance(); + var right = this.parseMultiplicative(); + result = new Binary(this.span(result.span.start), operator, result, right); + continue; + } + break; + } + return result; }; - Expression.prototype.multiply = function (rhs, sourceSpan) { - return new BinaryOperatorExpr(BinaryOperator.Multiply, this, rhs, null, sourceSpan); + _ParseAST.prototype.parseMultiplicative = function () { + // '*', '%', '/' + var result = this.parsePrefix(); + while (this.next.type == TokenType.Operator) { + var operator = this.next.strValue; + switch (operator) { + case '*': + case '%': + case '/': + this.advance(); + var right = this.parsePrefix(); + result = new Binary(this.span(result.span.start), operator, result, right); + continue; + } + break; + } + return result; }; - Expression.prototype.modulo = function (rhs, sourceSpan) { - return new BinaryOperatorExpr(BinaryOperator.Modulo, this, rhs, null, sourceSpan); + _ParseAST.prototype.parsePrefix = function () { + if (this.next.type == TokenType.Operator) { + var start = this.inputIndex; + var operator = this.next.strValue; + var result = void 0; + switch (operator) { + case '+': + this.advance(); + result = this.parsePrefix(); + return new Binary(this.span(start), '-', result, new LiteralPrimitive(new ParseSpan(start, start), 0)); + case '-': + this.advance(); + result = this.parsePrefix(); + return new Binary(this.span(start), operator, new LiteralPrimitive(new ParseSpan(start, start), 0), result); + case '!': + this.advance(); + result = this.parsePrefix(); + return new PrefixNot(this.span(start), result); + } + } + return this.parseCallChain(); }; - Expression.prototype.and = function (rhs, sourceSpan) { - return new BinaryOperatorExpr(BinaryOperator.And, this, rhs, null, sourceSpan); - }; - Expression.prototype.bitwiseAnd = function (rhs, sourceSpan, parens) { - if (parens === void 0) { parens = true; } - return new BinaryOperatorExpr(BinaryOperator.BitwiseAnd, this, rhs, null, sourceSpan, parens); - }; - Expression.prototype.or = function (rhs, sourceSpan) { - return new BinaryOperatorExpr(BinaryOperator.Or, this, rhs, null, sourceSpan); - }; - Expression.prototype.lower = function (rhs, sourceSpan) { - return new BinaryOperatorExpr(BinaryOperator.Lower, this, rhs, null, sourceSpan); - }; - Expression.prototype.lowerEquals = function (rhs, sourceSpan) { - return new BinaryOperatorExpr(BinaryOperator.LowerEquals, this, rhs, null, sourceSpan); - }; - Expression.prototype.bigger = function (rhs, sourceSpan) { - return new BinaryOperatorExpr(BinaryOperator.Bigger, this, rhs, null, sourceSpan); - }; - Expression.prototype.biggerEquals = function (rhs, sourceSpan) { - return new BinaryOperatorExpr(BinaryOperator.BiggerEquals, this, rhs, null, sourceSpan); - }; - Expression.prototype.isBlank = function (sourceSpan) { - // Note: We use equals by purpose here to compare to null and undefined in JS. - // We use the typed null to allow strictNullChecks to narrow types. - return this.equals(TYPED_NULL_EXPR, sourceSpan); - }; - Expression.prototype.cast = function (type, sourceSpan) { - return new CastExpr(this, type, sourceSpan); + _ParseAST.prototype.parseCallChain = function () { + var result = this.parsePrimary(); + while (true) { + if (this.optionalCharacter($PERIOD)) { + result = this.parseAccessMemberOrMethodCall(result, false); + } + else if (this.optionalOperator('?.')) { + result = this.parseAccessMemberOrMethodCall(result, true); + } + else if (this.optionalCharacter($LBRACKET)) { + this.rbracketsExpected++; + var key = this.parsePipe(); + this.rbracketsExpected--; + this.expectCharacter($RBRACKET); + if (this.optionalOperator('=')) { + var value = this.parseConditional(); + result = new KeyedWrite(this.span(result.span.start), result, key, value); + } + else { + result = new KeyedRead(this.span(result.span.start), result, key); + } + } + else if (this.optionalCharacter($LPAREN)) { + this.rparensExpected++; + var args = this.parseCallArguments(); + this.rparensExpected--; + this.expectCharacter($RPAREN); + result = new FunctionCall(this.span(result.span.start), result, args); + } + else if (this.optionalOperator('!')) { + result = new NonNullAssert(this.span(result.span.start), result); + } + else { + return result; + } + } }; - Expression.prototype.toStmt = function () { return new ExpressionStatement(this, null); }; - return Expression; -}()); -var BuiltinVar; -(function (BuiltinVar) { - BuiltinVar[BuiltinVar["This"] = 0] = "This"; - BuiltinVar[BuiltinVar["Super"] = 1] = "Super"; - BuiltinVar[BuiltinVar["CatchError"] = 2] = "CatchError"; - BuiltinVar[BuiltinVar["CatchStack"] = 3] = "CatchStack"; -})(BuiltinVar || (BuiltinVar = {})); -var ReadVarExpr = /** @class */ (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(ReadVarExpr, _super); - function ReadVarExpr(name, type, sourceSpan) { - var _this = _super.call(this, type, sourceSpan) || this; - if (typeof name === 'string') { - _this.name = name; - _this.builtin = null; + _ParseAST.prototype.parsePrimary = function () { + var start = this.inputIndex; + if (this.optionalCharacter($LPAREN)) { + this.rparensExpected++; + var result = this.parsePipe(); + this.rparensExpected--; + this.expectCharacter($RPAREN); + return result; + } + else if (this.next.isKeywordNull()) { + this.advance(); + return new LiteralPrimitive(this.span(start), null); + } + else if (this.next.isKeywordUndefined()) { + this.advance(); + return new LiteralPrimitive(this.span(start), void 0); + } + else if (this.next.isKeywordTrue()) { + this.advance(); + return new LiteralPrimitive(this.span(start), true); + } + else if (this.next.isKeywordFalse()) { + this.advance(); + return new LiteralPrimitive(this.span(start), false); + } + else if (this.next.isKeywordThis()) { + this.advance(); + return new ImplicitReceiver(this.span(start)); + } + else if (this.optionalCharacter($LBRACKET)) { + this.rbracketsExpected++; + var elements = this.parseExpressionList($RBRACKET); + this.rbracketsExpected--; + this.expectCharacter($RBRACKET); + return new LiteralArray(this.span(start), elements); + } + else if (this.next.isCharacter($LBRACE)) { + return this.parseLiteralMap(); + } + else if (this.next.isIdentifier()) { + return this.parseAccessMemberOrMethodCall(new ImplicitReceiver(this.span(start)), false); + } + else if (this.next.isNumber()) { + var value = this.next.toNumber(); + this.advance(); + return new LiteralPrimitive(this.span(start), value); + } + else if (this.next.isString()) { + var literalValue = this.next.toString(); + this.advance(); + return new LiteralPrimitive(this.span(start), literalValue); + } + else if (this.index >= this.tokens.length) { + this.error("Unexpected end of expression: " + this.input); + return new EmptyExpr(this.span(start)); } else { - _this.name = null; - _this.builtin = name; + this.error("Unexpected token " + this.next); + return new EmptyExpr(this.span(start)); } - return _this; - } - ReadVarExpr.prototype.isEquivalent = function (e) { - return e instanceof ReadVarExpr && this.name === e.name && this.builtin === e.builtin; - }; - ReadVarExpr.prototype.isConstant = function () { return false; }; - ReadVarExpr.prototype.visitExpression = function (visitor, context) { - return visitor.visitReadVarExpr(this, context); }; - ReadVarExpr.prototype.set = function (value) { - if (!this.name) { - throw new Error("Built in variable " + this.builtin + " can not be assigned to."); + _ParseAST.prototype.parseExpressionList = function (terminator) { + var result = []; + if (!this.next.isCharacter(terminator)) { + do { + result.push(this.parsePipe()); + } while (this.optionalCharacter($COMMA)); } - return new WriteVarExpr(this.name, value, null, this.sourceSpan); - }; - return ReadVarExpr; -}(Expression)); -var WriteVarExpr = /** @class */ (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(WriteVarExpr, _super); - function WriteVarExpr(name, value, type, sourceSpan) { - var _this = _super.call(this, type || value.type, sourceSpan) || this; - _this.name = name; - _this.value = value; - return _this; - } - WriteVarExpr.prototype.isEquivalent = function (e) { - return e instanceof WriteVarExpr && this.name === e.name && this.value.isEquivalent(e.value); - }; - WriteVarExpr.prototype.isConstant = function () { return false; }; - WriteVarExpr.prototype.visitExpression = function (visitor, context) { - return visitor.visitWriteVarExpr(this, context); - }; - WriteVarExpr.prototype.toDeclStmt = function (type, modifiers) { - return new DeclareVarStmt(this.name, this.value, type, modifiers, this.sourceSpan); - }; - return WriteVarExpr; -}(Expression)); -var WriteKeyExpr = /** @class */ (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(WriteKeyExpr, _super); - function WriteKeyExpr(receiver, index, value, type, sourceSpan) { - var _this = _super.call(this, type || value.type, sourceSpan) || this; - _this.receiver = receiver; - _this.index = index; - _this.value = value; - return _this; - } - WriteKeyExpr.prototype.isEquivalent = function (e) { - return e instanceof WriteKeyExpr && this.receiver.isEquivalent(e.receiver) && - this.index.isEquivalent(e.index) && this.value.isEquivalent(e.value); - }; - WriteKeyExpr.prototype.isConstant = function () { return false; }; - WriteKeyExpr.prototype.visitExpression = function (visitor, context) { - return visitor.visitWriteKeyExpr(this, context); - }; - return WriteKeyExpr; -}(Expression)); -var WritePropExpr = /** @class */ (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(WritePropExpr, _super); - function WritePropExpr(receiver, name, value, type, sourceSpan) { - var _this = _super.call(this, type || value.type, sourceSpan) || this; - _this.receiver = receiver; - _this.name = name; - _this.value = value; - return _this; - } - WritePropExpr.prototype.isEquivalent = function (e) { - return e instanceof WritePropExpr && this.receiver.isEquivalent(e.receiver) && - this.name === e.name && this.value.isEquivalent(e.value); + return result; }; - WritePropExpr.prototype.isConstant = function () { return false; }; - WritePropExpr.prototype.visitExpression = function (visitor, context) { - return visitor.visitWritePropExpr(this, context); + _ParseAST.prototype.parseLiteralMap = function () { + var keys = []; + var values = []; + var start = this.inputIndex; + this.expectCharacter($LBRACE); + if (!this.optionalCharacter($RBRACE)) { + this.rbracesExpected++; + do { + var quoted = this.next.isString(); + var key = this.expectIdentifierOrKeywordOrString(); + keys.push({ key: key, quoted: quoted }); + this.expectCharacter($COLON); + values.push(this.parsePipe()); + } while (this.optionalCharacter($COMMA)); + this.rbracesExpected--; + this.expectCharacter($RBRACE); + } + return new LiteralMap(this.span(start), keys, values); }; - return WritePropExpr; -}(Expression)); -var BuiltinMethod; -(function (BuiltinMethod) { - BuiltinMethod[BuiltinMethod["ConcatArray"] = 0] = "ConcatArray"; - BuiltinMethod[BuiltinMethod["SubscribeObservable"] = 1] = "SubscribeObservable"; - BuiltinMethod[BuiltinMethod["Bind"] = 2] = "Bind"; -})(BuiltinMethod || (BuiltinMethod = {})); -var InvokeMethodExpr = /** @class */ (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(InvokeMethodExpr, _super); - function InvokeMethodExpr(receiver, method, args, type, sourceSpan) { - var _this = _super.call(this, type, sourceSpan) || this; - _this.receiver = receiver; - _this.args = args; - if (typeof method === 'string') { - _this.name = method; - _this.builtin = null; + _ParseAST.prototype.parseAccessMemberOrMethodCall = function (receiver, isSafe) { + if (isSafe === void 0) { isSafe = false; } + var start = receiver.span.start; + var id = this.expectIdentifierOrKeyword(); + if (this.optionalCharacter($LPAREN)) { + this.rparensExpected++; + var args = this.parseCallArguments(); + this.expectCharacter($RPAREN); + this.rparensExpected--; + var span = this.span(start); + return isSafe ? new SafeMethodCall(span, receiver, id, args) : + new MethodCall(span, receiver, id, args); } else { - _this.name = null; - _this.builtin = method; + if (isSafe) { + if (this.optionalOperator('=')) { + this.error('The \'?.\' operator cannot be used in the assignment'); + return new EmptyExpr(this.span(start)); + } + else { + return new SafePropertyRead(this.span(start), receiver, id); + } + } + else { + if (this.optionalOperator('=')) { + if (!this.parseAction) { + this.error('Bindings cannot contain assignments'); + return new EmptyExpr(this.span(start)); + } + var value = this.parseConditional(); + return new PropertyWrite(this.span(start), receiver, id, value); + } + else { + return new PropertyRead(this.span(start), receiver, id); + } + } } - return _this; - } - InvokeMethodExpr.prototype.isEquivalent = function (e) { - return e instanceof InvokeMethodExpr && this.receiver.isEquivalent(e.receiver) && - this.name === e.name && this.builtin === e.builtin && areAllEquivalent(this.args, e.args); - }; - InvokeMethodExpr.prototype.isConstant = function () { return false; }; - InvokeMethodExpr.prototype.visitExpression = function (visitor, context) { - return visitor.visitInvokeMethodExpr(this, context); - }; - return InvokeMethodExpr; -}(Expression)); -var InvokeFunctionExpr = /** @class */ (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(InvokeFunctionExpr, _super); - function InvokeFunctionExpr(fn, args, type, sourceSpan) { - var _this = _super.call(this, type, sourceSpan) || this; - _this.fn = fn; - _this.args = args; - return _this; - } - InvokeFunctionExpr.prototype.isEquivalent = function (e) { - return e instanceof InvokeFunctionExpr && this.fn.isEquivalent(e.fn) && - areAllEquivalent(this.args, e.args); - }; - InvokeFunctionExpr.prototype.isConstant = function () { return false; }; - InvokeFunctionExpr.prototype.visitExpression = function (visitor, context) { - return visitor.visitInvokeFunctionExpr(this, context); }; - return InvokeFunctionExpr; -}(Expression)); -var InstantiateExpr = /** @class */ (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(InstantiateExpr, _super); - function InstantiateExpr(classExpr, args, type, sourceSpan) { - var _this = _super.call(this, type, sourceSpan) || this; - _this.classExpr = classExpr; - _this.args = args; - return _this; - } - InstantiateExpr.prototype.isEquivalent = function (e) { - return e instanceof InstantiateExpr && this.classExpr.isEquivalent(e.classExpr) && - areAllEquivalent(this.args, e.args); + _ParseAST.prototype.parseCallArguments = function () { + if (this.next.isCharacter($RPAREN)) + return []; + var positionals = []; + do { + positionals.push(this.parsePipe()); + } while (this.optionalCharacter($COMMA)); + return positionals; }; - InstantiateExpr.prototype.isConstant = function () { return false; }; - InstantiateExpr.prototype.visitExpression = function (visitor, context) { - return visitor.visitInstantiateExpr(this, context); + /** + * An identifier, a keyword, a string with an optional `-` in between. + */ + _ParseAST.prototype.expectTemplateBindingKey = function () { + var result = ''; + var operatorFound = false; + do { + result += this.expectIdentifierOrKeywordOrString(); + operatorFound = this.optionalOperator('-'); + if (operatorFound) { + result += '-'; + } + } while (operatorFound); + return result.toString(); }; - return InstantiateExpr; -}(Expression)); -var LiteralExpr = /** @class */ (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(LiteralExpr, _super); - function LiteralExpr(value, type, sourceSpan) { - var _this = _super.call(this, type, sourceSpan) || this; - _this.value = value; - return _this; - } - LiteralExpr.prototype.isEquivalent = function (e) { - return e instanceof LiteralExpr && this.value === e.value; + // Parses the AST for `` + _ParseAST.prototype.parseTemplateBindings = function (tplKey) { + var firstBinding = true; + var bindings = []; + var warnings = []; + do { + var start = this.inputIndex; + var rawKey = void 0; + var key = void 0; + var isVar = false; + if (firstBinding) { + rawKey = key = tplKey; + firstBinding = false; + } + else { + isVar = this.peekKeywordLet(); + if (isVar) + this.advance(); + rawKey = this.expectTemplateBindingKey(); + key = isVar ? rawKey : tplKey + rawKey[0].toUpperCase() + rawKey.substring(1); + this.optionalCharacter($COLON); + } + var name_2 = null; + var expression = null; + if (isVar) { + if (this.optionalOperator('=')) { + name_2 = this.expectTemplateBindingKey(); + } + else { + name_2 = '\$implicit'; + } + } + else if (this.peekKeywordAs()) { + this.advance(); // consume `as` + name_2 = rawKey; + key = this.expectTemplateBindingKey(); // read local var name + isVar = true; + } + else if (this.next !== EOF && !this.peekKeywordLet()) { + var start_1 = this.inputIndex; + var ast = this.parsePipe(); + var source = this.input.substring(start_1 - this.offset, this.inputIndex - this.offset); + expression = new ASTWithSource(ast, source, this.location, this.errors); + } + bindings.push(new TemplateBinding(this.span(start), key, isVar, name_2, expression)); + if (this.peekKeywordAs() && !isVar) { + var letStart = this.inputIndex; + this.advance(); // consume `as` + var letName = this.expectTemplateBindingKey(); // read local var name + bindings.push(new TemplateBinding(this.span(letStart), letName, true, key, null)); + } + if (!this.optionalCharacter($SEMICOLON)) { + this.optionalCharacter($COMMA); + } + } while (this.index < this.tokens.length); + return new TemplateBindingParseResult(bindings, warnings, this.errors); }; - LiteralExpr.prototype.isConstant = function () { return true; }; - LiteralExpr.prototype.visitExpression = function (visitor, context) { - return visitor.visitLiteralExpr(this, context); + _ParseAST.prototype.error = function (message, index) { + if (index === void 0) { index = null; } + this.errors.push(new ParserError(message, this.input, this.locationText(index), this.location)); + this.skip(); }; - return LiteralExpr; -}(Expression)); -var ExternalExpr = /** @class */ (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(ExternalExpr, _super); - function ExternalExpr(value, type, typeParams, sourceSpan) { - if (typeParams === void 0) { typeParams = null; } - var _this = _super.call(this, type, sourceSpan) || this; - _this.value = value; - _this.typeParams = typeParams; - return _this; - } - ExternalExpr.prototype.isEquivalent = function (e) { - return e instanceof ExternalExpr && this.value.name === e.value.name && - this.value.moduleName === e.value.moduleName && this.value.runtime === e.value.runtime; + _ParseAST.prototype.locationText = function (index) { + if (index === void 0) { index = null; } + if (index == null) + index = this.index; + return (index < this.tokens.length) ? "at column " + (this.tokens[index].index + 1) + " in" : + "at the end of the expression"; }; - ExternalExpr.prototype.isConstant = function () { return false; }; - ExternalExpr.prototype.visitExpression = function (visitor, context) { - return visitor.visitExternalExpr(this, context); + // Error recovery should skip tokens until it encounters a recovery point. skip() treats + // the end of input and a ';' as unconditionally a recovery point. It also treats ')', + // '}' and ']' as conditional recovery points if one of calling productions is expecting + // one of these symbols. This allows skip() to recover from errors such as '(a.) + 1' allowing + // more of the AST to be retained (it doesn't skip any tokens as the ')' is retained because + // of the '(' begins an '(' ')' production). The recovery points of grouping symbols + // must be conditional as they must be skipped if none of the calling productions are not + // expecting the closing token else we will never make progress in the case of an + // extraneous group closing symbol (such as a stray ')'). This is not the case for ';' because + // parseChain() is always the root production and it expects a ';'. + // If a production expects one of these token it increments the corresponding nesting count, + // and then decrements it just prior to checking if the token is in the input. + _ParseAST.prototype.skip = function () { + var n = this.next; + while (this.index < this.tokens.length && !n.isCharacter($SEMICOLON) && + (this.rparensExpected <= 0 || !n.isCharacter($RPAREN)) && + (this.rbracesExpected <= 0 || !n.isCharacter($RBRACE)) && + (this.rbracketsExpected <= 0 || !n.isCharacter($RBRACKET))) { + if (this.next.isError()) { + this.errors.push(new ParserError(this.next.toString(), this.input, this.locationText(), this.location)); + } + this.advance(); + n = this.next; + } }; - return ExternalExpr; -}(Expression)); -var ExternalReference = /** @class */ (function () { - function ExternalReference(moduleName, name, runtime) { - this.moduleName = moduleName; - this.name = name; - this.runtime = runtime; - } - return ExternalReference; + return _ParseAST; }()); -var ConditionalExpr = /** @class */ (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(ConditionalExpr, _super); - function ConditionalExpr(condition, trueCase, falseCase, type, sourceSpan) { - if (falseCase === void 0) { falseCase = null; } - var _this = _super.call(this, type || trueCase.type, sourceSpan) || this; - _this.condition = condition; - _this.falseCase = falseCase; - _this.trueCase = trueCase; - return _this; +var SimpleExpressionChecker = /** @class */ (function () { + function SimpleExpressionChecker() { + this.errors = []; } - ConditionalExpr.prototype.isEquivalent = function (e) { - return e instanceof ConditionalExpr && this.condition.isEquivalent(e.condition) && - this.trueCase.isEquivalent(e.trueCase) && nullSafeIsEquivalent(this.falseCase, e.falseCase); + SimpleExpressionChecker.check = function (ast) { + var s = new SimpleExpressionChecker(); + ast.visit(s); + return s.errors; }; - ConditionalExpr.prototype.isConstant = function () { return false; }; - ConditionalExpr.prototype.visitExpression = function (visitor, context) { - return visitor.visitConditionalExpr(this, context); + SimpleExpressionChecker.prototype.visitImplicitReceiver = function (ast, context) { }; + SimpleExpressionChecker.prototype.visitInterpolation = function (ast, context) { }; + SimpleExpressionChecker.prototype.visitLiteralPrimitive = function (ast, context) { }; + SimpleExpressionChecker.prototype.visitPropertyRead = function (ast, context) { }; + SimpleExpressionChecker.prototype.visitPropertyWrite = function (ast, context) { }; + SimpleExpressionChecker.prototype.visitSafePropertyRead = function (ast, context) { }; + SimpleExpressionChecker.prototype.visitMethodCall = function (ast, context) { }; + SimpleExpressionChecker.prototype.visitSafeMethodCall = function (ast, context) { }; + SimpleExpressionChecker.prototype.visitFunctionCall = function (ast, context) { }; + SimpleExpressionChecker.prototype.visitLiteralArray = function (ast, context) { this.visitAll(ast.expressions); }; + SimpleExpressionChecker.prototype.visitLiteralMap = function (ast, context) { this.visitAll(ast.values); }; + SimpleExpressionChecker.prototype.visitBinary = function (ast, context) { }; + SimpleExpressionChecker.prototype.visitPrefixNot = function (ast, context) { }; + SimpleExpressionChecker.prototype.visitNonNullAssert = function (ast, context) { }; + SimpleExpressionChecker.prototype.visitConditional = function (ast, context) { }; + SimpleExpressionChecker.prototype.visitPipe = function (ast, context) { this.errors.push('pipes'); }; + SimpleExpressionChecker.prototype.visitKeyedRead = function (ast, context) { }; + SimpleExpressionChecker.prototype.visitKeyedWrite = function (ast, context) { }; + SimpleExpressionChecker.prototype.visitAll = function (asts) { + var _this = this; + return asts.map(function (node) { return node.visit(_this); }); }; - return ConditionalExpr; -}(Expression)); -var NotExpr = /** @class */ (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(NotExpr, _super); - function NotExpr(condition, sourceSpan) { - var _this = _super.call(this, BOOL_TYPE, sourceSpan) || this; - _this.condition = condition; - return _this; - } - NotExpr.prototype.isEquivalent = function (e) { - return e instanceof NotExpr && this.condition.isEquivalent(e.condition); - }; - NotExpr.prototype.isConstant = function () { return false; }; - NotExpr.prototype.visitExpression = function (visitor, context) { - return visitor.visitNotExpr(this, context); - }; - return NotExpr; -}(Expression)); -var AssertNotNull = /** @class */ (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(AssertNotNull, _super); - function AssertNotNull(condition, sourceSpan) { - var _this = _super.call(this, condition.type, sourceSpan) || this; - _this.condition = condition; - return _this; + SimpleExpressionChecker.prototype.visitChain = function (ast, context) { }; + SimpleExpressionChecker.prototype.visitQuote = function (ast, context) { }; + return SimpleExpressionChecker; +}()); + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +/** + * A path is an ordered set of elements. Typically a path is to a + * particular offset in a source file. The head of the list is the top + * most node. The tail is the node that contains the offset directly. + * + * For example, the expression `a + b + c` might have an ast that looks + * like: + * + + * / \ + * a + + * / \ + * b c + * + * The path to the node at offset 9 would be `['+' at 1-10, '+' at 7-10, + * 'c' at 9-10]` and the path the node at offset 1 would be + * `['+' at 1-10, 'a' at 1-2]`. + */ +var AstPath = /** @class */ (function () { + function AstPath(path, position) { + if (position === void 0) { position = -1; } + this.path = path; + this.position = position; } - AssertNotNull.prototype.isEquivalent = function (e) { - return e instanceof AssertNotNull && this.condition.isEquivalent(e.condition); + Object.defineProperty(AstPath.prototype, "empty", { + get: function () { return !this.path || !this.path.length; }, + enumerable: true, + configurable: true + }); + Object.defineProperty(AstPath.prototype, "head", { + get: function () { return this.path[0]; }, + enumerable: true, + configurable: true + }); + Object.defineProperty(AstPath.prototype, "tail", { + get: function () { return this.path[this.path.length - 1]; }, + enumerable: true, + configurable: true + }); + AstPath.prototype.parentOf = function (node) { + return node && this.path[this.path.indexOf(node) - 1]; }; - AssertNotNull.prototype.isConstant = function () { return false; }; - AssertNotNull.prototype.visitExpression = function (visitor, context) { - return visitor.visitAssertNotNullExpr(this, context); + AstPath.prototype.childOf = function (node) { return this.path[this.path.indexOf(node) + 1]; }; + AstPath.prototype.first = function (ctor) { + for (var i = this.path.length - 1; i >= 0; i--) { + var item = this.path[i]; + if (item instanceof ctor) + return item; + } }; - return AssertNotNull; -}(Expression)); -var CastExpr = /** @class */ (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(CastExpr, _super); - function CastExpr(value, type, sourceSpan) { - var _this = _super.call(this, type, sourceSpan) || this; - _this.value = value; - return _this; + AstPath.prototype.push = function (node) { this.path.push(node); }; + AstPath.prototype.pop = function () { return this.path.pop(); }; + return AstPath; +}()); + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +var Text$2 = /** @class */ (function () { + function Text(value, sourceSpan, i18n) { + this.value = value; + this.sourceSpan = sourceSpan; + this.i18n = i18n; } - CastExpr.prototype.isEquivalent = function (e) { - return e instanceof CastExpr && this.value.isEquivalent(e.value); - }; - CastExpr.prototype.isConstant = function () { return false; }; - CastExpr.prototype.visitExpression = function (visitor, context) { - return visitor.visitCastExpr(this, context); - }; - return CastExpr; -}(Expression)); -var FnParam = /** @class */ (function () { - function FnParam(name, type) { - if (type === void 0) { type = null; } - this.name = name; + Text.prototype.visit = function (visitor, context) { return visitor.visitText(this, context); }; + return Text; +}()); +var Expansion = /** @class */ (function () { + function Expansion(switchValue, type, cases, sourceSpan, switchValueSourceSpan, i18n) { + this.switchValue = switchValue; this.type = type; + this.cases = cases; + this.sourceSpan = sourceSpan; + this.switchValueSourceSpan = switchValueSourceSpan; + this.i18n = i18n; } - FnParam.prototype.isEquivalent = function (param) { return this.name === param.name; }; - return FnParam; + Expansion.prototype.visit = function (visitor, context) { return visitor.visitExpansion(this, context); }; + return Expansion; }()); -var FunctionExpr = /** @class */ (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(FunctionExpr, _super); - function FunctionExpr(params, statements, type, sourceSpan, name) { - var _this = _super.call(this, type, sourceSpan) || this; - _this.params = params; - _this.statements = statements; - _this.name = name; - return _this; - } - FunctionExpr.prototype.isEquivalent = function (e) { - return e instanceof FunctionExpr && areAllEquivalent(this.params, e.params) && - areAllEquivalent(this.statements, e.statements); - }; - FunctionExpr.prototype.isConstant = function () { return false; }; - FunctionExpr.prototype.visitExpression = function (visitor, context) { - return visitor.visitFunctionExpr(this, context); - }; - FunctionExpr.prototype.toDeclStmt = function (name, modifiers) { - if (modifiers === void 0) { modifiers = null; } - return new DeclareFunctionStmt(name, this.params, this.statements, this.type, modifiers, this.sourceSpan); - }; - return FunctionExpr; -}(Expression)); -var BinaryOperatorExpr = /** @class */ (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(BinaryOperatorExpr, _super); - function BinaryOperatorExpr(operator, lhs, rhs, type, sourceSpan, parens) { - if (parens === void 0) { parens = true; } - var _this = _super.call(this, type || lhs.type, sourceSpan) || this; - _this.operator = operator; - _this.rhs = rhs; - _this.parens = parens; - _this.lhs = lhs; - return _this; - } - BinaryOperatorExpr.prototype.isEquivalent = function (e) { - return e instanceof BinaryOperatorExpr && this.operator === e.operator && - this.lhs.isEquivalent(e.lhs) && this.rhs.isEquivalent(e.rhs); - }; - BinaryOperatorExpr.prototype.isConstant = function () { return false; }; - BinaryOperatorExpr.prototype.visitExpression = function (visitor, context) { - return visitor.visitBinaryOperatorExpr(this, context); - }; - return BinaryOperatorExpr; -}(Expression)); -var ReadPropExpr = /** @class */ (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(ReadPropExpr, _super); - function ReadPropExpr(receiver, name, type, sourceSpan) { - var _this = _super.call(this, type, sourceSpan) || this; - _this.receiver = receiver; - _this.name = name; - return _this; +var ExpansionCase = /** @class */ (function () { + function ExpansionCase(value, expression, sourceSpan, valueSourceSpan, expSourceSpan) { + this.value = value; + this.expression = expression; + this.sourceSpan = sourceSpan; + this.valueSourceSpan = valueSourceSpan; + this.expSourceSpan = expSourceSpan; } - ReadPropExpr.prototype.isEquivalent = function (e) { - return e instanceof ReadPropExpr && this.receiver.isEquivalent(e.receiver) && - this.name === e.name; - }; - ReadPropExpr.prototype.isConstant = function () { return false; }; - ReadPropExpr.prototype.visitExpression = function (visitor, context) { - return visitor.visitReadPropExpr(this, context); - }; - ReadPropExpr.prototype.set = function (value) { - return new WritePropExpr(this.receiver, this.name, value, null, this.sourceSpan); - }; - return ReadPropExpr; -}(Expression)); -var ReadKeyExpr = /** @class */ (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(ReadKeyExpr, _super); - function ReadKeyExpr(receiver, index, type, sourceSpan) { - var _this = _super.call(this, type, sourceSpan) || this; - _this.receiver = receiver; - _this.index = index; - return _this; + ExpansionCase.prototype.visit = function (visitor, context) { return visitor.visitExpansionCase(this, context); }; + return ExpansionCase; +}()); +var Attribute = /** @class */ (function () { + function Attribute(name, value, sourceSpan, valueSpan, i18n) { + this.name = name; + this.value = value; + this.sourceSpan = sourceSpan; + this.valueSpan = valueSpan; + this.i18n = i18n; } - ReadKeyExpr.prototype.isEquivalent = function (e) { - return e instanceof ReadKeyExpr && this.receiver.isEquivalent(e.receiver) && - this.index.isEquivalent(e.index); - }; - ReadKeyExpr.prototype.isConstant = function () { return false; }; - ReadKeyExpr.prototype.visitExpression = function (visitor, context) { - return visitor.visitReadKeyExpr(this, context); - }; - ReadKeyExpr.prototype.set = function (value) { - return new WriteKeyExpr(this.receiver, this.index, value, null, this.sourceSpan); - }; - return ReadKeyExpr; -}(Expression)); -var LiteralArrayExpr = /** @class */ (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(LiteralArrayExpr, _super); - function LiteralArrayExpr(entries, type, sourceSpan) { - var _this = _super.call(this, type, sourceSpan) || this; - _this.entries = entries; - return _this; + Attribute.prototype.visit = function (visitor, context) { return visitor.visitAttribute(this, context); }; + return Attribute; +}()); +var Element = /** @class */ (function () { + function Element(name, attrs, children, sourceSpan, startSourceSpan, endSourceSpan, i18n) { + if (startSourceSpan === void 0) { startSourceSpan = null; } + if (endSourceSpan === void 0) { endSourceSpan = null; } + this.name = name; + this.attrs = attrs; + this.children = children; + this.sourceSpan = sourceSpan; + this.startSourceSpan = startSourceSpan; + this.endSourceSpan = endSourceSpan; + this.i18n = i18n; } - LiteralArrayExpr.prototype.isConstant = function () { return this.entries.every(function (e) { return e.isConstant(); }); }; - LiteralArrayExpr.prototype.isEquivalent = function (e) { - return e instanceof LiteralArrayExpr && areAllEquivalent(this.entries, e.entries); - }; - LiteralArrayExpr.prototype.visitExpression = function (visitor, context) { - return visitor.visitLiteralArrayExpr(this, context); - }; - return LiteralArrayExpr; -}(Expression)); -var LiteralMapEntry = /** @class */ (function () { - function LiteralMapEntry(key, value, quoted) { - this.key = key; + Element.prototype.visit = function (visitor, context) { return visitor.visitElement(this, context); }; + return Element; +}()); +var Comment = /** @class */ (function () { + function Comment(value, sourceSpan) { this.value = value; - this.quoted = quoted; + this.sourceSpan = sourceSpan; } - LiteralMapEntry.prototype.isEquivalent = function (e) { - return this.key === e.key && this.value.isEquivalent(e.value); - }; - return LiteralMapEntry; + Comment.prototype.visit = function (visitor, context) { return visitor.visitComment(this, context); }; + return Comment; }()); -var LiteralMapExpr = /** @class */ (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(LiteralMapExpr, _super); - function LiteralMapExpr(entries, type, sourceSpan) { - var _this = _super.call(this, type, sourceSpan) || this; - _this.entries = entries; - _this.valueType = null; - if (type) { - _this.valueType = type.valueType; +function visitAll(visitor, nodes, context) { + if (context === void 0) { context = null; } + var result = []; + var visit = visitor.visit ? + function (ast) { return visitor.visit(ast, context) || ast.visit(visitor, context); } : + function (ast) { return ast.visit(visitor, context); }; + nodes.forEach(function (ast) { + var astResult = visit(ast); + if (astResult) { + result.push(astResult); } - return _this; + }); + return result; +} +var RecursiveVisitor = /** @class */ (function () { + function RecursiveVisitor() { } - LiteralMapExpr.prototype.isEquivalent = function (e) { - return e instanceof LiteralMapExpr && areAllEquivalent(this.entries, e.entries); - }; - LiteralMapExpr.prototype.isConstant = function () { return this.entries.every(function (e) { return e.value.isConstant(); }); }; - LiteralMapExpr.prototype.visitExpression = function (visitor, context) { - return visitor.visitLiteralMapExpr(this, context); + RecursiveVisitor.prototype.visitElement = function (ast, context) { + this.visitChildren(context, function (visit) { + visit(ast.attrs); + visit(ast.children); + }); }; - return LiteralMapExpr; -}(Expression)); -var CommaExpr = /** @class */ (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(CommaExpr, _super); - function CommaExpr(parts, sourceSpan) { - var _this = _super.call(this, parts[parts.length - 1].type, sourceSpan) || this; - _this.parts = parts; - return _this; - } - CommaExpr.prototype.isEquivalent = function (e) { - return e instanceof CommaExpr && areAllEquivalent(this.parts, e.parts); + RecursiveVisitor.prototype.visitAttribute = function (ast, context) { }; + RecursiveVisitor.prototype.visitText = function (ast, context) { }; + RecursiveVisitor.prototype.visitComment = function (ast, context) { }; + RecursiveVisitor.prototype.visitExpansion = function (ast, context) { + return this.visitChildren(context, function (visit) { visit(ast.cases); }); }; - CommaExpr.prototype.isConstant = function () { return false; }; - CommaExpr.prototype.visitExpression = function (visitor, context) { - return visitor.visitCommaExpr(this, context); + RecursiveVisitor.prototype.visitExpansionCase = function (ast, context) { }; + RecursiveVisitor.prototype.visitChildren = function (context, cb) { + var results = []; + var t = this; + function visit(children) { + if (children) + results.push(visitAll(t, children, context)); + } + cb(visit); + return [].concat.apply([], results); }; - return CommaExpr; -}(Expression)); -var THIS_EXPR = new ReadVarExpr(BuiltinVar.This, null, null); -var SUPER_EXPR = new ReadVarExpr(BuiltinVar.Super, null, null); -var CATCH_ERROR_VAR = new ReadVarExpr(BuiltinVar.CatchError, null, null); -var CATCH_STACK_VAR = new ReadVarExpr(BuiltinVar.CatchStack, null, null); -var NULL_EXPR = new LiteralExpr(null, null, null); -var TYPED_NULL_EXPR = new LiteralExpr(null, INFERRED_TYPE, null); -//// Statements -var StmtModifier; -(function (StmtModifier) { - StmtModifier[StmtModifier["Final"] = 0] = "Final"; - StmtModifier[StmtModifier["Private"] = 1] = "Private"; - StmtModifier[StmtModifier["Exported"] = 2] = "Exported"; - StmtModifier[StmtModifier["Static"] = 3] = "Static"; -})(StmtModifier || (StmtModifier = {})); -var Statement = /** @class */ (function () { - function Statement(modifiers, sourceSpan) { - this.modifiers = modifiers || []; - this.sourceSpan = sourceSpan || null; - } - Statement.prototype.hasModifier = function (modifier) { return this.modifiers.indexOf(modifier) !== -1; }; - return Statement; + return RecursiveVisitor; }()); -var DeclareVarStmt = /** @class */ (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(DeclareVarStmt, _super); - function DeclareVarStmt(name, value, type, modifiers, sourceSpan) { - if (modifiers === void 0) { modifiers = null; } - var _this = _super.call(this, modifiers, sourceSpan) || this; - _this.name = name; - _this.value = value; - _this.type = type || (value && value.type) || null; - return _this; +function spanOf(ast) { + var start = ast.sourceSpan.start.offset; + var end = ast.sourceSpan.end.offset; + if (ast instanceof Element) { + if (ast.endSourceSpan) { + end = ast.endSourceSpan.end.offset; + } + else if (ast.children && ast.children.length) { + end = spanOf(ast.children[ast.children.length - 1]).end; + } } - DeclareVarStmt.prototype.isEquivalent = function (stmt) { - return stmt instanceof DeclareVarStmt && this.name === stmt.name && - (this.value ? !!stmt.value && this.value.isEquivalent(stmt.value) : !stmt.value); - }; - DeclareVarStmt.prototype.visitStatement = function (visitor, context) { - return visitor.visitDeclareVarStmt(this, context); - }; - return DeclareVarStmt; -}(Statement)); -var DeclareFunctionStmt = /** @class */ (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(DeclareFunctionStmt, _super); - function DeclareFunctionStmt(name, params, statements, type, modifiers, sourceSpan) { - if (modifiers === void 0) { modifiers = null; } - var _this = _super.call(this, modifiers, sourceSpan) || this; - _this.name = name; - _this.params = params; - _this.statements = statements; - _this.type = type || null; - return _this; + return { start: start, end: end }; +} +function findNode(nodes, position) { + var path = []; + var visitor = new /** @class */ (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(class_1, _super); + function class_1() { + return _super !== null && _super.apply(this, arguments) || this; + } + class_1.prototype.visit = function (ast, context) { + var span = spanOf(ast); + if (span.start <= position && position < span.end) { + path.push(ast); + } + else { + // Returning a value here will result in the children being skipped. + return true; + } + }; + return class_1; + }(RecursiveVisitor)); + visitAll(visitor, nodes); + return new AstPath(path, position); +} + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +var TokenType$1; +(function (TokenType) { + TokenType[TokenType["TAG_OPEN_START"] = 0] = "TAG_OPEN_START"; + TokenType[TokenType["TAG_OPEN_END"] = 1] = "TAG_OPEN_END"; + TokenType[TokenType["TAG_OPEN_END_VOID"] = 2] = "TAG_OPEN_END_VOID"; + TokenType[TokenType["TAG_CLOSE"] = 3] = "TAG_CLOSE"; + TokenType[TokenType["TEXT"] = 4] = "TEXT"; + TokenType[TokenType["ESCAPABLE_RAW_TEXT"] = 5] = "ESCAPABLE_RAW_TEXT"; + TokenType[TokenType["RAW_TEXT"] = 6] = "RAW_TEXT"; + TokenType[TokenType["COMMENT_START"] = 7] = "COMMENT_START"; + TokenType[TokenType["COMMENT_END"] = 8] = "COMMENT_END"; + TokenType[TokenType["CDATA_START"] = 9] = "CDATA_START"; + TokenType[TokenType["CDATA_END"] = 10] = "CDATA_END"; + TokenType[TokenType["ATTR_NAME"] = 11] = "ATTR_NAME"; + TokenType[TokenType["ATTR_VALUE"] = 12] = "ATTR_VALUE"; + TokenType[TokenType["DOC_TYPE"] = 13] = "DOC_TYPE"; + TokenType[TokenType["EXPANSION_FORM_START"] = 14] = "EXPANSION_FORM_START"; + TokenType[TokenType["EXPANSION_CASE_VALUE"] = 15] = "EXPANSION_CASE_VALUE"; + TokenType[TokenType["EXPANSION_CASE_EXP_START"] = 16] = "EXPANSION_CASE_EXP_START"; + TokenType[TokenType["EXPANSION_CASE_EXP_END"] = 17] = "EXPANSION_CASE_EXP_END"; + TokenType[TokenType["EXPANSION_FORM_END"] = 18] = "EXPANSION_FORM_END"; + TokenType[TokenType["EOF"] = 19] = "EOF"; +})(TokenType$1 || (TokenType$1 = {})); +var Token$1 = /** @class */ (function () { + function Token(type, parts, sourceSpan) { + this.type = type; + this.parts = parts; + this.sourceSpan = sourceSpan; } - DeclareFunctionStmt.prototype.isEquivalent = function (stmt) { - return stmt instanceof DeclareFunctionStmt && areAllEquivalent(this.params, stmt.params) && - areAllEquivalent(this.statements, stmt.statements); - }; - DeclareFunctionStmt.prototype.visitStatement = function (visitor, context) { - return visitor.visitDeclareFunctionStmt(this, context); - }; - return DeclareFunctionStmt; -}(Statement)); -var ExpressionStatement = /** @class */ (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(ExpressionStatement, _super); - function ExpressionStatement(expr, sourceSpan) { - var _this = _super.call(this, null, sourceSpan) || this; - _this.expr = expr; + return Token; +}()); +var TokenError = /** @class */ (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(TokenError, _super); + function TokenError(errorMsg, tokenType, span) { + var _this = _super.call(this, span, errorMsg) || this; + _this.tokenType = tokenType; return _this; } - ExpressionStatement.prototype.isEquivalent = function (stmt) { - return stmt instanceof ExpressionStatement && this.expr.isEquivalent(stmt.expr); - }; - ExpressionStatement.prototype.visitStatement = function (visitor, context) { - return visitor.visitExpressionStmt(this, context); - }; - return ExpressionStatement; -}(Statement)); -var ReturnStatement = /** @class */ (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(ReturnStatement, _super); - function ReturnStatement(value, sourceSpan) { - var _this = _super.call(this, null, sourceSpan) || this; - _this.value = value; - return _this; + return TokenError; +}(ParseError)); +var TokenizeResult = /** @class */ (function () { + function TokenizeResult(tokens, errors) { + this.tokens = tokens; + this.errors = errors; } - ReturnStatement.prototype.isEquivalent = function (stmt) { - return stmt instanceof ReturnStatement && this.value.isEquivalent(stmt.value); - }; - ReturnStatement.prototype.visitStatement = function (visitor, context) { - return visitor.visitReturnStmt(this, context); - }; - return ReturnStatement; -}(Statement)); -var AbstractClassPart = /** @class */ (function () { - function AbstractClassPart(type, modifiers) { - this.modifiers = modifiers; - if (!modifiers) { - this.modifiers = []; - } - this.type = type || null; - } - AbstractClassPart.prototype.hasModifier = function (modifier) { return this.modifiers.indexOf(modifier) !== -1; }; - return AbstractClassPart; + return TokenizeResult; }()); -var ClassField = /** @class */ (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(ClassField, _super); - function ClassField(name, type, modifiers, initializer) { - if (modifiers === void 0) { modifiers = null; } - var _this = _super.call(this, type, modifiers) || this; - _this.name = name; - _this.initializer = initializer; - return _this; - } - ClassField.prototype.isEquivalent = function (f) { return this.name === f.name; }; - return ClassField; -}(AbstractClassPart)); -var ClassMethod = /** @class */ (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(ClassMethod, _super); - function ClassMethod(name, params, body, type, modifiers) { - if (modifiers === void 0) { modifiers = null; } - var _this = _super.call(this, type, modifiers) || this; - _this.name = name; - _this.params = params; - _this.body = body; - return _this; - } - ClassMethod.prototype.isEquivalent = function (m) { - return this.name === m.name && areAllEquivalent(this.body, m.body); - }; - return ClassMethod; -}(AbstractClassPart)); -var ClassGetter = /** @class */ (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(ClassGetter, _super); - function ClassGetter(name, body, type, modifiers) { - if (modifiers === void 0) { modifiers = null; } - var _this = _super.call(this, type, modifiers) || this; - _this.name = name; - _this.body = body; - return _this; - } - ClassGetter.prototype.isEquivalent = function (m) { - return this.name === m.name && areAllEquivalent(this.body, m.body); - }; - return ClassGetter; -}(AbstractClassPart)); -var ClassStmt = /** @class */ (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(ClassStmt, _super); - function ClassStmt(name, parent, fields, getters, constructorMethod, methods, modifiers, sourceSpan) { - if (modifiers === void 0) { modifiers = null; } - var _this = _super.call(this, modifiers, sourceSpan) || this; - _this.name = name; - _this.parent = parent; - _this.fields = fields; - _this.getters = getters; - _this.constructorMethod = constructorMethod; - _this.methods = methods; - return _this; - } - ClassStmt.prototype.isEquivalent = function (stmt) { - return stmt instanceof ClassStmt && this.name === stmt.name && - nullSafeIsEquivalent(this.parent, stmt.parent) && - areAllEquivalent(this.fields, stmt.fields) && - areAllEquivalent(this.getters, stmt.getters) && - this.constructorMethod.isEquivalent(stmt.constructorMethod) && - areAllEquivalent(this.methods, stmt.methods); - }; - ClassStmt.prototype.visitStatement = function (visitor, context) { - return visitor.visitDeclareClassStmt(this, context); - }; - return ClassStmt; -}(Statement)); -var IfStmt = /** @class */ (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(IfStmt, _super); - function IfStmt(condition, trueCase, falseCase, sourceSpan) { - if (falseCase === void 0) { falseCase = []; } - var _this = _super.call(this, null, sourceSpan) || this; - _this.condition = condition; - _this.trueCase = trueCase; - _this.falseCase = falseCase; - return _this; - } - IfStmt.prototype.isEquivalent = function (stmt) { - return stmt instanceof IfStmt && this.condition.isEquivalent(stmt.condition) && - areAllEquivalent(this.trueCase, stmt.trueCase) && - areAllEquivalent(this.falseCase, stmt.falseCase); - }; - IfStmt.prototype.visitStatement = function (visitor, context) { - return visitor.visitIfStmt(this, context); - }; - return IfStmt; -}(Statement)); -var CommentStmt = /** @class */ (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(CommentStmt, _super); - function CommentStmt(comment, multiline, sourceSpan) { - if (multiline === void 0) { multiline = false; } - var _this = _super.call(this, null, sourceSpan) || this; - _this.comment = comment; - _this.multiline = multiline; - return _this; +function tokenize(source, url, getTagDefinition, tokenizeExpansionForms, interpolationConfig) { + if (tokenizeExpansionForms === void 0) { tokenizeExpansionForms = false; } + if (interpolationConfig === void 0) { interpolationConfig = DEFAULT_INTERPOLATION_CONFIG; } + return new _Tokenizer(new ParseSourceFile(source, url), getTagDefinition, tokenizeExpansionForms, interpolationConfig) + .tokenize(); +} +var _CR_OR_CRLF_REGEXP = /\r\n?/g; +function _unexpectedCharacterErrorMsg(charCode) { + var char = charCode === $EOF ? 'EOF' : String.fromCharCode(charCode); + return "Unexpected character \"" + char + "\""; +} +function _unknownEntityErrorMsg(entitySrc) { + return "Unknown entity \"" + entitySrc + "\" - use the \"&#;\" or \"&#x;\" syntax"; +} +var _ControlFlowError = /** @class */ (function () { + function _ControlFlowError(error) { + this.error = error; } - CommentStmt.prototype.isEquivalent = function (stmt) { return stmt instanceof CommentStmt; }; - CommentStmt.prototype.visitStatement = function (visitor, context) { - return visitor.visitCommentStmt(this, context); - }; - return CommentStmt; -}(Statement)); -var JSDocCommentStmt = /** @class */ (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(JSDocCommentStmt, _super); - function JSDocCommentStmt(tags, sourceSpan) { - if (tags === void 0) { tags = []; } - var _this = _super.call(this, null, sourceSpan) || this; - _this.tags = tags; - return _this; + return _ControlFlowError; +}()); +// See http://www.w3.org/TR/html51/syntax.html#writing +var _Tokenizer = /** @class */ (function () { + /** + * @param _file The html source + * @param _getTagDefinition + * @param _tokenizeIcu Whether to tokenize ICU messages (considered as text nodes when false) + * @param _interpolationConfig + */ + function _Tokenizer(_file, _getTagDefinition, _tokenizeIcu, _interpolationConfig) { + if (_interpolationConfig === void 0) { _interpolationConfig = DEFAULT_INTERPOLATION_CONFIG; } + this._file = _file; + this._getTagDefinition = _getTagDefinition; + this._tokenizeIcu = _tokenizeIcu; + this._interpolationConfig = _interpolationConfig; + // Note: this is always lowercase! + this._peek = -1; + this._nextPeek = -1; + this._index = -1; + this._line = 0; + this._column = -1; + this._expansionCaseStack = []; + this._inInterpolation = false; + this.tokens = []; + this.errors = []; + this._input = _file.content; + this._length = _file.content.length; + this._advance(); } - JSDocCommentStmt.prototype.isEquivalent = function (stmt) { - return stmt instanceof JSDocCommentStmt && this.toString() === stmt.toString(); - }; - JSDocCommentStmt.prototype.visitStatement = function (visitor, context) { - return visitor.visitJSDocCommentStmt(this, context); + _Tokenizer.prototype._processCarriageReturns = function (content) { + // http://www.w3.org/TR/html5/syntax.html#preprocessing-the-input-stream + // In order to keep the original position in the source, we can not + // pre-process it. + // Instead CRs are processed right before instantiating the tokens. + return content.replace(_CR_OR_CRLF_REGEXP, '\n'); }; - JSDocCommentStmt.prototype.toString = function () { return serializeTags(this.tags); }; - return JSDocCommentStmt; -}(Statement)); -var TryCatchStmt = /** @class */ (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(TryCatchStmt, _super); - function TryCatchStmt(bodyStmts, catchStmts, sourceSpan) { - var _this = _super.call(this, null, sourceSpan) || this; - _this.bodyStmts = bodyStmts; - _this.catchStmts = catchStmts; - return _this; - } - TryCatchStmt.prototype.isEquivalent = function (stmt) { - return stmt instanceof TryCatchStmt && areAllEquivalent(this.bodyStmts, stmt.bodyStmts) && - areAllEquivalent(this.catchStmts, stmt.catchStmts); + _Tokenizer.prototype.tokenize = function () { + while (this._peek !== $EOF) { + var start = this._getLocation(); + try { + if (this._attemptCharCode($LT)) { + if (this._attemptCharCode($BANG)) { + if (this._attemptCharCode($LBRACKET)) { + this._consumeCdata(start); + } + else if (this._attemptCharCode($MINUS)) { + this._consumeComment(start); + } + else { + this._consumeDocType(start); + } + } + else if (this._attemptCharCode($SLASH)) { + this._consumeTagClose(start); + } + else { + this._consumeTagOpen(start); + } + } + else if (!(this._tokenizeIcu && this._tokenizeExpansionForm())) { + this._consumeText(); + } + } + catch (e) { + if (e instanceof _ControlFlowError) { + this.errors.push(e.error); + } + else { + throw e; + } + } + } + this._beginToken(TokenType$1.EOF); + this._endToken([]); + return new TokenizeResult(mergeTextTokens(this.tokens), this.errors); }; - TryCatchStmt.prototype.visitStatement = function (visitor, context) { - return visitor.visitTryCatchStmt(this, context); + /** + * @returns whether an ICU token has been created + * @internal + */ + _Tokenizer.prototype._tokenizeExpansionForm = function () { + if (isExpansionFormStart(this._input, this._index, this._interpolationConfig)) { + this._consumeExpansionFormStart(); + return true; + } + if (isExpansionCaseStart(this._peek) && this._isInExpansionForm()) { + this._consumeExpansionCaseStart(); + return true; + } + if (this._peek === $RBRACE) { + if (this._isInExpansionCase()) { + this._consumeExpansionCaseEnd(); + return true; + } + if (this._isInExpansionForm()) { + this._consumeExpansionFormEnd(); + return true; + } + } + return false; }; - return TryCatchStmt; -}(Statement)); -var ThrowStmt = /** @class */ (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(ThrowStmt, _super); - function ThrowStmt(error, sourceSpan) { - var _this = _super.call(this, null, sourceSpan) || this; - _this.error = error; - return _this; - } - ThrowStmt.prototype.isEquivalent = function (stmt) { - return stmt instanceof TryCatchStmt && this.error.isEquivalent(stmt.error); + _Tokenizer.prototype._getLocation = function () { + return new ParseLocation(this._file, this._index, this._line, this._column); }; - ThrowStmt.prototype.visitStatement = function (visitor, context) { - return visitor.visitThrowStmt(this, context); + _Tokenizer.prototype._getSpan = function (start, end) { + if (start === void 0) { start = this._getLocation(); } + if (end === void 0) { end = this._getLocation(); } + return new ParseSourceSpan(start, end); }; - return ThrowStmt; -}(Statement)); -var AstTransformer$1 = /** @class */ (function () { - function AstTransformer() { - } - AstTransformer.prototype.transformExpr = function (expr, context) { return expr; }; - AstTransformer.prototype.transformStmt = function (stmt, context) { return stmt; }; - AstTransformer.prototype.visitReadVarExpr = function (ast, context) { return this.transformExpr(ast, context); }; - AstTransformer.prototype.visitWriteVarExpr = function (expr, context) { - return this.transformExpr(new WriteVarExpr(expr.name, expr.value.visitExpression(this, context), expr.type, expr.sourceSpan), context); + _Tokenizer.prototype._beginToken = function (type, start) { + if (start === void 0) { start = this._getLocation(); } + this._currentTokenStart = start; + this._currentTokenType = type; }; - AstTransformer.prototype.visitWriteKeyExpr = function (expr, context) { - return this.transformExpr(new WriteKeyExpr(expr.receiver.visitExpression(this, context), expr.index.visitExpression(this, context), expr.value.visitExpression(this, context), expr.type, expr.sourceSpan), context); + _Tokenizer.prototype._endToken = function (parts, end) { + if (end === void 0) { end = this._getLocation(); } + var token = new Token$1(this._currentTokenType, parts, new ParseSourceSpan(this._currentTokenStart, end)); + this.tokens.push(token); + this._currentTokenStart = null; + this._currentTokenType = null; + return token; }; - AstTransformer.prototype.visitWritePropExpr = function (expr, context) { - return this.transformExpr(new WritePropExpr(expr.receiver.visitExpression(this, context), expr.name, expr.value.visitExpression(this, context), expr.type, expr.sourceSpan), context); + _Tokenizer.prototype._createError = function (msg, span) { + if (this._isInExpansionForm()) { + msg += " (Do you have an unescaped \"{\" in your template? Use \"{{ '{' }}\") to escape it.)"; + } + var error = new TokenError(msg, this._currentTokenType, span); + this._currentTokenStart = null; + this._currentTokenType = null; + return new _ControlFlowError(error); }; - AstTransformer.prototype.visitInvokeMethodExpr = function (ast, context) { - var method = ast.builtin || ast.name; - return this.transformExpr(new InvokeMethodExpr(ast.receiver.visitExpression(this, context), method, this.visitAllExpressions(ast.args, context), ast.type, ast.sourceSpan), context); + _Tokenizer.prototype._advance = function () { + if (this._index >= this._length) { + throw this._createError(_unexpectedCharacterErrorMsg($EOF), this._getSpan()); + } + if (this._peek === $LF) { + this._line++; + this._column = 0; + } + else if (this._peek !== $LF && this._peek !== $CR) { + this._column++; + } + this._index++; + this._peek = this._index >= this._length ? $EOF : this._input.charCodeAt(this._index); + this._nextPeek = + this._index + 1 >= this._length ? $EOF : this._input.charCodeAt(this._index + 1); }; - AstTransformer.prototype.visitInvokeFunctionExpr = function (ast, context) { - return this.transformExpr(new InvokeFunctionExpr(ast.fn.visitExpression(this, context), this.visitAllExpressions(ast.args, context), ast.type, ast.sourceSpan), context); + _Tokenizer.prototype._attemptCharCode = function (charCode) { + if (this._peek === charCode) { + this._advance(); + return true; + } + return false; }; - AstTransformer.prototype.visitInstantiateExpr = function (ast, context) { - return this.transformExpr(new InstantiateExpr(ast.classExpr.visitExpression(this, context), this.visitAllExpressions(ast.args, context), ast.type, ast.sourceSpan), context); + _Tokenizer.prototype._attemptCharCodeCaseInsensitive = function (charCode) { + if (compareCharCodeCaseInsensitive(this._peek, charCode)) { + this._advance(); + return true; + } + return false; }; - AstTransformer.prototype.visitLiteralExpr = function (ast, context) { return this.transformExpr(ast, context); }; - AstTransformer.prototype.visitExternalExpr = function (ast, context) { - return this.transformExpr(ast, context); + _Tokenizer.prototype._requireCharCode = function (charCode) { + var location = this._getLocation(); + if (!this._attemptCharCode(charCode)) { + throw this._createError(_unexpectedCharacterErrorMsg(this._peek), this._getSpan(location, location)); + } }; - AstTransformer.prototype.visitConditionalExpr = function (ast, context) { - return this.transformExpr(new ConditionalExpr(ast.condition.visitExpression(this, context), ast.trueCase.visitExpression(this, context), ast.falseCase.visitExpression(this, context), ast.type, ast.sourceSpan), context); + _Tokenizer.prototype._attemptStr = function (chars) { + var len = chars.length; + if (this._index + len > this._length) { + return false; + } + var initialPosition = this._savePosition(); + for (var i = 0; i < len; i++) { + if (!this._attemptCharCode(chars.charCodeAt(i))) { + // If attempting to parse the string fails, we want to reset the parser + // to where it was before the attempt + this._restorePosition(initialPosition); + return false; + } + } + return true; }; - AstTransformer.prototype.visitNotExpr = function (ast, context) { - return this.transformExpr(new NotExpr(ast.condition.visitExpression(this, context), ast.sourceSpan), context); + _Tokenizer.prototype._attemptStrCaseInsensitive = function (chars) { + for (var i = 0; i < chars.length; i++) { + if (!this._attemptCharCodeCaseInsensitive(chars.charCodeAt(i))) { + return false; + } + } + return true; }; - AstTransformer.prototype.visitAssertNotNullExpr = function (ast, context) { - return this.transformExpr(new AssertNotNull(ast.condition.visitExpression(this, context), ast.sourceSpan), context); + _Tokenizer.prototype._requireStr = function (chars) { + var location = this._getLocation(); + if (!this._attemptStr(chars)) { + throw this._createError(_unexpectedCharacterErrorMsg(this._peek), this._getSpan(location)); + } }; - AstTransformer.prototype.visitCastExpr = function (ast, context) { - return this.transformExpr(new CastExpr(ast.value.visitExpression(this, context), ast.type, ast.sourceSpan), context); + _Tokenizer.prototype._attemptCharCodeUntilFn = function (predicate) { + while (!predicate(this._peek)) { + this._advance(); + } }; - AstTransformer.prototype.visitFunctionExpr = function (ast, context) { - return this.transformExpr(new FunctionExpr(ast.params, this.visitAllStatements(ast.statements, context), ast.type, ast.sourceSpan), context); + _Tokenizer.prototype._requireCharCodeUntilFn = function (predicate, len) { + var start = this._getLocation(); + this._attemptCharCodeUntilFn(predicate); + if (this._index - start.offset < len) { + throw this._createError(_unexpectedCharacterErrorMsg(this._peek), this._getSpan(start, start)); + } }; - AstTransformer.prototype.visitBinaryOperatorExpr = function (ast, context) { - return this.transformExpr(new BinaryOperatorExpr(ast.operator, ast.lhs.visitExpression(this, context), ast.rhs.visitExpression(this, context), ast.type, ast.sourceSpan), context); + _Tokenizer.prototype._attemptUntilChar = function (char) { + while (this._peek !== char) { + this._advance(); + } }; - AstTransformer.prototype.visitReadPropExpr = function (ast, context) { - return this.transformExpr(new ReadPropExpr(ast.receiver.visitExpression(this, context), ast.name, ast.type, ast.sourceSpan), context); + _Tokenizer.prototype._readChar = function (decodeEntities) { + if (decodeEntities && this._peek === $AMPERSAND) { + return this._decodeEntity(); + } + else { + var index = this._index; + this._advance(); + return this._input[index]; + } }; - AstTransformer.prototype.visitReadKeyExpr = function (ast, context) { - return this.transformExpr(new ReadKeyExpr(ast.receiver.visitExpression(this, context), ast.index.visitExpression(this, context), ast.type, ast.sourceSpan), context); + _Tokenizer.prototype._decodeEntity = function () { + var start = this._getLocation(); + this._advance(); + if (this._attemptCharCode($HASH)) { + var isHex = this._attemptCharCode($x) || this._attemptCharCode($X); + var numberStart = this._getLocation().offset; + this._attemptCharCodeUntilFn(isDigitEntityEnd); + if (this._peek != $SEMICOLON) { + throw this._createError(_unexpectedCharacterErrorMsg(this._peek), this._getSpan()); + } + this._advance(); + var strNum = this._input.substring(numberStart, this._index - 1); + try { + var charCode = parseInt(strNum, isHex ? 16 : 10); + return String.fromCharCode(charCode); + } + catch (e) { + var entity = this._input.substring(start.offset + 1, this._index - 1); + throw this._createError(_unknownEntityErrorMsg(entity), this._getSpan(start)); + } + } + else { + var startPosition = this._savePosition(); + this._attemptCharCodeUntilFn(isNamedEntityEnd); + if (this._peek != $SEMICOLON) { + this._restorePosition(startPosition); + return '&'; + } + this._advance(); + var name_1 = this._input.substring(start.offset + 1, this._index - 1); + var char = NAMED_ENTITIES[name_1]; + if (!char) { + throw this._createError(_unknownEntityErrorMsg(name_1), this._getSpan(start)); + } + return char; + } }; - AstTransformer.prototype.visitLiteralArrayExpr = function (ast, context) { - return this.transformExpr(new LiteralArrayExpr(this.visitAllExpressions(ast.entries, context), ast.type, ast.sourceSpan), context); + _Tokenizer.prototype._consumeRawText = function (decodeEntities, firstCharOfEnd, attemptEndRest) { + var tagCloseStart; + var textStart = this._getLocation(); + this._beginToken(decodeEntities ? TokenType$1.ESCAPABLE_RAW_TEXT : TokenType$1.RAW_TEXT, textStart); + var parts = []; + while (true) { + tagCloseStart = this._getLocation(); + if (this._attemptCharCode(firstCharOfEnd) && attemptEndRest()) { + break; + } + if (this._index > tagCloseStart.offset) { + // add the characters consumed by the previous if statement to the output + parts.push(this._input.substring(tagCloseStart.offset, this._index)); + } + while (this._peek !== firstCharOfEnd) { + parts.push(this._readChar(decodeEntities)); + } + } + return this._endToken([this._processCarriageReturns(parts.join(''))], tagCloseStart); }; - AstTransformer.prototype.visitLiteralMapExpr = function (ast, context) { + _Tokenizer.prototype._consumeComment = function (start) { var _this = this; - var entries = ast.entries.map(function (entry) { return new LiteralMapEntry(entry.key, entry.value.visitExpression(_this, context), entry.quoted); }); - var mapType = new MapType(ast.valueType, null); - return this.transformExpr(new LiteralMapExpr(entries, mapType, ast.sourceSpan), context); - }; - AstTransformer.prototype.visitCommaExpr = function (ast, context) { - return this.transformExpr(new CommaExpr(this.visitAllExpressions(ast.parts, context), ast.sourceSpan), context); + this._beginToken(TokenType$1.COMMENT_START, start); + this._requireCharCode($MINUS); + this._endToken([]); + var textToken = this._consumeRawText(false, $MINUS, function () { return _this._attemptStr('->'); }); + this._beginToken(TokenType$1.COMMENT_END, textToken.sourceSpan.end); + this._endToken([]); }; - AstTransformer.prototype.visitAllExpressions = function (exprs, context) { + _Tokenizer.prototype._consumeCdata = function (start) { var _this = this; - return exprs.map(function (expr) { return expr.visitExpression(_this, context); }); - }; - AstTransformer.prototype.visitDeclareVarStmt = function (stmt, context) { - var value = stmt.value && stmt.value.visitExpression(this, context); - return this.transformStmt(new DeclareVarStmt(stmt.name, value, stmt.type, stmt.modifiers, stmt.sourceSpan), context); - }; - AstTransformer.prototype.visitDeclareFunctionStmt = function (stmt, context) { - return this.transformStmt(new DeclareFunctionStmt(stmt.name, stmt.params, this.visitAllStatements(stmt.statements, context), stmt.type, stmt.modifiers, stmt.sourceSpan), context); - }; - AstTransformer.prototype.visitExpressionStmt = function (stmt, context) { - return this.transformStmt(new ExpressionStatement(stmt.expr.visitExpression(this, context), stmt.sourceSpan), context); + this._beginToken(TokenType$1.CDATA_START, start); + this._requireStr('CDATA['); + this._endToken([]); + var textToken = this._consumeRawText(false, $RBRACKET, function () { return _this._attemptStr(']>'); }); + this._beginToken(TokenType$1.CDATA_END, textToken.sourceSpan.end); + this._endToken([]); }; - AstTransformer.prototype.visitReturnStmt = function (stmt, context) { - return this.transformStmt(new ReturnStatement(stmt.value.visitExpression(this, context), stmt.sourceSpan), context); + _Tokenizer.prototype._consumeDocType = function (start) { + this._beginToken(TokenType$1.DOC_TYPE, start); + this._attemptUntilChar($GT); + this._advance(); + this._endToken([this._input.substring(start.offset + 2, this._index - 1)]); }; - AstTransformer.prototype.visitDeclareClassStmt = function (stmt, context) { - var _this = this; - var parent = stmt.parent.visitExpression(this, context); - var getters = stmt.getters.map(function (getter) { return new ClassGetter(getter.name, _this.visitAllStatements(getter.body, context), getter.type, getter.modifiers); }); - var ctorMethod = stmt.constructorMethod && - new ClassMethod(stmt.constructorMethod.name, stmt.constructorMethod.params, this.visitAllStatements(stmt.constructorMethod.body, context), stmt.constructorMethod.type, stmt.constructorMethod.modifiers); - var methods = stmt.methods.map(function (method) { return new ClassMethod(method.name, method.params, _this.visitAllStatements(method.body, context), method.type, method.modifiers); }); - return this.transformStmt(new ClassStmt(stmt.name, parent, stmt.fields, getters, ctorMethod, methods, stmt.modifiers, stmt.sourceSpan), context); - }; - AstTransformer.prototype.visitIfStmt = function (stmt, context) { - return this.transformStmt(new IfStmt(stmt.condition.visitExpression(this, context), this.visitAllStatements(stmt.trueCase, context), this.visitAllStatements(stmt.falseCase, context), stmt.sourceSpan), context); - }; - AstTransformer.prototype.visitTryCatchStmt = function (stmt, context) { - return this.transformStmt(new TryCatchStmt(this.visitAllStatements(stmt.bodyStmts, context), this.visitAllStatements(stmt.catchStmts, context), stmt.sourceSpan), context); - }; - AstTransformer.prototype.visitThrowStmt = function (stmt, context) { - return this.transformStmt(new ThrowStmt(stmt.error.visitExpression(this, context), stmt.sourceSpan), context); - }; - AstTransformer.prototype.visitCommentStmt = function (stmt, context) { - return this.transformStmt(stmt, context); - }; - AstTransformer.prototype.visitJSDocCommentStmt = function (stmt, context) { - return this.transformStmt(stmt, context); - }; - AstTransformer.prototype.visitAllStatements = function (stmts, context) { - var _this = this; - return stmts.map(function (stmt) { return stmt.visitStatement(_this, context); }); - }; - return AstTransformer; -}()); -var RecursiveAstVisitor$1 = /** @class */ (function () { - function RecursiveAstVisitor() { - } - RecursiveAstVisitor.prototype.visitType = function (ast, context) { return ast; }; - RecursiveAstVisitor.prototype.visitExpression = function (ast, context) { - if (ast.type) { - ast.type.visitType(this, context); + _Tokenizer.prototype._consumePrefixAndName = function () { + var nameOrPrefixStart = this._index; + var prefix = null; + while (this._peek !== $COLON && !isPrefixEnd(this._peek)) { + this._advance(); } - return ast; - }; - RecursiveAstVisitor.prototype.visitBuiltinType = function (type, context) { return this.visitType(type, context); }; - RecursiveAstVisitor.prototype.visitExpressionType = function (type, context) { - type.value.visitExpression(this, context); - return this.visitType(type, context); - }; - RecursiveAstVisitor.prototype.visitArrayType = function (type, context) { return this.visitType(type, context); }; - RecursiveAstVisitor.prototype.visitMapType = function (type, context) { return this.visitType(type, context); }; - RecursiveAstVisitor.prototype.visitReadVarExpr = function (ast, context) { - return this.visitExpression(ast, context); - }; - RecursiveAstVisitor.prototype.visitWriteVarExpr = function (ast, context) { - ast.value.visitExpression(this, context); - return this.visitExpression(ast, context); - }; - RecursiveAstVisitor.prototype.visitWriteKeyExpr = function (ast, context) { - ast.receiver.visitExpression(this, context); - ast.index.visitExpression(this, context); - ast.value.visitExpression(this, context); - return this.visitExpression(ast, context); - }; - RecursiveAstVisitor.prototype.visitWritePropExpr = function (ast, context) { - ast.receiver.visitExpression(this, context); - ast.value.visitExpression(this, context); - return this.visitExpression(ast, context); - }; - RecursiveAstVisitor.prototype.visitInvokeMethodExpr = function (ast, context) { - ast.receiver.visitExpression(this, context); - this.visitAllExpressions(ast.args, context); - return this.visitExpression(ast, context); - }; - RecursiveAstVisitor.prototype.visitInvokeFunctionExpr = function (ast, context) { - ast.fn.visitExpression(this, context); - this.visitAllExpressions(ast.args, context); - return this.visitExpression(ast, context); - }; - RecursiveAstVisitor.prototype.visitInstantiateExpr = function (ast, context) { - ast.classExpr.visitExpression(this, context); - this.visitAllExpressions(ast.args, context); - return this.visitExpression(ast, context); - }; - RecursiveAstVisitor.prototype.visitLiteralExpr = function (ast, context) { - return this.visitExpression(ast, context); - }; - RecursiveAstVisitor.prototype.visitExternalExpr = function (ast, context) { - var _this = this; - if (ast.typeParams) { - ast.typeParams.forEach(function (type) { return type.visitType(_this, context); }); + var nameStart; + if (this._peek === $COLON) { + this._advance(); + prefix = this._input.substring(nameOrPrefixStart, this._index - 1); + nameStart = this._index; } - return this.visitExpression(ast, context); + else { + nameStart = nameOrPrefixStart; + } + this._requireCharCodeUntilFn(isNameEnd, this._index === nameStart ? 1 : 0); + var name = this._input.substring(nameStart, this._index); + return [prefix, name]; }; - RecursiveAstVisitor.prototype.visitConditionalExpr = function (ast, context) { - ast.condition.visitExpression(this, context); - ast.trueCase.visitExpression(this, context); - ast.falseCase.visitExpression(this, context); - return this.visitExpression(ast, context); + _Tokenizer.prototype._consumeTagOpen = function (start) { + var savedPos = this._savePosition(); + var tagName; + var lowercaseTagName; + try { + if (!isAsciiLetter(this._peek)) { + throw this._createError(_unexpectedCharacterErrorMsg(this._peek), this._getSpan()); + } + var nameStart = this._index; + this._consumeTagOpenStart(start); + tagName = this._input.substring(nameStart, this._index); + lowercaseTagName = tagName.toLowerCase(); + this._attemptCharCodeUntilFn(isNotWhitespace); + while (this._peek !== $SLASH && this._peek !== $GT) { + this._consumeAttributeName(); + this._attemptCharCodeUntilFn(isNotWhitespace); + if (this._attemptCharCode($EQ)) { + this._attemptCharCodeUntilFn(isNotWhitespace); + this._consumeAttributeValue(); + } + this._attemptCharCodeUntilFn(isNotWhitespace); + } + this._consumeTagOpenEnd(); + } + catch (e) { + if (e instanceof _ControlFlowError) { + // When the start tag is invalid, assume we want a "<" + this._restorePosition(savedPos); + // Back to back text tokens are merged at the end + this._beginToken(TokenType$1.TEXT, start); + this._endToken(['<']); + return; + } + throw e; + } + var contentTokenType = this._getTagDefinition(tagName).contentType; + if (contentTokenType === TagContentType.RAW_TEXT) { + this._consumeRawTextWithTagClose(lowercaseTagName, false); + } + else if (contentTokenType === TagContentType.ESCAPABLE_RAW_TEXT) { + this._consumeRawTextWithTagClose(lowercaseTagName, true); + } }; - RecursiveAstVisitor.prototype.visitNotExpr = function (ast, context) { - ast.condition.visitExpression(this, context); - return this.visitExpression(ast, context); + _Tokenizer.prototype._consumeRawTextWithTagClose = function (lowercaseTagName, decodeEntities) { + var _this = this; + var textToken = this._consumeRawText(decodeEntities, $LT, function () { + if (!_this._attemptCharCode($SLASH)) + return false; + _this._attemptCharCodeUntilFn(isNotWhitespace); + if (!_this._attemptStrCaseInsensitive(lowercaseTagName)) + return false; + _this._attemptCharCodeUntilFn(isNotWhitespace); + return _this._attemptCharCode($GT); + }); + this._beginToken(TokenType$1.TAG_CLOSE, textToken.sourceSpan.end); + this._endToken([null, lowercaseTagName]); }; - RecursiveAstVisitor.prototype.visitAssertNotNullExpr = function (ast, context) { - ast.condition.visitExpression(this, context); - return this.visitExpression(ast, context); + _Tokenizer.prototype._consumeTagOpenStart = function (start) { + this._beginToken(TokenType$1.TAG_OPEN_START, start); + var parts = this._consumePrefixAndName(); + this._endToken(parts); }; - RecursiveAstVisitor.prototype.visitCastExpr = function (ast, context) { - ast.value.visitExpression(this, context); - return this.visitExpression(ast, context); + _Tokenizer.prototype._consumeAttributeName = function () { + this._beginToken(TokenType$1.ATTR_NAME); + var prefixAndName = this._consumePrefixAndName(); + this._endToken(prefixAndName); }; - RecursiveAstVisitor.prototype.visitFunctionExpr = function (ast, context) { - this.visitAllStatements(ast.statements, context); - return this.visitExpression(ast, context); + _Tokenizer.prototype._consumeAttributeValue = function () { + this._beginToken(TokenType$1.ATTR_VALUE); + var value; + if (this._peek === $SQ || this._peek === $DQ) { + var quoteChar = this._peek; + this._advance(); + var parts = []; + while (this._peek !== quoteChar) { + parts.push(this._readChar(true)); + } + value = parts.join(''); + this._advance(); + } + else { + var valueStart = this._index; + this._requireCharCodeUntilFn(isNameEnd, 1); + value = this._input.substring(valueStart, this._index); + } + this._endToken([this._processCarriageReturns(value)]); }; - RecursiveAstVisitor.prototype.visitBinaryOperatorExpr = function (ast, context) { - ast.lhs.visitExpression(this, context); - ast.rhs.visitExpression(this, context); - return this.visitExpression(ast, context); + _Tokenizer.prototype._consumeTagOpenEnd = function () { + var tokenType = this._attemptCharCode($SLASH) ? TokenType$1.TAG_OPEN_END_VOID : TokenType$1.TAG_OPEN_END; + this._beginToken(tokenType); + this._requireCharCode($GT); + this._endToken([]); }; - RecursiveAstVisitor.prototype.visitReadPropExpr = function (ast, context) { - ast.receiver.visitExpression(this, context); - return this.visitExpression(ast, context); + _Tokenizer.prototype._consumeTagClose = function (start) { + this._beginToken(TokenType$1.TAG_CLOSE, start); + this._attemptCharCodeUntilFn(isNotWhitespace); + var prefixAndName = this._consumePrefixAndName(); + this._attemptCharCodeUntilFn(isNotWhitespace); + this._requireCharCode($GT); + this._endToken(prefixAndName); }; - RecursiveAstVisitor.prototype.visitReadKeyExpr = function (ast, context) { - ast.receiver.visitExpression(this, context); - ast.index.visitExpression(this, context); - return this.visitExpression(ast, context); + _Tokenizer.prototype._consumeExpansionFormStart = function () { + this._beginToken(TokenType$1.EXPANSION_FORM_START, this._getLocation()); + this._requireCharCode($LBRACE); + this._endToken([]); + this._expansionCaseStack.push(TokenType$1.EXPANSION_FORM_START); + this._beginToken(TokenType$1.RAW_TEXT, this._getLocation()); + var condition = this._readUntil($COMMA); + this._endToken([condition], this._getLocation()); + this._requireCharCode($COMMA); + this._attemptCharCodeUntilFn(isNotWhitespace); + this._beginToken(TokenType$1.RAW_TEXT, this._getLocation()); + var type = this._readUntil($COMMA); + this._endToken([type], this._getLocation()); + this._requireCharCode($COMMA); + this._attemptCharCodeUntilFn(isNotWhitespace); }; - RecursiveAstVisitor.prototype.visitLiteralArrayExpr = function (ast, context) { - this.visitAllExpressions(ast.entries, context); - return this.visitExpression(ast, context); + _Tokenizer.prototype._consumeExpansionCaseStart = function () { + this._beginToken(TokenType$1.EXPANSION_CASE_VALUE, this._getLocation()); + var value = this._readUntil($LBRACE).trim(); + this._endToken([value], this._getLocation()); + this._attemptCharCodeUntilFn(isNotWhitespace); + this._beginToken(TokenType$1.EXPANSION_CASE_EXP_START, this._getLocation()); + this._requireCharCode($LBRACE); + this._endToken([], this._getLocation()); + this._attemptCharCodeUntilFn(isNotWhitespace); + this._expansionCaseStack.push(TokenType$1.EXPANSION_CASE_EXP_START); }; - RecursiveAstVisitor.prototype.visitLiteralMapExpr = function (ast, context) { - var _this = this; - ast.entries.forEach(function (entry) { return entry.value.visitExpression(_this, context); }); - return this.visitExpression(ast, context); + _Tokenizer.prototype._consumeExpansionCaseEnd = function () { + this._beginToken(TokenType$1.EXPANSION_CASE_EXP_END, this._getLocation()); + this._requireCharCode($RBRACE); + this._endToken([], this._getLocation()); + this._attemptCharCodeUntilFn(isNotWhitespace); + this._expansionCaseStack.pop(); }; - RecursiveAstVisitor.prototype.visitCommaExpr = function (ast, context) { - this.visitAllExpressions(ast.parts, context); - return this.visitExpression(ast, context); + _Tokenizer.prototype._consumeExpansionFormEnd = function () { + this._beginToken(TokenType$1.EXPANSION_FORM_END, this._getLocation()); + this._requireCharCode($RBRACE); + this._endToken([]); + this._expansionCaseStack.pop(); }; - RecursiveAstVisitor.prototype.visitAllExpressions = function (exprs, context) { - var _this = this; - exprs.forEach(function (expr) { return expr.visitExpression(_this, context); }); + _Tokenizer.prototype._consumeText = function () { + var start = this._getLocation(); + this._beginToken(TokenType$1.TEXT, start); + var parts = []; + do { + if (this._interpolationConfig && this._attemptStr(this._interpolationConfig.start)) { + parts.push(this._interpolationConfig.start); + this._inInterpolation = true; + } + else if (this._interpolationConfig && this._inInterpolation && + this._attemptStr(this._interpolationConfig.end)) { + parts.push(this._interpolationConfig.end); + this._inInterpolation = false; + } + else { + parts.push(this._readChar(true)); + } + } while (!this._isTextEnd()); + this._endToken([this._processCarriageReturns(parts.join(''))]); }; - RecursiveAstVisitor.prototype.visitDeclareVarStmt = function (stmt, context) { - if (stmt.value) { - stmt.value.visitExpression(this, context); - } - if (stmt.type) { - stmt.type.visitType(this, context); + _Tokenizer.prototype._isTextEnd = function () { + if (this._peek === $LT || this._peek === $EOF) { + return true; } - return stmt; - }; - RecursiveAstVisitor.prototype.visitDeclareFunctionStmt = function (stmt, context) { - this.visitAllStatements(stmt.statements, context); - if (stmt.type) { - stmt.type.visitType(this, context); + if (this._tokenizeIcu && !this._inInterpolation) { + if (isExpansionFormStart(this._input, this._index, this._interpolationConfig)) { + // start of an expansion form + return true; + } + if (this._peek === $RBRACE && this._isInExpansionCase()) { + // end of and expansion case + return true; + } } - return stmt; + return false; }; - RecursiveAstVisitor.prototype.visitExpressionStmt = function (stmt, context) { - stmt.expr.visitExpression(this, context); - return stmt; + _Tokenizer.prototype._savePosition = function () { + return [this._peek, this._index, this._column, this._line, this.tokens.length]; }; - RecursiveAstVisitor.prototype.visitReturnStmt = function (stmt, context) { - stmt.value.visitExpression(this, context); - return stmt; + _Tokenizer.prototype._readUntil = function (char) { + var start = this._index; + this._attemptUntilChar(char); + return this._input.substring(start, this._index); }; - RecursiveAstVisitor.prototype.visitDeclareClassStmt = function (stmt, context) { - var _this = this; - stmt.parent.visitExpression(this, context); - stmt.getters.forEach(function (getter) { return _this.visitAllStatements(getter.body, context); }); - if (stmt.constructorMethod) { - this.visitAllStatements(stmt.constructorMethod.body, context); + _Tokenizer.prototype._restorePosition = function (position) { + this._peek = position[0]; + this._index = position[1]; + this._column = position[2]; + this._line = position[3]; + var nbTokens = position[4]; + if (nbTokens < this.tokens.length) { + // remove any extra tokens + this.tokens = this.tokens.slice(0, nbTokens); } - stmt.methods.forEach(function (method) { return _this.visitAllStatements(method.body, context); }); - return stmt; - }; - RecursiveAstVisitor.prototype.visitIfStmt = function (stmt, context) { - stmt.condition.visitExpression(this, context); - this.visitAllStatements(stmt.trueCase, context); - this.visitAllStatements(stmt.falseCase, context); - return stmt; - }; - RecursiveAstVisitor.prototype.visitTryCatchStmt = function (stmt, context) { - this.visitAllStatements(stmt.bodyStmts, context); - this.visitAllStatements(stmt.catchStmts, context); - return stmt; }; - RecursiveAstVisitor.prototype.visitThrowStmt = function (stmt, context) { - stmt.error.visitExpression(this, context); - return stmt; + _Tokenizer.prototype._isInExpansionCase = function () { + return this._expansionCaseStack.length > 0 && + this._expansionCaseStack[this._expansionCaseStack.length - 1] === + TokenType$1.EXPANSION_CASE_EXP_START; }; - RecursiveAstVisitor.prototype.visitCommentStmt = function (stmt, context) { return stmt; }; - RecursiveAstVisitor.prototype.visitJSDocCommentStmt = function (stmt, context) { return stmt; }; - RecursiveAstVisitor.prototype.visitAllStatements = function (stmts, context) { - var _this = this; - stmts.forEach(function (stmt) { return stmt.visitStatement(_this, context); }); + _Tokenizer.prototype._isInExpansionForm = function () { + return this._expansionCaseStack.length > 0 && + this._expansionCaseStack[this._expansionCaseStack.length - 1] === + TokenType$1.EXPANSION_FORM_START; }; - return RecursiveAstVisitor; + return _Tokenizer; }()); -function findReadVarNames(stmts) { - var visitor = new _ReadVarVisitor(); - visitor.visitAllStatements(stmts, null); - return visitor.varNames; -} -var _ReadVarVisitor = /** @class */ (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(_ReadVarVisitor, _super); - function _ReadVarVisitor() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.varNames = new Set(); - return _this; - } - _ReadVarVisitor.prototype.visitDeclareFunctionStmt = function (stmt, context) { - // Don't descend into nested functions - return stmt; - }; - _ReadVarVisitor.prototype.visitDeclareClassStmt = function (stmt, context) { - // Don't descend into nested classes - return stmt; - }; - _ReadVarVisitor.prototype.visitReadVarExpr = function (ast, context) { - if (ast.name) { - this.varNames.add(ast.name); - } - return null; - }; - return _ReadVarVisitor; -}(RecursiveAstVisitor$1)); -function collectExternalReferences(stmts) { - var visitor = new _FindExternalReferencesVisitor(); - visitor.visitAllStatements(stmts, null); - return visitor.externalReferences; +function isNotWhitespace(code) { + return !isWhitespace(code) || code === $EOF; } -var _FindExternalReferencesVisitor = /** @class */ (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(_FindExternalReferencesVisitor, _super); - function _FindExternalReferencesVisitor() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.externalReferences = []; - return _this; - } - _FindExternalReferencesVisitor.prototype.visitExternalExpr = function (e, context) { - this.externalReferences.push(e.value); - return _super.prototype.visitExternalExpr.call(this, e, context); - }; - return _FindExternalReferencesVisitor; -}(RecursiveAstVisitor$1)); -function applySourceSpanToStatementIfNeeded(stmt, sourceSpan) { - if (!sourceSpan) { - return stmt; - } - var transformer = new _ApplySourceSpanTransformer(sourceSpan); - return stmt.visitStatement(transformer, null); +function isNameEnd(code) { + return isWhitespace(code) || code === $GT || code === $SLASH || + code === $SQ || code === $DQ || code === $EQ; } -function applySourceSpanToExpressionIfNeeded(expr, sourceSpan) { - if (!sourceSpan) { - return expr; - } - var transformer = new _ApplySourceSpanTransformer(sourceSpan); - return expr.visitExpression(transformer, null); +function isPrefixEnd(code) { + return (code < $a || $z < code) && (code < $A || $Z < code) && + (code < $0 || code > $9); } -var _ApplySourceSpanTransformer = /** @class */ (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(_ApplySourceSpanTransformer, _super); - function _ApplySourceSpanTransformer(sourceSpan) { - var _this = _super.call(this) || this; - _this.sourceSpan = sourceSpan; - return _this; - } - _ApplySourceSpanTransformer.prototype._clone = function (obj) { - var clone = Object.create(obj.constructor.prototype); - for (var prop in obj) { - clone[prop] = obj[prop]; - } - return clone; - }; - _ApplySourceSpanTransformer.prototype.transformExpr = function (expr, context) { - if (!expr.sourceSpan) { - expr = this._clone(expr); - expr.sourceSpan = this.sourceSpan; - } - return expr; - }; - _ApplySourceSpanTransformer.prototype.transformStmt = function (stmt, context) { - if (!stmt.sourceSpan) { - stmt = this._clone(stmt); - stmt.sourceSpan = this.sourceSpan; - } - return stmt; - }; - return _ApplySourceSpanTransformer; -}(AstTransformer$1)); -function variable(name, type, sourceSpan) { - return new ReadVarExpr(name, type, sourceSpan); +function isDigitEntityEnd(code) { + return code == $SEMICOLON || code == $EOF || !isAsciiHexDigit(code); } -function importExpr(id, typeParams, sourceSpan) { - if (typeParams === void 0) { typeParams = null; } - return new ExternalExpr(id, null, typeParams, sourceSpan); +function isNamedEntityEnd(code) { + return code == $SEMICOLON || code == $EOF || !isAsciiLetter(code); } -function importType(id, typeParams, typeModifiers) { - if (typeParams === void 0) { typeParams = null; } - if (typeModifiers === void 0) { typeModifiers = null; } - return id != null ? expressionType(importExpr(id, typeParams, null), typeModifiers) : null; +function isExpansionFormStart(input, offset, interpolationConfig) { + var isInterpolationStart = interpolationConfig ? input.indexOf(interpolationConfig.start, offset) == offset : false; + return input.charCodeAt(offset) == $LBRACE && !isInterpolationStart; } -function expressionType(expr, typeModifiers) { - if (typeModifiers === void 0) { typeModifiers = null; } - return new ExpressionType(expr, typeModifiers); +function isExpansionCaseStart(peek) { + return peek === $EQ || isAsciiLetter(peek) || isDigit(peek); } -function literalArr(values, type, sourceSpan) { - return new LiteralArrayExpr(values, type, sourceSpan); +function compareCharCodeCaseInsensitive(code1, code2) { + return toUpperCaseCharCode(code1) == toUpperCaseCharCode(code2); } -function literalMap(values, type) { - if (type === void 0) { type = null; } - return new LiteralMapExpr(values.map(function (e) { return new LiteralMapEntry(e.key, e.value, e.quoted); }), type, null); +function toUpperCaseCharCode(code) { + return code >= $a && code <= $z ? code - $a + $A : code; } -function not(expr, sourceSpan) { - return new NotExpr(expr, sourceSpan); -} -function assertNotNull(expr, sourceSpan) { - return new AssertNotNull(expr, sourceSpan); -} -function fn(params, body, type, sourceSpan, name) { - return new FunctionExpr(params, body, type, sourceSpan, name); -} -function ifStmt(condition, thenClause, elseClause) { - return new IfStmt(condition, thenClause, elseClause); -} -function literal(value, type, sourceSpan) { - return new LiteralExpr(value, type, sourceSpan); -} -function isNull(exp) { - return exp instanceof LiteralExpr && exp.value === null; -} -/* - * Serializes a `Tag` into a string. - * Returns a string like " @foo {bar} baz" (note the leading whitespace before `@foo`). - */ -function tagToString(tag) { - var out = ''; - if (tag.tagName) { - out += " @" + tag.tagName; - } - if (tag.text) { - if (tag.text.match(/\/\*|\*\//)) { - throw new Error('JSDoc text cannot contain "/*" and "*/"'); - } - out += ' ' + tag.text.replace(/@/g, '\\@'); - } - return out; -} -function serializeTags(tags) { - if (tags.length === 0) - return ''; - var out = '*\n'; - try { - for (var tags_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(tags), tags_1_1 = tags_1.next(); !tags_1_1.done; tags_1_1 = tags_1.next()) { - var tag = tags_1_1.value; - out += ' *'; - // If the tagToString is multi-line, insert " * " prefixes on subsequent lines. - out += tagToString(tag).replace(/\n/g, '\n * '); - out += '\n'; - } - } - catch (e_1_1) { e_1 = { error: e_1_1 }; } - finally { - try { - if (tags_1_1 && !tags_1_1.done && (_a = tags_1.return)) _a.call(tags_1); - } - finally { if (e_1) throw e_1.error; } - } - out += ' '; - return out; - var e_1, _a; +function mergeTextTokens(srcTokens) { + var dstTokens = []; + var lastDstToken = undefined; + for (var i = 0; i < srcTokens.length; i++) { + var token = srcTokens[i]; + if (lastDstToken && lastDstToken.type == TokenType$1.TEXT && token.type == TokenType$1.TEXT) { + lastDstToken.parts[0] += token.parts[0]; + lastDstToken.sourceSpan.end = token.sourceSpan.end; + } + else { + lastDstToken = token; + dstTokens.push(lastDstToken); + } + } + return dstTokens; } /** @@ -15214,158 +17099,353 @@ function serializeTags(tags) { * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ -var QUOTED_KEYS = '$quoted$'; -function convertValueToOutputAst(ctx, value, type) { - if (type === void 0) { type = null; } - return visitValue(value, new _ValueOutputAstTransformer(ctx), type); -} -var _ValueOutputAstTransformer = /** @class */ (function () { - function _ValueOutputAstTransformer(ctx) { - this.ctx = ctx; +var TreeError = /** @class */ (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(TreeError, _super); + function TreeError(elementName, span, msg) { + var _this = _super.call(this, span, msg) || this; + _this.elementName = elementName; + return _this; } - _ValueOutputAstTransformer.prototype.visitArray = function (arr, type) { - var _this = this; - return literalArr(arr.map(function (value) { return visitValue(value, _this, null); }), type); - }; - _ValueOutputAstTransformer.prototype.visitStringMap = function (map, type) { - var _this = this; - var entries = []; - var quotedSet = new Set(map && map[QUOTED_KEYS]); - Object.keys(map).forEach(function (key) { - entries.push(new LiteralMapEntry(key, visitValue(map[key], _this, null), quotedSet.has(key))); - }); - return new LiteralMapExpr(entries, type); + TreeError.create = function (elementName, span, msg) { + return new TreeError(elementName, span, msg); }; - _ValueOutputAstTransformer.prototype.visitPrimitive = function (value, type) { return literal(value, type); }; - _ValueOutputAstTransformer.prototype.visitOther = function (value, type) { - if (value instanceof Expression) { - return value; - } - else { - return this.ctx.importExpr(value); - } + return TreeError; +}(ParseError)); +var ParseTreeResult = /** @class */ (function () { + function ParseTreeResult(rootNodes, errors) { + this.rootNodes = rootNodes; + this.errors = errors; + } + return ParseTreeResult; +}()); +var Parser$1 = /** @class */ (function () { + function Parser(getTagDefinition) { + this.getTagDefinition = getTagDefinition; + } + Parser.prototype.parse = function (source, url, parseExpansionForms, interpolationConfig) { + if (parseExpansionForms === void 0) { parseExpansionForms = false; } + if (interpolationConfig === void 0) { interpolationConfig = DEFAULT_INTERPOLATION_CONFIG; } + var tokensAndErrors = tokenize(source, url, this.getTagDefinition, parseExpansionForms, interpolationConfig); + var treeAndErrors = new _TreeBuilder(tokensAndErrors.tokens, this.getTagDefinition).build(); + return new ParseTreeResult(treeAndErrors.rootNodes, tokensAndErrors.errors.concat(treeAndErrors.errors)); }; - return _ValueOutputAstTransformer; + return Parser; }()); - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -function mapEntry(key, value) { - return { key: key, value: value, quoted: false }; -} -var InjectableCompiler = /** @class */ (function () { - function InjectableCompiler(reflector, alwaysGenerateDef) { - this.reflector = reflector; - this.alwaysGenerateDef = alwaysGenerateDef; - this.tokenInjector = reflector.resolveExternalReference(Identifiers.Injector); +var _TreeBuilder = /** @class */ (function () { + function _TreeBuilder(tokens, getTagDefinition) { + this.tokens = tokens; + this.getTagDefinition = getTagDefinition; + this._index = -1; + this._rootNodes = []; + this._errors = []; + this._elementStack = []; + this._advance(); } - InjectableCompiler.prototype.depsArray = function (deps, ctx) { - var _this = this; - return deps.map(function (dep) { - var token = dep; - var args = [token]; - var flags = 0; - if (Array.isArray(dep)) { - for (var i = 0; i < dep.length; i++) { - var v = dep[i]; - if (v) { - if (v.ngMetadataName === 'Optional') { - flags |= 8 /* Optional */; - } - else if (v.ngMetadataName === 'SkipSelf') { - flags |= 4 /* SkipSelf */; - } - else if (v.ngMetadataName === 'Self') { - flags |= 2 /* Self */; - } - else if (v.ngMetadataName === 'Inject') { - token = v.token; - } - else { - token = v; - } - } - } + _TreeBuilder.prototype.build = function () { + while (this._peek.type !== TokenType$1.EOF) { + if (this._peek.type === TokenType$1.TAG_OPEN_START) { + this._consumeStartTag(this._advance()); } - var tokenExpr; - if (typeof token === 'string') { - tokenExpr = literal(token); + else if (this._peek.type === TokenType$1.TAG_CLOSE) { + this._consumeEndTag(this._advance()); } - else if (token === _this.tokenInjector) { - tokenExpr = importExpr(Identifiers.INJECTOR); + else if (this._peek.type === TokenType$1.CDATA_START) { + this._closeVoidElement(); + this._consumeCdata(this._advance()); } - else { - tokenExpr = ctx.importExpr(token); + else if (this._peek.type === TokenType$1.COMMENT_START) { + this._closeVoidElement(); + this._consumeComment(this._advance()); } - if (flags !== 0 /* Default */) { - args = [tokenExpr, literal(flags)]; + else if (this._peek.type === TokenType$1.TEXT || this._peek.type === TokenType$1.RAW_TEXT || + this._peek.type === TokenType$1.ESCAPABLE_RAW_TEXT) { + this._closeVoidElement(); + this._consumeText(this._advance()); + } + else if (this._peek.type === TokenType$1.EXPANSION_FORM_START) { + this._consumeExpansion(this._advance()); } else { - args = [tokenExpr]; + // Skip all other tokens... + this._advance(); } - return importExpr(Identifiers.inject).callFn(args); - }); + } + return new ParseTreeResult(this._rootNodes, this._errors); }; - InjectableCompiler.prototype.factoryFor = function (injectable, ctx) { - var retValue; - if (injectable.useExisting) { - retValue = importExpr(Identifiers.inject).callFn([ctx.importExpr(injectable.useExisting)]); + _TreeBuilder.prototype._advance = function () { + var prev = this._peek; + if (this._index < this.tokens.length - 1) { + // Note: there is always an EOF token at the end + this._index++; } - else if (injectable.useFactory) { - var deps = injectable.deps || []; - if (deps.length > 0) { - retValue = ctx.importExpr(injectable.useFactory).callFn(this.depsArray(deps, ctx)); + this._peek = this.tokens[this._index]; + return prev; + }; + _TreeBuilder.prototype._advanceIf = function (type) { + if (this._peek.type === type) { + return this._advance(); + } + return null; + }; + _TreeBuilder.prototype._consumeCdata = function (startToken) { + this._consumeText(this._advance()); + this._advanceIf(TokenType$1.CDATA_END); + }; + _TreeBuilder.prototype._consumeComment = function (token) { + var text = this._advanceIf(TokenType$1.RAW_TEXT); + this._advanceIf(TokenType$1.COMMENT_END); + var value = text != null ? text.parts[0].trim() : null; + this._addToParent(new Comment(value, token.sourceSpan)); + }; + _TreeBuilder.prototype._consumeExpansion = function (token) { + var switchValue = this._advance(); + var type = this._advance(); + var cases = []; + // read = + while (this._peek.type === TokenType$1.EXPANSION_CASE_VALUE) { + var expCase = this._parseExpansionCase(); + if (!expCase) + return; // error + cases.push(expCase); + } + // read the final } + if (this._peek.type !== TokenType$1.EXPANSION_FORM_END) { + this._errors.push(TreeError.create(null, this._peek.sourceSpan, "Invalid ICU message. Missing '}'.")); + return; + } + var sourceSpan = new ParseSourceSpan(token.sourceSpan.start, this._peek.sourceSpan.end); + this._addToParent(new Expansion(switchValue.parts[0], type.parts[0], cases, sourceSpan, switchValue.sourceSpan)); + this._advance(); + }; + _TreeBuilder.prototype._parseExpansionCase = function () { + var value = this._advance(); + // read { + if (this._peek.type !== TokenType$1.EXPANSION_CASE_EXP_START) { + this._errors.push(TreeError.create(null, this._peek.sourceSpan, "Invalid ICU message. Missing '{'.")); + return null; + } + // read until } + var start = this._advance(); + var exp = this._collectExpansionExpTokens(start); + if (!exp) + return null; + var end = this._advance(); + exp.push(new Token$1(TokenType$1.EOF, [], end.sourceSpan)); + // parse everything in between { and } + var parsedExp = new _TreeBuilder(exp, this.getTagDefinition).build(); + if (parsedExp.errors.length > 0) { + this._errors = this._errors.concat(parsedExp.errors); + return null; + } + var sourceSpan = new ParseSourceSpan(value.sourceSpan.start, end.sourceSpan.end); + var expSourceSpan = new ParseSourceSpan(start.sourceSpan.start, end.sourceSpan.end); + return new ExpansionCase(value.parts[0], parsedExp.rootNodes, sourceSpan, value.sourceSpan, expSourceSpan); + }; + _TreeBuilder.prototype._collectExpansionExpTokens = function (start) { + var exp = []; + var expansionFormStack = [TokenType$1.EXPANSION_CASE_EXP_START]; + while (true) { + if (this._peek.type === TokenType$1.EXPANSION_FORM_START || + this._peek.type === TokenType$1.EXPANSION_CASE_EXP_START) { + expansionFormStack.push(this._peek.type); } - else { - return ctx.importExpr(injectable.useFactory); + if (this._peek.type === TokenType$1.EXPANSION_CASE_EXP_END) { + if (lastOnStack(expansionFormStack, TokenType$1.EXPANSION_CASE_EXP_START)) { + expansionFormStack.pop(); + if (expansionFormStack.length == 0) + return exp; + } + else { + this._errors.push(TreeError.create(null, start.sourceSpan, "Invalid ICU message. Missing '}'.")); + return null; + } + } + if (this._peek.type === TokenType$1.EXPANSION_FORM_END) { + if (lastOnStack(expansionFormStack, TokenType$1.EXPANSION_FORM_START)) { + expansionFormStack.pop(); + } + else { + this._errors.push(TreeError.create(null, start.sourceSpan, "Invalid ICU message. Missing '}'.")); + return null; + } + } + if (this._peek.type === TokenType$1.EOF) { + this._errors.push(TreeError.create(null, start.sourceSpan, "Invalid ICU message. Missing '}'.")); + return null; } + exp.push(this._advance()); } - else if (injectable.useValue) { - retValue = convertValueToOutputAst(ctx, injectable.useValue); + }; + _TreeBuilder.prototype._consumeText = function (token) { + var text = token.parts[0]; + if (text.length > 0 && text[0] == '\n') { + var parent_1 = this._getParentElement(); + if (parent_1 != null && parent_1.children.length == 0 && + this.getTagDefinition(parent_1.name).ignoreFirstLf) { + text = text.substring(1); + } } - else { - var clazz = injectable.useClass || injectable.symbol; - var depArgs = this.depsArray(this.reflector.parameters(clazz), ctx); - retValue = new InstantiateExpr(ctx.importExpr(clazz), depArgs); + if (text.length > 0) { + this._addToParent(new Text$2(text, token.sourceSpan)); } - return fn([], [new ReturnStatement(retValue)], undefined, undefined, injectable.symbol.name + '_Factory'); }; - InjectableCompiler.prototype.injectableDef = function (injectable, ctx) { - var providedIn = NULL_EXPR; - if (injectable.providedIn !== undefined) { - if (injectable.providedIn === null) { - providedIn = NULL_EXPR; + _TreeBuilder.prototype._closeVoidElement = function () { + var el = this._getParentElement(); + if (el && this.getTagDefinition(el.name).isVoid) { + this._elementStack.pop(); + } + }; + _TreeBuilder.prototype._consumeStartTag = function (startTagToken) { + var prefix = startTagToken.parts[0]; + var name = startTagToken.parts[1]; + var attrs = []; + while (this._peek.type === TokenType$1.ATTR_NAME) { + attrs.push(this._consumeAttr(this._advance())); + } + var fullName = this._getElementFullName(prefix, name, this._getParentElement()); + var selfClosing = false; + // Note: There could have been a tokenizer error + // so that we don't get a token for the end tag... + if (this._peek.type === TokenType$1.TAG_OPEN_END_VOID) { + this._advance(); + selfClosing = true; + var tagDef = this.getTagDefinition(fullName); + if (!(tagDef.canSelfClose || getNsPrefix(fullName) !== null || tagDef.isVoid)) { + this._errors.push(TreeError.create(fullName, startTagToken.sourceSpan, "Only void and foreign elements can be self closed \"" + startTagToken.parts[1] + "\"")); } - else if (typeof injectable.providedIn === 'string') { - providedIn = literal(injectable.providedIn); + } + else if (this._peek.type === TokenType$1.TAG_OPEN_END) { + this._advance(); + selfClosing = false; + } + var end = this._peek.sourceSpan.start; + var span = new ParseSourceSpan(startTagToken.sourceSpan.start, end); + var el = new Element(fullName, attrs, [], span, span, undefined); + this._pushElement(el); + if (selfClosing) { + this._popElement(fullName); + el.endSourceSpan = span; + } + }; + _TreeBuilder.prototype._pushElement = function (el) { + var parentEl = this._getParentElement(); + if (parentEl && this.getTagDefinition(parentEl.name).isClosedByChild(el.name)) { + this._elementStack.pop(); + } + var tagDef = this.getTagDefinition(el.name); + var _a = this._getParentElementSkippingContainers(), parent = _a.parent, container = _a.container; + if (parent && tagDef.requireExtraParent(parent.name)) { + var newParent = new Element(tagDef.parentToAdd, [], [], el.sourceSpan, el.startSourceSpan, el.endSourceSpan); + this._insertBeforeContainer(parent, container, newParent); + } + this._addToParent(el); + this._elementStack.push(el); + }; + _TreeBuilder.prototype._consumeEndTag = function (endTagToken) { + var fullName = this._getElementFullName(endTagToken.parts[0], endTagToken.parts[1], this._getParentElement()); + if (this._getParentElement()) { + this._getParentElement().endSourceSpan = endTagToken.sourceSpan; + } + if (this.getTagDefinition(fullName).isVoid) { + this._errors.push(TreeError.create(fullName, endTagToken.sourceSpan, "Void elements do not have end tags \"" + endTagToken.parts[1] + "\"")); + } + else if (!this._popElement(fullName)) { + var errMsg = "Unexpected closing tag \"" + fullName + "\". It may happen when the tag has already been closed by another tag. For more info see https://www.w3.org/TR/html5/syntax.html#closing-elements-that-have-implied-end-tags"; + this._errors.push(TreeError.create(fullName, endTagToken.sourceSpan, errMsg)); + } + }; + _TreeBuilder.prototype._popElement = function (fullName) { + for (var stackIndex = this._elementStack.length - 1; stackIndex >= 0; stackIndex--) { + var el = this._elementStack[stackIndex]; + if (el.name == fullName) { + this._elementStack.splice(stackIndex, this._elementStack.length - stackIndex); + return true; + } + if (!this.getTagDefinition(el.name).closedByParent) { + return false; + } + } + return false; + }; + _TreeBuilder.prototype._consumeAttr = function (attrName) { + var fullName = mergeNsAndName(attrName.parts[0], attrName.parts[1]); + var end = attrName.sourceSpan.end; + var value = ''; + var valueSpan = undefined; + if (this._peek.type === TokenType$1.ATTR_VALUE) { + var valueToken = this._advance(); + value = valueToken.parts[0]; + end = valueToken.sourceSpan.end; + valueSpan = valueToken.sourceSpan; + } + return new Attribute(fullName, value, new ParseSourceSpan(attrName.sourceSpan.start, end), valueSpan); + }; + _TreeBuilder.prototype._getParentElement = function () { + return this._elementStack.length > 0 ? this._elementStack[this._elementStack.length - 1] : null; + }; + /** + * Returns the parent in the DOM and the container. + * + * `` elements are skipped as they are not rendered as DOM element. + */ + _TreeBuilder.prototype._getParentElementSkippingContainers = function () { + var container = null; + for (var i = this._elementStack.length - 1; i >= 0; i--) { + if (!isNgContainer(this._elementStack[i].name)) { + return { parent: this._elementStack[i], container: container }; + } + container = this._elementStack[i]; + } + return { parent: null, container: container }; + }; + _TreeBuilder.prototype._addToParent = function (node) { + var parent = this._getParentElement(); + if (parent != null) { + parent.children.push(node); + } + else { + this._rootNodes.push(node); + } + }; + /** + * Insert a node between the parent and the container. + * When no container is given, the node is appended as a child of the parent. + * Also updates the element stack accordingly. + * + * @internal + */ + _TreeBuilder.prototype._insertBeforeContainer = function (parent, container, node) { + if (!container) { + this._addToParent(node); + this._elementStack.push(node); + } + else { + if (parent) { + // replace the container with the new node in the children + var index = parent.children.indexOf(container); + parent.children[index] = node; } else { - providedIn = ctx.importExpr(injectable.providedIn); + this._rootNodes.push(node); } + node.children.push(container); + this._elementStack.splice(this._elementStack.indexOf(container), 0, node); } - var def = [ - mapEntry('factory', this.factoryFor(injectable, ctx)), - mapEntry('token', ctx.importExpr(injectable.type.reference)), - mapEntry('providedIn', providedIn), - ]; - return importExpr(Identifiers.defineInjectable).callFn([literalMap(def)]); }; - InjectableCompiler.prototype.compile = function (injectable, ctx) { - if (this.alwaysGenerateDef || injectable.providedIn !== undefined) { - var className = identifierName(injectable.type); - var clazz = new ClassStmt(className, null, [ - new ClassField('ngInjectableDef', INFERRED_TYPE, [StmtModifier.Static], this.injectableDef(injectable, ctx)), - ], [], new ClassMethod(null, [], []), []); - ctx.statements.push(clazz); + _TreeBuilder.prototype._getElementFullName = function (prefix, localName, parentElement) { + if (prefix == null) { + prefix = this.getTagDefinition(localName).implicitNamespacePrefix; + if (prefix == null && parentElement != null) { + prefix = getNsPrefix(parentElement.name); + } } + return mergeNsAndName(prefix, localName); }; - return InjectableCompiler; + return _TreeBuilder; }()); +function lastOnStack(stack, element) { + return stack.length > 0 && stack[stack.length - 1] === element; +} /** * @license @@ -15374,60 +17454,18 @@ var InjectableCompiler = /** @class */ (function () { * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ -var STRIP_SRC_FILE_SUFFIXES = /(\.ts|\.d\.ts|\.js|\.jsx|\.tsx)$/; -var GENERATED_FILE = /\.ngfactory\.|\.ngsummary\./; -var JIT_SUMMARY_FILE = /\.ngsummary\./; -var JIT_SUMMARY_NAME = /NgSummary$/; -function ngfactoryFilePath(filePath, forceSourceFile) { - if (forceSourceFile === void 0) { forceSourceFile = false; } - var urlWithSuffix = splitTypescriptSuffix(filePath, forceSourceFile); - return urlWithSuffix[0] + ".ngfactory" + normalizeGenFileSuffix(urlWithSuffix[1]); -} -function stripGeneratedFileSuffix(filePath) { - return filePath.replace(GENERATED_FILE, '.'); -} -function isGeneratedFile(filePath) { - return GENERATED_FILE.test(filePath); -} -function splitTypescriptSuffix(path, forceSourceFile) { - if (forceSourceFile === void 0) { forceSourceFile = false; } - if (path.endsWith('.d.ts')) { - return [path.slice(0, -5), forceSourceFile ? '.ts' : '.d.ts']; +var HtmlParser = /** @class */ (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(HtmlParser, _super); + function HtmlParser() { + return _super.call(this, getHtmlTagDefinition) || this; } - var lastDot = path.lastIndexOf('.'); - if (lastDot !== -1) { - return [path.substring(0, lastDot), path.substring(lastDot)]; - } - return [path, '']; -} -function normalizeGenFileSuffix(srcFileSuffix) { - return srcFileSuffix === '.tsx' ? '.ts' : srcFileSuffix; -} -function summaryFileName(fileName) { - var fileNameWithoutSuffix = fileName.replace(STRIP_SRC_FILE_SUFFIXES, ''); - return fileNameWithoutSuffix + ".ngsummary.json"; -} -function summaryForJitFileName(fileName, forceSourceFile) { - if (forceSourceFile === void 0) { forceSourceFile = false; } - var urlWithSuffix = splitTypescriptSuffix(stripGeneratedFileSuffix(fileName), forceSourceFile); - return urlWithSuffix[0] + ".ngsummary" + urlWithSuffix[1]; -} -function stripSummaryForJitFileSuffix(filePath) { - return filePath.replace(JIT_SUMMARY_FILE, '.'); -} -function summaryForJitName(symbolName) { - return symbolName + "NgSummary"; -} -function stripSummaryForJitNameSuffix(symbolName) { - return symbolName.replace(JIT_SUMMARY_NAME, ''); -} -var LOWERED_SYMBOL = /\u0275\d+/; -function isLoweredSymbol(name) { - return LOWERED_SYMBOL.test(name); -} -function createLoweredSymbol(id) { - return "\u0275" + id; -} + HtmlParser.prototype.parse = function (source, url, parseExpansionForms, interpolationConfig) { + if (parseExpansionForms === void 0) { parseExpansionForms = false; } + if (interpolationConfig === void 0) { interpolationConfig = DEFAULT_INTERPOLATION_CONFIG; } + return _super.prototype.parse.call(this, source, url, parseExpansionForms, interpolationConfig); + }; + return HtmlParser; +}(Parser$1)); /** * @license @@ -15436,407 +17474,140 @@ function createLoweredSymbol(id) { * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ -var LifecycleHooks; -(function (LifecycleHooks) { - LifecycleHooks[LifecycleHooks["OnInit"] = 0] = "OnInit"; - LifecycleHooks[LifecycleHooks["OnDestroy"] = 1] = "OnDestroy"; - LifecycleHooks[LifecycleHooks["DoCheck"] = 2] = "DoCheck"; - LifecycleHooks[LifecycleHooks["OnChanges"] = 3] = "OnChanges"; - LifecycleHooks[LifecycleHooks["AfterContentInit"] = 4] = "AfterContentInit"; - LifecycleHooks[LifecycleHooks["AfterContentChecked"] = 5] = "AfterContentChecked"; - LifecycleHooks[LifecycleHooks["AfterViewInit"] = 6] = "AfterViewInit"; - LifecycleHooks[LifecycleHooks["AfterViewChecked"] = 7] = "AfterViewChecked"; -})(LifecycleHooks || (LifecycleHooks = {})); -var LIFECYCLE_HOOKS_VALUES = [ - LifecycleHooks.OnInit, LifecycleHooks.OnDestroy, LifecycleHooks.DoCheck, LifecycleHooks.OnChanges, - LifecycleHooks.AfterContentInit, LifecycleHooks.AfterContentChecked, LifecycleHooks.AfterViewInit, - LifecycleHooks.AfterViewChecked -]; -function hasLifecycleHook(reflector, hook, token) { - return reflector.hasLifecycleHook(token, getHookName(hook)); -} -function getAllLifecycleHooks(reflector, token) { - return LIFECYCLE_HOOKS_VALUES.filter(function (hook) { return hasLifecycleHook(reflector, hook, token); }); -} -function getHookName(hook) { - switch (hook) { - case LifecycleHooks.OnInit: - return 'ngOnInit'; - case LifecycleHooks.OnDestroy: - return 'ngOnDestroy'; - case LifecycleHooks.DoCheck: - return 'ngDoCheck'; - case LifecycleHooks.OnChanges: - return 'ngOnChanges'; - case LifecycleHooks.AfterContentInit: - return 'ngAfterContentInit'; - case LifecycleHooks.AfterContentChecked: - return 'ngAfterContentChecked'; - case LifecycleHooks.AfterViewInit: - return 'ngAfterViewInit'; - case LifecycleHooks.AfterViewChecked: - return 'ngAfterViewChecked'; - } +var PRESERVE_WS_ATTR_NAME = 'ngPreserveWhitespaces'; +var SKIP_WS_TRIM_TAGS = new Set(['pre', 'template', 'textarea', 'script', 'style']); +// Equivalent to \s with \u00a0 (non-breaking space) excluded. +// Based on https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp +var WS_CHARS = ' \f\n\r\t\v\u1680\u180e\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff'; +var NO_WS_REGEXP = new RegExp("[^" + WS_CHARS + "]"); +var WS_REPLACE_REGEXP = new RegExp("[" + WS_CHARS + "]{2,}", 'g'); +function hasPreserveWhitespacesAttr(attrs) { + return attrs.some(function (attr) { return attr.name === PRESERVE_WS_ATTR_NAME; }); } - /** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license + * Angular Dart introduced &ngsp; as a placeholder for non-removable space, see: + * https://github.com/dart-lang/angular/blob/0bb611387d29d65b5af7f9d2515ab571fd3fbee4/_tests/test/compiler/preserve_whitespace_test.dart#L25-L32 + * In Angular Dart &ngsp; is converted to the 0xE500 PUA (Private Use Areas) unicode character + * and later on replaced by a space. We are re-implementing the same idea here. */ -var _SELECTOR_REGEXP = new RegExp('(\\:not\\()|' + //":not(" - '([-\\w]+)|' + // "tag" - '(?:\\.([-\\w]+))|' + // ".class" - // "-" should appear first in the regexp below as FF31 parses "[.-\w]" as a range - '(?:\\[([-.\\w*]+)(?:=([\"\']?)([^\\]\"\']*)\\5)?\\])|' + // "[name]", "[name=value]", - // "[name="value"]", - // "[name='value']" - '(\\))|' + // ")" - '(\\s*,\\s*)', // "," -'g'); +function replaceNgsp(value) { + // lexer is replacing the &ngsp; pseudo-entity with NGSP_UNICODE + return value.replace(new RegExp(NGSP_UNICODE, 'g'), ' '); +} /** - * A css selector contains an element name, - * css classes and attribute/value pairs with the purpose - * of selecting subsets out of them. + * This visitor can walk HTML parse tree and remove / trim text nodes using the following rules: + * - consider spaces, tabs and new lines as whitespace characters; + * - drop text nodes consisting of whitespace characters only; + * - for all other text nodes replace consecutive whitespace characters with one space; + * - convert &ngsp; pseudo-entity to a single space; + * + * Removal and trimming of whitespaces have positive performance impact (less code to generate + * while compiling templates, faster view creation). At the same time it can be "destructive" + * in some cases (whitespaces can influence layout). Because of the potential of breaking layout + * this visitor is not activated by default in Angular 5 and people need to explicitly opt-in for + * whitespace removal. The default option for whitespace removal will be revisited in Angular 6 + * and might be changed to "on" by default. */ -var CssSelector = /** @class */ (function () { - function CssSelector() { - this.element = null; - this.classNames = []; - /** - * The selectors are encoded in pairs where: - * - even locations are attribute names - * - odd locations are attribute values. - * - * Example: - * Selector: `[key1=value1][key2]` would parse to: - * ``` - * ['key1', 'value1', 'key2', ''] - * ``` - */ - this.attrs = []; - this.notSelectors = []; +var WhitespaceVisitor = /** @class */ (function () { + function WhitespaceVisitor() { } - CssSelector.parse = function (selector) { - var results = []; - var _addResult = function (res, cssSel) { - if (cssSel.notSelectors.length > 0 && !cssSel.element && cssSel.classNames.length == 0 && - cssSel.attrs.length == 0) { - cssSel.element = '*'; - } - res.push(cssSel); - }; - var cssSelector = new CssSelector(); - var match; - var current = cssSelector; - var inNot = false; - _SELECTOR_REGEXP.lastIndex = 0; - while (match = _SELECTOR_REGEXP.exec(selector)) { - if (match[1]) { - if (inNot) { - throw new Error('Nesting :not is not allowed in a selector'); - } - inNot = true; - current = new CssSelector(); - cssSelector.notSelectors.push(current); - } - if (match[2]) { - current.setElement(match[2]); - } - if (match[3]) { - current.addClassName(match[3]); - } - if (match[4]) { - current.addAttribute(match[4], match[6]); - } - if (match[7]) { - inNot = false; - current = cssSelector; - } - if (match[8]) { - if (inNot) { - throw new Error('Multiple selectors in :not are not supported'); - } - _addResult(results, cssSelector); - cssSelector = current = new CssSelector(); - } - } - _addResult(results, cssSelector); - return results; - }; - CssSelector.prototype.isElementSelector = function () { - return this.hasElementSelector() && this.classNames.length == 0 && this.attrs.length == 0 && - this.notSelectors.length === 0; - }; - CssSelector.prototype.hasElementSelector = function () { return !!this.element; }; - CssSelector.prototype.setElement = function (element) { - if (element === void 0) { element = null; } - this.element = element; - }; - /** Gets a template string for an element that matches the selector. */ - CssSelector.prototype.getMatchingElementTemplate = function () { - var tagName = this.element || 'div'; - var classAttr = this.classNames.length > 0 ? " class=\"" + this.classNames.join(' ') + "\"" : ''; - var attrs = ''; - for (var i = 0; i < this.attrs.length; i += 2) { - var attrName = this.attrs[i]; - var attrValue = this.attrs[i + 1] !== '' ? "=\"" + this.attrs[i + 1] + "\"" : ''; - attrs += " " + attrName + attrValue; - } - return getHtmlTagDefinition(tagName).isVoid ? "<" + tagName + classAttr + attrs + "/>" : - "<" + tagName + classAttr + attrs + ">"; - }; - CssSelector.prototype.getAttrs = function () { - var result = []; - if (this.classNames.length > 0) { - result.push('class', this.classNames.join(' ')); + WhitespaceVisitor.prototype.visitElement = function (element, context) { + if (SKIP_WS_TRIM_TAGS.has(element.name) || hasPreserveWhitespacesAttr(element.attrs)) { + // don't descent into elements where we need to preserve whitespaces + // but still visit all attributes to eliminate one used as a market to preserve WS + return new Element(element.name, visitAll(this, element.attrs), element.children, element.sourceSpan, element.startSourceSpan, element.endSourceSpan, element.i18n); } - return result.concat(this.attrs); + return new Element(element.name, element.attrs, visitAll(this, element.children), element.sourceSpan, element.startSourceSpan, element.endSourceSpan, element.i18n); }; - CssSelector.prototype.addAttribute = function (name, value) { - if (value === void 0) { value = ''; } - this.attrs.push(name, value && value.toLowerCase() || ''); + WhitespaceVisitor.prototype.visitAttribute = function (attribute, context) { + return attribute.name !== PRESERVE_WS_ATTR_NAME ? attribute : null; }; - CssSelector.prototype.addClassName = function (name) { this.classNames.push(name.toLowerCase()); }; - CssSelector.prototype.toString = function () { - var res = this.element || ''; - if (this.classNames) { - this.classNames.forEach(function (klass) { return res += "." + klass; }); - } - if (this.attrs) { - for (var i = 0; i < this.attrs.length; i += 2) { - var name_1 = this.attrs[i]; - var value = this.attrs[i + 1]; - res += "[" + name_1 + (value ? '=' + value : '') + "]"; - } + WhitespaceVisitor.prototype.visitText = function (text, context) { + var isNotBlank = text.value.match(NO_WS_REGEXP); + if (isNotBlank) { + return new Text$2(replaceNgsp(text.value).replace(WS_REPLACE_REGEXP, ' '), text.sourceSpan, text.i18n); } - this.notSelectors.forEach(function (notSelector) { return res += ":not(" + notSelector + ")"; }); - return res; + return null; }; - return CssSelector; + WhitespaceVisitor.prototype.visitComment = function (comment, context) { return comment; }; + WhitespaceVisitor.prototype.visitExpansion = function (expansion, context) { return expansion; }; + WhitespaceVisitor.prototype.visitExpansionCase = function (expansionCase, context) { return expansionCase; }; + return WhitespaceVisitor; }()); +function removeWhitespaces(htmlAstWithErrors) { + return new ParseTreeResult(visitAll(new WhitespaceVisitor(), htmlAstWithErrors.rootNodes), htmlAstWithErrors.errors); +} + /** - * Reads a list of CssSelectors and allows to calculate which ones - * are contained in a given CssSelector. + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license */ -var SelectorMatcher = /** @class */ (function () { - function SelectorMatcher() { - this._elementMap = new Map(); - this._elementPartialMap = new Map(); - this._classMap = new Map(); - this._classPartialMap = new Map(); - this._attrValueMap = new Map(); - this._attrValuePartialMap = new Map(); - this._listContexts = []; +// ================================================================================================= +// ================================================================================================= +// =========== S T O P - S T O P - S T O P - S T O P - S T O P - S T O P =========== +// ================================================================================================= +// ================================================================================================= +// +// DO NOT EDIT THIS LIST OF SECURITY SENSITIVE PROPERTIES WITHOUT A SECURITY REVIEW! +// Reach out to mprobst for details. +// +// ================================================================================================= +/** Map from tagName|propertyName SecurityContext. Properties applying to all tags use '*'. */ +var _SECURITY_SCHEMA; +function SECURITY_SCHEMA() { + if (!_SECURITY_SCHEMA) { + _SECURITY_SCHEMA = {}; + // Case is insignificant below, all element and attribute names are lower-cased for lookup. + registerContext(SecurityContext.HTML, [ + 'iframe|srcdoc', + '*|innerHTML', + '*|outerHTML', + ]); + registerContext(SecurityContext.STYLE, ['*|style']); + // NB: no SCRIPT contexts here, they are never allowed due to the parser stripping them. + registerContext(SecurityContext.URL, [ + '*|formAction', 'area|href', 'area|ping', 'audio|src', 'a|href', + 'a|ping', 'blockquote|cite', 'body|background', 'del|cite', 'form|action', + 'img|src', 'img|srcset', 'input|src', 'ins|cite', 'q|cite', + 'source|src', 'source|srcset', 'track|src', 'video|poster', 'video|src', + ]); + registerContext(SecurityContext.RESOURCE_URL, [ + 'applet|code', + 'applet|codebase', + 'base|href', + 'embed|src', + 'frame|src', + 'head|profile', + 'html|manifest', + 'iframe|src', + 'link|href', + 'media|src', + 'object|codebase', + 'object|data', + 'script|src', + ]); } - SelectorMatcher.createNotMatcher = function (notSelectors) { - var notMatcher = new SelectorMatcher(); - notMatcher.addSelectables(notSelectors, null); - return notMatcher; - }; - SelectorMatcher.prototype.addSelectables = function (cssSelectors, callbackCtxt) { - var listContext = null; - if (cssSelectors.length > 1) { - listContext = new SelectorListContext(cssSelectors); - this._listContexts.push(listContext); - } - for (var i = 0; i < cssSelectors.length; i++) { - this._addSelectable(cssSelectors[i], callbackCtxt, listContext); - } - }; - /** - * Add an object that can be found later on by calling `match`. - * @param cssSelector A css selector - * @param callbackCtxt An opaque object that will be given to the callback of the `match` function - */ - SelectorMatcher.prototype._addSelectable = function (cssSelector, callbackCtxt, listContext) { - var matcher = this; - var element = cssSelector.element; - var classNames = cssSelector.classNames; - var attrs = cssSelector.attrs; - var selectable = new SelectorContext(cssSelector, callbackCtxt, listContext); - if (element) { - var isTerminal = attrs.length === 0 && classNames.length === 0; - if (isTerminal) { - this._addTerminal(matcher._elementMap, element, selectable); - } - else { - matcher = this._addPartial(matcher._elementPartialMap, element); - } - } - if (classNames) { - for (var i = 0; i < classNames.length; i++) { - var isTerminal = attrs.length === 0 && i === classNames.length - 1; - var className = classNames[i]; - if (isTerminal) { - this._addTerminal(matcher._classMap, className, selectable); - } - else { - matcher = this._addPartial(matcher._classPartialMap, className); - } - } - } - if (attrs) { - for (var i = 0; i < attrs.length; i += 2) { - var isTerminal = i === attrs.length - 2; - var name_2 = attrs[i]; - var value = attrs[i + 1]; - if (isTerminal) { - var terminalMap = matcher._attrValueMap; - var terminalValuesMap = terminalMap.get(name_2); - if (!terminalValuesMap) { - terminalValuesMap = new Map(); - terminalMap.set(name_2, terminalValuesMap); - } - this._addTerminal(terminalValuesMap, value, selectable); - } - else { - var partialMap = matcher._attrValuePartialMap; - var partialValuesMap = partialMap.get(name_2); - if (!partialValuesMap) { - partialValuesMap = new Map(); - partialMap.set(name_2, partialValuesMap); - } - matcher = this._addPartial(partialValuesMap, value); - } - } - } - }; - SelectorMatcher.prototype._addTerminal = function (map, name, selectable) { - var terminalList = map.get(name); - if (!terminalList) { - terminalList = []; - map.set(name, terminalList); - } - terminalList.push(selectable); - }; - SelectorMatcher.prototype._addPartial = function (map, name) { - var matcher = map.get(name); - if (!matcher) { - matcher = new SelectorMatcher(); - map.set(name, matcher); - } - return matcher; - }; - /** - * Find the objects that have been added via `addSelectable` - * whose css selector is contained in the given css selector. - * @param cssSelector A css selector - * @param matchedCallback This callback will be called with the object handed into `addSelectable` - * @return boolean true if a match was found - */ - SelectorMatcher.prototype.match = function (cssSelector, matchedCallback) { - var result = false; - var element = cssSelector.element; - var classNames = cssSelector.classNames; - var attrs = cssSelector.attrs; - for (var i = 0; i < this._listContexts.length; i++) { - this._listContexts[i].alreadyMatched = false; - } - result = this._matchTerminal(this._elementMap, element, cssSelector, matchedCallback) || result; - result = this._matchPartial(this._elementPartialMap, element, cssSelector, matchedCallback) || - result; - if (classNames) { - for (var i = 0; i < classNames.length; i++) { - var className = classNames[i]; - result = - this._matchTerminal(this._classMap, className, cssSelector, matchedCallback) || result; - result = - this._matchPartial(this._classPartialMap, className, cssSelector, matchedCallback) || - result; - } - } - if (attrs) { - for (var i = 0; i < attrs.length; i += 2) { - var name_3 = attrs[i]; - var value = attrs[i + 1]; - var terminalValuesMap = this._attrValueMap.get(name_3); - if (value) { - result = - this._matchTerminal(terminalValuesMap, '', cssSelector, matchedCallback) || result; - } - result = - this._matchTerminal(terminalValuesMap, value, cssSelector, matchedCallback) || result; - var partialValuesMap = this._attrValuePartialMap.get(name_3); - if (value) { - result = this._matchPartial(partialValuesMap, '', cssSelector, matchedCallback) || result; - } - result = - this._matchPartial(partialValuesMap, value, cssSelector, matchedCallback) || result; - } - } - return result; - }; - /** @internal */ - SelectorMatcher.prototype._matchTerminal = function (map, name, cssSelector, matchedCallback) { - if (!map || typeof name !== 'string') { - return false; - } - var selectables = map.get(name) || []; - var starSelectables = map.get('*'); - if (starSelectables) { - selectables = selectables.concat(starSelectables); - } - if (selectables.length === 0) { - return false; - } - var selectable; - var result = false; - for (var i = 0; i < selectables.length; i++) { - selectable = selectables[i]; - result = selectable.finalize(cssSelector, matchedCallback) || result; - } - return result; - }; - /** @internal */ - SelectorMatcher.prototype._matchPartial = function (map, name, cssSelector, matchedCallback) { - if (!map || typeof name !== 'string') { - return false; - } - var nestedSelector = map.get(name); - if (!nestedSelector) { - return false; + return _SECURITY_SCHEMA; +} +function registerContext(ctx, specs) { + var e_1, _a; + try { + for (var specs_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(specs), specs_1_1 = specs_1.next(); !specs_1_1.done; specs_1_1 = specs_1.next()) { + var spec = specs_1_1.value; + _SECURITY_SCHEMA[spec.toLowerCase()] = ctx; } - // TODO(perf): get rid of recursion and measure again - // TODO(perf): don't pass the whole selector into the recursion, - // but only the not processed parts - return nestedSelector.match(cssSelector, matchedCallback); - }; - return SelectorMatcher; -}()); -var SelectorListContext = /** @class */ (function () { - function SelectorListContext(selectors) { - this.selectors = selectors; - this.alreadyMatched = false; - } - return SelectorListContext; -}()); -// Store context to pass back selector and context when a selector is matched -var SelectorContext = /** @class */ (function () { - function SelectorContext(selector, cbContext, listContext) { - this.selector = selector; - this.cbContext = cbContext; - this.listContext = listContext; - this.notSelectors = selector.notSelectors; } - SelectorContext.prototype.finalize = function (cssSelector, callback) { - var result = true; - if (this.notSelectors.length > 0 && (!this.listContext || !this.listContext.alreadyMatched)) { - var notMatcher = SelectorMatcher.createNotMatcher(this.notSelectors); - result = !notMatcher.match(cssSelector, null); - } - if (result && callback && (!this.listContext || !this.listContext.alreadyMatched)) { - if (this.listContext) { - this.listContext.alreadyMatched = true; - } - callback(this.selector, this.cbContext); + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (specs_1_1 && !specs_1_1.done && (_a = specs_1.return)) _a.call(specs_1); } - return result; - }; - return SelectorContext; -}()); + finally { if (e_1) throw e_1.error; } + } +} /** * @license @@ -15845,1063 +17616,1624 @@ var SelectorContext = /** @class */ (function () { * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ -var ERROR_COMPONENT_TYPE = 'ngComponentType'; -// Design notes: -// - don't lazily create metadata: -// For some metadata, we need to do async work sometimes, -// so the user has to kick off this loading. -// But we want to report errors even when the async work is -// not required to check that the user would have been able -// to wait correctly. -var CompileMetadataResolver = /** @class */ (function () { - function CompileMetadataResolver(_config, _htmlParser, _ngModuleResolver, _directiveResolver, _pipeResolver, _summaryResolver, _schemaRegistry, _directiveNormalizer, _console, _staticSymbolCache, _reflector, _errorCollector) { - this._config = _config; - this._htmlParser = _htmlParser; - this._ngModuleResolver = _ngModuleResolver; - this._directiveResolver = _directiveResolver; - this._pipeResolver = _pipeResolver; - this._summaryResolver = _summaryResolver; - this._schemaRegistry = _schemaRegistry; - this._directiveNormalizer = _directiveNormalizer; - this._console = _console; - this._staticSymbolCache = _staticSymbolCache; - this._reflector = _reflector; - this._errorCollector = _errorCollector; - this._nonNormalizedDirectiveCache = new Map(); - this._directiveCache = new Map(); - this._summaryCache = new Map(); - this._pipeCache = new Map(); - this._ngModuleCache = new Map(); - this._ngModuleOfTypes = new Map(); - this._shallowModuleCache = new Map(); +var ElementSchemaRegistry = /** @class */ (function () { + function ElementSchemaRegistry() { } - CompileMetadataResolver.prototype.getReflector = function () { return this._reflector; }; - CompileMetadataResolver.prototype.clearCacheFor = function (type) { - var dirMeta = this._directiveCache.get(type); - this._directiveCache.delete(type); - this._nonNormalizedDirectiveCache.delete(type); - this._summaryCache.delete(type); - this._pipeCache.delete(type); - this._ngModuleOfTypes.delete(type); - // Clear all of the NgModule as they contain transitive information! - this._ngModuleCache.clear(); - if (dirMeta) { - this._directiveNormalizer.clearCacheFor(dirMeta); + return ElementSchemaRegistry; +}()); + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +var BOOLEAN = 'boolean'; +var NUMBER = 'number'; +var STRING = 'string'; +var OBJECT = 'object'; +/** + * This array represents the DOM schema. It encodes inheritance, properties, and events. + * + * ## Overview + * + * Each line represents one kind of element. The `element_inheritance` and properties are joined + * using `element_inheritance|properties` syntax. + * + * ## Element Inheritance + * + * The `element_inheritance` can be further subdivided as `element1,element2,...^parentElement`. + * Here the individual elements are separated by `,` (commas). Every element in the list + * has identical properties. + * + * An `element` may inherit additional properties from `parentElement` If no `^parentElement` is + * specified then `""` (blank) element is assumed. + * + * NOTE: The blank element inherits from root `[Element]` element, the super element of all + * elements. + * + * NOTE an element prefix such as `:svg:` has no special meaning to the schema. + * + * ## Properties + * + * Each element has a set of properties separated by `,` (commas). Each property can be prefixed + * by a special character designating its type: + * + * - (no prefix): property is a string. + * - `*`: property represents an event. + * - `!`: property is a boolean. + * - `#`: property is a number. + * - `%`: property is an object. + * + * ## Query + * + * The class creates an internal squas representation which allows to easily answer the query of + * if a given property exist on a given element. + * + * NOTE: We don't yet support querying for types or events. + * NOTE: This schema is auto extracted from `schema_extractor.ts` located in the test folder, + * see dom_element_schema_registry_spec.ts + */ +// ================================================================================================= +// ================================================================================================= +// =========== S T O P - S T O P - S T O P - S T O P - S T O P - S T O P =========== +// ================================================================================================= +// ================================================================================================= +// +// DO NOT EDIT THIS DOM SCHEMA WITHOUT A SECURITY REVIEW! +// +// Newly added properties must be security reviewed and assigned an appropriate SecurityContext in +// dom_security_schema.ts. Reach out to mprobst & rjamet for details. +// +// ================================================================================================= +var SCHEMA = [ + '[Element]|textContent,%classList,className,id,innerHTML,*beforecopy,*beforecut,*beforepaste,*copy,*cut,*paste,*search,*selectstart,*webkitfullscreenchange,*webkitfullscreenerror,*wheel,outerHTML,#scrollLeft,#scrollTop,slot' + + /* added manually to avoid breaking changes */ + ',*message,*mozfullscreenchange,*mozfullscreenerror,*mozpointerlockchange,*mozpointerlockerror,*webglcontextcreationerror,*webglcontextlost,*webglcontextrestored', + '[HTMLElement]^[Element]|accessKey,contentEditable,dir,!draggable,!hidden,innerText,lang,*abort,*auxclick,*blur,*cancel,*canplay,*canplaythrough,*change,*click,*close,*contextmenu,*cuechange,*dblclick,*drag,*dragend,*dragenter,*dragleave,*dragover,*dragstart,*drop,*durationchange,*emptied,*ended,*error,*focus,*gotpointercapture,*input,*invalid,*keydown,*keypress,*keyup,*load,*loadeddata,*loadedmetadata,*loadstart,*lostpointercapture,*mousedown,*mouseenter,*mouseleave,*mousemove,*mouseout,*mouseover,*mouseup,*mousewheel,*pause,*play,*playing,*pointercancel,*pointerdown,*pointerenter,*pointerleave,*pointermove,*pointerout,*pointerover,*pointerup,*progress,*ratechange,*reset,*resize,*scroll,*seeked,*seeking,*select,*show,*stalled,*submit,*suspend,*timeupdate,*toggle,*volumechange,*waiting,outerText,!spellcheck,%style,#tabIndex,title,!translate', + 'abbr,address,article,aside,b,bdi,bdo,cite,code,dd,dfn,dt,em,figcaption,figure,footer,header,i,kbd,main,mark,nav,noscript,rb,rp,rt,rtc,ruby,s,samp,section,small,strong,sub,sup,u,var,wbr^[HTMLElement]|accessKey,contentEditable,dir,!draggable,!hidden,innerText,lang,*abort,*auxclick,*blur,*cancel,*canplay,*canplaythrough,*change,*click,*close,*contextmenu,*cuechange,*dblclick,*drag,*dragend,*dragenter,*dragleave,*dragover,*dragstart,*drop,*durationchange,*emptied,*ended,*error,*focus,*gotpointercapture,*input,*invalid,*keydown,*keypress,*keyup,*load,*loadeddata,*loadedmetadata,*loadstart,*lostpointercapture,*mousedown,*mouseenter,*mouseleave,*mousemove,*mouseout,*mouseover,*mouseup,*mousewheel,*pause,*play,*playing,*pointercancel,*pointerdown,*pointerenter,*pointerleave,*pointermove,*pointerout,*pointerover,*pointerup,*progress,*ratechange,*reset,*resize,*scroll,*seeked,*seeking,*select,*show,*stalled,*submit,*suspend,*timeupdate,*toggle,*volumechange,*waiting,outerText,!spellcheck,%style,#tabIndex,title,!translate', + 'media^[HTMLElement]|!autoplay,!controls,%controlsList,%crossOrigin,#currentTime,!defaultMuted,#defaultPlaybackRate,!disableRemotePlayback,!loop,!muted,*encrypted,*waitingforkey,#playbackRate,preload,src,%srcObject,#volume', + ':svg:^[HTMLElement]|*abort,*auxclick,*blur,*cancel,*canplay,*canplaythrough,*change,*click,*close,*contextmenu,*cuechange,*dblclick,*drag,*dragend,*dragenter,*dragleave,*dragover,*dragstart,*drop,*durationchange,*emptied,*ended,*error,*focus,*gotpointercapture,*input,*invalid,*keydown,*keypress,*keyup,*load,*loadeddata,*loadedmetadata,*loadstart,*lostpointercapture,*mousedown,*mouseenter,*mouseleave,*mousemove,*mouseout,*mouseover,*mouseup,*mousewheel,*pause,*play,*playing,*pointercancel,*pointerdown,*pointerenter,*pointerleave,*pointermove,*pointerout,*pointerover,*pointerup,*progress,*ratechange,*reset,*resize,*scroll,*seeked,*seeking,*select,*show,*stalled,*submit,*suspend,*timeupdate,*toggle,*volumechange,*waiting,%style,#tabIndex', + ':svg:graphics^:svg:|', + ':svg:animation^:svg:|*begin,*end,*repeat', + ':svg:geometry^:svg:|', + ':svg:componentTransferFunction^:svg:|', + ':svg:gradient^:svg:|', + ':svg:textContent^:svg:graphics|', + ':svg:textPositioning^:svg:textContent|', + 'a^[HTMLElement]|charset,coords,download,hash,host,hostname,href,hreflang,name,password,pathname,ping,port,protocol,referrerPolicy,rel,rev,search,shape,target,text,type,username', + 'area^[HTMLElement]|alt,coords,download,hash,host,hostname,href,!noHref,password,pathname,ping,port,protocol,referrerPolicy,rel,search,shape,target,username', + 'audio^media|', + 'br^[HTMLElement]|clear', + 'base^[HTMLElement]|href,target', + 'body^[HTMLElement]|aLink,background,bgColor,link,*beforeunload,*blur,*error,*focus,*hashchange,*languagechange,*load,*message,*offline,*online,*pagehide,*pageshow,*popstate,*rejectionhandled,*resize,*scroll,*storage,*unhandledrejection,*unload,text,vLink', + 'button^[HTMLElement]|!autofocus,!disabled,formAction,formEnctype,formMethod,!formNoValidate,formTarget,name,type,value', + 'canvas^[HTMLElement]|#height,#width', + 'content^[HTMLElement]|select', + 'dl^[HTMLElement]|!compact', + 'datalist^[HTMLElement]|', + 'details^[HTMLElement]|!open', + 'dialog^[HTMLElement]|!open,returnValue', + 'dir^[HTMLElement]|!compact', + 'div^[HTMLElement]|align', + 'embed^[HTMLElement]|align,height,name,src,type,width', + 'fieldset^[HTMLElement]|!disabled,name', + 'font^[HTMLElement]|color,face,size', + 'form^[HTMLElement]|acceptCharset,action,autocomplete,encoding,enctype,method,name,!noValidate,target', + 'frame^[HTMLElement]|frameBorder,longDesc,marginHeight,marginWidth,name,!noResize,scrolling,src', + 'frameset^[HTMLElement]|cols,*beforeunload,*blur,*error,*focus,*hashchange,*languagechange,*load,*message,*offline,*online,*pagehide,*pageshow,*popstate,*rejectionhandled,*resize,*scroll,*storage,*unhandledrejection,*unload,rows', + 'hr^[HTMLElement]|align,color,!noShade,size,width', + 'head^[HTMLElement]|', + 'h1,h2,h3,h4,h5,h6^[HTMLElement]|align', + 'html^[HTMLElement]|version', + 'iframe^[HTMLElement]|align,!allowFullscreen,frameBorder,height,longDesc,marginHeight,marginWidth,name,referrerPolicy,%sandbox,scrolling,src,srcdoc,width', + 'img^[HTMLElement]|align,alt,border,%crossOrigin,#height,#hspace,!isMap,longDesc,lowsrc,name,referrerPolicy,sizes,src,srcset,useMap,#vspace,#width', + 'input^[HTMLElement]|accept,align,alt,autocapitalize,autocomplete,!autofocus,!checked,!defaultChecked,defaultValue,dirName,!disabled,%files,formAction,formEnctype,formMethod,!formNoValidate,formTarget,#height,!incremental,!indeterminate,max,#maxLength,min,#minLength,!multiple,name,pattern,placeholder,!readOnly,!required,selectionDirection,#selectionEnd,#selectionStart,#size,src,step,type,useMap,value,%valueAsDate,#valueAsNumber,#width', + 'li^[HTMLElement]|type,#value', + 'label^[HTMLElement]|htmlFor', + 'legend^[HTMLElement]|align', + 'link^[HTMLElement]|as,charset,%crossOrigin,!disabled,href,hreflang,integrity,media,referrerPolicy,rel,%relList,rev,%sizes,target,type', + 'map^[HTMLElement]|name', + 'marquee^[HTMLElement]|behavior,bgColor,direction,height,#hspace,#loop,#scrollAmount,#scrollDelay,!trueSpeed,#vspace,width', + 'menu^[HTMLElement]|!compact', + 'meta^[HTMLElement]|content,httpEquiv,name,scheme', + 'meter^[HTMLElement]|#high,#low,#max,#min,#optimum,#value', + 'ins,del^[HTMLElement]|cite,dateTime', + 'ol^[HTMLElement]|!compact,!reversed,#start,type', + 'object^[HTMLElement]|align,archive,border,code,codeBase,codeType,data,!declare,height,#hspace,name,standby,type,useMap,#vspace,width', + 'optgroup^[HTMLElement]|!disabled,label', + 'option^[HTMLElement]|!defaultSelected,!disabled,label,!selected,text,value', + 'output^[HTMLElement]|defaultValue,%htmlFor,name,value', + 'p^[HTMLElement]|align', + 'param^[HTMLElement]|name,type,value,valueType', + 'picture^[HTMLElement]|', + 'pre^[HTMLElement]|#width', + 'progress^[HTMLElement]|#max,#value', + 'q,blockquote,cite^[HTMLElement]|', + 'script^[HTMLElement]|!async,charset,%crossOrigin,!defer,event,htmlFor,integrity,src,text,type', + 'select^[HTMLElement]|!autofocus,!disabled,#length,!multiple,name,!required,#selectedIndex,#size,value', + 'shadow^[HTMLElement]|', + 'slot^[HTMLElement]|name', + 'source^[HTMLElement]|media,sizes,src,srcset,type', + 'span^[HTMLElement]|', + 'style^[HTMLElement]|!disabled,media,type', + 'caption^[HTMLElement]|align', + 'th,td^[HTMLElement]|abbr,align,axis,bgColor,ch,chOff,#colSpan,headers,height,!noWrap,#rowSpan,scope,vAlign,width', + 'col,colgroup^[HTMLElement]|align,ch,chOff,#span,vAlign,width', + 'table^[HTMLElement]|align,bgColor,border,%caption,cellPadding,cellSpacing,frame,rules,summary,%tFoot,%tHead,width', + 'tr^[HTMLElement]|align,bgColor,ch,chOff,vAlign', + 'tfoot,thead,tbody^[HTMLElement]|align,ch,chOff,vAlign', + 'template^[HTMLElement]|', + 'textarea^[HTMLElement]|autocapitalize,!autofocus,#cols,defaultValue,dirName,!disabled,#maxLength,#minLength,name,placeholder,!readOnly,!required,#rows,selectionDirection,#selectionEnd,#selectionStart,value,wrap', + 'title^[HTMLElement]|text', + 'track^[HTMLElement]|!default,kind,label,src,srclang', + 'ul^[HTMLElement]|!compact,type', + 'unknown^[HTMLElement]|', + 'video^media|#height,poster,#width', + ':svg:a^:svg:graphics|', + ':svg:animate^:svg:animation|', + ':svg:animateMotion^:svg:animation|', + ':svg:animateTransform^:svg:animation|', + ':svg:circle^:svg:geometry|', + ':svg:clipPath^:svg:graphics|', + ':svg:defs^:svg:graphics|', + ':svg:desc^:svg:|', + ':svg:discard^:svg:|', + ':svg:ellipse^:svg:geometry|', + ':svg:feBlend^:svg:|', + ':svg:feColorMatrix^:svg:|', + ':svg:feComponentTransfer^:svg:|', + ':svg:feComposite^:svg:|', + ':svg:feConvolveMatrix^:svg:|', + ':svg:feDiffuseLighting^:svg:|', + ':svg:feDisplacementMap^:svg:|', + ':svg:feDistantLight^:svg:|', + ':svg:feDropShadow^:svg:|', + ':svg:feFlood^:svg:|', + ':svg:feFuncA^:svg:componentTransferFunction|', + ':svg:feFuncB^:svg:componentTransferFunction|', + ':svg:feFuncG^:svg:componentTransferFunction|', + ':svg:feFuncR^:svg:componentTransferFunction|', + ':svg:feGaussianBlur^:svg:|', + ':svg:feImage^:svg:|', + ':svg:feMerge^:svg:|', + ':svg:feMergeNode^:svg:|', + ':svg:feMorphology^:svg:|', + ':svg:feOffset^:svg:|', + ':svg:fePointLight^:svg:|', + ':svg:feSpecularLighting^:svg:|', + ':svg:feSpotLight^:svg:|', + ':svg:feTile^:svg:|', + ':svg:feTurbulence^:svg:|', + ':svg:filter^:svg:|', + ':svg:foreignObject^:svg:graphics|', + ':svg:g^:svg:graphics|', + ':svg:image^:svg:graphics|', + ':svg:line^:svg:geometry|', + ':svg:linearGradient^:svg:gradient|', + ':svg:mpath^:svg:|', + ':svg:marker^:svg:|', + ':svg:mask^:svg:|', + ':svg:metadata^:svg:|', + ':svg:path^:svg:geometry|', + ':svg:pattern^:svg:|', + ':svg:polygon^:svg:geometry|', + ':svg:polyline^:svg:geometry|', + ':svg:radialGradient^:svg:gradient|', + ':svg:rect^:svg:geometry|', + ':svg:svg^:svg:graphics|#currentScale,#zoomAndPan', + ':svg:script^:svg:|type', + ':svg:set^:svg:animation|', + ':svg:stop^:svg:|', + ':svg:style^:svg:|!disabled,media,title,type', + ':svg:switch^:svg:graphics|', + ':svg:symbol^:svg:|', + ':svg:tspan^:svg:textPositioning|', + ':svg:text^:svg:textPositioning|', + ':svg:textPath^:svg:textContent|', + ':svg:title^:svg:|', + ':svg:use^:svg:graphics|', + ':svg:view^:svg:|#zoomAndPan', + 'data^[HTMLElement]|value', + 'keygen^[HTMLElement]|!autofocus,challenge,!disabled,form,keytype,name', + 'menuitem^[HTMLElement]|type,label,icon,!disabled,!checked,radiogroup,!default', + 'summary^[HTMLElement]|', + 'time^[HTMLElement]|dateTime', + ':svg:cursor^:svg:|', +]; +var _ATTR_TO_PROP = { + 'class': 'className', + 'for': 'htmlFor', + 'formaction': 'formAction', + 'innerHtml': 'innerHTML', + 'readonly': 'readOnly', + 'tabindex': 'tabIndex', +}; +var DomElementSchemaRegistry = /** @class */ (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(DomElementSchemaRegistry, _super); + function DomElementSchemaRegistry() { + var _this = _super.call(this) || this; + _this._schema = {}; + SCHEMA.forEach(function (encodedType) { + var type = {}; + var _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(encodedType.split('|'), 2), strType = _a[0], strProperties = _a[1]; + var properties = strProperties.split(','); + var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(strType.split('^'), 2), typeNames = _b[0], superName = _b[1]; + typeNames.split(',').forEach(function (tag) { return _this._schema[tag.toLowerCase()] = type; }); + var superType = superName && _this._schema[superName.toLowerCase()]; + if (superType) { + Object.keys(superType).forEach(function (prop) { type[prop] = superType[prop]; }); + } + properties.forEach(function (property) { + if (property.length > 0) { + switch (property[0]) { + case '*': + // We don't yet support events. + // If ever allowing to bind to events, GO THROUGH A SECURITY REVIEW, allowing events + // will + // almost certainly introduce bad XSS vulnerabilities. + // type[property.substring(1)] = EVENT; + break; + case '!': + type[property.substring(1)] = BOOLEAN; + break; + case '#': + type[property.substring(1)] = NUMBER; + break; + case '%': + type[property.substring(1)] = OBJECT; + break; + default: + type[property] = STRING; + } + } + }); + }); + return _this; + } + DomElementSchemaRegistry.prototype.hasProperty = function (tagName, propName, schemaMetas) { + if (schemaMetas.some(function (schema) { return schema.name === NO_ERRORS_SCHEMA.name; })) { + return true; } - }; - CompileMetadataResolver.prototype.clearCache = function () { - this._directiveCache.clear(); - this._nonNormalizedDirectiveCache.clear(); - this._summaryCache.clear(); - this._pipeCache.clear(); - this._ngModuleCache.clear(); - this._ngModuleOfTypes.clear(); - this._directiveNormalizer.clearCache(); - }; - CompileMetadataResolver.prototype._createProxyClass = function (baseType, name) { - var delegate = null; - var proxyClass = function () { - if (!delegate) { - throw new Error("Illegal state: Class " + name + " for type " + stringify(baseType) + " is not compiled yet!"); + if (tagName.indexOf('-') > -1) { + if (isNgContainer(tagName) || isNgContent(tagName)) { + return false; } - return delegate.apply(this, arguments); - }; - proxyClass.setDelegate = function (d) { - delegate = d; - proxyClass.prototype = d.prototype; - }; - // Make stringify work correctly - proxyClass.overriddenName = name; - return proxyClass; + if (schemaMetas.some(function (schema) { return schema.name === CUSTOM_ELEMENTS_SCHEMA.name; })) { + // Can't tell now as we don't know which properties a custom element will get + // once it is instantiated + return true; + } + } + var elementProperties = this._schema[tagName.toLowerCase()] || this._schema['unknown']; + return !!elementProperties[propName]; }; - CompileMetadataResolver.prototype.getGeneratedClass = function (dirType, name) { - if (dirType instanceof StaticSymbol) { - return this._staticSymbolCache.get(ngfactoryFilePath(dirType.filePath), name); + DomElementSchemaRegistry.prototype.hasElement = function (tagName, schemaMetas) { + if (schemaMetas.some(function (schema) { return schema.name === NO_ERRORS_SCHEMA.name; })) { + return true; } - else { - return this._createProxyClass(dirType, name); + if (tagName.indexOf('-') > -1) { + if (isNgContainer(tagName) || isNgContent(tagName)) { + return true; + } + if (schemaMetas.some(function (schema) { return schema.name === CUSTOM_ELEMENTS_SCHEMA.name; })) { + // Allow any custom elements + return true; + } } + return !!this._schema[tagName.toLowerCase()]; }; - CompileMetadataResolver.prototype.getComponentViewClass = function (dirType) { - return this.getGeneratedClass(dirType, viewClassName(dirType, 0)); - }; - CompileMetadataResolver.prototype.getHostComponentViewClass = function (dirType) { - return this.getGeneratedClass(dirType, hostViewClassName(dirType)); - }; - CompileMetadataResolver.prototype.getHostComponentType = function (dirType) { - var name = identifierName({ reference: dirType }) + "_Host"; - if (dirType instanceof StaticSymbol) { - return this._staticSymbolCache.get(dirType.filePath, name); + /** + * securityContext returns the security context for the given property on the given DOM tag. + * + * Tag and property name are statically known and cannot change at runtime, i.e. it is not + * possible to bind a value into a changing attribute or tag name. + * + * The filtering is white list based. All attributes in the schema above are assumed to have the + * 'NONE' security context, i.e. that they are safe inert string values. Only specific well known + * attack vectors are assigned their appropriate context. + */ + DomElementSchemaRegistry.prototype.securityContext = function (tagName, propName, isAttribute) { + if (isAttribute) { + // NB: For security purposes, use the mapped property name, not the attribute name. + propName = this.getMappedPropName(propName); } - else { - var HostClass = function HostClass() { }; - HostClass.overriddenName = name; - return HostClass; + // Make sure comparisons are case insensitive, so that case differences between attribute and + // property names do not have a security impact. + tagName = tagName.toLowerCase(); + propName = propName.toLowerCase(); + var ctx = SECURITY_SCHEMA()[tagName + '|' + propName]; + if (ctx) { + return ctx; } + ctx = SECURITY_SCHEMA()['*|' + propName]; + return ctx ? ctx : SecurityContext.NONE; }; - CompileMetadataResolver.prototype.getRendererType = function (dirType) { - if (dirType instanceof StaticSymbol) { - return this._staticSymbolCache.get(ngfactoryFilePath(dirType.filePath), rendererTypeName(dirType)); + DomElementSchemaRegistry.prototype.getMappedPropName = function (propName) { return _ATTR_TO_PROP[propName] || propName; }; + DomElementSchemaRegistry.prototype.getDefaultComponentElementName = function () { return 'ng-component'; }; + DomElementSchemaRegistry.prototype.validateProperty = function (name) { + if (name.toLowerCase().startsWith('on')) { + var msg = "Binding to event property '" + name + "' is disallowed for security reasons, " + + ("please use (" + name.slice(2) + ")=...") + + ("\nIf '" + name + "' is a directive input, make sure the directive is imported by the") + + " current module."; + return { error: true, msg: msg }; } else { - // returning an object as proxy, - // that we fill later during runtime compilation. - return {}; + return { error: false }; } }; - CompileMetadataResolver.prototype.getComponentFactory = function (selector, dirType, inputs, outputs) { - if (dirType instanceof StaticSymbol) { - return this._staticSymbolCache.get(ngfactoryFilePath(dirType.filePath), componentFactoryName(dirType)); + DomElementSchemaRegistry.prototype.validateAttribute = function (name) { + if (name.toLowerCase().startsWith('on')) { + var msg = "Binding to event attribute '" + name + "' is disallowed for security reasons, " + + ("please use (" + name.slice(2) + ")=..."); + return { error: true, msg: msg }; } else { - var hostView = this.getHostComponentViewClass(dirType); - // Note: ngContentSelectors will be filled later once the template is - // loaded. - var createComponentFactory = this._reflector.resolveExternalReference(Identifiers.createComponentFactory); - return createComponentFactory(selector, dirType, hostView, inputs, outputs, []); - } - }; - CompileMetadataResolver.prototype.initComponentFactory = function (factory, ngContentSelectors) { - if (!(factory instanceof StaticSymbol)) { - (_a = factory.ngContentSelectors).push.apply(_a, Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])(ngContentSelectors)); + return { error: false }; } - var _a; }; - CompileMetadataResolver.prototype._loadSummary = function (type, kind) { - var typeSummary = this._summaryCache.get(type); - if (!typeSummary) { - var summary = this._summaryResolver.resolveSummary(type); - typeSummary = summary ? summary.type : null; - this._summaryCache.set(type, typeSummary || null); - } - return typeSummary && typeSummary.summaryKind === kind ? typeSummary : null; + DomElementSchemaRegistry.prototype.allKnownElementNames = function () { return Object.keys(this._schema); }; + DomElementSchemaRegistry.prototype.normalizeAnimationStyleProperty = function (propName) { + return dashCaseToCamelCase(propName); }; - CompileMetadataResolver.prototype.getHostComponentMetadata = function (compMeta, hostViewType) { - var hostType = this.getHostComponentType(compMeta.type.reference); - if (!hostViewType) { - hostViewType = this.getHostComponentViewClass(hostType); + DomElementSchemaRegistry.prototype.normalizeAnimationStyleValue = function (camelCaseProp, userProvidedProp, val) { + var unit = ''; + var strVal = val.toString().trim(); + var errorMsg = null; + if (_isPixelDimensionStyle(camelCaseProp) && val !== 0 && val !== '0') { + if (typeof val === 'number') { + unit = 'px'; + } + else { + var valAndSuffixMatch = val.match(/^[+-]?[\d\.]+([a-z]*)$/); + if (valAndSuffixMatch && valAndSuffixMatch[1].length == 0) { + errorMsg = "Please provide a CSS unit value for " + userProvidedProp + ":" + val; + } + } } - // Note: ! is ok here as this method should only be called with normalized directive - // metadata, which always fills in the selector. - var template = CssSelector.parse(compMeta.selector)[0].getMatchingElementTemplate(); - var templateUrl = ''; - var htmlAst = this._htmlParser.parse(template, templateUrl); - return CompileDirectiveMetadata.create({ - isHost: true, - type: { reference: hostType, diDeps: [], lifecycleHooks: [] }, - template: new CompileTemplateMetadata({ - encapsulation: ViewEncapsulation.None, - template: template, - templateUrl: templateUrl, - htmlAst: htmlAst, - styles: [], - styleUrls: [], - ngContentSelectors: [], - animations: [], - isInline: true, - externalStylesheets: [], - interpolation: null, - preserveWhitespaces: false, - }), - exportAs: null, - changeDetection: ChangeDetectionStrategy.Default, - inputs: [], - outputs: [], - host: {}, - isComponent: true, - selector: '*', - providers: [], - viewProviders: [], - queries: [], - guards: {}, - viewQueries: [], - componentViewType: hostViewType, - rendererType: { id: '__Host__', encapsulation: ViewEncapsulation.None, styles: [], data: {} }, - entryComponents: [], - componentFactory: null - }); + return { error: errorMsg, value: strVal + unit }; }; - CompileMetadataResolver.prototype.loadDirectiveMetadata = function (ngModuleType, directiveType, isSync) { - var _this = this; - if (this._directiveCache.has(directiveType)) { - return null; - } - directiveType = resolveForwardRef(directiveType); - var _a = this.getNonNormalizedDirectiveMetadata(directiveType), annotation = _a.annotation, metadata = _a.metadata; - var createDirectiveMetadata = function (templateMetadata) { - var normalizedDirMeta = new CompileDirectiveMetadata({ - isHost: false, - type: metadata.type, - isComponent: metadata.isComponent, - selector: metadata.selector, - exportAs: metadata.exportAs, - changeDetection: metadata.changeDetection, - inputs: metadata.inputs, - outputs: metadata.outputs, - hostListeners: metadata.hostListeners, - hostProperties: metadata.hostProperties, - hostAttributes: metadata.hostAttributes, - providers: metadata.providers, - viewProviders: metadata.viewProviders, - queries: metadata.queries, - guards: metadata.guards, - viewQueries: metadata.viewQueries, - entryComponents: metadata.entryComponents, - componentViewType: metadata.componentViewType, - rendererType: metadata.rendererType, - componentFactory: metadata.componentFactory, - template: templateMetadata + return DomElementSchemaRegistry; +}(ElementSchemaRegistry)); +function _isPixelDimensionStyle(prop) { + switch (prop) { + case 'width': + case 'height': + case 'minWidth': + case 'minHeight': + case 'maxWidth': + case 'maxHeight': + case 'left': + case 'top': + case 'bottom': + case 'right': + case 'fontSize': + case 'outlineWidth': + case 'outlineOffset': + case 'paddingTop': + case 'paddingLeft': + case 'paddingBottom': + case 'paddingRight': + case 'marginTop': + case 'marginLeft': + case 'marginBottom': + case 'marginRight': + case 'borderRadius': + case 'borderWidth': + case 'borderTopWidth': + case 'borderLeftWidth': + case 'borderRightWidth': + case 'borderBottomWidth': + case 'textIndent': + return true; + default: + return false; + } +} + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +var PROPERTY_PARTS_SEPARATOR = '.'; +var ATTRIBUTE_PREFIX = 'attr'; +var CLASS_PREFIX = 'class'; +var STYLE_PREFIX = 'style'; +var ANIMATE_PROP_PREFIX = 'animate-'; +/** + * Parses bindings in templates and in the directive host area. + */ +var BindingParser = /** @class */ (function () { + function BindingParser(_exprParser, _interpolationConfig, _schemaRegistry, pipes, errors) { + this._exprParser = _exprParser; + this._interpolationConfig = _interpolationConfig; + this._schemaRegistry = _schemaRegistry; + this.errors = errors; + this.pipesByName = null; + this._usedPipes = new Map(); + // When the `pipes` parameter is `null`, do not check for used pipes + // This is used in IVY when we might not know the available pipes at compile time + if (pipes) { + var pipesByName_1 = new Map(); + pipes.forEach(function (pipe) { return pipesByName_1.set(pipe.name, pipe); }); + this.pipesByName = pipesByName_1; + } + } + BindingParser.prototype.getUsedPipes = function () { return Array.from(this._usedPipes.values()); }; + BindingParser.prototype.createBoundHostProperties = function (dirMeta, sourceSpan) { + var _this = this; + if (dirMeta.hostProperties) { + var boundProps_1 = []; + Object.keys(dirMeta.hostProperties).forEach(function (propName) { + var expression = dirMeta.hostProperties[propName]; + if (typeof expression === 'string') { + _this.parsePropertyBinding(propName, expression, true, sourceSpan, [], boundProps_1); + } + else { + _this._reportError("Value of the host property binding \"" + propName + "\" needs to be a string representing an expression but got \"" + expression + "\" (" + typeof expression + ")", sourceSpan); + } }); - if (templateMetadata) { - _this.initComponentFactory(metadata.componentFactory, templateMetadata.ngContentSelectors); + return boundProps_1; + } + return null; + }; + BindingParser.prototype.createDirectiveHostPropertyAsts = function (dirMeta, elementSelector, sourceSpan) { + var _this = this; + var boundProps = this.createBoundHostProperties(dirMeta, sourceSpan); + return boundProps && + boundProps.map(function (prop) { return _this.createBoundElementProperty(elementSelector, prop); }); + }; + BindingParser.prototype.createDirectiveHostEventAsts = function (dirMeta, sourceSpan) { + var _this = this; + if (dirMeta.hostListeners) { + var targetEvents_1 = []; + Object.keys(dirMeta.hostListeners).forEach(function (propName) { + var expression = dirMeta.hostListeners[propName]; + if (typeof expression === 'string') { + _this.parseEvent(propName, expression, sourceSpan, [], targetEvents_1); + } + else { + _this._reportError("Value of the host listener \"" + propName + "\" needs to be a string representing an expression but got \"" + expression + "\" (" + typeof expression + ")", sourceSpan); + } + }); + return targetEvents_1; + } + return null; + }; + BindingParser.prototype.parseInterpolation = function (value, sourceSpan) { + var sourceInfo = sourceSpan.start.toString(); + try { + var ast = this._exprParser.parseInterpolation(value, sourceInfo, this._interpolationConfig); + if (ast) + this._reportExpressionParserErrors(ast.errors, sourceSpan); + this._checkPipes(ast, sourceSpan); + return ast; + } + catch (e) { + this._reportError("" + e, sourceSpan); + return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo); + } + }; + // Parse an inline template binding. ie `` + BindingParser.prototype.parseInlineTemplateBinding = function (tplKey, tplValue, sourceSpan, targetMatchableAttrs, targetProps, targetVars) { + var bindings = this._parseTemplateBindings(tplKey, tplValue, sourceSpan); + for (var i = 0; i < bindings.length; i++) { + var binding = bindings[i]; + if (binding.keyIsVar) { + targetVars.push(new ParsedVariable(binding.key, binding.name, sourceSpan)); } - _this._directiveCache.set(directiveType, normalizedDirMeta); - _this._summaryCache.set(directiveType, normalizedDirMeta.toSummary()); - return null; - }; - if (metadata.isComponent) { - var template = metadata.template; - var templateMeta = this._directiveNormalizer.normalizeTemplate({ - ngModuleType: ngModuleType, - componentType: directiveType, - moduleUrl: this._reflector.componentModuleUrl(directiveType, annotation), - encapsulation: template.encapsulation, - template: template.template, - templateUrl: template.templateUrl, - styles: template.styles, - styleUrls: template.styleUrls, - animations: template.animations, - interpolation: template.interpolation, - preserveWhitespaces: template.preserveWhitespaces + else if (binding.expression) { + this._parsePropertyAst(binding.key, binding.expression, sourceSpan, targetMatchableAttrs, targetProps); + } + else { + targetMatchableAttrs.push([binding.key, '']); + this.parseLiteralAttr(binding.key, null, sourceSpan, targetMatchableAttrs, targetProps); + } + } + }; + BindingParser.prototype._parseTemplateBindings = function (tplKey, tplValue, sourceSpan) { + var _this = this; + var sourceInfo = sourceSpan.start.toString(); + try { + var bindingsResult = this._exprParser.parseTemplateBindings(tplKey, tplValue, sourceInfo); + this._reportExpressionParserErrors(bindingsResult.errors, sourceSpan); + bindingsResult.templateBindings.forEach(function (binding) { + if (binding.expression) { + _this._checkPipes(binding.expression, sourceSpan); + } }); - if (isPromise(templateMeta) && isSync) { - this._reportError(componentStillLoadingError(directiveType), directiveType); - return null; + bindingsResult.warnings.forEach(function (warning) { _this._reportError(warning, sourceSpan, ParseErrorLevel.WARNING); }); + return bindingsResult.templateBindings; + } + catch (e) { + this._reportError("" + e, sourceSpan); + return []; + } + }; + BindingParser.prototype.parseLiteralAttr = function (name, value, sourceSpan, targetMatchableAttrs, targetProps) { + if (isAnimationLabel(name)) { + name = name.substring(1); + if (value) { + this._reportError("Assigning animation triggers via @prop=\"exp\" attributes with an expression is invalid." + + " Use property bindings (e.g. [@prop]=\"exp\") or use an attribute without a value (e.g. @prop) instead.", sourceSpan, ParseErrorLevel.ERROR); } - return SyncAsync.then(templateMeta, createDirectiveMetadata); + this._parseAnimation(name, value, sourceSpan, targetMatchableAttrs, targetProps); } else { - // directive - createDirectiveMetadata(null); - return null; + targetProps.push(new ParsedProperty(name, this._exprParser.wrapLiteralPrimitive(value, ''), ParsedPropertyType.LITERAL_ATTR, sourceSpan)); } }; - CompileMetadataResolver.prototype.getNonNormalizedDirectiveMetadata = function (directiveType) { - var _this = this; - directiveType = resolveForwardRef(directiveType); - if (!directiveType) { - return null; + BindingParser.prototype.parsePropertyBinding = function (name, expression, isHost, sourceSpan, targetMatchableAttrs, targetProps) { + var isAnimationProp = false; + if (name.startsWith(ANIMATE_PROP_PREFIX)) { + isAnimationProp = true; + name = name.substring(ANIMATE_PROP_PREFIX.length); } - var cacheEntry = this._nonNormalizedDirectiveCache.get(directiveType); - if (cacheEntry) { - return cacheEntry; + else if (isAnimationLabel(name)) { + isAnimationProp = true; + name = name.substring(1); } - var dirMeta = this._directiveResolver.resolve(directiveType, false); - if (!dirMeta) { - return null; + if (isAnimationProp) { + this._parseAnimation(name, expression, sourceSpan, targetMatchableAttrs, targetProps); } - var nonNormalizedTemplateMetadata = undefined; - if (createComponent.isTypeOf(dirMeta)) { - // component - var compMeta = dirMeta; - assertArrayOfStrings('styles', compMeta.styles); - assertArrayOfStrings('styleUrls', compMeta.styleUrls); - assertInterpolationSymbols('interpolation', compMeta.interpolation); - var animations = compMeta.animations; - nonNormalizedTemplateMetadata = new CompileTemplateMetadata({ - encapsulation: noUndefined(compMeta.encapsulation), - template: noUndefined(compMeta.template), - templateUrl: noUndefined(compMeta.templateUrl), - htmlAst: null, - styles: compMeta.styles || [], - styleUrls: compMeta.styleUrls || [], - animations: animations || [], - interpolation: noUndefined(compMeta.interpolation), - isInline: !!compMeta.template, - externalStylesheets: [], - ngContentSelectors: [], - preserveWhitespaces: noUndefined(dirMeta.preserveWhitespaces), - }); + else { + this._parsePropertyAst(name, this._parseBinding(expression, isHost, sourceSpan), sourceSpan, targetMatchableAttrs, targetProps); } - var changeDetectionStrategy = null; - var viewProviders = []; - var entryComponentMetadata = []; - var selector = dirMeta.selector; - if (createComponent.isTypeOf(dirMeta)) { - // Component - var compMeta = dirMeta; - changeDetectionStrategy = compMeta.changeDetection; - if (compMeta.viewProviders) { - viewProviders = this._getProvidersMetadata(compMeta.viewProviders, entryComponentMetadata, "viewProviders for \"" + stringifyType(directiveType) + "\"", [], directiveType); - } - if (compMeta.entryComponents) { - entryComponentMetadata = flattenAndDedupeArray(compMeta.entryComponents) - .map(function (type) { return _this._getEntryComponentMetadata(type); }) - .concat(entryComponentMetadata); + }; + BindingParser.prototype.parsePropertyInterpolation = function (name, value, sourceSpan, targetMatchableAttrs, targetProps) { + var expr = this.parseInterpolation(value, sourceSpan); + if (expr) { + this._parsePropertyAst(name, expr, sourceSpan, targetMatchableAttrs, targetProps); + return true; + } + return false; + }; + BindingParser.prototype._parsePropertyAst = function (name, ast, sourceSpan, targetMatchableAttrs, targetProps) { + targetMatchableAttrs.push([name, ast.source]); + targetProps.push(new ParsedProperty(name, ast, ParsedPropertyType.DEFAULT, sourceSpan)); + }; + BindingParser.prototype._parseAnimation = function (name, expression, sourceSpan, targetMatchableAttrs, targetProps) { + // This will occur when a @trigger is not paired with an expression. + // For animations it is valid to not have an expression since */void + // states will be applied by angular when the element is attached/detached + var ast = this._parseBinding(expression || 'undefined', false, sourceSpan); + targetMatchableAttrs.push([name, ast.source]); + targetProps.push(new ParsedProperty(name, ast, ParsedPropertyType.ANIMATION, sourceSpan)); + }; + BindingParser.prototype._parseBinding = function (value, isHostBinding, sourceSpan) { + var sourceInfo = (sourceSpan && sourceSpan.start || '(unknown)').toString(); + try { + var ast = isHostBinding ? + this._exprParser.parseSimpleBinding(value, sourceInfo, this._interpolationConfig) : + this._exprParser.parseBinding(value, sourceInfo, this._interpolationConfig); + if (ast) + this._reportExpressionParserErrors(ast.errors, sourceSpan); + this._checkPipes(ast, sourceSpan); + return ast; + } + catch (e) { + this._reportError("" + e, sourceSpan); + return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo); + } + }; + BindingParser.prototype.createBoundElementProperty = function (elementSelector, boundProp) { + if (boundProp.isAnimation) { + return new BoundElementProperty(boundProp.name, 4 /* Animation */, SecurityContext.NONE, boundProp.expression, null, boundProp.sourceSpan); + } + var unit = null; + var bindingType = undefined; + var boundPropertyName = null; + var parts = boundProp.name.split(PROPERTY_PARTS_SEPARATOR); + var securityContexts = undefined; + // Check check for special cases (prefix style, attr, class) + if (parts.length > 1) { + if (parts[0] == ATTRIBUTE_PREFIX) { + boundPropertyName = parts[1]; + this._validatePropertyOrAttributeName(boundPropertyName, boundProp.sourceSpan, true); + securityContexts = calcPossibleSecurityContexts(this._schemaRegistry, elementSelector, boundPropertyName, true); + var nsSeparatorIdx = boundPropertyName.indexOf(':'); + if (nsSeparatorIdx > -1) { + var ns = boundPropertyName.substring(0, nsSeparatorIdx); + var name_1 = boundPropertyName.substring(nsSeparatorIdx + 1); + boundPropertyName = mergeNsAndName(ns, name_1); + } + bindingType = 1 /* Attribute */; } - if (!selector) { - selector = this._schemaRegistry.getDefaultComponentElementName(); + else if (parts[0] == CLASS_PREFIX) { + boundPropertyName = parts[1]; + bindingType = 2 /* Class */; + securityContexts = [SecurityContext.NONE]; } - } - else { - // Directive - if (!selector) { - this._reportError(syntaxError("Directive " + stringifyType(directiveType) + " has no selector, please add it!"), directiveType); - selector = 'error'; + else if (parts[0] == STYLE_PREFIX) { + unit = parts.length > 2 ? parts[2] : null; + boundPropertyName = parts[1]; + bindingType = 3 /* Style */; + securityContexts = [SecurityContext.STYLE]; } } - var providers = []; - if (dirMeta.providers != null) { - providers = this._getProvidersMetadata(dirMeta.providers, entryComponentMetadata, "providers for \"" + stringifyType(directiveType) + "\"", [], directiveType); + // If not a special case, use the full property name + if (boundPropertyName === null) { + boundPropertyName = this._schemaRegistry.getMappedPropName(boundProp.name); + securityContexts = calcPossibleSecurityContexts(this._schemaRegistry, elementSelector, boundPropertyName, false); + bindingType = 0 /* Property */; + this._validatePropertyOrAttributeName(boundPropertyName, boundProp.sourceSpan, false); } - var queries = []; - var viewQueries = []; - if (dirMeta.queries != null) { - queries = this._getQueriesMetadata(dirMeta.queries, false, directiveType); - viewQueries = this._getQueriesMetadata(dirMeta.queries, true, directiveType); + return new BoundElementProperty(boundPropertyName, bindingType, securityContexts[0], boundProp.expression, unit, boundProp.sourceSpan); + }; + BindingParser.prototype.parseEvent = function (name, expression, sourceSpan, targetMatchableAttrs, targetEvents) { + if (isAnimationLabel(name)) { + name = name.substr(1); + this._parseAnimationEvent(name, expression, sourceSpan, targetEvents); } - var metadata = CompileDirectiveMetadata.create({ - isHost: false, - selector: selector, - exportAs: noUndefined(dirMeta.exportAs), - isComponent: !!nonNormalizedTemplateMetadata, - type: this._getTypeMetadata(directiveType), - template: nonNormalizedTemplateMetadata, - changeDetection: changeDetectionStrategy, - inputs: dirMeta.inputs || [], - outputs: dirMeta.outputs || [], - host: dirMeta.host || {}, - providers: providers || [], - viewProviders: viewProviders || [], - queries: queries || [], - guards: dirMeta.guards || {}, - viewQueries: viewQueries || [], - entryComponents: entryComponentMetadata, - componentViewType: nonNormalizedTemplateMetadata ? this.getComponentViewClass(directiveType) : - null, - rendererType: nonNormalizedTemplateMetadata ? this.getRendererType(directiveType) : null, - componentFactory: null - }); - if (nonNormalizedTemplateMetadata) { - metadata.componentFactory = - this.getComponentFactory(selector, directiveType, metadata.inputs, metadata.outputs); + else { + this._parseRegularEvent(name, expression, sourceSpan, targetMatchableAttrs, targetEvents); } - cacheEntry = { metadata: metadata, annotation: dirMeta }; - this._nonNormalizedDirectiveCache.set(directiveType, cacheEntry); - return cacheEntry; }; - /** - * Gets the metadata for the given directive. - * This assumes `loadNgModuleDirectiveAndPipeMetadata` has been called first. - */ - CompileMetadataResolver.prototype.getDirectiveMetadata = function (directiveType) { - var dirMeta = this._directiveCache.get(directiveType); - if (!dirMeta) { - this._reportError(syntaxError("Illegal state: getDirectiveMetadata can only be called after loadNgModuleDirectiveAndPipeMetadata for a module that declares it. Directive " + stringifyType(directiveType) + "."), directiveType); + BindingParser.prototype._parseAnimationEvent = function (name, expression, sourceSpan, targetEvents) { + var matches = splitAtPeriod(name, [name, '']); + var eventName = matches[0]; + var phase = matches[1].toLowerCase(); + if (phase) { + switch (phase) { + case 'start': + case 'done': + var ast = this._parseAction(expression, sourceSpan); + targetEvents.push(new ParsedEvent(eventName, phase, 1 /* Animation */, ast, sourceSpan)); + break; + default: + this._reportError("The provided animation output phase value \"" + phase + "\" for \"@" + eventName + "\" is not supported (use start or done)", sourceSpan); + break; + } } - return dirMeta; - }; - CompileMetadataResolver.prototype.getDirectiveSummary = function (dirType) { - var dirSummary = this._loadSummary(dirType, CompileSummaryKind.Directive); - if (!dirSummary) { - this._reportError(syntaxError("Illegal state: Could not load the summary for directive " + stringifyType(dirType) + "."), dirType); + else { + this._reportError("The animation trigger output event (@" + eventName + ") is missing its phase value name (start or done are currently supported)", sourceSpan); } - return dirSummary; }; - CompileMetadataResolver.prototype.isDirective = function (type) { - return !!this._loadSummary(type, CompileSummaryKind.Directive) || - this._directiveResolver.isDirective(type); + BindingParser.prototype._parseRegularEvent = function (name, expression, sourceSpan, targetMatchableAttrs, targetEvents) { + // long format: 'target: eventName' + var _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(splitAtColon(name, [null, name]), 2), target = _a[0], eventName = _a[1]; + var ast = this._parseAction(expression, sourceSpan); + targetMatchableAttrs.push([name, ast.source]); + targetEvents.push(new ParsedEvent(eventName, target, 0 /* Regular */, ast, sourceSpan)); + // Don't detect directives for event names for now, + // so don't add the event name to the matchableAttrs }; - CompileMetadataResolver.prototype.isPipe = function (type) { - return !!this._loadSummary(type, CompileSummaryKind.Pipe) || - this._pipeResolver.isPipe(type); + BindingParser.prototype._parseAction = function (value, sourceSpan) { + var sourceInfo = (sourceSpan && sourceSpan.start || '(unknown').toString(); + try { + var ast = this._exprParser.parseAction(value, sourceInfo, this._interpolationConfig); + if (ast) { + this._reportExpressionParserErrors(ast.errors, sourceSpan); + } + if (!ast || ast.ast instanceof EmptyExpr) { + this._reportError("Empty expressions are not allowed", sourceSpan); + return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo); + } + this._checkPipes(ast, sourceSpan); + return ast; + } + catch (e) { + this._reportError("" + e, sourceSpan); + return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo); + } }; - CompileMetadataResolver.prototype.isNgModule = function (type) { - return !!this._loadSummary(type, CompileSummaryKind.NgModule) || - this._ngModuleResolver.isNgModule(type); + BindingParser.prototype._reportError = function (message, sourceSpan, level) { + if (level === void 0) { level = ParseErrorLevel.ERROR; } + this.errors.push(new ParseError(sourceSpan, message, level)); }; - CompileMetadataResolver.prototype.getNgModuleSummary = function (moduleType, alreadyCollecting) { - if (alreadyCollecting === void 0) { alreadyCollecting = null; } - var moduleSummary = this._loadSummary(moduleType, CompileSummaryKind.NgModule); - if (!moduleSummary) { - var moduleMeta = this.getNgModuleMetadata(moduleType, false, alreadyCollecting); - moduleSummary = moduleMeta ? moduleMeta.toSummary() : null; - if (moduleSummary) { - this._summaryCache.set(moduleType, moduleSummary); + BindingParser.prototype._reportExpressionParserErrors = function (errors, sourceSpan) { + var e_1, _a; + try { + for (var errors_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(errors), errors_1_1 = errors_1.next(); !errors_1_1.done; errors_1_1 = errors_1.next()) { + var error$$1 = errors_1_1.value; + this._reportError(error$$1.message, sourceSpan); } } - return moduleSummary; + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (errors_1_1 && !errors_1_1.done && (_a = errors_1.return)) _a.call(errors_1); + } + finally { if (e_1) throw e_1.error; } + } }; - /** - * Loads the declared directives and pipes of an NgModule. - */ - CompileMetadataResolver.prototype.loadNgModuleDirectiveAndPipeMetadata = function (moduleType, isSync, throwIfNotFound) { + // Make sure all the used pipes are known in `this.pipesByName` + BindingParser.prototype._checkPipes = function (ast, sourceSpan) { var _this = this; - if (throwIfNotFound === void 0) { throwIfNotFound = true; } - var ngModule = this.getNgModuleMetadata(moduleType, throwIfNotFound); - var loading = []; - if (ngModule) { - ngModule.declaredDirectives.forEach(function (id) { - var promise = _this.loadDirectiveMetadata(moduleType, id.reference, isSync); - if (promise) { - loading.push(promise); + if (ast && this.pipesByName) { + var collector = new PipeCollector(); + ast.visit(collector); + collector.pipes.forEach(function (ast, pipeName) { + var pipeMeta = _this.pipesByName.get(pipeName); + if (!pipeMeta) { + _this._reportError("The pipe '" + pipeName + "' could not be found", new ParseSourceSpan(sourceSpan.start.moveBy(ast.span.start), sourceSpan.start.moveBy(ast.span.end))); + } + else { + _this._usedPipes.set(pipeName, pipeMeta); } }); - ngModule.declaredPipes.forEach(function (id) { return _this._loadPipeMetadata(id.reference); }); } - return Promise.all(loading); }; - CompileMetadataResolver.prototype.getShallowModuleMetadata = function (moduleType) { - var compileMeta = this._shallowModuleCache.get(moduleType); - if (compileMeta) { - return compileMeta; + /** + * @param propName the name of the property / attribute + * @param sourceSpan + * @param isAttr true when binding to an attribute + */ + BindingParser.prototype._validatePropertyOrAttributeName = function (propName, sourceSpan, isAttr) { + var report = isAttr ? this._schemaRegistry.validateAttribute(propName) : + this._schemaRegistry.validateProperty(propName); + if (report.error) { + this._reportError(report.msg, sourceSpan, ParseErrorLevel.ERROR); } - var ngModuleMeta = findLast(this._reflector.shallowAnnotations(moduleType), createNgModule.isTypeOf); - compileMeta = { - type: this._getTypeMetadata(moduleType), - rawExports: ngModuleMeta.exports, - rawImports: ngModuleMeta.imports, - rawProviders: ngModuleMeta.providers, - }; - this._shallowModuleCache.set(moduleType, compileMeta); - return compileMeta; }; - CompileMetadataResolver.prototype.getNgModuleMetadata = function (moduleType, throwIfNotFound, alreadyCollecting) { - var _this = this; - if (throwIfNotFound === void 0) { throwIfNotFound = true; } - if (alreadyCollecting === void 0) { alreadyCollecting = null; } - moduleType = resolveForwardRef(moduleType); - var compileMeta = this._ngModuleCache.get(moduleType); - if (compileMeta) { - return compileMeta; - } - var meta = this._ngModuleResolver.resolve(moduleType, throwIfNotFound); - if (!meta) { - return null; - } - var declaredDirectives = []; - var exportedNonModuleIdentifiers = []; - var declaredPipes = []; - var importedModules = []; - var exportedModules = []; - var providers = []; - var entryComponents = []; - var bootstrapComponents = []; - var schemas = []; - if (meta.imports) { - flattenAndDedupeArray(meta.imports).forEach(function (importedType) { - var importedModuleType = undefined; - if (isValidType(importedType)) { - importedModuleType = importedType; - } - else if (importedType && importedType.ngModule) { - var moduleWithProviders = importedType; - importedModuleType = moduleWithProviders.ngModule; - if (moduleWithProviders.providers) { - providers.push.apply(providers, Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])(_this._getProvidersMetadata(moduleWithProviders.providers, entryComponents, "provider for the NgModule '" + stringifyType(importedModuleType) + "'", [], importedType))); - } - } - if (importedModuleType) { - if (_this._checkSelfImport(moduleType, importedModuleType)) - return; - if (!alreadyCollecting) - alreadyCollecting = new Set(); - if (alreadyCollecting.has(importedModuleType)) { - _this._reportError(syntaxError(_this._getTypeDescriptor(importedModuleType) + " '" + stringifyType(importedType) + "' is imported recursively by the module '" + stringifyType(moduleType) + "'."), moduleType); - return; - } - alreadyCollecting.add(importedModuleType); - var importedModuleSummary = _this.getNgModuleSummary(importedModuleType, alreadyCollecting); - alreadyCollecting.delete(importedModuleType); - if (!importedModuleSummary) { - _this._reportError(syntaxError("Unexpected " + _this._getTypeDescriptor(importedType) + " '" + stringifyType(importedType) + "' imported by the module '" + stringifyType(moduleType) + "'. Please add a @NgModule annotation."), moduleType); - return; - } - importedModules.push(importedModuleSummary); - } - else { - _this._reportError(syntaxError("Unexpected value '" + stringifyType(importedType) + "' imported by the module '" + stringifyType(moduleType) + "'"), moduleType); - return; - } - }); + return BindingParser; +}()); +var PipeCollector = /** @class */ (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(PipeCollector, _super); + function PipeCollector() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.pipes = new Map(); + return _this; + } + PipeCollector.prototype.visitPipe = function (ast, context) { + this.pipes.set(ast.name, ast); + ast.exp.visit(this); + this.visitAll(ast.args, context); + return null; + }; + return PipeCollector; +}(RecursiveAstVisitor$1)); +function isAnimationLabel(name) { + return name[0] == '@'; +} +function calcPossibleSecurityContexts(registry, selector, propName, isAttribute) { + var ctxs = []; + CssSelector.parse(selector).forEach(function (selector) { + var elementNames = selector.element ? [selector.element] : registry.allKnownElementNames(); + var notElementNames = new Set(selector.notSelectors.filter(function (selector) { return selector.isElementSelector(); }) + .map(function (selector) { return selector.element; })); + var possibleElementNames = elementNames.filter(function (elementName) { return !notElementNames.has(elementName); }); + ctxs.push.apply(ctxs, Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])(possibleElementNames.map(function (elementName) { return registry.securityContext(elementName, propName, isAttribute); }))); + }); + return ctxs.length === 0 ? [SecurityContext.NONE] : Array.from(new Set(ctxs)).sort(); +} + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +var Text$3 = /** @class */ (function () { + function Text(value, sourceSpan) { + this.value = value; + this.sourceSpan = sourceSpan; + } + Text.prototype.visit = function (visitor) { return visitor.visitText(this); }; + return Text; +}()); +var BoundText = /** @class */ (function () { + function BoundText(value, sourceSpan, i18n) { + this.value = value; + this.sourceSpan = sourceSpan; + this.i18n = i18n; + } + BoundText.prototype.visit = function (visitor) { return visitor.visitBoundText(this); }; + return BoundText; +}()); +var TextAttribute = /** @class */ (function () { + function TextAttribute(name, value, sourceSpan, valueSpan, i18n) { + this.name = name; + this.value = value; + this.sourceSpan = sourceSpan; + this.valueSpan = valueSpan; + this.i18n = i18n; + } + TextAttribute.prototype.visit = function (visitor) { return visitor.visitTextAttribute(this); }; + return TextAttribute; +}()); +var BoundAttribute = /** @class */ (function () { + function BoundAttribute(name, type, securityContext, value, unit, sourceSpan, i18n) { + this.name = name; + this.type = type; + this.securityContext = securityContext; + this.value = value; + this.unit = unit; + this.sourceSpan = sourceSpan; + this.i18n = i18n; + } + BoundAttribute.fromBoundElementProperty = function (prop, i18n) { + return new BoundAttribute(prop.name, prop.type, prop.securityContext, prop.value, prop.unit, prop.sourceSpan, i18n); + }; + BoundAttribute.prototype.visit = function (visitor) { return visitor.visitBoundAttribute(this); }; + return BoundAttribute; +}()); +var BoundEvent = /** @class */ (function () { + function BoundEvent(name, handler, target, phase, sourceSpan) { + this.name = name; + this.handler = handler; + this.target = target; + this.phase = phase; + this.sourceSpan = sourceSpan; + } + BoundEvent.fromParsedEvent = function (event) { + var target = event.type === 0 /* Regular */ ? event.targetOrPhase : null; + var phase = event.type === 1 /* Animation */ ? event.targetOrPhase : null; + return new BoundEvent(event.name, event.handler, target, phase, event.sourceSpan); + }; + BoundEvent.prototype.visit = function (visitor) { return visitor.visitBoundEvent(this); }; + return BoundEvent; +}()); +var Element$1 = /** @class */ (function () { + function Element(name, attributes, inputs, outputs, children, references, sourceSpan, startSourceSpan, endSourceSpan, i18n) { + this.name = name; + this.attributes = attributes; + this.inputs = inputs; + this.outputs = outputs; + this.children = children; + this.references = references; + this.sourceSpan = sourceSpan; + this.startSourceSpan = startSourceSpan; + this.endSourceSpan = endSourceSpan; + this.i18n = i18n; + } + Element.prototype.visit = function (visitor) { return visitor.visitElement(this); }; + return Element; +}()); +var Template = /** @class */ (function () { + function Template(attributes, inputs, outputs, children, references, variables, sourceSpan, startSourceSpan, endSourceSpan, i18n) { + this.attributes = attributes; + this.inputs = inputs; + this.outputs = outputs; + this.children = children; + this.references = references; + this.variables = variables; + this.sourceSpan = sourceSpan; + this.startSourceSpan = startSourceSpan; + this.endSourceSpan = endSourceSpan; + this.i18n = i18n; + } + Template.prototype.visit = function (visitor) { return visitor.visitTemplate(this); }; + return Template; +}()); +var Content = /** @class */ (function () { + function Content(selectorIndex, attributes, sourceSpan, i18n) { + this.selectorIndex = selectorIndex; + this.attributes = attributes; + this.sourceSpan = sourceSpan; + this.i18n = i18n; + } + Content.prototype.visit = function (visitor) { return visitor.visitContent(this); }; + return Content; +}()); +var Variable = /** @class */ (function () { + function Variable(name, value, sourceSpan) { + this.name = name; + this.value = value; + this.sourceSpan = sourceSpan; + } + Variable.prototype.visit = function (visitor) { return visitor.visitVariable(this); }; + return Variable; +}()); +var Reference = /** @class */ (function () { + function Reference(name, value, sourceSpan) { + this.name = name; + this.value = value; + this.sourceSpan = sourceSpan; + } + Reference.prototype.visit = function (visitor) { return visitor.visitReference(this); }; + return Reference; +}()); +var Icu$1 = /** @class */ (function () { + function Icu(vars, placeholders, sourceSpan, i18n) { + this.vars = vars; + this.placeholders = placeholders; + this.sourceSpan = sourceSpan; + this.i18n = i18n; + } + Icu.prototype.visit = function (visitor) { return visitor.visitIcu(this); }; + return Icu; +}()); +function visitAll$1(visitor, nodes) { + var e_1, _a, e_2, _b; + var result = []; + if (visitor.visit) { + try { + for (var nodes_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(nodes), nodes_1_1 = nodes_1.next(); !nodes_1_1.done; nodes_1_1 = nodes_1.next()) { + var node = nodes_1_1.value; + var newNode = visitor.visit(node) || node.visit(visitor); + } } - if (meta.exports) { - flattenAndDedupeArray(meta.exports).forEach(function (exportedType) { - if (!isValidType(exportedType)) { - _this._reportError(syntaxError("Unexpected value '" + stringifyType(exportedType) + "' exported by the module '" + stringifyType(moduleType) + "'"), moduleType); - return; - } - if (!alreadyCollecting) - alreadyCollecting = new Set(); - if (alreadyCollecting.has(exportedType)) { - _this._reportError(syntaxError(_this._getTypeDescriptor(exportedType) + " '" + stringify(exportedType) + "' is exported recursively by the module '" + stringifyType(moduleType) + "'"), moduleType); - return; - } - alreadyCollecting.add(exportedType); - var exportedModuleSummary = _this.getNgModuleSummary(exportedType, alreadyCollecting); - alreadyCollecting.delete(exportedType); - if (exportedModuleSummary) { - exportedModules.push(exportedModuleSummary); - } - else { - exportedNonModuleIdentifiers.push(_this._getIdentifierMetadata(exportedType)); - } - }); + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (nodes_1_1 && !nodes_1_1.done && (_a = nodes_1.return)) _a.call(nodes_1); + } + finally { if (e_1) throw e_1.error; } } - // Note: This will be modified later, so we rely on - // getting a new instance every time! - var transitiveModule = this._getTransitiveNgModuleMetadata(importedModules, exportedModules); - if (meta.declarations) { - flattenAndDedupeArray(meta.declarations).forEach(function (declaredType) { - if (!isValidType(declaredType)) { - _this._reportError(syntaxError("Unexpected value '" + stringifyType(declaredType) + "' declared by the module '" + stringifyType(moduleType) + "'"), moduleType); - return; + } + else { + try { + for (var nodes_2 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(nodes), nodes_2_1 = nodes_2.next(); !nodes_2_1.done; nodes_2_1 = nodes_2.next()) { + var node = nodes_2_1.value; + var newNode = node.visit(visitor); + if (newNode) { + result.push(newNode); } - var declaredIdentifier = _this._getIdentifierMetadata(declaredType); - if (_this.isDirective(declaredType)) { - transitiveModule.addDirective(declaredIdentifier); - declaredDirectives.push(declaredIdentifier); - _this._addTypeToModule(declaredType, moduleType); + } + } + catch (e_2_1) { e_2 = { error: e_2_1 }; } + finally { + try { + if (nodes_2_1 && !nodes_2_1.done && (_b = nodes_2.return)) _b.call(nodes_2); + } + finally { if (e_2) throw e_2.error; } + } + } + return result; +} + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +var StyleWithImports = /** @class */ (function () { + function StyleWithImports(style, styleUrls) { + this.style = style; + this.styleUrls = styleUrls; + } + return StyleWithImports; +}()); +function isStyleUrlResolvable(url) { + if (url == null || url.length === 0 || url[0] == '/') + return false; + var schemeMatch = url.match(URL_WITH_SCHEMA_REGEXP); + return schemeMatch === null || schemeMatch[1] == 'package' || schemeMatch[1] == 'asset'; +} +/** + * Rewrites stylesheets by resolving and removing the @import urls that + * are either relative or don't have a `package:` scheme + */ +function extractStyleUrls(resolver, baseUrl, cssText) { + var foundUrls = []; + var modifiedCssText = cssText.replace(CSS_STRIPPABLE_COMMENT_REGEXP, '') + .replace(CSS_IMPORT_REGEXP, function () { + var m = []; + for (var _i = 0; _i < arguments.length; _i++) { + m[_i] = arguments[_i]; + } + var url = m[1] || m[2]; + if (!isStyleUrlResolvable(url)) { + // Do not attempt to resolve non-package absolute URLs with URI + // scheme + return m[0]; + } + foundUrls.push(resolver.resolve(baseUrl, url)); + return ''; + }); + return new StyleWithImports(modifiedCssText, foundUrls); +} +var CSS_IMPORT_REGEXP = /@import\s+(?:url\()?\s*(?:(?:['"]([^'"]*))|([^;\)\s]*))[^;]*;?/g; +var CSS_STRIPPABLE_COMMENT_REGEXP = /\/\*(?!#\s*(?:sourceURL|sourceMappingURL)=)[\s\S]+?\*\//g; +var URL_WITH_SCHEMA_REGEXP = /^([^:/?#]+):/; + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +var NG_CONTENT_SELECT_ATTR = 'select'; +var LINK_ELEMENT = 'link'; +var LINK_STYLE_REL_ATTR = 'rel'; +var LINK_STYLE_HREF_ATTR = 'href'; +var LINK_STYLE_REL_VALUE = 'stylesheet'; +var STYLE_ELEMENT = 'style'; +var SCRIPT_ELEMENT = 'script'; +var NG_NON_BINDABLE_ATTR = 'ngNonBindable'; +var NG_PROJECT_AS = 'ngProjectAs'; +function preparseElement(ast) { + var selectAttr = null; + var hrefAttr = null; + var relAttr = null; + var nonBindable = false; + var projectAs = ''; + ast.attrs.forEach(function (attr) { + var lcAttrName = attr.name.toLowerCase(); + if (lcAttrName == NG_CONTENT_SELECT_ATTR) { + selectAttr = attr.value; + } + else if (lcAttrName == LINK_STYLE_HREF_ATTR) { + hrefAttr = attr.value; + } + else if (lcAttrName == LINK_STYLE_REL_ATTR) { + relAttr = attr.value; + } + else if (attr.name == NG_NON_BINDABLE_ATTR) { + nonBindable = true; + } + else if (attr.name == NG_PROJECT_AS) { + if (attr.value.length > 0) { + projectAs = attr.value; + } + } + }); + selectAttr = normalizeNgContentSelect(selectAttr); + var nodeName = ast.name.toLowerCase(); + var type = PreparsedElementType.OTHER; + if (isNgContent(nodeName)) { + type = PreparsedElementType.NG_CONTENT; + } + else if (nodeName == STYLE_ELEMENT) { + type = PreparsedElementType.STYLE; + } + else if (nodeName == SCRIPT_ELEMENT) { + type = PreparsedElementType.SCRIPT; + } + else if (nodeName == LINK_ELEMENT && relAttr == LINK_STYLE_REL_VALUE) { + type = PreparsedElementType.STYLESHEET; + } + return new PreparsedElement(type, selectAttr, hrefAttr, nonBindable, projectAs); +} +var PreparsedElementType; +(function (PreparsedElementType) { + PreparsedElementType[PreparsedElementType["NG_CONTENT"] = 0] = "NG_CONTENT"; + PreparsedElementType[PreparsedElementType["STYLE"] = 1] = "STYLE"; + PreparsedElementType[PreparsedElementType["STYLESHEET"] = 2] = "STYLESHEET"; + PreparsedElementType[PreparsedElementType["SCRIPT"] = 3] = "SCRIPT"; + PreparsedElementType[PreparsedElementType["OTHER"] = 4] = "OTHER"; +})(PreparsedElementType || (PreparsedElementType = {})); +var PreparsedElement = /** @class */ (function () { + function PreparsedElement(type, selectAttr, hrefAttr, nonBindable, projectAs) { + this.type = type; + this.selectAttr = selectAttr; + this.hrefAttr = hrefAttr; + this.nonBindable = nonBindable; + this.projectAs = projectAs; + } + return PreparsedElement; +}()); +function normalizeNgContentSelect(selectAttr) { + if (selectAttr === null || selectAttr.length === 0) { + return '*'; + } + return selectAttr; +} + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +var BIND_NAME_REGEXP = /^(?:(?:(?:(bind-)|(let-)|(ref-|#)|(on-)|(bindon-)|(@))(.+))|\[\(([^\)]+)\)\]|\[([^\]]+)\]|\(([^\)]+)\))$/; +// Group 1 = "bind-" +var KW_BIND_IDX = 1; +// Group 2 = "let-" +var KW_LET_IDX = 2; +// Group 3 = "ref-/#" +var KW_REF_IDX = 3; +// Group 4 = "on-" +var KW_ON_IDX = 4; +// Group 5 = "bindon-" +var KW_BINDON_IDX = 5; +// Group 6 = "@" +var KW_AT_IDX = 6; +// Group 7 = the identifier after "bind-", "let-", "ref-/#", "on-", "bindon-" or "@" +var IDENT_KW_IDX = 7; +// Group 8 = identifier inside [()] +var IDENT_BANANA_BOX_IDX = 8; +// Group 9 = identifier inside [] +var IDENT_PROPERTY_IDX = 9; +// Group 10 = identifier inside () +var IDENT_EVENT_IDX = 10; +var TEMPLATE_ATTR_PREFIX = '*'; +// Default selector used by `` if none specified +var DEFAULT_CONTENT_SELECTOR = '*'; +function htmlAstToRender3Ast(htmlNodes, bindingParser) { + var transformer = new HtmlAstToIvyAst(bindingParser); + var ivyNodes = visitAll(transformer, htmlNodes); + // Errors might originate in either the binding parser or the html to ivy transformer + var allErrors = bindingParser.errors.concat(transformer.errors); + var errors = allErrors.filter(function (e) { return e.level === ParseErrorLevel.ERROR; }); + if (errors.length > 0) { + var errorString = errors.join('\n'); + throw syntaxError("Template parse errors:\n" + errorString, errors); + } + return { + nodes: ivyNodes, + errors: allErrors, + ngContentSelectors: transformer.ngContentSelectors, + hasNgContent: transformer.hasNgContent, + }; +} +var HtmlAstToIvyAst = /** @class */ (function () { + function HtmlAstToIvyAst(bindingParser) { + this.bindingParser = bindingParser; + this.errors = []; + // Selectors for the `ng-content` tags. Only non `*` selectors are recorded here + this.ngContentSelectors = []; + // Any `` in the template ? + this.hasNgContent = false; + } + // HTML visitor + HtmlAstToIvyAst.prototype.visitElement = function (element) { + var _this = this; + var e_1, _a; + var preparsedElement = preparseElement(element); + if (preparsedElement.type === PreparsedElementType.SCRIPT || + preparsedElement.type === PreparsedElementType.STYLE) { + // Skipping