@openziti/ziti-console-lib 0.3.0
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/README.md +24 -0
- package/assets/animations/ConstructionZiggy.json +15233 -0
- package/assets/animations/HelloZiggy.json +10008 -0
- package/assets/animations/SmartZiggy.json +9488 -0
- package/assets/components/add.html +1 -0
- package/assets/components/api.html +12 -0
- package/assets/components/customtags.html +4 -0
- package/assets/components/line.html +1 -0
- package/assets/components/noitems.html +1 -0
- package/assets/components/save.html +4 -0
- package/assets/components/search.html +8 -0
- package/assets/components/tabIdentities.html +6 -0
- package/assets/components/tabPolicies.html +7 -0
- package/assets/components/tabRouters.html +5 -0
- package/assets/components/tabServers.html +4 -0
- package/assets/components/tabServices.html +5 -0
- package/assets/components/tabSessions.html +4 -0
- package/assets/data/mail.json +0 -0
- package/assets/data/services.json +6 -0
- package/assets/data/settings.json +25 -0
- package/assets/data/site.json +31 -0
- package/assets/data/tags.json +7 -0
- package/assets/data/templates.json +1 -0
- package/assets/fonts/OpenSans-Regular.ttf +0 -0
- package/assets/fonts/OpenSans-Regular.woff +0 -0
- package/assets/fonts/OpenSans-Regular.woff2 +0 -0
- package/assets/fonts/RussoOne-Regular.ttf +0 -0
- package/assets/fonts/RussoOne-Regular.woff +0 -0
- package/assets/fonts/RussoOne-Regular.woff2 +0 -0
- package/assets/fonts/zac.eot +0 -0
- package/assets/fonts/zac.svg +55 -0
- package/assets/fonts/zac.ttf +0 -0
- package/assets/fonts/zac.woff +0 -0
- package/assets/fonts/zac.woff2 +0 -0
- package/assets/html/api-sessions.htm +153 -0
- package/assets/html/attributes.htm +260 -0
- package/assets/html/auth-policies.htm +410 -0
- package/assets/html/cas.htm +445 -0
- package/assets/html/config-types.htm +168 -0
- package/assets/html/configs.htm +238 -0
- package/assets/html/deprecated/fabric-links.htm +336 -0
- package/assets/html/deprecated/fabric-routers.htm +72 -0
- package/assets/html/deprecated/fabric-services.htm +494 -0
- package/assets/html/identities.htm +934 -0
- package/assets/html/index.htm +161 -0
- package/assets/html/jwt-signers.htm +260 -0
- package/assets/html/known.htm +115 -0
- package/assets/html/login.htm +131 -0
- package/assets/html/organization.htm +223 -0
- package/assets/html/posture-checks.htm +393 -0
- package/assets/html/profile.htm +52 -0
- package/assets/html/recipes.htm +455 -0
- package/assets/html/router-policies.htm +168 -0
- package/assets/html/routers.htm +323 -0
- package/assets/html/servers.htm +236 -0
- package/assets/html/service-policies.htm +197 -0
- package/assets/html/service-router-policies.htm +170 -0
- package/assets/html/services.htm +634 -0
- package/assets/html/sessions.htm +157 -0
- package/assets/html/settings.htm +146 -0
- package/assets/html/terminators.htm +244 -0
- package/assets/html/transit-routers.htm +173 -0
- package/assets/icons/android-icon-192x192.png +0 -0
- package/assets/icons/apple-icon-114x114.png +0 -0
- package/assets/icons/apple-icon-120x120.png +0 -0
- package/assets/icons/apple-icon-144x144.png +0 -0
- package/assets/icons/apple-icon-152x152.png +0 -0
- package/assets/icons/apple-icon-180x180.png +0 -0
- package/assets/icons/apple-icon-57x57.png +0 -0
- package/assets/icons/apple-icon-60x60.png +0 -0
- package/assets/icons/apple-icon-72x72.png +0 -0
- package/assets/icons/apple-icon-76x76.png +0 -0
- package/assets/icons/apple-icon-precomposed.png +0 -0
- package/assets/icons/favicon-16x16.png +0 -0
- package/assets/icons/favicon-32x32.png +0 -0
- package/assets/icons/favicon-96x96.png +0 -0
- package/assets/icons/favicon.ico +0 -0
- package/assets/icons/ms-icon-144x144.png +0 -0
- package/assets/images/Filter.png +0 -0
- package/assets/images/Login.jpg +0 -0
- package/assets/images/SortDown.png +0 -0
- package/assets/images/SortUp.png +0 -0
- package/assets/images/android.png +0 -0
- package/assets/images/anywhere.png +0 -0
- package/assets/images/apple.png +0 -0
- package/assets/images/bug.png +0 -0
- package/assets/images/check.png +0 -0
- package/assets/images/error.png +0 -0
- package/assets/images/info.png +0 -0
- package/assets/images/linux.png +0 -0
- package/assets/images/other.png +0 -0
- package/assets/images/scrollbar.png +0 -0
- package/assets/images/select.png +0 -0
- package/assets/images/success.png +0 -0
- package/assets/images/visualizer/ER.png +0 -0
- package/assets/images/visualizer/Routers.png +0 -0
- package/assets/images/visualizer/er_error.png +0 -0
- package/assets/images/visualizer/error_er.png +0 -0
- package/assets/images/visualizer/host-error.png +0 -0
- package/assets/images/visualizer/host.png +0 -0
- package/assets/images/visualizer/host_unregistered.png +0 -0
- package/assets/images/visualizer/link-cut.png +0 -0
- package/assets/images/visualizer/service.png +0 -0
- package/assets/images/visualizer/unregistered.png +0 -0
- package/assets/images/warning.png +0 -0
- package/assets/images/windows.png +0 -0
- package/assets/languages/en-us.json +330 -0
- package/assets/resources/avatar/man.svg +78 -0
- package/assets/resources/avatar/woman.svg +96 -0
- package/assets/resources/icon/analysis.svg +104 -0
- package/assets/resources/icon/appwans.svg +20 -0
- package/assets/resources/icon/architecture.svg +1 -0
- package/assets/resources/icon/bike.svg +94 -0
- package/assets/resources/icon/bus.svg +64 -0
- package/assets/resources/icon/cas.svg +46 -0
- package/assets/resources/icon/clusters.svg +28 -0
- package/assets/resources/icon/computer.svg +1 -0
- package/assets/resources/icon/data.svg +1 -0
- package/assets/resources/icon/delivery-truck.svg +1 -0
- package/assets/resources/icon/explosion.svg +81 -0
- package/assets/resources/icon/fabricServices.svg +31 -0
- package/assets/resources/icon/fabrics.svg +136 -0
- package/assets/resources/icon/front.svg +83 -0
- package/assets/resources/icon/gateway.svg +49 -0
- package/assets/resources/icon/gear.svg +122 -0
- package/assets/resources/icon/house.svg +72 -0
- package/assets/resources/icon/language.svg +1 -0
- package/assets/resources/icon/objective.svg +55 -0
- package/assets/resources/icon/route.svg +97 -0
- package/assets/resources/icon/routers.svg +27 -0
- package/assets/resources/icon/startup.svg +112 -0
- package/assets/resources/icon/switch.svg +101 -0
- package/assets/scripts/chart.min.js +7 -0
- package/assets/scripts/commands.js +112 -0
- package/assets/scripts/components/codemirror/codemirror.css +356 -0
- package/assets/scripts/components/codemirror/codemirror.js +9741 -0
- package/assets/scripts/components/codemirror/modes/addons/closetags.js +200 -0
- package/assets/scripts/components/codemirror/modes/addons/colorize.js +40 -0
- package/assets/scripts/components/codemirror/modes/addons/css-hint.js +66 -0
- package/assets/scripts/components/codemirror/modes/addons/formatting.js +124 -0
- package/assets/scripts/components/codemirror/modes/addons/html-hint.js +366 -0
- package/assets/scripts/components/codemirror/modes/addons/javascript-hint.js +159 -0
- package/assets/scripts/components/codemirror/modes/addons/show-hint.css +36 -0
- package/assets/scripts/components/codemirror/modes/addons/show-hint.js +482 -0
- package/assets/scripts/components/codemirror/modes/css.js +831 -0
- package/assets/scripts/components/codemirror/modes/htmlmixed.js +152 -0
- package/assets/scripts/components/codemirror/modes/javascript.js +930 -0
- package/assets/scripts/components/codemirror/modes/xml.js +413 -0
- package/assets/scripts/components/column.css +184 -0
- package/assets/scripts/components/column.js +165 -0
- package/assets/scripts/components/flows.css +0 -0
- package/assets/scripts/components/flows.js +48 -0
- package/assets/scripts/components/leaflet/images/layers-2x.png +0 -0
- package/assets/scripts/components/leaflet/images/layers.png +0 -0
- package/assets/scripts/components/leaflet/images/marker-icon-2x.png +0 -0
- package/assets/scripts/components/leaflet/images/marker-icon.png +0 -0
- package/assets/scripts/components/leaflet/images/marker-shadow.png +0 -0
- package/assets/scripts/components/leaflet/leaflet-src.esm.js +13926 -0
- package/assets/scripts/components/leaflet/leaflet-src.esm.js.map +1 -0
- package/assets/scripts/components/leaflet/leaflet-src.js +14020 -0
- package/assets/scripts/components/leaflet/leaflet-src.js.map +1 -0
- package/assets/scripts/components/leaflet/leaflet.css +640 -0
- package/assets/scripts/components/leaflet/leaflet.js +5 -0
- package/assets/scripts/components/leaflet/leaflet.js.map +1 -0
- package/assets/scripts/components/moment.js +4602 -0
- package/assets/scripts/components/multiselect.js +333 -0
- package/assets/scripts/components/network/img/network/acceptDeleteIcon.png +0 -0
- package/assets/scripts/components/network/img/network/addNodeIcon.png +0 -0
- package/assets/scripts/components/network/img/network/backIcon.png +0 -0
- package/assets/scripts/components/network/img/network/connectIcon.png +0 -0
- package/assets/scripts/components/network/img/network/cross.png +0 -0
- package/assets/scripts/components/network/img/network/cross2.png +0 -0
- package/assets/scripts/components/network/img/network/deleteIcon.png +0 -0
- package/assets/scripts/components/network/img/network/downArrow.png +0 -0
- package/assets/scripts/components/network/img/network/editIcon.png +0 -0
- package/assets/scripts/components/network/img/network/leftArrow.png +0 -0
- package/assets/scripts/components/network/img/network/minus.png +0 -0
- package/assets/scripts/components/network/img/network/plus.png +0 -0
- package/assets/scripts/components/network/img/network/rightArrow.png +0 -0
- package/assets/scripts/components/network/img/network/upArrow.png +0 -0
- package/assets/scripts/components/network/img/network/zoomExtends.png +0 -0
- package/assets/scripts/components/network/types/DOMutil.d.ts +99 -0
- package/assets/scripts/components/network/types/index-legacy-bundle.d.ts +4 -0
- package/assets/scripts/components/network/types/index-legacy-bundle.d.ts.map +1 -0
- package/assets/scripts/components/network/types/index-legacy.d.ts +24 -0
- package/assets/scripts/components/network/types/index-legacy.d.ts.map +1 -0
- package/assets/scripts/components/network/types/index-peer.d.ts +11 -0
- package/assets/scripts/components/network/types/index-peer.d.ts.map +1 -0
- package/assets/scripts/components/network/types/index-standalone.d.ts +7 -0
- package/assets/scripts/components/network/types/index-standalone.d.ts.map +1 -0
- package/assets/scripts/components/network/types/module/hammer.d.ts +2 -0
- package/assets/scripts/components/network/types/module/moment.d.ts +2 -0
- package/assets/scripts/components/network/types/network/Images.d.ts +2 -0
- package/assets/scripts/components/network/types/network/Network.d.ts +1030 -0
- package/assets/scripts/components/network/types/network/dotparser.d.ts +2 -0
- package/assets/scripts/components/network/types/network/gephiParser.d.ts +80 -0
- package/assets/scripts/components/network/types/network/gephiParser.d.ts.map +1 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/bezier-edge-dynamic.d.ts +55 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/bezier-edge-dynamic.d.ts.map +1 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/bezier-edge-static.d.ts +37 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/bezier-edge-static.d.ts.map +1 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/cubic-bezier-edge.d.ts +32 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/cubic-bezier-edge.d.ts.map +1 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/index.d.ts +10 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/index.d.ts.map +1 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/straight-edge.d.ts +26 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/straight-edge.d.ts.map +1 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/util/bezier-edge-base.d.ts +68 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/util/bezier-edge-base.d.ts.map +1 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/util/cubic-bezier-edge-base.d.ts +38 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/util/cubic-bezier-edge-base.d.ts.map +1 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/util/edge-base.d.ts +248 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/util/edge-base.d.ts.map +1 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/util/end-points.d.ts +58 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/util/end-points.d.ts.map +1 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/util/types.d.ts +196 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/util/types.d.ts.map +1 -0
- package/assets/scripts/components/network/types/network/modules/layout-engine/index.d.ts +32 -0
- package/assets/scripts/components/network/types/network/modules/layout-engine/index.d.ts.map +1 -0
- package/assets/scripts/components/network/types/network/options.d.ts +2 -0
- package/assets/scripts/components/network/types/network/shapes.d.ts +122 -0
- package/assets/scripts/components/network/types/network/shapes.d.ts.map +1 -0
- package/assets/scripts/components/network/vis-network.css +716 -0
- package/assets/scripts/components/network/vis-network.esm.js +58974 -0
- package/assets/scripts/components/network/vis-network.esm.js.map +1 -0
- package/assets/scripts/components/network/vis-network.esm.min.js +53 -0
- package/assets/scripts/components/network/vis-network.esm.min.js.map +1 -0
- package/assets/scripts/components/network/vis-network.js +58994 -0
- package/assets/scripts/components/network/vis-network.js.map +1 -0
- package/assets/scripts/components/network/vis-network.min.css +1 -0
- package/assets/scripts/components/network/vis-network.min.js +53 -0
- package/assets/scripts/components/network/vis-network.min.js.map +1 -0
- package/assets/scripts/components/qrcode.min.js +1 -0
- package/assets/scripts/components/resources.js +26 -0
- package/assets/scripts/components/selector-new.js +300 -0
- package/assets/scripts/components/selector.js +300 -0
- package/assets/scripts/components/spectrum.js +2323 -0
- package/assets/scripts/components/timezone.js +1545 -0
- package/assets/scripts/components/uploader.js +74 -0
- package/assets/scripts/context.js +177 -0
- package/assets/scripts/dragging.js +58 -0
- package/assets/scripts/forms/forms.js +74 -0
- package/assets/scripts/forms/host.v1.htm +43 -0
- package/assets/scripts/forms/intercept.v1.htm +0 -0
- package/assets/scripts/forms/schema.js +693 -0
- package/assets/scripts/growler.js +133 -0
- package/assets/scripts/header.js +163 -0
- package/assets/scripts/jquery-3.6.3.min.js +2 -0
- package/assets/scripts/jquery.datetimepicker.js +2930 -0
- package/assets/scripts/locale.js +47 -0
- package/assets/scripts/modal.js +65 -0
- package/assets/scripts/model/data.js +558 -0
- package/assets/scripts/model/fabric.js +55 -0
- package/assets/scripts/model/fabricServices.js +45 -0
- package/assets/scripts/model/known.js +43 -0
- package/assets/scripts/model/links.js +44 -0
- package/assets/scripts/model/routers.js +51 -0
- package/assets/scripts/model/series.js +70 -0
- package/assets/scripts/model/sessions.js +61 -0
- package/assets/scripts/model/settings.js +60 -0
- package/assets/scripts/model/summary.js +49 -0
- package/assets/scripts/model/tags.js +330 -0
- package/assets/scripts/model/templates.js +42 -0
- package/assets/scripts/model/user.js +40 -0
- package/assets/scripts/restrictions.js +34 -0
- package/assets/scripts/service.js +76 -0
- package/assets/scripts/validation-tools.js +5119 -0
- package/assets/scripts/ziti.js +372 -0
- package/assets/styles/chart.min.css +1 -0
- package/assets/styles/dark.css +52 -0
- package/assets/styles/datetimepicker.css +1 -0
- package/assets/styles/forms.css +521 -0
- package/assets/styles/global.scss +890 -0
- package/assets/styles/growler.css +190 -0
- package/assets/styles/header.css +232 -0
- package/assets/styles/icons.css +160 -0
- package/assets/styles/navigation.css +183 -0
- package/assets/styles/select2.css +481 -0
- package/assets/styles/spectrum.css +507 -0
- package/assets/styles/tables.css +424 -0
- package/assets/styles/tooltip.css +134 -0
- package/assets/styles/ziti.css +3216 -0
- package/assets/svgs/Advanced.svg +89 -0
- package/assets/svgs/ArrowDown.svg +15 -0
- package/assets/svgs/ArrowDownDark.svg +15 -0
- package/assets/svgs/Confirm_Trash.svg +42 -0
- package/assets/svgs/DownloadKey.svg +50 -0
- package/assets/svgs/Filter.svg +13 -0
- package/assets/svgs/Growl_Bug.svg +47 -0
- package/assets/svgs/Growl_Error.svg +41 -0
- package/assets/svgs/Growl_Info.svg +45 -0
- package/assets/svgs/Growl_Success.svg +34 -0
- package/assets/svgs/Growl_Warning.svg +44 -0
- package/assets/svgs/MainMenuBlankUser.svg +14 -0
- package/assets/svgs/MainMenuNetworks.svg +37 -0
- package/assets/svgs/MainMenuNotifications.svg +32 -0
- package/assets/svgs/MainMenuOrg.svg +68 -0
- package/assets/svgs/MainMenuPlus.svg +13 -0
- package/assets/svgs/MainMenuSearch.svg +22 -0
- package/assets/svgs/MainMenuSupport.svg +417 -0
- package/assets/svgs/No_Clients.svg +94 -0
- package/assets/svgs/No_Plus.svg +30 -0
- package/assets/svgs/No_Routers.svg +56 -0
- package/assets/svgs/Resize.svg +33 -0
- package/assets/svgs/Simple.svg +62 -0
- package/assets/svgs/appwans.svg +20 -0
- package/assets/svgs/cas.svg +46 -0
- package/assets/svgs/cert.svg +69 -0
- package/assets/svgs/clear.svg +13 -0
- package/assets/svgs/close.svg +14 -0
- package/assets/svgs/clusters.svg +28 -0
- package/assets/svgs/copy.svg +64 -0
- package/assets/svgs/dashboard.svg +32 -0
- package/assets/svgs/dial.svg +83 -0
- package/assets/svgs/docs.svg +95 -0
- package/assets/svgs/downloads.svg +74 -0
- package/assets/svgs/fabricServices.svg +31 -0
- package/assets/svgs/fabrics.svg +134 -0
- package/assets/svgs/gateways.svg +49 -0
- package/assets/svgs/heart.svg +1 -0
- package/assets/svgs/ids.svg +20 -0
- package/assets/svgs/infoicon.svg +14 -0
- package/assets/svgs/lock.svg +12 -0
- package/assets/svgs/minus.svg +11 -0
- package/assets/svgs/nodata.svg +27 -0
- package/assets/svgs/qr.svg +56 -0
- package/assets/svgs/refresh.svg +24 -0
- package/assets/svgs/routers.svg +31 -0
- package/assets/svgs/select.svg +18 -0
- package/assets/svgs/services.svg +19 -0
- package/assets/svgs/settings.svg +1 -0
- package/assets/svgs/upload.svg +55 -0
- package/assets/templates/footer.htm +183 -0
- package/assets/templates/header.htm +298 -0
- package/assets/vectors/certificates.svg +1 -0
- package/assets/vectors/change.svg +1 -0
- package/assets/vectors/configuration.svg +2 -0
- package/assets/vectors/customize.svg +1 -0
- package/assets/vectors/dashboard.svg +1 -0
- package/assets/vectors/edgepolicies.svg +2 -0
- package/assets/vectors/globe.svg +63 -0
- package/assets/vectors/help.svg +48 -0
- package/assets/vectors/identity.svg +1 -0
- package/assets/vectors/notify.svg +1 -0
- package/assets/vectors/plus.svg +1 -0
- package/assets/vectors/posture.svg +1 -0
- package/assets/vectors/profile.svg +1 -0
- package/assets/vectors/router.svg +1 -0
- package/assets/vectors/routerpolicies.svg +1 -0
- package/assets/vectors/schema.svg +1 -0
- package/assets/vectors/server (1).svg +293 -0
- package/assets/vectors/servers.svg +103 -0
- package/assets/vectors/servicepolicy.svg +1 -0
- package/assets/vectors/services.svg +126 -0
- package/assets/vectors/settings.svg +130 -0
- package/assets/vectors/terminators.svg +1 -0
- package/assets/vectors/transitrouter.svg +1 -0
- package/esm2022/lib/app.initializer.mjs +24 -0
- package/esm2022/lib/features/card/card.component.mjs +29 -0
- package/esm2022/lib/features/card-list/card-list.component.mjs +50 -0
- package/esm2022/lib/features/config-editor/config-editor.component.mjs +239 -0
- package/esm2022/lib/features/confirm/confirm.component.mjs +59 -0
- package/esm2022/lib/features/creation-summary-dialog/creation-summary-dialog.component.mjs +92 -0
- package/esm2022/lib/features/custom-tags/custom-tags.component.mjs +77 -0
- package/esm2022/lib/features/data-table/cells/table-cell-menu/table-cell-menu.component.mjs +47 -0
- package/esm2022/lib/features/data-table/cells/table-cell-select/table-cell-select.component.mjs +46 -0
- package/esm2022/lib/features/data-table/cells/table-cell-token/table-cell-token.component.mjs +124 -0
- package/esm2022/lib/features/data-table/column-headers/table-column-default/table-column-default.component.mjs +269 -0
- package/esm2022/lib/features/data-table/column-headers/table-column-filter/table-column-filter.component.mjs +94 -0
- package/esm2022/lib/features/data-table/column-headers/table-column-menu/table-column-menu.component.mjs +38 -0
- package/esm2022/lib/features/data-table/column-headers/table-column-select/table-column-select.component.mjs +34 -0
- package/esm2022/lib/features/data-table/data-table-filter.service.mjs +66 -0
- package/esm2022/lib/features/data-table/data-table.component.mjs +848 -0
- package/esm2022/lib/features/data-table/data-table.service.mjs +99 -0
- package/esm2022/lib/features/data-table/table-filter-bar/filter-bar.component.mjs +95 -0
- package/esm2022/lib/features/data-table/table-hidden-columns-bar/hidden-columns-bar.component.mjs +27 -0
- package/esm2022/lib/features/data-table/tooltips/os-tooltip.component.mjs +30 -0
- package/esm2022/lib/features/data-table/tooltips/sdk-tooltip.component.mjs +35 -0
- package/esm2022/lib/features/dynamic-widgets/boolean/boolean-toggle-input.component.mjs +73 -0
- package/esm2022/lib/features/dynamic-widgets/checkbox-list/checkbox-list-input.component.mjs +131 -0
- package/esm2022/lib/features/dynamic-widgets/forwarding-config/forwarding-config.component.mjs +169 -0
- package/esm2022/lib/features/dynamic-widgets/forwarding-config/forwarding-config.service.mjs +51 -0
- package/esm2022/lib/features/dynamic-widgets/number/number-input.component.mjs +74 -0
- package/esm2022/lib/features/dynamic-widgets/object/object.component.mjs +122 -0
- package/esm2022/lib/features/dynamic-widgets/password/password-input.component.mjs +72 -0
- package/esm2022/lib/features/dynamic-widgets/port-ranges/port-ranges.component.mjs +98 -0
- package/esm2022/lib/features/dynamic-widgets/protocol-address-port/protocol-address-port-input.component.mjs +180 -0
- package/esm2022/lib/features/dynamic-widgets/selector/selector-input.component.mjs +104 -0
- package/esm2022/lib/features/dynamic-widgets/string/string-input.component.mjs +72 -0
- package/esm2022/lib/features/dynamic-widgets/text-list/text-list-input.component.mjs +119 -0
- package/esm2022/lib/features/extendable/extendable.component.mjs +56 -0
- package/esm2022/lib/features/extendable/extensions-noop.service.mjs +50 -0
- package/esm2022/lib/features/json-view/json-view.component.mjs +197 -0
- package/esm2022/lib/features/list-page-features/list-page-form/list-page-form.component.mjs +139 -0
- package/esm2022/lib/features/list-page-features/list-page-header/list-page-header.component.mjs +48 -0
- package/esm2022/lib/features/loading-indicator/loading-indicator.component.mjs +21 -0
- package/esm2022/lib/features/messaging/growler.component.mjs +63 -0
- package/esm2022/lib/features/messaging/growler.model.mjs +24 -0
- package/esm2022/lib/features/messaging/growler.module.mjs +35 -0
- package/esm2022/lib/features/messaging/growler.service.mjs +72 -0
- package/esm2022/lib/features/messaging/logger.service.mjs +175 -0
- package/esm2022/lib/features/no-items/no-items.component.mjs +47 -0
- package/esm2022/lib/features/overrides/overrides.component.mjs +119 -0
- package/esm2022/lib/features/overrides/overrides.service.mjs +115 -0
- package/esm2022/lib/features/preview-list/preview-list.component.mjs +91 -0
- package/esm2022/lib/features/projectable-forms/configuration/configuration-form.component.mjs +223 -0
- package/esm2022/lib/features/projectable-forms/configuration/configuration.service.mjs +150 -0
- package/esm2022/lib/features/projectable-forms/edge-router/edge-router-form.component.mjs +188 -0
- package/esm2022/lib/features/projectable-forms/edge-router/edge-router-form.service.mjs +131 -0
- package/esm2022/lib/features/projectable-forms/form-field-container/form-field-container.component.mjs +72 -0
- package/esm2022/lib/features/projectable-forms/form-field-toggle/form-field-toggle.component.mjs +55 -0
- package/esm2022/lib/features/projectable-forms/form-header/form-header.component.mjs +96 -0
- package/esm2022/lib/features/projectable-forms/identity/identity-form.component.mjs +322 -0
- package/esm2022/lib/features/projectable-forms/identity/identity-form.service.mjs +144 -0
- package/esm2022/lib/features/projectable-forms/projectable-form.class.mjs +172 -0
- package/esm2022/lib/features/projectable-forms/service/service-form.component.mjs +240 -0
- package/esm2022/lib/features/projectable-forms/service/service-form.service.mjs +453 -0
- package/esm2022/lib/features/projectable-forms/service/simple-service/simple-service.component.mjs +680 -0
- package/esm2022/lib/features/projectable-forms/service-policy/service-policy-form.component.mjs +252 -0
- package/esm2022/lib/features/projectable-forms/service-policy/service-policy-form.service.mjs +214 -0
- package/esm2022/lib/features/qr-code/qr-code.component.mjs +143 -0
- package/esm2022/lib/features/reset-enrollment/reset-enrollment.component.mjs +87 -0
- package/esm2022/lib/features/reset-enrollment/reset-enrollment.service.mjs +62 -0
- package/esm2022/lib/features/side-modal/side-modal.component.mjs +46 -0
- package/esm2022/lib/features/sidebars/side-banner/side-banner.component.mjs +17 -0
- package/esm2022/lib/features/sidebars/side-navbar/side-navbar.component.mjs +55 -0
- package/esm2022/lib/features/sidebars/side-toolbar/side-toolbar.component.mjs +128 -0
- package/esm2022/lib/features/tag-selector/tag-selector.component.mjs +292 -0
- package/esm2022/lib/features/visualizer/identity-service-path/identity-service-path.component.mjs +588 -0
- package/esm2022/lib/features/visualizer/identity-service-path/identity-service-path.helper.mjs +370 -0
- package/esm2022/lib/features/wrappers/node-wrapper.service.mjs +51 -0
- package/esm2022/lib/features/wrappers/zac-wrapper-service.class.mjs +92 -0
- package/esm2022/lib/features/wrappers/zac-wrapper.component.mjs +147 -0
- package/esm2022/lib/features/wrappers/zac-wrapper.service.mjs +937 -0
- package/esm2022/lib/models/config.mjs +9 -0
- package/esm2022/lib/models/edge-router.mjs +13 -0
- package/esm2022/lib/models/identity.mjs +34 -0
- package/esm2022/lib/models/service-policy.mjs +12 -0
- package/esm2022/lib/models/service.mjs +12 -0
- package/esm2022/lib/pages/configurations/configurations-page.component.mjs +102 -0
- package/esm2022/lib/pages/configurations/configurations-page.service.mjs +246 -0
- package/esm2022/lib/pages/edge-routers/edge-routers-page.component.mjs +149 -0
- package/esm2022/lib/pages/edge-routers/edge-routers-page.service.mjs +361 -0
- package/esm2022/lib/pages/identities/identities-page.component.mjs +233 -0
- package/esm2022/lib/pages/identities/identities-page.service.mjs +498 -0
- package/esm2022/lib/pages/service-policies/service-policies-page.component.mjs +132 -0
- package/esm2022/lib/pages/service-policies/service-policies-page.service.mjs +457 -0
- package/esm2022/lib/pages/services/services-page.component.mjs +141 -0
- package/esm2022/lib/pages/services/services-page.service.mjs +215 -0
- package/esm2022/lib/safe.pipe.mjs +19 -0
- package/esm2022/lib/services/console-events.service.mjs +32 -0
- package/esm2022/lib/services/csv-download.service.mjs +92 -0
- package/esm2022/lib/services/deactivate-guard.service.mjs +18 -0
- package/esm2022/lib/services/login-service.class.mjs +28 -0
- package/esm2022/lib/services/node-data.service.mjs +292 -0
- package/esm2022/lib/services/noop-login.service.mjs +45 -0
- package/esm2022/lib/services/schema.service.mjs +808 -0
- package/esm2022/lib/services/settings-service.class.mjs +131 -0
- package/esm2022/lib/services/settings.service.mjs +193 -0
- package/esm2022/lib/services/tab-name.service.mjs +65 -0
- package/esm2022/lib/services/validation.service.mjs +124 -0
- package/esm2022/lib/services/ziti-controller-data.service.mjs +260 -0
- package/esm2022/lib/services/ziti-data.service.mjs +54 -0
- package/esm2022/lib/services/ziti-domain-controller.service.mjs +3 -0
- package/esm2022/lib/shared/list-page-component.class.mjs +145 -0
- package/esm2022/lib/shared/list-page-service.class.mjs +151 -0
- package/esm2022/lib/version.mjs +4 -0
- package/esm2022/lib/zac-routing.module.mjs +41 -0
- package/esm2022/lib/ziti-console-lib.module.mjs +364 -0
- package/esm2022/lib/ziti-console.constants.mjs +19 -0
- package/esm2022/openziti-ziti-console-lib.mjs +5 -0
- package/esm2022/public-api.mjs +71 -0
- package/fesm2022/openziti-ziti-console-lib.mjs +15813 -0
- package/fesm2022/openziti-ziti-console-lib.mjs.map +1 -0
- package/index.d.ts +6 -0
- package/lib/app.initializer.d.ts +3 -0
- package/lib/app.initializer.d.ts.map +1 -0
- package/lib/features/card/card.component.d.ts +11 -0
- package/lib/features/card/card.component.d.ts.map +1 -0
- package/lib/features/card-list/card-list.component.d.ts +23 -0
- package/lib/features/card-list/card-list.component.d.ts.map +1 -0
- package/lib/features/config-editor/config-editor.component.d.ts +39 -0
- package/lib/features/config-editor/config-editor.component.d.ts.map +1 -0
- package/lib/features/confirm/confirm.component.d.ts +23 -0
- package/lib/features/confirm/confirm.component.d.ts.map +1 -0
- package/lib/features/creation-summary-dialog/creation-summary-dialog.component.d.ts +31 -0
- package/lib/features/creation-summary-dialog/creation-summary-dialog.component.d.ts.map +1 -0
- package/lib/features/custom-tags/custom-tags.component.d.ts +20 -0
- package/lib/features/custom-tags/custom-tags.component.d.ts.map +1 -0
- package/lib/features/data-table/cells/table-cell-menu/table-cell-menu.component.d.ts +16 -0
- package/lib/features/data-table/cells/table-cell-menu/table-cell-menu.component.d.ts.map +1 -0
- package/lib/features/data-table/cells/table-cell-select/table-cell-select.component.d.ts +19 -0
- package/lib/features/data-table/cells/table-cell-select/table-cell-select.component.d.ts.map +1 -0
- package/lib/features/data-table/cells/table-cell-token/table-cell-token.component.d.ts +22 -0
- package/lib/features/data-table/cells/table-cell-token/table-cell-token.component.d.ts.map +1 -0
- package/lib/features/data-table/column-headers/table-column-default/table-column-default.component.d.ts +52 -0
- package/lib/features/data-table/column-headers/table-column-default/table-column-default.component.d.ts.map +1 -0
- package/lib/features/data-table/column-headers/table-column-filter/table-column-filter.component.d.ts +27 -0
- package/lib/features/data-table/column-headers/table-column-filter/table-column-filter.component.d.ts.map +1 -0
- package/lib/features/data-table/column-headers/table-column-menu/table-column-menu.component.d.ts +19 -0
- package/lib/features/data-table/column-headers/table-column-menu/table-column-menu.component.d.ts.map +1 -0
- package/lib/features/data-table/column-headers/table-column-select/table-column-select.component.d.ts +15 -0
- package/lib/features/data-table/column-headers/table-column-select/table-column-select.component.d.ts.map +1 -0
- package/lib/features/data-table/data-table-filter.service.d.ts +24 -0
- package/lib/features/data-table/data-table-filter.service.d.ts.map +1 -0
- package/lib/features/data-table/data-table.component.d.ts +154 -0
- package/lib/features/data-table/data-table.component.d.ts.map +1 -0
- package/lib/features/data-table/data-table.service.d.ts +20 -0
- package/lib/features/data-table/data-table.service.d.ts.map +1 -0
- package/lib/features/data-table/table-filter-bar/filter-bar.component.d.ts +22 -0
- package/lib/features/data-table/table-filter-bar/filter-bar.component.d.ts.map +1 -0
- package/lib/features/data-table/table-hidden-columns-bar/hidden-columns-bar.component.d.ts +10 -0
- package/lib/features/data-table/table-hidden-columns-bar/hidden-columns-bar.component.d.ts.map +1 -0
- package/lib/features/data-table/tooltips/os-tooltip.component.d.ts +15 -0
- package/lib/features/data-table/tooltips/os-tooltip.component.d.ts.map +1 -0
- package/lib/features/data-table/tooltips/sdk-tooltip.component.d.ts +15 -0
- package/lib/features/data-table/tooltips/sdk-tooltip.component.d.ts.map +1 -0
- package/lib/features/dynamic-widgets/boolean/boolean-toggle-input.component.d.ts +19 -0
- package/lib/features/dynamic-widgets/boolean/boolean-toggle-input.component.d.ts.map +1 -0
- package/lib/features/dynamic-widgets/checkbox-list/checkbox-list-input.component.d.ts +26 -0
- package/lib/features/dynamic-widgets/checkbox-list/checkbox-list-input.component.d.ts.map +1 -0
- package/lib/features/dynamic-widgets/forwarding-config/forwarding-config.component.d.ts +45 -0
- package/lib/features/dynamic-widgets/forwarding-config/forwarding-config.component.d.ts.map +1 -0
- package/lib/features/dynamic-widgets/forwarding-config/forwarding-config.service.d.ts +14 -0
- package/lib/features/dynamic-widgets/forwarding-config/forwarding-config.service.d.ts.map +1 -0
- package/lib/features/dynamic-widgets/number/number-input.component.d.ts +20 -0
- package/lib/features/dynamic-widgets/number/number-input.component.d.ts.map +1 -0
- package/lib/features/dynamic-widgets/object/object.component.d.ts +26 -0
- package/lib/features/dynamic-widgets/object/object.component.d.ts.map +1 -0
- package/lib/features/dynamic-widgets/password/password-input.component.d.ts +20 -0
- package/lib/features/dynamic-widgets/password/password-input.component.d.ts.map +1 -0
- package/lib/features/dynamic-widgets/port-ranges/port-ranges.component.d.ts +21 -0
- package/lib/features/dynamic-widgets/port-ranges/port-ranges.component.d.ts.map +1 -0
- package/lib/features/dynamic-widgets/protocol-address-port/protocol-address-port-input.component.d.ts +58 -0
- package/lib/features/dynamic-widgets/protocol-address-port/protocol-address-port-input.component.d.ts.map +1 -0
- package/lib/features/dynamic-widgets/selector/selector-input.component.d.ts +23 -0
- package/lib/features/dynamic-widgets/selector/selector-input.component.d.ts.map +1 -0
- package/lib/features/dynamic-widgets/string/string-input.component.d.ts +20 -0
- package/lib/features/dynamic-widgets/string/string-input.component.d.ts.map +1 -0
- package/lib/features/dynamic-widgets/text-list/text-list-input.component.d.ts +23 -0
- package/lib/features/dynamic-widgets/text-list/text-list-input.component.d.ts.map +1 -0
- package/lib/features/extendable/extendable.component.d.ts +15 -0
- package/lib/features/extendable/extendable.component.d.ts.map +1 -0
- package/lib/features/extendable/extensions-noop.service.d.ts +31 -0
- package/lib/features/extendable/extensions-noop.service.d.ts.map +1 -0
- package/lib/features/json-view/json-view.component.d.ts +37 -0
- package/lib/features/json-view/json-view.component.d.ts.map +1 -0
- package/lib/features/list-page-features/list-page-form/list-page-form.component.d.ts +35 -0
- package/lib/features/list-page-features/list-page-form/list-page-form.component.d.ts.map +1 -0
- package/lib/features/list-page-features/list-page-header/list-page-header.component.d.ts +13 -0
- package/lib/features/list-page-features/list-page-header/list-page-header.component.d.ts.map +1 -0
- package/lib/features/loading-indicator/loading-indicator.component.d.ts +9 -0
- package/lib/features/loading-indicator/loading-indicator.component.d.ts.map +1 -0
- package/lib/features/messaging/growler.component.d.ts +19 -0
- package/lib/features/messaging/growler.component.d.ts.map +1 -0
- package/lib/features/messaging/growler.model.d.ts +8 -0
- package/lib/features/messaging/growler.model.d.ts.map +1 -0
- package/lib/features/messaging/growler.module.d.ts +10 -0
- package/lib/features/messaging/growler.module.d.ts.map +1 -0
- package/lib/features/messaging/growler.service.d.ts +18 -0
- package/lib/features/messaging/growler.service.d.ts.map +1 -0
- package/lib/features/messaging/logger.service.d.ts +27 -0
- package/lib/features/messaging/logger.service.d.ts.map +1 -0
- package/lib/features/no-items/no-items.component.d.ts +19 -0
- package/lib/features/no-items/no-items.component.d.ts.map +1 -0
- package/lib/features/overrides/overrides.component.d.ts +33 -0
- package/lib/features/overrides/overrides.component.d.ts.map +1 -0
- package/lib/features/overrides/overrides.service.d.ts +18 -0
- package/lib/features/overrides/overrides.service.d.ts.map +1 -0
- package/lib/features/preview-list/preview-list.component.d.ts +24 -0
- package/lib/features/preview-list/preview-list.component.d.ts.map +1 -0
- package/lib/features/projectable-forms/configuration/configuration-form.component.d.ts +52 -0
- package/lib/features/projectable-forms/configuration/configuration-form.component.d.ts.map +1 -0
- package/lib/features/projectable-forms/configuration/configuration.service.d.ts +33 -0
- package/lib/features/projectable-forms/configuration/configuration.service.d.ts.map +1 -0
- package/lib/features/projectable-forms/edge-router/edge-router-form.component.d.ts +45 -0
- package/lib/features/projectable-forms/edge-router/edge-router-form.component.d.ts.map +1 -0
- package/lib/features/projectable-forms/edge-router/edge-router-form.service.d.ts +29 -0
- package/lib/features/projectable-forms/edge-router/edge-router-form.service.d.ts.map +1 -0
- package/lib/features/projectable-forms/form-field-container/form-field-container.component.d.ts +22 -0
- package/lib/features/projectable-forms/form-field-container/form-field-container.component.d.ts.map +1 -0
- package/lib/features/projectable-forms/form-field-toggle/form-field-toggle.component.d.ts +15 -0
- package/lib/features/projectable-forms/form-field-toggle/form-field-toggle.component.d.ts.map +1 -0
- package/lib/features/projectable-forms/form-header/form-header.component.d.ts +23 -0
- package/lib/features/projectable-forms/form-header/form-header.component.d.ts.map +1 -0
- package/lib/features/projectable-forms/identity/identity-form.component.d.ts +70 -0
- package/lib/features/projectable-forms/identity/identity-form.component.d.ts.map +1 -0
- package/lib/features/projectable-forms/identity/identity-form.service.d.ts +20 -0
- package/lib/features/projectable-forms/identity/identity-form.service.d.ts.map +1 -0
- package/lib/features/projectable-forms/projectable-form.class.d.ts +39 -0
- package/lib/features/projectable-forms/projectable-form.class.d.ts.map +1 -0
- package/lib/features/projectable-forms/service/service-form.component.d.ts +62 -0
- package/lib/features/projectable-forms/service/service-form.component.d.ts.map +1 -0
- package/lib/features/projectable-forms/service/service-form.service.d.ts +96 -0
- package/lib/features/projectable-forms/service/service-form.service.d.ts.map +1 -0
- package/lib/features/projectable-forms/service/simple-service/simple-service.component.d.ts +140 -0
- package/lib/features/projectable-forms/service/simple-service/simple-service.component.d.ts.map +1 -0
- package/lib/features/projectable-forms/service-policy/service-policy-form.component.d.ts +58 -0
- package/lib/features/projectable-forms/service-policy/service-policy-form.component.d.ts.map +1 -0
- package/lib/features/projectable-forms/service-policy/service-policy-form.service.d.ts +37 -0
- package/lib/features/projectable-forms/service-policy/service-policy-form.service.d.ts.map +1 -0
- package/lib/features/qr-code/qr-code.component.d.ts +40 -0
- package/lib/features/qr-code/qr-code.component.d.ts.map +1 -0
- package/lib/features/reset-enrollment/reset-enrollment.component.d.ts +27 -0
- package/lib/features/reset-enrollment/reset-enrollment.component.d.ts.map +1 -0
- package/lib/features/reset-enrollment/reset-enrollment.service.d.ts +13 -0
- package/lib/features/reset-enrollment/reset-enrollment.service.d.ts.map +1 -0
- package/lib/features/side-modal/side-modal.component.d.ts +15 -0
- package/lib/features/side-modal/side-modal.component.d.ts.map +1 -0
- package/lib/features/sidebars/side-banner/side-banner.component.d.ts +7 -0
- package/lib/features/sidebars/side-banner/side-banner.component.d.ts.map +1 -0
- package/lib/features/sidebars/side-navbar/side-navbar.component.d.ts +16 -0
- package/lib/features/sidebars/side-navbar/side-navbar.component.d.ts.map +1 -0
- package/lib/features/sidebars/side-toolbar/side-toolbar.component.d.ts +34 -0
- package/lib/features/sidebars/side-toolbar/side-toolbar.component.d.ts.map +1 -0
- package/lib/features/tag-selector/tag-selector.component.d.ts +59 -0
- package/lib/features/tag-selector/tag-selector.component.d.ts.map +1 -0
- package/lib/features/visualizer/identity-service-path/identity-service-path.component.d.ts +53 -0
- package/lib/features/visualizer/identity-service-path/identity-service-path.component.d.ts.map +1 -0
- package/lib/features/visualizer/identity-service-path/identity-service-path.helper.d.ts +21 -0
- package/lib/features/visualizer/identity-service-path/identity-service-path.helper.d.ts.map +1 -0
- package/lib/features/wrappers/node-wrapper.service.d.ts +24 -0
- package/lib/features/wrappers/node-wrapper.service.d.ts.map +1 -0
- package/lib/features/wrappers/zac-wrapper-service.class.d.ts +38 -0
- package/lib/features/wrappers/zac-wrapper-service.class.d.ts.map +1 -0
- package/lib/features/wrappers/zac-wrapper.component.d.ts +31 -0
- package/lib/features/wrappers/zac-wrapper.component.d.ts.map +1 -0
- package/lib/features/wrappers/zac-wrapper.service.d.ts +56 -0
- package/lib/features/wrappers/zac-wrapper.service.d.ts.map +1 -0
- package/lib/models/config.d.ts +6 -0
- package/lib/models/config.d.ts.map +1 -0
- package/lib/models/edge-router.d.ts +10 -0
- package/lib/models/edge-router.d.ts.map +1 -0
- package/lib/models/identity.d.ts +16 -0
- package/lib/models/identity.d.ts.map +1 -0
- package/lib/models/service-policy.d.ts +9 -0
- package/lib/models/service-policy.d.ts.map +1 -0
- package/lib/models/service.d.ts +9 -0
- package/lib/models/service.d.ts.map +1 -0
- package/lib/pages/configurations/configurations-page.component.d.ts +29 -0
- package/lib/pages/configurations/configurations-page.component.d.ts.map +1 -0
- package/lib/pages/configurations/configurations-page.service.d.ts +78 -0
- package/lib/pages/configurations/configurations-page.service.d.ts.map +1 -0
- package/lib/pages/edge-routers/edge-routers-page.component.d.ts +38 -0
- package/lib/pages/edge-routers/edge-routers-page.component.d.ts.map +1 -0
- package/lib/pages/edge-routers/edge-routers-page.service.d.ts +47 -0
- package/lib/pages/edge-routers/edge-routers-page.service.d.ts.map +1 -0
- package/lib/pages/identities/identities-page.component.d.ts +44 -0
- package/lib/pages/identities/identities-page.component.d.ts.map +1 -0
- package/lib/pages/identities/identities-page.service.d.ts +54 -0
- package/lib/pages/identities/identities-page.service.d.ts.map +1 -0
- package/lib/pages/service-policies/service-policies-page.component.d.ts +36 -0
- package/lib/pages/service-policies/service-policies-page.component.d.ts.map +1 -0
- package/lib/pages/service-policies/service-policies-page.service.d.ts +63 -0
- package/lib/pages/service-policies/service-policies-page.service.d.ts.map +1 -0
- package/lib/pages/services/services-page.component.d.ts +37 -0
- package/lib/pages/services/services-page.component.d.ts.map +1 -0
- package/lib/pages/services/services-page.service.d.ts +46 -0
- package/lib/pages/services/services-page.service.d.ts.map +1 -0
- package/lib/safe.pipe.d.ts +11 -0
- package/lib/safe.pipe.d.ts.map +1 -0
- package/lib/services/console-events.service.d.ts +12 -0
- package/lib/services/console-events.service.d.ts.map +1 -0
- package/lib/services/csv-download.service.d.ts +11 -0
- package/lib/services/csv-download.service.d.ts.map +1 -0
- package/lib/services/deactivate-guard.service.d.ts +14 -0
- package/lib/services/deactivate-guard.service.d.ts.map +1 -0
- package/lib/services/login-service.class.d.ts +22 -0
- package/lib/services/login-service.class.d.ts.map +1 -0
- package/lib/services/node-data.service.d.ts +32 -0
- package/lib/services/node-data.service.d.ts.map +1 -0
- package/lib/services/noop-login.service.d.ts +23 -0
- package/lib/services/noop-login.service.d.ts.map +1 -0
- package/lib/services/schema.service.d.ts +63 -0
- package/lib/services/schema.service.d.ts.map +1 -0
- package/lib/services/settings-service.class.d.ts +35 -0
- package/lib/services/settings-service.class.d.ts.map +1 -0
- package/lib/services/settings.service.d.ts +18 -0
- package/lib/services/settings.service.d.ts.map +1 -0
- package/lib/services/tab-name.service.d.ts +20 -0
- package/lib/services/tab-name.service.d.ts.map +1 -0
- package/lib/services/validation.service.d.ts +13 -0
- package/lib/services/validation.service.d.ts.map +1 -0
- package/lib/services/ziti-controller-data.service.d.ts +32 -0
- package/lib/services/ziti-controller-data.service.d.ts.map +1 -0
- package/lib/services/ziti-data.service.d.ts +40 -0
- package/lib/services/ziti-data.service.d.ts.map +1 -0
- package/lib/services/ziti-domain-controller.service.d.ts +13 -0
- package/lib/services/ziti-domain-controller.service.d.ts.map +1 -0
- package/lib/shared/list-page-component.class.d.ts +52 -0
- package/lib/shared/list-page-component.class.d.ts.map +1 -0
- package/lib/shared/list-page-service.class.d.ts +47 -0
- package/lib/shared/list-page-service.class.d.ts.map +1 -0
- package/lib/version.d.ts +4 -0
- package/lib/version.d.ts.map +1 -0
- package/lib/zac-routing.module.d.ts +8 -0
- package/lib/zac-routing.module.d.ts.map +1 -0
- package/lib/ziti-console-lib.module.d.ts +85 -0
- package/lib/ziti-console-lib.module.d.ts.map +1 -0
- package/lib/ziti-console.constants.d.ts +4 -0
- package/lib/ziti-console.constants.d.ts.map +1 -0
- package/openziti-ziti-console-lib.d.ts.map +1 -0
- package/package.json +48 -0
- package/public-api.d.ts +68 -0
- package/public-api.d.ts.map +1 -0
package/esm2022/lib/features/visualizer/identity-service-path/identity-service-path.helper.mjs
ADDED
|
@@ -0,0 +1,370 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import _ from 'lodash';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
class Link {
|
|
5
|
+
}
|
|
6
|
+
class Node {
|
|
7
|
+
}
|
|
8
|
+
class ServiceHostNode {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.intercept = [];
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export class ServiceData {
|
|
14
|
+
}
|
|
15
|
+
class IdentityServicePathHelper {
|
|
16
|
+
constructor() {
|
|
17
|
+
this.posy_for_group3 = 0;
|
|
18
|
+
}
|
|
19
|
+
getEndpointGraphObj(endpoint, bindIdnetities, edgerouters, selectedServiceOb, serviceConfigs, filterText = '') {
|
|
20
|
+
let endpointNodeOb = null;
|
|
21
|
+
const rootOb = new RootJson();
|
|
22
|
+
const bindNode = bindIdnetities.find((nd) => nd.id === endpoint.id);
|
|
23
|
+
if (!bindNode) {
|
|
24
|
+
endpointNodeOb = createEndpoint(endpoint);
|
|
25
|
+
endpointNodeOb.group = '1';
|
|
26
|
+
endpointNodeOb.posx = 50;
|
|
27
|
+
endpointNodeOb.posy = 200;
|
|
28
|
+
rootOb.addNode(endpointNodeOb);
|
|
29
|
+
}
|
|
30
|
+
let publicRouterNodes = [];
|
|
31
|
+
let posy = 0;
|
|
32
|
+
_.isArray(edgerouters) && edgerouters.forEach((nd) => {
|
|
33
|
+
const nodeOb = createERNode(nd);
|
|
34
|
+
nodeOb.group = '2a';
|
|
35
|
+
nodeOb.posx = 250;
|
|
36
|
+
posy = posy + 100;
|
|
37
|
+
nodeOb.posy = posy;
|
|
38
|
+
publicRouterNodes.push(nodeOb);
|
|
39
|
+
rootOb.addNode(nodeOb);
|
|
40
|
+
});
|
|
41
|
+
let publicRouterNodesForEndpointTunnelers = [];
|
|
42
|
+
const posx_for_group3 = 550;
|
|
43
|
+
this.posy_for_group3 = 0;
|
|
44
|
+
let group3Ids = [];
|
|
45
|
+
let posy_for_group4 = 150;
|
|
46
|
+
const group4Nodes = [];
|
|
47
|
+
const serviceIPPorts = [];
|
|
48
|
+
const srNode = new ServiceHostNode();
|
|
49
|
+
srNode.id = selectedServiceOb.id;
|
|
50
|
+
srNode.name = selectedServiceOb.name;
|
|
51
|
+
srNode.intercept = serviceConfigAlias(serviceConfigs);
|
|
52
|
+
srNode.type = 'Config Service';
|
|
53
|
+
srNode.group = '4';
|
|
54
|
+
srNode.status = '1';
|
|
55
|
+
group4Nodes.push(srNode);
|
|
56
|
+
rootOb.addNode(srNode);
|
|
57
|
+
_.isArray(bindIdnetities) && bindIdnetities.forEach((ePoint) => {
|
|
58
|
+
if (group3Ids.indexOf(ePoint.id) < 0) {
|
|
59
|
+
group3Ids.push(ePoint.id);
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
// create links between nodes
|
|
63
|
+
// in group3, remove routers/ep that exist in group2
|
|
64
|
+
this.posy_for_group3 = 165;
|
|
65
|
+
let grp3Yincrement = 100;
|
|
66
|
+
const group3Nodes = [];
|
|
67
|
+
let countgrp3 = 0;
|
|
68
|
+
group3Ids.find((nid) => {
|
|
69
|
+
// let's check if the service hosted is an Endpoint
|
|
70
|
+
let grp3Node = findEndpoint(nid, bindIdnetities);
|
|
71
|
+
if (grp3Node) {
|
|
72
|
+
grp3Node.group = '3';
|
|
73
|
+
grp3Node.posx = posx_for_group3;
|
|
74
|
+
grp3Node.posy = this.posy_for_group3;
|
|
75
|
+
this.posy_for_group3 = this.posy_for_group3 + 125;
|
|
76
|
+
group3Nodes.push(grp3Node);
|
|
77
|
+
countgrp3++;
|
|
78
|
+
rootOb.addNode(grp3Node);
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
grp3Yincrement = countgrp3 > 2 ? 75 : 100;
|
|
82
|
+
if (countgrp3 === 1) {
|
|
83
|
+
this.posy_for_group3 = 160;
|
|
84
|
+
}
|
|
85
|
+
else if (countgrp3 === 2) {
|
|
86
|
+
this.posy_for_group3 = 120;
|
|
87
|
+
}
|
|
88
|
+
else if (countgrp3 >= 5) {
|
|
89
|
+
this.posy_for_group3 = 50;
|
|
90
|
+
grp3Yincrement = 75;
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
this.posy_for_group3 = 73;
|
|
94
|
+
}
|
|
95
|
+
if (group3Nodes)
|
|
96
|
+
group3Nodes.find((node3) => {
|
|
97
|
+
if (node3.group === '3') {
|
|
98
|
+
node3.posy = this.posy_for_group3;
|
|
99
|
+
this.posy_for_group3 = this.posy_for_group3 + grp3Yincrement;
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
if (group4Nodes && group4Nodes.length === 1) {
|
|
103
|
+
posy_for_group4 = 200;
|
|
104
|
+
}
|
|
105
|
+
group4Nodes.find((nd4) => {
|
|
106
|
+
// nd4.posx = group3Nodes && group3Nodes.length > 0 && !group3Nodes[0].type.includes("Public Hosted") ? posx_for_group3 + 175 : posx_for_group3;
|
|
107
|
+
nd4.posx = posx_for_group3 + 175;
|
|
108
|
+
nd4.posy = posy_for_group4;
|
|
109
|
+
posy_for_group4 = posy_for_group4 + 100;
|
|
110
|
+
});
|
|
111
|
+
let countPublicNodes = 0;
|
|
112
|
+
rootOb.nodes.find((pNode) => {
|
|
113
|
+
if (pNode.group.includes('2')) {
|
|
114
|
+
countPublicNodes = countPublicNodes + 1;
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
publicRouterNodes = [];
|
|
118
|
+
let posy_group2 = 100;
|
|
119
|
+
let yIncrement = 0;
|
|
120
|
+
if (countPublicNodes === 1) {
|
|
121
|
+
posy_group2 = 200;
|
|
122
|
+
}
|
|
123
|
+
else if (countPublicNodes >= 2 && countPublicNodes < 5) {
|
|
124
|
+
posy_group2 = 60;
|
|
125
|
+
yIncrement = 80;
|
|
126
|
+
}
|
|
127
|
+
else if (countPublicNodes >= 5 && countPublicNodes < 10) {
|
|
128
|
+
posy_group2 = 40;
|
|
129
|
+
yIncrement = 50;
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
posy_group2 = 40;
|
|
133
|
+
yIncrement = 40;
|
|
134
|
+
}
|
|
135
|
+
rootOb.nodes.find((publicNode) => {
|
|
136
|
+
if (publicNode.group.includes('2')) {
|
|
137
|
+
publicNode.posx = 275;
|
|
138
|
+
publicNode.posy = posy_group2;
|
|
139
|
+
posy_group2 = posy_group2 + yIncrement;
|
|
140
|
+
publicRouterNodes.push(publicNode);
|
|
141
|
+
if (publicNode.group === '2b') {
|
|
142
|
+
group3Nodes.push(publicNode);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
for (let k1 = 0; k1 < rootOb.nodes.length; k1++) {
|
|
147
|
+
const nd = rootOb.nodes[k1];
|
|
148
|
+
if (endpointNodeOb !== null && (nd.group === '2a' || nd.group === '2ab' || nd.group === '2ac')) {
|
|
149
|
+
const lnk = new Link();
|
|
150
|
+
lnk.source = endpointNodeOb.id;
|
|
151
|
+
lnk.sourceName = endpointNodeOb.name;
|
|
152
|
+
lnk.target = nd.id;
|
|
153
|
+
lnk.targetName = nd.name;
|
|
154
|
+
lnk.status = getEndpointToRouterLinkState(endpointNodeOb, nd);
|
|
155
|
+
lnk.weight = getWeight(lnk.status);
|
|
156
|
+
rootOb.addLink(lnk);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
for (let k1 = 0; k1 < rootOb.nodes.length; k1++) {
|
|
160
|
+
const nd1 = rootOb.nodes[k1];
|
|
161
|
+
if (nd1.group.includes('2')) {
|
|
162
|
+
for (let k2 = 0; k2 < group3Nodes.length; k2++) {
|
|
163
|
+
const nd2 = group3Nodes[k2];
|
|
164
|
+
if (nd2.group === '2b' || nd2.group === '2ab') {
|
|
165
|
+
continue;
|
|
166
|
+
} // link not required.
|
|
167
|
+
const lnk = new Link();
|
|
168
|
+
lnk.source = nd1.id;
|
|
169
|
+
lnk.sourceName = nd1.name;
|
|
170
|
+
lnk.target = nd2.id;
|
|
171
|
+
lnk.targetName = nd2.name;
|
|
172
|
+
if (nd1.type.includes('Router') && nd2.type.includes('Router')) {
|
|
173
|
+
lnk.status =
|
|
174
|
+
nd1.status === 'PROVISIONED' &&
|
|
175
|
+
nd1.online === 'Yes' &&
|
|
176
|
+
nd2.status === 'PROVISIONED' &&
|
|
177
|
+
nd2.online === 'Yes'
|
|
178
|
+
? 1
|
|
179
|
+
: 0;
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
lnk.status = getEndpointToRouterLinkState(nd2, nd1);
|
|
183
|
+
}
|
|
184
|
+
lnk.weight = getWeight(lnk.status);
|
|
185
|
+
rootOb.addLink(lnk);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
for (let k0 = 0; k0 < group4Nodes.length; k0++) {
|
|
190
|
+
for (let k1 = 0; k1 < group3Nodes.length; k1++) {
|
|
191
|
+
const lnk = new Link();
|
|
192
|
+
lnk.source = group3Nodes[k1].id;
|
|
193
|
+
lnk.sourceName = group3Nodes[k1].name;
|
|
194
|
+
lnk.target = group4Nodes[k0].id;
|
|
195
|
+
lnk.targetName = group4Nodes[k0].name;
|
|
196
|
+
lnk.weight = 1;
|
|
197
|
+
const foundNd = rootOb.nodes.find(function (rnd) {
|
|
198
|
+
// if (rnd.id === group3Nodes[k1].id) {
|
|
199
|
+
return rnd.id === group3Nodes[k1].id;
|
|
200
|
+
// }
|
|
201
|
+
});
|
|
202
|
+
if (foundNd.type.includes('Router')) {
|
|
203
|
+
lnk.status = foundNd.status === 'PROVISIONED' && foundNd.online === 'Yes' ? 1 : 0;
|
|
204
|
+
}
|
|
205
|
+
else {
|
|
206
|
+
lnk.status = getServiceToEndpointLinkState(group3Nodes[k1], group4Nodes[k0]);
|
|
207
|
+
lnk.weight = getWeight(lnk.status);
|
|
208
|
+
}
|
|
209
|
+
rootOb.addLink(lnk);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
function serviceConfigAlias(configs) {
|
|
213
|
+
let intercept = [];
|
|
214
|
+
_.isArray(configs) && configs.forEach((conf) => {
|
|
215
|
+
let addresses = '';
|
|
216
|
+
let ports = '';
|
|
217
|
+
if (conf.data.addresses) {
|
|
218
|
+
addresses = conf.data.addresses.toString();
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
addresses = conf.data.address;
|
|
222
|
+
}
|
|
223
|
+
if (_.isArray(conf.data.portRanges)) {
|
|
224
|
+
conf.data.portRanges.forEach((portsJson) => {
|
|
225
|
+
for (const key in portsJson) {
|
|
226
|
+
ports = ports + key + ':' + portsJson[key] + ' ';
|
|
227
|
+
}
|
|
228
|
+
ports = ports + ';';
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
ports = conf.data.port;
|
|
233
|
+
}
|
|
234
|
+
intercept.push(addresses);
|
|
235
|
+
intercept.push(ports);
|
|
236
|
+
});
|
|
237
|
+
return intercept;
|
|
238
|
+
}
|
|
239
|
+
function findEndpoint(endpointId, endpoints) {
|
|
240
|
+
let node = null;
|
|
241
|
+
if (endpointId === null) {
|
|
242
|
+
return null;
|
|
243
|
+
}
|
|
244
|
+
const ePoint = endpoints.find(function (er) {
|
|
245
|
+
return er.id === endpointId;
|
|
246
|
+
});
|
|
247
|
+
if (ePoint) {
|
|
248
|
+
node = createEndpoint(ePoint);
|
|
249
|
+
node.type = 'Hosted Identity';
|
|
250
|
+
}
|
|
251
|
+
return node;
|
|
252
|
+
} // end of findEndpoint
|
|
253
|
+
function createEndpoint(ePoint) {
|
|
254
|
+
const node = new Node();
|
|
255
|
+
node.id = ePoint.id;
|
|
256
|
+
node.name = ePoint.name;
|
|
257
|
+
node.type = 'Identity';
|
|
258
|
+
node.apiSession = ePoint.hasApiSession === false ? 'No' : 'Yes';
|
|
259
|
+
node.routerConnection = ePoint.hasEdgeRouterConnection === false ? 'No' : 'Yes';
|
|
260
|
+
node.os = ePoint.envInfo ? ePoint.envInfo.os : '';
|
|
261
|
+
node.mfaEnabled = ePoint.isMfaEnabled;
|
|
262
|
+
node.status = ePoint.envInfo && ePoint.envInfo.os !== null ? 'Registered' : 'Un-Registered';
|
|
263
|
+
return node;
|
|
264
|
+
}
|
|
265
|
+
function createERNode(erouter) {
|
|
266
|
+
const nodeOb = new Node();
|
|
267
|
+
nodeOb.id = erouter.id;
|
|
268
|
+
nodeOb.name = erouter.name;
|
|
269
|
+
nodeOb.status = erouter.isVerified === true ? 'Registered' : 'Un-Registered';
|
|
270
|
+
nodeOb.online = erouter.isOnline === false ? 'No' : 'Yes';
|
|
271
|
+
nodeOb.tunnelerEnabled = erouter.isTunnelerEnabled === false ? 'No' : 'Yes';
|
|
272
|
+
nodeOb.type = 'EdgeRouter';
|
|
273
|
+
return nodeOb;
|
|
274
|
+
}
|
|
275
|
+
function findEdgeRouterForId(routerId, edgerouters) {
|
|
276
|
+
const erouter = edgerouters.find((er) => {
|
|
277
|
+
// if (er.id === routerId) {
|
|
278
|
+
return er.id === routerId;
|
|
279
|
+
// }
|
|
280
|
+
});
|
|
281
|
+
if (erouter) {
|
|
282
|
+
return createERNode(erouter);
|
|
283
|
+
}
|
|
284
|
+
else {
|
|
285
|
+
return null;
|
|
286
|
+
}
|
|
287
|
+
} // end of findEdgeRouterForId
|
|
288
|
+
function getEndpointToRouterLinkState(endpointNode, routerNode) {
|
|
289
|
+
let linkstate = 0;
|
|
290
|
+
if (routerNode.status === 'ERROR') {
|
|
291
|
+
linkstate = 0;
|
|
292
|
+
}
|
|
293
|
+
else if (endpointNode.status === 'Un-Registered') {
|
|
294
|
+
linkstate = -1;
|
|
295
|
+
}
|
|
296
|
+
else if (endpointNode.apiSession === 'No') {
|
|
297
|
+
linkstate = 0;
|
|
298
|
+
}
|
|
299
|
+
else if (endpointNode.routerConnection === 'No') {
|
|
300
|
+
linkstate = -1;
|
|
301
|
+
}
|
|
302
|
+
else if (routerNode.online === 'Yes' && endpointNode.routerConnection === 'Yes') {
|
|
303
|
+
linkstate = 1;
|
|
304
|
+
}
|
|
305
|
+
else {
|
|
306
|
+
linkstate = -1;
|
|
307
|
+
}
|
|
308
|
+
return linkstate;
|
|
309
|
+
}
|
|
310
|
+
function getServiceToEndpointLinkState(endpointNode, serviceNode) {
|
|
311
|
+
let linkstate = 0;
|
|
312
|
+
if (endpointNode.status === 'Un-Registered' || serviceNode.intercept.includes('No')) {
|
|
313
|
+
linkstate = -1;
|
|
314
|
+
}
|
|
315
|
+
else if (endpointNode.apiSession === 'No') {
|
|
316
|
+
linkstate = 0;
|
|
317
|
+
}
|
|
318
|
+
else if (endpointNode.status === 'Registered' && endpointNode.apiSession === 'Yes') {
|
|
319
|
+
linkstate = 1;
|
|
320
|
+
}
|
|
321
|
+
else {
|
|
322
|
+
linkstate = 0;
|
|
323
|
+
}
|
|
324
|
+
return linkstate;
|
|
325
|
+
}
|
|
326
|
+
function getWeight(linkState) {
|
|
327
|
+
return linkState === -1 ? 5 : 1;
|
|
328
|
+
}
|
|
329
|
+
return rootOb;
|
|
330
|
+
} // end of NEW Function
|
|
331
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IdentityServicePathHelper, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
332
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IdentityServicePathHelper, providedIn: 'root' }); }
|
|
333
|
+
}
|
|
334
|
+
export { IdentityServicePathHelper };
|
|
335
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IdentityServicePathHelper, decorators: [{
|
|
336
|
+
type: Injectable,
|
|
337
|
+
args: [{
|
|
338
|
+
providedIn: 'root',
|
|
339
|
+
}]
|
|
340
|
+
}], ctorParameters: function () { return []; } });
|
|
341
|
+
class RootJson {
|
|
342
|
+
constructor() {
|
|
343
|
+
this.nodes = [];
|
|
344
|
+
this.links = [];
|
|
345
|
+
}
|
|
346
|
+
addNode(newObject) {
|
|
347
|
+
const foundObj = this.nodes.find(function (nd) {
|
|
348
|
+
// if (nd.id === newObject.id) {
|
|
349
|
+
// nd = newObject;
|
|
350
|
+
return nd.id === newObject.id;
|
|
351
|
+
// }
|
|
352
|
+
});
|
|
353
|
+
if (!foundObj) {
|
|
354
|
+
this.nodes.push(newObject);
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
;
|
|
358
|
+
replaceNode(newObject) {
|
|
359
|
+
const indx = this.nodes.findIndex(nd => nd.id === newObject.id);
|
|
360
|
+
if (indx >= 0) {
|
|
361
|
+
this.nodes[indx] = newObject;
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
;
|
|
365
|
+
addLink(newObject) {
|
|
366
|
+
this.links.push(newObject);
|
|
367
|
+
}
|
|
368
|
+
;
|
|
369
|
+
}
|
|
370
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHktc2VydmljZS1wYXRoLmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy92aXN1YWxpemVyL2lkZW50aXR5LXNlcnZpY2UtcGF0aC9pZGVudGl0eS1zZXJ2aWNlLXBhdGguaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDOztBQUV2QixNQUFNLElBQUk7Q0FPVDtBQUVELE1BQU0sSUFBSTtDQWdCVDtBQUVELE1BQU0sZUFBZTtJQUFyQjtRQWtCSSxjQUFTLEdBQUcsRUFBRSxDQUFDO0lBR25CLENBQUM7Q0FBQTtBQUVELE1BQU0sT0FBTyxXQUFXO0NBR3ZCO0FBRUQsTUFHYSx5QkFBeUI7SUFHbEM7UUFGQSxvQkFBZSxHQUFHLENBQUMsQ0FBQztJQUdqQixDQUFDO0lBRUcsbUJBQW1CLENBQ3RCLFFBQVEsRUFDUixjQUFjLEVBQ2QsV0FBVyxFQUNYLGlCQUFpQixFQUNqQixjQUFjLEVBQ2QsVUFBVSxHQUFHLEVBQUU7UUFFZixJQUFJLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDMUIsTUFBTSxNQUFNLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUM5QixNQUFNLFFBQVEsR0FBSSxjQUFjLENBQUMsSUFBSSxDQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBRSxFQUFFLENBQUMsRUFBRSxLQUFLLFFBQVEsQ0FBQyxFQUFFLENBQUcsQ0FBQztRQUMxRSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ1osY0FBYyxHQUFHLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMxQyxjQUFjLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQztZQUMzQixjQUFjLENBQUMsSUFBSSxHQUFHLEVBQUUs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QUhyQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7QUFvVkEsTUFBTSxRQUFRO0lBQWQ7UUFDTyxVQUFLLEdBQU8sRUFBRSxDQUFDO1FBQ2YsVUFBSyxHQUFPLEVBQUUsQ0FBQztJQXNCdEIsQ0FBQztJQXJCTSxPQUFPLENBQUUsU0FBUztRQUNWLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFFLFVBQVUsRUFBRTtZQUMzQyxnQ0FBZ0M7WUFDNUIsa0JBQWtCO1lBQ2pCLE9BQU8sRUFBRSxDQUFDLEVBQUUsS0FBSyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQ2xDLElBQUk7UUFDUixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDWCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUM5QjtJQUNULENBQUM7SUFBQSxDQUFDO0lBQ0YsV0FBVyxDQUFFLFNBQVM7UUFDaEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM5RCxJQUFJLElBQUksSUFBSSxDQUFDLEVBQUU7WUFDZCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLFNBQVMsQ0FBQztTQUM3QjtJQUNULENBQUM7SUFBQSxDQUFDO0lBQ0gsT0FBTyxDQUFFLFNBQVM7UUFDZCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBQUEsQ0FBQztDQUVSIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5jbGFzcyBMaW5rIHtcbiAgICBzb3VyY2U7XG4gICAgc291cmNlTmFtZTtcbiAgICB0YXJnZXQ7XG4gICAgdGFyZ2V0TmFtZTtcbiAgICB3ZWlnaHQ7XG4gICAgc3RhdHVzO1xufVxuXG5jbGFzcyBOb2RlIHtcbiAgICBpZDtcbiAgICBuYW1lO1xuICAgIHByb3ZpZGVyO1xuICAgIGdyb3VwO1xuICAgIHBvc3g7XG4gICAgcG9zeTtcbiAgICBzdGF0dXM7XG4gICAgb25saW5lO1xuICAgIGFwaVNlc3Npb247XG4gICAgcm91dGVyQ29ubmVjdGlvbjtcbiAgICB0dW5uZWxlckVuYWJsZWQ7XG4gICAgb3M7XG4gICAgbWZhRW5hYmxlZDtcbiAgICB0eXBlO1xuICAgIHVzYWdlO1xufVxuXG5jbGFzcyBTZXJ2aWNlSG9zdE5vZGUge1xuICAgIGlkO1xuICAgIG5hbWU7XG4gICAgZ3JvdXA7XG4gICAgcG9zeDtcbiAgICBwb3N5O1xuICAgIGludGVyY2VwdElwcztcbiAgICBpbnRlcmNlcHRQb3J0cztcbiAgICBpbnRlcmNlcHRQcm90b2NvbHM7XG4gICAgZm9yd2FyZGVkSG9zdDtcbiAgICBob3N0TmFtZXM7XG4gICAgZm9yd2FyZGVkUG9ydDtcbiAgICBob3N0UG9ydHM7XG4gICAgZm9yd2FyZGVkUHJvdG9jb2w7XG4gICAgaG9zdFByb3RvY29scztcbiAgICBzdGF0dXM7XG4gICAgdHlwZTtcbiAgICB1c2FnZTtcbiAgICBpbnRlcmNlcHQgPSBbXTtcbiAgICBjb25maWdBZGRyZXNzO1xuICAgIGNvbmZpZ1BvcnRzO1xufVxuXG5leHBvcnQgY2xhc3MgU2VydmljZURhdGEge1xuICAgIGlkO1xuICAgIG5hbWU7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIElkZW50aXR5U2VydmljZVBhdGhIZWxwZXIge1xuICAgIHBvc3lfZm9yX2dyb3VwMyA9IDA7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICApIHt9XG5cbiAgICBwdWJsaWMgZ2V0RW5kcG9pbnRHcmFwaE9iaihcbiAgICAgICAgZW5kcG9pbnQsXG4gICAgICAgIGJpbmRJZG5ldGl0aWVzLFxuICAgICAgICBlZGdlcm91dGVycyxcbiAgICAgICAgc2VsZWN0ZWRTZXJ2aWNlT2IsXG4gICAgICAgIHNlcnZpY2VDb25maWdzLFxuICAgICAgICBmaWx0ZXJUZXh0ID0gJydcbiAgICApIHtcbiAgICAgICAgbGV0IGVuZHBvaW50Tm9kZU9iID0gbnVsbDtcbiAgICAgICAgY29uc3Qgcm9vdE9iID0gbmV3IFJvb3RKc29uKCk7XG4gICAgICAgIGNvbnN0IGJpbmROb2RlID0gIGJpbmRJZG5ldGl0aWVzLmZpbmQoIChuZCkgPT4gIG5kLmlkID09PSBlbmRwb2ludC5pZCAgKTtcbiAgICAgICBpZiAoIWJpbmROb2RlKSB7XG4gICAgICAgICAgZW5kcG9pbnROb2RlT2IgPSBjcmVhdGVFbmRwb2ludChlbmRwb2ludCk7XG4gICAgICAgICAgZW5kcG9pbnROb2RlT2IuZ3JvdXAgPSAnMSc7XG4gICAgICAgICAgZW5kcG9pbnROb2RlT2IucG9zeCA9IDUwO1xuICAgICAgICAgIGVuZHBvaW50Tm9kZU9iLnBvc3kgPSAyMDA7XG4gICAgICAgICAgcm9vdE9iLmFkZE5vZGUoZW5kcG9pbnROb2RlT2IpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBwdWJsaWNSb3V0ZXJOb2RlcyA9IFtdO1xuICAgICAgICBsZXQgcG9zeSA9IDA7XG4gICAgICAgIF8uaXNBcnJheShlZGdlcm91dGVycykgJiYgZWRnZXJvdXRlcnMuZm9yRWFjaCgobmQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVPYiA9IGNyZWF0ZUVSTm9kZShuZCk7XG4gICAgICAgICAgICBub2RlT2IuZ3JvdXAgPSAnMmEnO1xuICAgICAgICAgICAgbm9kZU9iLnBvc3ggPSAyNTA7XG4gICAgICAgICAgICBwb3N5ID0gcG9zeSArIDEwMDtcbiAgICAgICAgICAgIG5vZGVPYi5wb3N5ID0gcG9zeTtcbiAgICAgICAgICAgIHB1YmxpY1JvdXRlck5vZGVzLnB1c2gobm9kZU9iKTtcbiAgICAgICAgICAgIHJvb3RPYi5hZGROb2RlKG5vZGVPYik7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGxldCBwdWJsaWNSb3V0ZXJOb2Rlc0ZvckVuZHBvaW50VHVubmVsZXJzID0gW107XG5cbiAgICAgICAgY29uc3QgcG9zeF9mb3JfZ3JvdXAzID0gNTUwO1xuICAgICAgICB0aGlzLnBvc3lfZm9yX2dyb3VwMyA9IDA7XG4gICAgICAgIGxldCBncm91cDNJZHMgPSBbXTtcbiAgICAgICAgbGV0IHBvc3lfZm9yX2dyb3VwNCA9IDE1MDtcbiAgICAgICAgY29uc3QgZ3JvdXA0Tm9kZXMgPSBbXTtcbiAgICAgICAgY29uc3Qgc2VydmljZUlQUG9ydHMgPSBbXTtcbiAgICAgICAgICAgY29uc3Qgc3JOb2RlID0gbmV3IFNlcnZpY2VIb3N0Tm9kZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICBzck5vZGUuaWQgPSBzZWxlY3RlZFNlcnZpY2VPYi5pZDtcbiAgICAgICAgICAgICAgICAgICAgICAgc3JOb2RlLm5hbWUgPSBzZWxlY3RlZFNlcnZpY2VPYi5uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICBzck5vZGUuaW50ZXJjZXB0ID0gc2VydmljZUNvbmZpZ0FsaWFzKHNlcnZpY2VDb25maWdzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgc3JOb2RlLnR5cGUgPSAnQ29uZmlnIFNlcnZpY2UnO1xuICAgICAgICAgICAgICAgICAgICAgICBzck5vZGUuZ3JvdXAgPSAnNCc7XG4gICAgICAgICAgICAgICAgICAgICAgIHNyTm9kZS5zdGF0dXMgPSAnMSc7XG4gICAgICAgICAgICAgICAgICAgICAgIGdyb3VwNE5vZGVzLnB1c2goc3JOb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgcm9vdE9iLmFkZE5vZGUoc3JOb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgXy5pc0FycmF5KGJpbmRJZG5ldGl0aWVzKSAmJiBiaW5kSWRuZXRpdGllcy5mb3JFYWNoKChlUG9pbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ3JvdXAzSWRzLmluZGV4T2YoZVBvaW50LmlkKSA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cDNJZHMucHVzaChlUG9pbnQuaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIC8vIGNyZWF0ZSBsaW5rcyBiZXR3ZWVuIG5vZGVzXG5cbiAgICAgICAgLy8gaW4gZ3JvdXAzLCAgcmVtb3ZlICByb3V0ZXJzL2VwICB0aGF0IGV4aXN0IGluIGdyb3VwMlxuICAgICAgICB0aGlzLnBvc3lfZm9yX2dyb3VwMyA9IDE2NTtcbiAgICAgICAgbGV0IGdycDNZaW5jcmVtZW50ID0gMTAwO1xuXG4gICAgICAgIGNvbnN0IGdyb3VwM05vZGVzID0gW107XG4gICAgICAgIGxldCBjb3VudGdycDMgPSAwO1xuICAgICAgICBncm91cDNJZHMuZmluZCgobmlkKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gbGV0J3MgY2hlY2sgaWYgdGhlIHNlcnZpY2UgaG9zdGVkIGlzIGFuIEVuZHBvaW50XG4gICAgICAgICAgICAgICBsZXQgZ3JwM05vZGUgPSBmaW5kRW5kcG9pbnQobmlkLCBiaW5kSWRuZXRpdGllcyk7XG4gICAgICAgICAgICAgICAgICBpZihncnAzTm9kZSkge1xuICAgICAgICAgICAgICAgICAgICBncnAzTm9kZS5ncm91cCA9ICczJztcbiAgICAgICAgICAgICAgICAgICAgZ3JwM05vZGUucG9zeCA9IHBvc3hfZm9yX2dyb3VwMztcbiAgICAgICAgICAgICAgICAgICAgZ3JwM05vZGUucG9zeSA9IHRoaXMucG9zeV9mb3JfZ3JvdXAzO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvc3lfZm9yX2dyb3VwMyA9IHRoaXMucG9zeV9mb3JfZ3JvdXAzICsgMTI1O1xuICAgICAgICAgICAgICAgICAgICBncm91cDNOb2Rlcy5wdXNoKGdycDNOb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgY291bnRncnAzKys7XG4gICAgICAgICAgICAgICAgICAgIHJvb3RPYi5hZGROb2RlKGdycDNOb2RlKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgZ3JwM1lpbmNyZW1lbnQgPSBjb3VudGdycDMgPiAyID8gNzUgOiAxMDA7XG4gICAgICAgIGlmIChjb3VudGdycDMgPT09IDEpIHtcbiAgICAgICAgICAgIHRoaXMucG9zeV9mb3JfZ3JvdXAzID0gMTYwO1xuICAgICAgICB9IGVsc2UgaWYgKGNvdW50Z3JwMyA9PT0gMikge1xuICAgICAgICAgICAgdGhpcy5wb3N5X2Zvcl9ncm91cDMgPSAxMjA7XG4gICAgICAgIH0gZWxzZSBpZiAoY291bnRncnAzID49IDUpIHtcbiAgICAgICAgICAgIHRoaXMucG9zeV9mb3JfZ3JvdXAzID0gNTA7XG4gICAgICAgICAgICBncnAzWWluY3JlbWVudCA9IDc1O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wb3N5X2Zvcl9ncm91cDMgPSA3MztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChncm91cDNOb2RlcylcbiAgICAgICAgICAgIGdyb3VwM05vZGVzLmZpbmQoKG5vZGUzKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKG5vZGUzLmdyb3VwID09PSAnMycpIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZTMucG9zeSA9IHRoaXMucG9zeV9mb3JfZ3JvdXAzO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvc3lfZm9yX2dyb3VwMyA9IHRoaXMucG9zeV9mb3JfZ3JvdXAzICsgZ3JwM1lpbmNyZW1lbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGdyb3VwNE5vZGVzICYmIGdyb3VwNE5vZGVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgcG9zeV9mb3JfZ3JvdXA0ID0gMjAwO1xuICAgICAgICB9XG5cbiAgICAgICAgZ3JvdXA0Tm9kZXMuZmluZCgobmQ0KSA9PiB7XG4gICAgICAgICAgIC8vIG5kNC5wb3N4ID0gZ3JvdXAzTm9kZXMgICYmIGdyb3VwM05vZGVzLmxlbmd0aCA+IDAgICYmICFncm91cDNOb2Rlc1swXS50eXBlLmluY2x1ZGVzKFwiUHVibGljIEhvc3RlZFwiKSA/IHBvc3hfZm9yX2dyb3VwMyArIDE3NSA6IHBvc3hfZm9yX2dyb3VwMztcbiAgICAgICAgICAgIG5kNC5wb3N4ID0gcG9zeF9mb3JfZ3JvdXAzICsgMTc1O1xuICAgICAgICAgICAgbmQ0LnBvc3kgPSBwb3N5X2Zvcl9ncm91cDQ7XG4gICAgICAgICAgICBwb3N5X2Zvcl9ncm91cDQgPSBwb3N5X2Zvcl9ncm91cDQgKyAxMDA7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGxldCBjb3VudFB1YmxpY05vZGVzID0gMDtcbiAgICAgICAgcm9vdE9iLm5vZGVzLmZpbmQoKHBOb2RlKSA9PiB7XG4gICAgICAgICAgICBpZiAocE5vZGUuZ3JvdXAuaW5jbHVkZXMoJzInKSkge1xuICAgICAgICAgICAgICAgIGNvdW50UHVibGljTm9kZXMgPSBjb3VudFB1YmxpY05vZGVzICsgMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcHVibGljUm91dGVyTm9kZXMgPSBbXTtcbiAgICAgICAgbGV0IHBvc3lfZ3JvdXAyID0gMTAwO1xuICAgICAgICBsZXQgeUluY3JlbWVudCA9IDA7XG4gICAgICAgIGlmIChjb3VudFB1YmxpY05vZGVzID09PSAxKSB7XG4gICAgICAgICAgICBwb3N5X2dyb3VwMiA9IDIwMDtcbiAgICAgICAgfSBlbHNlIGlmIChjb3VudFB1YmxpY05vZGVzID49IDIgJiYgY291bnRQdWJsaWNOb2RlcyA8IDUpIHtcbiAgICAgICAgICAgIHBvc3lfZ3JvdXAyID0gNjA7XG4gICAgICAgICAgICB5SW5jcmVtZW50ID0gODA7XG4gICAgICAgIH0gZWxzZSBpZiAoY291bnRQdWJsaWNOb2RlcyA+PSA1ICYmIGNvdW50UHVibGljTm9kZXMgPCAxMCkge1xuICAgICAgICAgICAgcG9zeV9ncm91cDIgPSA0MDtcbiAgICAgICAgICAgIHlJbmNyZW1lbnQgPSA1MDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBvc3lfZ3JvdXAyID0gNDA7XG4gICAgICAgICAgICB5SW5jcmVtZW50ID0gNDA7XG4gICAgICAgIH1cblxuICAgICAgICByb290T2Iubm9kZXMuZmluZCgocHVibGljTm9kZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHB1YmxpY05vZGUuZ3JvdXAuaW5jbHVkZXMoJzInKSkge1xuICAgICAgICAgICAgICAgIHB1YmxpY05vZGUucG9zeCA9IDI3NTtcbiAgICAgICAgICAgICAgICBwdWJsaWNOb2RlLnBvc3kgPSBwb3N5X2dyb3VwMjtcbiAgICAgICAgICAgICAgICBwb3N5X2dyb3VwMiA9IHBvc3lfZ3JvdXAyICsgeUluY3JlbWVudDtcbiAgICAgICAgICAgICAgICBwdWJsaWNSb3V0ZXJOb2Rlcy5wdXNoKHB1YmxpY05vZGUpO1xuICAgICAgICAgICAgICAgIGlmIChwdWJsaWNOb2RlLmdyb3VwID09PSAnMmInKSB7XG4gICAgICAgICAgICAgICAgICAgIGdyb3VwM05vZGVzLnB1c2gocHVibGljTm9kZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuXG4gICAgICAgIGZvciAobGV0IGsxID0gMDsgazEgPCByb290T2Iubm9kZXMubGVuZ3RoOyBrMSsrKSB7XG4gICAgICAgICAgICBjb25zdCBuZCA9IHJvb3RPYi5ub2Rlc1trMV07XG4gICAgICAgICAgICBpZiAoZW5kcG9pbnROb2RlT2IgIT09bnVsbCAmJiAobmQuZ3JvdXAgPT09ICcyYScgfHwgbmQuZ3JvdXAgPT09ICcyYWInIHx8IG5kLmdyb3VwID09PSAnMmFjJykpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsbmsgPSBuZXcgTGluaygpO1xuICAgICAgICAgICAgICAgIGxuay5zb3VyY2UgPSBlbmRwb2ludE5vZGVPYi5pZDtcbiAgICAgICAgICAgICAgICBsbmsuc291cmNlTmFtZSA9IGVuZHBvaW50Tm9kZU9iLm5hbWU7XG4gICAgICAgICAgICAgICAgbG5rLnRhcmdldCA9IG5kLmlkO1xuICAgICAgICAgICAgICAgIGxuay50YXJnZXROYW1lID0gbmQubmFtZTtcbiAgICAgICAgICAgICAgICBsbmsuc3RhdHVzID0gZ2V0RW5kcG9pbnRUb1JvdXRlckxpbmtTdGF0ZShlbmRwb2ludE5vZGVPYiwgbmQpO1xuICAgICAgICAgICAgICAgIGxuay53ZWlnaHQgPSBnZXRXZWlnaHQobG5rLnN0YXR1cyk7XG4gICAgICAgICAgICAgICAgcm9vdE9iLmFkZExpbmsobG5rKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAobGV0IGsxID0gMDsgazEgPCByb290T2Iubm9kZXMubGVuZ3RoOyBrMSsrKSB7XG4gICAgICAgICAgICBjb25zdCBuZDEgPSByb290T2Iubm9kZXNbazFdO1xuXG4gICAgICAgICAgICBpZiAobmQxLmdyb3VwLmluY2x1ZGVzKCcyJykpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBrMiA9IDA7IGsyIDwgZ3JvdXAzTm9kZXMubGVuZ3RoOyBrMisrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5kMiA9IGdyb3VwM05vZGVzW2syXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5kMi5ncm91cCA9PT0gJzJiJyB8fCBuZDIuZ3JvdXAgPT09ICcyYWInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfSAvLyBsaW5rIG5vdCByZXF1aXJlZC5cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBsbmsgPSBuZXcgTGluaygpO1xuICAgICAgICAgICAgICAgICAgICBsbmsuc291cmNlID0gbmQxLmlkO1xuICAgICAgICAgICAgICAgICAgICBsbmsuc291cmNlTmFtZSA9IG5kMS5uYW1lO1xuICAgICAgICAgICAgICAgICAgICBsbmsudGFyZ2V0ID0gbmQyLmlkO1xuICAgICAgICAgICAgICAgICAgICBsbmsudGFyZ2V0TmFtZSA9IG5kMi5uYW1lO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChuZDEudHlwZS5pbmNsdWRlcygnUm91dGVyJykgJiYgbmQyLnR5cGUuaW5jbHVkZXMoJ1JvdXRlcicpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsbmsuc3RhdHVzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZDEuc3RhdHVzID09PSAnUFJPVklTSU9ORUQnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmQxLm9ubGluZSA9PT0gJ1llcycgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZDIuc3RhdHVzID09PSAnUFJPVklTSU9ORUQnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmQyLm9ubGluZSA9PT0gJ1llcydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogMDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxuay5zdGF0dXMgPSBnZXRFbmRwb2ludFRvUm91dGVyTGlua1N0YXRlKG5kMiwgbmQxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBsbmsud2VpZ2h0ID0gZ2V0V2VpZ2h0KGxuay5zdGF0dXMpO1xuICAgICAgICAgICAgICAgICAgICByb290T2IuYWRkTGluayhsbmspO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAobGV0IGswID0gMDsgazAgPCBncm91cDROb2Rlcy5sZW5ndGg7IGswKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGsxID0gMDsgazEgPCBncm91cDNOb2Rlcy5sZW5ndGg7IGsxKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsbmsgPSBuZXcgTGluaygpO1xuICAgICAgICAgICAgICAgIGxuay5zb3VyY2UgPSBncm91cDNOb2Rlc1trMV0uaWQ7XG4gICAgICAgICAgICAgICAgbG5rLnNvdXJjZU5hbWUgPSBncm91cDNOb2Rlc1trMV0ubmFtZTtcbiAgICAgICAgICAgICAgICBsbmsudGFyZ2V0ID0gZ3JvdXA0Tm9kZXNbazBdLmlkO1xuICAgICAgICAgICAgICAgIGxuay50YXJnZXROYW1lID0gZ3JvdXA0Tm9kZXNbazBdLm5hbWU7XG4gICAgICAgICAgICAgICAgbG5rLndlaWdodCA9IDE7XG4gICAgICAgICAgICAgICAgY29uc3QgZm91bmROZCA9IHJvb3RPYi5ub2Rlcy5maW5kKCBmdW5jdGlvbiAocm5kKSB7XG4gICAgICAgICAgICAgICAgICAgLy8gaWYgKHJuZC5pZCA9PT0gZ3JvdXAzTm9kZXNbazFdLmlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcm5kLmlkID09PSBncm91cDNOb2Rlc1trMV0uaWQ7XG4gICAgICAgICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmIChmb3VuZE5kLnR5cGUuaW5jbHVkZXMoJ1JvdXRlcicpKSB7XG4gICAgICAgICAgICAgICAgICAgIGxuay5zdGF0dXMgPSBmb3VuZE5kLnN0YXR1cyA9PT0gJ1BST1ZJU0lPTkVEJyAmJiBmb3VuZE5kLm9ubGluZSA9PT0gJ1llcycgPyAxIDogMDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBsbmsuc3RhdHVzID0gZ2V0U2VydmljZVRvRW5kcG9pbnRMaW5rU3RhdGUoZ3JvdXAzTm9kZXNbazFdLCBncm91cDROb2Rlc1trMF0pO1xuICAgICAgICAgICAgICAgICAgICBsbmsud2VpZ2h0ID0gZ2V0V2VpZ2h0KGxuay5zdGF0dXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByb290T2IuYWRkTGluayhsbmspO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gc2VydmljZUNvbmZpZ0FsaWFzKGNvbmZpZ3MpIHtcbiAgICAgICAgICBsZXQgaW50ZXJjZXB0ID0gW107XG4gICAgICAgICAgXy5pc0FycmF5KGNvbmZpZ3MpICYmIGNvbmZpZ3MuZm9yRWFjaCggKGNvbmYpID0+IHtcbiAgICAgICAgICAgICBsZXQgYWRkcmVzc2VzID0gJyc7XG4gICAgICAgICAgICAgbGV0IHBvcnRzID0gJyc7XG4gICAgICAgICAgICBpZiAoY29uZi5kYXRhLmFkZHJlc3Nlcykge1xuICAgICAgICAgICAgICAgYWRkcmVzc2VzID0gY29uZi5kYXRhLmFkZHJlc3Nlcy50b1N0cmluZygpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgIGFkZHJlc3NlcyA9IGNvbmYuZGF0YS5hZGRyZXNzO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoXy5pc0FycmF5KGNvbmYuZGF0YS5wb3J0UmFuZ2VzKSApIHtcbiAgICAgICAgICAgICAgICBjb25mLmRhdGEucG9ydFJhbmdlcy5mb3JFYWNoKCAocG9ydHNKc29uKSA9PiB7XG4gICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBwb3J0c0pzb24pIHtcbiAgICAgICAgICAgICAgICAgICAgcG9ydHMgPSBwb3J0cyArIGtleSArJzonK3BvcnRzSnNvbltrZXldICsnICcgO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgIHBvcnRzID0gcG9ydHMgKyAnOyc7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBvcnRzID0gIGNvbmYuZGF0YS5wb3J0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaW50ZXJjZXB0LnB1c2goYWRkcmVzc2VzKTtcbiAgICAgICAgICAgIGludGVyY2VwdC5wdXNoKHBvcnRzKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gaW50ZXJjZXB0O1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gZmluZEVuZHBvaW50KGVuZHBvaW50SWQsIGVuZHBvaW50cykge1xuICAgICAgICAgICAgbGV0IG5vZGUgPSBudWxsO1xuICAgICAgICAgICAgaWYgKGVuZHBvaW50SWQgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGVQb2ludCA9IGVuZHBvaW50cy5maW5kKCBmdW5jdGlvbiAoZXIpIHtcbiAgICAgICAgICAgICAgICAgcmV0dXJuIGVyLmlkID09PSBlbmRwb2ludElkO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmIChlUG9pbnQpIHtcbiAgICAgICAgICAgICAgICBub2RlID0gY3JlYXRlRW5kcG9pbnQoZVBvaW50KTtcbiAgICAgICAgICAgICAgICBub2RlLnR5cGUgPSAnSG9zdGVkIElkZW50aXR5JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBub2RlO1xuICAgICAgICB9IC8vIGVuZCBvZiBmaW5kRW5kcG9pbnRcblxuICAgICAgICBmdW5jdGlvbiBjcmVhdGVFbmRwb2ludChlUG9pbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBuZXcgTm9kZSgpO1xuICAgICAgICAgICAgbm9kZS5pZCA9IGVQb2ludC5pZDtcbiAgICAgICAgICAgIG5vZGUubmFtZSA9IGVQb2ludC5uYW1lO1xuICAgICAgICAgICAgbm9kZS50eXBlID0gJ0lkZW50aXR5JztcbiAgICAgICAgICAgIG5vZGUuYXBpU2Vzc2lvbiA9IGVQb2ludC5oYXNBcGlTZXNzaW9uID09PSBmYWxzZSA/ICdObycgOiAnWWVzJztcbiAgICAgICAgICAgIG5vZGUucm91dGVyQ29ubmVjdGlvbiA9IGVQb2ludC5oYXNFZGdlUm91dGVyQ29ubmVjdGlvbiA9PT0gZmFsc2UgPyAnTm8nIDogJ1llcyc7XG4gICAgICAgICAgICBub2RlLm9zID0gZVBvaW50LmVudkluZm8/IGVQb2ludC5lbnZJbmZvLm9zIDogJyc7XG4gICAgICAgICAgICBub2RlLm1mYUVuYWJsZWQgPSBlUG9pbnQuaXNNZmFFbmFibGVkO1xuICAgICAgICAgICAgbm9kZS5zdGF0dXMgPSBlUG9pbnQuZW52SW5mbyAmJiBlUG9pbnQuZW52SW5mby5vcyAhPT0gbnVsbCA/ICdSZWdpc3RlcmVkJyA6ICdVbi1SZWdpc3RlcmVkJztcbiAgICAgICAgICAgIHJldHVybiBub2RlO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gY3JlYXRlRVJOb2RlKGVyb3V0ZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVPYiA9IG5ldyBOb2RlKCk7XG4gICAgICAgICAgICBub2RlT2IuaWQgPSBlcm91dGVyLmlkO1xuICAgICAgICAgICAgbm9kZU9iLm5hbWUgPSBlcm91dGVyLm5hbWU7XG4gICAgICAgICAgICBub2RlT2Iuc3RhdHVzID0gZXJvdXRlci5pc1ZlcmlmaWVkID09PSB0cnVlPyAnUmVnaXN0ZXJlZCc6J1VuLVJlZ2lzdGVyZWQnO1xuICAgICAgICAgICAgbm9kZU9iLm9ubGluZSA9IGVyb3V0ZXIuaXNPbmxpbmUgPT09IGZhbHNlID8gJ05vJyA6ICdZZXMnO1xuICAgICAgICAgICAgbm9kZU9iLnR1bm5lbGVyRW5hYmxlZCA9IGVyb3V0ZXIuaXNUdW5uZWxlckVuYWJsZWQgPT09IGZhbHNlID8gJ05vJyA6ICdZZXMnO1xuICAgICAgICAgICAgbm9kZU9iLnR5cGUgPSAnRWRnZVJvdXRlcic7XG4gICAgICAgICAgICByZXR1cm4gbm9kZU9iO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gZmluZEVkZ2VSb3V0ZXJGb3JJZChyb3V0ZXJJZCwgZWRnZXJvdXRlcnMpIHtcbiAgICAgICAgICAgIGNvbnN0IGVyb3V0ZXIgPSBlZGdlcm91dGVycy5maW5kKChlcikgPT4ge1xuICAgICAgICAgICAgICAvLyAgaWYgKGVyLmlkID09PSByb3V0ZXJJZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXIuaWQgPT09IHJvdXRlcklkO1xuICAgICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmIChlcm91dGVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUVSTm9kZShlcm91dGVyKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gLy8gZW5kIG9mIGZpbmRFZGdlUm91dGVyRm9ySWRcblxuICAgICAgICBmdW5jdGlvbiBnZXRFbmRwb2ludFRvUm91dGVyTGlua1N0YXRlKGVuZHBvaW50Tm9kZSwgcm91dGVyTm9kZSkge1xuICAgICAgICAgICAgbGV0IGxpbmtzdGF0ZSA9IDA7XG4gICAgICAgICAgICBpZiAocm91dGVyTm9kZS5zdGF0dXMgPT09ICdFUlJPUicpIHtcbiAgICAgICAgICAgICAgICBsaW5rc3RhdGUgPSAwO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChlbmRwb2ludE5vZGUuc3RhdHVzID09PSAnVW4tUmVnaXN0ZXJlZCcpIHtcbiAgICAgICAgICAgICAgICBsaW5rc3RhdGUgPSAtMTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZW5kcG9pbnROb2RlLmFwaVNlc3Npb24gPT09ICdObycpIHtcbiAgICAgICAgICAgICAgICBsaW5rc3RhdGUgPSAwO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChlbmRwb2ludE5vZGUucm91dGVyQ29ubmVjdGlvbiA9PT0gJ05vJykge1xuICAgICAgICAgICAgICAgIGxpbmtzdGF0ZSA9IC0xO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChyb3V0ZXJOb2RlLm9ubGluZSA9PT0gJ1llcycgJiYgZW5kcG9pbnROb2RlLnJvdXRlckNvbm5lY3Rpb24gPT09ICdZZXMnKSB7XG4gICAgICAgICAgICAgICAgbGlua3N0YXRlID0gMTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbGlua3N0YXRlID0gLTE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbGlua3N0YXRlO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gZ2V0U2VydmljZVRvRW5kcG9pbnRMaW5rU3RhdGUoZW5kcG9pbnROb2RlLCBzZXJ2aWNlTm9kZSkge1xuICAgICAgICAgICAgbGV0IGxpbmtzdGF0ZSA9IDA7XG4gICAgICAgICAgICBpZiAoZW5kcG9pbnROb2RlLnN0YXR1cyA9PT0gJ1VuLVJlZ2lzdGVyZWQnIHx8IHNlcnZpY2VOb2RlLmludGVyY2VwdC5pbmNsdWRlcygnTm8nKSkge1xuICAgICAgICAgICAgICAgIGxpbmtzdGF0ZSA9IC0xO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChlbmRwb2ludE5vZGUuYXBpU2Vzc2lvbiA9PT0gJ05vJykge1xuICAgICAgICAgICAgICAgIGxpbmtzdGF0ZSA9IDA7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGVuZHBvaW50Tm9kZS5zdGF0dXMgPT09ICdSZWdpc3RlcmVkJyAmJiBlbmRwb2ludE5vZGUuYXBpU2Vzc2lvbiA9PT0gJ1llcycpIHtcbiAgICAgICAgICAgICAgICBsaW5rc3RhdGUgPSAxO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBsaW5rc3RhdGUgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGxpbmtzdGF0ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGdldFdlaWdodChsaW5rU3RhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBsaW5rU3RhdGUgPT09IC0xID8gNSA6IDE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJvb3RPYjtcbiAgICB9IC8vIGVuZCBvZiBORVcgRnVuY3Rpb25cblxufVxuXG4gY2xhc3MgUm9vdEpzb24ge1xuICAgICAgICBub2RlczphbnkgPSBbXTtcbiAgICAgICAgbGlua3M6YW55ID0gW107XG4gICAgICAgIGFkZE5vZGUgKG5ld09iamVjdCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZvdW5kT2JqID0gdGhpcy5ub2Rlcy5maW5kKCBmdW5jdGlvbiAobmQpIHtcbiAgICAgICAgICAgICAgICAgICAvLyBpZiAobmQuaWQgPT09IG5ld09iamVjdC5pZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAvLyBuZCA9IG5ld09iamVjdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZC5pZCA9PT0gbmV3T2JqZWN0LmlkO1xuICAgICAgICAgICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKCFmb3VuZE9iaikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGVzLnB1c2gobmV3T2JqZWN0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHJlcGxhY2VOb2RlIChuZXdPYmplY3QpIHtcbiAgICAgICAgICAgICAgY29uc3QgaW5keCA9IHRoaXMubm9kZXMuZmluZEluZGV4KG5kID0+IG5kLmlkID09PSBuZXdPYmplY3QuaWQpO1xuICAgICAgICAgICAgICAgIGlmIChpbmR4ID49IDApIHtcbiAgICAgICAgICAgICAgICAgdGhpcy5ub2Rlc1tpbmR4XSA9IG5ld09iamVjdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgYWRkTGluayAobmV3T2JqZWN0KSB7XG4gICAgICAgICAgIHRoaXMubGlua3MucHVzaChuZXdPYmplY3QpO1xuICAgICAgICB9O1xuXG4gfVxuIl19
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { ZacWrapperService } from "./zac-wrapper.service";
|
|
2
|
+
import { Inject, Injectable } from "@angular/core";
|
|
3
|
+
import { ZITI_DOMAIN_CONTROLLER } from "../../services/ziti-domain-controller.service";
|
|
4
|
+
import { ZITI_URLS } from "../../ziti-console.constants";
|
|
5
|
+
import { SETTINGS_SERVICE } from "../../services/settings.service";
|
|
6
|
+
import { get } from "lodash";
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@angular/common/http";
|
|
9
|
+
import * as i2 from "@angular/router";
|
|
10
|
+
import * as i3 from "../messaging/growler.service";
|
|
11
|
+
import * as i4 from "../messaging/logger.service";
|
|
12
|
+
import * as i5 from "../../services/validation.service";
|
|
13
|
+
import * as i6 from "../../services/settings.service";
|
|
14
|
+
class NodeWrapperService extends ZacWrapperService {
|
|
15
|
+
constructor(zitiDomainController, URLS, settingsService, http, router, growlerService, loggerService, validationService) {
|
|
16
|
+
super(zitiDomainController, URLS, settingsService, http, router, growlerService, loggerService, validationService);
|
|
17
|
+
this.zitiDomainController = zitiDomainController;
|
|
18
|
+
this.URLS = URLS;
|
|
19
|
+
this.settingsService = settingsService;
|
|
20
|
+
this.http = http;
|
|
21
|
+
this.router = router;
|
|
22
|
+
this.growlerService = growlerService;
|
|
23
|
+
this.loggerService = loggerService;
|
|
24
|
+
this.validationService = validationService;
|
|
25
|
+
}
|
|
26
|
+
initZac() {
|
|
27
|
+
if (this.zacInit) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
const appInit = get(window, 'app.init');
|
|
31
|
+
this.initZacListeners();
|
|
32
|
+
this.zacInit = true;
|
|
33
|
+
}
|
|
34
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NodeWrapperService, deps: [{ token: ZITI_DOMAIN_CONTROLLER }, { token: ZITI_URLS }, { token: SETTINGS_SERVICE }, { token: i1.HttpClient }, { token: i2.Router }, { token: i3.GrowlerService }, { token: i4.LoggerService }, { token: i5.ValidationService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
35
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NodeWrapperService, providedIn: 'root' }); }
|
|
36
|
+
}
|
|
37
|
+
export { NodeWrapperService };
|
|
38
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NodeWrapperService, decorators: [{
|
|
39
|
+
type: Injectable,
|
|
40
|
+
args: [{ providedIn: 'root' }]
|
|
41
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
42
|
+
type: Inject,
|
|
43
|
+
args: [ZITI_DOMAIN_CONTROLLER]
|
|
44
|
+
}] }, { type: undefined, decorators: [{
|
|
45
|
+
type: Inject,
|
|
46
|
+
args: [ZITI_URLS]
|
|
47
|
+
}] }, { type: i6.SettingsService, decorators: [{
|
|
48
|
+
type: Inject,
|
|
49
|
+
args: [SETTINGS_SERVICE]
|
|
50
|
+
}] }, { type: i1.HttpClient }, { type: i2.Router }, { type: i3.GrowlerService }, { type: i4.LoggerService }, { type: i5.ValidationService }]; } });
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS13cmFwcGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvZmVhdHVyZXMvd3JhcHBlcnMvbm9kZS13cmFwcGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGlCQUFpQixFQUFhLE1BQU0sdUJBQXVCLENBQUM7QUFDcEUsT0FBTyxFQUFlLE1BQU0sRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHL0QsT0FBTyxFQUFDLHNCQUFzQixFQUE4QixNQUFNLCtDQUErQyxDQUFDO0FBQ2xILE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUV2RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQWtCLE1BQU0saUNBQWlDLENBQUM7QUFFbEYsT0FBTyxFQUFDLEdBQUcsRUFBZSxNQUFNLFFBQVEsQ0FBQzs7Ozs7Ozs7QUFNekMsTUFDYSxrQkFBbUIsU0FBUSxpQkFBaUI7SUFFckQsWUFDNkMsb0JBQWlELEVBQzlELElBQVEsRUFDRCxlQUFnQyxFQUMxRCxJQUFnQixFQUNoQixNQUFjLEVBQ2QsY0FBOEIsRUFDOUIsYUFBNEIsRUFDNUIsaUJBQW9DO1FBRTdDLEtBQUssQ0FBQyxvQkFBb0IsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBVDFFLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBNkI7UUFDOUQsU0FBSSxHQUFKLElBQUksQ0FBSTtRQUNELG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUMxRCxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtJQUdqRCxDQUFDO0lBRVEsT0FBTztRQUNaLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNkLE9BQU87U0FDVjtRQUNELE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFDeEIsQ0FBQzsrR0F0QlEsa0JBQWtCLGtCQUdmLHNCQUFzQixhQUN0QixTQUFTLGFBQ1QsZ0JBQWdCO21IQUxuQixrQkFBa0IsY0FETixNQUFNOztTQUNsQixrQkFBa0I7NEZBQWxCLGtCQUFrQjtrQkFEOUIsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUM7OzBCQUl2QixNQUFNOzJCQUFDLHNCQUFzQjs7MEJBQzdCLE1BQU07MkJBQUMsU0FBUzs7MEJBQ2hCLE1BQU07MkJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtaYWNXcmFwcGVyU2VydmljZSwgQ09NUE9ORU5UU30gZnJvbSBcIi4vemFjLXdyYXBwZXIuc2VydmljZVwiO1xuaW1wb3J0IHtFdmVudEVtaXR0ZXIsIEluamVjdCwgSW5qZWN0YWJsZX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7SHR0cENsaWVudH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XG5pbXBvcnQge1JvdXRlcn0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xuaW1wb3J0IHtaSVRJX0RPTUFJTl9DT05UUk9MTEVSLCBaaXRpRG9tYWluQ29udHJvbGxlclNlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy96aXRpLWRvbWFpbi1jb250cm9sbGVyLnNlcnZpY2VcIjtcbmltcG9ydCB7WklUSV9VUkxTfSBmcm9tIFwiLi4vLi4veml0aS1jb25zb2xlLmNvbnN0YW50c1wiO1xuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQge1NFVFRJTkdTX1NFUlZJQ0UsIFNldHRpbmdzU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3NldHRpbmdzLnNlcnZpY2VcIjtcblxuaW1wb3J0IHtnZXQsIHNldCwgaXNFbXB0eX0gZnJvbSBcImxvZGFzaFwiO1xuaW1wb3J0IHtHcm93bGVyU2VydmljZX0gZnJvbSBcIi4uL21lc3NhZ2luZy9ncm93bGVyLnNlcnZpY2VcIjtcbmltcG9ydCB7TG9nZ2VyU2VydmljZX0gZnJvbSBcIi4uL21lc3NhZ2luZy9sb2dnZXIuc2VydmljZVwiO1xuaW1wb3J0IHtWYWxpZGF0aW9uU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3ZhbGlkYXRpb24uc2VydmljZVwiO1xuaW1wb3J0IHtaSVRJX0RBVEFfU0VSVklDRSwgWml0aURhdGFTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZXMveml0aS1kYXRhLnNlcnZpY2VcIjtcblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgTm9kZVdyYXBwZXJTZXJ2aWNlIGV4dGVuZHMgWmFjV3JhcHBlclNlcnZpY2Uge1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoWklUSV9ET01BSU5fQ09OVFJPTExFUikgb3ZlcnJpZGUgeml0aURvbWFpbkNvbnRyb2xsZXI6IFppdGlEb21haW5Db250cm9sbGVyU2VydmljZSxcbiAgICAgICAgQEluamVjdChaSVRJX1VSTFMpIG92ZXJyaWRlIFVSTFM6YW55LFxuICAgICAgICBASW5qZWN0KFNFVFRJTkdTX1NFUlZJQ0UpIG92ZXJyaWRlIHNldHRpbmdzU2VydmljZTogU2V0dGluZ3NTZXJ2aWNlLFxuICAgICAgICBvdmVycmlkZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgICAgICBvdmVycmlkZSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgb3ZlcnJpZGUgZ3Jvd2xlclNlcnZpY2U6IEdyb3dsZXJTZXJ2aWNlLFxuICAgICAgICBvdmVycmlkZSBsb2dnZXJTZXJ2aWNlOiBMb2dnZXJTZXJ2aWNlLFxuICAgICAgICBvdmVycmlkZSB2YWxpZGF0aW9uU2VydmljZTogVmFsaWRhdGlvblNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoeml0aURvbWFpbkNvbnRyb2xsZXIsIFVSTFMsIHNldHRpbmdzU2VydmljZSwgaHR0cCwgcm91dGVyLCBncm93bGVyU2VydmljZSwgbG9nZ2VyU2VydmljZSwgdmFsaWRhdGlvblNlcnZpY2UpO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIGluaXRaYWMoKSB7XG4gICAgICAgIGlmICh0aGlzLnphY0luaXQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhcHBJbml0ID0gZ2V0KHdpbmRvdywgJ2FwcC5pbml0Jyk7XG4gICAgICAgIHRoaXMuaW5pdFphY0xpc3RlbmVycygpO1xuICAgICAgICB0aGlzLnphY0luaXQgPSB0cnVlO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { EventEmitter, Inject, Injectable, InjectionToken } from "@angular/core";
|
|
2
|
+
import { ZITI_DOMAIN_CONTROLLER } from "../../services/ziti-domain-controller.service";
|
|
3
|
+
import { ZITI_URLS } from "../../ziti-console.constants";
|
|
4
|
+
import { SETTINGS_SERVICE } from "../../services/settings.service";
|
|
5
|
+
import { Subscription } from "rxjs";
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/common/http";
|
|
8
|
+
import * as i2 from "@angular/router";
|
|
9
|
+
import * as i3 from "../messaging/growler.service";
|
|
10
|
+
import * as i4 from "../messaging/logger.service";
|
|
11
|
+
import * as i5 from "../../services/validation.service";
|
|
12
|
+
import * as i6 from "../../services/settings.service";
|
|
13
|
+
export const ZAC_WRAPPER_SERVICE = new InjectionToken('ZAC_WRAPPER_SERVICE');
|
|
14
|
+
// @ts-ignore
|
|
15
|
+
const { $, tags } = window;
|
|
16
|
+
class ZacWrapperServiceClass {
|
|
17
|
+
constructor(zitiDomainController, URLS, settingsService, http, router, growlerService, loggerService, validationService) {
|
|
18
|
+
this.zitiDomainController = zitiDomainController;
|
|
19
|
+
this.URLS = URLS;
|
|
20
|
+
this.settingsService = settingsService;
|
|
21
|
+
this.http = http;
|
|
22
|
+
this.router = router;
|
|
23
|
+
this.growlerService = growlerService;
|
|
24
|
+
this.loggerService = loggerService;
|
|
25
|
+
this.validationService = validationService;
|
|
26
|
+
this.zitiUpdated = new EventEmitter();
|
|
27
|
+
this.pageChanged = new EventEmitter();
|
|
28
|
+
this.subscription = new Subscription();
|
|
29
|
+
this.page = '';
|
|
30
|
+
this.scriptsAdded = false;
|
|
31
|
+
this.zacInit = false;
|
|
32
|
+
}
|
|
33
|
+
initZACPersonalSettings() {
|
|
34
|
+
if (!this.settingsService?.supportedFeatures?.tags) {
|
|
35
|
+
localStorage.setItem("hideTags", "yes");
|
|
36
|
+
}
|
|
37
|
+
if (localStorage.getItem("primaryColor") != null) {
|
|
38
|
+
document.documentElement.style.setProperty("--primary", localStorage.getItem("primaryColor"));
|
|
39
|
+
}
|
|
40
|
+
if (localStorage.getItem("secondaryColor") != null) {
|
|
41
|
+
document.documentElement.style.setProperty("--secondary", localStorage.getItem("secondaryColor"));
|
|
42
|
+
}
|
|
43
|
+
var mode = localStorage.getItem("Transitions");
|
|
44
|
+
if (mode == "off") {
|
|
45
|
+
document.documentElement.style.setProperty("--transition", "0s");
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
document.documentElement.style.setProperty("--transition", "0.5s");
|
|
49
|
+
}
|
|
50
|
+
$(document).ready((e) => {
|
|
51
|
+
$(".personal").show();
|
|
52
|
+
if (!this.settingsService?.supportedFeatures?.tags) {
|
|
53
|
+
$("#HideTags").parent().hide();
|
|
54
|
+
$('<div></div>').insertBefore($("#HideTags").parent().siblings()[3]);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
resetZacEvents() {
|
|
59
|
+
$("input").off("keyup");
|
|
60
|
+
$("select").off("keyup");
|
|
61
|
+
$(".toggle").off("click");
|
|
62
|
+
$("body").off("keyup");
|
|
63
|
+
$("#SServiceName").off('keyup');
|
|
64
|
+
$("#SServiceHost").off('keyup');
|
|
65
|
+
$("#CreateButton").off('click');
|
|
66
|
+
$("#CreateIdButton").off('click');
|
|
67
|
+
$("#IdentityDownload").off('click');
|
|
68
|
+
$("#DoneIdButton").off('click');
|
|
69
|
+
$("#DoneServiceButton").off('click');
|
|
70
|
+
$("#InlineAddIdentityButton").off('click');
|
|
71
|
+
$("#InlineAddServiceButton").off('click');
|
|
72
|
+
$("#AlertButton").off('click');
|
|
73
|
+
tags.tagData = [];
|
|
74
|
+
}
|
|
75
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ZacWrapperServiceClass, deps: [{ token: ZITI_DOMAIN_CONTROLLER }, { token: ZITI_URLS }, { token: SETTINGS_SERVICE }, { token: i1.HttpClient }, { token: i2.Router }, { token: i3.GrowlerService }, { token: i4.LoggerService }, { token: i5.ValidationService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
76
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ZacWrapperServiceClass, providedIn: 'root' }); }
|
|
77
|
+
}
|
|
78
|
+
export { ZacWrapperServiceClass };
|
|
79
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ZacWrapperServiceClass, decorators: [{
|
|
80
|
+
type: Injectable,
|
|
81
|
+
args: [{ providedIn: 'root' }]
|
|
82
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
83
|
+
type: Inject,
|
|
84
|
+
args: [ZITI_DOMAIN_CONTROLLER]
|
|
85
|
+
}] }, { type: undefined, decorators: [{
|
|
86
|
+
type: Inject,
|
|
87
|
+
args: [ZITI_URLS]
|
|
88
|
+
}] }, { type: i6.SettingsService, decorators: [{
|
|
89
|
+
type: Inject,
|
|
90
|
+
args: [SETTINGS_SERVICE]
|
|
91
|
+
}] }, { type: i1.HttpClient }, { type: i2.Router }, { type: i3.GrowlerService }, { type: i4.LoggerService }, { type: i5.ValidationService }]; } });
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemFjLXdyYXBwZXItc2VydmljZS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy93cmFwcGVycy96YWMtd3JhcHBlci1zZXJ2aWNlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxZQUFZLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxFQUFDLHNCQUFzQixFQUE4QixNQUFNLCtDQUErQyxDQUFDO0FBQ2xILE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQWtCLE1BQU0saUNBQWlDLENBQUM7QUFFbEYsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7QUFLbEMsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxjQUFjLENBQXlCLHFCQUFxQixDQUFDLENBQUM7QUFFckcsYUFBYTtBQUNiLE1BQU0sRUFBQyxDQUFDLEVBQUUsSUFBSSxFQUFDLEdBQUcsTUFBTSxDQUFDO0FBRXpCLE1BQ3NCLHNCQUFzQjtJQVV4QyxZQUM4QyxvQkFBaUQsRUFDOUQsSUFBUyxFQUNGLGVBQWdDLEVBQzFELElBQWdCLEVBQ2hCLE1BQWMsRUFDZCxjQUE4QixFQUM5QixhQUE0QixFQUM1QixpQkFBb0M7UUFQSix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQTZCO1FBQzlELFNBQUksR0FBSixJQUFJLENBQUs7UUFDRixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDMUQsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLHNC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QUMsQ0FBQztRQUNwQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0MsQ0FBQyxDQUFDLHlCQUF5QixDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQzsrR0FuRWlCLHNCQUFzQixrQkFXNUIsc0JBQXNCLGFBQ3RCLFNBQVMsYUFDVCxnQkFBZ0I7bUhBYlYsc0JBQXNCLGNBRG5CLE1BQU07O1NBQ1Qsc0JBQXNCOzRGQUF0QixzQkFBc0I7a0JBRDNDLFVBQVU7bUJBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDOzswQkFZdkIsTUFBTTsyQkFBQyxzQkFBc0I7OzBCQUM3QixNQUFNOzJCQUFDLFNBQVM7OzBCQUNoQixNQUFNOzJCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RXZlbnRFbWl0dGVyLCBJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcbmltcG9ydCB7WklUSV9ET01BSU5fQ09OVFJPTExFUiwgWml0aURvbWFpbkNvbnRyb2xsZXJTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZXMveml0aS1kb21haW4tY29udHJvbGxlci5zZXJ2aWNlXCI7XG5pbXBvcnQge1pJVElfVVJMU30gZnJvbSBcIi4uLy4uL3ppdGktY29uc29sZS5jb25zdGFudHNcIjtcbmltcG9ydCB7U0VUVElOR1NfU0VSVklDRSwgU2V0dGluZ3NTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvc2V0dGluZ3Muc2VydmljZVwiO1xuaW1wb3J0IHtIdHRwQ2xpZW50fSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHtHcm93bGVyU2VydmljZX0gZnJvbSBcIi4uL21lc3NhZ2luZy9ncm93bGVyLnNlcnZpY2VcIjtcbmltcG9ydCB7TG9nZ2VyU2VydmljZX0gZnJvbSBcIi4uL21lc3NhZ2luZy9sb2dnZXIuc2VydmljZVwiO1xuaW1wb3J0IHtWYWxpZGF0aW9uU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3ZhbGlkYXRpb24uc2VydmljZVwiO1xuXG5leHBvcnQgY29uc3QgWkFDX1dSQVBQRVJfU0VSVklDRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxaYWNXcmFwcGVyU2VydmljZUNsYXNzPignWkFDX1dSQVBQRVJfU0VSVklDRScpO1xuXG4vLyBAdHMtaWdub3JlXG5jb25zdCB7JCwgdGFnc30gPSB3aW5kb3c7XG5cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFphY1dyYXBwZXJTZXJ2aWNlQ2xhc3Mge1xuXG4gICAgcm9vdFJlc291cmNlQWRkcmVzczogc3RyaW5nO1xuICAgIHppdGlVcGRhdGVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAgIHBhZ2VDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAgIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICAgIHBhZ2UgPSAnJztcbiAgICBzY3JpcHRzQWRkZWQgPSBmYWxzZTtcbiAgICB6YWNJbml0ID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChaSVRJX0RPTUFJTl9DT05UUk9MTEVSKSBwcm90ZWN0ZWQgeml0aURvbWFpbkNvbnRyb2xsZXI6IFppdGlEb21haW5Db250cm9sbGVyU2VydmljZSxcbiAgICAgICAgQEluamVjdChaSVRJX1VSTFMpIHByb3RlY3RlZCBVUkxTOiBhbnksXG4gICAgICAgIEBJbmplY3QoU0VUVElOR1NfU0VSVklDRSkgcHJvdGVjdGVkIHNldHRpbmdzU2VydmljZTogU2V0dGluZ3NTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgaHR0cDogSHR0cENsaWVudCxcbiAgICAgICAgcHJvdGVjdGVkIHJvdXRlcjogUm91dGVyLFxuICAgICAgICBwcm90ZWN0ZWQgZ3Jvd2xlclNlcnZpY2U6IEdyb3dsZXJTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgbG9nZ2VyU2VydmljZTogTG9nZ2VyU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIHZhbGlkYXRpb25TZXJ2aWNlOiBWYWxpZGF0aW9uU2VydmljZVxuICAgICkge31cblxuICAgIHB1YmxpYyBhYnN0cmFjdCBpbml0WmFjKCk7XG4gICAgcHVibGljIGFic3RyYWN0IGxvYWRDdXJyZW50UGFnZSgpXG4gICAgcHVibGljIGFic3RyYWN0IGluaXRaQUNCdXR0b25MaXN0ZW5lcigpO1xuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBpbml0WmFjTGlzdGVuZXJzKCk7XG5cbiAgICBpbml0WkFDUGVyc29uYWxTZXR0aW5ncygpIHtcbiAgICAgICAgaWYgKCF0aGlzLnNldHRpbmdzU2VydmljZT8uc3VwcG9ydGVkRmVhdHVyZXM/LnRhZ3MpIHtcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiaGlkZVRhZ3NcIiwgXCJ5ZXNcIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwicHJpbWFyeUNvbG9yXCIpIT1udWxsKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoXCItLXByaW1hcnlcIiwgbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJwcmltYXJ5Q29sb3JcIikpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInNlY29uZGFyeUNvbG9yXCIpIT1udWxsKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoXCItLXNlY29uZGFyeVwiLCBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInNlY29uZGFyeUNvbG9yXCIpKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbW9kZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiVHJhbnNpdGlvbnNcIik7XG4gICAgICAgIGlmIChtb2RlPT1cIm9mZlwiKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoXCItLXRyYW5zaXRpb25cIiwgXCIwc1wiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShcIi0tdHJhbnNpdGlvblwiLCBcIjAuNXNcIik7XG4gICAgICAgIH1cbiAgICAgICAgJChkb2N1bWVudCkucmVhZHkoKGUpID0+IHtcbiAgICAgICAgICAgICQoXCIucGVyc29uYWxcIikuc2hvdygpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLnNldHRpbmdzU2VydmljZT8uc3VwcG9ydGVkRmVhdHVyZXM/LnRhZ3MpIHtcbiAgICAgICAgICAgICAgICAkKFwiI0hpZGVUYWdzXCIpLnBhcmVudCgpLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAkKCc8ZGl2PjwvZGl2PicpLmluc2VydEJlZm9yZSgkKFwiI0hpZGVUYWdzXCIpLnBhcmVudCgpLnNpYmxpbmdzKClbM10pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZXNldFphY0V2ZW50cygpIHtcbiAgICAgICAgJChcImlucHV0XCIpLm9mZihcImtleXVwXCIpO1xuICAgICAgICAkKFwic2VsZWN0XCIpLm9mZihcImtleXVwXCIpO1xuICAgICAgICAkKFwiLnRvZ2dsZVwiKS5vZmYoXCJjbGlja1wiKTtcbiAgICAgICAgJChcImJvZHlcIikub2ZmKFwia2V5dXBcIik7XG4gICAgICAgICQoXCIjU1NlcnZpY2VOYW1lXCIpLm9mZigna2V5dXAnKTtcbiAgICAgICAgJChcIiNTU2VydmljZUhvc3RcIikub2ZmKCdrZXl1cCcpO1xuICAgICAgICAkKFwiI0NyZWF0ZUJ1dHRvblwiKS5vZmYoJ2NsaWNrJyk7XG4gICAgICAgICQoXCIjQ3JlYXRlSWRCdXR0b25cIikub2ZmKCdjbGljaycpO1xuICAgICAgICAkKFwiI0lkZW50aXR5RG93bmxvYWRcIikub2ZmKCdjbGljaycpO1xuICAgICAgICAkKFwiI0RvbmVJZEJ1dHRvblwiKS5vZmYoJ2NsaWNrJyk7XG4gICAgICAgICQoXCIjRG9uZVNlcnZpY2VCdXR0b25cIikub2ZmKCdjbGljaycpO1xuICAgICAgICAkKFwiI0lubGluZUFkZElkZW50aXR5QnV0dG9uXCIpLm9mZignY2xpY2snKTtcbiAgICAgICAgJChcIiNJbmxpbmVBZGRTZXJ2aWNlQnV0dG9uXCIpLm9mZignY2xpY2snKTtcbiAgICAgICAgJChcIiNBbGVydEJ1dHRvblwiKS5vZmYoJ2NsaWNrJyk7XG4gICAgICAgIHRhZ3MudGFnRGF0YSA9IFtdO1xuICAgIH1cbn0iXX0=
|