From 20611dd9109cfb7b0037d1693460ca71a9f3202e Mon Sep 17 00:00:00 2001 From: Jordon Leach Date: Fri, 31 May 2024 08:29:08 -0400 Subject: [PATCH] Release Kubewarden 1.6.0 --- assets/kubewarden/kubewarden-1.6.0.tgz | Bin 0 -> 1404 bytes charts/kubewarden/1.6.0/Chart.yaml | 16 ++ charts/kubewarden/1.6.0/README.md | 7 + .../kubewarden/1.6.0/templates/_helpers.tpl | 52 ++++++ charts/kubewarden/1.6.0/templates/cr.yaml | 12 ++ charts/kubewarden/1.6.0/values.yaml | 6 + extensions/kubewarden/1.6.0/files.txt | 35 ++++ .../plugin/assets/airgap-installation.md | 155 ++++++++++++++++++ .../plugin/img/icon-kubewarden.3c183b75.svg | 1 + .../plugin/kubewarden-1.6.0.umd.min.0.js | 2 + .../plugin/kubewarden-1.6.0.umd.min.0.js.map | 1 + .../plugin/kubewarden-1.6.0.umd.min.13.js | 2 + .../plugin/kubewarden-1.6.0.umd.min.13.js.map | 1 + .../plugin/kubewarden-1.6.0.umd.min.14.js | 2 + .../plugin/kubewarden-1.6.0.umd.min.14.js.map | 1 + .../plugin/kubewarden-1.6.0.umd.min.15.js | 2 + .../plugin/kubewarden-1.6.0.umd.min.15.js.map | 1 + .../kubewarden-1.6.0.umd.min.airgap-docs.js | 2 + ...ubewarden-1.6.0.umd.min.airgap-docs.js.map | 1 + .../plugin/kubewarden-1.6.0.umd.min.detail.js | 2 + .../kubewarden-1.6.0.umd.min.detail.js.map | 1 + .../plugin/kubewarden-1.6.0.umd.min.dialog.js | 2 + .../kubewarden-1.6.0.umd.min.dialog.js.map | 1 + .../plugin/kubewarden-1.6.0.umd.min.edit.js | 2 + .../kubewarden-1.6.0.umd.min.edit.js.map | 1 + .../kubewarden-1.6.0.umd.min.formatters.js | 2 + ...kubewarden-1.6.0.umd.min.formatters.js.map | 1 + .../1.6.0/plugin/kubewarden-1.6.0.umd.min.js | 128 +++++++++++++++ .../plugin/kubewarden-1.6.0.umd.min.js.map | 1 + .../plugin/kubewarden-1.6.0.umd.min.list.js | 2 + .../kubewarden-1.6.0.umd.min.list.js.map | 1 + ...bewarden-1.6.0.umd.min.policyDashboard0.js | 2 + ...rden-1.6.0.umd.min.policyDashboard0.js.map | 1 + ...bewarden-1.6.0.umd.min.policyDashboard1.js | 2 + ...rden-1.6.0.umd.min.policyDashboard1.js.map | 1 + ...kubewarden-1.6.0.umd.min.vendors~detail.js | 2 + ...warden-1.6.0.umd.min.vendors~detail.js.map | 1 + .../kubewarden-1.6.0.umd.min.vendors~edit.js | 2 + ...bewarden-1.6.0.umd.min.vendors~edit.js.map | 1 + ...bewarden-1.6.0.umd.min.vendors~markdown.js | 2 + ...rden-1.6.0.umd.min.vendors~markdown.js.map | 1 + .../kubewarden/1.6.0/plugin/package.json | 20 +++ icons/kubewarden/1.6.0-icon-kubewarden.svg | 1 + index.yaml | 22 ++- manifest.json | 3 +- 45 files changed, 502 insertions(+), 2 deletions(-) create mode 100644 assets/kubewarden/kubewarden-1.6.0.tgz create mode 100644 charts/kubewarden/1.6.0/Chart.yaml create mode 100644 charts/kubewarden/1.6.0/README.md create mode 100644 charts/kubewarden/1.6.0/templates/_helpers.tpl create mode 100644 charts/kubewarden/1.6.0/templates/cr.yaml create mode 100644 charts/kubewarden/1.6.0/values.yaml create mode 100644 extensions/kubewarden/1.6.0/files.txt create mode 100644 extensions/kubewarden/1.6.0/plugin/assets/airgap-installation.md create mode 100644 extensions/kubewarden/1.6.0/plugin/img/icon-kubewarden.3c183b75.svg create mode 100644 extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.0.js create mode 100644 extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.0.js.map create mode 100644 extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.13.js create mode 100644 extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.13.js.map create mode 100644 extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.14.js create mode 100644 extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.14.js.map create mode 100644 extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.15.js create mode 100644 extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.15.js.map create mode 100644 extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.airgap-docs.js create mode 100644 extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.airgap-docs.js.map create mode 100644 extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.detail.js create mode 100644 extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.detail.js.map create mode 100644 extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.dialog.js create mode 100644 extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.dialog.js.map create mode 100644 extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.edit.js create mode 100644 extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.edit.js.map create mode 100644 extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.formatters.js create mode 100644 extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.formatters.js.map create mode 100644 extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.js create mode 100644 extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.js.map create mode 100644 extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.list.js create mode 100644 extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.list.js.map create mode 100644 extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.policyDashboard0.js create mode 100644 extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.policyDashboard0.js.map create mode 100644 extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.policyDashboard1.js create mode 100644 extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.policyDashboard1.js.map create mode 100644 extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.vendors~detail.js create mode 100644 extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.vendors~detail.js.map create mode 100644 extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.vendors~edit.js create mode 100644 extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.vendors~edit.js.map create mode 100644 extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.vendors~markdown.js create mode 100644 extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.vendors~markdown.js.map create mode 100644 extensions/kubewarden/1.6.0/plugin/package.json create mode 100644 icons/kubewarden/1.6.0-icon-kubewarden.svg diff --git a/assets/kubewarden/kubewarden-1.6.0.tgz b/assets/kubewarden/kubewarden-1.6.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..bfa639b152a7fea254573d2480df863e01f8d710 GIT binary patch literal 1404 zcmV-?1%vt@iwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0PI=eZ`-yK&u9G=2ftUO?W<@xP8>jZ9T2n`P;707X6rr{Gacg!{i8(d&aSqDr2cWO1^omu5$knqEaeL zEmzW{5dfo>3N;~&S}Txn)n}+J&pBo(Xe!wh^;R}_j^Y_=!<9_o_=o2(8<4?>Byj@& zckSW8wU4(>mb5@qQidsn&bZ=nDXIyVu~`_4#nx%cq#(GguD6bss0(gQ+;BaEIhUE5 zo2~4%a+^AwkaKeOCDewg5>qIsq!TPq+O1p_kC`e;B~jWGf>I`;C4awKXm%3OvTXhi z$cQ9ShK6ZgTHp0kI0iHB-`} zw1lZ*rEGs~X6BsV^b5*m-$^n3R%GyyV%Ht7dx@D%BDZrXtUDvSa5kZ3DLC`TDw=I7 z_Pr1Mfi|eM%QGq}G=ISbup|B_gVVEa{68C=AL9Q*kaOU-Gt`=Am_n}?<&_Y(Izy0f z7X(T=7Va{zy21#c_U;XC0I6P3HpLWjDhwWc{_jgI|F>9_f?72F4^tE+YC~*!AE97} z{|}RsZvJ<6esakF9)y<5{?q94x}-7#J4JA=4=VRh)Ur@!t{Hil zFEmn%K${g@tXjaQiVB~hy0pV9K%(C<$oBl!t>Ba~Fh)izgJ4vFKCRLcEt;Tq&QW9r zs74UH;1)Bm3ha~{csyQsle~O$<#@TAfGLqZAN!FZ6K>b1npo z5h~+w8lWD0jdr(%S5bLwWu7-i?S|}?@xC~|kKu)BG&85wu_sGPLOs^v=EV}v92ZKw~K=L+Jgl2fYuyulFid6iNoDW)G-=F<_mdD2SQ%J^U1wOW=}; zD!W5P5ppALZNl1-9mgI+jZg6SSlHAYSQ+?T8;00 zAsy&JX>0z+^u1PryWanj!Kjn}osP~A`QL+3`yuM~T1C~V$wQq@o_24sh|3~fyj3Ut`IzT$QI50a08Od45furH{WGu4&Sef$u zY_OQ2hR2;OsCBWda-py=>D0zgo{+biPq?IFB_Cy0DlYA}zu7g~+s{~M`wSl(S;ynKC0itN7E*!BK*cHWKuC!_P>A^txE{ipqL;quOp3(>`n&kr!4 zayA7jgqj;zsLGYkTw2tWxeC}$TZ@q>y2veR@R_L){$s&2m?$@i0uz;Sqprkql6?Ja z&{h8u=U`lwDd~(){5(Ku^#YF9;*SaZ>I!#1&m&p`^6Rzr=F->sxUp);{@ZLCjjA+5 z5l*a0RR6_ KNrg55A^-sNsk+tx literal 0 HcmV?d00001 diff --git a/charts/kubewarden/1.6.0/Chart.yaml b/charts/kubewarden/1.6.0/Chart.yaml new file mode 100644 index 0000000..fcabf87 --- /dev/null +++ b/charts/kubewarden/1.6.0/Chart.yaml @@ -0,0 +1,16 @@ +annotations: + catalog.cattle.io/certified: rancher + catalog.cattle.io/kube-version: '>= v1.16.0-0 < v1.31.0-0' + catalog.cattle.io/namespace: cattle-ui-plugin-system + catalog.cattle.io/os: linux + catalog.cattle.io/permits-os: linux, windows + catalog.cattle.io/rancher-version: '>= 2.7.5-0' + catalog.cattle.io/scope: management + catalog.cattle.io/ui-component: plugins +apiVersion: v2 +appVersion: 1.6.0 +description: Kubewarden extension for Rancher Manager +name: kubewarden +type: application +version: 1.6.0 +icon: https://raw.githubusercontent.com/rancher/ui-plugin-charts/main/icons/kubewarden/1.6.0-icon-kubewarden.svg diff --git a/charts/kubewarden/1.6.0/README.md b/charts/kubewarden/1.6.0/README.md new file mode 100644 index 0000000..a6dfb84 --- /dev/null +++ b/charts/kubewarden/1.6.0/README.md @@ -0,0 +1,7 @@ +# Kubewarden Extension for Rancher Manager + +An extension for Rancher Manager which allows you to interact with Kubewarden. + +After installation, go to a cluster and you will see a new side navigation entry 'Kubewarden'. This will allow you to install Kubewarden into the cluster and manage Kubewarden resources and configuration. + +For more information see https://www.kubewarden.io/ diff --git a/charts/kubewarden/1.6.0/templates/_helpers.tpl b/charts/kubewarden/1.6.0/templates/_helpers.tpl new file mode 100644 index 0000000..bd2ec19 --- /dev/null +++ b/charts/kubewarden/1.6.0/templates/_helpers.tpl @@ -0,0 +1,52 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "extension-server.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "extension-server.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "extension-server.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "extension-server.labels" -}} +helm.sh/chart: {{ include "extension-server.chart" . }} +{{ include "extension-server.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "extension-server.selectorLabels" -}} +app.kubernetes.io/name: {{ include "extension-server.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} diff --git a/charts/kubewarden/1.6.0/templates/cr.yaml b/charts/kubewarden/1.6.0/templates/cr.yaml new file mode 100644 index 0000000..bf57d56 --- /dev/null +++ b/charts/kubewarden/1.6.0/templates/cr.yaml @@ -0,0 +1,12 @@ +apiVersion: catalog.cattle.io/v1 +kind: UIPlugin +metadata: + name: {{ include "extension-server.fullname" . }} + namespace: {{ .Release.Namespace }} + labels: {{ include "extension-server.labels" . | nindent 4 }} +spec: + plugin: + name: {{ include "extension-server.fullname" . }} + version: {{ (semver (default .Chart.AppVersion .Values.plugin.versionOverride)).Original }} + endpoint: https://raw.githubusercontent.com/rancher/ui-plugin-charts/main/extensions/kubewarden/1.6.0 + noCache: {{ .Values.plugin.noCache }} diff --git a/charts/kubewarden/1.6.0/values.yaml b/charts/kubewarden/1.6.0/values.yaml new file mode 100644 index 0000000..9cc1bd5 --- /dev/null +++ b/charts/kubewarden/1.6.0/values.yaml @@ -0,0 +1,6 @@ +nameOverride: "" +fullnameOverride: "" +plugin: + enabled: true + versionOverride: "" + noCache: false diff --git a/extensions/kubewarden/1.6.0/files.txt b/extensions/kubewarden/1.6.0/files.txt new file mode 100644 index 0000000..a875ae7 --- /dev/null +++ b/extensions/kubewarden/1.6.0/files.txt @@ -0,0 +1,35 @@ +plugin/assets/airgap-installation.md +plugin/img/icon-kubewarden.3c183b75.svg +plugin/kubewarden-1.6.0.umd.min.0.js +plugin/kubewarden-1.6.0.umd.min.0.js.map +plugin/kubewarden-1.6.0.umd.min.13.js +plugin/kubewarden-1.6.0.umd.min.13.js.map +plugin/kubewarden-1.6.0.umd.min.14.js +plugin/kubewarden-1.6.0.umd.min.14.js.map +plugin/kubewarden-1.6.0.umd.min.15.js +plugin/kubewarden-1.6.0.umd.min.15.js.map +plugin/kubewarden-1.6.0.umd.min.airgap-docs.js +plugin/kubewarden-1.6.0.umd.min.airgap-docs.js.map +plugin/kubewarden-1.6.0.umd.min.detail.js +plugin/kubewarden-1.6.0.umd.min.detail.js.map +plugin/kubewarden-1.6.0.umd.min.dialog.js +plugin/kubewarden-1.6.0.umd.min.dialog.js.map +plugin/kubewarden-1.6.0.umd.min.edit.js +plugin/kubewarden-1.6.0.umd.min.edit.js.map +plugin/kubewarden-1.6.0.umd.min.formatters.js +plugin/kubewarden-1.6.0.umd.min.formatters.js.map +plugin/kubewarden-1.6.0.umd.min.js +plugin/kubewarden-1.6.0.umd.min.js.map +plugin/kubewarden-1.6.0.umd.min.list.js +plugin/kubewarden-1.6.0.umd.min.list.js.map +plugin/kubewarden-1.6.0.umd.min.policyDashboard0.js +plugin/kubewarden-1.6.0.umd.min.policyDashboard0.js.map +plugin/kubewarden-1.6.0.umd.min.policyDashboard1.js +plugin/kubewarden-1.6.0.umd.min.policyDashboard1.js.map +plugin/kubewarden-1.6.0.umd.min.vendors~detail.js +plugin/kubewarden-1.6.0.umd.min.vendors~detail.js.map +plugin/kubewarden-1.6.0.umd.min.vendors~edit.js +plugin/kubewarden-1.6.0.umd.min.vendors~edit.js.map +plugin/kubewarden-1.6.0.umd.min.vendors~markdown.js +plugin/kubewarden-1.6.0.umd.min.vendors~markdown.js.map +plugin/package.json diff --git a/extensions/kubewarden/1.6.0/plugin/assets/airgap-installation.md b/extensions/kubewarden/1.6.0/plugin/assets/airgap-installation.md new file mode 100644 index 0000000..be3a8ca --- /dev/null +++ b/extensions/kubewarden/1.6.0/plugin/assets/airgap-installation.md @@ -0,0 +1,155 @@ +# Air gap installation + +This guide will show you how to install Kubewarden in air-gapped environments. In an air-gapped installation of Kubewarden, +you will need a private OCI registry accessible by your Kubernetes cluster. Kubewarden Policies +are WebAssembly modules; therefore, they can be stored inside an OCI-compliant registry as OCI artifacts. +You need to add Kubewarden's images and policies to this OCI registry. Let's see how to do that. + +## Requirements + +1. Private registry that supports OCI artifacts, [here](../../distributing-policies/oci-registries-support) you can find a list of supported OCI registries. It will be used for storing the container images and policies. +2. [kwctl](https://github.com/kubewarden/kwctl) 1.3.1 or above +3. docker v20.10.6 or above + +## Save container images in your workstation + +1. Download `kubewarden-images.txt` from the Kubewarden [release page](https://github.com/kubewarden/helm-charts/releases/). Alternatively, the `imagelist.txt` and `policylist.txt` files are shipped inside the helm charts containing the used container images and policy wasm modules, respectively. + +>**Note:** Optionally, you can verify the signatures of the [helm charts](../../security/verifying-kubewarden#helm-charts) and [container images](../../security/verifying-kubewarden#container-images) + +2. Add `cert-manager` if it is not available in your private registry. + +``` +helm repo add jetstack https://charts.jetstack.io +helm repo update +helm pull jetstack/cert-manager +helm template ./cert-manager-.tgz | \ + awk '$1 ~ /image:/ {print $2}' | sed s/\"//g >> ./kubewarden-images.txt +``` + +3. Download `kubewarden-save-images.sh` and `kubewarden-load-images.sh` from the [utils repository](https://github.com/kubewarden/utils). +4. Save Kubewarden container images into a .tar.gz file: + +``` +./kubewarden-save-images.sh \ + --image-list ./kubewarden-images.txt \ + --images kubewarden-images.tar.gz +``` + +Docker begins pulling the images used for an air gap install. Be patient. This process takes a few minutes. +When the process completes, your current directory will output a tarball named `kubewarden-images.tar.gz`. It will be present in the same directory where you executed the command. + +## Save policies in your workstation + +1. Add all the policies you want to use in a `policies.txt` file. A file with a list of the default policies can be found in the Kubewarden defaults [release page](https://github.com/kubewarden/helm-charts/releases/) +2. Download `kubewarden-save-policies.sh` and `kubewarden-load-policies.sh` from the [kwctl repository](https://github.com/kubewarden/kwctl/tree/main/scripts) +3. Save policies into a .tar.gz file: + +``` +./kubewarden-save-policies.sh --policies-list policies.txt +``` + +kwctl downloads all the policies and stores them as `kubewarden-policies.tar.gz` archive. + +## Helm charts + +You need to download the following helm charts in your workstation: + +``` +helm pull kubewarden/kubewarden-crds +helm pull kubewarden/kubewarden-controller +helm pull kubewarden/kubewarden-defaults +``` + +Download `cert-manager` if it is not installed in the air gap cluster. + +``` +helm pull jetstack/cert-manager +``` + +## Populate private registry + +Move `kubewarden-policies.tar.gz`, `kubewarden-images.tar.gz`, `kubewarden-load-images.sh`, `kubewarden-load-policies.sh` and `policies.txt` +to the air gap environment. + +1. Load Kubewarden images into the private registry. Docker client must be authenticated against the local registry +``` +./kubewarden-load-images.sh \ + --image-list ./kubewarden-images.txt \ + --images kubewarden-images.tar.gz \ + --registry +``` +2. Load Kubewarden policies into the private registry. Kwctl must be authenticated against the local registry (`kwctl` uses the same mechanism to authenticate as `docker`, a `~/.docker/config.json` file) +``` +./kubewarden-load-policies.sh \ + --policies-list policies.txt \ + --policies kubewarden-policies.tar.gz \ + --registry \ + --sources-path sources.yml +``` + +>***Caution:*** +>The `sources.yaml` file is needed by kwctl to connect to registries that fall into these categories: +> +>* Authentication is required +>* Self signed certificate is being used +>* No TLS termination is done +> +>Please refer to [the section on custom certificate authorities](../../distributing-policies/custom-certificate-authorities.md) in our documentation to learn more about configuring the `sources.yaml` file + + +## Install Kubewarden + +Let's install Kubewarden now that we have everything we need in our private registry. The only difference with a normal +Kubewarden installation is that we need to change the registry in the container images and policies to our private registry. + +Install `cert-manager` if it is not already installed in the air gap cluster: + +``` +helm install --create-namespace cert-manager ./cert-manager-.tgz \ + -n kubewarden \ + --set installCRDs=true \ + --set image.repository=/jetstack/cert-manager-controller \ + --set webhook.image.repository=/jetstack/cert-manager-webhook \ + --set cainjector.image.repository=/jetstack/cert-manager-cainjector \ + --set startupapicheck.image.repository=/jetstack/cert-manager-ctl +``` + +Let's install the Kubewarden stack: + +``` +helm install --wait -n kubewarden \ + kubewarden-crds kubewarden-crds.tgz +``` + +``` +helm install --wait -n kubewarden \ + kubewarden-controller kubewarden-controller.tgz \ + --set global.cattle.systemDefaultRegistry= +``` + +``` +helm install --wait -n kubewarden \ + kubewarden-defaults kubewarden-defaults.tgz \ + --set global.cattle.systemDefaultRegistry= +``` + +>***Caution*** +>To download the recommended policies installed by the `kubewarden-defaults` Helm +>Chart from a registry other than `global.cattle.systemDefaultRegistry`, you can +>utilize the `recommendedPolicies.defaultPoliciesRegistry` configuration. This +>configuration allows users to specify a registry dedicated to pulling the OCI +>artifacts of the policies. It is particularly useful when their container image +>repository does not support OCI artifacts. +> +>To install and wait for the installation to complete, use the following command: +> +>```console +>helm install --wait -n kubewarden \ +> kubewarden-defaults kubewarden-defaults.tgz \ +> --set global.cattle.systemDefaultRegistry= \ +> --set recommendedPolicies.defaultPoliciesRegistry= +>``` +> +>If the `recommendedPolicies.defaultPoliciesRegistry` configuration is not set, +>the `global.cattle.systemDefaultRegistry` will be used as the default registry. diff --git a/extensions/kubewarden/1.6.0/plugin/img/icon-kubewarden.3c183b75.svg b/extensions/kubewarden/1.6.0/plugin/img/icon-kubewarden.3c183b75.svg new file mode 100644 index 0000000..99494a4 --- /dev/null +++ b/extensions/kubewarden/1.6.0/plugin/img/icon-kubewarden.3c183b75.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.0.js b/extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.0.js new file mode 100644 index 0000000..c0d280d --- /dev/null +++ b/extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.0.js @@ -0,0 +1,2 @@ +(("undefined"!==typeof self?self:this)["webpackJsonpkubewarden_1_6_0"]=("undefined"!==typeof self?self:this)["webpackJsonpkubewarden_1_6_0"]||[]).push([[0],{"6ba7":function(e,t,s){"use strict";s.r(t);var a=function(){var e=this,t=e._self._c;return t("div",{staticClass:"reporter-panel"})},r=[],o=s("ad2f"),n={async fetch(){const e=!this.$route.params.resource,t=this.$route.params.resource;e&&await Object(o["g"])(this.$store,!0),(t||this.$route.path.includes("projectsnamespaces"))&&await Object(o["g"])(this.$store,!1,t)}},c=n,u=(s("7db5"),s("d802")),i=Object(u["a"])(c,a,r,!1,null,"1a7cd2cb",null);t["default"]=i.exports},"7db5":function(e,t,s){"use strict";s("7ee0")},"7ee0":function(e,t,s){var a=s("bf91");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[e.i,a,""]]),a.locals&&(e.exports=a.locals);var r=s("0ed3").default;r("6999e797",a,!0,{sourceMap:!1,shadowMode:!1})},bf91:function(e,t,s){var a=s("5eaa");t=a(!1),t.push([e.i,".reporter-panel[data-v-1a7cd2cb]{display:none}",""]),e.exports=t}}]); +//# sourceMappingURL=kubewarden-1.6.0.umd.min.0.js.map \ No newline at end of file diff --git a/extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.0.js.map b/extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.0.js.map new file mode 100644 index 0000000..a260611 --- /dev/null +++ b/extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.0.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack://kubewarden-1.6.0/./components/PolicyReporter/ReporterPanel.vue","webpack://kubewarden-1.6.0/components/PolicyReporter/ReporterPanel.vue","webpack://kubewarden-1.6.0/./components/PolicyReporter/ReporterPanel.vue?4eaa","webpack://kubewarden-1.6.0/./components/PolicyReporter/ReporterPanel.vue?979d","webpack://kubewarden-1.6.0/./components/PolicyReporter/ReporterPanel.vue?7ae9","webpack://kubewarden-1.6.0/./components/PolicyReporter/ReporterPanel.vue?5650","webpack://kubewarden-1.6.0/./components/PolicyReporter/ReporterPanel.vue?1132"],"names":["render","_vm","this","_c","_self","staticClass","staticRenderFns","isClusterLevel","$route","params","resource","resourceType","getReports","$store","path","includes","component","content","__esModule","default","module","i","locals","exports","add","___CSS_LOADER_API_IMPORT___","push"],"mappings":"wMAAA,IAAIA,EAAS,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACE,YAAY,oBAErFC,EAAkB,G,YCOP,GACf,cACA,MAAAC,GAAA,KAAAC,OAAAC,OAAAC,SACAC,EAAA,KAAAH,OAAAC,OAAAC,SAGAH,SACAK,eAAA,KAAAC,QAAA,IAGAF,GAAA,KAAAH,OAAAM,KAAAC,SAAA,8BACAH,eAAA,KAAAC,QAAA,EAAAF,KCpBmZ,I,wBCQ/YK,EAAY,eACd,EACAhB,EACAM,GACA,EACA,KACA,WACA,MAIa,aAAAU,E,6CCnBf,W,uBCGA,IAAIC,EAAU,EAAQ,QACnBA,EAAQC,aAAYD,EAAUA,EAAQE,SACnB,kBAAZF,IAAsBA,EAAU,CAAC,CAACG,EAAOC,EAAIJ,EAAS,MAC7DA,EAAQK,SAAQF,EAAOG,QAAUN,EAAQK,QAE5C,IAAIE,EAAM,EAAQ,QAAqEL,QAC1EK,EAAI,WAAYP,GAAS,EAAM,CAAC,WAAY,EAAM,YAAa,K,qBCR5E,IAAIQ,EAA8B,EAAQ,QAC1CF,EAAUE,GAA4B,GAEtCF,EAAQG,KAAK,CAACN,EAAOC,EAAI,iDAAkD,KAE3ED,EAAOG,QAAUA","file":"kubewarden-1.6.0.umd.min.0.js","sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"reporter-panel\"})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ReporterPanel.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ReporterPanel.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ReporterPanel.vue?vue&type=template&id=1a7cd2cb&scoped=true&\"\nimport script from \"./ReporterPanel.vue?vue&type=script&lang=js&\"\nexport * from \"./ReporterPanel.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ReporterPanel.vue?vue&type=style&index=0&id=1a7cd2cb&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1a7cd2cb\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ReporterPanel.vue?vue&type=style&index=0&id=1a7cd2cb&prod&lang=scss&scoped=true&\"","// style-loader: Adds some css to the DOM by adding a ","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ResourceTab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ResourceTab.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ResourceTab.vue?vue&type=template&id=33cf2dc5&scoped=true&\"\nimport script from \"./ResourceTab.vue?vue&type=script&lang=js&\"\nexport * from \"./ResourceTab.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ResourceTab.vue?vue&type=style&index=0&id=33cf2dc5&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"33cf2dc5\",\n null\n \n)\n\nexport default component.exports","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".pr-tab__container .sizzle-warning-bg[data-v-33cf2dc5]{background-color:#614ea2;color:#fff}.pr-tab__container .text-warning[data-v-33cf2dc5]{color:var(--warning)!important}.pr-tab__container .text-darker[data-v-33cf2dc5]{color:var(--dark)!important}.pr-tab__container .sizzle-warning[data-v-33cf2dc5]{color:#614ea2}.pr-tab__sub-row[data-v-33cf2dc5]{background-color:var(--body-bg);border-bottom:1px solid var(--sortable-table-top-divider);padding-left:1rem;padding-right:1rem}.pr-tab__sub-row .message[data-v-33cf2dc5]{display:flex;flex-direction:column}.pr-tab__sub-row .details[data-v-33cf2dc5]{display:flex;flex-direction:row}.pr-tab__sub-row .details .col[data-v-33cf2dc5]{display:flex;flex-direction:column}.pr-tab__sub-row .details .col section[data-v-33cf2dc5]{margin-bottom:1.5rem}.pr-tab__sub-row .details .col .title[data-v-33cf2dc5]{color:var(--muted);margin-bottom:.5rem}\", \"\"]);\n// Exports\nmodule.exports = exports;\n"],"sourceRoot":""} \ No newline at end of file diff --git a/extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.14.js b/extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.14.js new file mode 100644 index 0000000..6656cc8 --- /dev/null +++ b/extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.14.js @@ -0,0 +1,2 @@ +(("undefined"!==typeof self?self:this)["webpackJsonpkubewarden_1_6_0"]=("undefined"!==typeof self?self:this)["webpackJsonpkubewarden_1_6_0"]||[]).push([[14],{"7ada":function(e,t,n){(function(n){var o,a,i;(function(n,r){a=[],o=r,i="function"===typeof o?o.apply(t,a):o,void 0===i||(e.exports=i)})(0,(function(){"use strict";function t(e,t){return"undefined"==typeof t?t={autoBom:!1}:"object"!=typeof t&&(console.warn("Deprecated: Expected third argument to be a object"),t={autoBom:!t}),t.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob(["\ufeff",e],{type:e.type}):e}function o(e,t,n){var o=new XMLHttpRequest;o.open("GET",e),o.responseType="blob",o.onload=function(){c(o.response,t,n)},o.onerror=function(){console.error("could not download file")},o.send()}function a(e){var t=new XMLHttpRequest;t.open("HEAD",e,!1);try{t.send()}catch(e){}return 200<=t.status&&299>=t.status}function i(e){try{e.dispatchEvent(new MouseEvent("click"))}catch(o){var t=document.createEvent("MouseEvents");t.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),e.dispatchEvent(t)}}var r="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof n&&n.global===n?n:void 0,c=r.saveAs||("object"!=typeof window||window!==r?function(){}:"download"in HTMLAnchorElement.prototype?function(e,t,n){var c=r.URL||r.webkitURL,s=document.createElement("a");t=t||e.name||"download",s.download=t,s.rel="noopener","string"==typeof e?(s.href=e,s.origin===location.origin?i(s):a(s.href)?o(e,t,n):i(s,s.target="_blank")):(s.href=c.createObjectURL(e),setTimeout((function(){c.revokeObjectURL(s.href)}),4e4),setTimeout((function(){i(s)}),0))}:"msSaveOrOpenBlob"in navigator?function(e,n,r){if(n=n||e.name||"download","string"!=typeof e)navigator.msSaveOrOpenBlob(t(e,r),n);else if(a(e))o(e,n,r);else{var c=document.createElement("a");c.href=e,c.target="_blank",setTimeout((function(){i(c)}))}}:function(e,t,n,a){if(a=a||open("","_blank"),a&&(a.document.title=a.document.body.innerText="downloading..."),"string"==typeof e)return o(e,t,n);var i="application/octet-stream"===e.type,c=/constructor/i.test(r.HTMLElement)||r.safari,s=/CriOS\/[\d]+/.test(navigator.userAgent);if((s||i&&c)&&"object"==typeof FileReader){var l=new FileReader;l.onloadend=function(){var e=l.result;e=s?e:e.replace(/^data:[^;]*;/,"data:attachment/file;"),a?a.location.href=e:location=e,a=null},l.readAsDataURL(e)}else{var f=r.URL||r.webkitURL,u=f.createObjectURL(e);a?a.location=u:location.href=u,a=null,setTimeout((function(){f.revokeObjectURL(u)}),4e4)}});r.saveAs=c.saveAs=c,e.exports=c}))}).call(this,n("7d15"))}}]); +//# sourceMappingURL=kubewarden-1.6.0.umd.min.14.js.map \ No newline at end of file diff --git a/extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.14.js.map b/extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.14.js.map new file mode 100644 index 0000000..5ef60c4 --- /dev/null +++ b/extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.14.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack://kubewarden-1.6.0//home/runner/work/kubewarden-ui/kubewarden-ui/node_modules/file-saver/dist/FileSaver.min.js"],"names":["this","b","a","autoBom","console","warn","test","type","Blob","c","d","e","XMLHttpRequest","open","responseType","onload","response","onerror","error","send","status","dispatchEvent","MouseEvent","document","createEvent","initMouseEvent","window","f","self","global","saveAs","HTMLAnchorElement","prototype","g","h","i","URL","webkitURL","j","createElement","name","download","rel","href","origin","location","target","createObjectURL","setTimeout","revokeObjectURL","navigator","msSaveOrOpenBlob","title","body","innerText","HTMLElement","safari","userAgent","FileReader","onloadend","result","replace","readAsDataURL","k","l","module","exports"],"mappings":"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","file":"kubewarden-1.6.0.umd.min.14.js","sourcesContent":["(function(a,b){if(\"function\"==typeof define&&define.amd)define([],b);else if(\"undefined\"!=typeof exports)b();else{b(),a.FileSaver={exports:{}}.exports}})(this,function(){\"use strict\";function b(a,b){return\"undefined\"==typeof b?b={autoBom:!1}:\"object\"!=typeof b&&(console.warn(\"Deprecated: Expected third argument to be a object\"),b={autoBom:!b}),b.autoBom&&/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(a.type)?new Blob([\"\\uFEFF\",a],{type:a.type}):a}function c(b,c,d){var e=new XMLHttpRequest;e.open(\"GET\",b),e.responseType=\"blob\",e.onload=function(){a(e.response,c,d)},e.onerror=function(){console.error(\"could not download file\")},e.send()}function d(a){var b=new XMLHttpRequest;b.open(\"HEAD\",a,!1);try{b.send()}catch(a){}return 200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent(\"click\"))}catch(c){var b=document.createEvent(\"MouseEvents\");b.initMouseEvent(\"click\",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f=\"object\"==typeof window&&window.window===window?window:\"object\"==typeof self&&self.self===self?self:\"object\"==typeof global&&global.global===global?global:void 0,a=f.saveAs||(\"object\"!=typeof window||window!==f?function(){}:\"download\"in HTMLAnchorElement.prototype?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement(\"a\");g=g||b.name||\"download\",j.download=g,j.rel=\"noopener\",\"string\"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target=\"_blank\")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:\"msSaveOrOpenBlob\"in navigator?function(f,g,h){if(g=g||f.name||\"download\",\"string\"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement(\"a\");i.href=f,i.target=\"_blank\",setTimeout(function(){e(i)})}}:function(a,b,d,e){if(e=e||open(\"\",\"_blank\"),e&&(e.document.title=e.document.body.innerText=\"downloading...\"),\"string\"==typeof a)return c(a,b,d);var g=\"application/octet-stream\"===a.type,h=/constructor/i.test(f.HTMLElement)||f.safari,i=/CriOS\\/[\\d]+/.test(navigator.userAgent);if((i||g&&h)&&\"object\"==typeof FileReader){var j=new FileReader;j.onloadend=function(){var a=j.result;a=i?a:a.replace(/^data:[^;]*;/,\"data:attachment/file;\"),e?e.location.href=a:location=a,e=null},j.readAsDataURL(a)}else{var k=f.URL||f.webkitURL,l=k.createObjectURL(a);e?e.location=l:location.href=l,e=null,setTimeout(function(){k.revokeObjectURL(l)},4E4)}});f.saveAs=a.saveAs=a,\"undefined\"!=typeof module&&(module.exports=a)});\n\n//# sourceMappingURL=FileSaver.min.js.map"],"sourceRoot":""} \ No newline at end of file diff --git a/extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.15.js b/extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.15.js new file mode 100644 index 0000000..4a76285 --- /dev/null +++ b/extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.15.js @@ -0,0 +1,2 @@ +(("undefined"!==typeof self?self:this)["webpackJsonpkubewarden_1_6_0"]=("undefined"!==typeof self?self:this)["webpackJsonpkubewarden_1_6_0"]||[]).push([[15],{"1bb6":function(e,t){const o=[{kubewarden:{title:"Kubewarden",dashboard:{title:"Dashboard",install:"Install",notInstalled:"Kubewarden is not installed",button:"Install Kubewarden Prerequisites",intro:"Welcome to Kubewarden",blurb:"A Dynamic Admission Controller for Kubernetes",description:"Kubewarden is a policy engine for Kubernetes. It helps with keeping your Kubernetes clusters secure and compliant. Kubewarden policies can be written using regular programming languages or Domain Specific Languages (DSL). Policies are compiled into WebAssembly modules that are then distributed using traditional container registries.\n",getStarted:"Get Started",issues:"Issues",upgrade:{appVersion:"App Version",appUpgrade:"App Upgrade",controllerChart:"Controller",defaultsChart:"Defaults",appVersionUnsatisfied:"The app version of the Kubewarden Defaults ({defaultsAppVersion}) chart does not match the app version of the Kubewarden Controller chart ({controllerAppVersion}). This chart will need to be updated to match the app version of the Kubewarden Controller chart."},policyReports:{oldPolicyReportsIncompatible:"Policy Reports are not compatible with the current version of the Kubewarden App. Please update to version v1.11.0 or newer.",newPolicyReportsIncompatible:"Policy Reports are not compatible with the current version of the Kubewarden extension. Please update to version 1.4.0 or newer."},headers:{policyServer:{title:"Policy Servers",description:"Kubewarden uses Policy Servers to receive requests to be validated. It does that by executing Kubewarden's policies.",linkText:"Create Policy Server",slotTitle:"Policy Server Pods"},admissionPolicy:{title:"Admission Policies",description:"An Admission Policy is a namespace-wide resource. The policy will process only the requests that are targeting the Namespace where the Admission Policy is defined.",linkText:"Create Admission Policy",slotTitle:"Policies"},clusterAdmissionPolicy:{title:"Cluster Admission Policies",description:"The Cluster Admission Policy resource is the core of the Kubewarden stack. This resource defines how policies evaluate requests.",linkText:"Create Cluster Admission Policy",slotTitle:"Policies"},modes:{title:"Policy Modes",monitor:"Monitor",protect:"Protect"}},appInstall:{title:"Kubewarden App Install",description:"This will take you to the app installation page for Kubewarden.",button:"Install Kubewarden",stepTitle:"Kubewarden Install",reload:"Unable to fetch Kubewarden Helm chart - reload required.",versionError:{title:"Chart Version not found.",message:"Unable to determine the latest stable version of the kubewarden-controller chart. Please make sure the Helm repository is configured correctly."}},prerequisites:{title:"Prerequisites",certManager:{title:"Install Cert-Manager Package",description:"The kubewarden-controller depends on cert-manager. You need cert-manager to be installed before installing the kubewarden-controller chart.",manualStep:'Click the button below and follow the Documentation, or run the kubectl command to install the latest version of cert-manager:\n',applyCommand:"kubectl apply -f https://github.com/jetstack/cert-manager/releases/latest/download/cert-manager.yaml",openShell:"Open Kubectl Shell",stepProgress:"The active step will progress once Cert-Manager is installed."},repository:{title:"Repository",description:"You will need the Kubewarden Helm repository (https://charts.kubewarden.io) to install the `kubewarden` chart."},airGapped:{warning:"An air-gapped installation has been detected, this will require intervention to enable access to Kubewarden images and policies. It is necessary to make them available from an OCI registry that is accessible to the cluster.",docs:"Follow the documentation to setup an OCI registry for further installation.\n"}}},tabs:{"security-contexts":{label:"Security Contexts"},general:{label:"General",nameOverride:{label:"nameOverride",description:"Replaces the release name of the chart in Chart.yaml file when this is used to construct Kubernetes object names."},fullnameOverride:{label:"fullnameOverride",description:"Completely replaces the generated release name."},imagePullSecrets:{label:"Image Pull Secrets",description:"Secrets to pull container images from private registries."},image:{label:"Image",description:"Controller image to be used.",repository:"Repository",tag:"Tag"},preDeleteJob:"Kubectl image to be used in the pre-delete helm hook.",podAnnotations:"Pod Annotations",nodeSelector:"Node Selector",tolerations:"Tolerations",affinity:"Affinity",tls:{source:"Source",certManagerIssuerName:"Cert-Manager Issuer Name"}},telemetry:{label:"Telemetry",checkbox:"Enabled",port:"Port",tracing:{label:"Tracing",endpoint:"Endpoint",jaeger:"Jaeger endpoint to send traces.",placeholder:"all-in-one-collector.jaeger.svc.cluster.local:14250"}},verification:{label:"Verification"},registry:{label:"Container Registry"}},policyServer:{title:"Policy Servers",noDefaultsInstalled:{description:'The default PolicyServer and policies are not installed, click the button below to begin installing this chart. See the documentation for more information on installing charts.\n',button:"Install Chart"},policyGauge:{byStatus:"Policies by Status",traces:"Policy Validations"},groups:{kind:"Policy Type"}},admissionPolicy:{title:"Admission Policies",description:"AdmissionPolicy is a namespace-wide resource. These policies will process only the requests that are targeting the Namespace where the AdmissionPolicy is defined."},clusterAdmissionPolicy:{title:"Cluster Admission Policies",description:"ClusterAdmissionPolicy is a cluster-wide resource. These policies will process all requests within the cluster where the ClusterAdmissionPolicy is defined.",kwDefaultsSettingsCompatibility:"ClusterAdmissionPolicies that derive from kubewarden-default Helm Chart will not have editable policy settings since the kubewarden-default Helm Chart version should be greater or equal than 2.0.0",defaultsUpdateBtn:"Update"},customPolicy:{badge:"Custom",title:"Custom Policy",description:"A generic template for using your own policy."},policies:{noArtifactHub:'Official Kubewarden policies are hosted on ArtifactHub, in order to show these you will need to add `artifacthub.io` to the whitelist-domain setting.',noRules:"There are no rules configured for this policy.",namespaceWarning:"This policy is targeting Rancher specific namespaces which will cause catastrophic failures with your Rancher deployment.",official:"Official Kubewarden Policy",airgap:{banner:"An air-gapped installation is detected, you will be unable to use the policies listed within the ArtifactHub catalog. You are still able to deploy a custom policy by referencing a WebAssembly module that is accessible to this cluster."}},utils:{keyword:"Filter by Keyword",organization:"Filter by Organization",resource:"Filter by Resource Type",resetFilter:"Reset Filter"},tracing:{description:"Tracing allows to collect fine grained details about policy evaluations. It can be a useful tool for debugging issues inside of your Kubewarden deployment and policies.",prerequisites:{label:"Prerequisites",description:"There are a few resources which need to be installed for tracing to work correctly with the Kubewarden Controller.",warning:"The deployments of these resources can take a few minutes to become active."},installOpenTelemetry:"Click the button below or run the kubectl command to install the latest version of OpenTelemetry.\n",openTelemetry:'The OpenTelemetry Operator must be installed, follow the documentation to setup the OpenTelemetry Operator.\n',jaeger:'The Jaeger Operator and Instance must be installed, follow the documentation to setup tracing for your policies.\n',noRelatedPolicies:"No related policies found.",noRelatedTraces:"No tracing data exists for the related policies.",noTraces:"No tracing data exists for this policy.",config:{label:'Tracing must be configured with a Jaeger endpoint in the "Telemetry" tab of the Kubewarden Controller chart settings.\n',link:"Update Config"}},monitoring:{notInstalled:'The Monitoring app is not installed, this will will need to be installed and configured to enable metrics. Follow these steps to add the Kubewarden ServiceMonitor for Prometheus.\n',install:"Install Monitoring",prerequisites:{label:"Prerequisites",description:"There are a few resources which need to be installed and configured correctly for monitoring to be available.",warning:"The deployments of these resources can take a few minutes to become active.",tooltips:{prerequisites:"The prerequisite steps have not been completed.",appNotInstalled:"The { app } app is not yet installed.",nsNotFound:"The Namespace `cattle-dashboards` cannot be found.",chartError:"The { chart } chart cannot be found, ensure the repository exists and try reloading the page.",monitorsNotFound:"No Service Monitors found in the `{ namespace }` namespace connected to the Policy Server."},monitoringApp:{label:'The Rancher Monitoring app must be installed. Follow the documentation to install and enable Rancher Monitoring.',install:"Install App",edit:"Edit Config"},serviceMonitor:{label:'A Service Monitor for this Policy Server does not exist. Follow the documentation to learn more about Service Monitors.'},configMap:{label:"Grafana Dashboards (ConfigMaps) for the Policy Servers and for Kubewarden Policies must be created.",button:"Add Dashboards",conflictingDashboardsBanner:"{count, plural,\n=1 {There is a conflicting ConfigMap, this must be deleted before proceeding:}\nother {There are conflicting ConfigMaps, the following must be deleted before proceeding:}\n}"},controllerConfig:{label:'The Kubewarden Controller must be configured to enable metrics. Follow these steps to properly configure the kubewarden-controller chart.',button:"Edit Config"}},warning:{noProxy:"The Grafana proxy URL can not be found or is configured incorrectly."}},metrics:{notInstalled:"The Grafana dashboard for this Kubewarden resource can not be found. You need to create the ConfigMap for the dashboard.",reload:"Grafana dashboard created - reload required",noService:"The Metrics service is not currently active or is not installed correctly. Check the status of the Monitoring app."},policyConfig:{tabs:{general:"General",rules:"Rules",namespaceSelector:"Namespace Selector",settings:"Settings",contextAware:"Context Aware Resources"},serverSelect:{label:"Policy Server",tooltip:"The PolicyServer that will receive the requests to be validated."},module:{label:"Module",tooltip:"This is the WebAssembly module that holds the validation or mutation logic."},mutating:{label:"Mutating",tooltip:"A mutating policy will rebuild the requests with definied values that are conformant with the policy definition."},mode:{label:"Mode",tooltip:"The monitor mode is a way to deploy policies to the cluster in a way that all requests that go through the policy will be accepted, as if the policy didn't exist. Defaults to 'Protect'.",warning:"Once the policy mode has been switched to Protect, you will not be able to revert this change.",update:{checkbox:"Update to Protect Mode",title:"Update Policy Mode",body:"The monitor mode is a way to view the behavior of a policy without letting it make the final decision on requests that are validated by the policy."}},backgroundAudit:{label:"Background Audit",tooltip:'Indicates whether a policy should be used or skipped when performing audit checks. If false, the policy cannot produce meaningful evaluation results during audit checks and will be skipped. The default is "true".'},ignoreRancherNamespaces:{label:"Ignore Rancher Namespaces",tooltip:"Certain policies will break core services of Rancher, this will add a default list of namespaces to ignore."},namespaceSelector:{label:"Namespace Selector",description:"NamespaceSelector decides whether to evaluate the policy on a request, based on whether the namespace for that request matches the selector. If the object of the request is a namespace, the matching is performed on object.metadata.labels. If the object is another cluster scoped resource, it never skips the policy evaluation.",addSelector:"Add Selectors",matchExpressions:{label:"Match Expressions",tooltip:"matchExpressions is a list of label selector requirements."},matchLabels:{label:"Match Labels",tooltip:"matchLabels is a map of key, value pairs. A single key, value in the matchLabels map is equivalent to an element of matchExpressions, whose key field is 'key', the operator is 'In', and the values array contains only 'value'."}},rules:{add:"Add Rule Set",remove:"Remove Rule Set"},apiGroups:{label:"API Groups",tooltip:"The API groups the resources belong to."},apiVersions:{label:"API Versions",tooltip:"The API versions the resources belong to."},operations:{label:"Operation type",tooltip:"The operations the admission hook cares about - CREATE, UPDATE, DELETE, CONNECT."},resources:{label:"Resource type",tooltip:"The targeted resources for the policy. Needs to be a resource that is supported by the policy, this is determined in the `metadata.yml` of the selected policy."},scope:{label:"Scope",tooltip:'Specifies the scope of this rule. Valid values are "Cluster", "Namespaced", and "". "Cluster" means that only cluster-scoped resources will match this rule. Namespace API objects are cluster-scoped. "Namespaced" means that only namespaced resources will match this rule. "" means that there are no scope restrictions. Subresources match the scope of their parent resource. Default is "*".'},contextAware:{label:"Context Aware Resources",description:"A list of Kubernetes resources the policy is allowed to access at evaluation time. Access to these resources is done using the ServiceAccount of the PolicyServer the policy is assigned to.",warning:"Kubewarden administrators need to thoroughly examine the types of resources that a policy will access in order to prevent any misuse or abuse of the system. In some cases, it may be necessary to increase the permissions of the ServiceAccount associated with the PolicyServer to enable the policy to retrieve the required information. Although policies are restricted to read-only access to Kubernetes resources, there is a risk that a malicious attacker could exploit a Kubewarden policy to extract sensitive data from the cluster.",resource:{add:"Add Resource",remove:"Remove Resource",apiVersion:{label:"API Version",tooltip:"This is the apiVersion of the resource (v1 for core group, groupName/groupVersions for other)."},kind:{label:"Kind",tooltip:"Singular PascalCase name of the resource"}}}},policyServerConfig:{securityContexts:{containerConfig:"Container configuration",podConfig:"Pod configuration","allow-priv-escalation":{label:"Allow Privilege Escalation",tooltip:'Allow Privilege Escalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the "no_new_privs" flag will be set on the container process'},capabilities:{title:"Capabilities",add:"Added Capabilities",drop:"Dropped Capabilities",addLabel:"Add",placeholder:"Capability"},privileged:{label:"Run container in privileged mode",tooltip:"Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host"},procMount:{label:"ProcMount",placeholder:"ProcMount type"},readOnlyRootFilesystem:{label:"Whether this container has a read-only root filesystem"},runAsNonRoot:{label:"Container must run as a non-root user",tooltip:"If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does"},runAsGroup:"Run As Group",runAsUser:"Run As User",seLinuxOptions:{title:"SE Linux Options",level:{label:"SELinux level",placeholder:"SELinux level label"},role:{label:"SELinux role",placeholder:"SELinux role label"},type:{label:"SELinux type",placeholder:"SELinux type label"},user:{label:"SELinux user",placeholder:"SELinux user label"}},seccompProfile:{title:"Seccomp Profile",inputEnabledLabel:"Add Seccomp Profile Configuration",localhostProfile:{label:"Localhost Profile",placeholder:"Localhost Profile"},type:"Type"},windowsOptions:{title:"Windows Options",gmsaCredentialSpec:{label:"GMSA Credential Spec",placeholder:"GMSA Credential Spec"},gmsaCredentialSpecName:{label:"GMSA Credential Spec Name",placeholder:"GMSA Credential Spec Name"},hostProcess:{label:"Run as a 'Host Process' container",tooltip:"All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). In addition, if HostProcess is true then HostNetwork must also be set to true"},runAsUserName:{label:"Run As UserName",placeholder:"Run As UserName"}},fsGroup:{label:"FS Group"},fsGroupChangePolicy:{label:"FS Group change Policy",placeholder:"FS Group change Policy"},supplementalGroups:{addLabel:"Add Group",label:"Supplemental Group"},sysctls:{addLabel:"Add Sysctls",label:"Sysctls",name:{label:"Name",placeholder:"Name"},value:{label:"Value",placeholder:"Value"}}},defaultImage:{label:"Default Image",tooltip:"Use the default `policy-server` container image.",versionWarning:"The latest stable version for Policy Server could not be determined, falling back to default."},image:{label:"Image URL",tooltip:"This is the container image the policy server."},replicas:"Replicas",registry:{description:'The PolicyServer allows you to pull policies from OCI registries and HTTP servers, by default HTTPS is enforced with host TLS verification. You can interact with registries using untrusted certificates or even without TLS by using the `insecureSources` setting. This approach is highly discouraged in environments closer to production. More information on configuring custom certificate authorities can be found here.'},insecureSources:{title:"Insecure Sources",addLabel:"Add Insecure Source",placeholder:"registry-dev.example.com:5500"},sourceAuthorities:{title:"Source Authorities",add:"Add Source Authority",endpoint:"Registry URI Endpoint",placeholder:"registry-pre.example.com:5500",certificate:{label:"Certificate",add:"Add PEM Certificate",remove:"Remove Certificate",file:"Read Certificate from File"}},verification:{label:"Verification Config",description:'This is the name of a VerificationConfig configmap within the same namespace, containing a Sigstore verification configuration. The configuration must be under a key named verification-config in the Configmap. More information can be found in the Kubewarden docs.'}},policyCharts:{signedPolicy:{label:"Signed",tooltip:"This policy has been signed with { signatures }."},mutationPolicy:{label:"Mutation",tooltip:"A mutating policy will rebuild the requests with definied values that are conformant with the policy definition."},contextAware:{label:"Context Aware",tooltip:"Can determine whether an AdmissionRequest has to be accepted or rejected based on other resources already deployed in the cluster."}},policyReporter:{title:"Policy Reporter",link:"Policy Reporter UI",noSchema:{banner:"Kubewarden has not been installed, this will need to be accomplished before installing the Policy Reporter",link:"Install Kubewarden"},incompatible:{banner:"Your cluster does not support policy reports, upgrade your Kubewarden to version `1.7.0` or greater to add the required crds.",current:"Current Kubewarden Controller version",noCrds:{banner:"The CRDs for `wgpolicyk8s.io.clusterpolicyreport` or `wgpolicyk8s.io.policyreport` can not be found. These must be installed to support policy reports."}},service:{main:{banner:{unavailable:"The Policy Reporter service is unavailable, ensure the properties `auditScanner.enable` and `auditScanner.policyReporter` are set to `true` within the Kubewarden Controller chart."}},ui:{banner:{unavailable:"The Policy Reporter UI service is unavailable, ensure the property `policy-reporter.ui.enabled` is set to `true` within the Kubewarden Controller chart."}}},url:{banner:{unavailable:"The Policy Reporter UI proxy URL is unavailble, please ensure that the UI is properly configured."}},deployment:{banner:{unavailable:"The Policy Reporter UI Deployment is currently in a `{ state }` state, please wait."}},headers:{policyReports:{label:"Compliance",description:"Policy Reports are the results of the policy scans that are stored using the PolicyReport Custom Resource."},clusterPolicyReports:{label:"Cluster Compliance",description:"Cluster Policy Reports are the results of the policy scans that are stored using the ClusterPolicyReport Custom Resource."},label:"Compliance",description:"When using the Kubewarden Audit Scanner, the results of the policy scans are stored using the PolicyReport Custom Resource.",policyReportsTab:{policy:{label:"Policy"},rule:{label:"Rule"},severity:{label:"Severity"},status:{label:"Status"},summary:{label:"Summary"},message:{title:"Message"},properties:{"policy-uid":"policy-uid",version:"policy-resource-version",mutating:"mutating",validating:"validating"}}}}},asyncButton:{artifactHub:{action:"Add ArtifactHub To Whitelist",success:"Added",waiting:"Adding…"},certManager:{action:"Apply Cert-Manager Package",success:"Applied",waiting:"Installing…"},kubewardenRepository:{action:"Add Kubewarden Repository",success:"Added",waiting:"Adding…"},grafanaDashboard:{action:"Add Grafana Dashboards",success:"Added",wating:"Adding…"},serviceMonitor:{action:"Add Service Monitor",success:"Added",waiting:"Adding…"},policyReporterRepo:{action:"Add Policy Reporter Repository",success:"Added",waiting:"Adding…"},policyReporterChart:{action:"Install Policy Reporter Chart",success:"Installed",waiting:"Installing…"}}}];e.exports=o.length<=1?o[0]:o}}]); +//# sourceMappingURL=kubewarden-1.6.0.umd.min.15.js.map \ No newline at end of file diff --git a/extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.15.js.map b/extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.15.js.map new file mode 100644 index 0000000..a63a0d6 --- /dev/null +++ b/extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.15.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack://kubewarden-1.6.0/./l10n/en-us.yaml"],"names":["doc","module","exports","length"],"mappings":"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","file":"kubewarden-1.6.0.umd.min.15.js","sourcesContent":["const doc = [({\"kubewarden\":({\"title\":\"Kubewarden\", \"dashboard\":({\"title\":\"Dashboard\", \"install\":\"Install\", \"notInstalled\":\"Kubewarden is not installed\", \"button\":\"Install Kubewarden Prerequisites\", \"intro\":\"Welcome to Kubewarden\", \"blurb\":\"A Dynamic Admission Controller for Kubernetes\", \"description\":\"Kubewarden is a policy engine for Kubernetes. It helps with keeping your Kubernetes clusters secure and compliant. Kubewarden policies can be written using regular programming languages or Domain Specific Languages (DSL). Policies are compiled into WebAssembly modules that are then distributed using traditional container registries.\\n\", \"getStarted\":\"Get Started\", \"issues\":\"Issues\", \"upgrade\":({\"appVersion\":\"App Version\", \"appUpgrade\":\"App Upgrade\", \"controllerChart\":\"Controller\", \"defaultsChart\":\"Defaults\", \"appVersionUnsatisfied\":\"The app version of the Kubewarden Defaults ({defaultsAppVersion}) chart does not match the app version of the Kubewarden Controller chart ({controllerAppVersion}). This chart will need to be updated to match the app version of the Kubewarden Controller chart.\"}), \"policyReports\":({\"oldPolicyReportsIncompatible\":\"Policy Reports are not compatible with the current version of the Kubewarden App. Please update to version v1.11.0 or newer.\", \"newPolicyReportsIncompatible\":\"Policy Reports are not compatible with the current version of the Kubewarden extension. Please update to version 1.4.0 or newer.\"}), \"headers\":({\"policyServer\":({\"title\":\"Policy Servers\", \"description\":\"Kubewarden uses Policy Servers to receive requests to be validated. It does that by executing Kubewarden's policies.\", \"linkText\":\"Create Policy Server\", \"slotTitle\":\"Policy Server Pods\"}), \"admissionPolicy\":({\"title\":\"Admission Policies\", \"description\":\"An Admission Policy is a namespace-wide resource. The policy will process only the requests that are targeting the Namespace where the Admission Policy is defined.\", \"linkText\":\"Create Admission Policy\", \"slotTitle\":\"Policies\"}), \"clusterAdmissionPolicy\":({\"title\":\"Cluster Admission Policies\", \"description\":\"The Cluster Admission Policy resource is the core of the Kubewarden stack. This resource defines how policies evaluate requests.\", \"linkText\":\"Create Cluster Admission Policy\", \"slotTitle\":\"Policies\"}), \"modes\":({\"title\":\"Policy Modes\", \"monitor\":\"Monitor\", \"protect\":\"Protect\"})}), \"appInstall\":({\"title\":\"Kubewarden App Install\", \"description\":\"This will take you to the app installation page for Kubewarden.\", \"button\":\"Install Kubewarden\", \"stepTitle\":\"Kubewarden Install\", \"reload\":\"Unable to fetch Kubewarden Helm chart - reload required.\", \"versionError\":({\"title\":\"Chart Version not found.\", \"message\":\"Unable to determine the latest stable version of the kubewarden-controller chart. Please make sure the Helm repository is configured correctly.\"})}), \"prerequisites\":({\"title\":\"Prerequisites\", \"certManager\":({\"title\":\"Install Cert-Manager Package\", \"description\":\"The kubewarden-controller depends on cert-manager. You need cert-manager to be installed before installing the kubewarden-controller chart.\", \"manualStep\":\"Click the button below and follow the Documentation, or run the kubectl command to install the latest version of cert-manager:\\n\", \"applyCommand\":\"kubectl apply -f https://github.com/jetstack/cert-manager/releases/latest/download/cert-manager.yaml\", \"openShell\":\"Open Kubectl Shell\", \"stepProgress\":\"The active step will progress once Cert-Manager is installed.\"}), \"repository\":({\"title\":\"Repository\", \"description\":\"You will need the Kubewarden Helm repository (https://charts.kubewarden.io) to install the `kubewarden` chart.\"}), \"airGapped\":({\"warning\":\"An air-gapped installation has been detected, this will require intervention to enable access to Kubewarden images and policies. It is necessary to make them available from an OCI registry that is accessible to the cluster.\", \"docs\":\"Follow the documentation to setup an OCI registry for further installation.\\n\"})})}), \"tabs\":({\"security-contexts\":({\"label\":\"Security Contexts\"}), \"general\":({\"label\":\"General\", \"nameOverride\":({\"label\":\"nameOverride\", \"description\":\"Replaces the release name of the chart in Chart.yaml file when this is used to construct Kubernetes object names.\"}), \"fullnameOverride\":({\"label\":\"fullnameOverride\", \"description\":\"Completely replaces the generated release name.\"}), \"imagePullSecrets\":({\"label\":\"Image Pull Secrets\", \"description\":\"Secrets to pull container images from private registries.\"}), \"image\":({\"label\":\"Image\", \"description\":\"Controller image to be used.\", \"repository\":\"Repository\", \"tag\":\"Tag\"}), \"preDeleteJob\":\"Kubectl image to be used in the pre-delete helm hook.\", \"podAnnotations\":\"Pod Annotations\", \"nodeSelector\":\"Node Selector\", \"tolerations\":\"Tolerations\", \"affinity\":\"Affinity\", \"tls\":({\"source\":\"Source\", \"certManagerIssuerName\":\"Cert-Manager Issuer Name\"})}), \"telemetry\":({\"label\":\"Telemetry\", \"checkbox\":\"Enabled\", \"port\":\"Port\", \"tracing\":({\"label\":\"Tracing\", \"endpoint\":\"Endpoint\", \"jaeger\":\"Jaeger endpoint to send traces.\", \"placeholder\":\"all-in-one-collector.jaeger.svc.cluster.local:14250\"})}), \"verification\":({\"label\":\"Verification\"}), \"registry\":({\"label\":\"Container Registry\"})}), \"policyServer\":({\"title\":\"Policy Servers\", \"noDefaultsInstalled\":({\"description\":\"The default PolicyServer and policies are not installed, click the button below to begin installing this chart. See the documentation for more information on installing charts.\\n\", \"button\":\"Install Chart\"}), \"policyGauge\":({\"byStatus\":\"Policies by Status\", \"traces\":\"Policy Validations\"}), \"groups\":({\"kind\":\"Policy Type\"})}), \"admissionPolicy\":({\"title\":\"Admission Policies\", \"description\":\"AdmissionPolicy is a namespace-wide resource. These policies will process only the requests that are targeting the Namespace where the AdmissionPolicy is defined.\"}), \"clusterAdmissionPolicy\":({\"title\":\"Cluster Admission Policies\", \"description\":\"ClusterAdmissionPolicy is a cluster-wide resource. These policies will process all requests within the cluster where the ClusterAdmissionPolicy is defined.\", \"kwDefaultsSettingsCompatibility\":\"ClusterAdmissionPolicies that derive from kubewarden-default Helm Chart will not have editable policy settings since the kubewarden-default Helm Chart version should be greater or equal than 2.0.0\", \"defaultsUpdateBtn\":\"Update\"}), \"customPolicy\":({\"badge\":\"Custom\", \"title\":\"Custom Policy\", \"description\":\"A generic template for using your own policy.\"}), \"policies\":({\"noArtifactHub\":\"Official Kubewarden policies are hosted on ArtifactHub, in order to show these you will need to add `artifacthub.io` to the whitelist-domain setting.\", \"noRules\":\"There are no rules configured for this policy.\", \"namespaceWarning\":\"This policy is targeting Rancher specific namespaces which will cause catastrophic failures with your Rancher deployment.\", \"official\":\"Official Kubewarden Policy\", \"airgap\":({\"banner\":\"An air-gapped installation is detected, you will be unable to use the policies listed within the ArtifactHub catalog. You are still able to deploy a custom policy by referencing a WebAssembly module that is accessible to this cluster.\"})}), \"utils\":({\"keyword\":\"Filter by Keyword\", \"organization\":\"Filter by Organization\", \"resource\":\"Filter by Resource Type\", \"resetFilter\":\"Reset Filter\"}), \"tracing\":({\"description\":\"Tracing allows to collect fine grained details about policy evaluations. It can be a useful tool for debugging issues inside of your Kubewarden deployment and policies.\", \"prerequisites\":({\"label\":\"Prerequisites\", \"description\":\"There are a few resources which need to be installed for tracing to work correctly with the Kubewarden Controller.\", \"warning\":\"The deployments of these resources can take a few minutes to become active.\"}), \"installOpenTelemetry\":\"Click the button below or run the kubectl command to install the latest version of OpenTelemetry.\\n\", \"openTelemetry\":\"The OpenTelemetry Operator must be installed, follow the documentation to setup the OpenTelemetry Operator.\\n\", \"jaeger\":\"The Jaeger Operator and Instance must be installed, follow the documentation to setup tracing for your policies.\\n\", \"noRelatedPolicies\":\"No related policies found.\", \"noRelatedTraces\":\"No tracing data exists for the related policies.\", \"noTraces\":\"No tracing data exists for this policy.\", \"config\":({\"label\":\"Tracing must be configured with a Jaeger endpoint in the \\\"Telemetry\\\" tab of the Kubewarden Controller chart settings.\\n\", \"link\":\"Update Config\"})}), \"monitoring\":({\"notInstalled\":\"The Monitoring app is not installed, this will will need to be installed and configured to enable metrics. Follow these steps to add the Kubewarden ServiceMonitor for Prometheus.\\n\", \"install\":\"Install Monitoring\", \"prerequisites\":({\"label\":\"Prerequisites\", \"description\":\"There are a few resources which need to be installed and configured correctly for monitoring to be available.\", \"warning\":\"The deployments of these resources can take a few minutes to become active.\", \"tooltips\":({\"prerequisites\":\"The prerequisite steps have not been completed.\", \"appNotInstalled\":\"The { app } app is not yet installed.\", \"nsNotFound\":\"The Namespace `cattle-dashboards` cannot be found.\", \"chartError\":\"The { chart } chart cannot be found, ensure the repository exists and try reloading the page.\", \"monitorsNotFound\":\"No Service Monitors found in the `{ namespace }` namespace connected to the Policy Server.\"}), \"monitoringApp\":({\"label\":\"The Rancher Monitoring app must be installed. Follow the documentation to install and enable Rancher Monitoring.\", \"install\":\"Install App\", \"edit\":\"Edit Config\"}), \"serviceMonitor\":({\"label\":\"A Service Monitor for this Policy Server does not exist. Follow the documentation to learn more about Service Monitors.\"}), \"configMap\":({\"label\":\"Grafana Dashboards (ConfigMaps) for the Policy Servers and for Kubewarden Policies must be created.\", \"button\":\"Add Dashboards\", \"conflictingDashboardsBanner\":\"{count, plural,\\n=1 {There is a conflicting ConfigMap, this must be deleted before proceeding:}\\nother {There are conflicting ConfigMaps, the following must be deleted before proceeding:}\\n}\"}), \"controllerConfig\":({\"label\":\"The Kubewarden Controller must be configured to enable metrics. Follow these steps to properly configure the kubewarden-controller chart.\", \"button\":\"Edit Config\"})}), \"warning\":({\"noProxy\":\"The Grafana proxy URL can not be found or is configured incorrectly.\"})}), \"metrics\":({\"notInstalled\":\"The Grafana dashboard for this Kubewarden resource can not be found. You need to create the ConfigMap for the dashboard.\", \"reload\":\"Grafana dashboard created - reload required\", \"noService\":\"The Metrics service is not currently active or is not installed correctly. Check the status of the Monitoring app.\"}), \"policyConfig\":({\"tabs\":({\"general\":\"General\", \"rules\":\"Rules\", \"namespaceSelector\":\"Namespace Selector\", \"settings\":\"Settings\", \"contextAware\":\"Context Aware Resources\"}), \"serverSelect\":({\"label\":\"Policy Server\", \"tooltip\":\"The PolicyServer that will receive the requests to be validated.\"}), \"module\":({\"label\":\"Module\", \"tooltip\":\"This is the WebAssembly module that holds the validation or mutation logic.\"}), \"mutating\":({\"label\":\"Mutating\", \"tooltip\":\"A mutating policy will rebuild the requests with definied values that are conformant with the policy definition.\"}), \"mode\":({\"label\":\"Mode\", \"tooltip\":\"The monitor mode is a way to deploy policies to the cluster in a way that all requests that go through the policy will be accepted, as if the policy didn't exist. Defaults to 'Protect'.\", \"warning\":\"Once the policy mode has been switched to Protect, you will not be able to revert this change.\", \"update\":({\"checkbox\":\"Update to Protect Mode\", \"title\":\"Update Policy Mode\", \"body\":\"The monitor mode is a way to view the behavior of a policy without letting it make the final decision on requests that are validated by the policy.\"})}), \"backgroundAudit\":({\"label\":\"Background Audit\", \"tooltip\":\"Indicates whether a policy should be used or skipped when performing audit checks. If false, the policy cannot produce meaningful evaluation results during audit checks and will be skipped. The default is \\\"true\\\".\"}), \"ignoreRancherNamespaces\":({\"label\":\"Ignore Rancher Namespaces\", \"tooltip\":\"Certain policies will break core services of Rancher, this will add a default list of namespaces to ignore.\"}), \"namespaceSelector\":({\"label\":\"Namespace Selector\", \"description\":\"NamespaceSelector decides whether to evaluate the policy on a request, based on whether the namespace for that request matches the selector. If the object of the request is a namespace, the matching is performed on object.metadata.labels. If the object is another cluster scoped resource, it never skips the policy evaluation.\", \"addSelector\":\"Add Selectors\", \"matchExpressions\":({\"label\":\"Match Expressions\", \"tooltip\":\"matchExpressions is a list of label selector requirements.\"}), \"matchLabels\":({\"label\":\"Match Labels\", \"tooltip\":\"matchLabels is a map of key, value pairs. A single key, value in the matchLabels map is equivalent to an element of matchExpressions, whose key field is 'key', the operator is 'In', and the values array contains only 'value'.\"})}), \"rules\":({\"add\":\"Add Rule Set\", \"remove\":\"Remove Rule Set\"}), \"apiGroups\":({\"label\":\"API Groups\", \"tooltip\":\"The API groups the resources belong to.\"}), \"apiVersions\":({\"label\":\"API Versions\", \"tooltip\":\"The API versions the resources belong to.\"}), \"operations\":({\"label\":\"Operation type\", \"tooltip\":\"The operations the admission hook cares about - CREATE, UPDATE, DELETE, CONNECT.\"}), \"resources\":({\"label\":\"Resource type\", \"tooltip\":\"The targeted resources for the policy. Needs to be a resource that is supported by the policy, this is determined in the `metadata.yml` of the selected policy.\"}), \"scope\":({\"label\":\"Scope\", \"tooltip\":\"Specifies the scope of this rule. Valid values are \\\"Cluster\\\", \\\"Namespaced\\\", and \\\"\\\". \\\"Cluster\\\" means that only cluster-scoped resources will match this rule. Namespace API objects are cluster-scoped. \\\"Namespaced\\\" means that only namespaced resources will match this rule. \\\"\\\" means that there are no scope restrictions. Subresources match the scope of their parent resource. Default is \\\"*\\\".\"}), \"contextAware\":({\"label\":\"Context Aware Resources\", \"description\":\"A list of Kubernetes resources the policy is allowed to access at evaluation time. Access to these resources is done using the ServiceAccount of the PolicyServer the policy is assigned to.\", \"warning\":\"Kubewarden administrators need to thoroughly examine the types of resources that a policy will access in order to prevent any misuse or abuse of the system. In some cases, it may be necessary to increase the permissions of the ServiceAccount associated with the PolicyServer to enable the policy to retrieve the required information. Although policies are restricted to read-only access to Kubernetes resources, there is a risk that a malicious attacker could exploit a Kubewarden policy to extract sensitive data from the cluster.\", \"resource\":({\"add\":\"Add Resource\", \"remove\":\"Remove Resource\", \"apiVersion\":({\"label\":\"API Version\", \"tooltip\":\"This is the apiVersion of the resource (v1 for core group, groupName/groupVersions for other).\"}), \"kind\":({\"label\":\"Kind\", \"tooltip\":\"Singular PascalCase name of the resource\"})})})}), \"policyServerConfig\":({\"securityContexts\":({\"containerConfig\":\"Container configuration\", \"podConfig\":\"Pod configuration\", \"allow-priv-escalation\":({\"label\":\"Allow Privilege Escalation\", \"tooltip\":\"Allow Privilege Escalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the \\\"no_new_privs\\\" flag will be set on the container process\"}), \"capabilities\":({\"title\":\"Capabilities\", \"add\":\"Added Capabilities\", \"drop\":\"Dropped Capabilities\", \"addLabel\":\"Add\", \"placeholder\":\"Capability\"}), \"privileged\":({\"label\":\"Run container in privileged mode\", \"tooltip\":\"Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host\"}), \"procMount\":({\"label\":\"ProcMount\", \"placeholder\":\"ProcMount type\"}), \"readOnlyRootFilesystem\":({\"label\":\"Whether this container has a read-only root filesystem\"}), \"runAsNonRoot\":({\"label\":\"Container must run as a non-root user\", \"tooltip\":\"If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does\"}), \"runAsGroup\":\"Run As Group\", \"runAsUser\":\"Run As User\", \"seLinuxOptions\":({\"title\":\"SE Linux Options\", \"level\":({\"label\":\"SELinux level\", \"placeholder\":\"SELinux level label\"}), \"role\":({\"label\":\"SELinux role\", \"placeholder\":\"SELinux role label\"}), \"type\":({\"label\":\"SELinux type\", \"placeholder\":\"SELinux type label\"}), \"user\":({\"label\":\"SELinux user\", \"placeholder\":\"SELinux user label\"})}), \"seccompProfile\":({\"title\":\"Seccomp Profile\", \"inputEnabledLabel\":\"Add Seccomp Profile Configuration\", \"localhostProfile\":({\"label\":\"Localhost Profile\", \"placeholder\":\"Localhost Profile\"}), \"type\":\"Type\"}), \"windowsOptions\":({\"title\":\"Windows Options\", \"gmsaCredentialSpec\":({\"label\":\"GMSA Credential Spec\", \"placeholder\":\"GMSA Credential Spec\"}), \"gmsaCredentialSpecName\":({\"label\":\"GMSA Credential Spec Name\", \"placeholder\":\"GMSA Credential Spec Name\"}), \"hostProcess\":({\"label\":\"Run as a 'Host Process' container\", \"tooltip\":\"All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). In addition, if HostProcess is true then HostNetwork must also be set to true\"}), \"runAsUserName\":({\"label\":\"Run As UserName\", \"placeholder\":\"Run As UserName\"})}), \"fsGroup\":({\"label\":\"FS Group\"}), \"fsGroupChangePolicy\":({\"label\":\"FS Group change Policy\", \"placeholder\":\"FS Group change Policy\"}), \"supplementalGroups\":({\"addLabel\":\"Add Group\", \"label\":\"Supplemental Group\"}), \"sysctls\":({\"addLabel\":\"Add Sysctls\", \"label\":\"Sysctls\", \"name\":({\"label\":\"Name\", \"placeholder\":\"Name\"}), \"value\":({\"label\":\"Value\", \"placeholder\":\"Value\"})})}), \"defaultImage\":({\"label\":\"Default Image\", \"tooltip\":\"Use the default `policy-server` container image.\", \"versionWarning\":\"The latest stable version for Policy Server could not be determined, falling back to default.\"}), \"image\":({\"label\":\"Image URL\", \"tooltip\":\"This is the container image the policy server.\"}), \"replicas\":\"Replicas\", \"registry\":({\"description\":\"The PolicyServer allows you to pull policies from OCI registries and HTTP servers, by default HTTPS is enforced with host TLS verification. You can interact with registries using untrusted certificates or even without TLS by using the `insecureSources` setting. This approach is highly discouraged in environments closer to production. More information on configuring custom certificate authorities can be found here.\"}), \"insecureSources\":({\"title\":\"Insecure Sources\", \"addLabel\":\"Add Insecure Source\", \"placeholder\":\"registry-dev.example.com:5500\"}), \"sourceAuthorities\":({\"title\":\"Source Authorities\", \"add\":\"Add Source Authority\", \"endpoint\":\"Registry URI Endpoint\", \"placeholder\":\"registry-pre.example.com:5500\", \"certificate\":({\"label\":\"Certificate\", \"add\":\"Add PEM Certificate\", \"remove\":\"Remove Certificate\", \"file\":\"Read Certificate from File\"})}), \"verification\":({\"label\":\"Verification Config\", \"description\":\"This is the name of a VerificationConfig configmap within the same namespace, containing a Sigstore verification configuration. The configuration must be under a key named verification-config in the Configmap. More information can be found in the Kubewarden docs.\"})}), \"policyCharts\":({\"signedPolicy\":({\"label\":\"Signed\", \"tooltip\":\"This policy has been signed with { signatures }.\"}), \"mutationPolicy\":({\"label\":\"Mutation\", \"tooltip\":\"A mutating policy will rebuild the requests with definied values that are conformant with the policy definition.\"}), \"contextAware\":({\"label\":\"Context Aware\", \"tooltip\":\"Can determine whether an AdmissionRequest has to be accepted or rejected based on other resources already deployed in the cluster.\"})}), \"policyReporter\":({\"title\":\"Policy Reporter\", \"link\":\"Policy Reporter UI\", \"noSchema\":({\"banner\":\"Kubewarden has not been installed, this will need to be accomplished before installing the Policy Reporter\", \"link\":\"Install Kubewarden\"}), \"incompatible\":({\"banner\":\"Your cluster does not support policy reports, upgrade your Kubewarden to version `1.7.0` or greater to add the required crds.\", \"current\":\"Current Kubewarden Controller version\", \"noCrds\":({\"banner\":\"The CRDs for `wgpolicyk8s.io.clusterpolicyreport` or `wgpolicyk8s.io.policyreport` can not be found. These must be installed to support policy reports.\"})}), \"service\":({\"main\":({\"banner\":({\"unavailable\":\"The Policy Reporter service is unavailable, ensure the properties `auditScanner.enable` and `auditScanner.policyReporter` are set to `true` within the Kubewarden Controller chart.\"})}), \"ui\":({\"banner\":({\"unavailable\":\"The Policy Reporter UI service is unavailable, ensure the property `policy-reporter.ui.enabled` is set to `true` within the Kubewarden Controller chart.\"})})}), \"url\":({\"banner\":({\"unavailable\":\"The Policy Reporter UI proxy URL is unavailble, please ensure that the UI is properly configured.\"})}), \"deployment\":({\"banner\":({\"unavailable\":\"The Policy Reporter UI Deployment is currently in a `{ state }` state, please wait.\"})}), \"headers\":({\"policyReports\":({\"label\":\"Compliance\", \"description\":\"Policy Reports are the results of the policy scans that are stored using the PolicyReport Custom Resource.\"}), \"clusterPolicyReports\":({\"label\":\"Cluster Compliance\", \"description\":\"Cluster Policy Reports are the results of the policy scans that are stored using the ClusterPolicyReport Custom Resource.\"}), \"label\":\"Compliance\", \"description\":\"When using the Kubewarden Audit Scanner, the results of the policy scans are stored using the PolicyReport Custom Resource.\", \"policyReportsTab\":({\"policy\":({\"label\":\"Policy\"}), \"rule\":({\"label\":\"Rule\"}), \"severity\":({\"label\":\"Severity\"}), \"status\":({\"label\":\"Status\"}), \"summary\":({\"label\":\"Summary\"}), \"message\":({\"title\":\"Message\"}), \"properties\":({\"policy-uid\":\"policy-uid\", \"version\":\"policy-resource-version\", \"mutating\":\"mutating\", \"validating\":\"validating\"})})})})}), \"asyncButton\":({\"artifactHub\":({\"action\":\"Add ArtifactHub To Whitelist\", \"success\":\"Added\", \"waiting\":\"Adding…\"}), \"certManager\":({\"action\":\"Apply Cert-Manager Package\", \"success\":\"Applied\", \"waiting\":\"Installing…\"}), \"kubewardenRepository\":({\"action\":\"Add Kubewarden Repository\", \"success\":\"Added\", \"waiting\":\"Adding…\"}), \"grafanaDashboard\":({\"action\":\"Add Grafana Dashboards\", \"success\":\"Added\", \"wating\":\"Adding…\"}), \"serviceMonitor\":({\"action\":\"Add Service Monitor\", \"success\":\"Added\", \"waiting\":\"Adding…\"}), \"policyReporterRepo\":({\"action\":\"Add Policy Reporter Repository\", \"success\":\"Added\", \"waiting\":\"Adding…\"}), \"policyReporterChart\":({\"action\":\"Install Policy Reporter Chart\", \"success\":\"Installed\", \"waiting\":\"Installing…\"})})})];\nmodule.exports = doc.length <= 1 ? doc[0] : doc;"],"sourceRoot":""} \ No newline at end of file diff --git a/extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.airgap-docs.js b/extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.airgap-docs.js new file mode 100644 index 0000000..3aa3ff2 --- /dev/null +++ b/extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.airgap-docs.js @@ -0,0 +1,2 @@ +(("undefined"!==typeof self?self:this)["webpackJsonpkubewarden_1_6_0"]=("undefined"!==typeof self?self:this)["webpackJsonpkubewarden_1_6_0"]||[]).push([[1],{"11cb":function(e,s,n){e.exports=n.p+"assets/airgap-installation.md"}}]); +//# sourceMappingURL=kubewarden-1.6.0.umd.min.airgap-docs.js.map \ No newline at end of file diff --git a/extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.airgap-docs.js.map b/extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.airgap-docs.js.map new file mode 100644 index 0000000..efe4304 --- /dev/null +++ b/extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.airgap-docs.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack://kubewarden-1.6.0/./assets/airgap-installation.md"],"names":["module","exports"],"mappings":"oLAAAA,EAAOC,QAAU,IAA0B","file":"kubewarden-1.6.0.umd.min.airgap-docs.js","sourcesContent":["module.exports = __webpack_public_path__ + \"assets/airgap-installation.md\";"],"sourceRoot":""} \ No newline at end of file diff --git a/extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.detail.js b/extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.detail.js new file mode 100644 index 0000000..fac8b09 --- /dev/null +++ b/extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.detail.js @@ -0,0 +1,2 @@ +(("undefined"!==typeof self?self:this)["webpackJsonpkubewarden_1_6_0"]=("undefined"!==typeof self?self:this)["webpackJsonpkubewarden_1_6_0"]||[]).push([[2],{"00ce":function(e,t,r){"use strict";var a=function(){var e=this,t=e._self._c;return e.$fetchState.pending||e.refreshingCharts?t("Loading",{attrs:{mode:"relative"}}):t("div",[e.showChecklist?t("TraceChecklist",{attrs:{"controller-app":e.controllerApp,"controller-chart":e.controllerChart,"tracing-configuration":e.tracingConfiguration,"jaeger-query-svc":e.jaegerQuerySvc,"open-tel-svc":e.openTelSvc}}):!e.showChecklist&&e.emptyPolicies?t("Banner",{attrs:{color:"error",label:e.t("kubewarden.tracing.noRelatedPolicies")}}):e.showTable?t("SortableTable",{attrs:{rows:e.filteredValidations,headers:e.TRACE_HEADERS,"table-actions":!1,"row-actions":!1,"key-field":"id","default-sort-by":"startTime","sub-expandable":!0,"sub-expand-column":!0,"sub-rows":!0,paging:!0,"rows-per-page":e.rowsPerPage},scopedSlots:e._u([{key:"col:mode",fn:function({row:r}){return[t("td",[t("BadgeState",{staticClass:"text-capitalize",attrs:{label:r.mode,color:e.modeColor(r.mode)}})],1)]}},{key:"col:name",fn:function({row:r}){return[t("td",{staticClass:"text-bold"},[e._v(" "+e._s(r.name)+" ")])]}},{key:"col:namespace",fn:function({row:r}){return[t("td",[e._v(" "+e._s(r.namespace?r.namespace:"-")+" ")])]}},{key:"col:startTime",fn:function({row:r}){return[t("td",[e._v(" "+e._s(e.formatTime(r.startTime))+" ")])]}},{key:"col:duration",fn:function({row:r}){return[t("td",[e._v(" "+e._s(e.duration(r.duration))+" ")])]}},{key:"sub-row",fn:function({row:r,fullColspan:a}){return[t("td",{staticClass:"sub-row",attrs:{colspan:a}},[t("div",{staticClass:"details"},[t("section",{staticClass:"col"},[t("div",{staticClass:"title"},[e._v(" Response Message ")]),t("span",{staticClass:"text-info text-capitalize"},[e._v(" "+e._s(r.responseMessage?r.responseMessage:"-")+" ")])]),t("section",{staticClass:"col"},[t("div",{staticClass:"title"},[e._v(" Response Code ")]),t("span",{staticClass:"text-info"},[e._v(" "+e._s(r.responseCode?r.responseCode:"-")+" ")])]),t("section",{staticClass:"col"},[t("div",{staticClass:"title"},[e._v(" Mutated ")]),t("span",{staticClass:"text-info"},[e._v(" "+e._s(r.mutated)+" ")])])])])]}}])}):t("Banner",{attrs:{color:"warning",label:e.t(e.emptyTracesLabel)}})],1)},i=[],o=r("9ce4"),n=r("330a"),s=r.n(n),l=r("050d"),c=r.n(l),d=r("be6d"),u=r.n(d),p=r("907c"),v=r("4ac6"),h=r("2359"),m=r("a8b9"),f=r("f17a"),b=r("6418"),g=r("15ca"),y=r("0fb1"),k=r("5191"),w=r("90cd"),_=r("5136"),C=r("7d99"),S=r.n(C),O=r("37ef"),T=r.n(O),A=r("e4c5"),R=r.n(A);c.a.extend(R.a);const E=1e3,P=1e3*E,j=60*P,M=60*j,x=24*M,N=[{unit:"d",microseconds:x,ofPrevious:24},{unit:"h",microseconds:M,ofPrevious:60},{unit:"m",microseconds:j,ofPrevious:60},{unit:"s",microseconds:P,ofPrevious:1e3},{unit:"ms",microseconds:E,ofPrevious:1e3},{unit:"μs",microseconds:1,ofPrevious:1e3}];function D(e){const[t,r]=S()(N,({microseconds:t},r)=>re);if(1e3===t.ofPrevious)return`${T()(e/t.microseconds,2)}${t.unit}`;const a=Math.floor(e/t.microseconds),i=`${a}${t.unit}`,o=Math.round(e/r.microseconds%t.ofPrevious),n=`${o}${r.unit}`;return 0===o?i:`${i} ${n}`}var L=function(){var e=this,t=e._self._c;return t("div",[t("p",{staticClass:"checklist__description mb-20",attrs:{"data-testid":"kw-tracing-checklist-description"}},[e._v(" "+e._s(e.t("kubewarden.tracing.description"))+" ")]),t("div",{staticClass:"checklist__prereq mb-20"},[t("h2",[e._v(e._s(e.t("kubewarden.tracing.prerequisites.label")))]),t("p",[e._v(e._s(e.t("kubewarden.tracing.prerequisites.description")))])]),t("Banner",{attrs:{color:"warning",label:e.t("kubewarden.tracing.prerequisites.warning")}}),t("div",{staticClass:"checklist__container mt-20 mb-20"},[t("div",{staticClass:"checklist__step mt-20 mb-20",attrs:{"data-testid":"kw-tracing-checklist-step-open-tel"}},[t("i",{staticClass:"icon mr-10",class:e.badgeIcon(e.openTelSvc)}),t("p",{directives:[{name:"clean-html",rawName:"v-clean-html",value:e.t("kubewarden.tracing.openTelemetry",{},!0),expression:"t('kubewarden.tracing.openTelemetry', {}, true)"}]})]),t("div",{staticClass:"checklist__step mb-20",attrs:{"data-testid":"kw-tracing-checklist-step-jaeger"}},[t("i",{staticClass:"icon mr-10",class:e.badgeIcon(e.jaegerQuerySvc)}),t("p",{directives:[{name:"clean-html",rawName:"v-clean-html",value:e.t("kubewarden.tracing.jaeger",{},!0),expression:"t('kubewarden.tracing.jaeger', {}, true)"}],attrs:{p:""}})]),t("div",{staticClass:"checklist__step mb-20",attrs:{"data-testid":"kw-tracing-checklist-step-config"}},[t("i",{staticClass:"icon mr-10",class:e.badgeIcon(e.tracingEnabled)}),t("div",{staticClass:"checklist__config"},[t("p",{directives:[{name:"clean-html",rawName:"v-clean-html",value:e.t("kubewarden.tracing.config.label",{},!0),expression:"t('kubewarden.tracing.config.label', {}, true)"}]}),t("button",{directives:[{name:"clean-tooltip",rawName:"v-clean-tooltip",value:e.controllerLinkTooltip,expression:"controllerLinkTooltip"}],staticClass:"btn role-primary ml-10",attrs:{"data-testid":"kw-tracing-checklist-step-config-button",disabled:e.controllerLinkDisabled},on:{click:e.controllerAppRoute}},[e._v(" "+e._s(e.t("kubewarden.tracing.config.link"))+" ")])])])])],1)},$=[],I=r("da25"),q={props:{controllerApp:{type:Object,default:null},controllerChart:{type:Object,default:null},tracingConfiguration:{type:Object,default:null},jaegerQuerySvc:{type:Object,default:null},openTelSvc:{type:Object,default:null}},components:{Banner:b["a"]},computed:{...Object(o["a"])(["currentCluster"]),controllerLinkTooltip(){return this.openTelSvc&&this.jaegerQuerySvc?this.controllerApp&&this.controllerChart?null:this.t("kubewarden.monitoring.prerequisites.tooltips.chartError",{chart:"Kubewarden Controller"},!0):this.t("kubewarden.monitoring.prerequisites.tooltips.prerequisites")},controllerLinkDisabled(){return!this.openTelSvc||!this.jaegerQuerySvc||!this.controllerApp||!this.controllerChart},tracingEnabled(){return this.tracingConfiguration?this.tracingConfiguration.enabled:null}},methods:{badgeIcon(e){return{"icon-dot-open":!e,"icon-checkmark":e,"text-success":e}},controllerAppRoute(){if(this.controllerApp){var e,t,r,a,i,o,n,s;const l=null===(e=this.controllerApp.spec)||void 0===e||null===(t=e.chart)||void 0===t?void 0:t.metadata,c={[I["g"]]:null===l||void 0===l||null===(r=l.annotations)||void 0===r?void 0:r[v["c"].NAMESPACE],[I["f"]]:null===l||void 0===l||null===(a=l.annotations)||void 0===a?void 0:a[v["c"].RELEASE_NAME],[I["q"]]:null===l||void 0===l||null===(i=l.annotations)||void 0===i?void 0:i["catalog.cattle.io/upstream-version"],[I["i"]]:null===l||void 0===l||null===(o=l.annotations)||void 0===o?void 0:o[v["c"].SOURCE_REPO_NAME],[I["j"]]:null===l||void 0===l||null===(n=l.annotations)||void 0===n?void 0:n[v["c"].SOURCE_REPO_TYPE],[I["d"]]:null===l||void 0===l?void 0:l.name};this.$router.push({name:"c-cluster-apps-charts-install",params:{cluster:(null===(s=this.currentCluster)||void 0===s?void 0:s.id)||"_"},query:c})}}}},G=q,B=(r("6478"),r("d802")),V=Object(B["a"])(G,L,$,!1,null,"63ad3d60",null),U=V.exports;c.a.extend(u.a);var Y={props:{resource:{type:String,default:()=>""},relatedPolicies:{type:Array,default:()=>[]},policy:{type:Object,default:()=>{}}},components:{BadgeState:f["a"],Banner:b["a"],Loading:g["a"],SortableTable:y["b"],TraceChecklist:U},mixins:[h["a"]],async fetch(){const e=[p["a"].APP,p["a"].CLUSTER_REPO,p["z"]],t=[];for(const r of e)this.$store.getters["cluster/canList"](r)&&t.push(this.$fetchType(r));if(await Object(m["a"])(t),this.jaegerQuerySvc){const e={store:this.$store,queryService:this.jaegerQuerySvc,resource:this.resource,relatedPolicies:null,policy:null};this.resource===w["f"].POLICY_SERVER?e.relatedPolicies=this.relatedPolicies:e.policy=this.policy,this.specificValidations=await Object(_["b"])(e)}},data(){return{MODE_MAP:w["o"],TRACE_HEADERS:k["g"],OPERATION_MAP:w["p"],specificValidations:null}},computed:{...Object(o["a"])(["currentCluster"]),...Object(o["a"])({charts:"catalog/charts",refreshingCharts:"kubewarden/refreshingCharts"}),allApps(){return this.$store.getters["cluster/all"](p["a"].APP)},allServices(){return this.$store.getters["cluster/all"](p["z"])},controllerApp(){var e;return null===(e=this.allApps)||void 0===e?void 0:e.find(e=>{var t,r,a;return(null===e||void 0===e||null===(t=e.spec)||void 0===t||null===(r=t.chart)||void 0===r||null===(a=r.metadata)||void 0===a?void 0:a.name)===w["h"].CONTROLLER})},controllerChart(){var e;return null===(e=this.charts)||void 0===e?void 0:e.find(e=>e.chartName===w["h"].CONTROLLER)},groupField(){return this.isPolicyServer?"policy_id":null},isPolicyServer(){return this.resource===w["f"].POLICY_SERVER},emptyPolicies(){return this.resource===w["f"].POLICY_SERVER?s()(this.relatedPolicies):s()(this.policy)},emptyTraces(){return s()(this.filteredValidations)},emptyTracesLabel(){return this.resource===w["f"].POLICY_SERVER?"kubewarden.tracing.noRelatedTraces":"kubewarden.tracing.noTraces"},rowsPerPage(){return this.isPolicyServer?40:20},tracingConfiguration(){var e,t,r,a;return this.controllerApp?null===(e=this.controllerApp)||void 0===e||null===(t=e.spec)||void 0===t||null===(r=t.values)||void 0===r||null===(a=r.telemetry)||void 0===a?void 0:a.tracing:null},tracingEnabled(){return this.tracingConfiguration?this.tracingConfiguration.enabled:null},jaegerServices(){var e;return null===(e=this.allServices)||void 0===e?void 0:e.filter(e=>{var t,r;return"jaeger"===(null===e||void 0===e||null===(t=e.metadata)||void 0===t||null===(r=t.labels)||void 0===r?void 0:r["app.kubernetes.io/part-of"])})},jaegerQuerySvc(){return s()(this.jaegerServices)?null:this.jaegerServices.find(e=>{var t;const r=null===e||void 0===e||null===(t=e.spec)||void 0===t?void 0:t.ports;if(r.length)return r.find(e=>16685===e.port||16686===e.port)})},openTelemetryServices(){var e;return null===(e=this.allServices)||void 0===e?void 0:e.filter(e=>{var t,r;return"opentelemetry-operator"===(null===e||void 0===e||null===(t=e.metadata)||void 0===t||null===(r=t.labels)||void 0===r?void 0:r[v["h"].MANAGED_NAME])})},openTelSvc(){return s()(this.openTelemetryServices)?null:this.openTelemetryServices.find(e=>{var t;const r=null===e||void 0===e||null===(t=e.spec)||void 0===t?void 0:t.ports;if(r.length)return r.find(e=>8080===e.port)})},showChecklist(){var e;return!this.openTelSvc||!this.jaegerQuerySvc||!(null!==(e=this.tracingConfiguration)&&void 0!==e&&e.enabled)},showTable(){return!this.emptyPolicies&&!this.showChecklist&&!this.emptyTraces},filteredValidations(){return s()(this.specificValidations)?[]:this.specificValidations.flatMap(e=>{var t;return(null===(t=this.currentCluster)||void 0===t?void 0:t.id)===e.cluster?e.traces:[]})}},methods:{modeColor(e){return this.MODE_MAP[e]},opColor(e){return this.OPERATION_MAP[e]},formatTime(e){return c()(e/1e3)},duration(e){return D(e)}}},z=Y,H=(r("f9fb"),Object(B["a"])(z,a,i,!1,null,"6d9cdf0c",null));t["a"]=H.exports},"17ab":function(e,t,r){var a=r("5eaa");t=a(!1),t.push([e.i,".checklist__container[data-v-cf603ff2]{display:flex;justify-content:center;flex-direction:column;border:1px solid var(--border);padding:10px}.checklist__config[data-v-cf603ff2],.checklist__step[data-v-cf603ff2]{display:flex;flex-direction:row;justify-content:flex-start;align-items:center}.checklist__step[data-v-cf603ff2]{min-height:40px}.conflicting-banner[data-v-cf603ff2]{display:flex;flex-direction:column}",""]),e.exports=t},2192:function(e,t,r){var a=r("5eaa");t=a(!1),t.push([e.i,".checklist__container[data-v-63ad3d60]{display:flex;justify-content:center;flex-direction:column;border:1px solid var(--border);padding:10px}.checklist__config[data-v-63ad3d60],.checklist__step[data-v-63ad3d60]{display:flex;flex-direction:row;justify-content:flex-start;align-items:center}.checklist__step[data-v-63ad3d60]{min-height:40px}",""]),e.exports=t},"284d":function(e,t,r){"use strict";r.r(t);var a=function(){var e=this,t=e._self._c;return e.$fetchState.pending?t("Loading"):t("div",[e.policyGauges?[t("div",{staticClass:"row"},[[t("div",{staticClass:"col span-6"},[t("h3",{attrs:{"data-testid":"kw-ps-detail-status-title"}},[e._v(" "+e._s(e.t("kubewarden.policyServer.policyGauge.byStatus"))+" ")]),t("div",{staticClass:"gauges mb-20"},e._l(e.policyGauges,(function(r,a){return t("CountGauge",{key:a,attrs:{total:e.relatedPoliciesTotal,useful:r.count||0,graphical:!1,"primary-color-var":"--sizzle-"+r.color,name:a}})})),1)])],e.emptyTraces?e._e():[t("div",{staticClass:"col span-6"},[t("h3",[e._v(" "+e._s(e.t("kubewarden.policyServer.policyGauge.traces"))+" ")]),t("div",{staticClass:"gauges mb-20"},e._l(e.tracesGauges,(function(r,a){return t("CountGauge",{key:a,attrs:{useful:r.count||0,total:e.traceGaugeTotals,graphical:!1,"primary-color-var":"--sizzle-"+r.color,name:a}})})),1)])]],2)]:e._e(),t("ResourceTabs",{attrs:{mode:e.mode},model:{value:e.value,callback:function(t){e.value=t},expression:"value"}},[t("Tab",{attrs:{name:"related-policies",label:"Policies",weight:99},scopedSlots:e._u([{key:"default",fn:function(){return[t("ResourceTable",{attrs:{rows:e.relatedPolicies||[],headers:e.RELATED_HEADERS,groupable:!0,"group-by":e.groupPreference,"table-actions":!0,"data-testid":"kw-ps-detail-related-policies-list"},scopedSlots:e._u([{key:"col:operation",fn:function({row:r}){return[t("td",[t("BadgeState",{attrs:{"data-testid":`kw-ps-detail-${r.id}-state`,label:r.operation,color:e.color(r.operation)}})],1)]}}])})]},proxy:!0}])}),t("Tab",{staticClass:"relative",attrs:{name:"policy-tracing",label:"Tracing",weight:98}},[t("TraceTable",{attrs:{resource:e.resource,"related-policies":e.relatedPolicies}})],1),t("Tab",{staticClass:"relative",attrs:{name:"policy-metrics",label:"Metrics",weight:97},scopedSlots:e._u([{key:"default",fn:function(r){return[t("MetricsTab",{attrs:{resource:e.resource,"policy-server-obj":e.value,active:r.active}})]}}])})],1)],2)},i=[],o=r("9ce4"),n=r("330a"),s=r.n(n),l=r("da25"),c=r("a8b9"),d=r("305c"),u=r("5000"),p=r("74c2"),v=r("15ca"),h=r("c422"),m=r("126f"),f=r("38de"),b=r("5191"),g=r("3f46"),y=r("00ce"),k={name:"PolicyServer",components:{CountGauge:p["a"],Loading:v["a"],MetricsTab:g["a"],ResourceTabs:h["a"],ResourceTable:m["a"],Tab:f["a"],TraceTable:y["a"]},mixins:[d["a"]],props:{mode:{type:String,default:l["t"]},resource:{type:String,default:null},value:{type:Object,required:!0}},async fetch(){const e=await Object(c["a"])({relatedPolicies:this.value.allRelatedPolicies(),policyGauges:this.value.policyGauges()}),t=(e,t)=>{s()(t)||(this[e]=t)};t("relatedPolicies",e.relatedPolicies),t("policyGauges",e.policyGauges)},data(){return{RELATED_HEADERS:b["e"],policyGauges:null,relatedPolicies:null,reloadRequired:!1}},computed:{...Object(o["a"])(["currentCluster"]),...Object(o["a"])({policyTraces:"kubewarden/policyTraces"}),_group:Object(u["n"])(u["e"]),filteredTraces(){return s()(this.policyTraces)?null:this.policyTraces.filter(e=>{var t;if((null===(t=this.currentCluster)||void 0===t?void 0:t.id)===e.cluster)return e})},emptyTraces(){return s()(this.filteredTraces)},groupPreference(){const e="namespace"===this._group?"kind":null;return e},relatedPoliciesTotal(){return s()(this.relatedPolicies)?0:this.relatedPolicies.length},tracesGauges(){return this.emptyTraces?null:this.value.tracesGauges(this.filteredTraces)},traceGaugeTotals(){var e;return this.emptyTraces?0:null===(e=this.filteredTraces)||void 0===e?void 0:e.flatMap(e=>e.traces).length}},methods:{hasNamespaceSelector(e){return e.namespaceSelector}}},w=k,_=(r("2a13"),r("d802")),C=Object(_["a"])(w,a,i,!1,null,"a88dafa8",null);t["default"]=C.exports},"2a13":function(e,t,r){"use strict";r("b7b9")},"3f46":function(e,t,r){"use strict";var a=function(){var e=this,t=e._self._c;return e.$fetchState.pending?t("Loading",{attrs:{mode:"relative"}}):t("div",[e.showChecklist?t("MetricsChecklist",{attrs:{"cattle-dashboard-ns":e.cattleDashboardNs,"conflicting-grafana-dashboards":e.conflictingGrafanaDashboards,"controller-app":e.controllerApp,"controller-chart":e.controllerChart,"kubewarden-service-monitor":e.kubewardenServiceMonitor,"kubewarden-dashboards":e.kubewardenGrafanaDashboards,"monitoring-app":e.monitoringApp,"monitoring-chart":e.monitoringChart,"open-tel-svc":e.openTelSvc,"policy-obj":e.policyObj,"policy-server-obj":e.policyServerObj},on:{updateServiceMonitors:e.updateServiceMonitors}}):e._e(),e.showChecklist?e._e():[e.monitoringApp&&!e.metricsProxy?t("Banner",{attrs:{color:"error",label:e.t("kubewarden.monitoring.warning.noProxy")}}):e._e(),e.metricsProxy&&e.active?t("DashboardMetrics",{attrs:{"data-testid":"kw-ps-metrics-dashboard","detail-url":e.metricsProxy,"summary-url":e.metricsProxy,vars:{policy_name:e.policyName},"graph-height":"825px"}}):e._e()]],2)},i=[],o=r("9ce4"),n=r("330a"),s=r.n(n),l=r("44db"),c=r.n(l),d=r("907c"),u=r("4ac6"),p=r("b45b"),v=r("f390"),h=r("a8b9"),m=r("2359"),f=r("c389"),b=r("15ca"),g=r("6418"),y=r("90cd"),k=r("e9a3"),w=r("541d");async function _(e){const{store:t,type:r}=e;try{const e=await C(t);if(!s()(e)){const t=`/api/v1/namespaces/${e.metadata.namespace}/services`,a=`/http:${e.metadata.name}:80/proxy`,i=`/d/${r}?orgId=1&kiosk`;return t+a+i}}catch(a){Object(k["a"])({error:a,store:t,type:"warning"})}return null}async function C(e){try{return await e.dispatch("cluster/find",{type:d["z"],id:"cattle-monitoring-system/rancher-monitoring-grafana"},{root:!0})}catch(t){Object(k["a"])({error:t,store:e,type:"warning"})}}async function S(e){try{return await e.dispatch("cluster/findMatching",{type:d["b"],selector:"kubewarden/part-of=cattle-kubewarden-system"})}catch(t){Object(k["a"])({error:t,store:e,type:"warning"})}}async function O(e){const{store:t,monitoringApp:a,controllerApp:i}=e;if(a&&i){const e=Object.values(y["n"]);for(const s of e){var o;const e=await r("cb8a")(`./${s}.json`),l=s+".json",c=await S(t);if(c&&(null===c||void 0===c||null===(o=c.metadata)||void 0===o?void 0:o.name)===s)return;const u={[y["m"].DASHBOARD]:s,[y["m"].PART_OF]:i.metadata.namespace,[y["m"].APP]:"rancher-monitoring-grafana",[y["m"].GRAFANA_DASHBOARD]:"1","app.kubernetes.io/instance":a.metadata.name},p={[y["e"].NAME]:a.metadata.name,[y["e"].NAMESPACE]:a.metadata.namespace},v=await t.dispatch("cluster/create",{type:d["b"],metadata:{annotations:p,labels:u,name:s,namespace:"cattle-dashboards"},data:{[l]:JSON.stringify(e)}});try{await v.save()}catch(n){Object(k["a"])({error:n,store:t})}}}}function T(e){const{policyObj:t,policyServerObj:r,allServiceMonitors:a}=e;if(!s()(a)){var i;const e=t?null===(i=t.spec)||void 0===i?void 0:i.policyServer:null===r||void 0===r?void 0:r.id;return null===a||void 0===a?void 0:a.find(t=>{var r,a,i;return(null===t||void 0===t||null===(r=t.spec)||void 0===r||null===(a=r.selector)||void 0===a||null===(i=a.matchLabels)||void 0===i?void 0:i["app"])==="kubewarden-policy-server-"+e})}}async function A(e){const{store:t,policyObj:r,policyServerObj:a,controllerNs:i,serviceMonitor:o}=e;if(t.getters["cluster/schemaFor"](d["m"].SERVICEMONITOR)){var n;const e=r?null===(n=r.spec)||void 0===n?void 0:n.policyServer:null===a||void 0===a?void 0:a.id,l={kind:"ServiceMonitor",type:d["m"].SERVICEMONITOR,metadata:{name:e,namespace:i},spec:{endpoints:[{interval:"10s",port:"metrics"}],namespaceSelector:{matchNames:[i]},selector:{matchLabels:{app:"kubewarden-policy-server-"+e}}}};if(!o){const e=await t.dispatch("cluster/create",l);try{await e.save()}catch(s){Object(k["a"])({error:s,store:t})}}}}var R=r("5136"),E=function(){var e=this,t=e._self._c;return t("div",{staticClass:"checklist__container"},[t("div",{staticClass:"checklist__prereq mb-20"},[t("h2",[e._v(e._s(e.t("kubewarden.monitoring.prerequisites.label")))]),t("p",[e._v(e._s(e.t("kubewarden.monitoring.prerequisites.description")))])]),t("Banner",{attrs:{color:"warning",label:e.t("kubewarden.monitoring.prerequisites.warning")}}),t("div",{staticClass:"mt-20 mb-20"},[t("div",{staticClass:"checklist__step mt-20 mb-20",attrs:{"data-testid":"kw-monitoring-checklist-step-open-tel"}},[t("i",{staticClass:"icon mr-10",class:e.badgeIcon(e.openTelSvc)}),t("p",{directives:[{name:"clean-html",rawName:"v-clean-html",value:e.t("kubewarden.tracing.openTelemetry",{},!0),expression:"t('kubewarden.tracing.openTelemetry', {}, true)"}]})]),t("div",{staticClass:"checklist__step mb-20",attrs:{"data-testid":"kw-monitoring-checklist-step-monitoring-app"}},[t("i",{staticClass:"icon mr-10",class:e.badgeIcon(e.monitoringApp)}),t("div",{staticClass:"checklist__config"},[t("p",{directives:[{name:"clean-html",rawName:"v-clean-html",value:e.t("kubewarden.monitoring.prerequisites.monitoringApp.label",{},!0),expression:"t('kubewarden.monitoring.prerequisites.monitoringApp.label', {}, true)"}],attrs:{p:""}}),e.monitoringApp?e._e():t("button",{directives:[{name:"clean-tooltip",rawName:"v-clean-tooltip",value:e.monitoringLinkTooltip,expression:"monitoringLinkTooltip"}],staticClass:"btn role-primary ml-10",attrs:{"data-testid":"kw-monitoring-checklist-step-config-button",disabled:!e.monitoringChart},on:{click:function(t){return e.monitoringAppRoute()}}},[e._v(" "+e._s(e.monitoringChartLink)+" ")])])]),t("div",{staticClass:"checklist__step mb-20",attrs:{"data-testid":"kw-monitoring-checklist-step-service-monitor-map"}},[t("i",{staticClass:"icon mr-10",class:e.badgeIcon(e.kubewardenServiceMonitor)}),t("div",{staticClass:"checklist__config"},[t("p",{directives:[{name:"clean-html",rawName:"v-clean-html",value:e.t("kubewarden.monitoring.prerequisites.serviceMonitor.label",{},!0),expression:"t('kubewarden.monitoring.prerequisites.serviceMonitor.label', {}, true)"}],attrs:{p:""}}),e.kubewardenServiceMonitor?e._e():t("AsyncButton",{directives:[{name:"clean-tooltip",rawName:"v-clean-tooltip",value:e.serviceMonitorsTooltip,expression:"serviceMonitorsTooltip"}],staticClass:"ml-10",attrs:{"data-testid":"kw-monitoring-checklist-step-service-monitor-button",mode:"serviceMonitor",disabled:e.serviceMonitorButtonDisabled},on:{click:e.addServiceMonitor}})],1)]),t("div",{staticClass:"checklist__step mb-20",attrs:{"data-testid":"kw-monitoring-checklist-step-config-map"}},[t("i",{staticClass:"icon mr-10",class:e.badgeIcon(e.hasKubewardenDashboards)}),t("div",{staticClass:"checklist__config"},[t("p",{directives:[{name:"clean-html",rawName:"v-clean-html",value:e.t("kubewarden.monitoring.prerequisites.configMap.label",{},!0),expression:"t('kubewarden.monitoring.prerequisites.configMap.label', {}, true)"}],attrs:{p:""}}),e.hasKubewardenDashboards?e._e():t("AsyncButton",{directives:[{name:"clean-tooltip",rawName:"v-clean-tooltip",value:e.dashboardsTooltip,expression:"dashboardsTooltip"}],staticClass:"ml-10",attrs:{"data-testid":"kw-monitoring-checklist-step-config-map-button",mode:"grafanaDashboard",disabled:e.dashboardButtonDisabled},on:{click:e.addDashboards}})],1)]),e.showConflictingDashboardsBanner?t("Banner",{attrs:{color:"error"}},[t("div",{staticClass:"conflicting-banner"},[t("p",[e._v(" "+e._s(e.t("kubewarden.monitoring.prerequisites.configMap.conflictingDashboardsBanner",{count:e.conflictingGrafanaDashboards.length},!0))+" ")]),e._l(e.conflictingGrafanaDashboards,(function(r){return t("n-link",{key:r.metadata.name,staticClass:"text-bold",attrs:{to:r.detailLocation}},[e._v(" "+e._s(r.metadata.name)+" ")])}))],2)]):e._e(),t("div",{staticClass:"checklist__step mb-20",attrs:{"data-testid":"kw-monitoring-checklist-step-controller-config"}},[t("i",{staticClass:"icon mr-10",class:e.badgeIcon(e.metricsEnabled)}),t("div",{staticClass:"checklist__config"},[t("p",{directives:[{name:"clean-html",rawName:"v-clean-html",value:e.t("kubewarden.monitoring.prerequisites.controllerConfig.label",{},!0),expression:"t('kubewarden.monitoring.prerequisites.controllerConfig.label', {}, true)"}],attrs:{p:""}}),e.metricsEnabled?e._e():t("button",{directives:[{name:"clean-tooltip",rawName:"v-clean-tooltip",value:e.controllerLinkTooltip,expression:"controllerLinkTooltip"}],staticClass:"btn role-primary ml-10",attrs:{"data-testid":"kw-monitoring-checklist-step-config-button",disabled:e.controllerLinkDisabled},on:{click:function(t){return e.controllerAppRoute()}}},[e._v(" "+e._s(e.t("kubewarden.monitoring.prerequisites.controllerConfig.button"))+" ")])])])],1)],1)},P=[],j=r("da25"),M=r("d709"),x={props:{cattleDashboardNs:{type:Object,default:null},conflictingGrafanaDashboards:{type:Array,default:null},controllerApp:{type:Object,default:null},controllerChart:{type:Object,default:null},kubewardenServiceMonitor:{type:Object,default:null},kubewardenDashboards:{type:Array,default:null},monitoringApp:{type:Object,default:null},monitoringChart:{type:Object,default:null},openTelSvc:{type:Object,default:null},policyObj:{type:Object,default:null},policyServerObj:{type:Object,default:null}},components:{AsyncButton:M["b"],Banner:g["a"]},computed:{...Object(o["a"])(["currentCluster"]),...Object(o["a"])({t:"i18n/t"}),controllerMetricsConfig(){var e,t,r;return this.controllerApp?null===(e=this.controllerApp.spec)||void 0===e||null===(t=e.values)||void 0===t||null===(r=t.telemetry)||void 0===r?void 0:r.metrics:null},controllerLinkDisabled(){return!this.openTelSvc||!this.monitoringApp||!this.hasKubewardenDashboards||!this.controllerChart||!this.controllerApp},controllerLinkTooltip(){return this.controllerLinkDisabled?this.t("kubewarden.monitoring.prerequisites.tooltips.prerequisites"):this.controllerChart?null:this.t("kubewarden.monitoring.prerequisites.tooltips.chartError",{chart:"Kubewarden Controller"},!0)},dashboardsTooltip(){return this.monitoringApp?this.monitoringApp&&s()(this.cattleDashboardNs)?this.t("kubewarden.monitoring.prerequisites.tooltips.nsNotFound"):null:this.t("kubewarden.monitoring.prerequisites.tooltips.appNotInstalled",{app:"Rancher Monitoring"},!0)},dashboardButtonDisabled(){return!this.monitoringApp||s()(this.cattleDashboardNs)||!this.hasKubewardenDashboards&&!!this.conflictingGrafanaDashboards.length},hasKubewardenDashboards(){return!s()(this.kubewardenDashboards)},metricsEnabled(){return this.controllerMetricsConfig?this.controllerMetricsConfig.enabled:null},monitoringChartLink(){return this.monitoringApp?this.t("kubewarden.monitoring.prerequisites.monitoringApp.edit"):this.t("kubewarden.monitoring.prerequisites.monitoringApp.install")},monitoringLinkTooltip(){return this.monitoringChart?null:this.t("kubewarden.monitoring.prerequisites.tooltips.chartError",{chart:"Rancher Monitoring"},!0)},serviceMonitorButtonDisabled(){return!this.controllerApp||!this.monitoringApp},serviceMonitorsTooltip(){return this.monitoringApp?!this.kubewardenServiceMonitor&&this.controllerApp?this.t("kubewarden.monitoring.prerequisites.tooltips.monitorsNotFound",{namespace:null===(e=this.controllerApp.metadata)||void 0===e?void 0:e.namespace},!0):null:this.t("kubewarden.monitoring.prerequisites.tooltips.prerequisites");var e},showConflictingDashboardsBanner(){return!this.hasKubewardenDashboards&&!s()(this.conflictingGrafanaDashboards)}},methods:{async addDashboards(e){try{await O({store:this.$store,monitoringApp:this.monitoringApp,controllerApp:this.controllerApp}),e(!0)}catch(t){Object(k["a"])({error:t,store:this.$store}),e(!1)}},async addServiceMonitor(e){try{var t,r;await A({store:this.$store,policyObj:this.policyObj,policyServerObj:this.policyServerObj,controllerNs:null===(t=this.controllerApp)||void 0===t||null===(r=t.metadata)||void 0===r?void 0:r.namespace,serviceMonitor:this.kubewardenServiceMonitor}),this.$emit("updateServiceMonitors"),e(!0)}catch(a){Object(k["a"])({error:a,store:this.$store}),e(!1)}},badgeIcon(e){if(Array.isArray(e)){const t=s()(e);return{"icon-dot-open":t,"icon-checkmark":!t,"text-success":!t}}return{"icon-dot-open":!e,"icon-checkmark":e,"text-success":e}},monitoringAppRoute(){if(!this.monitoringApp&&this.monitoringChart&&this.monitoringChart.goToInstall(),this.monitoringApp){var e,t,r,a,i,o,n,s,l,c,d,p,v,h,m,f,b;const g={[j["g"]]:null===(e=this.monitoringApp.metadata)||void 0===e?void 0:e.namespace,[j["f"]]:null===(t=this.monitoringApp.metadata)||void 0===t?void 0:t.name,[j["q"]]:null===(r=this.monitoringApp.spec)||void 0===r||null===(a=r.chart)||void 0===a||null===(i=a.metadata)||void 0===i?void 0:i.version,[j["i"]]:null===(o=this.monitoringApp.spec)||void 0===o||null===(n=o.chart)||void 0===n||null===(s=n.metadata)||void 0===s||null===(l=s.annotations)||void 0===l?void 0:l[u["c"].SOURCE_REPO_NAME],[j["j"]]:null===(c=this.monitoringApp.spec)||void 0===c||null===(d=c.chart)||void 0===d||null===(p=d.metadata)||void 0===p||null===(v=p.annotations)||void 0===v?void 0:v[u["c"].SOURCE_REPO_TYPE],[j["d"]]:null===(h=this.monitoringApp.spec)||void 0===h||null===(m=h.chart)||void 0===m||null===(f=m.metadata)||void 0===f?void 0:f.name};this.$router.push({name:"c-cluster-apps-charts-install",params:{cluster:(null===(b=this.currentCluster)||void 0===b?void 0:b.id)||"_"},query:g})}},controllerAppRoute(){if(this.controllerApp){var e,t,r,a,i,o,n,s;const l=null===(e=this.controllerApp.spec)||void 0===e||null===(t=e.chart)||void 0===t?void 0:t.metadata,c={[j["g"]]:null===l||void 0===l||null===(r=l.annotations)||void 0===r?void 0:r[u["c"].NAMESPACE],[j["f"]]:null===l||void 0===l||null===(a=l.annotations)||void 0===a?void 0:a[u["c"].RELEASE_NAME],[j["q"]]:null===l||void 0===l||null===(i=l.annotations)||void 0===i?void 0:i["catalog.cattle.io/upstream-version"],[j["i"]]:null===l||void 0===l||null===(o=l.annotations)||void 0===o?void 0:o[u["c"].SOURCE_REPO_NAME],[j["j"]]:null===l||void 0===l||null===(n=l.annotations)||void 0===n?void 0:n[u["c"].SOURCE_REPO_TYPE],[j["d"]]:null===l||void 0===l?void 0:l.name};this.$router.push({name:"c-cluster-apps-charts-install",params:{cluster:(null===(s=this.currentCluster)||void 0===s?void 0:s.id)||"_"},query:c})}}}},N=x,D=(r("6d24"),r("d802")),L=Object(D["a"])(N,E,P,!1,null,"cf603ff2",null),$=L.exports,I={props:{active:{type:Boolean,default:null},resource:{type:String,default:null},policyObj:{type:Object,default:null},policyServerObj:{type:Object,default:null}},components:{Banner:g["a"],DashboardMetrics:f["a"],Loading:b["a"],MetricsChecklist:$},mixins:[m["a"]],async fetch(){this.debouncedRefreshCharts=c()((e=!1)=>{Object(w["d"])({store:this.$store,chartName:"rancher-monitoring",init:e})},500);const e=[{name:d["a"].APP,property:this.allApps},{name:d["a"].CLUSTER_REPO,property:this.allRepos},{name:d["b"],property:this.allConfigMaps},{name:y["f"].POLICY_SERVER,property:this.allPolicyServers},{name:d["m"].SERVICEMONITOR,property:this.allServiceMonitors},{name:d["n"],property:this.allNamespaces},{name:d["z"],property:this.allServices}],t=[];for(const i of e)s()(i.property)&&this.$store.getters["cluster/canList"](i.name)&&t.push(this.$fetchType(i.name));if(await Object(h["a"])(t),this.showChecklist&&!this.monitoringChart&&this.debouncedRefreshCharts(!0),this.monitoringStatus.installed)try{var r;if(this.metricsProxy=await _({store:this.$store,type:this.METRICS_TYPE}),this.metricsProxy)this.metricsService=await Object(p["b"])("v2",this.$store,null===(r=this.currentCluster)||void 0===r?void 0:r.id,this.metricsProxy)}catch(a){const e={_statusText:"Error",message:"Error fetching Grafana Service: "+a};Object(k["a"])({error:e,store:this.$store})}},data(){const e=this.resource===y["f"].POLICY_SERVER?y["n"].POLICY_SERVER:y["n"].POLICY;return{METRICS_TYPE:e,[d["a"].APP]:null,[d["a"].CLUSTER_REPO]:null,[d["b"]]:null,[d["m"].SERVICEMONITOR]:null,[d["z"]]:null,metricsProxy:null,metricsService:null,debouncedRefreshCharts:null}},watch:{async grafanaService(){var e;this.metricsProxy||(this.metricsProxy=await _({store:this.$store,type:this.METRICS_TYPE}),this.metricsProxy&&(this.metricsService=await Object(p["b"])("v2",this.$store,null===(e=this.currentCluster)||void 0===e?void 0:e.id,this.metricsProxy)))}},computed:{...Object(o["a"])(["currentCluster","productId"]),...Object(o["a"])({charts:"catalog/charts"}),...Object(v["c"])(),policyName(){return Object(R["a"])(this.policyObj)},allApps(){return this.$store.getters["cluster/all"](d["a"].APP)},allRepos(){return this.$store.getters["cluster/all"](d["a"].CLUSTER_REPO)},allConfigMaps(){return this.$store.getters["cluster/all"](d["b"])},allNamespaces(){return this.$store.getters["cluster/all"](d["n"])},allPolicyServers(){return this.$store.getters["cluster/all"](y["f"].POLICY_SERVER)},allServiceMonitors(){return this.$store.getters["cluster/all"](d["m"].SERVICEMONITOR)},allServices(){return this.$store.getters["cluster/all"](d["z"])},cattleDashboardNs(){var e;return null===(e=this.allNamespaces)||void 0===e?void 0:e.find(e=>{var t;return"cattle-dashboards"===(null===e||void 0===e||null===(t=e.metadata)||void 0===t?void 0:t.name)})},conflictingGrafanaDashboards(){var e;return null===(e=this.allConfigMaps)||void 0===e?void 0:e.filter(e=>{var t;const r=null===e||void 0===e||null===(t=e.metadata)||void 0===t?void 0:t.name;if(r)return r===y["n"].POLICY_SERVER||r===y["n"].POLICY})},controllerApp(){var e;return null===(e=this.allApps)||void 0===e?void 0:e.find(e=>{var t,r,a;return(null===e||void 0===e||null===(t=e.spec)||void 0===t||null===(r=t.chart)||void 0===r||null===(a=r.metadata)||void 0===a?void 0:a.name)===y["h"].CONTROLLER})},controllerChart(){var e;return null===(e=this.charts)||void 0===e?void 0:e.find(e=>e.chartName===y["h"].CONTROLLER)},grafanaService(){var e;const t=null===(e=this.allServices)||void 0===e?void 0:e.filter(e=>{var t,r;return"rancher-monitoring"===(null===e||void 0===e||null===(t=e.metadata)||void 0===t||null===(r=t.labels)||void 0===r?void 0:r["app.kubernetes.io/instance"])});return null===t||void 0===t?void 0:t.find(e=>{var t,r;return"grafana"===(null===e||void 0===e||null===(t=e.metadata)||void 0===t||null===(r=t.labels)||void 0===r?void 0:r["app.kubernetes.io/name"])})},kubewardenGrafanaDashboards(){var e;return null===(e=this.allConfigMaps)||void 0===e?void 0:e.filter(e=>{var t,r;return null===e||void 0===e||null===(t=e.metadata)||void 0===t||null===(r=t.labels)||void 0===r?void 0:r[y["m"].DASHBOARD]})},kubewardenServiceMonitor(){var e,t;return T({policyObj:this.policyObj,policyServerObj:this.policyServerObj,controllerNs:null===(e=this.controllerApp)||void 0===e||null===(t=e.metadata)||void 0===t?void 0:t.namespace,allServiceMonitors:this.allServiceMonitors})},monitoringApp(){var e;return null===(e=this.allApps)||void 0===e?void 0:e.find(e=>{var t,r,a;return"rancher-monitoring"===(null===e||void 0===e||null===(t=e.spec)||void 0===t||null===(r=t.chart)||void 0===r||null===(a=r.metadata)||void 0===a?void 0:a.name)})},monitoringChart(){var e;return null===(e=this.charts)||void 0===e?void 0:e.find(e=>"rancher-monitoring"===e.chartName)},openTelemetryServices(){return this.allServices?this.allServices.filter(e=>{var t,r;return"opentelemetry-operator"===(null===e||void 0===e||null===(t=e.metadata)||void 0===t||null===(r=t.labels)||void 0===r?void 0:r[u["h"].MANAGED_NAME])}):null},openTelSvc(){return s()(this.openTelemetryServices)?null:this.openTelemetryServices.find(e=>{var t;const r=null===e||void 0===e||null===(t=e.spec)||void 0===t?void 0:t.ports;if(r.length)return r.find(e=>8080===e.port)})},policyServerSvcs(){if(!s()(this.allPolicyServers)){const t=this.allPolicyServers.map(e=>{var t;return null===e||void 0===e||null===(t=e.metadata)||void 0===t?void 0:t.name}),r=[];for(const a of t){var e;r.push(null===(e=this.allServices)||void 0===e?void 0:e.find(e=>{var t,r;return(null===e||void 0===e||null===(t=e.metadata)||void 0===t||null===(r=t.labels)||void 0===r?void 0:r.app)==="kubewarden-policy-server-"+a}))}return r}return null},showChecklist(){var e,t,r,a,i;const o=null===(e=this.controllerApp)||void 0===e||null===(t=e.spec)||void 0===t||null===(r=t.values)||void 0===r||null===(a=r.telemetry)||void 0===a||null===(i=a.metrics)||void 0===i?void 0:i.enabled,n=!s()(this.kubewardenGrafanaDashboards);return!this.openTelSvc||!this.monitoringApp||!this.kubewardenServiceMonitor||!o||!n}},methods:{async updateServiceMonitors(){await this.$fetchType(d["m"].SERVICEMONITOR)}}},q=I,G=Object(D["a"])(q,a,i,!1,null,null,null);t["a"]=G.exports},5136:function(e,t,r){"use strict";r.d(t,"b",(function(){return l})),r.d(t,"a",(function(){return c}));var a=r("330a"),i=r.n(a),o=r("90cd");function n(e,t){const r=null===e||void 0===e?void 0:e.links["view"],a=r.lastIndexOf("/");return s(r.slice(0,a),"http",null===e||void 0===e?void 0:e.metadata.name,t)}function s(e,t,r,a,i){const o=(t?encodeURIComponent(t)+":":"")+encodeURIComponent(r)+(a?":"+encodeURIComponent(a):""),n="/"+(i||"").replace(/^\/+/g,""),s=e.replace(/\/+$/g,""),l=`${s}/${o}/proxy${n}`;return l}async function l(e){const{store:t,queryService:r,resource:a,relatedPolicies:o,policy:s,time:l}=e;try{const e=n(r,16686),c=[];if(i()(o)){if(!s)throw new Error("Policy is undefined");c.push(d(t,e,s,l))}else null===o||void 0===o||o.forEach(r=>{const a=d(t,e,r,l);a&&c.push(a)});let p=await Promise.all(c);return p=p.flatMap(e=>null===e||void 0===e?void 0:e.data),u(t,p,a,o,s)}catch(c){console.warn("Error fetching Jaeger traces: "+c)}return null}function c(e){var t,r,a;let i=null;switch(null===e||void 0===e?void 0:e.kind){case"ClusterAdmissionPolicy":i="clusterwide-"+(null===e||void 0===e||null===(t=e.metadata)||void 0===t?void 0:t.name);break;case"AdmissionPolicy":i=`namespaced-${null===e||void 0===e||null===(r=e.metadata)||void 0===r?void 0:r.namespace}-${null===e||void 0===e||null===(a=e.metadata)||void 0===a?void 0:a.name}`;break;default:break}return i}function d(e,t,r,a){let i=null;const o=c(r),n=a||"2d",s=`lookback=${n}&tags={"policy_id"%3A"${o}"}`;i="api/traces?service=kubewarden-policy-server&operation=validation&"+s;const l=""+(t+i);return e.dispatch("cluster/request",{url:l})}function u(e,t,r,a,n){const s=e.getters["currentCluster"],l=[];function d(r){const a=c(r);return t.reduce((t,o)=>{var n;let l={};const c=o.spans.find(e=>"validation"===e.operationName),d=null===c||void 0===c||null===(n=c.tags)||void 0===n?void 0:n.find(e=>"policy_id"===(null===e||void 0===e?void 0:e.key)&&(null===e||void 0===e?void 0:e.value)===a);if(d){const e=p(c.tags);l={id:o.traceID,allowed:e.allowed,mode:r.spec.mode,name:e.name,operation:e.operation,kind:e.kind,namespace:e.namespace||null,startTime:c.startTime,duration:c.duration,responseMessage:e.response_message,responseCode:e.response_code,mutated:e.mutated}}return i()(l)||(t.push(l),e.dispatch("kubewarden/updatePolicyTraces",{policyName:r.metadata.name,cluster:null===s||void 0===s?void 0:s.id,updatedTrace:l})),t},[])}if(r===o["f"].POLICY_SERVER)for(const o of a){const e=d(o);i()(e)||l.push({policyName:o.metadata.name,cluster:null===s||void 0===s?void 0:s.id,traces:e})}else{const e=d(n);i()(e)||l.push({policyName:n.metadata.name,cluster:null===s||void 0===s?void 0:s.id,traces:e})}return l}function p(e){const t={};for(const r of e)switch(r.type){case"string":t[r.key]=r.value;break;case"int64":t[r.key]=parseInt(r.value,10);break;case"float64":t[r.key]=parseFloat(r.value);break;case"bool":t[r.key]="true"===r.value;break;default:t[r.key]=r.value}return t}},5523:function(e,t,r){var a=r("5eaa");t=a(!1),t.push([e.i,".relative[data-v-a88dafa8]{position:relative}.policy__mode[data-v-a88dafa8]{display:flex;align-items:center}.policy__mode i[data-v-a88dafa8]{margin-left:5px;font-size:22px;color:var(--warning)}.gauges[data-v-a88dafa8],.gaugesContainer[data-v-a88dafa8]{display:flex}.gauges[data-v-a88dafa8]{justify-content:space-around;flex-wrap:wrap;justify-content:left}.gauges .count-gauge[data-v-a88dafa8]{width:46%;margin-bottom:10px;flex:initial}.gauges>*[data-v-a88dafa8]{flex:1;margin-right:1.75%}",""]),e.exports=t},6478:function(e,t,r){"use strict";r("6e05")},"6cda":function(e,t,r){var a=r("5eaa");t=a(!1),t.push([e.i,".sub-row[data-v-6d9cdf0c]{background-color:var(--body-bg);border-bottom:1px solid var(--sortable-table-top-divider);padding-left:1rem;padding-right:1rem}.details[data-v-6d9cdf0c]{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:1em}.details .col[data-v-6d9cdf0c]{display:flex;flex-direction:column}.details .col section[data-v-6d9cdf0c]{margin-bottom:1.5rem}.details .col .title[data-v-6d9cdf0c]{color:var(--muted);margin-bottom:.5rem}",""]),e.exports=t},"6d24":function(e,t,r){"use strict";r("f343")},"6e05":function(e,t,r){var a=r("2192");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[e.i,a,""]]),a.locals&&(e.exports=a.locals);var i=r("0ed3").default;i("6af1f964",a,!0,{sourceMap:!1,shadowMode:!1})},"733f":function(e,t,r){"use strict";r.r(t);var a=function(){var e=this,t=e._self._c;return t("PolicyDetail",{attrs:{value:e.value,mode:e.mode,resource:e.resource}})},i=[],o=r("da25"),n=r("80db"),s={name:"AdmissionPolicy",props:{mode:{type:String,default:o["t"]},resource:{type:String,default:null},value:{type:Object,required:!0}},components:{PolicyDetail:n["a"]}},l=s,c=r("d802"),d=Object(c["a"])(l,a,i,!1,null,null,null);t["default"]=d.exports},"80db":function(e,t,r){"use strict";var a=function(){var e=this,t=e._self._c;return t("div",[t("div",{staticClass:"mb-20"},[t("h3",[e._v(e._s(e.t("namespace.resources")))])]),t("ResourceTabs",{attrs:{"data-testid":"kw-policy-detail-tabs",mode:e.mode,"need-related":e.hasRelationships},model:{value:e.value,callback:function(t){e.value=t},expression:"value"}},[e.policyReadme?t("Tab",{attrs:{name:"policy-readme",label:"Readme",weight:99}},[t("Markdown",{attrs:{"data-testid":"kw-policy-detail-readme"},model:{value:e.policyReadme,callback:function(t){e.policyReadme=t},expression:"policyReadme"}})],1):e._e(),e.hasRules?t("Tab",{attrs:{name:"policy-rules",label:"Rules",weight:98}},[t("RulesTable",{attrs:{rows:e.rulesRows,"data-testid":"kw-policy-detail-rules-table"}})],1):e._e(),t("Tab",{attrs:{name:"policy-tracing",label:"Tracing",weight:97}},[t("TraceTable",{attrs:{resource:e.resource,policy:e.value,"data-testid":"kw-policy-detail-trace-table"}})],1),t("Tab",{attrs:{name:"policy-metrics",label:"Metrics",weight:96},scopedSlots:e._u([{key:"default",fn:function(r){return[t("MetricsTab",{attrs:{resource:e.resource,"policy-obj":e.value,active:r.active}})]}}])})],1)],1)},i=[],o=r("9ce4"),n=r("330a"),s=r.n(n),l=r("da25"),c=r("f390"),d=r("305c"),u=r("56dc"),p=r("c422"),v=r("38de"),h=r("90cd"),m=r("3f46"),f=function(){var e=this,t=e._self._c;return t("div",[e.rows.length>0?t("SortableTable",{attrs:{"data-testid":"kw-policy-rules-sortable-table",rows:e.rows,headers:e.RULE_HEADERS,"table-actions":!1,"row-actions":!1,"key-field":"traceID","default-sort-by":"startTime"},scopedSlots:e._u([{key:"col:apiGroup",fn:function({row:r}){return[t("td",[t("span",[e._v(e._s(r.apiGroups||"-"))])])]}},{key:"col:apiVersion",fn:function({row:r}){return[t("td",[t("span",[e._v(e._s(r.apiVersions||"-"))])])]}},{key:"col:operations",fn:function({row:r}){return[t("td",[t("span",[e._v(e._s(e.joinColumn(r.operations)))])])]}},{key:"col:resources",fn:function({row:r}){return[t("td",[t("span",[e._v(e._s(e.joinColumn(r.resources)))])])]}}],null,!1,1857136105)}):t("div",[t("Banner",{staticClass:"type-banner mb-20 mt-0",attrs:{color:"warning",label:e.t("kubewarden.policies.noRules")}})],1)],1)},b=[],g=r("6418"),y=r("0fb1"),k=r("5191"),w={props:{rows:{type:Array,default:()=>[]}},components:{Banner:g["a"],SortableTable:y["b"]},data(){return{RULE_HEADERS:k["f"]}},methods:{joinColumn(e){return(null===e||void 0===e?void 0:e.join(", "))||""}}},_=w,C=r("d802"),S=Object(C["a"])(_,f,b,!1,null,null,null),O=S.exports,T=r("00ce"),A={name:"PolicyDetail",components:{Markdown:u["a"],MetricsTab:m["a"],ResourceTabs:p["a"],RulesTable:O,Tab:v["a"],TraceTable:T["a"]},mixins:[d["a"]],props:{mode:{type:String,default:l["t"]},resource:{type:String,default:null},value:{type:Object,default:()=>{}}},async mounted(){var e,t,r;if(null!==(e=this.value)&&void 0!==e&&null!==(t=e.metadata)&&void 0!==t&&null!==(r=t.annotations)&&void 0!==r&&r[h["b"]])try{const e=await this.value.artifactHubPackageVersion();e&&!e.error&&e.readme&&(this.policyReadme=JSON.parse(JSON.stringify(e.readme)))}catch(a){console.warn("Unable to fetch artifacthub package: "+a)}},data(){return{policyReadme:null}},computed:{...Object(o["a"])(["currentCluster"]),...Object(c["c"])(),dashboardVars(){var e;return{policy_name:"clusterwide-"+(null===(e=this.value)||void 0===e?void 0:e.id)}},hasRelationships(){var e,t;return!(null===(e=this.value)||void 0===e||null===(t=e.metadata)||void 0===t||!t.relationships)},hasRules(){var e;return!s()(null===(e=this.rulesRows)||void 0===e?void 0:e[0])},rulesRows(){var e,t;return null===(e=this.value)||void 0===e||null===(t=e.spec)||void 0===t?void 0:t.rules}}},R=A,E=Object(C["a"])(R,a,i,!1,null,null,null);t["a"]=E.exports},b3e2:function(e,t,r){"use strict";r.r(t);var a=function(){var e=this,t=e._self._c;return t("PolicyDetail",{attrs:{value:e.value,mode:e.mode,resource:e.resource}})},i=[],o=r("da25"),n=r("80db"),s={name:"ClusterAdmissionPolicy",props:{mode:{type:String,default:o["t"]},resource:{type:String,default:null},value:{type:Object,required:!0}},components:{PolicyDetail:n["a"]}},l=s,c=r("d802"),d=Object(c["a"])(l,a,i,!1,null,null,null);t["default"]=d.exports},b7b9:function(e,t,r){var a=r("5523");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[e.i,a,""]]),a.locals&&(e.exports=a.locals);var i=r("0ed3").default;i("5b3b0e05",a,!0,{sourceMap:!1,shadowMode:!1})},cb8a:function(e,t,r){var a={"./kubewarden-dashboard-policy.json":["ec40",8],"./kubewarden-dashboard-policyserver.json":["82e7",9]};function i(e){if(!r.o(a,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=a[e],i=t[0];return r.e(t[1]).then((function(){return r.t(i,3)}))}i.keys=function(){return Object.keys(a)},i.id="cb8a",e.exports=i},ddac:function(e,t,r){var a=r("6cda");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[e.i,a,""]]),a.locals&&(e.exports=a.locals);var i=r("0ed3").default;i("2288b21c",a,!0,{sourceMap:!1,shadowMode:!1})},f343:function(e,t,r){var a=r("17ab");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[e.i,a,""]]),a.locals&&(e.exports=a.locals);var i=r("0ed3").default;i("e65b503e",a,!0,{sourceMap:!1,shadowMode:!1})},f9fb:function(e,t,r){"use strict";r("ddac")}}]); +//# sourceMappingURL=kubewarden-1.6.0.umd.min.detail.js.map \ No newline at end of file diff --git a/extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.detail.js.map b/extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.detail.js.map new file mode 100644 index 0000000..c1442f9 --- /dev/null +++ b/extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.detail.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack://kubewarden-1.6.0/./components/TraceTable.vue","webpack://kubewarden-1.6.0/./utils/duration-format.ts","webpack://kubewarden-1.6.0/./components/TraceChecklist.vue","webpack://kubewarden-1.6.0/components/TraceChecklist.vue","webpack://kubewarden-1.6.0/./components/TraceChecklist.vue?c473","webpack://kubewarden-1.6.0/./components/TraceChecklist.vue?17a3","webpack://kubewarden-1.6.0/components/TraceTable.vue","webpack://kubewarden-1.6.0/./components/TraceTable.vue?a899","webpack://kubewarden-1.6.0/./components/TraceTable.vue?a48d","webpack://kubewarden-1.6.0/./components/MetricsChecklist.vue?ab19","webpack://kubewarden-1.6.0/./components/TraceChecklist.vue?1214","webpack://kubewarden-1.6.0/./detail/policies.kubewarden.io.policyserver.vue","webpack://kubewarden-1.6.0/detail/policies.kubewarden.io.policyserver.vue","webpack://kubewarden-1.6.0/./detail/policies.kubewarden.io.policyserver.vue?5658","webpack://kubewarden-1.6.0/./detail/policies.kubewarden.io.policyserver.vue?dde1","webpack://kubewarden-1.6.0/./detail/policies.kubewarden.io.policyserver.vue?2c5e","webpack://kubewarden-1.6.0/./components/MetricsTab.vue","webpack://kubewarden-1.6.0/./modules/grafana.ts","webpack://kubewarden-1.6.0/./modules/metricsConfig.ts","webpack://kubewarden-1.6.0/./components/MetricsChecklist.vue","webpack://kubewarden-1.6.0/components/MetricsChecklist.vue","webpack://kubewarden-1.6.0/./components/MetricsChecklist.vue?f44c","webpack://kubewarden-1.6.0/./components/MetricsChecklist.vue?806c","webpack://kubewarden-1.6.0/components/MetricsTab.vue","webpack://kubewarden-1.6.0/./components/MetricsTab.vue?0f48","webpack://kubewarden-1.6.0/./components/MetricsTab.vue?5f74","webpack://kubewarden-1.6.0/./utils/service.ts","webpack://kubewarden-1.6.0/./modules/jaegerTracing.ts","webpack://kubewarden-1.6.0/./detail/policies.kubewarden.io.policyserver.vue?c0d7","webpack://kubewarden-1.6.0/./components/TraceChecklist.vue?f21f","webpack://kubewarden-1.6.0/./components/TraceTable.vue?e974","webpack://kubewarden-1.6.0/./components/MetricsChecklist.vue?ca6e","webpack://kubewarden-1.6.0/./components/TraceChecklist.vue?9d70","webpack://kubewarden-1.6.0/./detail/policies.kubewarden.io.admissionpolicy.vue","webpack://kubewarden-1.6.0/detail/policies.kubewarden.io.admissionpolicy.vue","webpack://kubewarden-1.6.0/./detail/policies.kubewarden.io.admissionpolicy.vue?9025","webpack://kubewarden-1.6.0/./detail/policies.kubewarden.io.admissionpolicy.vue?eb14","webpack://kubewarden-1.6.0/./components/Policies/PolicyDetail.vue","webpack://kubewarden-1.6.0/./components/RulesTable.vue","webpack://kubewarden-1.6.0/components/RulesTable.vue","webpack://kubewarden-1.6.0/./components/RulesTable.vue?fa84","webpack://kubewarden-1.6.0/./components/RulesTable.vue?66d0","webpack://kubewarden-1.6.0/components/Policies/PolicyDetail.vue","webpack://kubewarden-1.6.0/./components/Policies/PolicyDetail.vue?2754","webpack://kubewarden-1.6.0/./components/Policies/PolicyDetail.vue?92e0","webpack://kubewarden-1.6.0/./detail/policies.kubewarden.io.clusteradmissionpolicy.vue","webpack://kubewarden-1.6.0/detail/policies.kubewarden.io.clusteradmissionpolicy.vue","webpack://kubewarden-1.6.0/./detail/policies.kubewarden.io.clusteradmissionpolicy.vue?50e4","webpack://kubewarden-1.6.0/./detail/policies.kubewarden.io.clusteradmissionpolicy.vue?0db9","webpack://kubewarden-1.6.0/./detail/policies.kubewarden.io.policyserver.vue?d40e","webpack://kubewarden-1.6.0/./assets lazy ^\\.\\/.*\\.json$ namespace object","webpack://kubewarden-1.6.0/./components/TraceTable.vue?ce91","webpack://kubewarden-1.6.0/./components/MetricsChecklist.vue?6d71","webpack://kubewarden-1.6.0/./components/TraceTable.vue?0448"],"names":["render","_vm","this","_c","_self","$fetchState","pending","refreshingCharts","attrs","showChecklist","controllerApp","controllerChart","tracingConfiguration","jaegerQuerySvc","openTelSvc","emptyPolicies","t","showTable","filteredValidations","TRACE_HEADERS","rowsPerPage","scopedSlots","_u","key","fn","row","staticClass","mode","modeColor","_v","_s","name","namespace","formatTime","startTime","duration","fullColspan","responseMessage","responseCode","mutated","emptyTracesLabel","staticRenderFns","dayjs","extend","_duration","ONE_MILLISECOND","ONE_SECOND","ONE_MINUTE","ONE_HOUR","ONE_DAY","UNIT_STEPS","unit","microseconds","ofPrevious","formatDuration","primaryUnit","secondaryUnit","_dropWhile","index","length","_round","primaryValue","Math","floor","primaryUnitString","secondaryValue","round","secondaryUnitString","class","badgeIcon","directives","rawName","value","expression","tracingEnabled","controllerLinkTooltip","controllerLinkDisabled","on","controllerAppRoute","props","type","Object","default","components","Banner","computed","mapGetters","chart","enabled","methods","prop","_this$controllerApp$s","_this$controllerApp$s2","_metadata$annotations","_metadata$annotations2","_metadata$annotations3","_metadata$annotations4","_metadata$annotations5","_this$currentCluster","metadata","spec","query","NAMESPACE","annotations","CATALOG","NAME","RELEASE_NAME","VERSION","REPO","SOURCE_REPO_NAME","REPO_TYPE","SOURCE_REPO_TYPE","CHART","$router","push","params","cluster","currentCluster","id","component","relativeTime","resource","String","relatedPolicies","Array","policy","BadgeState","Loading","SortableTable","TraceChecklist","mixins","ResourceFetch","types","APP","CLUSTER_REPO","SERVICE","hash","$store","getters","$fetchType","allHash","options","store","queryService","KUBEWARDEN","POLICY_SERVER","specificValidations","jaegerTraces","data","MODE_MAP","OPERATION_MAP","charts","allApps","allServices","_this$allApps","find","app","_app$spec","_app$spec$chart","_app$spec$chart$metad","KUBEWARDEN_CHARTS","CONTROLLER","_this$charts","chartName","groupField","isPolicyServer","isEmpty","emptyTraces","_this$controllerApp","_this$controllerApp$s3","values","telemetry","tracing","jaegerServices","_this$allServices","filter","svc","_svc$metadata","_svc$metadata$labels","labels","_svc$spec","ports","p","port","openTelemetryServices","_this$allServices2","_svc$metadata2","_svc$metadata2$labels","KUBERNETES","MANAGED_NAME","_svc$spec2","_this$tracingConfigur","flatMap","v","traces","opColor","op","time","___CSS_LOADER_API_IMPORT___","exports","module","i","policyGauges","_l","group","relatedPoliciesTotal","count","color","_e","tracesGauges","traceGaugeTotals","model","callback","$$v","RELATED_HEADERS","groupPreference","operation","proxy","active","CountGauge","MetricsTab","ResourceTabs","ResourceTable","Tab","TraceTable","CreateEditView","_CREATE","required","allRelatedPolicies","assignIfNotEmpty","reloadRequired","policyTraces","_group","mapPref","GROUP_RESOURCES","filteredTraces","policyTraceObj","out","_this$filteredTraces","hasNamespaceSelector","namespaceSelector","cattleDashboardNs","conflictingGrafanaDashboards","kubewardenServiceMonitor","kubewardenGrafanaDashboards","monitoringApp","monitoringChart","policyObj","policyServerObj","updateServiceMonitors","metricsProxy","policyName","async","grafanaProxy","config","grafana","grafanaService","base","path","e","handleGrowl","error","dispatch","root","findKubewardenDashboards","CONFIG_MAP","selector","addKubewardenDashboards","dashboardEnums","KubewardenDashboards","_existing$metadata","file","fileKey","existing","KubewardenDashboardLabels","DASHBOARD","PART_OF","GRAFANA_DASHBOARD","HelmAnnotations","configMapTemplate","JSON","stringify","save","findServiceMonitor","allServiceMonitors","_policyObj$spec","smName","policyServer","sm","_sm$spec","_sm$spec$selector","_sm$spec$selector$mat","matchLabels","addKubewardenServiceMonitor","controllerNs","serviceMonitor","MONITORING","SERVICEMONITOR","_policyObj$spec2","serviceMonitorTemplate","kind","endpoints","interval","matchNames","serviceMonitorObj","monitoringLinkTooltip","$event","monitoringAppRoute","monitoringChartLink","serviceMonitorsTooltip","serviceMonitorButtonDisabled","addServiceMonitor","hasKubewardenDashboards","dashboardsTooltip","dashboardButtonDisabled","addDashboards","showConflictingDashboardsBanner","configMap","detailLocation","metricsEnabled","kubewardenDashboards","AsyncButton","controllerMetricsConfig","metrics","_this$controllerApp$m","btnCb","_this$controllerApp$m2","$emit","isArray","emptyProp","goToInstall","_this$monitoringApp$m","_this$monitoringApp$m2","_this$monitoringApp$s","_this$monitoringApp$s2","_this$monitoringApp$s3","_this$monitoringApp$s4","_this$monitoringApp$s5","_this$monitoringApp$s6","_this$monitoringApp$s7","_this$monitoringApp$s8","_this$monitoringApp$s9","_this$monitoringApp$s10","_this$monitoringApp$s11","_this$monitoringApp$s12","_this$monitoringApp$s13","_this$monitoringApp$s14","version","_this$controllerApp$s4","_this$controllerApp$s5","_this$currentCluster2","Boolean","DashboardMetrics","MetricsChecklist","debouncedRefreshCharts","debounce","init","refreshCharts","resourceMap","property","allRepos","allConfigMaps","allPolicyServers","allNamespaces","monitoringStatus","installed","METRICS_TYPE","metricsService","dashboardExists","_statusText","message","POLICY","watch","jaegerPolicyName","_this$allNamespaces","ns","_ns$metadata","_this$allConfigMaps","_configMap$metadata","monitoringServices","_this$allConfigMaps2","_configMap$metadata2","_configMap$metadata2$","_this$allApps2","_app$spec2","_app$spec2$chart","_app$spec2$chart$meta","_this$charts2","_svc$metadata3","_svc$metadata3$labels","policyServerSvcs","policyServerNames","map","ps","_ps$metadata","_svc$metadata4","_svc$metadata4$labels","_this$controllerApp2","_this$controllerApp2$","_this$controllerApp2$2","_this$controllerApp2$3","_this$controllerApp2$4","monitoringEnabled","grafanaDashboardsInstalled","proxyUrl","service","view","links","idx","lastIndexOf","proxyUrlFromBase","slice","scheme","schemaNamePort","encodeURIComponent","cleanPath","replace","cleanBase","promises","Error","jaegerTraceRequest","forEach","res","Promise","all","o","scaffoldPolicyTrace","console","warn","_policy$metadata","_policy$metadata2","_policy$metadata3","apiPath","lookbackTime","JAEGER_PATH","url","filterTraces","reduce","acc","trace","_validationSpan$tags","validationSpan","spans","span","operationName","matchedTag","tags","tag","convertedTags","convertTagsToObject","traceID","allowed","response_message","response_code","updatedTrace","relatedPolicy","relatedTraces","arr","result","item","parseInt","parseFloat","content","__esModule","locals","add","PolicyDetail","hasRelationships","policyReadme","hasRules","rulesRows","rows","RULE_HEADERS","apiGroups","apiVersions","joinColumn","operations","resources","join","Markdown","RulesTable","_this$value","_this$value$metadata","_this$value$metadata$","ARTIFACTHUB_PKG_ANNOTATION","artifactHubPackage","artifactHubPackageVersion","readme","parse","dashboardVars","_this$value2","policy_name","_this$value3","_this$value3$metadata","relationships","_this$rulesRows","_this$value4","_this$value4$spec","rules","webpackAsyncContext","req","__webpack_require__","resolve","then","code","ids","keys"],"mappings":"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","file":"kubewarden-1.6.0.umd.min.detail.js","sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.$fetchState.pending || _vm.refreshingCharts)?_c('Loading',{attrs:{\"mode\":\"relative\"}}):_c('div',[(_vm.showChecklist)?_c('TraceChecklist',{attrs:{\"controller-app\":_vm.controllerApp,\"controller-chart\":_vm.controllerChart,\"tracing-configuration\":_vm.tracingConfiguration,\"jaeger-query-svc\":_vm.jaegerQuerySvc,\"open-tel-svc\":_vm.openTelSvc}}):(!_vm.showChecklist && _vm.emptyPolicies)?_c('Banner',{attrs:{\"color\":\"error\",\"label\":_vm.t('kubewarden.tracing.noRelatedPolicies')}}):(_vm.showTable)?_c('SortableTable',{attrs:{\"rows\":_vm.filteredValidations,\"headers\":_vm.TRACE_HEADERS,\"table-actions\":false,\"row-actions\":false,\"key-field\":\"id\",\"default-sort-by\":\"startTime\",\"sub-expandable\":true,\"sub-expand-column\":true,\"sub-rows\":true,\"paging\":true,\"rows-per-page\":_vm.rowsPerPage},scopedSlots:_vm._u([{key:\"col:mode\",fn:function({row}){return [_c('td',[_c('BadgeState',{staticClass:\"text-capitalize\",attrs:{\"label\":row.mode,\"color\":_vm.modeColor(row.mode)}})],1)]}},{key:\"col:name\",fn:function({row}){return [_c('td',{staticClass:\"text-bold\"},[_vm._v(\" \"+_vm._s(row.name)+\" \")])]}},{key:\"col:namespace\",fn:function({row}){return [_c('td',[_vm._v(\" \"+_vm._s(row.namespace ? row.namespace : '-')+\" \")])]}},{key:\"col:startTime\",fn:function({row}){return [_c('td',[_vm._v(\" \"+_vm._s(_vm.formatTime(row.startTime))+\" \")])]}},{key:\"col:duration\",fn:function({row}){return [_c('td',[_vm._v(\" \"+_vm._s(_vm.duration(row.duration))+\" \")])]}},{key:\"sub-row\",fn:function({row, fullColspan}){return [_c('td',{staticClass:\"sub-row\",attrs:{\"colspan\":fullColspan}},[_c('div',{staticClass:\"details\"},[_c('section',{staticClass:\"col\"},[_c('div',{staticClass:\"title\"},[_vm._v(\" Response Message \")]),_c('span',{staticClass:\"text-info text-capitalize\"},[_vm._v(\" \"+_vm._s(row.responseMessage ? row.responseMessage : '-')+\" \")])]),_c('section',{staticClass:\"col\"},[_c('div',{staticClass:\"title\"},[_vm._v(\" Response Code \")]),_c('span',{staticClass:\"text-info\"},[_vm._v(\" \"+_vm._s(row.responseCode ? row.responseCode : '-')+\" \")])]),_c('section',{staticClass:\"col\"},[_c('div',{staticClass:\"title\"},[_vm._v(\" Mutated \")]),_c('span',{staticClass:\"text-info\"},[_vm._v(\" \"+_vm._s(row.mutated)+\" \")])])])])]}}])}):_c('Banner',{attrs:{\"color\":\"warning\",\"label\":_vm.t(_vm.emptyTracesLabel)}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import dayjs from 'dayjs';\nimport _dropWhile from 'lodash/dropWhile';\nimport _round from 'lodash/round';\nimport _duration from 'dayjs/plugin/duration';\n\ndayjs.extend(_duration);\n\nexport const STANDARD_DATE_FORMAT = 'YYYY-MM-DD';\nexport const STANDARD_TIME_FORMAT = 'HH:mm';\nexport const STANDARD_DATETIME_FORMAT = 'MMMM D YYYY, HH:mm:ss.SSS';\n\n/** @constant 1ms as the number of microseconds, which is the precision of Jaeger timestamps */\nexport const ONE_MILLISECOND = 1000 * 1;\n\nconst ONE_SECOND = 1000 * ONE_MILLISECOND;\nconst ONE_MINUTE = 60 * ONE_SECOND;\nconst ONE_HOUR = 60 * ONE_MINUTE;\nconst ONE_DAY = 24 * ONE_HOUR;\n\nconst UNIT_STEPS: { unit: string; microseconds: number; ofPrevious: number }[] = [\n {\n unit: 'd', microseconds: ONE_DAY, ofPrevious: 24\n },\n {\n unit: 'h', microseconds: ONE_HOUR, ofPrevious: 60\n },\n {\n unit: 'm', microseconds: ONE_MINUTE, ofPrevious: 60\n },\n {\n unit: 's', microseconds: ONE_SECOND, ofPrevious: 1000\n },\n {\n unit: 'ms', microseconds: ONE_MILLISECOND, ofPrevious: 1000\n },\n {\n unit: 'μs', microseconds: 1, ofPrevious: 1000\n },\n];\n\nexport function formatDuration(duration: number): string {\n // Drop all units that are too large except the last one\n const [primaryUnit, secondaryUnit] = _dropWhile(\n UNIT_STEPS,\n ({ microseconds }, index) => index < UNIT_STEPS.length - 1 && microseconds > duration\n );\n\n if (primaryUnit.ofPrevious === 1000) {\n // If the unit is decimal based, display as a decimal\n return `${ _round(duration / primaryUnit.microseconds, 2) }${ primaryUnit.unit }`;\n }\n\n const primaryValue = Math.floor(duration / primaryUnit.microseconds);\n const primaryUnitString = `${ primaryValue }${ primaryUnit.unit }`;\n const secondaryValue = Math.round((duration / secondaryUnit.microseconds) % primaryUnit.ofPrevious);\n const secondaryUnitString = `${ secondaryValue }${ secondaryUnit.unit }`;\n\n return secondaryValue === 0 ? primaryUnitString : `${ primaryUnitString } ${ secondaryUnitString }`;\n}","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('p',{staticClass:\"checklist__description mb-20\",attrs:{\"data-testid\":\"kw-tracing-checklist-description\"}},[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.tracing.description'))+\" \")]),_c('div',{staticClass:\"checklist__prereq mb-20\"},[_c('h2',[_vm._v(_vm._s(_vm.t('kubewarden.tracing.prerequisites.label')))]),_c('p',[_vm._v(_vm._s(_vm.t('kubewarden.tracing.prerequisites.description')))])]),_c('Banner',{attrs:{\"color\":\"warning\",\"label\":_vm.t('kubewarden.tracing.prerequisites.warning')}}),_c('div',{staticClass:\"checklist__container mt-20 mb-20\"},[_c('div',{staticClass:\"checklist__step mt-20 mb-20\",attrs:{\"data-testid\":\"kw-tracing-checklist-step-open-tel\"}},[_c('i',{staticClass:\"icon mr-10\",class:_vm.badgeIcon(_vm.openTelSvc)}),_c('p',{directives:[{name:\"clean-html\",rawName:\"v-clean-html\",value:(_vm.t('kubewarden.tracing.openTelemetry', {}, true)),expression:\"t('kubewarden.tracing.openTelemetry', {}, true)\"}]})]),_c('div',{staticClass:\"checklist__step mb-20\",attrs:{\"data-testid\":\"kw-tracing-checklist-step-jaeger\"}},[_c('i',{staticClass:\"icon mr-10\",class:_vm.badgeIcon(_vm.jaegerQuerySvc)}),_c('p',{directives:[{name:\"clean-html\",rawName:\"v-clean-html\",value:(_vm.t('kubewarden.tracing.jaeger', {}, true)),expression:\"t('kubewarden.tracing.jaeger', {}, true)\"}],attrs:{\"p\":\"\"}})]),_c('div',{staticClass:\"checklist__step mb-20\",attrs:{\"data-testid\":\"kw-tracing-checklist-step-config\"}},[_c('i',{staticClass:\"icon mr-10\",class:_vm.badgeIcon(_vm.tracingEnabled)}),_c('div',{staticClass:\"checklist__config\"},[_c('p',{directives:[{name:\"clean-html\",rawName:\"v-clean-html\",value:(_vm.t('kubewarden.tracing.config.label', {}, true)),expression:\"t('kubewarden.tracing.config.label', {}, true)\"}]}),_c('button',{directives:[{name:\"clean-tooltip\",rawName:\"v-clean-tooltip\",value:(_vm.controllerLinkTooltip),expression:\"controllerLinkTooltip\"}],staticClass:\"btn role-primary ml-10\",attrs:{\"data-testid\":\"kw-tracing-checklist-step-config-button\",\"disabled\":_vm.controllerLinkDisabled},on:{\"click\":_vm.controllerAppRoute}},[_vm._v(\" \"+_vm._s(_vm.t(\"kubewarden.tracing.config.link\"))+\" \")])])])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./TraceChecklist.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./TraceChecklist.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TraceChecklist.vue?vue&type=template&id=63ad3d60&scoped=true&\"\nimport script from \"./TraceChecklist.vue?vue&type=script&lang=js&\"\nexport * from \"./TraceChecklist.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TraceChecklist.vue?vue&type=style&index=0&id=63ad3d60&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"63ad3d60\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./TraceTable.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./TraceTable.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TraceTable.vue?vue&type=template&id=6d9cdf0c&scoped=true&\"\nimport script from \"./TraceTable.vue?vue&type=script&lang=js&\"\nexport * from \"./TraceTable.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TraceTable.vue?vue&type=style&index=0&id=6d9cdf0c&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6d9cdf0c\",\n null\n \n)\n\nexport default component.exports","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".checklist__container[data-v-cf603ff2]{display:flex;justify-content:center;flex-direction:column;border:1px solid var(--border);padding:10px}.checklist__config[data-v-cf603ff2],.checklist__step[data-v-cf603ff2]{display:flex;flex-direction:row;justify-content:flex-start;align-items:center}.checklist__step[data-v-cf603ff2]{min-height:40px}.conflicting-banner[data-v-cf603ff2]{display:flex;flex-direction:column}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".checklist__container[data-v-63ad3d60]{display:flex;justify-content:center;flex-direction:column;border:1px solid var(--border);padding:10px}.checklist__config[data-v-63ad3d60],.checklist__step[data-v-63ad3d60]{display:flex;flex-direction:row;justify-content:flex-start;align-items:center}.checklist__step[data-v-63ad3d60]{min-height:40px}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.$fetchState.pending)?_c('Loading'):_c('div',[(_vm.policyGauges)?[_c('div',{staticClass:\"row\"},[[_c('div',{staticClass:\"col span-6\"},[_c('h3',{attrs:{\"data-testid\":\"kw-ps-detail-status-title\"}},[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.policyServer.policyGauge.byStatus'))+\" \")]),_c('div',{staticClass:\"gauges mb-20\"},_vm._l((_vm.policyGauges),function(group,key){return _c('CountGauge',{key:key,attrs:{\"total\":_vm.relatedPoliciesTotal,\"useful\":group.count || 0,\"graphical\":false,\"primary-color-var\":`--sizzle-${group.color}`,\"name\":key}})}),1)])],(!_vm.emptyTraces)?[_c('div',{staticClass:\"col span-6\"},[_c('h3',[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.policyServer.policyGauge.traces'))+\" \")]),_c('div',{staticClass:\"gauges mb-20\"},_vm._l((_vm.tracesGauges),function(group,key){return _c('CountGauge',{key:key,attrs:{\"useful\":group.count || 0,\"total\":_vm.traceGaugeTotals,\"graphical\":false,\"primary-color-var\":`--sizzle-${group.color}`,\"name\":key}})}),1)])]:_vm._e()],2)]:_vm._e(),_c('ResourceTabs',{attrs:{\"mode\":_vm.mode},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}},[_c('Tab',{attrs:{\"name\":\"related-policies\",\"label\":\"Policies\",\"weight\":99},scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_c('ResourceTable',{attrs:{\"rows\":_vm.relatedPolicies || [],\"headers\":_vm.RELATED_HEADERS,\"groupable\":true,\"group-by\":_vm.groupPreference,\"table-actions\":true,\"data-testid\":\"kw-ps-detail-related-policies-list\"},scopedSlots:_vm._u([{key:\"col:operation\",fn:function({ row }){return [_c('td',[_c('BadgeState',{attrs:{\"data-testid\":`kw-ps-detail-${ row.id }-state`,\"label\":row.operation,\"color\":_vm.color(row.operation)}})],1)]}}])})]},proxy:true}])}),_c('Tab',{staticClass:\"relative\",attrs:{\"name\":\"policy-tracing\",\"label\":\"Tracing\",\"weight\":98}},[_c('TraceTable',{attrs:{\"resource\":_vm.resource,\"related-policies\":_vm.relatedPolicies}})],1),_c('Tab',{staticClass:\"relative\",attrs:{\"name\":\"policy-metrics\",\"label\":\"Metrics\",\"weight\":97},scopedSlots:_vm._u([{key:\"default\",fn:function(props){return [_c('MetricsTab',{attrs:{\"resource\":_vm.resource,\"policy-server-obj\":_vm.value,\"active\":props.active}})]}}])})],1)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./policies.kubewarden.io.policyserver.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./policies.kubewarden.io.policyserver.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./policies.kubewarden.io.policyserver.vue?vue&type=template&id=a88dafa8&scoped=true&\"\nimport script from \"./policies.kubewarden.io.policyserver.vue?vue&type=script&lang=js&\"\nexport * from \"./policies.kubewarden.io.policyserver.vue?vue&type=script&lang=js&\"\nimport style0 from \"./policies.kubewarden.io.policyserver.vue?vue&type=style&index=0&id=a88dafa8&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a88dafa8\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./policies.kubewarden.io.policyserver.vue?vue&type=style&index=0&id=a88dafa8&prod&lang=scss&scoped=true&\"","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.$fetchState.pending)?_c('Loading',{attrs:{\"mode\":\"relative\"}}):_c('div',[(_vm.showChecklist)?_c('MetricsChecklist',{attrs:{\"cattle-dashboard-ns\":_vm.cattleDashboardNs,\"conflicting-grafana-dashboards\":_vm.conflictingGrafanaDashboards,\"controller-app\":_vm.controllerApp,\"controller-chart\":_vm.controllerChart,\"kubewarden-service-monitor\":_vm.kubewardenServiceMonitor,\"kubewarden-dashboards\":_vm.kubewardenGrafanaDashboards,\"monitoring-app\":_vm.monitoringApp,\"monitoring-chart\":_vm.monitoringChart,\"open-tel-svc\":_vm.openTelSvc,\"policy-obj\":_vm.policyObj,\"policy-server-obj\":_vm.policyServerObj},on:{\"updateServiceMonitors\":_vm.updateServiceMonitors}}):_vm._e(),(!_vm.showChecklist)?[(_vm.monitoringApp && !_vm.metricsProxy)?_c('Banner',{attrs:{\"color\":\"error\",\"label\":_vm.t('kubewarden.monitoring.warning.noProxy')}}):_vm._e(),(_vm.metricsProxy && _vm.active)?_c('DashboardMetrics',{attrs:{\"data-testid\":\"kw-ps-metrics-dashboard\",\"detail-url\":_vm.metricsProxy,\"summary-url\":_vm.metricsProxy,\"vars\":{'policy_name': _vm.policyName},\"graph-height\":\"825px\"}}):_vm._e()]:_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import isEmpty from 'lodash/isEmpty';\n\nimport { CONFIG_MAP, SERVICE } from '@shell/config/types';\n\nimport {\n CatalogApp,\n KubewardenDashboards,\n KubewardenDashboardLabels,\n GrafanaDashboardLabels,\n GrafanaDashboardAnnotations,\n HelmAnnotations\n} from '../types';\nimport { handleGrowl, GrowlConfig } from '../utils/handle-growl';\n\ninterface MetricsConfig {\n store: any,\n type: string\n}\n\ninterface DashboardConfig {\n store: any,\n monitoringApp: CatalogApp,\n controllerApp: CatalogApp\n}\n\nexport async function grafanaProxy(config: MetricsConfig): Promise {\n const { store, type } = config;\n\n try {\n const grafana = await grafanaService(store);\n\n if ( !isEmpty(grafana) ) {\n const base = `/api/v1/namespaces/${ grafana.metadata.namespace }/services`;\n const proxy = `/http:${ grafana.metadata.name }:80/proxy`;\n const path = `/d/${ type }?orgId=1&kiosk`;\n\n return base + proxy + path;\n }\n } catch (e) {\n handleGrowl({\n error: e as GrowlConfig | any, store, type: 'warning'\n });\n }\n\n return null;\n}\n\nexport async function grafanaService(store: any) {\n try {\n return await store.dispatch('cluster/find', {\n type: SERVICE,\n id: 'cattle-monitoring-system/rancher-monitoring-grafana'\n }, { root: true });\n } catch (e) {\n handleGrowl({\n error: e as GrowlConfig | any, store, type: 'warning'\n });\n }\n}\n\nexport async function findKubewardenDashboards(store: any) {\n try {\n return await store.dispatch('cluster/findMatching', {\n type: CONFIG_MAP,\n selector: `kubewarden/part-of=cattle-kubewarden-system`\n });\n } catch (e) {\n handleGrowl({\n error: e as GrowlConfig | any, store, type: 'warning'\n });\n }\n}\n\n/**\n * Creates a ConfigMap for the Grafana dashboard depending on the type supplied\n * @param `store, type` | Type of resource ( PolicyServer || (Cluster)AdmissionPolicy )\n */\nexport async function addKubewardenDashboards(config: DashboardConfig): Promise {\n const { store, monitoringApp, controllerApp } = config;\n\n if ( monitoringApp && controllerApp ) {\n /**\n * There are 2 dashboards for Kubewarden:\n * PolicyServer is the default one copied from https://grafana.com/grafana/dashboards/15314-kubewarden/\n * Policies have a condensed version\n */\n const dashboardEnums = Object.values(KubewardenDashboards);\n\n for ( const type of dashboardEnums ) {\n const file = await import(/* webpackChunkName: \"policyDashboard\" */ `../assets/${ type }.json`);\n const fileKey = `${ type }.json`;\n\n /** Check for existing configmaps */\n const existing = await findKubewardenDashboards(store);\n\n if ( existing && existing?.metadata?.name === type ) {\n return;\n }\n\n const labels: GrafanaDashboardLabels = {\n [KubewardenDashboardLabels.DASHBOARD]: type,\n [KubewardenDashboardLabels.PART_OF]: controllerApp.metadata.namespace,\n [KubewardenDashboardLabels.APP]: 'rancher-monitoring-grafana',\n [KubewardenDashboardLabels.GRAFANA_DASHBOARD]: '1',\n 'app.kubernetes.io/instance': monitoringApp.metadata.name\n };\n\n const annotations: GrafanaDashboardAnnotations = {\n [HelmAnnotations.NAME]: monitoringApp.metadata.name,\n [HelmAnnotations.NAMESPACE]: monitoringApp.metadata.namespace\n };\n\n const configMapTemplate = await store.dispatch(\n 'cluster/create',\n {\n type: CONFIG_MAP,\n metadata: {\n annotations,\n labels,\n name: type,\n namespace: 'cattle-dashboards',\n },\n data: { [fileKey]: JSON.stringify(file) },\n }\n );\n\n try {\n await configMapTemplate.save();\n } catch (e) {\n handleGrowl({ error: e as GrowlConfig | any, store });\n }\n }\n }\n}","import isEmpty from 'lodash/isEmpty';\nimport { MONITORING } from '@shell/config/types';\n\nimport { CatalogApp, Service, ServiceMonitor, ServiceMonitorSpec } from '../types';\nimport { handleGrowl, GrowlConfig } from '../utils/handle-growl';\n\ntype ServiceMonitorConfigured = {\n namespace: boolean,\n selectors?: {[key: string]: boolean}[];\n}\n\ninterface MonitoringConfig {\n serviceMonitorSpec: ServiceMonitorSpec[],\n controllerApp: CatalogApp,\n policyServerSvcs: Service[]\n}\n\ninterface ServiceMonitorConfig {\n store: any,\n policyObj?: any,\n policyServerObj?: any,\n controllerNs: string,\n allServiceMonitors?: ServiceMonitor[]\n serviceMonitor?: ServiceMonitor\n}\n\n/**\n * Determines if the Monitoring App is configured correctly with the namespace and label selectors for\n * the Kubewarden controller and policy servers.\n * @param config `serviceMonitorSpec, controllerApp, policyServerSvcs` | Needs monitoring app service monitor spec,\n * kubewarden controller app, and the policy server services.\n * @returns `boolean` | `true` if configured correctly\n */\nexport function monitoringIsConfigured(config: MonitoringConfig): boolean {\n const configured = serviceMonitorsConfigured(config);\n\n if ( Array.isArray(configured) ) {\n return configured?.some((c: ServiceMonitorConfigured) => {\n const selectorsConfigured = !isEmpty(c?.selectors) && c?.selectors?.some((selector) => {\n for (const key in selector) {\n if ( selector[key] && selector[key] === true ) {\n return true;\n }\n }\n\n return false;\n });\n\n return c.namespace && selectorsConfigured;\n });\n }\n\n return false;\n}\n\n/**\n * Searchs for matching `namespaceSelector` and `matchLabels` selector between `serviceMonitorSpec`, `controllerApp`, and `policyServerSvcs`\n * @param config `serviceMonitorSpec, controllerApp, policyServerSvcs` | Needs monitoring app service monitor spec,\n * kubewarden controller app, and the policy server services.\n * @returns `ServiceMonitorConfigured[] | boolean` | If `serviceMonitorSpec` is provided, will return a `ServiceMonitorConfigured` object\n * which contains a `namespace` boolean for a match and selectors[] for `matchLabels`\n */\nexport function serviceMonitorsConfigured(config: MonitoringConfig): ServiceMonitorConfigured[] | boolean {\n const { serviceMonitorSpec, controllerApp, policyServerSvcs } = config;\n\n if ( serviceMonitorSpec ) {\n return serviceMonitorSpec?.map((sm) => {\n const configured: ServiceMonitorConfigured = {\n namespace: false,\n selectors: []\n };\n\n /** Find a matching namespaceSelector to the controllerApp */\n if ( !isEmpty(controllerApp) ) {\n const hasNamespace: boolean = sm.namespaceSelector?.matchNames?.includes(controllerApp?.metadata?.namespace) || false;\n\n configured.namespace = hasNamespace;\n }\n\n /** Find matching label selectors for policy server services */\n if ( !isEmpty(policyServerSvcs) ) {\n policyServerSvcs.forEach((svc) => {\n if ( sm.selector?.matchLabels ) {\n for ( const key of Object.keys(sm.selector.matchLabels) ) {\n const hasLabel = svc?.metadata?.labels?.[key] && svc.metadata.labels[key] === sm.selector.matchLabels[key];\n\n configured?.selectors?.push({ [key]: !!hasLabel });\n }\n }\n });\n }\n\n return configured;\n });\n }\n\n return false;\n}\n\n/**\n * Searches provided ServiceMonitors for a matching resource based on the `selector.matchLabels` including:\n * `app=kubewarden-policy-server-`\n * @param config: `policyObj?, policyServerObj?, allServiceMonitors` | Needs either a policy object or policy server object with all fetched\n * ServiceMonitors\n * @returns `ServiceMonitor | void`\n */\nexport function findServiceMonitor(config: ServiceMonitorConfig): ServiceMonitor | void {\n const { policyObj, policyServerObj, allServiceMonitors } = config;\n\n if ( !isEmpty(allServiceMonitors) ) {\n const smName: string = policyObj ? policyObj.spec?.policyServer : policyServerObj?.id;\n\n return allServiceMonitors?.find(sm => sm?.spec?.selector?.matchLabels?.['app'] === `kubewarden-policy-server-${ smName }`);\n }\n}\n\n/**\n * Creates a Service Monitor for a PolicyServer when provided either a PS or a policy\n * @param config: `store, policyObj?, policyServerObj?, controllerNs` | Needs kubewarden-controller app namespace, either a policy server or policy.\n */\nexport async function addKubewardenServiceMonitor(config: ServiceMonitorConfig): Promise {\n const {\n store, policyObj, policyServerObj, controllerNs, serviceMonitor\n } = config;\n\n if ( store.getters['cluster/schemaFor'](MONITORING.SERVICEMONITOR) ) {\n const smName: string = policyObj ? policyObj.spec?.policyServer : policyServerObj?.id;\n\n const serviceMonitorTemplate: ServiceMonitor = {\n kind: 'ServiceMonitor',\n type: MONITORING.SERVICEMONITOR,\n metadata: {\n name: smName,\n namespace: controllerNs\n },\n spec: {\n endpoints: [{ interval: '10s', port: 'metrics' }],\n namespaceSelector: { matchNames: [controllerNs] },\n selector: { matchLabels: { app: `kubewarden-policy-server-${ smName }` } }\n }\n };\n\n if ( !serviceMonitor ) {\n const serviceMonitorObj = await store.dispatch(\n 'cluster/create',\n serviceMonitorTemplate\n );\n\n try {\n await serviceMonitorObj.save();\n } catch (e) {\n handleGrowl({ error: e as GrowlConfig | any, store });\n }\n }\n }\n}","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"checklist__container\"},[_c('div',{staticClass:\"checklist__prereq mb-20\"},[_c('h2',[_vm._v(_vm._s(_vm.t('kubewarden.monitoring.prerequisites.label')))]),_c('p',[_vm._v(_vm._s(_vm.t('kubewarden.monitoring.prerequisites.description')))])]),_c('Banner',{attrs:{\"color\":\"warning\",\"label\":_vm.t('kubewarden.monitoring.prerequisites.warning')}}),_c('div',{staticClass:\"mt-20 mb-20\"},[_c('div',{staticClass:\"checklist__step mt-20 mb-20\",attrs:{\"data-testid\":\"kw-monitoring-checklist-step-open-tel\"}},[_c('i',{staticClass:\"icon mr-10\",class:_vm.badgeIcon(_vm.openTelSvc)}),_c('p',{directives:[{name:\"clean-html\",rawName:\"v-clean-html\",value:(_vm.t('kubewarden.tracing.openTelemetry', {}, true)),expression:\"t('kubewarden.tracing.openTelemetry', {}, true)\"}]})]),_c('div',{staticClass:\"checklist__step mb-20\",attrs:{\"data-testid\":\"kw-monitoring-checklist-step-monitoring-app\"}},[_c('i',{staticClass:\"icon mr-10\",class:_vm.badgeIcon(_vm.monitoringApp)}),_c('div',{staticClass:\"checklist__config\"},[_c('p',{directives:[{name:\"clean-html\",rawName:\"v-clean-html\",value:(_vm.t('kubewarden.monitoring.prerequisites.monitoringApp.label', {}, true)),expression:\"t('kubewarden.monitoring.prerequisites.monitoringApp.label', {}, true)\"}],attrs:{\"p\":\"\"}}),(!_vm.monitoringApp)?_c('button',{directives:[{name:\"clean-tooltip\",rawName:\"v-clean-tooltip\",value:(_vm.monitoringLinkTooltip),expression:\"monitoringLinkTooltip\"}],staticClass:\"btn role-primary ml-10\",attrs:{\"data-testid\":\"kw-monitoring-checklist-step-config-button\",\"disabled\":!_vm.monitoringChart},on:{\"click\":function($event){return _vm.monitoringAppRoute()}}},[_vm._v(\" \"+_vm._s(_vm.monitoringChartLink)+\" \")]):_vm._e()])]),_c('div',{staticClass:\"checklist__step mb-20\",attrs:{\"data-testid\":\"kw-monitoring-checklist-step-service-monitor-map\"}},[_c('i',{staticClass:\"icon mr-10\",class:_vm.badgeIcon(_vm.kubewardenServiceMonitor)}),_c('div',{staticClass:\"checklist__config\"},[_c('p',{directives:[{name:\"clean-html\",rawName:\"v-clean-html\",value:(_vm.t('kubewarden.monitoring.prerequisites.serviceMonitor.label', {}, true)),expression:\"t('kubewarden.monitoring.prerequisites.serviceMonitor.label', {}, true)\"}],attrs:{\"p\":\"\"}}),(!_vm.kubewardenServiceMonitor)?_c('AsyncButton',{directives:[{name:\"clean-tooltip\",rawName:\"v-clean-tooltip\",value:(_vm.serviceMonitorsTooltip),expression:\"serviceMonitorsTooltip\"}],staticClass:\"ml-10\",attrs:{\"data-testid\":\"kw-monitoring-checklist-step-service-monitor-button\",\"mode\":\"serviceMonitor\",\"disabled\":_vm.serviceMonitorButtonDisabled},on:{\"click\":_vm.addServiceMonitor}}):_vm._e()],1)]),_c('div',{staticClass:\"checklist__step mb-20\",attrs:{\"data-testid\":\"kw-monitoring-checklist-step-config-map\"}},[_c('i',{staticClass:\"icon mr-10\",class:_vm.badgeIcon(_vm.hasKubewardenDashboards)}),_c('div',{staticClass:\"checklist__config\"},[_c('p',{directives:[{name:\"clean-html\",rawName:\"v-clean-html\",value:(_vm.t('kubewarden.monitoring.prerequisites.configMap.label', {}, true)),expression:\"t('kubewarden.monitoring.prerequisites.configMap.label', {}, true)\"}],attrs:{\"p\":\"\"}}),(!_vm.hasKubewardenDashboards)?_c('AsyncButton',{directives:[{name:\"clean-tooltip\",rawName:\"v-clean-tooltip\",value:(_vm.dashboardsTooltip),expression:\"dashboardsTooltip\"}],staticClass:\"ml-10\",attrs:{\"data-testid\":\"kw-monitoring-checklist-step-config-map-button\",\"mode\":\"grafanaDashboard\",\"disabled\":_vm.dashboardButtonDisabled},on:{\"click\":_vm.addDashboards}}):_vm._e()],1)]),(_vm.showConflictingDashboardsBanner)?_c('Banner',{attrs:{\"color\":\"error\"}},[_c('div',{staticClass:\"conflicting-banner\"},[_c('p',[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.monitoring.prerequisites.configMap.conflictingDashboardsBanner', { count: _vm.conflictingGrafanaDashboards.length }, true))+\" \")]),_vm._l((_vm.conflictingGrafanaDashboards),function(configMap){return _c('n-link',{key:configMap.metadata.name,staticClass:\"text-bold\",attrs:{\"to\":configMap.detailLocation}},[_vm._v(\" \"+_vm._s(configMap.metadata.name)+\" \")])})],2)]):_vm._e(),_c('div',{staticClass:\"checklist__step mb-20\",attrs:{\"data-testid\":\"kw-monitoring-checklist-step-controller-config\"}},[_c('i',{staticClass:\"icon mr-10\",class:_vm.badgeIcon(_vm.metricsEnabled)}),_c('div',{staticClass:\"checklist__config\"},[_c('p',{directives:[{name:\"clean-html\",rawName:\"v-clean-html\",value:(_vm.t('kubewarden.monitoring.prerequisites.controllerConfig.label', {}, true)),expression:\"t('kubewarden.monitoring.prerequisites.controllerConfig.label', {}, true)\"}],attrs:{\"p\":\"\"}}),(!_vm.metricsEnabled)?_c('button',{directives:[{name:\"clean-tooltip\",rawName:\"v-clean-tooltip\",value:(_vm.controllerLinkTooltip),expression:\"controllerLinkTooltip\"}],staticClass:\"btn role-primary ml-10\",attrs:{\"data-testid\":\"kw-monitoring-checklist-step-config-button\",\"disabled\":_vm.controllerLinkDisabled},on:{\"click\":function($event){return _vm.controllerAppRoute()}}},[_vm._v(\" \"+_vm._s(_vm.t(\"kubewarden.monitoring.prerequisites.controllerConfig.button\"))+\" \")]):_vm._e()])])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./MetricsChecklist.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./MetricsChecklist.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MetricsChecklist.vue?vue&type=template&id=cf603ff2&scoped=true&\"\nimport script from \"./MetricsChecklist.vue?vue&type=script&lang=js&\"\nexport * from \"./MetricsChecklist.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MetricsChecklist.vue?vue&type=style&index=0&id=cf603ff2&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"cf603ff2\",\n null\n \n)\n\nexport default component.exports","\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./MetricsTab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./MetricsTab.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MetricsTab.vue?vue&type=template&id=4829eb55&\"\nimport script from \"./MetricsTab.vue?vue&type=script&lang=js&\"\nexport * from \"./MetricsTab.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","export function proxyUrl(service: any, port: number): string {\n const view: string = service?.links['view'];\n const idx: number = view.lastIndexOf(`/`);\n\n return proxyUrlFromBase(view.slice(0, idx), 'http', service?.metadata.name, port);\n}\n\nexport function proxyUrlFromBase(base: string, scheme: string, name: string, port: number, path?: any): string {\n const schemaNamePort = (scheme ? `${ encodeURIComponent(scheme) }:` : '') + encodeURIComponent(name) + (port ? `:${ encodeURIComponent(port) }` : '');\n\n const cleanPath = `/${ (path || '').replace(/^\\/+/g, '') }`;\n const cleanBase = base.replace(/\\/+$/g, '');\n\n const out = `${ cleanBase }/${ schemaNamePort }/proxy${ cleanPath }`;\n\n return out;\n}\n","import isEmpty from 'lodash/isEmpty';\n\nimport {\n KUBEWARDEN, JaegerConfig, PolicyTrace, PolicyTraceConfig, Tag\n} from '../types';\nimport { proxyUrl } from '../utils/service';\n\n/** TODO: Update the `any` types throughout this file */\n\n/**\n * Fetches trace reports from Jaeger for each related policy or singular policy.\n * @param config `JaegerConfig` | Contains the `store`, `jaegerQueryService`, `resource` (policy-server or policy type),\n * `relatedPolicies?` needed for policy server, `policy?` for individual policies, `time?` for trace timeframe.\n * @returns `PolicyTraceConfig | null` | A scaffold object which contains the policy name, cluster id, and traces for the policy.\n */\nexport async function jaegerTraces(config: JaegerConfig): Promise {\n const {\n store, queryService, resource, relatedPolicies, policy, time\n } = config;\n\n try {\n const proxy = proxyUrl(queryService, 16686);\n\n const promises = [];\n\n if ( !isEmpty(relatedPolicies) ) {\n relatedPolicies?.forEach((p: any) => {\n const hash = jaegerTraceRequest(store, proxy, p, time);\n\n if ( hash ) {\n promises.push(hash);\n }\n });\n } else if ( policy ) {\n promises.push(jaegerTraceRequest(store, proxy, policy, time));\n } else {\n throw new Error('Policy is undefined');\n }\n\n let res = await Promise.all(promises);\n\n res = res.flatMap(o => o?.data);\n\n return scaffoldPolicyTrace(store, res, resource, relatedPolicies, policy);\n } catch (e) {\n console.warn(`Error fetching Jaeger traces: ${ e }`); // eslint-disable-line no-console\n }\n\n return null;\n}\n\nexport function jaegerPolicyName(policy: any) {\n let out = null;\n\n switch (policy?.kind) {\n case 'ClusterAdmissionPolicy':\n out = `clusterwide-${ policy?.metadata?.name }`;\n break;\n\n case 'AdmissionPolicy':\n out = `namespaced-${ policy?.metadata?.namespace }-${ policy?.metadata?.name }`;\n break;\n\n default:\n break;\n }\n\n return out;\n}\n\nfunction jaegerTraceRequest(store: any, proxyUrl: any, policy: any, time?: any) {\n let apiPath = null;\n\n const name = jaegerPolicyName(policy);\n const lookbackTime = time || '2d';\n\n const options = `lookback=${ lookbackTime }&tags={\"policy_id\"%3A\"${ name }\"}`;\n\n // The service `kubewarden-policy-server` is **not** a k8s Service\n apiPath = `api/traces?service=kubewarden-policy-server&operation=validation&${ options }`;\n const JAEGER_PATH = `${ proxyUrl + apiPath }`;\n\n return store.dispatch('cluster/request', { url: JAEGER_PATH });\n}\n\nfunction scaffoldPolicyTrace(store: any, traces: any, resource: any, relatedPolicies: any, policy: any): any {\n const currentCluster = store.getters['currentCluster'];\n const out = [];\n\n function filterTraces(p: any) {\n const policyName = jaegerPolicyName(p);\n\n return traces.reduce((acc: any, trace: any): PolicyTrace[] => {\n let out = {};\n\n const validationSpan = trace.spans.find((span: any) => span.operationName === 'validation');\n const matchedTag = validationSpan?.tags?.find((tag: any) => tag?.key === 'policy_id' && tag?.value === policyName);\n\n if ( matchedTag ) {\n const convertedTags = convertTagsToObject(validationSpan.tags);\n\n out = {\n id: trace.traceID,\n allowed: convertedTags.allowed,\n mode: p.spec.mode,\n name: convertedTags.name,\n operation: convertedTags.operation,\n kind: convertedTags.kind,\n namespace: convertedTags.namespace || null,\n startTime: validationSpan.startTime,\n duration: validationSpan.duration,\n responseMessage: convertedTags.response_message,\n responseCode: convertedTags.response_code,\n mutated: convertedTags.mutated\n };\n }\n\n if ( !isEmpty(out) ) {\n acc.push(out);\n store.dispatch('kubewarden/updatePolicyTraces', {\n policyName: p.metadata.name,\n cluster: currentCluster?.id,\n updatedTrace: out\n });\n }\n\n return acc;\n }, []);\n }\n\n if ( resource === KUBEWARDEN.POLICY_SERVER ) {\n for ( const relatedPolicy of relatedPolicies ) {\n const relatedTraces = filterTraces(relatedPolicy);\n\n if ( !isEmpty(relatedTraces) ) {\n out.push({\n policyName: relatedPolicy.metadata.name,\n cluster: currentCluster?.id,\n traces: relatedTraces\n });\n }\n }\n } else {\n const relatedTraces = filterTraces(policy);\n\n if ( !isEmpty(relatedTraces) ) {\n out.push({\n policyName: policy.metadata.name,\n cluster: currentCluster?.id,\n traces: relatedTraces\n });\n }\n }\n\n return out;\n}\n\nexport function convertTagsToObject(arr: Tag[]): Record {\n const result: Record = {};\n\n for (const item of arr) {\n switch (item.type) {\n case 'string':\n result[item.key] = item.value as string;\n break;\n case 'int64':\n result[item.key] = parseInt(item.value as string, 10);\n break;\n case 'float64':\n result[item.key] = parseFloat(item.value as string);\n break;\n case 'bool':\n result[item.key] = item.value === 'true';\n break;\n default:\n result[item.key] = item.value;\n }\n }\n\n return result;\n}\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".relative[data-v-a88dafa8]{position:relative}.policy__mode[data-v-a88dafa8]{display:flex;align-items:center}.policy__mode i[data-v-a88dafa8]{margin-left:5px;font-size:22px;color:var(--warning)}.gauges[data-v-a88dafa8],.gaugesContainer[data-v-a88dafa8]{display:flex}.gauges[data-v-a88dafa8]{justify-content:space-around;flex-wrap:wrap;justify-content:left}.gauges .count-gauge[data-v-a88dafa8]{width:46%;margin-bottom:10px;flex:initial}.gauges>*[data-v-a88dafa8]{flex:1;margin-right:1.75%}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","export * from \"-!../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./TraceChecklist.vue?vue&type=style&index=0&id=63ad3d60&prod&lang=scss&scoped=true&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".sub-row[data-v-6d9cdf0c]{background-color:var(--body-bg);border-bottom:1px solid var(--sortable-table-top-divider);padding-left:1rem;padding-right:1rem}.details[data-v-6d9cdf0c]{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:1em}.details .col[data-v-6d9cdf0c]{display:flex;flex-direction:column}.details .col section[data-v-6d9cdf0c]{margin-bottom:1.5rem}.details .col .title[data-v-6d9cdf0c]{color:var(--muted);margin-bottom:.5rem}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","export * from \"-!../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./MetricsChecklist.vue?vue&type=style&index=0&id=cf603ff2&prod&lang=scss&scoped=true&\"","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdateModeDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdateModeDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./UpdateModeDialog.vue?vue&type=template&id=36b40387&scoped=true&\"\nimport script from \"./UpdateModeDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./UpdateModeDialog.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UpdateModeDialog.vue?vue&type=style&index=0&id=36b40387&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"36b40387\",\n null\n \n)\n\nexport default component.exports","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyGrid.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyGrid.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PolicyGrid.vue?vue&type=template&id=bd6d92b8&scoped=true&\"\nimport script from \"./PolicyGrid.vue?vue&type=script&lang=js&\"\nexport * from \"./PolicyGrid.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PolicyGrid.vue?vue&type=style&index=0&id=bd6d92b8&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"bd6d92b8\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Create.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Create.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Create.vue?vue&type=template&id=db2b144a&scoped=true&\"\nimport script from \"./Create.vue?vue&type=script&lang=js&\"\nexport * from \"./Create.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Create.vue?vue&type=style&index=0&id=db2b144a&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"db2b144a\",\n null\n \n)\n\nexport default component.exports","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Values.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Values.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Values.vue?vue&type=template&id=5ae37dc8&scoped=true&\"\nimport script from \"./Values.vue?vue&type=script&lang=js&\"\nexport * from \"./Values.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Values.vue?vue&type=style&index=0&id=5ae37dc8&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5ae37dc8\",\n null\n \n)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./policies.kubewarden.io.policyserver.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./policies.kubewarden.io.policyserver.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./policies.kubewarden.io.policyserver.vue?vue&type=template&id=1955e4de&\"\nimport script from \"./policies.kubewarden.io.policyserver.vue?vue&type=script&lang=js&\"\nexport * from \"./policies.kubewarden.io.policyserver.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.$fetchState.pending)?_c('Loading',{attrs:{\"mode\":\"relative\"}}):_c('div',[(_vm.isCreate || _vm.isEdit)?_c('div',{staticClass:\"step__values__controls\"},[_c('ButtonGroup',{attrs:{\"data-testid\":\"kw-policy-config-yaml-option\",\"options\":_vm.YAML_OPTIONS,\"inactive-class\":\"bg-disabled btn-sm\",\"active-class\":\"bg-primary btn-sm\"},model:{value:(_vm.yamlOption),callback:function ($$v) {_vm.yamlOption=$$v},expression:\"yamlOption\"}})],1):_vm._e(),_c('div',{staticClass:\"scroll__container\"},[_c('div',{staticClass:\"scroll__content\"},[(_vm.showForm)?[_c('Tabbed',{ref:\"tabs\",staticClass:\"step__values__content\",attrs:{\"side-tabs\":true},on:{\"changed\":function($event){return _vm.tabChanged($event)}}},[(_vm.valuesComponent)?[_c(_vm.valuesComponent,{tag:\"component\",attrs:{\"mode\":_vm.mode,\"custom-policy\":_vm.customPolicy},model:{value:(_vm.chartValues),callback:function ($$v) {_vm.chartValues=$$v},expression:\"chartValues\"}})]:_vm._e()],2)]:((_vm.isCreate || _vm.isEdit) && !_vm.showForm)?[_c('YamlEditor',{ref:\"yaml\",staticClass:\"step__values__content\",attrs:{\"data-testid\":\"kw-policy-config-yaml-editor\",\"scrolling\":true,\"initial-yaml-values\":_vm.originalYamlValues,\"editor-mode\":_vm.editorMode,\"hide-preview-buttons\":true},on:{\"onChanges\":_vm.updateYamlValues},model:{value:(_vm.currentYamlValues),callback:function ($$v) {_vm.currentYamlValues=$$v},expression:\"currentYamlValues\"}})]:_vm._e(),_c('ResourceCancelModal',{ref:\"cancelModal\",attrs:{\"data-testid\":\"kw-policy-config-yaml-cancel\",\"is-cancel-modal\":false,\"is-form\":true},on:{\"cancel-cancel\":function($event){_vm.preYamlOption = _vm.yamlOption},\"confirm-cancel\":function($event){_vm.yamlOption = _vm.preYamlOption}}})],2)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Values.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Values.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Values.vue?vue&type=template&id=d467cb12&scoped=true&\"\nimport script from \"./Values.vue?vue&type=script&lang=js&\"\nexport * from \"./Values.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Values.vue?vue&type=style&index=0&id=d467cb12&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d467cb12\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.isCreate)?_c('Create',{attrs:{\"value\":_vm.value,\"mode\":_vm.mode}}):_c('CruResource',{attrs:{\"resource\":_vm.value,\"mode\":_vm.realMode,\"can-yaml\":false},on:{\"finish\":_vm.finish}},[_c('Config',{attrs:{\"value\":_vm.value,\"mode\":_vm.realMode},on:{\"updateYamlValues\":_vm.updateYamlValuesFromEdit}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./policies.kubewarden.io.clusteradmissionpolicy.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./policies.kubewarden.io.clusteradmissionpolicy.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./policies.kubewarden.io.clusteradmissionpolicy.vue?vue&type=template&id=27ab086c&\"\nimport script from \"./policies.kubewarden.io.clusteradmissionpolicy.vue?vue&type=script&lang=js&\"\nexport * from \"./policies.kubewarden.io.clusteradmissionpolicy.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"[data-v-bd6d92b8] .vs__selected{height:auto!important}.step__policies[data-v-bd6d92b8]{display:flex;flex-direction:column;flex:1;overflow-x:hidden}.step__policies .spacer[data-v-bd6d92b8]{line-height:2}.filter[data-v-bd6d92b8]{display:flex;flex-direction:row;justify-content:flex-end;align-self:flex-end;align-items:center}.filter>*[data-v-bd6d92b8]{margin:10px;max-width:33%}.filter[data-v-bd6d92b8]>:first-child{margin-left:0}.filter[data-v-bd6d92b8]>:last-child{margin-right:0}.filter__category[data-v-bd6d92b8]{min-width:200px;height:unset}.filter__reset[data-v-bd6d92b8],.filter__search[data-v-bd6d92b8]{height:61px}@media only screen and (max-width:1281px){.filter[data-v-bd6d92b8]{width:100%}}@media only screen and (min-width:1281px){.filter[data-v-bd6d92b8]{width:75%}}.grid[data-v-bd6d92b8]{display:flex;justify-content:flex-start;flex-wrap:wrap;margin:0 -10px}.grid .custom[data-v-bd6d92b8]{height:110px}.grid .subtype[data-v-bd6d92b8]{height:auto}@media only screen and (min-width:480px){.grid .subtype[data-v-bd6d92b8]{width:100%}}@media only screen and (min-width:768px){.grid .subtype[data-v-bd6d92b8]{width:calc(50% - 20px)}}@media only screen and (min-width:992px){.grid .subtype[data-v-bd6d92b8]{width:calc(33.33333% - 20px)}}@media only screen and (min-width:1281px){.grid .subtype[data-v-bd6d92b8]{width:calc(25% - 20px)}}@media only screen and (min-width:1600px){.grid .subtype__label[data-v-bd6d92b8]{max-width:100%}.grid .subtype h4[data-v-bd6d92b8]{white-space:nowrap}}.grid .disabled[data-v-bd6d92b8]{opacity:.5;cursor:not-allowed}.subtype__metadata[data-v-bd6d92b8]{height:100%;display:flex;flex-direction:column;justify-content:space-between;padding:5px 10px}.subtype__label[data-v-bd6d92b8]{max-width:205px}.subtype__label h4[data-v-bd6d92b8]{white-space:normal}.subtype__badge[data-v-bd6d92b8]{background-color:var(--darker);padding:4px 5px}.subtype__body[data-v-bd6d92b8]{height:auto}.subtype__footer[data-v-bd6d92b8]{display:flex;flex-direction:row;justify-content:space-between;margin-top:10px}.subtype__aware[data-v-bd6d92b8],.subtype__mutation[data-v-bd6d92b8]{border:1px solid var(--border);padding:0 5px;margin-left:2px}.subtype__left[data-v-bd6d92b8],.subtype__right[data-v-bd6d92b8]{display:flex;flex-direction:row}.subtype__left[data-v-bd6d92b8]{align-items:flex-start}.subtype__right[data-v-bd6d92b8]{align-items:flex-end}.subtype__icon[data-v-bd6d92b8]{width:20px}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ProgressBarMulti.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ProgressBarMulti.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ProgressBarMulti.vue?vue&type=template&id=abc33690&scoped=true&\"\nimport script from \"./ProgressBarMulti.vue?vue&type=script&lang=js&\"\nexport * from \"./ProgressBarMulti.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ProgressBarMulti.vue?vue&type=style&index=0&id=abc33690&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"abc33690\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicySummaryGraph.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicySummaryGraph.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PolicySummaryGraph.vue?vue&type=template&id=68a4b45d&\"\nimport script from \"./PolicySummaryGraph.vue?vue&type=script&lang=js&\"\nexport * from \"./PolicySummaryGraph.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PolicySummaryGraph.vue?vue&type=style&index=0&id=68a4b45d&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".col-scale{position:relative}.col-scale .trigger{width:100%}.scale{margin:0;padding:0;line-height:normal}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","export * from \"-!../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyReportSummary.vue?vue&type=style&index=0&id=80bba75c&prod&lang=scss&scoped=true&\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',_vm._l((_vm.resourceLabels),function(resource,i){return _c('span',{key:i},[_vm._v(\" \"+_vm._s(resource)+\" \")])}),0)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyResources.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyResources.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PolicyResources.vue?vue&type=template&id=2d2cff57&\"\nimport script from \"./PolicyResources.vue?vue&type=script&lang=js&\"\nexport * from \"./PolicyResources.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.canShow)?_c('div',{staticClass:\"pr-summary\"},[_c('v-popover',{staticClass:\"text-center hand\",attrs:{\"placement\":\"top\",\"open-group\":_vm.value.id,\"trigger\":\"click\",\"offset\":\"1\"},scopedSlots:_vm._u([{key:\"popover\",fn:function(){return [_c('div',{staticClass:\"pr-summary__content\"},[_c('div',_vm._l((_vm.summaryParts),function(obj){return _c('div',{key:obj.key,staticClass:\"counts\"},[_c('span',{staticClass:\"text-left pr-20\",class:{[obj.textColor]: true}},[_vm._v(\" \"+_vm._s(obj.label)+\" \")]),_c('span',{staticClass:\"text-right\"},[_vm._v(\" \"+_vm._s(obj.value)+\" \")])])}),0)])]},proxy:true}],null,false,3136338994)},[[_c('div',{staticClass:\"pr-summary__container\"},_vm._l((_vm.summaryParts),function(obj){return _c('div',{key:`${obj.key}-badge`},[(obj.value)?_c('div',{staticClass:\"badge\",class:{[obj.bgColor]: true}},[_c('span',{directives:[{name:\"clean-tooltip\",rawName:\"v-clean-tooltip\",value:(obj.label),expression:\"obj.label\"}]},[_vm._v(_vm._s(obj.value))])]):_vm._e()])}),0)]],2)],1):_c('div')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyReportSummary.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyReportSummary.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PolicyReportSummary.vue?vue&type=template&id=80bba75c&scoped=true&\"\nimport script from \"./PolicyReportSummary.vue?vue&type=script&lang=js&\"\nexport * from \"./PolicyReportSummary.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PolicyReportSummary.vue?vue&type=style&index=0&id=80bba75c&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"80bba75c\",\n null\n \n)\n\nexport default component.exports","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyServerDeployment.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyServerDeployment.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PolicyServerDeployment.vue?vue&type=template&id=2a8202a5&scoped=true&\"\nimport script from \"./PolicyServerDeployment.vue?vue&type=script&lang=js&\"\nexport * from \"./PolicyServerDeployment.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PolicyServerDeployment.vue?vue&type=style&index=0&id=2a8202a5&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2a8202a5\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[(_vm.stateDisplay)?_c('BadgeState',{attrs:{\"color\":_vm.stateBackground,\"label\":_vm.capitalizeMessage(_vm.stateDisplay)}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyServerStatus.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyServerStatus.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PolicyServerStatus.vue?vue&type=template&id=95be2c48&\"\nimport script from \"./PolicyServerStatus.vue?vue&type=script&lang=js&\"\nexport * from \"./PolicyServerStatus.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","// style-loader: Adds some css to the DOM by adding a \n\x3c!-- RESOURCE DEPLOYMENT ICON --\x3e\n\n\x3c!-- NODE ICON --\x3e\n\n\x3c!-- RESOURCE OTHER ICON --\x3e\n\n\n`;var Iw={name:"ForceDirectedTreeChart",components:{BadgeState:Hn["a"]},props:{data:{type:[Array,Object],required:!0},fdcConfig:{type:Object,required:!0}},data(){return{dataWatcher:void 0,parsedInfo:void 0,root:void 0,allNodesData:void 0,allLinks:void 0,rootNode:void 0,node:void 0,link:void 0,svg:void 0,zoom:void 0,simulation:void 0,isChartFirstRendered:!1,isChartFirstRenderAnimationFinished:!1,moreInfo:{}}},methods:{watcherFunction(e){if(e.length)if(this.isChartFirstRendered){const e=this.fdcConfig.parseData(this.data),t=this.flatten(e);let n=!1;t.forEach(e=>{const t=this.allNodesData.findIndex(t=>e.matchingId===t.data.matchingId);t>-1&&this.allNodesData[t].data.state!==e.state&&(this.allNodesData[t].data.state=e.state,this.allNodesData[t].data.stateLabel=e.stateLabel,this.allNodesData[t].data.stateColor=e.stateColor,n=!0,this.allNodesData[t].data.active&&this.setDetailsInfo(this.allNodesData[t].data,!1))}),n&&this.updateChart(!1,!1)}else this.parsedInfo=this.fdcConfig.parseData(this.data),this.setDetailsInfo(this.parsedInfo,!1),this.parsedInfo.active=!0,this.renderChart(),this.updateChart(!0,!0),this.isChartFirstRendered=!0},renderChart(){this.zoom=Tw().scaleExtent([1/8,16]).on("zoom",this.zoomed);const e=_w.scale(1).translate(0,0);this.rootNode=this.svg.append("g").attr("class","root-node"),this.svg.call(this.zoom),this.svg.call(this.zoom.transform,e),this.simulation=wp().force("charge",Ep().strength(this.fdcConfig.simulationParams.fdcStrength).distanceMax(this.fdcConfig.simulationParams.fdcDistanceMax)).force("collision",Pd(this.fdcConfig.simulationParams.fdcForceCollide)).force("center",cd(this.fdcConfig.chartWidth/2,this.fdcConfig.chartHeight/2)).alphaDecay(this.fdcConfig.simulationParams.fdcAlphaDecay).on("tick",this.ticked).on("end",()=>{this.isChartFirstRenderAnimationFinished||(this.zoomFit(),this.isChartFirstRenderAnimationFinished=!0)})},updateChart(e,t){e&&(this.root=jp(this.parsedInfo)),t&&(this.allNodesData=this.flatten(this.root),this.allLinks=this.root.links()),this.link=this.rootNode.selectAll(".link").data(this.allLinks,e=>e.target.id),this.link.exit().remove();const n=this.link.enter().append("line").attr("class","link").style("opacity","0.2").style("stroke-width",4);this.link=n.merge(this.link),this.node=this.rootNode.selectAll(".node").data(this.allNodesData,e=>e.id).attr("class",this.mainNodeClass),this.node.exit().remove();const r=this.node.enter().append("g").attr("class",this.mainNodeClass).style("opacity",1).on("click",(e,t)=>{this.setDetailsInfo(t.data,!0)}).call(ld().on("start",this.dragStarted).on("drag",this.dragging).on("end",this.dragEnded));r.append("circle").attr("r",this.setNodeRadius),r.append("circle").attr("r",e=>this.setNodeRadius(e)-5).attr("class","node-hover-layer"),r.append("svg").html(e=>{const t=this.fdcConfig.fetchNodeIcon(e);return Lw(t)}).attr("x",this.nodeImagePosition).attr("y",this.nodeImagePosition).attr("height",this.nodeImageSize).attr("width",this.nodeImageSize),this.node=r.merge(this.node),this.simulation.nodes(this.allNodesData),this.simulation.force("link",Bd().id(e=>e.id).distance(100).links(this.allLinks))},mainNodeClass(e){var t,n;const r=null!==(t=e.data)&&void 0!==t&&t.state?e.data.state.toLowerCase():"unkown_status",i=["node"];Rw["a"][r]&&Rw["a"][r].color?i.push("node-"+Rw["a"][r].color):i.push("node-default-fill"),null!==(n=e.data)&&void 0!==n&&n.active&&i.push("active");const a=this.fdcConfig.extendNodeClass(e).concat(i);return a.join(" ")},setNodeRadius(e){const{radius:t}=this.fdcConfig.nodeDimensions(e);return t},nodeImageSize(e){const{size:t}=this.fdcConfig.nodeDimensions(e);return t},nodeImagePosition(e){const{position:t}=this.fdcConfig.nodeDimensions(e);return t},setDetailsInfo(e,t){this.moreInfo=Object.assign([],this.fdcConfig.infoDetails(e)),t&&(this.allNodesData.forEach((t,n)=>{t.data.matchingId===e.matchingId?this.allNodesData[n].data.active=!0:this.allNodesData[n].data.active=!1}),this.updateChart(!1,!1))},zoomFit(){const e=Ku(".root-node"),t=30,n=e.node().getBoundingClientRect(),r=e.node().getBBox(),i=e.node().parentElement,a=i.clientWidth,o=i.clientHeight,s=n.width,l=n.height,c=r.x+s/2,u=r.y+l/2;if(0===s||0===l)return;const d=1/Math.max(s/(a-t),l/(o-t)),p=[a/2-d*c,o/2-d*u],f=_w.translate(p[0],p[1]).scale(d);this.svg.call(this.zoom.transform,f)},ticked(){this.link.attr("x1",e=>e.source.x).attr("y1",e=>e.source.y).attr("x2",e=>e.target.x).attr("y2",e=>e.target.y),this.node.attr("transform",e=>`translate(${e.x}, ${e.y})`)},dragStarted(e,t){e.active||this.simulation.alphaTarget(.3).restart(),t.fx=t.x,t.fy=t.y},dragging(e,t){t.fx=e.x,t.fy=e.y},dragEnded(e,t){e.active||this.simulation.alphaTarget(0),t.fx=void 0,t.fy=void 0},zoomed(e){this.rootNode.attr("transform",e.transform)},flatten(e){const t=[];let n=0;function r(e){e.children&&e.children.forEach(r),e.id?++n:e.id=++n,t.push(e)}return r(e),t}},mounted(){this.svg=Ku("#tree").append("svg").attr("viewBox",`0 0 ${this.fdcConfig.chartWidth} ${this.fdcConfig.chartHeight}`).attr("preserveAspectRatio","none"),this.dataWatcher=this.$watch(this.fdcConfig.watcherProp,(function(e){this.watcherFunction(e)}))},unmounted(){this.dataWatcher()}},Dw=Iw,Mw=(n("b535"),Object(R["a"])(Dw,wr,Er,!1,null,null,null)),Pw=Mw.exports,$w=n("ea69");function jw(e){var t,n;return(null===(t=e.query)||void 0===t?void 0:t.mode)===_["y"]?_["y"]:null!==(n=e.params)&&void 0!==n&&n.id?e.query.mode||_["C"]:_["t"]}async function Bw(e,t){let n;const r={headers:{accept:"application/yaml"}};return t.hasLink("view")&&(n=(await t.followLink("view",r)).data),t.cleanForDownload(n)}var Uw={components:{Loading:V["a"],DetailTop:_r,ForceDirectedTreeChart:Pw,ResourceYaml:jn["a"],Masthead:Yn,IconMessage:vn},mixins:[$n["a"]],props:{storeOverride:{type:String,default:null},resourceOverride:{type:String,default:null},parentRouteOverride:{type:String,default:null},flexContent:{type:Boolean,default:!1},componentTestid:{type:String,default:"resource-details"}},async fetch(){const e=this.$store,t=this.$route,n=t.params;let r=this.resourceOverride||n.resource;const i=this.storeOverride||e.getters["currentStore"](r),a=this.realMode;let{namespace:o,id:l}=n;const c=[_["r"],_["y"],_["A"]].includes(a)?_["t"]:a,u=e.getters["type-map/hasGraph"](r),d=!!u,p=e.getters["type-map/hasCustomDetail"](r,l),f=e.getters["type-map/hasCustomEdit"](r,l),h=e.getters[i+"/all"](s["x"]),m=t.query[_["a"]];let v,g=!1;v=c!==_["C"]||!p||m&&m!==_["u"]?c===_["C"]&&d&&m===_["x"]?_["x"]:!f||m&&m!==_["s"]?_["D"]:_["s"]:_["u"],this.as=v;const b=e.getters["type-map/optionsFor"](r);this.showMasthead=![_["t"],_["v"]].includes(c)||b.resourceEditMasthead;const y=b.canYaml;b.resource&&(r=b.resource);const w=e.getters[i+"/schemaFor"](r);let E,x,O,S;if(a===_["t"]||a===_["y"]){var A;o||(o=e.getters["defaultNamespace"]);const t={type:r};null!==w&&void 0!==w&&null!==(A=w.attributes)&&void 0!==A&&A.namespaced&&(t.metadata={namespace:o}),O=await e.dispatch(i+"/create",t),x=await e.dispatch(i+"/clone",{resource:O}),E=await e.dispatch(i+"/clone",{resource:O}),!0===E.forceYaml&&(v=_["D"],this.as=v),v===_["D"]&&(S=Object(Bn["b"])(h,r,t))}else{var N;if(v===_["x"]){const e=await Object($w["b"])({cluster:{inStoreType:"management",type:s["g"].CLUSTER},bundle:{inStoreType:"management",type:s["g"].BUNDLE},bundleDeployment:{inStoreType:"management",type:s["g"].BUNDLE_DEPLOYMENT}},this.$store);this.canViewChart=e.cluster&&e.bundle&&e.bundleDeployment}let t=l;null!==(N=w.attributes)&&void 0!==N&&N.namespaced&&o&&(t=`${o}/${t}`);try{O=await e.dispatch(i+"/find",{type:r,id:t,opt:{watch:!0}})}catch(k){404!==k.status&&403!==k.status||e.dispatch("loadingError",new Error(this.t("nav.failWhale.resourceIdNotFound",{resource:r,fqid:t},!0))),O={},g=t}E=a===_["C"]?O:await e.dispatch(i+"/clone",{resource:O}),x=await e.dispatch(i+"/clone",{resource:O}),v===_["D"]&&(S=await Bw(this.$store,O)),v===_["x"]&&(this.chartData=O),[_["r"],_["y"],_["A"]].includes(a)&&(E.cleanForNew(),S=E.cleanYaml(S,a))}E=await e.dispatch(i+"/cleanForDetail",E);const C={hasGraph:d,getGraphConfig:u,hasCustomDetail:p,hasCustomEdit:f,canViewYaml:y,resource:r,as:v,yaml:S,initialModel:x,liveModel:O,mode:c,value:E,notFound:g};for(const s in C)this[s]=C[s];this.mode===_["t"]&&this.value.applyDefaults(this,a)},data(){return{chartData:null,resourceSubtype:null,hasGraph:null,hasCustomDetail:null,hasCustomEdit:null,resource:null,asYaml:null,yaml:null,liveModel:null,initialModel:null,mode:null,as:null,value:null,model:null,notFound:null,canViewChart:!0}},computed:{realMode(){const e=jw(this.$route);return e},isView(){return this.mode===_["C"]},isYaml(){return this.as===_["D"]},isDetail(){return this.as===_["u"]},isGraph(){return this.as===_["x"]},offerPreview(){return this.as===_["D"]&&[_["v"],_["r"],_["y"],_["A"]].includes(this.mode)},showComponent(){switch(this.as){case _["u"]:return this.detailComponent;case _["s"]:return this.editComponent}return null}},watch:{"$route.query"(e,t){const n=Object(Qt["e"])(e),r=Object(Qt["e"])(t);delete n[_["h"]],delete r[_["h"]],this.isView||(delete n[_["a"]],delete r[_["a"]]);const i=Object.keys(Object(Qt["g"])(n,r));(i.includes(_["e"])||i.includes(_["a"]))&&this.$fetch()},async"value.metadata.resourceVersion"(e,t){this.mode===_["C"]&&this.as===_["D"]&&e&&t&&e!==t&&(this.yaml=await Bw(this.$store,this.liveModel))}},created(){const e=this.$route.params.id,t=this.resourceOverride||this.$route.params.resource,n=this.$store.getters["type-map/optionsFor"](t),r=n.resourceDetail||n.resource||t,i=n.resourceEdit||n.resource||t;this.detailComponent=this.$store.getters["type-map/importDetail"](r,e),this.editComponent=this.$store.getters["type-map/importEdit"](i,e)},methods:{setSubtype(e){this.resourceSubtype=e},keyAction(e){const t=this.liveModel;null!==t&&void 0!==t&&t[e]&&t[e]()}}},Fw=Uw,Gw=(n("a68b"),Object(R["a"])(Fw,Mn,Pn,!1,null,"34e1a2c7",null)),Hw=Gw.exports,Vw={name:"KubewardenResourceCreate",components:{ResourceDetail:Hw}},qw=Vw,zw=Object(R["a"])(qw,In,Dn,!1,null,null,null),Kw=zw.exports,Yw=function(){var e=this,t=e._self._c;return t("ResourceDetail")},Ww=[],Xw={name:"KubewardenResourcedId",components:{ResourceDetail:Hw}},Zw=Xw,Jw=Object(R["a"])(Zw,Yw,Ww,!1,null,null,null),Qw=Jw.exports,eE=function(){var e=this,t=e._self._c;return t("ResourceDetail")},tE=[],nE={name:"KubewardenResourcedNamespaceId",components:{ResourceDetail:Hw}},rE=nE,iE=Object(R["a"])(rE,eE,tE,!1,null,null,null),aE=iE.exports;const oE=[{name:"c-cluster-"+l["k"],path:"/c/:cluster/"+l["k"],component:gt,meta:{product:l["k"],pkg:l["k"]}},{name:`c-cluster-${l["k"]}-${l["q"]}`,path:`/c/:cluster/${l["k"]}/${l["q"]}`,component:It,meta:{product:l["k"],pkg:l["k"]}},{name:`c-cluster-${l["k"]}-resource`,path:`/c/:cluster/${l["k"]}/:resource`,component:Ln,meta:{product:l["k"],pkg:l["k"]}},{name:`c-cluster-${l["k"]}-resource-create`,path:`/c/:cluster/${l["k"]}/:resource/create`,component:Kw,meta:{product:l["k"],pkg:l["k"]}},{name:`c-cluster-${l["k"]}-resource-id`,path:`/c/:cluster/${l["k"]}/:resource/:id`,component:Qw,meta:{product:l["k"],pkg:l["k"]}},{name:`c-cluster-${l["k"]}-resource-namespace-id`,path:`/c/:cluster/${l["k"]}/:resource/:namespace/:id`,component:aE,meta:{product:l["k"],pkg:l["k"]}}];var sE=oE,lE={airGapped:e=>e.airGapped,hideBannerDefaults:e=>e.hideBannerDefaults,hideBannerArtifactHub:e=>e.hideBannerArtifactHub,hideBannerAirgapPolicy:e=>e.hideBannerAirgapPolicy,controllerApp:e=>e.controllerApp,kubewardenCrds:e=>e.kubewardenCrds,policyReports:e=>e.policyReports,clusterPolicyReports:e=>e.clusterPolicyReports,policyTraces:e=>e.policyTraces,refreshingCharts:e=>e.refreshingCharts},cE={updateAirGapped(e,t){e.airGapped=t},updateHideBannerDefaults(e,t){e.hideBannerDefaults=t},updateHideBannerArtifactHub(e,t){e.hideBannerArtifactHub=t},updateHideBannerAirgapPolicy(e,t){e.hideBannerAirgapPolicy=t},updateControllerApp(e,t){var n;(null===(n=e.controllerApp)||void 0===n?void 0:n.id)===(null===t||void 0===t?void 0:t.id)?(e.controllerApp.metadata=t.metadata,e.controllerApp.spec=t.spec,e.controllerApp.status=t.status):e.controllerApp=t},removeControllerApp(e,t){var n;const r=(null===(n=e.controllerApp)||void 0===n?void 0:n.id)===(null===t||void 0===t?void 0:t.id);r&&(e.controllerApp=null)},updateKubewardenCrds(e,t){const n=e.kubewardenCrds.find(e=>{var n,r;return(null===e||void 0===e||null===(n=e.metadata)||void 0===n?void 0:n.name)===(null===t||void 0===t||null===(r=t.metadata)||void 0===r?void 0:r.name)});n?(n.metadata=t.metadata,n.spec=t.spec,n.status=t.status):e.kubewardenCrds.push(t)},removeKubewardenCrds(e,t){const n=e.kubewardenCrds.findIndex(e=>{var n,r;return(null===e||void 0===e||null===(n=e.metadata)||void 0===n?void 0:n.name)===(null===t||void 0===t||null===(r=t.metadata)||void 0===r?void 0:r.name)});-1!==n&&e.kubewardenCrds.splice(n,1)},updateReports(e,{reportArrayKey:t,updatedReport:n}){const r=e[t],i=r.find(e=>e.id===n.id);i?(i.results=n.results,i.summary=n.summary):r.push(n)},removePolicyReportById(e,t){const n=e.policyReports.findIndex(e=>e.id===t);-1!==n&&e.policyReports.splice(n,1)},updatePolicyTraces(e,t){const{policyName:n,cluster:r,updatedTrace:i}=t,a=e.policyTraces.find(e=>e.policyName===n);let o=null===a||void 0===a?void 0:a.traces.find(e=>e.id===i.id);o?o=i:a?null===a||void 0===a||a.traces.push(i):e.policyTraces.push({policyName:n,cluster:r,traces:[i]})},removeTraceById(e,t,n){const r=e.policyTraces.find(e=>e.policyName===t.policyName),i=null===r||void 0===r?void 0:r.traces.findIndex(e=>e.id===n.id);i&&-1!==i&&(null===r||void 0===r||r.traces.splice(i,1))},updateRefreshingCharts(e,t){e.refreshingCharts=t}},uE={updateAirGapped({commit:e},t){e("updateAirGapped",t)},updateHideBannerDefaults({commit:e},t){e("updateHideBannerDefaults",t)},updateHideBannerArtifactHub({commit:e},t){e("updateHideBannerArtifactHub",t)},updateHideBannerAirgapPolicy({commit:e},t){e("updateHideBannerAirgapPolicy",t)},updatePolicyReports({commit:e},t){e("updateReports",{reportArrayKey:"policyReports",updatedReport:t})},updateClusterPolicyReports({commit:e},t){e("updateReports",{reportArrayKey:"clusterPolicyReports",updatedReport:t})},updatePolicyTraces({commit:e},t){e("updatePolicyTraces",t)},removePolicyTraceById({commit:e},t,n){e("removePolicyTraceById",t,n)},updateRefreshingCharts({commit:e},t){e("updateRefreshingCharts",t)},updateControllerApp({commit:e},t){e("updateControllerApp",t)},removeControllerApp({commit:e},t){e("removeControllerApp",t)},updateKubewardenCrds({commit:e},t){e("updateKubewardenCrds",t)},removeKubewardenCrds({commit:e},t){e("removeKubewardenCrds",t)}};const dE=e=>({state:()=>({airGapped:e.airGapped,fleetRepos:e.fleetRepos,hideBannerDefaults:e.hideBannerDefaults,hideBannerArtifactHub:e.hideBannerArtifactHub,hideBannerAirgapPolicy:e.hideBannerAirgapPolicy,controllerApp:e.controllerApp,kubewardenCrds:e.kubewardenCrds,policyReports:e.policyReports,clusterPolicyReports:e.clusterPolicyReports,policyTraces:e.policyTraces,refreshingCharts:e.refreshingCharts}),getters:{...lE},mutations:{...cE},actions:{...uE}}),pE={namespace:l["k"]};var fE={specifics:dE({airGapped:!1,fleetRepos:[],hideBannerDefaults:!1,hideBannerArtifactHub:!1,hideBannerAirgapPolicy:!1,controllerApp:null,kubewardenCrds:[],policyReports:[],clusterPolicyReports:[],policyTraces:[],refreshingCharts:!1}),config:pE},hE=n("8bbf"),mE=n.n(hE),vE=n("8276"),gE=n("3e09"),bE=n.n(gE);const yE=["code","li","a","p","b","br","ul","pre","span","div","i","em","strong","h1","h2","h3","h4","h5","h6","table","thead","tr","th","tbody","td","blockquote"];bE.a.addHook("uponSanitizeAttribute",(e,t)=>{"A"===e.tagName&&"target"===t.attrName&&"_blank"===t.attrValue&&(t.forceKeepAttr=!0)}),bE.a.addHook("afterSanitizeAttributes",e=>{if("A"===e.tagName&&"_blank"===(null===e||void 0===e?void 0:e.target)){var t;const n=["noopener","noreferrer","nofollow"],r=null!==(t=e.rel)&&void 0!==t&&t.length?e.rel.split(" "):[],i=Object(fe["l"])([...n,...r]);e.setAttribute("rel",i.join(" "))}});const _E=(e,t={ALLOWED_TAGS:yE})=>bE.a.sanitize(e,t);function wE(e){const t=typeof e;return"string"===t?_E(e):e&&"object"===t&&"string"===typeof e.content?{...e,content:_E(e.content)}:e}function EE(e,{value:t,oldValue:n,modifiers:r}){const i=wE(t);vE["a"].bind(e,{value:i,oldValue:n,modifiers:r})}const xE={...vE["a"],bind:EE,update:EE};mE.a.directive("clean-tooltip",xE);const OE={inserted(e,t){e.innerHTML=_E(t.value)},componentUpdated(e,t){e.innerHTML=_E(t.value)},unbind(e){e.innerHTML=""}};mE.a.directive("clean-html",OE);const SE=async e=>{await Object(q["g"])(e,!1),await Object(q["g"])(e,!0)};var AE=function(e,t){a(e),e.metadata=n("9224"),e.addProduct(n("6102")),e.addDashboardStore(fE.config.namespace,fE.specifics,fE.config),e.addRoutes(sE),e.addNavHooks(SE),e.addPanel(o["d"].RESOURCE_LIST,{path:[{urlPath:"explorer/projectsnamespaces",endsWith:!0}]},{component:()=>n.e(0).then(n.bind(null,"6ba7"))}),e.addPanel(o["d"].RESOURCE_LIST,{resource:[s["r"],s["H"].CRON_JOB,s["H"].DAEMON_SET,s["H"].DEPLOYMENT,s["H"].JOB,s["H"].STATEFUL_SET,s["j"],s["z"]]},{component:()=>n.e(0).then(n.bind(null,"6ba7"))}),e.addTableColumn(o["f"].RESOURCE,{path:[{urlPath:"explorer/projectsnamespaces",endsWith:!0}]},{name:"policy-reports",labelKey:"kubewarden.policyReporter.headers.policyReports.label",getValue:e=>e,weight:3,formatter:"PolicyReportSummary"}),e.addTableColumn(o["f"].RESOURCE,{resource:[s["r"],s["H"].CRON_JOB,s["H"].DAEMON_SET,s["H"].DEPLOYMENT,s["H"].JOB,s["H"].STATEFUL_SET,s["j"],s["z"]]},{name:"policy-reports",labelKey:"kubewarden.policyReporter.headers.label",getValue:e=>e,weight:3,formatter:"PolicyReportSummary"}),e.addTab(o["e"].RESOURCE_DETAIL,{resource:[s["n"],s["r"],s["H"].CRON_JOB,s["H"].DAEMON_SET,s["H"].DEPLOYMENT,s["H"].JOB,s["H"].STATEFUL_SET,s["j"],s["z"]]},{name:"policy-report-tab",labelKey:"kubewarden.policyReporter.headers.label",weight:-5,showHeader:!0,component:()=>n.e(13).then(n.bind(null,"8564"))})};t["default"]=AE},"1cbd":function(e,t,n){var r=n("5eaa");t=r(!1),t.push([e.i,".percentage-bar[data-v-620caa7e]{display:flex;flex-direction:row}.percentage-bar .percentage-value[data-v-620caa7e]{word-break:keep-all}",""]),e.exports=t},"1d01":function(e,t,n){var r=n("7ed4");r.__esModule&&(r=r.default),"string"===typeof r&&(r=[[e.i,r,""]]),r.locals&&(e.exports=r.locals);var i=n("0ed3").default;i("d968b8fe",r,!0,{sourceMap:!1,shadowMode:!1})},"1d19":function(e,t,n){"use strict";n.d(t,"c",(function(){return s})),n.d(t,"a",(function(){return p})),n.d(t,"b",(function(){return m}));var r=n("e24b"),i=n("2cb5");const a={"[object Boolean]":"boolean","[object Number]":"number","[object String]":"string","[object Function]":"function","[object Array]":"array","[object Date]":"date","[object RegExp]":"regexp","[object Object]":"object","[object FileList]":"filelist"},{toString:o}=Object.prototype;function s(e){if(null===e)return"null";if(void 0===e)return"undefined";let t=a[o.call(e)]||"object";return"object"===t&&(e instanceof Error?t="error":e instanceof Date&&(t="date")),t}function l(e,t){const n=e-t;return(n>0)-(n<0)}const c={undefined:0,null:1,boolean:2,number:3,string:4,array:5,object:6,instance:7,function:8,class:9,date:10};function u(e,t){const n=s(e),r=s(t),i=l(c[n],c[r]);if(i)return i;switch(n){case"boolean":case"number":return l(e,t);case"string":return l(e.localeCompare(t),0);case"array":{const n=e.length,r=t.length,i=Math.min(n,r);for(let a=0;a{for(let a=0;ae.match(h)?Object(i["q"])(e,10,"0"):e).join("").trim()}},"1d5f":function(e){e.exports=JSON.parse('{"hasStylesheet":"true"}')},"1db5":function(e,t,n){"use strict";n("8dcd")},"1ec9":function(e,t,n){var r=n("fa8a"),i=n("44d9"),a=n("1386"),o=n("052a"),s=n("2fab"),l=n("e3f8");function c(e){var t=this.__data__=new r(e);this.size=t.size}c.prototype.clear=i,c.prototype["delete"]=a,c.prototype.get=o,c.prototype.has=s,c.prototype.set=l,e.exports=c},"1f4e":function(e,t){const n="[A-Za-z$_][0-9A-Za-z$_]*",r=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],i=["true","false","null","undefined","NaN","Infinity"],a=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],o=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],s=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],l=["arguments","this","super","console","window","document","localStorage","module","global"],c=[].concat(s,a,o);function u(e){const t=e.regex,u=(e,{after:t})=>{const n="",end:""},f=/<[A-Za-z0-9\\._:-]+\s*\/>/,h={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(e,t)=>{const n=e[0].length+e.index,r=e.input[n];if("<"===r||","===r)return void t.ignoreMatch();let i;">"===r&&(u(e,{after:n})||t.ignoreMatch());const a=e.input.substring(n);(i=a.match(/^\s+extends\s+/))&&0===i.index&&t.ignoreMatch()}},m={$pattern:n,keyword:r,literal:i,built_in:c,"variable.language":l},v="[0-9](_?[0-9])*",g=`\\.(${v})`,b="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",y={className:"number",variants:[{begin:`(\\b(${b})((${g})|\\.)?|(${g}))[eE][+-]?(${v})\\b`},{begin:`\\b(${b})\\b((${g})\\b|\\.)?|(${g})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},_={className:"subst",begin:"\\$\\{",end:"\\}",keywords:m,contains:[]},w={begin:"html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,_],subLanguage:"xml"}},E={begin:"css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,_],subLanguage:"css"}},x={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,_]},O=e.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:d+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),S={className:"comment",variants:[O,e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},A=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,w,E,x,y];_.contains=A.concat({begin:/\{/,end:/\}/,keywords:m,contains:["self"].concat(A)});const N=[].concat(S,_.contains),C=N.concat([{begin:/\(/,end:/\)/,keywords:m,contains:["self"].concat(N)}]),k={className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:m,contains:C},T={variants:[{match:[/class/,/\s+/,d,/\s+/,/extends/,/\s+/,t.concat(d,"(",t.concat(/\./,d),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,d],scope:{1:"keyword",3:"title.class"}}]},R={relevance:0,match:t.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...a,...o]}},L={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},I={variants:[{match:[/function/,/\s+/,d,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[k],illegal:/%/},D={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function M(e){return t.concat("(?!",e.join("|"),")")}const P={match:t.concat(/\b/,M([...s,"super"]),d,t.lookahead(/\(/)),className:"title.function",relevance:0},$={begin:t.concat(/\./,t.lookahead(t.concat(d,/(?![0-9A-Za-z$_(])/))),end:d,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},j={match:[/get|set/,/\s+/,d,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},k]},B="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+e.UNDERSCORE_IDENT_RE+")\\s*=>",U={match:[/const|var|let/,/\s+/,d,/\s*/,/=\s*/,/(async\s*)?/,t.lookahead(B)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[k]};return{name:"Javascript",aliases:["js","jsx","mjs","cjs"],keywords:m,exports:{PARAMS_CONTAINS:C,CLASS_REFERENCE:R},illegal:/#(?![$_A-z])/,contains:[e.SHEBANG({label:"shebang",binary:"node",relevance:5}),L,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,w,E,x,S,y,R,{className:"attr",begin:d+t.lookahead(":"),relevance:0},U,{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[S,e.REGEXP_MODE,{className:"function",begin:B,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:m,contains:C}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:p.begin,end:p.end},{match:f},{begin:h.begin,"on:begin":h.isTrulyOpeningTag,end:h.end}],subLanguage:"xml",contains:[{begin:h.begin,end:h.end,skip:!0,contains:["self"]}]}]},I,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+e.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[k,e.inherit(e.TITLE_MODE,{begin:d,className:"title.function"})]},{match:/\.\.\./,relevance:0},$,{match:"\\$"+d,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[k]},P,D,T,j,{match:/\$[(.]/}]}}function d(e){const t=u(e),a=n,o=["any","void","number","boolean","string","object","never","symbol","bigint","unknown"],s={beginKeywords:"namespace",end:/\{/,excludeEnd:!0,contains:[t.exports.CLASS_REFERENCE]},d={beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:{keyword:"interface extends",built_in:o},contains:[t.exports.CLASS_REFERENCE]},p={className:"meta",relevance:10,begin:/^\s*['"]use strict['"]/},f=["type","namespace","interface","public","private","protected","implements","declare","abstract","readonly","enum","override"],h={$pattern:n,keyword:r.concat(f),literal:i,built_in:c.concat(o),"variable.language":l},m={className:"meta",begin:"@"+a},v=(e,t,n)=>{const r=e.contains.findIndex(e=>e.label===t);if(-1===r)throw new Error("can not find mode to replace");e.contains.splice(r,1,n)};Object.assign(t.keywords,h),t.exports.PARAMS_CONTAINS.push(m),t.contains=t.contains.concat([m,s,d]),v(t,"shebang",e.SHEBANG()),v(t,"use_strict",p);const g=t.contains.find(e=>"func.def"===e.label);return g.relevance=0,Object.assign(t,{name:"TypeScript",aliases:["ts","tsx"]}),t}e.exports=d},"1fcb":function(e,t,n){var r=n("3336"),i=n("c294"),a=i((function(e,t,n){r(e,t,n)}));e.exports=a},"1fce":function(e,t){function n(e,t){var n=-1,r=null==e?0:e.length,i=Array(r);while(++n-1)||n.indexOf(",")>-1||n.indexOf("/")>-1||r.StringUtilities.containsAny(i,e.specialCharacters))if(!t&&i.indexOf(",")>-1&&-1==i.indexOf("-")&&-1==i.indexOf("/")&&!r.StringUtilities.containsAny(n,e.specialCharacters)){var o=i.split(",");a+=this.i18n.at();for(var s=0;s0&&c.length>0&&(a+=", "),a+=c,a.length>0&&u.length>0&&(a+=", "),a+=u}else{var d=n.split("-");a+=r.StringUtilities.format(this.i18n.everyMinuteBetweenX0AndX1(),this.formatTime(i,d[0],""),this.formatTime(i,d[1],""))}else a+=this.i18n.atSpace()+this.formatTime(i,n,t);return a},e.prototype.getSecondsDescription=function(){var e=this,t=this.getSegmentDescription(this.expressionParts[0],this.i18n.everySecond(),(function(e){return e}),(function(t){return r.StringUtilities.format(e.i18n.everyX0Seconds(),t)}),(function(t){return e.i18n.secondsX0ThroughX1PastTheMinute()}),(function(t){return"0"==t?"":parseInt(t)<20?e.i18n.atX0SecondsPastTheMinute():e.i18n.atX0SecondsPastTheMinuteGt20()||e.i18n.atX0SecondsPastTheMinute()}));return t},e.prototype.getMinutesDescription=function(){var e=this,t=this.expressionParts[0],n=this.expressionParts[2],i=this.getSegmentDescription(this.expressionParts[1],this.i18n.everyMinute(),(function(e){return e}),(function(t){return r.StringUtilities.format(e.i18n.everyX0Minutes(),t)}),(function(t){return e.i18n.minutesX0ThroughX1PastTheHour()}),(function(r){try{return"0"==r&&-1==n.indexOf("/")&&""==t?e.i18n.everyHour():parseInt(r)<20?e.i18n.atX0MinutesPastTheHour():e.i18n.atX0MinutesPastTheHourGt20()||e.i18n.atX0MinutesPastTheHour()}catch(i){return e.i18n.atX0MinutesPastTheHour()}}));return i},e.prototype.getHoursDescription=function(){var e=this,t=this.expressionParts[2],n=this.getSegmentDescription(t,this.i18n.everyHour(),(function(t){return e.formatTime(t,"0","")}),(function(t){return r.StringUtilities.format(e.i18n.everyX0Hours(),t)}),(function(t){return e.i18n.betweenX0AndX1()}),(function(t){return e.i18n.atX0()}));return n},e.prototype.getDayOfWeekDescription=function(){var e=this,t=this.i18n.daysOfTheWeek(),n=null;return n="*"==this.expressionParts[5]?"":this.getSegmentDescription(this.expressionParts[5],this.i18n.commaEveryDay(),(function(e){var n=e;return e.indexOf("#")>-1?n=e.substr(0,e.indexOf("#")):e.indexOf("L")>-1&&(n=n.replace("L","")),t[parseInt(n)]}),(function(t){return 1==parseInt(t)?"":r.StringUtilities.format(e.i18n.commaEveryX0DaysOfTheWeek(),t)}),(function(t){return e.i18n.commaX0ThroughX1()}),(function(t){var n=null;if(t.indexOf("#")>-1){var r=t.substring(t.indexOf("#")+1),i=null;switch(r){case"1":i=e.i18n.first();break;case"2":i=e.i18n.second();break;case"3":i=e.i18n.third();break;case"4":i=e.i18n.fourth();break;case"5":i=e.i18n.fifth();break}n=e.i18n.commaOnThe()+i+e.i18n.spaceX0OfTheMonth()}else if(t.indexOf("L")>-1)n=e.i18n.commaOnTheLastX0OfTheMonth();else{var a="*"!=e.expressionParts[3];n=a?e.i18n.commaAndOnX0():e.i18n.commaOnlyOnX0()}return n})),n},e.prototype.getMonthDescription=function(){var e=this,t=this.i18n.monthsOfTheYear(),n=this.getSegmentDescription(this.expressionParts[4],"",(function(e){return t[parseInt(e)-1]}),(function(t){return 1==parseInt(t)?"":r.StringUtilities.format(e.i18n.commaEveryX0Months(),t)}),(function(t){return e.i18n.commaMonthX0ThroughMonthX1()||e.i18n.commaX0ThroughX1()}),(function(t){return e.i18n.commaOnlyInMonthX0?e.i18n.commaOnlyInMonthX0():e.i18n.commaOnlyInX0()}));return n},e.prototype.getDayOfMonthDescription=function(){var e=this,t=null,n=this.expressionParts[3];switch(n){case"L":t=this.i18n.commaOnTheLastDayOfTheMonth();break;case"WL":case"LW":t=this.i18n.commaOnTheLastWeekdayOfTheMonth();break;default:var i=n.match(/(\d{1,2}W)|(W\d{1,2})/);if(i){var a=parseInt(i[0].replace("W","")),o=1==a?this.i18n.firstWeekday():r.StringUtilities.format(this.i18n.weekdayNearestDayX0(),a.toString());t=r.StringUtilities.format(this.i18n.commaOnTheX0OfTheMonth(),o);break}var s=n.match(/L-(\d{1,2})/);if(s){var l=s[1];t=r.StringUtilities.format(this.i18n.commaDaysBeforeTheLastDayOfTheMonth(),l);break}if("*"==n&&"*"!=this.expressionParts[5])return"";t=this.getSegmentDescription(n,this.i18n.commaEveryDay(),(function(t){return"L"==t?e.i18n.lastDay():e.i18n.dayX0?r.StringUtilities.format(e.i18n.dayX0(),t):t}),(function(t){return"1"==t?e.i18n.commaEveryDay():e.i18n.commaEveryX0Days()}),(function(t){return e.i18n.commaBetweenDayX0AndX1OfTheMonth()}),(function(t){return e.i18n.commaOnDayX0OfTheMonth()}));break}return t},e.prototype.getYearDescription=function(){var e=this,t=this.getSegmentDescription(this.expressionParts[6],"",(function(e){return/^\d+$/.test(e)?new Date(parseInt(e),1).getFullYear().toString():e}),(function(t){return r.StringUtilities.format(e.i18n.commaEveryX0Years(),t)}),(function(t){return e.i18n.commaYearX0ThroughYearX1()||e.i18n.commaX0ThroughX1()}),(function(t){return e.i18n.commaOnlyInYearX0?e.i18n.commaOnlyInYearX0():e.i18n.commaOnlyInX0()}));return t},e.prototype.getSegmentDescription=function(e,t,n,i,a,o){var s=this,l=null;if(e)if("*"===e)l=t;else if(r.StringUtilities.containsAny(e,["/","-",","]))if(e.indexOf("/")>-1){var c=e.split("/");if(l=r.StringUtilities.format(i(c[1]),c[1]),c[0].indexOf("-")>-1){var u=this.generateBetweenSegmentDescription(c[0],a,n);0!=u.indexOf(", ")&&(l+=", "),l+=u}else if(!r.StringUtilities.containsAny(c[0],["*",","])){var d=r.StringUtilities.format(o(c[0]),n(c[0]));d=d.replace(", ",""),l+=r.StringUtilities.format(this.i18n.commaStartingX0(),d)}}else if(e.indexOf(",")>-1){c=e.split(",");for(var p="",f=0;f0&&c.length>2&&(p+=",",f0&&c.length>1&&(f==c.length-1||2==c.length)&&(p+=this.i18n.spaceAnd()+" "),c[f].indexOf("-")>-1){u=this.generateBetweenSegmentDescription(c[f],(function(e){return s.i18n.commaX0ThroughX1()}),n);u=u.replace(", ",""),p+=u}else p+=n(c[f]);l=r.StringUtilities.format(o(e),p)}else e.indexOf("-")>-1&&(l=this.generateBetweenSegmentDescription(e,a,n));else l=r.StringUtilities.format(o(e),n(e));else l="";return l},e.prototype.generateBetweenSegmentDescription=function(e,t,n){var i="",a=e.split("-"),o=n(a[0]),s=n(a[1]);s=s.replace(":00",":59");var l=t(e);return i+=r.StringUtilities.format(l,o,s),i},e.prototype.formatTime=function(e,t,n){var r=parseInt(e),i="",a=!1;this.options.use24HourTimeFormat||(a=this.i18n.setPeriodBeforeTime&&this.i18n.setPeriodBeforeTime(),i=a?this.getPeriod(r)+" ":" "+this.getPeriod(r),r>12&&(r-=12),0===r&&(r=12));var o=t,s="";return n&&(s=":"+("00"+n).substring(n.length)),""+(a?i:"")+("00"+r.toString()).substring(r.toString().length)+":"+("00"+o.toString()).substring(o.toString().length)+s+(a?"":i)},e.prototype.transformVerbosity=function(e,t){return t||(e=e.replace(new RegExp(", "+this.i18n.everyMinute(),"g"),""),e=e.replace(new RegExp(", "+this.i18n.everyHour(),"g"),""),e=e.replace(new RegExp(this.i18n.commaEveryDay(),"g"),""),e=e.replace(/\, ?$/,"")),e},e.prototype.getPeriod=function(e){return e>=12?this.i18n.pm&&this.i18n.pm()||"PM":this.i18n.am&&this.i18n.am()||"AM"},e.locales={},e}();t.ExpressionDescriptor=a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(){}return e.format=function(e){for(var t=[],n=1;n-1}))},e}();t.StringUtilities=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){void 0===t&&(t=!0),this.expression=e,this.dayOfWeekStartIndexZero=t}return e.prototype.parse=function(){var e=this.extractParts(this.expression);return this.normalize(e),this.validate(e),e},e.prototype.extractParts=function(e){if(!this.expression)throw new Error("Expression is empty");var t=e.trim().split(/[ ]+/);if(t.length<5)throw new Error("Expression has only "+t.length+" part"+(1==t.length?"":"s")+". At least 5 parts are required.");if(5==t.length)t.unshift(""),t.push("");else if(6==t.length)/\d{4}$/.test(t[5])?t.unshift(""):t.push("");else if(t.length>7)throw new Error("Expression has "+t.length+" parts; too many!");return t},e.prototype.normalize=function(e){var t=this;if(e[3]=e[3].replace("?","*"),e[5]=e[5].replace("?","*"),e[2]=e[2].replace("?","*"),0==e[0].indexOf("0/")&&(e[0]=e[0].replace("0/","*/")),0==e[1].indexOf("0/")&&(e[1]=e[1].replace("0/","*/")),0==e[2].indexOf("0/")&&(e[2]=e[2].replace("0/","*/")),0==e[3].indexOf("1/")&&(e[3]=e[3].replace("1/","*/")),0==e[4].indexOf("1/")&&(e[4]=e[4].replace("1/","*/")),0==e[5].indexOf("1/")&&(e[5]=e[5].replace("1/","*/")),0==e[6].indexOf("1/")&&(e[6]=e[6].replace("1/","*/")),e[5]=e[5].replace(/(^\d)|([^#/\s]\d)/g,(function(e){var n=e.replace(/\D/,""),r=n;return t.dayOfWeekStartIndexZero?"7"==n&&(r="0"):r=(parseInt(n)-1).toString(),e.replace(n,r)})),"L"==e[5]&&(e[5]="6"),"?"==e[3]&&(e[3]="*"),e[3].indexOf("W")>-1&&(e[3].indexOf(",")>-1||e[3].indexOf("-")>-1))throw new Error("The 'W' character can be specified only when the day-of-month is a single day, not a range or list of days.");var n={SUN:0,MON:1,TUE:2,WED:3,THU:4,FRI:5,SAT:6};for(var r in n)e[5]=e[5].replace(new RegExp(r,"gi"),n[r].toString());var i={JAN:1,FEB:2,MAR:3,APR:4,MAY:5,JUN:6,JUL:7,AUG:8,SEP:9,OCT:10,NOV:11,DEC:12};for(var a in i)e[4]=e[4].replace(new RegExp(a,"gi"),i[a].toString());"0"==e[0]&&(e[0]=""),/\*|\-|\,|\//.test(e[2])||!/\*|\//.test(e[1])&&!/\*|\//.test(e[0])||(e[2]+="-"+e[2]);for(var o=0;o-1&&!/^\*|\-|\,/.test(e[o])){var s=null;switch(o){case 4:s="12";break;case 5:s="6";break;case 6:s="9999";break;default:s=null;break}if(null!=s){var l=e[o].split("/");e[o]=l[0]+"-"+s+"/"+l[1]}}},e.prototype.validate=function(e){this.assertNoInvalidCharacters("DOW",e[5]),this.assertNoInvalidCharacters("DOM",e[3])},e.prototype.assertNoInvalidCharacters=function(e,t){var n=t.match(/[A-KM-VX-Z]+/gi);if(n&&n.length)throw new Error(e+" part contains invalid values: '"+n.toString()+"'")},e}();t.CronParser=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(){}return e.prototype.atX0SecondsPastTheMinuteGt20=function(){return null},e.prototype.atX0MinutesPastTheHourGt20=function(){return null},e.prototype.commaMonthX0ThroughMonthX1=function(){return null},e.prototype.commaYearX0ThroughYearX1=function(){return null},e.prototype.use24HourTimeFormatByDefault=function(){return!1},e.prototype.anErrorOccuredWhenGeneratingTheExpressionD=function(){return"An error occured when generating the expression description. Check the cron expression syntax."},e.prototype.everyMinute=function(){return"every minute"},e.prototype.everyHour=function(){return"every hour"},e.prototype.atSpace=function(){return"At "},e.prototype.everyMinuteBetweenX0AndX1=function(){return"Every minute between %s and %s"},e.prototype.at=function(){return"At"},e.prototype.spaceAnd=function(){return" and"},e.prototype.everySecond=function(){return"every second"},e.prototype.everyX0Seconds=function(){return"every %s seconds"},e.prototype.secondsX0ThroughX1PastTheMinute=function(){return"seconds %s through %s past the minute"},e.prototype.atX0SecondsPastTheMinute=function(){return"at %s seconds past the minute"},e.prototype.everyX0Minutes=function(){return"every %s minutes"},e.prototype.minutesX0ThroughX1PastTheHour=function(){return"minutes %s through %s past the hour"},e.prototype.atX0MinutesPastTheHour=function(){return"at %s minutes past the hour"},e.prototype.everyX0Hours=function(){return"every %s hours"},e.prototype.betweenX0AndX1=function(){return"between %s and %s"},e.prototype.atX0=function(){return"at %s"},e.prototype.commaEveryDay=function(){return", every day"},e.prototype.commaEveryX0DaysOfTheWeek=function(){return", every %s days of the week"},e.prototype.commaX0ThroughX1=function(){return", %s through %s"},e.prototype.first=function(){return"first"},e.prototype.second=function(){return"second"},e.prototype.third=function(){return"third"},e.prototype.fourth=function(){return"fourth"},e.prototype.fifth=function(){return"fifth"},e.prototype.commaOnThe=function(){return", on the "},e.prototype.spaceX0OfTheMonth=function(){return" %s of the month"},e.prototype.lastDay=function(){return"the last day"},e.prototype.commaOnTheLastX0OfTheMonth=function(){return", on the last %s of the month"},e.prototype.commaOnlyOnX0=function(){return", only on %s"},e.prototype.commaAndOnX0=function(){return", and on %s"},e.prototype.commaEveryX0Months=function(){return", every %s months"},e.prototype.commaOnlyInX0=function(){return", only in %s"},e.prototype.commaOnTheLastDayOfTheMonth=function(){return", on the last day of the month"},e.prototype.commaOnTheLastWeekdayOfTheMonth=function(){return", on the last weekday of the month"},e.prototype.commaDaysBeforeTheLastDayOfTheMonth=function(){return", %s days before the last day of the month"},e.prototype.firstWeekday=function(){return"first weekday"},e.prototype.weekdayNearestDayX0=function(){return"weekday nearest day %s"},e.prototype.commaOnTheX0OfTheMonth=function(){return", on the %s of the month"},e.prototype.commaEveryX0Days=function(){return", every %s days"},e.prototype.commaBetweenDayX0AndX1OfTheMonth=function(){return", between day %s and %s of the month"},e.prototype.commaOnDayX0OfTheMonth=function(){return", on day %s of the month"},e.prototype.commaEveryHour=function(){return", every hour"},e.prototype.commaEveryX0Years=function(){return", every %s years"},e.prototype.commaStartingX0=function(){return", starting %s"},e.prototype.daysOfTheWeek=function(){return["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},e.prototype.monthsOfTheYear=function(){return["January","February","March","April","May","June","July","August","September","October","November","December"]},e}();t.en=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(0),i=n(5);r.ExpressionDescriptor.initialize(new i.enLocaleLoader),t.default=r.ExpressionDescriptor;var a=r.ExpressionDescriptor.toString;t.toString=a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(3),i=function(){function e(){}return e.prototype.load=function(e){e["en"]=new r.en},e}();t.enLocaleLoader=i}])}))},"212d":function(e,t,n){var r=n("bf10"),i=n("201b"),a=r(i,"Promise");e.exports=a},"21a1":function(e,t,n){var r=n("5eaa");t=r(!1),t.push([e.i,".operator .vs__dropdown-option[data-v-3512fedb]{padding:3px 6px 3px 6px!important}.remove-expression[data-v-3512fedb]{padding:8px;position:absolute;margin-bottom:10px;right:0;top:0;z-index:2}.remove-expression i[data-v-3512fedb]{font-size:2em}.remove-container[data-v-3512fedb]{display:flex;justify-content:center}.match-expression-header[data-v-3512fedb],.match-expression-row[data-v-3512fedb]{display:grid;grid-template-columns:1fr 1fr 1fr;margin:5px 0;grid-gap:1.75%}.match-expression-header>LABEL[data-v-3512fedb],.match-expression-row>LABEL[data-v-3512fedb]{margin:0}.match-expression-header[data-v-3512fedb]:not(.view),.match-expression-row[data-v-3512fedb]:not(.view){grid-template-columns:repeat(3,1fr) 50px}.match-expression-row>div>input[data-v-3512fedb]{min-height:40px!important}.match-expression-header-matching[data-v-3512fedb],.match-expression-row-matching[data-v-3512fedb]{grid-template-columns:1fr 1fr 1fr 1fr}.match-expression-header-matching[data-v-3512fedb]:not(.view),.match-expression-row-matching[data-v-3512fedb]:not(.view){grid-template-columns:1fr 1fr 1fr 1fr 100px}",""]),e.exports=t},"21a3":function(e,t){const n="2.0.0",r=256,i=Number.MAX_SAFE_INTEGER||9007199254740991,a=16,o=r-6,s=["major","premajor","minor","preminor","patch","prepatch","prerelease"];e.exports={MAX_LENGTH:r,MAX_SAFE_COMPONENT_LENGTH:a,MAX_SAFE_BUILD_LENGTH:o,MAX_SAFE_INTEGER:i,RELEASE_TYPES:s,SEMVER_SPEC_VERSION:n,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}},"220e":function(e,t,n){var r=n("5eaa");t=r(!1),t.push([e.i,'.chart-container{display:flex;background-color:var(--body-bg);position:relative;border:1px solid var(--border);border-radius:var(--border-radius);min-height:100px}.chart-container .loading-container{content:"";position:absolute;top:0;left:0;width:100%;height:100%;border-radius:var(--border-radius);background-color:var(--body-bg);z-index:2;display:flex;align-items:center;justify-content:center;flex-direction:column}.chart-container .loading-container i{font-size:24px}.chart-container #tree{width:70%;height:-moz-fit-content;height:fit-content}.chart-container #tree svg{margin-top:3px}.chart-container #tree .link{stroke:var(--darker)}.chart-container #tree .node{cursor:pointer}.chart-container #tree .node.active .node-hover-layer{display:block}.chart-container #tree .node.repo.active>circle{transform:scale(1.2)}.chart-container #tree .node.bundle.active>circle{transform:scale(1.35)}.chart-container #tree .node.bundle-deployment.active>circle{transform:scale(1.6)}.chart-container #tree .node.node-default-fill>circle,.chart-container #tree .node.repo>circle{fill:var(--muted)}.chart-container #tree .node:not(.repo).node-success>circle{fill:var(--success)}.chart-container #tree .node:not(.repo).node-info>circle{fill:var(--info)}.chart-container #tree .node:not(.repo).node-warning>circle{fill:var(--warning)}.chart-container #tree .node:not(.repo).node-error>circle{fill:var(--error)}.chart-container #tree .node .node-hover-layer{stroke:var(--body-bg);stroke-width:2;display:none}.chart-container .more-info-container{width:30%;position:relative;border-left:1px solid var(--border);background-color:var(--body-bg);overflow:hidden}.chart-container .more-info-container,.chart-container .more-info-container .more-info{border-top-right-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius)}.chart-container .more-info-container .more-info{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;padding:20px;overflow-y:auto}.chart-container .more-info-container .more-info table td{vertical-align:top;padding-bottom:10px}.chart-container .more-info-container .more-info table td.align-middle{vertical-align:middle}.chart-container .more-info-container .more-info table .more-info-item-label{color:var(--darker);margin-right:8px}.chart-container .more-info-container .more-info table .single-error{color:var(--error)}.chart-container .more-info-container .more-info table p{line-height:1.5em}',""]),e.exports=t},"22a0":function(e,t,n){"use strict";n.r(t);var r=function(){var e=this,t=e._self._c;return t("div",{staticClass:"mt-20 mb-20 sources__container"},[t("div",[t("LabeledInput",{ref:"authorityName",staticClass:"mb-20 mt-20",attrs:{"data-testid":"ps-config-authority-name-input",type:"multiline",label:e.t("kubewarden.policyServerConfig.sourceAuthorities.endpoint"),mode:e.mode,disabled:e.isView,placeholder:e.t("kubewarden.policyServerConfig.sourceAuthorities.placeholder"),required:""},model:{value:e.chartValues.registryName,callback:function(t){e.$set(e.chartValues,"registryName",t)},expression:"chartValues.registryName"}}),[e._l(e.chartValues.certs,(function(n,r){return[t("div",{key:r,staticClass:"sources__container__cert"},[t("LabeledInput",{ref:"authorityCert",refInFor:!0,staticClass:"p-10 col span-6",attrs:{"data-testid":"ps-config-authority-cert-input-"+r,type:"multiline",label:e.t("kubewarden.policyServerConfig.sourceAuthorities.certificate.label"),mode:e.mode,disabled:e.isView,required:"",placeholder:e.t("secret.certificate.certificatePlaceholder")},model:{value:e.chartValues.certs[r],callback:function(t){e.$set(e.chartValues.certs,r,t)},expression:"chartValues.certs[cIndex]"}}),t("div",{staticClass:"remove"},[t("button",{staticClass:"btn role-link remove",attrs:{"data-testid":"ps-config-authority-cert-remove-button-"+r,type:"button",disabled:e.isView},on:{click:function(t){return e.removeCert(r)}}},[e._v(" "+e._s(e.t("kubewarden.policyServerConfig.sourceAuthorities.certificate.remove"))+" ")])])],1)]})),t("button",{staticClass:"btn role-tertiary add",attrs:{"data-testid":"ps-config-authority-cert-add-button",type:"button",disabled:e.isView},on:{click:function(t){return e.addCertificate()}}},[e._v(" "+e._s(e.t("kubewarden.policyServerConfig.sourceAuthorities.certificate.add"))+" ")]),t("FileSelector",{staticClass:"btn role-link",attrs:{"data-testid":"ps-config-authority-select-file",label:e.t("kubewarden.policyServerConfig.sourceAuthorities.certificate.file"),disabled:e.isView},on:{selected:function(t){return e.handleSelectFile(t)}}})]],2),e._t("remove"),t("hr",{staticClass:"mt-20 mb-20"})],2)},i=[],a=n("da25"),o=n("bddd"),s=n("8b2c"),l=n("8e93"),c={props:{mode:{type:String,default:a["v"]},value:{type:Object,default:()=>{}}},components:{FileSelector:s["b"],LabeledInput:l["a"]},data(){return{chartValues:this.value}},watch:{"chartValues.registryName":"update","chartValues.certs":{deep:!0,handler:"update"}},computed:{isView(){return this.mode===a["C"]}},methods:{addCertificate(){this.chartValues.certs.push("")},handleSelectFile(e){Object(s["a"])("crt"),this.chartValues.certs.push(e)},removeCert(e){Object(o["h"])(this.chartValues.certs,e)},update(){this.$emit("update",this.value)}}},u=c,d=(n("3b52"),n("d802")),p=Object(d["a"])(u,r,i,!1,null,"5fa70040",null);t["default"]=p.exports},2357:function(e,t,n){var r=n("e972"),i=/^\s+/;function a(e){return e?e.slice(0,r(e)+1).replace(i,""):e}e.exports=a},2359:function(e,t,n){"use strict";var r=n("9ce4"),i=n("907c"),a=n("8535");const o="ns",s="project",l=o+"://",c=s+"://";var u=n("6d47");const d=e=>{const t=e["management/byId"](i["l"].SETTING,a["b"].UI_PERFORMANCE);let n={};if(null!==t&&void 0!==t&&t.value)try{n=JSON.parse(t.value)}catch(r){console.warn("ui-performance setting contains invalid data")}return Object.assign(a["a"],n||{})};function p(e,t,n){return t=f(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function f(e){var t=h(e,"string");return"symbol"===typeof t?t:String(t)}function h(e,t){if("object"!==typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!==typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}class m{isApplicable(e){return Array.isArray(e.namespaced)}isEnabled(e){var t;const n=e["currentProduct"];if("cluster"!==(null===n||void 0===n?void 0:n.inStore))return!1;if(null!==n&&void 0!==n&&n.showWorkspaceSwitcher)return!1;const r=d(e);return!(null===(t=r.forceNsFilterV2)||void 0===t||!t.enabled)}checkAndCreateParam(e){return this.isApplicable(e)?this.createParam(e.namespaced):""}createParam(e){if(!e||!e.length)return"";const t=e.map(e=>e.replace(l,"").replace(c,"")).join(",");return`${m.param}=${t}`}}p(m,"param","projectsornamespaces");var v=new m,g={data(){return{forceUpdateLiveAndDelayed:0}},computed:{...Object(r["a"])(["currentProduct","currentCluster","namespaceFilters"]),namespaceFilterRequired(){return this.__namespaceRequired&&!this.__validFilter},namespaceFilter(){return this.__namespaceRequired?this.__validFilter:""},__validFilter(){const e=this.namespaceFilters.length&&this.namespaceFilters.every(e=>e.startsWith(o)||e.startsWith(s));return e?this.namespaceFilters:null},__namespaceRequired(){return!!v.isEnabled(this.$store.getters)&&this.__areResourcesNamespaced},__areResourcesNamespaced(){return"cluster"===this.currentProduct.inStore&&(this.loadResources||[]).every(e=>{var t;const n=this.$store.getters["cluster/schemaFor"](e);return null===n||void 0===n||null===(t=n.attributes)||void 0===t?void 0:t.namespaced})}},watch:{async namespaceFilter(e){e&&(this.$options.name!==u["a"]&&this.$fetch&&await this.$fetch(),this.forceUpdateLiveAndDelayed=(new Date).getTime())}}};const b=4;t["a"]={mixins:[g],data(){const e=this.$store.getters["management/byId"](i["l"].SETTING,a["b"].UI_PERFORMANCE);let t={};if(e&&e.value)try{t=JSON.parse(e.value)}catch(n){console.warn("ui-performance setting contains invalid data")}else t=a["a"];return{perfConfig:t,init:!1,multipleResources:[],loadResources:[this.resource],hasManualRefresh:!1,watch:!0,isTooManyItemsToAutoUpdate:!1,force:!1,incremental:!1,fetchedResourceType:[]}},beforeDestroy(){this.init&&(this.$store.dispatch("resource-fetch/clearData"),this.fetchedResourceType.forEach(e=>{this.$store.dispatch(e.currStore+"/incrementLoadCounter",e.type)}))},computed:{...Object(r["a"])({refreshFlag:"resource-fetch/refreshFlag"}),rows(){const e=this.fetchedResourceType.find(e=>e.type===this.resource);return e?this.$store.getters[e.currStore+"/all"](this.resource):[]},loading(){return!this.rows.length&&this.$fetchState.pending}},watch:{refreshFlag(e){this.init&&e&&this.$fetch()}},methods:{$initializeFetchData(e,t=[],n){if(!this.init){const r=n||this.$store.getters["currentStore"]();this.__gatherResourceFetchData(e,t,r),this.watch||(this.force=!0),this.isTooManyItemsToAutoUpdate&&(this.hasManualRefresh=!0)}},$fetchType(e,t=[],n){var r;const i=n||this.$store.getters["currentStore"]();this.$initializeFetchData(e,t,i),this.fetchedResourceType.find(t=>t.type===e)||this.fetchedResourceType.push({type:e,currStore:i});let a=0;if(this.incremental){const t=this.__getCountForResources([e],this.namespaceFilter,i);a=Math.ceil(t/b)}const o={incremental:a,watch:this.watch,force:this.force,hasManualRefresh:this.hasManualRefresh},s=this.$store.getters[i+"/schemaFor"](e);return null!==s&&void 0!==s&&null!==(r=s.attributes)&&void 0!==r&&r.namespaced&&(o.namespaced=this.namespaceFilter),this.$store.dispatch(i+"/findAll",{type:e,opt:o})},__getCountForResources(e,t,n){const r=n||this.$store.getters["currentStore"]();return e.reduce((e,n)=>e+this.__getCountForResource(n,t,r),0)},__getCountForResource(e,t,n){var r,a,o;const s=null===(r=this.$store.getters[n+"/all"](i["c"])[0])||void 0===r?void 0:r.counts[""+e],l=t&&null!==s&&void 0!==s&&s.namespaces?null===s||void 0===s||null===(a=s.namespaces[t])||void 0===a?void 0:a.count:null===s||void 0===s||null===(o=s.summary)||void 0===o?void 0:o.count;return l||0},__gatherResourceFetchData(e,t,n){var r,i,a,o,s,l,c,u;this.init=!0;const d=null===(r=this.perfConfig)||void 0===r||null===(i=r.manualRefresh)||void 0===i?void 0:i.enabled,p=parseInt((null===(a=this.perfConfig)||void 0===a||null===(o=a.manualRefresh)||void 0===o?void 0:o.threshold)||"0",10),f=null===(s=this.perfConfig)||void 0===s||null===(l=s.incrementalLoading)||void 0===l?void 0:l.enabled,h=parseInt((null===(c=this.perfConfig)||void 0===c||null===(u=c.incrementalLoading)||void 0===u?void 0:u.threshold)||"0",10);this.multipleResources=t;let m=0,v=!0,g=!1,b=!1;const y=this.multipleResources.length?this.multipleResources:[e];m=this.__getCountForResources(y,this.namespaceFilter,n),d&&m>=p&&(v=!1,g=!0),b=f&&h>0&&m>=h,this.$store.dispatch("resource-fetch/updateIsTooManyItems",g),this.watch=v,this.isTooManyItemsToAutoUpdate=g,this.incremental=b}}}},2384:function(e,t,n){var r=n("5eaa");t=r(!1),t.push([e.i,".radio-group:focus{border:none;outline:none}.radio-group h3{position:relative}.radio-group.row{display:flex}.radio-group.row .radio-container{margin-right:10px}.radio-group .label{font-size:14px!important}",""]),e.exports=t},2419:function(e,t,n){var r=n("872c"),i=n("aa31"),a=n("7049");function o(e){var t=-1,n=null==e?0:e.length;this.__data__=new r;while(++te.value,mode:e.mode,"data-testid":"input-match-expression-operator-control-"+r},on:{input:e.update},model:{value:n.operator,callback:function(t){e.$set(n,"operator",t)},expression:"row.operator"}})],1),"Exists"===n.operator||"DoesNotExist"===n.operator?t("div",{staticClass:"no-value"},[t("label",{staticClass:"text-muted"},[e._v("…")])]):t("div",{attrs:{"data-testid":"input-match-expression-values-"+r}},[e.isView?t("div",[e._v(" "+e._s(n.values)+" ")]):t("input",{directives:[{name:"model",rawName:"v-model",value:n.values,expression:"row.values"}],attrs:{mode:e.mode,disabled:"Exists"===n.operator||"DoesNotExist"===n.operator,"data-testid":"input-match-expression-values-control-"+r},domProps:{value:n.values},on:{input:[function(t){t.target.composing||e.$set(n,"values",t.target.value)},e.update]}})]),e.showRemoveButton?t("div",{staticClass:"remove-container"},[e.isView?e._e():t("button",{staticClass:"btn role-link",style:{padding:"0px"},attrs:{type:"button",disabled:"view"===e.mode,"data-testid":"input-match-expression-remove-control-"+r},on:{click:function(t){return e.removeRule(n)}}},[t("t",{attrs:{k:"generic.remove"}})],1)]):e._e()])})),!e.isView&&e.showAddButton?t("div",{staticClass:"mt-20"},[t("button",{staticClass:"btn role-tertiary add",attrs:{type:"button","data-testid":"input-match-expression-add-rule"},on:{click:e.addRule}},[t("t",{attrs:{k:"workload.scheduling.affinity.matchExpressions.addRule"}})],1)]):e._e()],2)},c=[],u=n("47ab"),d=n("9ce4"),p=n("bddd"),f=n("e24b");function h(e,t){const n=Object.keys(e||{}),r=t||[];for(const i of n){const t=e[i],n=Object(p["e"])(r,{key:i,operator:"In"});n?Object(p["a"])(n.values,t):r.push({key:i,operator:"In",values:Object(p["g"])(t)?t:[t]})}return r}function m(e){const t={},n=[],r=[],i={};for(const a of e)"In"===a.operator&&(i[a.key]?Object(p["a"])(r,a.key):i[a.key]=!0);for(const a of e)"In"!==a.operator||1!==a.values.length||r.includes(a.key)?n.push(Object.assign({},a)):t[a.key]=a.values[0];return{matchLabels:t,matchExpressions:n}}var v=n("466b"),g={components:{Select:u["a"],LabeledSelect:v["a"]},props:{value:{type:[Array,Object],default:()=>[]},mode:{type:String,default:"edit"},type:{type:String,default:o["p"]},matchingSelectorDisplay:{type:Boolean,default:!1},initialEmptyRow:{type:Boolean,default:!1},showAddButton:{type:Boolean,default:!0},showRemoveButton:{type:Boolean,default:!0},showRemove:{type:Boolean,default:!0},keysSelectOptions:{type:Array,default:()=>[]}},data(){const e=this.$store.getters["i18n/t"],t=[{label:e("workload.scheduling.affinity.matchExpressions.in"),value:"In"},{label:e("workload.scheduling.affinity.matchExpressions.notIn"),value:"NotIn"},{label:e("workload.scheduling.affinity.matchExpressions.exists"),value:"Exists"},{label:e("workload.scheduling.affinity.matchExpressions.doesNotExist"),value:"DoesNotExist"}],n=[{label:e("workload.scheduling.affinity.matchExpressions.in"),value:"In"},{label:e("workload.scheduling.affinity.matchExpressions.notIn"),value:"NotIn"},{label:e("workload.scheduling.affinity.matchExpressions.exists"),value:"Exists"},{label:e("workload.scheduling.affinity.matchExpressions.doesNotExist"),value:"DoesNotExist"},{label:e("workload.scheduling.affinity.matchExpressions.lessThan"),value:"Lt"},{label:e("workload.scheduling.affinity.matchExpressions.greaterThan"),value:"Gt"}],r=this.type===o["p"]?n:t;let i;if(this.matchingSelectorDisplay){const e={matchFields:[],matchExpressions:[]};["matchFields","matchExpressions"].forEach(t=>{e[t]=this.parseRules(this.value[t],t)}),i=[...e.matchFields,...e.matchExpressions]}else Object(p["g"])(this.value)?(i=[...this.value],i=this.parseRules(i)):(i=h(this.value.matchLabels,this.value.matchExpressions),i=this.parseRules(i));if(!i.length&&this.initialEmptyRow&&!this.isView){const e={key:"",operator:"In",values:""};this.matchingSelectorDisplay&&(e.matching="matchExpressions"),i.push(e)}return{ops:r,rules:i,custom:[]}},computed:{isView(){return"view"===this.mode},node(){return o["p"]},pod(){return o["r"]},hasKeySelectOptions(){var e;return!(null===(e=this.keysSelectOptions)||void 0===e||!e.length)},matchingSelectOptions(){return[{label:this.t("workload.scheduling.affinity.matchExpressions.label"),value:"matchExpressions"},{label:this.t("workload.scheduling.affinity.matchFields.label"),value:"matchFields"}]},...Object(d["a"])({t:"i18n/t"})},methods:{parseRules(e,t){return null!==e&&void 0!==e&&e.length?e.map(e=>{const n=Object(f["e"])(e);return n.values&&"string"!==typeof n.values&&(n.values=n.values.join(", ")),t&&(n.matching=t),n}):[]},removeRule(e){Object(p["i"])(this.rules,e),this.update()},addRule(){const e={key:"",operator:"In",values:""};this.matchingSelectorDisplay&&(e.matching="matchExpressions"),this.rules.push(e)},update(){this.$nextTick(()=>{const e=this.rules.map(e=>{const t={key:e.key,operator:e.operator};this.matchingSelectorDisplay&&(t.matching=e.matching);let n=(e.values||"").trim();return"Exists"!==e.operator&&"DoesNotExist"!==e.operator||(n=null),null!==n&&(t.values=n.split(/\s*,\s*/)),t}).filter(e=>!!e);Object(p["g"])(this.value)||this.matchingSelectorDisplay?this.$emit("input",e):this.$emit("input",m(e))})}}},b=g,y=(n("9838"),n("d802")),_=Object(y["a"])(b,l,c,!1,null,"3512fedb",null),w=_.exports,E=function(){var e=this,t=e._self._c;return t("div",{staticClass:"info-box",class:{stepped:!!e.step}},[e.step?t("div",{staticClass:"step-number mb-10"},[t("h2",[e._v("Step "+e._s(e.step))])]):e._e(),e._t("default")],2)},x=[],O={props:{step:{type:Number,default:null}}},S=O,A=(n("2b9a"),Object(y["a"])(S,E,x,!1,null,"1c5683df",null)),N=A.exports,C=(n("90cd"),{props:{mode:{type:String,default:a["t"]},value:{type:Object,default:()=>{}}},components:{KeyValue:s["a"],MatchExpressions:w,InfoBox:N},data(){var e,t;const n=Object.assign({},this.value)||{},r=(null===(e=this.value)||void 0===e?void 0:e.matchExpressions)||[],i=(null===(t=this.value)||void 0===t?void 0:t.matchLabels)||{};return{POD:o["r"],namespaceSelector:n,matchExpressions:r,matchLabels:i}},watch:{value:{deep:!0,handler(e){const t=(null===e||void 0===e?void 0:e.matchExpressions)||[],n=(null===e||void 0===e?void 0:e.matchLabels)||{};this.$set(this,"matchExpressions",t),this.$set(this,"matchLabels",n)}},matchExpressions(e){this.$set(this.namespaceSelector,"matchExpressions",e),this.$emit("input",this.namespaceSelector)},matchLabels(e){this.$set(this.namespaceSelector,"matchLabels",e),this.$emit("input",this.namespaceSelector)}}}),k=C,T=Object(y["a"])(k,r,i,!1,null,null,null);t["default"]=T.exports},"2a46":function(e,t,n){var r=n("0e19"),i=n("ff00"),a=n("b4b4"),o="[object Object]",s=Function.prototype,l=Object.prototype,c=s.toString,u=l.hasOwnProperty,d=c.call(Object);function p(e){if(!a(e)||r(e)!=o)return!1;var t=i(e);if(null===t)return!0;var n=u.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&c.call(n)==d}e.exports=p},"2b9a":function(e,t,n){"use strict";n("e9a5")},"2be1":function(e,t,n){var r=n("5eaa");t=r(!1),t.push([e.i,".yaml-editor[data-v-93239522]{display:flex;flex-direction:column}.yaml-editor .fill[data-v-93239522]{flex:1}.yaml-editor[data-v-93239522] .code-mirror{position:relative}.yaml-editor[data-v-93239522] .code-mirror .CodeMirror,.yaml-editor[data-v-93239522] .code-mirror .CodeMirror .CodeMirror-gutters{background-color:var(--yaml-editor-bg)}.yaml-editor .diff-mode[data-v-93239522]{background-color:var(--diff-header-bg);padding:5px 5px;border-bottom-right-radius:0;border-bottom-left-radius:0}.yaml-editor .d2h-file-wrapper[data-v-93239522]{border-top-right-radius:0}",""]),e.exports=t},"2c3b":function(e,t,n){"use strict";n("ebaf")},"2c47":function(e,t){function n(e){const t=e.regex;return{name:"Diff",aliases:["patch"],contains:[{className:"meta",relevance:10,match:t.either(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/,/^\*\*\* +\d+,\d+ +\*\*\*\*$/,/^--- +\d+,\d+ +----$/)},{className:"comment",variants:[{begin:t.either(/Index: /,/^index/,/={3,}/,/^-{3}/,/^\*{3} /,/^\+{3}/,/^diff --git/),end:/$/},{match:/^\*{15}$/}]},{className:"addition",begin:/^\+/,end:/$/},{className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/,end:/$/}]}}e.exports=n},"2cb5":function(e,t,n){"use strict";function r(e){return E(e||"").split("-").map(e=>i(e)).join(" ")}function i(e){return e=e||"",e.substr(0,1).toUpperCase()+e.substr(1)}function a(e,t,n=" ",r=!1){if(e=""+e,e.length>=t)return e;const i=t-e.length+1,a=new Array(i).join(n).substr(0,i);return r?e+a:a+e}n.d(t,"b",(function(){return r})),n.d(t,"r",(function(){return i})),n.d(t,"q",(function(){return a})),n.d(t,"f",(function(){return s})),n.d(t,"g",(function(){return l})),n.d(t,"n",(function(){return h})),n.d(t,"h",(function(){return m})),n.d(t,"m",(function(){return v})),n.d(t,"o",(function(){return g})),n.d(t,"i",(function(){return b})),n.d(t,"d",(function(){return E})),n.d(t,"a",(function(){return x})),n.d(t,"c",(function(){return O})),n.d(t,"k",(function(){return S})),n.d(t,"e",(function(){return A})),n.d(t,"l",(function(){return N})),n.d(t,"p",(function(){return k})),n.d(t,"j",(function(){return T}));const o={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};function s(e){return String(e).replace(/[&<>"']/g,e=>o[e])}function l(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function c(e){e=Math.max(0,e||1);const t=[];let n;if(window.crypto&&window.crypto.getRandomValues){const r=new Uint32Array(e);for(window.crypto.getRandomValues(r),n=0;nt[e%t.length]).join(""):null}function m(e,t=2){return e<1&&t>=2?Math.round(100*e)/100+"%":e<10&&t>=1?Math.round(10*e)/10+"%":Math.round(e)+"%"}function v(e){return e.match(/.*[^aeiou]y$/i)?e.substr(0,e.length-1)+"ies":e.endsWith("ics")?e:e.endsWith("s")?e+"es":e+"s"}function g(e,t,n){return e.reduce((r,i,a)=>(a>=5||(r+=`${s(i)}`,a===e.length-1?r+=t:r+=a===e.length-2?n("generic.and"):n("generic.comma")),r),"")}function b(e,t=2,n=" ",r=null){e="string"===typeof e?e.split(/\n/):e||[];const i=new Array(t+1).join(n),a=e.map(e=>{let t="",n=e;if(r){const i=e.match(r);i&&(t=i[i.length-1],n=e.substr(i[0].length))}return`${t}${i}${n}`}),o=a.join("\n");return o}const y=/([a-z\d])([A-Z])/g;function _(e){return e.replace(y,"$1_$2").toLowerCase()}const w=/[ _]/g;function E(e){return _(e).replace(w,"-")}function x(e){return e=e||"",!e.match(/[^\r\n\t\x20-\x7F]/)}function O(e,t){return"float"===t?e=parseFloat(e)||null:"int"===t?(e=parseInt(e,10),isNaN(e)&&(e=null)):"boolean"===t&&("true"===e.toLowerCase()?e=!0:"false"===e.toLowerCase()&&(e=!1)),e}function S(e,t=[]){return t.some(t=>{const n=e||"",r=A(t);return n.match(r)})}function A(e,t=!0){return"string"===typeof e?t?new RegExp(`^${l(e)}$`,"i"):new RegExp(""+l(e),"i"):e}function N(e){return s(e||"").replace(/(\r\n|\r|\n)/g,"
\n")}const C=/[^."']+|"([^"]*)"|'([^']*)'/g;function k(e){return e.includes('"')||e.includes("'")?e.match(C).map(e=>e.replace(/['"]/g,"")):e.split(".")}function T(e){let t="";for(const n of e)n.includes(".")?t+=`."${n}"`:t+="."+n;return t.startsWith(".")&&(t=t.substr(1)),t}},"2cbd":function(e,t){function n(e,t){if(("constructor"!==t||"function"!==typeof e[t])&&"__proto__"!=t)return e[t]}e.exports=n},"2d03":function(e,t,n){var r=n("5eaa");t=r(!1),t.push([e.i,"::v-deep P{font-size:medium;line-height:normal;font-weight:400;letter-spacing:normal;font-style:normal}.markdown blockquote{color:#656d76;border-left:.25em solid #d0d7de;padding:0 1em;margin-bottom:16px}.markdown table{border-collapse:collapse}.markdown TH{text-align:left;border:1px solid #e3e7eb}.markdown table tr th{font-weight:700;text-align:left;margin:0;padding:6px 13px}.markdown table tr td{text-align:left;margin:0;padding:6px 13px;border:1px solid #e3e7eb}.markdown table tr td :first-child,.markdown table tr th :first-child{margin-top:0}.markdown table tr td :last-child,.markdown table tr th :last-child{margin-bottom:0}",""]),e.exports=t},"2da2":function(e,t,n){var r=n("8148");r.Template=n("340e").Template,r.template=r.Template,e.exports=r},"2e63":function(e,t){function n(e,t){var n=-1,r=null==e?0:e.length;while(++nnew r(e,t).set.map(e=>e.map(e=>e.value).join(" ").trim().split(" "));e.exports=i},"2ed5":function(e,t,n){var r=n("73bd"),i=n("c02d");function a(e,t,n,a){var o=!n;n||(n={});var s=-1,l=t.length;while(++s/}]},s={scope:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]},l=e.inherit(e.APOS_STRING_MODE,{illegal:null}),c=e.inherit(e.QUOTE_STRING_MODE,{illegal:null,contains:e.QUOTE_STRING_MODE.contains.concat(s)}),u=e.END_SAME_AS_BEGIN({begin:/<<<[ \t]*(\w+)\n/,end:/[ \t]*(\w+)\b/,contains:e.QUOTE_STRING_MODE.contains.concat(s)}),d="[ \t\n]",p={scope:"string",variants:[c,l,u]},f={scope:"number",variants:[{begin:"\\b0[bB][01]+(?:_[01]+)*\\b"},{begin:"\\b0[oO][0-7]+(?:_[0-7]+)*\\b"},{begin:"\\b0[xX][\\da-fA-F]+(?:_[\\da-fA-F]+)*\\b"},{begin:"(?:\\b\\d+(?:_\\d+)*(\\.(?:\\d+(?:_\\d+)*))?|\\B\\.\\d+)(?:[eE][+-]?\\d+)?"}],relevance:0},h=["false","null","true"],m=["__CLASS__","__DIR__","__FILE__","__FUNCTION__","__COMPILER_HALT_OFFSET__","__LINE__","__METHOD__","__NAMESPACE__","__TRAIT__","die","echo","exit","include","include_once","print","require","require_once","array","abstract","and","as","binary","bool","boolean","break","callable","case","catch","class","clone","const","continue","declare","default","do","double","else","elseif","empty","enddeclare","endfor","endforeach","endif","endswitch","endwhile","enum","eval","extends","final","finally","float","for","foreach","from","global","goto","if","implements","instanceof","insteadof","int","integer","interface","isset","iterable","list","match|0","mixed","new","never","object","or","private","protected","public","readonly","real","return","string","switch","throw","trait","try","unset","use","var","void","while","xor","yield"],v=["Error|0","AppendIterator","ArgumentCountError","ArithmeticError","ArrayIterator","ArrayObject","AssertionError","BadFunctionCallException","BadMethodCallException","CachingIterator","CallbackFilterIterator","CompileError","Countable","DirectoryIterator","DivisionByZeroError","DomainException","EmptyIterator","ErrorException","Exception","FilesystemIterator","FilterIterator","GlobIterator","InfiniteIterator","InvalidArgumentException","IteratorIterator","LengthException","LimitIterator","LogicException","MultipleIterator","NoRewindIterator","OutOfBoundsException","OutOfRangeException","OuterIterator","OverflowException","ParentIterator","ParseError","RangeException","RecursiveArrayIterator","RecursiveCachingIterator","RecursiveCallbackFilterIterator","RecursiveDirectoryIterator","RecursiveFilterIterator","RecursiveIterator","RecursiveIteratorIterator","RecursiveRegexIterator","RecursiveTreeIterator","RegexIterator","RuntimeException","SeekableIterator","SplDoublyLinkedList","SplFileInfo","SplFileObject","SplFixedArray","SplHeap","SplMaxHeap","SplMinHeap","SplObjectStorage","SplObserver","SplPriorityQueue","SplQueue","SplStack","SplSubject","SplTempFileObject","TypeError","UnderflowException","UnexpectedValueException","UnhandledMatchError","ArrayAccess","BackedEnum","Closure","Fiber","Generator","Iterator","IteratorAggregate","Serializable","Stringable","Throwable","Traversable","UnitEnum","WeakReference","WeakMap","Directory","__PHP_Incomplete_Class","parent","php_user_filter","self","static","stdClass"],g=e=>{const t=[];return e.forEach(e=>{t.push(e),e.toLowerCase()===e?t.push(e.toUpperCase()):t.push(e.toLowerCase())}),t},b={keyword:m,literal:g(h),built_in:v},y=e=>e.map(e=>e.replace(/\|\d+$/,"")),_={variants:[{match:[/new/,t.concat(d,"+"),t.concat("(?!",y(v).join("\\b|"),"\\b)"),i],scope:{1:"keyword",4:"title.class"}}]},w=t.concat(r,"\\b(?!\\()"),E={variants:[{match:[t.concat(/::/,t.lookahead(/(?!class\b)/)),w],scope:{2:"variable.constant"}},{match:[/::/,/class/],scope:{2:"variable.language"}},{match:[i,t.concat(/::/,t.lookahead(/(?!class\b)/)),w],scope:{1:"title.class",3:"variable.constant"}},{match:[i,t.concat("::",t.lookahead(/(?!class\b)/))],scope:{1:"title.class"}},{match:[i,/::/,/class/],scope:{1:"title.class",3:"variable.language"}}]},x={scope:"attr",match:t.concat(r,t.lookahead(":"),t.lookahead(/(?!::)/))},O={relevance:0,begin:/\(/,end:/\)/,keywords:b,contains:[x,a,E,e.C_BLOCK_COMMENT_MODE,p,f,_]},S={relevance:0,match:[/\b/,t.concat("(?!fn\\b|function\\b|",y(m).join("\\b|"),"|",y(v).join("\\b|"),"\\b)"),r,t.concat(d,"*"),t.lookahead(/(?=\()/)],scope:{3:"title.function.invoke"},contains:[O]};O.contains.push(S);const A=[x,E,e.C_BLOCK_COMMENT_MODE,p,f,_],N={begin:t.concat(/#\[\s*/,i),beginScope:"meta",end:/]/,endScope:"meta",keywords:{literal:h,keyword:["new","array"]},contains:[{begin:/\[/,end:/]/,keywords:{literal:h,keyword:["new","array"]},contains:["self",...A]},...A,{scope:"meta",match:i}]};return{case_insensitive:!1,keywords:b,contains:[N,e.HASH_COMMENT_MODE,e.COMMENT("//","$"),e.COMMENT("/\\*","\\*/",{contains:[{scope:"doctag",match:"@[A-Za-z]+"}]}),{match:/__halt_compiler\(\);/,keywords:"__halt_compiler",starts:{scope:"comment",end:e.MATCH_NOTHING_RE,contains:[{match:/\?>/,scope:"meta",endsParent:!0}]}},o,{scope:"variable.language",match:/\$this\b/},a,S,E,{match:[/const/,/\s/,r],scope:{1:"keyword",3:"variable.constant"}},_,{scope:"function",relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0,illegal:"[$%\\[]",contains:[{beginKeywords:"use"},e.UNDERSCORE_TITLE_MODE,{begin:"=>",endsParent:!0},{scope:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0,keywords:b,contains:["self",a,E,e.C_BLOCK_COMMENT_MODE,p,f]}]},{scope:"class",variants:[{beginKeywords:"enum",illegal:/[($"]/},{beginKeywords:"class interface trait",illegal:/[:($"]/}],relevance:0,end:/\{/,excludeEnd:!0,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";",illegal:/[.']/,contains:[e.inherit(e.UNDERSCORE_TITLE_MODE,{scope:"title.class"})]},{beginKeywords:"use",relevance:0,end:";",contains:[{match:/\b(as|const|function)\b/,scope:"keyword"},e.UNDERSCORE_TITLE_MODE]},p,f]}}e.exports=n},3159:function(e,t,n){"use strict";n("f172")},3171:function(e,t,n){const r=n("579f"),i=(e,t,n=!1)=>{if(e instanceof r)return e;try{return new r(e,t)}catch(i){if(!n)return null;throw i}};e.exports=i},3213:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DiffStyleType=t.LineMatchingType=t.OutputFormatType=t.LineType=void 0,function(e){e["INSERT"]="insert",e["DELETE"]="delete",e["CONTEXT"]="context"}(t.LineType||(t.LineType={})),t.OutputFormatType={LINE_BY_LINE:"line-by-line",SIDE_BY_SIDE:"side-by-side"},t.LineMatchingType={LINES:"lines",WORDS:"words",NONE:"none"},t.DiffStyleType={WORD:"word",CHAR:"char"}},"330a":function(e,t,n){var r=n("e2e2"),i=n("9243"),a=n("6efc"),o=n("c316"),s=n("f72d"),l=n("dda8"),c=n("09b2"),u=n("41dd"),d="[object Map]",p="[object Set]",f=Object.prototype,h=f.hasOwnProperty;function m(e){if(null==e)return!0;if(s(e)&&(o(e)||"string"==typeof e||"function"==typeof e.splice||l(e)||u(e)||a(e)))return!e.length;var t=i(e);if(t==d||t==p)return!e.size;if(c(e))return!r(e).length;for(var n in e)if(h.call(e,n))return!1;return!0}e.exports=m},3336:function(e,t,n){var r=n("1ec9"),i=n("6a68"),a=n("51db"),o=n("71bd"),s=n("b506"),l=n("cc7f"),c=n("2cbd");function u(e,t,n,d,p){e!==t&&a(t,(function(a,l){if(p||(p=new r),s(a))o(e,t,l,n,u,d,p);else{var f=d?d(c(e,l),a,l+"",e,t,p):void 0;void 0===f&&(f=a),i(e,l,f)}}),l)}e.exports=u},"340e":function(e,t,n){(function(e){function t(e,t,n){var r;return t&&"object"==typeof t&&(void 0!==t[e]?r=t[e]:n&&t.get&&"function"==typeof t.get&&(r=t.get(e))),r}function n(e,t,n,r,i,a){function o(){}function s(){}var l;o.prototype=e,s.prototype=e.subs;var c=new o;for(l in c.subs=new s,c.subsText={},c.buf="",r=r||{},c.stackSubs=r,c.subsText=a,t)r[l]||(r[l]=t[l]);for(l in r)c.subs[l]=r[l];for(l in i=i||{},c.stackPartials=i,n)i[l]||(i[l]=n[l]);for(l in i)c.partials[l]=i[l];return c}e.Template=function(e,t,n,r){e=e||{},this.r=e.code||this.r,this.c=n,this.options=r||{},this.text=t||"",this.partials=e.partials||{},this.subs=e.subs||{},this.buf=""},e.Template.prototype={r:function(e,t,n){return""},v:u,t:c,render:function(e,t,n){return this.ri([e],t||{},n)},ri:function(e,t,n){return this.r(e,t,n)},ep:function(e,t){var r=this.partials[e],i=t[r.name];if(r.instance&&r.base==i)return r.instance;if("string"==typeof i){if(!this.c)throw new Error("No compiler available.");i=this.c.compile(i,this.options)}if(!i)return null;if(this.partials[e].base=i,r.subs){for(key in t.stackText||(t.stackText={}),r.subs)t.stackText[key]||(t.stackText[key]=void 0!==this.activeSub&&t.stackText[this.activeSub]?t.stackText[this.activeSub]:this.text);i=n(i,r.subs,r.partials,this.stackSubs,this.stackPartials,t.stackText)}return this.partials[e].instance=i,i},rp:function(e,t,n,r){var i=this.ep(e,n);return i?i.ri(t,n,r):""},rs:function(e,t,n){var r=e[e.length-1];if(d(r))for(var i=0;i=0;c--)if(o=n[c],a=t(e,o,l),void 0!==a){s=!0;break}return s?(i||"function"!=typeof a||(a=this.mv(a,n,r)),a):!i&&""},ls:function(e,t,n,r,i){var a=this.options.delimiters;return this.options.delimiters=i,this.b(this.ct(c(e.call(t,r)),t,n)),this.options.delimiters=a,!1},ct:function(e,t,n){if(this.options.disableLambda)throw new Error("Lambda features disabled.");return this.c.compile(e,this.options).render(t,n)},b:function(e){this.buf+=e},fl:function(){var e=this.buf;return this.buf="",e},ms:function(e,t,n,r,i,a,o){var s,l=t[t.length-1],c=e.call(l);return"function"==typeof c?!!r||(s=this.activeSub&&this.subsText&&this.subsText[this.activeSub]?this.subsText[this.activeSub]:this.text,this.ls(c,l,n,s.substring(i,a),o)):c},mv:function(e,t,n){var r=t[t.length-1],i=e.call(r);return"function"==typeof i?this.ct(c(i.call(r)),r,n):i},sub:function(e,t,n,r){var i=this.subs[e];i&&(this.activeSub=e,i(t,n,this,r),this.activeSub=!1)}};var r=/&/g,i=//g,o=/\'/g,s=/\"/g,l=/[&<>\"\']/;function c(e){return String(null===e||void 0===e?"":e)}function u(e){return e=c(e),l.test(e)?e.replace(r,"&").replace(i,"<").replace(a,">").replace(o,"'").replace(s,"""):e}var d=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}})(t)},"356f":function(e,t,n){var r=n("2589"),i=n("cfe4");function a(e,t){return null!=e&&i(e,t,r)}e.exports=a},3584:function(e,t,n){var r=n("06a5"),i=n("b4b4");function a(e,t,n,o,s){return e===t||(null==e||null==t||!i(e)&&!i(t)?e!==e&&t!==t:r(e,t,n,o,a,s))}e.exports=a},"35bb":function(e,t,n){var r=n("8045"),i=n("494f"),a=n("4fab"),o=a&&a.isMap,s=o?i(o):r;e.exports=s},"35d9":function(e,t,n){var r=n("f72d"),i=n("b4b4");function a(e){return i(e)&&r(e)}e.exports=a},3600:function(e,t,n){const r=n("3c28"),i=(e,t,n)=>r(e,t,n)<0;e.exports=i},"360f":function(e,t,n){const r=n("3c28"),i=(e,t,n)=>r(e,t,n)>0;e.exports=i},3675:function(e,t,n){"use strict";var r=function(){var e=this,t=e._self._c;return e.$fetchState.pending?t("Loading"):t("div",[t("div",{staticClass:"row mb-10"},[t("div",{staticClass:"col span-6"},[t("h4",[e._v(" "+e._s(e.t("kubewarden.policyServerConfig.securityContexts.seLinuxOptions.title"))+" ")]),t("LabeledInput",{attrs:{"data-testid":`ps-config-security-context-${e.configType}-seLinuxOptions-level-input`,mode:e.mode,disabled:e.disabled,label:e.t("kubewarden.policyServerConfig.securityContexts.seLinuxOptions.level.label"),placeholder:e.t("kubewarden.policyServerConfig.securityContexts.seLinuxOptions.level.placeholder")},on:{input:function(t){return e.updateData(t)}},model:{value:e.level,callback:function(t){e.level=t},expression:"level"}})],1)]),t("div",{staticClass:"row mb-10"},[t("div",{staticClass:"col span-6"},[t("LabeledInput",{attrs:{"data-testid":`ps-config-security-context-${e.configType}-seLinuxOptions-role-input`,mode:e.mode,disabled:e.disabled,label:e.t("kubewarden.policyServerConfig.securityContexts.seLinuxOptions.role.label"),placeholder:e.t("kubewarden.policyServerConfig.securityContexts.seLinuxOptions.role.placeholder")},on:{input:function(t){return e.updateData(t)}},model:{value:e.role,callback:function(t){e.role=t},expression:"role"}})],1)]),t("div",{staticClass:"row mb-10"},[t("div",{staticClass:"col span-6"},[t("LabeledInput",{attrs:{"data-testid":`ps-config-security-context-${e.configType}-seLinuxOptions-type-input`,mode:e.mode,disabled:e.disabled,label:e.t("kubewarden.policyServerConfig.securityContexts.seLinuxOptions.type.label"),placeholder:e.t("kubewarden.policyServerConfig.securityContexts.seLinuxOptions.type.placeholder")},on:{input:function(t){return e.updateData(t)}},model:{value:e.type,callback:function(t){e.type=t},expression:"type"}})],1)]),t("div",{staticClass:"row mb-40"},[t("div",{staticClass:"col span-6"},[t("LabeledInput",{attrs:{"data-testid":`ps-config-security-context-${e.configType}-seLinuxOptions-user-input`,mode:e.mode,disabled:e.disabled,label:e.t("kubewarden.policyServerConfig.securityContexts.seLinuxOptions.user.label"),placeholder:e.t("kubewarden.policyServerConfig.securityContexts.seLinuxOptions.user.placeholder")},on:{input:function(t){return e.updateData(t)}},model:{value:e.user,callback:function(t){e.user=t},expression:"user"}})],1)])])},i=[],a=n("da25"),o=n("15ca"),s=n("8e93"),l={props:{mode:{type:String,default:a["t"]},value:{type:Object,default:()=>{}},configType:{type:String,default:"container"},disabled:{type:Boolean,default:!1}},components:{Loading:o["a"],LabeledInput:s["a"]},async fetch(){},data(){var e,t,n,r;return{level:null===(e=this.value)||void 0===e?void 0:e.level,role:null===(t=this.value)||void 0===t?void 0:t.role,type:null===(n=this.value)||void 0===n?void 0:n.type,user:null===(r=this.value)||void 0===r?void 0:r.user}},methods:{updateData(){this.$emit("update-se-linux-options",{level:this.level,role:this.role,type:this.type,user:this.user})}}},c=l,u=n("d802"),d=Object(u["a"])(c,r,i,!1,null,null,null);t["a"]=d.exports},3819:function(e,t,n){var r=n("bf10"),i=n("201b"),a=r(i,"Set");e.exports=a},"38de":function(e,t,n){"use strict";var r=function(){var e=this,t=e._self._c;return t("section",{directives:[{name:"show",rawName:"v-show",value:e.active,expression:"active"}],attrs:{id:e.name,"aria-hidden":!e.active,role:"tabpanel"}},[e.shouldShowHeader?t("div",{staticClass:"tab-header"},[t("h2",[e._v(" "+e._s(e.labelDisplay)+" "),e.tooltip?t("i",{directives:[{name:"clean-tooltip",rawName:"v-clean-tooltip",value:e.tooltip,expression:"tooltip"}],staticClass:"icon icon-info icon-lg"}):e._e()]),e._t("tab-header-right")],2):e._e(),e._t("default",null,null,{active:e.active})],2)},i=[],a={inject:["addTab","removeTab","sideTabs"],props:{label:{default:null,type:String},labelKey:{default:null,type:String},name:{required:!0,type:String},tooltip:{default:null,type:[String,Object]},weight:{default:0,required:!1,type:Number},showHeader:{type:Boolean,default:null},displayAlertIcon:{type:Boolean,default:null},error:{type:Boolean,default:!1},badge:{default:0,required:!1,type:Number}},data(){return{active:null}},computed:{labelDisplay(){return this.labelKey?this.$store.getters["i18n/t"](this.labelKey):this.label?this.label:this.name},shouldShowHeader(){return null!==this.showHeader?this.showHeader:this.sideTabs||!1}},watch:{active(e){e&&this.$emit("active")}},mounted(){this.addTab(this)},beforeDestroy(){this.removeTab(this)}},o=a,s=(n("94fd"),n("d802")),l=Object(s["a"])(o,r,i,!1,null,"667bdd63",null);t["a"]=l.exports},3973:function(e,t,n){"use strict";n("4914")},"39dd":function(e,t,n){const r=n("f58d"),i=(e,t)=>e.sort((e,n)=>r(e,n,t));e.exports=i},"39f2":function(e,t,n){var r=n("73b4");function i(e,t){var n=null==e?0:e.length;return!!n&&r(e,t,0)>-1}e.exports=i},"3ad3":function(e,t,n){var r=n("4c0b"),i=r(Object.keys,Object);e.exports=i},"3b2d":function(e,t,n){const r=n("3171"),i=(e,t)=>{const n=r(e,t);return n&&n.prerelease.length?n.prerelease:null};e.exports=i},"3b52":function(e,t,n){"use strict";n("8212")},"3b54":function(e,t,n){var r=n("c364"),i=n("cb86"),a=n("c68c");function o(e,t,n){var o=-1,s=t.length,l={};while(++onew r(e,n).compare(new r(t,n));e.exports=i},"3c82":function(e,t,n){"use strict";n.r(t);var r=function(){var e=this,t=e._self._c;return t("div",{staticClass:"row"},[t("div",{staticClass:"col span-12"},[t("h3",{attrs:{"data-testid":"ps-config-source-authorities-title"}},[e._v(" "+e._s(e.t("kubewarden.policyServerConfig.sourceAuthorities.title"))+" ")]),e._l(e.rows,(function(n,r){return[t("Authority",{key:r,ref:"authority",refInFor:!0,attrs:{mode:e.mode},on:{update:function(t){return e.updateAuthority(t,r)}},scopedSlots:e._u([{key:"remove",fn:function(){return[t("button",{staticClass:"btn role-link remove btn-sm",attrs:{"data-testid":"ps-config-authority-remove-button-"+r,type:"button",disabled:e.isView},on:{click:function(t){return e.removeRegistry(r)}}},[t("i",{staticClass:"icon icon-2x icon-x"})])]},proxy:!0}],null,!0),model:{value:e.rows[r],callback:function(t){e.$set(e.rows,r,t)},expression:"rows[index]"}})]})),t("button",{staticClass:"btn role-tertiary add",attrs:{"data-testid":"ps-config-source-authorities-add-button",type:"button",disabled:e.isView},on:{click:function(t){return e.addRegistry()}}},[e._v(" "+e._s(e.t("kubewarden.policyServerConfig.sourceAuthorities.add"))+" ")])],2)])},i=[],a=n("da25"),o=n("bddd"),s=n("e24b"),l=n("22a0"),c={props:{mode:{type:String,default:a["C"]},value:{type:[Array,Object],default:()=>({})}},components:{Authority:l["default"]},fetch(){if(this.value)for(const[e,t]of Object.entries(this.value))this.rows.push({registryName:e,certs:t});else this.value={}},data(){return{rows:[]}},computed:{isView(){return this.mode===a["C"]}},methods:{addRegistry(){this.rows.push({registryName:"",certs:[]})},deleteAuthority(e){if(!Object(s["i"])(this.value)){const t=Object.keys(this.value)[e];this.$delete(this.value,[t])}},removeRegistry(e){Object(o["h"])(this.rows,e),this.deleteAuthority(e)},updateAuthority(e,t){const{registryName:n,certs:r}=e;Object(s["i"])(this.value)||this.deleteAuthority(t),this.$set(this.value,[n],r||[]),this.$emit("update",this.value)}}},u=c,d=(n("6522"),n("d802")),p=Object(d["a"])(u,r,i,!1,null,"189c4c6b",null);t["default"]=p.exports},"3ca3":function(e,t,n){"use strict";n.r(t),n.d(t,"DEFAULT_POLICY_SERVER",(function(){return c})),n.d(t,"default",(function(){return u}));var r=n("330a"),i=n.n(r),a=n("907c"),o=n("90cd"),s=n("d892");class l extends s["d"]{get _availableActions(){const e=super._availableActions,t={action:"openLogs",enabled:!0,icon:"icon icon-fw icon-chevron-right",label:"View Logs"};return e.unshift(t),e}get allRelatedPolicies(){return async()=>{const e=[o["f"].ADMISSION_POLICY,o["f"].CLUSTER_ADMISSION_POLICY],t=e.map(e=>this.$dispatch("cluster/findAll",{type:e,opt:{force:!0}},{root:!0}));try{const e=await Promise.all(t);if(e)return e.flatMap(e=>e).filter(e=>{var t,n;return(null===(t=e.spec)||void 0===t?void 0:t.policyServer)===(null===(n=this.metadata)||void 0===n?void 0:n.name)})}catch(n){console.warn("Error fetching related policies: "+n)}}}get policyGauges(){return async()=>{const e={},t=["Active","Pending"],n=await this.allRelatedPolicies();if(!n)return e;for(const r of t.values())e[r]||(e[r]={color:Object(s["b"])(r).replace("text-",""),count:0});return null===n||void 0===n||n.map(t=>{const{stateDisplay:n}=t;e[n].count++}),e}}get tracesGauges(){return e=>{const t={};return i()(e)||null===e||void 0===e||e.flatMap(e=>{var n;null===e||void 0===e||null===(n=e.traces)||void 0===n||n.map(e=>{const{allowed:n,mode:r,mutated:i}=e;"monitor"!==r&&(t["Denied"]&&!n?t["Denied"].count++:n?t["Mutated"]&&i?t["Mutated"].count++:i&&n&&(t["Mutated"]={color:Object(s["c"])("mutated"),count:1}):t["Denied"]={color:Object(s["c"])("denied"),count:1})})}),t}}get matchingDeployment(){return async()=>{try{var e;return await this.$dispatch("cluster/findMatching",{type:a["H"].DEPLOYMENT,selector:"kubewarden/policy-server="+(null===(e=this.metadata)||void 0===e?void 0:e.name)},{root:!0})}catch(t){console.warn("Error matching policy-server to deployment",t)}}}get matchingPods(){return async()=>{try{var e;return await this.$dispatch("cluster/findMatching",{type:a["r"],selector:"app=kubewarden-policy-server-"+(null===(e=this.metadata)||void 0===e?void 0:e.name)},{root:!0})}catch(t){console.warn("Error matching policy-server to pod",t)}}}async openLogs(){try{const e=await this.matchingPods();i()(e)||this.$dispatch("wm/open",{id:this.id+"-logs",label:this.nameDisplay,icon:"file",component:"ContainerLogs",attrs:{pod:e[0]}},{root:!0})}catch(e){console.warn("Error dispatching console for pod",e)}}}const c={apiVersion:"policies.kubewarden.io/v1alpha2",kind:"PolicyServer",metadata:{annotations:{},labels:{},name:""},spec:{annotations:{},env:[{name:"KUBEWARDEN_LOG_FMT",value:"otlp"},{name:"KUBEWARDEN_LOG_LEVEL",value:"info"}],image:"ghcr.io/kubewarden/policy-server:latest",replicas:1,serviceAccountName:"",verificationConfig:"",insecureSources:[],sourceAuthorities:{}}};class u extends l{}},"3daa":function(e,t,n){var r=n("5eaa");t=r(!1),t.push([e.i,".vertical[data-v-01996ade]{flex-direction:column;width:100%}.subtle[data-v-01996ade]{opacity:.7}.message-icon[data-v-01996ade]{display:flex;align-items:center;justify-content:center;flex:1;flex-direction:column}.message-icon>I[data-v-01996ade]{font-size:64px;margin-bottom:20px}.message-icon>I.info[data-v-01996ade]{color:var(--primary)}.message-icon>I.error[data-v-01996ade]{color:var(--error)}.message-icon>I.warning[data-v-01996ade]{color:var(--warning)}.message-icon>I.success[data-v-01996ade]{color:var(--success)}.message-icon>.message[data-v-01996ade]{font-size:20px;margin-bottom:40px;max-width:60%;text-align:center;line-height:30px}",""]),e.exports=t},"3db8":function(e,t,n){"use strict";n.r(t);var r=function(){var e=this,t=e._self._c;return t("div",[t("div",{staticClass:"row"},[t("Banner",{directives:[{name:"clean-html",rawName:"v-clean-html",value:e.t("kubewarden.policyServerConfig.verification.description",{},!0),expression:"t('kubewarden.policyServerConfig.verification.description', {}, true)"}],staticClass:"type-banner mb-20 mt-0",attrs:{"data-testid":"ps-config-verification-banner",color:"info"}})],1),t("div",{staticClass:"row"},[t("div",{staticClass:"col span-6"},[t("LabeledSelect",{attrs:{"data-testid":"ps-config-verification-select",mode:e.mode,label:e.t("kubewarden.policyServerConfig.verification.label"),options:e.options},model:{value:e.vConfig,callback:function(t){e.vConfig=t},expression:"vConfig"}})],1)])])},i=[],a=n("330a"),o=n.n(a),s=n("da25"),l=n("6418"),c=n("466b"),u={props:{mode:{type:String,default:s["t"]},value:{type:Object,default:null},configMaps:{type:Array,required:!0}},components:{Banner:l["a"],LabeledSelect:c["a"]},data(){return{vConfig:this.value.verificationConfig}},watch:{vConfig(e){this.$emit("update-vconfig","verificationConfig",e)}},computed:{options(){return o()(this.configMaps)?[]:this.configMaps.map(e=>e.id)}}},d=u,p=n("d802"),f=Object(p["a"])(d,r,i,!1,null,null,null);t["default"]=f.exports},"3ddb":function(e,t){function n(e){const t=["true","false","iota","nil"],n=["append","cap","close","complex","copy","imag","len","make","new","panic","print","println","real","recover","delete"],r=["bool","byte","complex64","complex128","error","float32","float64","int8","int16","int32","int64","string","uint8","uint16","uint32","uint64","int","uint","uintptr","rune"],i=["break","case","chan","const","continue","default","defer","else","fallthrough","for","func","go","goto","if","import","interface","map","package","range","return","select","struct","switch","type","var"],a={keyword:i,type:r,literal:t,built_in:n};return{name:"Go",aliases:["golang"],keywords:a,illegal:"e.length)&&(t=e.length);for(var n=0,r=new Array(t);n1?n-1:0),i=1;i/gm),X=v(/\${[\w\W]*}/gm),Z=v(/^data-[\-\w.\u00B7-\uFFFF]/),J=v(/^aria-[\-\w]+$/),Q=v(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),ee=v(/^(?:\w+script|data):/i),te=v(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),ne=v(/^html$/i),re=function(){return"undefined"===typeof window?null:window},ie=function(t,n){if("object"!==e(t)||"function"!==typeof t.createPolicy)return null;var r=null,i="data-tt-policy-suffix";n.currentScript&&n.currentScript.hasAttribute(i)&&(r=n.currentScript.getAttribute(i));var a="dompurify"+(r?"#"+r:"");try{return t.createPolicy(a,{createHTML:function(e){return e},createScriptURL:function(e){return e}})}catch(o){return console.warn("TrustedTypes policy "+a+" could not be created."),null}};function ae(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:re(),n=function(e){return ae(e)};if(n.version="2.4.5",n.removed=[],!t||!t.document||9!==t.document.nodeType)return n.isSupported=!1,n;var r=t.document,a=t.document,o=t.DocumentFragment,s=t.HTMLTemplateElement,l=t.Node,c=t.Element,u=t.NodeFilter,d=t.NamedNodeMap,p=void 0===d?t.NamedNodeMap||t.MozNamedAttrMap:d,f=t.HTMLFormElement,h=t.DOMParser,v=t.trustedTypes,g=c.prototype,b=P(g,"cloneNode"),y=P(g,"nextSibling"),_=P(g,"childNodes"),L=P(g,"parentNode");if("function"===typeof s){var I=a.createElement("template");I.content&&I.content.ownerDocument&&(a=I.content.ownerDocument)}var oe=ie(v,r),se=oe?oe.createHTML(""):"",le=a,ce=le.implementation,ue=le.createNodeIterator,de=le.createDocumentFragment,pe=le.getElementsByTagName,fe=r.importNode,he={};try{he=M(a).documentMode?a.documentMode:{}}catch(It){}var me={};n.isSupported="function"===typeof L&&ce&&"undefined"!==typeof ce.createHTMLDocument&&9!==he;var ve,ge,be=Y,ye=W,_e=X,we=Z,Ee=J,xe=ee,Oe=te,Se=Q,Ae=null,Ne=D({},[].concat(i($),i(j),i(B),i(F),i(H))),Ce=null,ke=D({},[].concat(i(V),i(q),i(z),i(K))),Te=Object.seal(Object.create(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Re=null,Le=null,Ie=!0,De=!0,Me=!1,Pe=!0,$e=!1,je=!1,Be=!1,Ue=!1,Fe=!1,Ge=!1,He=!1,Ve=!0,qe=!1,ze="user-content-",Ke=!0,Ye=!1,We={},Xe=null,Ze=D({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),Je=null,Qe=D({},["audio","video","img","source","image","track"]),et=null,tt=D({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),nt="http://www.w3.org/1998/Math/MathML",rt="http://www.w3.org/2000/svg",it="http://www.w3.org/1999/xhtml",at=it,ot=!1,st=null,lt=D({},[nt,rt,it],S),ct=["application/xhtml+xml","text/html"],ut="text/html",dt=null,pt=a.createElement("form"),ft=function(e){return e instanceof RegExp||e instanceof Function},ht=function(t){dt&&dt===t||(t&&"object"===e(t)||(t={}),t=M(t),ve=ve=-1===ct.indexOf(t.PARSER_MEDIA_TYPE)?ut:t.PARSER_MEDIA_TYPE,ge="application/xhtml+xml"===ve?S:O,Ae="ALLOWED_TAGS"in t?D({},t.ALLOWED_TAGS,ge):Ne,Ce="ALLOWED_ATTR"in t?D({},t.ALLOWED_ATTR,ge):ke,st="ALLOWED_NAMESPACES"in t?D({},t.ALLOWED_NAMESPACES,S):lt,et="ADD_URI_SAFE_ATTR"in t?D(M(tt),t.ADD_URI_SAFE_ATTR,ge):tt,Je="ADD_DATA_URI_TAGS"in t?D(M(Qe),t.ADD_DATA_URI_TAGS,ge):Qe,Xe="FORBID_CONTENTS"in t?D({},t.FORBID_CONTENTS,ge):Ze,Re="FORBID_TAGS"in t?D({},t.FORBID_TAGS,ge):{},Le="FORBID_ATTR"in t?D({},t.FORBID_ATTR,ge):{},We="USE_PROFILES"in t&&t.USE_PROFILES,Ie=!1!==t.ALLOW_ARIA_ATTR,De=!1!==t.ALLOW_DATA_ATTR,Me=t.ALLOW_UNKNOWN_PROTOCOLS||!1,Pe=!1!==t.ALLOW_SELF_CLOSE_IN_ATTR,$e=t.SAFE_FOR_TEMPLATES||!1,je=t.WHOLE_DOCUMENT||!1,Fe=t.RETURN_DOM||!1,Ge=t.RETURN_DOM_FRAGMENT||!1,He=t.RETURN_TRUSTED_TYPE||!1,Ue=t.FORCE_BODY||!1,Ve=!1!==t.SANITIZE_DOM,qe=t.SANITIZE_NAMED_PROPS||!1,Ke=!1!==t.KEEP_CONTENT,Ye=t.IN_PLACE||!1,Se=t.ALLOWED_URI_REGEXP||Se,at=t.NAMESPACE||it,Te=t.CUSTOM_ELEMENT_HANDLING||{},t.CUSTOM_ELEMENT_HANDLING&&ft(t.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(Te.tagNameCheck=t.CUSTOM_ELEMENT_HANDLING.tagNameCheck),t.CUSTOM_ELEMENT_HANDLING&&ft(t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(Te.attributeNameCheck=t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),t.CUSTOM_ELEMENT_HANDLING&&"boolean"===typeof t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(Te.allowCustomizedBuiltInElements=t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),$e&&(De=!1),Ge&&(Fe=!0),We&&(Ae=D({},i(H)),Ce=[],!0===We.html&&(D(Ae,$),D(Ce,V)),!0===We.svg&&(D(Ae,j),D(Ce,q),D(Ce,K)),!0===We.svgFilters&&(D(Ae,B),D(Ce,q),D(Ce,K)),!0===We.mathMl&&(D(Ae,F),D(Ce,z),D(Ce,K))),t.ADD_TAGS&&(Ae===Ne&&(Ae=M(Ae)),D(Ae,t.ADD_TAGS,ge)),t.ADD_ATTR&&(Ce===ke&&(Ce=M(Ce)),D(Ce,t.ADD_ATTR,ge)),t.ADD_URI_SAFE_ATTR&&D(et,t.ADD_URI_SAFE_ATTR,ge),t.FORBID_CONTENTS&&(Xe===Ze&&(Xe=M(Xe)),D(Xe,t.FORBID_CONTENTS,ge)),Ke&&(Ae["#text"]=!0),je&&D(Ae,["html","head","body"]),Ae.table&&(D(Ae,["tbody"]),delete Re.tbody),m&&m(t),dt=t)},mt=D({},["mi","mo","mn","ms","mtext"]),vt=D({},["foreignobject","desc","title","annotation-xml"]),gt=D({},["title","style","font","a","script"]),bt=D({},j);D(bt,B),D(bt,U);var yt=D({},F);D(yt,G);var _t=function(e){var t=L(e);t&&t.tagName||(t={namespaceURI:at,tagName:"template"});var n=O(e.tagName),r=O(t.tagName);return!!st[e.namespaceURI]&&(e.namespaceURI===rt?t.namespaceURI===it?"svg"===n:t.namespaceURI===nt?"svg"===n&&("annotation-xml"===r||mt[r]):Boolean(bt[n]):e.namespaceURI===nt?t.namespaceURI===it?"math"===n:t.namespaceURI===rt?"math"===n&&vt[r]:Boolean(yt[n]):e.namespaceURI===it?!(t.namespaceURI===rt&&!vt[r])&&(!(t.namespaceURI===nt&&!mt[r])&&(!yt[n]&&(gt[n]||!bt[n]))):!("application/xhtml+xml"!==ve||!st[e.namespaceURI]))},wt=function(e){x(n.removed,{element:e});try{e.parentNode.removeChild(e)}catch(It){try{e.outerHTML=se}catch(It){e.remove()}}},Et=function(e,t){try{x(n.removed,{attribute:t.getAttributeNode(e),from:t})}catch(It){x(n.removed,{attribute:null,from:t})}if(t.removeAttribute(e),"is"===e&&!Ce[e])if(Fe||Ge)try{wt(t)}catch(It){}else try{t.setAttribute(e,"")}catch(It){}},xt=function(e){var t,n;if(Ue)e=""+e;else{var r=A(e,/^[\r\n\t ]+/);n=r&&r[0]}"application/xhtml+xml"===ve&&at===it&&(e=''+e+"");var i=oe?oe.createHTML(e):e;if(at===it)try{t=(new h).parseFromString(i,ve)}catch(It){}if(!t||!t.documentElement){t=ce.createDocument(at,"template",null);try{t.documentElement.innerHTML=ot?se:i}catch(It){}}var o=t.body||t.documentElement;return e&&n&&o.insertBefore(a.createTextNode(n),o.childNodes[0]||null),at===it?pe.call(t,je?"html":"body")[0]:je?t.documentElement:o},Ot=function(e){return ue.call(e.ownerDocument||e,e,u.SHOW_ELEMENT|u.SHOW_COMMENT|u.SHOW_TEXT,null,!1)},St=function(e){return e instanceof f&&("string"!==typeof e.nodeName||"string"!==typeof e.textContent||"function"!==typeof e.removeChild||!(e.attributes instanceof p)||"function"!==typeof e.removeAttribute||"function"!==typeof e.setAttribute||"string"!==typeof e.namespaceURI||"function"!==typeof e.insertBefore||"function"!==typeof e.hasChildNodes)},At=function(t){return"object"===e(l)?t instanceof l:t&&"object"===e(t)&&"number"===typeof t.nodeType&&"string"===typeof t.nodeName},Nt=function(e,t,r){me[e]&&w(me[e],(function(e){e.call(n,t,r,dt)}))},Ct=function(e){var t;if(Nt("beforeSanitizeElements",e,null),St(e))return wt(e),!0;if(T(/[\u0080-\uFFFF]/,e.nodeName))return wt(e),!0;var r=ge(e.nodeName);if(Nt("uponSanitizeElement",e,{tagName:r,allowedTags:Ae}),e.hasChildNodes()&&!At(e.firstElementChild)&&(!At(e.content)||!At(e.content.firstElementChild))&&T(/<[/\w]/g,e.innerHTML)&&T(/<[/\w]/g,e.textContent))return wt(e),!0;if("select"===r&&T(/\n\n \n\n \n \n \n \n\n \n \n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ResourceTable.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ResourceTable.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ResourceTable.vue?vue&type=template&id=ab9d5006&\"\nimport script from \"./ResourceTable.vue?vue&type=script&lang=js&\"\nexport * from \"./ResourceTable.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".dashboard[data-v-12f32b18],.dashboard .head[data-v-12f32b18]{display:flex;flex-direction:column}.dashboard .head[data-v-12f32b18]{justify-content:space-between;align-content:center;outline:1px solid var(--border);border-radius:var(--border-radius);margin:0 0 64px 0;padding:20px;gap:20px}.dashboard .head-title[data-v-12f32b18]{display:flex;flex-direction:column;gap:5px}.dashboard .head-title h1[data-v-12f32b18]{margin:0}.dashboard .head-version-container[data-v-12f32b18]{display:flex;flex-direction:row;align-items:center}.dashboard .head-upgrade[data-v-12f32b18]{display:flex;align-items:center}.dashboard .head-upgrade[data-v-12f32b18],.dashboard .head-version[data-v-12f32b18]{border-radius:var(--border-radius);padding:4px 8px}.dashboard .head-subheader[data-v-12f32b18]{font-size:1.2rem;font-weight:500;color:var(--text-secondary)}.dashboard .head-links[data-v-12f32b18]{display:flex;gap:10px}.dashboard .get-started[data-v-12f32b18]{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));grid-gap:20px}.dashboard .get-started .card-container[data-v-12f32b18]{min-height:420px;padding:0}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","const parse = require('./parse')\nconst valid = (version, options) => {\n const v = parse(version, options)\n return v ? v.version : null\n}\nmodule.exports = valid\n","export * from \"-!../../../../vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../../sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Bar.vue?vue&type=style&index=0&id=b4f4e2ae&prod&lang=scss&scoped=true&\"","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".flex-content[data-v-1a42fcca]{display:flex;flex-direction:column;flex-grow:1}.footer[data-v-1a42fcca]{margin-top:20px;right:0;position:sticky;bottom:0;background-color:var(--header-bg);margin-left:-20px;margin-right:-20px;margin-bottom:-20px;padding:10px 20px}.footer.edit[data-v-1a42fcca]{border-top:var(--header-border-size) solid var(--header-border)}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Loading.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Loading.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Loading.vue?vue&type=template&id=23723280&scoped=true&\"\nimport script from \"./Loading.vue?vue&type=script&lang=js&\"\nexport * from \"./Loading.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Loading.vue?vue&type=style&index=0&id=23723280&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"23723280\",\n null\n \n)\n\nexport default component.exports","var map = {\n\t\"./kubewarden/_index\": \"61e7\",\n\t\"./kubewarden/_index.vue\": \"61e7\",\n\t\"./kubewarden/admission\": \"f0e8\",\n\t\"./kubewarden/admission/\": \"f0e8\",\n\t\"./kubewarden/admission/ContextAware\": \"78b7\",\n\t\"./kubewarden/admission/ContextAware/\": \"78b7\",\n\t\"./kubewarden/admission/ContextAware/Resource\": \"01af\",\n\t\"./kubewarden/admission/ContextAware/Resource.vue\": \"01af\",\n\t\"./kubewarden/admission/ContextAware/index\": \"78b7\",\n\t\"./kubewarden/admission/ContextAware/index.vue\": \"78b7\",\n\t\"./kubewarden/admission/General\": \"ff83\",\n\t\"./kubewarden/admission/General.vue\": \"ff83\",\n\t\"./kubewarden/admission/NamespaceSelector\": \"2835\",\n\t\"./kubewarden/admission/NamespaceSelector/\": \"2835\",\n\t\"./kubewarden/admission/NamespaceSelector/index\": \"2835\",\n\t\"./kubewarden/admission/NamespaceSelector/index.vue\": \"2835\",\n\t\"./kubewarden/admission/Rules\": \"6b71\",\n\t\"./kubewarden/admission/Rules/\": \"6b71\",\n\t\"./kubewarden/admission/Rules/Rule\": \"63a1\",\n\t\"./kubewarden/admission/Rules/Rule.vue\": \"63a1\",\n\t\"./kubewarden/admission/Rules/index\": \"6b71\",\n\t\"./kubewarden/admission/Rules/index.vue\": \"6b71\",\n\t\"./kubewarden/admission/Settings\": \"4d67\",\n\t\"./kubewarden/admission/Settings.vue\": \"4d67\",\n\t\"./kubewarden/admission/index\": \"f0e8\",\n\t\"./kubewarden/admission/index.vue\": \"f0e8\",\n\t\"./kubewarden/policy-server\": \"b118\",\n\t\"./kubewarden/policy-server/\": \"b118\",\n\t\"./kubewarden/policy-server/General\": \"d8b3\",\n\t\"./kubewarden/policy-server/General.vue\": \"d8b3\",\n\t\"./kubewarden/policy-server/Registry/Authority\": \"22a0\",\n\t\"./kubewarden/policy-server/Registry/Authority.vue\": \"22a0\",\n\t\"./kubewarden/policy-server/Registry/Index\": \"6b48\",\n\t\"./kubewarden/policy-server/Registry/Index.vue\": \"6b48\",\n\t\"./kubewarden/policy-server/Registry/SourceAuthorities\": \"3c82\",\n\t\"./kubewarden/policy-server/Registry/SourceAuthorities.vue\": \"3c82\",\n\t\"./kubewarden/policy-server/SecurityContexts\": \"4d89\",\n\t\"./kubewarden/policy-server/SecurityContexts.vue\": \"4d89\",\n\t\"./kubewarden/policy-server/SecurityContexts/ContainerConfiguration\": \"da16\",\n\t\"./kubewarden/policy-server/SecurityContexts/ContainerConfiguration.vue\": \"da16\",\n\t\"./kubewarden/policy-server/SecurityContexts/PodConfiguration\": \"f155\",\n\t\"./kubewarden/policy-server/SecurityContexts/PodConfiguration.vue\": \"f155\",\n\t\"./kubewarden/policy-server/Verification\": \"3db8\",\n\t\"./kubewarden/policy-server/Verification.vue\": \"3db8\",\n\t\"./kubewarden/policy-server/index\": \"b118\",\n\t\"./kubewarden/policy-server/index.vue\": \"b118\"\n};\n\nfunction webpackAsyncContext(req) {\n\treturn Promise.resolve().then(function() {\n\t\tif(!__webpack_require__.o(map, req)) {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t}\n\n\t\tvar id = map[req];\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = \"15d2\";\nmodule.exports = webpackAsyncContext;","/*\nLanguage: Nginx config\nAuthor: Peter Leonov \nContributors: Ivan Sagalaev \nCategory: config, web\nWebsite: https://www.nginx.com\n*/\n\n/** @type LanguageFn */\nfunction nginx(hljs) {\n const regex = hljs.regex;\n const VAR = {\n className: 'variable',\n variants: [\n { begin: /\\$\\d+/ },\n { begin: /\\$\\{\\w+\\}/ },\n { begin: regex.concat(/[$@]/, hljs.UNDERSCORE_IDENT_RE) }\n ]\n };\n const LITERALS = [\n \"on\",\n \"off\",\n \"yes\",\n \"no\",\n \"true\",\n \"false\",\n \"none\",\n \"blocked\",\n \"debug\",\n \"info\",\n \"notice\",\n \"warn\",\n \"error\",\n \"crit\",\n \"select\",\n \"break\",\n \"last\",\n \"permanent\",\n \"redirect\",\n \"kqueue\",\n \"rtsig\",\n \"epoll\",\n \"poll\",\n \"/dev/poll\"\n ];\n const DEFAULT = {\n endsWithParent: true,\n keywords: {\n $pattern: /[a-z_]{2,}|\\/dev\\/poll/,\n literal: LITERALS\n },\n relevance: 0,\n illegal: '=>',\n contains: [\n hljs.HASH_COMMENT_MODE,\n {\n className: 'string',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n VAR\n ],\n variants: [\n {\n begin: /\"/,\n end: /\"/\n },\n {\n begin: /'/,\n end: /'/\n }\n ]\n },\n // this swallows entire URLs to avoid detecting numbers within\n {\n begin: '([a-z]+):/',\n end: '\\\\s',\n endsWithParent: true,\n excludeEnd: true,\n contains: [ VAR ]\n },\n {\n className: 'regexp',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n VAR\n ],\n variants: [\n {\n begin: \"\\\\s\\\\^\",\n end: \"\\\\s|\\\\{|;\",\n returnEnd: true\n },\n // regexp locations (~, ~*)\n {\n begin: \"~\\\\*?\\\\s+\",\n end: \"\\\\s|\\\\{|;\",\n returnEnd: true\n },\n // *.example.com\n { begin: \"\\\\*(\\\\.[a-z\\\\-]+)+\" },\n // sub.example.*\n { begin: \"([a-z\\\\-]+\\\\.)+\\\\*\" }\n ]\n },\n // IP\n {\n className: 'number',\n begin: '\\\\b\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}(:\\\\d{1,5})?\\\\b'\n },\n // units\n {\n className: 'number',\n begin: '\\\\b\\\\d+[kKmMgGdshdwy]?\\\\b',\n relevance: 0\n },\n VAR\n ]\n };\n\n return {\n name: 'Nginx config',\n aliases: [ 'nginxconf' ],\n contains: [\n hljs.HASH_COMMENT_MODE,\n {\n beginKeywords: \"upstream location\",\n end: /;|\\{/,\n contains: DEFAULT.contains,\n keywords: { section: \"upstream location\" }\n },\n {\n className: 'section',\n begin: regex.concat(hljs.UNDERSCORE_IDENT_RE + regex.lookahead(/\\s+\\{/)),\n relevance: 0\n },\n {\n begin: regex.lookahead(hljs.UNDERSCORE_IDENT_RE + '\\\\s'),\n end: ';|\\\\{',\n contains: [\n {\n className: 'attribute',\n begin: hljs.UNDERSCORE_IDENT_RE,\n starts: DEFAULT\n }\n ],\n relevance: 0\n }\n ],\n illegal: '[^\\\\s\\\\}\\\\{]'\n };\n}\n\nmodule.exports = nginx;\n","import { SETTING } from '@shell/config/settings';\nimport { COUNT, MANAGEMENT } from '@shell/config/types';\nimport { GC_DEFAULTS, GC_PREFERENCES } from './gc-types';\n\nclass GarbageCollect {\n private static ENABLE_DEBUG_LOGGING = false;\n\n /**\n * Don't run GC if it's been run within 5 seconds\n */\n private static GC_RE_RUN_GAP = 1000 * 5;\n\n private cachedGcPrefs: GC_PREFERENCES = GC_DEFAULTS;\n\n private cachedGcPrefsStamp = '';\n\n private debugLog = (...args: any) => {\n if (GarbageCollect.ENABLE_DEBUG_LOGGING) {\n console.debug('GC', ...args); // eslint-disable-line no-console\n }\n };\n\n /**\n * Time the GC last ran\n */\n private gcLastRun: number | null = 0;\n\n /**\n * To avoid JSON.parse on the `ui-performance` setting keep a local cache\n */\n private getUiPerfGarbageCollection = (rootState: any) => {\n const uiPerfSetting = rootState.management.types[MANAGEMENT.SETTING]?.list.find((s: any) => s.id === SETTING.UI_PERFORMANCE);\n\n if (!uiPerfSetting || !uiPerfSetting.value) {\n // Could be in the process of logging out\n return undefined;\n }\n const stamp = `${ uiPerfSetting.metadata.generation }-${ uiPerfSetting.metadata.resourceVersion }`;\n\n if (this.cachedGcPrefsStamp !== stamp) {\n this.debugLog(`Updating ${ SETTING.UI_PERFORMANCE } cache`);\n this.cachedGcPrefsStamp = stamp;\n const uiPerfSettingParsed = JSON.parse(uiPerfSetting.value);\n\n this.cachedGcPrefs = uiPerfSettingParsed.garbageCollection;\n }\n\n return this.cachedGcPrefs;\n };\n\n /**\n * The last time a resource was accessed by either find or getters style functions\n */\n private lastAccessedCache: {\n [store: string]: {\n [type: string]: number;\n }\n } = {}\n\n /**\n * Track when a logged in route changes.\n */\n private lastRouteChange = 0;\n\n // ------------- GC Enabled ---------------------\n\n gcEnabledAll(pseudoCtx: any, type: string) {\n return this.gcEnabledForStore(pseudoCtx.state) && this.gcEnabledSetting(pseudoCtx) && this.gcEnabledForType(pseudoCtx, type);\n }\n\n gcEnabledSetting(pseudoCtx: any) {\n const { rootState } = pseudoCtx;\n\n // Don't use a getter... as we'll end up triggering ourselves again\n const uiPerfGarbageCollection = this.getUiPerfGarbageCollection(rootState);\n\n return uiPerfGarbageCollection?.enabled;\n }\n\n gcEnabledForStore(state: any) {\n return state?.config?.supportsGc;\n }\n\n /**\n * Store can require certain types are not GC'd (for example `cluster` and `schema`s, `counts`, etc)\n */\n gcEnabledForType(pseudoCtx: any, type: string) {\n const { getters } = pseudoCtx;\n\n if (!type || getters.gcIgnoreTypes[type]) {\n return false;\n }\n\n return true;\n }\n\n gcEnabledInterval(pseudoCtx: any) {\n const { rootState } = pseudoCtx;\n\n // Don't use a getter... as we'll end up triggering ourselves again\n const uiPerfGarbageCollection = this.getUiPerfGarbageCollection(rootState);\n\n return {\n enabled: uiPerfGarbageCollection?.enabledInterval,\n interval: uiPerfGarbageCollection?.interval || 0\n };\n }\n\n gcEnabledRoute(pseudoCtx: any) {\n const { rootState } = pseudoCtx;\n\n // Don't use a getter... as we'll end up triggering ourselves again\n const uiPerfGarbageCollection = this.getUiPerfGarbageCollection(rootState);\n\n return uiPerfGarbageCollection?.enabledOnNavigate;\n }\n\n // ------------- GC (actual) ---------------------\n\n /**\n * Remove stale resource types from the store and stop watching them for changes\n */\n garbageCollect(ctx: any, ignoreTypes: {[type: string]: boolean} = {}) {\n const now = new Date().getTime();\n\n // Is gc currently running OR has run in the past GC_RE_RUN_GAP return early\n if (this.gcLastRun === null || now - this.gcLastRun < GarbageCollect.GC_RE_RUN_GAP) {\n this.debugLog('Skipping (running or recently run)', this.gcLastRun ? new Date(this.gcLastRun) : 'running');\n\n return;\n }\n\n this.gcLastRun = null;\n const gcd: {[type: string]: number} = {};\n\n try {\n const { getters, rootState, dispatch } = ctx;\n\n if (!rootState.clusterReady) {\n this.debugLog('Skipping (cluster not ready)');\n this.gcLastRun = new Date().getTime();\n\n return ;\n }\n this.debugLog(`------ Started ------`);\n\n const uiPerfGarbageCollection = this.getUiPerfGarbageCollection(rootState);\n\n if (!uiPerfGarbageCollection) {\n return ;\n }\n const maxAge = uiPerfGarbageCollection.ageThreshold * 1000;\n const maxCount = uiPerfGarbageCollection.countThreshold;\n\n this.debugLog(`Max Age: ${ maxAge }. Max Count: ${ maxCount }`);// , 'Cache', this.lastAccessedCache\n\n const store = ctx.state.config.namespace;\n\n // this.debugLog('Cache', this.lastAccessedCache);\n\n Object.entries((this.lastAccessedCache[store] || {})).forEach(([type, lastAccessed]) => {\n if (!lastAccessed) {\n // There's no last accessed time... gc is probably disabled in another way\n this.debugLog(`${ type }: Skipping (no accessed time)`);\n\n return;\n }\n\n if (!this.gcEnabledForType(ctx, type)) {\n // This specific store is telling us to ignore the type (for example `cluster` store will not GC schema's, counts, etc)\n this.debugLog(`${ type }: Skipping (type ignored by store)`);\n\n return;\n }\n\n if (ignoreTypes[type]) {\n // We're going to a place that needs the resource\n this.debugLog(`${ type }: Skipping (navigating to type)`);\n\n return;\n }\n\n if (now - lastAccessed <= maxAge) {\n // The resource was recently accessed\n\n this.debugLog(`${ type }: Skipping (recently accessed)`);\n\n return;\n }\n\n if (this.lastRouteChange !== undefined && this.lastRouteChange < lastAccessed ) {\n // The resource is being used in the current route/page\n this.debugLog(`${ type }: Skipping (used in current route/page)`);\n\n return;\n }\n\n const countFromResource = getters.all(COUNT)[0].counts[type]?.summary.count;\n const currentCount = countFromResource ?? 0;\n\n if (currentCount === undefined || currentCount < maxCount) {\n // There's too few resources, we might as well keep them to avoid a network request when we need them again\n this.debugLog(`${ type }: Skipping (too few of resource)`);\n\n return;\n }\n\n this.debugLog(`${ type }: Removing from store`);\n dispatch('forgetType', type);\n gcd[type] = currentCount;\n });\n\n this.gcLastRun = new Date().getTime();\n } catch (e) {\n this.debugLog(`: Error`, e);\n this.gcLastRun = new Date().getTime();\n }\n\n if (Object.keys(gcd).length > 0) {\n console.info('Garbage Collected Resources', gcd); // eslint-disable-line no-console\n }\n\n this.debugLog(`------ Finished ------`);\n }\n\n // ------------- GC Update local cache ---------------------\n\n /**\n * Update the time that the resource type was accessed\n * This needs to run after any type initialisation (aka registerType)\n */\n gcUpdateLastAccessed(pseudoCtx: any, type: string) {\n if (!this.gcEnabledAll(pseudoCtx, type)) {\n return;\n }\n const store = pseudoCtx.state.config.namespace;\n\n if (!this.lastAccessedCache[store]) {\n this.lastAccessedCache[store] = {};\n }\n\n this.lastAccessedCache[store][type] = new Date().getTime();\n }\n\n /**\n * Update the time the user last changed routes\n */\n gcUpdateRouteChanged() {\n this.lastRouteChange = new Date().getTime();\n }\n\n // ------------- GC reset ---------------------\n\n /**\n * Remove all cached access times for the given store\n */\n gcResetStore(state: any) {\n const store = state.config.namespace;\n\n delete this.lastAccessedCache[store];\n\n this.debugLog('Forgetting Store:', store);\n }\n\n /**\n * Remove cached access time for the given resource type\n */\n gcResetType(state: any, type: string) {\n const store = state.config.namespace;\n\n if (!this.lastAccessedCache[store]) {\n return;\n }\n delete this.lastAccessedCache[store][type];\n\n this.debugLog('Forgetting Type:', store, type);\n }\n}\n\nconst gc = new GarbageCollect();\n\nexport default gc;\n","import merge from 'lodash/merge';\n\nimport { SCHEMA } from '@shell/config/types';\nimport { SPOOFED_API_PREFIX, SPOOFED_PREFIX } from '@shell/store/type-map';\nimport { createYaml } from '@shell/utils/create-yaml';\nimport { classify } from '@shell/plugins/dashboard-store/classify';\nimport { normalizeType } from './normalize';\nimport garbageCollect from '@shell/utils/gc/gc';\nimport { addSchemaIndexFields } from '@shell/plugins/steve/schema.utils';\nimport { addParam } from '@shell/utils/url';\n\nexport const _ALL = 'all';\nexport const _MERGE = 'merge';\nexport const _MULTI = 'multi';\nexport const _ALL_IF_AUTHED = 'allIfAuthed';\nexport const _NONE = 'none';\n\nconst SCHEMA_CHECK_RETRIES = 15;\nconst HAVE_ALL_CHECK_RETRIES = 15;\nconst RETRY_LOG = 10;\n\nexport async function handleSpoofedRequest(rootGetters, schemaStore, opt, product) {\n // Handle spoofed types instead of making an actual request\n // Spoofing is handled here to ensure it's done for both yaml and form editing.\n // It became apparent that this was the only place that both intersected\n if (opt.url.includes(SPOOFED_PREFIX) || opt.url.includes(SPOOFED_API_PREFIX)) {\n const [empty, scheme, type, ...rest] = opt.url.split('/'); // eslint-disable-line no-unused-vars\n const id = rest.join('/'); // Cover case where id contains '/'\n const isApi = scheme === SPOOFED_API_PREFIX;\n const typemapGetter = id ? 'getSpoofedInstance' : 'getSpoofedInstances';\n\n const schemas = rootGetters[`${ schemaStore }/all`](SCHEMA);\n // getters return async getSpoofedInstance/getSpoofedInstances fn\n const instance = await rootGetters[`type-map/${ typemapGetter }`](type, product, id);\n const data = isApi ? createYaml(schemas, type, instance) : instance;\n\n return id && !isApi ? data : { data };\n }\n}\n\nexport async function loadSchemas(ctx, watch = true) {\n const {\n getters, dispatch, commit, rootGetters\n } = ctx;\n const res = await dispatch('findAll', { type: SCHEMA, opt: { url: 'schemas', load: false } });\n const spoofedTypes = rootGetters['type-map/allSpoofedSchemas'] ;\n\n if (Array.isArray(res.data)) {\n res.data = res.data.concat(spoofedTypes);\n } else if (Array.isArray(res)) {\n res.data = res.concat(spoofedTypes);\n }\n\n res.data.forEach(addSchemaIndexFields);\n\n commit('loadAll', {\n ctx,\n type: SCHEMA,\n data: res.data,\n revision: res.revision\n });\n\n if ( watch !== false ) {\n dispatch('watch', {\n type: SCHEMA,\n revision: res.revision\n });\n }\n\n const all = getters.all(SCHEMA);\n\n return all;\n}\n\nconst findAllGetter = (getters, type, opt) => {\n return opt.namespaced ? getters.matching(type, null, opt.namespaced, { skipSelector: true }) : getters.all(type);\n};\n\nexport default {\n request() {\n throw new Error('Not Implemented');\n },\n\n loadSchemas,\n\n // Load a page of data for a given type\n // Used for incremental loading when enabled\n async loadDataPage(ctx, { type, opt }) {\n const { getters, commit, dispatch } = ctx;\n\n type = getters.normalizeType(type);\n\n // if there's no registered type, then register it so\n // that we don't have issues on 'loadAdd' mutation\n if ( !getters.typeRegistered(type) ) {\n commit('registerType', type);\n }\n\n const loadCount = getters['loadCounter'](type);\n\n try {\n const res = await dispatch('request', { opt, type });\n\n const newLoadCount = getters['loadCounter'](type);\n\n // Load count changed, so we changed page or started a new load\n // after this page load was started, so don't continue with incremental load\n if (loadCount !== newLoadCount) {\n return;\n }\n\n commit('loadAdd', {\n ctx,\n type,\n data: res.data,\n });\n\n if (res.pagination?.next) {\n dispatch('loadDataPage', {\n type,\n opt: {\n ...opt,\n url: res.pagination?.next\n }\n });\n } else {\n // We have everything!\n if (opt.hasManualRefresh) {\n dispatch('resource-fetch/updateManualRefreshIsLoading', false, { root: true });\n }\n if (opt.namespaced) {\n commit('setHaveNamespace', { type, namespace: opt.namespaced });\n } else {\n commit('setHaveAll', { type });\n }\n }\n } catch (e) {\n if (opt.hasManualRefresh) {\n dispatch('resource-fetch/updateManualRefreshIsLoading', false, { root: true });\n }\n\n return Promise.reject(e);\n }\n },\n\n async findAll(ctx, { type, opt }) {\n const {\n getters, commit, dispatch, rootGetters\n } = ctx;\n\n opt = opt || {};\n type = getters.normalizeType(type);\n\n if ( !getters.typeRegistered(type) ) {\n commit('registerType', type);\n }\n\n // No need to request the resources if we have them already\n if ( opt.force !== true && (getters['haveAll'](type) || getters['haveAllNamespace'](type, opt.namespaced))) {\n const args = {\n type,\n revision: '',\n // watchNamespace - used sometimes when we haven't fetched the results of a single namespace\n // namespaced - used when we have fetched the result of a single namespace (see https://github.com/rancher/dashboard/pull/7329/files)\n namespace: opt.watchNamespace || opt.namespaced\n };\n\n if (opt.watch !== false ) {\n dispatch('watch', args);\n }\n\n return findAllGetter(getters, type, opt);\n }\n\n let load = (opt.load === undefined ? _ALL : opt.load);\n\n if ( opt.load === false || opt.load === _NONE ) {\n load = _NONE;\n } else if ( opt.load === _ALL_IF_AUTHED ) {\n const header = rootGetters['auth/fromHeader'];\n\n if ( `${ header }` === 'true' || `${ header }` === 'none' ) {\n load = _ALL;\n } else {\n load = _MULTI;\n }\n }\n\n const typeOptions = rootGetters['type-map/optionsFor'](type);\n\n console.log(`Find All: [${ ctx.state.config.namespace }] ${ type }`); // eslint-disable-line no-console\n opt = opt || {};\n opt.url = getters.urlFor(type, null, opt);\n opt.stream = opt.stream !== false && load !== _NONE;\n opt.depaginate = typeOptions?.depaginate;\n\n let skipHaveAll = false;\n\n // if it's incremental loading, we do two parallel requests\n // on for a limit of 100, to quickly show data\n // another one with 1st page of the subset of the resource we are fetching\n // the default is 4 pages, but it can be changed on mixin/resource-fetch.js\n if (opt.incremental) {\n commit('incrementLoadCounter', type);\n\n if (opt.hasManualRefresh) {\n dispatch('resource-fetch/updateManualRefreshIsLoading', true, { root: true });\n }\n\n const pageFetchOpts = {\n ...opt,\n url: addParam(opt.url, 'limit', `${ opt.incremental }`),\n };\n\n // this is where we \"hijack\" the limit for the dispatch('request') some lines below\n // and therefore have 2 initial requests in parallel\n opt.url = addParam(opt.url, 'limit', '100');\n skipHaveAll = true;\n\n // since we are forcing a request, clear the haveAll\n // needed for the resource-fetch mixin, otherwise the incremental indicator\n // won't pop-up again when manual refreshing\n if (opt.force) {\n commit('forgetType', type);\n }\n\n dispatch('loadDataPage', { type, opt: pageFetchOpts });\n }\n\n let streamStarted = false;\n let out;\n\n let queue = [];\n let streamCollection;\n\n opt.onData = function(data) {\n if ( streamStarted ) {\n // Batch loads into groups of 10 to reduce vuex overhead\n queue.push(data);\n\n if ( queue.length > 10 ) {\n const tmp = queue;\n\n queue = [];\n commit('loadMulti', { ctx, data: tmp });\n }\n } else {\n // The first line is the collection object (sans `data`)\n commit('forgetAll', { type });\n streamStarted = true;\n streamCollection = data;\n }\n };\n\n try {\n if (!opt.incremental && opt.hasManualRefresh) {\n dispatch('resource-fetch/updateManualRefreshIsLoading', true, { root: true });\n }\n\n const res = await dispatch('request', { opt, type });\n\n if ( streamStarted ) {\n // Flush any remaining entries left over that didn't get loaded by onData\n if ( queue.length ) {\n commit('loadMulti', { ctx, data: queue });\n queue = [];\n }\n commit('loadedAll', { type });\n const all = getters.all(type);\n\n res.finishDeferred(all);\n out = streamCollection;\n } else {\n out = res;\n }\n } catch (e) {\n if (!opt.incremental && opt.hasManualRefresh) {\n dispatch('resource-fetch/updateManualRefreshIsLoading', false, { root: true });\n }\n\n return Promise.reject(e);\n }\n\n if ( load === _NONE ) {\n if (!opt.incremental && opt.hasManualRefresh) {\n dispatch('resource-fetch/updateManualRefreshIsLoading', false, { root: true });\n }\n\n return out;\n } else if ( out.data ) {\n if ( load === _MULTI ) {\n // This has the effect of adding the response to the store,\n // without replacing all the existing content for that type,\n // and without marking that type as having 'all 'loaded.\n //\n // This is used e.g. to load a partial list of settings before login\n // while still knowing we need to load the full list later.\n commit('loadMulti', {\n ctx,\n data: out.data\n });\n } else if (load === _MERGE) {\n // This is like loadMulti (updates existing entries) but also removes entries that no longer exist\n // This allows changes to existing resources to be reflected in place in the UI\n // (normally not needed as Rancher updates come over socket and are handled individually)\n commit('loadMerge', {\n ctx,\n type,\n data: out.data,\n existing: true\n });\n } else {\n commit('loadAll', {\n ctx,\n type,\n data: out.data,\n revision: out.revision,\n skipHaveAll,\n namespace: opt.namespaced\n });\n }\n }\n\n // ToDo: SM if we start a \"bigger\" watch (such as watch without a namespace vs a watch with a namespace), we should stop the stop the \"smaller\" watch so we don't have duplicate events coming back\n if ( opt.watch !== false ) {\n const args = {\n type,\n revision: out.revision,\n namespace: opt.watchNamespace || opt.namespaced, // it could be either apparently\n // ToDo: SM namespaced is sometimes a boolean and sometimes a string, I don't see it as especially broken but we should refactor that in the future\n force: opt.forceWatch === true,\n };\n\n dispatch('watch', args);\n }\n\n const all = findAllGetter(getters, type, opt);\n\n if (!opt.incremental && opt.hasManualRefresh) {\n dispatch('resource-fetch/updateManualRefreshIsLoading', false, { root: true });\n }\n\n garbageCollect.gcUpdateLastAccessed(ctx, type);\n\n return all;\n },\n\n async findMatching(ctx, {\n type,\n selector,\n opt,\n namespace\n }) {\n const {\n getters, commit, dispatch, rootGetters\n } = ctx;\n\n opt = opt || {};\n console.log(`Find Matching: [${ ctx.state.config.namespace }] ${ type }`, selector); // eslint-disable-line no-console\n type = getters.normalizeType(type);\n\n if ( !getters.typeRegistered(type) ) {\n commit('registerType', type);\n }\n if ( opt.force !== true && getters['haveSelector'](type, selector) ) {\n return getters.matching( type, selector, namespace );\n }\n\n const typeOptions = rootGetters['type-map/optionsFor'](type);\n\n opt = opt || {};\n opt.labelSelector = selector;\n opt.url = getters.urlFor(type, null, opt);\n opt.depaginate = typeOptions?.depaginate;\n\n const res = await dispatch('request', { opt, type });\n\n if ( opt.load === false ) {\n return res.data;\n }\n\n commit('loadSelector', {\n ctx,\n type,\n entries: res.data,\n selector,\n revision: res.revision,\n });\n\n if ( opt.watch !== false ) {\n dispatch('watch', {\n type,\n selector,\n revision: res.revision,\n force: opt.forceWatch === true,\n });\n }\n\n garbageCollect.gcUpdateLastAccessed(ctx, type);\n\n return getters.matching( type, selector, namespace );\n },\n\n // opt:\n // filter: Filter by fields, e.g. {field: value, anotherField: anotherValue} (default: none)\n // limit: Number of records to return per page (default: 1000)\n // sortBy: Sort by field\n // sortOrder: asc or desc\n // url: Use this specific URL instead of looking up the URL for the type/id. This should only be used for bootstrapping schemas on startup.\n // @TODO depaginate: If the response is paginated, retrieve all the pages. (default: true)\n async find(ctx, { type, id, opt }) {\n if (!id) {\n console.error('Attempting to find a resource with no id', type, id); // eslint-disable-line no-console\n\n return;\n }\n\n const { getters, dispatch } = ctx;\n\n opt = opt || {};\n\n type = normalizeType(type);\n\n console.log(`Find: [${ ctx.state.config.namespace }] ${ type } ${ id }`); // eslint-disable-line no-console\n let out;\n\n if ( opt.force !== true ) {\n out = getters.byId(type, id);\n\n if ( out ) {\n return out;\n }\n }\n\n opt = opt || {};\n opt.url = getters.urlFor(type, id, opt);\n\n const res = await dispatch('request', { opt, type });\n\n await dispatch('load', { data: res });\n\n if ( opt.watch !== false ) {\n const watchMsg = {\n type,\n id,\n revision: res?.metadata?.resourceVersion,\n force: opt.forceWatch === true,\n };\n\n const idx = id.indexOf('/');\n\n if ( idx > 0 ) {\n watchMsg.namespace = id.substr(0, idx);\n watchMsg.id = id.substr(idx + 1);\n }\n\n dispatch('watch', watchMsg);\n }\n\n out = getters.byId(type, id);\n\n garbageCollect.gcUpdateLastAccessed(ctx, type);\n\n return out;\n },\n\n load(ctx, { data, existing }) {\n const { getters, commit } = ctx;\n\n let type = normalizeType(data.type);\n\n if ( !getters.typeRegistered(type) ) {\n commit('registerType', type);\n }\n\n if ( data.baseType && data.baseType !== data.type ) {\n type = normalizeType(data.baseType);\n\n if ( !getters.typeRegistered(type) ) {\n commit('registerType', type);\n }\n }\n // Inject special fields for indexing schemas\n if ( type === SCHEMA ) {\n addSchemaIndexFields(data);\n }\n\n const keyField = getters.keyFieldForType(type);\n const id = data?.[keyField] || existing?.[keyField];\n\n if ( !id ) {\n console.warn('Attempting to load a resource with no id', data, existing); // eslint-disable-line no-console\n\n return;\n }\n\n commit('load', {\n ctx,\n data,\n existing\n });\n\n if ( type === SCHEMA ) {\n commit('type-map/schemaChanged', null, { root: true });\n }\n\n return getters['byId'](type, id);\n },\n\n loadMulti(ctx, data) {\n const { commit } = ctx;\n\n commit('loadMulti', {\n data,\n ctx,\n });\n },\n\n batchChanges(ctx, batch) {\n const { commit } = ctx;\n\n commit('batchChanges', {\n ctx,\n batch\n });\n },\n\n loadAll(ctx, { type, data }) {\n const { commit } = ctx;\n\n commit('loadAll', {\n ctx,\n type,\n data\n });\n },\n\n create(ctx, data) {\n return classify(ctx, data);\n },\n\n createMany(ctx, data) {\n return data.map((d) => classify(ctx, d));\n },\n\n createPopulated(ctx, userData) {\n const data = ctx.getters['defaultFor'](userData.type);\n\n merge(data, userData);\n\n return classify(ctx, data);\n },\n\n clone(ctx, { resource } = {}) {\n return classify(ctx, resource.toJSON(), true);\n },\n\n // Forget a type in the store\n // Remove all entries for that type and stop watching it\n forgetType({ commit, dispatch, state }, type) {\n state.started\n .filter((entry) => entry.type === type)\n .forEach((entry) => dispatch('unwatch', entry));\n\n commit('forgetType', type);\n },\n\n promptRemove({ commit, state }, resources ) {\n commit('action-menu/togglePromptRemove', resources, { root: true });\n },\n\n promptModal({ commit, state }, data ) {\n commit('action-menu/togglePromptModal', data, { root: true });\n },\n\n resourceAction({ getters, dispatch }, {\n resource, actionName, body, opt,\n }) {\n throw new Error('Not Implemented');\n },\n\n collectionAction({ getters, dispatch }, {\n type, actionName, body, opt\n }) {\n throw new Error('Not Implemented');\n },\n\n cleanForNew(ctx, resource) {\n throw new Error('Not Implemented');\n },\n\n createNamespace(ctx, resource) {\n throw new Error('Not Implemented');\n },\n\n cleanForDiff(ctx, resource) {\n throw new Error('Not Implemented');\n },\n\n // Clean a resource for the ResourceDetail page\n // This can ensure common, required properties exists that might have been removed\n cleanForDetail(ctx, resource) {\n return resource;\n },\n\n cleanForDownload(ctx, resource) {\n return resource;\n },\n\n // Wait for a schema that is expected to exist that may not have been loaded yet (for instance when loadCluster is still running).\n async waitForSchema({ getters, dispatch }, { type }) {\n let tries = SCHEMA_CHECK_RETRIES;\n let schema = null;\n\n while (!schema && tries > 0) {\n schema = getters['schemaFor'](type);\n\n if (!schema) {\n if (tries === RETRY_LOG) {\n console.warn(`Schema for ${ type } not available... retrying...`); // eslint-disable-line no-console\n }\n await new Promise((resolve) => setTimeout(resolve, 1000));\n tries--;\n }\n }\n\n if (tries === 0) {\n // Ran out of tries - fetch the schemas again\n console.warn(`Schema for ${ type } still unavailable... loading schemas again...`); // eslint-disable-line no-console\n await dispatch('loadSchemas', true);\n }\n },\n\n async waitForHaveAll({ getters }, { type, throwError = false, attempts = HAVE_ALL_CHECK_RETRIES }) {\n let tries = attempts;\n let haveAll = null;\n\n while (!haveAll && tries > 0) {\n haveAll = getters['haveAll'](type);\n\n if (!haveAll) {\n if (tries === RETRY_LOG) {\n console.warn(`wait for all of ${ type } continuing...`); // eslint-disable-line no-console\n }\n await new Promise((resolve) => setTimeout(resolve, 1000));\n tries--;\n }\n }\n\n if (tries === 0 && throwError) {\n throw new Error(`Failed to wait for all of ${ type }`);\n }\n },\n\n incrementLoadCounter({ commit }, resource) {\n commit('incrementLoadCounter', resource);\n },\n\n garbageCollect(ctx, ignoreTypes) {\n return garbageCollect.garbageCollect(ctx, ignoreTypes);\n },\n\n gcResetStore({ state }) {\n garbageCollect.gcResetStore(state);\n }\n};\n","import { SETTING } from '@shell/config/settings';\nimport { MANAGEMENT } from '@shell/config/types';\n\nlet favIconSet = false;\n\nexport function haveSetFavIcon() {\n return favIconSet;\n}\n\nexport function setFavIcon(store) {\n const res = store.getters['management/byId'](MANAGEMENT.SETTING, SETTING.FAVICON);\n const brandSetting = store.getters['management/byId'](MANAGEMENT.SETTING, SETTING.BRAND);\n const link = findIconLink(document.head.getElementsByTagName('link'));\n\n if (link) {\n let brandImage;\n\n if (brandSetting?.value === 'suse') {\n brandImage = require('~shell/assets/brand/suse/favicon.png');\n } else if (brandSetting?.value === 'csp') {\n brandImage = require('~shell/assets/brand/csp/favicon.png');\n }\n\n link.href = res?.value || brandImage || defaultFavIcon;\n favIconSet = true;\n }\n}\n\nfunction getCurrentFavIcon() {\n const link = findIconLink(document.head.getElementsByTagName('link'));\n\n return link ? link.href : '';\n}\n\nfunction findIconLink(links) {\n for (let i = 0; i < links.length; i++) {\n const link = links[i];\n\n if (link.rel?.includes('icon')) {\n return link;\n }\n }\n\n return undefined;\n}\n\nconst defaultFavIcon = getCurrentFavIcon();\n","\n/**\n * Some plugins won't be bundled with the dashboard build but loaded on demand at run time.\n * This file allows 'manager' style plugins to defined how to determine if a unknown route\n * belongs to one of their associated plugins and how that plugin can be loaded\n */\nclass DynamicPluginLoader {\n dynamicPluginLoaders = [];\n\n register(reg) {\n this.dynamicPluginLoaders.push(reg);\n }\n\n async check({ route, store }) {\n for (const dpl of this.dynamicPluginLoaders) {\n // Check that the route is valid and then load the plugin associated with it\n const res = await dpl.load({ route, store });\n\n if (res) {\n return res;\n }\n }\n }\n}\n\nconst dynamicPluginLoader = new DynamicPluginLoader();\n\nexport default dynamicPluginLoader;\n","import { REDIRECTED } from '@shell/config/cookies';\nimport { NAME as EXPLORER } from '@shell/config/product/explorer';\nimport {\n SETUP, TIMED_OUT, UPGRADED, _FLAGGED, _UNFLAG\n} from '@shell/config/query-params';\nimport { SETTING } from '@shell/config/settings';\nimport { MANAGEMENT, NORMAN, DEFAULT_WORKSPACE } from '@shell/config/types';\nimport { _ALL_IF_AUTHED } from '@shell/plugins/dashboard-store/actions';\nimport { applyProducts } from '@shell/store/type-map';\nimport { findBy } from '@shell/utils/array';\nimport { ClusterNotFoundError, RedirectToError } from '@shell/utils/error';\nimport { get } from '@shell/utils/object';\nimport { setFavIcon, haveSetFavIcon } from '@shell/utils/favicon';\nimport dynamicPluginLoader from '@shell/pkg/dynamic-plugin-loader';\nimport { AFTER_LOGIN_ROUTE, WORKSPACE } from '@shell/store/prefs';\nimport { BACK_TO } from '@shell/config/local-storage';\nimport { NAME as FLEET_NAME } from '@shell/config/product/fleet.js';\nimport { canViewResource } from '@shell/utils/auth';\n\nconst getPackageFromRoute = (route) => {\n if (!route?.meta) {\n return;\n }\n // Sometimes meta is an array... sometimes not\n const arraySafe = Array.isArray(route.meta) ? route.meta : [route.meta];\n\n return arraySafe.find((m) => !!m.pkg)?.pkg;\n};\n\nconst getResourceFromRoute = (to) => {\n let resource = to.params?.resource;\n\n if (!resource) {\n resource = findMeta(to, 'resource');\n }\n\n return resource;\n};\n\nlet beforeEachSetup = false;\n\nfunction findMeta(route, key) {\n if (route?.meta) {\n const meta = Array.isArray(route.meta) ? route.meta : [route.meta];\n\n for (let i = 0; i < meta.length; i++) {\n if (meta[i][key]) {\n return meta[i][key];\n }\n }\n }\n\n return undefined;\n}\n\nexport function getClusterFromRoute(to) {\n let cluster = to.params?.cluster;\n\n if (!cluster) {\n cluster = findMeta(to, 'cluster');\n }\n\n return cluster;\n}\n\nexport function getProductFromRoute(to) {\n let product = to.params?.product;\n\n if ( !product ) {\n const match = to.name?.match(/^c-cluster-([^-]+)/);\n\n if ( match ) {\n product = match[1];\n }\n }\n\n // If still no product, see if the route indicates the product via route metadata\n if (!product) {\n product = findMeta(to, 'product');\n }\n\n return product;\n}\n\nfunction setProduct(store, to, redirect) {\n let product = getProductFromRoute(to);\n\n // since all products are hardcoded as routes (ex: c-local-explorer), if we match the wildcard route it means that the product does not exist\n if ((product && (!to.matched.length || (to.matched.length && to.matched[0].path === '/c/:cluster/:product'))) ||\n // if the product grabbed from the route is not registered, then we don't have it!\n (product && !store.getters['type-map/isProductRegistered'](product))) {\n store.dispatch('loadingError', new Error(store.getters['i18n/t']('nav.failWhale.productNotFound', { productNotFound: product }, true)));\n\n return () => redirect(302, '/fail-whale');\n }\n\n if ( !product ) {\n product = EXPLORER;\n }\n\n const oldProduct = store.getters['productId'];\n const oldStore = store.getters['currentProduct']?.inStore;\n\n if ( product !== oldProduct ) {\n store.commit('setProduct', product);\n }\n\n const neuStore = store.getters['currentProduct']?.inStore;\n\n if ( neuStore !== oldStore ) {\n // If the product store changes, clear the catalog.\n // There might be management catalog items in it vs cluster.\n store.commit('catalog/reset');\n }\n\n return false;\n}\n\n/**\n * Check that the resource is valid, if not redirect to fail whale\n *\n * This requires that\n * - product is set\n * - product's store is set and setup (so we can check schema's within it)\n * - product's store has the schemaFor getter (extension stores might not have it)\n * - there's a resource associated with route (meta or param)\n */\nfunction invalidResource(store, to, redirect) {\n const product = store.getters['currentProduct'];\n const resource = getResourceFromRoute(to);\n\n // In order to check a resource is valid we need these\n if (!product || !resource) {\n return false;\n }\n\n if (canViewResource(store, resource)) {\n return false;\n }\n\n // Unknown resource, redirect to fail whale\n\n store.dispatch('loadingError', new Error(store.getters['i18n/t']('nav.failWhale.resourceNotFound', { resource }, true)));\n\n return () => redirect(302, '/fail-whale');\n}\n\nexport default async function({\n route, app, store, redirect, $cookies, req, isDev, from, $plugin, next\n}) {\n if ( route.path && typeof route.path === 'string') {\n // Ignore webpack hot module reload requests\n if ( route.path.startsWith('/__webpack_hmr/') ) {\n return;\n }\n\n // Ignore the error page\n if ( route.path.startsWith('/fail-whale') ) {\n return;\n }\n }\n\n // This tells Ember not to redirect back to us once you've already been to dashboard once.\n if ( !$cookies.get(REDIRECTED) ) {\n $cookies.set(REDIRECTED, 'true', {\n path: '/',\n sameSite: true,\n secure: true,\n });\n }\n\n const upgraded = route.query[UPGRADED] === _FLAGGED;\n\n if ( upgraded ) {\n app.router.applyQuery({ [UPGRADED]: _UNFLAG });\n\n store.dispatch('growl/success', {\n title: store.getters['i18n/t']('serverUpgrade.title'),\n message: store.getters['i18n/t']('serverUpgrade.message'),\n timeout: 0,\n });\n }\n\n // Initial ?setup=admin-password can technically be on any route\n let initialPass = route.query[SETUP];\n let firstLogin = null;\n\n try {\n // Load settings, which will either be just the public ones if not logged in, or all if you are\n await store.dispatch('management/findAll', {\n type: MANAGEMENT.SETTING,\n opt: {\n load: _ALL_IF_AUTHED, url: `/v1/${ MANAGEMENT.SETTING }`, redirectUnauthorized: false\n }\n });\n\n // Set the favicon - use custom one from store if set\n if (!haveSetFavIcon()) {\n setFavIcon(store);\n }\n\n const res = store.getters['management/byId'](MANAGEMENT.SETTING, SETTING.FIRST_LOGIN);\n const plSetting = store.getters['management/byId'](MANAGEMENT.SETTING, SETTING.PL);\n\n firstLogin = res?.value === 'true';\n\n if (!initialPass && plSetting?.value === 'Harvester') {\n initialPass = 'admin';\n }\n } catch (e) {\n }\n\n if ( firstLogin === null ) {\n try {\n const res = await store.dispatch('rancher/find', {\n type: 'setting',\n id: SETTING.FIRST_LOGIN,\n opt: { url: `/v3/settings/${ SETTING.FIRST_LOGIN }` }\n });\n\n firstLogin = res?.value === 'true';\n\n const plSetting = await store.dispatch('rancher/find', {\n type: 'setting',\n id: SETTING.PL,\n opt: { url: `/v3/settings/${ SETTING.PL }` }\n });\n\n if (!initialPass && plSetting?.value === 'Harvester') {\n initialPass = 'admin';\n }\n } catch (e) {\n }\n }\n\n // TODO show error if firstLogin and default pass doesn't work\n if ( firstLogin ) {\n const ok = await tryInitialSetup(store, initialPass);\n\n if (ok) {\n if (initialPass) {\n store.dispatch('auth/setInitialPass', initialPass);\n }\n\n return redirect({ name: 'auth-setup' });\n } else {\n return redirect({ name: 'auth-login' });\n }\n }\n\n // Make sure you're actually logged in\n function isLoggedIn(me) {\n store.commit('auth/hasAuth', true);\n store.commit('auth/loggedInAs', me.id);\n }\n\n function notLoggedIn() {\n store.commit('auth/hasAuth', true);\n\n if ( route.name === 'index' ) {\n return redirect(302, '/auth/login');\n } else {\n return redirect(302, `/auth/login?${ TIMED_OUT }`);\n }\n }\n\n function noAuth() {\n store.commit('auth/hasAuth', false);\n }\n\n if ( store.getters['auth/enabled'] !== false && !store.getters['auth/loggedIn'] ) {\n // `await` so we have one successfully request whilst possibly logged in (ensures fromHeader is populated from `x-api-cattle-auth`)\n await store.dispatch('auth/getUser');\n\n const v3User = store.getters['auth/v3User'] || {};\n\n if (v3User?.mustChangePassword) {\n return redirect({ name: 'auth-setup' });\n }\n\n // In newer versions the API calls return the auth state instead of having to make a new call all the time.\n const fromHeader = store.getters['auth/fromHeader'];\n\n if ( fromHeader === 'none' ) {\n noAuth();\n } else if ( fromHeader === 'true' ) {\n const me = await findMe(store);\n\n isLoggedIn(me);\n } else if ( fromHeader === 'false' ) {\n notLoggedIn();\n } else {\n // Older versions look at principals and see what happens\n try {\n const me = await findMe(store);\n\n isLoggedIn(me);\n } catch (e) {\n const status = e?._status;\n\n if ( status === 404 ) {\n noAuth();\n } else {\n if ( status === 401 ) {\n notLoggedIn();\n } else {\n store.commit('setError', { error: e, locationError: new Error('Auth Middleware') });\n }\n\n return;\n }\n }\n }\n\n store.dispatch('gcStartIntervals');\n }\n\n const backTo = window.localStorage.getItem(BACK_TO);\n\n if (backTo) {\n window.localStorage.removeItem(BACK_TO);\n\n window.location.href = backTo;\n }\n\n // GC should be notified of route change before any find/get request is made that might be used for that page\n store.dispatch('gcRouteChanged', route);\n\n // Load stuff\n let localCheckResource = false;\n\n await applyProducts(store, $plugin);\n\n // Setup a beforeEach hook once to keep track of the current product\n if ( !beforeEachSetup ) {\n beforeEachSetup = true;\n // This only needs to happen when beforeEach hook hasn't run (the initial load)\n localCheckResource = true;\n\n store.app.router.beforeEach((to, from, next) => {\n // NOTE - This beforeEach runs AFTER this middleware. So anything in this middleware that requires it must set it manually\n let redirected = setProduct(store, to, redirect);\n\n if (redirected) {\n return redirected();\n }\n\n redirected = invalidResource(store, to, redirect);\n\n if (redirected) {\n return redirected();\n }\n\n next();\n });\n\n // Call it for the initial pageload\n const redirected = setProduct(store, route, redirect);\n\n if (redirected) {\n return redirected();\n }\n\n store.app.router.afterEach((to, from) => {\n // Clear state used to record if back button was used for navigation\n setTimeout(() => {\n window._popStateDetected = false;\n }, 1);\n });\n }\n\n try {\n let clusterId = get(route, 'params.cluster');\n\n // Route can provide cluster ID via metadata\n if (!clusterId && route) {\n clusterId = getClusterFromRoute(route);\n }\n\n const pkg = getPackageFromRoute(route);\n const product = getProductFromRoute(route);\n\n const oldPkg = getPackageFromRoute(from);\n const oldProduct = getProductFromRoute(from);\n\n // Leave an old pkg where we weren't before?\n const oldPkgPlugin = oldPkg ? Object.values($plugin.getPlugins()).find((p) => p.name === oldPkg) : null;\n\n if (oldPkg && oldPkg !== pkg ) {\n // Execute anything optional the plugin wants to. For example resetting it's store to remove data\n await oldPkgPlugin.onLeave(store, {\n clusterId,\n product,\n oldProduct,\n oldIsExt: !!oldPkg\n });\n }\n\n // Sometimes this needs to happen before or alongside other things... but is always needed\n const always = [\n store.dispatch('loadManagement')\n ];\n\n // Entering a new package where we weren't before?\n const newPkgPlugin = pkg ? Object.values($plugin.getPlugins()).find((p) => p.name === pkg) : null;\n\n // Note - We can't block on oldPkg !== newPkg because on a fresh load the `from` route equals the `to` route\n if (pkg && (oldPkg !== pkg || from.fullPath === route.fullPath)) {\n // Execute mandatory store actions\n await Promise.all(always);\n\n // Execute anything optional the plugin wants to\n await newPkgPlugin.onEnter(store, {\n clusterId,\n product,\n oldProduct,\n oldIsExt: !!oldPkg\n });\n }\n\n if (!route.matched?.length) {\n // If there are no matching routes we could be trying to nav to a page belonging to a dynamic plugin which needs loading\n await Promise.all([\n ...always,\n ]);\n\n // If a plugin claims the route and is loaded correctly we'll get a route back\n const newLocation = await dynamicPluginLoader.check({ route, store });\n\n // If we have a new location, double check that it's actually valid\n const resolvedRoute = newLocation ? store.app.router.resolve(newLocation) : null;\n\n if (resolvedRoute?.route.matched.length) {\n // Note - don't use `redirect` or `store.app.route` (breaks feature by failing to run middleware in default layout)\n return next(newLocation);\n }\n }\n\n // Ensure that the activeNamespaceCache is updated given the change of context either from or to a place where it uses workspaces\n // When fleet moves to it's own package this should be moved to pkg onEnter/onLeave\n if ((oldProduct === FLEET_NAME || product === FLEET_NAME) && oldProduct !== product) {\n // See note above for store.app.router.beforeEach, need to setProduct manually, for the moment do this in a targeted way\n const redirected = setProduct(store, route, redirect);\n\n if (redirected) {\n return redirected();\n }\n\n store.commit('updateWorkspace', {\n value: store.getters['prefs/get'](WORKSPACE) || DEFAULT_WORKSPACE,\n getters: store.getters\n });\n }\n\n // Always run loadCluster, it handles 'unload' as well\n // Run them in parallel\n await Promise.all([\n ...always,\n store.dispatch('loadCluster', {\n id: clusterId,\n oldPkg: oldPkgPlugin,\n newPkg: newPkgPlugin,\n product,\n oldProduct,\n targetRoute: route\n })\n ]);\n\n if (localCheckResource) {\n const redirected = invalidResource(store, route, redirect);\n\n if (redirected) {\n return redirected();\n }\n }\n\n if (!clusterId) {\n clusterId = store.getters['defaultClusterId']; // This needs the cluster list, so no parallel\n const isSingleProduct = store.getters['isSingleProduct'];\n\n if (isSingleProduct?.afterLoginRoute) {\n const value = {\n name: 'c-cluster-product',\n ...isSingleProduct.afterLoginRoute,\n params: {\n cluster: clusterId,\n ...isSingleProduct.afterLoginRoute?.params\n },\n };\n\n await store.dispatch('prefs/set', {\n key: AFTER_LOGIN_ROUTE,\n value,\n });\n }\n }\n } catch (e) {\n if ( e.name === ClusterNotFoundError.name ) {\n return redirect(302, '/home');\n } if ( e.name === RedirectToError.name ) {\n return redirect(302, e.url);\n } else {\n // Sets error 500 if lost connection to API\n store.commit('setError', { error: e, locationError: new Error(store.getters['i18n/t']('nav.failWhale.authMiddleware')) });\n\n return redirect(302, '/fail-whale');\n }\n }\n}\n\nasync function findMe(store) {\n // First thing we do in loadManagement is fetch principals anyway.... so don't ?me=true here\n const principals = await store.dispatch('rancher/findAll', {\n type: NORMAN.PRINCIPAL,\n opt: {\n url: '/v3/principals',\n redirectUnauthorized: false,\n }\n });\n\n const me = findBy(principals, 'me', true);\n\n return me;\n}\n\nasync function tryInitialSetup(store, password = 'admin') {\n try {\n const res = await store.dispatch('auth/login', {\n provider: 'local',\n body: {\n username: 'admin',\n password\n },\n });\n\n return res._status === 200;\n } catch (e) {\n console.error('Error trying initial setup', e); // eslint-disable-line no-console\n\n return false;\n }\n}\n","import { ActionLocation, CardLocation, ExtensionPoint } from '@shell/core/types';\nimport { isMac } from '@shell/utils/platform';\nimport { ucFirst, randomStr } from '@shell/utils/string';\nimport {\n _EDIT, _CONFIG, _DETAIL, _LIST, _CREATE\n} from '@shell/config/query-params';\nimport { getProductFromRoute } from '@shell/middleware/authenticated';\nimport { isEqual } from '@shell/utils/object';\n\nfunction checkRouteProduct($route, locationConfigParam) {\n const product = getProductFromRoute($route);\n\n // alias for the homepage\n if (locationConfigParam === 'home' && $route.name === 'home') {\n return true;\n } else if (locationConfigParam === product) {\n return true;\n }\n\n return false;\n}\n\nfunction checkRouteMode({ name, query }, locationConfigParam) {\n if (locationConfigParam === _EDIT && query.mode && query.mode === _EDIT && !query.as) {\n return true;\n } else if (locationConfigParam === _CONFIG && query.as && query.as === _CONFIG) {\n return true;\n } else if (locationConfigParam === _DETAIL && !query.as && name.includes('-id') && (!query.mode || query?.mode !== _EDIT)) {\n return true;\n // alias to target all list views\n } else if (locationConfigParam === _LIST && !name.includes('-id') && name.includes('-resource')) {\n return true;\n // alias to target create views\n } else if (locationConfigParam === _CREATE && name.endsWith('-create')) {\n return true;\n }\n\n return false;\n}\n\nfunction checkExtensionRouteBinding($route, locationConfig, context) {\n // if no configuration is passed, consider it as global\n if (!Object.keys(locationConfig).length) {\n return true;\n }\n\n const { params } = $route;\n\n // \"params\" to be checked based on the locationConfig\n // This has become overloaded with mode and context\n const paramsToCheck = [\n 'product',\n 'resource',\n 'namespace',\n 'cluster',\n 'id',\n 'mode',\n 'path',\n 'hash',\n // url query params\n 'queryParam',\n // Custom context specific params provided by the extension, not to be confused with location params\n 'context',\n ];\n\n let res = true;\n\n for (let i = 0; i < paramsToCheck.length; i++) {\n const param = paramsToCheck[i];\n\n if (locationConfig[param]) {\n const asArray = Array.isArray(locationConfig[param]) ? locationConfig[param] : [locationConfig[param]];\n\n for (let x = 0; x < asArray.length; x++) {\n const locationConfigParam = asArray[x];\n\n if (locationConfigParam) {\n if (param === 'hash') {\n res = $route.hash ? $route.hash.includes(locationConfigParam) : false;\n // handle \"product\" in a separate way...\n } else if (param === 'product') {\n res = checkRouteProduct($route, locationConfigParam);\n // also handle \"mode\" in a separate way because it mainly depends on query params\n } else if (param === 'mode') {\n res = checkRouteMode($route, locationConfigParam);\n } else if (param === 'resource') {\n // Match exact resource but also allow resource of '*' to match any resource\n res = (params[param] && locationConfigParam === '*') || locationConfigParam === params[param];\n } else if (param === 'context') {\n // Need all keys and values to match\n res = isEqual(locationConfigParam, context);\n // evaluate queryParam in route\n } else if (param === 'queryParam') {\n res = isEqual(locationConfigParam, $route.query);\n // evaluate path in route\n } else if (param === 'path' && locationConfigParam.urlPath) {\n if (locationConfigParam.endsWith) {\n res = $route.path.endsWith(locationConfigParam.urlPath);\n } else if (!Object.keys(locationConfigParam).includes('exact') || locationConfigParam.exact) {\n res = locationConfigParam.urlPath === $route.path;\n } else {\n res = $route.path.includes(locationConfigParam.urlPath);\n }\n } else if (locationConfigParam === params[param]) {\n res = true;\n } else {\n res = false;\n }\n }\n\n // If a single location config param is good then this is an param (aka ['pods', 'configmap'] = pods or configmaps)\n if (res) {\n break;\n }\n }\n\n // If a single param (set of location config params) is bad then this is not an acceptable location\n if (!res) {\n break;\n }\n }\n }\n\n return res;\n}\n\nexport function getApplicableExtensionEnhancements(pluginCtx, actionType, uiArea, currRoute, translationCtx = pluginCtx, context) {\n const extensionEnhancements = [];\n\n // gate it so that we prevent errors on older versions of dashboard\n if (pluginCtx.$plugin?.getUIConfig) {\n const actions = pluginCtx.$plugin.getUIConfig(actionType, uiArea);\n\n actions.forEach((action, i) => {\n if (checkExtensionRouteBinding(currRoute, action.locationConfig, context || {})) {\n // ADD CARD PLUGIN UI ENHANCEMENT\n if (actionType === ExtensionPoint.CARD) {\n // intercept to apply translation\n if (uiArea === CardLocation.CLUSTER_DASHBOARD_CARD && action.labelKey) {\n actions[i].label = translationCtx.t(action.labelKey);\n }\n\n // ADD ACTION PLUGIN UI ENHANCEMENT\n } else if (actionType === ExtensionPoint.ACTION) {\n // TABLE ACTION\n if (uiArea === ActionLocation.TABLE) {\n // intercept to apply translation\n if (action.labelKey) {\n actions[i].label = translationCtx.t(action.labelKey);\n }\n\n // bulkable flag\n actions[i].bulkable = actions[i].multiple || actions[i].bulkable;\n\n // populate action identifier to prevent errors\n if (!actions[i].action) {\n actions[i].action = `custom-table-action-${ randomStr(10).toLowerCase() }`;\n }\n }\n\n // extract simplified shortcut definition on plugin - HEADER ACTION\n if (uiArea === ActionLocation.HEADER && action.shortcut) {\n // if it's a string, then assume CTRL for windows and META for mac\n if (typeof action.shortcut === 'string') {\n actions[i].shortcutLabel = () => {\n return isMac ? `(\\u2318-${ action.shortcut.toUpperCase() })` : `(Ctrl-${ action.shortcut.toUpperCase() })`;\n };\n actions[i].shortcutKey = { windows: ['ctrl', action.shortcut], mac: ['meta', action.shortcut] };\n // correct check for an Object type in JS... handle the object passed\n } else if (typeof action.shortcut === 'object' && !Array.isArray(action.shortcut) && action.shortcut !== null) {\n actions[i].shortcutKey = action.shortcut;\n const keyboardCombo = isMac ? actions[i].shortcut.mac : actions[i].shortcut.windows ? actions[i].shortcut.windows : [];\n let scLabel = '';\n\n keyboardCombo.forEach((key, i) => {\n if (i < keyboardCombo.length - 1) {\n if (key === 'meta') {\n key = '\\u2318';\n } else {\n key = ucFirst(key);\n }\n scLabel += `${ key }`;\n scLabel += '-';\n } else {\n scLabel += `${ key.toUpperCase() }`;\n }\n });\n\n actions[i].shortcutLabel = () => {\n return `(${ scLabel })`;\n };\n }\n }\n }\n\n extensionEnhancements.push(actions[i]);\n }\n });\n }\n\n return extensionEnhancements;\n}\n","/*\n * Jexl\n * Copyright 2019 Tom Shawver\n */\n\nclass PromiseSync {\n constructor(fn) {\n fn(this._resolve.bind(this), this._reject.bind(this))\n }\n\n catch(rejected) {\n if (this.error) {\n try {\n this._resolve(rejected(this.error))\n } catch (e) {\n this._reject(e)\n }\n }\n return this\n }\n\n then(resolved, rejected) {\n if (!this.error) {\n try {\n this._resolve(resolved(this.value))\n } catch (e) {\n this._reject(e)\n }\n }\n if (rejected) this.catch(rejected)\n return this\n }\n\n _reject(error) {\n this.value = undefined\n this.error = error\n }\n\n _resolve(val) {\n if (val instanceof PromiseSync) {\n if (val.error) {\n this._reject(val.error)\n } else {\n this._resolve(val.value)\n }\n } else {\n this.value = val\n this.error = undefined\n }\n }\n}\n\nPromiseSync.all = vals =>\n new PromiseSync(resolve => {\n const resolved = vals.map(val => {\n while (val instanceof PromiseSync) {\n if (val.error) throw Error(val.error)\n val = val.value\n }\n return val\n })\n resolve(resolved)\n })\n\nPromiseSync.resolve = val => new PromiseSync(resolve => resolve(val))\n\nPromiseSync.reject = error =>\n new PromiseSync((resolve, reject) => reject(error))\n\nmodule.exports = PromiseSync\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".sources__container[data-v-5fa70040]{position:relative;display:block}.sources__container__cert[data-v-5fa70040]{display:grid;grid-template-columns:auto 150px;align-items:center;margin-bottom:10px}.sources__container__cert>.remove[data-v-5fa70040]{text-align:right}.sources__container>.remove[data-v-5fa70040]{position:absolute;padding:0;top:0;right:0}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","export * from \"-!../../../vue-style-loader/index.js??ref--10-oneOf-1-0!../../../@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./management.cattle.io.roletemplate.vue?vue&type=style&index=0&id=5050d908&prod&lang=scss&scoped=true&\"","// style-loader: Adds some css to the DOM by adding a \r\n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Bar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Bar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Bar.vue?vue&type=template&id=b4f4e2ae&scoped=true&\"\nimport script from \"./Bar.vue?vue&type=script&lang=js&\"\nexport * from \"./Bar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Bar.vue?vue&type=style&index=0&id=b4f4e2ae&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b4f4e2ae\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PercentageBar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PercentageBar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PercentageBar.vue?vue&type=template&id=620caa7e&scoped=true&\"\nimport script from \"./PercentageBar.vue?vue&type=script&lang=js&\"\nexport * from \"./PercentageBar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PercentageBar.vue?vue&type=style&index=0&id=620caa7e&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"620caa7e\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ConsumptionGauge.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ConsumptionGauge.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ConsumptionGauge.vue?vue&type=template&id=3f3d0a16&\"\nimport script from \"./ConsumptionGauge.vue?vue&type=script&lang=js&\"\nexport * from \"./ConsumptionGauge.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ConsumptionGauge.vue?vue&type=style&index=0&id=3f3d0a16&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (!_vm.card.isLoaded)?_c('div',{class:_vm.setLoading},[_c('i',{staticClass:\"icon-spinner animate-spin\"})]):_c('div',{staticClass:\"d-main\",class:_vm.setLoading},[_c('div',{staticClass:\"d-header\"},[_c('n-link',{attrs:{\"to\":_vm.card.link}},[_c('h1',[_vm._v(\" \"+_vm._s(_vm.t(_vm.card.title))+\" \")])])],1),_c('p',{directives:[{name:\"clean-html\",rawName:\"v-clean-html\",value:(_vm.t(_vm.card.description)),expression:\"t(card.description)\"}]}),_c('n-link',{staticClass:\"btn role-secondary\",attrs:{\"to\":_vm.card.cta}},[_vm._v(\" \"+_vm._s(_vm.t(_vm.card.linkText))+\" \")]),_c('hr'),_c('div',{staticClass:\"d-slot\"},[_c('h2',[_vm._v(_vm._s(_vm.t(_vm.card.slotTitle)))]),_vm._t(\"default\")],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Card.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Card.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Card.vue?vue&type=template&id=3335bcf8&scoped=true&\"\nimport script from \"./Card.vue?vue&type=script&lang=js&\"\nexport * from \"./Card.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Card.vue?vue&type=style&index=0&id=3335bcf8&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3335bcf8\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardView.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardView.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DashboardView.vue?vue&type=template&id=12f32b18&scoped=true&\"\nimport script from \"./DashboardView.vue?vue&type=script&lang=js&\"\nexport * from \"./DashboardView.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DashboardView.vue?vue&type=style&index=0&id=12f32b18&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"12f32b18\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.$fetchState.pending)?_c('Loading'):_c('div',{staticClass:\"container\"},[(!_vm.install)?_c('div',{staticClass:\"title p-10\"},[_c('div',{staticClass:\"logo mt-20 mb-10\"},[_c('img',{attrs:{\"src\":require(\"../../assets/icon-kubewarden.svg\"),\"height\":\"64\"}})]),_c('h1',{staticClass:\"mb-20\",attrs:{\"data-testid\":\"kw-install-title\"}},[_vm._v(\" \"+_vm._s(_vm.t(\"kubewarden.title\"))+\" \")]),_c('div',{staticClass:\"description\"},[_vm._v(\" \"+_vm._s(_vm.t(\"kubewarden.dashboard.description\"))+\" \")]),(!_vm.hasSchema)?_c('button',{staticClass:\"btn role-primary mt-20\",attrs:{\"data-testid\":\"kw-initial-install-button\"},on:{\"click\":function($event){_vm.install = true}}},[_vm._v(\" \"+_vm._s(_vm.t(\"kubewarden.dashboard.appInstall.button\"))+\" \")]):_vm._e()]):[(_vm.isAirgap)?[_c('Banner',{staticClass:\"mb-20 mt-20\",attrs:{\"color\":\"warning\"}},[_c('span',{attrs:{\"data-testid\":\"kw-install-ag-warning\"}},[_vm._v(_vm._s(_vm.t('kubewarden.dashboard.prerequisites.airGapped.warning')))])]),_c('Markdown',{model:{value:(_vm.docs.airgap),callback:function ($$v) {_vm.$set(_vm.docs, \"airgap\", $$v)},expression:\"docs.airgap\"}})]:[_c('InstallWizard',{ref:\"wizard\",attrs:{\"init-step-index\":_vm.initStepIndex,\"steps\":_vm.installSteps},scopedSlots:_vm._u([{key:\"certmanager\",fn:function(){return [_c('h2',{staticClass:\"mt-20 mb-10\",attrs:{\"data-testid\":\"kw-cm-title\"}},[_vm._v(\" \"+_vm._s(_vm.t(\"kubewarden.dashboard.prerequisites.certManager.title\"))+\" \")]),_c('p',{staticClass:\"mb-20\"},[_vm._v(\" \"+_vm._s(_vm.t(\"kubewarden.dashboard.prerequisites.certManager.description\"))+\" \")]),_c('p',{directives:[{name:\"clean-html\",rawName:\"v-clean-html\",value:(_vm.t('kubewarden.dashboard.prerequisites.certManager.manualStep', null, true)),expression:\"t('kubewarden.dashboard.prerequisites.certManager.manualStep', null, true)\"}]}),_c('CopyCode',{staticClass:\"m-10 p-10\",attrs:{\"data-testid\":\"kw-cm-copy-code\"}},[_vm._v(\" \"+_vm._s(_vm.t(\"kubewarden.dashboard.prerequisites.certManager.applyCommand\"))+\" \")]),_c('button',{staticClass:\"btn role-secondary\",attrs:{\"data-testid\":\"kw-cm-open-shell\",\"disabled\":!_vm.shellEnabled,\"type\":\"button\"},on:{\"shortkey\":function($event){return _vm.currentCluster.openShell()},\"click\":function($event){return _vm.currentCluster.openShell()}}},[_c('i',{staticClass:\"icon icon-terminal icon-lg\"}),_vm._v(_vm._s(_vm.t(\"kubewarden.dashboard.prerequisites.certManager.openShell\"))+\" \")]),_vm._t(\"default\",function(){return [_c('Banner',{staticClass:\"mb-20 mt-20\",attrs:{\"color\":\"info\",\"label\":_vm.t('kubewarden.dashboard.prerequisites.certManager.stepProgress')}})]})]},proxy:true},{key:\"install\",fn:function(){return [(!_vm.kubewardenRepo)?[_c('h2',{staticClass:\"mt-20 mb-10\",attrs:{\"data-testid\":\"kw-repo-title\"}},[_vm._v(\" \"+_vm._s(_vm.t(\"kubewarden.dashboard.prerequisites.repository.title\"))+\" \")]),_c('p',{staticClass:\"mb-20\"},[_vm._v(\" \"+_vm._s(_vm.t(\"kubewarden.dashboard.prerequisites.repository.description\"))+\" \")]),_c('AsyncButton',{attrs:{\"mode\":\"kubewardenRepository\",\"data-testid\":\"kw-repo-add-button\"},on:{\"click\":_vm.addRepository}})]:[_c('h2',{staticClass:\"mt-20 mb-10\",attrs:{\"data-testid\":\"kw-app-install-title\"}},[_vm._v(\" \"+_vm._s(_vm.t(\"kubewarden.dashboard.appInstall.title\"))+\" \")]),_c('p',{staticClass:\"mb-20\"},[_vm._v(\" \"+_vm._s(_vm.t(\"kubewarden.dashboard.appInstall.description\"))+\" \")]),_c('div',{staticClass:\"chart-route\"},[(!_vm.controllerChart && !_vm.reloadReady)?_c('Loading',{staticClass:\"mt-20\",attrs:{\"mode\":\"relative\"}}):(!_vm.controllerChart && _vm.reloadReady)?[_c('Banner',{attrs:{\"color\":\"warning\"}},[_c('span',{staticClass:\"mb-20\"},[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.dashboard.appInstall.reload' ))+\" \")]),_c('button',{staticClass:\"ml-10 btn btn-sm role-primary\",on:{\"click\":function($event){return _vm.reload()}}},[_vm._v(\" \"+_vm._s(_vm.t('generic.reload'))+\" \")])])]:[_c('button',{staticClass:\"btn role-primary mt-20\",attrs:{\"data-testid\":\"kw-app-install-button\",\"disabled\":!_vm.controllerChart},on:{\"click\":function($event){$event.preventDefault();return _vm.chartRoute.apply(null, arguments)}}},[_vm._v(\" \"+_vm._s(_vm.t(\"kubewarden.dashboard.appInstall.button\"))+\" \")])]],2)]]},proxy:true}],null,true)})]]],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('code',{directives:[{name:\"clean-tooltip\",rawName:\"v-clean-tooltip\",value:(_vm.tooltip),expression:\"tooltip\"}],staticClass:\"copy\",on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.clicked.apply(null, arguments)}}},[_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","// src/clipboard-polyfill/ClipboardItem/data-types.ts\nvar TEXT_PLAIN = \"text/plain\";\nvar TEXT_HTML = \"text/html\";\n\n// src/clipboard-polyfill/debug.ts\nvar debugLogImpl = (s) => {\n};\nfunction debugLog(s) {\n debugLogImpl(s);\n}\nfunction setDebugLog(logFn) {\n debugLogImpl = logFn;\n}\nvar showWarnings = true;\nfunction suppressWarnings() {\n showWarnings = false;\n}\nfunction shouldShowWarnings() {\n return showWarnings;\n}\nfunction warnOrLog() {\n (console.warn || console.log).apply(console, arguments);\n}\nvar warn = warnOrLog.bind(\"[clipboard-polyfill]\");\n\n// src/clipboard-polyfill/builtins/window-globalThis.ts\nvar originalWindow = typeof window === \"undefined\" ? void 0 : window;\nvar originalGlobalThis = typeof globalThis === \"undefined\" ? void 0 : globalThis;\n\n// src/clipboard-polyfill/builtins/promise-constructor.ts\nvar _a, _b, _c;\nvar promiseConstructorImpl = (_c = (_a = originalWindow) == null ? void 0 : _a.Promise) != null ? _c : (_b = originalGlobalThis) == null ? void 0 : _b.Promise;\nfunction getPromiseConstructor() {\n if (!promiseConstructorImpl) {\n throw new Error(\n \"No `Promise` implementation available for `clipboard-polyfill`. Consider using: https://github.com/lgarron/clipboard-polyfill#flat-file-version-with-promise-included\"\n );\n }\n return promiseConstructorImpl;\n}\n\n// src/clipboard-polyfill/builtins/builtin-globals.ts\nvar originalNavigator = typeof navigator === \"undefined\" ? void 0 : navigator;\nvar originalNavigatorClipboard = originalNavigator == null ? void 0 : originalNavigator.clipboard;\nvar _a2;\nvar originalNavigatorClipboardRead = (_a2 = originalNavigatorClipboard == null ? void 0 : originalNavigatorClipboard.read) == null ? void 0 : _a2.bind(\n originalNavigatorClipboard\n);\nvar _a3;\nvar originalNavigatorClipboardReadText = (_a3 = originalNavigatorClipboard == null ? void 0 : originalNavigatorClipboard.readText) == null ? void 0 : _a3.bind(\n originalNavigatorClipboard\n);\nvar _a4;\nvar originalNavigatorClipboardWrite = (_a4 = originalNavigatorClipboard == null ? void 0 : originalNavigatorClipboard.write) == null ? void 0 : _a4.bind(\n originalNavigatorClipboard\n);\nvar _a5;\nvar originalNavigatorClipboardWriteText = (_a5 = originalNavigatorClipboard == null ? void 0 : originalNavigatorClipboard.writeText) == null ? void 0 : _a5.bind(\n originalNavigatorClipboard\n);\nvar _a6;\nvar originalWindowClipboardItem = (_a6 = originalWindow) == null ? void 0 : _a6.ClipboardItem;\nvar promiseConstructor = getPromiseConstructor();\n\n// src/clipboard-polyfill/strategies/internet-explorer.ts\nvar ieWindow = originalWindow;\nfunction seemToBeInIE() {\n return typeof ClipboardEvent === \"undefined\" && typeof (ieWindow == null ? void 0 : ieWindow.clipboardData) !== \"undefined\" && typeof (ieWindow == null ? void 0 : ieWindow.clipboardData.setData) !== \"undefined\";\n}\nfunction writeTextIE(text) {\n if (!ieWindow.clipboardData) {\n return false;\n }\n var success = ieWindow.clipboardData.setData(\"Text\", text);\n if (success) {\n debugLog(\"writeTextIE worked\");\n }\n return success;\n}\nfunction readTextIE() {\n if (!ieWindow.clipboardData) {\n throw new Error(\"Cannot read IE clipboard Data \");\n }\n var text = ieWindow.clipboardData.getData(\"Text\");\n if (text === \"\") {\n throw new Error(\n \"Empty clipboard or could not read plain text from clipboard\"\n );\n }\n return text;\n}\n\n// src/clipboard-polyfill/strategies/dom.ts\nfunction copyListener(tracker, data, e) {\n debugLog(\"listener called\");\n tracker.success = true;\n for (var type in data) {\n var value = data[type];\n var clipboardData = e.clipboardData;\n clipboardData.setData(type, value);\n if (type === TEXT_PLAIN && clipboardData.getData(type) !== value) {\n debugLog(\"setting text/plain failed\");\n tracker.success = false;\n }\n }\n e.preventDefault();\n}\nfunction execCopy(data) {\n var tracker = { success: false };\n var listener = copyListener.bind(this, tracker, data);\n document.addEventListener(\"copy\", listener);\n try {\n document.execCommand(\"copy\");\n } finally {\n document.removeEventListener(\"copy\", listener);\n }\n return tracker.success;\n}\nfunction copyUsingTempSelection(e, data) {\n selectionSet(e);\n var success = execCopy(data);\n selectionClear();\n return success;\n}\nfunction copyUsingTempElem(data) {\n var tempElem = document.createElement(\"div\");\n tempElem.setAttribute(\"style\", \"-webkit-user-select: text !important\");\n tempElem.textContent = \"temporary element\";\n document.body.appendChild(tempElem);\n var success = copyUsingTempSelection(tempElem, data);\n document.body.removeChild(tempElem);\n return success;\n}\nfunction copyTextUsingDOM(str) {\n debugLog(\"copyTextUsingDOM\");\n var tempElem = document.createElement(\"div\");\n tempElem.setAttribute(\"style\", \"-webkit-user-select: text !important\");\n var spanParent = tempElem;\n if (tempElem.attachShadow) {\n debugLog(\"Using shadow DOM.\");\n spanParent = tempElem.attachShadow({ mode: \"open\" });\n }\n var span = document.createElement(\"span\");\n span.innerText = str;\n spanParent.appendChild(span);\n document.body.appendChild(tempElem);\n selectionSet(span);\n var result = document.execCommand(\"copy\");\n selectionClear();\n document.body.removeChild(tempElem);\n return result;\n}\nfunction selectionSet(elem) {\n var sel = document.getSelection();\n if (sel) {\n var range = document.createRange();\n range.selectNodeContents(elem);\n sel.removeAllRanges();\n sel.addRange(range);\n }\n}\nfunction selectionClear() {\n var sel = document.getSelection();\n if (sel) {\n sel.removeAllRanges();\n }\n}\n\n// src/clipboard-polyfill/implementations/write-fallback.ts\nfunction writeFallback(stringItem) {\n var hasTextPlain = TEXT_PLAIN in stringItem;\n if (seemToBeInIE()) {\n if (!hasTextPlain) {\n throw new Error(\"No `text/plain` value was specified.\");\n }\n if (writeTextIE(stringItem[TEXT_PLAIN])) {\n return true;\n } else {\n throw new Error(\"Copying failed, possibly because the user rejected it.\");\n }\n }\n if (execCopy(stringItem)) {\n debugLog(\"regular execCopy worked\");\n return true;\n }\n if (navigator.userAgent.indexOf(\"Edge\") > -1) {\n debugLog('UA \"Edge\" => assuming success');\n return true;\n }\n if (copyUsingTempSelection(document.body, stringItem)) {\n debugLog(\"copyUsingTempSelection worked\");\n return true;\n }\n if (copyUsingTempElem(stringItem)) {\n debugLog(\"copyUsingTempElem worked\");\n return true;\n }\n if (copyTextUsingDOM(stringItem[TEXT_PLAIN])) {\n debugLog(\"copyTextUsingDOM worked\");\n return true;\n }\n return false;\n}\n\n// src/clipboard-polyfill/promise/promise-compat.ts\nfunction promiseRecordMap(keys, f) {\n var promiseList = [];\n for (var i in keys) {\n var key = keys[i];\n promiseList.push(f(key));\n }\n return promiseConstructor.all(promiseList).then((vList) => {\n var dataOut = {};\n for (var i2 = 0; i2 < keys.length; i2++) {\n dataOut[keys[i2]] = vList[i2];\n }\n return dataOut;\n });\n}\nvar voidPromise = promiseConstructor.resolve();\nvar truePromiseFn = () => promiseConstructor.resolve(true);\nvar falsePromise = promiseConstructor.resolve(false);\nfunction rejectThrownErrors(executor) {\n return new promiseConstructor((resolve, reject) => {\n try {\n resolve(executor());\n } catch (e) {\n reject(e);\n }\n });\n}\n\n// src/clipboard-polyfill/implementations/text.ts\nfunction stringToStringItem(s) {\n var stringItem = {};\n stringItem[TEXT_PLAIN] = s;\n return stringItem;\n}\nfunction writeText(s) {\n return rejectThrownErrors(() => {\n if (originalNavigatorClipboardWriteText) {\n debugLog(\"Using `navigator.clipboard.writeText()`.\");\n return originalNavigatorClipboardWriteText(s).catch(\n writeTextStringFallback\n );\n }\n return promiseConstructor.resolve(writeTextStringFallback(s));\n });\n}\nfunction writeTextStringFallback(s) {\n if (!writeFallback(stringToStringItem(s))) {\n throw new Error(\"writeText() failed\");\n }\n}\nfunction readText() {\n return rejectThrownErrors(() => {\n if (originalNavigatorClipboardReadText) {\n debugLog(\"Using `navigator.clipboard.readText()`.\");\n return originalNavigatorClipboardReadText();\n }\n if (seemToBeInIE()) {\n var result = readTextIE();\n return promiseConstructor.resolve(result);\n }\n throw new Error(\"Read is not supported in your browser.\");\n });\n}\n\n// src/clipboard-polyfill/ClipboardItem/check.ts\nfunction hasItemWithType(clipboardItems, typeName) {\n for (var i in clipboardItems) {\n var item = clipboardItems[i];\n if (item.types.indexOf(typeName) !== -1) {\n return true;\n }\n }\n return false;\n}\n\n// src/clipboard-polyfill/ClipboardItem/ClipboardItemPolyfill.ts\nfunction ClipboardItemPolyfillImpl(items, options) {\n var _a7;\n var types = Object.keys(items);\n var _items = {};\n for (var type in items) {\n var item = items[type];\n if (typeof item === \"string\") {\n _items[type] = stringToBlob(type, item);\n } else {\n _items[type] = item;\n }\n }\n var presentationStyle = (_a7 = options == null ? void 0 : options.presentationStyle) != null ? _a7 : \"unspecified\";\n function getType(type2) {\n return promiseConstructor.resolve(_items[type2]);\n }\n return {\n types,\n presentationStyle,\n getType\n };\n}\nvar ClipboardItemPolyfill = ClipboardItemPolyfillImpl;\n\n// src/clipboard-polyfill/ClipboardItem/convert.ts\nfunction stringToBlob(type, str) {\n return new Blob([str], {\n type\n });\n}\nfunction blobToString(blob) {\n return new promiseConstructor((resolve, reject) => {\n var fileReader = new FileReader();\n fileReader.addEventListener(\"load\", () => {\n var result = fileReader.result;\n if (typeof result === \"string\") {\n resolve(result);\n } else {\n reject(\"could not convert blob to string\");\n }\n });\n fileReader.readAsText(blob);\n });\n}\nfunction clipboardItemToGlobalClipboardItem(clipboardItem) {\n return promiseRecordMap(clipboardItem.types, function(type) {\n return clipboardItem.getType(type);\n }).then((items) => {\n return new Promise((resolve, reject) => {\n var options = {};\n if (clipboardItem.presentationStyle) {\n options.presentationStyle = clipboardItem.presentationStyle;\n }\n if (originalWindowClipboardItem) {\n resolve(new originalWindowClipboardItem(items, options));\n } else {\n reject(\"window.ClipboardItem is not defined\");\n }\n });\n });\n}\nfunction textToClipboardItem(text) {\n var items = {};\n items[TEXT_PLAIN] = stringToBlob(text, TEXT_PLAIN);\n return new ClipboardItemPolyfill(items);\n}\nfunction getTypeAsString(clipboardItem, type) {\n return clipboardItem.getType(type).then((text) => {\n return blobToString(text);\n });\n}\nfunction toStringItem(data) {\n return promiseRecordMap(data.types, function(type) {\n return getTypeAsString(data, type);\n });\n}\n\n// src/clipboard-polyfill/implementations/blob.ts\nfunction write(data) {\n return rejectThrownErrors(() => {\n if (originalNavigatorClipboardWrite && originalWindowClipboardItem) {\n var originalNavigatorClipboardWriteCached = originalNavigatorClipboardWrite;\n debugLog(\"Using `navigator.clipboard.write()`.\");\n return promiseConstructor.all(data.map(clipboardItemToGlobalClipboardItem)).then(\n (globalClipboardItems) => {\n return originalNavigatorClipboardWriteCached(globalClipboardItems).then(truePromiseFn).catch((e) => {\n if (!hasItemWithType(data, TEXT_PLAIN) && !hasItemWithType(data, TEXT_HTML)) {\n throw e;\n }\n return falsePromise;\n });\n }\n );\n }\n return falsePromise;\n }).then((success) => {\n if (success) {\n return voidPromise;\n }\n var hasTextPlain = hasItemWithType(data, TEXT_PLAIN);\n if (shouldShowWarnings() && !hasTextPlain) {\n debugLog(\n \"clipboard.write() was called without a `text/plain` data type. On some platforms, this may result in an empty clipboard. Call suppressWarnings() to suppress this warning.\"\n );\n }\n return toStringItem(data[0]).then((stringItem) => {\n if (!writeFallback(stringItem)) {\n throw new Error(\"write() failed\");\n }\n });\n });\n}\nfunction read() {\n return rejectThrownErrors(() => {\n if (originalNavigatorClipboardRead) {\n debugLog(\"Using `navigator.clipboard.read()`.\");\n return originalNavigatorClipboardRead();\n }\n return readText().then((text) => {\n return [textToClipboardItem(text)];\n });\n });\n}\nexport {\n ClipboardItemPolyfill as ClipboardItem,\n read,\n readText,\n setDebugLog,\n suppressWarnings,\n write,\n writeText\n};\n//# sourceMappingURL=clipboard-polyfill.es6.js.map\n","import * as Clipboard from 'clipboard-polyfill';\n\nexport async function copyTextToClipboard(text) {\n await Clipboard.writeText(text);\n}\n","\n\n\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./CopyCode.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./CopyCode.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CopyCode.vue?vue&type=template&id=5f6f7450&scoped=true&\"\nimport script from \"./CopyCode.vue?vue&type=script&lang=js&\"\nexport * from \"./CopyCode.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CopyCode.vue?vue&type=style&index=0&id=5f6f7450&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5f6f7450\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',{staticClass:\"header mt-20 mb-20\"},[_c('div',{staticClass:\"title\"},[(_vm.showTitle)?[_c('div',{staticClass:\"product\"},[_vm._m(0),_c('div',{staticClass:\"subtitle mr-20\"},[_c('h2',{staticClass:\"mb-0\"},[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.title'))+\" \")]),_c('span',{staticClass:\"subtext\"},[_vm._v(_vm._s(_vm.t('kubewarden.dashboard.install')))])])])]:_vm._e(),(_vm.steps.length > 1)?_c('div',{staticClass:\"subtitle\"},[_c('h2',{staticClass:\"mb-0\"},[_vm._v(\" \"+_vm._s(_vm.t('wizard.step', {number: _vm.activeStepIndex + 1}))+\" \")]),_vm._t(\"bannerSubtext\",function(){return [_c('span',{staticClass:\"subtext\"},[_vm._v(_vm._s(_vm.activeStep.label))])]})],2):_vm._e()],2),(_vm.steps.length > 1)?[_c('div',{staticClass:\"step-sequence\"},[_c('ul',{staticClass:\"steps\",attrs:{\"tabindex\":\"0\"}},[_vm._l((_vm.steps),function(step,idx){return [_c('li',{key:step.name + 'li',class:{\n step: true,\n active: step.name === _vm.activeStep.name,\n disabled: !_vm.isAvailable(step),\n },attrs:{\"id\":step.name,\"role\":\"presentation\"}},[_c('span',{staticClass:\"controls\",attrs:{\"aria-controls\":'step' + idx + 1,\"aria-selected\":step.name === _vm.activeStep.name,\"role\":\"tab\"},on:{\"click\":function($event){$event.preventDefault();return _vm.goToStep(idx + 1, true)}}},[_c('span',{staticClass:\"icon icon-lg\",class:{\n 'icon-dot': step.name === _vm.activeStep.name,\n 'icon-dot-open': step.name !== _vm.activeStep.name,\n }}),_c('span',[_vm._v(\" \"+_vm._s(step.label)+\" \")])])]),(idx !== _vm.steps.length - 1)?_c('div',{key:step.name,staticClass:\"divider\"}):_vm._e()]})],2)])]:_vm._e()],2),_vm._t(\"stepContainer mt-20\",function(){return [_vm._l((_vm.steps),function(step){return [(step.name === _vm.activeStep.name || step.hidden)?_c('div',{key:step.name,staticClass:\"step-container\",class:{ hide: step.name !== _vm.activeStep.name && step.hidden }},[_vm._t(step.name,null,{\"step\":step})],2):_vm._e()]})]},{\"activeStep\":_vm.activeStep})],2)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"product-image\"},[_c('img',{staticClass:\"logo\",attrs:{\"src\":require(\"../assets/icon-kubewarden.svg\")}})])\n}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./InstallWizard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./InstallWizard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./InstallWizard.vue?vue&type=template&id=438d868c&scoped=true&\"\nimport script from \"./InstallWizard.vue?vue&type=script&lang=js&\"\nexport * from \"./InstallWizard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./InstallWizard.vue?vue&type=style&index=0&id=438d868c&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"438d868c\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./InstallView.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./InstallView.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./InstallView.vue?vue&type=template&id=28ec5865&scoped=true&\"\nimport script from \"./InstallView.vue?vue&type=script&lang=js&\"\nexport * from \"./InstallView.vue?vue&type=script&lang=js&\"\nimport style0 from \"./InstallView.vue?vue&type=style&index=0&id=28ec5865&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"28ec5865\",\n null\n \n)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=272d1823&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('PolicyReporter')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.$fetchState.pending)?_c('Loading'):_c('div',[(!_vm.hasPolicyServerSchema)?[_c('div',[_c('h1',{staticClass:\"mb-20\"},[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.policyReporter.title'))+\" \")]),_c('Banner',{staticClass:\"mt-20 mb-20\",attrs:{\"label\":_vm.t('kubewarden.policyReporter.noSchema.banner'),\"color\":\"error\",\"data-testid\":\"kw-pr-noschema-banner\"}}),_c('div',{staticClass:\"install-route\"},[_c('n-link',{attrs:{\"to\":_vm.rootKubewardenRoute()}},[_c('button',{staticClass:\"btn role-primary mt-20\"},[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.policyReporter.noSchema.link'))+\" \")])])],1)],1)]:(!_vm.canShowReporter)?[_c('Banner',{staticClass:\"mt-20 mb-20\",attrs:{\"color\":\"error\",\"data-testid\":\"kw-pr-incompatibile-banner\"}},[_c('p',[_vm._v(_vm._s(_vm.t('kubewarden.policyReporter.incompatible.banner')))]),(_vm.controllerVersion)?_c('p',{staticClass:\"mt-10\",attrs:{\"data-testid\":\"kw-pr-controller-version-badge\"}},[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.policyReporter.incompatible.current'))+\": \"),_c('span',{staticClass:\"version-badge\"},[_vm._v(_vm._s(_vm.controllerVersion))])]):_vm._e()])]:(_vm.canShowReporter)?[(!_vm.reporterCrds)?[_c('Banner',{attrs:{\"label\":_vm.t('kubewarden.policyReporter.incompatible.noCrds.banner'),\"data-testid\":\"kw-pr-no-crds-banner\",\"color\":\"error\"}})]:[(!_vm.reporterReportingService)?[_c('Banner',{attrs:{\"label\":_vm.t('kubewarden.policyReporter.service.main.banner.unavailable'),\"data-testid\":\"kw-pr-main-service-unavailable-banner\",\"color\":\"warning\"}})]:(!_vm.reporterUIService)?[_c('Banner',{attrs:{\"label\":_vm.t('kubewarden.policyReporter.service.ui.banner.unavailable'),\"data-testid\":\"kw-pr-ui-service-unavailable-banner\",\"color\":\"warning\"}})]:_vm._e(),(_vm.reporterUrl)?[_c('div',[_c('div',{staticClass:\"reporter__header mb-20\"},[_c('div',{staticClass:\"reporter__external-link\"},[_c('a',{attrs:{\"href\":_vm.reporterUrl,\"target\":\"_blank\",\"rel\":\"noopener nofollow\",\"data-testid\":\"kw-pr-reporter-link\"}},[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.policyReporter.link'))+\" \"),_c('i',{staticClass:\"icon icon-external-link\"})])])]),(_vm.reporterDeploymentState && _vm.reporterDeploymentState !== 'active')?[_c('Banner',{attrs:{\"label\":_vm.t('kubewarden.policyReporter.deployment.banner.unavailable', { state: _vm.reporterDeploymentState }),\"color\":\"warning\"}})]:[_c('div',{staticClass:\"reporter__container\"},[_c('iframe',{ref:\"frame\",attrs:{\"src\":_vm.reporterUrl,\"frameborder\":\"0\",\"data-testid\":\"kw-pr-iframe\"}})])]],2)]:_vm._e()]]:_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { mapGetters } from 'vuex';\nimport { allHashSettled } from '@shell/utils/promise';\n\nexport default {\n computed: { ...mapGetters(['currentCluster']) },\n data() {\n return { isLoadingSecondaryResources: false };\n },\n methods: {\n /**\n *\n * Function resourceManagerFetchSecondaryResources\n * This method is used to fetch what is called \"secondary resources\", which can be defined as resources that are needed to populate\n * the page/component itself (ex: used as options on a Select) but don't need to be put into Vuex store or watched to get constant updates.\n * This method allows to fetch resources for a given namespace to reduce the amount of results instead of needing to fetch all and filtering afterwards.\n *\n *\n * @param {String} resourceData.namespace - Namespace identifier\n * @param {Object} resourceData.data - Object containing info about the data needed to be fetched and how it should be parsed. Note: The KEY NEEDS to be the resource TYPE!\n * @param {Array} resourceData.data[TYPE].applyTo - The array of operations needed to be performed for the specific data TYPE\n * @param {String} resourceData.data[TYPE].applyTo[x].var - The 'this' property name that should be populated with the data fetched\n * @param {Boolean} resourceData.data[TYPE].applyTo[x].classify - Whether the data fetched should have a model applied to it\n * @param {Function} resourceData.data[TYPE].applyTo[x].parsingFunc - Optional parsing function if the fetched data needs to be parsed\n * @param {Boolean} onlyNamespaced - Only fetch namespaced resources\n */\n async resourceManagerFetchSecondaryResources(resourceData, onlyNamespaced = false) {\n const requests = {};\n const namespace = resourceData.namespace;\n\n // Only fetch types if the user is allowed to...\n Object.keys(resourceData.data).forEach((type) => {\n const schema = this.$store.getters['cluster/schemaFor'](type);\n\n if (schema) {\n let url = schema.links.collection;\n\n if (schema?.attributes?.namespaced && namespace) {\n url = `${ url }/${ namespace }`;\n } else if (onlyNamespaced) {\n // Type isn't namespaced and we've been requested to only fetch namespaced types\n return;\n }\n\n requests[type] = this.$store.dispatch('cluster/request', { url });\n }\n });\n\n if (Object.keys(requests).length) {\n // this is the flag/variable that we need to apply to all places that rely on this data. Ex: LabeledSelect\n this.isLoadingSecondaryResources = true;\n const hash = await allHashSettled(requests);\n const types = Object.keys(hash);\n\n for (let i = 0; i < types.length; i++) {\n const type = types[i];\n const status = hash[type].status;\n // if it's namespaced, we get the data on 'items' prop, for non-namespaced it's 'data' prop...\n const requestData = hash[type].value.items || hash[type].value.data || hash[type].value;\n\n if (status === 'fulfilled' && resourceData.data[type] && resourceData.data[type].applyTo?.length) {\n for (let y = 0; y < resourceData.data[type].applyTo.length; y++) {\n const apply = resourceData.data[type].applyTo[y];\n let resources = requestData;\n\n if (apply.classify) {\n resources = await this.$store.dispatch('cluster/createMany', requestData);\n }\n\n if (apply.parsingFunc) {\n this[apply.var] = apply.parsingFunc(resources);\n } else {\n this[apply.var] = resources;\n }\n }\n } else if (status === 'rejected') {\n console.error(`Resource Manager - secondary data request for type ${ type } has failed`, status.error); // eslint-disable-line no-console\n }\n }\n\n this.isLoadingSecondaryResources = false;\n }\n },\n\n /**\n * Clear the cached secondary resources\n *\n * @param {*} resourceData See resourceManagerFetchSecondaryResources\n * @param {*} onlyNamespaced Clear only namespaced resources\n */\n resourceManagerClearSecondaryResources(resourceData, onlyNamespaced = false) {\n Object.keys(resourceData.data).forEach((type) => {\n const schema = this.$store.getters['cluster/schemaFor'](type);\n\n if (schema) {\n if (!schema?.attributes?.namespaced && onlyNamespaced) {\n // resource isn't namespaced and we're only interested in namespaced resources\n return;\n }\n\n for (let y = 0; y < resourceData.data[type].applyTo.length; y++) {\n const apply = resourceData.data[type].applyTo[y];\n\n this[apply.var] = [];\n }\n }\n });\n }\n },\n};\n","\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=72952751&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=72952751&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"72952751\",\n null\n \n)\n\nexport default component.exports","\nimport PolicyReporter from '../../../../../components/PolicyReporter/index.vue';\n\nexport default {\n name: 'KubewardenResourcedList',\n components: { PolicyReporter },\n};\n","import mod from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./policy-reporter.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./policy-reporter.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./policy-reporter.vue?vue&type=template&id=3096ae67&\"\nimport script from \"./policy-reporter.vue?vue&type=script&lang=ts&\"\nexport * from \"./policy-reporter.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('ResourceList')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.namespaceFilterRequired)?_c('IconMessage',{attrs:{\"vertical\":true,\"subtle\":false,\"icon\":\"icon-filter_alt\"},scopedSlots:_vm._u([{key:\"message\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.t('resourceList.nsFiltering'))+\" \")]},proxy:true}],null,false,4238627989)}):_c('div',[(_vm.showMasthead)?_c('Masthead',{attrs:{\"type-display\":_vm.customTypeDisplay,\"schema\":_vm.schema,\"resource\":_vm.resource,\"show-incremental-loading-indicator\":_vm.showIncrementalLoadingIndicator,\"load-resources\":_vm.loadResources,\"load-indeterminate\":_vm.loadIndeterminate}},[_c('template',{slot:\"extraActions\"},[_vm._t(\"extraActions\")],2)],2):_vm._e(),_c('ExtensionPanel',{attrs:{\"resource\":{},\"type\":_vm.extensionType,\"location\":_vm.extensionLocation}}),(_vm.hasListComponent)?_c('div',[_c(_vm.listComponent,_vm._b({tag:\"component\",attrs:{\"incremental-loading-indicator\":_vm.showIncrementalLoadingIndicator,\"rows\":_vm.rows}},'component',_vm.$data,false))],1):_c('ResourceTable',{attrs:{\"schema\":_vm.schema,\"rows\":_vm.rows,\"loading\":_vm.loading,\"headers\":_vm.headers,\"group-by\":_vm.groupBy,\"has-advanced-filtering\":_vm.hasAdvancedFiltering,\"adv-filter-hide-labels-as-cols\":_vm.advFilterHideLabelsAsCols,\"adv-filter-prevent-filtering-labels\":_vm.advFilterPreventFilteringLabels,\"use-query-params-for-simple-filtering\":_vm.useQueryParamsForSimpleFiltering,\"force-update-live-and-delayed\":_vm.forceUpdateLiveAndDelayed}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('header',[_vm._t(\"typeDescription\",function(){return [_c('TypeDescription',{attrs:{\"resource\":_vm.resource}})]}),_c('div',{staticClass:\"title\"},[_c('h1',{staticClass:\"m-0\"},[_vm._v(\" \"+_vm._s(_vm._typeDisplay)+\" \"),(_vm.isExplorer)?_c('Favorite',{attrs:{\"resource\":_vm.favoriteResource || _vm.resource}}):_vm._e()],1),(_vm.showIncrementalLoadingIndicator)?_c('ResourceLoadingIndicator',{attrs:{\"resources\":_vm.loadResources,\"indeterminate\":_vm.loadIndeterminate}}):_vm._e()],1),_c('div',{staticClass:\"actions-container\"},[_vm._t(\"actions\",function(){return [_c('div',{staticClass:\"actions\"},[_vm._t(\"extraActions\"),_vm._t(\"createButton\",function(){return [(_vm.hasEditComponent && _vm._isCreatable)?_c('n-link',{staticClass:\"btn role-primary\",attrs:{\"to\":_vm._createLocation,\"data-testid\":_vm.componentTestid+'-create'}},[_vm._v(\" \"+_vm._s(_vm._createButtonlabel)+\" \")]):(_vm._isYamlCreatable)?_c('n-link',{staticClass:\"btn role-primary\",attrs:{\"to\":_vm._yamlCreateLocation,\"data-testid\":_vm.componentTestid+'-create-yaml'}},[_vm._v(\" \"+_vm._s(_vm.t(\"resourceList.head.createFromYaml\"))+\" \")]):_vm._e()]})],2)]})],2)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('i',{staticClass:\"favorite icon\",class:{'icon-star-open': !_vm.isFavorite, 'icon-star': _vm.isFavorite},attrs:{\"tabindex\":0,\"aria-checked\":!!_vm.isFavorite,\"aria-role\":\"button\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.toggle.apply(null, arguments)},\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;$event.preventDefault();return _vm.toggle.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"space\",32,$event.key,[\" \",\"Spacebar\"]))return null;$event.preventDefault();return _vm.toggle.apply(null, arguments)}]}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Favorite.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Favorite.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Favorite.vue?vue&type=template&id=f74a378a&scoped=true&\"\nimport script from \"./Favorite.vue?vue&type=script&lang=js&\"\nexport * from \"./Favorite.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Favorite.vue?vue&type=style&index=0&id=f74a378a&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f74a378a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.typeDescriptionKey)?_c('Banner',{staticClass:\"type-banner mb-20 mt-0\",attrs:{\"color\":\"info\",\"closable\":true,\"label-key\":_vm.typeDescriptionKey},on:{\"close\":_vm.hideTypeDescription}}):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./TypeDescription.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./TypeDescription.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TypeDescription.vue?vue&type=template&id=23a42aff&\"\nimport script from \"./TypeDescription.vue?vue&type=script&lang=js&\"\nexport * from \"./TypeDescription.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.count && !_vm.haveAll)?_c('div',{staticClass:\"ml-10 resource-loading-indicator\"},[_c('div',{staticClass:\"inner\"},[_c('div',{staticClass:\"resource-loader\"},[_c('div',{staticClass:\"rl-bg\"},[_c('i',{staticClass:\"icon icon-spinner icon-spin\"}),_c('span',[_vm._v(_vm._s(_vm.t( 'resourceLoadingIndicator.loading' ))+\" \"),(!_vm.indeterminate)?_c('span',[_vm._v(_vm._s(_vm.count)+\" / \"+_vm._s(_vm.total))]):_vm._e()])])]),_c('div',{staticClass:\"resource-loader\",style:({width: _vm.width})},[_c('div',{staticClass:\"rl-fg\"},[_c('i',{staticClass:\"icon icon-spinner icon-spin\"}),_c('span',[_vm._v(_vm._s(_vm.t( 'resourceLoadingIndicator.loading' ))+\" \"),(!_vm.indeterminate)?_c('span',[_vm._v(_vm._s(_vm.count)+\" / \"+_vm._s(_vm.total))]):_vm._e()])])])])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ResourceLoadingIndicator.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ResourceLoadingIndicator.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ResourceLoadingIndicator.vue?vue&type=template&id=6457c305&scoped=true&\"\nimport script from \"./ResourceLoadingIndicator.vue?vue&type=script&lang=js&\"\nexport * from \"./ResourceLoadingIndicator.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ResourceLoadingIndicator.vue?vue&type=style&index=0&id=6457c305&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6457c305\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Masthead.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Masthead.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Masthead.vue?vue&type=template&id=c734c0f4&scoped=true&\"\nimport script from \"./Masthead.vue?vue&type=script&lang=js&\"\nexport * from \"./Masthead.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Masthead.vue?vue&type=style&index=0&id=c734c0f4&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c734c0f4\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"message-icon\",class:{'vertical': _vm.vertical, 'subtle': _vm.subtle}},[_c('i',{staticClass:\"icon\",class:{ [_vm.icon]: true, [_vm.iconState]: !!_vm.iconState}}),_c('div',{staticClass:\"message\"},[_vm._t(\"message\",function(){return [(_vm.messageKey)?[_vm._v(\" \"+_vm._s(_vm.t(_vm.messageKey))+\" \")]:[_vm._v(\" \"+_vm._s(_vm.message)+\" \")]]})],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./IconMessage.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./IconMessage.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./IconMessage.vue?vue&type=template&id=01996ade&scoped=true&\"\nimport script from \"./IconMessage.vue?vue&type=script&lang=js&\"\nexport * from \"./IconMessage.vue?vue&type=script&lang=js&\"\nimport style0 from \"./IconMessage.vue?vue&type=style&index=0&id=01996ade&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"01996ade\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.extensionData.length)?_c('div',_vm._l((_vm.extensionData),function(item,i){return _c('div',{key:`extensionData${_vm.location}${i}`},[_c(item.component,{tag:\"component\",attrs:{\"resource\":_vm.resource}})],1)}),0):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ExtensionPanel.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ExtensionPanel.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ExtensionPanel.vue?vue&type=template&id=1a394d3c&\"\nimport script from \"./ExtensionPanel.vue?vue&type=script&lang=js&\"\nexport * from \"./ExtensionPanel.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n \n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=02ac34ae&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=02ac34ae&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"02ac34ae\",\n null\n \n)\n\nexport default component.exports","\nimport ResourceList from '@shell/components/ResourceList/index.vue';\n\nexport default {\n name: 'KubewardenResourcedList',\n components: { ResourceList },\n};\n","import mod from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=71a8ef42&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('ResourceDetail')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.$fetchState.pending || _vm.notFound)?_c('Loading'):_c('div',[(_vm.showMasthead)?_c('Masthead',{attrs:{\"resource\":_vm.resource,\"value\":_vm.liveModel,\"mode\":_vm.mode,\"real-mode\":_vm.realMode,\"as\":_vm.as,\"has-graph\":_vm.hasGraph,\"has-detail\":_vm.hasCustomDetail,\"has-edit\":_vm.hasCustomEdit,\"can-view-yaml\":_vm.canViewYaml,\"resource-subtype\":_vm.resourceSubtype,\"parent-route-override\":_vm.parentRouteOverride,\"store-override\":_vm.storeOverride}},[(_vm.isView && _vm.isDetail)?_c('DetailTop',{attrs:{\"value\":_vm.liveModel}}):_vm._e()],1):_vm._e(),(_vm.isGraph && _vm.canViewChart)?_c('ForceDirectedTreeChart',{attrs:{\"data\":_vm.chartData,\"fdc-config\":_vm.getGraphConfig}}):(_vm.isYaml)?_c('ResourceYaml',{ref:\"resourceyaml\",class:{'flex-content': _vm.flexContent},attrs:{\"mode\":_vm.mode,\"yaml\":_vm.yaml,\"offer-preview\":_vm.offerPreview,\"done-route\":_vm.doneRoute,\"done-override\":_vm.value.doneOverride},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}}):_c(_vm.showComponent,_vm._b({ref:\"comp\",tag:\"component\",class:{'flex-content': _vm.flexContent},attrs:{\"done-params\":_vm.doneParams,\"done-route\":_vm.doneRoute,\"mode\":_vm.mode,\"initial-value\":_vm.initialModel,\"live-value\":_vm.liveModel,\"real-mode\":_vm.realMode},on:{\"set-subtype\":_vm.setSubtype},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}},'component',_vm._data,false)),(_vm.isView)?_c('button',{directives:[{name:\"shortkey\",rawName:\"v-shortkey.once\",value:(['shift','d']),expression:\"['shift','d']\",modifiers:{\"once\":true}}],staticClass:\"hide\",attrs:{\"data-testid\":_vm.componentTestid + '-detail'},on:{\"shortkey\":function($event){return _vm.keyAction('goToDetail')}}}):_vm._e(),(_vm.isView)?_c('button',{directives:[{name:\"shortkey\",rawName:\"v-shortkey.once\",value:(['shift','c']),expression:\"['shift','c']\",modifiers:{\"once\":true}}],staticClass:\"hide\",attrs:{\"data-testid\":_vm.componentTestid + '-config'},on:{\"shortkey\":function($event){return _vm.keyAction('goToViewConfig')}}}):_vm._e(),(_vm.isView)?_c('button',{directives:[{name:\"shortkey\",rawName:\"v-shortkey.once\",value:(['shift','y']),expression:\"['shift','y']\",modifiers:{\"once\":true}}],staticClass:\"hide\",attrs:{\"data-testid\":_vm.componentTestid + '-yaml'},on:{\"shortkey\":function($event){return _vm.keyAction('goToViewYaml')}}}):_vm._e(),(_vm.isView)?_c('button',{directives:[{name:\"shortkey\",rawName:\"v-shortkey.once\",value:(['shift','e']),expression:\"['shift','e']\",modifiers:{\"once\":true}}],staticClass:\"hide\",attrs:{\"data-testid\":_vm.componentTestid + '-edit'},on:{\"shortkey\":function($event){return _vm.keyAction('goToEdit')}}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"masthead\"},[_c('header',[_c('div',{staticClass:\"title\"},[_c('div',{staticClass:\"primaryheader\"},[_c('h1',[(_vm.location)?_c('nuxt-link',{attrs:{\"to\":_vm.location}},[_vm._v(\" \"+_vm._s(_vm.parent.displayName)+\": \")]):_c('span',[_vm._v(_vm._s(_vm.parent.displayName)+\":\")]),(_vm.value.detailPageHeaderActionOverride && _vm.value.detailPageHeaderActionOverride(_vm.realMode))?_c('span',[_vm._v(_vm._s(_vm.value.detailPageHeaderActionOverride(_vm.realMode)))]):_c('t',{staticClass:\"mastehead-resource-title\",attrs:{\"k\":'resourceDetail.header.' + _vm.realMode,\"subtype\":_vm.resourceSubtype,\"name\":_vm.displayName,\"escapehtml\":false}}),(!_vm.isCreate && _vm.parent.showState)?_c('BadgeState',{staticClass:\"masthead-state\",attrs:{\"value\":_vm.value}}):_vm._e(),(!_vm.isCreate && _vm.value.injectionEnabled)?_c('span',{staticClass:\"masthead-istio\"},[_c('i',{directives:[{name:\"clean-tooltip\",rawName:\"v-clean-tooltip\",value:(_vm.t('projectNamespaces.isIstioInjectionEnabled')),expression:\"t('projectNamespaces.isIstioInjectionEnabled')\"}],staticClass:\"icon icon-sm icon-istio\"})]):_vm._e()],1)]),(!_vm.isCreate)?_c('div',{staticClass:\"subheader\"},[(_vm.isNamespace && _vm.project)?_c('span',[_vm._v(_vm._s(_vm.t(\"resourceDetail.masthead.project\"))+\": \"),_c('nuxt-link',{attrs:{\"to\":_vm.project.detailLocation}},[_vm._v(_vm._s(_vm.project.nameDisplay))])],1):(_vm.isWorkspace)?_c('span',[_vm._v(_vm._s(_vm.t(\"resourceDetail.masthead.workspace\"))+\": \"),_c('nuxt-link',{attrs:{\"to\":_vm.workspaceLocation}},[_vm._v(_vm._s(_vm.namespace))])],1):(_vm.namespace && !_vm.hasMultipleNamespaces)?_c('span',[_vm._v(\" \"+_vm._s(_vm.t(\"resourceDetail.masthead.namespace\"))+\": \"),(!_vm.hideNamespaceLocation)?_c('nuxt-link',{attrs:{\"to\":_vm.namespaceLocation}},[_vm._v(\" \"+_vm._s(_vm.namespace)+\" \")]):_c('span',[_vm._v(\" \"+_vm._s(_vm.namespace)+\" \")])],1):_vm._e(),(_vm.parent.showAge)?_c('span',[_vm._v(_vm._s(_vm.t(\"resourceDetail.masthead.age\"))+\": \"),_c('LiveDate',{staticClass:\"live-date\",attrs:{\"value\":_vm.value.creationTimestamp}})],1):_vm._e(),(_vm.value.showPodRestarts)?_c('span',[_vm._v(_vm._s(_vm.t(\"resourceDetail.masthead.restartCount\"))+\":\"),_c('span',{staticClass:\"live-data\"},[_vm._v(\" \"+_vm._s(_vm.value.restartCount))])]):_vm._e()]):_vm._e()]),_vm._t(\"right\",function(){return [_c('div',{staticClass:\"actions-container align-start\"},[_c('div',{staticClass:\"actions\"},[(_vm.detailsAction && _vm.currentView === _vm.DETAIL_VIEW && _vm.isView)?_c('button',{staticClass:\"btn role-primary actions mr-10\",attrs:{\"type\":\"button\",\"disabled\":!_vm.detailsAction.enabled},on:{\"click\":_vm.invokeDetailsAction}},[_vm._v(\" \"+_vm._s(_vm.detailsAction.label)+\" \")]):_vm._e(),(_vm.showSensitiveToggle)?_c('ButtonGroup',{staticClass:\"mr-10\",attrs:{\"value\":!!_vm.hideSensitiveData,\"icon-size\":\"lg\",\"options\":_vm.sensitiveOptions},on:{\"input\":_vm.toggleSensitiveData}}):_vm._e(),(_vm.viewOptions && _vm.isView)?_c('ButtonGroup',{staticClass:\"mr-10\",attrs:{\"options\":_vm.viewOptions},model:{value:(_vm.currentView),callback:function ($$v) {_vm.currentView=$$v},expression:\"currentView\"}}):_vm._e(),(_vm.isView)?_c('button',{ref:\"actions\",staticClass:\"btn role-multi-action actions\",attrs:{\"aria-haspopup\":\"true\",\"type\":\"button\"},on:{\"click\":_vm.showActions}},[_c('i',{staticClass:\"icon icon-actions\"})]):_vm._e()],1)])]})],2),_c('ExtensionPanel',{attrs:{\"resource\":_vm.value,\"type\":_vm.extensionType,\"location\":_vm.extensionLocation}}),(_vm.banner && _vm.isView && !_vm.parent.hideBanner)?_c('Banner',{staticClass:\"state-banner mb-10\",attrs:{\"color\":_vm.banner.color,\"label\":_vm.banner.message}}):_vm._e(),(_vm.managedWarning.show)?_c('Banner',{staticClass:\"mb-20\",attrs:{\"color\":\"warning\",\"label\":_vm.t('resourceDetail.masthead.managedWarning', _vm.managedWarning)}}):_vm._e(),_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Masthead.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Masthead.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Masthead.vue?vue&type=template&id=78de509a&scoped=true&\"\nimport script from \"./Masthead.vue?vue&type=script&lang=js&\"\nexport * from \"./Masthead.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Masthead.vue?vue&type=style&index=0&id=78de509a&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"78de509a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"detail-top\",class:{empty: _vm.isEmpty}},[(_vm.hasNamespaces)?_c('div',{staticClass:\"labels\"},[_c('span',{staticClass:\"label\"},[_vm._v(\" \"+_vm._s(_vm.t('resourceDetail.detailTop.namespaces'))+\": \")]),_c('span',_vm._l((_vm.namespaces),function(namespace){return _c('nuxt-link',{key:namespace.name,staticClass:\"namespaceLinkList\",attrs:{\"to\":namespace.detailLocation}},[_vm._v(\" \"+_vm._s(namespace.name)+\" \")])}),1)]):_vm._e(),(_vm.description)?_c('div',{staticClass:\"description\"},[_c('span',{staticClass:\"label\"},[_vm._v(\" \"+_vm._s(_vm.t('resourceDetail.detailTop.description'))+\": \")]),_c('span',{staticClass:\"content\"},[_vm._v(_vm._s(_vm.description))])]):_vm._e(),(_vm.hasDetails)?_c('div',_vm._l((_vm.details),function(group,index){return _c('div',{key:index,staticClass:\"details\"},_vm._l((group),function(detail){return _c('div',{key:detail.label || detail.slotName,staticClass:\"detail\"},[_c('span',{staticClass:\"label\"},[_vm._v(\" \"+_vm._s(detail.label)+\": \")]),(detail.formatter)?_c(detail.formatter,_vm._b({tag:\"component\",attrs:{\"value\":detail.content}},'component',detail.formatterOpts,false)):_c('span',[_vm._v(_vm._s(detail.content))])],1)}),0)}),0):_vm._e(),(_vm.hasLabels)?_c('div',{staticClass:\"labels\"},[_c('div',{staticClass:\"tags\"},[_c('span',{staticClass:\"label\"},[_vm._v(\" \"+_vm._s(_vm.t('resourceDetail.detailTop.labels'))+\": \")]),_vm._l((_vm.labels),function(prop,key){return _c('Tag',{key:key + prop},[(_vm.internalIcons[key])?_c('i',{staticClass:\"icon\",class:_vm.internalIcons[key]}):_vm._e(),(_vm.internalTooltips[key])?_c('span',{directives:[{name:\"clean-tooltip\",rawName:\"v-clean-tooltip\",value:(prop ? `${key} : ${prop}` : key),expression:\"prop ? `${key} : ${prop}` : key\"}]},[_c('span',[_vm._v(_vm._s(_vm.internalTooltips[key] ? _vm.internalTooltips[key] : key))]),(_vm.showAllLabels)?_c('span',[_vm._v(\": \"+_vm._s(key))]):_vm._e()]):_c('span',[_vm._v(_vm._s(prop ? `${key} : ${prop}` : key))])])}),(_vm.showFilteredSystemLabels)?_c('a',{staticClass:\"detail-top__label-button\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleLabels.apply(null, arguments)}}},[_vm._v(\" \"+_vm._s(_vm.t(`resourceDetail.detailTop.${_vm.showAllLabels? 'hideLabels' : 'showLabels'}`))+\" \")]):_vm._e()],2)]):_vm._e(),(_vm.hasAnnotations)?_c('div',{staticClass:\"annotations\"},[_c('span',{staticClass:\"label\"},[_vm._v(\" \"+_vm._s(_vm.t('resourceDetail.detailTop.annotations'))+\": \")]),_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleAnnotations.apply(null, arguments)}}},[_vm._v(\" \"+_vm._s(_vm.t(`resourceDetail.detailTop.${_vm.annotationsVisible? 'hideAnnotations' : 'showAnnotations'}`, {annotations: _vm.annotationCount}))+\" \")]),(_vm.annotationsVisible)?_c('div',_vm._l((_vm.annotations),function(val,key){return _c('DetailText',{key:key,staticClass:\"annotation\",attrs:{\"value\":val,\"label\":key}})}),1):_vm._e()]):_vm._e(),_c('ExtensionPanel',{attrs:{\"resource\":_vm.value,\"type\":_vm.extensionType,\"location\":_vm.extensionLocation}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',{staticClass:\"tag\"},[_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Tag.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Tag.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Tag.vue?vue&type=template&id=0d281a35&scoped=true&\"\nimport script from \"./Tag.vue?vue&type=script&lang=js&\"\nexport * from \"./Tag.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Tag.vue?vue&type=style&index=0&id=0d281a35&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0d281a35\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{class:{'force-wrap': true, 'with-copy':_vm.copy}},[(_vm.labelKey)?_c('h5',{directives:[{name:\"t\",rawName:\"v-t\",value:(_vm.labelKey),expression:\"labelKey\"}]}):(_vm.label)?_c('h5',[_vm._v(\" \"+_vm._s(_vm.label)+\" \")]):_vm._e(),(_vm.isEmpty)?_c('span',{directives:[{name:\"t\",rawName:\"v-t\",value:('detailText.empty'),expression:\"'detailText.empty'\"}],staticClass:\"text-italic\"}):(_vm.isBinary)?_c('span',{staticClass:\"text-italic\"},[_vm._v(_vm._s(_vm.body))]):(_vm.jsonStr)?_c('CodeMirror',{class:{'conceal': _vm.concealed},attrs:{\"options\":{mode:{name:'javascript', json:true}, lineNumbers:false, foldGutter:false, readOnly:true},\"value\":_vm.jsonStr}}):_c('span',{directives:[{name:\"clean-html\",rawName:\"v-clean-html\",value:(_vm.bodyHtml),expression:\"bodyHtml\"}],class:{'conceal': _vm.concealed, 'monospace': _vm.monospace && !_vm.isBinary},attrs:{\"data-testid\":\"detail-top_html\"}}),(!_vm.isBinary && !_vm.jsonStr && _vm.isLong && !_vm.expanded)?[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.expand.apply(null, arguments)}}},[_vm._v(_vm._s(_vm.plusMore))])]:_vm._e(),(_vm.copy && !_vm.isBinary)?_c('CopyToClipboard',{staticClass:\"role-tertiary\",attrs:{\"text\":_vm.value,\"action-color\":\"\"}}):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('AsyncButton',_vm._b({attrs:{\"icon\":\"icon-copy\",\"show-label\":_vm.showLabel,\"action-label\":\"Copy\",\"waiting-label\":\"Copying...\",\"success-label\":\"Copied!\",\"error-label\":\"Error Copying\",\"delay\":2000},on:{\"click\":_vm.clicked}},'AsyncButton',_vm.$attrs,false))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./CopyToClipboard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./CopyToClipboard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CopyToClipboard.vue?vue&type=template&id=421d1dba&\"\nimport script from \"./CopyToClipboard.vue?vue&type=script&lang=js&\"\nexport * from \"./CopyToClipboard.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./DetailText.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./DetailText.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DetailText.vue?vue&type=template&id=348d5cf1&scoped=true&\"\nimport script from \"./DetailText.vue?vue&type=script&lang=js&\"\nexport * from \"./DetailText.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DetailText.vue?vue&type=style&index=0&id=348d5cf1&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"348d5cf1\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./DetailTop.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./DetailTop.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DetailTop.vue?vue&type=template&id=ab4e0560&\"\nimport script from \"./DetailTop.vue?vue&type=script&lang=js&\"\nexport * from \"./DetailTop.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DetailTop.vue?vue&type=style&index=0&id=ab4e0560&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',{staticClass:\"chart-container\"},[(!_vm.isChartFirstRenderAnimationFinished)?_c('div',{staticClass:\"loading-container\"},[_c('p',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isChartFirstRendered),expression:\"!isChartFirstRendered\"}]},[_vm._v(\" \"+_vm._s(_vm.t('fleet.fdc.loadingChart'))+\" \")]),_c('p',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isChartFirstRendered && !_vm.isChartFirstRenderAnimationFinished),expression:\"isChartFirstRendered && !isChartFirstRenderAnimationFinished\"}]},[_vm._v(\" \"+_vm._s(_vm.t('fleet.fdc.renderingChart'))+\" \")]),_c('i',{staticClass:\"mt-10 icon-spinner icon-spin\"})]):_vm._e(),_c('div',{attrs:{\"id\":\"tree\"}}),_c('div',{staticClass:\"more-info-container\"},[_c('div',{staticClass:\"more-info\"},[_c('table',_vm._l((_vm.moreInfo),function(item,i){return _c('tr',{key:i},[(item.type !== 'single-error')?_c('td',{class:{'align-middle': item.type === 'state-badge'}},[_c('span',{staticClass:\"more-info-item-label\"},[_vm._v(_vm._s(_vm.t(item.labelKey))+\":\")])]):_vm._e(),(item.type === 'title-link')?_c('td',[(item.valueObj.detailLocation)?_c('span',[_c('n-link',{attrs:{\"to\":item.valueObj.detailLocation}},[_vm._v(\" \"+_vm._s(item.valueObj.id)+\" \")])],1):_c('span',[_vm._v(_vm._s(item.valueObj.id))])]):(item.type === 'state-badge')?_c('td',{staticClass:\"align-middle\"},[_c('span',[_c('BadgeState',{staticClass:\"state-bagde\",attrs:{\"color\":`bg-${item.valueObj.stateColor}`,\"label\":item.valueObj.stateLabel}})],1)]):_vm._e(),(item.type === 'single-error')?_c('td',{staticClass:\"single-error\",attrs:{\"colspan\":\"2\"}},[_c('p',[_vm._v(_vm._s(item.value))])]):_c('td',[_vm._v(\" \"+_vm._s(item.value)+\" \")])])}),0)])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n return array(select.apply(this, arguments));\n };\n}\n\nexport default function(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nexport function childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\nexport default function(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = new Map,\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function(value, key) {\n if (!arguments.length) return Array.from(this, datum);\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data\n ? data // Array, TypedArray, NodeList, array-like\n : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter) enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update) update = update.selection();\n }\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n var selection = context.selection ? context.selection() : context;\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","function contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","export default function*() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) yield node;\n }\n }\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error;\n set(this, id).ease = v;\n };\n}\n\nexport default function(value) {\n if (typeof value !== \"function\") throw new Error;\n return this.each(easeVarying(this._id, value));\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n\n // The selection was empty, resolve end immediately\n if (size === 0) resolve();\n });\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {pointer, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n MODE_SPACE = {name: \"space\"},\n MODE_HANDLE = {name: \"handle\"},\n MODE_CENTER = {name: \"center\"};\n\nconst {abs, max, min} = Math;\n\nfunction number1(e) {\n return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n return [number1(e[0]), number1(e[1])];\n}\n\nvar X = {\n name: \"x\",\n handles: [\"w\", \"e\"].map(type),\n input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n name: \"y\",\n handles: [\"n\", \"s\"].map(type),\n input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n name: \"xy\",\n handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n input: function(xy) { return xy == null ? null : number2(xy); },\n output: function(xy) { return xy; }\n};\n\nvar cursors = {\n overlay: \"crosshair\",\n selection: \"move\",\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n};\n\nvar flipX = {\n e: \"w\",\n w: \"e\",\n nw: \"ne\",\n ne: \"nw\",\n se: \"sw\",\n sw: \"se\"\n};\n\nvar flipY = {\n n: \"s\",\n s: \"n\",\n nw: \"sw\",\n ne: \"se\",\n se: \"ne\",\n sw: \"nw\"\n};\n\nvar signsX = {\n overlay: +1,\n selection: +1,\n n: null,\n e: +1,\n s: null,\n w: -1,\n nw: -1,\n ne: +1,\n se: +1,\n sw: -1\n};\n\nvar signsY = {\n overlay: +1,\n selection: +1,\n n: -1,\n e: null,\n s: +1,\n w: null,\n nw: -1,\n ne: -1,\n se: +1,\n sw: +1\n};\n\nfunction type(t) {\n return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter(event) {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var svg = this.ownerSVGElement || this;\n if (svg.hasAttribute(\"viewBox\")) {\n svg = svg.viewBox.baseVal;\n return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n }\n return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n while (!node.__brush) if (!(node = node.parentNode)) return;\n return node.__brush;\n}\n\nfunction empty(extent) {\n return extent[0][0] === extent[1][0]\n || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n var state = node.__brush;\n return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n return brush(X);\n}\n\nexport function brushY() {\n return brush(Y);\n}\n\nexport default function() {\n return brush(XY);\n}\n\nfunction brush(dim) {\n var extent = defaultExtent,\n filter = defaultFilter,\n touchable = defaultTouchable,\n keys = true,\n listeners = dispatch(\"start\", \"brush\", \"end\"),\n handleSize = 6,\n touchending;\n\n function brush(group) {\n var overlay = group\n .property(\"__brush\", initialize)\n .selectAll(\".overlay\")\n .data([type(\"overlay\")]);\n\n overlay.enter().append(\"rect\")\n .attr(\"class\", \"overlay\")\n .attr(\"pointer-events\", \"all\")\n .attr(\"cursor\", cursors.overlay)\n .merge(overlay)\n .each(function() {\n var extent = local(this).extent;\n select(this)\n .attr(\"x\", extent[0][0])\n .attr(\"y\", extent[0][1])\n .attr(\"width\", extent[1][0] - extent[0][0])\n .attr(\"height\", extent[1][1] - extent[0][1]);\n });\n\n group.selectAll(\".selection\")\n .data([type(\"selection\")])\n .enter().append(\"rect\")\n .attr(\"class\", \"selection\")\n .attr(\"cursor\", cursors.selection)\n .attr(\"fill\", \"#777\")\n .attr(\"fill-opacity\", 0.3)\n .attr(\"stroke\", \"#fff\")\n .attr(\"shape-rendering\", \"crispEdges\");\n\n var handle = group.selectAll(\".handle\")\n .data(dim.handles, function(d) { return d.type; });\n\n handle.exit().remove();\n\n handle.enter().append(\"rect\")\n .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n group\n .each(redraw)\n .attr(\"fill\", \"none\")\n .attr(\"pointer-events\", \"all\")\n .on(\"mousedown.brush\", started)\n .filter(touchable)\n .on(\"touchstart.brush\", started)\n .on(\"touchmove.brush\", touchmoved)\n .on(\"touchend.brush touchcancel.brush\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n brush.move = function(group, selection, event) {\n if (group.tween) {\n group\n .on(\"start.brush\", function(event) { emitter(this, arguments).beforestart().start(event); })\n .on(\"interrupt.brush end.brush\", function(event) { emitter(this, arguments).end(event); })\n .tween(\"brush\", function() {\n var that = this,\n state = that.__brush,\n emit = emitter(that, arguments),\n selection0 = state.selection,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n i = interpolate(selection0, selection1);\n\n function tween(t) {\n state.selection = t === 1 && selection1 === null ? null : i(t);\n redraw.call(that);\n emit.brush();\n }\n\n return selection0 !== null && selection1 !== null ? tween : tween(1);\n });\n } else {\n group\n .each(function() {\n var that = this,\n args = arguments,\n state = that.__brush,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n emit = emitter(that, args).beforestart();\n\n interrupt(that);\n state.selection = selection1 === null ? null : selection1;\n redraw.call(that);\n emit.start(event).brush(event).end(event);\n });\n }\n };\n\n brush.clear = function(group, event) {\n brush.move(group, null, event);\n };\n\n function redraw() {\n var group = select(this),\n selection = local(this).selection;\n\n if (selection) {\n group.selectAll(\".selection\")\n .style(\"display\", null)\n .attr(\"x\", selection[0][0])\n .attr(\"y\", selection[0][1])\n .attr(\"width\", selection[1][0] - selection[0][0])\n .attr(\"height\", selection[1][1] - selection[0][1]);\n\n group.selectAll(\".handle\")\n .style(\"display\", null)\n .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n }\n\n else {\n group.selectAll(\".selection,.handle\")\n .style(\"display\", \"none\")\n .attr(\"x\", null)\n .attr(\"y\", null)\n .attr(\"width\", null)\n .attr(\"height\", null);\n }\n }\n\n function emitter(that, args, clean) {\n var emit = that.__brush.emitter;\n return emit && (!clean || !emit.clean) ? emit : new Emitter(that, args, clean);\n }\n\n function Emitter(that, args, clean) {\n this.that = that;\n this.args = args;\n this.state = that.__brush;\n this.active = 0;\n this.clean = clean;\n }\n\n Emitter.prototype = {\n beforestart: function() {\n if (++this.active === 1) this.state.emitter = this, this.starting = true;\n return this;\n },\n start: function(event, mode) {\n if (this.starting) this.starting = false, this.emit(\"start\", event, mode);\n else this.emit(\"brush\", event);\n return this;\n },\n brush: function(event, mode) {\n this.emit(\"brush\", event, mode);\n return this;\n },\n end: function(event, mode) {\n if (--this.active === 0) delete this.state.emitter, this.emit(\"end\", event, mode);\n return this;\n },\n emit: function(type, event, mode) {\n var d = select(this.that).datum();\n listeners.call(\n type,\n this.that,\n new BrushEvent(type, {\n sourceEvent: event,\n target: brush,\n selection: dim.output(this.state.selection),\n mode,\n dispatch: listeners\n }),\n d\n );\n }\n };\n\n function started(event) {\n if (touchending && !event.touches) return;\n if (!filter.apply(this, arguments)) return;\n\n var that = this,\n type = event.target.__data__.type,\n mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n signX = dim === Y ? null : signsX[type],\n signY = dim === X ? null : signsY[type],\n state = local(that),\n extent = state.extent,\n selection = state.selection,\n W = extent[0][0], w0, w1,\n N = extent[0][1], n0, n1,\n E = extent[1][0], e0, e1,\n S = extent[1][1], s0, s1,\n dx = 0,\n dy = 0,\n moving,\n shifting = signX && signY && keys && event.shiftKey,\n lockX,\n lockY,\n points = Array.from(event.touches || [event], t => {\n const i = t.identifier;\n t = pointer(t, that);\n t.point0 = t.slice();\n t.identifier = i;\n return t;\n });\n\n interrupt(that);\n var emit = emitter(that, arguments, true).beforestart();\n\n if (type === \"overlay\") {\n if (selection) moving = true;\n const pts = [points[0], points[1] || points[0]];\n state.selection = selection = [[\n w0 = dim === Y ? W : min(pts[0][0], pts[1][0]),\n n0 = dim === X ? N : min(pts[0][1], pts[1][1])\n ], [\n e0 = dim === Y ? E : max(pts[0][0], pts[1][0]),\n s0 = dim === X ? S : max(pts[0][1], pts[1][1])\n ]];\n if (points.length > 1) move(event);\n } else {\n w0 = selection[0][0];\n n0 = selection[0][1];\n e0 = selection[1][0];\n s0 = selection[1][1];\n }\n\n w1 = w0;\n n1 = n0;\n e1 = e0;\n s1 = s0;\n\n var group = select(that)\n .attr(\"pointer-events\", \"none\");\n\n var overlay = group.selectAll(\".overlay\")\n .attr(\"cursor\", cursors[type]);\n\n if (event.touches) {\n emit.moved = moved;\n emit.ended = ended;\n } else {\n var view = select(event.view)\n .on(\"mousemove.brush\", moved, true)\n .on(\"mouseup.brush\", ended, true);\n if (keys) view\n .on(\"keydown.brush\", keydowned, true)\n .on(\"keyup.brush\", keyupped, true)\n\n dragDisable(event.view);\n }\n\n redraw.call(that);\n emit.start(event, mode.name);\n\n function moved(event) {\n for (const p of event.changedTouches || [event]) {\n for (const d of points)\n if (d.identifier === p.identifier) d.cur = pointer(p, that);\n }\n if (shifting && !lockX && !lockY && points.length === 1) {\n const point = points[0];\n if (abs(point.cur[0] - point[0]) > abs(point.cur[1] - point[1]))\n lockY = true;\n else\n lockX = true;\n }\n for (const point of points)\n if (point.cur) point[0] = point.cur[0], point[1] = point.cur[1];\n moving = true;\n noevent(event);\n move(event);\n }\n\n function move(event) {\n const point = points[0], point0 = point.point0;\n var t;\n\n dx = point[0] - point0[0];\n dy = point[1] - point0[1];\n\n switch (mode) {\n case MODE_SPACE:\n case MODE_DRAG: {\n if (signX) dx = max(W - w0, min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n if (signY) dy = max(N - n0, min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n break;\n }\n case MODE_HANDLE: {\n if (points[1]) {\n if (signX) w1 = max(W, min(E, points[0][0])), e1 = max(W, min(E, points[1][0])), signX = 1;\n if (signY) n1 = max(N, min(S, points[0][1])), s1 = max(N, min(S, points[1][1])), signY = 1;\n } else {\n if (signX < 0) dx = max(W - w0, min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n else if (signX > 0) dx = max(W - e0, min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n if (signY < 0) dy = max(N - n0, min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n else if (signY > 0) dy = max(N - s0, min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n }\n break;\n }\n case MODE_CENTER: {\n if (signX) w1 = max(W, min(E, w0 - dx * signX)), e1 = max(W, min(E, e0 + dx * signX));\n if (signY) n1 = max(N, min(S, n0 - dy * signY)), s1 = max(N, min(S, s0 + dy * signY));\n break;\n }\n }\n\n if (e1 < w1) {\n signX *= -1;\n t = w0, w0 = e0, e0 = t;\n t = w1, w1 = e1, e1 = t;\n if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n }\n\n if (s1 < n1) {\n signY *= -1;\n t = n0, n0 = s0, s0 = t;\n t = n1, n1 = s1, s1 = t;\n if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n }\n\n if (state.selection) selection = state.selection; // May be set by brush.move!\n if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n if (selection[0][0] !== w1\n || selection[0][1] !== n1\n || selection[1][0] !== e1\n || selection[1][1] !== s1) {\n state.selection = [[w1, n1], [e1, s1]];\n redraw.call(that);\n emit.brush(event, mode.name);\n }\n }\n\n function ended(event) {\n nopropagation(event);\n if (event.touches) {\n if (event.touches.length) return;\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n } else {\n dragEnable(event.view, moving);\n view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n }\n group.attr(\"pointer-events\", \"all\");\n overlay.attr(\"cursor\", cursors.overlay);\n if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n if (empty(selection)) state.selection = null, redraw.call(that);\n emit.end(event, mode.name);\n }\n\n function keydowned(event) {\n switch (event.keyCode) {\n case 16: { // SHIFT\n shifting = signX && signY;\n break;\n }\n case 18: { // ALT\n if (mode === MODE_HANDLE) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n move(event);\n }\n break;\n }\n case 32: { // SPACE; takes priority over ALT\n if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n mode = MODE_SPACE;\n overlay.attr(\"cursor\", cursors.selection);\n move(event);\n }\n break;\n }\n default: return;\n }\n noevent(event);\n }\n\n function keyupped(event) {\n switch (event.keyCode) {\n case 16: { // SHIFT\n if (shifting) {\n lockX = lockY = shifting = false;\n move(event);\n }\n break;\n }\n case 18: { // ALT\n if (mode === MODE_CENTER) {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n move(event);\n }\n break;\n }\n case 32: { // SPACE\n if (mode === MODE_SPACE) {\n if (event.altKey) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n } else {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n }\n overlay.attr(\"cursor\", cursors[type]);\n move(event);\n }\n break;\n }\n default: return;\n }\n noevent(event);\n }\n }\n\n function touchmoved(event) {\n emitter(this, arguments).moved(event);\n }\n\n function touchended(event) {\n emitter(this, arguments).ended(event);\n }\n\n function initialize() {\n var state = this.__brush || {selection: null};\n state.extent = number2(extent.apply(this, arguments));\n state.dim = dim;\n return state;\n }\n\n brush.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n };\n\n brush.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n };\n\n brush.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), brush) : touchable;\n };\n\n brush.handleSize = function(_) {\n return arguments.length ? (handleSize = +_, brush) : handleSize;\n };\n\n brush.keyModifiers = function(_) {\n return arguments.length ? (keys = !!_, brush) : keys;\n };\n\n brush.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? brush : value;\n };\n\n return brush;\n}\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n return array(select.apply(this, arguments));\n };\n}\n\nexport default function(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nexport function childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\nexport default function(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = new Map,\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function(value, key) {\n if (!arguments.length) return Array.from(this, datum);\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data\n ? data // Array, TypedArray, NodeList, array-like\n : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter) enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update) update = update.selection();\n }\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n var selection = context.selection ? context.selection() : context;\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","function contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","export default function*() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) yield node;\n }\n }\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","export default function(event) {\n let sourceEvent;\n while (sourceEvent = event.sourceEvent) event = sourceEvent;\n return event;\n}\n","import sourceEvent from \"./sourceEvent.js\";\n\nexport default function(event, node) {\n event = sourceEvent(event);\n if (node === undefined) node = event.currentTarget;\n if (node) {\n var svg = node.ownerSVGElement || node;\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n if (node.getBoundingClientRect) {\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n }\n }\n return [event.pageX, event.pageY];\n}\n","// These are typically used in conjunction with noevent to ensure that we can\n// preventDefault on the event.\nexport const nonpassive = {passive: false};\nexport const nonpassivecapture = {capture: true, passive: false};\n\nexport function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {select} from \"d3-selection\";\nimport noevent, {nonpassivecapture} from \"./noevent.js\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, nonpassivecapture);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, nonpassivecapture);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nexport function yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", noevent, nonpassivecapture);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n","export default x => () => x;\n","export default function DragEvent(type, {\n sourceEvent,\n subject,\n target,\n identifier,\n active,\n x, y, dx, dy,\n dispatch\n}) {\n Object.defineProperties(this, {\n type: {value: type, enumerable: true, configurable: true},\n sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n subject: {value: subject, enumerable: true, configurable: true},\n target: {value: target, enumerable: true, configurable: true},\n identifier: {value: identifier, enumerable: true, configurable: true},\n active: {value: active, enumerable: true, configurable: true},\n x: {value: x, enumerable: true, configurable: true},\n y: {value: y, enumerable: true, configurable: true},\n dx: {value: dx, enumerable: true, configurable: true},\n dy: {value: dy, enumerable: true, configurable: true},\n _: {value: dispatch}\n });\n}\n\nDragEvent.prototype.on = function() {\n var value = this._.on.apply(this._, arguments);\n return value === this._ ? this : value;\n};\n","import {dispatch} from \"d3-dispatch\";\nimport {select, pointer} from \"d3-selection\";\nimport nodrag, {yesdrag} from \"./nodrag.js\";\nimport noevent, {nonpassive, nonpassivecapture, nopropagation} from \"./noevent.js\";\nimport constant from \"./constant.js\";\nimport DragEvent from \"./event.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter(event) {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultContainer() {\n return this.parentNode;\n}\n\nfunction defaultSubject(event, d) {\n return d == null ? {x: event.x, y: event.y} : d;\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nexport default function() {\n var filter = defaultFilter,\n container = defaultContainer,\n subject = defaultSubject,\n touchable = defaultTouchable,\n gestures = {},\n listeners = dispatch(\"start\", \"drag\", \"end\"),\n active = 0,\n mousedownx,\n mousedowny,\n mousemoving,\n touchending,\n clickDistance2 = 0;\n\n function drag(selection) {\n selection\n .on(\"mousedown.drag\", mousedowned)\n .filter(touchable)\n .on(\"touchstart.drag\", touchstarted)\n .on(\"touchmove.drag\", touchmoved, nonpassive)\n .on(\"touchend.drag touchcancel.drag\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n function mousedowned(event, d) {\n if (touchending || !filter.call(this, event, d)) return;\n var gesture = beforestart(this, container.call(this, event, d), event, d, \"mouse\");\n if (!gesture) return;\n select(event.view)\n .on(\"mousemove.drag\", mousemoved, nonpassivecapture)\n .on(\"mouseup.drag\", mouseupped, nonpassivecapture);\n nodrag(event.view);\n nopropagation(event);\n mousemoving = false;\n mousedownx = event.clientX;\n mousedowny = event.clientY;\n gesture(\"start\", event);\n }\n\n function mousemoved(event) {\n noevent(event);\n if (!mousemoving) {\n var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny;\n mousemoving = dx * dx + dy * dy > clickDistance2;\n }\n gestures.mouse(\"drag\", event);\n }\n\n function mouseupped(event) {\n select(event.view).on(\"mousemove.drag mouseup.drag\", null);\n yesdrag(event.view, mousemoving);\n noevent(event);\n gestures.mouse(\"end\", event);\n }\n\n function touchstarted(event, d) {\n if (!filter.call(this, event, d)) return;\n var touches = event.changedTouches,\n c = container.call(this, event, d),\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = beforestart(this, c, event, d, touches[i].identifier, touches[i])) {\n nopropagation(event);\n gesture(\"start\", event, touches[i]);\n }\n }\n }\n\n function touchmoved(event) {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n noevent(event);\n gesture(\"drag\", event, touches[i]);\n }\n }\n }\n\n function touchended(event) {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n nopropagation(event);\n gesture(\"end\", event, touches[i]);\n }\n }\n }\n\n function beforestart(that, container, event, d, identifier, touch) {\n var dispatch = listeners.copy(),\n p = pointer(touch || event, container), dx, dy,\n s;\n\n if ((s = subject.call(that, new DragEvent(\"beforestart\", {\n sourceEvent: event,\n target: drag,\n identifier,\n active,\n x: p[0],\n y: p[1],\n dx: 0,\n dy: 0,\n dispatch\n }), d)) == null) return;\n\n dx = s.x - p[0] || 0;\n dy = s.y - p[1] || 0;\n\n return function gesture(type, event, touch) {\n var p0 = p, n;\n switch (type) {\n case \"start\": gestures[identifier] = gesture, n = active++; break;\n case \"end\": delete gestures[identifier], --active; // falls through\n case \"drag\": p = pointer(touch || event, container), n = active; break;\n }\n dispatch.call(\n type,\n that,\n new DragEvent(type, {\n sourceEvent: event,\n subject: s,\n target: drag,\n identifier,\n active: n,\n x: p[0] + dx,\n y: p[1] + dy,\n dx: p[0] - p0[0],\n dy: p[1] - p0[1],\n dispatch\n }),\n d\n );\n };\n }\n\n drag.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), drag) : filter;\n };\n\n drag.container = function(_) {\n return arguments.length ? (container = typeof _ === \"function\" ? _ : constant(_), drag) : container;\n };\n\n drag.subject = function(_) {\n return arguments.length ? (subject = typeof _ === \"function\" ? _ : constant(_), drag) : subject;\n };\n\n drag.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), drag) : touchable;\n };\n\n drag.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? drag : value;\n };\n\n drag.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);\n };\n\n return drag;\n}\n","export default function(x, y) {\n var nodes, strength = 1;\n\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force() {\n var i,\n n = nodes.length,\n node,\n sx = 0,\n sy = 0;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], sx += node.x, sy += node.y;\n }\n\n for (sx = (sx / n - x) * strength, sy = (sy / n - y) * strength, i = 0; i < n; ++i) {\n node = nodes[i], node.x -= sx, node.y -= sy;\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n return force;\n}\n","export default function(d) {\n const x = +this._x.call(null, d),\n y = +this._y.call(null, d);\n return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n x1 = tree._x1,\n y1 = tree._y1,\n xm,\n ym,\n xp,\n yp,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n var d, i, n = data.length,\n x,\n y,\n xz = new Array(n),\n yz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0).cover(x1, y1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], data[i]);\n }\n\n return this;\n}\n","export default function(x, y) {\n if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1;\n\n // If the quadtree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing quadrant boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0 || 1,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n i = (y < y0) << 1 | (x < x0);\n parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0: x1 = x0 + z, y1 = y0 + z; break;\n case 1: x0 = x1 - z, y1 = y0 + z; break;\n case 2: x1 = x0 + z, y0 = y1 - z; break;\n case 3: x0 = x1 - z, y0 = y1 - z; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\n}\n","export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n","export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n","export default function(node, x0, y0, x1, y1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.x1 = x1;\n this.y1 = y1;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(x, y, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n x1,\n y1,\n x2,\n y2,\n x3 = this._x1,\n y3 = this._y1,\n quads = [],\n node = this._root,\n q,\n i;\n\n if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius;\n x3 = x + radius, y3 = y + radius;\n radius *= radius;\n }\n\n while (q = quads.pop()) {\n\n // Stop searching if this quadrant can’t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0) continue;\n\n // Bisect the current quadrant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n\n quads.push(\n new Quad(node[3], xm, ym, x2, y2),\n new Quad(node[2], x1, ym, xm, y2),\n new Quad(node[1], xm, y1, x2, ym),\n new Quad(node[0], x1, y1, xm, ym)\n );\n\n // Visit the closest quadrant first.\n if (i = (y >= ym) << 1 | (x >= xm)) {\n q = quads[quads.length - 1];\n quads[quads.length - 1] = quads[quads.length - 1 - i];\n quads[quads.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n d2 = dx * dx + dy * dy;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d;\n x3 = x + d, y3 = y + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n","export default function(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1,\n x,\n y,\n xm,\n ym,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n && node === (parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n","export default function() {\n return this._root;\n}\n","export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n }\n }\n return this;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], next = [], q;\n if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n return this;\n}\n","export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n return d[1];\n}\n\nexport default function(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, {defaultX} from \"./x.js\";\nimport tree_y, {defaultY} from \"./y.js\";\n\nexport default function quadtree(nodes, x, y) {\n var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n this._x = x;\n this._y = y;\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(4)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 4; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(random) {\n return (random() - 0.5) * 1e-6;\n}\n","import {quadtree} from \"d3-quadtree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\n\nfunction x(d) {\n return d.x + d.vx;\n}\n\nfunction y(d) {\n return d.y + d.vy;\n}\n\nexport default function(radius) {\n var nodes,\n radii,\n random,\n strength = 1,\n iterations = 1;\n\n if (typeof radius !== \"function\") radius = constant(radius == null ? 1 : +radius);\n\n function force() {\n var i, n = nodes.length,\n tree,\n node,\n xi,\n yi,\n ri,\n ri2;\n\n for (var k = 0; k < iterations; ++k) {\n tree = quadtree(nodes, x, y).visitAfter(prepare);\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n ri = radii[node.index], ri2 = ri * ri;\n xi = node.x + node.vx;\n yi = node.y + node.vy;\n tree.visit(apply);\n }\n }\n\n function apply(quad, x0, y0, x1, y1) {\n var data = quad.data, rj = quad.r, r = ri + rj;\n if (data) {\n if (data.index > node.index) {\n var x = xi - data.x - data.vx,\n y = yi - data.y - data.vy,\n l = x * x + y * y;\n if (l < r * r) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n l = (r - (l = Math.sqrt(l))) / l * strength;\n node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));\n node.vy += (y *= l) * r;\n data.vx -= x * (r = 1 - r);\n data.vy -= y * r;\n }\n }\n return;\n }\n return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r;\n }\n }\n\n function prepare(quad) {\n if (quad.data) return quad.r = radii[quad.data.index];\n for (var i = quad.r = 0; i < 4; ++i) {\n if (quad[i] && quad[i].r > quad.r) {\n quad.r = quad[i].r;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n radii = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes);\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n return force;\n}\n","import constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\n\nfunction index(d) {\n return d.index;\n}\n\nfunction find(nodeById, nodeId) {\n var node = nodeById.get(nodeId);\n if (!node) throw new Error(\"node not found: \" + nodeId);\n return node;\n}\n\nexport default function(links) {\n var id = index,\n strength = defaultStrength,\n strengths,\n distance = constant(30),\n distances,\n nodes,\n count,\n bias,\n random,\n iterations = 1;\n\n if (links == null) links = [];\n\n function defaultStrength(link) {\n return 1 / Math.min(count[link.source.index], count[link.target.index]);\n }\n\n function force(alpha) {\n for (var k = 0, n = links.length; k < iterations; ++k) {\n for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {\n link = links[i], source = link.source, target = link.target;\n x = target.x + target.vx - source.x - source.vx || jiggle(random);\n y = target.y + target.vy - source.y - source.vy || jiggle(random);\n l = Math.sqrt(x * x + y * y);\n l = (l - distances[i]) / l * alpha * strengths[i];\n x *= l, y *= l;\n target.vx -= x * (b = bias[i]);\n target.vy -= y * b;\n source.vx += x * (b = 1 - b);\n source.vy += y * b;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n\n var i,\n n = nodes.length,\n m = links.length,\n nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d])),\n link;\n\n for (i = 0, count = new Array(n); i < m; ++i) {\n link = links[i], link.index = i;\n if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n count[link.source.index] = (count[link.source.index] || 0) + 1;\n count[link.target.index] = (count[link.target.index] || 0) + 1;\n }\n\n for (i = 0, bias = new Array(m); i < m; ++i) {\n link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n }\n\n strengths = new Array(m), initializeStrength();\n distances = new Array(m), initializeDistance();\n }\n\n function initializeStrength() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n strengths[i] = +strength(links[i], i, links);\n }\n }\n\n function initializeDistance() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n distances[i] = +distance(links[i], i, links);\n }\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.links = function(_) {\n return arguments.length ? (links = _, initialize(), force) : links;\n };\n\n force.id = function(_) {\n return arguments.length ? (id = _, force) : id;\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initializeStrength(), force) : strength;\n };\n\n force.distance = function(_) {\n return arguments.length ? (distance = typeof _ === \"function\" ? _ : constant(+_), initializeDistance(), force) : distance;\n };\n\n return force;\n}\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst a = 1664525;\nconst c = 1013904223;\nconst m = 4294967296; // 2^32\n\nexport default function() {\n let s = 1;\n return () => (s = (a * s + c) % m) / m;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer} from \"d3-timer\";\nimport lcg from \"./lcg.js\";\n\nexport function x(d) {\n return d.x;\n}\n\nexport function y(d) {\n return d.y;\n}\n\nvar initialRadius = 10,\n initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nexport default function(nodes) {\n var simulation,\n alpha = 1,\n alphaMin = 0.001,\n alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n alphaTarget = 0,\n velocityDecay = 0.6,\n forces = new Map(),\n stepper = timer(step),\n event = dispatch(\"tick\", \"end\"),\n random = lcg();\n\n if (nodes == null) nodes = [];\n\n function step() {\n tick();\n event.call(\"tick\", simulation);\n if (alpha < alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n\n function tick(iterations) {\n var i, n = nodes.length, node;\n\n if (iterations === undefined) iterations = 1;\n\n for (var k = 0; k < iterations; ++k) {\n alpha += (alphaTarget - alpha) * alphaDecay;\n\n forces.forEach(function(force) {\n force(alpha);\n });\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (node.fx == null) node.x += node.vx *= velocityDecay;\n else node.x = node.fx, node.vx = 0;\n if (node.fy == null) node.y += node.vy *= velocityDecay;\n else node.y = node.fy, node.vy = 0;\n }\n }\n\n return simulation;\n }\n\n function initializeNodes() {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.index = i;\n if (node.fx != null) node.x = node.fx;\n if (node.fy != null) node.y = node.fy;\n if (isNaN(node.x) || isNaN(node.y)) {\n var radius = initialRadius * Math.sqrt(0.5 + i), angle = i * initialAngle;\n node.x = radius * Math.cos(angle);\n node.y = radius * Math.sin(angle);\n }\n if (isNaN(node.vx) || isNaN(node.vy)) {\n node.vx = node.vy = 0;\n }\n }\n }\n\n function initializeForce(force) {\n if (force.initialize) force.initialize(nodes, random);\n return force;\n }\n\n initializeNodes();\n\n return simulation = {\n tick: tick,\n\n restart: function() {\n return stepper.restart(step), simulation;\n },\n\n stop: function() {\n return stepper.stop(), simulation;\n },\n\n nodes: function(_) {\n return arguments.length ? (nodes = _, initializeNodes(), forces.forEach(initializeForce), simulation) : nodes;\n },\n\n alpha: function(_) {\n return arguments.length ? (alpha = +_, simulation) : alpha;\n },\n\n alphaMin: function(_) {\n return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n },\n\n alphaDecay: function(_) {\n return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n },\n\n alphaTarget: function(_) {\n return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n },\n\n velocityDecay: function(_) {\n return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n },\n\n randomSource: function(_) {\n return arguments.length ? (random = _, forces.forEach(initializeForce), simulation) : random;\n },\n\n force: function(name, _) {\n return arguments.length > 1 ? ((_ == null ? forces.delete(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n },\n\n find: function(x, y, radius) {\n var i = 0,\n n = nodes.length,\n dx,\n dy,\n d2,\n node,\n closest;\n\n if (radius == null) radius = Infinity;\n else radius *= radius;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dx = x - node.x;\n dy = y - node.y;\n d2 = dx * dx + dy * dy;\n if (d2 < radius) closest = node, radius = d2;\n }\n\n return closest;\n },\n\n on: function(name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n}\n","import {quadtree} from \"d3-quadtree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\nimport {x, y} from \"./simulation.js\";\n\nexport default function() {\n var nodes,\n node,\n random,\n alpha,\n strength = constant(-30),\n strengths,\n distanceMin2 = 1,\n distanceMax2 = Infinity,\n theta2 = 0.81;\n\n function force(_) {\n var i, n = nodes.length, tree = quadtree(nodes, x, y).visitAfter(accumulate);\n for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n strengths = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n }\n\n function accumulate(quad) {\n var strength = 0, q, c, weight = 0, x, y, i;\n\n // For internal nodes, accumulate forces from child quadrants.\n if (quad.length) {\n for (x = y = i = 0; i < 4; ++i) {\n if ((q = quad[i]) && (c = Math.abs(q.value))) {\n strength += q.value, weight += c, x += c * q.x, y += c * q.y;\n }\n }\n quad.x = x / weight;\n quad.y = y / weight;\n }\n\n // For leaf nodes, accumulate forces from coincident quadrants.\n else {\n q = quad;\n q.x = q.data.x;\n q.y = q.data.y;\n do strength += strengths[q.data.index];\n while (q = q.next);\n }\n\n quad.value = strength;\n }\n\n function apply(quad, x1, _, x2) {\n if (!quad.value) return true;\n\n var x = quad.x - node.x,\n y = quad.y - node.y,\n w = x2 - x1,\n l = x * x + y * y;\n\n // Apply the Barnes-Hut approximation if possible.\n // Limit forces for very close nodes; randomize direction if coincident.\n if (w * w / theta2 < l) {\n if (l < distanceMax2) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n node.vx += x * quad.value * alpha / l;\n node.vy += y * quad.value * alpha / l;\n }\n return true;\n }\n\n // Otherwise, process points directly.\n else if (quad.length || l >= distanceMax2) return;\n\n // Limit forces for very close nodes; randomize direction if coincident.\n if (quad.data !== node || quad.next) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n }\n\n do if (quad.data !== node) {\n w = strengths[quad.data.index] * alpha / l;\n node.vx += x * w;\n node.vy += y * w;\n } while (quad = quad.next);\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.distanceMin = function(_) {\n return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n };\n\n force.distanceMax = function(_) {\n return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n };\n\n force.theta = function(_) {\n return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n };\n\n return force;\n}\n","function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;\n else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\n\nexport default function() {\n return this.eachAfter(count);\n}\n","export default function(callback, that) {\n let index = -1;\n for (const node of this) {\n callback.call(that, node, ++index, this);\n }\n return this;\n}\n","export default function(callback, that) {\n var node = this, nodes = [node], children, i, index = -1;\n while (node = nodes.pop()) {\n callback.call(that, node, ++index, this);\n if (children = node.children) {\n for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n }\n return this;\n}\n","export default function(callback, that) {\n var node = this, nodes = [node], next = [], children, i, n, index = -1;\n while (node = nodes.pop()) {\n next.push(node);\n if (children = node.children) {\n for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n }\n while (node = next.pop()) {\n callback.call(that, node, ++index, this);\n }\n return this;\n}\n","export default function(callback, that) {\n let index = -1;\n for (const node of this) {\n if (callback.call(that, node, ++index, this)) {\n return node;\n }\n }\n}\n","export default function(value) {\n return this.eachAfter(function(node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}\n","export default function(compare) {\n return this.eachBefore(function(node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\n","export default function(end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\n","export default function() {\n var node = this, nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n var leaves = [];\n this.eachBefore(function(node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}\n","export default function() {\n var root = this, links = [];\n root.each(function(node) {\n if (node !== root) { // Don’t include the root’s parent, if any.\n links.push({source: node.parent, target: node});\n }\n });\n return links;\n}\n","export default function*() {\n var node = this, current, next = [node], children, i, n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n yield node;\n if (children = node.children) {\n for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n }\n } while (next.length);\n}\n","import node_count from \"./count.js\";\nimport node_each from \"./each.js\";\nimport node_eachBefore from \"./eachBefore.js\";\nimport node_eachAfter from \"./eachAfter.js\";\nimport node_find from \"./find.js\";\nimport node_sum from \"./sum.js\";\nimport node_sort from \"./sort.js\";\nimport node_path from \"./path.js\";\nimport node_ancestors from \"./ancestors.js\";\nimport node_descendants from \"./descendants.js\";\nimport node_leaves from \"./leaves.js\";\nimport node_links from \"./links.js\";\nimport node_iterator from \"./iterator.js\";\n\nexport default function hierarchy(data, children) {\n if (data instanceof Map) {\n data = [undefined, data];\n if (children === undefined) children = mapChildren;\n } else if (children === undefined) {\n children = objectChildren;\n }\n\n var root = new Node(data),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n\n while (node = nodes.pop()) {\n if ((childs = children(node.data)) && (n = (childs = Array.from(childs)).length)) {\n node.children = childs;\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = childs[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n\n return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\n\nfunction objectChildren(d) {\n return d.children;\n}\n\nfunction mapChildren(d) {\n return Array.isArray(d) ? d[1] : null;\n}\n\nfunction copyData(node) {\n if (node.data.value !== undefined) node.value = node.data.value;\n node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height;\n while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n this.data = data;\n this.depth =\n this.height = 0;\n this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n constructor: Node,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n find: node_find,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy,\n [Symbol.iterator]: node_iterator\n};\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error;\n set(this, id).ease = v;\n };\n}\n\nexport default function(value) {\n if (typeof value !== \"function\") throw new Error;\n return this.each(easeVarying(this._id, value));\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n\n // The selection was empty, resolve end immediately\n if (size === 0) resolve();\n });\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n return array(select.apply(this, arguments));\n };\n}\n\nexport default function(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nexport function childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\nexport default function(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = new Map,\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function(value, key) {\n if (!arguments.length) return Array.from(this, datum);\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data\n ? data // Array, TypedArray, NodeList, array-like\n : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter) enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update) update = update.selection();\n }\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n var selection = context.selection ? context.selection() : context;\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","function contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","export default function*() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) yield node;\n }\n }\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","// These are typically used in conjunction with noevent to ensure that we can\n// preventDefault on the event.\nexport const nonpassive = {passive: false};\nexport const nonpassivecapture = {capture: true, passive: false};\n\nexport function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {select} from \"d3-selection\";\nimport noevent, {nonpassivecapture} from \"./noevent.js\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, nonpassivecapture);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, nonpassivecapture);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nexport function yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", noevent, nonpassivecapture);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n","var epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\nexport default (function zoomRho(rho, rho2, rho4) {\n\n // p0 = [ux0, uy0, w0]\n // p1 = [ux1, uy1, w1]\n function zoom(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000 * rho / Math.SQRT2;\n\n return i;\n }\n\n zoom.rho = function(_) {\n var _1 = Math.max(1e-3, +_), _2 = _1 * _1, _4 = _2 * _2;\n return zoomRho(_1, _2, _4);\n };\n\n return zoom;\n})(Math.SQRT2, 2, 4);\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","export default function(event) {\n let sourceEvent;\n while (sourceEvent = event.sourceEvent) event = sourceEvent;\n return event;\n}\n","import sourceEvent from \"./sourceEvent.js\";\n\nexport default function(event, node) {\n event = sourceEvent(event);\n if (node === undefined) node = event.currentTarget;\n if (node) {\n var svg = node.ownerSVGElement || node;\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n if (node.getBoundingClientRect) {\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n }\n }\n return [event.pageX, event.pageY];\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error;\n set(this, id).ease = v;\n };\n}\n\nexport default function(value) {\n if (typeof value !== \"function\") throw new Error;\n return this.each(easeVarying(this._id, value));\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n\n // The selection was empty, resolve end immediately\n if (size === 0) resolve();\n });\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","export default x => () => x;\n","export default function ZoomEvent(type, {\n sourceEvent,\n target,\n transform,\n dispatch\n}) {\n Object.defineProperties(this, {\n type: {value: type, enumerable: true, configurable: true},\n sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n target: {value: target, enumerable: true, configurable: true},\n transform: {value: transform, enumerable: true, configurable: true},\n _: {value: dispatch}\n });\n}\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n","export function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {select, pointer} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\n// except for pinch-to-zoom, which is sent as a wheel+ctrlKey event\nfunction defaultFilter(event) {\n return (!event.ctrlKey || event.type === 'wheel') && !event.button;\n}\n\nfunction defaultExtent() {\n var e = this;\n if (e instanceof SVGElement) {\n e = e.ownerSVGElement || e;\n if (e.hasAttribute(\"viewBox\")) {\n e = e.viewBox.baseVal;\n return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n }\n return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n }\n return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta(event) {\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002) * (event.ctrlKey ? 10 : 1);\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n return transform.translate(\n dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n );\n}\n\nexport default function() {\n var filter = defaultFilter,\n extent = defaultExtent,\n constrain = defaultConstrain,\n wheelDelta = defaultWheelDelta,\n touchable = defaultTouchable,\n scaleExtent = [0, Infinity],\n translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n duration = 250,\n interpolate = interpolateZoom,\n listeners = dispatch(\"start\", \"zoom\", \"end\"),\n touchstarting,\n touchfirst,\n touchending,\n touchDelay = 500,\n wheelDelay = 150,\n clickDistance2 = 0,\n tapDistance = 10;\n\n function zoom(selection) {\n selection\n .property(\"__zoom\", defaultTransform)\n .on(\"wheel.zoom\", wheeled, {passive: false})\n .on(\"mousedown.zoom\", mousedowned)\n .on(\"dblclick.zoom\", dblclicked)\n .filter(touchable)\n .on(\"touchstart.zoom\", touchstarted)\n .on(\"touchmove.zoom\", touchmoved)\n .on(\"touchend.zoom touchcancel.zoom\", touchended)\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n zoom.transform = function(collection, transform, point, event) {\n var selection = collection.selection ? collection.selection() : collection;\n selection.property(\"__zoom\", defaultTransform);\n if (collection !== selection) {\n schedule(collection, transform, point, event);\n } else {\n selection.interrupt().each(function() {\n gesture(this, arguments)\n .event(event)\n .start()\n .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n .end();\n });\n }\n };\n\n zoom.scaleBy = function(selection, k, p, event) {\n zoom.scaleTo(selection, function() {\n var k0 = this.__zoom.k,\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return k0 * k1;\n }, p, event);\n };\n\n zoom.scaleTo = function(selection, k, p, event) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t0 = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n p1 = t0.invert(p0),\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n }, p, event);\n };\n\n zoom.translateBy = function(selection, x, y, event) {\n zoom.transform(selection, function() {\n return constrain(this.__zoom.translate(\n typeof x === \"function\" ? x.apply(this, arguments) : x,\n typeof y === \"function\" ? y.apply(this, arguments) : y\n ), extent.apply(this, arguments), translateExtent);\n }, null, event);\n };\n\n zoom.translateTo = function(selection, x, y, p, event) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n typeof y === \"function\" ? -y.apply(this, arguments) : -y\n ), e, translateExtent);\n }, p, event);\n };\n\n function scale(transform, k) {\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n }\n\n function translate(transform, p0, p1) {\n var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n }\n\n function centroid(extent) {\n return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n }\n\n function schedule(transition, transform, point, event) {\n transition\n .on(\"start.zoom\", function() { gesture(this, arguments).event(event).start(); })\n .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).event(event).end(); })\n .tween(\"zoom\", function() {\n var that = this,\n args = arguments,\n g = gesture(that, args).event(event),\n e = extent.apply(that, args),\n p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n a = that.__zoom,\n b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n return function(t) {\n if (t === 1) t = b; // Avoid rounding error on end.\n else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n g.zoom(null, t);\n };\n });\n }\n\n function gesture(that, args, clean) {\n return (!clean && that.__zooming) || new Gesture(that, args);\n }\n\n function Gesture(that, args) {\n this.that = that;\n this.args = args;\n this.active = 0;\n this.sourceEvent = null;\n this.extent = extent.apply(that, args);\n this.taps = 0;\n }\n\n Gesture.prototype = {\n event: function(event) {\n if (event) this.sourceEvent = event;\n return this;\n },\n start: function() {\n if (++this.active === 1) {\n this.that.__zooming = this;\n this.emit(\"start\");\n }\n return this;\n },\n zoom: function(key, transform) {\n if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n this.that.__zoom = transform;\n this.emit(\"zoom\");\n return this;\n },\n end: function() {\n if (--this.active === 0) {\n delete this.that.__zooming;\n this.emit(\"end\");\n }\n return this;\n },\n emit: function(type) {\n var d = select(this.that).datum();\n listeners.call(\n type,\n this.that,\n new ZoomEvent(type, {\n sourceEvent: this.sourceEvent,\n target: zoom,\n type,\n transform: this.that.__zoom,\n dispatch: listeners\n }),\n d\n );\n }\n };\n\n function wheeled(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var g = gesture(this, args).event(event),\n t = this.__zoom,\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n p = pointer(event);\n\n // If the mouse is in the same location as before, reuse it.\n // If there were recent wheel events, reset the wheel idle timeout.\n if (g.wheel) {\n if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n g.mouse[1] = t.invert(g.mouse[0] = p);\n }\n clearTimeout(g.wheel);\n }\n\n // If this wheel event won’t trigger a transform change, ignore it.\n else if (t.k === k) return;\n\n // Otherwise, capture the mouse point and location at the start.\n else {\n g.mouse = [p, t.invert(p)];\n interrupt(this);\n g.start();\n }\n\n noevent(event);\n g.wheel = setTimeout(wheelidled, wheelDelay);\n g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n function wheelidled() {\n g.wheel = null;\n g.end();\n }\n }\n\n function mousedowned(event, ...args) {\n if (touchending || !filter.apply(this, arguments)) return;\n var currentTarget = event.currentTarget,\n g = gesture(this, args, true).event(event),\n v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n p = pointer(event, currentTarget),\n x0 = event.clientX,\n y0 = event.clientY;\n\n dragDisable(event.view);\n nopropagation(event);\n g.mouse = [p, this.__zoom.invert(p)];\n interrupt(this);\n g.start();\n\n function mousemoved(event) {\n noevent(event);\n if (!g.moved) {\n var dx = event.clientX - x0, dy = event.clientY - y0;\n g.moved = dx * dx + dy * dy > clickDistance2;\n }\n g.event(event)\n .zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = pointer(event, currentTarget), g.mouse[1]), g.extent, translateExtent));\n }\n\n function mouseupped(event) {\n v.on(\"mousemove.zoom mouseup.zoom\", null);\n dragEnable(event.view, g.moved);\n noevent(event);\n g.event(event).end();\n }\n }\n\n function dblclicked(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var t0 = this.__zoom,\n p0 = pointer(event.changedTouches ? event.changedTouches[0] : event, this),\n p1 = t0.invert(p0),\n k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, args), translateExtent);\n\n noevent(event);\n if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0, event);\n else select(this).call(zoom.transform, t1, p0, event);\n }\n\n function touchstarted(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var touches = event.touches,\n n = touches.length,\n g = gesture(this, args, event.changedTouches.length === n).event(event),\n started, i, t, p;\n\n nopropagation(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n p = [p, this.__zoom.invert(p), t.identifier];\n if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n }\n\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n if (started) {\n if (g.taps < 2) touchfirst = p[0], touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n interrupt(this);\n g.start();\n }\n }\n\n function touchmoved(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length, i, t, p, l;\n\n noevent(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n }\n t = g.that.__zoom;\n if (g.touch1) {\n var p0 = g.touch0[0], l0 = g.touch0[1],\n p1 = g.touch1[0], l1 = g.touch1[1],\n dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n t = scale(t, Math.sqrt(dp / dl));\n p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n }\n else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n else return;\n\n g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n }\n\n function touchended(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length, i, t;\n\n nopropagation(event);\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, touchDelay);\n for (i = 0; i < n; ++i) {\n t = touches[i];\n if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n }\n if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n else {\n g.end();\n // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n if (g.taps === 2) {\n t = pointer(t, this);\n if (Math.hypot(touchfirst[0] - t[0], touchfirst[1] - t[1]) < tapDistance) {\n var p = select(this).on(\"dblclick.zoom\");\n if (p) p.apply(this, arguments);\n }\n }\n }\n }\n\n zoom.wheelDelta = function(_) {\n return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n };\n\n zoom.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n };\n\n zoom.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n };\n\n zoom.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n };\n\n zoom.scaleExtent = function(_) {\n return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n };\n\n zoom.translateExtent = function(_) {\n return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n };\n\n zoom.constrain = function(_) {\n return arguments.length ? (constrain = _, zoom) : constrain;\n };\n\n zoom.duration = function(_) {\n return arguments.length ? (duration = +_, zoom) : duration;\n };\n\n zoom.interpolate = function(_) {\n return arguments.length ? (interpolate = _, zoom) : interpolate;\n };\n\n zoom.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? zoom : value;\n };\n\n zoom.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n };\n\n zoom.tapDistance = function(_) {\n return arguments.length ? (tapDistance = +_, zoom) : tapDistance;\n };\n\n return zoom;\n}\n","// This is to mitigate an issue where the SVG icons being imported from the project weren't being rendered on Firefox\n// To know more about this technique, check this doc: https://developer.mozilla.org/en-US/docs/Web/SVG/Element/defs\nexport const getChartIcon = (type) => `\n\n\n\n\n\n\n\n\n\n\n\n\n\n`;\n","\n\n\n\n\n","import mod from \"-!../../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../../thread-loader/dist/cjs.js!../../../../../babel-loader/lib/index.js!../../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../../thread-loader/dist/cjs.js!../../../../../babel-loader/lib/index.js!../../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=4cb4c59b&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=4cb4c59b&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=34e1a2c7&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=34e1a2c7&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"34e1a2c7\",\n null\n \n)\n\nexport default component.exports","\nimport ResourceDetail from '@shell/components/ResourceDetail/index.vue';\n\nexport default {\n name: 'KubewardenResourceCreate',\n components: { ResourceDetail },\n};\n","import mod from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./create.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./create.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./create.vue?vue&type=template&id=5feb7205&\"\nimport script from \"./create.vue?vue&type=script&lang=ts&\"\nexport * from \"./create.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('ResourceDetail')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport ResourceDetail from '@shell/components/ResourceDetail/index.vue';\n\nexport default {\n name: 'KubewardenResourcedId',\n components: { ResourceDetail },\n};\n","import mod from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./_id.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./_id.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./_id.vue?vue&type=template&id=6fbed2fe&\"\nimport script from \"./_id.vue?vue&type=script&lang=ts&\"\nexport * from \"./_id.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('ResourceDetail')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport ResourceDetail from '@shell/components/ResourceDetail/index.vue';\n\nexport default {\n name: 'KubewardenResourcedNamespaceId',\n components: { ResourceDetail },\n};\n","import mod from \"-!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./_id.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./_id.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./_id.vue?vue&type=template&id=5953c8d8&\"\nimport script from \"./_id.vue?vue&type=script&lang=ts&\"\nexport * from \"./_id.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { KUBEWARDEN_PRODUCT_NAME, POLICY_REPORTER_PRODUCT } from '../types';\n\nimport Dashboard from '../pages/c/_cluster/kubewarden/index.vue';\nimport PolicyReport from '../pages/c/_cluster/kubewarden/_resource/policy-reporter.vue';\nimport KubewardenResourcedList from '../pages/c/_cluster/kubewarden/_resource/index.vue';\nimport CreateKubewardenResource from '../pages/c/_cluster/kubewarden/_resource/create.vue';\nimport ViewKubewardenResource from '../pages/c/_cluster/kubewarden/_resource/_id.vue';\nimport ViewKubewardenNsResource from '../pages/c/_cluster/kubewarden/_resource/_namespace/_id.vue';\n\nconst routes = [\n {\n name: `c-cluster-${ KUBEWARDEN_PRODUCT_NAME }`,\n path: `/c/:cluster/${ KUBEWARDEN_PRODUCT_NAME }`,\n component: Dashboard,\n meta: { product: KUBEWARDEN_PRODUCT_NAME, pkg: KUBEWARDEN_PRODUCT_NAME }\n },\n {\n name: `c-cluster-${ KUBEWARDEN_PRODUCT_NAME }-${ POLICY_REPORTER_PRODUCT }`,\n path: `/c/:cluster/${ KUBEWARDEN_PRODUCT_NAME }/${ POLICY_REPORTER_PRODUCT }`,\n component: PolicyReport,\n meta: { product: KUBEWARDEN_PRODUCT_NAME, pkg: KUBEWARDEN_PRODUCT_NAME }\n },\n {\n name: `c-cluster-${ KUBEWARDEN_PRODUCT_NAME }-resource`,\n path: `/c/:cluster/${ KUBEWARDEN_PRODUCT_NAME }/:resource`,\n component: KubewardenResourcedList,\n meta: { product: KUBEWARDEN_PRODUCT_NAME, pkg: KUBEWARDEN_PRODUCT_NAME }\n },\n {\n name: `c-cluster-${ KUBEWARDEN_PRODUCT_NAME }-resource-create`,\n path: `/c/:cluster/${ KUBEWARDEN_PRODUCT_NAME }/:resource/create`,\n component: CreateKubewardenResource,\n meta: { product: KUBEWARDEN_PRODUCT_NAME, pkg: KUBEWARDEN_PRODUCT_NAME }\n },\n {\n name: `c-cluster-${ KUBEWARDEN_PRODUCT_NAME }-resource-id`,\n path: `/c/:cluster/${ KUBEWARDEN_PRODUCT_NAME }/:resource/:id`,\n component: ViewKubewardenResource,\n meta: { product: KUBEWARDEN_PRODUCT_NAME, pkg: KUBEWARDEN_PRODUCT_NAME }\n },\n {\n name: `c-cluster-${ KUBEWARDEN_PRODUCT_NAME }-resource-namespace-id`,\n path: `/c/:cluster/${ KUBEWARDEN_PRODUCT_NAME }/:resource/:namespace/:id`,\n component: ViewKubewardenNsResource,\n meta: { product: KUBEWARDEN_PRODUCT_NAME, pkg: KUBEWARDEN_PRODUCT_NAME }\n }\n];\n\nexport default routes;\n","import {\n CatalogApp, CustomResourceDefinition, PolicyReport, ClusterPolicyReport, PolicyTraceConfig\n} from '../../types';\nimport { StateConfig } from './index';\n\nexport default {\n airGapped: (state: StateConfig): Boolean => state.airGapped,\n hideBannerDefaults: (state: StateConfig): Boolean => state.hideBannerDefaults,\n hideBannerArtifactHub: (state: StateConfig): Boolean => state.hideBannerArtifactHub,\n hideBannerAirgapPolicy: (state: StateConfig): Boolean => state.hideBannerAirgapPolicy,\n controllerApp: (state: StateConfig): CatalogApp | null => state.controllerApp,\n kubewardenCrds: (state: StateConfig): CustomResourceDefinition[] => state.kubewardenCrds,\n policyReports: (state: StateConfig): PolicyReport[] => state.policyReports,\n clusterPolicyReports: (state: StateConfig): ClusterPolicyReport[] => state.clusterPolicyReports,\n policyTraces: (state: StateConfig): PolicyTraceConfig[] => state.policyTraces,\n refreshingCharts: (state: StateConfig): Boolean => state.refreshingCharts,\n};\n","import {\n CatalogApp, ClusterPolicyReport, CustomResourceDefinition, PolicyReport, PolicyTrace, PolicyTraceConfig\n} from '../../types';\nimport { StateConfig } from './index';\n\ntype ReportKeys = 'policyReports' | 'clusterPolicyReports';\n\nexport default {\n updateAirGapped(state: StateConfig, val: Boolean) {\n state.airGapped = val;\n },\n updateHideBannerDefaults(state: StateConfig, val: Boolean) {\n state.hideBannerDefaults = val;\n },\n updateHideBannerArtifactHub(state: StateConfig, val: Boolean) {\n state.hideBannerArtifactHub = val;\n },\n updateHideBannerAirgapPolicy(state: StateConfig, val: Boolean) {\n state.hideBannerAirgapPolicy = val;\n },\n\n /**\n * Updates/Adds Kubewarden Controller App into state\n * @param state\n * @param app `CatalogApp`\n */\n updateControllerApp(state: StateConfig, app: CatalogApp) {\n if ( state.controllerApp?.id === app?.id ) {\n state.controllerApp.metadata = app.metadata;\n state.controllerApp.spec = app.spec;\n state.controllerApp.status = app.status;\n } else {\n state.controllerApp = app;\n }\n },\n\n /**\n * Removes Kubewarden Controller App by ID\n * @param state\n * @param app `CatalogApp`\n */\n removeControllerApp(state: StateConfig, app: CatalogApp) {\n const existing = state.controllerApp?.id === app?.id;\n\n if ( existing ) {\n state.controllerApp = null;\n }\n },\n\n /**\n * Updates/Adds CRD to state\n * @param state\n * @param crd `CustomResourceDefinition`\n */\n updateKubewardenCrds(state: StateConfig, crd: CustomResourceDefinition) {\n const existingCrd = state.kubewardenCrds.find(c => c?.metadata?.name === crd?.metadata?.name);\n\n if ( existingCrd ) {\n existingCrd.metadata = crd.metadata;\n existingCrd.spec = crd.spec;\n existingCrd.status = crd.status;\n } else {\n state.kubewardenCrds.push(crd);\n }\n },\n\n /**\n * Removes CRD from state by `crd.metadata.name`\n * @param state\n * @param crd `CustomResourceDefinition`\n */\n removeKubewardenCrds(state: StateConfig, crd: CustomResourceDefinition) {\n const idx = state.kubewardenCrds.findIndex(c => c?.metadata?.name === crd?.metadata?.name);\n\n if ( idx !== -1 ) {\n state.kubewardenCrds.splice(idx, 1);\n }\n },\n\n /**\n * Updates/Adds a policy or cluster policy report to the store.\n * @param state - The current state object.\n * @param reportArrayKey - The key to the report array in the state to update (e.g., 'policyReports' or 'clusterPolicyReports').\n * @param updatedReport - The report object to update or add.\n */\n updateReports(\n state: StateConfig,\n { reportArrayKey, updatedReport }: { reportArrayKey: ReportKeys, updatedReport: T }\n ): void {\n const reportArray = state[reportArrayKey] as Array;\n const existingReport = reportArray.find(report => report.id === updatedReport.id);\n\n if ( existingReport ) {\n existingReport.results = updatedReport.results;\n existingReport.summary = updatedReport.summary;\n } else {\n reportArray.push(updatedReport);\n }\n },\n\n /**\n * Searches and then removes a report by id from the store\n * @param state\n * @param reportId\n */\n removePolicyReportById(state: StateConfig, reportId: String) {\n const idx = state.policyReports.findIndex(report => report.id === reportId);\n\n if ( idx !== -1 ) {\n state.policyReports.splice(idx, 1);\n }\n },\n\n /**\n * Finds the existing policy object and adds the related traces.\n * @param state\n * @param policy\n * @param updatedTrace\n */\n updatePolicyTraces(state: StateConfig, val: { policyName: string, cluster: string, updatedTrace: PolicyTrace }) {\n const { policyName, cluster, updatedTrace } = val;\n const existingPolicyObj = state.policyTraces.find((traceObj: PolicyTraceConfig) => traceObj.policyName === policyName);\n let existingTrace = existingPolicyObj?.traces.find((trace: PolicyTrace) => trace.id === updatedTrace.id);\n\n if ( existingTrace ) {\n existingTrace = updatedTrace;\n } else if ( !existingPolicyObj ) {\n state.policyTraces.push({\n policyName,\n cluster,\n traces: [updatedTrace]\n });\n } else {\n // If the trace doesn't exist, add it to the store\n existingPolicyObj?.traces.push(updatedTrace);\n }\n },\n /**\n * Searches for the existing policy object and removes a trace by the traceID from the store\n * @param state\n * @param policy\n * @param updatedTrace\n */\n removeTraceById(state: StateConfig, policy: PolicyTraceConfig, updatedTrace: PolicyTrace) {\n const existingPolicyObj = state.policyTraces.find((traceObj: PolicyTraceConfig) => traceObj.policyName === policy.policyName);\n const idx = existingPolicyObj?.traces.findIndex((trace: PolicyTrace) => trace.id === updatedTrace.id);\n\n if ( idx && idx !== -1 ) {\n existingPolicyObj?.traces.splice(idx, 1);\n }\n },\n\n updateRefreshingCharts(state: StateConfig, val: Boolean) {\n state.refreshingCharts = val;\n }\n};\n","import {\n CatalogApp, CustomResourceDefinition, PolicyReport, ClusterPolicyReport, PolicyTraceConfig, PolicyTrace\n} from '../../types';\n\nexport default {\n updateAirGapped({ commit }: any, val: Boolean) {\n commit('updateAirGapped', val);\n },\n\n // Defaults banner\n updateHideBannerDefaults({ commit }: any, val: Boolean) {\n commit('updateHideBannerDefaults', val);\n },\n\n // ArtifactHub banner\n updateHideBannerArtifactHub({ commit }: any, val: Boolean) {\n commit('updateHideBannerArtifactHub', val);\n },\n updateHideBannerAirgapPolicy({ commit }: any, val: Boolean) {\n commit('updateHideBannerAirgapPolicy', val);\n },\n\n // Policy and Cluster Policy Reports\n updatePolicyReports({ commit }: any, updatedReport: PolicyReport) {\n commit('updateReports', { reportArrayKey: 'policyReports', updatedReport });\n },\n updateClusterPolicyReports({ commit }: any, updatedReport: ClusterPolicyReport) {\n commit('updateReports', { reportArrayKey: 'clusterPolicyReports', updatedReport });\n },\n\n // Policy traces\n updatePolicyTraces({ commit }: any, val: { policyName: string, updatedTrace: PolicyTrace }) {\n commit('updatePolicyTraces', val);\n },\n removePolicyTraceById({ commit }: any, policy: PolicyTraceConfig, trace: PolicyTrace) {\n commit('removePolicyTraceById', policy, trace);\n },\n\n // Charts\n updateRefreshingCharts({ commit }: any, val: Boolean) {\n commit('updateRefreshingCharts', val);\n },\n\n // Catalog\n updateControllerApp({ commit }: any, val: CatalogApp) {\n commit('updateControllerApp', val);\n },\n removeControllerApp({ commit }: any, val: CatalogApp) {\n commit('removeControllerApp', val);\n },\n updateKubewardenCrds({ commit }: any, val: CustomResourceDefinition) {\n commit('updateKubewardenCrds', val);\n },\n removeKubewardenCrds({ commit }: any, val: CustomResourceDefinition) {\n commit('removeKubewardenCrds', val);\n }\n};\n","import { CoreStoreSpecifics, CoreStoreConfig } from '@shell/core/types';\n\nimport {\n KUBEWARDEN_PRODUCT_NAME,\n CatalogApp,\n CustomResourceDefinition,\n FleetGitRepo,\n PolicyReport,\n PolicyTraceConfig,\n ClusterPolicyReport\n} from '../../types';\n\nimport getters from './getters';\nimport mutations from './mutations';\nimport actions from './actions';\n\nexport interface StateConfig {\n airGapped: Boolean;\n fleetRepos: FleetGitRepo[];\n hideBannerDefaults: Boolean;\n hideBannerArtifactHub: Boolean;\n hideBannerAirgapPolicy: Boolean;\n controllerApp: CatalogApp | null;\n kubewardenCrds: CustomResourceDefinition[];\n policyReports: PolicyReport[];\n clusterPolicyReports: ClusterPolicyReport[];\n policyTraces: PolicyTraceConfig[];\n refreshingCharts: Boolean;\n}\n\nconst kubewardenFactory = (config: StateConfig): CoreStoreSpecifics => {\n return {\n state: (): StateConfig => {\n return {\n airGapped: config.airGapped,\n fleetRepos: config.fleetRepos,\n hideBannerDefaults: config.hideBannerDefaults,\n hideBannerArtifactHub: config.hideBannerArtifactHub,\n hideBannerAirgapPolicy: config.hideBannerAirgapPolicy,\n controllerApp: config.controllerApp,\n kubewardenCrds: config.kubewardenCrds,\n policyReports: config.policyReports,\n clusterPolicyReports: config.clusterPolicyReports,\n policyTraces: config.policyTraces,\n refreshingCharts: config.refreshingCharts\n };\n },\n\n getters: { ...getters },\n mutations: { ...mutations },\n actions: { ...actions },\n };\n};\n\nconst config: CoreStoreConfig = { namespace: KUBEWARDEN_PRODUCT_NAME };\n\nexport default {\n specifics: kubewardenFactory({\n airGapped: false,\n fleetRepos: [],\n hideBannerDefaults: false,\n hideBannerArtifactHub: false,\n hideBannerAirgapPolicy: false,\n controllerApp: null,\n kubewardenCrds: [],\n policyReports: [],\n clusterPolicyReports: [],\n policyTraces: [],\n refreshingCharts: false\n }),\n config\n};\n","import DOMPurify from 'dompurify';\nimport { uniq } from '@shell/utils/array';\n\nconst ALLOWED_TAGS = [\n 'code',\n 'li',\n 'a',\n 'p',\n 'b',\n 'br',\n 'ul',\n 'pre',\n 'span',\n 'div',\n 'i',\n 'em',\n 'strong',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'table',\n 'thead',\n 'tr',\n 'th',\n 'tbody',\n 'td',\n 'blockquote'\n];\n\n// Allow 'A' tags to keep the target=_blank attribute if they have it\nDOMPurify.addHook('uponSanitizeAttribute', (node, data) => {\n if (node.tagName === 'A' && data.attrName === 'target' && data.attrValue === '_blank') {\n data.forceKeepAttr = true;\n }\n});\n\n// Ensure if an 'A' tag has target=_blank that we add noopener, noreferrer and nofollow to the 'rel' attribute\nDOMPurify.addHook('afterSanitizeAttributes', (node) => {\n if (node.tagName === 'A' && node?.target === '_blank') {\n const rel = ['noopener', 'noreferrer', 'nofollow'];\n const existingRel = node.rel?.length ? node.rel.split(' ') : [];\n const combined = uniq([...rel, ...existingRel]);\n\n node.setAttribute('rel', combined.join(' '));\n }\n});\n\nexport const purifyHTML = (value, options = { ALLOWED_TAGS }) => {\n return DOMPurify.sanitize(value, options);\n};\n","import Vue from 'vue';\nimport { VTooltip } from 'v-tooltip';\nimport { purifyHTML } from './clean-html';\n\nfunction purifyContent(value) {\n const type = typeof value;\n\n if (type === 'string') {\n return purifyHTML(value);\n } else if (value && type === 'object' && typeof value.content === 'string') {\n return { ...value, content: purifyHTML(value.content) };\n } else {\n return value;\n }\n}\n\nfunction bind(el, { value, oldValue, modifiers }) {\n const purifiedValue = purifyContent(value);\n\n VTooltip.bind(\n el,\n {\n value: purifiedValue, oldValue, modifiers\n });\n}\n\nexport const VCleanTooltip = {\n ...VTooltip,\n bind,\n update: bind,\n};\n\nVue.directive('clean-tooltip', VCleanTooltip);\n","import Vue from 'vue';\nimport { purifyHTML } from './clean-html';\n\nexport const cleanHtmlDirective = {\n inserted(el, binding) {\n el.innerHTML = purifyHTML(binding.value);\n },\n componentUpdated(el, binding) {\n el.innerHTML = purifyHTML(binding.value);\n },\n unbind(el) {\n el.innerHTML = '';\n }\n};\n\nVue.directive('clean-html', cleanHtmlDirective);\n","import { importTypes } from '@rancher/auto-import';\nimport {\n IPlugin, TableColumnLocation, TabLocation, PanelLocation, OnNavToPackage\n} from '@shell/core/types';\nimport {\n NAMESPACE, POD, WORKLOAD_TYPES, INGRESS, SERVICE\n} from '@shell/config/types';\n\nimport kubewardenRoutes from './routes/kubewarden-routes';\nimport kubewardenStore from './store/kubewarden';\nimport { getReports } from './modules/policyReporter';\n\n// fix missing directives on dashboard v2.7.2\nimport '@shell/plugins/clean-tooltip-directive';\nimport '@shell/plugins/clean-html-directive';\n\nconst onEnter: OnNavToPackage = async(store) => {\n await getReports(store, false);\n await getReports(store, true);\n};\n\n// Init the package\nexport default function($plugin: IPlugin, args: any) {\n // Auto-import model, detail, edit from the folders\n importTypes($plugin);\n\n // Provide plugin metadata from package.json\n $plugin.metadata = require('./package.json');\n\n // Load product\n $plugin.addProduct(require('./config/kubewarden'));\n\n // Add Vuex store\n $plugin.addDashboardStore(kubewardenStore.config.namespace, kubewardenStore.specifics, kubewardenStore.config);\n\n // Routes\n $plugin.addRoutes(kubewardenRoutes);\n\n // Add hooks to Vue navigation world\n $plugin.addNavHooks(onEnter);\n\n /** Panels */\n $plugin.addPanel(\n PanelLocation.RESOURCE_LIST,\n { path: [{ urlPath: 'explorer/projectsnamespaces', endsWith: true }] },\n { component: () => import('./components/PolicyReporter/ReporterPanel.vue') }\n );\n\n $plugin.addPanel(\n PanelLocation.RESOURCE_LIST,\n {\n resource: [\n POD,\n WORKLOAD_TYPES.CRON_JOB,\n WORKLOAD_TYPES.DAEMON_SET,\n WORKLOAD_TYPES.DEPLOYMENT,\n WORKLOAD_TYPES.JOB,\n WORKLOAD_TYPES.STATEFUL_SET,\n INGRESS,\n SERVICE\n ]\n },\n { component: () => import('./components/PolicyReporter/ReporterPanel.vue') }\n );\n\n /** Columns */\n // Policy Reports for Project Namespaces\n $plugin.addTableColumn(\n TableColumnLocation.RESOURCE,\n { path: [{ urlPath: 'explorer/projectsnamespaces', endsWith: true }] },\n {\n name: 'policy-reports',\n labelKey: 'kubewarden.policyReporter.headers.policyReports.label',\n getValue: (row: any) => row,\n weight: 3,\n formatter: 'PolicyReportSummary'\n }\n );\n\n // Policy Reports for namespaced resources\n $plugin.addTableColumn(\n TableColumnLocation.RESOURCE,\n {\n resource: [\n POD,\n WORKLOAD_TYPES.CRON_JOB,\n WORKLOAD_TYPES.DAEMON_SET,\n WORKLOAD_TYPES.DEPLOYMENT,\n WORKLOAD_TYPES.JOB,\n WORKLOAD_TYPES.STATEFUL_SET,\n INGRESS,\n SERVICE\n ]\n },\n {\n name: 'policy-reports',\n labelKey: 'kubewarden.policyReporter.headers.label',\n getValue: (row: any) => row,\n weight: 3,\n formatter: 'PolicyReportSummary'\n }\n );\n\n /** Tabs */\n $plugin.addTab(\n TabLocation.RESOURCE_DETAIL,\n {\n resource: [\n NAMESPACE,\n POD,\n WORKLOAD_TYPES.CRON_JOB,\n WORKLOAD_TYPES.DAEMON_SET,\n WORKLOAD_TYPES.DEPLOYMENT,\n WORKLOAD_TYPES.JOB,\n WORKLOAD_TYPES.STATEFUL_SET,\n INGRESS,\n SERVICE\n ]\n },\n {\n name: 'policy-report-tab',\n labelKey: 'kubewarden.policyReporter.headers.label',\n weight: -5,\n showHeader: true,\n component: () => import('./components/PolicyReporter/ResourceTab.vue')\n }\n );\n}\n","import './setPublicPath'\nimport mod from '~entry'\nexport default mod\nexport * from '~entry'\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".percentage-bar[data-v-620caa7e]{display:flex;flex-direction:row}.percentage-bar .percentage-value[data-v-620caa7e]{word-break:keep-all}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Authority.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Authority.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Authority.vue?vue&type=template&id=5fa70040&scoped=true&\"\nimport script from \"./Authority.vue?vue&type=script&lang=js&\"\nexport * from \"./Authority.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Authority.vue?vue&type=style&index=0&id=5fa70040&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5fa70040\",\n null\n \n)\n\nexport default component.exports","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","export const NAMESPACE_FILTER_ALL_PREFIX = 'all';\nexport const NAMESPACE_FILTER_NS_PREFIX = 'ns';\nexport const NAMESPACE_FILTER_P_PREFIX = 'project';\n\nexport const NAMESPACE_FILTER_NS_FULL_PREFIX = `${ NAMESPACE_FILTER_NS_PREFIX }://`;\nexport const NAMESPACE_FILTER_P_FULL_PREFIX = `${ NAMESPACE_FILTER_P_PREFIX }://`;\n\nexport const NAMESPACE_FILTER_ALL = NAMESPACE_FILTER_ALL_PREFIX;\nexport const NAMESPACE_FILTER_ALL_SYSTEM = `${ NAMESPACE_FILTER_ALL_PREFIX }://system`;\nexport const NAMESPACE_FILTER_ALL_USER = `${ NAMESPACE_FILTER_ALL_PREFIX }://user`;\nexport const NAMESPACE_FILTER_ALL_ORPHANS = `${ NAMESPACE_FILTER_ALL_PREFIX }://orphans`;\nexport const NAMESPACE_FILTER_NAMESPACED_PREFIX = 'namespaced://';\nexport const NAMESPACE_FILTER_NAMESPACED_YES = 'namespaced://true';\nexport const NAMESPACE_FILTER_NAMESPACED_NO = 'namespaced://false';\n\nexport const NAMESPACE_FILTER_KINDS = {\n DIVIDER: 'divider',\n PROJECT: 'project',\n NAMESPACE: 'namespace',\n SPECIAL: 'special'\n};\n\nconst SEPARATOR = '__%%__';\n\nexport const createNamespaceFilterKey = (clusterId, product) => {\n if (!product?.customNamespaceFilter) {\n return clusterId;\n }\n\n return createNamespaceFilterKeyWithId(clusterId, product.name);\n};\nexport const createNamespaceFilterKeyWithId = (clusterId, productId) => {\n return `${ clusterId }${ SEPARATOR }${ productId }`;\n};\n\nexport const splitNamespaceFilterKey = (key) => {\n const [clusterId, productId] = key.split(SEPARATOR);\n\n return {\n clusterId,\n productId\n };\n};\n","import { MANAGEMENT } from '@shell/config/types';\nimport { Store } from 'vuex';\nimport { DEFAULT_PERF_SETTING, PerfSettings, SETTING } from '@shell/config/settings';\n\nexport const fetchOrCreateSetting = async(store: Store, id: string, val: string, save = true): Promise => {\n let setting;\n\n try {\n setting = await store.dispatch('management/find', { type: MANAGEMENT.SETTING, id });\n } catch {\n const schema = store.getters['management/schemaFor'](MANAGEMENT.SETTING);\n const url = schema.linkFor('collection');\n\n setting = await store.dispatch('management/create', {\n type: MANAGEMENT.SETTING, metadata: { name: id }, value: val, default: val || ''\n });\n if ( save ) {\n await setting.save({ url });\n }\n }\n\n return setting;\n};\n\n/**\n * Fetch a specific setting that might not exist\n * We fetch all settings - reality is Rancher will have done this already, so there's no overhead in doing\n * this - but if we fetch a specific setting that does not exist, we will get a 404, which we don't want\n */\nexport const fetchSetting = async(store: Store, id: string): Promise => {\n const all = await store.dispatch('management/findAll', { type: MANAGEMENT.SETTING });\n const setting = (all || []).find((setting: any) => setting.id === id);\n\n return setting;\n};\n\nexport const setSetting = async(store: Store, id: string, val: string): Promise => {\n const setting = await fetchOrCreateSetting(store, id, val, false);\n\n setting.value = val;\n await setting.save();\n\n return setting;\n};\n\nexport const getPerformanceSetting = (rootGetters: Record any>): PerfSettings => {\n const perfSettingResource = rootGetters['management/byId'](MANAGEMENT.SETTING, SETTING.UI_PERFORMANCE);\n let perfSetting = {};\n\n if (perfSettingResource?.value) {\n try {\n perfSetting = JSON.parse(perfSettingResource.value);\n } catch (e) {\n console.warn('ui-performance setting contains invalid data'); // eslint-disable-line no-console\n }\n }\n\n // Start with the default and overwrite the values from the setting - ensures we have defaults for newly added options\n return Object.assign(DEFAULT_PERF_SETTING, perfSetting || {});\n};\n","import { NAMESPACE_FILTER_NS_FULL_PREFIX, NAMESPACE_FILTER_P_FULL_PREFIX } from '@shell/utils/namespace-filter';\nimport { getPerformanceSetting } from '@shell/utils/settings';\n\ntype Opt = { [key: string]: any, namespaced?: string[]}\n\nclass ProjectAndNamespaceFiltering {\n static param = 'projectsornamespaces'\n\n /**\n * Does the request `opt` definition require resources are fetched from a specific set namespaces/projects?\n */\n isApplicable(opt: Opt): boolean {\n return Array.isArray(opt.namespaced);\n }\n\n isEnabled(rootGetters: any): boolean {\n const currentProduct = rootGetters['currentProduct'];\n\n // Only enable for the cluster store at the moment. In theory this should work in management as well, as they're both 'steve' stores\n if (currentProduct?.inStore !== 'cluster') {\n return false;\n }\n\n if (currentProduct?.showWorkspaceSwitcher) {\n return false;\n }\n\n const perfConfig = getPerformanceSetting(rootGetters);\n\n if (!perfConfig.forceNsFilterV2?.enabled) {\n return false;\n }\n\n return true;\n }\n\n /**\n * Check if `opt` requires resources from specific ns/projects, if so return the required query param (x=y)\n */\n checkAndCreateParam(opt: Opt): string {\n if (!this.isApplicable(opt)) {\n return '';\n }\n\n return this.createParam(opt.namespaced);\n }\n\n private createParam(namespaceFilter: string[] | undefined): string {\n if (!namespaceFilter || !namespaceFilter.length) {\n return '';\n }\n\n const projectsOrNamespaces = namespaceFilter\n .map((f) => f.replace(NAMESPACE_FILTER_NS_FULL_PREFIX, '')\n .replace(NAMESPACE_FILTER_P_FULL_PREFIX, ''))\n .join(',');\n\n return `${ ProjectAndNamespaceFiltering.param }=${ projectsOrNamespaces }`;\n }\n}\n\nexport default new ProjectAndNamespaceFiltering();\n","import { NAMESPACE_FILTER_NS_PREFIX, NAMESPACE_FILTER_P_PREFIX } from '@shell/utils/namespace-filter';\nimport { mapGetters } from 'vuex';\nimport { ResourceListComponentName } from '../components/ResourceList/resource-list.config';\nimport pAndNFiltering from '@shell/utils/projectAndNamespaceFiltering.utils';\n\n/**\n * Companion mixin used with `resource-fetch` for `ResourceList` to determine if the user needs to filter the list by a single namespace\n */\nexport default {\n\n data() {\n return { forceUpdateLiveAndDelayed: 0 };\n },\n\n computed: {\n ...mapGetters(['currentProduct', 'currentCluster', 'namespaceFilters']),\n\n /**\n * Does the user need to update the filter to supply a single namespace?\n */\n namespaceFilterRequired() {\n return this.__namespaceRequired && !this.__validFilter;\n },\n\n /**\n * Returns the namespace that requests should be filtered by\n */\n namespaceFilter() {\n return this.__namespaceRequired ? this.__validFilter : '';\n },\n\n /**\n * If the Project/Namespace filter from the header contains a valid ns / project filter ... return it\n */\n __validFilter() {\n const valid = this.namespaceFilters.length && this.namespaceFilters.every((f) => f.startsWith(NAMESPACE_FILTER_NS_PREFIX) || f.startsWith(NAMESPACE_FILTER_P_PREFIX));\n\n return valid ? this.namespaceFilters : null;\n },\n\n /**\n * Do we need to filter the list by a namespace? This will control whether the user is shown an error\n *\n * We shouldn't show an error on pages with resources that aren't namespaced\n */\n __namespaceRequired() {\n if (!pAndNFiltering.isEnabled(this.$store.getters)) {\n return false;\n }\n\n return this.__areResourcesNamespaced;\n },\n\n /**\n * Are all core list resources namespaced?\n */\n __areResourcesNamespaced() {\n // Only enable for the cluster store at the moment. In theory this should work in management as well, as they're both 'steve' stores\n if (this.currentProduct.inStore !== 'cluster') {\n return false;\n }\n\n return (this.loadResources || []).every((type) => {\n const schema = this.$store.getters['cluster/schemaFor'](type);\n\n return schema?.attributes?.namespaced;\n });\n },\n\n },\n\n watch: {\n async namespaceFilter(neu) {\n if (neu) {\n // When a NS filter is required and the user selects a different one, kick off a new set of API requests\n //\n // ResourceList has two modes\n // 1) ResourceList component handles API request to fetch resources\n // 2) Custom list component handles API request to fetch resources\n //\n // This covers case 2\n if (this.$options.name !== ResourceListComponentName && !!this.$fetch) {\n await this.$fetch();\n }\n // Ensure any live/delayed columns get updated\n this.forceUpdateLiveAndDelayed = new Date().getTime();\n }\n }\n }\n};\n","import { mapGetters } from 'vuex';\nimport { COUNT, MANAGEMENT } from '@shell/config/types';\nimport { SETTING, DEFAULT_PERF_SETTING } from '@shell/config/settings';\nimport ResourceFetchNamespaced from '@shell/mixins/resource-fetch-namespaced';\n\n// Number of pages to fetch when loading incrementally\nconst PAGES = 4;\n\nexport default {\n\n mixins: [ResourceFetchNamespaced],\n\n data() {\n // fetching the settings related to manual refresh from global settings\n const perfSetting = this.$store.getters['management/byId'](MANAGEMENT.SETTING, SETTING.UI_PERFORMANCE);\n let perfConfig = {};\n\n if (perfSetting && perfSetting.value) {\n try {\n perfConfig = JSON.parse(perfSetting.value);\n } catch (e) {\n console.warn('ui-performance setting contains invalid data'); // eslint-disable-line no-console\n }\n } else {\n perfConfig = DEFAULT_PERF_SETTING;\n }\n\n return {\n perfConfig,\n init: false,\n multipleResources: [],\n loadResources: [this.resource],\n // manual refresh vars\n hasManualRefresh: false,\n watch: true,\n isTooManyItemsToAutoUpdate: false,\n force: false,\n // incremental loading vars\n incremental: false,\n fetchedResourceType: [],\n };\n },\n beforeDestroy() {\n // make sure this only runs once, for the initialized instance\n if (this.init) {\n // clear up the store to make sure we aren't storing anything that might interfere with the next rendered list view\n this.$store.dispatch('resource-fetch/clearData');\n\n this.fetchedResourceType.forEach((item) => {\n this.$store.dispatch(`${ item.currStore }/incrementLoadCounter`, item.type);\n });\n }\n },\n\n computed: {\n ...mapGetters({ refreshFlag: 'resource-fetch/refreshFlag' }),\n rows() {\n const currResource = this.fetchedResourceType.find((item) => item.type === this.resource);\n\n if (currResource) {\n return this.$store.getters[`${ currResource.currStore }/all`](this.resource);\n } else {\n return [];\n }\n },\n loading() {\n return this.rows.length ? false : this.$fetchState.pending;\n },\n },\n watch: {\n refreshFlag(neu) {\n // this is where the data assignment will trigger the update of the list view...\n if (this.init && neu) {\n this.$fetch();\n }\n }\n },\n methods: {\n // this defines all the flags needed for the mechanism\n // to work. They should be defined based on the main list view\n // resource that is to be displayed. The secondary resources\n // fetched should follow what was defined (if it is manual and/or incremental)\n $initializeFetchData(type, multipleResources = [], storeType) {\n if (!this.init) {\n const currStore = storeType || this.$store.getters['currentStore']();\n\n this.__gatherResourceFetchData(type, multipleResources, currStore);\n\n // make sure after init that, if we have a manual refresh, we always set the force = true\n if (!this.watch) {\n this.force = true;\n }\n\n if (this.isTooManyItemsToAutoUpdate) {\n this.hasManualRefresh = true;\n }\n }\n },\n // data fetching for the mechanism\n $fetchType(type, multipleResources = [], storeType) {\n const currStore = storeType || this.$store.getters['currentStore']();\n\n this.$initializeFetchData(type, multipleResources, currStore);\n\n if (!this.fetchedResourceType.find((item) => item.type === type)) {\n this.fetchedResourceType.push({\n type,\n currStore\n });\n }\n\n let incremental = 0;\n\n if (this.incremental) {\n const resourceCount = this.__getCountForResources([type], this.namespaceFilter, currStore);\n\n incremental = Math.ceil(resourceCount / PAGES);\n }\n\n const opt = {\n incremental,\n watch: this.watch,\n force: this.force,\n hasManualRefresh: this.hasManualRefresh\n };\n\n const schema = this.$store.getters[`${ currStore }/schemaFor`](type);\n\n if (schema?.attributes?.namespaced) { // Is this specific resource namespaced (could be primary or secondary resource)?\n opt.namespaced = this.namespaceFilter; // namespaceFilter will only be populated if applicable for primary resource\n }\n\n return this.$store.dispatch(`${ currStore }/findAll`, {\n type,\n opt\n });\n },\n\n __getCountForResources(resourceNames, namespace, storeType) {\n const currStore = storeType || this.$store.getters['currentStore']();\n\n return resourceNames.reduce((res, type) => res + this.__getCountForResource(type, namespace, currStore), 0);\n },\n\n __getCountForResource(resourceName, namespace, storeType) {\n const resourceCounts = this.$store.getters[`${ storeType }/all`](COUNT)[0]?.counts[`${ resourceName }`]; // NB `rancher` store behaves differently, lacks counts but has resource\n const resourceCount = namespace && resourceCounts?.namespaces ? resourceCounts?.namespaces[namespace]?.count : resourceCounts?.summary?.count;\n\n return resourceCount || 0;\n },\n\n __gatherResourceFetchData(resourceName, multipleResources, currStore) {\n // flag to prevent a first data update being triggered from the requestData watcher\n this.init = true;\n\n // manual refresh settings config\n const manualDataRefreshEnabled = this.perfConfig?.manualRefresh?.enabled;\n const manualDataRefreshThreshold = parseInt(this.perfConfig?.manualRefresh?.threshold || '0', 10);\n\n // incremental loading settings config\n const incrementalLoadingEnabled = this.perfConfig?.incrementalLoading?.enabled;\n const incrementalLoadingThreshold = parseInt(this.perfConfig?.incrementalLoading?.threshold || '0', 10);\n\n // other vars\n this.multipleResources = multipleResources;\n let resourceCount = 0;\n\n // manual refresh vars\n let watch = true;\n let isTooManyItemsToAutoUpdate = false;\n\n // incremental loading vars\n let incremental = false;\n\n // get resource counts\n const resourcesForCount = this.multipleResources.length ? this.multipleResources : [resourceName];\n\n resourceCount = this.__getCountForResources(resourcesForCount, this.namespaceFilter, currStore);\n\n // manual refresh check\n if (manualDataRefreshEnabled && resourceCount >= manualDataRefreshThreshold) {\n watch = false;\n isTooManyItemsToAutoUpdate = true;\n }\n\n // incremental loading check\n incremental = incrementalLoadingEnabled && incrementalLoadingThreshold > 0 && resourceCount >= incrementalLoadingThreshold;\n\n // pass on the flag that controls the appearance of the manual refresh button on the sortable table\n this.$store.dispatch('resource-fetch/updateIsTooManyItems', isTooManyItemsToAutoUpdate);\n\n // set vars on mixin to be used on $fetchType\n this.watch = watch;\n this.isTooManyItemsToAutoUpdate = isTooManyItemsToAutoUpdate;\n this.incremental = incremental;\n },\n },\n};\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../../@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".radio-group:focus{border:none;outline:none}.radio-group h3{position:relative}.radio-group.row{display:flex}.radio-group.row .radio-container{margin-right:10px}.radio-group .label{font-size:14px!important}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","/*\n * Jexl\n * Copyright 2019 Tom Shawver\n */\n\nconst handlers = require('./handlers')\nconst states = require('./states').states\n\n/**\n * The Parser is a state machine that converts tokens from the {@link Lexer}\n * into an Abstract Syntax Tree (AST), capable of being evaluated in any\n * context by the {@link Evaluator}. The Parser expects that all tokens\n * provided to it are legal and typed properly according to the grammar, but\n * accepts that the tokens may still be in an invalid order or in some other\n * unparsable configuration that requires it to throw an Error.\n * @param {{}} grammar The grammar map to use to parse Jexl strings\n * @param {string} [prefix] A string prefix to prepend to the expression string\n * for error messaging purposes. This is useful for when a new Parser is\n * instantiated to parse an subexpression, as the parent Parser's\n * expression string thus far can be passed for a more user-friendly\n * error message.\n * @param {{}} [stopMap] A mapping of token types to any truthy value. When the\n * token type is encountered, the parser will return the mapped value\n * instead of boolean false.\n */\nclass Parser {\n constructor(grammar, prefix, stopMap) {\n this._grammar = grammar\n this._state = 'expectOperand'\n this._tree = null\n this._exprStr = prefix || ''\n this._relative = false\n this._stopMap = stopMap || {}\n }\n\n /**\n * Processes a new token into the AST and manages the transitions of the state\n * machine.\n * @param {{type: }} token A token object, as provided by the\n * {@link Lexer#tokenize} function.\n * @throws {Error} if a token is added when the Parser has been marked as\n * complete by {@link #complete}, or if an unexpected token type is added.\n * @returns {boolean|*} the stopState value if this parser encountered a token\n * in the stopState mapb false if tokens can continue.\n */\n addToken(token) {\n if (this._state === 'complete') {\n throw new Error('Cannot add a new token to a completed Parser')\n }\n const state = states[this._state]\n const startExpr = this._exprStr\n this._exprStr += token.raw\n if (state.subHandler) {\n if (!this._subParser) {\n this._startSubExpression(startExpr)\n }\n const stopState = this._subParser.addToken(token)\n if (stopState) {\n this._endSubExpression()\n if (this._parentStop) return stopState\n this._state = stopState\n }\n } else if (state.tokenTypes[token.type]) {\n const typeOpts = state.tokenTypes[token.type]\n let handleFunc = handlers[token.type]\n if (typeOpts.handler) {\n handleFunc = typeOpts.handler\n }\n if (handleFunc) {\n handleFunc.call(this, token)\n }\n if (typeOpts.toState) {\n this._state = typeOpts.toState\n }\n } else if (this._stopMap[token.type]) {\n return this._stopMap[token.type]\n } else {\n throw new Error(\n `Token ${token.raw} (${token.type}) unexpected in expression: ${this._exprStr}`\n )\n }\n return false\n }\n\n /**\n * Processes an array of tokens iteratively through the {@link #addToken}\n * function.\n * @param {Array<{type: }>} tokens An array of tokens, as provided by\n * the {@link Lexer#tokenize} function.\n */\n addTokens(tokens) {\n tokens.forEach(this.addToken, this)\n }\n\n /**\n * Marks this Parser instance as completed and retrieves the full AST.\n * @returns {{}|null} a full expression tree, ready for evaluation by the\n * {@link Evaluator#eval} function, or null if no tokens were passed to\n * the parser before complete was called\n * @throws {Error} if the parser is not in a state where it's legal to end\n * the expression, indicating that the expression is incomplete\n */\n complete() {\n if (this._cursor && !states[this._state].completable) {\n throw new Error(`Unexpected end of expression: ${this._exprStr}`)\n }\n if (this._subParser) {\n this._endSubExpression()\n }\n this._state = 'complete'\n return this._cursor ? this._tree : null\n }\n\n /**\n * Indicates whether the expression tree contains a relative path identifier.\n * @returns {boolean} true if a relative identifier exists false otherwise.\n */\n isRelative() {\n return this._relative\n }\n\n /**\n * Ends a subexpression by completing the subParser and passing its result\n * to the subHandler configured in the current state.\n * @private\n */\n _endSubExpression() {\n states[this._state].subHandler.call(this, this._subParser.complete())\n this._subParser = null\n }\n\n /**\n * Places a new tree node at the current position of the cursor (to the 'right'\n * property) and then advances the cursor to the new node. This function also\n * handles setting the parent of the new node.\n * @param {{type: }} node A node to be added to the AST\n * @private\n */\n _placeAtCursor(node) {\n if (!this._cursor) {\n this._tree = node\n } else {\n this._cursor.right = node\n this._setParent(node, this._cursor)\n }\n this._cursor = node\n }\n\n /**\n * Places a tree node before the current position of the cursor, replacing\n * the node that the cursor currently points to. This should only be called in\n * cases where the cursor is known to exist, and the provided node already\n * contains a pointer to what's at the cursor currently.\n * @param {{type: }} node A node to be added to the AST\n * @private\n */\n _placeBeforeCursor(node) {\n this._cursor = this._cursor._parent\n this._placeAtCursor(node)\n }\n\n /**\n * Sets the parent of a node by creating a non-enumerable _parent property\n * that points to the supplied parent argument.\n * @param {{type: }} node A node of the AST on which to set a new\n * parent\n * @param {{type: }} parent An existing node of the AST to serve as the\n * parent of the new node\n * @private\n */\n _setParent(node, parent) {\n Object.defineProperty(node, '_parent', {\n value: parent,\n writable: true\n })\n }\n\n /**\n * Prepares the Parser to accept a subexpression by (re)instantiating the\n * subParser.\n * @param {string} [exprStr] The expression string to prefix to the new Parser\n * @private\n */\n _startSubExpression(exprStr) {\n let endStates = states[this._state].endStates\n if (!endStates) {\n this._parentStop = true\n endStates = this._stopMap\n }\n this._subParser = new Parser(this._grammar, exprStr, endStates)\n }\n}\n\nmodule.exports = Parser\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\nfunction negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n}\n\nmodule.exports = negate;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('p',{staticClass:\"col span-12 mb-20\"},[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.policyConfig.namespaceSelector.description'))+\" \")]),[_c('InfoBox',{ref:\"infobox\"},[_c('div',{staticClass:\"row mb-20\"},[_c('div',{staticClass:\"col span-12\"},[_c('h4',[_c('t',{attrs:{\"k\":\"kubewarden.policyConfig.namespaceSelector.matchExpressions.label\"}}),_c('i',{directives:[{name:\"clean-tooltip\",rawName:\"v-clean-tooltip\",value:(_vm.t('kubewarden.policyConfig.namespaceSelector.matchExpressions.tooltip')),expression:\"t('kubewarden.policyConfig.namespaceSelector.matchExpressions.tooltip')\"}],staticClass:\"icon icon-info icon-lg\"})],1),_c('span',{directives:[{name:\"clean-tooltip\",rawName:\"v-clean-tooltip\",value:(_vm.t('kubewarden.policyConfig.namespaceSelector.matchExpressions.tooltip')),expression:\"t('kubewarden.policyConfig.namespaceSelector.matchExpressions.tooltip')\"}]}),_c('MatchExpressions',{ref:\"matchexp\",attrs:{\"mode\":_vm.mode,\"show-remove\":false,\"type\":_vm.POD},model:{value:(_vm.matchExpressions),callback:function ($$v) {_vm.matchExpressions=$$v},expression:\"matchExpressions\"}})],1)]),_c('h4',[_c('t',{attrs:{\"k\":\"kubewarden.policyConfig.namespaceSelector.matchLabels.label\"}}),_c('i',{directives:[{name:\"clean-tooltip\",rawName:\"v-clean-tooltip\",value:(_vm.t('kubewarden.policyConfig.namespaceSelector.matchLabels.tooltip')),expression:\"t('kubewarden.policyConfig.namespaceSelector.matchLabels.tooltip')\"}],staticClass:\"icon icon-info icon-lg\"})],1),_c('div',{staticClass:\"row mb-20\"},[_c('div',{staticClass:\"col span-12\"},[_c('KeyValue',{attrs:{\"mode\":_vm.mode},model:{value:(_vm.matchLabels),callback:function ($$v) {_vm.matchLabels=$$v},expression:\"matchLabels\"}})],1)])])]],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[(_vm.showRemove && !_vm.isView)?_c('button',{staticClass:\"btn role-link remove-expression\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.$emit('remove')}}},[_c('i',{staticClass:\"icon icon-x\"})]):_vm._e(),(_vm.rules.length)?_c('div',{staticClass:\"match-expression-header\",class:{ 'view':_vm.isView, 'match-expression-header-matching': _vm.matchingSelectorDisplay }},[(_vm.matchingSelectorDisplay)?_c('label',[_vm._v(\" \"+_vm._s(_vm.t('workload.scheduling.affinity.matchExpressions.matchType'))+\" \")]):_vm._e(),_c('label',[_vm._v(\" \"+_vm._s(_vm.t('workload.scheduling.affinity.matchExpressions.key'))+\" \")]),_c('label',[_vm._v(\" \"+_vm._s(_vm.t('workload.scheduling.affinity.matchExpressions.operator'))+\" \")]),_c('label',[_vm._v(\" \"+_vm._s(_vm.t('workload.scheduling.affinity.matchExpressions.value'))+\" \")]),_c('span')]):_vm._e(),_vm._l((_vm.rules),function(row,index){return _c('div',{key:row.id,staticClass:\"match-expression-row\",class:{'view':_vm.isView, 'mb-10': index !== _vm.rules.length - 1, 'match-expression-row-matching': _vm.matchingSelectorDisplay}},[(_vm.matchingSelectorDisplay)?_c('div',{attrs:{\"data-testid\":`input-match-type-field-${index}`}},[(_vm.isView)?_c('div',[_vm._v(\" \"+_vm._s(row.matching)+\" \")]):_c('LabeledSelect',{attrs:{\"mode\":_vm.mode,\"options\":_vm.matchingSelectOptions,\"data-testid\":`input-match-type-field-control-${index}`},on:{\"selecting\":_vm.update},model:{value:(row.matching),callback:function ($$v) {_vm.$set(row, \"matching\", $$v)},expression:\"row.matching\"}})],1):_vm._e(),_c('div',{attrs:{\"data-testid\":`input-match-expression-key-${index}`}},[(_vm.isView)?_c('div',[_vm._v(\" \"+_vm._s(row.key)+\" \")]):(!_vm.hasKeySelectOptions)?_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(row.key),expression:\"row.key\"}],attrs:{\"mode\":_vm.mode,\"data-testid\":`input-match-expression-key-control-${index}`},domProps:{\"value\":(row.key)},on:{\"input\":[function($event){if($event.target.composing)return;_vm.$set(row, \"key\", $event.target.value)},_vm.update]}}):_c('LabeledSelect',{attrs:{\"mode\":_vm.mode,\"options\":_vm.keysSelectOptions,\"data-testid\":`input-match-expression-key-control-select-${index}`},model:{value:(row.key),callback:function ($$v) {_vm.$set(row, \"key\", $$v)},expression:\"row.key\"}})],1),_c('div',{attrs:{\"data-testid\":`input-match-expression-operator-${index}`}},[(_vm.isView)?_c('div',[_vm._v(\" \"+_vm._s(row.operator)+\" \")]):_c('Select',{staticClass:\"operator single\",attrs:{\"options\":_vm.ops,\"clearable\":false,\"reduce\":opt=>opt.value,\"mode\":_vm.mode,\"data-testid\":`input-match-expression-operator-control-${index}`},on:{\"input\":_vm.update},model:{value:(row.operator),callback:function ($$v) {_vm.$set(row, \"operator\", $$v)},expression:\"row.operator\"}})],1),(row.operator==='Exists' || row.operator==='DoesNotExist')?_c('div',{staticClass:\"no-value\"},[_c('label',{staticClass:\"text-muted\"},[_vm._v(\"…\")])]):_c('div',{attrs:{\"data-testid\":`input-match-expression-values-${index}`}},[(_vm.isView)?_c('div',[_vm._v(\" \"+_vm._s(row.values)+\" \")]):_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(row.values),expression:\"row.values\"}],attrs:{\"mode\":_vm.mode,\"disabled\":row.operator==='Exists' || row.operator==='DoesNotExist',\"data-testid\":`input-match-expression-values-control-${index}`},domProps:{\"value\":(row.values)},on:{\"input\":[function($event){if($event.target.composing)return;_vm.$set(row, \"values\", $event.target.value)},_vm.update]}})]),(_vm.showRemoveButton)?_c('div',{staticClass:\"remove-container\"},[(!_vm.isView)?_c('button',{staticClass:\"btn role-link\",style:({padding:'0px'}),attrs:{\"type\":\"button\",\"disabled\":_vm.mode==='view',\"data-testid\":`input-match-expression-remove-control-${index}`},on:{\"click\":function($event){return _vm.removeRule(row)}}},[_c('t',{attrs:{\"k\":\"generic.remove\"}})],1):_vm._e()]):_vm._e()])}),(!_vm.isView && _vm.showAddButton)?_c('div',{staticClass:\"mt-20\"},[_c('button',{staticClass:\"btn role-tertiary add\",attrs:{\"type\":\"button\",\"data-testid\":`input-match-expression-add-rule`},on:{\"click\":_vm.addRule}},[_c('t',{attrs:{\"k\":\"workload.scheduling.affinity.matchExpressions.addRule\"}})],1)]):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { isArray, addObject, findBy } from '@shell/utils/array';\nimport { get } from '@shell/utils/object';\n\nconst parseCache = {};\n\nconst OP_MAP = {\n '=': 'In',\n '==': 'In',\n '!=': 'NotIn',\n '<': 'Lt',\n '>': 'Gt',\n};\n\n// Parse a labelSelector string\nexport function parse(labelSelector) {\n // matchLabels:\n // comma-separated list, all rules ANDed together\n // spaces may be encoded as +\n //\n // Equals: foo = bar\n // Not Equals: bar != baz\n // Key Exists: optional.prefix/just-some-key\n // Key Doesn't: !optional.prefix/just-some-key\n // In Set: environment in (production,qa)\n // Not in Set: environment notin (production,qa)\n\n // Convert into matchExpressions, which newer resources support\n // and express the same things\n //\n // Object of:\n // key: optional.prefix/some-key\n // operator: In, NotIn, Exists, or DoesNotExist\n // values: [array, of, values, even, if, only, one]\n\n labelSelector = labelSelector.replace(/\\+/g, ' ');\n\n if ( parseCache[labelSelector] ) {\n return parseCache[labelSelector];\n }\n\n let match;\n const out = [];\n const parens = [];\n\n // Substitute out all the parenthetical lists because they might have commas in them\n match = labelSelector.match(/\\([^)]+\\)/g);\n if ( match && match.length ) {\n for ( const str of match ) {\n const val = str.replace(/^\\s*\\(\\s*/, '').replace(/\\s*\\)\\s*$/, '').split(/\\s*,\\s*/);\n\n parens.push(val);\n labelSelector = labelSelector.replace(str, ` @${ parens.length - 1 } `);\n }\n }\n\n const parts = labelSelector.split(/\\s*,\\s*/).filter((x) => !!x);\n\n for ( let rule of parts ) {\n rule = rule.trim();\n\n match = rule.match(/^(.*?)\\s+((not\\s*)?in)\\s+@(\\d+)*$/i);\n\n if ( match ) {\n out.push({\n key: match[1].trim(),\n operator: match[2].toLowerCase().replace(/\\s/g, '') === 'notin' ? 'NotIn' : 'In',\n values: parens[match[4].trim()],\n });\n\n continue;\n }\n\n match = rule.match(/^([^!=]*)\\s*(\\!=|=|==|>|<)\\s*([^!=]*)$/);\n if ( match ) {\n out.push({\n key: match[1].trim(),\n operator: OP_MAP[match[2]],\n values: [match[3].trim()],\n });\n\n continue;\n }\n\n if ( rule.startsWith('!') ) {\n out.push({\n key: rule.substr(1).trim(),\n operator: 'DoesNotExist'\n });\n\n continue;\n }\n\n out.push({\n key: rule.trim(),\n operator: 'Exists'\n });\n }\n\n parseCache[labelSelector] = out;\n\n return out;\n}\n\n// Convert a Selector object to matchExpressions\nexport function convertSelectorObj(obj) {\n return convert(obj.matchLabels || {}, obj.matchExpressions || []);\n}\n\n// Convert matchLabels to matchExpressions\n// Optionally combining with an existing set of matchExpressions\nexport function convert(matchLabelsObj, matchExpressions) {\n const keys = Object.keys(matchLabelsObj || {});\n const out = matchExpressions || [];\n\n for ( const key of keys ) {\n const value = matchLabelsObj[key];\n const existing = findBy(out, { key, operator: 'In' });\n\n if ( existing ) {\n addObject(existing.values, value);\n } else {\n out.push({\n key,\n operator: 'In',\n values: isArray(value) ? value : [value],\n });\n }\n }\n\n return out;\n}\n\n// Convert matchExpressions to matchLabels when possible,\n// returning the simplest combination of them.\nexport function simplify(matchExpressionsInput) {\n const matchLabels = {};\n const matchExpressions = [];\n\n // Look for keys with more than one \"In\" expression and disqualify them from simplifying\n const impossible = [];\n const seen = {};\n\n for ( const expr of matchExpressionsInput ) {\n if ( expr.operator !== 'In' ) {\n continue;\n }\n\n if ( seen[expr.key] ) {\n addObject(impossible, expr.key);\n } else {\n seen[expr.key] = true;\n }\n }\n\n for ( const expr of matchExpressionsInput ) {\n if ( expr.operator === 'In' && expr.values.length === 1 && !impossible.includes(expr.key) ) {\n matchLabels[expr.key] = expr.values[0];\n } else {\n matchExpressions.push(Object.assign({}, expr));\n }\n }\n\n return { matchLabels, matchExpressions };\n}\n\nexport function matches(obj, selector, labelKey = 'metadata.labels') {\n let rules = [];\n\n if ( typeof selector === 'string' ) {\n // labelSelector string\n rules = parse(selector);\n } else if ( isArray(selector) ) {\n // Already matchExpression\n rules = selector;\n } else if ( typeof selector === 'object' && selector ) {\n // matchLabels object\n rules = convert(selector);\n } else {\n return false;\n }\n\n const labels = get(obj, labelKey) || {};\n\n for ( const rule of rules ) {\n const value = labels[rule.key];\n const asInt = parseInt(value, 10);\n const exists = typeof labels[rule.key] !== 'undefined';\n\n switch ( rule.operator ) {\n case 'Exists':\n if ( !exists ) {\n return false;\n }\n break;\n case 'DoesNotExist':\n if ( exists ) {\n return false;\n }\n break;\n case 'In':\n // we need to cater empty strings because when creating a label with value = null it's translated into a empty string value ''\n if ( !rule.values.length || !rule.values.includes(value) ) {\n return false;\n }\n break;\n case 'NotIn':\n if ( rule.values.includes(value) ) {\n return false;\n }\n break;\n case 'Lt':\n if ( isNaN(asInt) || asInt >= Math.min.apply(null, rule.values) ) {\n return false;\n }\n break;\n case 'Gt':\n if ( isNaN(asInt) || asInt <= Math.max.apply(null, rule.values) ) {\n return false;\n }\n break;\n }\n }\n\n return true;\n}\n\nexport function matching(ary, selector, labelKey) {\n return ary.filter((obj) => matches(obj, selector, labelKey));\n}\n","\n\n\n\n\n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./MatchExpressions.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./MatchExpressions.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MatchExpressions.vue?vue&type=template&id=3512fedb&scoped=true&\"\nimport script from \"./MatchExpressions.vue?vue&type=script&lang=js&\"\nexport * from \"./MatchExpressions.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MatchExpressions.vue?vue&type=style&index=0&id=3512fedb&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3512fedb\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"info-box\",class:{'stepped': !!_vm.step}},[(_vm.step)?_c('div',{staticClass:\"step-number mb-10\"},[_c('h2',[_vm._v(\"Step \"+_vm._s(_vm.step))])]):_vm._e(),_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./InfoBox.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./InfoBox.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./InfoBox.vue?vue&type=template&id=1c5683df&scoped=true&\"\nimport script from \"./InfoBox.vue?vue&type=script&lang=js&\"\nexport * from \"./InfoBox.vue?vue&type=script&lang=js&\"\nimport style0 from \"./InfoBox.vue?vue&type=style&index=0&id=1c5683df&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1c5683df\",\n null\n \n)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=469129b0&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","export * from \"-!../../../vue-style-loader/index.js??ref--10-oneOf-1-0!../../../@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./InfoBox.vue?vue&type=style&index=0&id=1c5683df&prod&lang=scss&scoped=true&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".yaml-editor[data-v-93239522]{display:flex;flex-direction:column}.yaml-editor .fill[data-v-93239522]{flex:1}.yaml-editor[data-v-93239522] .code-mirror{position:relative}.yaml-editor[data-v-93239522] .code-mirror .CodeMirror,.yaml-editor[data-v-93239522] .code-mirror .CodeMirror .CodeMirror-gutters{background-color:var(--yaml-editor-bg)}.yaml-editor .diff-mode[data-v-93239522]{background-color:var(--diff-header-bg);padding:5px 5px;border-bottom-right-radius:0;border-bottom-left-radius:0}.yaml-editor .d2h-file-wrapper[data-v-93239522]{border-top-right-radius:0}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","export * from \"-!../../../../vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../../sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./BadgeState.vue?vue&type=style&index=1&id=70e48e16&prod&lang=scss&\"","/*\nLanguage: Diff\nDescription: Unified and context diff\nAuthor: Vasily Polovnyov \nWebsite: https://www.gnu.org/software/diffutils/\nCategory: common\n*/\n\n/** @type LanguageFn */\nfunction diff(hljs) {\n const regex = hljs.regex;\n return {\n name: 'Diff',\n aliases: [ 'patch' ],\n contains: [\n {\n className: 'meta',\n relevance: 10,\n match: regex.either(\n /^@@ +-\\d+,\\d+ +\\+\\d+,\\d+ +@@/,\n /^\\*\\*\\* +\\d+,\\d+ +\\*\\*\\*\\*$/,\n /^--- +\\d+,\\d+ +----$/\n )\n },\n {\n className: 'comment',\n variants: [\n {\n begin: regex.either(\n /Index: /,\n /^index/,\n /={3,}/,\n /^-{3}/,\n /^\\*{3} /,\n /^\\+{3}/,\n /^diff --git/\n ),\n end: /$/\n },\n { match: /^\\*{15}$/ }\n ]\n },\n {\n className: 'addition',\n begin: /^\\+/,\n end: /$/\n },\n {\n className: 'deletion',\n begin: /^-/,\n end: /$/\n },\n {\n className: 'addition',\n begin: /^!/,\n end: /$/\n }\n ]\n };\n}\n\nmodule.exports = diff;\n","export function camelToTitle(str) {\n return dasherize((str || '')).split('-').map((str) => {\n return ucFirst(str);\n }).join(' ');\n}\n\nexport function ucFirst(str) {\n str = str || '';\n\n return str.substr(0, 1).toUpperCase() + str.substr(1);\n}\n\nexport function lcFirst(str) {\n str = str || '';\n\n return str.substr(0, 1).toLowerCase() + str.substr(1);\n}\n\nexport function strPad(str, toLength, padChars = ' ', right = false) {\n str = `${ str }`;\n\n if (str.length >= toLength) {\n return str;\n }\n\n const neededLen = toLength - str.length + 1;\n const padStr = (new Array(neededLen)).join(padChars).substr(0, neededLen);\n\n if (right) {\n return str + padStr;\n } else {\n return padStr + str;\n }\n}\n\n// Turn thing1 into thing00000001 so that the numbers sort numerically\nexport function sortableNumericSuffix(str) {\n str = str || '';\n const match = str.match(/^(.*[^0-9])([0-9]+)$/);\n\n if (match) {\n return match[1] + strPad(match[2], 8, '0');\n }\n\n return str;\n}\n\nconst entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/'\n};\n\nexport function escapeHtml(html) {\n return String(html).replace(/[&<>\"']/g, (s) => {\n return entityMap[s];\n });\n}\n\n/**\n * Return HTML markup from escaped HTML string, allowing specific tags\n * @param text string\n * @returns string\n */\nexport function decodeHtml(text) {\n const div = document.createElement('div');\n\n div.innerHTML = text;\n\n return div.textContent || div.innerText || '';\n}\n\nexport function escapeRegex(string) {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'); // $& means the whole matched string\n}\n\nexport function random32(count) {\n count = Math.max(0, count || 1);\n\n const out = [];\n let i;\n\n if (window.crypto && window.crypto.getRandomValues) {\n const tmp = new Uint32Array(count);\n\n window.crypto.getRandomValues(tmp);\n for (i = 0; i < tmp.length; i++) {\n out[i] = tmp[i];\n }\n } else {\n for (i = 0; i < count; i++) {\n out[i] = Math.random() * 4294967296; // Math.pow(2,32);\n }\n }\n\n if (count === 1) {\n return out[0];\n } else {\n return out;\n }\n}\n\nconst alpha = 'abcdefghijklmnopqrstuvwxyz';\nconst num = '0123456789';\nconst sym = '!@#$%^&*()_+-=[]{};:,./<>?|';\n\nexport const CHARSET = {\n NUMERIC: num,\n NO_VOWELS: 'bcdfghjklmnpqrstvwxz2456789',\n ALPHA: alpha + alpha.toUpperCase(),\n ALPHA_NUM: alpha + alpha.toUpperCase() + num,\n ALPHA_LOWER: alpha,\n ALPHA_UPPER: alpha.toUpperCase(),\n HEX: `${ num }ABCDEF`,\n PASSWORD: alpha + alpha.toUpperCase() + num + alpha + alpha.toUpperCase() + num + sym,\n // ^-- includes alpha / ALPHA / num twice to reduce the occurrence of symbols\n};\n\nexport function randomStr(length = 16, chars = CHARSET.ALPHA_NUM) {\n if (!chars || !chars.length) {\n return null;\n }\n\n return random32(length).map((val) => {\n return chars[val % chars.length];\n }).join('');\n}\n\nexport function formatPercent(value, maxPrecision = 2) {\n if (value < 1 && maxPrecision >= 2) {\n return `${ Math.round(value * 100) / 100 }%`;\n } else if (value < 10 && maxPrecision >= 1) {\n return `${ Math.round(value * 10) / 10 }%`;\n } else {\n return `${ Math.round(value) }%`;\n }\n}\n\nexport function pluralize(str) {\n if ( str.match(/.*[^aeiou]y$/i) ) {\n return `${ str.substr(0, str.length - 1) }ies`;\n } else if ( str.endsWith('ics') ) {\n return str;\n } else if ( str.endsWith('s') ) {\n return `${ str }es`;\n } else {\n return `${ str }s`;\n }\n}\n\nexport function resourceNames(names, plusMore, t) {\n return names.reduce((res, name, i) => {\n if (i >= 5) {\n return res;\n }\n res += `${ escapeHtml( name ) }`;\n if (i === names.length - 1) {\n res += plusMore;\n } else {\n res += i === names.length - 2 ? t('generic.and') : t('generic.comma');\n }\n\n return res;\n }, '');\n}\n\nexport function indent(lines, count = 2, token = ' ', afterRegex = null) {\n if (typeof lines === 'string') {\n lines = lines.split(/\\n/);\n } else {\n lines = lines || [];\n }\n\n const padStr = (new Array(count + 1)).join(token);\n\n const out = lines.map((line) => {\n let prefix = '';\n let suffix = line;\n\n if (afterRegex) {\n const match = line.match(afterRegex);\n\n if (match) {\n prefix = match[match.length - 1];\n suffix = line.substr(match[0].length);\n }\n }\n\n return `${ prefix }${ padStr }${ suffix }`;\n });\n\n const str = out.join('\\n');\n\n return str;\n}\n\nconst decamelizeRegex = /([a-z\\d])([A-Z])/g;\n\nexport function decamelize(str) {\n return str.replace(decamelizeRegex, '$1_$2').toLowerCase();\n}\n\nconst dasherizeRegex = /[ _]/g;\n\nexport function dasherize(str) {\n return decamelize(str).replace(dasherizeRegex, '-');\n}\n\nexport function asciiLike(str) {\n str = str || '';\n\n if ( str.match(/[^\\r\\n\\t\\x20-\\x7F]/) ) {\n return false;\n }\n\n return true;\n}\n\nexport function coerceStringTypeToScalarType(val, type) {\n if ( type === 'float' ) {\n // Coerce strings to floats\n val = parseFloat(val) || null; // NaN becomes null\n } else if ( type === 'int' ) {\n // Coerce strings to ints\n val = parseInt(val, 10);\n\n if ( isNaN(val) ) {\n val = null;\n }\n } else if ( type === 'boolean') {\n // Coerce strings to boolean\n if (val.toLowerCase() === 'true') {\n val = true;\n } else if (val.toLowerCase() === 'false') {\n val = false;\n }\n }\n\n return val;\n}\n\nexport function matchesSomeRegex(stringRaw, regexes = []) {\n return regexes.some((regexRaw) => {\n const string = stringRaw || '';\n const regex = ensureRegex(regexRaw);\n\n return string.match(regex);\n });\n}\n\nexport function ensureRegex(strOrRegex, exact = true) {\n if ( typeof strOrRegex === 'string' ) {\n if ( exact ) {\n return new RegExp(`^${ escapeRegex(strOrRegex) }$`, 'i');\n } else {\n return new RegExp(`${ escapeRegex(strOrRegex) }`, 'i');\n }\n }\n\n return strOrRegex;\n}\n\nexport function nlToBr(value) {\n return escapeHtml(value || '').replace(/(\\r\\n|\\r|\\n)/g, '
\\n');\n}\n\nconst quotedMatch = /[^.\"']+|\"([^\"]*)\"|'([^']*)'/g;\n\nexport function splitObjectPath(path) {\n if ( path.includes('\"') || path.includes(\"'\") ) {\n // Path with quoted section\n return path.match(quotedMatch).map((x) => x.replace(/['\"]/g, ''));\n }\n\n // Regular path\n return path.split('.');\n}\n\nexport function joinObjectPath(ary) {\n let out = '';\n\n for ( const p of ary ) {\n if ( p.includes('.') ) {\n out += `.\"${ p }\"`;\n } else {\n out += `.${ p }`;\n }\n }\n\n if ( out.startsWith('.') ) {\n out = out.substr(1);\n }\n\n return out;\n}\n\nexport function shortenedImage(image) {\n return (image || '')\n .replace(/^(index\\.)?docker.io\\/(library\\/)?/, '')\n .replace(/:latest$/, '')\n .replace(/^(.*@sha256:)([0-9a-f]{8})[0-9a-f]+$/i, '$1$2…');\n}\n\nexport function isIpv4(ip) {\n const reg = /^((25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$/;\n\n return reg.test(ip);\n}\n\nexport function sanitizeKey(k) {\n return (k || '').replace(/[^a-z0-9./_-]/ig, '');\n}\n\nexport function sanitizeValue(v) {\n return (v || '').replace(/[^a-z0-9._-]/ig, '');\n}\n\nexport function sanitizeIP(v) {\n return (v || '').replace(/[^a-z0-9.:_-]/ig, '');\n}\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nmodule.exports = safeGet;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"::v-deep P{font-size:medium;line-height:normal;font-weight:400;letter-spacing:normal;font-style:normal}.markdown blockquote{color:#656d76;border-left:.25em solid #d0d7de;padding:0 1em;margin-bottom:16px}.markdown table{border-collapse:collapse}.markdown TH{text-align:left;border:1px solid #e3e7eb}.markdown table tr th{font-weight:700;text-align:left;margin:0;padding:6px 13px}.markdown table tr td{text-align:left;margin:0;padding:6px 13px;border:1px solid #e3e7eb}.markdown table tr td :first-child,.markdown table tr th :first-child{margin-top:0}.markdown table tr td :last-child,.markdown table tr th :last-child{margin-bottom:0}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","/*\n * Copyright 2011 Twitter, Inc.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// This file is for use with Node.js. See dist/ for browser files.\n\nvar Hogan = require('./compiler');\nHogan.Template = require('./template').Template;\nHogan.template = Hogan.Template;\nmodule.exports = Hogan;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","/*\nLanguage: JSON\nDescription: JSON (JavaScript Object Notation) is a lightweight data-interchange format.\nAuthor: Ivan Sagalaev \nWebsite: http://www.json.org\nCategory: common, protocols, web\n*/\n\nfunction json(hljs) {\n const ATTRIBUTE = {\n className: 'attr',\n begin: /\"(\\\\.|[^\\\\\"\\r\\n])*\"(?=\\s*:)/,\n relevance: 1.01\n };\n const PUNCTUATION = {\n match: /[{}[\\],:]/,\n className: \"punctuation\",\n relevance: 0\n };\n const LITERALS = [\n \"true\",\n \"false\",\n \"null\"\n ];\n // NOTE: normally we would rely on `keywords` for this but using a mode here allows us\n // - to use the very tight `illegal: \\S` rule later to flag any other character\n // - as illegal indicating that despite looking like JSON we do not truly have\n // - JSON and thus improve false-positively greatly since JSON will try and claim\n // - all sorts of JSON looking stuff\n const LITERALS_MODE = {\n scope: \"literal\",\n beginKeywords: LITERALS.join(\" \"),\n };\n\n return {\n name: 'JSON',\n keywords:{\n literal: LITERALS,\n },\n contains: [\n ATTRIBUTE,\n PUNCTUATION,\n hljs.QUOTE_STRING_MODE,\n LITERALS_MODE,\n hljs.C_NUMBER_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ],\n illegal: '\\\\S'\n };\n}\n\nmodule.exports = json;\n","const Range = require('../classes/range')\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n new Range(range, options).set\n .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n","/*\nLanguage: TOML, also INI\nDescription: TOML aims to be a minimal configuration file format that's easy to read due to obvious semantics.\nContributors: Guillaume Gomez \nCategory: common, config\nWebsite: https://github.com/toml-lang/toml\n*/\n\nfunction ini(hljs) {\n const regex = hljs.regex;\n const NUMBERS = {\n className: 'number',\n relevance: 0,\n variants: [\n { begin: /([+-]+)?[\\d]+_[\\d_]+/ },\n { begin: hljs.NUMBER_RE }\n ]\n };\n const COMMENTS = hljs.COMMENT();\n COMMENTS.variants = [\n {\n begin: /;/,\n end: /$/\n },\n {\n begin: /#/,\n end: /$/\n }\n ];\n const VARIABLES = {\n className: 'variable',\n variants: [\n { begin: /\\$[\\w\\d\"][\\w\\d_]*/ },\n { begin: /\\$\\{(.*?)\\}/ }\n ]\n };\n const LITERALS = {\n className: 'literal',\n begin: /\\bon|off|true|false|yes|no\\b/\n };\n const STRINGS = {\n className: \"string\",\n contains: [ hljs.BACKSLASH_ESCAPE ],\n variants: [\n {\n begin: \"'''\",\n end: \"'''\",\n relevance: 10\n },\n {\n begin: '\"\"\"',\n end: '\"\"\"',\n relevance: 10\n },\n {\n begin: '\"',\n end: '\"'\n },\n {\n begin: \"'\",\n end: \"'\"\n }\n ]\n };\n const ARRAY = {\n begin: /\\[/,\n end: /\\]/,\n contains: [\n COMMENTS,\n LITERALS,\n VARIABLES,\n STRINGS,\n NUMBERS,\n 'self'\n ],\n relevance: 0\n };\n\n const BARE_KEY = /[A-Za-z0-9_-]+/;\n const QUOTED_KEY_DOUBLE_QUOTE = /\"(\\\\\"|[^\"])*\"/;\n const QUOTED_KEY_SINGLE_QUOTE = /'[^']*'/;\n const ANY_KEY = regex.either(\n BARE_KEY, QUOTED_KEY_DOUBLE_QUOTE, QUOTED_KEY_SINGLE_QUOTE\n );\n const DOTTED_KEY = regex.concat(\n ANY_KEY, '(\\\\s*\\\\.\\\\s*', ANY_KEY, ')*',\n regex.lookahead(/\\s*=\\s*[^#\\s]/)\n );\n\n return {\n name: 'TOML, also INI',\n aliases: [ 'toml' ],\n case_insensitive: true,\n illegal: /\\S/,\n contains: [\n COMMENTS,\n {\n className: 'section',\n begin: /\\[+/,\n end: /\\]+/\n },\n {\n begin: DOTTED_KEY,\n className: 'attr',\n starts: {\n end: /$/,\n contains: [\n COMMENTS,\n ARRAY,\n LITERALS,\n VARIABLES,\n STRINGS,\n NUMBERS\n ]\n }\n }\n ]\n };\n}\n\nmodule.exports = ini;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Tab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Tab.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Tab.vue?vue&type=template&id=667bdd63&scoped=true&\"\nimport script from \"./Tab.vue?vue&type=script&lang=js&\"\nexport * from \"./Tab.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Tab.vue?vue&type=style&index=0&id=667bdd63&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"667bdd63\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../vue-style-loader/index.js??ref--10-oneOf-1-0!../../../@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./management.cattle.io.globalrole.vue?vue&type=style&index=0&id=effd72b0&prod&lang=scss&scoped=true&\"","const compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","const parse = require('./parse')\nconst prerelease = (version, options) => {\n const parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n","export * from \"-!../../../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Authority.vue?vue&type=style&index=0&id=5fa70040&prod&lang=scss&scoped=true&\"","var baseGet = require('./_baseGet'),\n baseSet = require('./_baseSet'),\n castPath = require('./_castPath');\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n}\n\nmodule.exports = basePickBy;\n","const SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col span-12\"},[_c('h3',{attrs:{\"data-testid\":\"ps-config-source-authorities-title\"}},[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.policyServerConfig.sourceAuthorities.title'))+\" \")]),_vm._l((_vm.rows),function(row,index){return [_c('Authority',{key:index,ref:\"authority\",refInFor:true,attrs:{\"mode\":_vm.mode},on:{\"update\":function($event){return _vm.updateAuthority($event, index)}},scopedSlots:_vm._u([{key:\"remove\",fn:function(){return [_c('button',{staticClass:\"btn role-link remove btn-sm\",attrs:{\"data-testid\":`ps-config-authority-remove-button-${ index }`,\"type\":\"button\",\"disabled\":_vm.isView},on:{\"click\":function($event){return _vm.removeRegistry(index)}}},[_c('i',{staticClass:\"icon icon-2x icon-x\"})])]},proxy:true}],null,true),model:{value:(_vm.rows[index]),callback:function ($$v) {_vm.$set(_vm.rows, index, $$v)},expression:\"rows[index]\"}})]}),_c('button',{staticClass:\"btn role-tertiary add\",attrs:{\"data-testid\":\"ps-config-source-authorities-add-button\",\"type\":\"button\",\"disabled\":_vm.isView},on:{\"click\":function($event){return _vm.addRegistry()}}},[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.policyServerConfig.sourceAuthorities.add'))+\" \")])],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./SourceAuthorities.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./SourceAuthorities.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SourceAuthorities.vue?vue&type=template&id=189c4c6b&scoped=true&\"\nimport script from \"./SourceAuthorities.vue?vue&type=script&lang=js&\"\nexport * from \"./SourceAuthorities.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SourceAuthorities.vue?vue&type=style&index=0&id=189c4c6b&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"189c4c6b\",\n null\n \n)\n\nexport default component.exports","import isEmpty from 'lodash/isEmpty';\n\nimport { POD, WORKLOAD_TYPES } from '@shell/config/types';\n\nimport { KUBEWARDEN } from '../types';\nimport KubewardenModel, { colorForStatus, colorForTraceStatus } from './kubewarden-class';\n\nexport default class PolicyServerModel extends KubewardenModel {\n get _availableActions() {\n const out = super._availableActions;\n\n const logs = {\n action: 'openLogs',\n enabled: true,\n icon: 'icon icon-fw icon-chevron-right',\n label: 'View Logs',\n };\n\n out.unshift(logs);\n\n return out;\n }\n\n get allRelatedPolicies() {\n return async() => {\n const types = [KUBEWARDEN.ADMISSION_POLICY, KUBEWARDEN.CLUSTER_ADMISSION_POLICY];\n const promises = types.map(type => this.$dispatch('cluster/findAll', { type, opt: { force: true } }, { root: true }));\n\n try {\n const out = await Promise.all(promises);\n\n if ( out ) {\n return out.flatMap(o => o).filter(f => f.spec?.policyServer === this.metadata?.name);\n }\n } catch (e) {\n console.warn(`Error fetching related policies: ${ e }`); // eslint-disable-line no-console\n }\n };\n }\n\n get policyGauges() {\n return async() => {\n const out = {};\n const states = ['Active', 'Pending'];\n const relatedPolicies = await this.allRelatedPolicies();\n\n if ( !relatedPolicies ) {\n return out;\n }\n\n // Set defaults for gauges\n for ( const stateType of states.values() ) {\n if ( !out[stateType] ) {\n out[stateType] = {\n color: colorForStatus(stateType).replace('text-', ''),\n count: 0\n };\n }\n }\n\n // Add policy states to gauge\n relatedPolicies?.map((policy) => {\n const { stateDisplay } = policy;\n\n out[stateDisplay].count++;\n });\n\n return out;\n };\n }\n\n get tracesGauges() {\n return (policyTraces) => {\n const out = {};\n\n if ( isEmpty(policyTraces) ) {\n return out;\n }\n\n policyTraces?.flatMap((policyObj) => {\n policyObj?.traces?.map((trace) => {\n const { allowed, mode, mutated } = trace;\n\n if ( mode === 'monitor' ) {\n return;\n }\n\n if ( out['Denied'] && !allowed ) {\n out['Denied'].count++;\n } else if ( !allowed ) {\n out['Denied'] = {\n color: colorForTraceStatus('denied'),\n count: 1\n };\n } else if ( out['Mutated'] && mutated ) {\n out['Mutated'].count++;\n } else if ( mutated && allowed ) {\n out['Mutated'] = {\n color: colorForTraceStatus('mutated'),\n count: 1\n };\n }\n });\n });\n\n return out;\n };\n }\n\n get matchingDeployment() {\n return async() => {\n try {\n return await this.$dispatch('cluster/findMatching', {\n type: WORKLOAD_TYPES.DEPLOYMENT,\n selector: `kubewarden/policy-server=${ this.metadata?.name }`\n }, { root: true });\n } catch (e) {\n console.warn('Error matching policy-server to deployment', e); // eslint-disable-line no-console\n }\n };\n }\n\n get matchingPods() {\n return async() => {\n try {\n return await this.$dispatch('cluster/findMatching', {\n type: POD,\n selector: `app=kubewarden-policy-server-${ this.metadata?.name }` // kubewarden-policy-server is hardcoded from the kubewarden-controller\n }, { root: true });\n } catch (e) {\n console.warn('Error matching policy-server to pod', e); // eslint-disable-line no-console\n }\n };\n }\n\n async openLogs() {\n try {\n const pod = await this.matchingPods();\n\n if ( !isEmpty(pod) ) {\n this.$dispatch('wm/open', {\n id: `${ this.id }-logs`,\n label: this.nameDisplay,\n icon: 'file',\n component: 'ContainerLogs',\n attrs: { pod: pod[0] }\n }, { root: true });\n }\n } catch (e) {\n console.warn('Error dispatching console for pod', e); // eslint-disable-line no-console\n }\n }\n}\n","import PolicyServerModel from '../plugins/policy-server-class';\n\nexport const DEFAULT_POLICY_SERVER = {\n apiVersion: 'policies.kubewarden.io/v1alpha2',\n kind: 'PolicyServer',\n metadata: {\n annotations: {},\n labels: {},\n name: ''\n },\n spec: {\n annotations: {},\n env: [\n { name: 'KUBEWARDEN_LOG_FMT', value: 'otlp' },\n { name: 'KUBEWARDEN_LOG_LEVEL', value: 'info' }\n ],\n image: 'ghcr.io/kubewarden/policy-server:latest',\n replicas: 1,\n serviceAccountName: '',\n verificationConfig: '',\n insecureSources: [],\n sourceAuthorities: {}\n }\n};\n\nexport default class PolicyServer extends PolicyServerModel {}\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".vertical[data-v-01996ade]{flex-direction:column;width:100%}.subtle[data-v-01996ade]{opacity:.7}.message-icon[data-v-01996ade]{display:flex;align-items:center;justify-content:center;flex:1;flex-direction:column}.message-icon>I[data-v-01996ade]{font-size:64px;margin-bottom:20px}.message-icon>I.info[data-v-01996ade]{color:var(--primary)}.message-icon>I.error[data-v-01996ade]{color:var(--error)}.message-icon>I.warning[data-v-01996ade]{color:var(--warning)}.message-icon>I.success[data-v-01996ade]{color:var(--success)}.message-icon>.message[data-v-01996ade]{font-size:20px;margin-bottom:40px;max-width:60%;text-align:center;line-height:30px}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',{staticClass:\"row\"},[_c('Banner',{directives:[{name:\"clean-html\",rawName:\"v-clean-html\",value:(_vm.t('kubewarden.policyServerConfig.verification.description', {}, true)),expression:\"t('kubewarden.policyServerConfig.verification.description', {}, true)\"}],staticClass:\"type-banner mb-20 mt-0\",attrs:{\"data-testid\":\"ps-config-verification-banner\",\"color\":\"info\"}})],1),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col span-6\"},[_c('LabeledSelect',{attrs:{\"data-testid\":\"ps-config-verification-select\",\"mode\":_vm.mode,\"label\":_vm.t('kubewarden.policyServerConfig.verification.label'),\"options\":_vm.options},model:{value:(_vm.vConfig),callback:function ($$v) {_vm.vConfig=$$v},expression:\"vConfig\"}})],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Verification.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Verification.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Verification.vue?vue&type=template&id=1b639426&\"\nimport script from \"./Verification.vue?vue&type=script&lang=js&\"\nexport * from \"./Verification.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/*\nLanguage: Go\nAuthor: Stephan Kountso aka StepLg \nContributors: Evgeny Stepanischev \nDescription: Google go language (golang). For info about language\nWebsite: http://golang.org/\nCategory: common, system\n*/\n\nfunction go(hljs) {\n const LITERALS = [\n \"true\",\n \"false\",\n \"iota\",\n \"nil\"\n ];\n const BUILT_INS = [\n \"append\",\n \"cap\",\n \"close\",\n \"complex\",\n \"copy\",\n \"imag\",\n \"len\",\n \"make\",\n \"new\",\n \"panic\",\n \"print\",\n \"println\",\n \"real\",\n \"recover\",\n \"delete\"\n ];\n const TYPES = [\n \"bool\",\n \"byte\",\n \"complex64\",\n \"complex128\",\n \"error\",\n \"float32\",\n \"float64\",\n \"int8\",\n \"int16\",\n \"int32\",\n \"int64\",\n \"string\",\n \"uint8\",\n \"uint16\",\n \"uint32\",\n \"uint64\",\n \"int\",\n \"uint\",\n \"uintptr\",\n \"rune\"\n ];\n const KWS = [\n \"break\",\n \"case\",\n \"chan\",\n \"const\",\n \"continue\",\n \"default\",\n \"defer\",\n \"else\",\n \"fallthrough\",\n \"for\",\n \"func\",\n \"go\",\n \"goto\",\n \"if\",\n \"import\",\n \"interface\",\n \"map\",\n \"package\",\n \"range\",\n \"return\",\n \"select\",\n \"struct\",\n \"switch\",\n \"type\",\n \"var\",\n ];\n const KEYWORDS = {\n keyword: KWS,\n type: TYPES,\n literal: LITERALS,\n built_in: BUILT_INS\n };\n return {\n name: 'Go',\n aliases: [ 'golang' ],\n keywords: KEYWORDS,\n illegal: ' arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n\n function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var hasOwnProperty = Object.hasOwnProperty,\n setPrototypeOf = Object.setPrototypeOf,\n isFrozen = Object.isFrozen,\n getPrototypeOf = Object.getPrototypeOf,\n getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n var freeze = Object.freeze,\n seal = Object.seal,\n create = Object.create; // eslint-disable-line import/no-mutable-exports\n\n var _ref = typeof Reflect !== 'undefined' && Reflect,\n apply = _ref.apply,\n construct = _ref.construct;\n\n if (!apply) {\n apply = function apply(fun, thisValue, args) {\n return fun.apply(thisValue, args);\n };\n }\n\n if (!freeze) {\n freeze = function freeze(x) {\n return x;\n };\n }\n\n if (!seal) {\n seal = function seal(x) {\n return x;\n };\n }\n\n if (!construct) {\n construct = function construct(Func, args) {\n return _construct(Func, _toConsumableArray(args));\n };\n }\n\n var arrayForEach = unapply(Array.prototype.forEach);\n var arrayPop = unapply(Array.prototype.pop);\n var arrayPush = unapply(Array.prototype.push);\n var stringToLowerCase = unapply(String.prototype.toLowerCase);\n var stringToString = unapply(String.prototype.toString);\n var stringMatch = unapply(String.prototype.match);\n var stringReplace = unapply(String.prototype.replace);\n var stringIndexOf = unapply(String.prototype.indexOf);\n var stringTrim = unapply(String.prototype.trim);\n var regExpTest = unapply(RegExp.prototype.test);\n var typeErrorCreate = unconstruct(TypeError);\n function unapply(func) {\n return function (thisArg) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return apply(func, thisArg, args);\n };\n }\n function unconstruct(func) {\n return function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return construct(func, args);\n };\n }\n /* Add properties to a lookup table */\n\n function addToSet(set, array, transformCaseFunc) {\n transformCaseFunc = transformCaseFunc ? transformCaseFunc : stringToLowerCase;\n\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n\n var l = array.length;\n\n while (l--) {\n var element = array[l];\n\n if (typeof element === 'string') {\n var lcElement = transformCaseFunc(element);\n\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n\n element = lcElement;\n }\n }\n\n set[element] = true;\n }\n\n return set;\n }\n /* Shallow clone an object */\n\n function clone(object) {\n var newObject = create(null);\n var property;\n\n for (property in object) {\n if (apply(hasOwnProperty, object, [property]) === true) {\n newObject[property] = object[property];\n }\n }\n\n return newObject;\n }\n /* IE10 doesn't support __lookupGetter__ so lets'\n * simulate it. It also automatically checks\n * if the prop is function or getter and behaves\n * accordingly. */\n\n function lookupGetter(object, prop) {\n while (object !== null) {\n var desc = getOwnPropertyDescriptor(object, prop);\n\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n\n object = getPrototypeOf(object);\n }\n\n function fallbackValue(element) {\n console.warn('fallback value for', element);\n return null;\n }\n\n return fallbackValue;\n }\n\n var html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']); // SVG\n\n var svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\n var svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']); // List of SVG elements that are disallowed by default.\n // We still need to know them so that we can do namespace\n // checks properly in case one wants to add them to\n // allow-list.\n\n var svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'fedropshadow', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\n var mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover']); // Similarly to SVG, we want to know all MathML elements,\n // even those that we disallow by default.\n\n var mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\n var text = freeze(['#text']);\n\n var html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'playsinline', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'xmlns', 'slot']);\n var svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\n var mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\n var xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n var MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\n\n var ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\n var TMPLIT_EXPR = seal(/\\${[\\w\\W]*}/gm);\n var DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]/); // eslint-disable-line no-useless-escape\n\n var ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\n\n var IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n );\n var IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\n var ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n );\n var DOCTYPE_NAME = seal(/^html$/i);\n\n var getGlobal = function getGlobal() {\n return typeof window === 'undefined' ? null : window;\n };\n /**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param {?TrustedTypePolicyFactory} trustedTypes The policy factory.\n * @param {Document} document The document object (to determine policy name suffix)\n * @return {?TrustedTypePolicy} The policy created (or null, if Trusted Types\n * are not supported).\n */\n\n\n var _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, document) {\n if (_typeof(trustedTypes) !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n return null;\n } // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n\n\n var suffix = null;\n var ATTR_NAME = 'data-tt-policy-suffix';\n\n if (document.currentScript && document.currentScript.hasAttribute(ATTR_NAME)) {\n suffix = document.currentScript.getAttribute(ATTR_NAME);\n }\n\n var policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML: function createHTML(html) {\n return html;\n },\n createScriptURL: function createScriptURL(scriptUrl) {\n return scriptUrl;\n }\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n return null;\n }\n };\n\n function createDOMPurify() {\n var window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n\n var DOMPurify = function DOMPurify(root) {\n return createDOMPurify(root);\n };\n /**\n * Version label, exposed for easier checks\n * if DOMPurify is up to date or not\n */\n\n\n DOMPurify.version = '2.4.5';\n /**\n * Array of elements that DOMPurify removed during sanitation.\n * Empty if nothing was removed.\n */\n\n DOMPurify.removed = [];\n\n if (!window || !window.document || window.document.nodeType !== 9) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n return DOMPurify;\n }\n\n var originalDocument = window.document;\n var document = window.document;\n var DocumentFragment = window.DocumentFragment,\n HTMLTemplateElement = window.HTMLTemplateElement,\n Node = window.Node,\n Element = window.Element,\n NodeFilter = window.NodeFilter,\n _window$NamedNodeMap = window.NamedNodeMap,\n NamedNodeMap = _window$NamedNodeMap === void 0 ? window.NamedNodeMap || window.MozNamedAttrMap : _window$NamedNodeMap,\n HTMLFormElement = window.HTMLFormElement,\n DOMParser = window.DOMParser,\n trustedTypes = window.trustedTypes;\n var ElementPrototype = Element.prototype;\n var cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n var getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n var getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n var getParentNode = lookupGetter(ElementPrototype, 'parentNode'); // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n\n if (typeof HTMLTemplateElement === 'function') {\n var template = document.createElement('template');\n\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n\n var trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, originalDocument);\n\n var emptyHTML = trustedTypesPolicy ? trustedTypesPolicy.createHTML('') : '';\n var _document = document,\n implementation = _document.implementation,\n createNodeIterator = _document.createNodeIterator,\n createDocumentFragment = _document.createDocumentFragment,\n getElementsByTagName = _document.getElementsByTagName;\n var importNode = originalDocument.importNode;\n var documentMode = {};\n\n try {\n documentMode = clone(document).documentMode ? document.documentMode : {};\n } catch (_) {}\n\n var hooks = {};\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n\n DOMPurify.isSupported = typeof getParentNode === 'function' && implementation && typeof implementation.createHTMLDocument !== 'undefined' && documentMode !== 9;\n var MUSTACHE_EXPR$1 = MUSTACHE_EXPR,\n ERB_EXPR$1 = ERB_EXPR,\n TMPLIT_EXPR$1 = TMPLIT_EXPR,\n DATA_ATTR$1 = DATA_ATTR,\n ARIA_ATTR$1 = ARIA_ATTR,\n IS_SCRIPT_OR_DATA$1 = IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE$1 = ATTR_WHITESPACE;\n var IS_ALLOWED_URI$1 = IS_ALLOWED_URI;\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n\n /* allowed element names */\n\n var ALLOWED_TAGS = null;\n var DEFAULT_ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray(html$1), _toConsumableArray(svg$1), _toConsumableArray(svgFilters), _toConsumableArray(mathMl$1), _toConsumableArray(text)));\n /* Allowed attribute names */\n\n var ALLOWED_ATTR = null;\n var DEFAULT_ALLOWED_ATTR = addToSet({}, [].concat(_toConsumableArray(html), _toConsumableArray(svg), _toConsumableArray(mathMl), _toConsumableArray(xml)));\n /*\n * Configure how DOMPUrify should handle custom elements and their attributes as well as customized built-in elements.\n * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n */\n\n var CUSTOM_ELEMENT_HANDLING = Object.seal(Object.create(null, {\n tagNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n allowCustomizedBuiltInElements: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: false\n }\n }));\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n\n var FORBID_TAGS = null;\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n\n var FORBID_ATTR = null;\n /* Decide if ARIA attributes are okay */\n\n var ALLOW_ARIA_ATTR = true;\n /* Decide if custom data attributes are okay */\n\n var ALLOW_DATA_ATTR = true;\n /* Decide if unknown protocols are okay */\n\n var ALLOW_UNKNOWN_PROTOCOLS = false;\n /* Decide if self-closing tags in attributes are allowed.\n * Usually removed due to a mXSS issue in jQuery 3.0 */\n\n var ALLOW_SELF_CLOSE_IN_ATTR = true;\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n\n var SAFE_FOR_TEMPLATES = false;\n /* Decide if document with ... should be returned */\n\n var WHOLE_DOCUMENT = false;\n /* Track whether config is already set on this instance of DOMPurify. */\n\n var SET_CONFIG = false;\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n\n var FORCE_BODY = false;\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n\n var RETURN_DOM = false;\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n\n var RETURN_DOM_FRAGMENT = false;\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n\n var RETURN_TRUSTED_TYPE = false;\n /* Output should be free from DOM clobbering attacks?\n * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n */\n\n var SANITIZE_DOM = true;\n /* Achieve full DOM Clobbering protection by isolating the namespace of named\n * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n *\n * HTML/DOM spec rules that enable DOM Clobbering:\n * - Named Access on Window (§7.3.3)\n * - DOM Tree Accessors (§3.1.5)\n * - Form Element Parent-Child Relations (§4.10.3)\n * - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n * - HTMLCollection (§4.2.10.2)\n *\n * Namespace isolation is implemented by prefixing `id` and `name` attributes\n * with a constant string, i.e., `user-content-`\n */\n\n var SANITIZE_NAMED_PROPS = false;\n var SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n /* Keep element content when removing element? */\n\n var KEEP_CONTENT = true;\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n\n var IN_PLACE = false;\n /* Allow usage of profiles like html, svg and mathMl */\n\n var USE_PROFILES = {};\n /* Tags to ignore content of when KEEP_CONTENT is true */\n\n var FORBID_CONTENTS = null;\n var DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n /* Tags that are safe for data: URIs */\n\n var DATA_URI_TAGS = null;\n var DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n /* Attributes safe for values like \"javascript:\" */\n\n var URI_SAFE_ATTRIBUTES = null;\n var DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n var MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n var SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n var HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n\n var NAMESPACE = HTML_NAMESPACE;\n var IS_EMPTY_INPUT = false;\n /* Allowed XHTML+XML namespaces */\n\n var ALLOWED_NAMESPACES = null;\n var DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);\n /* Parsing of strict XHTML documents */\n\n var PARSER_MEDIA_TYPE;\n var SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n var DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n var transformCaseFunc;\n /* Keep a reference to config to pass to hooks */\n\n var CONFIG = null;\n /* Ideally, do not touch anything below this line */\n\n /* ______________________________________________ */\n\n var formElement = document.createElement('form');\n\n var isRegexOrFunction = function isRegexOrFunction(testValue) {\n return testValue instanceof RegExp || testValue instanceof Function;\n };\n /**\n * _parseConfig\n *\n * @param {Object} cfg optional config literal\n */\n // eslint-disable-next-line complexity\n\n\n var _parseConfig = function _parseConfig(cfg) {\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n /* Shield configuration object from tampering */\n\n\n if (!cfg || _typeof(cfg) !== 'object') {\n cfg = {};\n }\n /* Shield configuration object from prototype pollution */\n\n\n cfg = clone(cfg);\n PARSER_MEDIA_TYPE = // eslint-disable-next-line unicorn/prefer-includes\n SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? PARSER_MEDIA_TYPE = DEFAULT_PARSER_MEDIA_TYPE : PARSER_MEDIA_TYPE = cfg.PARSER_MEDIA_TYPE; // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n\n transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase;\n /* Set configuration parameters */\n\n ALLOWED_TAGS = 'ALLOWED_TAGS' in cfg ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = 'ALLOWED_ATTR' in cfg ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;\n ALLOWED_NAMESPACES = 'ALLOWED_NAMESPACES' in cfg ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;\n URI_SAFE_ATTRIBUTES = 'ADD_URI_SAFE_ATTR' in cfg ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), // eslint-disable-line indent\n cfg.ADD_URI_SAFE_ATTR, // eslint-disable-line indent\n transformCaseFunc // eslint-disable-line indent\n ) // eslint-disable-line indent\n : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS = 'ADD_DATA_URI_TAGS' in cfg ? addToSet(clone(DEFAULT_DATA_URI_TAGS), // eslint-disable-line indent\n cfg.ADD_DATA_URI_TAGS, // eslint-disable-line indent\n transformCaseFunc // eslint-disable-line indent\n ) // eslint-disable-line indent\n : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS = 'FORBID_CONTENTS' in cfg ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS = 'FORBID_TAGS' in cfg ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : {};\n FORBID_ATTR = 'FORBID_ATTR' in cfg ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : {};\n USE_PROFILES = 'USE_PROFILES' in cfg ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n\n ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n\n SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n\n IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI$1;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n }\n\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n }\n\n if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n }\n\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n /* Parse profile info */\n\n\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, _toConsumableArray(text));\n ALLOWED_ATTR = [];\n\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, html$1);\n addToSet(ALLOWED_ATTR, html);\n }\n\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, svg$1);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, svgFilters);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, mathMl$1);\n addToSet(ALLOWED_ATTR, mathMl);\n addToSet(ALLOWED_ATTR, xml);\n }\n }\n /* Merge configuration parameters */\n\n\n if (cfg.ADD_TAGS) {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n }\n\n if (cfg.ADD_ATTR) {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n }\n\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n }\n\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n }\n /* Add #text in case KEEP_CONTENT is set to true */\n\n\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n\n\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n\n\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n } // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n\n\n if (freeze) {\n freeze(cfg);\n }\n\n CONFIG = cfg;\n };\n\n var MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n var HTML_INTEGRATION_POINTS = addToSet({}, ['foreignobject', 'desc', 'title', 'annotation-xml']); // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erroneously deleted from\n // HTML namespace.\n\n var COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n\n var ALL_SVG_TAGS = addToSet({}, svg$1);\n addToSet(ALL_SVG_TAGS, svgFilters);\n addToSet(ALL_SVG_TAGS, svgDisallowed);\n var ALL_MATHML_TAGS = addToSet({}, mathMl$1);\n addToSet(ALL_MATHML_TAGS, mathMlDisallowed);\n /**\n *\n *\n * @param {Element} element a DOM element whose namespace is being checked\n * @returns {boolean} Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n\n var _checkValidNamespace = function _checkValidNamespace(element) {\n var parent = getParentNode(element); // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: NAMESPACE,\n tagName: 'template'\n };\n }\n\n var tagName = stringToLowerCase(element.tagName);\n var parentTagName = stringToLowerCase(parent.tagName);\n\n if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n return false;\n }\n\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n } // The only way to switch from MathML to SVG is via`\n // svg if parent is either or MathML\n // text integration points.\n\n\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n } // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n\n\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n } // The only way to switch from SVG to MathML is via\n // and HTML integration points\n\n\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n } // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n\n\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n\n if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n return false;\n } // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n\n\n return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);\n } // For XHTML and XML documents that support custom namespaces\n\n\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) {\n return true;\n } // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n // Return false just in case.\n\n\n return false;\n };\n /**\n * _forceRemove\n *\n * @param {Node} node a DOM node\n */\n\n\n var _forceRemove = function _forceRemove(node) {\n arrayPush(DOMPurify.removed, {\n element: node\n });\n\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n node.parentNode.removeChild(node);\n } catch (_) {\n try {\n node.outerHTML = emptyHTML;\n } catch (_) {\n node.remove();\n }\n }\n };\n /**\n * _removeAttribute\n *\n * @param {String} name an Attribute name\n * @param {Node} node a DOM node\n */\n\n\n var _removeAttribute = function _removeAttribute(name, node) {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: node.getAttributeNode(name),\n from: node\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: node\n });\n }\n\n node.removeAttribute(name); // We void attribute values for unremovable \"is\"\" attributes\n\n if (name === 'is' && !ALLOWED_ATTR[name]) {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(node);\n } catch (_) {}\n } else {\n try {\n node.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n /**\n * _initDocument\n *\n * @param {String} dirty a string of dirty markup\n * @return {Document} a DOM, filled with the dirty markup\n */\n\n\n var _initDocument = function _initDocument(dirty) {\n /* Create a HTML document */\n var doc;\n var leadingWhitespace;\n\n if (FORCE_BODY) {\n dirty = '' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n var matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && NAMESPACE === HTML_NAMESPACE) {\n // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n dirty = '' + dirty + '';\n }\n\n var dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {}\n }\n /* Use createHTMLDocument in case DOMParser is not available */\n\n\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;\n } catch (_) {// Syntax error if dirtyPayload is invalid xml\n }\n }\n\n var body = doc.body || doc.documentElement;\n\n if (dirty && leadingWhitespace) {\n body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n }\n /* Work on whole document or just its body */\n\n\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n }\n\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n /**\n * _createIterator\n *\n * @param {Document} root document/fragment to create iterator for\n * @return {Iterator} iterator instance\n */\n\n\n var _createIterator = function _createIterator(root) {\n return createNodeIterator.call(root.ownerDocument || root, root, // eslint-disable-next-line no-bitwise\n NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT, null, false);\n };\n /**\n * _isClobbered\n *\n * @param {Node} elm element to check for clobbering attacks\n * @return {Boolean} true if clobbered, false if safe\n */\n\n\n var _isClobbered = function _isClobbered(elm) {\n return elm instanceof HTMLFormElement && (typeof elm.nodeName !== 'string' || typeof elm.textContent !== 'string' || typeof elm.removeChild !== 'function' || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== 'function' || typeof elm.setAttribute !== 'function' || typeof elm.namespaceURI !== 'string' || typeof elm.insertBefore !== 'function' || typeof elm.hasChildNodes !== 'function');\n };\n /**\n * _isNode\n *\n * @param {Node} obj object to check whether it's a DOM node\n * @return {Boolean} true is object is a DOM node\n */\n\n\n var _isNode = function _isNode(object) {\n return _typeof(Node) === 'object' ? object instanceof Node : object && _typeof(object) === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string';\n };\n /**\n * _executeHook\n * Execute user configurable hooks\n *\n * @param {String} entryPoint Name of the hook's entry point\n * @param {Node} currentNode node to work on with the hook\n * @param {Object} data additional hook parameters\n */\n\n\n var _executeHook = function _executeHook(entryPoint, currentNode, data) {\n if (!hooks[entryPoint]) {\n return;\n }\n\n arrayForEach(hooks[entryPoint], function (hook) {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n };\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n *\n * @param {Node} currentNode to check for permission to exist\n * @return {Boolean} true if node was killed, false if left alive\n */\n\n\n var _sanitizeElements = function _sanitizeElements(currentNode) {\n var content;\n /* Execute a hook if present */\n\n _executeHook('beforeSanitizeElements', currentNode, null);\n /* Check if element is clobbered or can clobber */\n\n\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n\n return true;\n }\n /* Check if tagname contains Unicode */\n\n\n if (regExpTest(/[\\u0080-\\uFFFF]/, currentNode.nodeName)) {\n _forceRemove(currentNode);\n\n return true;\n }\n /* Now let's check the element's type and name */\n\n\n var tagName = transformCaseFunc(currentNode.nodeName);\n /* Execute a hook if present */\n\n _executeHook('uponSanitizeElement', currentNode, {\n tagName: tagName,\n allowedTags: ALLOWED_TAGS\n });\n /* Detect mXSS attempts abusing namespace confusion */\n\n\n if (currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && (!_isNode(currentNode.content) || !_isNode(currentNode.content.firstElementChild)) && regExpTest(/<[/\\w]/g, currentNode.innerHTML) && regExpTest(/<[/\\w]/g, currentNode.textContent)) {\n _forceRemove(currentNode);\n\n return true;\n }\n /* Mitigate a problem with templates inside select */\n\n\n if (tagName === 'select' && regExpTest(/\n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n $emit('error', e)\"\n >\n \n \n \n \n \n\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./CruResource.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./CruResource.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CruResource.vue?vue&type=template&id=8082eba2&scoped=true&\"\nimport script from \"./CruResource.vue?vue&type=script&lang=js&\"\nexport * from \"./CruResource.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CruResource.vue?vue&type=style&index=0&id=8082eba2&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8082eba2\",\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.vendors~markdown.js b/extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.vendors~markdown.js new file mode 100644 index 0000000..66877b8 --- /dev/null +++ b/extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.vendors~markdown.js @@ -0,0 +1,2 @@ +(("undefined"!==typeof self?self:this)["webpackJsonpkubewarden_1_6_0"]=("undefined"!==typeof self?self:this)["webpackJsonpkubewarden_1_6_0"]||[]).push([[12],{3104:function(e,t,u){(function(e,u){u(t)})(0,(function(e){"use strict";function t(e,t){for(var u=0;ue.length)&&(t=e.length);for(var u=0,n=new Array(t);u=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function s(){return{baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1}}function l(t){e.defaults=t}e.defaults=s();var a=/[&<>"']/,D=/[&<>"']/g,o=/[<>"']|&(?!#?\w+;)/,c=/[<>"']|&(?!#?\w+;)/g,h={"&":"&","<":"<",">":">",'"':""","'":"'"},p=function(e){return h[e]};function f(e,t){if(t){if(a.test(e))return e.replace(D,p)}else if(o.test(e))return e.replace(c,p);return e}var g=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi;function F(e){return e.replace(g,(function(e,t){return t=t.toLowerCase(),"colon"===t?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):""}))}var A=/(^|[^\[])\^/g;function d(e,t){e="string"===typeof e?e:e.source,t=t||"";var u={replace:function(t,n){return n=n.source||n,n=n.replace(A,"$1"),e=e.replace(t,n),u},getRegex:function(){return new RegExp(e,t)}};return u}var k=/[^\w:]/g,C=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;function E(e,t,u){if(e){var n;try{n=decodeURIComponent(F(u)).replace(k,"").toLowerCase()}catch(r){return null}if(0===n.indexOf("javascript:")||0===n.indexOf("vbscript:")||0===n.indexOf("data:"))return null}t&&!C.test(u)&&(u=w(t,u));try{u=encodeURI(u).replace(/%25/g,"%")}catch(r){return null}return u}var x={},m=/^[^:]+:\/*[^/]*$/,b=/^([^:]+:)[\s\S]*$/,B=/^([^:]+:\/*[^/]*)[\s\S]*$/;function w(e,t){x[" "+e]||(m.test(e)?x[" "+e]=e+"/":x[" "+e]=z(e,"/",!0)),e=x[" "+e];var u=-1===e.indexOf(":");return"//"===t.substring(0,2)?u?t:e.replace(b,"$1")+t:"/"===t.charAt(0)?u?t:e.replace(B,"$1")+t:e+t}var v={exec:function(){}};function y(e){for(var t,u,n=1;n=0&&"\\"===u[r])n=!n;return n?"|":" |"})),n=u.split(/ \|/),r=0;if(n[0].trim()||n.shift(),n.length>0&&!n[n.length-1].trim()&&n.pop(),n.length>t)n.splice(t);else while(n.length1)1&t&&(u+=e),t>>=1,e+=e;return u+e}function T(e,t,u,n){var r=t.href,i=t.title?f(t.title):null,s=e[1].replace(/\\([\[\]])/g,"$1");if("!"!==e[0].charAt(0)){n.state.inLink=!0;var l={type:"link",raw:u,href:r,title:i,text:s,tokens:n.inlineTokens(s,[])};return n.state.inLink=!1,l}return{type:"image",raw:u,href:r,title:i,text:f(s)}}function I(e,t){var u=e.match(/^(\s+)(?:```)/);if(null===u)return t;var n=u[1];return t.split("\n").map((function(e){var t=e.match(/^\s+/);if(null===t)return e;var u=t[0];return u.length>=n.length?e.slice(n.length):e})).join("\n")}var Z=function(){function t(t){this.options=t||e.defaults}var u=t.prototype;return u.space=function(e){var t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:"space",raw:t[0]}},u.code=function(e){var t=this.rules.block.code.exec(e);if(t){var u=t[0].replace(/^ {1,4}/gm,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:this.options.pedantic?u:z(u,"\n")}}},u.fences=function(e){var t=this.rules.block.fences.exec(e);if(t){var u=t[0],n=I(u,t[3]||"");return{type:"code",raw:u,lang:t[2]?t[2].trim():t[2],text:n}}},u.heading=function(e){var t=this.rules.block.heading.exec(e);if(t){var u=t[2].trim();if(/#$/.test(u)){var n=z(u,"#");this.options.pedantic?u=n.trim():n&&!/ $/.test(n)||(u=n.trim())}var r={type:"heading",raw:t[0],depth:t[1].length,text:u,tokens:[]};return this.lexer.inline(r.text,r.tokens),r}},u.hr=function(e){var t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:t[0]}},u.blockquote=function(e){var t=this.rules.block.blockquote.exec(e);if(t){var u=t[0].replace(/^ *>[ \t]?/gm,"");return{type:"blockquote",raw:t[0],tokens:this.lexer.blockTokens(u,[]),text:u}}},u.list=function(e){var t=this.rules.block.list.exec(e);if(t){var u,n,r,s,l,a,D,o,c,h,p,f,g=t[1].trim(),F=g.length>1,A={type:"list",raw:"",ordered:F,start:F?+g.slice(0,-1):"",loose:!1,items:[]};g=F?"\\d{1,9}\\"+g.slice(-1):"\\"+g,this.options.pedantic&&(g=F?g:"[*+-]");var d=new RegExp("^( {0,3}"+g+")((?:[\t ][^\\n]*)?(?:\\n|$))");while(e){if(f=!1,!(t=d.exec(e)))break;if(this.rules.block.hr.test(e))break;if(u=t[0],e=e.substring(u.length),o=t[2].split("\n",1)[0],c=e.split("\n",1)[0],this.options.pedantic?(s=2,p=o.trimLeft()):(s=t[2].search(/[^ ]/),s=s>4?1:s,p=o.slice(s),s+=t[1].length),a=!1,!o&&/^ *$/.test(c)&&(u+=c+"\n",e=e.substring(c.length+1),f=!0),!f){var k=new RegExp("^ {0,"+Math.min(3,s-1)+"}(?:[*+-]|\\d{1,9}[.)])((?: [^\\n]*)?(?:\\n|$))"),C=new RegExp("^ {0,"+Math.min(3,s-1)+"}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)"),E=new RegExp("^( {0,"+Math.min(3,s-1)+"})(```|~~~)");while(e){if(h=e.split("\n",1)[0],o=h,this.options.pedantic&&(o=o.replace(/^ {1,4}(?=( {4})*[^ ])/g," ")),E.test(o))break;if(this.rules.block.heading.test(o))break;if(k.test(o))break;if(C.test(e))break;if(o.search(/[^ ]/)>=s||!o.trim())p+="\n"+o.slice(s);else{if(a)break;p+="\n"+o}a||o.trim()||(a=!0),u+=h+"\n",e=e.substring(h.length+1)}}A.loose||(D?A.loose=!0:/\n *\n *$/.test(u)&&(D=!0)),this.options.gfm&&(n=/^\[[ xX]\] /.exec(p),n&&(r="[ ] "!==n[0],p=p.replace(/^\[[ xX]\] +/,""))),A.items.push({type:"list_item",raw:u,task:!!n,checked:r,loose:!1,text:p}),A.raw+=u}A.items[A.items.length-1].raw=u.trimRight(),A.items[A.items.length-1].text=p.trimRight(),A.raw=A.raw.trimRight();var x=A.items.length;for(l=0;l1)return!0}return!1}));!A.loose&&m.length&&b&&(A.loose=!0,A.items[l].loose=!0)}return A}},u.html=function(e){var t=this.rules.block.html.exec(e);if(t){var u={type:"html",raw:t[0],pre:!this.options.sanitizer&&("pre"===t[1]||"script"===t[1]||"style"===t[1]),text:t[0]};return this.options.sanitize&&(u.type="paragraph",u.text=this.options.sanitizer?this.options.sanitizer(t[0]):f(t[0]),u.tokens=[],this.lexer.inline(u.text,u.tokens)),u}},u.def=function(e){var t=this.rules.block.def.exec(e);if(t){t[3]&&(t[3]=t[3].substring(1,t[3].length-1));var u=t[1].toLowerCase().replace(/\s+/g," ");return{type:"def",tag:u,raw:t[0],href:t[2],title:t[3]}}},u.table=function(e){var t=this.rules.block.table.exec(e);if(t){var u={type:"table",header:_(t[1]).map((function(e){return{text:e}})),align:t[2].replace(/^ *|\| *$/g,"").split(/ *\| */),rows:t[3]&&t[3].trim()?t[3].replace(/\n[ \t]*$/,"").split("\n"):[]};if(u.header.length===u.align.length){u.raw=t[0];var n,r,i,s,l=u.align.length;for(n=0;n/i.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:this.options.sanitize?"text":"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(t[0]):f(t[0]):t[0]}},u.link=function(e){var t=this.rules.inline.link.exec(e);if(t){var u=t[2].trim();if(!this.options.pedantic&&/^$/.test(u))return;var n=z(u.slice(0,-1),"\\");if((u.length-n.length)%2===0)return}else{var r=$(t[2],"()");if(r>-1){var i=0===t[0].indexOf("!")?5:4,s=i+t[1].length+r;t[2]=t[2].substring(0,r),t[0]=t[0].substring(0,s).trim(),t[3]=""}}var l=t[2],a="";if(this.options.pedantic){var D=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(l);D&&(l=D[1],a=D[3])}else a=t[3]?t[3].slice(1,-1):"";return l=l.trim(),/^$/.test(u)?l.slice(1):l.slice(1,-1)),T(t,{href:l?l.replace(this.rules.inline._escapes,"$1"):l,title:a?a.replace(this.rules.inline._escapes,"$1"):a},t[0],this.lexer)}},u.reflink=function(e,t){var u;if((u=this.rules.inline.reflink.exec(e))||(u=this.rules.inline.nolink.exec(e))){var n=(u[2]||u[1]).replace(/\s+/g," ");if(n=t[n.toLowerCase()],!n||!n.href){var r=u[0].charAt(0);return{type:"text",raw:r,text:r}}return T(u,n,u[0],this.lexer)}},u.emStrong=function(e,t,u){void 0===u&&(u="");var n=this.rules.inline.emStrong.lDelim.exec(e);if(n&&(!n[3]||!u.match(/(?:[0-9A-Za-z\xAA\xB2\xB3\xB5\xB9\xBA\xBC-\xBE\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u0660-\u0669\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07C0-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0966-\u096F\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09E6-\u09F1\u09F4-\u09F9\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A66-\u0A6F\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AE6-\u0AEF\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B66-\u0B6F\u0B71-\u0B77\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0BE6-\u0BF2\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C66-\u0C6F\u0C78-\u0C7E\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CE6-\u0CEF\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D58-\u0D61\u0D66-\u0D78\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DE6-\u0DEF\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F20-\u0F33\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F-\u1049\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u1090-\u1099\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1369-\u137C\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A16\u1A20-\u1A54\u1A80-\u1A89\u1A90-\u1A99\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B50-\u1B59\u1B83-\u1BA0\u1BAE-\u1BE5\u1C00-\u1C23\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2070\u2071\u2074-\u2079\u207F-\u2089\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2150-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2CFD\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u3192-\u3195\u31A0-\u31BF\u31F0-\u31FF\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA830-\uA835\uA840-\uA873\uA882-\uA8B3\uA8D0-\uA8D9\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA900-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF-\uA9D9\uA9E0-\uA9E4\uA9E6-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDE80-\uDE9C\uDEA0-\uDED0\uDEE1-\uDEFB\uDF00-\uDF23\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC58-\uDC76\uDC79-\uDC9E\uDCA7-\uDCAF\uDCE0-\uDCF2\uDCF4\uDCF5\uDCFB-\uDD1B\uDD20-\uDD39\uDD80-\uDDB7\uDDBC-\uDDCF\uDDD2-\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE40-\uDE48\uDE60-\uDE7E\uDE80-\uDE9F\uDEC0-\uDEC7\uDEC9-\uDEE4\uDEEB-\uDEEF\uDF00-\uDF35\uDF40-\uDF55\uDF58-\uDF72\uDF78-\uDF91\uDFA9-\uDFAF]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDCFA-\uDD23\uDD30-\uDD39\uDE60-\uDE7E\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF27\uDF30-\uDF45\uDF51-\uDF54\uDF70-\uDF81\uDFB0-\uDFCB\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC52-\uDC6F\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD03-\uDD26\uDD36-\uDD3F\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDD0-\uDDDA\uDDDC\uDDE1-\uDDF4\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDEF0-\uDEF9\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC50-\uDC59\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE50-\uDE59\uDE80-\uDEAA\uDEB8\uDEC0-\uDEC9\uDF00-\uDF1A\uDF30-\uDF3B\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCF2\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDD50-\uDD59\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC50-\uDC6C\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD50-\uDD59\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDDA0-\uDDA9\uDEE0-\uDEF2\uDFB0\uDFC0-\uDFD4]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDE70-\uDEBE\uDEC0-\uDEC9\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF50-\uDF59\uDF5B-\uDF61\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE96\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD834[\uDEE0-\uDEF3\uDF60-\uDF78]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD837[\uDF00-\uDF1E]|\uD838[\uDD00-\uDD2C\uDD37-\uDD3D\uDD40-\uDD49\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB\uDEF0-\uDEF9]|\uD839[\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDCC7-\uDCCF\uDD00-\uDD43\uDD4B\uDD50-\uDD59]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD83C[\uDD00-\uDD0C]|\uD83E[\uDFF0-\uDFF9]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF38\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A])/))){var r=n[1]||n[2]||"";if(!r||r&&(""===u||this.rules.inline.punctuation.exec(u))){var i,s,l=n[0].length-1,a=l,D=0,o="*"===n[0][0]?this.rules.inline.emStrong.rDelimAst:this.rules.inline.emStrong.rDelimUnd;o.lastIndex=0,t=t.slice(-1*e.length+l);while(null!=(n=o.exec(t)))if(i=n[1]||n[2]||n[3]||n[4]||n[5]||n[6],i)if(s=i.length,n[3]||n[4])a+=s;else if(!((n[5]||n[6])&&l%3)||(l+s)%3){if(a-=s,!(a>0)){if(s=Math.min(s,s+a+D),Math.min(l,s)%2){var c=e.slice(1,l+n.index+s);return{type:"em",raw:e.slice(0,l+n.index+s+1),text:c,tokens:this.lexer.inlineTokens(c,[])}}var h=e.slice(2,l+n.index+s-1);return{type:"strong",raw:e.slice(0,l+n.index+s+1),text:h,tokens:this.lexer.inlineTokens(h,[])}}}else D+=s}}},u.codespan=function(e){var t=this.rules.inline.code.exec(e);if(t){var u=t[2].replace(/\n/g," "),n=/[^ ]/.test(u),r=/^ /.test(u)&&/ $/.test(u);return n&&r&&(u=u.substring(1,u.length-1)),u=f(u,!0),{type:"codespan",raw:t[0],text:u}}},u.br=function(e){var t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}},u.del=function(e){var t=this.rules.inline.del.exec(e);if(t)return{type:"del",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2],[])}},u.autolink=function(e,t){var u,n,r=this.rules.inline.autolink.exec(e);if(r)return"@"===r[2]?(u=f(this.options.mangle?t(r[1]):r[1]),n="mailto:"+u):(u=f(r[1]),n=u),{type:"link",raw:r[0],text:u,href:n,tokens:[{type:"text",raw:u,text:u}]}},u.url=function(e,t){var u;if(u=this.rules.inline.url.exec(e)){var n,r;if("@"===u[2])n=f(this.options.mangle?t(u[0]):u[0]),r="mailto:"+n;else{var i;do{i=u[0],u[0]=this.rules.inline._backpedal.exec(u[0])[0]}while(i!==u[0]);n=f(u[0]),r="www."===u[1]?"http://"+n:n}return{type:"link",raw:u[0],text:n,href:r,tokens:[{type:"text",raw:n,text:n}]}}},u.inlineText=function(e,t){var u,n=this.rules.inline.text.exec(e);if(n)return u=this.lexer.state.inRawBlock?this.options.sanitize?this.options.sanitizer?this.options.sanitizer(n[0]):f(n[0]):n[0]:f(this.options.smartypants?t(n[0]):n[0]),{type:"text",raw:n[0],text:u}},t}(),O={newline:/^(?: *(?:\n|$))+/,code:/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,fences:/^ {0,3}(`{3,}(?=[^`\n]*\n)|~{3,})([^\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~`]* *(?=\n|$)|$)/,hr:/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/,html:"^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))",def:/^ {0,3}\[(label)\]: *(?:\n *)?]+)>?(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/,table:v,lheading:/^([^\n]+)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,text:/^[^\n]+/,_label:/(?!\s*\])(?:\\.|[^\[\]\\])+/,_title:/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/};O.def=d(O.def).replace("label",O._label).replace("title",O._title).getRegex(),O.bullet=/(?:[*+-]|\d{1,9}[.)])/,O.listItemStart=d(/^( *)(bull) */).replace("bull",O.bullet).getRegex(),O.list=d(O.list).replace(/bull/g,O.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+O.def.source+")").getRegex(),O._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",O._comment=/|$)/,O.html=d(O.html,"i").replace("comment",O._comment).replace("tag",O._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),O.paragraph=d(O._paragraph).replace("hr",O.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",O._tag).getRegex(),O.blockquote=d(O.blockquote).replace("paragraph",O.paragraph).getRegex(),O.normal=y({},O),O.gfm=y({},O.normal,{table:"^ *([^\\n ].*\\|.*)\\n {0,3}(?:\\| *)?(:?-+:? *(?:\\| *:?-+:? *)*)(?:\\| *)?(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"}),O.gfm.table=d(O.gfm.table).replace("hr",O.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",O._tag).getRegex(),O.gfm.paragraph=d(O._paragraph).replace("hr",O.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("table",O.gfm.table).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",O._tag).getRegex(),O.pedantic=y({},O.normal,{html:d("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",O._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:v,paragraph:d(O.normal._paragraph).replace("hr",O.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",O.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()});var q={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:v,tag:"^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(ref)\]/,nolink:/^!?\[(ref)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",emStrong:{lDelim:/^(?:\*+(?:([punct_])|[^\s*]))|^_+(?:([punct*])|([^\s_]))/,rDelimAst:/^[^_*]*?\_\_[^_*]*?\*[^_*]*?(?=\_\_)|[^*]+(?=[^*])|[punct_](\*+)(?=[\s]|$)|[^punct*_\s](\*+)(?=[punct_\s]|$)|[punct_\s](\*+)(?=[^punct*_\s])|[\s](\*+)(?=[punct_])|[punct_](\*+)(?=[punct_])|[^punct*_\s](\*+)(?=[^punct*_\s])/,rDelimUnd:/^[^_*]*?\*\*[^_*]*?\_[^_*]*?(?=\*\*)|[^_]+(?=[^_])|[punct*](\_+)(?=[\s]|$)|[^punct*_\s](\_+)(?=[punct*\s]|$)|[punct*\s](\_+)(?=[^punct*_\s])|[\s](\_+)(?=[punct*])|[punct*](\_+)(?=[punct*])/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:v,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\.5&&(u="x"+u.toString(16)),n+="&#"+u+";";return n}q._punctuation="!\"#$%&'()+\\-.,/:;<=>?@\\[\\]`^{|}~",q.punctuation=d(q.punctuation).replace(/punctuation/g,q._punctuation).getRegex(),q.blockSkip=/\[[^\]]*?\]\([^\)]*?\)|`[^`]*?`|<[^>]*?>/g,q.escapedEmSt=/\\\*|\\_/g,q._comment=d(O._comment).replace("(?:--\x3e|$)","--\x3e").getRegex(),q.emStrong.lDelim=d(q.emStrong.lDelim).replace(/punct/g,q._punctuation).getRegex(),q.emStrong.rDelimAst=d(q.emStrong.rDelimAst,"g").replace(/punct/g,q._punctuation).getRegex(),q.emStrong.rDelimUnd=d(q.emStrong.rDelimUnd,"g").replace(/punct/g,q._punctuation).getRegex(),q._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g,q._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,q._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,q.autolink=d(q.autolink).replace("scheme",q._scheme).replace("email",q._email).getRegex(),q._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,q.tag=d(q.tag).replace("comment",q._comment).replace("attribute",q._attribute).getRegex(),q._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,q._href=/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/,q._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,q.link=d(q.link).replace("label",q._label).replace("href",q._href).replace("title",q._title).getRegex(),q.reflink=d(q.reflink).replace("label",q._label).replace("ref",O._label).getRegex(),q.nolink=d(q.nolink).replace("ref",O._label).getRegex(),q.reflinkSearch=d(q.reflinkSearch,"g").replace("reflink",q.reflink).replace("nolink",q.nolink).getRegex(),q.normal=y({},q),q.pedantic=y({},q.normal,{strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:d(/^!?\[(label)\]\((.*?)\)/).replace("label",q._label).getRegex(),reflink:d(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",q._label).getRegex()}),q.gfm=y({},q.normal,{escape:d(q.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\0?t[t.length-1].raw+="\n":t.push(u);else if(u=this.tokenizer.code(e))e=e.substring(u.raw.length),n=t[t.length-1],!n||"paragraph"!==n.type&&"text"!==n.type?t.push(u):(n.raw+="\n"+u.raw,n.text+="\n"+u.text,this.inlineQueue[this.inlineQueue.length-1].src=n.text);else if(u=this.tokenizer.fences(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.heading(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.hr(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.blockquote(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.list(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.html(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.def(e))e=e.substring(u.raw.length),n=t[t.length-1],!n||"paragraph"!==n.type&&"text"!==n.type?this.tokens.links[u.tag]||(this.tokens.links[u.tag]={href:u.href,title:u.title}):(n.raw+="\n"+u.raw,n.text+="\n"+u.raw,this.inlineQueue[this.inlineQueue.length-1].src=n.text);else if(u=this.tokenizer.table(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.lheading(e))e=e.substring(u.raw.length),t.push(u);else if(r=e,this.options.extensions&&this.options.extensions.startBlock&&function(){var t=1/0,u=e.slice(1),n=void 0;s.options.extensions.startBlock.forEach((function(e){n=e.call({lexer:this},u),"number"===typeof n&&n>=0&&(t=Math.min(t,n))})),t<1/0&&t>=0&&(r=e.substring(0,t+1))}(),this.state.top&&(u=this.tokenizer.paragraph(r)))n=t[t.length-1],i&&"paragraph"===n.type?(n.raw+="\n"+u.raw,n.text+="\n"+u.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=n.text):t.push(u),i=r.length!==e.length,e=e.substring(u.raw.length);else if(u=this.tokenizer.text(e))e=e.substring(u.raw.length),n=t[t.length-1],n&&"text"===n.type?(n.raw+="\n"+u.raw,n.text+="\n"+u.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=n.text):t.push(u);else if(e){var l="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(l);break}throw new Error(l)}return this.state.top=!0,t},n.inline=function(e,t){this.inlineQueue.push({src:e,tokens:t})},n.inlineTokens=function(e,t){var u,n,r,i=this;void 0===t&&(t=[]);var s,l,a,D=e;if(this.tokens.links){var o=Object.keys(this.tokens.links);if(o.length>0)while(null!=(s=this.tokenizer.rules.inline.reflinkSearch.exec(D)))o.includes(s[0].slice(s[0].lastIndexOf("[")+1,-1))&&(D=D.slice(0,s.index)+"["+R("a",s[0].length-2)+"]"+D.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}while(null!=(s=this.tokenizer.rules.inline.blockSkip.exec(D)))D=D.slice(0,s.index)+"["+R("a",s[0].length-2)+"]"+D.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);while(null!=(s=this.tokenizer.rules.inline.escapedEmSt.exec(D)))D=D.slice(0,s.index)+"++"+D.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);while(e)if(l||(a=""),l=!1,!(this.options.extensions&&this.options.extensions.inline&&this.options.extensions.inline.some((function(n){return!!(u=n.call({lexer:i},e,t))&&(e=e.substring(u.raw.length),t.push(u),!0)}))))if(u=this.tokenizer.escape(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.tag(e))e=e.substring(u.raw.length),n=t[t.length-1],n&&"text"===u.type&&"text"===n.type?(n.raw+=u.raw,n.text+=u.text):t.push(u);else if(u=this.tokenizer.link(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.reflink(e,this.tokens.links))e=e.substring(u.raw.length),n=t[t.length-1],n&&"text"===u.type&&"text"===n.type?(n.raw+=u.raw,n.text+=u.text):t.push(u);else if(u=this.tokenizer.emStrong(e,D,a))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.codespan(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.br(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.del(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.autolink(e,j))e=e.substring(u.raw.length),t.push(u);else if(this.state.inLink||!(u=this.tokenizer.url(e,j))){if(r=e,this.options.extensions&&this.options.extensions.startInline&&function(){var t=1/0,u=e.slice(1),n=void 0;i.options.extensions.startInline.forEach((function(e){n=e.call({lexer:this},u),"number"===typeof n&&n>=0&&(t=Math.min(t,n))})),t<1/0&&t>=0&&(r=e.substring(0,t+1))}(),u=this.tokenizer.inlineText(r,L))e=e.substring(u.raw.length),"_"!==u.raw.slice(-1)&&(a=u.raw.slice(-1)),l=!0,n=t[t.length-1],n&&"text"===n.type?(n.raw+=u.raw,n.text+=u.text):t.push(u);else if(e){var c="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(c);break}throw new Error(c)}}else e=e.substring(u.raw.length),t.push(u);return t},u(t,null,[{key:"rules",get:function(){return{block:O,inline:q}}}]),t}(),Q=function(){function t(t){this.options=t||e.defaults}var u=t.prototype;return u.code=function(e,t,u){var n=(t||"").match(/\S*/)[0];if(this.options.highlight){var r=this.options.highlight(e,n);null!=r&&r!==e&&(u=!0,e=r)}return e=e.replace(/\n$/,"")+"\n",n?'
'+(u?e:f(e,!0))+"
\n":"
"+(u?e:f(e,!0))+"
\n"},u.blockquote=function(e){return"
\n"+e+"
\n"},u.html=function(e){return e},u.heading=function(e,t,u,n){if(this.options.headerIds){var r=this.options.headerPrefix+n.slug(u);return"'+e+"\n"}return""+e+"\n"},u.hr=function(){return this.options.xhtml?"
\n":"
\n"},u.list=function(e,t,u){var n=t?"ol":"ul",r=t&&1!==u?' start="'+u+'"':"";return"<"+n+r+">\n"+e+"\n"},u.listitem=function(e){return"
  • "+e+"
  • \n"},u.checkbox=function(e){return" "},u.paragraph=function(e){return"

    "+e+"

    \n"},u.table=function(e,t){return t&&(t=""+t+""),"\n\n"+e+"\n"+t+"
    \n"},u.tablerow=function(e){return"\n"+e+"\n"},u.tablecell=function(e,t){var u=t.header?"th":"td",n=t.align?"<"+u+' align="'+t.align+'">':"<"+u+">";return n+e+"\n"},u.strong=function(e){return""+e+""},u.em=function(e){return""+e+""},u.codespan=function(e){return""+e+""},u.br=function(){return this.options.xhtml?"
    ":"
    "},u.del=function(e){return""+e+""},u.link=function(e,t,u){if(e=E(this.options.sanitize,this.options.baseUrl,e),null===e)return u;var n='",n},u.image=function(e,t,u){if(e=E(this.options.sanitize,this.options.baseUrl,e),null===e)return u;var n=''+u+'":">",n},u.text=function(e){return e},t}(),U=function(){function e(){}var t=e.prototype;return t.strong=function(e){return e},t.em=function(e){return e},t.codespan=function(e){return e},t.del=function(e){return e},t.html=function(e){return e},t.text=function(e){return e},t.link=function(e,t,u){return""+u},t.image=function(e,t,u){return""+u},t.br=function(){return""},e}(),M=function(){function e(){this.seen={}}var t=e.prototype;return t.serialize=function(e){return e.toLowerCase().trim().replace(/<[!\/a-z].*?>/gi,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-")},t.getNextSafeSlug=function(e,t){var u=e,n=0;if(this.seen.hasOwnProperty(u)){n=this.seen[e];do{n++,u=e+"-"+n}while(this.seen.hasOwnProperty(u))}return t||(this.seen[e]=n,this.seen[u]=0),u},t.slug=function(e,t){void 0===t&&(t={});var u=this.serialize(e);return this.getNextSafeSlug(u,t.dryrun)},e}(),N=function(){function t(t){this.options=t||e.defaults,this.options.renderer=this.options.renderer||new Q,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new U,this.slugger=new M}t.parse=function(e,u){var n=new t(u);return n.parse(e)},t.parseInline=function(e,u){var n=new t(u);return n.parseInline(e)};var u=t.prototype;return u.parse=function(e,t){void 0===t&&(t=!0);var u,n,r,i,s,l,a,D,o,c,h,p,f,g,A,d,k,C,E,x="",m=e.length;for(u=0;u0&&"paragraph"===A.tokens[0].type?(A.tokens[0].text=C+" "+A.tokens[0].text,A.tokens[0].tokens&&A.tokens[0].tokens.length>0&&"text"===A.tokens[0].tokens[0].type&&(A.tokens[0].tokens[0].text=C+" "+A.tokens[0].tokens[0].text)):A.tokens.unshift({type:"text",text:C}):g+=C),g+=this.parse(A.tokens,f),o+=this.renderer.listitem(g,k,d);x+=this.renderer.list(o,h,p);continue;case"html":x+=this.renderer.html(c.text);continue;case"paragraph":x+=this.renderer.paragraph(this.parseInline(c.tokens));continue;case"text":o=c.tokens?this.parseInline(c.tokens):c.text;while(u+1An error occurred:

    "+f(a.message+"",!0)+"
    ";throw a}}J.options=J.setOptions=function(e){return y(J.defaults,e),l(J.defaults),J},J.getDefaults=s,J.defaults=e.defaults,J.use=function(){for(var e=arguments.length,t=new Array(e),u=0;uAn error occurred:

    "+f(n.message+"",!0)+"
    ";throw n}},J.Parser=N,J.parser=N.parse,J.Renderer=Q,J.TextRenderer=U,J.Lexer=P,J.lexer=P.lex,J.Tokenizer=Z,J.Slugger=M,J.parse=J;var X=J.options,G=J.setOptions,V=J.use,H=J.walkTokens,K=J.parseInline,W=J,Y=N.parse,ee=P.lex;e.Lexer=P,e.Parser=N,e.Renderer=Q,e.Slugger=M,e.TextRenderer=U,e.Tokenizer=Z,e.getDefaults=s,e.lexer=ee,e.marked=J,e.options=X,e.parse=W,e.parseInline=K,e.parser=Y,e.setOptions=G,e.use=V,e.walkTokens=H,Object.defineProperty(e,"__esModule",{value:!0})}))}}]); +//# sourceMappingURL=kubewarden-1.6.0.umd.min.vendors~markdown.js.map \ No newline at end of file diff --git a/extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.vendors~markdown.js.map b/extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.vendors~markdown.js.map new file mode 100644 index 0000000..dde08e0 --- /dev/null +++ b/extensions/kubewarden/1.6.0/plugin/kubewarden-1.6.0.umd.min.vendors~markdown.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack://kubewarden-1.6.0//home/runner/work/kubewarden-ui/kubewarden-ui/node_modules/marked/lib/marked.umd.js"],"names":["global","factory","exports","this","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_createClass","Constructor","protoProps","staticProps","prototype","_unsupportedIterableToArray","o","minLen","_arrayLikeToArray","n","toString","call","slice","constructor","name","Array","from","test","arr","len","arr2","_createForOfIteratorHelperLoose","allowArrayLike","it","Symbol","iterator","next","bind","isArray","done","value","TypeError","getDefaults","baseUrl","breaks","extensions","gfm","headerIds","headerPrefix","highlight","langPrefix","mangle","pedantic","renderer","sanitize","sanitizer","silent","smartLists","smartypants","tokenizer","walkTokens","xhtml","changeDefaults","newDefaults","defaults","escapeTest","escapeReplace","escapeTestNoEncode","escapeReplaceNoEncode","escapeReplacements","getEscapeReplacement","ch","escape","html","encode","replace","unescapeTest","unescape","_","toLowerCase","charAt","String","fromCharCode","parseInt","substring","caret","edit","regex","opt","source","obj","val","getRegex","RegExp","nonWordAndColonTest","originIndependentUrl","cleanUrl","base","href","prot","decodeURIComponent","e","indexOf","resolveUrl","encodeURI","baseUrls","justDomain","protocol","domain","rtrim","relativeBase","noopTest","exec","merge","arguments","hasOwnProperty","splitCells","tableRow","count","row","match","offset","str","escaped","curr","cells","split","trim","shift","pop","splice","push","c","invert","l","suffLen","currChar","findClosingBracket","b","level","checkSanitizeDeprecation","console","warn","repeatString","pattern","result","outputLink","cap","link","raw","lexer","title","text","state","inLink","token","type","tokens","inlineTokens","indentCodeCompensation","matchIndentToCode","indentToCode","map","node","matchIndentInNode","indentInNode","join","Tokenizer","options","_proto","space","src","rules","block","newline","code","codeBlockStyle","fences","lang","heading","trimmed","depth","inline","hr","blockquote","blockTokens","list","istask","ischecked","indent","blankLine","endsWithBlankLine","line","nextLine","rawLine","itemContents","endEarly","bull","isordered","ordered","start","loose","items","itemRegex","trimLeft","search","nextBulletRegex","Math","min","hrRegex","fencesBeginRegex","task","checked","trimRight","top","spacers","filter","t","hasMultipleLineBreaks","every","_step","chars","lineBreaks","_iterator","_char","pre","def","tag","table","item","header","align","rows","j","k","lheading","paragraph","inRawBlock","trimmedUrl","rtrimSlash","lastParenIndex","linkLen","_escapes","reflink","links","nolink","emStrong","maskedSrc","prevChar","lDelim","nextChar","punctuation","rDelim","rLength","lLength","delimTotal","midDelimTotal","endReg","rDelimAst","rDelimUnd","lastIndex","_text","index","codespan","hasNonSpaceChars","hasSpaceCharsOnBothEnds","br","del","autolink","url","prevCapZero","_backpedal","inlineText","_paragraph","_label","_title","bullet","listItemStart","_tag","_comment","normal","reflinkSearch","out","charCodeAt","random","_punctuation","blockSkip","escapedEmSt","_scheme","_email","_attribute","_href","strong","middle","endAst","endUnd","em","_extended_email","Lexer","create","inlineQueue","lex","lexInline","lastToken","cutSrc","lastParagraphClipped","_this","leading","tabs","repeat","some","extTokenizer","startBlock","startIndex","Infinity","tempSrc","tempStart","forEach","getStartIndex","errMsg","error","Error","_this2","keepPrevChar","keys","includes","lastIndexOf","startInline","get","Renderer","_code","infostring","quote","_html","slugger","id","slug","body","startatt","listitem","checkbox","tablerow","content","tablecell","flags","image","TextRenderer","Slugger","seen","serialize","getNextSafeSlug","originalSlug","isDryRun","occurenceAccumulator","dryrun","Parser","textRenderer","parse","parser","parseInline","l2","l3","cell","itemBody","ret","renderers","unshift","marked","callback","err","pending","setTimeout","_tokens","message","setOptions","use","_len","args","_key","hasExtensions","opts","apply","concat","childTokens","pack","ext","prevRenderer","_len2","_key2","_loop","prop","_len3","_key3","_loop2","prevTokenizer","_len4","_key4","_walkTokens","_loop3","_step2","_iterator2","_step3","_iterator3","_step4","_iterator4","_cell"],"mappings":"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","file":"kubewarden-1.6.0.umd.min.vendors~markdown.js","sourcesContent":["/**\n * marked - a markdown parser\n * Copyright (c) 2011-2022, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.marked = {}));\n})(this, (function (exports) { 'use strict';\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n }\n\n function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n }\n\n function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n\n function _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(it);\n\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n function getDefaults() {\n return {\n baseUrl: null,\n breaks: false,\n extensions: null,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartLists: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n }\n exports.defaults = getDefaults();\n function changeDefaults(newDefaults) {\n exports.defaults = newDefaults;\n }\n\n /**\n * Helpers\n */\n var escapeTest = /[&<>\"']/;\n var escapeReplace = /[&<>\"']/g;\n var escapeTestNoEncode = /[<>\"']|&(?!#?\\w+;)/;\n var escapeReplaceNoEncode = /[<>\"']|&(?!#?\\w+;)/g;\n var escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n var getEscapeReplacement = function getEscapeReplacement(ch) {\n return escapeReplacements[ch];\n };\n\n function escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n }\n var unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n /**\n * @param {string} html\n */\n\n function unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, function (_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x' ? String.fromCharCode(parseInt(n.substring(2), 16)) : String.fromCharCode(+n.substring(1));\n }\n\n return '';\n });\n }\n var caret = /(^|[^\\[])\\^/g;\n /**\n * @param {string | RegExp} regex\n * @param {string} opt\n */\n\n function edit(regex, opt) {\n regex = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n var obj = {\n replace: function replace(name, val) {\n val = val.source || val;\n val = val.replace(caret, '$1');\n regex = regex.replace(name, val);\n return obj;\n },\n getRegex: function getRegex() {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n }\n var nonWordAndColonTest = /[^\\w:]/g;\n var originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n /**\n * @param {boolean} sanitize\n * @param {string} base\n * @param {string} href\n */\n\n function cleanUrl(sanitize, base, href) {\n if (sanitize) {\n var prot;\n\n try {\n prot = decodeURIComponent(unescape(href)).replace(nonWordAndColonTest, '').toLowerCase();\n } catch (e) {\n return null;\n }\n\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n\n return href;\n }\n var baseUrls = {};\n var justDomain = /^[^:]+:\\/*[^/]*$/;\n var protocol = /^([^:]+:)[\\s\\S]*$/;\n var domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n /**\n * @param {string} base\n * @param {string} href\n */\n\n function resolveUrl(base, href) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n\n base = baseUrls[' ' + base];\n var relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n }\n var noopTest = {\n exec: function noopTest() {}\n };\n function merge(obj) {\n var i = 1,\n target,\n key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n }\n function splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n var row = tableRow.replace(/\\|/g, function (match, offset, str) {\n var escaped = false,\n curr = offset;\n\n while (--curr >= 0 && str[curr] === '\\\\') {\n escaped = !escaped;\n }\n\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n var i = 0; // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n\n if (!cells[0].trim()) {\n cells.shift();\n }\n\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) {\n cells.push('');\n }\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n\n return cells;\n }\n /**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param {string} str\n * @param {string} c\n * @param {boolean} invert Remove suffix of non-c chars instead. Default falsey.\n */\n\n function rtrim(str, c, invert) {\n var l = str.length;\n\n if (l === 0) {\n return '';\n } // Length of suffix matching the invert condition.\n\n\n var suffLen = 0; // Step left until we fail to match the invert condition.\n\n while (suffLen < l) {\n var currChar = str.charAt(l - suffLen - 1);\n\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.slice(0, l - suffLen);\n }\n function findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n\n var l = str.length;\n var level = 0,\n i = 0;\n\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n\n if (level < 0) {\n return i;\n }\n }\n }\n\n return -1;\n }\n function checkSanitizeDeprecation(opt) {\n if (opt && opt.sanitize && !opt.silent) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n } // copied from https://stackoverflow.com/a/5450113/806777\n\n /**\n * @param {string} pattern\n * @param {number} count\n */\n\n function repeatString(pattern, count) {\n if (count < 1) {\n return '';\n }\n\n var result = '';\n\n while (count > 1) {\n if (count & 1) {\n result += pattern;\n }\n\n count >>= 1;\n pattern += pattern;\n }\n\n return result + pattern;\n }\n\n function outputLink(cap, link, raw, lexer) {\n var href = link.href;\n var title = link.title ? escape(link.title) : null;\n var text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n var token = {\n type: 'link',\n raw: raw,\n href: href,\n title: title,\n text: text,\n tokens: lexer.inlineTokens(text, [])\n };\n lexer.state.inLink = false;\n return token;\n }\n\n return {\n type: 'image',\n raw: raw,\n href: href,\n title: title,\n text: escape(text)\n };\n }\n\n function indentCodeCompensation(raw, text) {\n var matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n var indentToCode = matchIndentToCode[1];\n return text.split('\\n').map(function (node) {\n var matchIndentInNode = node.match(/^\\s+/);\n\n if (matchIndentInNode === null) {\n return node;\n }\n\n var indentInNode = matchIndentInNode[0];\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n }).join('\\n');\n }\n /**\n * Tokenizer\n */\n\n\n var Tokenizer = /*#__PURE__*/function () {\n function Tokenizer(options) {\n this.options = options || exports.defaults;\n }\n\n var _proto = Tokenizer.prototype;\n\n _proto.space = function space(src) {\n var cap = this.rules.block.newline.exec(src);\n\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n };\n\n _proto.code = function code(src) {\n var cap = this.rules.block.code.exec(src);\n\n if (cap) {\n var text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic ? rtrim(text, '\\n') : text\n };\n }\n };\n\n _proto.fences = function fences(src) {\n var cap = this.rules.block.fences.exec(src);\n\n if (cap) {\n var raw = cap[0];\n var text = indentCodeCompensation(raw, cap[3] || '');\n return {\n type: 'code',\n raw: raw,\n lang: cap[2] ? cap[2].trim() : cap[2],\n text: text\n };\n }\n };\n\n _proto.heading = function heading(src) {\n var cap = this.rules.block.heading.exec(src);\n\n if (cap) {\n var text = cap[2].trim(); // remove trailing #s\n\n if (/#$/.test(text)) {\n var trimmed = rtrim(text, '#');\n\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n\n var token = {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text: text,\n tokens: []\n };\n this.lexer.inline(token.text, token.tokens);\n return token;\n }\n };\n\n _proto.hr = function hr(src) {\n var cap = this.rules.block.hr.exec(src);\n\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n };\n\n _proto.blockquote = function blockquote(src) {\n var cap = this.rules.block.blockquote.exec(src);\n\n if (cap) {\n var text = cap[0].replace(/^ *>[ \\t]?/gm, '');\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens: this.lexer.blockTokens(text, []),\n text: text\n };\n }\n };\n\n _proto.list = function list(src) {\n var cap = this.rules.block.list.exec(src);\n\n if (cap) {\n var raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine, line, nextLine, rawLine, itemContents, endEarly;\n var bull = cap[1].trim();\n var isordered = bull.length > 1;\n var list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: []\n };\n bull = isordered ? \"\\\\d{1,9}\\\\\" + bull.slice(-1) : \"\\\\\" + bull;\n\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n } // Get next list item\n\n\n var itemRegex = new RegExp(\"^( {0,3}\" + bull + \")((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))\"); // Check if current bullet point can start a new List Item\n\n while (src) {\n endEarly = false;\n\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n\n if (this.rules.block.hr.test(src)) {\n // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n\n raw = cap[0];\n src = src.substring(raw.length);\n line = cap[2].split('\\n', 1)[0];\n nextLine = src.split('\\n', 1)[0];\n\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimLeft();\n } else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n\n blankLine = false;\n\n if (!line && /^ *$/.test(nextLine)) {\n // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n\n if (!endEarly) {\n var nextBulletRegex = new RegExp(\"^ {0,\" + Math.min(3, indent - 1) + \"}(?:[*+-]|\\\\d{1,9}[.)])((?: [^\\\\n]*)?(?:\\\\n|$))\");\n var hrRegex = new RegExp(\"^ {0,\" + Math.min(3, indent - 1) + \"}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)\");\n var fencesBeginRegex = new RegExp(\"^( {0,\" + Math.min(3, indent - 1) + \"})(```|~~~)\"); // Check if following lines should be included in List Item\n\n while (src) {\n rawLine = src.split('\\n', 1)[0];\n line = rawLine; // Re-align to follow commonmark nesting rules\n\n if (this.options.pedantic) {\n line = line.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n } // End list item if found code fences\n\n\n if (fencesBeginRegex.test(line)) {\n break;\n } // End list item if found start of new heading\n\n\n if (this.rules.block.heading.test(line)) {\n break;\n } // End list item if found start of new bullet\n\n\n if (nextBulletRegex.test(line)) {\n break;\n } // Horizontal rule found\n\n\n if (hrRegex.test(src)) {\n break;\n }\n\n if (line.search(/[^ ]/) >= indent || !line.trim()) {\n // Dedent if possible\n itemContents += '\\n' + line.slice(indent);\n } else if (!blankLine) {\n // Until blank line, item doesn't need indentation\n itemContents += '\\n' + line;\n } else {\n // Otherwise, improper indentation ends this item\n break;\n }\n\n if (!blankLine && !line.trim()) {\n // Check if current line is blank\n blankLine = true;\n }\n\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n }\n }\n\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n } // Check for task list items\n\n\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n\n list.items.push({\n type: 'list_item',\n raw: raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents\n });\n list.raw += raw;\n } // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n\n\n list.items[list.items.length - 1].raw = raw.trimRight();\n list.items[list.items.length - 1].text = itemContents.trimRight();\n list.raw = list.raw.trimRight();\n var l = list.items.length; // Item child tokens handled here at end because we needed to have the final item to trim it first\n\n for (i = 0; i < l; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n var spacers = list.items[i].tokens.filter(function (t) {\n return t.type === 'space';\n });\n var hasMultipleLineBreaks = spacers.every(function (t) {\n var chars = t.raw.split('');\n var lineBreaks = 0;\n\n for (var _iterator = _createForOfIteratorHelperLoose(chars), _step; !(_step = _iterator()).done;) {\n var _char = _step.value;\n\n if (_char === '\\n') {\n lineBreaks += 1;\n }\n\n if (lineBreaks > 1) {\n return true;\n }\n }\n\n return false;\n });\n\n if (!list.loose && spacers.length && hasMultipleLineBreaks) {\n // Having a single line break doesn't mean a list is loose. A single line break is terminating the last list item\n list.loose = true;\n list.items[i].loose = true;\n }\n }\n\n return list;\n }\n };\n\n _proto.html = function html(src) {\n var cap = this.rules.block.html.exec(src);\n\n if (cap) {\n var token = {\n type: 'html',\n raw: cap[0],\n pre: !this.options.sanitizer && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n };\n\n if (this.options.sanitize) {\n token.type = 'paragraph';\n token.text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);\n token.tokens = [];\n this.lexer.inline(token.text, token.tokens);\n }\n\n return token;\n }\n };\n\n _proto.def = function def(src) {\n var cap = this.rules.block.def.exec(src);\n\n if (cap) {\n if (cap[3]) cap[3] = cap[3].substring(1, cap[3].length - 1);\n var tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n return {\n type: 'def',\n tag: tag,\n raw: cap[0],\n href: cap[2],\n title: cap[3]\n };\n }\n };\n\n _proto.table = function table(src) {\n var cap = this.rules.block.table.exec(src);\n\n if (cap) {\n var item = {\n type: 'table',\n header: splitCells(cap[1]).map(function (c) {\n return {\n text: c\n };\n }),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n item.raw = cap[0];\n var l = item.align.length;\n var i, j, k, row;\n\n for (i = 0; i < l; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n l = item.rows.length;\n\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i], item.header.length).map(function (c) {\n return {\n text: c\n };\n });\n } // parse child tokens inside headers and cells\n // header child tokens\n\n\n l = item.header.length;\n\n for (j = 0; j < l; j++) {\n item.header[j].tokens = [];\n this.lexer.inline(item.header[j].text, item.header[j].tokens);\n } // cell child tokens\n\n\n l = item.rows.length;\n\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n\n for (k = 0; k < row.length; k++) {\n row[k].tokens = [];\n this.lexer.inline(row[k].text, row[k].tokens);\n }\n }\n\n return item;\n }\n }\n };\n\n _proto.lheading = function lheading(src) {\n var cap = this.rules.block.lheading.exec(src);\n\n if (cap) {\n var token = {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: []\n };\n this.lexer.inline(token.text, token.tokens);\n return token;\n }\n };\n\n _proto.paragraph = function paragraph(src) {\n var cap = this.rules.block.paragraph.exec(src);\n\n if (cap) {\n var token = {\n type: 'paragraph',\n raw: cap[0],\n text: cap[1].charAt(cap[1].length - 1) === '\\n' ? cap[1].slice(0, -1) : cap[1],\n tokens: []\n };\n this.lexer.inline(token.text, token.tokens);\n return token;\n }\n };\n\n _proto.text = function text(src) {\n var cap = this.rules.block.text.exec(src);\n\n if (cap) {\n var token = {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: []\n };\n this.lexer.inline(token.text, token.tokens);\n return token;\n }\n };\n\n _proto.escape = function escape$1(src) {\n var cap = this.rules.inline.escape.exec(src);\n\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n };\n\n _proto.tag = function tag(src) {\n var cap = this.rules.inline.tag.exec(src);\n\n if (cap) {\n if (!this.lexer.state.inLink && /^
    /i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n\n return {\n type: this.options.sanitize ? 'text' : 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n text: this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]) : cap[0]\n };\n }\n };\n\n _proto.link = function link(src) {\n var cap = this.rules.inline.link.exec(src);\n\n if (cap) {\n var trimmedUrl = cap[2].trim();\n\n if (!this.options.pedantic && /^$/.test(trimmedUrl)) {\n return;\n } // ending angle bracket cannot be escaped\n\n\n var rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n var lastParenIndex = findClosingBracket(cap[2], '()');\n\n if (lastParenIndex > -1) {\n var start = cap[0].indexOf('!') === 0 ? 5 : 4;\n var linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n\n var href = cap[2];\n var title = '';\n\n if (this.options.pedantic) {\n // split pedantic href and title\n var link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim();\n\n if (/^$/.test(trimmedUrl)) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n };\n\n _proto.reflink = function reflink(src, links) {\n var cap;\n\n if ((cap = this.rules.inline.reflink.exec(src)) || (cap = this.rules.inline.nolink.exec(src))) {\n var link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n\n if (!link || !link.href) {\n var text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text: text\n };\n }\n\n return outputLink(cap, link, cap[0], this.lexer);\n }\n };\n\n _proto.emStrong = function emStrong(src, maskedSrc, prevChar) {\n if (prevChar === void 0) {\n prevChar = '';\n }\n\n var match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match) return; // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n\n if (match[3] && prevChar.match(/(?:[0-9A-Za-z\\xAA\\xB2\\xB3\\xB5\\xB9\\xBA\\xBC-\\xBE\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u0660-\\u0669\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07C0-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088E\\u08A0-\\u08C9\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0966-\\u096F\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09E6-\\u09F1\\u09F4-\\u09F9\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A6F\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AE6-\\u0AEF\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B66-\\u0B6F\\u0B71-\\u0B77\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0BE6-\\u0BF2\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C5D\\u0C60\\u0C61\\u0C66-\\u0C6F\\u0C78-\\u0C7E\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDD\\u0CDE\\u0CE0\\u0CE1\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D58-\\u0D61\\u0D66-\\u0D78\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DE6-\\u0DEF\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F20-\\u0F33\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F-\\u1049\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u1090-\\u1099\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1369-\\u137C\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u1711\\u171F-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u17E0-\\u17E9\\u17F0-\\u17F9\\u1810-\\u1819\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4C\\u1B50-\\u1B59\\u1B83-\\u1BA0\\u1BAE-\\u1BE5\\u1C00-\\u1C23\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2070\\u2071\\u2074-\\u2079\\u207F-\\u2089\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2150-\\u2189\\u2460-\\u249B\\u24EA-\\u24FF\\u2776-\\u2793\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2CFD\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u3192-\\u3195\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3220-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F2-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA830-\\uA835\\uA840-\\uA873\\uA882-\\uA8B3\\uA8D0-\\uA8D9\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA900-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF-\\uA9D9\\uA9E0-\\uA9E4\\uA9E6-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABE2\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD07-\\uDD33\\uDD40-\\uDD78\\uDD8A\\uDD8B\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE1-\\uDEFB\\uDF00-\\uDF23\\uDF2D-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC58-\\uDC76\\uDC79-\\uDC9E\\uDCA7-\\uDCAF\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDCFB-\\uDD1B\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBC-\\uDDCF\\uDDD2-\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE40-\\uDE48\\uDE60-\\uDE7E\\uDE80-\\uDE9F\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDEEB-\\uDEEF\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF58-\\uDF72\\uDF78-\\uDF91\\uDFA9-\\uDFAF]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDCFA-\\uDD23\\uDD30-\\uDD39\\uDE60-\\uDE7E\\uDE80-\\uDEA9\\uDEB0\\uDEB1\\uDF00-\\uDF27\\uDF30-\\uDF45\\uDF51-\\uDF54\\uDF70-\\uDF81\\uDFB0-\\uDFCB\\uDFE0-\\uDFF6]|\\uD804[\\uDC03-\\uDC37\\uDC52-\\uDC6F\\uDC71\\uDC72\\uDC75\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD03-\\uDD26\\uDD36-\\uDD3F\\uDD44\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDD0-\\uDDDA\\uDDDC\\uDDE1-\\uDDF4\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDEF0-\\uDEF9\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC50-\\uDC59\\uDC5F-\\uDC61\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEAA\\uDEB8\\uDEC0-\\uDEC9\\uDF00-\\uDF1A\\uDF30-\\uDF3B\\uDF40-\\uDF46]|\\uD806[\\uDC00-\\uDC2B\\uDCA0-\\uDCF2\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD2F\\uDD3F\\uDD41\\uDD50-\\uDD59\\uDDA0-\\uDDA7\\uDDAA-\\uDDD0\\uDDE1\\uDDE3\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE89\\uDE9D\\uDEB0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC50-\\uDC6C\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD50-\\uDD59\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDDA0-\\uDDA9\\uDEE0-\\uDEF2\\uDFB0\\uDFC0-\\uDFD4]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|\\uD80B[\\uDF90-\\uDFF0]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDE70-\\uDEBE\\uDEC0-\\uDEC9\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF5B-\\uDF61\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE96\\uDF00-\\uDF4A\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1\\uDFE3]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD82C[\\uDC00-\\uDD22\\uDD50-\\uDD52\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD834[\\uDEE0-\\uDEF3\\uDF60-\\uDF78]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD837[\\uDF00-\\uDF1E]|\\uD838[\\uDD00-\\uDD2C\\uDD37-\\uDD3D\\uDD40-\\uDD49\\uDD4E\\uDE90-\\uDEAD\\uDEC0-\\uDEEB\\uDEF0-\\uDEF9]|\\uD839[\\uDFE0-\\uDFE6\\uDFE8-\\uDFEB\\uDFED\\uDFEE\\uDFF0-\\uDFFE]|\\uD83A[\\uDC00-\\uDCC4\\uDCC7-\\uDCCF\\uDD00-\\uDD43\\uDD4B\\uDD50-\\uDD59]|\\uD83B[\\uDC71-\\uDCAB\\uDCAD-\\uDCAF\\uDCB1-\\uDCB4\\uDD01-\\uDD2D\\uDD2F-\\uDD3D\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD83C[\\uDD00-\\uDD0C]|\\uD83E[\\uDFF0-\\uDFF9]|\\uD869[\\uDC00-\\uDEDF\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF38\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A])/)) return;\n var nextChar = match[1] || match[2] || '';\n\n if (!nextChar || nextChar && (prevChar === '' || this.rules.inline.punctuation.exec(prevChar))) {\n var lLength = match[0].length - 1;\n var rDelim,\n rLength,\n delimTotal = lLength,\n midDelimTotal = 0;\n var endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0; // Clip maskedSrc to same section of string as src (move to lexer?)\n\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = rDelim.length;\n\n if (match[3] || match[4]) {\n // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) {\n // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n\n delimTotal -= rLength;\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n // Remove extra characters. *a*** -> *a*\n\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal); // Create `em` if smallest delimiter has odd char count. *a***\n\n if (Math.min(lLength, rLength) % 2) {\n var _text = src.slice(1, lLength + match.index + rLength);\n\n return {\n type: 'em',\n raw: src.slice(0, lLength + match.index + rLength + 1),\n text: _text,\n tokens: this.lexer.inlineTokens(_text, [])\n };\n } // Create 'strong' if smallest delimiter has even char count. **a***\n\n\n var text = src.slice(2, lLength + match.index + rLength - 1);\n return {\n type: 'strong',\n raw: src.slice(0, lLength + match.index + rLength + 1),\n text: text,\n tokens: this.lexer.inlineTokens(text, [])\n };\n }\n }\n };\n\n _proto.codespan = function codespan(src) {\n var cap = this.rules.inline.code.exec(src);\n\n if (cap) {\n var text = cap[2].replace(/\\n/g, ' ');\n var hasNonSpaceChars = /[^ ]/.test(text);\n var hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text: text\n };\n }\n };\n\n _proto.br = function br(src) {\n var cap = this.rules.inline.br.exec(src);\n\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n };\n\n _proto.del = function del(src) {\n var cap = this.rules.inline.del.exec(src);\n\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2], [])\n };\n }\n };\n\n _proto.autolink = function autolink(src, mangle) {\n var cap = this.rules.inline.autolink.exec(src);\n\n if (cap) {\n var text, href;\n\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text: text,\n href: href,\n tokens: [{\n type: 'text',\n raw: text,\n text: text\n }]\n };\n }\n };\n\n _proto.url = function url(src, mangle) {\n var cap;\n\n if (cap = this.rules.inline.url.exec(src)) {\n var text, href;\n\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n var prevCapZero;\n\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n\n text = escape(cap[0]);\n\n if (cap[1] === 'www.') {\n href = 'http://' + text;\n } else {\n href = text;\n }\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text: text,\n href: href,\n tokens: [{\n type: 'text',\n raw: text,\n text: text\n }]\n };\n }\n };\n\n _proto.inlineText = function inlineText(src, smartypants) {\n var cap = this.rules.inline.text.exec(src);\n\n if (cap) {\n var text;\n\n if (this.lexer.state.inRawBlock) {\n text = this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]) : cap[0];\n } else {\n text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n\n return {\n type: 'text',\n raw: cap[0],\n text: text\n };\n }\n };\n\n return Tokenizer;\n }();\n\n /**\n * Block-Level Grammar\n */\n\n var block = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*\\n)|~{3,})([^\\n]*)\\n(?:|([\\s\\S]*?)\\n)(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?]+)>?(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^([^\\n]+)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n };\n block._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\n block._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\n block.def = edit(block.def).replace('label', block._label).replace('title', block._title).getRegex();\n block.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\n block.listItemStart = edit(/^( *)(bull) */).replace('bull', block.bullet).getRegex();\n block.list = edit(block.list).replace(/bull/g, block.bullet).replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))').replace('def', '\\\\n+(?=' + block.def.source + ')').getRegex();\n block._tag = 'address|article|aside|base|basefont|blockquote|body|caption' + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption' + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe' + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option' + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr' + '|track|ul';\n block._comment = /|$)/;\n block.html = edit(block.html, 'i').replace('comment', block._comment).replace('tag', block._tag).replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/).getRegex();\n block.paragraph = edit(block._paragraph).replace('hr', block.hr).replace('heading', ' {0,3}#{1,6} ').replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '').replace('blockquote', ' {0,3}>').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)').replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n block.blockquote = edit(block.blockquote).replace('paragraph', block.paragraph).getRegex();\n /**\n * Normal Block Grammar\n */\n\n block.normal = merge({}, block);\n /**\n * GFM Block Grammar\n */\n\n block.gfm = merge({}, block.normal, {\n table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n\n });\n block.gfm.table = edit(block.gfm.table).replace('hr', block.hr).replace('heading', ' {0,3}#{1,6} ').replace('blockquote', ' {0,3}>').replace('code', ' {4}[^\\\\n]').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)').replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n block.gfm.paragraph = edit(block._paragraph).replace('hr', block.hr).replace('heading', ' {0,3}#{1,6} ').replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', block.gfm.table) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)').replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n /**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\n block.pedantic = merge({}, block.normal, {\n html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)' + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))').replace('comment', block._comment).replace(/tag/g, '(?!(?:' + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub' + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)' + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b').getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest,\n // fences not supported\n paragraph: edit(block.normal._paragraph).replace('hr', block.hr).replace('heading', ' *#{1,6} *[^\\n]').replace('lheading', block.lheading).replace('blockquote', ' {0,3}>').replace('|fences', '').replace('|list', '').replace('|html', '').getRegex()\n });\n /**\n * Inline-Level Grammar\n */\n\n var inline = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment' + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^',\n // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:([punct_])|[^\\s*]))|^_+(?:([punct*])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // () Skip orphan inside strong () Consume to delim (1) #*** (2) a***#, a*** (3) #***a, ***a (4) ***# (5) #***# (6) a***a\n rDelimAst: /^[^_*]*?\\_\\_[^_*]*?\\*[^_*]*?(?=\\_\\_)|[^*]+(?=[^*])|[punct_](\\*+)(?=[\\s]|$)|[^punct*_\\s](\\*+)(?=[punct_\\s]|$)|[punct_\\s](\\*+)(?=[^punct*_\\s])|[\\s](\\*+)(?=[punct_])|[punct_](\\*+)(?=[punct_])|[^punct*_\\s](\\*+)(?=[^punct*_\\s])/,\n rDelimUnd: /^[^_*]*?\\*\\*[^_*]*?\\_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|[punct*](\\_+)(?=[\\s]|$)|[^punct*_\\s](\\_+)(?=[punct*\\s]|$)|[punct*\\s](\\_+)(?=[^punct*_\\s])|[\\s](\\_+)(?=[punct*])|[punct*](\\_+)(?=[punct*])/ // ^- Not allowed for _\n\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\?@\\\\[\\\\]`^{|}~';\n inline.punctuation = edit(inline.punctuation).replace(/punctuation/g, inline._punctuation).getRegex(); // sequences em should skip over [title](link), `code`, \n\n inline.blockSkip = /\\[[^\\]]*?\\]\\([^\\)]*?\\)|`[^`]*?`|<[^>]*?>/g;\n inline.escapedEmSt = /\\\\\\*|\\\\_/g;\n inline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\n inline.emStrong.lDelim = edit(inline.emStrong.lDelim).replace(/punct/g, inline._punctuation).getRegex();\n inline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst, 'g').replace(/punct/g, inline._punctuation).getRegex();\n inline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd, 'g').replace(/punct/g, inline._punctuation).getRegex();\n inline._escapes = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/g;\n inline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\n inline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\n inline.autolink = edit(inline.autolink).replace('scheme', inline._scheme).replace('email', inline._email).getRegex();\n inline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n inline.tag = edit(inline.tag).replace('comment', inline._comment).replace('attribute', inline._attribute).getRegex();\n inline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\n inline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\n inline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n inline.link = edit(inline.link).replace('label', inline._label).replace('href', inline._href).replace('title', inline._title).getRegex();\n inline.reflink = edit(inline.reflink).replace('label', inline._label).replace('ref', block._label).getRegex();\n inline.nolink = edit(inline.nolink).replace('ref', block._label).getRegex();\n inline.reflinkSearch = edit(inline.reflinkSearch, 'g').replace('reflink', inline.reflink).replace('nolink', inline.nolink).getRegex();\n /**\n * Normal Inline Grammar\n */\n\n inline.normal = merge({}, inline);\n /**\n * Pedantic Inline Grammar\n */\n\n inline.pedantic = merge({}, inline.normal, {\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/).replace('label', inline._label).getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/).replace('label', inline._label).getRegex()\n });\n /**\n * GFM Inline Grammar\n */\n\n inline.gfm = merge({}, inline.normal, {\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ 0.5) {\n ch = 'x' + ch.toString(16);\n }\n\n out += '&#' + ch + ';';\n }\n\n return out;\n }\n /**\n * Block Lexer\n */\n\n\n var Lexer = /*#__PURE__*/function () {\n function Lexer(options) {\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || exports.defaults;\n this.options.tokenizer = this.options.tokenizer || new Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n var rules = {\n block: block.normal,\n inline: inline.normal\n };\n\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n\n this.tokenizer.rules = rules;\n }\n /**\n * Expose Rules\n */\n\n\n /**\n * Static Lex Method\n */\n Lexer.lex = function lex(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n }\n /**\n * Static Lex Inline Method\n */\n ;\n\n Lexer.lexInline = function lexInline(src, options) {\n var lexer = new Lexer(options);\n return lexer.inlineTokens(src);\n }\n /**\n * Preprocessing\n */\n ;\n\n var _proto = Lexer.prototype;\n\n _proto.lex = function lex(src) {\n src = src.replace(/\\r\\n|\\r/g, '\\n');\n this.blockTokens(src, this.tokens);\n var next;\n\n while (next = this.inlineQueue.shift()) {\n this.inlineTokens(next.src, next.tokens);\n }\n\n return this.tokens;\n }\n /**\n * Lexing\n */\n ;\n\n _proto.blockTokens = function blockTokens(src, tokens) {\n var _this = this;\n\n if (tokens === void 0) {\n tokens = [];\n }\n\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, ' ').replace(/^ +$/gm, '');\n } else {\n src = src.replace(/^( *)(\\t+)/gm, function (_, leading, tabs) {\n return leading + ' '.repeat(tabs.length);\n });\n }\n\n var token, lastToken, cutSrc, lastParagraphClipped;\n\n while (src) {\n if (this.options.extensions && this.options.extensions.block && this.options.extensions.block.some(function (extTokenizer) {\n if (token = extTokenizer.call({\n lexer: _this\n }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n\n return false;\n })) {\n continue;\n } // newline\n\n\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n } else {\n tokens.push(token);\n }\n\n continue;\n } // code\n\n\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1]; // An indented code block cannot interrupt a paragraph.\n\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n } // fences\n\n\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // heading\n\n\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // hr\n\n\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // blockquote\n\n\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // list\n\n\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // html\n\n\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // def\n\n\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n\n continue;\n } // table (gfm)\n\n\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // lheading\n\n\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n\n\n cutSrc = src;\n\n if (this.options.extensions && this.options.extensions.startBlock) {\n (function () {\n var startIndex = Infinity;\n var tempSrc = src.slice(1);\n var tempStart = void 0;\n\n _this.options.extensions.startBlock.forEach(function (getStartIndex) {\n tempStart = getStartIndex.call({\n lexer: this\n }, tempSrc);\n\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n })();\n }\n\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n\n lastParagraphClipped = cutSrc.length !== src.length;\n src = src.substring(token.raw.length);\n continue;\n } // text\n\n\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n }\n\n if (src) {\n var errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n this.state.top = true;\n return tokens;\n };\n\n _proto.inline = function inline(src, tokens) {\n this.inlineQueue.push({\n src: src,\n tokens: tokens\n });\n }\n /**\n * Lexing/Compiling\n */\n ;\n\n _proto.inlineTokens = function inlineTokens(src, tokens) {\n var _this2 = this;\n\n if (tokens === void 0) {\n tokens = [];\n }\n\n var token, lastToken, cutSrc; // String with links masked to avoid interference with em and strong\n\n var maskedSrc = src;\n var match;\n var keepPrevChar, prevChar; // Mask out reflinks\n\n if (this.tokens.links) {\n var links = Object.keys(this.tokens.links);\n\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n } // Mask out other blocks\n\n\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n } // Mask out escaped em & strong delimiters\n\n\n while ((match = this.tokenizer.rules.inline.escapedEmSt.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);\n }\n\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n\n keepPrevChar = false; // extensions\n\n if (this.options.extensions && this.options.extensions.inline && this.options.extensions.inline.some(function (extTokenizer) {\n if (token = extTokenizer.call({\n lexer: _this2\n }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n\n return false;\n })) {\n continue;\n } // escape\n\n\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // tag\n\n\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n } // link\n\n\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // reflink, nolink\n\n\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n } // em & strong\n\n\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // code\n\n\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // br\n\n\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // del (gfm)\n\n\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // autolink\n\n\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // url (gfm)\n\n\n if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n\n\n cutSrc = src;\n\n if (this.options.extensions && this.options.extensions.startInline) {\n (function () {\n var startIndex = Infinity;\n var tempSrc = src.slice(1);\n var tempStart = void 0;\n\n _this2.options.extensions.startInline.forEach(function (getStartIndex) {\n tempStart = getStartIndex.call({\n lexer: this\n }, tempSrc);\n\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n })();\n }\n\n if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n src = src.substring(token.raw.length);\n\n if (token.raw.slice(-1) !== '_') {\n // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n }\n\n if (src) {\n var errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n };\n\n _createClass(Lexer, null, [{\n key: \"rules\",\n get: function get() {\n return {\n block: block,\n inline: inline\n };\n }\n }]);\n\n return Lexer;\n }();\n\n /**\n * Renderer\n */\n\n var Renderer = /*#__PURE__*/function () {\n function Renderer(options) {\n this.options = options || exports.defaults;\n }\n\n var _proto = Renderer.prototype;\n\n _proto.code = function code(_code, infostring, escaped) {\n var lang = (infostring || '').match(/\\S*/)[0];\n\n if (this.options.highlight) {\n var out = this.options.highlight(_code, lang);\n\n if (out != null && out !== _code) {\n escaped = true;\n _code = out;\n }\n }\n\n _code = _code.replace(/\\n$/, '') + '\\n';\n\n if (!lang) {\n return '
    ' + (escaped ? _code : escape(_code, true)) + '
    \\n';\n }\n\n return '
    ' + (escaped ? _code : escape(_code, true)) + '
    \\n';\n }\n /**\n * @param {string} quote\n */\n ;\n\n _proto.blockquote = function blockquote(quote) {\n return \"
    \\n\" + quote + \"
    \\n\";\n };\n\n _proto.html = function html(_html) {\n return _html;\n }\n /**\n * @param {string} text\n * @param {string} level\n * @param {string} raw\n * @param {any} slugger\n */\n ;\n\n _proto.heading = function heading(text, level, raw, slugger) {\n if (this.options.headerIds) {\n var id = this.options.headerPrefix + slugger.slug(raw);\n return \"\" + text + \"\\n\";\n } // ignore IDs\n\n\n return \"\" + text + \"\\n\";\n };\n\n _proto.hr = function hr() {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n };\n\n _proto.list = function list(body, ordered, start) {\n var type = ordered ? 'ol' : 'ul',\n startatt = ordered && start !== 1 ? ' start=\"' + start + '\"' : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n }\n /**\n * @param {string} text\n */\n ;\n\n _proto.listitem = function listitem(text) {\n return \"
  • \" + text + \"
  • \\n\";\n };\n\n _proto.checkbox = function checkbox(checked) {\n return ' ';\n }\n /**\n * @param {string} text\n */\n ;\n\n _proto.paragraph = function paragraph(text) {\n return \"

    \" + text + \"

    \\n\";\n }\n /**\n * @param {string} header\n * @param {string} body\n */\n ;\n\n _proto.table = function table(header, body) {\n if (body) body = \"\" + body + \"\";\n return '\\n' + '\\n' + header + '\\n' + body + '
    \\n';\n }\n /**\n * @param {string} content\n */\n ;\n\n _proto.tablerow = function tablerow(content) {\n return \"\\n\" + content + \"\\n\";\n };\n\n _proto.tablecell = function tablecell(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align ? \"<\" + type + \" align=\\\"\" + flags.align + \"\\\">\" : \"<\" + type + \">\";\n return tag + content + (\"\\n\");\n }\n /**\n * span level renderer\n * @param {string} text\n */\n ;\n\n _proto.strong = function strong(text) {\n return \"\" + text + \"\";\n }\n /**\n * @param {string} text\n */\n ;\n\n _proto.em = function em(text) {\n return \"\" + text + \"\";\n }\n /**\n * @param {string} text\n */\n ;\n\n _proto.codespan = function codespan(text) {\n return \"\" + text + \"\";\n };\n\n _proto.br = function br() {\n return this.options.xhtml ? '
    ' : '
    ';\n }\n /**\n * @param {string} text\n */\n ;\n\n _proto.del = function del(text) {\n return \"\" + text + \"\";\n }\n /**\n * @param {string} href\n * @param {string} title\n * @param {string} text\n */\n ;\n\n _proto.link = function link(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n\n if (href === null) {\n return text;\n }\n\n var out = '
    ';\n return out;\n }\n /**\n * @param {string} href\n * @param {string} title\n * @param {string} text\n */\n ;\n\n _proto.image = function image(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n\n if (href === null) {\n return text;\n }\n\n var out = \"\\\"\"' : '>';\n return out;\n };\n\n _proto.text = function text(_text) {\n return _text;\n };\n\n return Renderer;\n }();\n\n /**\n * TextRenderer\n * returns only the textual part of the token\n */\n var TextRenderer = /*#__PURE__*/function () {\n function TextRenderer() {}\n\n var _proto = TextRenderer.prototype;\n\n // no need for block level renderers\n _proto.strong = function strong(text) {\n return text;\n };\n\n _proto.em = function em(text) {\n return text;\n };\n\n _proto.codespan = function codespan(text) {\n return text;\n };\n\n _proto.del = function del(text) {\n return text;\n };\n\n _proto.html = function html(text) {\n return text;\n };\n\n _proto.text = function text(_text) {\n return _text;\n };\n\n _proto.link = function link(href, title, text) {\n return '' + text;\n };\n\n _proto.image = function image(href, title, text) {\n return '' + text;\n };\n\n _proto.br = function br() {\n return '';\n };\n\n return TextRenderer;\n }();\n\n /**\n * Slugger generates header id\n */\n var Slugger = /*#__PURE__*/function () {\n function Slugger() {\n this.seen = {};\n }\n /**\n * @param {string} value\n */\n\n\n var _proto = Slugger.prototype;\n\n _proto.serialize = function serialize(value) {\n return value.toLowerCase().trim() // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '') // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '').replace(/\\s/g, '-');\n }\n /**\n * Finds the next safe (unique) slug to use\n * @param {string} originalSlug\n * @param {boolean} isDryRun\n */\n ;\n\n _proto.getNextSafeSlug = function getNextSafeSlug(originalSlug, isDryRun) {\n var slug = originalSlug;\n var occurenceAccumulator = 0;\n\n if (this.seen.hasOwnProperty(slug)) {\n occurenceAccumulator = this.seen[originalSlug];\n\n do {\n occurenceAccumulator++;\n slug = originalSlug + '-' + occurenceAccumulator;\n } while (this.seen.hasOwnProperty(slug));\n }\n\n if (!isDryRun) {\n this.seen[originalSlug] = occurenceAccumulator;\n this.seen[slug] = 0;\n }\n\n return slug;\n }\n /**\n * Convert string to unique id\n * @param {object} [options]\n * @param {boolean} [options.dryrun] Generates the next unique slug without\n * updating the internal accumulator.\n */\n ;\n\n _proto.slug = function slug(value, options) {\n if (options === void 0) {\n options = {};\n }\n\n var slug = this.serialize(value);\n return this.getNextSafeSlug(slug, options.dryrun);\n };\n\n return Slugger;\n }();\n\n /**\n * Parsing & Compiling\n */\n\n var Parser = /*#__PURE__*/function () {\n function Parser(options) {\n this.options = options || exports.defaults;\n this.options.renderer = this.options.renderer || new Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new TextRenderer();\n this.slugger = new Slugger();\n }\n /**\n * Static Parse Method\n */\n\n\n Parser.parse = function parse(tokens, options) {\n var parser = new Parser(options);\n return parser.parse(tokens);\n }\n /**\n * Static Parse Inline Method\n */\n ;\n\n Parser.parseInline = function parseInline(tokens, options) {\n var parser = new Parser(options);\n return parser.parseInline(tokens);\n }\n /**\n * Parse Loop\n */\n ;\n\n var _proto = Parser.prototype;\n\n _proto.parse = function parse(tokens, top) {\n if (top === void 0) {\n top = true;\n }\n\n var out = '',\n i,\n j,\n k,\n l2,\n l3,\n row,\n cell,\n header,\n body,\n token,\n ordered,\n start,\n loose,\n itemBody,\n item,\n checked,\n task,\n checkbox,\n ret;\n var l = tokens.length;\n\n for (i = 0; i < l; i++) {\n token = tokens[i]; // Run any renderer extensions\n\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({\n parser: this\n }, token);\n\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'space':\n {\n continue;\n }\n\n case 'hr':\n {\n out += this.renderer.hr();\n continue;\n }\n\n case 'heading':\n {\n out += this.renderer.heading(this.parseInline(token.tokens), token.depth, unescape(this.parseInline(token.tokens, this.textRenderer)), this.slugger);\n continue;\n }\n\n case 'code':\n {\n out += this.renderer.code(token.text, token.lang, token.escaped);\n continue;\n }\n\n case 'table':\n {\n header = ''; // header\n\n cell = '';\n l2 = token.header.length;\n\n for (j = 0; j < l2; j++) {\n cell += this.renderer.tablecell(this.parseInline(token.header[j].tokens), {\n header: true,\n align: token.align[j]\n });\n }\n\n header += this.renderer.tablerow(cell);\n body = '';\n l2 = token.rows.length;\n\n for (j = 0; j < l2; j++) {\n row = token.rows[j];\n cell = '';\n l3 = row.length;\n\n for (k = 0; k < l3; k++) {\n cell += this.renderer.tablecell(this.parseInline(row[k].tokens), {\n header: false,\n align: token.align[k]\n });\n }\n\n body += this.renderer.tablerow(cell);\n }\n\n out += this.renderer.table(header, body);\n continue;\n }\n\n case 'blockquote':\n {\n body = this.parse(token.tokens);\n out += this.renderer.blockquote(body);\n continue;\n }\n\n case 'list':\n {\n ordered = token.ordered;\n start = token.start;\n loose = token.loose;\n l2 = token.items.length;\n body = '';\n\n for (j = 0; j < l2; j++) {\n item = token.items[j];\n checked = item.checked;\n task = item.task;\n itemBody = '';\n\n if (item.task) {\n checkbox = this.renderer.checkbox(checked);\n\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n } else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n });\n }\n } else {\n itemBody += checkbox;\n }\n }\n\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, checked);\n }\n\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n\n case 'html':\n {\n // TODO parse inline content if parameter markdown=1\n out += this.renderer.html(token.text);\n continue;\n }\n\n case 'paragraph':\n {\n out += this.renderer.paragraph(this.parseInline(token.tokens));\n continue;\n }\n\n case 'text':\n {\n body = token.tokens ? this.parseInline(token.tokens) : token.text;\n\n while (i + 1 < l && tokens[i + 1].type === 'text') {\n token = tokens[++i];\n body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n }\n\n out += top ? this.renderer.paragraph(body) : body;\n continue;\n }\n\n default:\n {\n var errMsg = 'Token with \"' + token.type + '\" type was not found.';\n\n if (this.options.silent) {\n console.error(errMsg);\n return;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n }\n /**\n * Parse Inline Tokens\n */\n ;\n\n _proto.parseInline = function parseInline(tokens, renderer) {\n renderer = renderer || this.renderer;\n var out = '',\n i,\n token,\n ret;\n var l = tokens.length;\n\n for (i = 0; i < l; i++) {\n token = tokens[i]; // Run any renderer extensions\n\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({\n parser: this\n }, token);\n\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'escape':\n {\n out += renderer.text(token.text);\n break;\n }\n\n case 'html':\n {\n out += renderer.html(token.text);\n break;\n }\n\n case 'link':\n {\n out += renderer.link(token.href, token.title, this.parseInline(token.tokens, renderer));\n break;\n }\n\n case 'image':\n {\n out += renderer.image(token.href, token.title, token.text);\n break;\n }\n\n case 'strong':\n {\n out += renderer.strong(this.parseInline(token.tokens, renderer));\n break;\n }\n\n case 'em':\n {\n out += renderer.em(this.parseInline(token.tokens, renderer));\n break;\n }\n\n case 'codespan':\n {\n out += renderer.codespan(token.text);\n break;\n }\n\n case 'br':\n {\n out += renderer.br();\n break;\n }\n\n case 'del':\n {\n out += renderer.del(this.parseInline(token.tokens, renderer));\n break;\n }\n\n case 'text':\n {\n out += renderer.text(token.text);\n break;\n }\n\n default:\n {\n var errMsg = 'Token with \"' + token.type + '\" type was not found.';\n\n if (this.options.silent) {\n console.error(errMsg);\n return;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n };\n\n return Parser;\n }();\n\n /**\n * Marked\n */\n\n function marked(src, opt, callback) {\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n throw new Error('marked(): input parameter is undefined or null');\n }\n\n if (typeof src !== 'string') {\n throw new Error('marked(): input parameter is of type ' + Object.prototype.toString.call(src) + ', string expected');\n }\n\n if (typeof opt === 'function') {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n checkSanitizeDeprecation(opt);\n\n if (callback) {\n var highlight = opt.highlight;\n var tokens;\n\n try {\n tokens = Lexer.lex(src, opt);\n } catch (e) {\n return callback(e);\n }\n\n var done = function done(err) {\n var out;\n\n if (!err) {\n try {\n if (opt.walkTokens) {\n marked.walkTokens(tokens, opt.walkTokens);\n }\n\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n }\n\n opt.highlight = highlight;\n return err ? callback(err) : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n if (!tokens.length) return done();\n var pending = 0;\n marked.walkTokens(tokens, function (token) {\n if (token.type === 'code') {\n pending++;\n setTimeout(function () {\n highlight(token.text, token.lang, function (err, code) {\n if (err) {\n return done(err);\n }\n\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n\n pending--;\n\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n\n if (pending === 0) {\n done();\n }\n\n return;\n }\n\n try {\n var _tokens = Lexer.lex(src, opt);\n\n if (opt.walkTokens) {\n marked.walkTokens(_tokens, opt.walkTokens);\n }\n\n return Parser.parse(_tokens, opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (opt.silent) {\n return '

    An error occurred:

    ' + escape(e.message + '', true) + '
    ';\n }\n\n throw e;\n }\n }\n /**\n * Options\n */\n\n marked.options = marked.setOptions = function (opt) {\n merge(marked.defaults, opt);\n changeDefaults(marked.defaults);\n return marked;\n };\n\n marked.getDefaults = getDefaults;\n marked.defaults = exports.defaults;\n /**\n * Use Extension\n */\n\n marked.use = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var opts = merge.apply(void 0, [{}].concat(args));\n var extensions = marked.defaults.extensions || {\n renderers: {},\n childTokens: {}\n };\n var hasExtensions;\n args.forEach(function (pack) {\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n hasExtensions = true;\n pack.extensions.forEach(function (ext) {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n\n if (ext.renderer) {\n // Renderer extensions\n var prevRenderer = extensions.renderers ? extensions.renderers[ext.name] : null;\n\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var ret = ext.renderer.apply(this, args);\n\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n\n if (ext.tokenizer) {\n // Tokenizer Extensions\n if (!ext.level || ext.level !== 'block' && ext.level !== 'inline') {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n\n if (extensions[ext.level]) {\n extensions[ext.level].unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n\n if (ext.start) {\n // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n } else {\n extensions.startBlock = [ext.start];\n }\n } else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n } else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n\n if (ext.childTokens) {\n // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n } // ==-- Parse \"overwrite\" extensions --== //\n\n\n if (pack.renderer) {\n (function () {\n var renderer = marked.defaults.renderer || new Renderer();\n\n var _loop = function _loop(prop) {\n var prevRenderer = renderer[prop]; // Replace renderer with func to run extension, but fall back if false\n\n renderer[prop] = function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n var ret = pack.renderer[prop].apply(renderer, args);\n\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n\n return ret;\n };\n };\n\n for (var prop in pack.renderer) {\n _loop(prop);\n }\n\n opts.renderer = renderer;\n })();\n }\n\n if (pack.tokenizer) {\n (function () {\n var tokenizer = marked.defaults.tokenizer || new Tokenizer();\n\n var _loop2 = function _loop2(prop) {\n var prevTokenizer = tokenizer[prop]; // Replace tokenizer with func to run extension, but fall back if false\n\n tokenizer[prop] = function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n var ret = pack.tokenizer[prop].apply(tokenizer, args);\n\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n\n return ret;\n };\n };\n\n for (var prop in pack.tokenizer) {\n _loop2(prop);\n }\n\n opts.tokenizer = tokenizer;\n })();\n } // ==-- Parse WalkTokens extensions --== //\n\n\n if (pack.walkTokens) {\n var _walkTokens = marked.defaults.walkTokens;\n\n opts.walkTokens = function (token) {\n pack.walkTokens.call(this, token);\n\n if (_walkTokens) {\n _walkTokens.call(this, token);\n }\n };\n }\n\n if (hasExtensions) {\n opts.extensions = extensions;\n }\n\n marked.setOptions(opts);\n });\n };\n /**\n * Run callback for every token\n */\n\n\n marked.walkTokens = function (tokens, callback) {\n var _loop3 = function _loop3() {\n var token = _step.value;\n callback.call(marked, token);\n\n switch (token.type) {\n case 'table':\n {\n for (var _iterator2 = _createForOfIteratorHelperLoose(token.header), _step2; !(_step2 = _iterator2()).done;) {\n var cell = _step2.value;\n marked.walkTokens(cell.tokens, callback);\n }\n\n for (var _iterator3 = _createForOfIteratorHelperLoose(token.rows), _step3; !(_step3 = _iterator3()).done;) {\n var row = _step3.value;\n\n for (var _iterator4 = _createForOfIteratorHelperLoose(row), _step4; !(_step4 = _iterator4()).done;) {\n var _cell = _step4.value;\n marked.walkTokens(_cell.tokens, callback);\n }\n }\n\n break;\n }\n\n case 'list':\n {\n marked.walkTokens(token.items, callback);\n break;\n }\n\n default:\n {\n if (marked.defaults.extensions && marked.defaults.extensions.childTokens && marked.defaults.extensions.childTokens[token.type]) {\n // Walk any extensions\n marked.defaults.extensions.childTokens[token.type].forEach(function (childTokens) {\n marked.walkTokens(token[childTokens], callback);\n });\n } else if (token.tokens) {\n marked.walkTokens(token.tokens, callback);\n }\n }\n }\n };\n\n for (var _iterator = _createForOfIteratorHelperLoose(tokens), _step; !(_step = _iterator()).done;) {\n _loop3();\n }\n };\n /**\n * Parse Inline\n * @param {string} src\n */\n\n\n marked.parseInline = function (src, opt) {\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n throw new Error('marked.parseInline(): input parameter is undefined or null');\n }\n\n if (typeof src !== 'string') {\n throw new Error('marked.parseInline(): input parameter is of type ' + Object.prototype.toString.call(src) + ', string expected');\n }\n\n opt = merge({}, marked.defaults, opt || {});\n checkSanitizeDeprecation(opt);\n\n try {\n var tokens = Lexer.lexInline(src, opt);\n\n if (opt.walkTokens) {\n marked.walkTokens(tokens, opt.walkTokens);\n }\n\n return Parser.parseInline(tokens, opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (opt.silent) {\n return '

    An error occurred:

    ' + escape(e.message + '', true) + '
    ';\n }\n\n throw e;\n }\n };\n /**\n * Expose\n */\n\n\n marked.Parser = Parser;\n marked.parser = Parser.parse;\n marked.Renderer = Renderer;\n marked.TextRenderer = TextRenderer;\n marked.Lexer = Lexer;\n marked.lexer = Lexer.lex;\n marked.Tokenizer = Tokenizer;\n marked.Slugger = Slugger;\n marked.parse = marked;\n var options = marked.options;\n var setOptions = marked.setOptions;\n var use = marked.use;\n var walkTokens = marked.walkTokens;\n var parseInline = marked.parseInline;\n var parse = marked;\n var parser = Parser.parse;\n var lexer = Lexer.lex;\n\n exports.Lexer = Lexer;\n exports.Parser = Parser;\n exports.Renderer = Renderer;\n exports.Slugger = Slugger;\n exports.TextRenderer = TextRenderer;\n exports.Tokenizer = Tokenizer;\n exports.getDefaults = getDefaults;\n exports.lexer = lexer;\n exports.marked = marked;\n exports.options = options;\n exports.parse = parse;\n exports.parseInline = parseInline;\n exports.parser = parser;\n exports.setOptions = setOptions;\n exports.use = use;\n exports.walkTokens = walkTokens;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\n"],"sourceRoot":""} \ No newline at end of file diff --git a/extensions/kubewarden/1.6.0/plugin/package.json b/extensions/kubewarden/1.6.0/plugin/package.json new file mode 100644 index 0000000..916c2b3 --- /dev/null +++ b/extensions/kubewarden/1.6.0/plugin/package.json @@ -0,0 +1,20 @@ +{ + "name": "kubewarden", + "description": "Kubewarden extension for Rancher Manager", + "icon": "https://raw.githubusercontent.com/rancher/ui-plugin-charts/main/icons/kubewarden/1.6.0-icon-kubewarden.svg", + "version": "1.6.0", + "private": false, + "rancher": true, + "engines": { + "node": ">=16" + }, + "devDependencies": { + "@vue/cli-plugin-babel": "5.0.8", + "@vue/cli-service": "5.0.8", + "@vue/cli-plugin-typescript": "5.0.8" + }, + "files": [ + "**/*" + ], + "main": "kubewarden-1.6.0.umd.min.js" +} \ No newline at end of file diff --git a/icons/kubewarden/1.6.0-icon-kubewarden.svg b/icons/kubewarden/1.6.0-icon-kubewarden.svg new file mode 100644 index 0000000..99494a4 --- /dev/null +++ b/icons/kubewarden/1.6.0-icon-kubewarden.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/index.yaml b/index.yaml index 81d8664..dd3e312 100644 --- a/index.yaml +++ b/index.yaml @@ -44,6 +44,26 @@ entries: - assets/elemental/elemental-1.2.0.tgz version: 1.2.0 kubewarden: + - annotations: + catalog.cattle.io/certified: rancher + catalog.cattle.io/kube-version: '>= v1.16.0-0 < v1.31.0-0' + catalog.cattle.io/namespace: cattle-ui-plugin-system + catalog.cattle.io/os: linux + catalog.cattle.io/permits-os: linux, windows + catalog.cattle.io/rancher-version: '>= 2.7.5-0' + catalog.cattle.io/scope: management + catalog.cattle.io/ui-component: plugins + apiVersion: v2 + appVersion: 1.6.0 + created: "2024-05-31T08:27:41.80822202-04:00" + description: Kubewarden extension for Rancher Manager + digest: aef139f7da301ab3ab1d85f0255e58ff8c451fdd1f09ff4b21d55c86a7de9bdc + icon: https://raw.githubusercontent.com/rancher/ui-plugin-charts/main/icons/kubewarden/1.6.0-icon-kubewarden.svg + name: kubewarden + type: application + urls: + - assets/kubewarden/kubewarden-1.6.0.tgz + version: 1.6.0 - annotations: catalog.cattle.io/certified: rancher catalog.cattle.io/kube-version: '>= v1.16.0-0 < v1.29.0-0' @@ -506,4 +526,4 @@ entries: urls: - assets/neuvector-ui-ext/neuvector-ui-ext-1.0.0.tgz version: 1.0.0 -generated: "2024-05-16T11:35:45.663328981-04:00" +generated: "2024-05-31T08:27:41.807726389-04:00" diff --git a/manifest.json b/manifest.json index c04f3cc..a84c4fe 100644 --- a/manifest.json +++ b/manifest.json @@ -40,7 +40,8 @@ "1.4.1", "1.4.2", "1.4.3", - "1.5.0" + "1.5.0", + "1.6.0" ] } }