ngx-bootstrap 3.0.1 → 3.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +298 -0
- package/CONTRIBUTING.md +1 -1
- package/README.md +24 -8
- package/accordion/accordion-group.component.d.ts +3 -3
- package/accordion/bundles/ngx-bootstrap-accordion.umd.js +264 -0
- package/accordion/bundles/ngx-bootstrap-accordion.umd.js.map +1 -0
- package/accordion/bundles/ngx-bootstrap-accordion.umd.min.js +2 -0
- package/accordion/bundles/ngx-bootstrap-accordion.umd.min.js.map +1 -0
- package/accordion/esm2015/accordion-group.component.js +140 -0
- package/accordion/esm2015/accordion.component.js +88 -0
- package/accordion/esm2015/accordion.config.js +35 -0
- package/accordion/esm2015/accordion.module.js +36 -0
- package/accordion/esm2015/ngx-bootstrap-accordion.js +10 -0
- package/accordion/esm2015/public_api.js +10 -0
- package/accordion/esm5/accordion-group.component.js +157 -0
- package/accordion/esm5/accordion.component.js +99 -0
- package/accordion/esm5/accordion.config.js +37 -0
- package/accordion/esm5/accordion.module.js +43 -0
- package/accordion/esm5/ngx-bootstrap-accordion.js +10 -0
- package/accordion/esm5/public_api.js +10 -0
- package/accordion/fesm2015/ngx-bootstrap-accordion.js +222 -0
- package/accordion/fesm2015/ngx-bootstrap-accordion.js.map +1 -0
- package/accordion/fesm5/ngx-bootstrap-accordion.js +255 -0
- package/accordion/fesm5/ngx-bootstrap-accordion.js.map +1 -0
- package/accordion/ngx-bootstrap-accordion.d.ts +4 -0
- package/accordion/ngx-bootstrap-accordion.metadata.json +1 -0
- package/accordion/package.json +19 -0
- package/accordion/{index.d.ts → public_api.d.ts} +0 -0
- package/alert/bundles/ngx-bootstrap-alert.umd.js +209 -0
- package/alert/bundles/ngx-bootstrap-alert.umd.js.map +1 -0
- package/alert/bundles/ngx-bootstrap-alert.umd.min.js +2 -0
- package/alert/bundles/ngx-bootstrap-alert.umd.min.js.map +1 -0
- package/alert/esm2015/alert.component.js +145 -0
- package/alert/esm2015/alert.config.js +50 -0
- package/alert/esm2015/alert.module.js +35 -0
- package/alert/esm2015/ngx-bootstrap-alert.js +10 -0
- package/alert/esm2015/public_api.js +9 -0
- package/alert/esm5/alert.component.js +157 -0
- package/alert/esm5/alert.config.js +52 -0
- package/alert/esm5/alert.module.js +42 -0
- package/alert/esm5/ngx-bootstrap-alert.js +10 -0
- package/alert/esm5/public_api.js +9 -0
- package/alert/fesm2015/ngx-bootstrap-alert.js +153 -0
- package/alert/fesm2015/ngx-bootstrap-alert.js.map +1 -0
- package/alert/fesm5/ngx-bootstrap-alert.js +171 -0
- package/alert/fesm5/ngx-bootstrap-alert.js.map +1 -0
- package/alert/ngx-bootstrap-alert.d.ts +4 -0
- package/alert/ngx-bootstrap-alert.metadata.json +1 -0
- package/alert/package.json +19 -0
- package/alert/{index.d.ts → public_api.d.ts} +0 -0
- package/bundles/ngx-bootstrap.es2015.js +20178 -12836
- package/bundles/ngx-bootstrap.es2015.js.map +1 -1
- package/bundles/ngx-bootstrap.umd.js +179 -21213
- package/bundles/ngx-bootstrap.umd.js.map +1 -1
- package/bundles/ngx-bootstrap.umd.min.js +1 -64
- package/bundles/ngx-bootstrap.umd.min.js.map +1 -1
- package/buttons/bundles/ngx-bootstrap-buttons.umd.js +479 -0
- package/buttons/bundles/ngx-bootstrap-buttons.umd.js.map +1 -0
- package/buttons/bundles/ngx-bootstrap-buttons.umd.min.js +2 -0
- package/buttons/bundles/ngx-bootstrap-buttons.umd.min.js.map +1 -0
- package/buttons/button-checkbox.directive.d.ts +10 -10
- package/buttons/button-radio-group.directive.d.ts +9 -10
- package/buttons/button-radio.directive.d.ts +12 -12
- package/buttons/esm2015/button-checkbox.directive.js +146 -0
- package/buttons/esm2015/button-radio-group.directive.js +90 -0
- package/buttons/esm2015/button-radio.directive.js +200 -0
- package/buttons/esm2015/buttons.module.js +33 -0
- package/buttons/esm2015/ngx-bootstrap-buttons.js +13 -0
- package/buttons/esm2015/public_api.js +10 -0
- package/buttons/esm5/button-checkbox.directive.js +184 -0
- package/buttons/esm5/button-radio-group.directive.js +105 -0
- package/buttons/esm5/button-radio.directive.js +239 -0
- package/buttons/esm5/buttons.module.js +40 -0
- package/buttons/esm5/ngx-bootstrap-buttons.js +13 -0
- package/buttons/esm5/public_api.js +10 -0
- package/buttons/fesm2015/ngx-bootstrap-buttons.js +376 -0
- package/buttons/fesm2015/ngx-bootstrap-buttons.js.map +1 -0
- package/buttons/fesm5/ngx-bootstrap-buttons.js +471 -0
- package/buttons/fesm5/ngx-bootstrap-buttons.js.map +1 -0
- package/buttons/ngx-bootstrap-buttons.d.ts +7 -0
- package/buttons/ngx-bootstrap-buttons.metadata.json +1 -0
- package/buttons/package.json +19 -0
- package/buttons/{index.d.ts → public_api.d.ts} +0 -0
- package/carousel/bundles/ngx-bootstrap-carousel.umd.js +567 -0
- package/carousel/bundles/ngx-bootstrap-carousel.umd.js.map +1 -0
- package/carousel/bundles/ngx-bootstrap-carousel.umd.min.js +2 -0
- package/carousel/bundles/ngx-bootstrap-carousel.umd.min.js.map +1 -0
- package/carousel/carousel.component.d.ts +3 -7
- package/carousel/esm2015/carousel.component.js +372 -0
- package/carousel/esm2015/carousel.config.js +59 -0
- package/carousel/esm2015/carousel.module.js +36 -0
- package/carousel/esm2015/ngx-bootstrap-carousel.js +10 -0
- package/carousel/esm2015/public_api.js +10 -0
- package/carousel/esm2015/slide.component.js +81 -0
- package/carousel/esm5/carousel.component.js +495 -0
- package/carousel/esm5/carousel.config.js +61 -0
- package/carousel/esm5/carousel.module.js +43 -0
- package/carousel/esm5/ngx-bootstrap-carousel.js +10 -0
- package/carousel/esm5/public_api.js +10 -0
- package/carousel/esm5/slide.component.js +86 -0
- package/carousel/fesm2015/ngx-bootstrap-carousel.js +423 -0
- package/carousel/fesm2015/ngx-bootstrap-carousel.js.map +1 -0
- package/carousel/fesm5/ngx-bootstrap-carousel.js +556 -0
- package/carousel/fesm5/ngx-bootstrap-carousel.js.map +1 -0
- package/carousel/ngx-bootstrap-carousel.d.ts +4 -0
- package/carousel/ngx-bootstrap-carousel.metadata.json +1 -0
- package/carousel/package.json +19 -0
- package/carousel/{index.d.ts → public_api.d.ts} +0 -0
- package/chronos/bundles/ngx-bootstrap-chronos.umd.js +8428 -0
- package/chronos/bundles/ngx-bootstrap-chronos.umd.js.map +1 -0
- package/chronos/bundles/ngx-bootstrap-chronos.umd.min.js +2 -0
- package/chronos/bundles/ngx-bootstrap-chronos.umd.min.js.map +1 -0
- package/chronos/esm2015/create/check-overflow.js +39 -0
- package/chronos/esm2015/create/clone.js +13 -0
- package/chronos/esm2015/create/date-from-array.js +38 -0
- package/chronos/esm2015/create/from-anything.js +131 -0
- package/chronos/esm2015/create/from-array.js +149 -0
- package/chronos/esm2015/create/from-object.js +25 -0
- package/chronos/esm2015/create/from-string-and-array.js +46 -0
- package/chronos/esm2015/create/from-string-and-format.js +120 -0
- package/chronos/esm2015/create/from-string.js +268 -0
- package/chronos/esm2015/create/local.js +23 -0
- package/chronos/esm2015/create/parsing-flags.js +38 -0
- package/chronos/esm2015/create/parsing.types.js +146 -0
- package/chronos/esm2015/create/valid.js +60 -0
- package/chronos/esm2015/duration/bubble.js +64 -0
- package/chronos/esm2015/duration/constructor.js +182 -0
- package/chronos/esm2015/duration/create.js +141 -0
- package/chronos/esm2015/duration/humanize.js +109 -0
- package/chronos/esm2015/duration/valid.js +54 -0
- package/chronos/esm2015/format/format.js +67 -0
- package/chronos/esm2015/format.js +71 -0
- package/chronos/esm2015/i18n/ar.js +155 -0
- package/chronos/esm2015/i18n/bg.js +101 -0
- package/chronos/esm2015/i18n/cs.js +215 -0
- package/chronos/esm2015/i18n/da.js +56 -0
- package/chronos/esm2015/i18n/de.js +80 -0
- package/chronos/esm2015/i18n/en-gb.js +72 -0
- package/chronos/esm2015/i18n/es-do.js +118 -0
- package/chronos/esm2015/i18n/es-us.js +111 -0
- package/chronos/esm2015/i18n/es.js +117 -0
- package/chronos/esm2015/i18n/fi.js +119 -0
- package/chronos/esm2015/i18n/fr.js +87 -0
- package/chronos/esm2015/i18n/gl.js +117 -0
- package/chronos/esm2015/i18n/he.js +129 -0
- package/chronos/esm2015/i18n/hi.js +150 -0
- package/chronos/esm2015/i18n/hu.js +140 -0
- package/chronos/esm2015/i18n/id.js +100 -0
- package/chronos/esm2015/i18n/it.js +79 -0
- package/chronos/esm2015/i18n/ja.js +95 -0
- package/chronos/esm2015/i18n/ko.js +82 -0
- package/chronos/esm2015/i18n/lt.js +155 -0
- package/chronos/esm2015/i18n/mn.js +108 -0
- package/chronos/esm2015/i18n/nb.js +59 -0
- package/chronos/esm2015/i18n/nl-be.js +97 -0
- package/chronos/esm2015/i18n/nl.js +97 -0
- package/chronos/esm2015/i18n/pl.js +156 -0
- package/chronos/esm2015/i18n/pt-br.js +65 -0
- package/chronos/esm2015/i18n/ro.js +73 -0
- package/chronos/esm2015/i18n/ru.js +218 -0
- package/chronos/esm2015/i18n/sk.js +193 -0
- package/chronos/esm2015/i18n/sl.js +202 -0
- package/chronos/esm2015/i18n/sv.js +74 -0
- package/chronos/esm2015/i18n/th.js +75 -0
- package/chronos/esm2015/i18n/tr.js +95 -0
- package/chronos/esm2015/i18n/zh-cn.js +136 -0
- package/chronos/esm2015/index.js +7 -0
- package/chronos/esm2015/locale/calendar.js +14 -0
- package/chronos/esm2015/locale/locale.class.js +841 -0
- package/chronos/esm2015/locale/locale.defaults.js +46 -0
- package/chronos/esm2015/locale/locales.js +272 -0
- package/chronos/esm2015/moment/add-subtract.js +61 -0
- package/chronos/esm2015/moment/calendar.js +81 -0
- package/chronos/esm2015/moment/diff.js +88 -0
- package/chronos/esm2015/moment/min-max.js +50 -0
- package/chronos/esm2015/ngx-bootstrap-chronos.js +11 -0
- package/chronos/esm2015/parse/regex.js +72 -0
- package/chronos/esm2015/parse/token.js +52 -0
- package/chronos/esm2015/public_api.js +50 -0
- package/chronos/esm2015/test/chain.js +1212 -0
- package/chronos/esm2015/types.js +76 -0
- package/chronos/esm2015/units/aliases.js +53 -0
- package/chronos/esm2015/units/constants.js +16 -0
- package/chronos/esm2015/units/day-of-month.js +39 -0
- package/chronos/esm2015/units/day-of-week.js +183 -0
- package/chronos/esm2015/units/day-of-year.js +55 -0
- package/chronos/esm2015/units/hour.js +153 -0
- package/chronos/esm2015/units/index.js +24 -0
- package/chronos/esm2015/units/millisecond.js +74 -0
- package/chronos/esm2015/units/minute.js +31 -0
- package/chronos/esm2015/units/month.js +75 -0
- package/chronos/esm2015/units/offset.js +227 -0
- package/chronos/esm2015/units/priorities.js +31 -0
- package/chronos/esm2015/units/quarter.js +57 -0
- package/chronos/esm2015/units/second.js +31 -0
- package/chronos/esm2015/units/timestamp.js +36 -0
- package/chronos/esm2015/units/timezone.js +33 -0
- package/chronos/esm2015/units/week-calendar-utils.js +94 -0
- package/chronos/esm2015/units/week-year.js +175 -0
- package/chronos/esm2015/units/week.js +83 -0
- package/chronos/esm2015/units/year.js +81 -0
- package/chronos/esm2015/utils/abs-ceil.js +13 -0
- package/chronos/esm2015/utils/abs-round.js +13 -0
- package/chronos/esm2015/utils/compare-arrays.js +27 -0
- package/chronos/esm2015/utils/date-compare.js +108 -0
- package/chronos/esm2015/utils/date-getters.js +157 -0
- package/chronos/esm2015/utils/date-setters.js +147 -0
- package/chronos/esm2015/utils/defaults.js +22 -0
- package/chronos/esm2015/utils/start-end-of.js +74 -0
- package/chronos/esm2015/utils/type-checks.js +114 -0
- package/chronos/esm2015/utils/zero-fill.js +21 -0
- package/chronos/esm2015/utils.js +21 -0
- package/chronos/esm5/create/check-overflow.js +39 -0
- package/chronos/esm5/create/clone.js +13 -0
- package/chronos/esm5/create/date-from-array.js +44 -0
- package/chronos/esm5/create/from-anything.js +131 -0
- package/chronos/esm5/create/from-array.js +149 -0
- package/chronos/esm5/create/from-object.js +25 -0
- package/chronos/esm5/create/from-string-and-array.js +46 -0
- package/chronos/esm5/create/from-string-and-format.js +120 -0
- package/chronos/esm5/create/from-string.js +268 -0
- package/chronos/esm5/create/local.js +23 -0
- package/chronos/esm5/create/parsing-flags.js +38 -0
- package/chronos/esm5/create/parsing.types.js +146 -0
- package/chronos/esm5/create/valid.js +60 -0
- package/chronos/esm5/duration/bubble.js +64 -0
- package/chronos/esm5/duration/constructor.js +205 -0
- package/chronos/esm5/duration/create.js +143 -0
- package/chronos/esm5/duration/humanize.js +109 -0
- package/chronos/esm5/duration/valid.js +54 -0
- package/chronos/esm5/format/format.js +68 -0
- package/chronos/esm5/format.js +73 -0
- package/chronos/esm5/i18n/ar.js +155 -0
- package/chronos/esm5/i18n/bg.js +101 -0
- package/chronos/esm5/i18n/cs.js +215 -0
- package/chronos/esm5/i18n/da.js +56 -0
- package/chronos/esm5/i18n/de.js +80 -0
- package/chronos/esm5/i18n/en-gb.js +72 -0
- package/chronos/esm5/i18n/es-do.js +118 -0
- package/chronos/esm5/i18n/es-us.js +111 -0
- package/chronos/esm5/i18n/es.js +117 -0
- package/chronos/esm5/i18n/fi.js +119 -0
- package/chronos/esm5/i18n/fr.js +87 -0
- package/chronos/esm5/i18n/gl.js +117 -0
- package/chronos/esm5/i18n/he.js +129 -0
- package/chronos/esm5/i18n/hi.js +150 -0
- package/chronos/esm5/i18n/hu.js +140 -0
- package/chronos/esm5/i18n/id.js +100 -0
- package/chronos/esm5/i18n/it.js +79 -0
- package/chronos/esm5/i18n/ja.js +95 -0
- package/chronos/esm5/i18n/ko.js +82 -0
- package/chronos/esm5/i18n/lt.js +155 -0
- package/chronos/esm5/i18n/mn.js +108 -0
- package/chronos/esm5/i18n/nb.js +59 -0
- package/chronos/esm5/i18n/nl-be.js +97 -0
- package/chronos/esm5/i18n/nl.js +97 -0
- package/chronos/esm5/i18n/pl.js +156 -0
- package/chronos/esm5/i18n/pt-br.js +65 -0
- package/chronos/esm5/i18n/ro.js +73 -0
- package/chronos/esm5/i18n/ru.js +218 -0
- package/chronos/esm5/i18n/sk.js +193 -0
- package/chronos/esm5/i18n/sl.js +202 -0
- package/chronos/esm5/i18n/sv.js +74 -0
- package/chronos/esm5/i18n/th.js +75 -0
- package/chronos/esm5/i18n/tr.js +95 -0
- package/chronos/esm5/i18n/zh-cn.js +136 -0
- package/chronos/esm5/index.js +7 -0
- package/chronos/esm5/locale/calendar.js +14 -0
- package/chronos/esm5/locale/locale.class.js +996 -0
- package/chronos/esm5/locale/locale.defaults.js +46 -0
- package/chronos/esm5/locale/locales.js +272 -0
- package/chronos/esm5/moment/add-subtract.js +61 -0
- package/chronos/esm5/moment/calendar.js +83 -0
- package/chronos/esm5/moment/diff.js +89 -0
- package/chronos/esm5/moment/min-max.js +58 -0
- package/chronos/esm5/ngx-bootstrap-chronos.js +11 -0
- package/chronos/esm5/parse/regex.js +72 -0
- package/chronos/esm5/parse/token.js +52 -0
- package/chronos/esm5/public_api.js +50 -0
- package/chronos/esm5/test/chain.js +1506 -0
- package/chronos/esm5/types.js +76 -0
- package/chronos/esm5/units/aliases.js +53 -0
- package/chronos/esm5/units/constants.js +16 -0
- package/chronos/esm5/units/day-of-month.js +39 -0
- package/chronos/esm5/units/day-of-week.js +188 -0
- package/chronos/esm5/units/day-of-year.js +55 -0
- package/chronos/esm5/units/hour.js +153 -0
- package/chronos/esm5/units/index.js +24 -0
- package/chronos/esm5/units/millisecond.js +74 -0
- package/chronos/esm5/units/minute.js +31 -0
- package/chronos/esm5/units/month.js +75 -0
- package/chronos/esm5/units/offset.js +231 -0
- package/chronos/esm5/units/priorities.js +31 -0
- package/chronos/esm5/units/quarter.js +58 -0
- package/chronos/esm5/units/second.js +31 -0
- package/chronos/esm5/units/timestamp.js +36 -0
- package/chronos/esm5/units/timezone.js +33 -0
- package/chronos/esm5/units/week-calendar-utils.js +94 -0
- package/chronos/esm5/units/week-year.js +178 -0
- package/chronos/esm5/units/week.js +85 -0
- package/chronos/esm5/units/year.js +81 -0
- package/chronos/esm5/utils/abs-ceil.js +13 -0
- package/chronos/esm5/utils/abs-round.js +13 -0
- package/chronos/esm5/utils/compare-arrays.js +27 -0
- package/chronos/esm5/utils/date-compare.js +112 -0
- package/chronos/esm5/utils/date-getters.js +165 -0
- package/chronos/esm5/utils/date-setters.js +147 -0
- package/chronos/esm5/utils/defaults.js +22 -0
- package/chronos/esm5/utils/start-end-of.js +74 -0
- package/chronos/esm5/utils/type-checks.js +114 -0
- package/chronos/esm5/utils/zero-fill.js +21 -0
- package/chronos/esm5/utils.js +21 -0
- package/chronos/fesm2015/ngx-bootstrap-chronos.js +8176 -0
- package/chronos/fesm2015/ngx-bootstrap-chronos.js.map +1 -0
- package/chronos/fesm5/ngx-bootstrap-chronos.js +8383 -0
- package/chronos/fesm5/ngx-bootstrap-chronos.js.map +1 -0
- package/chronos/i18n/bg.d.ts +2 -0
- package/chronos/i18n/lt.d.ts +2 -0
- package/chronos/i18n/nb.d.ts +2 -0
- package/chronos/i18n/sk.d.ts +2 -0
- package/chronos/index.d.ts +1 -7
- package/chronos/ngx-bootstrap-chronos.d.ts +5 -0
- package/chronos/ngx-bootstrap-chronos.metadata.json +1 -0
- package/chronos/package.json +19 -0
- package/chronos/public_api.d.ts +46 -0
- package/chronos/units/day-of-month.d.ts +1 -1
- package/chronos/units/day-of-week.d.ts +1 -0
- package/chronos/units/day-of-year.d.ts +1 -0
- package/chronos/units/hour.d.ts +1 -1
- package/chronos/units/millisecond.d.ts +1 -1
- package/chronos/units/minute.d.ts +1 -1
- package/chronos/units/month.d.ts +1 -0
- package/chronos/units/offset.d.ts +1 -0
- package/chronos/units/quarter.d.ts +1 -0
- package/chronos/units/second.d.ts +1 -1
- package/chronos/units/timestamp.d.ts +1 -1
- package/chronos/units/timezone.d.ts +1 -0
- package/chronos/units/week-year.d.ts +1 -0
- package/chronos/units/week.d.ts +1 -0
- package/chronos/units/year.d.ts +1 -0
- package/chronos/utils/date-compare.d.ts +2 -0
- package/chronos/utils/type-checks.d.ts +1 -1
- package/collapse/bundles/ngx-bootstrap-collapse.umd.js +178 -0
- package/collapse/bundles/ngx-bootstrap-collapse.umd.js.map +1 -0
- package/collapse/bundles/ngx-bootstrap-collapse.umd.min.js +2 -0
- package/collapse/bundles/ngx-bootstrap-collapse.umd.min.js.map +1 -0
- package/collapse/esm2015/collapse.directive.js +150 -0
- package/collapse/esm2015/collapse.module.js +31 -0
- package/collapse/esm2015/ngx-bootstrap-collapse.js +10 -0
- package/collapse/esm2015/public_api.js +8 -0
- package/collapse/esm5/collapse.directive.js +167 -0
- package/collapse/esm5/collapse.module.js +38 -0
- package/collapse/esm5/ngx-bootstrap-collapse.js +10 -0
- package/collapse/esm5/public_api.js +8 -0
- package/collapse/fesm2015/ngx-bootstrap-collapse.js +147 -0
- package/collapse/fesm2015/ngx-bootstrap-collapse.js.map +1 -0
- package/collapse/fesm5/ngx-bootstrap-collapse.js +169 -0
- package/collapse/fesm5/ngx-bootstrap-collapse.js.map +1 -0
- package/collapse/ngx-bootstrap-collapse.d.ts +4 -0
- package/collapse/ngx-bootstrap-collapse.metadata.json +1 -0
- package/collapse/package.json +19 -0
- package/collapse/{index.d.ts → public_api.d.ts} +0 -0
- package/component-loader/bundles/ngx-bootstrap-component-loader.umd.js +508 -0
- package/component-loader/bundles/ngx-bootstrap-component-loader.umd.js.map +1 -0
- package/component-loader/bundles/ngx-bootstrap-component-loader.umd.min.js +2 -0
- package/component-loader/bundles/ngx-bootstrap-component-loader.umd.min.js.map +1 -0
- package/component-loader/component-loader.class.d.ts +11 -5
- package/component-loader/component-loader.factory.d.ts +1 -2
- package/component-loader/esm2015/bs-component-ref.class.js +17 -0
- package/component-loader/esm2015/component-loader.class.js +402 -0
- package/component-loader/esm2015/component-loader.factory.js +66 -0
- package/component-loader/esm2015/content-ref.class.js +34 -0
- package/component-loader/esm2015/listen-options.model.js +28 -0
- package/component-loader/esm2015/ngx-bootstrap-component-loader.js +10 -0
- package/component-loader/esm2015/public_api.js +10 -0
- package/component-loader/esm5/bs-component-ref.class.js +27 -0
- package/component-loader/esm5/component-loader.class.js +468 -0
- package/component-loader/esm5/component-loader.factory.js +75 -0
- package/component-loader/esm5/content-ref.class.js +31 -0
- package/component-loader/esm5/listen-options.model.js +28 -0
- package/component-loader/esm5/ngx-bootstrap-component-loader.js +10 -0
- package/component-loader/esm5/public_api.js +10 -0
- package/component-loader/fesm2015/ngx-bootstrap-component-loader.js +426 -0
- package/component-loader/fesm2015/ngx-bootstrap-component-loader.js.map +1 -0
- package/component-loader/fesm5/ngx-bootstrap-component-loader.js +498 -0
- package/component-loader/fesm5/ngx-bootstrap-component-loader.js.map +1 -0
- package/component-loader/listen-options.model.d.ts +1 -0
- package/component-loader/ngx-bootstrap-component-loader.d.ts +4 -0
- package/component-loader/ngx-bootstrap-component-loader.metadata.json +1 -0
- package/component-loader/package.json +19 -0
- package/component-loader/public_api.d.ts +4 -0
- package/datepicker/base/bs-datepicker-container.d.ts +3 -1
- package/datepicker/bs-datepicker-input.directive.d.ts +3 -3
- package/datepicker/bs-datepicker.component.d.ts +13 -3
- package/datepicker/bs-datepicker.config.d.ts +14 -1
- package/datepicker/bs-datepicker.css +14 -5
- package/datepicker/bs-datepicker.css.map +2 -2
- package/datepicker/bs-datepicker.module.d.ts +0 -1
- package/datepicker/bs-datepicker.scss +23 -10
- package/datepicker/bs-daterangepicker-input.directive.d.ts +3 -3
- package/datepicker/bs-daterangepicker.component.d.ts +4 -3
- package/datepicker/bundles/ngx-bootstrap-datepicker.umd.js +4334 -0
- package/datepicker/bundles/ngx-bootstrap-datepicker.umd.js.map +1 -0
- package/datepicker/bundles/ngx-bootstrap-datepicker.umd.min.js +2 -0
- package/datepicker/bundles/ngx-bootstrap-datepicker.umd.min.js.map +1 -0
- package/datepicker/datepicker.component.d.ts +5 -5
- package/datepicker/engine/calc-days-calendar.d.ts +1 -1
- package/datepicker/engine/flag-days-calendar.d.ts +2 -1
- package/datepicker/engine/flag-months-calendar.d.ts +1 -1
- package/datepicker/engine/flag-years-calendar.d.ts +1 -1
- package/datepicker/engine/format-days-calendar.d.ts +1 -1
- package/datepicker/engine/format-months-calendar.d.ts +1 -1
- package/datepicker/engine/format-years-calendar.d.ts +1 -1
- package/datepicker/engine/view-mode.d.ts +2 -2
- package/datepicker/esm2015/base/bs-datepicker-container.js +109 -0
- package/datepicker/esm2015/bs-datepicker-input.directive.js +208 -0
- package/datepicker/esm2015/bs-datepicker.component.js +307 -0
- package/datepicker/esm2015/bs-datepicker.config.js +117 -0
- package/datepicker/esm2015/bs-datepicker.module.js +90 -0
- package/datepicker/esm2015/bs-daterangepicker-input.directive.js +224 -0
- package/datepicker/esm2015/bs-daterangepicker.component.js +293 -0
- package/datepicker/esm2015/bs-daterangepicker.config.js +29 -0
- package/datepicker/esm2015/bs-locale.service.js +61 -0
- package/datepicker/esm2015/date-formatter.js +18 -0
- package/datepicker/esm2015/datepicker-inner.component.js +451 -0
- package/datepicker/esm2015/datepicker.component.js +326 -0
- package/datepicker/esm2015/datepicker.config.js +74 -0
- package/datepicker/esm2015/datepicker.module.js +52 -0
- package/datepicker/esm2015/daypicker.component.js +212 -0
- package/datepicker/esm2015/engine/calc-days-calendar.js +29 -0
- package/datepicker/esm2015/engine/flag-days-calendar.js +115 -0
- package/datepicker/esm2015/engine/flag-months-calendar.js +57 -0
- package/datepicker/esm2015/engine/flag-years-calendar.js +56 -0
- package/datepicker/esm2015/engine/format-days-calendar.js +50 -0
- package/datepicker/esm2015/engine/format-months-calendar.js +29 -0
- package/datepicker/esm2015/engine/format-years-calendar.js +42 -0
- package/datepicker/esm2015/engine/view-mode.js +14 -0
- package/datepicker/esm2015/models/index.js +199 -0
- package/datepicker/esm2015/monthpicker.component.js +118 -0
- package/datepicker/esm2015/ngx-bootstrap-datepicker.js +29 -0
- package/datepicker/esm2015/public_api.js +19 -0
- package/datepicker/esm2015/reducer/_defaults.js +10 -0
- package/datepicker/esm2015/reducer/bs-datepicker.actions.js +204 -0
- package/datepicker/esm2015/reducer/bs-datepicker.effects.js +249 -0
- package/datepicker/esm2015/reducer/bs-datepicker.reducer.js +289 -0
- package/datepicker/esm2015/reducer/bs-datepicker.state.js +87 -0
- package/datepicker/esm2015/reducer/bs-datepicker.store.js +34 -0
- package/datepicker/esm2015/themes/bs/bs-calendar-layout.component.js +39 -0
- package/datepicker/esm2015/themes/bs/bs-current-date-view.component.js +32 -0
- package/datepicker/esm2015/themes/bs/bs-custom-dates-view.component.js +51 -0
- package/datepicker/esm2015/themes/bs/bs-datepicker-container.component.js +113 -0
- package/datepicker/esm2015/themes/bs/bs-datepicker-day-decorator.directive.js +73 -0
- package/datepicker/esm2015/themes/bs/bs-datepicker-navigation-view.component.js +88 -0
- package/datepicker/esm2015/themes/bs/bs-daterangepicker-container.component.js +133 -0
- package/datepicker/esm2015/themes/bs/bs-days-calendar-view.component.js +134 -0
- package/datepicker/esm2015/themes/bs/bs-months-calendar-view.component.js +104 -0
- package/datepicker/esm2015/themes/bs/bs-timepicker-view.component.js +53 -0
- package/datepicker/esm2015/themes/bs/bs-years-calendar-view.component.js +105 -0
- package/datepicker/esm2015/utils/bs-calendar-utils.js +54 -0
- package/datepicker/esm2015/utils/matrix-utils.js +39 -0
- package/datepicker/esm2015/yearpicker.component.js +122 -0
- package/datepicker/esm5/base/bs-datepicker-container.js +170 -0
- package/datepicker/esm5/bs-datepicker-input.directive.js +242 -0
- package/datepicker/esm5/bs-datepicker.component.js +368 -0
- package/datepicker/esm5/bs-datepicker.config.js +119 -0
- package/datepicker/esm5/bs-datepicker.module.js +97 -0
- package/datepicker/esm5/bs-daterangepicker-input.directive.js +263 -0
- package/datepicker/esm5/bs-daterangepicker.component.js +354 -0
- package/datepicker/esm5/bs-daterangepicker.config.js +34 -0
- package/datepicker/esm5/bs-locale.service.js +79 -0
- package/datepicker/esm5/date-formatter.js +28 -0
- package/datepicker/esm5/datepicker-inner.component.js +547 -0
- package/datepicker/esm5/datepicker.component.js +325 -0
- package/datepicker/esm5/datepicker.config.js +76 -0
- package/datepicker/esm5/datepicker.module.js +59 -0
- package/datepicker/esm5/daypicker.component.js +157 -0
- package/datepicker/esm5/engine/calc-days-calendar.js +29 -0
- package/datepicker/esm5/engine/flag-days-calendar.js +115 -0
- package/datepicker/esm5/engine/flag-months-calendar.js +57 -0
- package/datepicker/esm5/engine/flag-years-calendar.js +56 -0
- package/datepicker/esm5/engine/format-days-calendar.js +55 -0
- package/datepicker/esm5/engine/format-months-calendar.js +31 -0
- package/datepicker/esm5/engine/format-years-calendar.js +44 -0
- package/datepicker/esm5/engine/view-mode.js +14 -0
- package/datepicker/esm5/models/index.js +199 -0
- package/datepicker/esm5/monthpicker.component.js +85 -0
- package/datepicker/esm5/ngx-bootstrap-datepicker.js +29 -0
- package/datepicker/esm5/public_api.js +19 -0
- package/datepicker/esm5/reducer/_defaults.js +10 -0
- package/datepicker/esm5/reducer/bs-datepicker.actions.js +266 -0
- package/datepicker/esm5/reducer/bs-datepicker.effects.js +314 -0
- package/datepicker/esm5/reducer/bs-datepicker.reducer.js +298 -0
- package/datepicker/esm5/reducer/bs-datepicker.state.js +91 -0
- package/datepicker/esm5/reducer/bs-datepicker.store.js +40 -0
- package/datepicker/esm5/themes/bs/bs-calendar-layout.component.js +28 -0
- package/datepicker/esm5/themes/bs/bs-current-date-view.component.js +36 -0
- package/datepicker/esm5/themes/bs/bs-custom-dates-view.component.js +50 -0
- package/datepicker/esm5/themes/bs/bs-datepicker-container.component.js +138 -0
- package/datepicker/esm5/themes/bs/bs-datepicker-day-decorator.directive.js +73 -0
- package/datepicker/esm5/themes/bs/bs-datepicker-navigation-view.component.js +68 -0
- package/datepicker/esm5/themes/bs/bs-daterangepicker-container.component.js +158 -0
- package/datepicker/esm5/themes/bs/bs-days-calendar-view.component.js +114 -0
- package/datepicker/esm5/themes/bs/bs-months-calendar-view.component.js +100 -0
- package/datepicker/esm5/themes/bs/bs-timepicker-view.component.js +37 -0
- package/datepicker/esm5/themes/bs/bs-years-calendar-view.component.js +101 -0
- package/datepicker/esm5/utils/bs-calendar-utils.js +54 -0
- package/datepicker/esm5/utils/matrix-utils.js +39 -0
- package/datepicker/esm5/yearpicker.component.js +92 -0
- package/datepicker/fesm2015/ngx-bootstrap-datepicker.js +3827 -0
- package/datepicker/fesm2015/ngx-bootstrap-datepicker.js.map +1 -0
- package/datepicker/fesm5/ngx-bootstrap-datepicker.js +4198 -0
- package/datepicker/fesm5/ngx-bootstrap-datepicker.js.map +1 -0
- package/datepicker/models/index.d.ts +3 -1
- package/datepicker/ngx-bootstrap-datepicker.d.ts +23 -0
- package/datepicker/ngx-bootstrap-datepicker.metadata.json +1 -0
- package/datepicker/package.json +19 -0
- package/datepicker/public_api.d.ts +14 -0
- package/datepicker/reducer/_defaults.d.ts +1 -1
- package/datepicker/reducer/bs-datepicker.actions.d.ts +5 -3
- package/datepicker/reducer/bs-datepicker.effects.d.ts +3 -2
- package/datepicker/reducer/bs-datepicker.reducer.d.ts +1 -1
- package/datepicker/reducer/bs-datepicker.state.d.ts +4 -1
- package/datepicker/reducer/bs-datepicker.store.d.ts +1 -1
- package/datepicker/themes/bs/bs-datepicker-container.component.d.ts +1 -1
- package/datepicker/themes/bs/bs-datepicker-day-decorator.directive.d.ts +9 -2
- package/datepicker/themes/bs/bs-datepicker-navigation-view.component.d.ts +1 -1
- package/datepicker/themes/bs/bs-daterangepicker-container.component.d.ts +1 -1
- package/datepicker/themes/bs/bs-days-calendar-view.component.d.ts +4 -1
- package/datepicker/themes/bs/bs-months-calendar-view.component.d.ts +1 -1
- package/datepicker/themes/bs/bs-years-calendar-view.component.d.ts +1 -1
- package/datepicker/utils/matrix-utils.d.ts +1 -1
- package/dropdown/bs-dropdown-container.component.d.ts +3 -0
- package/dropdown/bs-dropdown-toggle.directive.d.ts +4 -2
- package/dropdown/bs-dropdown.config.d.ts +2 -0
- package/dropdown/bs-dropdown.directive.d.ts +12 -6
- package/dropdown/bs-dropdown.state.d.ts +2 -1
- package/dropdown/bundles/ngx-bootstrap-dropdown.umd.js +793 -0
- package/dropdown/bundles/ngx-bootstrap-dropdown.umd.js.map +1 -0
- package/dropdown/bundles/ngx-bootstrap-dropdown.umd.min.js +2 -0
- package/dropdown/bundles/ngx-bootstrap-dropdown.umd.min.js.map +1 -0
- package/dropdown/esm2015/bs-dropdown-container.component.js +104 -0
- package/dropdown/esm2015/bs-dropdown-menu.directive.js +42 -0
- package/dropdown/esm2015/bs-dropdown-toggle.directive.js +109 -0
- package/dropdown/esm2015/bs-dropdown.config.js +44 -0
- package/dropdown/esm2015/bs-dropdown.directive.js +408 -0
- package/dropdown/esm2015/bs-dropdown.module.js +60 -0
- package/dropdown/esm2015/bs-dropdown.state.js +51 -0
- package/dropdown/esm2015/index.js +7 -0
- package/dropdown/esm2015/ngx-bootstrap-dropdown.js +10 -0
- package/dropdown/esm2015/public_api.js +13 -0
- package/dropdown/esm5/bs-dropdown-container.component.js +109 -0
- package/dropdown/esm5/bs-dropdown-menu.directive.js +40 -0
- package/dropdown/esm5/bs-dropdown-toggle.directive.js +132 -0
- package/dropdown/esm5/bs-dropdown.config.js +46 -0
- package/dropdown/esm5/bs-dropdown.directive.js +501 -0
- package/dropdown/esm5/bs-dropdown.module.js +69 -0
- package/dropdown/esm5/bs-dropdown.state.js +54 -0
- package/dropdown/esm5/index.js +7 -0
- package/dropdown/esm5/ngx-bootstrap-dropdown.js +10 -0
- package/dropdown/esm5/public_api.js +13 -0
- package/dropdown/fesm2015/ngx-bootstrap-dropdown.js +623 -0
- package/dropdown/fesm2015/ngx-bootstrap-dropdown.js.map +1 -0
- package/dropdown/fesm5/ngx-bootstrap-dropdown.js +748 -0
- package/dropdown/fesm5/ngx-bootstrap-dropdown.js.map +1 -0
- package/dropdown/index.d.ts +1 -7
- package/dropdown/ngx-bootstrap-dropdown.d.ts +4 -0
- package/dropdown/ngx-bootstrap-dropdown.metadata.json +1 -0
- package/dropdown/package.json +19 -0
- package/dropdown/public_api.d.ts +7 -0
- package/esm2015/ngx-bootstrap.js +10 -0
- package/esm2015/public_api.js +31 -0
- package/esm5/ngx-bootstrap.js +10 -0
- package/esm5/public_api.js +31 -0
- package/fesm2015/ngx-bootstrap.js +35 -0
- package/fesm2015/ngx-bootstrap.js.map +1 -0
- package/fesm5/ngx-bootstrap.js +35 -0
- package/fesm5/ngx-bootstrap.js.map +1 -0
- package/locale/bundles/ngx-bootstrap-locale.umd.js +56 -0
- package/locale/bundles/ngx-bootstrap-locale.umd.js.map +1 -0
- package/locale/bundles/ngx-bootstrap-locale.umd.min.js +2 -0
- package/locale/bundles/ngx-bootstrap-locale.umd.min.js.map +1 -0
- package/locale/esm2015/ngx-bootstrap-locale.js +10 -0
- package/locale/esm2015/public_api.js +40 -0
- package/locale/esm5/ngx-bootstrap-locale.js +10 -0
- package/locale/esm5/public_api.js +40 -0
- package/locale/fesm2015/ngx-bootstrap-locale.js +13 -0
- package/locale/fesm2015/ngx-bootstrap-locale.js.map +1 -0
- package/locale/fesm5/ngx-bootstrap-locale.js +13 -0
- package/locale/fesm5/ngx-bootstrap-locale.js.map +1 -0
- package/locale/ngx-bootstrap-locale.d.ts +4 -0
- package/locale/ngx-bootstrap-locale.metadata.json +1 -0
- package/locale/package.json +19 -0
- package/locale/public_api.d.ts +34 -0
- package/mini-ngrx/bundles/ngx-bootstrap-mini-ngrx.umd.js +178 -0
- package/mini-ngrx/bundles/ngx-bootstrap-mini-ngrx.umd.js.map +1 -0
- package/mini-ngrx/bundles/ngx-bootstrap-mini-ngrx.umd.min.js +2 -0
- package/mini-ngrx/bundles/ngx-bootstrap-mini-ngrx.umd.min.js.map +1 -0
- package/mini-ngrx/esm2015/index.js +7 -0
- package/mini-ngrx/esm2015/ngx-bootstrap-mini-ngrx.js +10 -0
- package/mini-ngrx/esm2015/public_api.js +18 -0
- package/mini-ngrx/esm2015/state.class.js +29 -0
- package/mini-ngrx/esm2015/store.class.js +81 -0
- package/mini-ngrx/esm5/index.js +7 -0
- package/mini-ngrx/esm5/ngx-bootstrap-mini-ngrx.js +10 -0
- package/mini-ngrx/esm5/public_api.js +18 -0
- package/mini-ngrx/esm5/state.class.js +35 -0
- package/mini-ngrx/esm5/store.class.js +114 -0
- package/mini-ngrx/fesm2015/ngx-bootstrap-mini-ngrx.js +114 -0
- package/mini-ngrx/fesm2015/ngx-bootstrap-mini-ngrx.js.map +1 -0
- package/mini-ngrx/fesm5/ngx-bootstrap-mini-ngrx.js +144 -0
- package/mini-ngrx/fesm5/ngx-bootstrap-mini-ngrx.js.map +1 -0
- package/mini-ngrx/index.d.ts +1 -7
- package/mini-ngrx/ngx-bootstrap-mini-ngrx.d.ts +4 -0
- package/mini-ngrx/ngx-bootstrap-mini-ngrx.metadata.json +1 -0
- package/mini-ngrx/package.json +19 -0
- package/mini-ngrx/public_api.d.ts +7 -0
- package/modal/bs-modal-ref.service.d.ts +4 -0
- package/modal/bs-modal.service.d.ts +5 -1
- package/modal/bundles/ngx-bootstrap-modal.umd.js +1156 -0
- package/modal/bundles/ngx-bootstrap-modal.umd.js.map +1 -0
- package/modal/bundles/ngx-bootstrap-modal.umd.min.js +2 -0
- package/modal/bundles/ngx-bootstrap-modal.umd.min.js.map +1 -0
- package/modal/esm2015/bs-modal-ref.service.js +46 -0
- package/modal/esm2015/bs-modal.service.js +267 -0
- package/modal/esm2015/modal-backdrop.component.js +103 -0
- package/modal/esm2015/modal-backdrop.options.js +19 -0
- package/modal/esm2015/modal-container.component.js +160 -0
- package/modal/esm2015/modal-options.class.js +92 -0
- package/modal/esm2015/modal.directive.js +459 -0
- package/modal/esm2015/modal.module.js +44 -0
- package/modal/esm2015/models/index.js +58 -0
- package/modal/esm2015/ngx-bootstrap-modal.js +11 -0
- package/modal/esm2015/public_api.js +14 -0
- package/modal/esm5/bs-modal-ref.service.js +48 -0
- package/modal/esm5/bs-modal.service.js +333 -0
- package/modal/esm5/modal-backdrop.component.js +112 -0
- package/modal/esm5/modal-backdrop.options.js +18 -0
- package/modal/esm5/modal-container.component.js +170 -0
- package/modal/esm5/modal-options.class.js +96 -0
- package/modal/esm5/modal.directive.js +580 -0
- package/modal/esm5/modal.module.js +51 -0
- package/modal/esm5/models/index.js +58 -0
- package/modal/esm5/ngx-bootstrap-modal.js +11 -0
- package/modal/esm5/public_api.js +14 -0
- package/modal/fesm2015/ngx-bootstrap-modal.js +932 -0
- package/modal/fesm2015/ngx-bootstrap-modal.js.map +1 -0
- package/modal/fesm5/ngx-bootstrap-modal.js +1142 -0
- package/modal/fesm5/ngx-bootstrap-modal.js.map +1 -0
- package/modal/modal-container.component.d.ts +2 -2
- package/modal/modal-options.class.d.ts +5 -7
- package/modal/modal.directive.d.ts +25 -7
- package/modal/models/index.d.ts +22 -0
- package/modal/ngx-bootstrap-modal.d.ts +5 -0
- package/modal/ngx-bootstrap-modal.metadata.json +1 -0
- package/modal/package.json +19 -0
- package/modal/{index.d.ts → public_api.d.ts} +0 -0
- package/ngx-bootstrap.d.ts +4 -0
- package/ngx-bootstrap.metadata.json +1 -0
- package/package.json +30 -29
- package/pagination/bundles/ngx-bootstrap-pagination.umd.js +815 -0
- package/pagination/bundles/ngx-bootstrap-pagination.umd.js.map +1 -0
- package/pagination/bundles/ngx-bootstrap-pagination.umd.min.js +2 -0
- package/pagination/bundles/ngx-bootstrap-pagination.umd.min.js.map +1 -0
- package/pagination/esm2015/models/index.js +62 -0
- package/pagination/esm2015/ngx-bootstrap-pagination.js +12 -0
- package/pagination/esm2015/pager.component.js +412 -0
- package/pagination/esm2015/pagination.component.js +422 -0
- package/pagination/esm2015/pagination.config.js +49 -0
- package/pagination/esm2015/pagination.module.js +35 -0
- package/pagination/esm2015/public_api.js +10 -0
- package/pagination/esm5/models/index.js +62 -0
- package/pagination/esm5/ngx-bootstrap-pagination.js +12 -0
- package/pagination/esm5/pager.component.js +475 -0
- package/pagination/esm5/pagination.component.js +485 -0
- package/pagination/esm5/pagination.config.js +51 -0
- package/pagination/esm5/pagination.module.js +42 -0
- package/pagination/esm5/public_api.js +10 -0
- package/pagination/fesm2015/ngx-bootstrap-pagination.js +685 -0
- package/pagination/fesm2015/ngx-bootstrap-pagination.js.map +1 -0
- package/pagination/fesm5/ngx-bootstrap-pagination.js +816 -0
- package/pagination/fesm5/ngx-bootstrap-pagination.js.map +1 -0
- package/pagination/models/index.d.ts +25 -0
- package/pagination/ngx-bootstrap-pagination.d.ts +6 -0
- package/pagination/ngx-bootstrap-pagination.metadata.json +1 -0
- package/pagination/package.json +19 -0
- package/pagination/pager.component.d.ts +11 -11
- package/pagination/pagination.component.d.ts +12 -12
- package/pagination/pagination.config.d.ts +3 -2
- package/pagination/{index.d.ts → public_api.d.ts} +0 -0
- package/popover/bundles/ngx-bootstrap-popover.umd.js +317 -0
- package/popover/bundles/ngx-bootstrap-popover.umd.js.map +1 -0
- package/popover/bundles/ngx-bootstrap-popover.umd.min.js +2 -0
- package/popover/bundles/ngx-bootstrap-popover.umd.min.js.map +1 -0
- package/popover/esm2015/ngx-bootstrap-popover.js +10 -0
- package/popover/esm2015/popover-container.component.js +72 -0
- package/popover/esm2015/popover.config.js +58 -0
- package/popover/esm2015/popover.directive.js +227 -0
- package/popover/esm2015/popover.module.js +41 -0
- package/popover/esm2015/public_api.js +10 -0
- package/popover/esm5/ngx-bootstrap-popover.js +10 -0
- package/popover/esm5/popover-container.component.js +66 -0
- package/popover/esm5/popover.config.js +60 -0
- package/popover/esm5/popover.directive.js +260 -0
- package/popover/esm5/popover.module.js +48 -0
- package/popover/esm5/public_api.js +10 -0
- package/popover/fesm2015/ngx-bootstrap-popover.js +277 -0
- package/popover/fesm2015/ngx-bootstrap-popover.js.map +1 -0
- package/popover/fesm5/ngx-bootstrap-popover.js +309 -0
- package/popover/fesm5/ngx-bootstrap-popover.js.map +1 -0
- package/popover/ngx-bootstrap-popover.d.ts +4 -0
- package/popover/ngx-bootstrap-popover.metadata.json +1 -0
- package/popover/package.json +19 -0
- package/popover/popover.directive.d.ts +3 -3
- package/popover/{index.d.ts → public_api.d.ts} +0 -0
- package/positioning/bundles/ngx-bootstrap-positioning.umd.js +366 -0
- package/positioning/bundles/ngx-bootstrap-positioning.umd.js.map +1 -0
- package/positioning/bundles/ngx-bootstrap-positioning.umd.min.js +2 -0
- package/positioning/bundles/ngx-bootstrap-positioning.umd.min.js.map +1 -0
- package/positioning/esm2015/ng-positioning.js +253 -0
- package/positioning/esm2015/ngx-bootstrap-positioning.js +10 -0
- package/positioning/esm2015/positioning.service.js +91 -0
- package/positioning/esm2015/public_api.js +8 -0
- package/positioning/esm5/ng-positioning.js +300 -0
- package/positioning/esm5/ngx-bootstrap-positioning.js +10 -0
- package/positioning/esm5/positioning.service.js +99 -0
- package/positioning/esm5/public_api.js +8 -0
- package/positioning/fesm2015/ngx-bootstrap-positioning.js +299 -0
- package/positioning/fesm2015/ngx-bootstrap-positioning.js.map +1 -0
- package/positioning/fesm5/ngx-bootstrap-positioning.js +352 -0
- package/positioning/fesm5/ngx-bootstrap-positioning.js.map +1 -0
- package/positioning/ngx-bootstrap-positioning.d.ts +4 -0
- package/positioning/ngx-bootstrap-positioning.metadata.json +1 -0
- package/positioning/package.json +19 -0
- package/positioning/{index.d.ts → public_api.d.ts} +0 -0
- package/progressbar/bundles/ngx-bootstrap-progressbar.umd.js +319 -0
- package/progressbar/bundles/ngx-bootstrap-progressbar.umd.js.map +1 -0
- package/progressbar/bundles/ngx-bootstrap-progressbar.umd.min.js +2 -0
- package/progressbar/bundles/ngx-bootstrap-progressbar.umd.min.js.map +1 -0
- package/progressbar/esm2015/bar.component.js +129 -0
- package/progressbar/esm2015/ngx-bootstrap-progressbar.js +10 -0
- package/progressbar/esm2015/progressbar.component.js +148 -0
- package/progressbar/esm2015/progressbar.config.js +41 -0
- package/progressbar/esm2015/progressbar.module.js +35 -0
- package/progressbar/esm2015/public_api.js +10 -0
- package/progressbar/esm5/bar.component.js +149 -0
- package/progressbar/esm5/ngx-bootstrap-progressbar.js +10 -0
- package/progressbar/esm5/progressbar.component.js +170 -0
- package/progressbar/esm5/progressbar.config.js +43 -0
- package/progressbar/esm5/progressbar.module.js +42 -0
- package/progressbar/esm5/public_api.js +10 -0
- package/progressbar/fesm2015/ngx-bootstrap-progressbar.js +268 -0
- package/progressbar/fesm2015/ngx-bootstrap-progressbar.js.map +1 -0
- package/progressbar/fesm5/ngx-bootstrap-progressbar.js +315 -0
- package/progressbar/fesm5/ngx-bootstrap-progressbar.js.map +1 -0
- package/progressbar/ngx-bootstrap-progressbar.d.ts +4 -0
- package/progressbar/ngx-bootstrap-progressbar.metadata.json +1 -0
- package/progressbar/package.json +19 -0
- package/progressbar/progressbar.component.d.ts +4 -2
- package/progressbar/{index.d.ts → public_api.d.ts} +0 -0
- package/public_api.d.ts +25 -0
- package/rating/bundles/ngx-bootstrap-rating.umd.js +243 -0
- package/rating/bundles/ngx-bootstrap-rating.umd.js.map +1 -0
- package/rating/bundles/ngx-bootstrap-rating.umd.min.js +2 -0
- package/rating/bundles/ngx-bootstrap-rating.umd.min.js.map +1 -0
- package/rating/esm2015/models/index.js +28 -0
- package/rating/esm2015/ngx-bootstrap-rating.js +11 -0
- package/rating/esm2015/public_api.js +8 -0
- package/rating/esm2015/rating.component.js +210 -0
- package/rating/esm2015/rating.module.js +36 -0
- package/rating/esm5/models/index.js +28 -0
- package/rating/esm5/ngx-bootstrap-rating.js +11 -0
- package/rating/esm5/public_api.js +8 -0
- package/rating/esm5/rating.component.js +244 -0
- package/rating/esm5/rating.module.js +43 -0
- package/rating/fesm2015/ngx-bootstrap-rating.js +194 -0
- package/rating/fesm2015/ngx-bootstrap-rating.js.map +1 -0
- package/rating/fesm5/ngx-bootstrap-rating.js +233 -0
- package/rating/fesm5/ngx-bootstrap-rating.js.map +1 -0
- package/rating/models/index.d.ts +9 -0
- package/rating/ngx-bootstrap-rating.d.ts +5 -0
- package/rating/ngx-bootstrap-rating.metadata.json +1 -0
- package/rating/package.json +19 -0
- package/rating/{index.d.ts → public_api.d.ts} +0 -0
- package/rating/rating.component.d.ts +6 -5
- package/schematics/collection.json +10 -0
- package/schematics/ng-add/index.js +98 -0
- package/schematics/ng-add/index.js.map +1 -0
- package/schematics/ng-add/index.spec.js +37 -0
- package/schematics/ng-add/index.spec.js.map +1 -0
- package/schematics/ng-add/schema.js +10 -0
- package/schematics/ng-add/schema.js.map +1 -0
- package/schematics/ng-add/schema.json +16 -0
- package/schematics/utils/index.js +135 -0
- package/schematics/utils/index.js.map +1 -0
- package/schematics/utils/ng-module-imports.js +69 -0
- package/schematics/utils/ng-module-imports.js.map +1 -0
- package/schematics/utils/project-main-file.js +22 -0
- package/schematics/utils/project-main-file.js.map +1 -0
- package/schematics/utils/project-targets.js +25 -0
- package/schematics/utils/project-targets.js.map +1 -0
- package/sortable/bundles/ngx-bootstrap-sortable.umd.js +464 -0
- package/sortable/bundles/ngx-bootstrap-sortable.umd.js.map +1 -0
- package/sortable/bundles/ngx-bootstrap-sortable.umd.min.js +2 -0
- package/sortable/bundles/ngx-bootstrap-sortable.umd.min.js.map +1 -0
- package/sortable/esm2015/draggable-item.js +24 -0
- package/sortable/esm2015/draggable-item.service.js +65 -0
- package/sortable/esm2015/ngx-bootstrap-sortable.js +10 -0
- package/sortable/esm2015/public_api.js +9 -0
- package/sortable/esm2015/sortable.component.js +382 -0
- package/sortable/esm2015/sortable.module.js +34 -0
- package/sortable/esm5/draggable-item.js +24 -0
- package/sortable/esm5/draggable-item.service.js +82 -0
- package/sortable/esm5/ngx-bootstrap-sortable.js +10 -0
- package/sortable/esm5/public_api.js +9 -0
- package/sortable/esm5/sortable.component.js +398 -0
- package/sortable/esm5/sortable.module.js +41 -0
- package/sortable/fesm2015/ngx-bootstrap-sortable.js +377 -0
- package/sortable/fesm2015/ngx-bootstrap-sortable.js.map +1 -0
- package/sortable/fesm5/ngx-bootstrap-sortable.js +414 -0
- package/sortable/fesm5/ngx-bootstrap-sortable.js.map +1 -0
- package/sortable/ngx-bootstrap-sortable.d.ts +4 -0
- package/sortable/ngx-bootstrap-sortable.metadata.json +1 -0
- package/sortable/package.json +19 -0
- package/sortable/{index.d.ts → public_api.d.ts} +0 -0
- package/sortable/sortable.component.d.ts +1 -1
- package/tabs/bundles/ngx-bootstrap-tabs.umd.js +481 -0
- package/tabs/bundles/ngx-bootstrap-tabs.umd.js.map +1 -0
- package/tabs/bundles/ngx-bootstrap-tabs.umd.min.js +2 -0
- package/tabs/bundles/ngx-bootstrap-tabs.umd.min.js.map +1 -0
- package/tabs/esm2015/ng-transclude.directive.js +61 -0
- package/tabs/esm2015/ngx-bootstrap-tabs.js +10 -0
- package/tabs/esm2015/public_api.js +12 -0
- package/tabs/esm2015/tab-heading.directive.js +39 -0
- package/tabs/esm2015/tab.directive.js +181 -0
- package/tabs/esm2015/tabs.module.js +50 -0
- package/tabs/esm2015/tabset.component.js +195 -0
- package/tabs/esm2015/tabset.config.js +32 -0
- package/tabs/esm5/ng-transclude.directive.js +65 -0
- package/tabs/esm5/ngx-bootstrap-tabs.js +10 -0
- package/tabs/esm5/public_api.js +12 -0
- package/tabs/esm5/tab-heading.directive.js +38 -0
- package/tabs/esm5/tab.directive.js +194 -0
- package/tabs/esm5/tabs.module.js +57 -0
- package/tabs/esm5/tabset.component.js +231 -0
- package/tabs/esm5/tabset.config.js +34 -0
- package/tabs/fesm2015/ngx-bootstrap-tabs.js +415 -0
- package/tabs/fesm2015/ngx-bootstrap-tabs.js.map +1 -0
- package/tabs/fesm5/ngx-bootstrap-tabs.js +470 -0
- package/tabs/fesm5/ngx-bootstrap-tabs.js.map +1 -0
- package/tabs/ngx-bootstrap-tabs.d.ts +4 -0
- package/tabs/ngx-bootstrap-tabs.metadata.json +1 -0
- package/tabs/package.json +19 -0
- package/tabs/{index.d.ts → public_api.d.ts} +0 -0
- package/tabs/tabset.component.d.ts +3 -1
- package/timepicker/bundles/ngx-bootstrap-timepicker.umd.js +1183 -0
- package/timepicker/bundles/ngx-bootstrap-timepicker.umd.js.map +1 -0
- package/timepicker/bundles/ngx-bootstrap-timepicker.umd.min.js +2 -0
- package/timepicker/bundles/ngx-bootstrap-timepicker.umd.min.js.map +1 -0
- package/timepicker/esm2015/models/index.js +18 -0
- package/timepicker/esm2015/ngx-bootstrap-timepicker.js +11 -0
- package/timepicker/esm2015/public_api.js +11 -0
- package/timepicker/esm2015/reducer/timepicker.actions.js +99 -0
- package/timepicker/esm2015/reducer/timepicker.reducer.js +103 -0
- package/timepicker/esm2015/reducer/timepicker.store.js +33 -0
- package/timepicker/esm2015/timepicker-controls.util.js +156 -0
- package/timepicker/esm2015/timepicker.component.js +480 -0
- package/timepicker/esm2015/timepicker.config.js +144 -0
- package/timepicker/esm2015/timepicker.models.js +82 -0
- package/timepicker/esm2015/timepicker.module.js +39 -0
- package/timepicker/esm2015/timepicker.utils.js +224 -0
- package/timepicker/esm5/models/index.js +18 -0
- package/timepicker/esm5/ngx-bootstrap-timepicker.js +11 -0
- package/timepicker/esm5/public_api.js +11 -0
- package/timepicker/esm5/reducer/timepicker.actions.js +127 -0
- package/timepicker/esm5/reducer/timepicker.reducer.js +108 -0
- package/timepicker/esm5/reducer/timepicker.store.js +39 -0
- package/timepicker/esm5/timepicker-controls.util.js +156 -0
- package/timepicker/esm5/timepicker.component.js +564 -0
- package/timepicker/esm5/timepicker.config.js +146 -0
- package/timepicker/esm5/timepicker.models.js +82 -0
- package/timepicker/esm5/timepicker.module.js +46 -0
- package/timepicker/esm5/timepicker.utils.js +227 -0
- package/timepicker/fesm2015/ngx-bootstrap-timepicker.js +1006 -0
- package/timepicker/fesm2015/ngx-bootstrap-timepicker.js.map +1 -0
- package/timepicker/fesm5/ngx-bootstrap-timepicker.js +1132 -0
- package/timepicker/fesm5/ngx-bootstrap-timepicker.js.map +1 -0
- package/timepicker/models/index.d.ts +8 -0
- package/timepicker/ngx-bootstrap-timepicker.d.ts +5 -0
- package/timepicker/ngx-bootstrap-timepicker.metadata.json +1 -0
- package/timepicker/package.json +19 -0
- package/timepicker/{index.d.ts → public_api.d.ts} +0 -0
- package/timepicker/reducer/timepicker.actions.d.ts +1 -1
- package/timepicker/reducer/timepicker.reducer.d.ts +1 -1
- package/timepicker/reducer/timepicker.store.d.ts +1 -1
- package/timepicker/timepicker.component.d.ts +8 -7
- package/timepicker/timepicker.config.d.ts +1 -1
- package/timepicker/timepicker.utils.d.ts +1 -1
- package/tooltip/bundles/ngx-bootstrap-tooltip.umd.js +546 -0
- package/tooltip/bundles/ngx-bootstrap-tooltip.umd.js.map +1 -0
- package/tooltip/bundles/ngx-bootstrap-tooltip.umd.min.js +2 -0
- package/tooltip/bundles/ngx-bootstrap-tooltip.umd.min.js.map +1 -0
- package/tooltip/esm2015/ngx-bootstrap-tooltip.js +10 -0
- package/tooltip/esm2015/public_api.js +10 -0
- package/tooltip/esm2015/tooltip-container.component.js +92 -0
- package/tooltip/esm2015/tooltip.config.js +49 -0
- package/tooltip/esm2015/tooltip.directive.js +419 -0
- package/tooltip/esm2015/tooltip.module.js +41 -0
- package/tooltip/esm5/ngx-bootstrap-tooltip.js +10 -0
- package/tooltip/esm5/public_api.js +10 -0
- package/tooltip/esm5/tooltip-container.component.js +82 -0
- package/tooltip/esm5/tooltip.config.js +51 -0
- package/tooltip/esm5/tooltip.directive.js +490 -0
- package/tooltip/esm5/tooltip.module.js +48 -0
- package/tooltip/fesm2015/ngx-bootstrap-tooltip.js +456 -0
- package/tooltip/fesm2015/ngx-bootstrap-tooltip.js.map +1 -0
- package/tooltip/fesm5/ngx-bootstrap-tooltip.js +522 -0
- package/tooltip/fesm5/ngx-bootstrap-tooltip.js.map +1 -0
- package/tooltip/ngx-bootstrap-tooltip.d.ts +4 -0
- package/tooltip/ngx-bootstrap-tooltip.metadata.json +1 -0
- package/tooltip/package.json +19 -0
- package/tooltip/{index.d.ts → public_api.d.ts} +0 -0
- package/tooltip/tooltip-container.component.d.ts +4 -1
- package/tooltip/tooltip.directive.d.ts +10 -8
- package/typeahead/bundles/ngx-bootstrap-typeahead.umd.js +2029 -0
- package/typeahead/bundles/ngx-bootstrap-typeahead.umd.js.map +1 -0
- package/typeahead/bundles/ngx-bootstrap-typeahead.umd.min.js +2 -0
- package/typeahead/bundles/ngx-bootstrap-typeahead.umd.min.js.map +1 -0
- package/typeahead/esm2015/latin-map.js +833 -0
- package/typeahead/esm2015/ngx-bootstrap-typeahead.js +10 -0
- package/typeahead/esm2015/public_api.js +14 -0
- package/typeahead/esm2015/typeahead-container.component.js +336 -0
- package/typeahead/esm2015/typeahead-match.class.js +38 -0
- package/typeahead/esm2015/typeahead-options.class.js +22 -0
- package/typeahead/esm2015/typeahead-utils.js +80 -0
- package/typeahead/esm2015/typeahead.config.js +35 -0
- package/typeahead/esm2015/typeahead.directive.js +652 -0
- package/typeahead/esm2015/typeahead.module.js +41 -0
- package/typeahead/esm5/latin-map.js +833 -0
- package/typeahead/esm5/ngx-bootstrap-typeahead.js +10 -0
- package/typeahead/esm5/public_api.js +14 -0
- package/typeahead/esm5/typeahead-container.component.js +414 -0
- package/typeahead/esm5/typeahead-match.class.js +44 -0
- package/typeahead/esm5/typeahead-options.class.js +21 -0
- package/typeahead/esm5/typeahead-utils.js +94 -0
- package/typeahead/esm5/typeahead.config.js +37 -0
- package/typeahead/esm5/typeahead.directive.js +748 -0
- package/typeahead/esm5/typeahead.module.js +48 -0
- package/typeahead/fesm2015/ngx-bootstrap-typeahead.js +1780 -0
- package/typeahead/fesm2015/ngx-bootstrap-typeahead.js.map +1 -0
- package/typeahead/fesm5/ngx-bootstrap-typeahead.js +1975 -0
- package/typeahead/fesm5/ngx-bootstrap-typeahead.js.map +1 -0
- package/typeahead/ngx-bootstrap-typeahead.d.ts +4 -0
- package/typeahead/ngx-bootstrap-typeahead.metadata.json +1 -0
- package/typeahead/package.json +19 -0
- package/typeahead/public_api.d.ts +8 -0
- package/typeahead/typeahead-container.component.d.ts +2 -2
- package/typeahead/typeahead.config.d.ts +5 -0
- package/typeahead/typeahead.directive.d.ts +13 -10
- package/utils/bundles/ngx-bootstrap-utils.umd.js +792 -0
- package/utils/bundles/ngx-bootstrap-utils.umd.js.map +1 -0
- package/utils/bundles/ngx-bootstrap-utils.umd.min.js +10 -0
- package/utils/bundles/ngx-bootstrap-utils.umd.min.js.map +1 -0
- package/utils/esm2015/decorators.js +37 -0
- package/utils/esm2015/facade/browser.js +29 -0
- package/utils/esm2015/linked-list.class.js +324 -0
- package/utils/esm2015/ngx-bootstrap-utils.js +10 -0
- package/utils/esm2015/public_api.js +16 -0
- package/utils/esm2015/theme-provider.js +49 -0
- package/utils/esm2015/trigger.class.js +32 -0
- package/utils/esm2015/triggers.js +165 -0
- package/utils/esm2015/utils.class.js +31 -0
- package/utils/esm2015/warn-once.js +21 -0
- package/utils/esm5/decorators.js +39 -0
- package/utils/esm5/facade/browser.js +29 -0
- package/utils/esm5/linked-list.class.js +425 -0
- package/utils/esm5/ngx-bootstrap-utils.js +10 -0
- package/utils/esm5/public_api.js +16 -0
- package/utils/esm5/theme-provider.js +49 -0
- package/utils/esm5/trigger.class.js +33 -0
- package/utils/esm5/triggers.js +170 -0
- package/utils/esm5/utils.class.js +46 -0
- package/utils/esm5/warn-once.js +21 -0
- package/utils/facade/browser.d.ts +5 -5
- package/utils/fesm2015/ngx-bootstrap-utils.js +650 -0
- package/utils/fesm2015/ngx-bootstrap-utils.js.map +1 -0
- package/utils/fesm5/ngx-bootstrap-utils.js +768 -0
- package/utils/fesm5/ngx-bootstrap-utils.js.map +1 -0
- package/utils/ngx-bootstrap-utils.d.ts +4 -0
- package/utils/ngx-bootstrap-utils.metadata.json +1 -0
- package/utils/package.json +19 -0
- package/utils/public_api.d.ts +10 -0
- package/utils/triggers.d.ts +12 -1
- package/accordion/accordion-group.component.html +0 -19
- package/accordion/accordion-group.component.js +0 -82
- package/accordion/accordion-group.component.js.map +0 -1
- package/accordion/accordion-group.component.metadata.json +0 -1
- package/accordion/accordion-group.component.ngfactory.js.map +0 -1
- package/accordion/accordion.component.js +0 -50
- package/accordion/accordion.component.js.map +0 -1
- package/accordion/accordion.component.metadata.json +0 -1
- package/accordion/accordion.component.ngfactory.js.map +0 -1
- package/accordion/accordion.config.js +0 -16
- package/accordion/accordion.config.js.map +0 -1
- package/accordion/accordion.config.metadata.json +0 -1
- package/accordion/accordion.config.ngfactory.js.map +0 -1
- package/accordion/accordion.module.js +0 -23
- package/accordion/accordion.module.js.map +0 -1
- package/accordion/accordion.module.metadata.json +0 -1
- package/accordion/accordion.module.ngfactory.js.map +0 -1
- package/accordion/index.js +0 -5
- package/accordion/index.js.map +0 -1
- package/accordion/index.metadata.json +0 -1
- package/alert/alert.component.html +0 -11
- package/alert/alert.component.js +0 -99
- package/alert/alert.component.js.map +0 -1
- package/alert/alert.component.metadata.json +0 -1
- package/alert/alert.component.ngfactory.js.map +0 -1
- package/alert/alert.config.js +0 -17
- package/alert/alert.config.js.map +0 -1
- package/alert/alert.config.metadata.json +0 -1
- package/alert/alert.config.ngfactory.js.map +0 -1
- package/alert/alert.module.js +0 -22
- package/alert/alert.module.js.map +0 -1
- package/alert/alert.module.metadata.json +0 -1
- package/alert/alert.module.ngfactory.js.map +0 -1
- package/alert/index.js +0 -4
- package/alert/index.js.map +0 -1
- package/alert/index.metadata.json +0 -1
- package/buttons/button-checkbox.directive.js +0 -93
- package/buttons/button-checkbox.directive.js.map +0 -1
- package/buttons/button-checkbox.directive.metadata.json +0 -1
- package/buttons/button-checkbox.directive.ngfactory.js.map +0 -1
- package/buttons/button-radio-group.directive.js +0 -53
- package/buttons/button-radio-group.directive.js.map +0 -1
- package/buttons/button-radio-group.directive.metadata.json +0 -1
- package/buttons/button-radio-group.directive.ngfactory.js.map +0 -1
- package/buttons/button-radio.directive.js +0 -126
- package/buttons/button-radio.directive.js.map +0 -1
- package/buttons/button-radio.directive.metadata.json +0 -1
- package/buttons/button-radio.directive.ngfactory.js.map +0 -1
- package/buttons/buttons.module.js +0 -20
- package/buttons/buttons.module.js.map +0 -1
- package/buttons/buttons.module.metadata.json +0 -1
- package/buttons/buttons.module.ngfactory.js.map +0 -1
- package/buttons/index.js +0 -5
- package/buttons/index.js.map +0 -1
- package/buttons/index.metadata.json +0 -1
- package/carousel/carousel.component.html +0 -14
- package/carousel/carousel.component.js +0 -419
- package/carousel/carousel.component.js.map +0 -1
- package/carousel/carousel.component.metadata.json +0 -1
- package/carousel/carousel.component.ngfactory.js.map +0 -1
- package/carousel/carousel.config.js +0 -19
- package/carousel/carousel.config.js.map +0 -1
- package/carousel/carousel.config.metadata.json +0 -1
- package/carousel/carousel.config.ngfactory.js.map +0 -1
- package/carousel/carousel.module.js +0 -23
- package/carousel/carousel.module.js.map +0 -1
- package/carousel/carousel.module.metadata.json +0 -1
- package/carousel/carousel.module.ngfactory.js.map +0 -1
- package/carousel/index.js +0 -5
- package/carousel/index.js.map +0 -1
- package/carousel/index.metadata.json +0 -1
- package/carousel/slide.component.js +0 -41
- package/carousel/slide.component.js.map +0 -1
- package/carousel/slide.component.metadata.json +0 -1
- package/carousel/slide.component.ngfactory.js.map +0 -1
- package/chronos/create/check-overflow.js +0 -30
- package/chronos/create/check-overflow.js.map +0 -1
- package/chronos/create/check-overflow.metadata.json +0 -1
- package/chronos/create/clone.js +0 -6
- package/chronos/create/clone.js.map +0 -1
- package/chronos/create/clone.metadata.json +0 -1
- package/chronos/create/date-from-array.js +0 -23
- package/chronos/create/date-from-array.js.map +0 -1
- package/chronos/create/date-from-array.metadata.json +0 -1
- package/chronos/create/from-anything.js +0 -106
- package/chronos/create/from-anything.js.map +0 -1
- package/chronos/create/from-anything.metadata.json +0 -1
- package/chronos/create/from-array.js +0 -136
- package/chronos/create/from-array.js.map +0 -1
- package/chronos/create/from-array.metadata.json +0 -1
- package/chronos/create/from-object.js +0 -16
- package/chronos/create/from-object.js.map +0 -1
- package/chronos/create/from-object.metadata.json +0 -1
- package/chronos/create/from-string-and-array.js +0 -38
- package/chronos/create/from-string-and-array.js.map +0 -1
- package/chronos/create/from-string-and-array.metadata.json +0 -1
- package/chronos/create/from-string-and-format.js +0 -106
- package/chronos/create/from-string-and-format.js.map +0 -1
- package/chronos/create/from-string-and-format.metadata.json +0 -1
- package/chronos/create/from-string.js +0 -226
- package/chronos/create/from-string.js.map +0 -1
- package/chronos/create/from-string.metadata.json +0 -1
- package/chronos/create/local.js +0 -10
- package/chronos/create/local.js.map +0 -1
- package/chronos/create/local.metadata.json +0 -1
- package/chronos/create/parsing-flags.js +0 -26
- package/chronos/create/parsing-flags.js.map +0 -1
- package/chronos/create/parsing-flags.metadata.json +0 -1
- package/chronos/create/parsing.types.js +0 -1
- package/chronos/create/parsing.types.js.map +0 -1
- package/chronos/create/parsing.types.metadata.json +0 -1
- package/chronos/create/valid.js +0 -42
- package/chronos/create/valid.js.map +0 -1
- package/chronos/create/valid.metadata.json +0 -1
- package/chronos/duration/bubble.js +0 -47
- package/chronos/duration/bubble.js.map +0 -1
- package/chronos/duration/bubble.metadata.json +0 -1
- package/chronos/duration/constructor.js +0 -134
- package/chronos/duration/constructor.js.map +0 -1
- package/chronos/duration/constructor.metadata.json +0 -1
- package/chronos/duration/create.js +0 -114
- package/chronos/duration/create.js.map +0 -1
- package/chronos/duration/create.metadata.json +0 -1
- package/chronos/duration/humanize.js +0 -84
- package/chronos/duration/humanize.js.map +0 -1
- package/chronos/duration/humanize.metadata.json +0 -1
- package/chronos/duration/valid.js +0 -45
- package/chronos/duration/valid.js.map +0 -1
- package/chronos/duration/valid.metadata.json +0 -1
- package/chronos/format/format.js +0 -52
- package/chronos/format/format.js.map +0 -1
- package/chronos/format/format.metadata.json +0 -1
- package/chronos/format.js +0 -48
- package/chronos/format.js.map +0 -1
- package/chronos/format.metadata.json +0 -1
- package/chronos/i18n/ar.js +0 -132
- package/chronos/i18n/ar.js.map +0 -1
- package/chronos/i18n/ar.metadata.json +0 -1
- package/chronos/i18n/cs.js +0 -191
- package/chronos/i18n/cs.js.map +0 -1
- package/chronos/i18n/cs.metadata.json +0 -1
- package/chronos/i18n/da.js +0 -51
- package/chronos/i18n/da.js.map +0 -1
- package/chronos/i18n/da.metadata.json +0 -1
- package/chronos/i18n/de.js +0 -73
- package/chronos/i18n/de.js.map +0 -1
- package/chronos/i18n/de.metadata.json +0 -1
- package/chronos/i18n/en-gb.js +0 -62
- package/chronos/i18n/en-gb.js.map +0 -1
- package/chronos/i18n/en-gb.metadata.json +0 -1
- package/chronos/i18n/es-do.js +0 -86
- package/chronos/i18n/es-do.js.map +0 -1
- package/chronos/i18n/es-do.metadata.json +0 -1
- package/chronos/i18n/es-us.js +0 -80
- package/chronos/i18n/es-us.js.map +0 -1
- package/chronos/i18n/es-us.metadata.json +0 -1
- package/chronos/i18n/es.js +0 -85
- package/chronos/i18n/es.js.map +0 -1
- package/chronos/i18n/es.metadata.json +0 -1
- package/chronos/i18n/fi.js +0 -101
- package/chronos/i18n/fi.js.map +0 -1
- package/chronos/i18n/fi.metadata.json +0 -1
- package/chronos/i18n/fr.js +0 -77
- package/chronos/i18n/fr.js.map +0 -1
- package/chronos/i18n/fr.metadata.json +0 -1
- package/chronos/i18n/gl.js +0 -85
- package/chronos/i18n/gl.js.map +0 -1
- package/chronos/i18n/gl.metadata.json +0 -1
- package/chronos/i18n/he.js +0 -98
- package/chronos/i18n/he.js.map +0 -1
- package/chronos/i18n/he.metadata.json +0 -1
- package/chronos/i18n/hi.js +0 -125
- package/chronos/i18n/hi.js.map +0 -1
- package/chronos/i18n/hi.metadata.json +0 -1
- package/chronos/i18n/hu.js +0 -105
- package/chronos/i18n/hu.js.map +0 -1
- package/chronos/i18n/hu.metadata.json +0 -1
- package/chronos/i18n/id.js +0 -84
- package/chronos/i18n/id.js.map +0 -1
- package/chronos/i18n/id.metadata.json +0 -1
- package/chronos/i18n/it.js +0 -66
- package/chronos/i18n/it.js.map +0 -1
- package/chronos/i18n/it.metadata.json +0 -1
- package/chronos/i18n/ja.js +0 -75
- package/chronos/i18n/ja.js.map +0 -1
- package/chronos/i18n/ja.metadata.json +0 -1
- package/chronos/i18n/ko.js +0 -77
- package/chronos/i18n/ko.js.map +0 -1
- package/chronos/i18n/ko.metadata.json +0 -1
- package/chronos/i18n/mn.js +0 -99
- package/chronos/i18n/mn.js.map +0 -1
- package/chronos/i18n/mn.metadata.json +0 -1
- package/chronos/i18n/nl-be.js +0 -82
- package/chronos/i18n/nl-be.js.map +0 -1
- package/chronos/i18n/nl-be.metadata.json +0 -1
- package/chronos/i18n/nl.js +0 -81
- package/chronos/i18n/nl.js.map +0 -1
- package/chronos/i18n/nl.metadata.json +0 -1
- package/chronos/i18n/pl.js +0 -121
- package/chronos/i18n/pl.js.map +0 -1
- package/chronos/i18n/pl.metadata.json +0 -1
- package/chronos/i18n/pt-br.js +0 -56
- package/chronos/i18n/pt-br.js.map +0 -1
- package/chronos/i18n/pt-br.metadata.json +0 -1
- package/chronos/i18n/ro.js +0 -67
- package/chronos/i18n/ro.js.map +0 -1
- package/chronos/i18n/ro.metadata.json +0 -1
- package/chronos/i18n/ru.js +0 -182
- package/chronos/i18n/ru.js.map +0 -1
- package/chronos/i18n/ru.metadata.json +0 -1
- package/chronos/i18n/sl.js +0 -185
- package/chronos/i18n/sl.js.map +0 -1
- package/chronos/i18n/sl.metadata.json +0 -1
- package/chronos/i18n/sv.js +0 -64
- package/chronos/i18n/sv.js.map +0 -1
- package/chronos/i18n/sv.metadata.json +0 -1
- package/chronos/i18n/th.js +0 -60
- package/chronos/i18n/th.js.map +0 -1
- package/chronos/i18n/th.metadata.json +0 -1
- package/chronos/i18n/tr.js +0 -84
- package/chronos/i18n/tr.js.map +0 -1
- package/chronos/i18n/tr.metadata.json +0 -1
- package/chronos/i18n/zh-cn.js +0 -115
- package/chronos/i18n/zh-cn.js.map +0 -1
- package/chronos/i18n/zh-cn.metadata.json +0 -1
- package/chronos/index.js +0 -7
- package/chronos/index.js.map +0 -1
- package/chronos/index.metadata.json +0 -1
- package/chronos/locale/calendar.js +0 -9
- package/chronos/locale/calendar.js.map +0 -1
- package/chronos/locale/calendar.metadata.json +0 -1
- package/chronos/locale/locale.class.js +0 -550
- package/chronos/locale/locale.class.js.map +0 -1
- package/chronos/locale/locale.class.metadata.json +0 -1
- package/chronos/locale/locale.defaults.js +0 -41
- package/chronos/locale/locale.defaults.js.map +0 -1
- package/chronos/locale/locale.defaults.metadata.json +0 -1
- package/chronos/locale/locales.js +0 -194
- package/chronos/locale/locales.js.map +0 -1
- package/chronos/locale/locales.metadata.json +0 -1
- package/chronos/moment/add-subtract.js +0 -35
- package/chronos/moment/add-subtract.js.map +0 -1
- package/chronos/moment/add-subtract.metadata.json +0 -1
- package/chronos/moment/calendar.js +0 -43
- package/chronos/moment/calendar.js.map +0 -1
- package/chronos/moment/calendar.metadata.json +0 -1
- package/chronos/moment/diff.js +0 -71
- package/chronos/moment/diff.js.map +0 -1
- package/chronos/moment/diff.metadata.json +0 -1
- package/chronos/moment/min-max.js +0 -41
- package/chronos/moment/min-max.js.map +0 -1
- package/chronos/moment/min-max.metadata.json +0 -1
- package/chronos/parse/regex.js +0 -49
- package/chronos/parse/regex.js.map +0 -1
- package/chronos/parse/regex.metadata.json +0 -1
- package/chronos/parse/token.js +0 -31
- package/chronos/parse/token.js.map +0 -1
- package/chronos/parse/token.metadata.json +0 -1
- package/chronos/test/chain.js +0 -738
- package/chronos/test/chain.js.map +0 -1
- package/chronos/test/chain.metadata.json +0 -1
- package/chronos/types.js +0 -1
- package/chronos/types.js.map +0 -1
- package/chronos/types.metadata.json +0 -1
- package/chronos/units/aliases.js +0 -35
- package/chronos/units/aliases.js.map +0 -1
- package/chronos/units/aliases.metadata.json +0 -1
- package/chronos/units/constants.js +0 -11
- package/chronos/units/constants.js.map +0 -1
- package/chronos/units/constants.metadata.json +0 -1
- package/chronos/units/day-of-month.js +0 -28
- package/chronos/units/day-of-month.js.map +0 -1
- package/chronos/units/day-of-week.js +0 -129
- package/chronos/units/day-of-week.js.map +0 -1
- package/chronos/units/day-of-week.metadata.json +0 -1
- package/chronos/units/day-of-year.js +0 -34
- package/chronos/units/day-of-year.js.map +0 -1
- package/chronos/units/day-of-year.metadata.json +0 -1
- package/chronos/units/hour.js +0 -122
- package/chronos/units/hour.js.map +0 -1
- package/chronos/units/index.js +0 -19
- package/chronos/units/index.js.map +0 -1
- package/chronos/units/millisecond.js +0 -58
- package/chronos/units/millisecond.js.map +0 -1
- package/chronos/units/minute.js +0 -20
- package/chronos/units/minute.js.map +0 -1
- package/chronos/units/month.js +0 -61
- package/chronos/units/month.js.map +0 -1
- package/chronos/units/month.metadata.json +0 -1
- package/chronos/units/offset.js +0 -212
- package/chronos/units/offset.js.map +0 -1
- package/chronos/units/offset.metadata.json +0 -1
- package/chronos/units/priorities.js +0 -21
- package/chronos/units/priorities.js.map +0 -1
- package/chronos/units/priorities.metadata.json +0 -1
- package/chronos/units/quarter.js +0 -37
- package/chronos/units/quarter.js.map +0 -1
- package/chronos/units/quarter.metadata.json +0 -1
- package/chronos/units/second.js +0 -20
- package/chronos/units/second.js.map +0 -1
- package/chronos/units/timestamp.js +0 -24
- package/chronos/units/timestamp.js.map +0 -1
- package/chronos/units/timezone.js +0 -17
- package/chronos/units/timezone.js.map +0 -1
- package/chronos/units/timezone.metadata.json +0 -1
- package/chronos/units/week-calendar-utils.js +0 -63
- package/chronos/units/week-calendar-utils.js.map +0 -1
- package/chronos/units/week-calendar-utils.metadata.json +0 -1
- package/chronos/units/week-year.js +0 -102
- package/chronos/units/week-year.js.map +0 -1
- package/chronos/units/week-year.metadata.json +0 -1
- package/chronos/units/week.js +0 -56
- package/chronos/units/week.js.map +0 -1
- package/chronos/units/week.metadata.json +0 -1
- package/chronos/units/year.js +0 -55
- package/chronos/units/year.js.map +0 -1
- package/chronos/units/year.metadata.json +0 -1
- package/chronos/utils/abs-ceil.js +0 -4
- package/chronos/utils/abs-ceil.js.map +0 -1
- package/chronos/utils/abs-ceil.metadata.json +0 -1
- package/chronos/utils/abs-round.js +0 -4
- package/chronos/utils/abs-round.js.map +0 -1
- package/chronos/utils/abs-round.metadata.json +0 -1
- package/chronos/utils/compare-arrays.js +0 -15
- package/chronos/utils/compare-arrays.js.map +0 -1
- package/chronos/utils/compare-arrays.metadata.json +0 -1
- package/chronos/utils/date-compare.js +0 -50
- package/chronos/utils/date-compare.js.map +0 -1
- package/chronos/utils/date-compare.metadata.json +0 -1
- package/chronos/utils/date-getters.js +0 -75
- package/chronos/utils/date-getters.js.map +0 -1
- package/chronos/utils/date-getters.metadata.json +0 -1
- package/chronos/utils/date-setters.js +0 -74
- package/chronos/utils/date-setters.js.map +0 -1
- package/chronos/utils/date-setters.metadata.json +0 -1
- package/chronos/utils/defaults.js +0 -11
- package/chronos/utils/defaults.js.map +0 -1
- package/chronos/utils/defaults.metadata.json +0 -1
- package/chronos/utils/start-end-of.js +0 -57
- package/chronos/utils/start-end-of.js.map +0 -1
- package/chronos/utils/start-end-of.metadata.json +0 -1
- package/chronos/utils/type-checks.js +0 -56
- package/chronos/utils/type-checks.js.map +0 -1
- package/chronos/utils/type-checks.metadata.json +0 -1
- package/chronos/utils/zero-fill.js +0 -10
- package/chronos/utils/zero-fill.js.map +0 -1
- package/chronos/utils/zero-fill.metadata.json +0 -1
- package/chronos/utils.js +0 -7
- package/chronos/utils.js.map +0 -1
- package/chronos/utils.metadata.json +0 -1
- package/collapse/collapse.directive.js +0 -98
- package/collapse/collapse.directive.js.map +0 -1
- package/collapse/collapse.directive.metadata.json +0 -1
- package/collapse/collapse.directive.ngfactory.js.map +0 -1
- package/collapse/collapse.module.js +0 -18
- package/collapse/collapse.module.js.map +0 -1
- package/collapse/collapse.module.metadata.json +0 -1
- package/collapse/collapse.module.ngfactory.js.map +0 -1
- package/collapse/index.js +0 -3
- package/collapse/index.js.map +0 -1
- package/collapse/index.metadata.json +0 -1
- package/component-loader/bs-component-ref.class.js +0 -7
- package/component-loader/bs-component-ref.class.js.map +0 -1
- package/component-loader/bs-component-ref.class.metadata.json +0 -1
- package/component-loader/component-loader.class.js +0 -258
- package/component-loader/component-loader.class.js.map +0 -1
- package/component-loader/component-loader.class.metadata.json +0 -1
- package/component-loader/component-loader.factory.js +0 -50
- package/component-loader/component-loader.factory.js.map +0 -1
- package/component-loader/component-loader.factory.metadata.json +0 -1
- package/component-loader/component-loader.factory.ngfactory.js.map +0 -1
- package/component-loader/content-ref.class.js +0 -14
- package/component-loader/content-ref.class.js.map +0 -1
- package/component-loader/content-ref.class.metadata.json +0 -1
- package/component-loader/index.d.ts +0 -3
- package/component-loader/index.js +0 -4
- package/component-loader/index.js.map +0 -1
- package/component-loader/index.metadata.json +0 -1
- package/component-loader/listen-options.model.js +0 -1
- package/component-loader/listen-options.model.js.map +0 -1
- package/component-loader/listen-options.model.metadata.json +0 -1
- package/datepicker/base/bs-datepicker-container.js +0 -40
- package/datepicker/base/bs-datepicker-container.js.map +0 -1
- package/datepicker/base/bs-datepicker-container.metadata.json +0 -1
- package/datepicker/bs-datepicker-input.directive.js +0 -134
- package/datepicker/bs-datepicker-input.directive.js.map +0 -1
- package/datepicker/bs-datepicker-input.directive.metadata.json +0 -1
- package/datepicker/bs-datepicker-input.directive.ngfactory.js.map +0 -1
- package/datepicker/bs-datepicker.component.js +0 -217
- package/datepicker/bs-datepicker.component.js.map +0 -1
- package/datepicker/bs-datepicker.component.metadata.json +0 -1
- package/datepicker/bs-datepicker.component.ngfactory.js.map +0 -1
- package/datepicker/bs-datepicker.config.js +0 -39
- package/datepicker/bs-datepicker.config.js.map +0 -1
- package/datepicker/bs-datepicker.config.metadata.json +0 -1
- package/datepicker/bs-datepicker.config.ngfactory.js.map +0 -1
- package/datepicker/bs-datepicker.module.js +0 -80
- package/datepicker/bs-datepicker.module.js.map +0 -1
- package/datepicker/bs-datepicker.module.metadata.json +0 -1
- package/datepicker/bs-datepicker.module.ngfactory.js.map +0 -1
- package/datepicker/bs-daterangepicker-input.directive.js +0 -150
- package/datepicker/bs-daterangepicker-input.directive.js.map +0 -1
- package/datepicker/bs-daterangepicker-input.directive.metadata.json +0 -1
- package/datepicker/bs-daterangepicker-input.directive.ngfactory.js.map +0 -1
- package/datepicker/bs-daterangepicker.component.js +0 -220
- package/datepicker/bs-daterangepicker.component.js.map +0 -1
- package/datepicker/bs-daterangepicker.component.metadata.json +0 -1
- package/datepicker/bs-daterangepicker.component.ngfactory.js.map +0 -1
- package/datepicker/bs-daterangepicker.config.js +0 -27
- package/datepicker/bs-daterangepicker.config.js.map +0 -1
- package/datepicker/bs-daterangepicker.config.metadata.json +0 -1
- package/datepicker/bs-daterangepicker.config.ngfactory.js.map +0 -1
- package/datepicker/bs-locale.service.js +0 -42
- package/datepicker/bs-locale.service.js.map +0 -1
- package/datepicker/bs-locale.service.metadata.json +0 -1
- package/datepicker/bs-locale.service.ngfactory.js.map +0 -1
- package/datepicker/date-formatter.js +0 -11
- package/datepicker/date-formatter.js.map +0 -1
- package/datepicker/date-formatter.metadata.json +0 -1
- package/datepicker/datepicker-inner.component.js +0 -317
- package/datepicker/datepicker-inner.component.js.map +0 -1
- package/datepicker/datepicker-inner.component.metadata.json +0 -1
- package/datepicker/datepicker-inner.component.ngfactory.js.map +0 -1
- package/datepicker/datepicker.component.js +0 -114
- package/datepicker/datepicker.component.js.map +0 -1
- package/datepicker/datepicker.component.metadata.json +0 -1
- package/datepicker/datepicker.component.ngfactory.js.map +0 -1
- package/datepicker/datepicker.config.js +0 -28
- package/datepicker/datepicker.config.js.map +0 -1
- package/datepicker/datepicker.config.metadata.json +0 -1
- package/datepicker/datepicker.config.ngfactory.js.map +0 -1
- package/datepicker/datepicker.module.js +0 -39
- package/datepicker/datepicker.module.js.map +0 -1
- package/datepicker/datepicker.module.metadata.json +0 -1
- package/datepicker/datepicker.module.ngfactory.js.map +0 -1
- package/datepicker/daypicker.component.js +0 -116
- package/datepicker/daypicker.component.js.map +0 -1
- package/datepicker/daypicker.component.metadata.json +0 -1
- package/datepicker/daypicker.component.ngfactory.js.map +0 -1
- package/datepicker/engine/calc-days-calendar.js +0 -19
- package/datepicker/engine/calc-days-calendar.js.map +0 -1
- package/datepicker/engine/calc-days-calendar.metadata.json +0 -1
- package/datepicker/engine/flag-days-calendar.js +0 -72
- package/datepicker/engine/flag-days-calendar.js.map +0 -1
- package/datepicker/engine/flag-days-calendar.metadata.json +0 -1
- package/datepicker/engine/flag-months-calendar.js +0 -30
- package/datepicker/engine/flag-months-calendar.js.map +0 -1
- package/datepicker/engine/flag-months-calendar.metadata.json +0 -1
- package/datepicker/engine/flag-years-calendar.js +0 -29
- package/datepicker/engine/flag-years-calendar.js.map +0 -1
- package/datepicker/engine/flag-years-calendar.metadata.json +0 -1
- package/datepicker/engine/format-days-calendar.js +0 -34
- package/datepicker/engine/format-days-calendar.js.map +0 -1
- package/datepicker/engine/format-days-calendar.metadata.json +0 -1
- package/datepicker/engine/format-months-calendar.js +0 -22
- package/datepicker/engine/format-months-calendar.js.map +0 -1
- package/datepicker/engine/format-months-calendar.metadata.json +0 -1
- package/datepicker/engine/format-years-calendar.js +0 -30
- package/datepicker/engine/format-years-calendar.js.map +0 -1
- package/datepicker/engine/format-years-calendar.metadata.json +0 -1
- package/datepicker/engine/view-mode.js +0 -4
- package/datepicker/engine/view-mode.js.map +0 -1
- package/datepicker/engine/view-mode.metadata.json +0 -1
- package/datepicker/index.d.ts +0 -13
- package/datepicker/index.js +0 -14
- package/datepicker/index.js.map +0 -1
- package/datepicker/index.metadata.json +0 -1
- package/datepicker/models/index.js +0 -15
- package/datepicker/models/index.js.map +0 -1
- package/datepicker/models/index.metadata.json +0 -1
- package/datepicker/monthpicker.component.js +0 -56
- package/datepicker/monthpicker.component.js.map +0 -1
- package/datepicker/monthpicker.component.metadata.json +0 -1
- package/datepicker/monthpicker.component.ngfactory.js.map +0 -1
- package/datepicker/reducer/_defaults.js +0 -5
- package/datepicker/reducer/_defaults.js.map +0 -1
- package/datepicker/reducer/_defaults.metadata.json +0 -1
- package/datepicker/reducer/bs-datepicker.actions.js +0 -104
- package/datepicker/reducer/bs-datepicker.actions.js.map +0 -1
- package/datepicker/reducer/bs-datepicker.actions.metadata.json +0 -1
- package/datepicker/reducer/bs-datepicker.actions.ngfactory.js.map +0 -1
- package/datepicker/reducer/bs-datepicker.effects.js +0 -179
- package/datepicker/reducer/bs-datepicker.effects.js.map +0 -1
- package/datepicker/reducer/bs-datepicker.effects.metadata.json +0 -1
- package/datepicker/reducer/bs-datepicker.effects.ngfactory.js.map +0 -1
- package/datepicker/reducer/bs-datepicker.reducer.js +0 -261
- package/datepicker/reducer/bs-datepicker.reducer.js.map +0 -1
- package/datepicker/reducer/bs-datepicker.reducer.metadata.json +0 -1
- package/datepicker/reducer/bs-datepicker.state.js +0 -16
- package/datepicker/reducer/bs-datepicker.state.js.map +0 -1
- package/datepicker/reducer/bs-datepicker.state.metadata.json +0 -1
- package/datepicker/reducer/bs-datepicker.store.js +0 -36
- package/datepicker/reducer/bs-datepicker.store.js.map +0 -1
- package/datepicker/reducer/bs-datepicker.store.metadata.json +0 -1
- package/datepicker/reducer/bs-datepicker.store.ngfactory.js.map +0 -1
- package/datepicker/themes/bs/bs-calendar-layout.component.js +0 -14
- package/datepicker/themes/bs/bs-calendar-layout.component.js.map +0 -1
- package/datepicker/themes/bs/bs-calendar-layout.component.metadata.json +0 -1
- package/datepicker/themes/bs/bs-calendar-layout.component.ngfactory.js.map +0 -1
- package/datepicker/themes/bs/bs-current-date-view.component.js +0 -18
- package/datepicker/themes/bs/bs-current-date-view.component.js.map +0 -1
- package/datepicker/themes/bs/bs-current-date-view.component.metadata.json +0 -1
- package/datepicker/themes/bs/bs-current-date-view.component.ngfactory.js.map +0 -1
- package/datepicker/themes/bs/bs-custom-dates-view.component.js +0 -20
- package/datepicker/themes/bs/bs-custom-dates-view.component.js.map +0 -1
- package/datepicker/themes/bs/bs-custom-dates-view.component.metadata.json +0 -1
- package/datepicker/themes/bs/bs-custom-dates-view.component.ngfactory.js.map +0 -1
- package/datepicker/themes/bs/bs-datepicker-container.component.js +0 -87
- package/datepicker/themes/bs/bs-datepicker-container.component.js.map +0 -1
- package/datepicker/themes/bs/bs-datepicker-container.component.metadata.json +0 -1
- package/datepicker/themes/bs/bs-datepicker-container.component.ngfactory.js.map +0 -1
- package/datepicker/themes/bs/bs-datepicker-day-decorator.directive.js +0 -28
- package/datepicker/themes/bs/bs-datepicker-day-decorator.directive.js.map +0 -1
- package/datepicker/themes/bs/bs-datepicker-day-decorator.directive.metadata.json +0 -1
- package/datepicker/themes/bs/bs-datepicker-day-decorator.directive.ngfactory.js.map +0 -1
- package/datepicker/themes/bs/bs-datepicker-navigation-view.component.js +0 -30
- package/datepicker/themes/bs/bs-datepicker-navigation-view.component.js.map +0 -1
- package/datepicker/themes/bs/bs-datepicker-navigation-view.component.metadata.json +0 -1
- package/datepicker/themes/bs/bs-datepicker-navigation-view.component.ngfactory.js.map +0 -1
- package/datepicker/themes/bs/bs-datepicker-view.html +0 -61
- package/datepicker/themes/bs/bs-daterangepicker-container.component.js +0 -105
- package/datepicker/themes/bs/bs-daterangepicker-container.component.js.map +0 -1
- package/datepicker/themes/bs/bs-daterangepicker-container.component.metadata.json +0 -1
- package/datepicker/themes/bs/bs-daterangepicker-container.component.ngfactory.js.map +0 -1
- package/datepicker/themes/bs/bs-days-calendar-view.component.js +0 -42
- package/datepicker/themes/bs/bs-days-calendar-view.component.js.map +0 -1
- package/datepicker/themes/bs/bs-days-calendar-view.component.metadata.json +0 -1
- package/datepicker/themes/bs/bs-days-calendar-view.component.ngfactory.js.map +0 -1
- package/datepicker/themes/bs/bs-months-calendar-view.component.js +0 -40
- package/datepicker/themes/bs/bs-months-calendar-view.component.js.map +0 -1
- package/datepicker/themes/bs/bs-months-calendar-view.component.metadata.json +0 -1
- package/datepicker/themes/bs/bs-months-calendar-view.component.ngfactory.js.map +0 -1
- package/datepicker/themes/bs/bs-timepicker-view.component.js +0 -17
- package/datepicker/themes/bs/bs-timepicker-view.component.js.map +0 -1
- package/datepicker/themes/bs/bs-timepicker-view.component.metadata.json +0 -1
- package/datepicker/themes/bs/bs-timepicker-view.component.ngfactory.js.map +0 -1
- package/datepicker/themes/bs/bs-years-calendar-view.component.js +0 -41
- package/datepicker/themes/bs/bs-years-calendar-view.component.js.map +0 -1
- package/datepicker/themes/bs/bs-years-calendar-view.component.metadata.json +0 -1
- package/datepicker/themes/bs/bs-years-calendar-view.component.ngfactory.js.map +0 -1
- package/datepicker/utils/bs-calendar-utils.js +0 -30
- package/datepicker/utils/bs-calendar-utils.js.map +0 -1
- package/datepicker/utils/bs-calendar-utils.metadata.json +0 -1
- package/datepicker/utils/matrix-utils.js +0 -14
- package/datepicker/utils/matrix-utils.js.map +0 -1
- package/datepicker/utils/matrix-utils.metadata.json +0 -1
- package/datepicker/yearpicker.component.js +0 -57
- package/datepicker/yearpicker.component.js.map +0 -1
- package/datepicker/yearpicker.component.metadata.json +0 -1
- package/datepicker/yearpicker.component.ngfactory.js.map +0 -1
- package/dropdown/bs-dropdown-container.component.js +0 -59
- package/dropdown/bs-dropdown-container.component.js.map +0 -1
- package/dropdown/bs-dropdown-container.component.metadata.json +0 -1
- package/dropdown/bs-dropdown-container.component.ngfactory.js.map +0 -1
- package/dropdown/bs-dropdown-menu.directive.js +0 -25
- package/dropdown/bs-dropdown-menu.directive.js.map +0 -1
- package/dropdown/bs-dropdown-menu.directive.metadata.json +0 -1
- package/dropdown/bs-dropdown-menu.directive.ngfactory.js.map +0 -1
- package/dropdown/bs-dropdown-toggle.directive.js +0 -63
- package/dropdown/bs-dropdown-toggle.directive.js.map +0 -1
- package/dropdown/bs-dropdown-toggle.directive.metadata.json +0 -1
- package/dropdown/bs-dropdown-toggle.directive.ngfactory.js.map +0 -1
- package/dropdown/bs-dropdown.config.js +0 -14
- package/dropdown/bs-dropdown.config.js.map +0 -1
- package/dropdown/bs-dropdown.config.metadata.json +0 -1
- package/dropdown/bs-dropdown.config.ngfactory.js.map +0 -1
- package/dropdown/bs-dropdown.directive.js +0 -300
- package/dropdown/bs-dropdown.directive.js.map +0 -1
- package/dropdown/bs-dropdown.directive.metadata.json +0 -1
- package/dropdown/bs-dropdown.directive.ngfactory.js.map +0 -1
- package/dropdown/bs-dropdown.module.js +0 -46
- package/dropdown/bs-dropdown.module.js.map +0 -1
- package/dropdown/bs-dropdown.module.metadata.json +0 -1
- package/dropdown/bs-dropdown.module.ngfactory.js.map +0 -1
- package/dropdown/bs-dropdown.state.js +0 -21
- package/dropdown/bs-dropdown.state.js.map +0 -1
- package/dropdown/bs-dropdown.state.metadata.json +0 -1
- package/dropdown/bs-dropdown.state.ngfactory.js.map +0 -1
- package/dropdown/index.js +0 -8
- package/dropdown/index.js.map +0 -1
- package/dropdown/index.metadata.json +0 -1
- package/index.d.ts +0 -24
- package/index.js +0 -25
- package/index.js.map +0 -1
- package/index.metadata.json +0 -1
- package/locale.d.ts +0 -30
- package/locale.js +0 -31
- package/locale.js.map +0 -1
- package/locale.metadata.json +0 -1
- package/mini-ngrx/LICENCE +0 -21
- package/mini-ngrx/index.js +0 -3
- package/mini-ngrx/index.js.map +0 -1
- package/mini-ngrx/index.metadata.json +0 -1
- package/mini-ngrx/state.class.js +0 -30
- package/mini-ngrx/state.class.js.map +0 -1
- package/mini-ngrx/state.class.metadata.json +0 -1
- package/mini-ngrx/store.class.js +0 -46
- package/mini-ngrx/store.class.js.map +0 -1
- package/mini-ngrx/store.class.metadata.json +0 -1
- package/modal/bs-modal-ref.service.js +0 -15
- package/modal/bs-modal-ref.service.js.map +0 -1
- package/modal/bs-modal-ref.service.metadata.json +0 -1
- package/modal/bs-modal-ref.service.ngfactory.js.map +0 -1
- package/modal/bs-modal.service.js +0 -174
- package/modal/bs-modal.service.js.map +0 -1
- package/modal/bs-modal.service.metadata.json +0 -1
- package/modal/bs-modal.service.ngfactory.js.map +0 -1
- package/modal/index.js +0 -9
- package/modal/index.js.map +0 -1
- package/modal/index.metadata.json +0 -1
- package/modal/modal-backdrop.component.js +0 -69
- package/modal/modal-backdrop.component.js.map +0 -1
- package/modal/modal-backdrop.component.metadata.json +0 -1
- package/modal/modal-backdrop.component.ngfactory.js.map +0 -1
- package/modal/modal-backdrop.options.js +0 -9
- package/modal/modal-backdrop.options.js.map +0 -1
- package/modal/modal-backdrop.options.metadata.json +0 -1
- package/modal/modal-container.component.js +0 -103
- package/modal/modal-container.component.js.map +0 -1
- package/modal/modal-container.component.metadata.json +0 -1
- package/modal/modal-container.component.ngfactory.js.map +0 -1
- package/modal/modal-options.class.js +0 -44
- package/modal/modal-options.class.js.map +0 -1
- package/modal/modal-options.class.metadata.json +0 -1
- package/modal/modal-options.class.ngfactory.js.map +0 -1
- package/modal/modal.directive.js +0 -436
- package/modal/modal.directive.js.map +0 -1
- package/modal/modal.directive.metadata.json +0 -1
- package/modal/modal.directive.ngfactory.js.map +0 -1
- package/modal/modal.module.js +0 -31
- package/modal/modal.module.js.map +0 -1
- package/modal/modal.module.metadata.json +0 -1
- package/modal/modal.module.ngfactory.js.map +0 -1
- package/pagination/index.js +0 -5
- package/pagination/index.js.map +0 -1
- package/pagination/index.metadata.json +0 -1
- package/pagination/pager.component.html +0 -12
- package/pagination/pager.component.js +0 -249
- package/pagination/pager.component.js.map +0 -1
- package/pagination/pager.component.metadata.json +0 -1
- package/pagination/pager.component.ngfactory.js.map +0 -1
- package/pagination/pagination.component.html +0 -35
- package/pagination/pagination.component.js +0 -249
- package/pagination/pagination.component.js.map +0 -1
- package/pagination/pagination.component.metadata.json +0 -1
- package/pagination/pagination.component.ngfactory.js.map +0 -1
- package/pagination/pagination.config.js +0 -31
- package/pagination/pagination.config.js.map +0 -1
- package/pagination/pagination.config.metadata.json +0 -1
- package/pagination/pagination.config.ngfactory.js.map +0 -1
- package/pagination/pagination.module.js +0 -22
- package/pagination/pagination.module.js.map +0 -1
- package/pagination/pagination.module.metadata.json +0 -1
- package/pagination/pagination.module.ngfactory.js.map +0 -1
- package/popover/index.js +0 -5
- package/popover/index.js.map +0 -1
- package/popover/index.metadata.json +0 -1
- package/popover/popover-container.component.html +0 -5
- package/popover/popover-container.component.js +0 -43
- package/popover/popover-container.component.js.map +0 -1
- package/popover/popover-container.component.metadata.json +0 -1
- package/popover/popover-container.component.ngfactory.js.map +0 -1
- package/popover/popover.config.js +0 -27
- package/popover/popover.config.js.map +0 -1
- package/popover/popover.config.metadata.json +0 -1
- package/popover/popover.config.ngfactory.js.map +0 -1
- package/popover/popover.directive.js +0 -165
- package/popover/popover.directive.js.map +0 -1
- package/popover/popover.directive.metadata.json +0 -1
- package/popover/popover.directive.ngfactory.js.map +0 -1
- package/popover/popover.module.js +0 -28
- package/popover/popover.module.js.map +0 -1
- package/popover/popover.module.metadata.json +0 -1
- package/popover/popover.module.ngfactory.js.map +0 -1
- package/positioning/index.js +0 -3
- package/positioning/index.js.map +0 -1
- package/positioning/index.metadata.json +0 -1
- package/positioning/ng-positioning.js +0 -216
- package/positioning/ng-positioning.js.map +0 -1
- package/positioning/ng-positioning.metadata.json +0 -1
- package/positioning/positioning.service.js +0 -26
- package/positioning/positioning.service.js.map +0 -1
- package/positioning/positioning.service.metadata.json +0 -1
- package/positioning/positioning.service.ngfactory.js.map +0 -1
- package/progressbar/bar.component.html +0 -1
- package/progressbar/bar.component.js +0 -87
- package/progressbar/bar.component.js.map +0 -1
- package/progressbar/bar.component.metadata.json +0 -1
- package/progressbar/bar.component.ngfactory.js.map +0 -1
- package/progressbar/index.js +0 -5
- package/progressbar/index.js.map +0 -1
- package/progressbar/index.metadata.json +0 -1
- package/progressbar/progressbar.component.html +0 -6
- package/progressbar/progressbar.component.js +0 -76
- package/progressbar/progressbar.component.js.map +0 -1
- package/progressbar/progressbar.component.metadata.json +0 -1
- package/progressbar/progressbar.component.ngfactory.js.map +0 -1
- package/progressbar/progressbar.config.js +0 -15
- package/progressbar/progressbar.config.js.map +0 -1
- package/progressbar/progressbar.config.metadata.json +0 -1
- package/progressbar/progressbar.config.ngfactory.js.map +0 -1
- package/progressbar/progressbar.module.js +0 -22
- package/progressbar/progressbar.module.js.map +0 -1
- package/progressbar/progressbar.module.metadata.json +0 -1
- package/progressbar/progressbar.module.ngfactory.js.map +0 -1
- package/rating/index.js +0 -3
- package/rating/index.js.map +0 -1
- package/rating/index.metadata.json +0 -1
- package/rating/rating.component.html +0 -18
- package/rating/rating.component.js +0 -111
- package/rating/rating.component.js.map +0 -1
- package/rating/rating.component.metadata.json +0 -1
- package/rating/rating.component.ngfactory.js.map +0 -1
- package/rating/rating.module.js +0 -23
- package/rating/rating.module.js.map +0 -1
- package/rating/rating.module.metadata.json +0 -1
- package/rating/rating.module.ngfactory.js.map +0 -1
- package/sortable/draggable-item.js +0 -1
- package/sortable/draggable-item.js.map +0 -1
- package/sortable/draggable-item.metadata.json +0 -1
- package/sortable/draggable-item.service.js +0 -34
- package/sortable/draggable-item.service.js.map +0 -1
- package/sortable/draggable-item.service.metadata.json +0 -1
- package/sortable/draggable-item.service.ngfactory.js.map +0 -1
- package/sortable/index.js +0 -4
- package/sortable/index.js.map +0 -1
- package/sortable/index.metadata.json +0 -1
- package/sortable/sortable.component.js +0 -186
- package/sortable/sortable.component.js.map +0 -1
- package/sortable/sortable.component.metadata.json +0 -1
- package/sortable/sortable.component.ngfactory.js.map +0 -1
- package/sortable/sortable.module.js +0 -21
- package/sortable/sortable.module.js.map +0 -1
- package/sortable/sortable.module.metadata.json +0 -1
- package/sortable/sortable.module.ngfactory.js.map +0 -1
- package/spec/ng-bootstrap/license +0 -23
- package/tabs/index.js +0 -7
- package/tabs/index.js.map +0 -1
- package/tabs/index.metadata.json +0 -1
- package/tabs/ng-transclude.directive.js +0 -34
- package/tabs/ng-transclude.directive.js.map +0 -1
- package/tabs/ng-transclude.directive.metadata.json +0 -1
- package/tabs/ng-transclude.directive.ngfactory.js.map +0 -1
- package/tabs/tab-heading.directive.js +0 -19
- package/tabs/tab-heading.directive.js.map +0 -1
- package/tabs/tab-heading.directive.metadata.json +0 -1
- package/tabs/tab-heading.directive.ngfactory.js.map +0 -1
- package/tabs/tab.directive.js +0 -97
- package/tabs/tab.directive.js.map +0 -1
- package/tabs/tab.directive.metadata.json +0 -1
- package/tabs/tab.directive.ngfactory.js.map +0 -1
- package/tabs/tabs.module.js +0 -37
- package/tabs/tabs.module.js.map +0 -1
- package/tabs/tabs.module.metadata.json +0 -1
- package/tabs/tabs.module.ngfactory.js.map +0 -1
- package/tabs/tabset.component.html +0 -15
- package/tabs/tabset.component.js +0 -134
- package/tabs/tabset.component.js.map +0 -1
- package/tabs/tabset.component.metadata.json +0 -1
- package/tabs/tabset.component.ngfactory.js.map +0 -1
- package/tabs/tabset.config.js +0 -13
- package/tabs/tabset.config.js.map +0 -1
- package/tabs/tabset.config.metadata.json +0 -1
- package/tabs/tabset.config.ngfactory.js.map +0 -1
- package/timepicker/index.js +0 -6
- package/timepicker/index.js.map +0 -1
- package/timepicker/index.metadata.json +0 -1
- package/timepicker/reducer/timepicker.actions.js +0 -53
- package/timepicker/reducer/timepicker.actions.js.map +0 -1
- package/timepicker/reducer/timepicker.actions.metadata.json +0 -1
- package/timepicker/reducer/timepicker.actions.ngfactory.js.map +0 -1
- package/timepicker/reducer/timepicker.reducer.js +0 -90
- package/timepicker/reducer/timepicker.reducer.js.map +0 -1
- package/timepicker/reducer/timepicker.reducer.metadata.json +0 -1
- package/timepicker/reducer/timepicker.store.js +0 -34
- package/timepicker/reducer/timepicker.store.js.map +0 -1
- package/timepicker/reducer/timepicker.store.metadata.json +0 -1
- package/timepicker/reducer/timepicker.store.ngfactory.js.map +0 -1
- package/timepicker/timepicker-controls.util.js +0 -122
- package/timepicker/timepicker-controls.util.js.map +0 -1
- package/timepicker/timepicker-controls.util.metadata.json +0 -1
- package/timepicker/timepicker.component.html +0 -122
- package/timepicker/timepicker.component.js +0 -288
- package/timepicker/timepicker.component.js.map +0 -1
- package/timepicker/timepicker.component.metadata.json +0 -1
- package/timepicker/timepicker.component.ngfactory.js.map +0 -1
- package/timepicker/timepicker.config.js +0 -36
- package/timepicker/timepicker.config.js.map +0 -1
- package/timepicker/timepicker.config.metadata.json +0 -1
- package/timepicker/timepicker.config.ngfactory.js.map +0 -1
- package/timepicker/timepicker.models.js +0 -1
- package/timepicker/timepicker.models.js.map +0 -1
- package/timepicker/timepicker.models.metadata.json +0 -1
- package/timepicker/timepicker.module.js +0 -26
- package/timepicker/timepicker.module.js.map +0 -1
- package/timepicker/timepicker.module.metadata.json +0 -1
- package/timepicker/timepicker.module.ngfactory.js.map +0 -1
- package/timepicker/timepicker.utils.js +0 -141
- package/timepicker/timepicker.utils.js.map +0 -1
- package/timepicker/timepicker.utils.metadata.json +0 -1
- package/tooltip/index.js +0 -5
- package/tooltip/index.js.map +0 -1
- package/tooltip/index.metadata.json +0 -1
- package/tooltip/tooltip-container.component.js +0 -50
- package/tooltip/tooltip-container.component.js.map +0 -1
- package/tooltip/tooltip-container.component.metadata.json +0 -1
- package/tooltip/tooltip-container.component.ngfactory.js.map +0 -1
- package/tooltip/tooltip.config.js +0 -16
- package/tooltip/tooltip.config.js.map +0 -1
- package/tooltip/tooltip.config.metadata.json +0 -1
- package/tooltip/tooltip.config.ngfactory.js.map +0 -1
- package/tooltip/tooltip.directive.js +0 -315
- package/tooltip/tooltip.directive.js.map +0 -1
- package/tooltip/tooltip.directive.metadata.json +0 -1
- package/tooltip/tooltip.directive.ngfactory.js.map +0 -1
- package/tooltip/tooltip.module.js +0 -28
- package/tooltip/tooltip.module.js.map +0 -1
- package/tooltip/tooltip.module.metadata.json +0 -1
- package/tooltip/tooltip.module.ngfactory.js.map +0 -1
- package/tsconfig.spec.json +0 -41
- package/typeahead/index.d.ts +0 -7
- package/typeahead/index.js +0 -8
- package/typeahead/index.js.map +0 -1
- package/typeahead/index.metadata.json +0 -1
- package/typeahead/latin-map.js +0 -828
- package/typeahead/latin-map.js.map +0 -1
- package/typeahead/latin-map.metadata.json +0 -1
- package/typeahead/typeahead-container.component.html +0 -42
- package/typeahead/typeahead-container.component.js +0 -240
- package/typeahead/typeahead-container.component.js.map +0 -1
- package/typeahead/typeahead-container.component.metadata.json +0 -1
- package/typeahead/typeahead-container.component.ngfactory.js.map +0 -1
- package/typeahead/typeahead-match.class.js +0 -18
- package/typeahead/typeahead-match.class.js.map +0 -1
- package/typeahead/typeahead-match.class.metadata.json +0 -1
- package/typeahead/typeahead-options.class.js +0 -8
- package/typeahead/typeahead-options.class.js.map +0 -1
- package/typeahead/typeahead-options.class.metadata.json +0 -1
- package/typeahead/typeahead-utils.js +0 -60
- package/typeahead/typeahead-utils.js.map +0 -1
- package/typeahead/typeahead-utils.metadata.json +0 -1
- package/typeahead/typeahead.directive.js +0 -383
- package/typeahead/typeahead.directive.js.map +0 -1
- package/typeahead/typeahead.directive.metadata.json +0 -1
- package/typeahead/typeahead.directive.ngfactory.js.map +0 -1
- package/typeahead/typeahead.module.js +0 -27
- package/typeahead/typeahead.module.js.map +0 -1
- package/typeahead/typeahead.module.metadata.json +0 -1
- package/typeahead/typeahead.module.ngfactory.js.map +0 -1
- package/utils/decorators.js +0 -21
- package/utils/decorators.js.map +0 -1
- package/utils/decorators.metadata.json +0 -1
- package/utils/facade/browser.js +0 -25
- package/utils/facade/browser.js.map +0 -1
- package/utils/facade/browser.metadata.json +0 -1
- package/utils/index.d.ts +0 -6
- package/utils/index.js +0 -7
- package/utils/index.js.map +0 -1
- package/utils/index.metadata.json +0 -1
- package/utils/linked-list.class.js +0 -244
- package/utils/linked-list.class.js.map +0 -1
- package/utils/linked-list.class.metadata.json +0 -1
- package/utils/theme-provider.js +0 -35
- package/utils/theme-provider.js.map +0 -1
- package/utils/theme-provider.metadata.json +0 -1
- package/utils/trigger.class.js +0 -16
- package/utils/trigger.class.js.map +0 -1
- package/utils/trigger.class.metadata.json +0 -1
- package/utils/triggers.js +0 -94
- package/utils/triggers.js.map +0 -1
- package/utils/triggers.metadata.json +0 -1
- package/utils/utils.class.js +0 -25
- package/utils/utils.class.js.map +0 -1
- package/utils/utils.class.metadata.json +0 -1
- package/utils/warn-once.js +0 -12
- package/utils/warn-once.js.map +0 -1
- package/utils/warn-once.metadata.json +0 -1
@@ -0,0 +1,2029 @@
|
|
1
|
+
(function (global, factory) {
|
2
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('ngx-bootstrap/utils'), require('@angular/forms'), require('rxjs'), require('ngx-bootstrap/component-loader'), require('rxjs/operators'), require('@angular/common'), require('ngx-bootstrap/positioning')) :
|
3
|
+
typeof define === 'function' && define.amd ? define('ngx-bootstrap/typeahead', ['exports', '@angular/core', 'ngx-bootstrap/utils', '@angular/forms', 'rxjs', 'ngx-bootstrap/component-loader', 'rxjs/operators', '@angular/common', 'ngx-bootstrap/positioning'], factory) :
|
4
|
+
(factory((global['ngx-bootstrap'] = global['ngx-bootstrap'] || {}, global['ngx-bootstrap'].typeahead = {}),global.ng.core,global.utils,global.ng.forms,global.rxjs,global.componentLoader,global.rxjs.operators,global.ng.common,global.positioning));
|
5
|
+
}(this, (function (exports,core,utils,forms,rxjs,componentLoader,operators,common,positioning) { 'use strict';
|
6
|
+
|
7
|
+
/**
|
8
|
+
* @fileoverview added by tsickle
|
9
|
+
* @suppress {checkTypes} checked by tsc
|
10
|
+
*/
|
11
|
+
/* tslint:disable */
|
12
|
+
var /** @type {?} */ latinMap = {
|
13
|
+
'Á': 'A',
|
14
|
+
'Ă': 'A',
|
15
|
+
'Ắ': 'A',
|
16
|
+
'Ặ': 'A',
|
17
|
+
'Ằ': 'A',
|
18
|
+
'Ẳ': 'A',
|
19
|
+
'Ẵ': 'A',
|
20
|
+
'Ǎ': 'A',
|
21
|
+
'Â': 'A',
|
22
|
+
'Ấ': 'A',
|
23
|
+
'Ậ': 'A',
|
24
|
+
'Ầ': 'A',
|
25
|
+
'Ẩ': 'A',
|
26
|
+
'Ẫ': 'A',
|
27
|
+
'Ä': 'A',
|
28
|
+
'Ǟ': 'A',
|
29
|
+
'Ȧ': 'A',
|
30
|
+
'Ǡ': 'A',
|
31
|
+
'Ạ': 'A',
|
32
|
+
'Ȁ': 'A',
|
33
|
+
'À': 'A',
|
34
|
+
'Ả': 'A',
|
35
|
+
'Ȃ': 'A',
|
36
|
+
'Ā': 'A',
|
37
|
+
'Ą': 'A',
|
38
|
+
'Å': 'A',
|
39
|
+
'Ǻ': 'A',
|
40
|
+
'Ḁ': 'A',
|
41
|
+
'Ⱥ': 'A',
|
42
|
+
'Ã': 'A',
|
43
|
+
'Ꜳ': 'AA',
|
44
|
+
'Æ': 'AE',
|
45
|
+
'Ǽ': 'AE',
|
46
|
+
'Ǣ': 'AE',
|
47
|
+
'Ꜵ': 'AO',
|
48
|
+
'Ꜷ': 'AU',
|
49
|
+
'Ꜹ': 'AV',
|
50
|
+
'Ꜻ': 'AV',
|
51
|
+
'Ꜽ': 'AY',
|
52
|
+
'Ḃ': 'B',
|
53
|
+
'Ḅ': 'B',
|
54
|
+
'Ɓ': 'B',
|
55
|
+
'Ḇ': 'B',
|
56
|
+
'Ƀ': 'B',
|
57
|
+
'Ƃ': 'B',
|
58
|
+
'Ć': 'C',
|
59
|
+
'Č': 'C',
|
60
|
+
'Ç': 'C',
|
61
|
+
'Ḉ': 'C',
|
62
|
+
'Ĉ': 'C',
|
63
|
+
'Ċ': 'C',
|
64
|
+
'Ƈ': 'C',
|
65
|
+
'Ȼ': 'C',
|
66
|
+
'Ď': 'D',
|
67
|
+
'Ḑ': 'D',
|
68
|
+
'Ḓ': 'D',
|
69
|
+
'Ḋ': 'D',
|
70
|
+
'Ḍ': 'D',
|
71
|
+
'Ɗ': 'D',
|
72
|
+
'Ḏ': 'D',
|
73
|
+
'Dz': 'D',
|
74
|
+
'Dž': 'D',
|
75
|
+
'Đ': 'D',
|
76
|
+
'Ƌ': 'D',
|
77
|
+
'DZ': 'DZ',
|
78
|
+
'DŽ': 'DZ',
|
79
|
+
'É': 'E',
|
80
|
+
'Ĕ': 'E',
|
81
|
+
'Ě': 'E',
|
82
|
+
'Ȩ': 'E',
|
83
|
+
'Ḝ': 'E',
|
84
|
+
'Ê': 'E',
|
85
|
+
'Ế': 'E',
|
86
|
+
'Ệ': 'E',
|
87
|
+
'Ề': 'E',
|
88
|
+
'Ể': 'E',
|
89
|
+
'Ễ': 'E',
|
90
|
+
'Ḙ': 'E',
|
91
|
+
'Ë': 'E',
|
92
|
+
'Ė': 'E',
|
93
|
+
'Ẹ': 'E',
|
94
|
+
'Ȅ': 'E',
|
95
|
+
'È': 'E',
|
96
|
+
'Ẻ': 'E',
|
97
|
+
'Ȇ': 'E',
|
98
|
+
'Ē': 'E',
|
99
|
+
'Ḗ': 'E',
|
100
|
+
'Ḕ': 'E',
|
101
|
+
'Ę': 'E',
|
102
|
+
'Ɇ': 'E',
|
103
|
+
'Ẽ': 'E',
|
104
|
+
'Ḛ': 'E',
|
105
|
+
'Ꝫ': 'ET',
|
106
|
+
'Ḟ': 'F',
|
107
|
+
'Ƒ': 'F',
|
108
|
+
'Ǵ': 'G',
|
109
|
+
'Ğ': 'G',
|
110
|
+
'Ǧ': 'G',
|
111
|
+
'Ģ': 'G',
|
112
|
+
'Ĝ': 'G',
|
113
|
+
'Ġ': 'G',
|
114
|
+
'Ɠ': 'G',
|
115
|
+
'Ḡ': 'G',
|
116
|
+
'Ǥ': 'G',
|
117
|
+
'Ḫ': 'H',
|
118
|
+
'Ȟ': 'H',
|
119
|
+
'Ḩ': 'H',
|
120
|
+
'Ĥ': 'H',
|
121
|
+
'Ⱨ': 'H',
|
122
|
+
'Ḧ': 'H',
|
123
|
+
'Ḣ': 'H',
|
124
|
+
'Ḥ': 'H',
|
125
|
+
'Ħ': 'H',
|
126
|
+
'Í': 'I',
|
127
|
+
'Ĭ': 'I',
|
128
|
+
'Ǐ': 'I',
|
129
|
+
'Î': 'I',
|
130
|
+
'Ï': 'I',
|
131
|
+
'Ḯ': 'I',
|
132
|
+
'İ': 'I',
|
133
|
+
'Ị': 'I',
|
134
|
+
'Ȉ': 'I',
|
135
|
+
'Ì': 'I',
|
136
|
+
'Ỉ': 'I',
|
137
|
+
'Ȋ': 'I',
|
138
|
+
'Ī': 'I',
|
139
|
+
'Į': 'I',
|
140
|
+
'Ɨ': 'I',
|
141
|
+
'Ĩ': 'I',
|
142
|
+
'Ḭ': 'I',
|
143
|
+
'Ꝺ': 'D',
|
144
|
+
'Ꝼ': 'F',
|
145
|
+
'Ᵹ': 'G',
|
146
|
+
'Ꞃ': 'R',
|
147
|
+
'Ꞅ': 'S',
|
148
|
+
'Ꞇ': 'T',
|
149
|
+
'Ꝭ': 'IS',
|
150
|
+
'Ĵ': 'J',
|
151
|
+
'Ɉ': 'J',
|
152
|
+
'Ḱ': 'K',
|
153
|
+
'Ǩ': 'K',
|
154
|
+
'Ķ': 'K',
|
155
|
+
'Ⱪ': 'K',
|
156
|
+
'Ꝃ': 'K',
|
157
|
+
'Ḳ': 'K',
|
158
|
+
'Ƙ': 'K',
|
159
|
+
'Ḵ': 'K',
|
160
|
+
'Ꝁ': 'K',
|
161
|
+
'Ꝅ': 'K',
|
162
|
+
'Ĺ': 'L',
|
163
|
+
'Ƚ': 'L',
|
164
|
+
'Ľ': 'L',
|
165
|
+
'Ļ': 'L',
|
166
|
+
'Ḽ': 'L',
|
167
|
+
'Ḷ': 'L',
|
168
|
+
'Ḹ': 'L',
|
169
|
+
'Ⱡ': 'L',
|
170
|
+
'Ꝉ': 'L',
|
171
|
+
'Ḻ': 'L',
|
172
|
+
'Ŀ': 'L',
|
173
|
+
'Ɫ': 'L',
|
174
|
+
'Lj': 'L',
|
175
|
+
'Ł': 'L',
|
176
|
+
'LJ': 'LJ',
|
177
|
+
'Ḿ': 'M',
|
178
|
+
'Ṁ': 'M',
|
179
|
+
'Ṃ': 'M',
|
180
|
+
'Ɱ': 'M',
|
181
|
+
'Ń': 'N',
|
182
|
+
'Ň': 'N',
|
183
|
+
'Ņ': 'N',
|
184
|
+
'Ṋ': 'N',
|
185
|
+
'Ṅ': 'N',
|
186
|
+
'Ṇ': 'N',
|
187
|
+
'Ǹ': 'N',
|
188
|
+
'Ɲ': 'N',
|
189
|
+
'Ṉ': 'N',
|
190
|
+
'Ƞ': 'N',
|
191
|
+
'Nj': 'N',
|
192
|
+
'Ñ': 'N',
|
193
|
+
'NJ': 'NJ',
|
194
|
+
'Ó': 'O',
|
195
|
+
'Ŏ': 'O',
|
196
|
+
'Ǒ': 'O',
|
197
|
+
'Ô': 'O',
|
198
|
+
'Ố': 'O',
|
199
|
+
'Ộ': 'O',
|
200
|
+
'Ồ': 'O',
|
201
|
+
'Ổ': 'O',
|
202
|
+
'Ỗ': 'O',
|
203
|
+
'Ö': 'O',
|
204
|
+
'Ȫ': 'O',
|
205
|
+
'Ȯ': 'O',
|
206
|
+
'Ȱ': 'O',
|
207
|
+
'Ọ': 'O',
|
208
|
+
'Ő': 'O',
|
209
|
+
'Ȍ': 'O',
|
210
|
+
'Ò': 'O',
|
211
|
+
'Ỏ': 'O',
|
212
|
+
'Ơ': 'O',
|
213
|
+
'Ớ': 'O',
|
214
|
+
'Ợ': 'O',
|
215
|
+
'Ờ': 'O',
|
216
|
+
'Ở': 'O',
|
217
|
+
'Ỡ': 'O',
|
218
|
+
'Ȏ': 'O',
|
219
|
+
'Ꝋ': 'O',
|
220
|
+
'Ꝍ': 'O',
|
221
|
+
'Ō': 'O',
|
222
|
+
'Ṓ': 'O',
|
223
|
+
'Ṑ': 'O',
|
224
|
+
'Ɵ': 'O',
|
225
|
+
'Ǫ': 'O',
|
226
|
+
'Ǭ': 'O',
|
227
|
+
'Ø': 'O',
|
228
|
+
'Ǿ': 'O',
|
229
|
+
'Õ': 'O',
|
230
|
+
'Ṍ': 'O',
|
231
|
+
'Ṏ': 'O',
|
232
|
+
'Ȭ': 'O',
|
233
|
+
'Ƣ': 'OI',
|
234
|
+
'Ꝏ': 'OO',
|
235
|
+
'Ɛ': 'E',
|
236
|
+
'Ɔ': 'O',
|
237
|
+
'Ȣ': 'OU',
|
238
|
+
'Ṕ': 'P',
|
239
|
+
'Ṗ': 'P',
|
240
|
+
'Ꝓ': 'P',
|
241
|
+
'Ƥ': 'P',
|
242
|
+
'Ꝕ': 'P',
|
243
|
+
'Ᵽ': 'P',
|
244
|
+
'Ꝑ': 'P',
|
245
|
+
'Ꝙ': 'Q',
|
246
|
+
'Ꝗ': 'Q',
|
247
|
+
'Ŕ': 'R',
|
248
|
+
'Ř': 'R',
|
249
|
+
'Ŗ': 'R',
|
250
|
+
'Ṙ': 'R',
|
251
|
+
'Ṛ': 'R',
|
252
|
+
'Ṝ': 'R',
|
253
|
+
'Ȑ': 'R',
|
254
|
+
'Ȓ': 'R',
|
255
|
+
'Ṟ': 'R',
|
256
|
+
'Ɍ': 'R',
|
257
|
+
'Ɽ': 'R',
|
258
|
+
'Ꜿ': 'C',
|
259
|
+
'Ǝ': 'E',
|
260
|
+
'Ś': 'S',
|
261
|
+
'Ṥ': 'S',
|
262
|
+
'Š': 'S',
|
263
|
+
'Ṧ': 'S',
|
264
|
+
'Ş': 'S',
|
265
|
+
'Ŝ': 'S',
|
266
|
+
'Ș': 'S',
|
267
|
+
'Ṡ': 'S',
|
268
|
+
'Ṣ': 'S',
|
269
|
+
'Ṩ': 'S',
|
270
|
+
'Ť': 'T',
|
271
|
+
'Ţ': 'T',
|
272
|
+
'Ṱ': 'T',
|
273
|
+
'Ț': 'T',
|
274
|
+
'Ⱦ': 'T',
|
275
|
+
'Ṫ': 'T',
|
276
|
+
'Ṭ': 'T',
|
277
|
+
'Ƭ': 'T',
|
278
|
+
'Ṯ': 'T',
|
279
|
+
'Ʈ': 'T',
|
280
|
+
'Ŧ': 'T',
|
281
|
+
'Ɐ': 'A',
|
282
|
+
'Ꞁ': 'L',
|
283
|
+
'Ɯ': 'M',
|
284
|
+
'Ʌ': 'V',
|
285
|
+
'Ꜩ': 'TZ',
|
286
|
+
'Ú': 'U',
|
287
|
+
'Ŭ': 'U',
|
288
|
+
'Ǔ': 'U',
|
289
|
+
'Û': 'U',
|
290
|
+
'Ṷ': 'U',
|
291
|
+
'Ü': 'U',
|
292
|
+
'Ǘ': 'U',
|
293
|
+
'Ǚ': 'U',
|
294
|
+
'Ǜ': 'U',
|
295
|
+
'Ǖ': 'U',
|
296
|
+
'Ṳ': 'U',
|
297
|
+
'Ụ': 'U',
|
298
|
+
'Ű': 'U',
|
299
|
+
'Ȕ': 'U',
|
300
|
+
'Ù': 'U',
|
301
|
+
'Ủ': 'U',
|
302
|
+
'Ư': 'U',
|
303
|
+
'Ứ': 'U',
|
304
|
+
'Ự': 'U',
|
305
|
+
'Ừ': 'U',
|
306
|
+
'Ử': 'U',
|
307
|
+
'Ữ': 'U',
|
308
|
+
'Ȗ': 'U',
|
309
|
+
'Ū': 'U',
|
310
|
+
'Ṻ': 'U',
|
311
|
+
'Ų': 'U',
|
312
|
+
'Ů': 'U',
|
313
|
+
'Ũ': 'U',
|
314
|
+
'Ṹ': 'U',
|
315
|
+
'Ṵ': 'U',
|
316
|
+
'Ꝟ': 'V',
|
317
|
+
'Ṿ': 'V',
|
318
|
+
'Ʋ': 'V',
|
319
|
+
'Ṽ': 'V',
|
320
|
+
'Ꝡ': 'VY',
|
321
|
+
'Ẃ': 'W',
|
322
|
+
'Ŵ': 'W',
|
323
|
+
'Ẅ': 'W',
|
324
|
+
'Ẇ': 'W',
|
325
|
+
'Ẉ': 'W',
|
326
|
+
'Ẁ': 'W',
|
327
|
+
'Ⱳ': 'W',
|
328
|
+
'Ẍ': 'X',
|
329
|
+
'Ẋ': 'X',
|
330
|
+
'Ý': 'Y',
|
331
|
+
'Ŷ': 'Y',
|
332
|
+
'Ÿ': 'Y',
|
333
|
+
'Ẏ': 'Y',
|
334
|
+
'Ỵ': 'Y',
|
335
|
+
'Ỳ': 'Y',
|
336
|
+
'Ƴ': 'Y',
|
337
|
+
'Ỷ': 'Y',
|
338
|
+
'Ỿ': 'Y',
|
339
|
+
'Ȳ': 'Y',
|
340
|
+
'Ɏ': 'Y',
|
341
|
+
'Ỹ': 'Y',
|
342
|
+
'Ź': 'Z',
|
343
|
+
'Ž': 'Z',
|
344
|
+
'Ẑ': 'Z',
|
345
|
+
'Ⱬ': 'Z',
|
346
|
+
'Ż': 'Z',
|
347
|
+
'Ẓ': 'Z',
|
348
|
+
'Ȥ': 'Z',
|
349
|
+
'Ẕ': 'Z',
|
350
|
+
'Ƶ': 'Z',
|
351
|
+
'IJ': 'IJ',
|
352
|
+
'Œ': 'OE',
|
353
|
+
'ᴀ': 'A',
|
354
|
+
'ᴁ': 'AE',
|
355
|
+
'ʙ': 'B',
|
356
|
+
'ᴃ': 'B',
|
357
|
+
'ᴄ': 'C',
|
358
|
+
'ᴅ': 'D',
|
359
|
+
'ᴇ': 'E',
|
360
|
+
'ꜰ': 'F',
|
361
|
+
'ɢ': 'G',
|
362
|
+
'ʛ': 'G',
|
363
|
+
'ʜ': 'H',
|
364
|
+
'ɪ': 'I',
|
365
|
+
'ʁ': 'R',
|
366
|
+
'ᴊ': 'J',
|
367
|
+
'ᴋ': 'K',
|
368
|
+
'ʟ': 'L',
|
369
|
+
'ᴌ': 'L',
|
370
|
+
'ᴍ': 'M',
|
371
|
+
'ɴ': 'N',
|
372
|
+
'ᴏ': 'O',
|
373
|
+
'ɶ': 'OE',
|
374
|
+
'ᴐ': 'O',
|
375
|
+
'ᴕ': 'OU',
|
376
|
+
'ᴘ': 'P',
|
377
|
+
'ʀ': 'R',
|
378
|
+
'ᴎ': 'N',
|
379
|
+
'ᴙ': 'R',
|
380
|
+
'ꜱ': 'S',
|
381
|
+
'ᴛ': 'T',
|
382
|
+
'ⱻ': 'E',
|
383
|
+
'ᴚ': 'R',
|
384
|
+
'ᴜ': 'U',
|
385
|
+
'ᴠ': 'V',
|
386
|
+
'ᴡ': 'W',
|
387
|
+
'ʏ': 'Y',
|
388
|
+
'ᴢ': 'Z',
|
389
|
+
'á': 'a',
|
390
|
+
'ă': 'a',
|
391
|
+
'ắ': 'a',
|
392
|
+
'ặ': 'a',
|
393
|
+
'ằ': 'a',
|
394
|
+
'ẳ': 'a',
|
395
|
+
'ẵ': 'a',
|
396
|
+
'ǎ': 'a',
|
397
|
+
'â': 'a',
|
398
|
+
'ấ': 'a',
|
399
|
+
'ậ': 'a',
|
400
|
+
'ầ': 'a',
|
401
|
+
'ẩ': 'a',
|
402
|
+
'ẫ': 'a',
|
403
|
+
'ä': 'a',
|
404
|
+
'ǟ': 'a',
|
405
|
+
'ȧ': 'a',
|
406
|
+
'ǡ': 'a',
|
407
|
+
'ạ': 'a',
|
408
|
+
'ȁ': 'a',
|
409
|
+
'à': 'a',
|
410
|
+
'ả': 'a',
|
411
|
+
'ȃ': 'a',
|
412
|
+
'ā': 'a',
|
413
|
+
'ą': 'a',
|
414
|
+
'ᶏ': 'a',
|
415
|
+
'ẚ': 'a',
|
416
|
+
'å': 'a',
|
417
|
+
'ǻ': 'a',
|
418
|
+
'ḁ': 'a',
|
419
|
+
'ⱥ': 'a',
|
420
|
+
'ã': 'a',
|
421
|
+
'ꜳ': 'aa',
|
422
|
+
'æ': 'ae',
|
423
|
+
'ǽ': 'ae',
|
424
|
+
'ǣ': 'ae',
|
425
|
+
'ꜵ': 'ao',
|
426
|
+
'ꜷ': 'au',
|
427
|
+
'ꜹ': 'av',
|
428
|
+
'ꜻ': 'av',
|
429
|
+
'ꜽ': 'ay',
|
430
|
+
'ḃ': 'b',
|
431
|
+
'ḅ': 'b',
|
432
|
+
'ɓ': 'b',
|
433
|
+
'ḇ': 'b',
|
434
|
+
'ᵬ': 'b',
|
435
|
+
'ᶀ': 'b',
|
436
|
+
'ƀ': 'b',
|
437
|
+
'ƃ': 'b',
|
438
|
+
'ɵ': 'o',
|
439
|
+
'ć': 'c',
|
440
|
+
'č': 'c',
|
441
|
+
'ç': 'c',
|
442
|
+
'ḉ': 'c',
|
443
|
+
'ĉ': 'c',
|
444
|
+
'ɕ': 'c',
|
445
|
+
'ċ': 'c',
|
446
|
+
'ƈ': 'c',
|
447
|
+
'ȼ': 'c',
|
448
|
+
'ď': 'd',
|
449
|
+
'ḑ': 'd',
|
450
|
+
'ḓ': 'd',
|
451
|
+
'ȡ': 'd',
|
452
|
+
'ḋ': 'd',
|
453
|
+
'ḍ': 'd',
|
454
|
+
'ɗ': 'd',
|
455
|
+
'ᶑ': 'd',
|
456
|
+
'ḏ': 'd',
|
457
|
+
'ᵭ': 'd',
|
458
|
+
'ᶁ': 'd',
|
459
|
+
'đ': 'd',
|
460
|
+
'ɖ': 'd',
|
461
|
+
'ƌ': 'd',
|
462
|
+
'ı': 'i',
|
463
|
+
'ȷ': 'j',
|
464
|
+
'ɟ': 'j',
|
465
|
+
'ʄ': 'j',
|
466
|
+
'dz': 'dz',
|
467
|
+
'dž': 'dz',
|
468
|
+
'é': 'e',
|
469
|
+
'ĕ': 'e',
|
470
|
+
'ě': 'e',
|
471
|
+
'ȩ': 'e',
|
472
|
+
'ḝ': 'e',
|
473
|
+
'ê': 'e',
|
474
|
+
'ế': 'e',
|
475
|
+
'ệ': 'e',
|
476
|
+
'ề': 'e',
|
477
|
+
'ể': 'e',
|
478
|
+
'ễ': 'e',
|
479
|
+
'ḙ': 'e',
|
480
|
+
'ë': 'e',
|
481
|
+
'ė': 'e',
|
482
|
+
'ẹ': 'e',
|
483
|
+
'ȅ': 'e',
|
484
|
+
'è': 'e',
|
485
|
+
'ẻ': 'e',
|
486
|
+
'ȇ': 'e',
|
487
|
+
'ē': 'e',
|
488
|
+
'ḗ': 'e',
|
489
|
+
'ḕ': 'e',
|
490
|
+
'ⱸ': 'e',
|
491
|
+
'ę': 'e',
|
492
|
+
'ᶒ': 'e',
|
493
|
+
'ɇ': 'e',
|
494
|
+
'ẽ': 'e',
|
495
|
+
'ḛ': 'e',
|
496
|
+
'ꝫ': 'et',
|
497
|
+
'ḟ': 'f',
|
498
|
+
'ƒ': 'f',
|
499
|
+
'ᵮ': 'f',
|
500
|
+
'ᶂ': 'f',
|
501
|
+
'ǵ': 'g',
|
502
|
+
'ğ': 'g',
|
503
|
+
'ǧ': 'g',
|
504
|
+
'ģ': 'g',
|
505
|
+
'ĝ': 'g',
|
506
|
+
'ġ': 'g',
|
507
|
+
'ɠ': 'g',
|
508
|
+
'ḡ': 'g',
|
509
|
+
'ᶃ': 'g',
|
510
|
+
'ǥ': 'g',
|
511
|
+
'ḫ': 'h',
|
512
|
+
'ȟ': 'h',
|
513
|
+
'ḩ': 'h',
|
514
|
+
'ĥ': 'h',
|
515
|
+
'ⱨ': 'h',
|
516
|
+
'ḧ': 'h',
|
517
|
+
'ḣ': 'h',
|
518
|
+
'ḥ': 'h',
|
519
|
+
'ɦ': 'h',
|
520
|
+
'ẖ': 'h',
|
521
|
+
'ħ': 'h',
|
522
|
+
'ƕ': 'hv',
|
523
|
+
'í': 'i',
|
524
|
+
'ĭ': 'i',
|
525
|
+
'ǐ': 'i',
|
526
|
+
'î': 'i',
|
527
|
+
'ï': 'i',
|
528
|
+
'ḯ': 'i',
|
529
|
+
'ị': 'i',
|
530
|
+
'ȉ': 'i',
|
531
|
+
'ì': 'i',
|
532
|
+
'ỉ': 'i',
|
533
|
+
'ȋ': 'i',
|
534
|
+
'ī': 'i',
|
535
|
+
'į': 'i',
|
536
|
+
'ᶖ': 'i',
|
537
|
+
'ɨ': 'i',
|
538
|
+
'ĩ': 'i',
|
539
|
+
'ḭ': 'i',
|
540
|
+
'ꝺ': 'd',
|
541
|
+
'ꝼ': 'f',
|
542
|
+
'ᵹ': 'g',
|
543
|
+
'ꞃ': 'r',
|
544
|
+
'ꞅ': 's',
|
545
|
+
'ꞇ': 't',
|
546
|
+
'ꝭ': 'is',
|
547
|
+
'ǰ': 'j',
|
548
|
+
'ĵ': 'j',
|
549
|
+
'ʝ': 'j',
|
550
|
+
'ɉ': 'j',
|
551
|
+
'ḱ': 'k',
|
552
|
+
'ǩ': 'k',
|
553
|
+
'ķ': 'k',
|
554
|
+
'ⱪ': 'k',
|
555
|
+
'ꝃ': 'k',
|
556
|
+
'ḳ': 'k',
|
557
|
+
'ƙ': 'k',
|
558
|
+
'ḵ': 'k',
|
559
|
+
'ᶄ': 'k',
|
560
|
+
'ꝁ': 'k',
|
561
|
+
'ꝅ': 'k',
|
562
|
+
'ĺ': 'l',
|
563
|
+
'ƚ': 'l',
|
564
|
+
'ɬ': 'l',
|
565
|
+
'ľ': 'l',
|
566
|
+
'ļ': 'l',
|
567
|
+
'ḽ': 'l',
|
568
|
+
'ȴ': 'l',
|
569
|
+
'ḷ': 'l',
|
570
|
+
'ḹ': 'l',
|
571
|
+
'ⱡ': 'l',
|
572
|
+
'ꝉ': 'l',
|
573
|
+
'ḻ': 'l',
|
574
|
+
'ŀ': 'l',
|
575
|
+
'ɫ': 'l',
|
576
|
+
'ᶅ': 'l',
|
577
|
+
'ɭ': 'l',
|
578
|
+
'ł': 'l',
|
579
|
+
'lj': 'lj',
|
580
|
+
'ſ': 's',
|
581
|
+
'ẜ': 's',
|
582
|
+
'ẛ': 's',
|
583
|
+
'ẝ': 's',
|
584
|
+
'ḿ': 'm',
|
585
|
+
'ṁ': 'm',
|
586
|
+
'ṃ': 'm',
|
587
|
+
'ɱ': 'm',
|
588
|
+
'ᵯ': 'm',
|
589
|
+
'ᶆ': 'm',
|
590
|
+
'ń': 'n',
|
591
|
+
'ň': 'n',
|
592
|
+
'ņ': 'n',
|
593
|
+
'ṋ': 'n',
|
594
|
+
'ȵ': 'n',
|
595
|
+
'ṅ': 'n',
|
596
|
+
'ṇ': 'n',
|
597
|
+
'ǹ': 'n',
|
598
|
+
'ɲ': 'n',
|
599
|
+
'ṉ': 'n',
|
600
|
+
'ƞ': 'n',
|
601
|
+
'ᵰ': 'n',
|
602
|
+
'ᶇ': 'n',
|
603
|
+
'ɳ': 'n',
|
604
|
+
'ñ': 'n',
|
605
|
+
'nj': 'nj',
|
606
|
+
'ó': 'o',
|
607
|
+
'ŏ': 'o',
|
608
|
+
'ǒ': 'o',
|
609
|
+
'ô': 'o',
|
610
|
+
'ố': 'o',
|
611
|
+
'ộ': 'o',
|
612
|
+
'ồ': 'o',
|
613
|
+
'ổ': 'o',
|
614
|
+
'ỗ': 'o',
|
615
|
+
'ö': 'o',
|
616
|
+
'ȫ': 'o',
|
617
|
+
'ȯ': 'o',
|
618
|
+
'ȱ': 'o',
|
619
|
+
'ọ': 'o',
|
620
|
+
'ő': 'o',
|
621
|
+
'ȍ': 'o',
|
622
|
+
'ò': 'o',
|
623
|
+
'ỏ': 'o',
|
624
|
+
'ơ': 'o',
|
625
|
+
'ớ': 'o',
|
626
|
+
'ợ': 'o',
|
627
|
+
'ờ': 'o',
|
628
|
+
'ở': 'o',
|
629
|
+
'ỡ': 'o',
|
630
|
+
'ȏ': 'o',
|
631
|
+
'ꝋ': 'o',
|
632
|
+
'ꝍ': 'o',
|
633
|
+
'ⱺ': 'o',
|
634
|
+
'ō': 'o',
|
635
|
+
'ṓ': 'o',
|
636
|
+
'ṑ': 'o',
|
637
|
+
'ǫ': 'o',
|
638
|
+
'ǭ': 'o',
|
639
|
+
'ø': 'o',
|
640
|
+
'ǿ': 'o',
|
641
|
+
'õ': 'o',
|
642
|
+
'ṍ': 'o',
|
643
|
+
'ṏ': 'o',
|
644
|
+
'ȭ': 'o',
|
645
|
+
'ƣ': 'oi',
|
646
|
+
'ꝏ': 'oo',
|
647
|
+
'ɛ': 'e',
|
648
|
+
'ᶓ': 'e',
|
649
|
+
'ɔ': 'o',
|
650
|
+
'ᶗ': 'o',
|
651
|
+
'ȣ': 'ou',
|
652
|
+
'ṕ': 'p',
|
653
|
+
'ṗ': 'p',
|
654
|
+
'ꝓ': 'p',
|
655
|
+
'ƥ': 'p',
|
656
|
+
'ᵱ': 'p',
|
657
|
+
'ᶈ': 'p',
|
658
|
+
'ꝕ': 'p',
|
659
|
+
'ᵽ': 'p',
|
660
|
+
'ꝑ': 'p',
|
661
|
+
'ꝙ': 'q',
|
662
|
+
'ʠ': 'q',
|
663
|
+
'ɋ': 'q',
|
664
|
+
'ꝗ': 'q',
|
665
|
+
'ŕ': 'r',
|
666
|
+
'ř': 'r',
|
667
|
+
'ŗ': 'r',
|
668
|
+
'ṙ': 'r',
|
669
|
+
'ṛ': 'r',
|
670
|
+
'ṝ': 'r',
|
671
|
+
'ȑ': 'r',
|
672
|
+
'ɾ': 'r',
|
673
|
+
'ᵳ': 'r',
|
674
|
+
'ȓ': 'r',
|
675
|
+
'ṟ': 'r',
|
676
|
+
'ɼ': 'r',
|
677
|
+
'ᵲ': 'r',
|
678
|
+
'ᶉ': 'r',
|
679
|
+
'ɍ': 'r',
|
680
|
+
'ɽ': 'r',
|
681
|
+
'ↄ': 'c',
|
682
|
+
'ꜿ': 'c',
|
683
|
+
'ɘ': 'e',
|
684
|
+
'ɿ': 'r',
|
685
|
+
'ś': 's',
|
686
|
+
'ṥ': 's',
|
687
|
+
'š': 's',
|
688
|
+
'ṧ': 's',
|
689
|
+
'ş': 's',
|
690
|
+
'ŝ': 's',
|
691
|
+
'ș': 's',
|
692
|
+
'ṡ': 's',
|
693
|
+
'ṣ': 's',
|
694
|
+
'ṩ': 's',
|
695
|
+
'ʂ': 's',
|
696
|
+
'ᵴ': 's',
|
697
|
+
'ᶊ': 's',
|
698
|
+
'ȿ': 's',
|
699
|
+
'ɡ': 'g',
|
700
|
+
'ᴑ': 'o',
|
701
|
+
'ᴓ': 'o',
|
702
|
+
'ᴝ': 'u',
|
703
|
+
'ť': 't',
|
704
|
+
'ţ': 't',
|
705
|
+
'ṱ': 't',
|
706
|
+
'ț': 't',
|
707
|
+
'ȶ': 't',
|
708
|
+
'ẗ': 't',
|
709
|
+
'ⱦ': 't',
|
710
|
+
'ṫ': 't',
|
711
|
+
'ṭ': 't',
|
712
|
+
'ƭ': 't',
|
713
|
+
'ṯ': 't',
|
714
|
+
'ᵵ': 't',
|
715
|
+
'ƫ': 't',
|
716
|
+
'ʈ': 't',
|
717
|
+
'ŧ': 't',
|
718
|
+
'ᵺ': 'th',
|
719
|
+
'ɐ': 'a',
|
720
|
+
'ᴂ': 'ae',
|
721
|
+
'ǝ': 'e',
|
722
|
+
'ᵷ': 'g',
|
723
|
+
'ɥ': 'h',
|
724
|
+
'ʮ': 'h',
|
725
|
+
'ʯ': 'h',
|
726
|
+
'ᴉ': 'i',
|
727
|
+
'ʞ': 'k',
|
728
|
+
'ꞁ': 'l',
|
729
|
+
'ɯ': 'm',
|
730
|
+
'ɰ': 'm',
|
731
|
+
'ᴔ': 'oe',
|
732
|
+
'ɹ': 'r',
|
733
|
+
'ɻ': 'r',
|
734
|
+
'ɺ': 'r',
|
735
|
+
'ⱹ': 'r',
|
736
|
+
'ʇ': 't',
|
737
|
+
'ʌ': 'v',
|
738
|
+
'ʍ': 'w',
|
739
|
+
'ʎ': 'y',
|
740
|
+
'ꜩ': 'tz',
|
741
|
+
'ú': 'u',
|
742
|
+
'ŭ': 'u',
|
743
|
+
'ǔ': 'u',
|
744
|
+
'û': 'u',
|
745
|
+
'ṷ': 'u',
|
746
|
+
'ü': 'u',
|
747
|
+
'ǘ': 'u',
|
748
|
+
'ǚ': 'u',
|
749
|
+
'ǜ': 'u',
|
750
|
+
'ǖ': 'u',
|
751
|
+
'ṳ': 'u',
|
752
|
+
'ụ': 'u',
|
753
|
+
'ű': 'u',
|
754
|
+
'ȕ': 'u',
|
755
|
+
'ù': 'u',
|
756
|
+
'ủ': 'u',
|
757
|
+
'ư': 'u',
|
758
|
+
'ứ': 'u',
|
759
|
+
'ự': 'u',
|
760
|
+
'ừ': 'u',
|
761
|
+
'ử': 'u',
|
762
|
+
'ữ': 'u',
|
763
|
+
'ȗ': 'u',
|
764
|
+
'ū': 'u',
|
765
|
+
'ṻ': 'u',
|
766
|
+
'ų': 'u',
|
767
|
+
'ᶙ': 'u',
|
768
|
+
'ů': 'u',
|
769
|
+
'ũ': 'u',
|
770
|
+
'ṹ': 'u',
|
771
|
+
'ṵ': 'u',
|
772
|
+
'ᵫ': 'ue',
|
773
|
+
'ꝸ': 'um',
|
774
|
+
'ⱴ': 'v',
|
775
|
+
'ꝟ': 'v',
|
776
|
+
'ṿ': 'v',
|
777
|
+
'ʋ': 'v',
|
778
|
+
'ᶌ': 'v',
|
779
|
+
'ⱱ': 'v',
|
780
|
+
'ṽ': 'v',
|
781
|
+
'ꝡ': 'vy',
|
782
|
+
'ẃ': 'w',
|
783
|
+
'ŵ': 'w',
|
784
|
+
'ẅ': 'w',
|
785
|
+
'ẇ': 'w',
|
786
|
+
'ẉ': 'w',
|
787
|
+
'ẁ': 'w',
|
788
|
+
'ⱳ': 'w',
|
789
|
+
'ẘ': 'w',
|
790
|
+
'ẍ': 'x',
|
791
|
+
'ẋ': 'x',
|
792
|
+
'ᶍ': 'x',
|
793
|
+
'ý': 'y',
|
794
|
+
'ŷ': 'y',
|
795
|
+
'ÿ': 'y',
|
796
|
+
'ẏ': 'y',
|
797
|
+
'ỵ': 'y',
|
798
|
+
'ỳ': 'y',
|
799
|
+
'ƴ': 'y',
|
800
|
+
'ỷ': 'y',
|
801
|
+
'ỿ': 'y',
|
802
|
+
'ȳ': 'y',
|
803
|
+
'ẙ': 'y',
|
804
|
+
'ɏ': 'y',
|
805
|
+
'ỹ': 'y',
|
806
|
+
'ź': 'z',
|
807
|
+
'ž': 'z',
|
808
|
+
'ẑ': 'z',
|
809
|
+
'ʑ': 'z',
|
810
|
+
'ⱬ': 'z',
|
811
|
+
'ż': 'z',
|
812
|
+
'ẓ': 'z',
|
813
|
+
'ȥ': 'z',
|
814
|
+
'ẕ': 'z',
|
815
|
+
'ᵶ': 'z',
|
816
|
+
'ᶎ': 'z',
|
817
|
+
'ʐ': 'z',
|
818
|
+
'ƶ': 'z',
|
819
|
+
'ɀ': 'z',
|
820
|
+
'ff': 'ff',
|
821
|
+
'ffi': 'ffi',
|
822
|
+
'ffl': 'ffl',
|
823
|
+
'fi': 'fi',
|
824
|
+
'fl': 'fl',
|
825
|
+
'ij': 'ij',
|
826
|
+
'œ': 'oe',
|
827
|
+
'st': 'st',
|
828
|
+
'ₐ': 'a',
|
829
|
+
'ₑ': 'e',
|
830
|
+
'ᵢ': 'i',
|
831
|
+
'ⱼ': 'j',
|
832
|
+
'ₒ': 'o',
|
833
|
+
'ᵣ': 'r',
|
834
|
+
'ᵤ': 'u',
|
835
|
+
'ᵥ': 'v',
|
836
|
+
'ₓ': 'x'
|
837
|
+
};
|
838
|
+
|
839
|
+
/**
|
840
|
+
* @fileoverview added by tsickle
|
841
|
+
* @suppress {checkTypes} checked by tsc
|
842
|
+
*/
|
843
|
+
var TypeaheadOptions = (function () {
|
844
|
+
function TypeaheadOptions(options) {
|
845
|
+
Object.assign(this, options);
|
846
|
+
}
|
847
|
+
return TypeaheadOptions;
|
848
|
+
}());
|
849
|
+
|
850
|
+
/**
|
851
|
+
* @fileoverview added by tsickle
|
852
|
+
* @suppress {checkTypes} checked by tsc
|
853
|
+
*/
|
854
|
+
var TypeaheadMatch = (function () {
|
855
|
+
// tslint:disable-next-line:no-any
|
856
|
+
function TypeaheadMatch(item, value, header) {
|
857
|
+
if (value === void 0) {
|
858
|
+
value = item;
|
859
|
+
}
|
860
|
+
if (header === void 0) {
|
861
|
+
header = false;
|
862
|
+
}
|
863
|
+
this.item = item;
|
864
|
+
this.value = value;
|
865
|
+
this.header = header;
|
866
|
+
}
|
867
|
+
/**
|
868
|
+
* @return {?}
|
869
|
+
*/
|
870
|
+
TypeaheadMatch.prototype.isHeader = /**
|
871
|
+
* @return {?}
|
872
|
+
*/
|
873
|
+
function () {
|
874
|
+
return this.header;
|
875
|
+
};
|
876
|
+
/**
|
877
|
+
* @return {?}
|
878
|
+
*/
|
879
|
+
TypeaheadMatch.prototype.toString = /**
|
880
|
+
* @return {?}
|
881
|
+
*/
|
882
|
+
function () {
|
883
|
+
return this.value;
|
884
|
+
};
|
885
|
+
return TypeaheadMatch;
|
886
|
+
}());
|
887
|
+
|
888
|
+
/*! *****************************************************************************
|
889
|
+
Copyright (c) Microsoft Corporation. All rights reserved.
|
890
|
+
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
|
891
|
+
this file except in compliance with the License. You may obtain a copy of the
|
892
|
+
License at http://www.apache.org/licenses/LICENSE-2.0
|
893
|
+
|
894
|
+
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
895
|
+
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
|
896
|
+
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
|
897
|
+
MERCHANTABLITY OR NON-INFRINGEMENT.
|
898
|
+
|
899
|
+
See the Apache Version 2.0 License for specific language governing permissions
|
900
|
+
and limitations under the License.
|
901
|
+
***************************************************************************** */
|
902
|
+
function __values(o) {
|
903
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0;
|
904
|
+
if (m)
|
905
|
+
return m.call(o);
|
906
|
+
return {
|
907
|
+
next: function () {
|
908
|
+
if (o && i >= o.length)
|
909
|
+
o = void 0;
|
910
|
+
return { value: o && o[i++], done: !o };
|
911
|
+
}
|
912
|
+
};
|
913
|
+
}
|
914
|
+
|
915
|
+
/**
|
916
|
+
* @fileoverview added by tsickle
|
917
|
+
* @suppress {checkTypes} checked by tsc
|
918
|
+
*/
|
919
|
+
/**
|
920
|
+
* @param {?} str
|
921
|
+
* @return {?}
|
922
|
+
*/
|
923
|
+
function latinize(str) {
|
924
|
+
if (!str) {
|
925
|
+
return '';
|
926
|
+
}
|
927
|
+
return str.replace(/[^A-Za-z0-9\[\] ]/g, function (a) {
|
928
|
+
return latinMap[a] || a;
|
929
|
+
});
|
930
|
+
}
|
931
|
+
/**
|
932
|
+
* @param {?} queryToEscape
|
933
|
+
* @return {?}
|
934
|
+
*/
|
935
|
+
function escapeRegexp(queryToEscape) {
|
936
|
+
// Regex: capture the whole query string and replace it with the string
|
937
|
+
// that will be used to match the results, for example if the capture is
|
938
|
+
// 'a' the result will be \a
|
939
|
+
return queryToEscape.replace(/([.?*+^$[\]\\(){}|-])/g, '\\$1');
|
940
|
+
}
|
941
|
+
/**
|
942
|
+
* @param {?} str
|
943
|
+
* @param {?=} wordRegexDelimiters
|
944
|
+
* @param {?=} phraseRegexDelimiters
|
945
|
+
* @return {?}
|
946
|
+
*/
|
947
|
+
function tokenize(str, wordRegexDelimiters, phraseRegexDelimiters) {
|
948
|
+
if (wordRegexDelimiters === void 0) {
|
949
|
+
wordRegexDelimiters = ' ';
|
950
|
+
}
|
951
|
+
if (phraseRegexDelimiters === void 0) {
|
952
|
+
phraseRegexDelimiters = '';
|
953
|
+
}
|
954
|
+
/* tslint:enable */
|
955
|
+
var /** @type {?} */ regexStr = "(?:[" + phraseRegexDelimiters + "])([^" + phraseRegexDelimiters + "]+)" +
|
956
|
+
("(?:[" + phraseRegexDelimiters + "])|([^" + wordRegexDelimiters + "]+)");
|
957
|
+
var /** @type {?} */ preTokenized = str.split(new RegExp(regexStr, 'g'));
|
958
|
+
var /** @type {?} */ result = [];
|
959
|
+
var /** @type {?} */ preTokenizedLength = preTokenized.length;
|
960
|
+
var /** @type {?} */ token;
|
961
|
+
var /** @type {?} */ replacePhraseDelimiters = new RegExp("[" + phraseRegexDelimiters + "]+", 'g');
|
962
|
+
for (var /** @type {?} */ i = 0; i < preTokenizedLength; i += 1) {
|
963
|
+
token = preTokenized[i];
|
964
|
+
if (token && token.length && token !== wordRegexDelimiters) {
|
965
|
+
result.push(token.replace(replacePhraseDelimiters, ''));
|
966
|
+
}
|
967
|
+
}
|
968
|
+
return result;
|
969
|
+
}
|
970
|
+
/**
|
971
|
+
* @param {?} object
|
972
|
+
* @param {?} option
|
973
|
+
* @return {?}
|
974
|
+
*/
|
975
|
+
function getValueFromObject(object, option) {
|
976
|
+
if (!option || typeof object !== 'object') {
|
977
|
+
return object.toString();
|
978
|
+
}
|
979
|
+
if (option.endsWith('()')) {
|
980
|
+
var /** @type {?} */ functionName = option.slice(0, option.length - 2);
|
981
|
+
return object[functionName]().toString();
|
982
|
+
}
|
983
|
+
var /** @type {?} */ properties = option
|
984
|
+
.replace(/\[(\w+)\]/g, '.$1')
|
985
|
+
.replace(/^\./, '');
|
986
|
+
var /** @type {?} */ propertiesArray = properties.split('.');
|
987
|
+
try {
|
988
|
+
for (var propertiesArray_1 = __values(propertiesArray), propertiesArray_1_1 = propertiesArray_1.next(); !propertiesArray_1_1.done; propertiesArray_1_1 = propertiesArray_1.next()) {
|
989
|
+
var property = propertiesArray_1_1.value;
|
990
|
+
if (property in object) {
|
991
|
+
// tslint:disable-next-line
|
992
|
+
object = object[property];
|
993
|
+
}
|
994
|
+
}
|
995
|
+
}
|
996
|
+
catch (e_1_1) {
|
997
|
+
e_1 = { error: e_1_1 };
|
998
|
+
}
|
999
|
+
finally {
|
1000
|
+
try {
|
1001
|
+
if (propertiesArray_1_1 && !propertiesArray_1_1.done && (_a = propertiesArray_1.return))
|
1002
|
+
_a.call(propertiesArray_1);
|
1003
|
+
}
|
1004
|
+
finally {
|
1005
|
+
if (e_1)
|
1006
|
+
throw e_1.error;
|
1007
|
+
}
|
1008
|
+
}
|
1009
|
+
if (!object) {
|
1010
|
+
return '';
|
1011
|
+
}
|
1012
|
+
return object.toString();
|
1013
|
+
var e_1, _a;
|
1014
|
+
}
|
1015
|
+
|
1016
|
+
/**
|
1017
|
+
* @fileoverview added by tsickle
|
1018
|
+
* @suppress {checkTypes} checked by tsc
|
1019
|
+
*/
|
1020
|
+
var TypeaheadContainerComponent = (function () {
|
1021
|
+
function TypeaheadContainerComponent(element, renderer) {
|
1022
|
+
this.renderer = renderer;
|
1023
|
+
this.isFocused = false;
|
1024
|
+
this._matches = [];
|
1025
|
+
this.isScrolledIntoView = function (elem) {
|
1026
|
+
var /** @type {?} */ containerViewTop = this.ulElement.nativeElement.scrollTop;
|
1027
|
+
var /** @type {?} */ containerViewBottom = containerViewTop + Number(this.ulElement.nativeElement.offsetHeight);
|
1028
|
+
var /** @type {?} */ elemTop = elem.offsetTop;
|
1029
|
+
var /** @type {?} */ elemBottom = elemTop + elem.offsetHeight;
|
1030
|
+
return ((elemBottom <= containerViewBottom) && (elemTop >= containerViewTop));
|
1031
|
+
};
|
1032
|
+
this.element = element;
|
1033
|
+
}
|
1034
|
+
Object.defineProperty(TypeaheadContainerComponent.prototype, "isBs4", {
|
1035
|
+
get: /**
|
1036
|
+
* @return {?}
|
1037
|
+
*/ function () {
|
1038
|
+
return !utils.isBs3();
|
1039
|
+
},
|
1040
|
+
enumerable: true,
|
1041
|
+
configurable: true
|
1042
|
+
});
|
1043
|
+
Object.defineProperty(TypeaheadContainerComponent.prototype, "active", {
|
1044
|
+
get: /**
|
1045
|
+
* @return {?}
|
1046
|
+
*/ function () {
|
1047
|
+
return this._active;
|
1048
|
+
},
|
1049
|
+
enumerable: true,
|
1050
|
+
configurable: true
|
1051
|
+
});
|
1052
|
+
Object.defineProperty(TypeaheadContainerComponent.prototype, "matches", {
|
1053
|
+
get: /**
|
1054
|
+
* @return {?}
|
1055
|
+
*/ function () {
|
1056
|
+
return this._matches;
|
1057
|
+
},
|
1058
|
+
set: /**
|
1059
|
+
* @param {?} value
|
1060
|
+
* @return {?}
|
1061
|
+
*/ function (value) {
|
1062
|
+
var _this = this;
|
1063
|
+
this._matches = value;
|
1064
|
+
this.needScrollbar = this.typeaheadScrollable && this.typeaheadOptionsInScrollableView < this.matches.length;
|
1065
|
+
if (this.typeaheadScrollable) {
|
1066
|
+
setTimeout(function () {
|
1067
|
+
_this.setScrollableMode();
|
1068
|
+
});
|
1069
|
+
}
|
1070
|
+
if (this._matches.length > 0) {
|
1071
|
+
this._active = this._matches[0];
|
1072
|
+
if (this._active.isHeader()) {
|
1073
|
+
this.nextActiveMatch();
|
1074
|
+
}
|
1075
|
+
}
|
1076
|
+
},
|
1077
|
+
enumerable: true,
|
1078
|
+
configurable: true
|
1079
|
+
});
|
1080
|
+
Object.defineProperty(TypeaheadContainerComponent.prototype, "optionsListTemplate", {
|
1081
|
+
// tslint:disable-next-line:no-any
|
1082
|
+
get: /**
|
1083
|
+
* @return {?}
|
1084
|
+
*/ function () {
|
1085
|
+
return this.parent ? this.parent.optionsListTemplate : undefined;
|
1086
|
+
},
|
1087
|
+
enumerable: true,
|
1088
|
+
configurable: true
|
1089
|
+
});
|
1090
|
+
Object.defineProperty(TypeaheadContainerComponent.prototype, "typeaheadScrollable", {
|
1091
|
+
get: /**
|
1092
|
+
* @return {?}
|
1093
|
+
*/ function () {
|
1094
|
+
return this.parent ? this.parent.typeaheadScrollable : false;
|
1095
|
+
},
|
1096
|
+
enumerable: true,
|
1097
|
+
configurable: true
|
1098
|
+
});
|
1099
|
+
Object.defineProperty(TypeaheadContainerComponent.prototype, "typeaheadOptionsInScrollableView", {
|
1100
|
+
get: /**
|
1101
|
+
* @return {?}
|
1102
|
+
*/ function () {
|
1103
|
+
return this.parent ? this.parent.typeaheadOptionsInScrollableView : 5;
|
1104
|
+
},
|
1105
|
+
enumerable: true,
|
1106
|
+
configurable: true
|
1107
|
+
});
|
1108
|
+
Object.defineProperty(TypeaheadContainerComponent.prototype, "itemTemplate", {
|
1109
|
+
// tslint:disable-next-line:no-any
|
1110
|
+
get: /**
|
1111
|
+
* @return {?}
|
1112
|
+
*/ function () {
|
1113
|
+
return this.parent ? this.parent.typeaheadItemTemplate : undefined;
|
1114
|
+
},
|
1115
|
+
enumerable: true,
|
1116
|
+
configurable: true
|
1117
|
+
});
|
1118
|
+
/**
|
1119
|
+
* @return {?}
|
1120
|
+
*/
|
1121
|
+
TypeaheadContainerComponent.prototype.selectActiveMatch = /**
|
1122
|
+
* @return {?}
|
1123
|
+
*/
|
1124
|
+
function () {
|
1125
|
+
this.selectMatch(this._active);
|
1126
|
+
};
|
1127
|
+
/**
|
1128
|
+
* @return {?}
|
1129
|
+
*/
|
1130
|
+
TypeaheadContainerComponent.prototype.prevActiveMatch = /**
|
1131
|
+
* @return {?}
|
1132
|
+
*/
|
1133
|
+
function () {
|
1134
|
+
var /** @type {?} */ index = this.matches.indexOf(this._active);
|
1135
|
+
this._active = this.matches[index - 1 < 0 ? this.matches.length - 1 : index - 1];
|
1136
|
+
if (this._active.isHeader()) {
|
1137
|
+
this.prevActiveMatch();
|
1138
|
+
}
|
1139
|
+
if (this.typeaheadScrollable) {
|
1140
|
+
this.scrollPrevious(index);
|
1141
|
+
}
|
1142
|
+
};
|
1143
|
+
/**
|
1144
|
+
* @return {?}
|
1145
|
+
*/
|
1146
|
+
TypeaheadContainerComponent.prototype.nextActiveMatch = /**
|
1147
|
+
* @return {?}
|
1148
|
+
*/
|
1149
|
+
function () {
|
1150
|
+
var /** @type {?} */ index = this.matches.indexOf(this._active);
|
1151
|
+
this._active = this.matches[index + 1 > this.matches.length - 1 ? 0 : index + 1];
|
1152
|
+
if (this._active.isHeader()) {
|
1153
|
+
this.nextActiveMatch();
|
1154
|
+
}
|
1155
|
+
if (this.typeaheadScrollable) {
|
1156
|
+
this.scrollNext(index);
|
1157
|
+
}
|
1158
|
+
};
|
1159
|
+
/**
|
1160
|
+
* @param {?} value
|
1161
|
+
* @return {?}
|
1162
|
+
*/
|
1163
|
+
TypeaheadContainerComponent.prototype.selectActive = /**
|
1164
|
+
* @param {?} value
|
1165
|
+
* @return {?}
|
1166
|
+
*/
|
1167
|
+
function (value) {
|
1168
|
+
this.isFocused = true;
|
1169
|
+
this._active = value;
|
1170
|
+
};
|
1171
|
+
/**
|
1172
|
+
* @param {?} match
|
1173
|
+
* @param {?} query
|
1174
|
+
* @return {?}
|
1175
|
+
*/
|
1176
|
+
TypeaheadContainerComponent.prototype.highlight = /**
|
1177
|
+
* @param {?} match
|
1178
|
+
* @param {?} query
|
1179
|
+
* @return {?}
|
1180
|
+
*/
|
1181
|
+
function (match, query) {
|
1182
|
+
var /** @type {?} */ itemStr = match.value;
|
1183
|
+
var /** @type {?} */ itemStrHelper = (this.parent && this.parent.typeaheadLatinize
|
1184
|
+
? latinize(itemStr)
|
1185
|
+
: itemStr).toLowerCase();
|
1186
|
+
var /** @type {?} */ startIdx;
|
1187
|
+
var /** @type {?} */ tokenLen;
|
1188
|
+
// Replaces the capture string with the same string inside of a "strong" tag
|
1189
|
+
if (typeof query === 'object') {
|
1190
|
+
var /** @type {?} */ queryLen = query.length;
|
1191
|
+
for (var /** @type {?} */ i = 0; i < queryLen; i += 1) {
|
1192
|
+
// query[i] is already latinized and lower case
|
1193
|
+
startIdx = itemStrHelper.indexOf(query[i]);
|
1194
|
+
tokenLen = query[i].length;
|
1195
|
+
if (startIdx >= 0 && tokenLen > 0) {
|
1196
|
+
itemStr =
|
1197
|
+
itemStr.substring(0, startIdx) + "<strong>" + itemStr.substring(startIdx, startIdx + tokenLen) + "</strong>" +
|
1198
|
+
("" + itemStr.substring(startIdx + tokenLen));
|
1199
|
+
itemStrHelper =
|
1200
|
+
itemStrHelper.substring(0, startIdx) + " " + ' '.repeat(tokenLen) + " " +
|
1201
|
+
("" + itemStrHelper.substring(startIdx + tokenLen));
|
1202
|
+
}
|
1203
|
+
}
|
1204
|
+
}
|
1205
|
+
else if (query) {
|
1206
|
+
// query is already latinized and lower case
|
1207
|
+
startIdx = itemStrHelper.indexOf(query);
|
1208
|
+
tokenLen = query.length;
|
1209
|
+
if (startIdx >= 0 && tokenLen > 0) {
|
1210
|
+
itemStr =
|
1211
|
+
itemStr.substring(0, startIdx) + "<strong>" + itemStr.substring(startIdx, startIdx + tokenLen) + "</strong>" +
|
1212
|
+
("" + itemStr.substring(startIdx + tokenLen));
|
1213
|
+
}
|
1214
|
+
}
|
1215
|
+
return itemStr;
|
1216
|
+
};
|
1217
|
+
/**
|
1218
|
+
* @return {?}
|
1219
|
+
*/
|
1220
|
+
TypeaheadContainerComponent.prototype.focusLost = /**
|
1221
|
+
* @return {?}
|
1222
|
+
*/
|
1223
|
+
function () {
|
1224
|
+
this.isFocused = false;
|
1225
|
+
};
|
1226
|
+
/**
|
1227
|
+
* @param {?} value
|
1228
|
+
* @return {?}
|
1229
|
+
*/
|
1230
|
+
TypeaheadContainerComponent.prototype.isActive = /**
|
1231
|
+
* @param {?} value
|
1232
|
+
* @return {?}
|
1233
|
+
*/
|
1234
|
+
function (value) {
|
1235
|
+
return this._active === value;
|
1236
|
+
};
|
1237
|
+
/**
|
1238
|
+
* @param {?} value
|
1239
|
+
* @param {?=} e
|
1240
|
+
* @return {?}
|
1241
|
+
*/
|
1242
|
+
TypeaheadContainerComponent.prototype.selectMatch = /**
|
1243
|
+
* @param {?} value
|
1244
|
+
* @param {?=} e
|
1245
|
+
* @return {?}
|
1246
|
+
*/
|
1247
|
+
function (value, e) {
|
1248
|
+
var _this = this;
|
1249
|
+
if (e === void 0) {
|
1250
|
+
e = void 0;
|
1251
|
+
}
|
1252
|
+
if (e) {
|
1253
|
+
e.stopPropagation();
|
1254
|
+
e.preventDefault();
|
1255
|
+
}
|
1256
|
+
this.parent.changeModel(value);
|
1257
|
+
setTimeout(function () { return _this.parent.typeaheadOnSelect.emit(value); }, 0);
|
1258
|
+
return false;
|
1259
|
+
};
|
1260
|
+
/**
|
1261
|
+
* @return {?}
|
1262
|
+
*/
|
1263
|
+
TypeaheadContainerComponent.prototype.setScrollableMode = /**
|
1264
|
+
* @return {?}
|
1265
|
+
*/
|
1266
|
+
function () {
|
1267
|
+
if (!this.ulElement) {
|
1268
|
+
this.ulElement = this.element;
|
1269
|
+
}
|
1270
|
+
if (this.liElements.first) {
|
1271
|
+
var /** @type {?} */ ulStyles = utils.Utils.getStyles(this.ulElement.nativeElement);
|
1272
|
+
var /** @type {?} */ liStyles = utils.Utils.getStyles(this.liElements.first.nativeElement);
|
1273
|
+
var /** @type {?} */ ulPaddingBottom = parseFloat((ulStyles['padding-bottom'] ? ulStyles['padding-bottom'] : '')
|
1274
|
+
.replace('px', ''));
|
1275
|
+
var /** @type {?} */ ulPaddingTop = parseFloat((ulStyles['padding-top'] ? ulStyles['padding-top'] : '0')
|
1276
|
+
.replace('px', ''));
|
1277
|
+
var /** @type {?} */ optionHeight = parseFloat((liStyles.height ? liStyles.height : '0')
|
1278
|
+
.replace('px', ''));
|
1279
|
+
var /** @type {?} */ height = this.typeaheadOptionsInScrollableView * optionHeight;
|
1280
|
+
this.guiHeight = height + ulPaddingTop + ulPaddingBottom + "px";
|
1281
|
+
}
|
1282
|
+
this.renderer.setStyle(this.element.nativeElement, 'visibility', 'visible');
|
1283
|
+
};
|
1284
|
+
/**
|
1285
|
+
* @param {?} index
|
1286
|
+
* @return {?}
|
1287
|
+
*/
|
1288
|
+
TypeaheadContainerComponent.prototype.scrollPrevious = /**
|
1289
|
+
* @param {?} index
|
1290
|
+
* @return {?}
|
1291
|
+
*/
|
1292
|
+
function (index) {
|
1293
|
+
if (index === 0) {
|
1294
|
+
this.scrollToBottom();
|
1295
|
+
return;
|
1296
|
+
}
|
1297
|
+
if (this.liElements) {
|
1298
|
+
var /** @type {?} */ liElement = this.liElements.toArray()[index - 1];
|
1299
|
+
if (liElement && !this.isScrolledIntoView(liElement.nativeElement)) {
|
1300
|
+
this.ulElement.nativeElement.scrollTop = liElement.nativeElement.offsetTop;
|
1301
|
+
}
|
1302
|
+
}
|
1303
|
+
};
|
1304
|
+
/**
|
1305
|
+
* @param {?} index
|
1306
|
+
* @return {?}
|
1307
|
+
*/
|
1308
|
+
TypeaheadContainerComponent.prototype.scrollNext = /**
|
1309
|
+
* @param {?} index
|
1310
|
+
* @return {?}
|
1311
|
+
*/
|
1312
|
+
function (index) {
|
1313
|
+
if (index + 1 > this.matches.length - 1) {
|
1314
|
+
this.scrollToTop();
|
1315
|
+
return;
|
1316
|
+
}
|
1317
|
+
if (this.liElements) {
|
1318
|
+
var /** @type {?} */ liElement = this.liElements.toArray()[index + 1];
|
1319
|
+
if (liElement && !this.isScrolledIntoView(liElement.nativeElement)) {
|
1320
|
+
this.ulElement.nativeElement.scrollTop =
|
1321
|
+
liElement.nativeElement.offsetTop -
|
1322
|
+
Number(this.ulElement.nativeElement.offsetHeight) +
|
1323
|
+
Number(liElement.nativeElement.offsetHeight);
|
1324
|
+
}
|
1325
|
+
}
|
1326
|
+
};
|
1327
|
+
/**
|
1328
|
+
* @return {?}
|
1329
|
+
*/
|
1330
|
+
TypeaheadContainerComponent.prototype.scrollToBottom = /**
|
1331
|
+
* @return {?}
|
1332
|
+
*/
|
1333
|
+
function () {
|
1334
|
+
this.ulElement.nativeElement.scrollTop = this.ulElement.nativeElement.scrollHeight;
|
1335
|
+
};
|
1336
|
+
/**
|
1337
|
+
* @return {?}
|
1338
|
+
*/
|
1339
|
+
TypeaheadContainerComponent.prototype.scrollToTop = /**
|
1340
|
+
* @return {?}
|
1341
|
+
*/
|
1342
|
+
function () {
|
1343
|
+
this.ulElement.nativeElement.scrollTop = 0;
|
1344
|
+
};
|
1345
|
+
TypeaheadContainerComponent.decorators = [
|
1346
|
+
{ type: core.Component, args: [{
|
1347
|
+
selector: 'typeahead-container',
|
1348
|
+
// tslint:disable-next-line
|
1349
|
+
template: "<!-- inject options list template -->\n<ng-template [ngTemplateOutlet]=\"optionsListTemplate || (isBs4 ? bs4Template : bs3Template)\"\n [ngTemplateOutletContext]=\"{matches:matches, itemTemplate:itemTemplate, query:query}\"></ng-template>\n\n<!-- default options item template -->\n<ng-template #bsItemTemplate let-match=\"match\" let-query=\"query\"><span [innerHtml]=\"highlight(match, query)\"></span>\n</ng-template>\n\n<!-- Bootstrap 3 options list template -->\n<ng-template #bs3Template>\n <ul class=\"dropdown-menu\"\n #ulElement\n [style.overflow-y]=\"needScrollbar ? 'scroll': 'auto'\"\n [style.height]=\"needScrollbar ? guiHeight: 'auto'\">\n <ng-template ngFor let-match let-i=\"index\" [ngForOf]=\"matches\">\n <li #liElements *ngIf=\"match.isHeader()\" class=\"dropdown-header\">{{ match }}</li>\n <li #liElements *ngIf=\"!match.isHeader()\" [class.active]=\"isActive(match)\" (mouseenter)=\"selectActive(match)\">\n <a href=\"#\" (click)=\"selectMatch(match, $event)\" tabindex=\"-1\">\n <ng-template [ngTemplateOutlet]=\"itemTemplate || bsItemTemplate\"\n [ngTemplateOutletContext]=\"{item:match.item, index:i, match:match, query:query}\"></ng-template>\n </a>\n </li>\n </ng-template>\n </ul>\n</ng-template>\n\n<!-- Bootstrap 4 options list template -->\n<ng-template #bs4Template>\n <ng-template ngFor let-match let-i=\"index\" [ngForOf]=\"matches\">\n <h6 *ngIf=\"match.isHeader()\" class=\"dropdown-header\">{{ match }}</h6>\n <ng-template [ngIf]=\"!match.isHeader()\">\n <button #liElements\n class=\"dropdown-item\"\n (click)=\"selectMatch(match, $event)\"\n (mouseenter)=\"selectActive(match)\"\n [class.active]=\"isActive(match)\">\n <ng-template [ngTemplateOutlet]=\"itemTemplate || bsItemTemplate\"\n [ngTemplateOutletContext]=\"{item:match.item, index:i, match:match, query:query}\"></ng-template>\n </button>\n </ng-template>\n </ng-template>\n</ng-template>\n",
|
1350
|
+
host: {
|
1351
|
+
class: 'dropdown open',
|
1352
|
+
'[class.dropdown-menu]': 'isBs4',
|
1353
|
+
'[style.overflow-y]': "isBs4 && needScrollbar ? 'scroll': 'visible'",
|
1354
|
+
'[style.height]': "isBs4 && needScrollbar ? guiHeight: 'auto'",
|
1355
|
+
'[style.visibility]': "typeaheadScrollable ? 'hidden' : 'visible'",
|
1356
|
+
'[class.dropup]': 'dropup',
|
1357
|
+
style: 'position: absolute;display: block;'
|
1358
|
+
}
|
1359
|
+
}] }
|
1360
|
+
];
|
1361
|
+
/** @nocollapse */
|
1362
|
+
TypeaheadContainerComponent.ctorParameters = function () {
|
1363
|
+
return [
|
1364
|
+
{ type: core.ElementRef, },
|
1365
|
+
{ type: core.Renderer2, },
|
1366
|
+
];
|
1367
|
+
};
|
1368
|
+
TypeaheadContainerComponent.propDecorators = {
|
1369
|
+
"ulElement": [{ type: core.ViewChild, args: ['ulElement',] },],
|
1370
|
+
"liElements": [{ type: core.ViewChildren, args: ['liElements',] },],
|
1371
|
+
"focusLost": [{ type: core.HostListener, args: ['mouseleave',] }, { type: core.HostListener, args: ['blur',] },],
|
1372
|
+
};
|
1373
|
+
return TypeaheadContainerComponent;
|
1374
|
+
}());
|
1375
|
+
|
1376
|
+
/**
|
1377
|
+
* @fileoverview added by tsickle
|
1378
|
+
* @suppress {checkTypes} checked by tsc
|
1379
|
+
*/
|
1380
|
+
/**
|
1381
|
+
* Default values provider for typeahead
|
1382
|
+
*/
|
1383
|
+
var TypeaheadConfig = (function () {
|
1384
|
+
function TypeaheadConfig() {
|
1385
|
+
/**
|
1386
|
+
* used to hide results on blur
|
1387
|
+
*/
|
1388
|
+
this.hideResultsOnBlur = true;
|
1389
|
+
}
|
1390
|
+
TypeaheadConfig.decorators = [
|
1391
|
+
{ type: core.Injectable }
|
1392
|
+
];
|
1393
|
+
return TypeaheadConfig;
|
1394
|
+
}());
|
1395
|
+
|
1396
|
+
/**
|
1397
|
+
* @fileoverview added by tsickle
|
1398
|
+
* @suppress {checkTypes} checked by tsc
|
1399
|
+
*/
|
1400
|
+
var TypeaheadDirective = (function () {
|
1401
|
+
function TypeaheadDirective(ngControl, element, viewContainerRef, renderer, config, cis, changeDetection) {
|
1402
|
+
this.ngControl = ngControl;
|
1403
|
+
this.element = element;
|
1404
|
+
this.renderer = renderer;
|
1405
|
+
this.changeDetection = changeDetection;
|
1406
|
+
/**
|
1407
|
+
* minimal no of characters that needs to be entered before
|
1408
|
+
* typeahead kicks-in. When set to 0, typeahead shows on focus with full
|
1409
|
+
* list of options (limited as normal by typeaheadOptionsLimit)
|
1410
|
+
*/
|
1411
|
+
this.typeaheadMinLength = void 0;
|
1412
|
+
/**
|
1413
|
+
* should be used only in case of typeahead attribute is array.
|
1414
|
+
* If true - loading of options will be async, otherwise - sync.
|
1415
|
+
* true make sense if options array is large.
|
1416
|
+
*/
|
1417
|
+
this.typeaheadAsync = void 0;
|
1418
|
+
/**
|
1419
|
+
* match latin symbols.
|
1420
|
+
* If true the word súper would match super and vice versa.
|
1421
|
+
*/
|
1422
|
+
this.typeaheadLatinize = true;
|
1423
|
+
/**
|
1424
|
+
* Can be use to search words by inserting a single white space between each characters
|
1425
|
+
* for example 'C a l i f o r n i a' will match 'California'.
|
1426
|
+
*/
|
1427
|
+
this.typeaheadSingleWords = true;
|
1428
|
+
/**
|
1429
|
+
* should be used only in case typeaheadSingleWords attribute is true.
|
1430
|
+
* Sets the word delimiter to break words. Defaults to space.
|
1431
|
+
*/
|
1432
|
+
this.typeaheadWordDelimiters = ' ';
|
1433
|
+
/**
|
1434
|
+
* should be used only in case typeaheadSingleWords attribute is true.
|
1435
|
+
* Sets the word delimiter to match exact phrase.
|
1436
|
+
* Defaults to simple and double quotes.
|
1437
|
+
*/
|
1438
|
+
this.typeaheadPhraseDelimiters = '\'"';
|
1439
|
+
/**
|
1440
|
+
* specifies if typeahead is scrollable
|
1441
|
+
*/
|
1442
|
+
this.typeaheadScrollable = false;
|
1443
|
+
/**
|
1444
|
+
* specifies number of options to show in scroll view
|
1445
|
+
*/
|
1446
|
+
this.typeaheadOptionsInScrollableView = 5;
|
1447
|
+
/**
|
1448
|
+
* fired when 'busy' state of this component was changed,
|
1449
|
+
* fired on async mode only, returns boolean
|
1450
|
+
*/
|
1451
|
+
this.typeaheadLoading = new core.EventEmitter();
|
1452
|
+
/**
|
1453
|
+
* fired on every key event and returns true
|
1454
|
+
* in case of matches are not detected
|
1455
|
+
*/
|
1456
|
+
this.typeaheadNoResults = new core.EventEmitter();
|
1457
|
+
/**
|
1458
|
+
* fired when option was selected, return object with data of this option
|
1459
|
+
*/
|
1460
|
+
this.typeaheadOnSelect = new core.EventEmitter();
|
1461
|
+
/**
|
1462
|
+
* fired when blur event occurres. returns the active item
|
1463
|
+
*/
|
1464
|
+
this.typeaheadOnBlur = new core.EventEmitter();
|
1465
|
+
/**
|
1466
|
+
* This attribute indicates that the dropdown should be opened upwards
|
1467
|
+
*/
|
1468
|
+
this.dropup = false;
|
1469
|
+
this.isTypeaheadOptionsListActive = false;
|
1470
|
+
// tslint:disable-next-line:no-any
|
1471
|
+
this.keyUpEventEmitter = new core.EventEmitter();
|
1472
|
+
this.placement = 'bottom-left';
|
1473
|
+
this._subscriptions = [];
|
1474
|
+
this._typeahead = cis.createLoader(element, viewContainerRef, renderer)
|
1475
|
+
.provide({ provide: TypeaheadConfig, useValue: config });
|
1476
|
+
Object.assign(this, { typeaheadHideResultsOnBlur: config.hideResultsOnBlur });
|
1477
|
+
}
|
1478
|
+
/**
|
1479
|
+
* @return {?}
|
1480
|
+
*/
|
1481
|
+
TypeaheadDirective.prototype.ngOnInit = /**
|
1482
|
+
* @return {?}
|
1483
|
+
*/
|
1484
|
+
function () {
|
1485
|
+
this.typeaheadOptionsLimit = this.typeaheadOptionsLimit || 20;
|
1486
|
+
this.typeaheadMinLength =
|
1487
|
+
this.typeaheadMinLength === void 0 ? 1 : this.typeaheadMinLength;
|
1488
|
+
this.typeaheadWaitMs = this.typeaheadWaitMs || 0;
|
1489
|
+
// async should be false in case of array
|
1490
|
+
if (this.typeaheadAsync === undefined &&
|
1491
|
+
!(rxjs.isObservable(this.typeahead))) {
|
1492
|
+
this.typeaheadAsync = false;
|
1493
|
+
}
|
1494
|
+
if (rxjs.isObservable(this.typeahead)) {
|
1495
|
+
this.typeaheadAsync = true;
|
1496
|
+
}
|
1497
|
+
if (this.typeaheadAsync) {
|
1498
|
+
this.asyncActions();
|
1499
|
+
}
|
1500
|
+
else {
|
1501
|
+
this.syncActions();
|
1502
|
+
}
|
1503
|
+
};
|
1504
|
+
/**
|
1505
|
+
* @param {?} e
|
1506
|
+
* @return {?}
|
1507
|
+
*/
|
1508
|
+
// tslint:disable-next-line:no-any
|
1509
|
+
// tslint:disable-next-line:no-any
|
1510
|
+
TypeaheadDirective.prototype.onInput = /**
|
1511
|
+
* @param {?} e
|
1512
|
+
* @return {?}
|
1513
|
+
*/
|
1514
|
+
// tslint:disable-next-line:no-any
|
1515
|
+
function (e) {
|
1516
|
+
// For `<input>`s, use the `value` property. For others that don't have a
|
1517
|
+
// `value` (such as `<span contenteditable="true">`), use either
|
1518
|
+
// `textContent` or `innerText` (depending on which one is supported, i.e.
|
1519
|
+
// Firefox or IE).
|
1520
|
+
var /** @type {?} */ value = e.target.value !== undefined
|
1521
|
+
? e.target.value
|
1522
|
+
: e.target.textContent !== undefined
|
1523
|
+
? e.target.textContent
|
1524
|
+
: e.target.innerText;
|
1525
|
+
if (value != null && value.trim().length >= this.typeaheadMinLength) {
|
1526
|
+
this.typeaheadLoading.emit(true);
|
1527
|
+
this.keyUpEventEmitter.emit(e.target.value);
|
1528
|
+
}
|
1529
|
+
else {
|
1530
|
+
this.typeaheadLoading.emit(false);
|
1531
|
+
this.typeaheadNoResults.emit(false);
|
1532
|
+
this.hide();
|
1533
|
+
}
|
1534
|
+
};
|
1535
|
+
/**
|
1536
|
+
* @param {?} e
|
1537
|
+
* @return {?}
|
1538
|
+
*/
|
1539
|
+
TypeaheadDirective.prototype.onChange = /**
|
1540
|
+
* @param {?} e
|
1541
|
+
* @return {?}
|
1542
|
+
*/
|
1543
|
+
function (e) {
|
1544
|
+
if (this._container) {
|
1545
|
+
// esc
|
1546
|
+
/* tslint:disable-next-line: deprecation */
|
1547
|
+
if (e.keyCode === 27) {
|
1548
|
+
this.hide();
|
1549
|
+
return;
|
1550
|
+
}
|
1551
|
+
// up
|
1552
|
+
/* tslint:disable-next-line: deprecation */
|
1553
|
+
if (e.keyCode === 38) {
|
1554
|
+
this._container.prevActiveMatch();
|
1555
|
+
return;
|
1556
|
+
}
|
1557
|
+
// down
|
1558
|
+
/* tslint:disable-next-line: deprecation */
|
1559
|
+
if (e.keyCode === 40) {
|
1560
|
+
this._container.nextActiveMatch();
|
1561
|
+
return;
|
1562
|
+
}
|
1563
|
+
// enter, tab
|
1564
|
+
/* tslint:disable-next-line: deprecation */
|
1565
|
+
if (e.keyCode === 13) {
|
1566
|
+
this._container.selectActiveMatch();
|
1567
|
+
return;
|
1568
|
+
}
|
1569
|
+
}
|
1570
|
+
};
|
1571
|
+
/**
|
1572
|
+
* @return {?}
|
1573
|
+
*/
|
1574
|
+
TypeaheadDirective.prototype.onFocus = /**
|
1575
|
+
* @return {?}
|
1576
|
+
*/
|
1577
|
+
function () {
|
1578
|
+
if (this.typeaheadMinLength === 0) {
|
1579
|
+
this.typeaheadLoading.emit(true);
|
1580
|
+
this.keyUpEventEmitter.emit(this.element.nativeElement.value || '');
|
1581
|
+
}
|
1582
|
+
};
|
1583
|
+
/**
|
1584
|
+
* @return {?}
|
1585
|
+
*/
|
1586
|
+
TypeaheadDirective.prototype.onBlur = /**
|
1587
|
+
* @return {?}
|
1588
|
+
*/
|
1589
|
+
function () {
|
1590
|
+
if (this._container && !this._container.isFocused) {
|
1591
|
+
this.typeaheadOnBlur.emit(this._container.active);
|
1592
|
+
}
|
1593
|
+
};
|
1594
|
+
/**
|
1595
|
+
* @param {?} e
|
1596
|
+
* @return {?}
|
1597
|
+
*/
|
1598
|
+
TypeaheadDirective.prototype.onKeydown = /**
|
1599
|
+
* @param {?} e
|
1600
|
+
* @return {?}
|
1601
|
+
*/
|
1602
|
+
function (e) {
|
1603
|
+
// no container - no problems
|
1604
|
+
if (!this._container) {
|
1605
|
+
return;
|
1606
|
+
}
|
1607
|
+
// if an item is visible - prevent form submission
|
1608
|
+
/* tslint:disable-next-line: deprecation */
|
1609
|
+
if (e.keyCode === 13) {
|
1610
|
+
e.preventDefault();
|
1611
|
+
return;
|
1612
|
+
}
|
1613
|
+
// if an item is visible - don't change focus
|
1614
|
+
/* tslint:disable-next-line: deprecation */
|
1615
|
+
if (e.keyCode === 9) {
|
1616
|
+
e.preventDefault();
|
1617
|
+
this._container.selectActiveMatch();
|
1618
|
+
return;
|
1619
|
+
}
|
1620
|
+
};
|
1621
|
+
/**
|
1622
|
+
* @param {?} match
|
1623
|
+
* @return {?}
|
1624
|
+
*/
|
1625
|
+
TypeaheadDirective.prototype.changeModel = /**
|
1626
|
+
* @param {?} match
|
1627
|
+
* @return {?}
|
1628
|
+
*/
|
1629
|
+
function (match) {
|
1630
|
+
var /** @type {?} */ valueStr = match.value;
|
1631
|
+
this.ngControl.viewToModelUpdate(valueStr);
|
1632
|
+
(this.ngControl.control).setValue(valueStr);
|
1633
|
+
this.changeDetection.markForCheck();
|
1634
|
+
this.hide();
|
1635
|
+
};
|
1636
|
+
Object.defineProperty(TypeaheadDirective.prototype, "matches", {
|
1637
|
+
get: /**
|
1638
|
+
* @return {?}
|
1639
|
+
*/ function () {
|
1640
|
+
return this._matches;
|
1641
|
+
},
|
1642
|
+
enumerable: true,
|
1643
|
+
configurable: true
|
1644
|
+
});
|
1645
|
+
/**
|
1646
|
+
* @return {?}
|
1647
|
+
*/
|
1648
|
+
TypeaheadDirective.prototype.show = /**
|
1649
|
+
* @return {?}
|
1650
|
+
*/
|
1651
|
+
function () {
|
1652
|
+
var _this = this;
|
1653
|
+
this._typeahead
|
1654
|
+
.attach(TypeaheadContainerComponent)
|
1655
|
+
.to(this.container)
|
1656
|
+
.position({ attachment: (this.dropup ? 'top' : 'bottom') + " left" })
|
1657
|
+
.show({
|
1658
|
+
typeaheadRef: this,
|
1659
|
+
placement: this.placement,
|
1660
|
+
animation: false,
|
1661
|
+
dropup: this.dropup
|
1662
|
+
});
|
1663
|
+
this._outsideClickListener = this.renderer.listen('document', 'click', function (e) {
|
1664
|
+
if (_this.typeaheadMinLength === 0 && _this.element.nativeElement.contains(e.target)) {
|
1665
|
+
return undefined;
|
1666
|
+
}
|
1667
|
+
if (!_this.typeaheadHideResultsOnBlur || _this.element.nativeElement.contains(e.target)) {
|
1668
|
+
return undefined;
|
1669
|
+
}
|
1670
|
+
_this.onOutsideClick();
|
1671
|
+
});
|
1672
|
+
this._container = this._typeahead.instance;
|
1673
|
+
this._container.parent = this;
|
1674
|
+
// This improves the speed as it won't have to be done for each list item
|
1675
|
+
var /** @type {?} */ normalizedQuery = (this.typeaheadLatinize
|
1676
|
+
? latinize(this.ngControl.control.value)
|
1677
|
+
: this.ngControl.control.value)
|
1678
|
+
.toString()
|
1679
|
+
.toLowerCase();
|
1680
|
+
this._container.query = this.typeaheadSingleWords
|
1681
|
+
? tokenize(normalizedQuery, this.typeaheadWordDelimiters, this.typeaheadPhraseDelimiters)
|
1682
|
+
: normalizedQuery;
|
1683
|
+
this._container.matches = this._matches;
|
1684
|
+
this.element.nativeElement.focus();
|
1685
|
+
};
|
1686
|
+
/**
|
1687
|
+
* @return {?}
|
1688
|
+
*/
|
1689
|
+
TypeaheadDirective.prototype.hide = /**
|
1690
|
+
* @return {?}
|
1691
|
+
*/
|
1692
|
+
function () {
|
1693
|
+
if (this._typeahead.isShown) {
|
1694
|
+
this._typeahead.hide();
|
1695
|
+
this._outsideClickListener();
|
1696
|
+
this._container = null;
|
1697
|
+
}
|
1698
|
+
};
|
1699
|
+
/**
|
1700
|
+
* @return {?}
|
1701
|
+
*/
|
1702
|
+
TypeaheadDirective.prototype.onOutsideClick = /**
|
1703
|
+
* @return {?}
|
1704
|
+
*/
|
1705
|
+
function () {
|
1706
|
+
if (this._container && !this._container.isFocused) {
|
1707
|
+
this.hide();
|
1708
|
+
}
|
1709
|
+
};
|
1710
|
+
/**
|
1711
|
+
* @return {?}
|
1712
|
+
*/
|
1713
|
+
TypeaheadDirective.prototype.ngOnDestroy = /**
|
1714
|
+
* @return {?}
|
1715
|
+
*/
|
1716
|
+
function () {
|
1717
|
+
try {
|
1718
|
+
// clean up subscriptions
|
1719
|
+
for (var _a = __values(this._subscriptions), _b = _a.next(); !_b.done; _b = _a.next()) {
|
1720
|
+
var sub = _b.value;
|
1721
|
+
sub.unsubscribe();
|
1722
|
+
}
|
1723
|
+
}
|
1724
|
+
catch (e_1_1) {
|
1725
|
+
e_1 = { error: e_1_1 };
|
1726
|
+
}
|
1727
|
+
finally {
|
1728
|
+
try {
|
1729
|
+
if (_b && !_b.done && (_c = _a.return))
|
1730
|
+
_c.call(_a);
|
1731
|
+
}
|
1732
|
+
finally {
|
1733
|
+
if (e_1)
|
1734
|
+
throw e_1.error;
|
1735
|
+
}
|
1736
|
+
}
|
1737
|
+
this._typeahead.dispose();
|
1738
|
+
var e_1, _c;
|
1739
|
+
};
|
1740
|
+
/**
|
1741
|
+
* @return {?}
|
1742
|
+
*/
|
1743
|
+
TypeaheadDirective.prototype.asyncActions = /**
|
1744
|
+
* @return {?}
|
1745
|
+
*/
|
1746
|
+
function () {
|
1747
|
+
var _this = this;
|
1748
|
+
this._subscriptions.push(this.keyUpEventEmitter
|
1749
|
+
.pipe(operators.debounceTime(this.typeaheadWaitMs), operators.switchMap(function () { return _this.typeahead; }))
|
1750
|
+
.subscribe(function (matches) {
|
1751
|
+
_this.finalizeAsyncCall(matches);
|
1752
|
+
}));
|
1753
|
+
};
|
1754
|
+
/**
|
1755
|
+
* @return {?}
|
1756
|
+
*/
|
1757
|
+
TypeaheadDirective.prototype.syncActions = /**
|
1758
|
+
* @return {?}
|
1759
|
+
*/
|
1760
|
+
function () {
|
1761
|
+
var _this = this;
|
1762
|
+
this._subscriptions.push(this.keyUpEventEmitter
|
1763
|
+
.pipe(operators.debounceTime(this.typeaheadWaitMs), operators.mergeMap(function (value) {
|
1764
|
+
var /** @type {?} */ normalizedQuery = _this.normalizeQuery(value);
|
1765
|
+
return rxjs.from(_this.typeahead)
|
1766
|
+
.pipe(operators.filter(function (option) {
|
1767
|
+
return (option &&
|
1768
|
+
_this.testMatch(_this.normalizeOption(option), normalizedQuery));
|
1769
|
+
}), operators.toArray());
|
1770
|
+
}))
|
1771
|
+
.subscribe(function (matches) {
|
1772
|
+
_this.finalizeAsyncCall(matches);
|
1773
|
+
}));
|
1774
|
+
};
|
1775
|
+
// tslint:disable-next-line:no-any
|
1776
|
+
/**
|
1777
|
+
* @param {?} option
|
1778
|
+
* @return {?}
|
1779
|
+
*/
|
1780
|
+
TypeaheadDirective.prototype.normalizeOption = /**
|
1781
|
+
* @param {?} option
|
1782
|
+
* @return {?}
|
1783
|
+
*/
|
1784
|
+
function (option) {
|
1785
|
+
var /** @type {?} */ optionValue = getValueFromObject(option, this.typeaheadOptionField);
|
1786
|
+
var /** @type {?} */ normalizedOption = this.typeaheadLatinize
|
1787
|
+
? latinize(optionValue)
|
1788
|
+
: optionValue;
|
1789
|
+
return normalizedOption.toLowerCase();
|
1790
|
+
};
|
1791
|
+
/**
|
1792
|
+
* @param {?} value
|
1793
|
+
* @return {?}
|
1794
|
+
*/
|
1795
|
+
TypeaheadDirective.prototype.normalizeQuery = /**
|
1796
|
+
* @param {?} value
|
1797
|
+
* @return {?}
|
1798
|
+
*/
|
1799
|
+
function (value) {
|
1800
|
+
// If singleWords, break model here to not be doing extra work on each
|
1801
|
+
// iteration
|
1802
|
+
var /** @type {?} */ normalizedQuery = (this.typeaheadLatinize
|
1803
|
+
? latinize(value)
|
1804
|
+
: value)
|
1805
|
+
.toString()
|
1806
|
+
.toLowerCase();
|
1807
|
+
normalizedQuery = this.typeaheadSingleWords
|
1808
|
+
? tokenize(normalizedQuery, this.typeaheadWordDelimiters, this.typeaheadPhraseDelimiters)
|
1809
|
+
: normalizedQuery;
|
1810
|
+
return normalizedQuery;
|
1811
|
+
};
|
1812
|
+
/**
|
1813
|
+
* @param {?} match
|
1814
|
+
* @param {?} test
|
1815
|
+
* @return {?}
|
1816
|
+
*/
|
1817
|
+
TypeaheadDirective.prototype.testMatch = /**
|
1818
|
+
* @param {?} match
|
1819
|
+
* @param {?} test
|
1820
|
+
* @return {?}
|
1821
|
+
*/
|
1822
|
+
function (match, test) {
|
1823
|
+
var /** @type {?} */ spaceLength;
|
1824
|
+
if (typeof test === 'object') {
|
1825
|
+
spaceLength = test.length;
|
1826
|
+
for (var /** @type {?} */ i = 0; i < spaceLength; i += 1) {
|
1827
|
+
if (test[i].length > 0 && match.indexOf(test[i]) < 0) {
|
1828
|
+
return false;
|
1829
|
+
}
|
1830
|
+
}
|
1831
|
+
return true;
|
1832
|
+
}
|
1833
|
+
return match.indexOf(test) >= 0;
|
1834
|
+
};
|
1835
|
+
/**
|
1836
|
+
* @param {?} matches
|
1837
|
+
* @return {?}
|
1838
|
+
*/
|
1839
|
+
TypeaheadDirective.prototype.finalizeAsyncCall = /**
|
1840
|
+
* @param {?} matches
|
1841
|
+
* @return {?}
|
1842
|
+
*/
|
1843
|
+
function (matches) {
|
1844
|
+
this.prepareMatches(matches || []);
|
1845
|
+
this.typeaheadLoading.emit(false);
|
1846
|
+
this.typeaheadNoResults.emit(!this.hasMatches());
|
1847
|
+
if (!this.hasMatches()) {
|
1848
|
+
this.hide();
|
1849
|
+
return;
|
1850
|
+
}
|
1851
|
+
if (this._container) {
|
1852
|
+
// fix: remove usage of ngControl internals
|
1853
|
+
var /** @type {?} */ _controlValue = (this.typeaheadLatinize
|
1854
|
+
? latinize(this.ngControl.control.value)
|
1855
|
+
: this.ngControl.control.value) || '';
|
1856
|
+
// This improves the speed as it won't have to be done for each list item
|
1857
|
+
var /** @type {?} */ normalizedQuery = _controlValue.toString().toLowerCase();
|
1858
|
+
this._container.query = this.typeaheadSingleWords
|
1859
|
+
? tokenize(normalizedQuery, this.typeaheadWordDelimiters, this.typeaheadPhraseDelimiters)
|
1860
|
+
: normalizedQuery;
|
1861
|
+
this._container.matches = this._matches;
|
1862
|
+
}
|
1863
|
+
else {
|
1864
|
+
this.show();
|
1865
|
+
}
|
1866
|
+
};
|
1867
|
+
/**
|
1868
|
+
* @param {?} options
|
1869
|
+
* @return {?}
|
1870
|
+
*/
|
1871
|
+
TypeaheadDirective.prototype.prepareMatches = /**
|
1872
|
+
* @param {?} options
|
1873
|
+
* @return {?}
|
1874
|
+
*/
|
1875
|
+
function (options) {
|
1876
|
+
var _this = this;
|
1877
|
+
var /** @type {?} */ limited = options.slice(0, this.typeaheadOptionsLimit);
|
1878
|
+
if (this.typeaheadGroupField) {
|
1879
|
+
var /** @type {?} */ matches_1 = [];
|
1880
|
+
// extract all group names
|
1881
|
+
var /** @type {?} */ groups = limited
|
1882
|
+
.map(function (option) {
|
1883
|
+
return getValueFromObject(option, _this.typeaheadGroupField);
|
1884
|
+
})
|
1885
|
+
.filter(function (v, i, a) { return a.indexOf(v) === i; });
|
1886
|
+
groups.forEach(function (group) {
|
1887
|
+
// add group header to array of matches
|
1888
|
+
// add group header to array of matches
|
1889
|
+
matches_1.push(new TypeaheadMatch(group, group, true));
|
1890
|
+
// add each item of group to array of matches
|
1891
|
+
// add each item of group to array of matches
|
1892
|
+
matches_1 = matches_1.concat(limited
|
1893
|
+
.filter(
|
1894
|
+
// tslint:disable-next-line:no-any
|
1895
|
+
// tslint:disable-next-line:no-any
|
1896
|
+
function (option) {
|
1897
|
+
return getValueFromObject(option, _this.typeaheadGroupField) === group;
|
1898
|
+
})
|
1899
|
+
.map(
|
1900
|
+
// tslint:disable-next-line:no-any
|
1901
|
+
// tslint:disable-next-line:no-any
|
1902
|
+
function (option) {
|
1903
|
+
return new TypeaheadMatch(option, getValueFromObject(option, _this.typeaheadOptionField));
|
1904
|
+
}));
|
1905
|
+
});
|
1906
|
+
this._matches = matches_1;
|
1907
|
+
}
|
1908
|
+
else {
|
1909
|
+
this._matches = limited.map(
|
1910
|
+
// tslint:disable-next-line:no-any
|
1911
|
+
// tslint:disable-next-line:no-any
|
1912
|
+
function (option) {
|
1913
|
+
return new TypeaheadMatch(option, getValueFromObject(option, _this.typeaheadOptionField));
|
1914
|
+
});
|
1915
|
+
}
|
1916
|
+
};
|
1917
|
+
/**
|
1918
|
+
* @return {?}
|
1919
|
+
*/
|
1920
|
+
TypeaheadDirective.prototype.hasMatches = /**
|
1921
|
+
* @return {?}
|
1922
|
+
*/
|
1923
|
+
function () {
|
1924
|
+
return this._matches.length > 0;
|
1925
|
+
};
|
1926
|
+
TypeaheadDirective.decorators = [
|
1927
|
+
{ type: core.Directive, args: [{ selector: '[typeahead]', exportAs: 'bs-typeahead' },] }
|
1928
|
+
];
|
1929
|
+
/** @nocollapse */
|
1930
|
+
TypeaheadDirective.ctorParameters = function () {
|
1931
|
+
return [
|
1932
|
+
{ type: forms.NgControl, },
|
1933
|
+
{ type: core.ElementRef, },
|
1934
|
+
{ type: core.ViewContainerRef, },
|
1935
|
+
{ type: core.Renderer2, },
|
1936
|
+
{ type: TypeaheadConfig, },
|
1937
|
+
{ type: componentLoader.ComponentLoaderFactory, },
|
1938
|
+
{ type: core.ChangeDetectorRef, },
|
1939
|
+
];
|
1940
|
+
};
|
1941
|
+
TypeaheadDirective.propDecorators = {
|
1942
|
+
"typeahead": [{ type: core.Input },],
|
1943
|
+
"typeaheadMinLength": [{ type: core.Input },],
|
1944
|
+
"typeaheadWaitMs": [{ type: core.Input },],
|
1945
|
+
"typeaheadOptionsLimit": [{ type: core.Input },],
|
1946
|
+
"typeaheadOptionField": [{ type: core.Input },],
|
1947
|
+
"typeaheadGroupField": [{ type: core.Input },],
|
1948
|
+
"typeaheadAsync": [{ type: core.Input },],
|
1949
|
+
"typeaheadLatinize": [{ type: core.Input },],
|
1950
|
+
"typeaheadSingleWords": [{ type: core.Input },],
|
1951
|
+
"typeaheadWordDelimiters": [{ type: core.Input },],
|
1952
|
+
"typeaheadPhraseDelimiters": [{ type: core.Input },],
|
1953
|
+
"typeaheadItemTemplate": [{ type: core.Input },],
|
1954
|
+
"optionsListTemplate": [{ type: core.Input },],
|
1955
|
+
"typeaheadScrollable": [{ type: core.Input },],
|
1956
|
+
"typeaheadOptionsInScrollableView": [{ type: core.Input },],
|
1957
|
+
"typeaheadHideResultsOnBlur": [{ type: core.Input },],
|
1958
|
+
"typeaheadLoading": [{ type: core.Output },],
|
1959
|
+
"typeaheadNoResults": [{ type: core.Output },],
|
1960
|
+
"typeaheadOnSelect": [{ type: core.Output },],
|
1961
|
+
"typeaheadOnBlur": [{ type: core.Output },],
|
1962
|
+
"container": [{ type: core.Input },],
|
1963
|
+
"dropup": [{ type: core.Input },],
|
1964
|
+
"onInput": [{ type: core.HostListener, args: ['input', ['$event'],] },],
|
1965
|
+
"onChange": [{ type: core.HostListener, args: ['keyup', ['$event'],] },],
|
1966
|
+
"onFocus": [{ type: core.HostListener, args: ['click',] }, { type: core.HostListener, args: ['focus',] },],
|
1967
|
+
"onBlur": [{ type: core.HostListener, args: ['blur',] },],
|
1968
|
+
"onKeydown": [{ type: core.HostListener, args: ['keydown', ['$event'],] },],
|
1969
|
+
};
|
1970
|
+
return TypeaheadDirective;
|
1971
|
+
}());
|
1972
|
+
|
1973
|
+
/**
|
1974
|
+
* @fileoverview added by tsickle
|
1975
|
+
* @suppress {checkTypes} checked by tsc
|
1976
|
+
*/
|
1977
|
+
var TypeaheadModule = (function () {
|
1978
|
+
function TypeaheadModule() {
|
1979
|
+
}
|
1980
|
+
/**
|
1981
|
+
* @return {?}
|
1982
|
+
*/
|
1983
|
+
TypeaheadModule.forRoot = /**
|
1984
|
+
* @return {?}
|
1985
|
+
*/
|
1986
|
+
function () {
|
1987
|
+
return {
|
1988
|
+
ngModule: TypeaheadModule,
|
1989
|
+
providers: [componentLoader.ComponentLoaderFactory, positioning.PositioningService, TypeaheadConfig]
|
1990
|
+
};
|
1991
|
+
};
|
1992
|
+
TypeaheadModule.decorators = [
|
1993
|
+
{ type: core.NgModule, args: [{
|
1994
|
+
imports: [common.CommonModule],
|
1995
|
+
declarations: [TypeaheadContainerComponent, TypeaheadDirective],
|
1996
|
+
exports: [TypeaheadContainerComponent, TypeaheadDirective],
|
1997
|
+
entryComponents: [TypeaheadContainerComponent]
|
1998
|
+
},] }
|
1999
|
+
];
|
2000
|
+
return TypeaheadModule;
|
2001
|
+
}());
|
2002
|
+
|
2003
|
+
/**
|
2004
|
+
* @fileoverview added by tsickle
|
2005
|
+
* @suppress {checkTypes} checked by tsc
|
2006
|
+
*/
|
2007
|
+
|
2008
|
+
/**
|
2009
|
+
* @fileoverview added by tsickle
|
2010
|
+
* @suppress {checkTypes} checked by tsc
|
2011
|
+
*/
|
2012
|
+
|
2013
|
+
exports.latinMap = latinMap;
|
2014
|
+
exports.TypeaheadOptions = TypeaheadOptions;
|
2015
|
+
exports.TypeaheadMatch = TypeaheadMatch;
|
2016
|
+
exports.escapeRegexp = escapeRegexp;
|
2017
|
+
exports.getValueFromObject = getValueFromObject;
|
2018
|
+
exports.tokenize = tokenize;
|
2019
|
+
exports.latinize = latinize;
|
2020
|
+
exports.TypeaheadContainerComponent = TypeaheadContainerComponent;
|
2021
|
+
exports.TypeaheadDirective = TypeaheadDirective;
|
2022
|
+
exports.TypeaheadModule = TypeaheadModule;
|
2023
|
+
exports.TypeaheadConfig = TypeaheadConfig;
|
2024
|
+
|
2025
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
2026
|
+
|
2027
|
+
})));
|
2028
|
+
|
2029
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWJvb3RzdHJhcC10eXBlYWhlYWQudW1kLmpzLm1hcCIsInNvdXJjZXMiOlsibmc6Ly9uZ3gtYm9vdHN0cmFwL3R5cGVhaGVhZC9sYXRpbi1tYXAudHMiLCJuZzovL25neC1ib290c3RyYXAvdHlwZWFoZWFkL3R5cGVhaGVhZC1vcHRpb25zLmNsYXNzLnRzIiwibmc6Ly9uZ3gtYm9vdHN0cmFwL3R5cGVhaGVhZC90eXBlYWhlYWQtbWF0Y2guY2xhc3MudHMiLCJub2RlX21vZHVsZXMvdHNsaWIvdHNsaWIuZXM2LmpzIiwibmc6Ly9uZ3gtYm9vdHN0cmFwL3R5cGVhaGVhZC90eXBlYWhlYWQtdXRpbHMudHMiLCJuZzovL25neC1ib290c3RyYXAvdHlwZWFoZWFkL3R5cGVhaGVhZC1jb250YWluZXIuY29tcG9uZW50LnRzIiwibmc6Ly9uZ3gtYm9vdHN0cmFwL3R5cGVhaGVhZC90eXBlYWhlYWQuY29uZmlnLnRzIiwibmc6Ly9uZ3gtYm9vdHN0cmFwL3R5cGVhaGVhZC90eXBlYWhlYWQuZGlyZWN0aXZlLnRzIiwibmc6Ly9uZ3gtYm9vdHN0cmFwL3R5cGVhaGVhZC90eXBlYWhlYWQubW9kdWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIHRzbGludDpkaXNhYmxlICovXG5leHBvcnQgY29uc3QgbGF0aW5NYXA6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgJ8ODwoEnOiAnQScsXG4gICAgJ8OEwoInOiAnQScsXG4gICAgJ8OhwrrCric6ICdBJyxcbiAgICAnw6HCusK2JzogJ0EnLFxuICAgICfDocK6wrAnOiAnQScsXG4gICAgJ8OhwrrCsic6ICdBJyxcbiAgICAnw6HCusK0JzogJ0EnLFxuICAgICfDh8KNJzogJ0EnLFxuICAgICfDg8KCJzogJ0EnLFxuICAgICfDocK6wqQnOiAnQScsXG4gICAgJ8OhwrrCrCc6ICdBJyxcbiAgICAnw6HCusKmJzogJ0EnLFxuICAgICfDocK6wqgnOiAnQScsXG4gICAgJ8OhwrrCqic6ICdBJyxcbiAgICAnw4PChCc6ICdBJyxcbiAgICAnw4fCnic6ICdBJyxcbiAgICAnw4jCpic6ICdBJyxcbiAgICAnw4fCoCc6ICdBJyxcbiAgICAnw6HCusKgJzogJ0EnLFxuICAgICfDiMKAJzogJ0EnLFxuICAgICfDg8KAJzogJ0EnLFxuICAgICfDocK6wqInOiAnQScsXG4gICAgJ8OIwoInOiAnQScsXG4gICAgJ8OEwoAnOiAnQScsXG4gICAgJ8OEwoQnOiAnQScsXG4gICAgJ8ODwoUnOiAnQScsXG4gICAgJ8OHwronOiAnQScsXG4gICAgJ8OhwrjCgCc6ICdBJyxcbiAgICAnw4jCuic6ICdBJyxcbiAgICAnw4PCgyc6ICdBJyxcbiAgICAnw6rCnMKyJzogJ0FBJyxcbiAgICAnw4PChic6ICdBRScsXG4gICAgJ8OHwrwnOiAnQUUnLFxuICAgICfDh8KiJzogJ0FFJyxcbiAgICAnw6rCnMK0JzogJ0FPJyxcbiAgICAnw6rCnMK2JzogJ0FVJyxcbiAgICAnw6rCnMK4JzogJ0FWJyxcbiAgICAnw6rCnMK6JzogJ0FWJyxcbiAgICAnw6rCnMK8JzogJ0FZJyxcbiAgICAnw6HCuMKCJzogJ0InLFxuICAgICfDocK4woQnOiAnQicsXG4gICAgJ8OGwoEnOiAnQicsXG4gICAgJ8OhwrjChic6ICdCJyxcbiAgICAnw4nCgyc6ICdCJyxcbiAgICAnw4bCgic6ICdCJyxcbiAgICAnw4TChic6ICdDJyxcbiAgICAnw4TCjCc6ICdDJyxcbiAgICAnw4PChyc6ICdDJyxcbiAgICAnw6HCuMKIJzogJ0MnLFxuICAgICfDhMKIJzogJ0MnLFxuICAgICfDhMKKJzogJ0MnLFxuICAgICfDhsKHJzogJ0MnLFxuICAgICfDiMK7JzogJ0MnLFxuICAgICfDhMKOJzogJ0QnLFxuICAgICfDocK4wpAnOiAnRCcsXG4gICAgJ8OhwrjCkic6ICdEJyxcbiAgICAnw6HCuMKKJzogJ0QnLFxuICAgICfDocK4wownOiAnRCcsXG4gICAgJ8OGwoonOiAnRCcsXG4gICAgJ8OhwrjCjic6ICdEJyxcbiAgICAnw4fCsic6ICdEJyxcbiAgICAnw4fChSc6ICdEJyxcbiAgICAnw4TCkCc6ICdEJyxcbiAgICAnw4bCiyc6ICdEJyxcbiAgICAnw4fCsSc6ICdEWicsXG4gICAgJ8OHwoQnOiAnRFonLFxuICAgICfDg8KJJzogJ0UnLFxuICAgICfDhMKUJzogJ0UnLFxuICAgICfDhMKaJzogJ0UnLFxuICAgICfDiMKoJzogJ0UnLFxuICAgICfDocK4wpwnOiAnRScsXG4gICAgJ8ODwoonOiAnRScsXG4gICAgJ8OhwrrCvic6ICdFJyxcbiAgICAnw6HCu8KGJzogJ0UnLFxuICAgICfDocK7woAnOiAnRScsXG4gICAgJ8OhwrvCgic6ICdFJyxcbiAgICAnw6HCu8KEJzogJ0UnLFxuICAgICfDocK4wpgnOiAnRScsXG4gICAgJ8ODwosnOiAnRScsXG4gICAgJ8OEwpYnOiAnRScsXG4gICAgJ8OhwrrCuCc6ICdFJyxcbiAgICAnw4jChCc6ICdFJyxcbiAgICAnw4PCiCc6ICdFJyxcbiAgICAnw6HCusK6JzogJ0UnLFxuICAgICfDiMKGJzogJ0UnLFxuICAgICfDhMKSJzogJ0UnLFxuICAgICfDocK4wpYnOiAnRScsXG4gICAgJ8OhwrjClCc6ICdFJyxcbiAgICAnw4TCmCc6ICdFJyxcbiAgICAnw4nChic6ICdFJyxcbiAgICAnw6HCusK8JzogJ0UnLFxuICAgICfDocK4wponOiAnRScsXG4gICAgJ8Oqwp3Cqic6ICdFVCcsXG4gICAgJ8OhwrjCnic6ICdGJyxcbiAgICAnw4bCkSc6ICdGJyxcbiAgICAnw4fCtCc6ICdHJyxcbiAgICAnw4TCnic6ICdHJyxcbiAgICAnw4fCpic6ICdHJyxcbiAgICAnw4TCoic6ICdHJyxcbiAgICAnw4TCnCc6ICdHJyxcbiAgICAnw4TCoCc6ICdHJyxcbiAgICAnw4bCkyc6ICdHJyxcbiAgICAnw6HCuMKgJzogJ0cnLFxuICAgICfDh8KkJzogJ0cnLFxuICAgICfDocK4wqonOiAnSCcsXG4gICAgJ8OIwp4nOiAnSCcsXG4gICAgJ8OhwrjCqCc6ICdIJyxcbiAgICAnw4TCpCc6ICdIJyxcbiAgICAnw6LCscKnJzogJ0gnLFxuICAgICfDocK4wqYnOiAnSCcsXG4gICAgJ8OhwrjCoic6ICdIJyxcbiAgICAnw6HCuMKkJzogJ0gnLFxuICAgICfDhMKmJzogJ0gnLFxuICAgICfDg8KNJzogJ0knLFxuICAgICfDhMKsJzogJ0knLFxuICAgICfDh8KPJzogJ0knLFxuICAgICfDg8KOJzogJ0knLFxuICAgICfDg8KPJzogJ0knLFxuICAgICfDocK4wq4nOiAnSScsXG4gICAgJ8OEwrAnOiAnSScsXG4gICAgJ8OhwrvCiic6ICdJJyxcbiAgICAnw4jCiCc6ICdJJyxcbiAgICAnw4PCjCc6ICdJJyxcbiAgICAnw6HCu8KIJzogJ0knLFxuICAgICfDiMKKJzogJ0knLFxuICAgICfDhMKqJzogJ0knLFxuICAgICfDhMKuJzogJ0knLFxuICAgICfDhsKXJzogJ0knLFxuICAgICfDhMKoJzogJ0knLFxuICAgICfDocK4wqwnOiAnSScsXG4gICAgJ8Oqwp3CuSc6ICdEJyxcbiAgICAnw6rCncK7JzogJ0YnLFxuICAgICfDqsKdwr0nOiAnRycsXG4gICAgJ8Oqwp7Cgic6ICdSJyxcbiAgICAnw6rCnsKEJzogJ1MnLFxuICAgICfDqsKewoYnOiAnVCcsXG4gICAgJ8Oqwp3CrCc6ICdJUycsXG4gICAgJ8OEwrQnOiAnSicsXG4gICAgJ8OJwognOiAnSicsXG4gICAgJ8OhwrjCsCc6ICdLJyxcbiAgICAnw4fCqCc6ICdLJyxcbiAgICAnw4TCtic6ICdLJyxcbiAgICAnw6LCscKpJzogJ0snLFxuICAgICfDqsKdwoInOiAnSycsXG4gICAgJ8OhwrjCsic6ICdLJyxcbiAgICAnw4bCmCc6ICdLJyxcbiAgICAnw6HCuMK0JzogJ0snLFxuICAgICfDqsKdwoAnOiAnSycsXG4gICAgJ8Oqwp3ChCc6ICdLJyxcbiAgICAnw4TCuSc6ICdMJyxcbiAgICAnw4jCvSc6ICdMJyxcbiAgICAnw4TCvSc6ICdMJyxcbiAgICAnw4TCuyc6ICdMJyxcbiAgICAnw6HCuMK8JzogJ0wnLFxuICAgICfDocK4wrYnOiAnTCcsXG4gICAgJ8OhwrjCuCc6ICdMJyxcbiAgICAnw6LCscKgJzogJ0wnLFxuICAgICfDqsKdwognOiAnTCcsXG4gICAgJ8OhwrjCuic6ICdMJyxcbiAgICAnw4TCvyc6ICdMJyxcbiAgICAnw6LCscKiJzogJ0wnLFxuICAgICfDh8KIJzogJ0wnLFxuICAgICfDhcKBJzogJ0wnLFxuICAgICfDh8KHJzogJ0xKJyxcbiAgICAnw6HCuMK+JzogJ00nLFxuICAgICfDocK5woAnOiAnTScsXG4gICAgJ8OhwrnCgic6ICdNJyxcbiAgICAnw6LCscKuJzogJ00nLFxuICAgICfDhcKDJzogJ04nLFxuICAgICfDhcKHJzogJ04nLFxuICAgICfDhcKFJzogJ04nLFxuICAgICfDocK5woonOiAnTicsXG4gICAgJ8OhwrnChCc6ICdOJyxcbiAgICAnw6HCucKGJzogJ04nLFxuICAgICfDh8K4JzogJ04nLFxuICAgICfDhsKdJzogJ04nLFxuICAgICfDocK5wognOiAnTicsXG4gICAgJ8OIwqAnOiAnTicsXG4gICAgJ8OHwosnOiAnTicsXG4gICAgJ8ODwpEnOiAnTicsXG4gICAgJ8OHwoonOiAnTkonLFxuICAgICfDg8KTJzogJ08nLFxuICAgICfDhcKOJzogJ08nLFxuICAgICfDh8KRJzogJ08nLFxuICAgICfDg8KUJzogJ08nLFxuICAgICfDocK7wpAnOiAnTycsXG4gICAgJ8OhwrvCmCc6ICdPJyxcbiAgICAnw6HCu8KSJzogJ08nLFxuICAgICfDocK7wpQnOiAnTycsXG4gICAgJ8OhwrvClic6ICdPJyxcbiAgICAnw4PClic6ICdPJyxcbiAgICAnw4jCqic6ICdPJyxcbiAgICAnw4jCric6ICdPJyxcbiAgICAnw4jCsCc6ICdPJyxcbiAgICAnw6HCu8KMJzogJ08nLFxuICAgICfDhcKQJzogJ08nLFxuICAgICfDiMKMJzogJ08nLFxuICAgICfDg8KSJzogJ08nLFxuICAgICfDocK7wo4nOiAnTycsXG4gICAgJ8OGwqAnOiAnTycsXG4gICAgJ8OhwrvCmic6ICdPJyxcbiAgICAnw6HCu8KiJzogJ08nLFxuICAgICfDocK7wpwnOiAnTycsXG4gICAgJ8OhwrvCnic6ICdPJyxcbiAgICAnw6HCu8KgJzogJ08nLFxuICAgICfDiMKOJzogJ08nLFxuICAgICfDqsKdwoonOiAnTycsXG4gICAgJ8Oqwp3CjCc6ICdPJyxcbiAgICAnw4XCjCc6ICdPJyxcbiAgICAnw6HCucKSJzogJ08nLFxuICAgICfDocK5wpAnOiAnTycsXG4gICAgJ8OGwp8nOiAnTycsXG4gICAgJ8OHwqonOiAnTycsXG4gICAgJ8OHwqwnOiAnTycsXG4gICAgJ8ODwpgnOiAnTycsXG4gICAgJ8OHwr4nOiAnTycsXG4gICAgJ8ODwpUnOiAnTycsXG4gICAgJ8OhwrnCjCc6ICdPJyxcbiAgICAnw6HCucKOJzogJ08nLFxuICAgICfDiMKsJzogJ08nLFxuICAgICfDhsKiJzogJ09JJyxcbiAgICAnw6rCncKOJzogJ09PJyxcbiAgICAnw4bCkCc6ICdFJyxcbiAgICAnw4bChic6ICdPJyxcbiAgICAnw4jCoic6ICdPVScsXG4gICAgJ8OhwrnClCc6ICdQJyxcbiAgICAnw6HCucKWJzogJ1AnLFxuICAgICfDqsKdwpInOiAnUCcsXG4gICAgJ8OGwqQnOiAnUCcsXG4gICAgJ8Oqwp3ClCc6ICdQJyxcbiAgICAnw6LCscKjJzogJ1AnLFxuICAgICfDqsKdwpAnOiAnUCcsXG4gICAgJ8Oqwp3CmCc6ICdRJyxcbiAgICAnw6rCncKWJzogJ1EnLFxuICAgICfDhcKUJzogJ1InLFxuICAgICfDhcKYJzogJ1InLFxuICAgICfDhcKWJzogJ1InLFxuICAgICfDocK5wpgnOiAnUicsXG4gICAgJ8OhwrnCmic6ICdSJyxcbiAgICAnw6HCucKcJzogJ1InLFxuICAgICfDiMKQJzogJ1InLFxuICAgICfDiMKSJzogJ1InLFxuICAgICfDocK5wp4nOiAnUicsXG4gICAgJ8OJwownOiAnUicsXG4gICAgJ8OiwrHCpCc6ICdSJyxcbiAgICAnw6rCnMK+JzogJ0MnLFxuICAgICfDhsKOJzogJ0UnLFxuICAgICfDhcKaJzogJ1MnLFxuICAgICfDocK5wqQnOiAnUycsXG4gICAgJ8OFwqAnOiAnUycsXG4gICAgJ8OhwrnCpic6ICdTJyxcbiAgICAnw4XCnic6ICdTJyxcbiAgICAnw4XCnCc6ICdTJyxcbiAgICAnw4jCmCc6ICdTJyxcbiAgICAnw6HCucKgJzogJ1MnLFxuICAgICfDocK5wqInOiAnUycsXG4gICAgJ8OhwrnCqCc6ICdTJyxcbiAgICAnw4XCpCc6ICdUJyxcbiAgICAnw4XCoic6ICdUJyxcbiAgICAnw6HCucKwJzogJ1QnLFxuICAgICfDiMKaJzogJ1QnLFxuICAgICfDiMK+JzogJ1QnLFxuICAgICfDocK5wqonOiAnVCcsXG4gICAgJ8OhwrnCrCc6ICdUJyxcbiAgICAnw4bCrCc6ICdUJyxcbiAgICAnw6HCucKuJzogJ1QnLFxuICAgICfDhsKuJzogJ1QnLFxuICAgICfDhcKmJzogJ1QnLFxuICAgICfDosKxwq8nOiAnQScsXG4gICAgJ8Oqwp7CgCc6ICdMJyxcbiAgICAnw4bCnCc6ICdNJyxcbiAgICAnw4nChSc6ICdWJyxcbiAgICAnw6rCnMKoJzogJ1RaJyxcbiAgICAnw4PCmic6ICdVJyxcbiAgICAnw4XCrCc6ICdVJyxcbiAgICAnw4fCkyc6ICdVJyxcbiAgICAnw4PCmyc6ICdVJyxcbiAgICAnw6HCucK2JzogJ1UnLFxuICAgICfDg8KcJzogJ1UnLFxuICAgICfDh8KXJzogJ1UnLFxuICAgICfDh8KZJzogJ1UnLFxuICAgICfDh8KbJzogJ1UnLFxuICAgICfDh8KVJzogJ1UnLFxuICAgICfDocK5wrInOiAnVScsXG4gICAgJ8OhwrvCpCc6ICdVJyxcbiAgICAnw4XCsCc6ICdVJyxcbiAgICAnw4jClCc6ICdVJyxcbiAgICAnw4PCmSc6ICdVJyxcbiAgICAnw6HCu8KmJzogJ1UnLFxuICAgICfDhsKvJzogJ1UnLFxuICAgICfDocK7wqgnOiAnVScsXG4gICAgJ8OhwrvCsCc6ICdVJyxcbiAgICAnw6HCu8KqJzogJ1UnLFxuICAgICfDocK7wqwnOiAnVScsXG4gICAgJ8OhwrvCric6ICdVJyxcbiAgICAnw4jClic6ICdVJyxcbiAgICAnw4XCqic6ICdVJyxcbiAgICAnw6HCucK6JzogJ1UnLFxuICAgICfDhcKyJzogJ1UnLFxuICAgICfDhcKuJzogJ1UnLFxuICAgICfDhcKoJzogJ1UnLFxuICAgICfDocK5wrgnOiAnVScsXG4gICAgJ8OhwrnCtCc6ICdVJyxcbiAgICAnw6rCncKeJzogJ1YnLFxuICAgICfDocK5wr4nOiAnVicsXG4gICAgJ8OGwrInOiAnVicsXG4gICAgJ8OhwrnCvCc6ICdWJyxcbiAgICAnw6rCncKgJzogJ1ZZJyxcbiAgICAnw6HCusKCJzogJ1cnLFxuICAgICfDhcK0JzogJ1cnLFxuICAgICfDocK6woQnOiAnVycsXG4gICAgJ8OhwrrChic6ICdXJyxcbiAgICAnw6HCusKIJzogJ1cnLFxuICAgICfDocK6woAnOiAnVycsXG4gICAgJ8OiwrHCsic6ICdXJyxcbiAgICAnw6HCusKMJzogJ1gnLFxuICAgICfDocK6woonOiAnWCcsXG4gICAgJ8ODwp0nOiAnWScsXG4gICAgJ8OFwrYnOiAnWScsXG4gICAgJ8OFwrgnOiAnWScsXG4gICAgJ8OhwrrCjic6ICdZJyxcbiAgICAnw6HCu8K0JzogJ1knLFxuICAgICfDocK7wrInOiAnWScsXG4gICAgJ8OGwrMnOiAnWScsXG4gICAgJ8OhwrvCtic6ICdZJyxcbiAgICAnw6HCu8K+JzogJ1knLFxuICAgICfDiMKyJzogJ1knLFxuICAgICfDicKOJzogJ1knLFxuICAgICfDocK7wrgnOiAnWScsXG4gICAgJ8OFwrknOiAnWicsXG4gICAgJ8OFwr0nOiAnWicsXG4gICAgJ8OhwrrCkCc6ICdaJyxcbiAgICAnw6LCscKrJzogJ1onLFxuICAgICfDhcK7JzogJ1onLFxuICAgICfDocK6wpInOiAnWicsXG4gICAgJ8OIwqQnOiAnWicsXG4gICAgJ8OhwrrClCc6ICdaJyxcbiAgICAnw4bCtSc6ICdaJyxcbiAgICAnw4TCsic6ICdJSicsXG4gICAgJ8OFwpInOiAnT0UnLFxuICAgICfDocK0woAnOiAnQScsXG4gICAgJ8OhwrTCgSc6ICdBRScsXG4gICAgJ8OKwpknOiAnQicsXG4gICAgJ8OhwrTCgyc6ICdCJyxcbiAgICAnw6HCtMKEJzogJ0MnLFxuICAgICfDocK0woUnOiAnRCcsXG4gICAgJ8OhwrTChyc6ICdFJyxcbiAgICAnw6rCnMKwJzogJ0YnLFxuICAgICfDicKiJzogJ0cnLFxuICAgICfDisKbJzogJ0cnLFxuICAgICfDisKcJzogJ0gnLFxuICAgICfDicKqJzogJ0knLFxuICAgICfDisKBJzogJ1InLFxuICAgICfDocK0woonOiAnSicsXG4gICAgJ8OhwrTCiyc6ICdLJyxcbiAgICAnw4rCnyc6ICdMJyxcbiAgICAnw6HCtMKMJzogJ0wnLFxuICAgICfDocK0wo0nOiAnTScsXG4gICAgJ8OJwrQnOiAnTicsXG4gICAgJ8OhwrTCjyc6ICdPJyxcbiAgICAnw4nCtic6ICdPRScsXG4gICAgJ8OhwrTCkCc6ICdPJyxcbiAgICAnw6HCtMKVJzogJ09VJyxcbiAgICAnw6HCtMKYJzogJ1AnLFxuICAgICfDisKAJzogJ1InLFxuICAgICfDocK0wo4nOiAnTicsXG4gICAgJ8OhwrTCmSc6ICdSJyxcbiAgICAnw6rCnMKxJzogJ1MnLFxuICAgICfDocK0wpsnOiAnVCcsXG4gICAgJ8OiwrHCuyc6ICdFJyxcbiAgICAnw6HCtMKaJzogJ1InLFxuICAgICfDocK0wpwnOiAnVScsXG4gICAgJ8OhwrTCoCc6ICdWJyxcbiAgICAnw6HCtMKhJzogJ1cnLFxuICAgICfDisKPJzogJ1knLFxuICAgICfDocK0wqInOiAnWicsXG4gICAgJ8ODwqEnOiAnYScsXG4gICAgJ8OEwoMnOiAnYScsXG4gICAgJ8OhwrrCryc6ICdhJyxcbiAgICAnw6HCusK3JzogJ2EnLFxuICAgICfDocK6wrEnOiAnYScsXG4gICAgJ8OhwrrCsyc6ICdhJyxcbiAgICAnw6HCusK1JzogJ2EnLFxuICAgICfDh8KOJzogJ2EnLFxuICAgICfDg8KiJzogJ2EnLFxuICAgICfDocK6wqUnOiAnYScsXG4gICAgJ8OhwrrCrSc6ICdhJyxcbiAgICAnw6HCusKnJzogJ2EnLFxuICAgICfDocK6wqknOiAnYScsXG4gICAgJ8OhwrrCqyc6ICdhJyxcbiAgICAnw4PCpCc6ICdhJyxcbiAgICAnw4fCnyc6ICdhJyxcbiAgICAnw4jCpyc6ICdhJyxcbiAgICAnw4fCoSc6ICdhJyxcbiAgICAnw6HCusKhJzogJ2EnLFxuICAgICfDiMKBJzogJ2EnLFxuICAgICfDg8KgJzogJ2EnLFxuICAgICfDocK6wqMnOiAnYScsXG4gICAgJ8OIwoMnOiAnYScsXG4gICAgJ8OEwoEnOiAnYScsXG4gICAgJ8OEwoUnOiAnYScsXG4gICAgJ8OhwrbCjyc6ICdhJyxcbiAgICAnw6HCusKaJzogJ2EnLFxuICAgICfDg8KlJzogJ2EnLFxuICAgICfDh8K7JzogJ2EnLFxuICAgICfDocK4woEnOiAnYScsXG4gICAgJ8OiwrHCpSc6ICdhJyxcbiAgICAnw4PCoyc6ICdhJyxcbiAgICAnw6rCnMKzJzogJ2FhJyxcbiAgICAnw4PCpic6ICdhZScsXG4gICAgJ8OHwr0nOiAnYWUnLFxuICAgICfDh8KjJzogJ2FlJyxcbiAgICAnw6rCnMK1JzogJ2FvJyxcbiAgICAnw6rCnMK3JzogJ2F1JyxcbiAgICAnw6rCnMK5JzogJ2F2JyxcbiAgICAnw6rCnMK7JzogJ2F2JyxcbiAgICAnw6rCnMK9JzogJ2F5JyxcbiAgICAnw6HCuMKDJzogJ2InLFxuICAgICfDocK4woUnOiAnYicsXG4gICAgJ8OJwpMnOiAnYicsXG4gICAgJ8OhwrjChyc6ICdiJyxcbiAgICAnw6HCtcKsJzogJ2InLFxuICAgICfDocK2woAnOiAnYicsXG4gICAgJ8OGwoAnOiAnYicsXG4gICAgJ8OGwoMnOiAnYicsXG4gICAgJ8OJwrUnOiAnbycsXG4gICAgJ8OEwocnOiAnYycsXG4gICAgJ8OEwo0nOiAnYycsXG4gICAgJ8ODwqcnOiAnYycsXG4gICAgJ8OhwrjCiSc6ICdjJyxcbiAgICAnw4TCiSc6ICdjJyxcbiAgICAnw4nClSc6ICdjJyxcbiAgICAnw4TCiyc6ICdjJyxcbiAgICAnw4bCiCc6ICdjJyxcbiAgICAnw4jCvCc6ICdjJyxcbiAgICAnw4TCjyc6ICdkJyxcbiAgICAnw6HCuMKRJzogJ2QnLFxuICAgICfDocK4wpMnOiAnZCcsXG4gICAgJ8OIwqEnOiAnZCcsXG4gICAgJ8OhwrjCiyc6ICdkJyxcbiAgICAnw6HCuMKNJzogJ2QnLFxuICAgICfDicKXJzogJ2QnLFxuICAgICfDocK2wpEnOiAnZCcsXG4gICAgJ8OhwrjCjyc6ICdkJyxcbiAgICAnw6HCtcKtJzogJ2QnLFxuICAgICfDocK2woEnOiAnZCcsXG4gICAgJ8OEwpEnOiAnZCcsXG4gICAgJ8OJwpYnOiAnZCcsXG4gICAgJ8OGwownOiAnZCcsXG4gICAgJ8OEwrEnOiAnaScsXG4gICAgJ8OIwrcnOiAnaicsXG4gICAgJ8OJwp8nOiAnaicsXG4gICAgJ8OKwoQnOiAnaicsXG4gICAgJ8OHwrMnOiAnZHonLFxuICAgICfDh8KGJzogJ2R6JyxcbiAgICAnw4PCqSc6ICdlJyxcbiAgICAnw4TClSc6ICdlJyxcbiAgICAnw4TCmyc6ICdlJyxcbiAgICAnw4jCqSc6ICdlJyxcbiAgICAnw6HCuMKdJzogJ2UnLFxuICAgICfDg8KqJzogJ2UnLFxuICAgICfDocK6wr8nOiAnZScsXG4gICAgJ8OhwrvChyc6ICdlJyxcbiAgICAnw6HCu8KBJzogJ2UnLFxuICAgICfDocK7woMnOiAnZScsXG4gICAgJ8OhwrvChSc6ICdlJyxcbiAgICAnw6HCuMKZJzogJ2UnLFxuICAgICfDg8KrJzogJ2UnLFxuICAgICfDhMKXJzogJ2UnLFxuICAgICfDocK6wrknOiAnZScsXG4gICAgJ8OIwoUnOiAnZScsXG4gICAgJ8ODwqgnOiAnZScsXG4gICAgJ8OhwrrCuyc6ICdlJyxcbiAgICAnw4jChyc6ICdlJyxcbiAgICAnw4TCkyc6ICdlJyxcbiAgICAnw6HCuMKXJzogJ2UnLFxuICAgICfDocK4wpUnOiAnZScsXG4gICAgJ8OiwrHCuCc6ICdlJyxcbiAgICAnw4TCmSc6ICdlJyxcbiAgICAnw6HCtsKSJzogJ2UnLFxuICAgICfDicKHJzogJ2UnLFxuICAgICfDocK6wr0nOiAnZScsXG4gICAgJ8OhwrjCmyc6ICdlJyxcbiAgICAnw6rCncKrJzogJ2V0JyxcbiAgICAnw6HCuMKfJzogJ2YnLFxuICAgICfDhsKSJzogJ2YnLFxuICAgICfDocK1wq4nOiAnZicsXG4gICAgJ8OhwrbCgic6ICdmJyxcbiAgICAnw4fCtSc6ICdnJyxcbiAgICAnw4TCnyc6ICdnJyxcbiAgICAnw4fCpyc6ICdnJyxcbiAgICAnw4TCoyc6ICdnJyxcbiAgICAnw4TCnSc6ICdnJyxcbiAgICAnw4TCoSc6ICdnJyxcbiAgICAnw4nCoCc6ICdnJyxcbiAgICAnw6HCuMKhJzogJ2cnLFxuICAgICfDocK2woMnOiAnZycsXG4gICAgJ8OHwqUnOiAnZycsXG4gICAgJ8OhwrjCqyc6ICdoJyxcbiAgICAnw4jCnyc6ICdoJyxcbiAgICAnw6HCuMKpJzogJ2gnLFxuICAgICfDhMKlJzogJ2gnLFxuICAgICfDosKxwqgnOiAnaCcsXG4gICAgJ8OhwrjCpyc6ICdoJyxcbiAgICAnw6HCuMKjJzogJ2gnLFxuICAgICfDocK4wqUnOiAnaCcsXG4gICAgJ8OJwqYnOiAnaCcsXG4gICAgJ8OhwrrClic6ICdoJyxcbiAgICAnw4TCpyc6ICdoJyxcbiAgICAnw4bClSc6ICdodicsXG4gICAgJ8ODwq0nOiAnaScsXG4gICAgJ8OEwq0nOiAnaScsXG4gICAgJ8OHwpAnOiAnaScsXG4gICAgJ8ODwq4nOiAnaScsXG4gICAgJ8ODwq8nOiAnaScsXG4gICAgJ8OhwrjCryc6ICdpJyxcbiAgICAnw6HCu8KLJzogJ2knLFxuICAgICfDiMKJJzogJ2knLFxuICAgICfDg8KsJzogJ2knLFxuICAgICfDocK7woknOiAnaScsXG4gICAgJ8OIwosnOiAnaScsXG4gICAgJ8OEwqsnOiAnaScsXG4gICAgJ8OEwq8nOiAnaScsXG4gICAgJ8OhwrbClic6ICdpJyxcbiAgICAnw4nCqCc6ICdpJyxcbiAgICAnw4TCqSc6ICdpJyxcbiAgICAnw6HCuMKtJzogJ2knLFxuICAgICfDqsKdwronOiAnZCcsXG4gICAgJ8Oqwp3CvCc6ICdmJyxcbiAgICAnw6HCtcK5JzogJ2cnLFxuICAgICfDqsKewoMnOiAncicsXG4gICAgJ8Oqwp7ChSc6ICdzJyxcbiAgICAnw6rCnsKHJzogJ3QnLFxuICAgICfDqsKdwq0nOiAnaXMnLFxuICAgICfDh8KwJzogJ2onLFxuICAgICfDhMK1JzogJ2onLFxuICAgICfDisKdJzogJ2onLFxuICAgICfDicKJJzogJ2onLFxuICAgICfDocK4wrEnOiAnaycsXG4gICAgJ8OHwqknOiAnaycsXG4gICAgJ8OEwrcnOiAnaycsXG4gICAgJ8OiwrHCqic6ICdrJyxcbiAgICAnw6rCncKDJzogJ2snLFxuICAgICfDocK4wrMnOiAnaycsXG4gICAgJ8OGwpknOiAnaycsXG4gICAgJ8OhwrjCtSc6ICdrJyxcbiAgICAnw6HCtsKEJzogJ2snLFxuICAgICfDqsKdwoEnOiAnaycsXG4gICAgJ8Oqwp3ChSc6ICdrJyxcbiAgICAnw4TCuic6ICdsJyxcbiAgICAnw4bCmic6ICdsJyxcbiAgICAnw4nCrCc6ICdsJyxcbiAgICAnw4TCvic6ICdsJyxcbiAgICAnw4TCvCc6ICdsJyxcbiAgICAnw6HCuMK9JzogJ2wnLFxuICAgICfDiMK0JzogJ2wnLFxuICAgICfDocK4wrcnOiAnbCcsXG4gICAgJ8OhwrjCuSc6ICdsJyxcbiAgICAnw6LCscKhJzogJ2wnLFxuICAgICfDqsKdwoknOiAnbCcsXG4gICAgJ8OhwrjCuyc6ICdsJyxcbiAgICAnw4XCgCc6ICdsJyxcbiAgICAnw4nCqyc6ICdsJyxcbiAgICAnw6HCtsKFJzogJ2wnLFxuICAgICfDicKtJzogJ2wnLFxuICAgICfDhcKCJzogJ2wnLFxuICAgICfDh8KJJzogJ2xqJyxcbiAgICAnw4XCvyc6ICdzJyxcbiAgICAnw6HCusKcJzogJ3MnLFxuICAgICfDocK6wpsnOiAncycsXG4gICAgJ8OhwrrCnSc6ICdzJyxcbiAgICAnw6HCuMK/JzogJ20nLFxuICAgICfDocK5woEnOiAnbScsXG4gICAgJ8OhwrnCgyc6ICdtJyxcbiAgICAnw4nCsSc6ICdtJyxcbiAgICAnw6HCtcKvJzogJ20nLFxuICAgICfDocK2woYnOiAnbScsXG4gICAgJ8OFwoQnOiAnbicsXG4gICAgJ8OFwognOiAnbicsXG4gICAgJ8OFwoYnOiAnbicsXG4gICAgJ8OhwrnCiyc6ICduJyxcbiAgICAnw4jCtSc6ICduJyxcbiAgICAnw6HCucKFJzogJ24nLFxuICAgICfDocK5wocnOiAnbicsXG4gICAgJ8OHwrknOiAnbicsXG4gICAgJ8OJwrInOiAnbicsXG4gICAgJ8OhwrnCiSc6ICduJyxcbiAgICAnw4bCnic6ICduJyxcbiAgICAnw6HCtcKwJzogJ24nLFxuICAgICfDocK2wocnOiAnbicsXG4gICAgJ8OJwrMnOiAnbicsXG4gICAgJ8ODwrEnOiAnbicsXG4gICAgJ8OHwownOiAnbmonLFxuICAgICfDg8KzJzogJ28nLFxuICAgICfDhcKPJzogJ28nLFxuICAgICfDh8KSJzogJ28nLFxuICAgICfDg8K0JzogJ28nLFxuICAgICfDocK7wpEnOiAnbycsXG4gICAgJ8OhwrvCmSc6ICdvJyxcbiAgICAnw6HCu8KTJzogJ28nLFxuICAgICfDocK7wpUnOiAnbycsXG4gICAgJ8OhwrvClyc6ICdvJyxcbiAgICAnw4PCtic6ICdvJyxcbiAgICAnw4jCqyc6ICdvJyxcbiAgICAnw4jCryc6ICdvJyxcbiAgICAnw4jCsSc6ICdvJyxcbiAgICAnw6HCu8KNJzogJ28nLFxuICAgICfDhcKRJzogJ28nLFxuICAgICfDiMKNJzogJ28nLFxuICAgICfDg8KyJzogJ28nLFxuICAgICfDocK7wo8nOiAnbycsXG4gICAgJ8OGwqEnOiAnbycsXG4gICAgJ8OhwrvCmyc6ICdvJyxcbiAgICAnw6HCu8KjJzogJ28nLFxuICAgICfDocK7wp0nOiAnbycsXG4gICAgJ8OhwrvCnyc6ICdvJyxcbiAgICAnw6HCu8KhJzogJ28nLFxuICAgICfDiMKPJzogJ28nLFxuICAgICfDqsKdwosnOiAnbycsXG4gICAgJ8Oqwp3CjSc6ICdvJyxcbiAgICAnw6LCscK6JzogJ28nLFxuICAgICfDhcKNJzogJ28nLFxuICAgICfDocK5wpMnOiAnbycsXG4gICAgJ8OhwrnCkSc6ICdvJyxcbiAgICAnw4fCqyc6ICdvJyxcbiAgICAnw4fCrSc6ICdvJyxcbiAgICAnw4PCuCc6ICdvJyxcbiAgICAnw4fCvyc6ICdvJyxcbiAgICAnw4PCtSc6ICdvJyxcbiAgICAnw6HCucKNJzogJ28nLFxuICAgICfDocK5wo8nOiAnbycsXG4gICAgJ8OIwq0nOiAnbycsXG4gICAgJ8OGwqMnOiAnb2knLFxuICAgICfDqsKdwo8nOiAnb28nLFxuICAgICfDicKbJzogJ2UnLFxuICAgICfDocK2wpMnOiAnZScsXG4gICAgJ8OJwpQnOiAnbycsXG4gICAgJ8OhwrbClyc6ICdvJyxcbiAgICAnw4jCoyc6ICdvdScsXG4gICAgJ8OhwrnClSc6ICdwJyxcbiAgICAnw6HCucKXJzogJ3AnLFxuICAgICfDqsKdwpMnOiAncCcsXG4gICAgJ8OGwqUnOiAncCcsXG4gICAgJ8OhwrXCsSc6ICdwJyxcbiAgICAnw6HCtsKIJzogJ3AnLFxuICAgICfDqsKdwpUnOiAncCcsXG4gICAgJ8OhwrXCvSc6ICdwJyxcbiAgICAnw6rCncKRJzogJ3AnLFxuICAgICfDqsKdwpknOiAncScsXG4gICAgJ8OKwqAnOiAncScsXG4gICAgJ8OJwosnOiAncScsXG4gICAgJ8Oqwp3Clyc6ICdxJyxcbiAgICAnw4XClSc6ICdyJyxcbiAgICAnw4XCmSc6ICdyJyxcbiAgICAnw4XClyc6ICdyJyxcbiAgICAnw6HCucKZJzogJ3InLFxuICAgICfDocK5wpsnOiAncicsXG4gICAgJ8OhwrnCnSc6ICdyJyxcbiAgICAnw4jCkSc6ICdyJyxcbiAgICAnw4nCvic6ICdyJyxcbiAgICAnw6HCtcKzJzogJ3InLFxuICAgICfDiMKTJzogJ3InLFxuICAgICfDocK5wp8nOiAncicsXG4gICAgJ8OJwrwnOiAncicsXG4gICAgJ8OhwrXCsic6ICdyJyxcbiAgICAnw6HCtsKJJzogJ3InLFxuICAgICfDicKNJzogJ3InLFxuICAgICfDicK9JzogJ3InLFxuICAgICfDosKGwoQnOiAnYycsXG4gICAgJ8OqwpzCvyc6ICdjJyxcbiAgICAnw4nCmCc6ICdlJyxcbiAgICAnw4nCvyc6ICdyJyxcbiAgICAnw4XCmyc6ICdzJyxcbiAgICAnw6HCucKlJzogJ3MnLFxuICAgICfDhcKhJzogJ3MnLFxuICAgICfDocK5wqcnOiAncycsXG4gICAgJ8OFwp8nOiAncycsXG4gICAgJ8OFwp0nOiAncycsXG4gICAgJ8OIwpknOiAncycsXG4gICAgJ8OhwrnCoSc6ICdzJyxcbiAgICAnw6HCucKjJzogJ3MnLFxuICAgICfDocK5wqknOiAncycsXG4gICAgJ8OKwoInOiAncycsXG4gICAgJ8OhwrXCtCc6ICdzJyxcbiAgICAnw6HCtsKKJzogJ3MnLFxuICAgICfDiMK/JzogJ3MnLFxuICAgICfDicKhJzogJ2cnLFxuICAgICfDocK0wpEnOiAnbycsXG4gICAgJ8OhwrTCkyc6ICdvJyxcbiAgICAnw6HCtMKdJzogJ3UnLFxuICAgICfDhcKlJzogJ3QnLFxuICAgICfDhcKjJzogJ3QnLFxuICAgICfDocK5wrEnOiAndCcsXG4gICAgJ8OIwpsnOiAndCcsXG4gICAgJ8OIwrYnOiAndCcsXG4gICAgJ8OhwrrClyc6ICd0JyxcbiAgICAnw6LCscKmJzogJ3QnLFxuICAgICfDocK5wqsnOiAndCcsXG4gICAgJ8OhwrnCrSc6ICd0JyxcbiAgICAnw4bCrSc6ICd0JyxcbiAgICAnw6HCucKvJzogJ3QnLFxuICAgICfDocK1wrUnOiAndCcsXG4gICAgJ8OGwqsnOiAndCcsXG4gICAgJ8OKwognOiAndCcsXG4gICAgJ8OFwqcnOiAndCcsXG4gICAgJ8OhwrXCuic6ICd0aCcsXG4gICAgJ8OJwpAnOiAnYScsXG4gICAgJ8OhwrTCgic6ICdhZScsXG4gICAgJ8OHwp0nOiAnZScsXG4gICAgJ8OhwrXCtyc6ICdnJyxcbiAgICAnw4nCpSc6ICdoJyxcbiAgICAnw4rCric6ICdoJyxcbiAgICAnw4rCryc6ICdoJyxcbiAgICAnw6HCtMKJJzogJ2knLFxuICAgICfDisKeJzogJ2snLFxuICAgICfDqsKewoEnOiAnbCcsXG4gICAgJ8OJwq8nOiAnbScsXG4gICAgJ8OJwrAnOiAnbScsXG4gICAgJ8OhwrTClCc6ICdvZScsXG4gICAgJ8OJwrknOiAncicsXG4gICAgJ8OJwrsnOiAncicsXG4gICAgJ8OJwronOiAncicsXG4gICAgJ8OiwrHCuSc6ICdyJyxcbiAgICAnw4rChyc6ICd0JyxcbiAgICAnw4rCjCc6ICd2JyxcbiAgICAnw4rCjSc6ICd3JyxcbiAgICAnw4rCjic6ICd5JyxcbiAgICAnw6rCnMKpJzogJ3R6JyxcbiAgICAnw4PCuic6ICd1JyxcbiAgICAnw4XCrSc6ICd1JyxcbiAgICAnw4fClCc6ICd1JyxcbiAgICAnw4PCuyc6ICd1JyxcbiAgICAnw6HCucK3JzogJ3UnLFxuICAgICfDg8K8JzogJ3UnLFxuICAgICfDh8KYJzogJ3UnLFxuICAgICfDh8KaJzogJ3UnLFxuICAgICfDh8KcJzogJ3UnLFxuICAgICfDh8KWJzogJ3UnLFxuICAgICfDocK5wrMnOiAndScsXG4gICAgJ8OhwrvCpSc6ICd1JyxcbiAgICAnw4XCsSc6ICd1JyxcbiAgICAnw4jClSc6ICd1JyxcbiAgICAnw4PCuSc6ICd1JyxcbiAgICAnw6HCu8KnJzogJ3UnLFxuICAgICfDhsKwJzogJ3UnLFxuICAgICfDocK7wqknOiAndScsXG4gICAgJ8OhwrvCsSc6ICd1JyxcbiAgICAnw6HCu8KrJzogJ3UnLFxuICAgICfDocK7wq0nOiAndScsXG4gICAgJ8OhwrvCryc6ICd1JyxcbiAgICAnw4jClyc6ICd1JyxcbiAgICAnw4XCqyc6ICd1JyxcbiAgICAnw6HCucK7JzogJ3UnLFxuICAgICfDhcKzJzogJ3UnLFxuICAgICfDocK2wpknOiAndScsXG4gICAgJ8OFwq8nOiAndScsXG4gICAgJ8OFwqknOiAndScsXG4gICAgJ8OhwrnCuSc6ICd1JyxcbiAgICAnw6HCucK1JzogJ3UnLFxuICAgICfDocK1wqsnOiAndWUnLFxuICAgICfDqsKdwrgnOiAndW0nLFxuICAgICfDosKxwrQnOiAndicsXG4gICAgJ8Oqwp3Cnyc6ICd2JyxcbiAgICAnw6HCucK/JzogJ3YnLFxuICAgICfDisKLJzogJ3YnLFxuICAgICfDocK2wownOiAndicsXG4gICAgJ8OiwrHCsSc6ICd2JyxcbiAgICAnw6HCucK9JzogJ3YnLFxuICAgICfDqsKdwqEnOiAndnknLFxuICAgICfDocK6woMnOiAndycsXG4gICAgJ8OFwrUnOiAndycsXG4gICAgJ8OhwrrChSc6ICd3JyxcbiAgICAnw6HCusKHJzogJ3cnLFxuICAgICfDocK6woknOiAndycsXG4gICAgJ8OhwrrCgSc6ICd3JyxcbiAgICAnw6LCscKzJzogJ3cnLFxuICAgICfDocK6wpgnOiAndycsXG4gICAgJ8OhwrrCjSc6ICd4JyxcbiAgICAnw6HCusKLJzogJ3gnLFxuICAgICfDocK2wo0nOiAneCcsXG4gICAgJ8ODwr0nOiAneScsXG4gICAgJ8OFwrcnOiAneScsXG4gICAgJ8ODwr8nOiAneScsXG4gICAgJ8OhwrrCjyc6ICd5JyxcbiAgICAnw6HCu8K1JzogJ3knLFxuICAgICfDocK7wrMnOiAneScsXG4gICAgJ8OGwrQnOiAneScsXG4gICAgJ8OhwrvCtyc6ICd5JyxcbiAgICAnw6HCu8K/JzogJ3knLFxuICAgICfDiMKzJzogJ3knLFxuICAgICfDocK6wpknOiAneScsXG4gICAgJ8OJwo8nOiAneScsXG4gICAgJ8OhwrvCuSc6ICd5JyxcbiAgICAnw4XCuic6ICd6JyxcbiAgICAnw4XCvic6ICd6JyxcbiAgICAnw6HCusKRJzogJ3onLFxuICAgICfDisKRJzogJ3onLFxuICAgICfDosKxwqwnOiAneicsXG4gICAgJ8OFwrwnOiAneicsXG4gICAgJ8OhwrrCkyc6ICd6JyxcbiAgICAnw4jCpSc6ICd6JyxcbiAgICAnw6HCusKVJzogJ3onLFxuICAgICfDocK1wrYnOiAneicsXG4gICAgJ8OhwrbCjic6ICd6JyxcbiAgICAnw4rCkCc6ICd6JyxcbiAgICAnw4bCtic6ICd6JyxcbiAgICAnw4nCgCc6ICd6JyxcbiAgICAnw6/CrMKAJzogJ2ZmJyxcbiAgICAnw6/CrMKDJzogJ2ZmaScsXG4gICAgJ8OvwqzChCc6ICdmZmwnLFxuICAgICfDr8KswoEnOiAnZmknLFxuICAgICfDr8KswoInOiAnZmwnLFxuICAgICfDhMKzJzogJ2lqJyxcbiAgICAnw4XCkyc6ICdvZScsXG4gICAgJ8OvwqzChic6ICdzdCcsXG4gICAgJ8OiwoLCkCc6ICdhJyxcbiAgICAnw6LCgsKRJzogJ2UnLFxuICAgICfDocK1wqInOiAnaScsXG4gICAgJ8OiwrHCvCc6ICdqJyxcbiAgICAnw6LCgsKSJzogJ28nLFxuICAgICfDocK1wqMnOiAncicsXG4gICAgJ8OhwrXCpCc6ICd1JyxcbiAgICAnw6HCtcKlJzogJ3YnLFxuICAgICfDosKCwpMnOiAneCdcbn07XG4iLCJpbXBvcnQgeyBUeXBlYWhlYWREaXJlY3RpdmUgfSBmcm9tICcuL3R5cGVhaGVhZC5kaXJlY3RpdmUnO1xuXG5leHBvcnQgY2xhc3MgVHlwZWFoZWFkT3B0aW9ucyB7XG4gIHBsYWNlbWVudDogc3RyaW5nO1xuICBhbmltYXRpb246IGJvb2xlYW47XG4gIHR5cGVhaGVhZFJlZjogVHlwZWFoZWFkRGlyZWN0aXZlO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFR5cGVhaGVhZE9wdGlvbnMpIHtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMsIG9wdGlvbnMpO1xuICB9XG59XG4iLCJleHBvcnQgY2xhc3MgVHlwZWFoZWFkTWF0Y2gge1xuICByZWFkb25seSB2YWx1ZTogc3RyaW5nO1xuXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG4gIHJlYWRvbmx5IGl0ZW06IGFueTtcbiAgcHJvdGVjdGVkIGhlYWRlcjogYm9vbGVhbjtcblxuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueVxuICBjb25zdHJ1Y3RvcihpdGVtOiBhbnksIHZhbHVlOiBzdHJpbmcgPSBpdGVtLCBoZWFkZXIgPSBmYWxzZSkge1xuICAgIHRoaXMuaXRlbSA9IGl0ZW07XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuaGVhZGVyID0gaGVhZGVyO1xuICB9XG5cbiAgaXNIZWFkZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGVhZGVyO1xuICB9XG5cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZTtcbiAgfVxufVxuIiwiLyohICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbkNvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpOyB5b3UgbWF5IG5vdCB1c2VcclxudGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGVcclxuTGljZW5zZSBhdCBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuXHJcblRISVMgQ09ERSBJUyBQUk9WSURFRCBPTiBBTiAqQVMgSVMqIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTllcclxuS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIFdJVEhPVVQgTElNSVRBVElPTiBBTlkgSU1QTElFRFxyXG5XQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgVElUTEUsIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLFxyXG5NRVJDSEFOVEFCTElUWSBPUiBOT04tSU5GUklOR0VNRU5ULlxyXG5cclxuU2VlIHRoZSBBcGFjaGUgVmVyc2lvbiAyLjAgTGljZW5zZSBmb3Igc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXHJcbmFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuLyogZ2xvYmFsIFJlZmxlY3QsIFByb21pc2UgKi9cclxuXHJcbnZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24oZCwgYikge1xyXG4gICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxyXG4gICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcclxuICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTtcclxuICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXh0ZW5kcyhkLCBiKSB7XHJcbiAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG4gICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XHJcbiAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgX19hc3NpZ24gPSBmdW5jdGlvbigpIHtcclxuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiBfX2Fzc2lnbih0KSB7XHJcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XHJcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XHJcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSkgdFtwXSA9IHNbcF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3Jlc3QocywgZSkge1xyXG4gICAgdmFyIHQgPSB7fTtcclxuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxyXG4gICAgICAgIHRbcF0gPSBzW3BdO1xyXG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxyXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIGlmIChlLmluZGV4T2YocFtpXSkgPCAwKVxyXG4gICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcclxuICAgIHJldHVybiB0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYykge1xyXG4gICAgdmFyIGMgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gYyA8IDMgPyB0YXJnZXQgOiBkZXNjID09PSBudWxsID8gZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIDogZGVzYywgZDtcclxuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSA9PT0gXCJmdW5jdGlvblwiKSByID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYyk7XHJcbiAgICBlbHNlIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSBpZiAoZCA9IGRlY29yYXRvcnNbaV0pIHIgPSAoYyA8IDMgPyBkKHIpIDogYyA+IDMgPyBkKHRhcmdldCwga2V5LCByKSA6IGQodGFyZ2V0LCBrZXkpKSB8fCByO1xyXG4gICAgcmV0dXJuIGMgPiAzICYmIHIgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCByKSwgcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcGFyYW0ocGFyYW1JbmRleCwgZGVjb3JhdG9yKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwga2V5KSB7IGRlY29yYXRvcih0YXJnZXQsIGtleSwgcGFyYW1JbmRleCk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fbWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpIHtcclxuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5tZXRhZGF0YSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gUmVmbGVjdC5tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2F3YWl0ZXIodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XHJcbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHJlc3VsdC52YWx1ZSk7IH0pLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cclxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XHJcbiAgICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZ2VuZXJhdG9yKHRoaXNBcmcsIGJvZHkpIHtcclxuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XHJcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xyXG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcclxuICAgICAgICB3aGlsZSAoXykgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xyXG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XHJcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcclxuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxyXG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHBvcnRTdGFyKG0sIGV4cG9ydHMpIHtcclxuICAgIGZvciAodmFyIHAgaW4gbSkgaWYgKCFleHBvcnRzLmhhc093blByb3BlcnR5KHApKSBleHBvcnRzW3BdID0gbVtwXTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fdmFsdWVzKG8pIHtcclxuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXSwgaSA9IDA7XHJcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xyXG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVhZChvLCBuKSB7XHJcbiAgICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl07XHJcbiAgICBpZiAoIW0pIHJldHVybiBvO1xyXG4gICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGVycm9yKSB7IGUgPSB7IGVycm9yOiBlcnJvciB9OyB9XHJcbiAgICBmaW5hbGx5IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBpZiAociAmJiAhci5kb25lICYmIChtID0gaVtcInJldHVyblwiXSkpIG0uY2FsbChpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZCgpIHtcclxuICAgIGZvciAodmFyIGFyID0gW10sIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgIGFyID0gYXIuY29uY2F0KF9fcmVhZChhcmd1bWVudHNbaV0pKTtcclxuICAgIHJldHVybiBhcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXQodikge1xyXG4gICAgcmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBfX2F3YWl0ID8gKHRoaXMudiA9IHYsIHRoaXMpIDogbmV3IF9fYXdhaXQodik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jR2VuZXJhdG9yKHRoaXNBcmcsIF9hcmd1bWVudHMsIGdlbmVyYXRvcikge1xyXG4gICAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxuICAgIHZhciBnID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pLCBpLCBxID0gW107XHJcbiAgICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgaWYgKGdbbl0pIGlbbl0gPSBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKGEsIGIpIHsgcS5wdXNoKFtuLCB2LCBhLCBiXSkgPiAxIHx8IHJlc3VtZShuLCB2KTsgfSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHJlc3VtZShuLCB2KSB7IHRyeSB7IHN0ZXAoZ1tuXSh2KSk7IH0gY2F0Y2ggKGUpIHsgc2V0dGxlKHFbMF1bM10sIGUpOyB9IH1cclxuICAgIGZ1bmN0aW9uIHN0ZXAocikgeyByLnZhbHVlIGluc3RhbmNlb2YgX19hd2FpdCA/IFByb21pc2UucmVzb2x2ZShyLnZhbHVlLnYpLnRoZW4oZnVsZmlsbCwgcmVqZWN0KSA6IHNldHRsZShxWzBdWzJdLCByKTsgfVxyXG4gICAgZnVuY3Rpb24gZnVsZmlsbCh2YWx1ZSkgeyByZXN1bWUoXCJuZXh0XCIsIHZhbHVlKTsgfVxyXG4gICAgZnVuY3Rpb24gcmVqZWN0KHZhbHVlKSB7IHJlc3VtZShcInRocm93XCIsIHZhbHVlKTsgfVxyXG4gICAgZnVuY3Rpb24gc2V0dGxlKGYsIHYpIHsgaWYgKGYodiksIHEuc2hpZnQoKSwgcS5sZW5ndGgpIHJlc3VtZShxWzBdWzBdLCBxWzBdWzFdKTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY0RlbGVnYXRvcihvKSB7XHJcbiAgICB2YXIgaSwgcDtcclxuICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiwgZnVuY3Rpb24gKGUpIHsgdGhyb3cgZTsgfSksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4sIGYpIHsgaVtuXSA9IG9bbl0gPyBmdW5jdGlvbiAodikgeyByZXR1cm4gKHAgPSAhcCkgPyB7IHZhbHVlOiBfX2F3YWl0KG9bbl0odikpLCBkb25lOiBuID09PSBcInJldHVyblwiIH0gOiBmID8gZih2KSA6IHY7IH0gOiBmOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jVmFsdWVzKG8pIHtcclxuICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB2YXIgbSA9IG9bU3ltYm9sLmFzeW5jSXRlcmF0b3JdLCBpO1xyXG4gICAgcmV0dXJuIG0gPyBtLmNhbGwobykgOiAobyA9IHR5cGVvZiBfX3ZhbHVlcyA9PT0gXCJmdW5jdGlvblwiID8gX192YWx1ZXMobykgOiBvW1N5bWJvbC5pdGVyYXRvcl0oKSwgaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGkpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IGlbbl0gPSBvW25dICYmIGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHYgPSBvW25dKHYpLCBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCB2LmRvbmUsIHYudmFsdWUpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgZCwgdikgeyBQcm9taXNlLnJlc29sdmUodikudGhlbihmdW5jdGlvbih2KSB7IHJlc29sdmUoeyB2YWx1ZTogdiwgZG9uZTogZCB9KTsgfSwgcmVqZWN0KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tYWtlVGVtcGxhdGVPYmplY3QoY29va2VkLCByYXcpIHtcclxuICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwgeyB2YWx1ZTogcmF3IH0pOyB9IGVsc2UgeyBjb29rZWQucmF3ID0gcmF3OyB9XHJcbiAgICByZXR1cm4gY29va2VkO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9faW1wb3J0U3Rhcihtb2QpIHtcclxuICAgIGlmIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpIHJldHVybiBtb2Q7XHJcbiAgICB2YXIgcmVzdWx0ID0ge307XHJcbiAgICBpZiAobW9kICE9IG51bGwpIGZvciAodmFyIGsgaW4gbW9kKSBpZiAoT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwobW9kLCBrKSkgcmVzdWx0W2tdID0gbW9kW2tdO1xyXG4gICAgcmVzdWx0LmRlZmF1bHQgPSBtb2Q7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnREZWZhdWx0KG1vZCkge1xyXG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBkZWZhdWx0OiBtb2QgfTtcclxufVxyXG4iLCJpbXBvcnQgeyBsYXRpbk1hcCB9IGZyb20gJy4vbGF0aW4tbWFwJztcblxuZXhwb3J0IGZ1bmN0aW9uIGxhdGluaXplKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKCFzdHIpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICByZXR1cm4gc3RyLnJlcGxhY2UoL1teQS1aYS16MC05XFxbXFxdIF0vZywgZnVuY3Rpb24gKGE6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGxhdGluTWFwW2FdIHx8IGE7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlUmVnZXhwKHF1ZXJ5VG9Fc2NhcGU6IHN0cmluZyk6IHN0cmluZyB7XG4gIC8vIFJlZ2V4OiBjYXB0dXJlIHRoZSB3aG9sZSBxdWVyeSBzdHJpbmcgYW5kIHJlcGxhY2UgaXQgd2l0aCB0aGUgc3RyaW5nXG4gIC8vIHRoYXQgd2lsbCBiZSB1c2VkIHRvIG1hdGNoIHRoZSByZXN1bHRzLCBmb3IgZXhhbXBsZSBpZiB0aGUgY2FwdHVyZSBpc1xuICAvLyAnYScgdGhlIHJlc3VsdCB3aWxsIGJlIFxcYVxuICByZXR1cm4gcXVlcnlUb0VzY2FwZS5yZXBsYWNlKC8oWy4/KiteJFtcXF1cXFxcKCl7fXwtXSkvZywgJ1xcXFwkMScpO1xufVxuXG4vKiB0c2xpbnQ6ZGlzYWJsZSAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRva2VuaXplKHN0cjogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmRSZWdleERlbGltaXRlcnMgPSAnICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgcGhyYXNlUmVnZXhEZWxpbWl0ZXJzID0gJycpOiBBcnJheTxzdHJpbmc+IHtcbiAgLyogdHNsaW50OmVuYWJsZSAqL1xuICBjb25zdCByZWdleFN0ciA9IGAoPzpbJHtwaHJhc2VSZWdleERlbGltaXRlcnN9XSkoW14ke3BocmFzZVJlZ2V4RGVsaW1pdGVyc31dKylgICtcbiAgICBgKD86WyR7cGhyYXNlUmVnZXhEZWxpbWl0ZXJzfV0pfChbXiR7d29yZFJlZ2V4RGVsaW1pdGVyc31dKylgO1xuICBjb25zdCBwcmVUb2tlbml6ZWQ6IHN0cmluZ1tdID0gc3RyLnNwbGl0KG5ldyBSZWdFeHAocmVnZXhTdHIsICdnJykpO1xuICBjb25zdCByZXN1bHQ6IHN0cmluZ1tdID0gW107XG4gIGNvbnN0IHByZVRva2VuaXplZExlbmd0aDogbnVtYmVyID0gcHJlVG9rZW5pemVkLmxlbmd0aDtcbiAgbGV0IHRva2VuOiBzdHJpbmc7XG4gIGNvbnN0IHJlcGxhY2VQaHJhc2VEZWxpbWl0ZXJzID0gbmV3IFJlZ0V4cChgWyR7cGhyYXNlUmVnZXhEZWxpbWl0ZXJzfV0rYCwgJ2cnKTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHByZVRva2VuaXplZExlbmd0aDsgaSArPSAxKSB7XG4gICAgdG9rZW4gPSBwcmVUb2tlbml6ZWRbaV07XG4gICAgaWYgKHRva2VuICYmIHRva2VuLmxlbmd0aCAmJiB0b2tlbiAhPT0gd29yZFJlZ2V4RGVsaW1pdGVycykge1xuICAgICAgcmVzdWx0LnB1c2godG9rZW4ucmVwbGFjZShyZXBsYWNlUGhyYXNlRGVsaW1pdGVycywgJycpKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG5leHBvcnQgZnVuY3Rpb24gZ2V0VmFsdWVGcm9tT2JqZWN0KG9iamVjdDogYW55LCBvcHRpb246IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmICghb3B0aW9uIHx8IHR5cGVvZiBvYmplY3QgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIG9iamVjdC50b1N0cmluZygpO1xuICB9XG5cbiAgaWYgKG9wdGlvbi5lbmRzV2l0aCgnKCknKSkge1xuICAgIGNvbnN0IGZ1bmN0aW9uTmFtZSA9IG9wdGlvbi5zbGljZSgwLCBvcHRpb24ubGVuZ3RoIC0gMik7XG5cbiAgICByZXR1cm4gb2JqZWN0W2Z1bmN0aW9uTmFtZV0oKS50b1N0cmluZygpO1xuICB9XG5cbiAgY29uc3QgcHJvcGVydGllczogc3RyaW5nID0gb3B0aW9uXG4gICAgLnJlcGxhY2UoL1xcWyhcXHcrKVxcXS9nLCAnLiQxJylcbiAgICAucmVwbGFjZSgvXlxcLi8sICcnKTtcbiAgY29uc3QgcHJvcGVydGllc0FycmF5OiBzdHJpbmdbXSA9IHByb3BlcnRpZXMuc3BsaXQoJy4nKTtcblxuICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIHByb3BlcnRpZXNBcnJheSkge1xuICAgIGlmIChwcm9wZXJ0eSBpbiBvYmplY3QpIHtcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZVxuICAgICAgb2JqZWN0ID0gb2JqZWN0W3Byb3BlcnR5XTtcbiAgICB9XG4gIH1cbiAgaWYgKCFvYmplY3QpIHtyZXR1cm4gJyc7IH1cblxuICByZXR1cm4gb2JqZWN0LnRvU3RyaW5nKCk7XG59XG4iLCJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgUXVlcnlMaXN0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW4sXG4gIFJlbmRlcmVyMlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgaXNCczMsIFV0aWxzIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC91dGlscyc7XG5pbXBvcnQgeyBsYXRpbml6ZSB9IGZyb20gJy4vdHlwZWFoZWFkLXV0aWxzJztcbmltcG9ydCB7IFR5cGVhaGVhZE1hdGNoIH0gZnJvbSAnLi90eXBlYWhlYWQtbWF0Y2guY2xhc3MnO1xuaW1wb3J0IHsgVHlwZWFoZWFkRGlyZWN0aXZlIH0gZnJvbSAnLi90eXBlYWhlYWQuZGlyZWN0aXZlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndHlwZWFoZWFkLWNvbnRhaW5lcicsXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZVxuICB0ZW1wbGF0ZVVybDogJy4vdHlwZWFoZWFkLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2Ryb3Bkb3duIG9wZW4nLFxuICAgICdbY2xhc3MuZHJvcGRvd24tbWVudV0nOiAnaXNCczQnLFxuICAgICdbc3R5bGUub3ZlcmZsb3cteV0nIDogYGlzQnM0ICYmIG5lZWRTY3JvbGxiYXIgPyAnc2Nyb2xsJzogJ3Zpc2libGUnYCxcbiAgICAnW3N0eWxlLmhlaWdodF0nOiBgaXNCczQgJiYgbmVlZFNjcm9sbGJhciA/IGd1aUhlaWdodDogJ2F1dG8nYCxcbiAgICAnW3N0eWxlLnZpc2liaWxpdHldJzogYHR5cGVhaGVhZFNjcm9sbGFibGUgPyAnaGlkZGVuJyA6ICd2aXNpYmxlJ2AsXG4gICAgJ1tjbGFzcy5kcm9wdXBdJzogJ2Ryb3B1cCcsXG4gICAgc3R5bGU6ICdwb3NpdGlvbjogYWJzb2x1dGU7ZGlzcGxheTogYmxvY2s7J1xuICB9XG59KVxuZXhwb3J0IGNsYXNzIFR5cGVhaGVhZENvbnRhaW5lckNvbXBvbmVudCB7XG4gIHBhcmVudDogVHlwZWFoZWFkRGlyZWN0aXZlO1xuICBxdWVyeTogc3RyaW5nW10gfCBzdHJpbmc7XG4gIGVsZW1lbnQ6IEVsZW1lbnRSZWY7XG4gIGlzRm9jdXNlZCA9IGZhbHNlO1xuICB0b3A6IHN0cmluZztcbiAgbGVmdDogc3RyaW5nO1xuICBkaXNwbGF5OiBzdHJpbmc7XG4gIHBsYWNlbWVudDogc3RyaW5nO1xuICBkcm9wdXA6IGJvb2xlYW47XG4gIGd1aUhlaWdodDogc3RyaW5nO1xuICBuZWVkU2Nyb2xsYmFyOiBib29sZWFuO1xuXG4gIGdldCBpc0JzNCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIWlzQnMzKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgX2FjdGl2ZTogVHlwZWFoZWFkTWF0Y2g7XG4gIHByb3RlY3RlZCBfbWF0Y2hlczogVHlwZWFoZWFkTWF0Y2hbXSA9IFtdO1xuXG4gIEBWaWV3Q2hpbGQoJ3VsRWxlbWVudCcpXG4gIHByaXZhdGUgdWxFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gIEBWaWV3Q2hpbGRyZW4oJ2xpRWxlbWVudHMnKVxuICBwcml2YXRlIGxpRWxlbWVudHM6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcblxuICBjb25zdHJ1Y3RvcihlbGVtZW50OiBFbGVtZW50UmVmLCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHtcbiAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50O1xuICB9XG5cbiAgZ2V0IGFjdGl2ZSgpOiBUeXBlYWhlYWRNYXRjaCB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZTtcbiAgfVxuXG4gIGdldCBtYXRjaGVzKCk6IFR5cGVhaGVhZE1hdGNoW10ge1xuICAgIHJldHVybiB0aGlzLl9tYXRjaGVzO1xuICB9XG5cbiAgc2V0IG1hdGNoZXModmFsdWU6IFR5cGVhaGVhZE1hdGNoW10pIHtcbiAgICB0aGlzLl9tYXRjaGVzID0gdmFsdWU7XG4gICAgdGhpcy5uZWVkU2Nyb2xsYmFyID0gdGhpcy50eXBlYWhlYWRTY3JvbGxhYmxlICYmIHRoaXMudHlwZWFoZWFkT3B0aW9uc0luU2Nyb2xsYWJsZVZpZXcgPCB0aGlzLm1hdGNoZXMubGVuZ3RoO1xuICAgIGlmICh0aGlzLnR5cGVhaGVhZFNjcm9sbGFibGUpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnNldFNjcm9sbGFibGVNb2RlKCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fbWF0Y2hlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLl9hY3RpdmUgPSB0aGlzLl9tYXRjaGVzWzBdO1xuICAgICAgaWYgKHRoaXMuX2FjdGl2ZS5pc0hlYWRlcigpKSB7XG4gICAgICAgIHRoaXMubmV4dEFjdGl2ZU1hdGNoKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG4gIGdldCBvcHRpb25zTGlzdFRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnBhcmVudCA/IHRoaXMucGFyZW50Lm9wdGlvbnNMaXN0VGVtcGxhdGUgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgdHlwZWFoZWFkU2Nyb2xsYWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQgPyB0aGlzLnBhcmVudC50eXBlYWhlYWRTY3JvbGxhYmxlIDogZmFsc2U7XG4gIH1cblxuXG4gIGdldCB0eXBlYWhlYWRPcHRpb25zSW5TY3JvbGxhYmxlVmlldygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnBhcmVudCA/IHRoaXMucGFyZW50LnR5cGVhaGVhZE9wdGlvbnNJblNjcm9sbGFibGVWaWV3IDogNTtcbiAgfVxuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueVxuICBnZXQgaXRlbVRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnBhcmVudCA/IHRoaXMucGFyZW50LnR5cGVhaGVhZEl0ZW1UZW1wbGF0ZSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHNlbGVjdEFjdGl2ZU1hdGNoKCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0TWF0Y2godGhpcy5fYWN0aXZlKTtcbiAgfVxuXG4gIHByZXZBY3RpdmVNYXRjaCgpOiB2b2lkIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMubWF0Y2hlcy5pbmRleE9mKHRoaXMuX2FjdGl2ZSk7XG4gICAgdGhpcy5fYWN0aXZlID0gdGhpcy5tYXRjaGVzW1xuICAgICAgaW5kZXggLSAxIDwgMCA/IHRoaXMubWF0Y2hlcy5sZW5ndGggLSAxIDogaW5kZXggLSAxXG4gICAgICBdO1xuICAgIGlmICh0aGlzLl9hY3RpdmUuaXNIZWFkZXIoKSkge1xuICAgICAgdGhpcy5wcmV2QWN0aXZlTWF0Y2goKTtcbiAgICB9XG4gICAgaWYgKHRoaXMudHlwZWFoZWFkU2Nyb2xsYWJsZSkge1xuICAgICAgdGhpcy5zY3JvbGxQcmV2aW91cyhpbmRleCk7XG4gICAgfVxuICB9XG5cbiAgbmV4dEFjdGl2ZU1hdGNoKCk6IHZvaWQge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5tYXRjaGVzLmluZGV4T2YodGhpcy5fYWN0aXZlKTtcbiAgICB0aGlzLl9hY3RpdmUgPSB0aGlzLm1hdGNoZXNbXG4gICAgICBpbmRleCArIDEgPiB0aGlzLm1hdGNoZXMubGVuZ3RoIC0gMSA/IDAgOiBpbmRleCArIDFcbiAgICAgIF07XG4gICAgaWYgKHRoaXMuX2FjdGl2ZS5pc0hlYWRlcigpKSB7XG4gICAgICB0aGlzLm5leHRBY3RpdmVNYXRjaCgpO1xuICAgIH1cbiAgICBpZiAodGhpcy50eXBlYWhlYWRTY3JvbGxhYmxlKSB7XG4gICAgICB0aGlzLnNjcm9sbE5leHQoaW5kZXgpO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdEFjdGl2ZSh2YWx1ZTogVHlwZWFoZWFkTWF0Y2gpOiB2b2lkIHtcbiAgICB0aGlzLmlzRm9jdXNlZCA9IHRydWU7XG4gICAgdGhpcy5fYWN0aXZlID0gdmFsdWU7XG4gIH1cblxuICBoaWdobGlnaHQobWF0Y2g6IFR5cGVhaGVhZE1hdGNoLCBxdWVyeTogc3RyaW5nW10gfCBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCBpdGVtU3RyOiBzdHJpbmcgPSBtYXRjaC52YWx1ZTtcbiAgICBsZXQgaXRlbVN0ckhlbHBlcjogc3RyaW5nID0gKHRoaXMucGFyZW50ICYmIHRoaXMucGFyZW50LnR5cGVhaGVhZExhdGluaXplXG4gICAgICA/IGxhdGluaXplKGl0ZW1TdHIpXG4gICAgICA6IGl0ZW1TdHIpLnRvTG93ZXJDYXNlKCk7XG4gICAgbGV0IHN0YXJ0SWR4OiBudW1iZXI7XG4gICAgbGV0IHRva2VuTGVuOiBudW1iZXI7XG4gICAgLy8gUmVwbGFjZXMgdGhlIGNhcHR1cmUgc3RyaW5nIHdpdGggdGhlIHNhbWUgc3RyaW5nIGluc2lkZSBvZiBhIFwic3Ryb25nXCIgdGFnXG4gICAgaWYgKHR5cGVvZiBxdWVyeSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGNvbnN0IHF1ZXJ5TGVuOiBudW1iZXIgPSBxdWVyeS5sZW5ndGg7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHF1ZXJ5TGVuOyBpICs9IDEpIHtcbiAgICAgICAgLy8gcXVlcnlbaV0gaXMgYWxyZWFkeSBsYXRpbml6ZWQgYW5kIGxvd2VyIGNhc2VcbiAgICAgICAgc3RhcnRJZHggPSBpdGVtU3RySGVscGVyLmluZGV4T2YocXVlcnlbaV0pO1xuICAgICAgICB0b2tlbkxlbiA9IHF1ZXJ5W2ldLmxlbmd0aDtcbiAgICAgICAgaWYgKHN0YXJ0SWR4ID49IDAgJiYgdG9rZW5MZW4gPiAwKSB7XG4gICAgICAgICAgaXRlbVN0ciA9XG4gICAgICAgICAgICBgJHtpdGVtU3RyLnN1YnN0cmluZygwLCBzdGFydElkeCl9PHN0cm9uZz4ke2l0ZW1TdHIuc3Vic3RyaW5nKHN0YXJ0SWR4LCBzdGFydElkeCArIHRva2VuTGVuKX08L3N0cm9uZz5gICtcbiAgICAgICAgICAgIGAke2l0ZW1TdHIuc3Vic3RyaW5nKHN0YXJ0SWR4ICsgdG9rZW5MZW4pfWA7XG4gICAgICAgICAgaXRlbVN0ckhlbHBlciA9XG4gICAgICAgICAgICBgJHtpdGVtU3RySGVscGVyLnN1YnN0cmluZygwLCBzdGFydElkeCl9ICAgICAgICAkeycgJy5yZXBlYXQodG9rZW5MZW4pfSAgICAgICAgIGAgK1xuICAgICAgICAgICAgYCR7aXRlbVN0ckhlbHBlci5zdWJzdHJpbmcoc3RhcnRJZHggKyB0b2tlbkxlbil9YDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocXVlcnkpIHtcbiAgICAgIC8vIHF1ZXJ5IGlzIGFscmVhZHkgbGF0aW5pemVkIGFuZCBsb3dlciBjYXNlXG4gICAgICBzdGFydElkeCA9IGl0ZW1TdHJIZWxwZXIuaW5kZXhPZihxdWVyeSk7XG4gICAgICB0b2tlbkxlbiA9IHF1ZXJ5Lmxlbmd0aDtcbiAgICAgIGlmIChzdGFydElkeCA+PSAwICYmIHRva2VuTGVuID4gMCkge1xuICAgICAgICBpdGVtU3RyID1cbiAgICAgICAgICBgJHtpdGVtU3RyLnN1YnN0cmluZygwLCBzdGFydElkeCl9PHN0cm9uZz4ke2l0ZW1TdHIuc3Vic3RyaW5nKHN0YXJ0SWR4LCBzdGFydElkeCArIHRva2VuTGVuKX08L3N0cm9uZz5gICtcbiAgICAgICAgICBgJHtpdGVtU3RyLnN1YnN0cmluZyhzdGFydElkeCArIHRva2VuTGVuKX1gO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBpdGVtU3RyO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScpXG4gIEBIb3N0TGlzdGVuZXIoJ2JsdXInKVxuICBmb2N1c0xvc3QoKTogdm9pZCB7XG4gICAgdGhpcy5pc0ZvY3VzZWQgPSBmYWxzZTtcbiAgfVxuXG4gIGlzQWN0aXZlKHZhbHVlOiBUeXBlYWhlYWRNYXRjaCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmUgPT09IHZhbHVlO1xuICB9XG5cbiAgc2VsZWN0TWF0Y2godmFsdWU6IFR5cGVhaGVhZE1hdGNoLCBlOiBFdmVudCA9IHZvaWQgMCk6IGJvb2xlYW4ge1xuICAgIGlmIChlKSB7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgICB0aGlzLnBhcmVudC5jaGFuZ2VNb2RlbCh2YWx1ZSk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnBhcmVudC50eXBlYWhlYWRPblNlbGVjdC5lbWl0KHZhbHVlKSwgMCk7XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBzZXRTY3JvbGxhYmxlTW9kZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMudWxFbGVtZW50KSB7XG4gICAgICB0aGlzLnVsRWxlbWVudCA9IHRoaXMuZWxlbWVudDtcbiAgICB9XG4gICAgaWYgKHRoaXMubGlFbGVtZW50cy5maXJzdCkge1xuICAgICAgY29uc3QgdWxTdHlsZXMgPSBVdGlscy5nZXRTdHlsZXModGhpcy51bEVsZW1lbnQubmF0aXZlRWxlbWVudCk7XG4gICAgICBjb25zdCBsaVN0eWxlcyA9IFV0aWxzLmdldFN0eWxlcyh0aGlzLmxpRWxlbWVudHMuZmlyc3QubmF0aXZlRWxlbWVudCk7XG4gICAgICBjb25zdCB1bFBhZGRpbmdCb3R0b20gPSBwYXJzZUZsb2F0KCh1bFN0eWxlc1sncGFkZGluZy1ib3R0b20nXSA/IHVsU3R5bGVzWydwYWRkaW5nLWJvdHRvbSddIDogJycpXG4gICAgICAgIC5yZXBsYWNlKCdweCcsICcnKSk7XG4gICAgICBjb25zdCB1bFBhZGRpbmdUb3AgPSBwYXJzZUZsb2F0KCh1bFN0eWxlc1sncGFkZGluZy10b3AnXSA/IHVsU3R5bGVzWydwYWRkaW5nLXRvcCddIDogJzAnKVxuICAgICAgICAucmVwbGFjZSgncHgnLCAnJykpO1xuICAgICAgY29uc3Qgb3B0aW9uSGVpZ2h0ID0gcGFyc2VGbG9hdCgobGlTdHlsZXMuaGVpZ2h0ID8gbGlTdHlsZXMuaGVpZ2h0IDogJzAnKVxuICAgICAgICAucmVwbGFjZSgncHgnLCAnJykpO1xuICAgICAgY29uc3QgaGVpZ2h0ID0gdGhpcy50eXBlYWhlYWRPcHRpb25zSW5TY3JvbGxhYmxlVmlldyAqIG9wdGlvbkhlaWdodDtcbiAgICAgIHRoaXMuZ3VpSGVpZ2h0ID0gYCR7aGVpZ2h0ICsgdWxQYWRkaW5nVG9wICsgdWxQYWRkaW5nQm90dG9tfXB4YDtcbiAgICB9XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ3Zpc2liaWxpdHknLCAndmlzaWJsZScpO1xuICB9XG5cbiAgc2Nyb2xsUHJldmlvdXMoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgdGhpcy5zY3JvbGxUb0JvdHRvbSgpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLmxpRWxlbWVudHMpIHtcbiAgICAgIGNvbnN0IGxpRWxlbWVudCA9IHRoaXMubGlFbGVtZW50cy50b0FycmF5KClbaW5kZXggLSAxXTtcbiAgICAgIGlmIChsaUVsZW1lbnQgJiYgIXRoaXMuaXNTY3JvbGxlZEludG9WaWV3KGxpRWxlbWVudC5uYXRpdmVFbGVtZW50KSkge1xuICAgICAgICB0aGlzLnVsRWxlbWVudC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IGxpRWxlbWVudC5uYXRpdmVFbGVtZW50Lm9mZnNldFRvcDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzY3JvbGxOZXh0KGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoaW5kZXggKyAxID4gdGhpcy5tYXRjaGVzLmxlbmd0aCAtIDEpIHtcbiAgICAgIHRoaXMuc2Nyb2xsVG9Ub3AoKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5saUVsZW1lbnRzKSB7XG4gICAgICBjb25zdCBsaUVsZW1lbnQgPSB0aGlzLmxpRWxlbWVudHMudG9BcnJheSgpW2luZGV4ICsgMV07XG4gICAgICBpZiAobGlFbGVtZW50ICYmICF0aGlzLmlzU2Nyb2xsZWRJbnRvVmlldyhsaUVsZW1lbnQubmF0aXZlRWxlbWVudCkpIHtcbiAgICAgICAgdGhpcy51bEVsZW1lbnQubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPVxuICAgICAgICAgIGxpRWxlbWVudC5uYXRpdmVFbGVtZW50Lm9mZnNldFRvcCAtXG4gICAgICAgICAgTnVtYmVyKHRoaXMudWxFbGVtZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0KSArXG4gICAgICAgICAgTnVtYmVyKGxpRWxlbWVudC5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cblxuICBwcml2YXRlIGlzU2Nyb2xsZWRJbnRvVmlldyA9IGZ1bmN0aW9uIChlbGVtOiBIVE1MRWxlbWVudCkge1xuICAgIGNvbnN0IGNvbnRhaW5lclZpZXdUb3A6IG51bWJlciA9IHRoaXMudWxFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wO1xuICAgIGNvbnN0IGNvbnRhaW5lclZpZXdCb3R0b20gPSBjb250YWluZXJWaWV3VG9wICsgTnVtYmVyKHRoaXMudWxFbGVtZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0KTtcbiAgICBjb25zdCBlbGVtVG9wID0gZWxlbS5vZmZzZXRUb3A7XG4gICAgY29uc3QgZWxlbUJvdHRvbSA9IGVsZW1Ub3AgKyBlbGVtLm9mZnNldEhlaWdodDtcblxuICAgIHJldHVybiAoKGVsZW1Cb3R0b20gPD0gY29udGFpbmVyVmlld0JvdHRvbSkgJiYgKGVsZW1Ub3AgPj0gY29udGFpbmVyVmlld1RvcCkpO1xuICB9O1xuXG4gIHByaXZhdGUgc2Nyb2xsVG9Cb3R0b20oKTogdm9pZCB7XG4gICAgdGhpcy51bEVsZW1lbnQubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSB0aGlzLnVsRWxlbWVudC5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodDtcbiAgfVxuXG4gIHByaXZhdGUgc2Nyb2xsVG9Ub3AoKTogdm9pZCB7XG4gICAgdGhpcy51bEVsZW1lbnQubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSAwO1xuICB9XG59XG4iLCJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKiBEZWZhdWx0IHZhbHVlcyBwcm92aWRlciBmb3IgdHlwZWFoZWFkICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVHlwZWFoZWFkQ29uZmlnIHtcbiAgLyoqIHVzZWQgdG8gaGlkZSByZXN1bHRzIG9uIGJsdXIgKi9cbiAgaGlkZVJlc3VsdHNPbkJsdXIgPSB0cnVlO1xufVxuIiwiLyogdHNsaW50OmRpc2FibGU6bWF4LWZpbGUtbGluZS1jb3VudCAqL1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBSZW5kZXJlcjIsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBmcm9tLCBTdWJzY3JpcHRpb24sIGlzT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29tcG9uZW50TG9hZGVyLCBDb21wb25lbnRMb2FkZXJGYWN0b3J5IH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9jb21wb25lbnQtbG9hZGVyJztcbmltcG9ydCB7IFR5cGVhaGVhZENvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4vdHlwZWFoZWFkLWNvbnRhaW5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVHlwZWFoZWFkTWF0Y2ggfSBmcm9tICcuL3R5cGVhaGVhZC1tYXRjaC5jbGFzcyc7XG5pbXBvcnQgeyBnZXRWYWx1ZUZyb21PYmplY3QsIGxhdGluaXplLCB0b2tlbml6ZSB9IGZyb20gJy4vdHlwZWFoZWFkLXV0aWxzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZmlsdGVyLCBtZXJnZU1hcCwgc3dpdGNoTWFwLCB0b0FycmF5IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVHlwZWFoZWFkQ29uZmlnIH0gZnJvbSAnLi90eXBlYWhlYWQuY29uZmlnJztcblxuQERpcmVjdGl2ZSh7c2VsZWN0b3I6ICdbdHlwZWFoZWFkXScsIGV4cG9ydEFzOiAnYnMtdHlwZWFoZWFkJ30pXG5leHBvcnQgY2xhc3MgVHlwZWFoZWFkRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKiogb3B0aW9ucyBzb3VyY2UsIGNhbiBiZSBBcnJheSBvZiBzdHJpbmdzLCBvYmplY3RzIG9yXG4gICAqIGFuIE9ic2VydmFibGUgZm9yIGV4dGVybmFsIG1hdGNoaW5nIHByb2Nlc3NcbiAgICovXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueVxuICBASW5wdXQoKSB0eXBlYWhlYWQ6IGFueTtcbiAgLyoqIG1pbmltYWwgbm8gb2YgY2hhcmFjdGVycyB0aGF0IG5lZWRzIHRvIGJlIGVudGVyZWQgYmVmb3JlXG4gICAqIHR5cGVhaGVhZCBraWNrcy1pbi4gV2hlbiBzZXQgdG8gMCwgdHlwZWFoZWFkIHNob3dzIG9uIGZvY3VzIHdpdGggZnVsbFxuICAgKiBsaXN0IG9mIG9wdGlvbnMgKGxpbWl0ZWQgYXMgbm9ybWFsIGJ5IHR5cGVhaGVhZE9wdGlvbnNMaW1pdClcbiAgICovXG4gIEBJbnB1dCgpIHR5cGVhaGVhZE1pbkxlbmd0aDogbnVtYmVyID0gdm9pZCAwO1xuICAvKiogbWluaW1hbCB3YWl0IHRpbWUgYWZ0ZXIgbGFzdCBjaGFyYWN0ZXIgdHlwZWQgYmVmb3JlIHR5cGVhaGVhZCBraWNrcy1pbiAqL1xuICBASW5wdXQoKSB0eXBlYWhlYWRXYWl0TXM6IG51bWJlcjtcbiAgLyoqIG1heGltdW0gbGVuZ3RoIG9mIG9wdGlvbnMgaXRlbXMgbGlzdCAqL1xuICBASW5wdXQoKSB0eXBlYWhlYWRPcHRpb25zTGltaXQ6IG51bWJlcjtcbiAgLyoqIHdoZW4gb3B0aW9ucyBzb3VyY2UgaXMgYW4gYXJyYXkgb2Ygb2JqZWN0cywgdGhlIG5hbWUgb2YgZmllbGRcbiAgICogdGhhdCBjb250YWlucyB0aGUgb3B0aW9ucyB2YWx1ZSwgd2UgdXNlIGFycmF5IGl0ZW0gYXMgb3B0aW9uIGluIGNhc2VcbiAgICogb2YgdGhpcyBmaWVsZCBpcyBtaXNzaW5nLiBTdXBwb3J0cyBuZXN0ZWQgcHJvcGVydGllcyBhbmQgbWV0aG9kcy5cbiAgICovXG4gIEBJbnB1dCgpIHR5cGVhaGVhZE9wdGlvbkZpZWxkOiBzdHJpbmc7XG4gIC8qKiB3aGVuIG9wdGlvbnMgc291cmNlIGlzIGFuIGFycmF5IG9mIG9iamVjdHMsIHRoZSBuYW1lIG9mIGZpZWxkIHRoYXRcbiAgICogY29udGFpbnMgdGhlIGdyb3VwIHZhbHVlLCBtYXRjaGVzIGFyZSBncm91cGVkIGJ5IHRoaXMgZmllbGQgd2hlbiBzZXQuXG4gICAqL1xuICBASW5wdXQoKSB0eXBlYWhlYWRHcm91cEZpZWxkOiBzdHJpbmc7XG4gIC8qKiBzaG91bGQgYmUgdXNlZCBvbmx5IGluIGNhc2Ugb2YgdHlwZWFoZWFkIGF0dHJpYnV0ZSBpcyBhcnJheS5cbiAgICogSWYgdHJ1ZSAtIGxvYWRpbmcgb2Ygb3B0aW9ucyB3aWxsIGJlIGFzeW5jLCBvdGhlcndpc2UgLSBzeW5jLlxuICAgKiB0cnVlIG1ha2Ugc2Vuc2UgaWYgb3B0aW9ucyBhcnJheSBpcyBsYXJnZS5cbiAgICovXG4gIEBJbnB1dCgpIHR5cGVhaGVhZEFzeW5jOiBib29sZWFuID0gdm9pZCAwO1xuICAvKiogbWF0Y2ggbGF0aW4gc3ltYm9scy5cbiAgICogSWYgdHJ1ZSB0aGUgd29yZCBzw4PCunBlciB3b3VsZCBtYXRjaCBzdXBlciBhbmQgdmljZSB2ZXJzYS5cbiAgICovXG4gIEBJbnB1dCgpIHR5cGVhaGVhZExhdGluaXplID0gdHJ1ZTtcbiAgLyoqIENhbiBiZSB1c2UgdG8gc2VhcmNoIHdvcmRzIGJ5IGluc2VydGluZyBhIHNpbmdsZSB3aGl0ZSBzcGFjZSBiZXR3ZWVuIGVhY2ggY2hhcmFjdGVyc1xuICAgKiAgZm9yIGV4YW1wbGUgJ0MgYSBsIGkgZiBvIHIgbiBpIGEnIHdpbGwgbWF0Y2ggJ0NhbGlmb3JuaWEnLlxuICAgKi9cbiAgQElucHV0KCkgdHlwZWFoZWFkU2luZ2xlV29yZHMgPSB0cnVlO1xuICAvKiogc2hvdWxkIGJlIHVzZWQgb25seSBpbiBjYXNlIHR5cGVhaGVhZFNpbmdsZVdvcmRzIGF0dHJpYnV0ZSBpcyB0cnVlLlxuICAgKiBTZXRzIHRoZSB3b3JkIGRlbGltaXRlciB0byBicmVhayB3b3Jkcy4gRGVmYXVsdHMgdG8gc3BhY2UuXG4gICAqL1xuICBASW5wdXQoKSB0eXBlYWhlYWRXb3JkRGVsaW1pdGVycyA9ICcgJztcbiAgLyoqIHNob3VsZCBiZSB1c2VkIG9ubHkgaW4gY2FzZSB0eXBlYWhlYWRTaW5nbGVXb3JkcyBhdHRyaWJ1dGUgaXMgdHJ1ZS5cbiAgICogU2V0cyB0aGUgd29yZCBkZWxpbWl0ZXIgdG8gbWF0Y2ggZXhhY3QgcGhyYXNlLlxuICAgKiBEZWZhdWx0cyB0byBzaW1wbGUgYW5kIGRvdWJsZSBxdW90ZXMuXG4gICAqL1xuICBASW5wdXQoKSB0eXBlYWhlYWRQaHJhc2VEZWxpbWl0ZXJzID0gJ1xcJ1wiJztcbiAgLyoqIHVzZWQgdG8gc3BlY2lmeSBhIGN1c3RvbSBpdGVtIHRlbXBsYXRlLlxuICAgKiBUZW1wbGF0ZSB2YXJpYWJsZXMgZXhwb3NlZCBhcmUgY2FsbGVkIGl0ZW0gYW5kIGluZGV4O1xuICAgKi9cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG4gIEBJbnB1dCgpIHR5cGVhaGVhZEl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgLyoqIHVzZWQgdG8gc3BlY2lmeSBhIGN1c3RvbSBvcHRpb25zIGxpc3QgdGVtcGxhdGUuXG4gICAqIFRlbXBsYXRlIHZhcmlhYmxlczogbWF0Y2hlcywgaXRlbVRlbXBsYXRlLCBxdWVyeVxuICAgKi9cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG4gIEBJbnB1dCgpIG9wdGlvbnNMaXN0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIC8qKiBzcGVjaWZpZXMgaWYgdHlwZWFoZWFkIGlzIHNjcm9sbGFibGUgICovXG4gIEBJbnB1dCgpIHR5cGVhaGVhZFNjcm9sbGFibGUgPSBmYWxzZTtcbiAgLyoqIHNwZWNpZmllcyBudW1iZXIgb2Ygb3B0aW9ucyB0byBzaG93IGluIHNjcm9sbCB2aWV3ICAqL1xuICBASW5wdXQoKSB0eXBlYWhlYWRPcHRpb25zSW5TY3JvbGxhYmxlVmlldyA9IDU7XG4gIC8qKiB1c2VkIHRvIGhpZGUgcmVzdWx0IG9uIGJsdXIgKi9cbiAgQElucHV0KCkgdHlwZWFoZWFkSGlkZVJlc3VsdHNPbkJsdXI6IGJvb2xlYW47XG4gIC8qKiBmaXJlZCB3aGVuICdidXN5JyBzdGF0ZSBvZiB0aGlzIGNvbXBvbmVudCB3YXMgY2hhbmdlZCxcbiAgICogZmlyZWQgb24gYXN5bmMgbW9kZSBvbmx5LCByZXR1cm5zIGJvb2xlYW5cbiAgICovXG4gIEBPdXRwdXQoKSB0eXBlYWhlYWRMb2FkaW5nID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAvKiogZmlyZWQgb24gZXZlcnkga2V5IGV2ZW50IGFuZCByZXR1cm5zIHRydWVcbiAgICogaW4gY2FzZSBvZiBtYXRjaGVzIGFyZSBub3QgZGV0ZWN0ZWRcbiAgICovXG4gIEBPdXRwdXQoKSB0eXBlYWhlYWROb1Jlc3VsdHMgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIC8qKiBmaXJlZCB3aGVuIG9wdGlvbiB3YXMgc2VsZWN0ZWQsIHJldHVybiBvYmplY3Qgd2l0aCBkYXRhIG9mIHRoaXMgb3B0aW9uICovXG4gIEBPdXRwdXQoKSB0eXBlYWhlYWRPblNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8VHlwZWFoZWFkTWF0Y2g+KCk7XG4gIC8qKiBmaXJlZCB3aGVuIGJsdXIgZXZlbnQgb2NjdXJyZXMuIHJldHVybnMgdGhlIGFjdGl2ZSBpdGVtICovXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueVxuICBAT3V0cHV0KCkgdHlwZWFoZWFkT25CbHVyID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgLyoqXG4gICAqIEEgc2VsZWN0b3Igc3BlY2lmeWluZyB0aGUgZWxlbWVudCB0aGUgdHlwZWFoZWFkIHNob3VsZCBiZSBhcHBlbmRlZCB0by5cbiAgICogQ3VycmVudGx5IG9ubHkgc3VwcG9ydHMgXCJib2R5XCIuXG4gICAqL1xuICBASW5wdXQoKSBjb250YWluZXI6IHN0cmluZztcblxuICAvKiogVGhpcyBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoYXQgdGhlIGRyb3Bkb3duIHNob3VsZCBiZSBvcGVuZWQgdXB3YXJkcyAqL1xuICBASW5wdXQoKSBkcm9wdXAgPSBmYWxzZTtcblxuICAvLyBub3QgeWV0IGltcGxlbWVudGVkXG4gIC8qKiBpZiBmYWxzZSByZXN0cmljdCBtb2RlbCB2YWx1ZXMgdG8gdGhlIG9uZXMgc2VsZWN0ZWQgZnJvbSB0aGUgcG9wdXAgb25seSB3aWxsIGJlIHByb3ZpZGVkICovXG4gIC8vIEBJbnB1dCgpIHByb3RlY3RlZCB0eXBlYWhlYWRFZGl0YWJsZTpib29sZWFuO1xuICAvKiogaWYgZmFsc2UgdGhlIGZpcnN0IG1hdGNoIGF1dG9tYXRpY2FsbHkgd2lsbCBub3QgYmUgZm9jdXNlZCBhcyB5b3UgdHlwZSAqL1xuICAvLyBASW5wdXQoKSBwcm90ZWN0ZWQgdHlwZWFoZWFkRm9jdXNGaXJzdDpib29sZWFuO1xuICAvKiogZm9ybWF0IHRoZSBuZy1tb2RlbCByZXN1bHQgYWZ0ZXIgc2VsZWN0aW9uICovXG4gIC8vIEBJbnB1dCgpIHByb3RlY3RlZCB0eXBlYWhlYWRJbnB1dEZvcm1hdHRlcjphbnk7XG4gIC8qKiBpZiB0cnVlIGF1dG9tYXRpY2FsbHkgc2VsZWN0IGFuIGl0ZW0gd2hlbiB0aGVyZSBpcyBvbmUgb3B0aW9uIHRoYXQgZXhhY3RseSBtYXRjaGVzIHRoZSB1c2VyIGlucHV0ICovXG4gIC8vIEBJbnB1dCgpIHByb3RlY3RlZCB0eXBlYWhlYWRTZWxlY3RPbkV4YWN0OmJvb2xlYW47XG4gIC8qKiAgaWYgdHJ1ZSBzZWxlY3QgdGhlIGN1cnJlbnRseSBoaWdobGlnaHRlZCBtYXRjaCBvbiBibHVyICovXG4gIC8vIEBJbnB1dCgpIHByb3RlY3RlZCB0eXBlYWhlYWRTZWxlY3RPbkJsdXI6Ym9vbGVhbjtcbiAgLyoqICBpZiBmYWxzZSBkb24ndCBmb2N1cyB0aGUgaW5wdXQgZWxlbWVudCB0aGUgdHlwZWFoZWFkIGRpcmVjdGl2ZSBpcyBhc3NvY2lhdGVkIHdpdGggb24gc2VsZWN0aW9uICovXG4gICAgLy8gQElucHV0KCkgcHJvdGVjdGVkIHR5cGVhaGVhZEZvY3VzT25TZWxlY3Q6Ym9vbGVhbjtcblxuICBfY29udGFpbmVyOiBUeXBlYWhlYWRDb250YWluZXJDb21wb25lbnQ7XG4gIGlzVHlwZWFoZWFkT3B0aW9uc0xpc3RBY3RpdmUgPSBmYWxzZTtcblxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG4gIHByb3RlY3RlZCBrZXlVcEV2ZW50RW1pdHRlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIHByb3RlY3RlZCBfbWF0Y2hlczogVHlwZWFoZWFkTWF0Y2hbXTtcbiAgcHJvdGVjdGVkIHBsYWNlbWVudCA9ICdib3R0b20tbGVmdCc7XG4gIC8vIHByb3RlY3RlZCBwb3B1cDpDb21wb25lbnRSZWY8VHlwZWFoZWFkQ29udGFpbmVyQ29tcG9uZW50PjtcblxuICBwcml2YXRlIF90eXBlYWhlYWQ6IENvbXBvbmVudExvYWRlcjxUeXBlYWhlYWRDb250YWluZXJDb21wb25lbnQ+O1xuICBwcml2YXRlIF9zdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICBwcml2YXRlIF9vdXRzaWRlQ2xpY2tMaXN0ZW5lcjogRnVuY3Rpb247XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBlbGVtZW50OiBFbGVtZW50UmVmLFxuICAgICAgICAgICAgICB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgICAgICAgIGNvbmZpZzogVHlwZWFoZWFkQ29uZmlnLFxuICAgICAgICAgICAgICBjaXM6IENvbXBvbmVudExvYWRlckZhY3RvcnksXG4gICAgICAgICAgICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuXG4gICAgdGhpcy5fdHlwZWFoZWFkID0gY2lzLmNyZWF0ZUxvYWRlcjxUeXBlYWhlYWRDb250YWluZXJDb21wb25lbnQ+KFxuICAgICAgZWxlbWVudCxcbiAgICAgIHZpZXdDb250YWluZXJSZWYsXG4gICAgICByZW5kZXJlclxuICAgIClcbiAgICAgIC5wcm92aWRlKHsgcHJvdmlkZTogVHlwZWFoZWFkQ29uZmlnLCB1c2VWYWx1ZTogY29uZmlnIH0pO1xuXG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLCB7IHR5cGVhaGVhZEhpZGVSZXN1bHRzT25CbHVyOiBjb25maWcuaGlkZVJlc3VsdHNPbkJsdXIgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnR5cGVhaGVhZE9wdGlvbnNMaW1pdCA9IHRoaXMudHlwZWFoZWFkT3B0aW9uc0xpbWl0IHx8IDIwO1xuXG4gICAgdGhpcy50eXBlYWhlYWRNaW5MZW5ndGggPVxuICAgICAgdGhpcy50eXBlYWhlYWRNaW5MZW5ndGggPT09IHZvaWQgMCA/IDEgOiB0aGlzLnR5cGVhaGVhZE1pbkxlbmd0aDtcblxuICAgIHRoaXMudHlwZWFoZWFkV2FpdE1zID0gdGhpcy50eXBlYWhlYWRXYWl0TXMgfHwgMDtcblxuICAgIC8vIGFzeW5jIHNob3VsZCBiZSBmYWxzZSBpbiBjYXNlIG9mIGFycmF5XG4gICAgaWYgKFxuICAgICAgdGhpcy50eXBlYWhlYWRBc3luYyA9PT0gdW5kZWZpbmVkICYmXG4gICAgICAhKGlzT2JzZXJ2YWJsZSh0aGlzLnR5cGVhaGVhZCkpXG4gICAgKSB7XG4gICAgICB0aGlzLnR5cGVhaGVhZEFzeW5jID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKGlzT2JzZXJ2YWJsZSh0aGlzLnR5cGVhaGVhZCkpIHtcbiAgICAgIHRoaXMudHlwZWFoZWFkQXN5bmMgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnR5cGVhaGVhZEFzeW5jKSB7XG4gICAgICB0aGlzLmFzeW5jQWN0aW9ucygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN5bmNBY3Rpb25zKCk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignaW5wdXQnLCBbJyRldmVudCddKVxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG4gIG9uSW5wdXQoZTogYW55KTogdm9pZCB7XG4gICAgLy8gRm9yIGA8aW5wdXQ+YHMsIHVzZSB0aGUgYHZhbHVlYCBwcm9wZXJ0eS4gRm9yIG90aGVycyB0aGF0IGRvbid0IGhhdmUgYVxuICAgIC8vIGB2YWx1ZWAgKHN1Y2ggYXMgYDxzcGFuIGNvbnRlbnRlZGl0YWJsZT1cInRydWVcIj5gKSwgdXNlIGVpdGhlclxuICAgIC8vIGB0ZXh0Q29udGVudGAgb3IgYGlubmVyVGV4dGAgKGRlcGVuZGluZyBvbiB3aGljaCBvbmUgaXMgc3VwcG9ydGVkLCBpLmUuXG4gICAgLy8gRmlyZWZveCBvciBJRSkuXG4gICAgY29uc3QgdmFsdWUgPVxuICAgICAgZS50YXJnZXQudmFsdWUgIT09IHVuZGVmaW5lZFxuICAgICAgICA/IGUudGFyZ2V0LnZhbHVlXG4gICAgICAgIDogZS50YXJnZXQudGV4dENvbnRlbnQgIT09IHVuZGVmaW5lZFxuICAgICAgICA/IGUudGFyZ2V0LnRleHRDb250ZW50XG4gICAgICAgIDogZS50YXJnZXQuaW5uZXJUZXh0O1xuICAgIGlmICh2YWx1ZSAhPSBudWxsICYmIHZhbHVlLnRyaW0oKS5sZW5ndGggPj0gdGhpcy50eXBlYWhlYWRNaW5MZW5ndGgpIHtcbiAgICAgIHRoaXMudHlwZWFoZWFkTG9hZGluZy5lbWl0KHRydWUpO1xuICAgICAgdGhpcy5rZXlVcEV2ZW50RW1pdHRlci5lbWl0KGUudGFyZ2V0LnZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50eXBlYWhlYWRMb2FkaW5nLmVtaXQoZmFsc2UpO1xuICAgICAgdGhpcy50eXBlYWhlYWROb1Jlc3VsdHMuZW1pdChmYWxzZSk7XG4gICAgICB0aGlzLmhpZGUoKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXl1cCcsIFsnJGV2ZW50J10pXG4gIG9uQ2hhbmdlKGU6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fY29udGFpbmVyKSB7XG4gICAgICAvLyBlc2NcbiAgICAgIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogZGVwcmVjYXRpb24gKi9cbiAgICAgIGlmIChlLmtleUNvZGUgPT09IDI3KSB7XG4gICAgICAgIHRoaXMuaGlkZSgpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gdXBcbiAgICAgIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogZGVwcmVjYXRpb24gKi9cbiAgICAgIGlmIChlLmtleUNvZGUgPT09IDM4KSB7XG4gICAgICAgIHRoaXMuX2NvbnRhaW5lci5wcmV2QWN0aXZlTWF0Y2goKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIGRvd25cbiAgICAgIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogZGVwcmVjYXRpb24gKi9cbiAgICAgIGlmIChlLmtleUNvZGUgPT09IDQwKSB7XG4gICAgICAgIHRoaXMuX2NvbnRhaW5lci5uZXh0QWN0aXZlTWF0Y2goKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIGVudGVyLCB0YWJcbiAgICAgIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogZGVwcmVjYXRpb24gKi9cbiAgICAgIGlmIChlLmtleUNvZGUgPT09IDEzKSB7XG4gICAgICAgIHRoaXMuX2NvbnRhaW5lci5zZWxlY3RBY3RpdmVNYXRjaCgpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gIEBIb3N0TGlzdGVuZXIoJ2ZvY3VzJylcbiAgb25Gb2N1cygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50eXBlYWhlYWRNaW5MZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMudHlwZWFoZWFkTG9hZGluZy5lbWl0KHRydWUpO1xuICAgICAgdGhpcy5rZXlVcEV2ZW50RW1pdHRlci5lbWl0KHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlIHx8ICcnKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdibHVyJylcbiAgb25CbHVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9jb250YWluZXIgJiYgIXRoaXMuX2NvbnRhaW5lci5pc0ZvY3VzZWQpIHtcbiAgICAgIHRoaXMudHlwZWFoZWFkT25CbHVyLmVtaXQodGhpcy5fY29udGFpbmVyLmFjdGl2ZSk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIG9uS2V5ZG93bihlOiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgLy8gbm8gY29udGFpbmVyIC0gbm8gcHJvYmxlbXNcbiAgICBpZiAoIXRoaXMuX2NvbnRhaW5lcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIGlmIGFuIGl0ZW0gaXMgdmlzaWJsZSAtIHByZXZlbnQgZm9ybSBzdWJtaXNzaW9uXG4gICAgLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBkZXByZWNhdGlvbiAqL1xuICAgIGlmIChlLmtleUNvZGUgPT09IDEzKSB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBpZiBhbiBpdGVtIGlzIHZpc2libGUgLSBkb24ndCBjaGFuZ2UgZm9jdXNcbiAgICAvKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IGRlcHJlY2F0aW9uICovXG4gICAgaWYgKGUua2V5Q29kZSA9PT0gOSkge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5fY29udGFpbmVyLnNlbGVjdEFjdGl2ZU1hdGNoKCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBjaGFuZ2VNb2RlbChtYXRjaDogVHlwZWFoZWFkTWF0Y2gpOiB2b2lkIHtcbiAgICBjb25zdCB2YWx1ZVN0cjogc3RyaW5nID0gbWF0Y2gudmFsdWU7XG4gICAgdGhpcy5uZ0NvbnRyb2wudmlld1RvTW9kZWxVcGRhdGUodmFsdWVTdHIpO1xuICAgICh0aGlzLm5nQ29udHJvbC5jb250cm9sKS5zZXRWYWx1ZSh2YWx1ZVN0cik7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rpb24ubWFya0ZvckNoZWNrKCk7XG4gICAgdGhpcy5oaWRlKCk7XG4gIH1cblxuICBnZXQgbWF0Y2hlcygpOiBUeXBlYWhlYWRNYXRjaFtdIHtcbiAgICByZXR1cm4gdGhpcy5fbWF0Y2hlcztcbiAgfVxuXG4gIHNob3coKTogdm9pZCB7XG4gICAgdGhpcy5fdHlwZWFoZWFkXG4gICAgICAuYXR0YWNoKFR5cGVhaGVhZENvbnRhaW5lckNvbXBvbmVudClcbiAgICAgIC8vIHRvZG86IGFkZCBhcHBlbmQgdG8gYm9keSwgYWZ0ZXIgdXBkYXRpbmcgcG9zaXRpb25pbmcgc2VydmljZVxuICAgICAgLnRvKHRoaXMuY29udGFpbmVyKVxuICAgICAgLnBvc2l0aW9uKHthdHRhY2htZW50OiBgJHt0aGlzLmRyb3B1cCA/ICd0b3AnIDogJ2JvdHRvbSd9IGxlZnRgfSlcbiAgICAgIC5zaG93KHtcbiAgICAgICAgdHlwZWFoZWFkUmVmOiB0aGlzLFxuICAgICAgICBwbGFjZW1lbnQ6IHRoaXMucGxhY2VtZW50LFxuICAgICAgICBhbmltYXRpb246IGZhbHNlLFxuICAgICAgICBkcm9wdXA6IHRoaXMuZHJvcHVwXG4gICAgICB9KTtcblxuICAgIHRoaXMuX291dHNpZGVDbGlja0xpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ2NsaWNrJywgKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGlmICh0aGlzLnR5cGVhaGVhZE1pbkxlbmd0aCA9PT0gMCAmJiB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5jb250YWlucyhlLnRhcmdldCkpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy50eXBlYWhlYWRIaWRlUmVzdWx0c09uQmx1ciB8fCB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5jb250YWlucyhlLnRhcmdldCkpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHRoaXMub25PdXRzaWRlQ2xpY2soKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX2NvbnRhaW5lciA9IHRoaXMuX3R5cGVhaGVhZC5pbnN0YW5jZTtcbiAgICB0aGlzLl9jb250YWluZXIucGFyZW50ID0gdGhpcztcbiAgICAvLyBUaGlzIGltcHJvdmVzIHRoZSBzcGVlZCBhcyBpdCB3b24ndCBoYXZlIHRvIGJlIGRvbmUgZm9yIGVhY2ggbGlzdCBpdGVtXG4gICAgY29uc3Qgbm9ybWFsaXplZFF1ZXJ5ID0gKHRoaXMudHlwZWFoZWFkTGF0aW5pemVcbiAgICAgID8gbGF0aW5pemUodGhpcy5uZ0NvbnRyb2wuY29udHJvbC52YWx1ZSlcbiAgICAgIDogdGhpcy5uZ0NvbnRyb2wuY29udHJvbC52YWx1ZSlcbiAgICAgIC50b1N0cmluZygpXG4gICAgICAudG9Mb3dlckNhc2UoKTtcbiAgICB0aGlzLl9jb250YWluZXIucXVlcnkgPSB0aGlzLnR5cGVhaGVhZFNpbmdsZVdvcmRzXG4gICAgICA/IHRva2VuaXplKFxuICAgICAgICBub3JtYWxpemVkUXVlcnksXG4gICAgICAgIHRoaXMudHlwZWFoZWFkV29yZERlbGltaXRlcnMsXG4gICAgICAgIHRoaXMudHlwZWFoZWFkUGhyYXNlRGVsaW1pdGVyc1xuICAgICAgKVxuICAgICAgOiBub3JtYWxpemVkUXVlcnk7XG4gICAgdGhpcy5fY29udGFpbmVyLm1hdGNoZXMgPSB0aGlzLl9tYXRjaGVzO1xuICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICBoaWRlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl90eXBlYWhlYWQuaXNTaG93bikge1xuICAgICAgdGhpcy5fdHlwZWFoZWFkLmhpZGUoKTtcbiAgICAgIHRoaXMuX291dHNpZGVDbGlja0xpc3RlbmVyKCk7XG4gICAgICB0aGlzLl9jb250YWluZXIgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIG9uT3V0c2lkZUNsaWNrKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9jb250YWluZXIgJiYgIXRoaXMuX2NvbnRhaW5lci5pc0ZvY3VzZWQpIHtcbiAgICAgIHRoaXMuaGlkZSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIC8vIGNsZWFuIHVwIHN1YnNjcmlwdGlvbnNcbiAgICBmb3IgKGNvbnN0IHN1YiBvZiB0aGlzLl9zdWJzY3JpcHRpb25zKSB7XG4gICAgICBzdWIudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgdGhpcy5fdHlwZWFoZWFkLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luY0FjdGlvbnMoKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5rZXlVcEV2ZW50RW1pdHRlclxuICAgICAgICAucGlwZShcbiAgICAgICAgICBkZWJvdW5jZVRpbWUodGhpcy50eXBlYWhlYWRXYWl0TXMpLFxuICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLnR5cGVhaGVhZClcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKChtYXRjaGVzOiBUeXBlYWhlYWRNYXRjaFtdKSA9PiB7XG4gICAgICAgICAgdGhpcy5maW5hbGl6ZUFzeW5jQ2FsbChtYXRjaGVzKTtcbiAgICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIHN5bmNBY3Rpb25zKCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMua2V5VXBFdmVudEVtaXR0ZXJcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgZGVib3VuY2VUaW1lKHRoaXMudHlwZWFoZWFkV2FpdE1zKSxcbiAgICAgICAgICBtZXJnZU1hcCgodmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplZFF1ZXJ5ID0gdGhpcy5ub3JtYWxpemVRdWVyeSh2YWx1ZSk7XG5cbiAgICAgICAgICAgIHJldHVybiBmcm9tKHRoaXMudHlwZWFoZWFkKVxuICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKG9wdGlvbjogVHlwZWFoZWFkTWF0Y2gpID0+IHtcblxuICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGVzdE1hdGNoKHRoaXMubm9ybWFsaXplT3B0aW9uKG9wdGlvbiksIG5vcm1hbGl6ZWRRdWVyeSlcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgdG9BcnJheSgpXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKChtYXRjaGVzOiBUeXBlYWhlYWRNYXRjaFtdKSA9PiB7XG4gICAgICAgICAgdGhpcy5maW5hbGl6ZUFzeW5jQ2FsbChtYXRjaGVzKTtcbiAgICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueVxuICBwcm90ZWN0ZWQgbm9ybWFsaXplT3B0aW9uKG9wdGlvbjogYW55KTogYW55IHtcbiAgICBjb25zdCBvcHRpb25WYWx1ZTogc3RyaW5nID0gZ2V0VmFsdWVGcm9tT2JqZWN0KFxuICAgICAgb3B0aW9uLFxuICAgICAgdGhpcy50eXBlYWhlYWRPcHRpb25GaWVsZFxuICAgICk7XG4gICAgY29uc3Qgbm9ybWFsaXplZE9wdGlvbiA9IHRoaXMudHlwZWFoZWFkTGF0aW5pemVcbiAgICAgID8gbGF0aW5pemUob3B0aW9uVmFsdWUpXG4gICAgICA6IG9wdGlvblZhbHVlO1xuXG4gICAgcmV0dXJuIG5vcm1hbGl6ZWRPcHRpb24udG9Mb3dlckNhc2UoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBub3JtYWxpemVRdWVyeSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHwgc3RyaW5nW10ge1xuICAgIC8vIElmIHNpbmdsZVdvcmRzLCBicmVhayBtb2RlbCBoZXJlIHRvIG5vdCBiZSBkb2luZyBleHRyYSB3b3JrIG9uIGVhY2hcbiAgICAvLyBpdGVyYXRpb25cbiAgICBsZXQgbm9ybWFsaXplZFF1ZXJ5OiBzdHJpbmcgfCBzdHJpbmdbXSA9ICh0aGlzLnR5cGVhaGVhZExhdGluaXplXG4gICAgICA/IGxhdGluaXplKHZhbHVlKVxuICAgICAgOiB2YWx1ZSlcbiAgICAgIC50b1N0cmluZygpXG4gICAgICAudG9Mb3dlckNhc2UoKTtcbiAgICBub3JtYWxpemVkUXVlcnkgPSB0aGlzLnR5cGVhaGVhZFNpbmdsZVdvcmRzXG4gICAgICA/IHRva2VuaXplKFxuICAgICAgICBub3JtYWxpemVkUXVlcnksXG4gICAgICAgIHRoaXMudHlwZWFoZWFkV29yZERlbGltaXRlcnMsXG4gICAgICAgIHRoaXMudHlwZWFoZWFkUGhyYXNlRGVsaW1pdGVyc1xuICAgICAgKVxuICAgICAgOiBub3JtYWxpemVkUXVlcnk7XG5cbiAgICByZXR1cm4gbm9ybWFsaXplZFF1ZXJ5O1xuICB9XG5cbiAgcHJvdGVjdGVkIHRlc3RNYXRjaChtYXRjaDogc3RyaW5nLCB0ZXN0OiBzdHJpbmdbXSB8IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGxldCBzcGFjZUxlbmd0aDogbnVtYmVyO1xuXG4gICAgaWYgKHR5cGVvZiB0ZXN0ID09PSAnb2JqZWN0Jykge1xuICAgICAgc3BhY2VMZW5ndGggPSB0ZXN0Lmxlbmd0aDtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3BhY2VMZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICBpZiAodGVzdFtpXS5sZW5ndGggPiAwICYmIG1hdGNoLmluZGV4T2YodGVzdFtpXSkgPCAwKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBtYXRjaC5pbmRleE9mKHRlc3QpID49IDA7XG4gIH1cblxuICBwcm90ZWN0ZWQgZmluYWxpemVBc3luY0NhbGwobWF0Y2hlczogVHlwZWFoZWFkTWF0Y2hbXSk6IHZvaWQge1xuICAgIHRoaXMucHJlcGFyZU1hdGNoZXMobWF0Y2hlcyB8fCBbXSk7XG5cbiAgICB0aGlzLnR5cGVhaGVhZExvYWRpbmcuZW1pdChmYWxzZSk7XG4gICAgdGhpcy50eXBlYWhlYWROb1Jlc3VsdHMuZW1pdCghdGhpcy5oYXNNYXRjaGVzKCkpO1xuXG4gICAgaWYgKCF0aGlzLmhhc01hdGNoZXMoKSkge1xuICAgICAgdGhpcy5oaWRlKCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fY29udGFpbmVyKSB7XG4gICAgICAvLyBmaXg6IHJlbW92ZSB1c2FnZSBvZiBuZ0NvbnRyb2wgaW50ZXJuYWxzXG4gICAgICBjb25zdCBfY29udHJvbFZhbHVlID0gKHRoaXMudHlwZWFoZWFkTGF0aW5pemVcbiAgICAgICAgPyBsYXRpbml6ZSh0aGlzLm5nQ29udHJvbC5jb250cm9sLnZhbHVlKVxuICAgICAgICA6IHRoaXMubmdDb250cm9sLmNvbnRyb2wudmFsdWUpIHx8ICcnO1xuICAgICAgLy8gVGhpcyBpbXByb3ZlcyB0aGUgc3BlZWQgYXMgaXQgd29uJ3QgaGF2ZSB0byBiZSBkb25lIGZvciBlYWNoIGxpc3QgaXRlbVxuICAgICAgY29uc3Qgbm9ybWFsaXplZFF1ZXJ5ID0gX2NvbnRyb2xWYWx1ZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCk7XG4gICAgICB0aGlzLl9jb250YWluZXIucXVlcnkgPSB0aGlzLnR5cGVhaGVhZFNpbmdsZVdvcmRzXG4gICAgICAgID8gdG9rZW5pemUoXG4gICAgICAgICAgbm9ybWFsaXplZFF1ZXJ5LFxuICAgICAgICAgIHRoaXMudHlwZWFoZWFkV29yZERlbGltaXRlcnMsXG4gICAgICAgICAgdGhpcy50eXBlYWhlYWRQaHJhc2VEZWxpbWl0ZXJzXG4gICAgICAgIClcbiAgICAgICAgOiBub3JtYWxpemVkUXVlcnk7XG4gICAgICB0aGlzLl9jb250YWluZXIubWF0Y2hlcyA9IHRoaXMuX21hdGNoZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2hvdygpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBwcmVwYXJlTWF0Y2hlcyhvcHRpb25zOiBUeXBlYWhlYWRNYXRjaFtdKTogdm9pZCB7XG4gICAgY29uc3QgbGltaXRlZDogVHlwZWFoZWFkTWF0Y2hbXSA9IG9wdGlvbnMuc2xpY2UoMCwgdGhpcy50eXBlYWhlYWRPcHRpb25zTGltaXQpO1xuXG4gICAgaWYgKHRoaXMudHlwZWFoZWFkR3JvdXBGaWVsZCkge1xuICAgICAgbGV0IG1hdGNoZXM6IFR5cGVhaGVhZE1hdGNoW10gPSBbXTtcblxuICAgICAgLy8gZXh0cmFjdCBhbGwgZ3JvdXAgbmFtZXNcbiAgICAgIGNvbnN0IGdyb3VwcyA9IGxpbWl0ZWRcbiAgICAgICAgLm1hcCgob3B0aW9uOiBUeXBlYWhlYWRNYXRjaCkgPT5cbiAgICAgICAgICBnZXRWYWx1ZUZyb21PYmplY3Qob3B0aW9uLCB0aGlzLnR5cGVhaGVhZEdyb3VwRmllbGQpXG4gICAgICAgIClcbiAgICAgICAgLmZpbHRlcigodjogc3RyaW5nLCBpOiBudW1iZXIsIGE6IHN0cmluZ1tdKSA9PiBhLmluZGV4T2YodikgPT09IGkpO1xuXG4gICAgICBncm91cHMuZm9yRWFjaCgoZ3JvdXA6IHN0cmluZykgPT4ge1xuICAgICAgICAvLyBhZGQgZ3JvdXAgaGVhZGVyIHRvIGFycmF5IG9mIG1hdGNoZXNcbiAgICAgICAgbWF0Y2hlcy5wdXNoKG5ldyBUeXBlYWhlYWRNYXRjaChncm91cCwgZ3JvdXAsIHRydWUpKTtcblxuICAgICAgICAvLyBhZGQgZWFjaCBpdGVtIG9mIGdyb3VwIHRvIGFycmF5IG9mIG1hdGNoZXNcbiAgICAgICAgbWF0Y2hlcyA9IG1hdGNoZXMuY29uY2F0KFxuICAgICAgICAgIGxpbWl0ZWRcbiAgICAgICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnlcbiAgICAgICAgICAgICAgKG9wdGlvbjogYW55KSA9PlxuICAgICAgICAgICAgICAgIGdldFZhbHVlRnJvbU9iamVjdChvcHRpb24sIHRoaXMudHlwZWFoZWFkR3JvdXBGaWVsZCkgPT09IGdyb3VwXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAubWFwKFxuICAgICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG4gICAgICAgICAgICAgIChvcHRpb246IGFueSkgPT5cbiAgICAgICAgICAgICAgICBuZXcgVHlwZWFoZWFkTWF0Y2goXG4gICAgICAgICAgICAgICAgICBvcHRpb24sXG4gICAgICAgICAgICAgICAgICBnZXRWYWx1ZUZyb21PYmplY3Qob3B0aW9uLCB0aGlzLnR5cGVhaGVhZE9wdGlvbkZpZWxkKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLl9tYXRjaGVzID0gbWF0Y2hlcztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbWF0Y2hlcyA9IGxpbWl0ZWQubWFwKFxuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG4gICAgICAgIChvcHRpb246IGFueSkgPT5cbiAgICAgICAgICBuZXcgVHlwZWFoZWFkTWF0Y2goXG4gICAgICAgICAgICBvcHRpb24sXG4gICAgICAgICAgICBnZXRWYWx1ZUZyb21PYmplY3Qob3B0aW9uLCB0aGlzLnR5cGVhaGVhZE9wdGlvbkZpZWxkKVxuICAgICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGhhc01hdGNoZXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX21hdGNoZXMubGVuZ3RoID4gMDtcbiAgfVxufVxuIiwiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFR5cGVhaGVhZENvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4vdHlwZWFoZWFkLWNvbnRhaW5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVHlwZWFoZWFkRGlyZWN0aXZlIH0gZnJvbSAnLi90eXBlYWhlYWQuZGlyZWN0aXZlJztcbmltcG9ydCB7IENvbXBvbmVudExvYWRlckZhY3RvcnkgfSBmcm9tICduZ3gtYm9vdHN0cmFwL2NvbXBvbmVudC1sb2FkZXInO1xuaW1wb3J0IHsgUG9zaXRpb25pbmdTZXJ2aWNlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9wb3NpdGlvbmluZyc7XG5pbXBvcnQgeyBUeXBlYWhlYWRDb25maWcgfSBmcm9tICcuL3R5cGVhaGVhZC5jb25maWcnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgZGVjbGFyYXRpb25zOiBbVHlwZWFoZWFkQ29udGFpbmVyQ29tcG9uZW50LCBUeXBlYWhlYWREaXJlY3RpdmVdLFxuICBleHBvcnRzOiBbVHlwZWFoZWFkQ29udGFpbmVyQ29tcG9uZW50LCBUeXBlYWhlYWREaXJlY3RpdmVdLFxuICBlbnRyeUNvbXBvbmVudHM6IFtUeXBlYWhlYWRDb250YWluZXJDb21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIFR5cGVhaGVhZE1vZHVsZSB7XG4gIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnMge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogVHlwZWFoZWFkTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbQ29tcG9uZW50TG9hZGVyRmFjdG9yeSwgUG9zaXRpb25pbmdTZXJ2aWNlLCBUeXBlYWhlYWRDb25maWddXG4gICAgfTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbInRzbGliXzEuX192YWx1ZXMiLCJpc0JzMyIsIlV0aWxzIiwiQ29tcG9uZW50IiwiRWxlbWVudFJlZiIsIlJlbmRlcmVyMiIsIlZpZXdDaGlsZCIsIlZpZXdDaGlsZHJlbiIsIkhvc3RMaXN0ZW5lciIsIkluamVjdGFibGUiLCJFdmVudEVtaXR0ZXIiLCJpc09ic2VydmFibGUiLCJkZWJvdW5jZVRpbWUiLCJzd2l0Y2hNYXAiLCJtZXJnZU1hcCIsImZyb20iLCJmaWx0ZXIiLCJ0b0FycmF5IiwiRGlyZWN0aXZlIiwiTmdDb250cm9sIiwiVmlld0NvbnRhaW5lclJlZiIsIkNvbXBvbmVudExvYWRlckZhY3RvcnkiLCJDaGFuZ2VEZXRlY3RvclJlZiIsIklucHV0IiwiT3V0cHV0IiwiUG9zaXRpb25pbmdTZXJ2aWNlIiwiTmdNb2R1bGUiLCJDb21tb25Nb2R1bGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQ0EseUJBQWEsUUFBUSxHQUE4QjtRQUMvQyxHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsSUFBSTtRQUNULEdBQUcsRUFBRSxJQUFJO1FBQ1QsR0FBRyxFQUFFLElBQUk7UUFDVCxHQUFHLEVBQUUsSUFBSTtRQUNULEdBQUcsRUFBRSxJQUFJO1FBQ1QsR0FBRyxFQUFFLElBQUk7UUFDVCxHQUFHLEVBQUUsSUFBSTtRQUNULEdBQUcsRUFBRSxJQUFJO1FBQ1QsR0FBRyxFQUFFLElBQUk7UUFDVCxHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxJQUFJO1FBQ1QsR0FBRyxFQUFFLElBQUk7UUFDVCxHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLElBQUk7UUFDVCxHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxJQUFJO1FBQ1QsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxJQUFJO1FBQ1QsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsSUFBSTtRQUNULEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxJQUFJO1FBQ1QsR0FBRyxFQUFFLElBQUk7UUFDVCxHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLElBQUk7UUFDVCxHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLElBQUk7UUFDVCxHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxJQUFJO1FBQ1QsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLElBQUk7UUFDVCxHQUFHLEVBQUUsSUFBSTtRQUNULEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLElBQUk7UUFDVCxHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsSUFBSTtRQUNULEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLElBQUk7UUFDVCxHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsSUFBSTtRQUNULEdBQUcsRUFBRSxJQUFJO1FBQ1QsR0FBRyxFQUFFLElBQUk7UUFDVCxHQUFHLEVBQUUsSUFBSTtRQUNULEdBQUcsRUFBRSxJQUFJO1FBQ1QsR0FBRyxFQUFFLElBQUk7UUFDVCxHQUFHLEVBQUUsSUFBSTtRQUNULEdBQUcsRUFBRSxJQUFJO1FBQ1QsR0FBRyxFQUFFLElBQUk7UUFDVCxHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsSUFBSTtRQUNULEdBQUcsRUFBRSxJQUFJO1FBQ1QsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsSUFBSTtRQUNULEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLElBQUk7UUFDVCxHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLElBQUk7UUFDVCxHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLElBQUk7UUFDVCxHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxJQUFJO1FBQ1QsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLElBQUk7UUFDVCxHQUFHLEVBQUUsSUFBSTtRQUNULEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLElBQUk7UUFDVCxHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsSUFBSTtRQUNULEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLElBQUk7UUFDVCxHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxJQUFJO1FBQ1QsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxJQUFJO1FBQ1QsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsSUFBSTtRQUNULEdBQUcsRUFBRSxJQUFJO1FBQ1QsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsSUFBSTtRQUNULEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsR0FBRztRQUNSLEdBQUcsRUFBRSxHQUFHO1FBQ1IsR0FBRyxFQUFFLEdBQUc7UUFDUixHQUFHLEVBQUUsSUFBSTtRQUNULEdBQUcsRUFBRSxLQUFLO1FBQ1YsR0FBRyxFQUFFLEtBQUs7UUFDVixHQUFHLEVBQUUsSUFBSTtRQUNULEdBQUcsRUFBRSxJ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
|