fabrikantencore 2.4.4 → 2.4.6
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/esm2020/fabrikantencore.mjs +5 -0
- package/esm2020/public_api.mjs +13 -0
- package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-categories/beheer-categories.component.mjs +56 -0
- package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-connect-category-dialog/beheer-connect-category-dialog.component.mjs +77 -0
- package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-deeplink/beheer-deeplink.component.mjs +43 -0
- package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-display-ebo/beheer-display-ebo.component.mjs +28 -0
- package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-ebo-koppel/beheer-ebo-koppel/beheer-ebo-koppel.component.mjs +133 -0
- package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-filter/beheer-filter.component.mjs +222 -0
- package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-filters/beheer-filters.component.mjs +120 -0
- package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets-dialog/beheer-import-sets-dialog.component.mjs +56 -0
- package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets-ebo/beheer-import-sets-ebo.component.mjs +90 -0
- package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets-eigenschap/beheer-import-sets-eigenschap.component.mjs +30 -0
- package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets.component.mjs +74 -0
- package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-inlog/beheer-inlog.component.mjs +44 -0
- package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-main/beheer-main.component.mjs +16 -0
- package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-nav/beheer-nav.component.mjs +47 -0
- package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-bcbproduct/beheer-products-bcbproduct.component.mjs +56 -0
- package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-connect-rangeinput/beheer-products-connect-rangeinput.component.mjs +106 -0
- package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-ebo/beheer-products-ebo.component.mjs +169 -0
- package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-eigenschap/beheer-products-eigenschap.component.mjs +199 -0
- package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-eigenschap-bereik/beheer-products-eigenschap-bereik.component.mjs +16 -0
- package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-koppel-filteroption-dailog/beheer-products-koppel-filteroption-dailog.component.mjs +157 -0
- package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-product/beheer-products-product.component.mjs +28 -0
- package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products.component.mjs +153 -0
- package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-rangeinput/beheer-rangeinput.component.mjs +87 -0
- package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-searchproducts/beheer-searchproducts-koppel-dialog/beheer-searchproducts-koppel-dialog.component.mjs +89 -0
- package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-searchproducts/beheer-searchproducts.component.mjs +299 -0
- package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-select-filter-dialog/beheer-select-filter-dialog.component.mjs +102 -0
- package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-select-filteroption-dialog/beheer-select-filteroption-dialog.component.mjs +76 -0
- package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-settings/beheer-settings-boolean/beheer-settings-boolean.component.mjs +40 -0
- package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-settings/beheer-settings-options/beheer-settings-options.component.mjs +24 -0
- package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-settings/beheer-settings-string/beheer-settings-string.component.mjs +24 -0
- package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-settings/beheer-settings.component.mjs +27 -0
- package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-translate/beheer-translate.component.mjs +114 -0
- package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-users/beheer-users.component.mjs +15 -0
- package/esm2020/src/app/modules/fabrikantencore/components/fab-actionmenu/fab-actionmenu.component.mjs +137 -0
- package/esm2020/src/app/modules/fabrikantencore/components/fab-bcb-product/fab-bcb-product.component.mjs +14 -0
- package/esm2020/src/app/modules/fabrikantencore/components/fab-breadcrumb/fab-breadcrumb.component.mjs +73 -0
- package/esm2020/src/app/modules/fabrikantencore/components/fab-categories/fab-categories.component.mjs +31 -0
- package/esm2020/src/app/modules/fabrikantencore/components/fab-category-navigator/fab-category-navigator.component.mjs +61 -0
- package/esm2020/src/app/modules/fabrikantencore/components/fab-category-tile/fab-category-tile.component.mjs +42 -0
- package/esm2020/src/app/modules/fabrikantencore/components/fab-filter/fab-filter.component.mjs +121 -0
- package/esm2020/src/app/modules/fabrikantencore/components/fab-filter-colour/fab-filter-colour-dialog/fab-filter-colour-dialog.component.mjs +293 -0
- package/esm2020/src/app/modules/fabrikantencore/components/fab-filter-colour/fab-filter-colour.component.mjs +50 -0
- package/esm2020/src/app/modules/fabrikantencore/components/fab-filter-colour-label/fab-filter-colour-label.component.mjs +50 -0
- package/esm2020/src/app/modules/fabrikantencore/components/fab-filter-fold/fab-filter-fold.component.mjs +81 -0
- package/esm2020/src/app/modules/fabrikantencore/components/fab-filter-label/fab-filter-label.component.mjs +121 -0
- package/esm2020/src/app/modules/fabrikantencore/components/fab-filters/fab-filters.component.mjs +38 -0
- package/esm2020/src/app/modules/fabrikantencore/components/fab-filters-input/fab-filters-input.component.mjs +48 -0
- package/esm2020/src/app/modules/fabrikantencore/components/fab-filters-overview/fab-filters-overview.component.mjs +32 -0
- package/esm2020/src/app/modules/fabrikantencore/components/fab-flag/fab-flag.component.mjs +16 -0
- package/esm2020/src/app/modules/fabrikantencore/components/fab-header/fab-header.component.mjs +57 -0
- package/esm2020/src/app/modules/fabrikantencore/components/fab-iframe/fab-iframe.component.mjs +29 -0
- package/esm2020/src/app/modules/fabrikantencore/components/fab-input/fab-input.component.mjs +29 -0
- package/esm2020/src/app/modules/fabrikantencore/components/fab-language-select/fab-language-select.component.mjs +23 -0
- package/esm2020/src/app/modules/fabrikantencore/components/fab-loader/fab-loader.component.mjs +15 -0
- package/esm2020/src/app/modules/fabrikantencore/components/fab-multiselect/fab-multiselect.component.mjs +41 -0
- package/esm2020/src/app/modules/fabrikantencore/components/fab-multiselect-fold/fab-multiselect-fold.component.mjs +33 -0
- package/esm2020/src/app/modules/fabrikantencore/components/fab-product/fab-product-bestek/fab-product-bestek.component.mjs +46 -0
- package/esm2020/src/app/modules/fabrikantencore/components/fab-product/fab-product-info/fab-product-info-photo/fab-product-info-photo.component.mjs +32 -0
- package/esm2020/src/app/modules/fabrikantencore/components/fab-product/fab-product-info/fab-product-info-photo-dialog/fab-product-info-photo-dialog.component.mjs +21 -0
- package/esm2020/src/app/modules/fabrikantencore/components/fab-product/fab-product-info/fab-product-info.component.mjs +41 -0
- package/esm2020/src/app/modules/fabrikantencore/components/fab-product/fab-product.component.mjs +99 -0
- package/esm2020/src/app/modules/fabrikantencore/components/fab-product/fab-toebehoren/fab-toebehoren.component.mjs +86 -0
- package/esm2020/src/app/modules/fabrikantencore/components/fab-product-select/fab-product-select.component.mjs +63 -0
- package/esm2020/src/app/modules/fabrikantencore/components/fab-product-tile/fab-product-tile.component.mjs +46 -0
- package/esm2020/src/app/modules/fabrikantencore/components/fab-range-input/fab-range-input.component.mjs +85 -0
- package/esm2020/src/app/modules/fabrikantencore/components/fab-range-input-fold/fab-range-input-fold.component.mjs +33 -0
- package/esm2020/src/app/modules/fabrikantencore/components/fab-select-bcbproduct/fab-select-bcbproduct.component.mjs +19 -0
- package/esm2020/src/app/modules/fabrikantencore/components/fab-start/fab-start.component.mjs +27 -0
- package/esm2020/src/app/modules/fabrikantencore/components/fab-svg-viewer/fab-svg-viewer.component.mjs +69 -0
- package/esm2020/src/app/modules/fabrikantencore/components/fab-texture/fab-texture.component.mjs +35 -0
- package/esm2020/src/app/modules/fabrikantencore/components/fab-webgl-viewer/fab-webgl-viewer.component.mjs +89 -0
- package/esm2020/src/app/modules/fabrikantencore/fabrikantencore.module.mjs +465 -0
- package/esm2020/src/app/modules/fabrikantencore/helpers/auth.guard.mjs +29 -0
- package/esm2020/src/app/modules/fabrikantencore/helpers/basic-auth.interceptor.mjs +26 -0
- package/esm2020/src/app/modules/fabrikantencore/helpers/error.interceptor.mjs +27 -0
- package/esm2020/src/app/modules/fabrikantencore/services/authentication.service.mjs +47 -0
- package/esm2020/src/app/modules/fabrikantencore/services/bestek.service.mjs +91 -0
- package/esm2020/src/app/modules/fabrikantencore/services/fabrikanten.service.mjs +1045 -0
- package/esm2020/src/app/modules/fabrikantencore/services/importsets.service.mjs +135 -0
- package/esm2020/src/app/modules/fabrikantencore/services/mobile.service.mjs +47 -0
- package/esm2020/src/app/modules/fabrikantencore/services/navigate.service.mjs +39 -0
- package/esm2020/src/app/modules/fabrikantencore/services/photo.service.mjs +98 -0
- package/esm2020/src/app/modules/fabrikantencore/services/products.service.mjs +235 -0
- package/esm2020/src/app/modules/fabrikantencore/services/projectsetting.service.mjs +84 -0
- package/esm2020/src/app/modules/fabrikantencore/services/statistics.service.mjs +82 -0
- package/esm2020/src/app/modules/fabrikantencore/services/svg.service.mjs +73 -0
- package/esm2020/src/app/modules/fabrikantencore/services/texture.service.mjs +33 -0
- package/esm2020/src/app/modules/fabrikantencore/services/toebehoren.service.mjs +58 -0
- package/esm2020/src/app/modules/fabrikantencore/services/translate.service.mjs +322 -0
- package/esm2020/src/app/modules/fabrikantencore/services/webgl.service.mjs +66 -0
- package/esm2020/src/app/modules/fabrikantencore/swagger/SwaggerClient.mjs +10236 -0
- package/fesm2015/fabrikantencore.mjs +17544 -0
- package/fesm2015/fabrikantencore.mjs.map +1 -0
- package/fesm2020/fabrikantencore.mjs +17425 -0
- package/fesm2020/fabrikantencore.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/package.json +56 -46
- package/public_api.d.ts +12 -0
- package/src/app/modules/fabrikantencore/beheer/components/beheer-categories/beheer-categories.component.d.ts +14 -0
- package/src/app/modules/fabrikantencore/beheer/components/beheer-connect-category-dialog/beheer-connect-category-dialog.component.d.ts +22 -0
- package/src/app/modules/fabrikantencore/beheer/components/beheer-deeplink/beheer-deeplink.component.d.ts +16 -0
- package/src/app/modules/fabrikantencore/beheer/components/beheer-display-ebo/beheer-display-ebo.component.d.ts +11 -0
- package/src/app/modules/fabrikantencore/beheer/components/beheer-ebo-koppel/beheer-ebo-koppel/beheer-ebo-koppel.component.d.ts +23 -0
- package/src/app/modules/fabrikantencore/beheer/components/beheer-filter/beheer-filter.component.d.ts +28 -0
- package/src/app/modules/fabrikantencore/beheer/components/beheer-filters/beheer-filters.component.d.ts +24 -0
- package/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets-dialog/beheer-import-sets-dialog.component.d.ts +20 -0
- package/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets-ebo/beheer-import-sets-ebo.component.d.ts +29 -0
- package/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets-eigenschap/beheer-import-sets-eigenschap.component.d.ts +14 -0
- package/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets.component.d.ts +23 -0
- package/src/app/modules/fabrikantencore/beheer/components/beheer-inlog/beheer-inlog.component.d.ts +21 -0
- package/src/app/modules/fabrikantencore/beheer/components/beheer-main/beheer-main.component.d.ts +8 -0
- package/src/app/modules/fabrikantencore/beheer/components/beheer-nav/beheer-nav.component.d.ts +19 -0
- package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-bcbproduct/beheer-products-bcbproduct.component.d.ts +17 -0
- package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-connect-rangeinput/beheer-products-connect-rangeinput.component.d.ts +32 -0
- package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-ebo/beheer-products-ebo.component.d.ts +34 -0
- package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-eigenschap/beheer-products-eigenschap.component.d.ts +28 -0
- package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-eigenschap-bereik/beheer-products-eigenschap-bereik.component.d.ts +10 -0
- package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-koppel-filteroption-dailog/beheer-products-koppel-filteroption-dailog.component.d.ts +35 -0
- package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-product/beheer-products-product.component.d.ts +14 -0
- package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products.component.d.ts +27 -0
- package/src/app/modules/fabrikantencore/beheer/components/beheer-rangeinput/beheer-rangeinput.component.d.ts +17 -0
- package/src/app/modules/fabrikantencore/beheer/components/beheer-searchproducts/beheer-searchproducts-koppel-dialog/beheer-searchproducts-koppel-dialog.component.d.ts +23 -0
- package/src/app/modules/fabrikantencore/beheer/components/beheer-searchproducts/beheer-searchproducts.component.d.ts +41 -0
- package/src/app/modules/fabrikantencore/beheer/components/beheer-select-filter-dialog/beheer-select-filter-dialog.component.d.ts +28 -0
- package/src/app/modules/fabrikantencore/beheer/components/beheer-select-filteroption-dialog/beheer-select-filteroption-dialog.component.d.ts +23 -0
- package/src/app/modules/fabrikantencore/beheer/components/beheer-settings/beheer-settings-boolean/beheer-settings-boolean.component.d.ts +14 -0
- package/src/app/modules/fabrikantencore/beheer/components/beheer-settings/beheer-settings-options/beheer-settings-options.component.d.ts +12 -0
- package/src/app/modules/fabrikantencore/beheer/components/beheer-settings/beheer-settings-string/beheer-settings-string.component.d.ts +12 -0
- package/src/app/modules/fabrikantencore/beheer/components/beheer-settings/beheer-settings.component.d.ts +11 -0
- package/src/app/modules/fabrikantencore/beheer/components/beheer-translate/beheer-translate.component.d.ts +21 -0
- package/src/app/modules/fabrikantencore/beheer/components/beheer-users/beheer-users.component.d.ts +8 -0
- package/src/app/modules/fabrikantencore/components/fab-actionmenu/fab-actionmenu.component.d.ts +48 -0
- package/src/app/modules/fabrikantencore/components/fab-bcb-product/fab-bcb-product.component.d.ts +8 -0
- package/src/app/modules/fabrikantencore/components/fab-breadcrumb/fab-breadcrumb.component.d.ts +22 -0
- package/src/app/modules/fabrikantencore/components/fab-categories/fab-categories.component.d.ts +15 -0
- package/src/app/modules/fabrikantencore/components/fab-category-navigator/fab-category-navigator.component.d.ts +21 -0
- package/src/app/modules/fabrikantencore/components/fab-category-tile/fab-category-tile.component.d.ts +20 -0
- package/src/app/modules/fabrikantencore/components/fab-filter/fab-filter.component.d.ts +26 -0
- package/src/app/modules/fabrikantencore/components/fab-filter-colour/fab-filter-colour-dialog/fab-filter-colour-dialog.component.d.ts +36 -0
- package/src/app/modules/fabrikantencore/components/fab-filter-colour/fab-filter-colour.component.d.ts +20 -0
- package/src/app/modules/fabrikantencore/components/fab-filter-colour-label/fab-filter-colour-label.component.d.ts +20 -0
- package/src/app/modules/fabrikantencore/components/fab-filter-fold/fab-filter-fold.component.d.ts +26 -0
- package/src/app/modules/fabrikantencore/components/fab-filter-label/fab-filter-label.component.d.ts +26 -0
- package/src/app/modules/fabrikantencore/components/fab-filters/fab-filters.component.d.ts +21 -0
- package/src/app/modules/fabrikantencore/components/fab-filters-input/fab-filters-input.component.d.ts +16 -0
- package/src/app/modules/fabrikantencore/components/fab-filters-overview/fab-filters-overview.component.d.ts +12 -0
- package/src/app/modules/fabrikantencore/components/fab-flag/fab-flag.component.d.ts +9 -0
- package/src/app/modules/fabrikantencore/components/fab-header/fab-header.component.d.ts +20 -0
- package/src/app/modules/fabrikantencore/components/fab-iframe/fab-iframe.component.d.ts +12 -0
- package/src/app/modules/fabrikantencore/components/fab-input/fab-input.component.d.ts +9 -0
- package/src/app/modules/fabrikantencore/components/fab-language-select/fab-language-select.component.d.ts +13 -0
- package/src/app/modules/fabrikantencore/components/fab-loader/fab-loader.component.d.ts +8 -0
- package/src/app/modules/fabrikantencore/components/fab-multiselect/fab-multiselect.component.d.ts +18 -0
- package/src/app/modules/fabrikantencore/components/fab-multiselect-fold/fab-multiselect-fold.component.d.ts +18 -0
- package/src/app/modules/fabrikantencore/components/fab-product/fab-product-bestek/fab-product-bestek.component.d.ts +23 -0
- package/src/app/modules/fabrikantencore/components/fab-product/fab-product-info/fab-product-info-photo/fab-product-info-photo.component.d.ts +15 -0
- package/src/app/modules/fabrikantencore/components/fab-product/fab-product-info/fab-product-info-photo-dialog/fab-product-info-photo-dialog.component.d.ts +12 -0
- package/src/app/modules/fabrikantencore/components/fab-product/fab-product-info/fab-product-info.component.d.ts +17 -0
- package/src/app/modules/fabrikantencore/components/fab-product/fab-product.component.d.ts +33 -0
- package/src/app/modules/fabrikantencore/components/fab-product/fab-toebehoren/fab-toebehoren.component.d.ts +25 -0
- package/src/app/modules/fabrikantencore/components/fab-product-select/fab-product-select.component.d.ts +25 -0
- package/src/app/modules/fabrikantencore/components/fab-product-tile/fab-product-tile.component.d.ts +22 -0
- package/src/app/modules/fabrikantencore/components/fab-range-input/fab-range-input.component.d.ts +23 -0
- package/src/app/modules/fabrikantencore/components/fab-range-input-fold/fab-range-input-fold.component.d.ts +18 -0
- package/src/app/modules/fabrikantencore/components/fab-select-bcbproduct/fab-select-bcbproduct.component.d.ts +12 -0
- package/src/app/modules/fabrikantencore/components/fab-start/fab-start.component.d.ts +15 -0
- package/src/app/modules/fabrikantencore/components/fab-svg-viewer/fab-svg-viewer.component.d.ts +27 -0
- package/src/app/modules/fabrikantencore/components/fab-texture/fab-texture.component.d.ts +17 -0
- package/src/app/modules/fabrikantencore/components/fab-webgl-viewer/fab-webgl-viewer.component.d.ts +25 -0
- package/src/app/modules/fabrikantencore/fabrikantencore.module.d.ts +103 -0
- package/src/app/modules/fabrikantencore/helpers/auth.guard.d.ts +11 -0
- package/src/app/modules/fabrikantencore/helpers/basic-auth.interceptor.d.ts +11 -0
- package/src/app/modules/fabrikantencore/helpers/error.interceptor.d.ts +11 -0
- package/src/app/modules/fabrikantencore/services/authentication.service.d.ts +16 -0
- package/src/app/modules/fabrikantencore/services/bestek.service.d.ts +20 -0
- package/src/app/modules/fabrikantencore/services/fabrikanten.service.d.ts +97 -0
- package/src/app/modules/fabrikantencore/services/importsets.service.d.ts +29 -0
- package/src/app/modules/fabrikantencore/services/mobile.service.d.ts +19 -0
- package/src/app/modules/fabrikantencore/services/navigate.service.d.ts +15 -0
- package/src/app/modules/fabrikantencore/services/photo.service.d.ts +20 -0
- package/src/app/modules/fabrikantencore/services/products.service.d.ts +30 -0
- package/src/app/modules/fabrikantencore/services/projectsetting.service.d.ts +18 -0
- package/src/app/modules/fabrikantencore/services/statistics.service.d.ts +17 -0
- package/src/app/modules/fabrikantencore/services/svg.service.d.ts +22 -0
- package/src/app/modules/fabrikantencore/services/texture.service.d.ts +12 -0
- package/src/app/modules/fabrikantencore/services/toebehoren.service.d.ts +18 -0
- package/src/app/modules/fabrikantencore/services/translate.service.d.ts +51 -0
- package/src/app/modules/fabrikantencore/services/webgl.service.d.ts +21 -0
- package/src/app/modules/fabrikantencore/swagger/SwaggerClient.d.ts +2757 -0
- package/.editorconfig +0 -16
- package/.vscode/extensions.json +0 -4
- package/.vscode/launch.json +0 -20
- package/.vscode/tasks.json +0 -42
- package/angular.json +0 -112
- package/karma.conf.js +0 -44
- package/ng-package.json +0 -6
- package/public_api.ts +0 -13
- package/src/app/app-routing.module.ts +0 -10
- package/src/app/app.component.html +0 -1
- package/src/app/app.component.scss +0 -8
- package/src/app/app.component.spec.ts +0 -35
- package/src/app/app.component.ts +0 -39
- package/src/app/app.module.ts +0 -22
- package/src/app/modules/fabrikantencore/beheer/components/beheer-categories/beheer-categories.component.html +0 -52
- package/src/app/modules/fabrikantencore/beheer/components/beheer-categories/beheer-categories.component.scss +0 -11
- package/src/app/modules/fabrikantencore/beheer/components/beheer-categories/beheer-categories.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/beheer/components/beheer-categories/beheer-categories.component.ts +0 -58
- package/src/app/modules/fabrikantencore/beheer/components/beheer-connect-category-dialog/beheer-connect-category-dialog.component.html +0 -46
- package/src/app/modules/fabrikantencore/beheer/components/beheer-connect-category-dialog/beheer-connect-category-dialog.component.scss +0 -0
- package/src/app/modules/fabrikantencore/beheer/components/beheer-connect-category-dialog/beheer-connect-category-dialog.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/beheer/components/beheer-connect-category-dialog/beheer-connect-category-dialog.component.ts +0 -79
- package/src/app/modules/fabrikantencore/beheer/components/beheer-deeplink/beheer-deeplink.component.html +0 -33
- package/src/app/modules/fabrikantencore/beheer/components/beheer-deeplink/beheer-deeplink.component.scss +0 -15
- package/src/app/modules/fabrikantencore/beheer/components/beheer-deeplink/beheer-deeplink.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/beheer/components/beheer-deeplink/beheer-deeplink.component.ts +0 -42
- package/src/app/modules/fabrikantencore/beheer/components/beheer-display-ebo/beheer-display-ebo.component.html +0 -11
- package/src/app/modules/fabrikantencore/beheer/components/beheer-display-ebo/beheer-display-ebo.component.scss +0 -8
- package/src/app/modules/fabrikantencore/beheer/components/beheer-display-ebo/beheer-display-ebo.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/beheer/components/beheer-display-ebo/beheer-display-ebo.component.ts +0 -33
- package/src/app/modules/fabrikantencore/beheer/components/beheer-ebo-koppel/beheer-ebo-koppel/beheer-ebo-koppel.component.html +0 -73
- package/src/app/modules/fabrikantencore/beheer/components/beheer-ebo-koppel/beheer-ebo-koppel/beheer-ebo-koppel.component.scss +0 -41
- package/src/app/modules/fabrikantencore/beheer/components/beheer-ebo-koppel/beheer-ebo-koppel/beheer-ebo-koppel.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/beheer/components/beheer-ebo-koppel/beheer-ebo-koppel/beheer-ebo-koppel.component.ts +0 -147
- package/src/app/modules/fabrikantencore/beheer/components/beheer-filter/beheer-filter.component.html +0 -72
- package/src/app/modules/fabrikantencore/beheer/components/beheer-filter/beheer-filter.component.scss +0 -111
- package/src/app/modules/fabrikantencore/beheer/components/beheer-filter/beheer-filter.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/beheer/components/beheer-filter/beheer-filter.component.ts +0 -249
- package/src/app/modules/fabrikantencore/beheer/components/beheer-filters/beheer-filters.component.html +0 -54
- package/src/app/modules/fabrikantencore/beheer/components/beheer-filters/beheer-filters.component.scss +0 -123
- package/src/app/modules/fabrikantencore/beheer/components/beheer-filters/beheer-filters.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/beheer/components/beheer-filters/beheer-filters.component.ts +0 -139
- package/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets-dialog/beheer-import-sets-dialog.component.html +0 -12
- package/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets-dialog/beheer-import-sets-dialog.component.scss +0 -0
- package/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets-dialog/beheer-import-sets-dialog.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets-dialog/beheer-import-sets-dialog.component.ts +0 -55
- package/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets-ebo/beheer-import-sets-ebo.component.html +0 -33
- package/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets-ebo/beheer-import-sets-ebo.component.scss +0 -60
- package/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets-ebo/beheer-import-sets-ebo.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets-ebo/beheer-import-sets-ebo.component.ts +0 -99
- package/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets-ebo/beheer-import-sets-opbouw.component.html +0 -20
- package/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets-ebo/beheer-import-sets-opbouw.component.scss +0 -38
- package/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets-ebo/beheer-import-sets-opbouw.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets-ebo/beheer-import-sets-opbouw.component.ts +0 -0
- package/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets-eigenschap/beheer-import-sets-eigenschap.component.html +0 -8
- package/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets-eigenschap/beheer-import-sets-eigenschap.component.scss +0 -31
- package/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets-eigenschap/beheer-import-sets-eigenschap.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets-eigenschap/beheer-import-sets-eigenschap.component.ts +0 -33
- package/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets.component.html +0 -92
- package/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets.component.scss +0 -50
- package/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets.component.ts +0 -73
- package/src/app/modules/fabrikantencore/beheer/components/beheer-inlog/beheer-inlog.component.html +0 -42
- package/src/app/modules/fabrikantencore/beheer/components/beheer-inlog/beheer-inlog.component.scss +0 -44
- package/src/app/modules/fabrikantencore/beheer/components/beheer-inlog/beheer-inlog.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/beheer/components/beheer-inlog/beheer-inlog.component.ts +0 -43
- package/src/app/modules/fabrikantencore/beheer/components/beheer-main/beheer-main.component.css +0 -0
- package/src/app/modules/fabrikantencore/beheer/components/beheer-main/beheer-main.component.html +0 -1
- package/src/app/modules/fabrikantencore/beheer/components/beheer-main/beheer-main.component.spec.ts +0 -25
- package/src/app/modules/fabrikantencore/beheer/components/beheer-main/beheer-main.component.ts +0 -17
- package/src/app/modules/fabrikantencore/beheer/components/beheer-nav/beheer-nav.component.html +0 -44
- package/src/app/modules/fabrikantencore/beheer/components/beheer-nav/beheer-nav.component.scss +0 -34
- package/src/app/modules/fabrikantencore/beheer/components/beheer-nav/beheer-nav.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/beheer/components/beheer-nav/beheer-nav.component.ts +0 -51
- package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-bcbproduct/beheer-products-bcbproduct.component.html +0 -42
- package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-bcbproduct/beheer-products-bcbproduct.component.scss +0 -41
- package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-bcbproduct/beheer-products-bcbproduct.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-bcbproduct/beheer-products-bcbproduct.component.ts +0 -51
- package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-connect-rangeinput/beheer-products-connect-rangeinput.component.html +0 -44
- package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-connect-rangeinput/beheer-products-connect-rangeinput.component.scss +0 -7
- package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-connect-rangeinput/beheer-products-connect-rangeinput.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-connect-rangeinput/beheer-products-connect-rangeinput.component.ts +0 -114
- package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-ebo/beheer-products-ebo.component.html +0 -54
- package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-ebo/beheer-products-ebo.component.scss +0 -52
- package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-ebo/beheer-products-ebo.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-ebo/beheer-products-ebo.component.ts +0 -193
- package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-ebo/beheer-products-opbouw.component.html +0 -16
- package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-ebo/beheer-products-opbouw.component.scss +0 -51
- package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-ebo/beheer-products-opbouw.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-ebo/beheer-products-opbouw.component.ts +0 -0
- package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-eigenschap/beheer-products-eigenschap.component.html +0 -84
- package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-eigenschap/beheer-products-eigenschap.component.scss +0 -51
- package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-eigenschap/beheer-products-eigenschap.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-eigenschap/beheer-products-eigenschap.component.ts +0 -224
- package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-eigenschap-bereik/beheer-products-eigenschap-bereik.component.html +0 -5
- package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-eigenschap-bereik/beheer-products-eigenschap-bereik.component.scss +0 -7
- package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-eigenschap-bereik/beheer-products-eigenschap-bereik.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-eigenschap-bereik/beheer-products-eigenschap-bereik.component.ts +0 -18
- package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-koppel-filteroption-dailog/beheer-products-koppel-filteroption-dailog.component.html +0 -97
- package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-koppel-filteroption-dailog/beheer-products-koppel-filteroption-dailog.component.scss +0 -11
- package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-koppel-filteroption-dailog/beheer-products-koppel-filteroption-dailog.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-koppel-filteroption-dailog/beheer-products-koppel-filteroption-dailog.component.ts +0 -185
- package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-product/beheer-products-product.component.html +0 -26
- package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-product/beheer-products-product.component.scss +0 -15
- package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-product/beheer-products-product.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-product/beheer-products-product.component.ts +0 -23
- package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products.component.html +0 -96
- package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products.component.scss +0 -89
- package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products.component.ts +0 -175
- package/src/app/modules/fabrikantencore/beheer/components/beheer-rangeinput/beheer-rangeinput.component.html +0 -24
- package/src/app/modules/fabrikantencore/beheer/components/beheer-rangeinput/beheer-rangeinput.component.scss +0 -67
- package/src/app/modules/fabrikantencore/beheer/components/beheer-rangeinput/beheer-rangeinput.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/beheer/components/beheer-rangeinput/beheer-rangeinput.component.ts +0 -88
- package/src/app/modules/fabrikantencore/beheer/components/beheer-searchproducts/beheer-searchproducts-koppel-dialog/beheer-searchproducts-koppel-dialog.component.html +0 -45
- package/src/app/modules/fabrikantencore/beheer/components/beheer-searchproducts/beheer-searchproducts-koppel-dialog/beheer-searchproducts-koppel-dialog.component.scss +0 -14
- package/src/app/modules/fabrikantencore/beheer/components/beheer-searchproducts/beheer-searchproducts-koppel-dialog/beheer-searchproducts-koppel-dialog.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/beheer/components/beheer-searchproducts/beheer-searchproducts-koppel-dialog/beheer-searchproducts-koppel-dialog.component.ts +0 -89
- package/src/app/modules/fabrikantencore/beheer/components/beheer-searchproducts/beheer-searchproducts.component.html +0 -119
- package/src/app/modules/fabrikantencore/beheer/components/beheer-searchproducts/beheer-searchproducts.component.scss +0 -69
- package/src/app/modules/fabrikantencore/beheer/components/beheer-searchproducts/beheer-searchproducts.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/beheer/components/beheer-searchproducts/beheer-searchproducts.component.ts +0 -346
- package/src/app/modules/fabrikantencore/beheer/components/beheer-select-filter-dialog/beheer-select-filter-dialog.component.html +0 -57
- package/src/app/modules/fabrikantencore/beheer/components/beheer-select-filter-dialog/beheer-select-filter-dialog.component.scss +0 -11
- package/src/app/modules/fabrikantencore/beheer/components/beheer-select-filter-dialog/beheer-select-filter-dialog.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/beheer/components/beheer-select-filter-dialog/beheer-select-filter-dialog.component.ts +0 -104
- package/src/app/modules/fabrikantencore/beheer/components/beheer-select-filteroption-dialog/beheer-select-filteroption-dialog.component.html +0 -49
- package/src/app/modules/fabrikantencore/beheer/components/beheer-select-filteroption-dialog/beheer-select-filteroption-dialog.component.scss +0 -3
- package/src/app/modules/fabrikantencore/beheer/components/beheer-select-filteroption-dialog/beheer-select-filteroption-dialog.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/beheer/components/beheer-select-filteroption-dialog/beheer-select-filteroption-dialog.component.ts +0 -86
- package/src/app/modules/fabrikantencore/beheer/components/beheer-settings/beheer-settings-boolean/beheer-settings-boolean.component.html +0 -26
- package/src/app/modules/fabrikantencore/beheer/components/beheer-settings/beheer-settings-boolean/beheer-settings-boolean.component.scss +0 -8
- package/src/app/modules/fabrikantencore/beheer/components/beheer-settings/beheer-settings-boolean/beheer-settings-boolean.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/beheer/components/beheer-settings/beheer-settings-boolean/beheer-settings-boolean.component.ts +0 -42
- package/src/app/modules/fabrikantencore/beheer/components/beheer-settings/beheer-settings-options/beheer-settings-options.component.html +0 -38
- package/src/app/modules/fabrikantencore/beheer/components/beheer-settings/beheer-settings-options/beheer-settings-options.component.scss +0 -30
- package/src/app/modules/fabrikantencore/beheer/components/beheer-settings/beheer-settings-options/beheer-settings-options.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/beheer/components/beheer-settings/beheer-settings-options/beheer-settings-options.component.ts +0 -19
- package/src/app/modules/fabrikantencore/beheer/components/beheer-settings/beheer-settings-string/beheer-settings-string.component.html +0 -40
- package/src/app/modules/fabrikantencore/beheer/components/beheer-settings/beheer-settings-string/beheer-settings-string.component.scss +0 -30
- package/src/app/modules/fabrikantencore/beheer/components/beheer-settings/beheer-settings-string/beheer-settings-string.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/beheer/components/beheer-settings/beheer-settings-string/beheer-settings-string.component.ts +0 -19
- package/src/app/modules/fabrikantencore/beheer/components/beheer-settings/beheer-settings.component.html +0 -50
- package/src/app/modules/fabrikantencore/beheer/components/beheer-settings/beheer-settings.component.scss +0 -34
- package/src/app/modules/fabrikantencore/beheer/components/beheer-settings/beheer-settings.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/beheer/components/beheer-settings/beheer-settings.component.ts +0 -17
- package/src/app/modules/fabrikantencore/beheer/components/beheer-translate/beheer-translate.component.html +0 -142
- package/src/app/modules/fabrikantencore/beheer/components/beheer-translate/beheer-translate.component.scss +0 -15
- package/src/app/modules/fabrikantencore/beheer/components/beheer-translate/beheer-translate.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/beheer/components/beheer-translate/beheer-translate.component.ts +0 -120
- package/src/app/modules/fabrikantencore/beheer/components/beheer-users/beheer-users.component.html +0 -1
- package/src/app/modules/fabrikantencore/beheer/components/beheer-users/beheer-users.component.scss +0 -0
- package/src/app/modules/fabrikantencore/beheer/components/beheer-users/beheer-users.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/beheer/components/beheer-users/beheer-users.component.ts +0 -15
- package/src/app/modules/fabrikantencore/components/fab-actionmenu/fab-actionmenu.component.html +0 -343
- package/src/app/modules/fabrikantencore/components/fab-actionmenu/fab-actionmenu.component.scss +0 -29
- package/src/app/modules/fabrikantencore/components/fab-actionmenu/fab-actionmenu.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/components/fab-actionmenu/fab-actionmenu.component.ts +0 -154
- package/src/app/modules/fabrikantencore/components/fab-bcb-product/fab-bcb-product.component.html +0 -1
- package/src/app/modules/fabrikantencore/components/fab-bcb-product/fab-bcb-product.component.scss +0 -0
- package/src/app/modules/fabrikantencore/components/fab-bcb-product/fab-bcb-product.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/components/fab-bcb-product/fab-bcb-product.component.ts +0 -15
- package/src/app/modules/fabrikantencore/components/fab-breadcrumb/fab-breadcrumb.component.html +0 -64
- package/src/app/modules/fabrikantencore/components/fab-breadcrumb/fab-breadcrumb.component.scss +0 -99
- package/src/app/modules/fabrikantencore/components/fab-breadcrumb/fab-breadcrumb.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/components/fab-breadcrumb/fab-breadcrumb.component.ts +0 -82
- package/src/app/modules/fabrikantencore/components/fab-button/fab-button.component.html +0 -5
- package/src/app/modules/fabrikantencore/components/fab-button/fab-button.component.scss +0 -89
- package/src/app/modules/fabrikantencore/components/fab-button/fab-button.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/components/fab-button/fab-button.component.ts +0 -20
- package/src/app/modules/fabrikantencore/components/fab-categories/fab-categories.component.html +0 -10
- package/src/app/modules/fabrikantencore/components/fab-categories/fab-categories.component.scss +0 -16
- package/src/app/modules/fabrikantencore/components/fab-categories/fab-categories.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/components/fab-categories/fab-categories.component.ts +0 -29
- package/src/app/modules/fabrikantencore/components/fab-category-navigator/fab-category-navigator.component.html +0 -6
- package/src/app/modules/fabrikantencore/components/fab-category-navigator/fab-category-navigator.component.scss +0 -3
- package/src/app/modules/fabrikantencore/components/fab-category-navigator/fab-category-navigator.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/components/fab-category-navigator/fab-category-navigator.component.ts +0 -70
- package/src/app/modules/fabrikantencore/components/fab-category-tile/fab-category-tile.component.html +0 -16
- package/src/app/modules/fabrikantencore/components/fab-category-tile/fab-category-tile.component.scss +0 -38
- package/src/app/modules/fabrikantencore/components/fab-category-tile/fab-category-tile.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/components/fab-category-tile/fab-category-tile.component.ts +0 -46
- package/src/app/modules/fabrikantencore/components/fab-category-tile/no-photo.png +0 -0
- package/src/app/modules/fabrikantencore/components/fab-filter/fab-filter.component.html +0 -41
- package/src/app/modules/fabrikantencore/components/fab-filter/fab-filter.component.scss +0 -88
- package/src/app/modules/fabrikantencore/components/fab-filter/fab-filter.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/components/fab-filter/fab-filter.component.ts +0 -139
- package/src/app/modules/fabrikantencore/components/fab-filter-colour/fab-filter-colour-dialog/fab-filter-colour-dialog.component.html +0 -1973
- package/src/app/modules/fabrikantencore/components/fab-filter-colour/fab-filter-colour-dialog/fab-filter-colour-dialog.component.scss +0 -30
- package/src/app/modules/fabrikantencore/components/fab-filter-colour/fab-filter-colour-dialog/fab-filter-colour-dialog.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/components/fab-filter-colour/fab-filter-colour-dialog/fab-filter-colour-dialog.component.ts +0 -316
- package/src/app/modules/fabrikantencore/components/fab-filter-colour/fab-filter-colour.component.html +0 -10
- package/src/app/modules/fabrikantencore/components/fab-filter-colour/fab-filter-colour.component.scss +0 -11
- package/src/app/modules/fabrikantencore/components/fab-filter-colour/fab-filter-colour.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/components/fab-filter-colour/fab-filter-colour.component.ts +0 -56
- package/src/app/modules/fabrikantencore/components/fab-filter-colour-label/fab-filter-colour-label.component.html +0 -20
- package/src/app/modules/fabrikantencore/components/fab-filter-colour-label/fab-filter-colour-label.component.scss +0 -11
- package/src/app/modules/fabrikantencore/components/fab-filter-colour-label/fab-filter-colour-label.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/components/fab-filter-colour-label/fab-filter-colour-label.component.ts +0 -56
- package/src/app/modules/fabrikantencore/components/fab-filter-fold/fab-filter-fold.component.html +0 -66
- package/src/app/modules/fabrikantencore/components/fab-filter-fold/fab-filter-fold.component.scss +0 -68
- package/src/app/modules/fabrikantencore/components/fab-filter-fold/fab-filter-fold.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/components/fab-filter-fold/fab-filter-fold.component.ts +0 -89
- package/src/app/modules/fabrikantencore/components/fab-filter-label/fab-filter-label.component.html +0 -75
- package/src/app/modules/fabrikantencore/components/fab-filter-label/fab-filter-label.component.scss +0 -106
- package/src/app/modules/fabrikantencore/components/fab-filter-label/fab-filter-label.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/components/fab-filter-label/fab-filter-label.component.ts +0 -140
- package/src/app/modules/fabrikantencore/components/fab-filters/fab-filters.component.html +0 -23
- package/src/app/modules/fabrikantencore/components/fab-filters/fab-filters.component.scss +0 -44
- package/src/app/modules/fabrikantencore/components/fab-filters/fab-filters.component.spec.ts +0 -25
- package/src/app/modules/fabrikantencore/components/fab-filters/fab-filters.component.ts +0 -40
- package/src/app/modules/fabrikantencore/components/fab-filters-input/fab-filters-input.component.html +0 -35
- package/src/app/modules/fabrikantencore/components/fab-filters-input/fab-filters-input.component.scss +0 -25
- package/src/app/modules/fabrikantencore/components/fab-filters-input/fab-filters-input.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/components/fab-filters-input/fab-filters-input.component.ts +0 -50
- package/src/app/modules/fabrikantencore/components/fab-filters-overview/fab-filters-overview.component.html +0 -4
- package/src/app/modules/fabrikantencore/components/fab-filters-overview/fab-filters-overview.component.scss +0 -0
- package/src/app/modules/fabrikantencore/components/fab-filters-overview/fab-filters-overview.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/components/fab-filters-overview/fab-filters-overview.component.ts +0 -32
- package/src/app/modules/fabrikantencore/components/fab-flag/fab-flag.component.html +0 -1
- package/src/app/modules/fabrikantencore/components/fab-flag/fab-flag.component.scss +0 -2143
- package/src/app/modules/fabrikantencore/components/fab-flag/fab-flag.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/components/fab-flag/fab-flag.component.ts +0 -17
- package/src/app/modules/fabrikantencore/components/fab-header/fab-header.component.html +0 -11
- package/src/app/modules/fabrikantencore/components/fab-header/fab-header.component.scss +0 -24
- package/src/app/modules/fabrikantencore/components/fab-header/fab-header.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/components/fab-header/fab-header.component.ts +0 -58
- package/src/app/modules/fabrikantencore/components/fab-iframe/fab-iframe.component.html +0 -15
- package/src/app/modules/fabrikantencore/components/fab-iframe/fab-iframe.component.scss +0 -16
- package/src/app/modules/fabrikantencore/components/fab-iframe/fab-iframe.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/components/fab-iframe/fab-iframe.component.ts +0 -25
- package/src/app/modules/fabrikantencore/components/fab-input/fab-input.component.html +0 -32
- package/src/app/modules/fabrikantencore/components/fab-input/fab-input.component.scss +0 -0
- package/src/app/modules/fabrikantencore/components/fab-input/fab-input.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/components/fab-input/fab-input.component.ts +0 -21
- package/src/app/modules/fabrikantencore/components/fab-language-select/fab-language-select.component.html +0 -5
- package/src/app/modules/fabrikantencore/components/fab-language-select/fab-language-select.component.scss +0 -8
- package/src/app/modules/fabrikantencore/components/fab-language-select/fab-language-select.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/components/fab-language-select/fab-language-select.component.ts +0 -20
- package/src/app/modules/fabrikantencore/components/fab-loader/fab-loader.component.html +0 -3
- package/src/app/modules/fabrikantencore/components/fab-loader/fab-loader.component.scss +0 -7
- package/src/app/modules/fabrikantencore/components/fab-loader/fab-loader.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/components/fab-loader/fab-loader.component.ts +0 -15
- package/src/app/modules/fabrikantencore/components/fab-multiselect/fab-multiselect.component.html +0 -9
- package/src/app/modules/fabrikantencore/components/fab-multiselect/fab-multiselect.component.scss +0 -5
- package/src/app/modules/fabrikantencore/components/fab-multiselect/fab-multiselect.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/components/fab-multiselect/fab-multiselect.component.ts +0 -43
- package/src/app/modules/fabrikantencore/components/fab-multiselect-fold/fab-multiselect-fold.component.html +0 -21
- package/src/app/modules/fabrikantencore/components/fab-multiselect-fold/fab-multiselect-fold.component.scss +0 -61
- package/src/app/modules/fabrikantencore/components/fab-multiselect-fold/fab-multiselect-fold.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/components/fab-multiselect-fold/fab-multiselect-fold.component.ts +0 -34
- package/src/app/modules/fabrikantencore/components/fab-product/fab-product-bestek/fab-product-bestek.component.html +0 -21
- package/src/app/modules/fabrikantencore/components/fab-product/fab-product-bestek/fab-product-bestek.component.scss +0 -65
- package/src/app/modules/fabrikantencore/components/fab-product/fab-product-bestek/fab-product-bestek.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/components/fab-product/fab-product-bestek/fab-product-bestek.component.ts +0 -50
- package/src/app/modules/fabrikantencore/components/fab-product/fab-product-info/fab-product-info-photo/fab-product-info-photo.component.html +0 -15
- package/src/app/modules/fabrikantencore/components/fab-product/fab-product-info/fab-product-info-photo/fab-product-info-photo.component.scss +0 -28
- package/src/app/modules/fabrikantencore/components/fab-product/fab-product-info/fab-product-info-photo/fab-product-info-photo.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/components/fab-product/fab-product-info/fab-product-info-photo/fab-product-info-photo.component.ts +0 -27
- package/src/app/modules/fabrikantencore/components/fab-product/fab-product-info/fab-product-info-photo-dialog/fab-product-info-photo-dialog.component.html +0 -15
- package/src/app/modules/fabrikantencore/components/fab-product/fab-product-info/fab-product-info-photo-dialog/fab-product-info-photo-dialog.component.scss +0 -20
- package/src/app/modules/fabrikantencore/components/fab-product/fab-product-info/fab-product-info-photo-dialog/fab-product-info-photo-dialog.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/components/fab-product/fab-product-info/fab-product-info-photo-dialog/fab-product-info-photo-dialog.component.ts +0 -17
- package/src/app/modules/fabrikantencore/components/fab-product/fab-product-info/fab-product-info.component.html +0 -17
- package/src/app/modules/fabrikantencore/components/fab-product/fab-product-info/fab-product-info.component.scss +0 -13
- package/src/app/modules/fabrikantencore/components/fab-product/fab-product-info/fab-product-info.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/components/fab-product/fab-product-info/fab-product-info.component.ts +0 -40
- package/src/app/modules/fabrikantencore/components/fab-product/fab-product.component.html +0 -77
- package/src/app/modules/fabrikantencore/components/fab-product/fab-product.component.scss +0 -70
- package/src/app/modules/fabrikantencore/components/fab-product/fab-product.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/components/fab-product/fab-product.component.ts +0 -103
- package/src/app/modules/fabrikantencore/components/fab-product/fab-toebehoren/fab-toebehoren.component.html +0 -33
- package/src/app/modules/fabrikantencore/components/fab-product/fab-toebehoren/fab-toebehoren.component.scss +0 -64
- package/src/app/modules/fabrikantencore/components/fab-product/fab-toebehoren/fab-toebehoren.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/components/fab-product/fab-toebehoren/fab-toebehoren.component.ts +0 -101
- package/src/app/modules/fabrikantencore/components/fab-product-select/fab-product-select.component.html +0 -43
- package/src/app/modules/fabrikantencore/components/fab-product-select/fab-product-select.component.scss +0 -63
- package/src/app/modules/fabrikantencore/components/fab-product-select/fab-product-select.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/components/fab-product-select/fab-product-select.component.ts +0 -63
- package/src/app/modules/fabrikantencore/components/fab-product-tile/fab-product-tile.component.html +0 -10
- package/src/app/modules/fabrikantencore/components/fab-product-tile/fab-product-tile.component.scss +0 -34
- package/src/app/modules/fabrikantencore/components/fab-product-tile/fab-product-tile.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/components/fab-product-tile/fab-product-tile.component.ts +0 -50
- package/src/app/modules/fabrikantencore/components/fab-range-input/fab-range-input.component.html +0 -13
- package/src/app/modules/fabrikantencore/components/fab-range-input/fab-range-input.component.scss +0 -3
- package/src/app/modules/fabrikantencore/components/fab-range-input/fab-range-input.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/components/fab-range-input/fab-range-input.component.ts +0 -99
- package/src/app/modules/fabrikantencore/components/fab-range-input-fold/fab-range-input-fold.component.html +0 -24
- package/src/app/modules/fabrikantencore/components/fab-range-input-fold/fab-range-input-fold.component.scss +0 -59
- package/src/app/modules/fabrikantencore/components/fab-range-input-fold/fab-range-input-fold.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/components/fab-range-input-fold/fab-range-input-fold.component.ts +0 -32
- package/src/app/modules/fabrikantencore/components/fab-select-bcbproduct/fab-select-bcbproduct.component.html +0 -10
- package/src/app/modules/fabrikantencore/components/fab-select-bcbproduct/fab-select-bcbproduct.component.scss +0 -13
- package/src/app/modules/fabrikantencore/components/fab-select-bcbproduct/fab-select-bcbproduct.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/components/fab-select-bcbproduct/fab-select-bcbproduct.component.ts +0 -17
- package/src/app/modules/fabrikantencore/components/fab-start/fab-start.component.html +0 -7
- package/src/app/modules/fabrikantencore/components/fab-start/fab-start.component.scss +0 -24
- package/src/app/modules/fabrikantencore/components/fab-start/fab-start.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/components/fab-start/fab-start.component.ts +0 -25
- package/src/app/modules/fabrikantencore/components/fab-svg-viewer/fab-svg-viewer.component.html +0 -23
- package/src/app/modules/fabrikantencore/components/fab-svg-viewer/fab-svg-viewer.component.scss +0 -92
- package/src/app/modules/fabrikantencore/components/fab-svg-viewer/fab-svg-viewer.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/components/fab-svg-viewer/fab-svg-viewer.component.ts +0 -76
- package/src/app/modules/fabrikantencore/components/fab-texture/fab-texture.component.html +0 -35
- package/src/app/modules/fabrikantencore/components/fab-texture/fab-texture.component.scss +0 -74
- package/src/app/modules/fabrikantencore/components/fab-texture/fab-texture.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/components/fab-texture/fab-texture.component.ts +0 -33
- package/src/app/modules/fabrikantencore/components/fab-webgl-viewer/fab-webgl-viewer.component.html +0 -24
- package/src/app/modules/fabrikantencore/components/fab-webgl-viewer/fab-webgl-viewer.component.scss +0 -74
- package/src/app/modules/fabrikantencore/components/fab-webgl-viewer/fab-webgl-viewer.component.spec.ts +0 -23
- package/src/app/modules/fabrikantencore/components/fab-webgl-viewer/fab-webgl-viewer.component.ts +0 -103
- package/src/app/modules/fabrikantencore/fabrikantencore.module.spec.ts +0 -13
- package/src/app/modules/fabrikantencore/fabrikantencore.module.ts +0 -317
- package/src/app/modules/fabrikantencore/helpers/auth.guard.ts +0 -28
- package/src/app/modules/fabrikantencore/helpers/basic-auth.interceptor.ts +0 -24
- package/src/app/modules/fabrikantencore/helpers/error.interceptor.ts +0 -24
- package/src/app/modules/fabrikantencore/services/authentication.service.ts +0 -55
- package/src/app/modules/fabrikantencore/services/bestek.service.ts +0 -109
- package/src/app/modules/fabrikantencore/services/fabrikanten.service.ts +0 -1306
- package/src/app/modules/fabrikantencore/services/importsets.service.ts +0 -164
- package/src/app/modules/fabrikantencore/services/mobile.service.ts +0 -57
- package/src/app/modules/fabrikantencore/services/navigate.service.ts +0 -40
- package/src/app/modules/fabrikantencore/services/photo.service.ts +0 -121
- package/src/app/modules/fabrikantencore/services/products.service.ts +0 -281
- package/src/app/modules/fabrikantencore/services/projectsetting.service.ts +0 -97
- package/src/app/modules/fabrikantencore/services/statistics.service.ts +0 -96
- package/src/app/modules/fabrikantencore/services/svg.service.ts +0 -88
- package/src/app/modules/fabrikantencore/services/texture.service.ts +0 -33
- package/src/app/modules/fabrikantencore/services/toebehoren.service.ts +0 -65
- package/src/app/modules/fabrikantencore/services/translate.service.ts +0 -399
- package/src/app/modules/fabrikantencore/services/webgl.service.ts +0 -80
- package/src/app/modules/fabrikantencore/swagger/SwaggerClient.ts +0 -12529
- package/src/assets/.gitkeep +0 -0
- package/src/assets/bouwconnect-achtergrond.png +0 -0
- package/src/assets/flags/1x1/ac.svg +0 -76
- package/src/assets/flags/1x1/ad.svg +0 -148
- package/src/assets/flags/1x1/ae.svg +0 -6
- package/src/assets/flags/1x1/af.svg +0 -81
- package/src/assets/flags/1x1/ag.svg +0 -14
- package/src/assets/flags/1x1/ai.svg +0 -758
- package/src/assets/flags/1x1/al.svg +0 -5
- package/src/assets/flags/1x1/am.svg +0 -5
- package/src/assets/flags/1x1/ao.svg +0 -13
- package/src/assets/flags/1x1/aq.svg +0 -5
- package/src/assets/flags/1x1/ar.svg +0 -32
- package/src/assets/flags/1x1/as.svg +0 -73
- package/src/assets/flags/1x1/at.svg +0 -6
- package/src/assets/flags/1x1/au.svg +0 -8
- package/src/assets/flags/1x1/aw.svg +0 -186
- package/src/assets/flags/1x1/ax.svg +0 -18
- package/src/assets/flags/1x1/az.svg +0 -8
- package/src/assets/flags/1x1/ba.svg +0 -12
- package/src/assets/flags/1x1/bb.svg +0 -6
- package/src/assets/flags/1x1/bd.svg +0 -4
- package/src/assets/flags/1x1/be.svg +0 -7
- package/src/assets/flags/1x1/bf.svg +0 -7
- package/src/assets/flags/1x1/bg.svg +0 -7
- package/src/assets/flags/1x1/bh.svg +0 -4
- package/src/assets/flags/1x1/bi.svg +0 -15
- package/src/assets/flags/1x1/bj.svg +0 -14
- package/src/assets/flags/1x1/bl.svg +0 -7
- package/src/assets/flags/1x1/bm.svg +0 -97
- package/src/assets/flags/1x1/bn.svg +0 -36
- package/src/assets/flags/1x1/bo.svg +0 -678
- package/src/assets/flags/1x1/bq.svg +0 -5
- package/src/assets/flags/1x1/br.svg +0 -45
- package/src/assets/flags/1x1/bs.svg +0 -13
- package/src/assets/flags/1x1/bt.svg +0 -89
- package/src/assets/flags/1x1/bv.svg +0 -13
- package/src/assets/flags/1x1/bw.svg +0 -7
- package/src/assets/flags/1x1/by.svg +0 -22
- package/src/assets/flags/1x1/bz.svg +0 -145
- package/src/assets/flags/1x1/ca.svg +0 -4
- package/src/assets/flags/1x1/cc.svg +0 -19
- package/src/assets/flags/1x1/cd.svg +0 -12
- package/src/assets/flags/1x1/cefta.svg +0 -13
- package/src/assets/flags/1x1/cf.svg +0 -15
- package/src/assets/flags/1x1/cg.svg +0 -12
- package/src/assets/flags/1x1/ch.svg +0 -9
- package/src/assets/flags/1x1/ci.svg +0 -7
- package/src/assets/flags/1x1/ck.svg +0 -9
- package/src/assets/flags/1x1/cl.svg +0 -13
- package/src/assets/flags/1x1/cm.svg +0 -15
- package/src/assets/flags/1x1/cn.svg +0 -11
- package/src/assets/flags/1x1/co.svg +0 -7
- package/src/assets/flags/1x1/cp.svg +0 -7
- package/src/assets/flags/1x1/cr.svg +0 -7
- package/src/assets/flags/1x1/cu.svg +0 -13
- package/src/assets/flags/1x1/cv.svg +0 -13
- package/src/assets/flags/1x1/cw.svg +0 -14
- package/src/assets/flags/1x1/cx.svg +0 -15
- package/src/assets/flags/1x1/cy.svg +0 -6
- package/src/assets/flags/1x1/cz.svg +0 -5
- package/src/assets/flags/1x1/de.svg +0 -5
- package/src/assets/flags/1x1/dg.svg +0 -129
- package/src/assets/flags/1x1/dj.svg +0 -13
- package/src/assets/flags/1x1/dk.svg +0 -5
- package/src/assets/flags/1x1/dm.svg +0 -152
- package/src/assets/flags/1x1/do.svg +0 -6745
- package/src/assets/flags/1x1/dz.svg +0 -5
- package/src/assets/flags/1x1/ea.svg +0 -547
- package/src/assets/flags/1x1/ec.svg +0 -138
- package/src/assets/flags/1x1/ee.svg +0 -7
- package/src/assets/flags/1x1/eg.svg +0 -38
- package/src/assets/flags/1x1/eh.svg +0 -11
- package/src/assets/flags/1x1/er.svg +0 -13
- package/src/assets/flags/1x1/es-ct.svg +0 -4
- package/src/assets/flags/1x1/es-ga.svg +0 -187
- package/src/assets/flags/1x1/es.svg +0 -547
- package/src/assets/flags/1x1/et.svg +0 -14
- package/src/assets/flags/1x1/eu.svg +0 -28
- package/src/assets/flags/1x1/fi.svg +0 -5
- package/src/assets/flags/1x1/fj.svg +0 -123
- package/src/assets/flags/1x1/fk.svg +0 -89
- package/src/assets/flags/1x1/fm.svg +0 -11
- package/src/assets/flags/1x1/fo.svg +0 -12
- package/src/assets/flags/1x1/fr.svg +0 -7
- package/src/assets/flags/1x1/ga.svg +0 -7
- package/src/assets/flags/1x1/gb-eng.svg +0 -5
- package/src/assets/flags/1x1/gb-nir.svg +0 -131
- package/src/assets/flags/1x1/gb-sct.svg +0 -4
- package/src/assets/flags/1x1/gb-wls.svg +0 -9
- package/src/assets/flags/1x1/gb.svg +0 -7
- package/src/assets/flags/1x1/gd.svg +0 -27
- package/src/assets/flags/1x1/ge.svg +0 -6
- package/src/assets/flags/1x1/gf.svg +0 -7
- package/src/assets/flags/1x1/gg.svg +0 -9
- package/src/assets/flags/1x1/gh.svg +0 -6
- package/src/assets/flags/1x1/gi.svg +0 -32
- package/src/assets/flags/1x1/gl.svg +0 -4
- package/src/assets/flags/1x1/gm.svg +0 -9
- package/src/assets/flags/1x1/gn.svg +0 -7
- package/src/assets/flags/1x1/gp.svg +0 -7
- package/src/assets/flags/1x1/gq.svg +0 -23
- package/src/assets/flags/1x1/gr.svg +0 -16
- package/src/assets/flags/1x1/gs.svg +0 -132
- package/src/assets/flags/1x1/gt.svg +0 -220
- package/src/assets/flags/1x1/gu.svg +0 -23
- package/src/assets/flags/1x1/gw.svg +0 -15
- package/src/assets/flags/1x1/gy.svg +0 -9
- package/src/assets/flags/1x1/hk.svg +0 -30
- package/src/assets/flags/1x1/hm.svg +0 -8
- package/src/assets/flags/1x1/hn.svg +0 -18
- package/src/assets/flags/1x1/hr.svg +0 -56
- package/src/assets/flags/1x1/ht.svg +0 -116
- package/src/assets/flags/1x1/hu.svg +0 -7
- package/src/assets/flags/1x1/ic.svg +0 -7
- package/src/assets/flags/1x1/id.svg +0 -4
- package/src/assets/flags/1x1/ie.svg +0 -7
- package/src/assets/flags/1x1/il.svg +0 -14
- package/src/assets/flags/1x1/im.svg +0 -36
- package/src/assets/flags/1x1/in.svg +0 -25
- package/src/assets/flags/1x1/io.svg +0 -129
- package/src/assets/flags/1x1/iq.svg +0 -10
- package/src/assets/flags/1x1/ir.svg +0 -219
- package/src/assets/flags/1x1/is.svg +0 -12
- package/src/assets/flags/1x1/it.svg +0 -7
- package/src/assets/flags/1x1/je.svg +0 -44
- package/src/assets/flags/1x1/jm.svg +0 -8
- package/src/assets/flags/1x1/jo.svg +0 -16
- package/src/assets/flags/1x1/jp.svg +0 -11
- package/src/assets/flags/1x1/ke.svg +0 -23
- package/src/assets/flags/1x1/kg.svg +0 -15
- package/src/assets/flags/1x1/kh.svg +0 -61
- package/src/assets/flags/1x1/ki.svg +0 -36
- package/src/assets/flags/1x1/km.svg +0 -16
- package/src/assets/flags/1x1/kn.svg +0 -14
- package/src/assets/flags/1x1/kp.svg +0 -15
- package/src/assets/flags/1x1/kr.svg +0 -17
- package/src/assets/flags/1x1/kw.svg +0 -13
- package/src/assets/flags/1x1/ky.svg +0 -109
- package/src/assets/flags/1x1/kz.svg +0 -23
- package/src/assets/flags/1x1/la.svg +0 -12
- package/src/assets/flags/1x1/lb.svg +0 -15
- package/src/assets/flags/1x1/lc.svg +0 -8
- package/src/assets/flags/1x1/li.svg +0 -43
- package/src/assets/flags/1x1/lk.svg +0 -22
- package/src/assets/flags/1x1/lr.svg +0 -14
- package/src/assets/flags/1x1/ls.svg +0 -8
- package/src/assets/flags/1x1/lt.svg +0 -7
- package/src/assets/flags/1x1/lu.svg +0 -5
- package/src/assets/flags/1x1/lv.svg +0 -6
- package/src/assets/flags/1x1/ly.svg +0 -13
- package/src/assets/flags/1x1/ma.svg +0 -4
- package/src/assets/flags/1x1/mc.svg +0 -6
- package/src/assets/flags/1x1/md.svg +0 -71
- package/src/assets/flags/1x1/me.svg +0 -118
- package/src/assets/flags/1x1/mf.svg +0 -7
- package/src/assets/flags/1x1/mg.svg +0 -7
- package/src/assets/flags/1x1/mh.svg +0 -8
- package/src/assets/flags/1x1/mk.svg +0 -5
- package/src/assets/flags/1x1/ml.svg +0 -7
- package/src/assets/flags/1x1/mm.svg +0 -10
- package/src/assets/flags/1x1/mn.svg +0 -14
- package/src/assets/flags/1x1/mo.svg +0 -9
- package/src/assets/flags/1x1/mp.svg +0 -86
- package/src/assets/flags/1x1/mq.svg +0 -7
- package/src/assets/flags/1x1/mr.svg +0 -6
- package/src/assets/flags/1x1/ms.svg +0 -25
- package/src/assets/flags/1x1/mt.svg +0 -50
- package/src/assets/flags/1x1/mu.svg +0 -8
- package/src/assets/flags/1x1/mv.svg +0 -6
- package/src/assets/flags/1x1/mw.svg +0 -15
- package/src/assets/flags/1x1/mx.svg +0 -378
- package/src/assets/flags/1x1/my.svg +0 -7
- package/src/assets/flags/1x1/mz.svg +0 -21
- package/src/assets/flags/1x1/na.svg +0 -16
- package/src/assets/flags/1x1/nc.svg +0 -12
- package/src/assets/flags/1x1/ne.svg +0 -6
- package/src/assets/flags/1x1/nf.svg +0 -11
- package/src/assets/flags/1x1/ng.svg +0 -6
- package/src/assets/flags/1x1/ni.svg +0 -129
- package/src/assets/flags/1x1/nl.svg +0 -5
- package/src/assets/flags/1x1/no.svg +0 -7
- package/src/assets/flags/1x1/np.svg +0 -19
- package/src/assets/flags/1x1/nr.svg +0 -12
- package/src/assets/flags/1x1/nu.svg +0 -10
- package/src/assets/flags/1x1/nz.svg +0 -36
- package/src/assets/flags/1x1/om.svg +0 -115
- package/src/assets/flags/1x1/pa.svg +0 -13
- package/src/assets/flags/1x1/pe.svg +0 -244
- package/src/assets/flags/1x1/pf.svg +0 -18
- package/src/assets/flags/1x1/pg.svg +0 -16
- package/src/assets/flags/1x1/ph.svg +0 -8
- package/src/assets/flags/1x1/pk.svg +0 -15
- package/src/assets/flags/1x1/pl.svg +0 -6
- package/src/assets/flags/1x1/pm.svg +0 -7
- package/src/assets/flags/1x1/pn.svg +0 -53
- package/src/assets/flags/1x1/pr.svg +0 -13
- package/src/assets/flags/1x1/ps.svg +0 -15
- package/src/assets/flags/1x1/pt.svg +0 -57
- package/src/assets/flags/1x1/pw.svg +0 -11
- package/src/assets/flags/1x1/py.svg +0 -156
- package/src/assets/flags/1x1/qa.svg +0 -4
- package/src/assets/flags/1x1/re.svg +0 -7
- package/src/assets/flags/1x1/ro.svg +0 -7
- package/src/assets/flags/1x1/rs.svg +0 -296
- package/src/assets/flags/1x1/ru.svg +0 -7
- package/src/assets/flags/1x1/rw.svg +0 -13
- package/src/assets/flags/1x1/sa.svg +0 -26
- package/src/assets/flags/1x1/sb.svg +0 -13
- package/src/assets/flags/1x1/sc.svg +0 -7
- package/src/assets/flags/1x1/sd.svg +0 -13
- package/src/assets/flags/1x1/se.svg +0 -4
- package/src/assets/flags/1x1/sg.svg +0 -13
- package/src/assets/flags/1x1/sh.svg +0 -76
- package/src/assets/flags/1x1/si.svg +0 -18
- package/src/assets/flags/1x1/sj.svg +0 -7
- package/src/assets/flags/1x1/sk.svg +0 -9
- package/src/assets/flags/1x1/sl.svg +0 -12
- package/src/assets/flags/1x1/sm.svg +0 -73
- package/src/assets/flags/1x1/sn.svg +0 -8
- package/src/assets/flags/1x1/so.svg +0 -11
- package/src/assets/flags/1x1/sr.svg +0 -6
- package/src/assets/flags/1x1/ss.svg +0 -8
- package/src/assets/flags/1x1/st.svg +0 -16
- package/src/assets/flags/1x1/sv.svg +0 -594
- package/src/assets/flags/1x1/sx.svg +0 -56
- package/src/assets/flags/1x1/sy.svg +0 -6
- package/src/assets/flags/1x1/sz.svg +0 -34
- package/src/assets/flags/1x1/ta.svg +0 -76
- package/src/assets/flags/1x1/tc.svg +0 -50
- package/src/assets/flags/1x1/td.svg +0 -7
- package/src/assets/flags/1x1/tf.svg +0 -15
- package/src/assets/flags/1x1/tg.svg +0 -14
- package/src/assets/flags/1x1/th.svg +0 -7
- package/src/assets/flags/1x1/tj.svg +0 -26
- package/src/assets/flags/1x1/tk.svg +0 -5
- package/src/assets/flags/1x1/tl.svg +0 -13
- package/src/assets/flags/1x1/tm.svg +0 -202
- package/src/assets/flags/1x1/tn.svg +0 -13
- package/src/assets/flags/1x1/to.svg +0 -10
- package/src/assets/flags/1x1/tr.svg +0 -8
- package/src/assets/flags/1x1/tt.svg +0 -7
- package/src/assets/flags/1x1/tv.svg +0 -9
- package/src/assets/flags/1x1/tw.svg +0 -32
- package/src/assets/flags/1x1/tz.svg +0 -15
- package/src/assets/flags/1x1/ua.svg +0 -6
- package/src/assets/flags/1x1/ug.svg +0 -30
- package/src/assets/flags/1x1/um.svg +0 -15
- package/src/assets/flags/1x1/un.svg +0 -16
- package/src/assets/flags/1x1/us.svg +0 -10
- package/src/assets/flags/1x1/uy.svg +0 -28
- package/src/assets/flags/1x1/uz.svg +0 -30
- package/src/assets/flags/1x1/va.svg +0 -479
- package/src/assets/flags/1x1/vc.svg +0 -8
- package/src/assets/flags/1x1/ve.svg +0 -26
- package/src/assets/flags/1x1/vg.svg +0 -63
- package/src/assets/flags/1x1/vi.svg +0 -28
- package/src/assets/flags/1x1/vn.svg +0 -11
- package/src/assets/flags/1x1/vu.svg +0 -21
- package/src/assets/flags/1x1/wf.svg +0 -7
- package/src/assets/flags/1x1/ws.svg +0 -7
- package/src/assets/flags/1x1/xk.svg +0 -8
- package/src/assets/flags/1x1/xx.svg +0 -4
- package/src/assets/flags/1x1/ye.svg +0 -7
- package/src/assets/flags/1x1/yt.svg +0 -7
- package/src/assets/flags/1x1/za.svg +0 -17
- package/src/assets/flags/1x1/zm.svg +0 -27
- package/src/assets/flags/1x1/zw.svg +0 -21
- package/src/assets/flags/4x3/ac.svg +0 -76
- package/src/assets/flags/4x3/ad.svg +0 -150
- package/src/assets/flags/4x3/ae.svg +0 -6
- package/src/assets/flags/4x3/af.svg +0 -81
- package/src/assets/flags/4x3/ag.svg +0 -14
- package/src/assets/flags/4x3/ai.svg +0 -758
- package/src/assets/flags/4x3/al.svg +0 -5
- package/src/assets/flags/4x3/am.svg +0 -5
- package/src/assets/flags/4x3/ao.svg +0 -13
- package/src/assets/flags/4x3/aq.svg +0 -5
- package/src/assets/flags/4x3/ar.svg +0 -32
- package/src/assets/flags/4x3/as.svg +0 -72
- package/src/assets/flags/4x3/at.svg +0 -6
- package/src/assets/flags/4x3/au.svg +0 -8
- package/src/assets/flags/4x3/aw.svg +0 -186
- package/src/assets/flags/4x3/ax.svg +0 -18
- package/src/assets/flags/4x3/az.svg +0 -8
- package/src/assets/flags/4x3/ba.svg +0 -12
- package/src/assets/flags/4x3/bb.svg +0 -6
- package/src/assets/flags/4x3/bd.svg +0 -4
- package/src/assets/flags/4x3/be.svg +0 -7
- package/src/assets/flags/4x3/bf.svg +0 -7
- package/src/assets/flags/4x3/bg.svg +0 -7
- package/src/assets/flags/4x3/bh.svg +0 -4
- package/src/assets/flags/4x3/bi.svg +0 -15
- package/src/assets/flags/4x3/bj.svg +0 -14
- package/src/assets/flags/4x3/bl.svg +0 -7
- package/src/assets/flags/4x3/bm.svg +0 -97
- package/src/assets/flags/4x3/bn.svg +0 -36
- package/src/assets/flags/4x3/bo.svg +0 -676
- package/src/assets/flags/4x3/bq.svg +0 -5
- package/src/assets/flags/4x3/br.svg +0 -45
- package/src/assets/flags/4x3/bs.svg +0 -13
- package/src/assets/flags/4x3/bt.svg +0 -89
- package/src/assets/flags/4x3/bv.svg +0 -13
- package/src/assets/flags/4x3/bw.svg +0 -7
- package/src/assets/flags/4x3/by.svg +0 -20
- package/src/assets/flags/4x3/bz.svg +0 -145
- package/src/assets/flags/4x3/ca.svg +0 -4
- package/src/assets/flags/4x3/cc.svg +0 -19
- package/src/assets/flags/4x3/cd.svg +0 -5
- package/src/assets/flags/4x3/cefta.svg +0 -13
- package/src/assets/flags/4x3/cf.svg +0 -15
- package/src/assets/flags/4x3/cg.svg +0 -12
- package/src/assets/flags/4x3/ch.svg +0 -9
- package/src/assets/flags/4x3/ci.svg +0 -7
- package/src/assets/flags/4x3/ck.svg +0 -9
- package/src/assets/flags/4x3/cl.svg +0 -13
- package/src/assets/flags/4x3/cm.svg +0 -15
- package/src/assets/flags/4x3/cn.svg +0 -11
- package/src/assets/flags/4x3/co.svg +0 -7
- package/src/assets/flags/4x3/cp.svg +0 -7
- package/src/assets/flags/4x3/cr.svg +0 -7
- package/src/assets/flags/4x3/cu.svg +0 -13
- package/src/assets/flags/4x3/cv.svg +0 -13
- package/src/assets/flags/4x3/cw.svg +0 -14
- package/src/assets/flags/4x3/cx.svg +0 -15
- package/src/assets/flags/4x3/cy.svg +0 -6
- package/src/assets/flags/4x3/cz.svg +0 -5
- package/src/assets/flags/4x3/de.svg +0 -5
- package/src/assets/flags/4x3/dg.svg +0 -129
- package/src/assets/flags/4x3/dj.svg +0 -13
- package/src/assets/flags/4x3/dk.svg +0 -5
- package/src/assets/flags/4x3/dm.svg +0 -152
- package/src/assets/flags/4x3/do.svg +0 -6745
- package/src/assets/flags/4x3/dz.svg +0 -5
- package/src/assets/flags/4x3/ea.svg +0 -544
- package/src/assets/flags/4x3/ec.svg +0 -138
- package/src/assets/flags/4x3/ee.svg +0 -7
- package/src/assets/flags/4x3/eg.svg +0 -38
- package/src/assets/flags/4x3/eh.svg +0 -16
- package/src/assets/flags/4x3/er.svg +0 -8
- package/src/assets/flags/4x3/es-ct.svg +0 -4
- package/src/assets/flags/4x3/es-ga.svg +0 -187
- package/src/assets/flags/4x3/es.svg +0 -544
- package/src/assets/flags/4x3/et.svg +0 -14
- package/src/assets/flags/4x3/eu.svg +0 -28
- package/src/assets/flags/4x3/fi.svg +0 -5
- package/src/assets/flags/4x3/fj.svg +0 -120
- package/src/assets/flags/4x3/fk.svg +0 -90
- package/src/assets/flags/4x3/fm.svg +0 -11
- package/src/assets/flags/4x3/fo.svg +0 -12
- package/src/assets/flags/4x3/fr.svg +0 -7
- package/src/assets/flags/4x3/ga.svg +0 -7
- package/src/assets/flags/4x3/gb-eng.svg +0 -5
- package/src/assets/flags/4x3/gb-nir.svg +0 -132
- package/src/assets/flags/4x3/gb-sct.svg +0 -4
- package/src/assets/flags/4x3/gb-wls.svg +0 -9
- package/src/assets/flags/4x3/gb.svg +0 -7
- package/src/assets/flags/4x3/gd.svg +0 -27
- package/src/assets/flags/4x3/ge.svg +0 -6
- package/src/assets/flags/4x3/gf.svg +0 -7
- package/src/assets/flags/4x3/gg.svg +0 -9
- package/src/assets/flags/4x3/gh.svg +0 -6
- package/src/assets/flags/4x3/gi.svg +0 -32
- package/src/assets/flags/4x3/gl.svg +0 -4
- package/src/assets/flags/4x3/gm.svg +0 -14
- package/src/assets/flags/4x3/gn.svg +0 -7
- package/src/assets/flags/4x3/gp.svg +0 -7
- package/src/assets/flags/4x3/gq.svg +0 -23
- package/src/assets/flags/4x3/gr.svg +0 -16
- package/src/assets/flags/4x3/gs.svg +0 -133
- package/src/assets/flags/4x3/gt.svg +0 -220
- package/src/assets/flags/4x3/gu.svg +0 -23
- package/src/assets/flags/4x3/gw.svg +0 -13
- package/src/assets/flags/4x3/gy.svg +0 -9
- package/src/assets/flags/4x3/hk.svg +0 -30
- package/src/assets/flags/4x3/hm.svg +0 -8
- package/src/assets/flags/4x3/hn.svg +0 -18
- package/src/assets/flags/4x3/hr.svg +0 -58
- package/src/assets/flags/4x3/ht.svg +0 -116
- package/src/assets/flags/4x3/hu.svg +0 -7
- package/src/assets/flags/4x3/ic.svg +0 -7
- package/src/assets/flags/4x3/id.svg +0 -4
- package/src/assets/flags/4x3/ie.svg +0 -7
- package/src/assets/flags/4x3/il.svg +0 -14
- package/src/assets/flags/4x3/im.svg +0 -36
- package/src/assets/flags/4x3/in.svg +0 -25
- package/src/assets/flags/4x3/io.svg +0 -129
- package/src/assets/flags/4x3/iq.svg +0 -10
- package/src/assets/flags/4x3/ir.svg +0 -219
- package/src/assets/flags/4x3/is.svg +0 -12
- package/src/assets/flags/4x3/it.svg +0 -7
- package/src/assets/flags/4x3/je.svg +0 -45
- package/src/assets/flags/4x3/jm.svg +0 -8
- package/src/assets/flags/4x3/jo.svg +0 -16
- package/src/assets/flags/4x3/jp.svg +0 -11
- package/src/assets/flags/4x3/ke.svg +0 -23
- package/src/assets/flags/4x3/kg.svg +0 -15
- package/src/assets/flags/4x3/kh.svg +0 -61
- package/src/assets/flags/4x3/ki.svg +0 -36
- package/src/assets/flags/4x3/km.svg +0 -16
- package/src/assets/flags/4x3/kn.svg +0 -14
- package/src/assets/flags/4x3/kp.svg +0 -15
- package/src/assets/flags/4x3/kr.svg +0 -24
- package/src/assets/flags/4x3/kw.svg +0 -13
- package/src/assets/flags/4x3/ky.svg +0 -109
- package/src/assets/flags/4x3/kz.svg +0 -23
- package/src/assets/flags/4x3/la.svg +0 -12
- package/src/assets/flags/4x3/lb.svg +0 -15
- package/src/assets/flags/4x3/lc.svg +0 -8
- package/src/assets/flags/4x3/li.svg +0 -43
- package/src/assets/flags/4x3/lk.svg +0 -22
- package/src/assets/flags/4x3/lr.svg +0 -14
- package/src/assets/flags/4x3/ls.svg +0 -8
- package/src/assets/flags/4x3/lt.svg +0 -7
- package/src/assets/flags/4x3/lu.svg +0 -5
- package/src/assets/flags/4x3/lv.svg +0 -6
- package/src/assets/flags/4x3/ly.svg +0 -13
- package/src/assets/flags/4x3/ma.svg +0 -4
- package/src/assets/flags/4x3/mc.svg +0 -6
- package/src/assets/flags/4x3/md.svg +0 -70
- package/src/assets/flags/4x3/me.svg +0 -116
- package/src/assets/flags/4x3/mf.svg +0 -7
- package/src/assets/flags/4x3/mg.svg +0 -7
- package/src/assets/flags/4x3/mh.svg +0 -7
- package/src/assets/flags/4x3/mk.svg +0 -5
- package/src/assets/flags/4x3/ml.svg +0 -7
- package/src/assets/flags/4x3/mm.svg +0 -12
- package/src/assets/flags/4x3/mn.svg +0 -14
- package/src/assets/flags/4x3/mo.svg +0 -9
- package/src/assets/flags/4x3/mp.svg +0 -86
- package/src/assets/flags/4x3/mq.svg +0 -7
- package/src/assets/flags/4x3/mr.svg +0 -6
- package/src/assets/flags/4x3/ms.svg +0 -33
- package/src/assets/flags/4x3/mt.svg +0 -49
- package/src/assets/flags/4x3/mu.svg +0 -8
- package/src/assets/flags/4x3/mv.svg +0 -6
- package/src/assets/flags/4x3/mw.svg +0 -10
- package/src/assets/flags/4x3/mx.svg +0 -382
- package/src/assets/flags/4x3/my.svg +0 -7
- package/src/assets/flags/4x3/mz.svg +0 -21
- package/src/assets/flags/4x3/na.svg +0 -16
- package/src/assets/flags/4x3/nc.svg +0 -13
- package/src/assets/flags/4x3/ne.svg +0 -6
- package/src/assets/flags/4x3/nf.svg +0 -9
- package/src/assets/flags/4x3/ng.svg +0 -6
- package/src/assets/flags/4x3/ni.svg +0 -129
- package/src/assets/flags/4x3/nl.svg +0 -5
- package/src/assets/flags/4x3/no.svg +0 -7
- package/src/assets/flags/4x3/np.svg +0 -14
- package/src/assets/flags/4x3/nr.svg +0 -12
- package/src/assets/flags/4x3/nu.svg +0 -10
- package/src/assets/flags/4x3/nz.svg +0 -36
- package/src/assets/flags/4x3/om.svg +0 -115
- package/src/assets/flags/4x3/pa.svg +0 -14
- package/src/assets/flags/4x3/pe.svg +0 -244
- package/src/assets/flags/4x3/pf.svg +0 -19
- package/src/assets/flags/4x3/pg.svg +0 -9
- package/src/assets/flags/4x3/ph.svg +0 -6
- package/src/assets/flags/4x3/pk.svg +0 -15
- package/src/assets/flags/4x3/pl.svg +0 -6
- package/src/assets/flags/4x3/pm.svg +0 -7
- package/src/assets/flags/4x3/pn.svg +0 -53
- package/src/assets/flags/4x3/pr.svg +0 -13
- package/src/assets/flags/4x3/ps.svg +0 -15
- package/src/assets/flags/4x3/pt.svg +0 -57
- package/src/assets/flags/4x3/pw.svg +0 -11
- package/src/assets/flags/4x3/py.svg +0 -157
- package/src/assets/flags/4x3/qa.svg +0 -4
- package/src/assets/flags/4x3/re.svg +0 -7
- package/src/assets/flags/4x3/ro.svg +0 -7
- package/src/assets/flags/4x3/rs.svg +0 -292
- package/src/assets/flags/4x3/ru.svg +0 -7
- package/src/assets/flags/4x3/rw.svg +0 -13
- package/src/assets/flags/4x3/sa.svg +0 -26
- package/src/assets/flags/4x3/sb.svg +0 -13
- package/src/assets/flags/4x3/sc.svg +0 -7
- package/src/assets/flags/4x3/sd.svg +0 -13
- package/src/assets/flags/4x3/se.svg +0 -4
- package/src/assets/flags/4x3/sg.svg +0 -13
- package/src/assets/flags/4x3/sh.svg +0 -76
- package/src/assets/flags/4x3/si.svg +0 -18
- package/src/assets/flags/4x3/sj.svg +0 -7
- package/src/assets/flags/4x3/sk.svg +0 -9
- package/src/assets/flags/4x3/sl.svg +0 -7
- package/src/assets/flags/4x3/sm.svg +0 -75
- package/src/assets/flags/4x3/sn.svg +0 -8
- package/src/assets/flags/4x3/so.svg +0 -11
- package/src/assets/flags/4x3/sr.svg +0 -6
- package/src/assets/flags/4x3/ss.svg +0 -8
- package/src/assets/flags/4x3/st.svg +0 -16
- package/src/assets/flags/4x3/sv.svg +0 -594
- package/src/assets/flags/4x3/sx.svg +0 -56
- package/src/assets/flags/4x3/sy.svg +0 -6
- package/src/assets/flags/4x3/sz.svg +0 -34
- package/src/assets/flags/4x3/ta.svg +0 -76
- package/src/assets/flags/4x3/tc.svg +0 -50
- package/src/assets/flags/4x3/td.svg +0 -7
- package/src/assets/flags/4x3/tf.svg +0 -15
- package/src/assets/flags/4x3/tg.svg +0 -14
- package/src/assets/flags/4x3/th.svg +0 -7
- package/src/assets/flags/4x3/tj.svg +0 -22
- package/src/assets/flags/4x3/tk.svg +0 -5
- package/src/assets/flags/4x3/tl.svg +0 -13
- package/src/assets/flags/4x3/tm.svg +0 -205
- package/src/assets/flags/4x3/tn.svg +0 -13
- package/src/assets/flags/4x3/to.svg +0 -10
- package/src/assets/flags/4x3/tr.svg +0 -8
- package/src/assets/flags/4x3/tt.svg +0 -5
- package/src/assets/flags/4x3/tv.svg +0 -9
- package/src/assets/flags/4x3/tw.svg +0 -34
- package/src/assets/flags/4x3/tz.svg +0 -13
- package/src/assets/flags/4x3/ua.svg +0 -6
- package/src/assets/flags/4x3/ug.svg +0 -30
- package/src/assets/flags/4x3/um.svg +0 -15
- package/src/assets/flags/4x3/un.svg +0 -16
- package/src/assets/flags/4x3/us.svg +0 -10
- package/src/assets/flags/4x3/uy.svg +0 -28
- package/src/assets/flags/4x3/uz.svg +0 -30
- package/src/assets/flags/4x3/va.svg +0 -479
- package/src/assets/flags/4x3/vc.svg +0 -8
- package/src/assets/flags/4x3/ve.svg +0 -26
- package/src/assets/flags/4x3/vg.svg +0 -63
- package/src/assets/flags/4x3/vi.svg +0 -28
- package/src/assets/flags/4x3/vn.svg +0 -11
- package/src/assets/flags/4x3/vu.svg +0 -21
- package/src/assets/flags/4x3/wf.svg +0 -7
- package/src/assets/flags/4x3/ws.svg +0 -7
- package/src/assets/flags/4x3/xk.svg +0 -8
- package/src/assets/flags/4x3/xx.svg +0 -4
- package/src/assets/flags/4x3/ye.svg +0 -7
- package/src/assets/flags/4x3/yt.svg +0 -7
- package/src/assets/flags/4x3/za.svg +0 -17
- package/src/assets/flags/4x3/zm.svg +0 -27
- package/src/assets/flags/4x3/zw.svg +0 -21
- package/src/environments/environment.prod.ts +0 -3
- package/src/environments/environment.ts +0 -16
- package/src/favicon.ico +0 -0
- package/src/index.html +0 -23
- package/src/main.ts +0 -12
- package/src/polyfills.ts +0 -53
- package/src/styles.scss +0 -39
- package/src/test.ts +0 -14
- package/src/webgl/WebGLQuery.min.js +0 -6
- package/src/webgl/WebGLViewerLight.min.js +0 -89
- package/src/webgl/gl-matrix.min.js +0 -47
- package/tsconfig.app.json +0 -15
- package/tsconfig.json +0 -34
- package/tsconfig.spec.json +0 -18
|
@@ -0,0 +1,1045 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { FabrikantenRequestModel, SelectProductRequest, SelectBCBProductRequest, SelectFilterOptionRequest, SelectCategoryRequest, SetRangeInputRequest, ResetFilterRequest, ResetAllFiltersRequest, ResetCategoryLayerRequest, RemoveProductSelectionRequest, ResetAllCategoriesRequest, BCBLinkRequestModel, FabrikantenFileRequestModel, SelectColourRequest } from '../swagger/SwaggerClient';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../swagger/SwaggerClient";
|
|
5
|
+
import * as i2 from "./bestek.service";
|
|
6
|
+
import * as i3 from "./translate.service";
|
|
7
|
+
import * as i4 from "./webgl.service";
|
|
8
|
+
import * as i5 from "./svg.service";
|
|
9
|
+
import * as i6 from "./texture.service";
|
|
10
|
+
import * as i7 from "./navigate.service";
|
|
11
|
+
import * as i8 from "@angular/router";
|
|
12
|
+
import * as i9 from "./statistics.service";
|
|
13
|
+
export class FabrikantenService {
|
|
14
|
+
constructor(FabrikantenApiClient, BestekService, TranslateService, WebGLService, SVGService, TextureService, NavigateService, Router, StatisticsService) {
|
|
15
|
+
this.FabrikantenApiClient = FabrikantenApiClient;
|
|
16
|
+
this.BestekService = BestekService;
|
|
17
|
+
this.TranslateService = TranslateService;
|
|
18
|
+
this.WebGLService = WebGLService;
|
|
19
|
+
this.SVGService = SVGService;
|
|
20
|
+
this.TextureService = TextureService;
|
|
21
|
+
this.NavigateService = NavigateService;
|
|
22
|
+
this.Router = Router;
|
|
23
|
+
this.StatisticsService = StatisticsService;
|
|
24
|
+
this.Init = false;
|
|
25
|
+
this.Loading = true;
|
|
26
|
+
this.DownloadARKEYAdomiLoading = false;
|
|
27
|
+
this.DownloadIFCLoading = false;
|
|
28
|
+
this.DownloadRevitPluginLoading = false;
|
|
29
|
+
this.Download3DAutoCADDwgLoading = false;
|
|
30
|
+
this.Download3DDxfLoading = false;
|
|
31
|
+
this.Download2DAutoCADDwgLoading = false;
|
|
32
|
+
this.Download2DDxfLoading = false;
|
|
33
|
+
this.DownloadRFALoading = false;
|
|
34
|
+
this.SelectedTabIndex = 0;
|
|
35
|
+
this.SettingsLoaded = false;
|
|
36
|
+
this.SelectedPhoto = 0;
|
|
37
|
+
this.SelectedToebehoren = null;
|
|
38
|
+
this.SelectedTabSet = false;
|
|
39
|
+
this.SelectedTab = "Informatie";
|
|
40
|
+
this.Loaded = false;
|
|
41
|
+
this.NavigateService.FabrikantenService = this;
|
|
42
|
+
this.SVGService.FabrikantenService = this;
|
|
43
|
+
this.WebGLService.FabrikantenService = this;
|
|
44
|
+
this.BestekService.FabrikantenService = this;
|
|
45
|
+
}
|
|
46
|
+
ResetAllFilters(ChangeDetectorRef) {
|
|
47
|
+
this.Loading = true;
|
|
48
|
+
ChangeDetectorRef.detectChanges();
|
|
49
|
+
var request = new ResetAllFiltersRequest();
|
|
50
|
+
request.sessionId = this.FabrikantenViewModel.sessionId;
|
|
51
|
+
this.FabrikantenApiClient.resetAllFilters(request).subscribe(() => {
|
|
52
|
+
this.ReloadModel(ChangeDetectorRef);
|
|
53
|
+
}, (error) => {
|
|
54
|
+
if (error.status == 400)
|
|
55
|
+
console.log(error.json());
|
|
56
|
+
else {
|
|
57
|
+
console.log('An unexpected error occured');
|
|
58
|
+
console.log(error);
|
|
59
|
+
}
|
|
60
|
+
this.Loading = false;
|
|
61
|
+
ChangeDetectorRef.detectChanges();
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
SelectOption(filterid, filteroptionid, ChangeDetectorRef) {
|
|
65
|
+
this.Loading = true;
|
|
66
|
+
ChangeDetectorRef.detectChanges();
|
|
67
|
+
var request = new SelectFilterOptionRequest();
|
|
68
|
+
request.sessionId = this.FabrikantenViewModel.sessionId;
|
|
69
|
+
request.filterOptionId = filteroptionid;
|
|
70
|
+
request.filterId = filterid;
|
|
71
|
+
if (this.StatisticsService.Active) {
|
|
72
|
+
this.StatisticsService.SelectFilterOption(this.TranslateService.GetActiveValueFilter(filterid) + ": " + this.TranslateService.GetActiveValueFilterOption(filteroptionid));
|
|
73
|
+
}
|
|
74
|
+
this.FabrikantenApiClient.selectFilterOption(request).subscribe(() => {
|
|
75
|
+
this.ReloadModel(ChangeDetectorRef);
|
|
76
|
+
}, (error) => {
|
|
77
|
+
if (error.status == 400)
|
|
78
|
+
console.log(error.json());
|
|
79
|
+
else {
|
|
80
|
+
console.log('An unexpected error occured');
|
|
81
|
+
console.log(error);
|
|
82
|
+
}
|
|
83
|
+
this.Loading = false;
|
|
84
|
+
ChangeDetectorRef.detectChanges();
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
SelectColour(filterid, colour, colourvalue, ChangeDetectorRef) {
|
|
88
|
+
this.Loading = true;
|
|
89
|
+
ChangeDetectorRef.detectChanges();
|
|
90
|
+
var request = new SelectColourRequest();
|
|
91
|
+
request.sessionId = this.FabrikantenViewModel.sessionId;
|
|
92
|
+
request.colourName = colour;
|
|
93
|
+
request.colourValue = colourvalue;
|
|
94
|
+
request.filterId = filterid;
|
|
95
|
+
this.FabrikantenApiClient.selectColour(request).subscribe(() => {
|
|
96
|
+
this.ReloadModel(ChangeDetectorRef);
|
|
97
|
+
}, (error) => {
|
|
98
|
+
if (error.status == 400)
|
|
99
|
+
console.log(error.json());
|
|
100
|
+
else {
|
|
101
|
+
console.log('An unexpected error occured');
|
|
102
|
+
console.log(error);
|
|
103
|
+
}
|
|
104
|
+
this.Loading = false;
|
|
105
|
+
ChangeDetectorRef.detectChanges();
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
SetRangeInput(rangeinputid, value, ChangeDetectorRef) {
|
|
109
|
+
this.Loading = true;
|
|
110
|
+
ChangeDetectorRef.detectChanges();
|
|
111
|
+
var request = new SetRangeInputRequest();
|
|
112
|
+
request.sessionId = this.FabrikantenViewModel.sessionId;
|
|
113
|
+
request.rangeInputId = rangeinputid;
|
|
114
|
+
request.value = value;
|
|
115
|
+
if (this.StatisticsService.Active) {
|
|
116
|
+
this.StatisticsService.SelectRangeValue(this.TranslateService.GetActiveValueRangeInput(rangeinputid) + ": " + value);
|
|
117
|
+
}
|
|
118
|
+
this.FabrikantenApiClient.setRangeInput(request).subscribe(() => {
|
|
119
|
+
this.ReloadModel(ChangeDetectorRef);
|
|
120
|
+
}, (error) => {
|
|
121
|
+
if (error.status == 400)
|
|
122
|
+
console.log(error.json());
|
|
123
|
+
else {
|
|
124
|
+
console.log('An unexpected error occured');
|
|
125
|
+
console.log(error);
|
|
126
|
+
}
|
|
127
|
+
this.Loading = false;
|
|
128
|
+
ChangeDetectorRef.detectChanges();
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
ForceSelectCategory(categoryid, ChangeDetectorRef) {
|
|
132
|
+
if (this.FabrikantenViewModel != null) {
|
|
133
|
+
this.Loading = true;
|
|
134
|
+
var request = new ResetAllCategoriesRequest();
|
|
135
|
+
request.sessionId = this.FabrikantenViewModel.sessionId;
|
|
136
|
+
this.FabrikantenApiClient.resetAllCategories(request).subscribe(() => {
|
|
137
|
+
var requestcat = new SelectCategoryRequest();
|
|
138
|
+
requestcat.sessionId = this.FabrikantenViewModel.sessionId;
|
|
139
|
+
requestcat.categoryId = categoryid;
|
|
140
|
+
requestcat.categoryLayer = 0;
|
|
141
|
+
this.FabrikantenApiClient.selectCategory(requestcat).subscribe(() => {
|
|
142
|
+
this.ReloadModel(ChangeDetectorRef);
|
|
143
|
+
}, (error) => {
|
|
144
|
+
if (error.status == 400)
|
|
145
|
+
console.log(error.json());
|
|
146
|
+
else {
|
|
147
|
+
console.log('An unexpected error occured');
|
|
148
|
+
console.log(error);
|
|
149
|
+
}
|
|
150
|
+
this.Loading = false;
|
|
151
|
+
ChangeDetectorRef.detectChanges();
|
|
152
|
+
});
|
|
153
|
+
}, (error) => {
|
|
154
|
+
if (error.status == 400)
|
|
155
|
+
console.log(error.json());
|
|
156
|
+
else {
|
|
157
|
+
console.log('An unexpected error occured');
|
|
158
|
+
console.log(error);
|
|
159
|
+
}
|
|
160
|
+
this.Loading = false;
|
|
161
|
+
ChangeDetectorRef.detectChanges();
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
SelectCategory(category, ChangeDetectorRef) {
|
|
166
|
+
this.Loading = true;
|
|
167
|
+
ChangeDetectorRef.detectChanges();
|
|
168
|
+
var request = new SelectCategoryRequest();
|
|
169
|
+
request.sessionId = this.FabrikantenViewModel.sessionId;
|
|
170
|
+
request.categoryId = category.id;
|
|
171
|
+
request.categoryLayer = category.layer;
|
|
172
|
+
if (this.StatisticsService.Active) {
|
|
173
|
+
this.StatisticsService.SelectCategory(this.TranslateService.GetActiveValueCategory(category.id));
|
|
174
|
+
}
|
|
175
|
+
this.FabrikantenApiClient.selectCategory(request).subscribe(() => {
|
|
176
|
+
this.ReloadModel(ChangeDetectorRef);
|
|
177
|
+
}, (error) => {
|
|
178
|
+
if (error.status == 400)
|
|
179
|
+
console.log(error.json());
|
|
180
|
+
else {
|
|
181
|
+
console.log('An unexpected error occured');
|
|
182
|
+
console.log(error);
|
|
183
|
+
}
|
|
184
|
+
this.Loading = false;
|
|
185
|
+
ChangeDetectorRef.detectChanges();
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
SelectProduct(product, ChangeDetectorRef) {
|
|
189
|
+
this.Loading = true;
|
|
190
|
+
ChangeDetectorRef.detectChanges();
|
|
191
|
+
var request = new SelectProductRequest();
|
|
192
|
+
request.sessionId = this.FabrikantenViewModel.sessionId;
|
|
193
|
+
request.productId = product.id;
|
|
194
|
+
if (this.StatisticsService.Active) {
|
|
195
|
+
this.StatisticsService.SelectProduct(this.TranslateService.GetActiveValueProduct(product.id));
|
|
196
|
+
}
|
|
197
|
+
this.FabrikantenApiClient.selectProduct(request).subscribe(() => {
|
|
198
|
+
this.SelectedToebehoren = null;
|
|
199
|
+
this.ResetTabs();
|
|
200
|
+
this.ReloadModel(ChangeDetectorRef);
|
|
201
|
+
}, (error) => {
|
|
202
|
+
if (error.status == 400)
|
|
203
|
+
console.log(error.json());
|
|
204
|
+
else {
|
|
205
|
+
console.log('An unexpected error occured');
|
|
206
|
+
console.log(error);
|
|
207
|
+
}
|
|
208
|
+
this.Loading = false;
|
|
209
|
+
ChangeDetectorRef.detectChanges();
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
SelectBCBProduct(bcbproduct, ChangeDetectorRef) {
|
|
213
|
+
this.Loading = true;
|
|
214
|
+
ChangeDetectorRef.detectChanges();
|
|
215
|
+
var request = new SelectBCBProductRequest();
|
|
216
|
+
request.sessionId = this.FabrikantenViewModel.sessionId;
|
|
217
|
+
request.bcbProductId = bcbproduct.id;
|
|
218
|
+
this.FabrikantenApiClient.selectBCBProduct(request).subscribe(() => {
|
|
219
|
+
this.ReloadModel(ChangeDetectorRef);
|
|
220
|
+
}, (error) => {
|
|
221
|
+
if (error.status == 400)
|
|
222
|
+
console.log(error.json());
|
|
223
|
+
else {
|
|
224
|
+
console.log('An unexpected error occured');
|
|
225
|
+
console.log(error);
|
|
226
|
+
}
|
|
227
|
+
this.Loading = false;
|
|
228
|
+
ChangeDetectorRef.detectChanges();
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
ResetSelectionFilter(filter, ChangeDetectorRef) {
|
|
232
|
+
this.Loading = true;
|
|
233
|
+
ChangeDetectorRef.detectChanges();
|
|
234
|
+
var request = new ResetFilterRequest();
|
|
235
|
+
request.filterId = filter.id;
|
|
236
|
+
request.sessionId = this.FabrikantenViewModel.sessionId;
|
|
237
|
+
this.FabrikantenApiClient.resetFilterSelection(request).subscribe(() => {
|
|
238
|
+
this.ReloadModel(ChangeDetectorRef);
|
|
239
|
+
}, (error) => {
|
|
240
|
+
if (error.status == 400)
|
|
241
|
+
console.log(error.json());
|
|
242
|
+
else {
|
|
243
|
+
console.log('An unexpected error occured');
|
|
244
|
+
console.log(error);
|
|
245
|
+
}
|
|
246
|
+
this.Loading = false;
|
|
247
|
+
ChangeDetectorRef.detectChanges();
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
ResetAllCategories(ChangeDetectorRef) {
|
|
251
|
+
if (this.FabrikantenViewModel != null) {
|
|
252
|
+
this.Loading = true;
|
|
253
|
+
var request = new ResetAllCategoriesRequest();
|
|
254
|
+
request.sessionId = this.FabrikantenViewModel.sessionId;
|
|
255
|
+
this.FabrikantenApiClient.resetAllCategories(request).subscribe(() => {
|
|
256
|
+
this.ReloadModel(ChangeDetectorRef);
|
|
257
|
+
}, (error) => {
|
|
258
|
+
if (error.status == 400)
|
|
259
|
+
console.log(error.json());
|
|
260
|
+
else {
|
|
261
|
+
console.log('An unexpected error occured');
|
|
262
|
+
console.log(error);
|
|
263
|
+
}
|
|
264
|
+
this.Loading = false;
|
|
265
|
+
ChangeDetectorRef.detectChanges();
|
|
266
|
+
});
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
ResetSelectionCategory(categorylayer, ChangeDetectorRef) {
|
|
270
|
+
this.Loading = true;
|
|
271
|
+
ChangeDetectorRef.detectChanges();
|
|
272
|
+
var request = new ResetCategoryLayerRequest();
|
|
273
|
+
request.categoryLayer = categorylayer.layer;
|
|
274
|
+
request.sessionId = this.FabrikantenViewModel.sessionId;
|
|
275
|
+
this.FabrikantenApiClient.resetCategoryLayerSelection(request).subscribe(() => {
|
|
276
|
+
this.ResetAllFilters(ChangeDetectorRef);
|
|
277
|
+
}, (error) => {
|
|
278
|
+
if (error.status == 400)
|
|
279
|
+
console.log(error.json());
|
|
280
|
+
else {
|
|
281
|
+
console.log('An unexpected error occured');
|
|
282
|
+
console.log(error);
|
|
283
|
+
}
|
|
284
|
+
this.Loading = false;
|
|
285
|
+
ChangeDetectorRef.detectChanges();
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
RemoveProductSelection(ChangeDetectorRef) {
|
|
289
|
+
if (this.FabrikantenViewModel != null) {
|
|
290
|
+
this.Loading = true;
|
|
291
|
+
var request = new RemoveProductSelectionRequest();
|
|
292
|
+
request.sessionId = this.FabrikantenViewModel.sessionId;
|
|
293
|
+
this.FabrikantenApiClient.removeProductSelection(request).subscribe(() => {
|
|
294
|
+
this.SelectedToebehoren = null;
|
|
295
|
+
this.ResetTabs();
|
|
296
|
+
this.ReloadModel(ChangeDetectorRef);
|
|
297
|
+
}, (error) => {
|
|
298
|
+
if (error.status == 400)
|
|
299
|
+
console.log(error.json());
|
|
300
|
+
else {
|
|
301
|
+
console.log('An unexpected error occured');
|
|
302
|
+
console.log(error);
|
|
303
|
+
}
|
|
304
|
+
this.Loading = false;
|
|
305
|
+
ChangeDetectorRef.detectChanges();
|
|
306
|
+
});
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
TabSelectionChanged(tab, ChangeDetectorRef) {
|
|
310
|
+
this.SelectedTab = tab;
|
|
311
|
+
this.TriggerReloads(ChangeDetectorRef);
|
|
312
|
+
}
|
|
313
|
+
GetFirstOpenCategoryLayer() {
|
|
314
|
+
var arraylayers = this.FabrikantenViewModel?.categoryLayers;
|
|
315
|
+
if (arraylayers != null) {
|
|
316
|
+
for (var i = 0; i < arraylayers.length; i++) {
|
|
317
|
+
if (arraylayers[i].selectedOption == 0) {
|
|
318
|
+
return arraylayers[i];
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
return null;
|
|
323
|
+
}
|
|
324
|
+
ShowCategories() {
|
|
325
|
+
return this.GetFirstOpenCategoryLayer() != null;
|
|
326
|
+
}
|
|
327
|
+
ShowRequired() {
|
|
328
|
+
if (this.FabrikantenViewModel.inputs != null) {
|
|
329
|
+
for (var i = 0; i < this.FabrikantenViewModel.inputs.length; i++) {
|
|
330
|
+
if (this.FabrikantenViewModel.inputs[i].required && !this.FabrikantenViewModel.inputs[i].filled) {
|
|
331
|
+
return true;
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
return false;
|
|
336
|
+
}
|
|
337
|
+
ShowTexture() {
|
|
338
|
+
if (this.FabrikantenViewModel.selectedProduct?.textureBaseViewModel != null) {
|
|
339
|
+
return true;
|
|
340
|
+
}
|
|
341
|
+
return false;
|
|
342
|
+
}
|
|
343
|
+
ShowToebehoren() {
|
|
344
|
+
if (this.FabrikantenSettingsViewModel?.enableToebehoren == true) {
|
|
345
|
+
return true;
|
|
346
|
+
}
|
|
347
|
+
return false;
|
|
348
|
+
}
|
|
349
|
+
ShowVariants() {
|
|
350
|
+
if (this.FabrikantenViewModel != null && this.FabrikantenSettingsViewModel != null) {
|
|
351
|
+
if (!this.FabrikantenSettingsViewModel.alwaysShowVariant) {
|
|
352
|
+
var bcbproducts = this.FabrikantenViewModel.selectedProduct?.fabrikantenBCBProductViewModels;
|
|
353
|
+
if (bcbproducts != null && bcbproducts.length > 1) {
|
|
354
|
+
return true;
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
return false;
|
|
359
|
+
}
|
|
360
|
+
ShowActionMenu() {
|
|
361
|
+
if (this.FabrikantenViewModel?.selectedProduct == null) {
|
|
362
|
+
return false;
|
|
363
|
+
}
|
|
364
|
+
if (this.ShowVariants()) {
|
|
365
|
+
return false;
|
|
366
|
+
}
|
|
367
|
+
if (this.SelectedTab == "3D") {
|
|
368
|
+
return true;
|
|
369
|
+
}
|
|
370
|
+
if (this.SelectedTab == "2D") {
|
|
371
|
+
return true;
|
|
372
|
+
}
|
|
373
|
+
if (this.SelectedTab == "Bestek") {
|
|
374
|
+
return true;
|
|
375
|
+
}
|
|
376
|
+
if (this.SelectedTab == "Texture") {
|
|
377
|
+
return true;
|
|
378
|
+
}
|
|
379
|
+
if (this.SelectedTab == "Toebehoren") {
|
|
380
|
+
if (this.HasToebehoren()) {
|
|
381
|
+
return true;
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
return false;
|
|
385
|
+
}
|
|
386
|
+
HasToebehoren() {
|
|
387
|
+
if (this.FabrikantenViewModel?.selectedProduct?.fabrikantenBCBProductViewModels != null) {
|
|
388
|
+
if (this.FabrikantenViewModel?.selectedProduct?.fabrikantenBCBProductViewModels.length > 0) {
|
|
389
|
+
if (this.FabrikantenViewModel.selectedProduct.fabrikantenBCBProductViewModels[0].bcbProductToebehoren != null) {
|
|
390
|
+
if (this.FabrikantenViewModel.selectedProduct.fabrikantenBCBProductViewModels[0].bcbProductToebehoren.length > 0) {
|
|
391
|
+
return true;
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
return false;
|
|
397
|
+
}
|
|
398
|
+
OpenBCBLink(wuid) {
|
|
399
|
+
this.Loading = true;
|
|
400
|
+
var request = new BCBLinkRequestModel();
|
|
401
|
+
request.wuid = wuid;
|
|
402
|
+
this.FabrikantenApiClient.getBCBLink(request).subscribe((model) => {
|
|
403
|
+
window.open(model.url, '_blank');
|
|
404
|
+
this.Loading = false;
|
|
405
|
+
}, (error) => {
|
|
406
|
+
if (error.status == 400)
|
|
407
|
+
console.log(error.json());
|
|
408
|
+
else {
|
|
409
|
+
console.log('An unexpected error occured');
|
|
410
|
+
console.log(error);
|
|
411
|
+
}
|
|
412
|
+
this.Loading = false;
|
|
413
|
+
});
|
|
414
|
+
}
|
|
415
|
+
ReloadModel(ChangeDetectorRef) {
|
|
416
|
+
this.Init = false;
|
|
417
|
+
this.LoadFabrikantenViewModel(ChangeDetectorRef, null);
|
|
418
|
+
}
|
|
419
|
+
LoadFabrikantenViewModel(ChangeDetectorRef, ActivatedRoute) {
|
|
420
|
+
if (!this.Init) {
|
|
421
|
+
this.Loading = true;
|
|
422
|
+
ChangeDetectorRef.detectChanges();
|
|
423
|
+
if (!this.SettingsLoaded) {
|
|
424
|
+
this.LoadFabrikantenSettingsViewModel(ChangeDetectorRef, ActivatedRoute);
|
|
425
|
+
}
|
|
426
|
+
else {
|
|
427
|
+
if (!this.TranslateService.Init) {
|
|
428
|
+
this.TranslateService.LoadTranslations(ChangeDetectorRef, this, ActivatedRoute);
|
|
429
|
+
}
|
|
430
|
+
else {
|
|
431
|
+
this.Init = true;
|
|
432
|
+
var request = new FabrikantenRequestModel();
|
|
433
|
+
if (this.FabrikantenViewModel != null) {
|
|
434
|
+
request.sessionId = this.FabrikantenViewModel.sessionId;
|
|
435
|
+
}
|
|
436
|
+
else {
|
|
437
|
+
request.sessionId = "";
|
|
438
|
+
}
|
|
439
|
+
this.FabrikantenApiClient.getFabrikantenViewModel(request).subscribe((model) => {
|
|
440
|
+
this.FabrikantenViewModel = model;
|
|
441
|
+
this.SelectedPhoto = 0;
|
|
442
|
+
this.Loading = false;
|
|
443
|
+
ChangeDetectorRef.detectChanges();
|
|
444
|
+
this.TriggerReloads(ChangeDetectorRef);
|
|
445
|
+
if (this.ProcessParameters(ActivatedRoute, ChangeDetectorRef)) {
|
|
446
|
+
this.NavigateService.RefreshPage();
|
|
447
|
+
this.Loaded = true;
|
|
448
|
+
}
|
|
449
|
+
}, (error) => {
|
|
450
|
+
if (error.status == 400)
|
|
451
|
+
console.log(error.json());
|
|
452
|
+
else {
|
|
453
|
+
console.log('An unexpected error occured');
|
|
454
|
+
console.log(error);
|
|
455
|
+
}
|
|
456
|
+
this.Loading = false;
|
|
457
|
+
ChangeDetectorRef.detectChanges();
|
|
458
|
+
});
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
LoadFabrikantenSettingsViewModel(ChangeDetectorRef, ActivatedRoute) {
|
|
464
|
+
if (!this.SettingsLoaded) {
|
|
465
|
+
this.Loading = true;
|
|
466
|
+
ChangeDetectorRef.detectChanges();
|
|
467
|
+
this.FabrikantenApiClient.getFabrikantenSettingsViewModel().subscribe((model) => {
|
|
468
|
+
this.FabrikantenSettingsViewModel = model;
|
|
469
|
+
this.Loading = false;
|
|
470
|
+
this.SettingsLoaded = true;
|
|
471
|
+
ChangeDetectorRef.detectChanges();
|
|
472
|
+
if (this.FabrikantenSettingsViewModel.customRedirect != null && this.FabrikantenSettingsViewModel.customRedirect != "") {
|
|
473
|
+
window.location.href = this.FabrikantenSettingsViewModel.customRedirect;
|
|
474
|
+
}
|
|
475
|
+
else {
|
|
476
|
+
this.LoadFabrikantenViewModel(ChangeDetectorRef, ActivatedRoute);
|
|
477
|
+
}
|
|
478
|
+
}, (error) => {
|
|
479
|
+
if (error.status == 400)
|
|
480
|
+
console.log(error.json());
|
|
481
|
+
else {
|
|
482
|
+
console.log('An unexpected error occured');
|
|
483
|
+
console.log(error);
|
|
484
|
+
}
|
|
485
|
+
this.Loading = false;
|
|
486
|
+
ChangeDetectorRef.detectChanges();
|
|
487
|
+
});
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
ProcessParameters(ActivatedRoute, ChangeDetectorRef) {
|
|
491
|
+
if (ActivatedRoute != null) {
|
|
492
|
+
var productname = ActivatedRoute.snapshot.paramMap.get("product");
|
|
493
|
+
if (this.FabrikantenViewModel.products != null) {
|
|
494
|
+
var product = null;
|
|
495
|
+
for (var i = 0; i < this.FabrikantenViewModel.products.length; i++) {
|
|
496
|
+
if (this.FabrikantenViewModel.products[i].urlName == productname) {
|
|
497
|
+
product = this.FabrikantenViewModel.products[i];
|
|
498
|
+
break;
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
if (product != null) {
|
|
502
|
+
this.SelectProduct(product, ChangeDetectorRef);
|
|
503
|
+
return false;
|
|
504
|
+
}
|
|
505
|
+
}
|
|
506
|
+
if (this.ShowCategories()) {
|
|
507
|
+
var category = ActivatedRoute.snapshot.paramMap.get("category");
|
|
508
|
+
if (category != null && category != "") {
|
|
509
|
+
var layers = this.FabrikantenViewModel?.categoryLayers;
|
|
510
|
+
if (layers != null) {
|
|
511
|
+
for (var i = 0; i < layers.length; i++) {
|
|
512
|
+
var categories = layers[i].categories;
|
|
513
|
+
if (categories != null) {
|
|
514
|
+
for (var j = 0; j < categories.length; j++) {
|
|
515
|
+
if (category == "systeemplafonds" && categories[j].id == 1) {
|
|
516
|
+
this.SelectCategory(categories[j], ChangeDetectorRef);
|
|
517
|
+
}
|
|
518
|
+
else if (category == "elements" && categories[j].id == 2) {
|
|
519
|
+
this.SelectCategory(categories[j], ChangeDetectorRef);
|
|
520
|
+
}
|
|
521
|
+
else if (category == "vasteplafonds" && categories[j].id == 3) {
|
|
522
|
+
this.SelectCategory(categories[j], ChangeDetectorRef);
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
return true;
|
|
532
|
+
}
|
|
533
|
+
ResetTabs() {
|
|
534
|
+
if (this.FabrikantenSettingsViewModel.startTab != null) {
|
|
535
|
+
this.SelectedTab = this.FabrikantenSettingsViewModel.startTab;
|
|
536
|
+
}
|
|
537
|
+
else if (this.FabrikantenSettingsViewModel.hideInformationTab) {
|
|
538
|
+
this.SelectedTab = "3D";
|
|
539
|
+
}
|
|
540
|
+
else {
|
|
541
|
+
this.SelectedTab = "Informatie";
|
|
542
|
+
}
|
|
543
|
+
if (this.FabrikantenSettingsViewModel.hideInformationTab) {
|
|
544
|
+
if (this.SelectedTab == "3D") {
|
|
545
|
+
this.SelectedTabIndex = 0;
|
|
546
|
+
}
|
|
547
|
+
if (this.SelectedTab == "2D") {
|
|
548
|
+
this.SelectedTabIndex = 1;
|
|
549
|
+
}
|
|
550
|
+
if (this.SelectedTab == "Bestek") {
|
|
551
|
+
this.SelectedTabIndex = 2;
|
|
552
|
+
}
|
|
553
|
+
}
|
|
554
|
+
else {
|
|
555
|
+
if (this.SelectedTab == "Informatie") {
|
|
556
|
+
this.SelectedTabIndex = 0;
|
|
557
|
+
}
|
|
558
|
+
if (this.SelectedTab == "3D") {
|
|
559
|
+
this.SelectedTabIndex = 1;
|
|
560
|
+
}
|
|
561
|
+
if (this.SelectedTab == "2D") {
|
|
562
|
+
this.SelectedTabIndex = 2;
|
|
563
|
+
}
|
|
564
|
+
if (this.SelectedTab == "Bestek") {
|
|
565
|
+
this.SelectedTabIndex = 3;
|
|
566
|
+
}
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
// Dynamic models
|
|
570
|
+
GetDynamicDisplayValues() {
|
|
571
|
+
if (this.FabrikantenViewModel != null) {
|
|
572
|
+
if (this.WebGLService.Fabrikanten3DViewModel != null && this.WebGLService.Fabrikanten3DViewModel.checksum == this.FabrikantenViewModel.checksum) {
|
|
573
|
+
if (this.WebGLService.Fabrikanten3DViewModel.dynamicDisplayValues != null) {
|
|
574
|
+
return this.WebGLService.Fabrikanten3DViewModel.dynamicDisplayValues;
|
|
575
|
+
}
|
|
576
|
+
}
|
|
577
|
+
if (this.SVGService.FabrikantenSVGViewModel != null && this.SVGService.FabrikantenSVGViewModel.checksum == this.FabrikantenViewModel.checksum) {
|
|
578
|
+
if (this.SVGService.FabrikantenSVGViewModel.dynamicDisplayValues != null) {
|
|
579
|
+
return this.SVGService.FabrikantenSVGViewModel.dynamicDisplayValues;
|
|
580
|
+
}
|
|
581
|
+
}
|
|
582
|
+
if (this.BestekService.FabrikantenBestekViewModel != null && this.BestekService.FabrikantenBestekViewModel.checksum == this.FabrikantenViewModel.checksum) {
|
|
583
|
+
if (this.BestekService.FabrikantenBestekViewModel.dynamicDisplayValues != null) {
|
|
584
|
+
return this.BestekService.FabrikantenBestekViewModel.dynamicDisplayValues;
|
|
585
|
+
}
|
|
586
|
+
}
|
|
587
|
+
}
|
|
588
|
+
return new Array();
|
|
589
|
+
}
|
|
590
|
+
ProcessDynamicModels() {
|
|
591
|
+
if (this.FabrikantenViewModel != null) {
|
|
592
|
+
if (this.WebGLService.Fabrikanten3DViewModel != null && this.WebGLService.Fabrikanten3DViewModel.checksum == this.FabrikantenViewModel.checksum) {
|
|
593
|
+
if (this.WebGLService.Fabrikanten3DViewModel.dynamicFilters != null) {
|
|
594
|
+
this.ProcessDynamicFilters(this.WebGLService.Fabrikanten3DViewModel.dynamicFilters);
|
|
595
|
+
}
|
|
596
|
+
if (this.WebGLService.Fabrikanten3DViewModel.dynamicRangeInputs != null) {
|
|
597
|
+
this.ProcessDynamicRangeInputs(this.WebGLService.Fabrikanten3DViewModel.dynamicRangeInputs);
|
|
598
|
+
}
|
|
599
|
+
}
|
|
600
|
+
else if (this.SVGService.FabrikantenSVGViewModel != null && this.SVGService.FabrikantenSVGViewModel.checksum == this.FabrikantenViewModel.checksum) {
|
|
601
|
+
if (this.SVGService.FabrikantenSVGViewModel.dynamicFilters != null) {
|
|
602
|
+
this.ProcessDynamicFilters(this.SVGService.FabrikantenSVGViewModel.dynamicFilters);
|
|
603
|
+
}
|
|
604
|
+
if (this.SVGService.FabrikantenSVGViewModel.dynamicRangeInputs != null) {
|
|
605
|
+
this.ProcessDynamicRangeInputs(this.SVGService.FabrikantenSVGViewModel.dynamicRangeInputs);
|
|
606
|
+
}
|
|
607
|
+
}
|
|
608
|
+
else if (this.BestekService.FabrikantenBestekViewModel != null && this.BestekService.FabrikantenBestekViewModel.checksum == this.FabrikantenViewModel.checksum) {
|
|
609
|
+
if (this.BestekService.FabrikantenBestekViewModel.dynamicFilters != null) {
|
|
610
|
+
this.ProcessDynamicFilters(this.BestekService.FabrikantenBestekViewModel.dynamicFilters);
|
|
611
|
+
}
|
|
612
|
+
if (this.BestekService.FabrikantenBestekViewModel.dynamicRangeInputs != null) {
|
|
613
|
+
this.ProcessDynamicRangeInputs(this.BestekService.FabrikantenBestekViewModel.dynamicRangeInputs);
|
|
614
|
+
}
|
|
615
|
+
}
|
|
616
|
+
}
|
|
617
|
+
}
|
|
618
|
+
ProcessDynamicFilters(filters) {
|
|
619
|
+
if (this.FabrikantenViewModel.inputs != null) {
|
|
620
|
+
for (var i = 0; i < filters.length; i++) {
|
|
621
|
+
var array = filters[i].filters;
|
|
622
|
+
if (array != null) {
|
|
623
|
+
for (var p = 0; p < array.length; p++) {
|
|
624
|
+
for (var j = 0; j < this.FabrikantenViewModel.inputs.length; j++) {
|
|
625
|
+
if (array[p].filterId == this.FabrikantenViewModel.inputs[j].filter?.id) {
|
|
626
|
+
var options = this.FabrikantenViewModel.inputs[j].filter?.options;
|
|
627
|
+
var allowedarray = array[p].filterOptionsAllowed;
|
|
628
|
+
if (options != null && allowedarray != null) {
|
|
629
|
+
for (var k = 0; k < options.length; k++) {
|
|
630
|
+
var allowed = false;
|
|
631
|
+
for (var l = 0; l < allowedarray.length; l++) {
|
|
632
|
+
if (allowedarray[l] == options[k].id) {
|
|
633
|
+
allowed = true;
|
|
634
|
+
break;
|
|
635
|
+
}
|
|
636
|
+
}
|
|
637
|
+
if (!allowed) {
|
|
638
|
+
options[k].hidden = true;
|
|
639
|
+
console.log("disable: " + options[k].name);
|
|
640
|
+
}
|
|
641
|
+
}
|
|
642
|
+
}
|
|
643
|
+
}
|
|
644
|
+
}
|
|
645
|
+
}
|
|
646
|
+
}
|
|
647
|
+
}
|
|
648
|
+
}
|
|
649
|
+
}
|
|
650
|
+
ProcessDynamicRangeInputs(rangeinputs) {
|
|
651
|
+
if (this.FabrikantenViewModel.inputs != null) {
|
|
652
|
+
for (var i = 0; i < rangeinputs.length; i++) {
|
|
653
|
+
var array = rangeinputs[i].rangeInputs;
|
|
654
|
+
if (array != null) {
|
|
655
|
+
for (var p = 0; p < array.length; p++) {
|
|
656
|
+
for (var j = 0; j < this.FabrikantenViewModel.inputs.length; j++) {
|
|
657
|
+
if (array[p] == this.FabrikantenViewModel.inputs[j].range?.id) {
|
|
658
|
+
console.log('bereik rangeinput:' + this.FabrikantenViewModel.inputs[j].range?.name);
|
|
659
|
+
var rangeobject = this.FabrikantenViewModel.inputs[j].range;
|
|
660
|
+
if (rangeobject != null) {
|
|
661
|
+
rangeobject.inclusiefMinimum = rangeinputs[i].inclusiefMinimum;
|
|
662
|
+
rangeobject.minimum = rangeinputs[i].minimum;
|
|
663
|
+
rangeobject.inclusiefMaximum = rangeinputs[i].inclusiefMaximum;
|
|
664
|
+
rangeobject.maximum = rangeinputs[i].maximum;
|
|
665
|
+
}
|
|
666
|
+
}
|
|
667
|
+
}
|
|
668
|
+
}
|
|
669
|
+
}
|
|
670
|
+
}
|
|
671
|
+
}
|
|
672
|
+
}
|
|
673
|
+
// Downloads
|
|
674
|
+
DownloadARKEYAdomi(custombcbeboid) {
|
|
675
|
+
this.DownloadARKEYAdomiLoading = true;
|
|
676
|
+
var request = new FabrikantenFileRequestModel();
|
|
677
|
+
request.sessionId = this.FabrikantenViewModel.sessionId;
|
|
678
|
+
request.fileType = "dhg";
|
|
679
|
+
request.model3D = true;
|
|
680
|
+
request.customBCBEBOId = custombcbeboid;
|
|
681
|
+
if (this.StatisticsService.Active) {
|
|
682
|
+
if (this.FabrikantenViewModel?.selectedProduct != null) {
|
|
683
|
+
this.StatisticsService.DownloadFile(request.fileType, this.TranslateService.GetActiveValueProduct(this.FabrikantenViewModel.selectedProduct.id));
|
|
684
|
+
}
|
|
685
|
+
}
|
|
686
|
+
this.FabrikantenApiClient.getFabrikantenFileViewModel(request).subscribe((model) => {
|
|
687
|
+
this.StartDownload(model.file + "", ".dhg");
|
|
688
|
+
this.DownloadARKEYAdomiLoading = false;
|
|
689
|
+
}, (error) => {
|
|
690
|
+
if (error.status == 400)
|
|
691
|
+
console.log(error.json());
|
|
692
|
+
else {
|
|
693
|
+
console.log('An unexpected error occured');
|
|
694
|
+
console.log(error);
|
|
695
|
+
}
|
|
696
|
+
});
|
|
697
|
+
}
|
|
698
|
+
DownloadIFC(custombcbeboid) {
|
|
699
|
+
this.DownloadIFCLoading = true;
|
|
700
|
+
var request = new FabrikantenFileRequestModel();
|
|
701
|
+
request.sessionId = this.FabrikantenViewModel.sessionId;
|
|
702
|
+
request.fileType = "ifc";
|
|
703
|
+
request.model3D = true;
|
|
704
|
+
request.customBCBEBOId = custombcbeboid;
|
|
705
|
+
if (this.StatisticsService.Active) {
|
|
706
|
+
if (this.FabrikantenViewModel?.selectedProduct != null) {
|
|
707
|
+
this.StatisticsService.DownloadFile(request.fileType, this.TranslateService.GetActiveValueProduct(this.FabrikantenViewModel.selectedProduct.id));
|
|
708
|
+
}
|
|
709
|
+
}
|
|
710
|
+
this.FabrikantenApiClient.getFabrikantenFileViewModel(request).subscribe((model) => {
|
|
711
|
+
this.StartDownload(model.file + "", ".ifc");
|
|
712
|
+
this.DownloadIFCLoading = false;
|
|
713
|
+
}, (error) => {
|
|
714
|
+
if (error.status == 400)
|
|
715
|
+
console.log(error.json());
|
|
716
|
+
else {
|
|
717
|
+
console.log('An unexpected error occured');
|
|
718
|
+
console.log(error);
|
|
719
|
+
}
|
|
720
|
+
});
|
|
721
|
+
}
|
|
722
|
+
DownloadRevitPlugin(custombcbeboid) {
|
|
723
|
+
this.DownloadRevitPluginLoading = false;
|
|
724
|
+
var request = new FabrikantenFileRequestModel();
|
|
725
|
+
request.sessionId = this.FabrikantenViewModel.sessionId;
|
|
726
|
+
request.fileType = "hdhRevit";
|
|
727
|
+
request.model3D = true;
|
|
728
|
+
request.customBCBEBOId = custombcbeboid;
|
|
729
|
+
if (this.StatisticsService.Active) {
|
|
730
|
+
if (this.FabrikantenViewModel?.selectedProduct != null) {
|
|
731
|
+
this.StatisticsService.DownloadFile(request.fileType, this.TranslateService.GetActiveValueProduct(this.FabrikantenViewModel.selectedProduct.id));
|
|
732
|
+
}
|
|
733
|
+
}
|
|
734
|
+
this.FabrikantenApiClient.getFabrikantenFileViewModel(request).subscribe((model) => {
|
|
735
|
+
window.location.href = model.file + "";
|
|
736
|
+
this.DownloadRevitPluginLoading = false;
|
|
737
|
+
}, (error) => {
|
|
738
|
+
if (error.status == 400)
|
|
739
|
+
console.log(error.json());
|
|
740
|
+
else {
|
|
741
|
+
console.log('An unexpected error occured');
|
|
742
|
+
console.log(error);
|
|
743
|
+
}
|
|
744
|
+
});
|
|
745
|
+
}
|
|
746
|
+
Download3DAutoCADDwg(custombcbeboid) {
|
|
747
|
+
this.Download3DAutoCADDwgLoading = true;
|
|
748
|
+
var request = new FabrikantenFileRequestModel();
|
|
749
|
+
request.sessionId = this.FabrikantenViewModel.sessionId;
|
|
750
|
+
request.fileType = "dwg";
|
|
751
|
+
request.model3D = true;
|
|
752
|
+
request.customBCBEBOId = custombcbeboid;
|
|
753
|
+
if (this.StatisticsService.Active) {
|
|
754
|
+
if (this.FabrikantenViewModel?.selectedProduct != null) {
|
|
755
|
+
this.StatisticsService.DownloadFile(request.fileType, this.TranslateService.GetActiveValueProduct(this.FabrikantenViewModel.selectedProduct.id));
|
|
756
|
+
}
|
|
757
|
+
}
|
|
758
|
+
this.FabrikantenApiClient.getFabrikantenFileViewModel(request).subscribe((model) => {
|
|
759
|
+
this.StartDownload(model.file + "", ".dwg");
|
|
760
|
+
this.Download3DAutoCADDwgLoading = false;
|
|
761
|
+
}, (error) => {
|
|
762
|
+
if (error.status == 400)
|
|
763
|
+
console.log(error.json());
|
|
764
|
+
else {
|
|
765
|
+
console.log('An unexpected error occured');
|
|
766
|
+
console.log(error);
|
|
767
|
+
}
|
|
768
|
+
});
|
|
769
|
+
}
|
|
770
|
+
Download3DDxf(custombcbeboid) {
|
|
771
|
+
this.Download3DDxfLoading = true;
|
|
772
|
+
var request = new FabrikantenFileRequestModel();
|
|
773
|
+
request.sessionId = this.FabrikantenViewModel.sessionId;
|
|
774
|
+
request.fileType = "dxf";
|
|
775
|
+
request.model3D = true;
|
|
776
|
+
request.customBCBEBOId = custombcbeboid;
|
|
777
|
+
if (this.StatisticsService.Active) {
|
|
778
|
+
if (this.FabrikantenViewModel?.selectedProduct != null) {
|
|
779
|
+
this.StatisticsService.DownloadFile(request.fileType, this.TranslateService.GetActiveValueProduct(this.FabrikantenViewModel.selectedProduct.id));
|
|
780
|
+
}
|
|
781
|
+
}
|
|
782
|
+
this.FabrikantenApiClient.getFabrikantenFileViewModel(request).subscribe((model) => {
|
|
783
|
+
this.StartDownload(model.file + "", ".dxf");
|
|
784
|
+
this.Download3DDxfLoading = false;
|
|
785
|
+
}, (error) => {
|
|
786
|
+
if (error.status == 400)
|
|
787
|
+
console.log(error.json());
|
|
788
|
+
else {
|
|
789
|
+
console.log('An unexpected error occured');
|
|
790
|
+
console.log(error);
|
|
791
|
+
}
|
|
792
|
+
});
|
|
793
|
+
}
|
|
794
|
+
Download2DAutoCADDwg(custombcbeboid) {
|
|
795
|
+
this.Download2DAutoCADDwgLoading = true;
|
|
796
|
+
var request = new FabrikantenFileRequestModel();
|
|
797
|
+
request.sessionId = this.FabrikantenViewModel.sessionId;
|
|
798
|
+
request.fileType = "dwg";
|
|
799
|
+
request.model3D = false;
|
|
800
|
+
request.customBCBEBOId = custombcbeboid;
|
|
801
|
+
if (this.StatisticsService.Active) {
|
|
802
|
+
if (this.FabrikantenViewModel?.selectedProduct != null) {
|
|
803
|
+
this.StatisticsService.DownloadFile(request.fileType, this.TranslateService.GetActiveValueProduct(this.FabrikantenViewModel.selectedProduct.id));
|
|
804
|
+
}
|
|
805
|
+
}
|
|
806
|
+
this.FabrikantenApiClient.getFabrikantenFileViewModel(request).subscribe((model) => {
|
|
807
|
+
this.StartDownload(model.file + "", ".dwg");
|
|
808
|
+
this.Download2DAutoCADDwgLoading = false;
|
|
809
|
+
}, (error) => {
|
|
810
|
+
if (error.status == 400)
|
|
811
|
+
console.log(error.json());
|
|
812
|
+
else {
|
|
813
|
+
console.log('An unexpected error occured');
|
|
814
|
+
console.log(error);
|
|
815
|
+
}
|
|
816
|
+
});
|
|
817
|
+
}
|
|
818
|
+
Download2DDxf(custombcbeboid) {
|
|
819
|
+
this.Download2DDxfLoading = true;
|
|
820
|
+
var request = new FabrikantenFileRequestModel();
|
|
821
|
+
request.sessionId = this.FabrikantenViewModel.sessionId;
|
|
822
|
+
request.fileType = "dxf";
|
|
823
|
+
request.model3D = false;
|
|
824
|
+
request.customBCBEBOId = custombcbeboid;
|
|
825
|
+
if (this.StatisticsService.Active) {
|
|
826
|
+
if (this.FabrikantenViewModel?.selectedProduct != null) {
|
|
827
|
+
this.StatisticsService.DownloadFile(request.fileType, this.TranslateService.GetActiveValueProduct(this.FabrikantenViewModel.selectedProduct.id));
|
|
828
|
+
}
|
|
829
|
+
}
|
|
830
|
+
this.FabrikantenApiClient.getFabrikantenFileViewModel(request).subscribe((model) => {
|
|
831
|
+
this.StartDownload(model.file + "", ".dxf");
|
|
832
|
+
this.Download2DDxfLoading = false;
|
|
833
|
+
}, (error) => {
|
|
834
|
+
if (error.status == 400)
|
|
835
|
+
console.log(error.json());
|
|
836
|
+
else {
|
|
837
|
+
console.log('An unexpected error occured');
|
|
838
|
+
console.log(error);
|
|
839
|
+
}
|
|
840
|
+
});
|
|
841
|
+
}
|
|
842
|
+
DownloadRFA(custombcbeboid, webview2) {
|
|
843
|
+
this.DownloadRFALoading = true;
|
|
844
|
+
var request = new FabrikantenFileRequestModel();
|
|
845
|
+
request.sessionId = this.FabrikantenViewModel.sessionId;
|
|
846
|
+
request.fileType = "rfa";
|
|
847
|
+
request.model3D = false;
|
|
848
|
+
request.webView2 = webview2;
|
|
849
|
+
request.customBCBEBOId = custombcbeboid;
|
|
850
|
+
if (this.StatisticsService.Active) {
|
|
851
|
+
if (this.FabrikantenViewModel?.selectedProduct != null) {
|
|
852
|
+
this.StatisticsService.DownloadFile(request.fileType, this.TranslateService.GetActiveValueProduct(this.FabrikantenViewModel.selectedProduct.id));
|
|
853
|
+
}
|
|
854
|
+
}
|
|
855
|
+
this.FabrikantenApiClient.getFabrikantenFileViewModel(request).subscribe((model) => {
|
|
856
|
+
if (model.customRFAZip) {
|
|
857
|
+
if (this.IsInWebViewBrowser()) {
|
|
858
|
+
this.PostWebview2Message(model);
|
|
859
|
+
}
|
|
860
|
+
else {
|
|
861
|
+
this.StartDownload(model.file + "", ".zip");
|
|
862
|
+
}
|
|
863
|
+
}
|
|
864
|
+
else {
|
|
865
|
+
if (model.rvtExtension) {
|
|
866
|
+
this.StartDownload(model.file + "", ".rvt");
|
|
867
|
+
}
|
|
868
|
+
else {
|
|
869
|
+
if (this.IsInWebViewBrowser()) {
|
|
870
|
+
this.PostWebview2Message(model);
|
|
871
|
+
}
|
|
872
|
+
else {
|
|
873
|
+
this.StartDownload(model.file + "", ".rfa");
|
|
874
|
+
}
|
|
875
|
+
}
|
|
876
|
+
}
|
|
877
|
+
this.DownloadRFALoading = false;
|
|
878
|
+
}, (error) => {
|
|
879
|
+
if (error.status == 400)
|
|
880
|
+
console.log(error.json());
|
|
881
|
+
else {
|
|
882
|
+
console.log('An unexpected error occured');
|
|
883
|
+
console.log(error);
|
|
884
|
+
}
|
|
885
|
+
});
|
|
886
|
+
}
|
|
887
|
+
PostWebview2Message(model) {
|
|
888
|
+
var action = "download";
|
|
889
|
+
var file = model.file + "";
|
|
890
|
+
var filename = this.CollectFileName();
|
|
891
|
+
var parametersnames = model.revitParametersNames;
|
|
892
|
+
var parametersvalues = model.revitParametersValues;
|
|
893
|
+
window.chrome.webview.postMessage({ action, file, filename, parametersnames, parametersvalues });
|
|
894
|
+
}
|
|
895
|
+
IsInWebViewBrowser() {
|
|
896
|
+
if (window != undefined) {
|
|
897
|
+
if (window.chrome != undefined) {
|
|
898
|
+
if (window.chrome.webview != undefined) {
|
|
899
|
+
return true;
|
|
900
|
+
}
|
|
901
|
+
}
|
|
902
|
+
}
|
|
903
|
+
return false;
|
|
904
|
+
}
|
|
905
|
+
StartDownload(url, extension) {
|
|
906
|
+
var filename = this.CollectFileName();
|
|
907
|
+
if (this.FabrikantenSettingsViewModel.disableCustomFileNames) {
|
|
908
|
+
filename = url.substring(url.lastIndexOf('\\') + 1);
|
|
909
|
+
}
|
|
910
|
+
if (filename != "") {
|
|
911
|
+
filename = filename + extension;
|
|
912
|
+
window.location.href = "/Download/Download?pUrl=" + url + "&pFileName=" + filename;
|
|
913
|
+
}
|
|
914
|
+
else {
|
|
915
|
+
alert('error: no product selected');
|
|
916
|
+
}
|
|
917
|
+
}
|
|
918
|
+
DownloadBestek(data) {
|
|
919
|
+
if (this.BestekService.TypeBestek == "STABU") {
|
|
920
|
+
this.DownloadBestekInner(data, ".S01");
|
|
921
|
+
}
|
|
922
|
+
if (this.BestekService.TypeBestek == "OSF") {
|
|
923
|
+
this.DownloadBestekInner(data, ".txt");
|
|
924
|
+
}
|
|
925
|
+
if (this.BestekService.TypeBestek == "Vrij") {
|
|
926
|
+
this.DownloadBestekInner(data, ".txt");
|
|
927
|
+
}
|
|
928
|
+
if (this.StatisticsService.Active) {
|
|
929
|
+
if (this.FabrikantenViewModel?.selectedProduct != null) {
|
|
930
|
+
this.StatisticsService.DownloadFile("bestek", this.TranslateService.GetActiveValueProduct(this.FabrikantenViewModel.selectedProduct.id));
|
|
931
|
+
}
|
|
932
|
+
}
|
|
933
|
+
}
|
|
934
|
+
DownloadBestekInner(data, extension) {
|
|
935
|
+
var c = document.createElement("a");
|
|
936
|
+
c.download = this.CollectFileName() + extension;
|
|
937
|
+
var t = new Blob([data], {
|
|
938
|
+
type: "text/plain"
|
|
939
|
+
});
|
|
940
|
+
c.href = window.URL.createObjectURL(t);
|
|
941
|
+
c.click();
|
|
942
|
+
}
|
|
943
|
+
CollectFileName() {
|
|
944
|
+
var filename = "";
|
|
945
|
+
if (this.SelectedTab == "3D") {
|
|
946
|
+
if (this.WebGLService.Fabrikanten3DViewModel != null) {
|
|
947
|
+
filename = this.WebGLService.Fabrikanten3DViewModel.instantieNaam + "";
|
|
948
|
+
}
|
|
949
|
+
}
|
|
950
|
+
if (this.SelectedTab == "2D") {
|
|
951
|
+
if (this.SVGService.FabrikantenSVGViewModel != null) {
|
|
952
|
+
filename = this.SVGService.FabrikantenSVGViewModel.instantieNaam + "";
|
|
953
|
+
}
|
|
954
|
+
}
|
|
955
|
+
if (this.SelectedTab == "Bestek") {
|
|
956
|
+
if (this.BestekService.FabrikantenBestekViewModel != null) {
|
|
957
|
+
filename = this.BestekService.FabrikantenBestekViewModel.instantieNaam + "";
|
|
958
|
+
}
|
|
959
|
+
}
|
|
960
|
+
if (this.SelectedTab == "Toebehoren") {
|
|
961
|
+
if (this.GetSelectedToebehoren() != null) {
|
|
962
|
+
filename = this.GetSelectedToebehoren()?.name + "";
|
|
963
|
+
}
|
|
964
|
+
}
|
|
965
|
+
if (filename == "" && this.FabrikantenViewModel?.selectedProduct?.id != null) {
|
|
966
|
+
var id = this.FabrikantenViewModel?.selectedProduct?.id;
|
|
967
|
+
filename = this.TranslateService.GetActiveValueProduct(id);
|
|
968
|
+
}
|
|
969
|
+
filename = filename.replace(/[^a-z0-9]/gi, '_');
|
|
970
|
+
return filename;
|
|
971
|
+
}
|
|
972
|
+
// Reloads
|
|
973
|
+
TriggerReloads(ChangeDetectorRef) {
|
|
974
|
+
if (!this.ShowRequired()) {
|
|
975
|
+
var array = this.FabrikantenViewModel.selectedProduct?.fabrikantenBCBProductViewModels;
|
|
976
|
+
if (array != null && (array.length == 1 || this.FabrikantenSettingsViewModel.alwaysShowVariant)) {
|
|
977
|
+
if (this.SelectedTab == "Bestek") {
|
|
978
|
+
if (this.FabrikantenViewModel.checksum != this.BestekService.FabrikantenBestekViewModel?.checksum) {
|
|
979
|
+
this.BestekService.LoadFabrikantenBestekViewModel(this.FabrikantenViewModel.sessionId, ChangeDetectorRef);
|
|
980
|
+
}
|
|
981
|
+
}
|
|
982
|
+
else if (this.SelectedTab == "3D") {
|
|
983
|
+
if (this.FabrikantenViewModel.checksum != this.WebGLService.Fabrikanten3DViewModel?.checksum) {
|
|
984
|
+
this.WebGLService.LoadFabrikanten3DViewModel(this.FabrikantenViewModel.sessionId, ChangeDetectorRef);
|
|
985
|
+
}
|
|
986
|
+
}
|
|
987
|
+
else if (this.SelectedTab == "2D") {
|
|
988
|
+
if (this.FabrikantenViewModel.checksum != this.SVGService.FabrikantenSVGViewModel?.checksum) {
|
|
989
|
+
this.SVGService.LoadFabrikantenSVGViewModel(this.FabrikantenViewModel.sessionId, ChangeDetectorRef);
|
|
990
|
+
}
|
|
991
|
+
}
|
|
992
|
+
else if (this.SelectedTab == "Texture") {
|
|
993
|
+
this.TextureService.LoadFabrikantenTextureViewModel(this.FabrikantenViewModel.sessionId, ChangeDetectorRef);
|
|
994
|
+
}
|
|
995
|
+
else if (this.SelectedTab == "Toebehoren") {
|
|
996
|
+
//this.ToebehorenService.LoadFabrikantenToebehorenViewModel(this.FabrikantenViewModel.sessionId as string, ChangeDetectorRef);
|
|
997
|
+
}
|
|
998
|
+
}
|
|
999
|
+
}
|
|
1000
|
+
}
|
|
1001
|
+
// Breadcrumb
|
|
1002
|
+
GetSteps() {
|
|
1003
|
+
var returnarray = new Array();
|
|
1004
|
+
var array = this.FabrikantenViewModel?.categoryLayers;
|
|
1005
|
+
if (array != null) {
|
|
1006
|
+
for (var i = 0; i < array.length; i++) {
|
|
1007
|
+
if (array[i].selectedOption != 0) {
|
|
1008
|
+
var options = array[i].categories;
|
|
1009
|
+
if (options != null) {
|
|
1010
|
+
for (var j = 0; j < options.length; j++) {
|
|
1011
|
+
if (options[j].id === array[i].selectedOption) {
|
|
1012
|
+
returnarray.push(options[j]);
|
|
1013
|
+
}
|
|
1014
|
+
}
|
|
1015
|
+
}
|
|
1016
|
+
}
|
|
1017
|
+
else {
|
|
1018
|
+
break;
|
|
1019
|
+
}
|
|
1020
|
+
}
|
|
1021
|
+
}
|
|
1022
|
+
return returnarray;
|
|
1023
|
+
}
|
|
1024
|
+
GetSelectedToebehoren() {
|
|
1025
|
+
var toebehoren = null;
|
|
1026
|
+
if (this.FabrikantenViewModel.selectedProduct?.fabrikantenBCBProductViewModels != null &&
|
|
1027
|
+
this.FabrikantenViewModel.selectedProduct.fabrikantenBCBProductViewModels.length > 0 &&
|
|
1028
|
+
this.FabrikantenViewModel.selectedProduct.fabrikantenBCBProductViewModels[0].bcbProductToebehoren != null &&
|
|
1029
|
+
this.FabrikantenViewModel.selectedProduct.fabrikantenBCBProductViewModels[0].bcbProductToebehoren.length > 0) {
|
|
1030
|
+
for (var i = 0; i < this.FabrikantenViewModel.selectedProduct.fabrikantenBCBProductViewModels[0].bcbProductToebehoren.length; i++) {
|
|
1031
|
+
if (this.FabrikantenViewModel.selectedProduct.fabrikantenBCBProductViewModels[0].bcbProductToebehoren[i].id == this.SelectedToebehoren?.id) {
|
|
1032
|
+
toebehoren = this.FabrikantenViewModel.selectedProduct.fabrikantenBCBProductViewModels[0].bcbProductToebehoren[i];
|
|
1033
|
+
}
|
|
1034
|
+
}
|
|
1035
|
+
}
|
|
1036
|
+
return toebehoren;
|
|
1037
|
+
}
|
|
1038
|
+
}
|
|
1039
|
+
FabrikantenService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: FabrikantenService, deps: [{ token: i1.FabrikantenApiClient }, { token: i2.BestekService }, { token: i3.TranslateService }, { token: i4.WebGLService }, { token: i5.SVGService }, { token: i6.TextureService }, { token: i7.NavigateService }, { token: i8.Router }, { token: i9.StatisticsService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1040
|
+
FabrikantenService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: FabrikantenService, providedIn: 'root' });
|
|
1041
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: FabrikantenService, decorators: [{
|
|
1042
|
+
type: Injectable,
|
|
1043
|
+
args: [{ providedIn: 'root' }]
|
|
1044
|
+
}], ctorParameters: function () { return [{ type: i1.FabrikantenApiClient }, { type: i2.BestekService }, { type: i3.TranslateService }, { type: i4.WebGLService }, { type: i5.SVGService }, { type: i6.TextureService }, { type: i7.NavigateService }, { type: i8.Router }, { type: i9.StatisticsService }]; } });
|
|
1045
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFicmlrYW50ZW4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvc2VydmljZXMvZmFicmlrYW50ZW4uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUc5RCxPQUFPLEVBU0wsdUJBQXVCLEVBRXZCLG9CQUFvQixFQUNwQix1QkFBdUIsRUFDdkIseUJBQXlCLEVBQ3pCLHFCQUFxQixFQUNyQixvQkFBb0IsRUFDcEIsa0JBQWtCLEVBQ2xCLHNCQUFzQixFQUN0Qix5QkFBeUIsRUFDekIsNkJBQTZCLEVBQzdCLHlCQUF5QixFQUl6QixtQkFBbUIsRUFFbkIsMkJBQTJCLEVBRTNCLG1CQUFtQixFQUNwQixNQUFNLDBCQUEwQixDQUFDOzs7Ozs7Ozs7OztBQWlCbEMsTUFBTSxPQUFPLGtCQUFrQjtJQTRCN0IsWUFDVSxvQkFBMEMsRUFDMUMsYUFBNEIsRUFDNUIsZ0JBQWtDLEVBQ2xDLFlBQTBCLEVBQzFCLFVBQXNCLEVBQ3RCLGNBQThCLEVBQzlCLGVBQWdDLEVBQ2hDLE1BQWMsRUFDZCxpQkFBb0M7UUFScEMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUMxQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2Qsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQXBDdEMsU0FBSSxHQUFZLEtBQUssQ0FBQztRQUV2QixZQUFPLEdBQVksSUFBSSxDQUFDO1FB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LGNBREwsTUFBTTsyRkFDbkIsa0JBQWtCO2tCQUQ5QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHtcclxuICBGYWJyaWthbnRlbkFwaUNsaWVudCxcclxuICBGYWJyaWthbnRlbkZpbHRlclZpZXdNb2RlbCxcclxuICBGYWJyaWthbnRlblZpZXdNb2RlbCxcclxuICBGYWJyaWthbnRlblNldHRpbmdzVmlld01vZGVsLFxyXG4gIEZhYnJpa2FudGVuUHJvZHVjdFZpZXdNb2RlbCxcclxuICBGYWJyaWthbnRlbkJDQlByb2R1Y3RWaWV3TW9kZWwsXHJcbiAgRmFicmlrYW50ZW5DYXRlZ29yeUxheWVyVmlld01vZGVsLFxyXG4gIEZhYnJpa2FudGVuQkNCUHJvZHVjdFRvZWJlaG9yZW5WaWV3TW9kZWwsXHJcbiAgRmFicmlrYW50ZW5SZXF1ZXN0TW9kZWwsXHJcbiAgRmFicmlrYW50ZW5DYXRlZ29yeVZpZXdNb2RlbCxcclxuICBTZWxlY3RQcm9kdWN0UmVxdWVzdCxcclxuICBTZWxlY3RCQ0JQcm9kdWN0UmVxdWVzdCxcclxuICBTZWxlY3RGaWx0ZXJPcHRpb25SZXF1ZXN0LFxyXG4gIFNlbGVjdENhdGVnb3J5UmVxdWVzdCxcclxuICBTZXRSYW5nZUlucHV0UmVxdWVzdCxcclxuICBSZXNldEZpbHRlclJlcXVlc3QsXHJcbiAgUmVzZXRBbGxGaWx0ZXJzUmVxdWVzdCxcclxuICBSZXNldENhdGVnb3J5TGF5ZXJSZXF1ZXN0LFxyXG4gIFJlbW92ZVByb2R1Y3RTZWxlY3Rpb25SZXF1ZXN0LFxyXG4gIFJlc2V0QWxsQ2F0ZWdvcmllc1JlcXVlc3QsXHJcbiAgRHluYW1pY0ZpbHRlcnNWaWV3TW9kZWwsXHJcbiAgRHluYW1pY1JhbmdlSW5wdXRWaWV3TW9kZWwsXHJcbiAgRHluYW1pY0Rpc3BsYXlWYWx1ZVZpZXdNb2RlbCxcclxuICBCQ0JMaW5rUmVxdWVzdE1vZGVsLFxyXG4gIEJDQkxpbmtSZXNwb25zZU1vZGVsLFxyXG4gIEZhYnJpa2FudGVuRmlsZVJlcXVlc3RNb2RlbCxcclxuICBGYWJyaWthbnRlbkZpbGVWaWV3TW9kZWwsXHJcbiAgU2VsZWN0Q29sb3VyUmVxdWVzdFxyXG59IGZyb20gJy4uL3N3YWdnZXIvU3dhZ2dlckNsaWVudCc7XHJcbmltcG9ydCB7IEJlc3Rla1NlcnZpY2UgfSBmcm9tICcuL2Jlc3Rlay5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTmF2aWdhdGVTZXJ2aWNlIH0gZnJvbSAnLi9uYXZpZ2F0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3RhdGlzdGljc1NlcnZpY2UgfSBmcm9tICcuL3N0YXRpc3RpY3Muc2VydmljZSc7XHJcbmltcG9ydCB7IFNWR1NlcnZpY2UgfSBmcm9tICcuL3N2Zy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVGV4dHVyZVNlcnZpY2UgfSBmcm9tICcuL3RleHR1cmUuc2VydmljZSc7XHJcbmltcG9ydCB7IFRvZWJlaG9yZW5TZXJ2aWNlIH0gZnJvbSAnLi90b2ViZWhvcmVuLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi90cmFuc2xhdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IFdlYkdMU2VydmljZSB9IGZyb20gJy4vd2ViZ2wuc2VydmljZSc7XHJcblxyXG5kZWNsYXJlIGdsb2JhbCB7XHJcbiAgaW50ZXJmYWNlIFdpbmRvdyB7XHJcbiAgICBjaHJvbWU/OiBhbnk7XHJcbiAgfVxyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgRmFicmlrYW50ZW5TZXJ2aWNlIHtcclxuICBwcml2YXRlIEluaXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHVibGljIExvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHB1YmxpYyBEb3dubG9hZEFSS0VZQWRvbWlMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIERvd25sb2FkSUZDTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBEb3dubG9hZFJldml0UGx1Z2luTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBEb3dubG9hZDNEQXV0b0NBRER3Z0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgRG93bmxvYWQzRER4ZkxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgRG93bmxvYWQyREF1dG9DQUREd2dMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIERvd25sb2FkMkREeGZMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIERvd25sb2FkUkZBTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgU2VsZWN0ZWRUYWJJbmRleDogbnVtYmVyID0gMDtcclxuXHJcbiAgcHVibGljIEZhYnJpa2FudGVuVmlld01vZGVsOiBGYWJyaWthbnRlblZpZXdNb2RlbDtcclxuXHJcbiAgcHVibGljIFNldHRpbmdzTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIEZhYnJpa2FudGVuU2V0dGluZ3NWaWV3TW9kZWw6IEZhYnJpa2FudGVuU2V0dGluZ3NWaWV3TW9kZWw7XHJcblxyXG4gIHB1YmxpYyBTZWxlY3RlZFBob3RvOiBudW1iZXIgPSAwO1xyXG4gIHB1YmxpYyBTZWxlY3RlZFRvZWJlaG9yZW46IEZhYnJpa2FudGVuQkNCUHJvZHVjdFRvZWJlaG9yZW5WaWV3TW9kZWwgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgcHJpdmF0ZSBTZWxlY3RlZFRhYlNldDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBTZWxlY3RlZFRhYjogc3RyaW5nID0gXCJJbmZvcm1hdGllXCI7XHJcblxyXG4gIHB1YmxpYyBMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIEZhYnJpa2FudGVuQXBpQ2xpZW50OiBGYWJyaWthbnRlbkFwaUNsaWVudCxcclxuICAgIHByaXZhdGUgQmVzdGVrU2VydmljZTogQmVzdGVrU2VydmljZSxcclxuICAgIHByaXZhdGUgVHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgV2ViR0xTZXJ2aWNlOiBXZWJHTFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIFNWR1NlcnZpY2U6IFNWR1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIFRleHR1cmVTZXJ2aWNlOiBUZXh0dXJlU2VydmljZSxcclxuICAgIHByaXZhdGUgTmF2aWdhdGVTZXJ2aWNlOiBOYXZpZ2F0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIFJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBTdGF0aXN0aWNzU2VydmljZTogU3RhdGlzdGljc1NlcnZpY2UpIHtcclxuICAgIHRoaXMuTmF2aWdhdGVTZXJ2aWNlLkZhYnJpa2FudGVuU2VydmljZSA9IHRoaXM7XHJcbiAgICB0aGlzLlNWR1NlcnZpY2UuRmFicmlrYW50ZW5TZXJ2aWNlID0gdGhpcztcclxuICAgIHRoaXMuV2ViR0xTZXJ2aWNlLkZhYnJpa2FudGVuU2VydmljZSA9IHRoaXM7XHJcbiAgICB0aGlzLkJlc3Rla1NlcnZpY2UuRmFicmlrYW50ZW5TZXJ2aWNlID0gdGhpcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBSZXNldEFsbEZpbHRlcnMoQ2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKTogdm9pZCB7XHJcbiAgICB0aGlzLkxvYWRpbmcgPSB0cnVlO1xyXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgIHZhciByZXF1ZXN0ID0gbmV3IFJlc2V0QWxsRmlsdGVyc1JlcXVlc3QoKTtcclxuICAgIHJlcXVlc3Quc2Vzc2lvbklkID0gdGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbC5zZXNzaW9uSWQ7XHJcblxyXG4gICAgdGhpcy5GYWJyaWthbnRlbkFwaUNsaWVudC5yZXNldEFsbEZpbHRlcnMocmVxdWVzdCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5SZWxvYWRNb2RlbChDaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAwKVxyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yLmpzb24oKSk7XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICBDaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTZWxlY3RPcHRpb24oZmlsdGVyaWQ6IG51bWJlciwgZmlsdGVyb3B0aW9uaWQ6IG51bWJlciwgQ2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKTogdm9pZCB7XHJcbiAgICB0aGlzLkxvYWRpbmcgPSB0cnVlO1xyXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgIHZhciByZXF1ZXN0ID0gbmV3IFNlbGVjdEZpbHRlck9wdGlvblJlcXVlc3QoKTtcclxuXHJcbiAgICByZXF1ZXN0LnNlc3Npb25JZCA9IHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2Vzc2lvbklkO1xyXG4gICAgcmVxdWVzdC5maWx0ZXJPcHRpb25JZCA9IGZpbHRlcm9wdGlvbmlkO1xyXG4gICAgcmVxdWVzdC5maWx0ZXJJZCA9IGZpbHRlcmlkO1xyXG5cclxuICAgIGlmICh0aGlzLlN0YXRpc3RpY3NTZXJ2aWNlLkFjdGl2ZSkge1xyXG4gICAgICB0aGlzLlN0YXRpc3RpY3NTZXJ2aWNlLlNlbGVjdEZpbHRlck9wdGlvbih0aGlzLlRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWVGaWx0ZXIoZmlsdGVyaWQpICsgXCI6IFwiICsgdGhpcy5UcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlRmlsdGVyT3B0aW9uKGZpbHRlcm9wdGlvbmlkKSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5GYWJyaWthbnRlbkFwaUNsaWVudC5zZWxlY3RGaWx0ZXJPcHRpb24ocmVxdWVzdCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5SZWxvYWRNb2RlbChDaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAwKVxyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yLmpzb24oKSk7XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICBDaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTZWxlY3RDb2xvdXIoZmlsdGVyaWQ6IG51bWJlciwgY29sb3VyOiBzdHJpbmcsIGNvbG91cnZhbHVlOiBzdHJpbmcsIENoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZik6IHZvaWQge1xyXG4gICAgdGhpcy5Mb2FkaW5nID0gdHJ1ZTtcclxuICAgIENoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICB2YXIgcmVxdWVzdCA9IG5ldyBTZWxlY3RDb2xvdXJSZXF1ZXN0KCk7XHJcblxyXG4gICAgcmVxdWVzdC5zZXNzaW9uSWQgPSB0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsLnNlc3Npb25JZDtcclxuICAgIHJlcXVlc3QuY29sb3VyTmFtZSA9IGNvbG91cjtcclxuICAgIHJlcXVlc3QuY29sb3VyVmFsdWUgPSBjb2xvdXJ2YWx1ZTtcclxuICAgIHJlcXVlc3QuZmlsdGVySWQgPSBmaWx0ZXJpZDtcclxuXHJcbiAgICB0aGlzLkZhYnJpa2FudGVuQXBpQ2xpZW50LnNlbGVjdENvbG91cihyZXF1ZXN0KS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLlJlbG9hZE1vZGVsKENoYW5nZURldGVjdG9yUmVmKTtcclxuICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA0MDApXHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IuanNvbigpKTtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIENoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFNldFJhbmdlSW5wdXQocmFuZ2VpbnB1dGlkOiBudW1iZXIsIHZhbHVlOiBudW1iZXIsIENoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZik6IHZvaWQge1xyXG4gICAgdGhpcy5Mb2FkaW5nID0gdHJ1ZTtcclxuICAgIENoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICB2YXIgcmVxdWVzdCA9IG5ldyBTZXRSYW5nZUlucHV0UmVxdWVzdCgpO1xyXG5cclxuICAgIHJlcXVlc3Quc2Vzc2lvbklkID0gdGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbC5zZXNzaW9uSWQ7XHJcbiAgICByZXF1ZXN0LnJhbmdlSW5wdXRJZCA9IHJhbmdlaW5wdXRpZDtcclxuICAgIHJlcXVlc3QudmFsdWUgPSB2YWx1ZTtcclxuXHJcbiAgICBpZiAodGhpcy5TdGF0aXN0aWNzU2VydmljZS5BY3RpdmUpIHtcclxuICAgICAgdGhpcy5TdGF0aXN0aWNzU2VydmljZS5TZWxlY3RSYW5nZVZhbHVlKHRoaXMuVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZVJhbmdlSW5wdXQocmFuZ2VpbnB1dGlkKSArIFwiOiBcIiArIHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLkZhYnJpa2FudGVuQXBpQ2xpZW50LnNldFJhbmdlSW5wdXQocmVxdWVzdCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5SZWxvYWRNb2RlbChDaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAwKVxyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yLmpzb24oKSk7XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICBDaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBGb3JjZVNlbGVjdENhdGVnb3J5KGNhdGVnb3J5aWQ6IG51bWJlciwgQ2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbCAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuTG9hZGluZyA9IHRydWU7XHJcblxyXG4gICAgICB2YXIgcmVxdWVzdCA9IG5ldyBSZXNldEFsbENhdGVnb3JpZXNSZXF1ZXN0KCk7XHJcblxyXG4gICAgICByZXF1ZXN0LnNlc3Npb25JZCA9IHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2Vzc2lvbklkO1xyXG5cclxuICAgICAgdGhpcy5GYWJyaWthbnRlbkFwaUNsaWVudC5yZXNldEFsbENhdGVnb3JpZXMocmVxdWVzdCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB2YXIgcmVxdWVzdGNhdCA9IG5ldyBTZWxlY3RDYXRlZ29yeVJlcXVlc3QoKTtcclxuXHJcbiAgICAgICAgcmVxdWVzdGNhdC5zZXNzaW9uSWQgPSB0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsLnNlc3Npb25JZDtcclxuICAgICAgICByZXF1ZXN0Y2F0LmNhdGVnb3J5SWQgPSBjYXRlZ29yeWlkO1xyXG4gICAgICAgIHJlcXVlc3RjYXQuY2F0ZWdvcnlMYXllciA9IDA7XHJcblxyXG4gICAgICAgIHRoaXMuRmFicmlrYW50ZW5BcGlDbGllbnQuc2VsZWN0Q2F0ZWdvcnkocmVxdWVzdGNhdCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuUmVsb2FkTW9kZWwoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gICAgICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAwKVxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvci5qc29uKCkpO1xyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoaXMuTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA0MDApXHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvci5qc29uKCkpO1xyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG4gICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBTZWxlY3RDYXRlZ29yeShjYXRlZ29yeTogRmFicmlrYW50ZW5DYXRlZ29yeVZpZXdNb2RlbCwgQ2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKTogdm9pZCB7XHJcbiAgICB0aGlzLkxvYWRpbmcgPSB0cnVlO1xyXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgIHZhciByZXF1ZXN0ID0gbmV3IFNlbGVjdENhdGVnb3J5UmVxdWVzdCgpO1xyXG5cclxuICAgIHJlcXVlc3Quc2Vzc2lvbklkID0gdGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbC5zZXNzaW9uSWQ7XHJcbiAgICByZXF1ZXN0LmNhdGVnb3J5SWQgPSBjYXRlZ29yeS5pZDtcclxuICAgIHJlcXVlc3QuY2F0ZWdvcnlMYXllciA9IGNhdGVnb3J5LmxheWVyO1xyXG5cclxuICAgIGlmICh0aGlzLlN0YXRpc3RpY3NTZXJ2aWNlLkFjdGl2ZSkge1xyXG4gICAgICB0aGlzLlN0YXRpc3RpY3NTZXJ2aWNlLlNlbGVjdENhdGVnb3J5KHRoaXMuVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZUNhdGVnb3J5KGNhdGVnb3J5LmlkKSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5GYWJyaWthbnRlbkFwaUNsaWVudC5zZWxlY3RDYXRlZ29yeShyZXF1ZXN0KS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLlJlbG9hZE1vZGVsKENoYW5nZURldGVjdG9yUmVmKTtcclxuICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA0MDApXHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IuanNvbigpKTtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIENoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFNlbGVjdFByb2R1Y3QocHJvZHVjdDogRmFicmlrYW50ZW5Qcm9kdWN0Vmlld01vZGVsLCBDaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpOiB2b2lkIHtcclxuICAgIHRoaXMuTG9hZGluZyA9IHRydWU7XHJcbiAgICBDaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgdmFyIHJlcXVlc3QgPSBuZXcgU2VsZWN0UHJvZHVjdFJlcXVlc3QoKTtcclxuXHJcbiAgICByZXF1ZXN0LnNlc3Npb25JZCA9IHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2Vzc2lvbklkO1xyXG4gICAgcmVxdWVzdC5wcm9kdWN0SWQgPSBwcm9kdWN0LmlkO1xyXG5cclxuICAgIGlmICh0aGlzLlN0YXRpc3RpY3NTZXJ2aWNlLkFjdGl2ZSkge1xyXG4gICAgICB0aGlzLlN0YXRpc3RpY3NTZXJ2aWNlLlNlbGVjdFByb2R1Y3QodGhpcy5UcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlUHJvZHVjdChwcm9kdWN0LmlkKSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5GYWJyaWthbnRlbkFwaUNsaWVudC5zZWxlY3RQcm9kdWN0KHJlcXVlc3QpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuU2VsZWN0ZWRUb2ViZWhvcmVuID0gbnVsbDtcclxuICAgICAgdGhpcy5SZXNldFRhYnMoKTtcclxuXHJcbiAgICAgIHRoaXMuUmVsb2FkTW9kZWwoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMClcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvci5qc29uKCkpO1xyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBjb25zb2xlLmxvZygnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLkxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2VsZWN0QkNCUHJvZHVjdChiY2Jwcm9kdWN0OiBGYWJyaWthbnRlbkJDQlByb2R1Y3RWaWV3TW9kZWwsIENoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZik6IHZvaWQge1xyXG4gICAgdGhpcy5Mb2FkaW5nID0gdHJ1ZTtcclxuICAgIENoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICB2YXIgcmVxdWVzdCA9IG5ldyBTZWxlY3RCQ0JQcm9kdWN0UmVxdWVzdCgpO1xyXG5cclxuICAgIHJlcXVlc3Quc2Vzc2lvbklkID0gdGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbC5zZXNzaW9uSWQ7XHJcbiAgICByZXF1ZXN0LmJjYlByb2R1Y3RJZCA9IGJjYnByb2R1Y3QuaWQ7XHJcblxyXG4gICAgdGhpcy5GYWJyaWthbnRlbkFwaUNsaWVudC5zZWxlY3RCQ0JQcm9kdWN0KHJlcXVlc3QpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuUmVsb2FkTW9kZWwoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMClcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvci5qc29uKCkpO1xyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBjb25zb2xlLmxvZygnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLkxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgUmVzZXRTZWxlY3Rpb25GaWx0ZXIoZmlsdGVyOiBGYWJyaWthbnRlbkZpbHRlclZpZXdNb2RlbCwgQ2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKTogdm9pZCB7XHJcbiAgICB0aGlzLkxvYWRpbmcgPSB0cnVlO1xyXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgIHZhciByZXF1ZXN0ID0gbmV3IFJlc2V0RmlsdGVyUmVxdWVzdCgpO1xyXG4gICAgcmVxdWVzdC5maWx0ZXJJZCA9IGZpbHRlci5pZDtcclxuICAgIHJlcXVlc3Quc2Vzc2lvbklkID0gdGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbC5zZXNzaW9uSWQ7XHJcblxyXG4gICAgdGhpcy5GYWJyaWthbnRlbkFwaUNsaWVudC5yZXNldEZpbHRlclNlbGVjdGlvbihyZXF1ZXN0KS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLlJlbG9hZE1vZGVsKENoYW5nZURldGVjdG9yUmVmKTtcclxuICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA0MDApXHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IuanNvbigpKTtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIENoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFJlc2V0QWxsQ2F0ZWdvcmllcyhDaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5Mb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICAgIHZhciByZXF1ZXN0ID0gbmV3IFJlc2V0QWxsQ2F0ZWdvcmllc1JlcXVlc3QoKTtcclxuXHJcbiAgICAgIHJlcXVlc3Quc2Vzc2lvbklkID0gdGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbC5zZXNzaW9uSWQ7XHJcblxyXG4gICAgICB0aGlzLkZhYnJpa2FudGVuQXBpQ2xpZW50LnJlc2V0QWxsQ2F0ZWdvcmllcyhyZXF1ZXN0KS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuUmVsb2FkTW9kZWwoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gICAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA0MDApXHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvci5qc29uKCkpO1xyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG4gICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBSZXNldFNlbGVjdGlvbkNhdGVnb3J5KGNhdGVnb3J5bGF5ZXI6IEZhYnJpa2FudGVuQ2F0ZWdvcnlWaWV3TW9kZWwsIENoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZik6IHZvaWQge1xyXG4gICAgdGhpcy5Mb2FkaW5nID0gdHJ1ZTtcclxuICAgIENoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICB2YXIgcmVxdWVzdCA9IG5ldyBSZXNldENhdGVnb3J5TGF5ZXJSZXF1ZXN0KCk7XHJcbiAgICByZXF1ZXN0LmNhdGVnb3J5TGF5ZXIgPSBjYXRlZ29yeWxheWVyLmxheWVyO1xyXG4gICAgcmVxdWVzdC5zZXNzaW9uSWQgPSB0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsLnNlc3Npb25JZDtcclxuXHJcbiAgICB0aGlzLkZhYnJpa2FudGVuQXBpQ2xpZW50LnJlc2V0Q2F0ZWdvcnlMYXllclNlbGVjdGlvbihyZXF1ZXN0KS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLlJlc2V0QWxsRmlsdGVycyhDaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAwKVxyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yLmpzb24oKSk7XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICBDaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBSZW1vdmVQcm9kdWN0U2VsZWN0aW9uKENoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZik6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLkxvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgICAgdmFyIHJlcXVlc3QgPSBuZXcgUmVtb3ZlUHJvZHVjdFNlbGVjdGlvblJlcXVlc3QoKTtcclxuXHJcbiAgICAgIHJlcXVlc3Quc2Vzc2lvbklkID0gdGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbC5zZXNzaW9uSWQ7XHJcblxyXG4gICAgICB0aGlzLkZhYnJpa2FudGVuQXBpQ2xpZW50LnJlbW92ZVByb2R1Y3RTZWxlY3Rpb24ocmVxdWVzdCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLlNlbGVjdGVkVG9lYmVob3JlbiA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5SZXNldFRhYnMoKTtcclxuXHJcbiAgICAgICAgdGhpcy5SZWxvYWRNb2RlbChDaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMClcclxuICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yLmpzb24oKSk7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLkxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICBDaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIFRhYlNlbGVjdGlvbkNoYW5nZWQodGFiOiBzdHJpbmcsIENoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZik6IHZvaWQge1xyXG4gICAgdGhpcy5TZWxlY3RlZFRhYiA9IHRhYjtcclxuXHJcbiAgICB0aGlzLlRyaWdnZXJSZWxvYWRzKENoYW5nZURldGVjdG9yUmVmKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRGaXJzdE9wZW5DYXRlZ29yeUxheWVyKCk6IEZhYnJpa2FudGVuQ2F0ZWdvcnlMYXllclZpZXdNb2RlbCB8IG51bGwge1xyXG4gICAgdmFyIGFycmF5bGF5ZXJzID0gdGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbD8uY2F0ZWdvcnlMYXllcnM7XHJcblxyXG4gICAgaWYgKGFycmF5bGF5ZXJzICE9IG51bGwpIHtcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheWxheWVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChhcnJheWxheWVyc1tpXS5zZWxlY3RlZE9wdGlvbiA9PSAwKSB7XHJcbiAgICAgICAgICByZXR1cm4gYXJyYXlsYXllcnNbaV07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2hvd0NhdGVnb3JpZXMoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5HZXRGaXJzdE9wZW5DYXRlZ29yeUxheWVyKCkgIT0gbnVsbDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTaG93UmVxdWlyZWQoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbC5pbnB1dHMgIT0gbnVsbCkge1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwuaW5wdXRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwuaW5wdXRzW2ldLnJlcXVpcmVkICYmICF0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsLmlucHV0c1tpXS5maWxsZWQpIHtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTaG93VGV4dHVyZSgpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsLnNlbGVjdGVkUHJvZHVjdD8udGV4dHVyZUJhc2VWaWV3TW9kZWwgIT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2hvd1RvZWJlaG9yZW4oKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5GYWJyaWthbnRlblNldHRpbmdzVmlld01vZGVsPy5lbmFibGVUb2ViZWhvcmVuID09IHRydWUpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFNob3dWYXJpYW50cygpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsICE9IG51bGwgJiYgdGhpcy5GYWJyaWthbnRlblNldHRpbmdzVmlld01vZGVsICE9IG51bGwpIHtcclxuICAgICAgaWYgKCF0aGlzLkZhYnJpa2FudGVuU2V0dGluZ3NWaWV3TW9kZWwuYWx3YXlzU2hvd1ZhcmlhbnQpIHtcclxuICAgICAgICB2YXIgYmNicHJvZHVjdHMgPSB0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsLnNlbGVjdGVkUHJvZHVjdD8uZmFicmlrYW50ZW5CQ0JQcm9kdWN0Vmlld01vZGVscztcclxuXHJcbiAgICAgICAgaWYgKGJjYnByb2R1Y3RzICE9IG51bGwgJiYgYmNicHJvZHVjdHMubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFNob3dBY3Rpb25NZW51KCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWw/LnNlbGVjdGVkUHJvZHVjdCA9PSBudWxsKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5TaG93VmFyaWFudHMoKSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuU2VsZWN0ZWRUYWIgPT0gXCIzRFwiKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLlNlbGVjdGVkVGFiID09IFwiMkRcIikge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5TZWxlY3RlZFRhYiA9PSBcIkJlc3Rla1wiKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLlNlbGVjdGVkVGFiID09IFwiVGV4dHVyZVwiKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLlNlbGVjdGVkVGFiID09IFwiVG9lYmVob3JlblwiKSB7XHJcbiAgICAgIGlmICh0aGlzLkhhc1RvZWJlaG9yZW4oKSkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEhhc1RvZWJlaG9yZW4oKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbD8uc2VsZWN0ZWRQcm9kdWN0Py5mYWJyaWthbnRlbkJDQlByb2R1Y3RWaWV3TW9kZWxzICE9IG51bGwpIHtcclxuICAgICAgaWYgKHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWw/LnNlbGVjdGVkUHJvZHVjdD8uZmFicmlrYW50ZW5CQ0JQcm9kdWN0Vmlld01vZGVscy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2VsZWN0ZWRQcm9kdWN0LmZhYnJpa2FudGVuQkNCUHJvZHVjdFZpZXdNb2RlbHNbMF0uYmNiUHJvZHVjdFRvZWJlaG9yZW4gIT0gbnVsbCkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2VsZWN0ZWRQcm9kdWN0LmZhYnJpa2FudGVuQkNCUHJvZHVjdFZpZXdNb2RlbHNbMF0uYmNiUHJvZHVjdFRvZWJlaG9yZW4ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgT3BlbkJDQkxpbmsod3VpZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLkxvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgIHZhciByZXF1ZXN0ID0gbmV3IEJDQkxpbmtSZXF1ZXN0TW9kZWwoKTtcclxuICAgIHJlcXVlc3Qud3VpZCA9IHd1aWQ7XHJcblxyXG4gICAgdGhpcy5GYWJyaWthbnRlbkFwaUNsaWVudC5nZXRCQ0JMaW5rKHJlcXVlc3QpLnN1YnNjcmliZSgobW9kZWw6IEJDQkxpbmtSZXNwb25zZU1vZGVsKSA9PiB7XHJcbiAgICAgIHdpbmRvdy5vcGVuKG1vZGVsLnVybCwgJ19ibGFuaycpO1xyXG5cclxuICAgICAgdGhpcy5Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAwKVxyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yLmpzb24oKSk7XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgUmVsb2FkTW9kZWwoQ2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XHJcbiAgICB0aGlzLkluaXQgPSBmYWxzZTtcclxuICAgIHRoaXMuTG9hZEZhYnJpa2FudGVuVmlld01vZGVsKENoYW5nZURldGVjdG9yUmVmLCBudWxsKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBMb2FkRmFicmlrYW50ZW5WaWV3TW9kZWwoQ2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLCBBY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUgfCBudWxsKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuSW5pdCkge1xyXG5cclxuICAgICAgdGhpcy5Mb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgICAgaWYgKCF0aGlzLlNldHRpbmdzTG9hZGVkKSB7XHJcbiAgICAgICAgdGhpcy5Mb2FkRmFicmlrYW50ZW5TZXR0aW5nc1ZpZXdNb2RlbChDaGFuZ2VEZXRlY3RvclJlZiwgQWN0aXZhdGVkUm91dGUpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmICghdGhpcy5UcmFuc2xhdGVTZXJ2aWNlLkluaXQpIHtcclxuICAgICAgICAgIHRoaXMuVHJhbnNsYXRlU2VydmljZS5Mb2FkVHJhbnNsYXRpb25zKENoYW5nZURldGVjdG9yUmVmLCB0aGlzLCBBY3RpdmF0ZWRSb3V0ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5Jbml0ID0gdHJ1ZTtcclxuICAgICAgICAgIHZhciByZXF1ZXN0ID0gbmV3IEZhYnJpa2FudGVuUmVxdWVzdE1vZGVsKCk7XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXF1ZXN0LnNlc3Npb25JZCA9IHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2Vzc2lvbklkO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHJlcXVlc3Quc2Vzc2lvbklkID0gXCJcIjtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB0aGlzLkZhYnJpa2FudGVuQXBpQ2xpZW50LmdldEZhYnJpa2FudGVuVmlld01vZGVsKHJlcXVlc3QpLnN1YnNjcmliZSgobW9kZWw6IEZhYnJpa2FudGVuVmlld01vZGVsKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwgPSBtb2RlbDtcclxuICAgICAgICAgICAgdGhpcy5TZWxlY3RlZFBob3RvID0gMDtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICBDaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLlRyaWdnZXJSZWxvYWRzKENoYW5nZURldGVjdG9yUmVmKTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLlByb2Nlc3NQYXJhbWV0ZXJzKEFjdGl2YXRlZFJvdXRlLCBDaGFuZ2VEZXRlY3RvclJlZikpIHtcclxuICAgICAgICAgICAgICB0aGlzLk5hdmlnYXRlU2VydmljZS5SZWZyZXNoUGFnZSgpO1xyXG4gICAgICAgICAgICAgIHRoaXMuTG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMClcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvci5qc29uKCkpO1xyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZygnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLkxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgTG9hZEZhYnJpa2FudGVuU2V0dGluZ3NWaWV3TW9kZWwoQ2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLCBBY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUgfCBudWxsKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuU2V0dGluZ3NMb2FkZWQpIHtcclxuICAgICAgdGhpcy5Mb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgICAgdGhpcy5GYWJyaWthbnRlbkFwaUNsaWVudC5nZXRGYWJyaWthbnRlblNldHRpbmdzVmlld01vZGVsKCkuc3Vic2NyaWJlKChtb2RlbDogRmFicmlrYW50ZW5TZXR0aW5nc1ZpZXdNb2RlbCkgPT4ge1xyXG4gICAgICAgIHRoaXMuRmFicmlrYW50ZW5TZXR0aW5nc1ZpZXdNb2RlbCA9IG1vZGVsO1xyXG5cclxuICAgICAgICB0aGlzLkxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLlNldHRpbmdzTG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICBDaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLkZhYnJpa2FudGVuU2V0dGluZ3NWaWV3TW9kZWwuY3VzdG9tUmVkaXJlY3QgIT0gbnVsbCAmJiB0aGlzLkZhYnJpa2FudGVuU2V0dGluZ3NWaWV3TW9kZWwuY3VzdG9tUmVkaXJlY3QgIT0gXCJcIikge1xyXG4gICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB0aGlzLkZhYnJpa2FudGVuU2V0dGluZ3NWaWV3TW9kZWwuY3VzdG9tUmVkaXJlY3Q7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5Mb2FkRmFicmlrYW50ZW5WaWV3TW9kZWwoQ2hhbmdlRGV0ZWN0b3JSZWYsIEFjdGl2YXRlZFJvdXRlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMClcclxuICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yLmpzb24oKSk7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLkxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICBDaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIFByb2Nlc3NQYXJhbWV0ZXJzKEFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSB8IG51bGwsIENoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZik6IGJvb2xlYW4ge1xyXG4gICAgaWYgKEFjdGl2YXRlZFJvdXRlICE9IG51bGwpIHtcclxuICAgICAgdmFyIHByb2R1Y3RuYW1lID0gQWN0aXZhdGVkUm91dGUuc25hcHNob3QucGFyYW1NYXAuZ2V0KFwicHJvZHVjdFwiKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsLnByb2R1Y3RzICE9IG51bGwpIHtcclxuICAgICAgICB2YXIgcHJvZHVjdDogRmFicmlrYW50ZW5Qcm9kdWN0Vmlld01vZGVsIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbC5wcm9kdWN0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgaWYgKHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwucHJvZHVjdHNbaV0udXJsTmFtZSA9PSBwcm9kdWN0bmFtZSkge1xyXG4gICAgICAgICAgICBwcm9kdWN0ID0gdGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbC5wcm9kdWN0c1tpXTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAocHJvZHVjdCAhPSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLlNlbGVjdFByb2R1Y3QocHJvZHVjdCwgQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuU2hvd0NhdGVnb3JpZXMoKSkge1xyXG4gICAgICAgIHZhciBjYXRlZ29yeSA9IEFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldChcImNhdGVnb3J5XCIpO1xyXG5cclxuICAgICAgICBpZiAoY2F0ZWdvcnkgIT0gbnVsbCAmJiBjYXRlZ29yeSAhPSBcIlwiKSB7XHJcbiAgICAgICAgICB2YXIgbGF5ZXJzID0gdGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbD8uY2F0ZWdvcnlMYXllcnM7XHJcblxyXG4gICAgICAgICAgaWYgKGxheWVycyAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGF5ZXJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgdmFyIGNhdGVnb3JpZXMgPSBsYXllcnNbaV0uY2F0ZWdvcmllcztcclxuXHJcbiAgICAgICAgICAgICAgaWYgKGNhdGVnb3JpZXMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBjYXRlZ29yaWVzLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChjYXRlZ29yeSA9PSBcInN5c3RlZW1wbGFmb25kc1wiICYmIGNhdGVnb3JpZXNbal0uaWQgPT0gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuU2VsZWN0Q2F0ZWdvcnkoY2F0ZWdvcmllc1tqXSwgQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNhdGVnb3J5ID09IFwiZWxlbWVudHNcIiAmJiBjYXRlZ29yaWVzW2pdLmlkID09IDIpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLlNlbGVjdENhdGVnb3J5KGNhdGVnb3JpZXNbal0sIENoYW5nZURldGVjdG9yUmVmKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBlbHNlIGlmIChjYXRlZ29yeSA9PSBcInZhc3RlcGxhZm9uZHNcIiAmJiBjYXRlZ29yaWVzW2pdLmlkID09IDMpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLlNlbGVjdENhdGVnb3J5KGNhdGVnb3JpZXNbal0sIENoYW5nZURldGVjdG9yUmVmKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBSZXNldFRhYnMoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5GYWJyaWthbnRlblNldHRpbmdzVmlld01vZGVsLnN0YXJ0VGFiICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5TZWxlY3RlZFRhYiA9IHRoaXMuRmFicmlrYW50ZW5TZXR0aW5nc1ZpZXdNb2RlbC5zdGFydFRhYjtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuRmFicmlrYW50ZW5TZXR0aW5nc1ZpZXdNb2RlbC5oaWRlSW5mb3JtYXRpb25UYWIpIHtcclxuICAgICAgdGhpcy5TZWxlY3RlZFRhYiA9IFwiM0RcIjtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLlNlbGVjdGVkVGFiID0gXCJJbmZvcm1hdGllXCI7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuRmFicmlrYW50ZW5TZXR0aW5nc1ZpZXdNb2RlbC5oaWRlSW5mb3JtYXRpb25UYWIpIHtcclxuICAgICAgaWYgKHRoaXMuU2VsZWN0ZWRUYWIgPT0gXCIzRFwiKSB7XHJcbiAgICAgICAgdGhpcy5TZWxlY3RlZFRhYkluZGV4ID0gMDtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuU2VsZWN0ZWRUYWIgPT0gXCIyRFwiKSB7XHJcbiAgICAgICAgdGhpcy5TZWxlY3RlZFRhYkluZGV4ID0gMTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuU2VsZWN0ZWRUYWIgPT0gXCJCZXN0ZWtcIikge1xyXG4gICAgICAgIHRoaXMuU2VsZWN0ZWRUYWJJbmRleCA9IDI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5TZWxlY3RlZFRhYiA9PSBcIkluZm9ybWF0aWVcIikge1xyXG4gICAgICAgIHRoaXMuU2VsZWN0ZWRUYWJJbmRleCA9IDA7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLlNlbGVjdGVkVGFiID09IFwiM0RcIikge1xyXG4gICAgICAgIHRoaXMuU2VsZWN0ZWRUYWJJbmRleCA9IDE7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLlNlbGVjdGVkVGFiID09IFwiMkRcIikge1xyXG4gICAgICAgIHRoaXMuU2VsZWN0ZWRUYWJJbmRleCA9IDI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLlNlbGVjdGVkVGFiID09IFwiQmVzdGVrXCIpIHtcclxuICAgICAgICB0aGlzLlNlbGVjdGVkVGFiSW5kZXggPSAzO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBEeW5hbWljIG1vZGVsc1xyXG5cclxuICBwdWJsaWMgR2V0RHluYW1pY0Rpc3BsYXlWYWx1ZXMoKTogRHluYW1pY0Rpc3BsYXlWYWx1ZVZpZXdNb2RlbFtdIHtcclxuICAgIGlmICh0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsICE9IG51bGwpIHtcclxuICAgICAgaWYgKHRoaXMuV2ViR0xTZXJ2aWNlLkZhYnJpa2FudGVuM0RWaWV3TW9kZWwgIT0gbnVsbCAmJiB0aGlzLldlYkdMU2VydmljZS5GYWJyaWthbnRlbjNEVmlld01vZGVsLmNoZWNrc3VtID09IHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwuY2hlY2tzdW0pIHtcclxuICAgICAgICBpZiAodGhpcy5XZWJHTFNlcnZpY2UuRmFicmlrYW50ZW4zRFZpZXdNb2RlbC5keW5hbWljRGlzcGxheVZhbHVlcyAhPSBudWxsKSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5XZWJHTFNlcnZpY2UuRmFicmlrYW50ZW4zRFZpZXdNb2RlbC5keW5hbWljRGlzcGxheVZhbHVlcztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLlNWR1NlcnZpY2UuRmFicmlrYW50ZW5TVkdWaWV3TW9kZWwgIT0gbnVsbCAmJiB0aGlzLlNWR1NlcnZpY2UuRmFicmlrYW50ZW5TVkdWaWV3TW9kZWwuY2hlY2tzdW0gPT0gdGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbC5jaGVja3N1bSkge1xyXG4gICAgICAgIGlmICh0aGlzLlNWR1NlcnZpY2UuRmFicmlrYW50ZW5TVkdWaWV3TW9kZWwuZHluYW1pY0Rpc3BsYXlWYWx1ZXMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuU1ZHU2VydmljZS5GYWJyaWthbnRlblNWR1ZpZXdNb2RlbC5keW5hbWljRGlzcGxheVZhbHVlcztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLkJlc3Rla1NlcnZpY2UuRmFicmlrYW50ZW5CZXN0ZWtWaWV3TW9kZWwgIT0gbnVsbCAmJiB0aGlzLkJlc3Rla1NlcnZpY2UuRmFicmlrYW50ZW5CZXN0ZWtWaWV3TW9kZWwuY2hlY2tzdW0gPT0gdGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbC5jaGVja3N1bSkge1xyXG4gICAgICAgIGlmICh0aGlzLkJlc3Rla1NlcnZpY2UuRmFicmlrYW50ZW5CZXN0ZWtWaWV3TW9kZWwuZHluYW1pY0Rpc3BsYXlWYWx1ZXMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuQmVzdGVrU2VydmljZS5GYWJyaWthbnRlbkJlc3Rla1ZpZXdNb2RlbC5keW5hbWljRGlzcGxheVZhbHVlcztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbmV3IEFycmF5PER5bmFtaWNEaXNwbGF5VmFsdWVWaWV3TW9kZWw+KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgUHJvY2Vzc0R5bmFtaWNNb2RlbHMoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbCAhPSBudWxsKSB7XHJcbiAgICAgIGlmICh0aGlzLldlYkdMU2VydmljZS5GYWJyaWthbnRlbjNEVmlld01vZGVsICE9IG51bGwgJiYgdGhpcy5XZWJHTFNlcnZpY2UuRmFicmlrYW50ZW4zRFZpZXdNb2RlbC5jaGVja3N1bSA9PSB0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsLmNoZWNrc3VtKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuV2ViR0xTZXJ2aWNlLkZhYnJpa2FudGVuM0RWaWV3TW9kZWwuZHluYW1pY0ZpbHRlcnMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgdGhpcy5Qcm9jZXNzRHluYW1pY0ZpbHRlcnModGhpcy5XZWJHTFNlcnZpY2UuRmFicmlrYW50ZW4zRFZpZXdNb2RlbC5keW5hbWljRmlsdGVycyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5XZWJHTFNlcnZpY2UuRmFicmlrYW50ZW4zRFZpZXdNb2RlbC5keW5hbWljUmFuZ2VJbnB1dHMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgdGhpcy5Qcm9jZXNzRHluYW1pY1JhbmdlSW5wdXRzKHRoaXMuV2ViR0xTZXJ2aWNlLkZhYnJpa2FudGVuM0RWaWV3TW9kZWwuZHluYW1pY1JhbmdlSW5wdXRzKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5TVkdTZXJ2aWNlLkZhYnJpa2FudGVuU1ZHVmlld01vZGVsICE9IG51bGwgJiYgdGhpcy5TVkdTZXJ2aWNlLkZhYnJpa2FudGVuU1ZHVmlld01vZGVsLmNoZWNrc3VtID09IHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwuY2hlY2tzdW0pIHtcclxuICAgICAgICBpZiAodGhpcy5TVkdTZXJ2aWNlLkZhYnJpa2FudGVuU1ZHVmlld01vZGVsLmR5bmFtaWNGaWx0ZXJzICE9IG51bGwpIHtcclxuICAgICAgICAgIHRoaXMuUHJvY2Vzc0R5bmFtaWNGaWx0ZXJzKHRoaXMuU1ZHU2VydmljZS5GYWJyaWthbnRlblNWR1ZpZXdNb2RlbC5keW5hbWljRmlsdGVycyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5TVkdTZXJ2aWNlLkZhYnJpa2FudGVuU1ZHVmlld01vZGVsLmR5bmFtaWNSYW5nZUlucHV0cyAhPSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLlByb2Nlc3NEeW5hbWljUmFuZ2VJbnB1dHModGhpcy5TVkdTZXJ2aWNlLkZhYnJpa2FudGVuU1ZHVmlld01vZGVsLmR5bmFtaWNSYW5nZUlucHV0cyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMuQmVzdGVrU2VydmljZS5GYWJyaWthbnRlbkJlc3Rla1ZpZXdNb2RlbCAhPSBudWxsICYmIHRoaXMuQmVzdGVrU2VydmljZS5GYWJyaWthbnRlbkJlc3Rla1ZpZXdNb2RlbC5jaGVja3N1bSA9PSB0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsLmNoZWNrc3VtKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuQmVzdGVrU2VydmljZS5GYWJyaWthbnRlbkJlc3Rla1ZpZXdNb2RlbC5keW5hbWljRmlsdGVycyAhPSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLlByb2Nlc3NEeW5hbWljRmlsdGVycyh0aGlzLkJlc3Rla1NlcnZpY2UuRmFicmlrYW50ZW5CZXN0ZWtWaWV3TW9kZWwuZHluYW1pY0ZpbHRlcnMpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuQmVzdGVrU2VydmljZS5GYWJyaWthbnRlbkJlc3Rla1ZpZXdNb2RlbC5keW5hbWljUmFuZ2VJbnB1dHMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgdGhpcy5Qcm9jZXNzRHluYW1pY1JhbmdlSW5wdXRzKHRoaXMuQmVzdGVrU2VydmljZS5GYWJyaWthbnRlbkJlc3Rla1ZpZXdNb2RlbC5keW5hbWljUmFuZ2VJbnB1dHMpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBQcm9jZXNzRHluYW1pY0ZpbHRlcnMoZmlsdGVyczogRHluYW1pY0ZpbHRlcnNWaWV3TW9kZWxbXSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwuaW5wdXRzICE9IG51bGwpIHtcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmaWx0ZXJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgdmFyIGFycmF5ID0gZmlsdGVyc1tpXS5maWx0ZXJzO1xyXG4gICAgICAgIGlmIChhcnJheSAhPSBudWxsKSB7XHJcbiAgICAgICAgICBmb3IgKHZhciBwID0gMDsgcCA8IGFycmF5Lmxlbmd0aDsgcCsrKSB7XHJcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbC5pbnB1dHMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICBpZiAoYXJyYXlbcF0uZmlsdGVySWQgPT0gdGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbC5pbnB1dHNbal0uZmlsdGVyPy5pZCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIG9wdGlvbnMgPSB0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsLmlucHV0c1tqXS5maWx0ZXI/Lm9wdGlvbnM7XHJcbiAgICAgICAgICAgICAgICB2YXIgYWxsb3dlZGFycmF5ID0gYXJyYXlbcF0uZmlsdGVyT3B0aW9uc0FsbG93ZWQ7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMgIT0gbnVsbCAmJiBhbGxvd2VkYXJyYXkgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8IG9wdGlvbnMubGVuZ3RoOyBrKyspIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgYWxsb3dlZCA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBsID0gMDsgbCA8IGFsbG93ZWRhcnJheS5sZW5ndGg7IGwrKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGFsbG93ZWRhcnJheVtsXSA9PSBvcHRpb25zW2tdLmlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghYWxsb3dlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgb3B0aW9uc1trXS5oaWRkZW4gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJkaXNhYmxlOiBcIiArIG9wdGlvbnNba10ubmFtZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIFByb2Nlc3NEeW5hbWljUmFuZ2VJbnB1dHMocmFuZ2VpbnB1dHM6IER5bmFtaWNSYW5nZUlucHV0Vmlld01vZGVsW10pOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsLmlucHV0cyAhPSBudWxsKSB7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmFuZ2VpbnB1dHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB2YXIgYXJyYXkgPSByYW5nZWlucHV0c1tpXS5yYW5nZUlucHV0cztcclxuICAgICAgICBpZiAoYXJyYXkgIT0gbnVsbCkge1xyXG4gICAgICAgICAgZm9yICh2YXIgcCA9IDA7IHAgPCBhcnJheS5sZW5ndGg7IHArKykge1xyXG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwuaW5wdXRzLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgICAgaWYgKGFycmF5W3BdID09IHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwuaW5wdXRzW2pdLnJhbmdlPy5pZCkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2JlcmVpayByYW5nZWlucHV0OicgKyB0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsLmlucHV0c1tqXS5yYW5nZT8ubmFtZSk7XHJcblxyXG4gICAgICAgICAgICAgICAgdmFyIHJhbmdlb2JqZWN0ID0gdGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbC5pbnB1dHNbal0ucmFuZ2U7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHJhbmdlb2JqZWN0ICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgcmFuZ2VvYmplY3QuaW5jbHVzaWVmTWluaW11bSA9IHJhbmdlaW5wdXRzW2ldLmluY2x1c2llZk1pbmltdW07XHJcbiAgICAgICAgICAgICAgICAgIHJhbmdlb2JqZWN0Lm1pbmltdW0gPSByYW5nZWlucHV0c1tpXS5taW5pbXVtO1xyXG5cclxuICAgICAgICAgICAgICAgICAgcmFuZ2VvYmplY3QuaW5jbHVzaWVmTWF4aW11bSA9IHJhbmdlaW5wdXRzW2ldLmluY2x1c2llZk1heGltdW07XHJcbiAgICAgICAgICAgICAgICAgIHJhbmdlb2JqZWN0Lm1heGltdW0gPSByYW5nZWlucHV0c1tpXS5tYXhpbXVtO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gRG93bmxvYWRzXHJcblxyXG4gIHB1YmxpYyBEb3dubG9hZEFSS0VZQWRvbWkoY3VzdG9tYmNiZWJvaWQ6IG51bWJlciB8IHVuZGVmaW5lZCk6IHZvaWQge1xyXG4gICAgdGhpcy5Eb3dubG9hZEFSS0VZQWRvbWlMb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICB2YXIgcmVxdWVzdCA9IG5ldyBGYWJyaWthbnRlbkZpbGVSZXF1ZXN0TW9kZWwoKTtcclxuXHJcbiAgICByZXF1ZXN0LnNlc3Npb25JZCA9IHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2Vzc2lvbklkO1xyXG4gICAgcmVxdWVzdC5maWxlVHlwZSA9IFwiZGhnXCI7XHJcbiAgICByZXF1ZXN0Lm1vZGVsM0QgPSB0cnVlO1xyXG4gICAgcmVxdWVzdC5jdXN0b21CQ0JFQk9JZCA9IGN1c3RvbWJjYmVib2lkO1xyXG5cclxuICAgIGlmICh0aGlzLlN0YXRpc3RpY3NTZXJ2aWNlLkFjdGl2ZSkge1xyXG4gICAgICBpZiAodGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbD8uc2VsZWN0ZWRQcm9kdWN0ICE9IG51bGwpIHtcclxuICAgICAgICB0aGlzLlN0YXRpc3RpY3NTZXJ2aWNlLkRvd25sb2FkRmlsZShyZXF1ZXN0LmZpbGVUeXBlLCB0aGlzLlRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWVQcm9kdWN0KHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2VsZWN0ZWRQcm9kdWN0LmlkKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLkZhYnJpa2FudGVuQXBpQ2xpZW50LmdldEZhYnJpa2FudGVuRmlsZVZpZXdNb2RlbChyZXF1ZXN0KS5zdWJzY3JpYmUoKG1vZGVsOiBGYWJyaWthbnRlbkZpbGVWaWV3TW9kZWwpID0+IHtcclxuICAgICAgdGhpcy5TdGFydERvd25sb2FkKG1vZGVsLmZpbGUgKyBcIlwiLCBcIi5kaGdcIik7XHJcbiAgICAgIHRoaXMuRG93bmxvYWRBUktFWUFkb21pTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMClcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvci5qc29uKCkpO1xyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBjb25zb2xlLmxvZygnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBEb3dubG9hZElGQyhjdXN0b21iY2JlYm9pZDogbnVtYmVyIHwgdW5kZWZpbmVkKTogdm9pZCB7XHJcbiAgICB0aGlzLkRvd25sb2FkSUZDTG9hZGluZyA9IHRydWU7XHJcbiAgICB2YXIgcmVxdWVzdCA9IG5ldyBGYWJyaWthbnRlbkZpbGVSZXF1ZXN0TW9kZWwoKTtcclxuXHJcbiAgICByZXF1ZXN0LnNlc3Npb25JZCA9IHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2Vzc2lvbklkO1xyXG4gICAgcmVxdWVzdC5maWxlVHlwZSA9IFwiaWZjXCI7XHJcbiAgICByZXF1ZXN0Lm1vZGVsM0QgPSB0cnVlO1xyXG4gICAgcmVxdWVzdC5jdXN0b21CQ0JFQk9JZCA9IGN1c3RvbWJjYmVib2lkO1xyXG5cclxuICAgIGlmICh0aGlzLlN0YXRpc3RpY3NTZXJ2aWNlLkFjdGl2ZSkge1xyXG4gICAgICBpZiAodGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbD8uc2VsZWN0ZWRQcm9kdWN0ICE9IG51bGwpIHtcclxuICAgICAgICB0aGlzLlN0YXRpc3RpY3NTZXJ2aWNlLkRvd25sb2FkRmlsZShyZXF1ZXN0LmZpbGVUeXBlLCB0aGlzLlRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWVQcm9kdWN0KHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2VsZWN0ZWRQcm9kdWN0LmlkKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLkZhYnJpa2FudGVuQXBpQ2xpZW50LmdldEZhYnJpa2FudGVuRmlsZVZpZXdNb2RlbChyZXF1ZXN0KS5zdWJzY3JpYmUoKG1vZGVsOiBGYWJyaWthbnRlbkZpbGVWaWV3TW9kZWwpID0+IHtcclxuICAgICAgdGhpcy5TdGFydERvd25sb2FkKG1vZGVsLmZpbGUgKyBcIlwiLCBcIi5pZmNcIik7XHJcbiAgICAgIHRoaXMuRG93bmxvYWRJRkNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAwKVxyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yLmpzb24oKSk7XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIERvd25sb2FkUmV2aXRQbHVnaW4oY3VzdG9tYmNiZWJvaWQ6IG51bWJlciB8IHVuZGVmaW5lZCk6IHZvaWQge1xyXG4gICAgdGhpcy5Eb3dubG9hZFJldml0UGx1Z2luTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgdmFyIHJlcXVlc3QgPSBuZXcgRmFicmlrYW50ZW5GaWxlUmVxdWVzdE1vZGVsKCk7XHJcblxyXG4gICAgcmVxdWVzdC5zZXNzaW9uSWQgPSB0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsLnNlc3Npb25JZDtcclxuICAgIHJlcXVlc3QuZmlsZVR5cGUgPSBcImhkaFJldml0XCI7XHJcbiAgICByZXF1ZXN0Lm1vZGVsM0QgPSB0cnVlO1xyXG4gICAgcmVxdWVzdC5jdXN0b21CQ0JFQk9JZCA9IGN1c3RvbWJjYmVib2lkO1xyXG5cclxuICAgIGlmICh0aGlzLlN0YXRpc3RpY3NTZXJ2aWNlLkFjdGl2ZSkge1xyXG4gICAgICBpZiAodGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbD8uc2VsZWN0ZWRQcm9kdWN0ICE9IG51bGwpIHtcclxuICAgICAgICB0aGlzLlN0YXRpc3RpY3NTZXJ2aWNlLkRvd25sb2FkRmlsZShyZXF1ZXN0LmZpbGVUeXBlLCB0aGlzLlRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWVQcm9kdWN0KHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2VsZWN0ZWRQcm9kdWN0LmlkKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLkZhYnJpa2FudGVuQXBpQ2xpZW50LmdldEZhYnJpa2FudGVuRmlsZVZpZXdNb2RlbChyZXF1ZXN0KS5zdWJzY3JpYmUoKG1vZGVsOiBGYWJyaWthbnRlbkZpbGVWaWV3TW9kZWwpID0+IHtcclxuICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBtb2RlbC5maWxlICsgXCJcIjtcclxuICAgICAgdGhpcy5Eb3dubG9hZFJldml0UGx1Z2luTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMClcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvci5qc29uKCkpO1xyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBjb25zb2xlLmxvZygnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBEb3dubG9hZDNEQXV0b0NBRER3ZyhjdXN0b21iY2JlYm9pZDogbnVtYmVyIHwgdW5kZWZpbmVkKTogdm9pZCB7XHJcbiAgICB0aGlzLkRvd25sb2FkM0RBdXRvQ0FERHdnTG9hZGluZyA9IHRydWU7XHJcbiAgICB2YXIgcmVxdWVzdCA9IG5ldyBGYWJyaWthbnRlbkZpbGVSZXF1ZXN0TW9kZWwoKTtcclxuXHJcbiAgICByZXF1ZXN0LnNlc3Npb25JZCA9IHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2Vzc2lvbklkO1xyXG4gICAgcmVxdWVzdC5maWxlVHlwZSA9IFwiZHdnXCI7XHJcbiAgICByZXF1ZXN0Lm1vZGVsM0QgPSB0cnVlO1xyXG4gICAgcmVxdWVzdC5jdXN0b21CQ0JFQk9JZCA9IGN1c3RvbWJjYmVib2lkO1xyXG5cclxuICAgIGlmICh0aGlzLlN0YXRpc3RpY3NTZXJ2aWNlLkFjdGl2ZSkge1xyXG4gICAgICBpZiAodGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbD8uc2VsZWN0ZWRQcm9kdWN0ICE9IG51bGwpIHtcclxuICAgICAgICB0aGlzLlN0YXRpc3RpY3NTZXJ2aWNlLkRvd25sb2FkRmlsZShyZXF1ZXN0LmZpbGVUeXBlLCB0aGlzLlRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWVQcm9kdWN0KHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2VsZWN0ZWRQcm9kdWN0LmlkKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLkZhYnJpa2FudGVuQXBpQ2xpZW50LmdldEZhYnJpa2FudGVuRmlsZVZpZXdNb2RlbChyZXF1ZXN0KS5zdWJzY3JpYmUoKG1vZGVsOiBGYWJyaWthbnRlbkZpbGVWaWV3TW9kZWwpID0+IHtcclxuICAgICAgdGhpcy5TdGFydERvd25sb2FkKG1vZGVsLmZpbGUgKyBcIlwiLCBcIi5kd2dcIik7XHJcbiAgICAgIHRoaXMuRG93bmxvYWQzREF1dG9DQUREd2dMb2FkaW5nID0gZmFsc2U7XHJcbiAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAwKVxyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yLmpzb24oKSk7XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIERvd25sb2FkM0REeGYoY3VzdG9tYmNiZWJvaWQ6IG51bWJlciB8IHVuZGVmaW5lZCk6IHZvaWQge1xyXG4gICAgdGhpcy5Eb3dubG9hZDNERHhmTG9hZGluZyA9IHRydWU7XHJcblxyXG4gICAgdmFyIHJlcXVlc3QgPSBuZXcgRmFicmlrYW50ZW5GaWxlUmVxdWVzdE1vZGVsKCk7XHJcblxyXG4gICAgcmVxdWVzdC5zZXNzaW9uSWQgPSB0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsLnNlc3Npb25JZDtcclxuICAgIHJlcXVlc3QuZmlsZVR5cGUgPSBcImR4ZlwiO1xyXG4gICAgcmVxdWVzdC5tb2RlbDNEID0gdHJ1ZTtcclxuICAgIHJlcXVlc3QuY3VzdG9tQkNCRUJPSWQgPSBjdXN0b21iY2JlYm9pZDtcclxuXHJcbiAgICBpZiAodGhpcy5TdGF0aXN0aWNzU2VydmljZS5BY3RpdmUpIHtcclxuICAgICAgaWYgKHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWw/LnNlbGVjdGVkUHJvZHVjdCAhPSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5TdGF0aXN0aWNzU2VydmljZS5Eb3dubG9hZEZpbGUocmVxdWVzdC5maWxlVHlwZSwgdGhpcy5UcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlUHJvZHVjdCh0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsLnNlbGVjdGVkUHJvZHVjdC5pZCkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5GYWJyaWthbnRlbkFwaUNsaWVudC5nZXRGYWJyaWthbnRlbkZpbGVWaWV3TW9kZWwocmVxdWVzdCkuc3Vic2NyaWJlKChtb2RlbDogRmFicmlrYW50ZW5GaWxlVmlld01vZGVsKSA9PiB7XHJcbiAgICAgIHRoaXMuU3RhcnREb3dubG9hZChtb2RlbC5maWxlICsgXCJcIiwgXCIuZHhmXCIpO1xyXG4gICAgICB0aGlzLkRvd25sb2FkM0REeGZMb2FkaW5nID0gZmFsc2U7XHJcbiAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAwKVxyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yLmpzb24oKSk7XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIERvd25sb2FkMkRBdXRvQ0FERHdnKGN1c3RvbWJjYmVib2lkOiBudW1iZXIgfCB1bmRlZmluZWQpOiB2b2lkIHtcclxuICAgIHRoaXMuRG93bmxvYWQyREF1dG9DQUREd2dMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHZhciByZXF1ZXN0ID0gbmV3IEZhYnJpa2FudGVuRmlsZVJlcXVlc3RNb2RlbCgpO1xyXG5cclxuICAgIHJlcXVlc3Quc2Vzc2lvbklkID0gdGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbC5zZXNzaW9uSWQ7XHJcbiAgICByZXF1ZXN0LmZpbGVUeXBlID0gXCJkd2dcIjtcclxuICAgIHJlcXVlc3QubW9kZWwzRCA9IGZhbHNlO1xyXG4gICAgcmVxdWVzdC5jdXN0b21CQ0JFQk9JZCA9IGN1c3RvbWJjYmVib2lkO1xyXG5cclxuICAgIGlmICh0aGlzLlN0YXRpc3RpY3NTZXJ2aWNlLkFjdGl2ZSkge1xyXG4gICAgICBpZiAodGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbD8uc2VsZWN0ZWRQcm9kdWN0ICE9IG51bGwpIHtcclxuICAgICAgICB0aGlzLlN0YXRpc3RpY3NTZXJ2aWNlLkRvd25sb2FkRmlsZShyZXF1ZXN0LmZpbGVUeXBlLCB0aGlzLlRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWVQcm9kdWN0KHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2VsZWN0ZWRQcm9kdWN0LmlkKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLkZhYnJpa2FudGVuQXBpQ2xpZW50LmdldEZhYnJpa2FudGVuRmlsZVZpZXdNb2RlbChyZXF1ZXN0KS5zdWJzY3JpYmUoKG1vZGVsOiBGYWJyaWthbnRlbkZpbGVWaWV3TW9kZWwpID0+IHtcclxuICAgICAgdGhpcy5TdGFydERvd25sb2FkKG1vZGVsLmZpbGUgKyBcIlwiLCBcIi5kd2dcIik7XHJcbiAgICAgIHRoaXMuRG93bmxvYWQyREF1dG9DQUREd2dMb2FkaW5nID0gZmFsc2U7XHJcbiAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAwKVxyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yLmpzb24oKSk7XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIERvd25sb2FkMkREeGYoY3VzdG9tYmNiZWJvaWQ6IG51bWJlciB8IHVuZGVmaW5lZCk6IHZvaWQge1xyXG4gICAgdGhpcy5Eb3dubG9hZDJERHhmTG9hZGluZyA9IHRydWU7XHJcblxyXG4gICAgdmFyIHJlcXVlc3QgPSBuZXcgRmFicmlrYW50ZW5GaWxlUmVxdWVzdE1vZGVsKCk7XHJcblxyXG4gICAgcmVxdWVzdC5zZXNzaW9uSWQgPSB0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsLnNlc3Npb25JZDtcclxuICAgIHJlcXVlc3QuZmlsZVR5cGUgPSBcImR4ZlwiO1xyXG4gICAgcmVxdWVzdC5tb2RlbDNEID0gZmFsc2U7XHJcbiAgICByZXF1ZXN0LmN1c3RvbUJDQkVCT0lkID0gY3VzdG9tYmNiZWJvaWQ7XHJcblxyXG4gICAgaWYgKHRoaXMuU3RhdGlzdGljc1NlcnZpY2UuQWN0aXZlKSB7XHJcbiAgICAgIGlmICh0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsPy5zZWxlY3RlZFByb2R1Y3QgIT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMuU3RhdGlzdGljc1NlcnZpY2UuRG93bmxvYWRGaWxlKHJlcXVlc3QuZmlsZVR5cGUsIHRoaXMuVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZVByb2R1Y3QodGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbC5zZWxlY3RlZFByb2R1Y3QuaWQpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuRmFicmlrYW50ZW5BcGlDbGllbnQuZ2V0RmFicmlrYW50ZW5GaWxlVmlld01vZGVsKHJlcXVlc3QpLnN1YnNjcmliZSgobW9kZWw6IEZhYnJpa2FudGVuRmlsZVZpZXdNb2RlbCkgPT4ge1xyXG4gICAgICB0aGlzLlN0YXJ0RG93bmxvYWQobW9kZWwuZmlsZSArIFwiXCIsIFwiLmR4ZlwiKTtcclxuICAgICAgdGhpcy5Eb3dubG9hZDJERHhmTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMClcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvci5qc29uKCkpO1xyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBjb25zb2xlLmxvZygnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBEb3dubG9hZFJGQShjdXN0b21iY2JlYm9pZDogbnVtYmVyIHwgdW5kZWZpbmVkLCB3ZWJ2aWV3MjogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5Eb3dubG9hZFJGQUxvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgIHZhciByZXF1ZXN0ID0gbmV3IEZhYnJpa2FudGVuRmlsZVJlcXVlc3RNb2RlbCgpO1xyXG5cclxuICAgIHJlcXVlc3Quc2Vzc2lvbklkID0gdGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbC5zZXNzaW9uSWQ7XHJcbiAgICByZXF1ZXN0LmZpbGVUeXBlID0gXCJyZmFcIjtcclxuICAgIHJlcXVlc3QubW9kZWwzRCA9IGZhbHNlO1xyXG4gICAgcmVxdWVzdC53ZWJWaWV3MiA9IHdlYnZpZXcyO1xyXG4gICAgcmVxdWVzdC5jdXN0b21CQ0JFQk9JZCA9IGN1c3RvbWJjYmVib2lkO1xyXG5cclxuICAgIGlmICh0aGlzLlN0YXRpc3RpY3NTZXJ2aWNlLkFjdGl2ZSkge1xyXG4gICAgICBpZiAodGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbD8uc2VsZWN0ZWRQcm9kdWN0ICE9IG51bGwpIHtcclxuICAgICAgICB0aGlzLlN0YXRpc3RpY3NTZXJ2aWNlLkRvd25sb2FkRmlsZShyZXF1ZXN0LmZpbGVUeXBlLCB0aGlzLlRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWVQcm9kdWN0KHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2VsZWN0ZWRQcm9kdWN0LmlkKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLkZhYnJpa2FudGVuQXBpQ2xpZW50LmdldEZhYnJpa2FudGVuRmlsZVZpZXdNb2RlbChyZXF1ZXN0KS5zdWJzY3JpYmUoKG1vZGVsOiBGYWJyaWthbnRlbkZpbGVWaWV3TW9kZWwpID0+IHtcclxuICAgICAgaWYgKG1vZGVsLmN1c3RvbVJGQVppcCkge1xyXG4gICAgICAgIGlmICh0aGlzLklzSW5XZWJWaWV3QnJvd3NlcigpKSB7XHJcbiAgICAgICAgICB0aGlzLlBvc3RXZWJ2aWV3Mk1lc3NhZ2UobW9kZWwpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuU3RhcnREb3dubG9hZChtb2RlbC5maWxlICsgXCJcIiwgXCIuemlwXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBpZiAobW9kZWwucnZ0RXh0ZW5zaW9uKSB7XHJcbiAgICAgICAgICB0aGlzLlN0YXJ0RG93bmxvYWQobW9kZWwuZmlsZSArIFwiXCIsIFwiLnJ2dFwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc0luV2ViVmlld0Jyb3dzZXIoKSkge1xyXG4gICAgICAgICAgICB0aGlzLlBvc3RXZWJ2aWV3Mk1lc3NhZ2UobW9kZWwpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuU3RhcnREb3dubG9hZChtb2RlbC5maWxlICsgXCJcIiwgXCIucmZhXCIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLkRvd25sb2FkUkZBTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMClcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvci5qc29uKCkpO1xyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBjb25zb2xlLmxvZygnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBQb3N0V2VidmlldzJNZXNzYWdlKG1vZGVsOiBGYWJyaWthbnRlbkZpbGVWaWV3TW9kZWwpOiB2b2lkIHtcclxuICAgIHZhciBhY3Rpb24gPSBcImRvd25sb2FkXCI7XHJcbiAgICB2YXIgZmlsZSA9IG1vZGVsLmZpbGUgKyBcIlwiO1xyXG4gICAgdmFyIGZpbGVuYW1lID0gdGhpcy5Db2xsZWN0RmlsZU5hbWUoKTtcclxuICAgIHZhciBwYXJhbWV0ZXJzbmFtZXMgPSBtb2RlbC5yZXZpdFBhcmFtZXRlcnNOYW1lcztcclxuICAgIHZhciBwYXJhbWV0ZXJzdmFsdWVzID0gbW9kZWwucmV2aXRQYXJhbWV0ZXJzVmFsdWVzO1xyXG5cclxuICAgIHdpbmRvdy5jaHJvbWUud2Vidmlldy5wb3N0TWVzc2FnZSh7IGFjdGlvbiwgZmlsZSwgZmlsZW5hbWUsIHBhcmFtZXRlcnNuYW1lcywgcGFyYW1ldGVyc3ZhbHVlcyB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBJc0luV2ViVmlld0Jyb3dzZXIoKTogYm9vbGVhbiB7XHJcblxyXG4gICAgaWYgKHdpbmRvdyAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgaWYgKHdpbmRvdy5jaHJvbWUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgaWYgKHdpbmRvdy5jaHJvbWUud2VidmlldyAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTdGFydERvd25sb2FkKHVybDogc3RyaW5nLCBleHRlbnNpb246IHN0cmluZyk6IHZvaWQge1xyXG5cclxuICAgIHZhciBmaWxlbmFtZSA9IHRoaXMuQ29sbGVjdEZpbGVOYW1lKCk7XHJcblxyXG4gICAgaWYgKHRoaXMuRmFicmlrYW50ZW5TZXR0aW5nc1ZpZXdNb2RlbC5kaXNhYmxlQ3VzdG9tRmlsZU5hbWVzKSB7XHJcbiAgICAgIGZpbGVuYW1lID0gdXJsLnN1YnN0cmluZyh1cmwubGFzdEluZGV4T2YoJ1xcXFwnKSArIDEpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChmaWxlbmFtZSAhPSBcIlwiKSB7XHJcbiAgICAgIGZpbGVuYW1lID0gZmlsZW5hbWUgKyBleHRlbnNpb247XHJcblxyXG4gICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IFwiL0Rvd25sb2FkL0Rvd25sb2FkP3BVcmw9XCIgKyB1cmwgKyBcIiZwRmlsZU5hbWU9XCIgKyBmaWxlbmFtZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBhbGVydCgnZXJyb3I6IG5vIHByb2R1Y3Qgc2VsZWN0ZWQnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBEb3dubG9hZEJlc3RlayhkYXRhOiBzdHJpbmcpIHtcclxuXHJcbiAgICBpZiAodGhpcy5CZXN0ZWtTZXJ2aWNlLlR5cGVCZXN0ZWsgPT0gXCJTVEFCVVwiKSB7XHJcbiAgICAgIHRoaXMuRG93bmxvYWRCZXN0ZWtJbm5lcihkYXRhLCBcIi5TMDFcIik7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuQmVzdGVrU2VydmljZS5UeXBlQmVzdGVrID09IFwiT1NGXCIpIHtcclxuICAgICAgdGhpcy5Eb3dubG9hZEJlc3Rla0lubmVyKGRhdGEsIFwiLnR4dFwiKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5CZXN0ZWtTZXJ2aWNlLlR5cGVCZXN0ZWsgPT0gXCJWcmlqXCIpIHtcclxuICAgICAgdGhpcy5Eb3dubG9hZEJlc3Rla0lubmVyKGRhdGEsIFwiLnR4dFwiKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5TdGF0aXN0aWNzU2VydmljZS5BY3RpdmUpIHtcclxuICAgICAgaWYgKHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWw/LnNlbGVjdGVkUHJvZHVjdCAhPSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5TdGF0aXN0aWNzU2VydmljZS5Eb3dubG9hZEZpbGUoXCJiZXN0ZWtcIiwgdGhpcy5UcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlUHJvZHVjdCh0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsLnNlbGVjdGVkUHJvZHVjdC5pZCkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIERvd25sb2FkQmVzdGVrSW5uZXIoZGF0YTogc3RyaW5nLCBleHRlbnNpb246IHN0cmluZykge1xyXG4gICAgdmFyIGMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtcclxuICAgIGMuZG93bmxvYWQgPSB0aGlzLkNvbGxlY3RGaWxlTmFtZSgpICsgZXh0ZW5zaW9uO1xyXG5cclxuICAgIHZhciB0ID0gbmV3IEJsb2IoW2RhdGFdLCB7XHJcbiAgICAgIHR5cGU6IFwidGV4dC9wbGFpblwiXHJcbiAgICB9KTtcclxuICAgIGMuaHJlZiA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKHQpO1xyXG4gICAgYy5jbGljaygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBDb2xsZWN0RmlsZU5hbWUoKTogc3RyaW5nIHtcclxuICAgIHZhciBmaWxlbmFtZSA9IFwiXCI7XHJcblxyXG4gICAgaWYgKHRoaXMuU2VsZWN0ZWRUYWIgPT0gXCIzRFwiKSB7XHJcbiAgICAgIGlmICh0aGlzLldlYkdMU2VydmljZS5GYWJyaWthbnRlbjNEVmlld01vZGVsICE9IG51bGwpIHtcclxuICAgICAgICBmaWxlbmFtZSA9IHRoaXMuV2ViR0xTZXJ2aWNlLkZhYnJpa2FudGVuM0RWaWV3TW9kZWwuaW5zdGFudGllTmFhbSArIFwiXCI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5TZWxlY3RlZFRhYiA9PSBcIjJEXCIpIHtcclxuICAgICAgaWYgKHRoaXMuU1ZHU2VydmljZS5GYWJyaWthbnRlblNWR1ZpZXdNb2RlbCAhPSBudWxsKSB7XHJcbiAgICAgICAgZmlsZW5hbWUgPSB0aGlzLlNWR1NlcnZpY2UuRmFicmlrYW50ZW5TVkdWaWV3TW9kZWwuaW5zdGFudGllTmFhbSArIFwiXCI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5TZWxlY3RlZFRhYiA9PSBcIkJlc3Rla1wiKSB7XHJcbiAgICAgIGlmICh0aGlzLkJlc3Rla1NlcnZpY2UuRmFicmlrYW50ZW5CZXN0ZWtWaWV3TW9kZWwgIT0gbnVsbCkge1xyXG4gICAgICAgIGZpbGVuYW1lID0gdGhpcy5CZXN0ZWtTZXJ2aWNlLkZhYnJpa2FudGVuQmVzdGVrVmlld01vZGVsLmluc3RhbnRpZU5hYW0gKyBcIlwiO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuU2VsZWN0ZWRUYWIgPT0gXCJUb2ViZWhvcmVuXCIpIHtcclxuICAgICAgaWYgKHRoaXMuR2V0U2VsZWN0ZWRUb2ViZWhvcmVuKCkgIT0gbnVsbCkge1xyXG4gICAgICAgIGZpbGVuYW1lID0gdGhpcy5HZXRTZWxlY3RlZFRvZWJlaG9yZW4oKT8ubmFtZSArIFwiXCI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoZmlsZW5hbWUgPT0gXCJcIiAmJiB0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsPy5zZWxlY3RlZFByb2R1Y3Q/LmlkICE9IG51bGwpIHtcclxuICAgICAgdmFyIGlkID0gdGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbD8uc2VsZWN0ZWRQcm9kdWN0Py5pZDtcclxuXHJcbiAgICAgIGZpbGVuYW1lID0gdGhpcy5UcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlUHJvZHVjdChpZCk7XHJcbiAgICB9XHJcblxyXG4gICAgZmlsZW5hbWUgPSBmaWxlbmFtZS5yZXBsYWNlKC9bXmEtejAtOV0vZ2ksICdfJyk7XHJcblxyXG4gICAgcmV0dXJuIGZpbGVuYW1lO1xyXG4gIH1cclxuXHJcbiAgLy8gUmVsb2Fkc1xyXG5cclxuICBwcml2YXRlIFRyaWdnZXJSZWxvYWRzKENoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZik6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLlNob3dSZXF1aXJlZCgpKSB7XHJcbiAgICAgIHZhciBhcnJheSA9IHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2VsZWN0ZWRQcm9kdWN0Py5mYWJyaWthbnRlbkJDQlByb2R1Y3RWaWV3TW9kZWxzO1xyXG5cclxuICAgICAgaWYgKGFycmF5ICE9IG51bGwgJiYgKGFycmF5Lmxlbmd0aCA9PSAxIHx8IHRoaXMuRmFicmlrYW50ZW5TZXR0aW5nc1ZpZXdNb2RlbC5hbHdheXNTaG93VmFyaWFudCkpIHtcclxuICAgICAgICBpZiAodGhpcy5TZWxlY3RlZFRhYiA9PSBcIkJlc3Rla1wiKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbC5jaGVja3N1bSAhPSB0aGlzLkJlc3Rla1NlcnZpY2UuRmFicmlrYW50ZW5CZXN0ZWtWaWV3TW9kZWw/LmNoZWNrc3VtKSB7XHJcbiAgICAgICAgICAgIHRoaXMuQmVzdGVrU2VydmljZS5Mb2FkRmFicmlrYW50ZW5CZXN0ZWtWaWV3TW9kZWwodGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbC5zZXNzaW9uSWQgYXMgc3RyaW5nLCBDaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMuU2VsZWN0ZWRUYWIgPT0gXCIzRFwiKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbC5jaGVja3N1bSAhPSB0aGlzLldlYkdMU2VydmljZS5GYWJyaWthbnRlbjNEVmlld01vZGVsPy5jaGVja3N1bSkge1xyXG4gICAgICAgICAgICB0aGlzLldlYkdMU2VydmljZS5Mb2FkRmFicmlrYW50ZW4zRFZpZXdNb2RlbCh0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsLnNlc3Npb25JZCBhcyBzdHJpbmcsIENoYW5nZURldGVjdG9yUmVmKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5TZWxlY3RlZFRhYiA9PSBcIjJEXCIpIHtcclxuICAgICAgICAgIGlmICh0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsLmNoZWNrc3VtICE9IHRoaXMuU1ZHU2VydmljZS5GYWJyaWthbnRlblNWR1ZpZXdNb2RlbD8uY2hlY2tzdW0pIHtcclxuICAgICAgICAgICAgdGhpcy5TVkdTZXJ2aWNlLkxvYWRGYWJyaWthbnRlblNWR1ZpZXdNb2RlbCh0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsLnNlc3Npb25JZCBhcyBzdHJpbmcsIENoYW5nZURldGVjdG9yUmVmKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5TZWxlY3RlZFRhYiA9PSBcIlRleHR1cmVcIikge1xyXG4gICAgICAgICAgdGhpcy5UZXh0dXJlU2VydmljZS5Mb2FkRmFicmlrYW50ZW5UZXh0dXJlVmlld01vZGVsKHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2Vzc2lvbklkIGFzIHN0cmluZywgQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0aGlzLlNlbGVjdGVkVGFiID09IFwiVG9lYmVob3JlblwiKSB7XHJcbiAgICAgICAgICAvL3RoaXMuVG9lYmVob3JlblNlcnZpY2UuTG9hZEZhYnJpa2FudGVuVG9lYmVob3JlblZpZXdNb2RlbCh0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsLnNlc3Npb25JZCBhcyBzdHJpbmcsIENoYW5nZURldGVjdG9yUmVmKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIEJyZWFkY3J1bWJcclxuXHJcbiAgcHVibGljIEdldFN0ZXBzKCk6IEFycmF5PEZhYnJpa2FudGVuQ2F0ZWdvcnlWaWV3TW9kZWw+IHtcclxuICAgIHZhciByZXR1cm5hcnJheSA9IG5ldyBBcnJheTxGYWJyaWthbnRlbkNhdGVnb3J5Vmlld01vZGVsPigpO1xyXG5cclxuICAgIHZhciBhcnJheSA9IHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWw/LmNhdGVnb3J5TGF5ZXJzO1xyXG5cclxuICAgIGlmIChhcnJheSAhPSBudWxsKSB7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoYXJyYXlbaV0uc2VsZWN0ZWRPcHRpb24gIT0gMCkge1xyXG4gICAgICAgICAgdmFyIG9wdGlvbnMgPSBhcnJheVtpXS5jYXRlZ29yaWVzO1xyXG5cclxuICAgICAgICAgIGlmIChvcHRpb25zICE9IG51bGwpIHtcclxuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBvcHRpb25zLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgICAgaWYgKG9wdGlvbnNbal0uaWQgPT09IGFycmF5W2ldLnNlbGVjdGVkT3B0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm5hcnJheS5wdXNoKG9wdGlvbnNbal0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXR1cm5hcnJheTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRTZWxlY3RlZFRvZWJlaG9yZW4oKTogRmFicmlrYW50ZW5CQ0JQcm9kdWN0VG9lYmVob3JlblZpZXdNb2RlbCB8IG51bGwge1xyXG4gICAgdmFyIHRvZWJlaG9yZW46IEZhYnJpa2FudGVuQkNCUHJvZHVjdFRvZWJlaG9yZW5WaWV3TW9kZWwgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2VsZWN0ZWRQcm9kdWN0Py5mYWJyaWthbnRlbkJDQlByb2R1Y3RWaWV3TW9kZWxzICE9IG51bGwgJiZcclxuICAgICAgdGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbC5zZWxlY3RlZFByb2R1Y3QuZmFicmlrYW50ZW5CQ0JQcm9kdWN0Vmlld01vZGVscy5sZW5ndGggPiAwICYmXHJcbiAgICAgIHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2VsZWN0ZWRQcm9kdWN0LmZhYnJpa2FudGVuQkNCUHJvZHVjdFZpZXdNb2RlbHNbMF0uYmNiUHJvZHVjdFRvZWJlaG9yZW4gIT0gbnVsbCAmJlxyXG4gICAgICB0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsLnNlbGVjdGVkUHJvZHVjdC5mYWJyaWthbnRlbkJDQlByb2R1Y3RWaWV3TW9kZWxzWzBdLmJjYlByb2R1Y3RUb2ViZWhvcmVuLmxlbmd0aCA+IDApIHtcclxuXHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbC5zZWxlY3RlZFByb2R1Y3QuZmFicmlrYW50ZW5CQ0JQcm9kdWN0Vmlld01vZGVsc1swXS5iY2JQcm9kdWN0VG9lYmVob3Jlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmICh0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsLnNlbGVjdGVkUHJvZHVjdC5mYWJyaWthbnRlbkJDQlByb2R1Y3RWaWV3TW9kZWxzWzBdLmJjYlByb2R1Y3RUb2ViZWhvcmVuW2ldLmlkID09IHRoaXMuU2VsZWN0ZWRUb2ViZWhvcmVuPy5pZCkge1xyXG4gICAgICAgICAgdG9lYmVob3JlbiA9IHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2VsZWN0ZWRQcm9kdWN0LmZhYnJpa2FudGVuQkNCUHJvZHVjdFZpZXdNb2RlbHNbMF0uYmNiUHJvZHVjdFRvZWJlaG9yZW5baV07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRvZWJlaG9yZW47XHJcbiAgfVxyXG59XHJcbiJdfQ==
|