Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(deps): update helm release cost-analyzer to v2.6.2 #1078

Open
wants to merge 3 commits into
base: main
Choose a base branch
from

Conversation

renovate[bot]
Copy link
Contributor

@renovate renovate bot commented Feb 21, 2025

This PR contains the following updates:

Package Update Change
cost-analyzer minor 2.5.3 -> 2.6.2

Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

Copy link
Contributor

Changes Default Values
diff -U 4 -r out-default-values/target/kubecost_cost-analyzer_default-values.out out-default-values/pr/kubecost_cost-analyzer_default-values.out
--- out-default-values/target/kubecost_cost-analyzer_default-values.out	2025-02-21 23:22:13.520917698 +0000
+++ out-default-values/pr/kubecost_cost-analyzer_default-values.out	2025-02-21 23:21:49.375698912 +0000
@@ -252,18 +252,19 @@
         enabled: false  # Create an OpenShift Route.
         annotations: {}  # Add annotations to the Route.
         # host: kubecost.apps.okd4.example.com  # Add a custom host for your Route.
 
-        # OPTIONAL. The following configs only to be enabled when using a Prometheus instance already installed in the cluster.
-        createMonitoringClusterRoleBinding: false  # Create a ClusterRoleBinding to grant the Kubecost serviceaccount access to query Prometheus.
-        createMonitoringResourceReaderRoleBinding: false  # Create a Role and Role Binding to allow Prometheus to list and watch Kubecost resources.
-        monitoringServiceAccountName: prometheus-k8s  # Name of the Prometheus serviceaccount to bind to the Resource Reader Role Binding.
-        monitoringServiceAccountNamespace: openshift-monitoring  # Namespace of the Prometheus serviceaccount to bind to the Resource Reader Role Binding.
+      # OPTIONAL. The following configs only to be enabled when using a Prometheus instance already installed in the cluster.
+      createMonitoringClusterRoleBinding: false  # Create a ClusterRoleBinding to grant the Kubecost serviceaccount access to query Prometheus.
+      createMonitoringResourceReaderRoleBinding: false  # Create a Role and Role Binding to allow Prometheus to list and watch Kubecost resources.
+      monitoringServiceAccountName: prometheus-k8s  # Name of the Prometheus serviceaccount to bind to the Resource Reader Role Binding.
+      monitoringServiceAccountNamespace: openshift-monitoring  # Namespace of the Prometheus serviceaccount to bind to the Resource Reader Role Binding.
 
       # Create Security Context Constraint resources for the DaemonSets requiring additional privileges.
       scc:
         nodeExporter: false  # Creates an SCC for Prometheus Node Exporter. This requires Node Exporter be enabled.
         networkCosts: false  # Creates an SCC for Kubecost network-costs. This requires network-costs be enabled.
+        clusterController: false  # Creates an SCC for Kubecost Cluster Controller. This requires clusterController be enabled.
       # When OpenShift is enabled, the following securityContext will be applied to all resources unless they define their own.
       securityContext:
         runAsNonRoot: true
         seccompProfile:
@@ -421,8 +422,47 @@
     #     claimName: "roles"
     #     claimValues:
     #       - "editor"
 
+## Kubecost Teams (enterprise key required)
+## Ref: https://docs.kubecost.com/using-kubecost/navigating-the-kubecost-ui/teams
+teams:
+  teamsConfigMapName: ""  # Name of the ConfigMap containing the teams configuration, if manually created, which overrides any other configured teams
+  teamsConfig: []  # List of teams configurations, if teamsConfigMapName is not set, which will override UI-configured teams
+    # - id: ''
+    #   name: helm-team
+    #   roles:
+    #   - id: ''
+    #     name: helm-role
+    #     description: helm configrured role
+    #     pages:
+    #       showOverview: true
+    #       showAllocation: true
+    #       showAsset: true
+    #       showCloudCost: true
+    #       showClusters: true
+    #       showExternalCosts: true
+    #       showNetwork: true
+    #       showCollections: true
+    #       showReports: true
+    #       showInsights: true
+    #       showActions: true
+    #       showAlerts: true
+    #       showBudgets: true
+    #       showAnomalies: true
+    #       showEfficiency: true
+    #       showSettings: true
+    #     permissions: admin
+    #     routes: []
+    #     allocationFilters:
+    #     - key: cluster
+    #       operator: ":"
+    #       value: cluster-one
+    #     assetFilters: []
+    #     cloudCostFilters: []
+    #   claims:
+    #     NameID: [email protected]
+
 ## Adds the HTTP_PROXY, HTTPS_PROXY, and NO_PROXY environment variables to all
 ## containers. Typically used in environments that have firewall rules which
 ## prevent kubecost from accessing cloud provider resources.
 ## Ref: https://www.oreilly.com/library/view/security-with-go/9781788627917/5ea6a02b-3d96-44b1-ad3c-6ab60fcbbe4f.xhtml
@@ -484,10 +524,8 @@
   # hideOrphanedResources: false  # OrphanedResources works on the primary-cluster's cloud-provider only.
 
   # set to true to set all upstreams to use <service>.<namespace>.svc.cluster.local instead of just <service>.<namespace>
   useDefaultFqdn: false
-#  api:
-#    fqdn: kubecost-api.kubecost.svc.cluster.local:9001
 #  model:
 #    fqdn: kubecost-model.kubecost.svc.cluster.local:9003
 #  forecasting:
 #    fqdn: kubecost-forcasting.kubecost.svc.cluster.local:5000
@@ -685,9 +723,8 @@
   #   # each cluster monitored.
   #   - name: ASSET_INCLUDE_LOCAL_DISK_COST
   #     value: "true"
 
-  utcOffset: "+00:00"
   extraPorts: []
 
 ## etlUtils is a utility typically used by Enterprise customers transitioning
 ## from v1 to v2 of Kubecost. It translates the data from the "/etl" dir of the
@@ -853,9 +890,9 @@
       type: Recreate
       rollingUpdate: null
     image:
       repository: quay.io/prometheus/prometheus
-      tag: v2.55.1
+      tag: v3.1.0
       pullPolicy: IfNotPresent
     priorityClassName: ""
     prefixURL: ""
     baseURL: ""
@@ -1000,9 +1037,9 @@
       rollingUpdate: null
     name: alertmanager
     image:
       repository: quay.io/prometheus/alertmanager
-      tag: v0.27.0
+      tag: v0.28.0
       pullPolicy: IfNotPresent
     priorityClassName: ""
     extraArgs: {}
     prefixURL: ""
@@ -1088,9 +1125,9 @@
       enabled: false
       name: configmap-reload
       image:
         repository: quay.io/prometheus-operator/prometheus-config-reloader
-        tag: v0.78.2
+        tag: v0.79.2
         pullPolicy: IfNotPresent
       extraArgs: {}
       extraVolumeDirs: []
       extraConfigmapMounts: []
@@ -1101,9 +1138,9 @@
       enabled: false
       name: configmap-reload
       image:
         repository: quay.io/prometheus-operator/prometheus-config-reloader
-        tag: v0.78.2
+        tag: v0.79.2
         pullPolicy: IfNotPresent
       extraArgs: {}
       extraVolumeDirs: []
       extraConfigmapMounts: []
@@ -1211,9 +1248,9 @@
           # This configuration will work only on kubelet 1.7.3+
           # As the scrape endpoints for cAdvisor have changed
           # if you are using older version you need to change the replacement to
           # replacement: /api/v1/nodes/$1:4194/proxy/metrics
-          # more info here https://github.com/coreos/prometheus-operator/issues/633
+          # more info here https://github.com/prometheus-operator/prometheus-operator/issues/633
           relabel_configs:
             - action: labelmap
               regex: __meta_kubernetes_node_label_(.+)
             - target_label: __address__
@@ -1508,9 +1545,9 @@
 
   # fullImageName overrides the default image construction logic. The exact
   # image provided (registry, image, tag) will be used for the forecasting
   # container.
-  fullImageName: gcr.io/kubecost1/kubecost-modeling:v0.1.19
+  fullImageName: gcr.io/kubecost1/kubecost-modeling:v0.1.22
   imagePullPolicy: IfNotPresent
 
   # Resource specification block for the forecasting container.
   resources:
@@ -1822,18 +1859,22 @@
 clusterController:
   enabled: false
   image:
     repository: gcr.io/kubecost1/cluster-controller
-    tag: v0.16.11
+    tag: v0.16.13
   imagePullPolicy: IfNotPresent
   priorityClassName: ""
   tolerations: []
-
-  ## Annotations to be added for cluster controller template
   annotations: {}
+  labels: {}
+  securityContext: {}
   resources: {}
   affinity: {}
   nodeSelector: {}
+  primaryKubecostURL: ""  # URL for secondary clusters to connect to primary Kubecost (ex: https://kubecost.myorganization.com)
+  kubecostAPIKey: ""  # API Key for secondary clusters to authenticate with primary
+  createClusterControllerSecret: true  # disable if you want to use your own secret manager
+  secretName: controller-secrets
   actionConfigs:
     # this configures the Kubecost Cluster Turndown action
     # for more details, see documentation at https://github.com/kubecost/cluster-turndown/tree/develop?tab=readme-ov-file#setting-a-turndown-schedule
     clusterTurndown: []
@@ -2031,9 +2072,9 @@
     timeoutSeconds: 30
     failureThreshold: 10
   image:
     repository: grafana/grafana
-    tag: 11.3.1
+    tag: 11.4.0
     pullPolicy: IfNotPresent
     # pullSecrets:
   securityContext: {}
   priorityClassName: ""
@@ -2077,9 +2118,9 @@
   ## Requires at least Grafana 5 to work and can't be used together with parameters dashboardProviders, datasources and dashboards
   sidecar:
     image:
       repository: ghcr.io/kiwigrid/k8s-sidecar
-      tag: 1.28.1
+      tag: 1.29.1
       pullPolicy: IfNotPresent
     resources: {}
     dashboards:
       enabled: true

Copy link
Contributor

Changes Rendered Chart
diff -U 4 -r out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/aggregator-cloud-cost-service.yaml out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/aggregator-cloud-cost-service.yaml
--- out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/aggregator-cloud-cost-service.yaml	2025-02-21 23:22:13.419916823 +0000
+++ out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/aggregator-cloud-cost-service.yaml	2025-02-21 23:21:49.272697964 +0000
@@ -5,9 +5,9 @@
 metadata:
   name: release-name-cloud-cost
   namespace: default
   labels:
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/name: cost-analyzer
     app.kubernetes.io/instance: release-name
     app: cost-analyzer
diff -U 4 -r out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/aggregator-service.yaml out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/aggregator-service.yaml
--- out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/aggregator-service.yaml	2025-02-21 23:22:13.419916823 +0000
+++ out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/aggregator-service.yaml	2025-02-21 23:21:49.272697964 +0000
@@ -5,9 +5,9 @@
 metadata:
   name: release-name-aggregator
   namespace: default
   labels:
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/managed-by: Helm
     app: aggregator
 spec:
   selector:
diff -U 4 -r out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-cluster-role-binding-template.yaml out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-cluster-role-binding-template.yaml
--- out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-cluster-role-binding-template.yaml	2025-02-21 23:22:13.419916823 +0000
+++ out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-cluster-role-binding-template.yaml	2025-02-21 23:21:49.272697964 +0000
@@ -5,9 +5,9 @@
 metadata:
   name: release-name-cost-analyzer
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
 roleRef:
@@ -26,9 +26,9 @@
   name: release-name-cost-analyzer
   namespace: default
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
 roleRef:
diff -U 4 -r out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-cluster-role-template.yaml out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-cluster-role-template.yaml
--- out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-cluster-role-template.yaml	2025-02-21 23:22:13.419916823 +0000
+++ out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-cluster-role-template.yaml	2025-02-21 23:21:49.272697964 +0000
@@ -5,9 +5,9 @@
 metadata:
   name: release-name-cost-analyzer
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
 rules:
@@ -90,9 +90,9 @@
   namespace: default
   name: release-name-cost-analyzer
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
 rules:
diff -U 4 -r out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-config-map-template.yaml out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-config-map-template.yaml
--- out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-config-map-template.yaml	2025-02-21 23:22:13.417916806 +0000
+++ out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-config-map-template.yaml	2025-02-21 23:21:49.270697945 +0000
@@ -6,9 +6,9 @@
   name: release-name-cost-analyzer
   namespace: default
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
 data:
diff -U 4 -r out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-deployment-template.yaml out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-deployment-template.yaml
--- out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-deployment-template.yaml	2025-02-21 23:22:13.419916823 +0000
+++ out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-deployment-template.yaml	2025-02-21 23:21:49.273697973 +0000
@@ -6,9 +6,9 @@
   name: release-name-cost-analyzer
   namespace: default
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
   annotations:
@@ -30,9 +30,9 @@
         app.kubernetes.io/name: cost-analyzer
         app.kubernetes.io/instance: release-name
         app: cost-analyzer
       annotations:
-        checksum/configs: 5a026e9b91e4d5ed20cdb242c294e9187b08a1aa77be5d299c219cbd2352b3e2
+        checksum/configs: e6d9233fce13f896ba190b3d096afba3f57911a216638e60789eda5383e657a2
     spec:
       securityContext:
         fsGroup: 1001
         fsGroupChangePolicy: OnRootMismatch
@@ -45,8 +45,10 @@
       serviceAccountName: release-name-cost-analyzer
       volumes:
         - name: tmp
           emptyDir: {}
+        - name: log
+          emptyDir: {}
         - name: nginx-conf
           configMap:
             name: nginx-conf
             items:
@@ -56,9 +58,9 @@
           persistentVolumeClaim:
             claimName: release-name-cost-analyzer
       initContainers:
       containers:
-        - image: "gcr.io/kubecost1/cost-model:prod-2.5.3"
+        - image: "gcr.io/kubecost1/cost-model:prod-2.6.2"
           name: cost-model
           securityContext:
             allowPrivilegeEscalation: false
             capabilities:
@@ -96,15 +98,15 @@
             - name: persistent-configs
               mountPath: /var/configs
           env:
             - name: CONTAINER_IMAGE_TAG
-              value: prod-2.5.3
+              value: prod-2.6.2
             - name: GRAFANA_ENABLED
               value: "false"
             - name: LOG_LEVEL
               value: info
             - name: HELM_VALUES
-              value: eyJhZmZpbml0eSI6e30sImF3c3N0b3JlIjp7ImFubm90YXRpb25zIjp7fSwiY3JlYXRlU2VydmljZUFjY291bnQiOmZhbHNlLCJpbWFnZU5hbWVBbmRWZXJzaW9uIjoiZ2NyLmlvL2t1YmVjb3N0MS9hd3NzdG9yZTpsYXRlc3QiLCJub2RlU2VsZWN0b3IiOnt9LCJwcmlvcml0eUNsYXNzTmFtZSI6IiIsInVzZUF3c1N0b3JlIjpmYWxzZX0sImRpYWdub3N0aWNzIjp7ImNvbGxlY3RIZWxtVmFsdWVzIjpmYWxzZSwiZW5hYmxlZCI6dHJ1ZSwia2VlcERpYWdub3N0aWNIaXN0b3J5IjpmYWxzZSwicG9sbGluZ0ludGVydmFsIjoiMzAwcyJ9LCJleHRyYU9iamVjdHMiOltdLCJleHRyYVZvbHVtZU1vdW50cyI6W10sImV4dHJhVm9sdW1lcyI6W10sImZlZGVyYXRlZEVUTCI6eyJhZ2VudE9ubHkiOmZhbHNlLCJmZWRlcmF0ZWRDbHVzdGVyIjpmYWxzZSwicmVhZE9ubHlQcmltYXJ5IjpmYWxzZSwicmVkaXJlY3RTM0JhY2t1cCI6ZmFsc2UsInVzZU11bHRpQ2x1c3RlckRCIjpmYWxzZX0sImZvcmVjYXN0aW5nIjp7ImFmZmluaXR5Ijp7fSwiYW5ub3RhdGlvbnMiOnt9LCJlbmFibGVkIjp0cnVlLCJlbnYiOnsiR1VOSUNPUk5fQ01EX0FSR1MiOiItLWxvZy1sZXZlbCBpbmZvIC10IDEyMDAifSwiZnVsbEltYWdlTmFtZSI6Imdjci5pby9rdWJlY29zdDEva3ViZWNvc3QtbW9kZWxpbmc6djAuMS4xOSIsImltYWdlUHVsbFBvbGljeSI6IklmTm90UHJlc2VudCIsImxpdmVuZXNzUHJvYmUiOnsiZW5hYmxlZCI6dHJ1ZSwiZmFpbHVyZVRocmVzaG9sZCI6MjAwLCJpbml0aWFsRGVsYXlTZWNvbmRzIjoxMCwicGVyaW9kU2Vjb25kcyI6MTB9LCJub2RlU2VsZWN0b3IiOnt9LCJyZWFkaW5lc3NQcm9iZSI6eyJlbmFibGVkIjp0cnVlLCJmYWlsdXJlVGhyZXNob2xkIjoyMDAsImluaXRpYWxEZWxheVNlY29uZHMiOjEwLCJwZXJpb2RTZWNvbmRzIjoxMH0sInJlc291cmNlcyI6eyJsaW1pdHMiOnsiY3B1IjoiMTUwMG0iLCJtZW1vcnkiOiIxR2kifSwicmVxdWVzdHMiOnsiY3B1IjoiMjAwbSIsIm1lbW9yeSI6IjMwME1pIn19LCJ0b2xlcmF0aW9ucyI6W119LCJnbG9iYWwiOnsiYWRkaXRpb25hbExhYmVscyI6e30sImFubm90YXRpb25zIjp7fSwiY29udGFpbmVyU2VjdXJpdHlDb250ZXh0Ijp7ImFsbG93UHJpdmlsZWdlRXNjYWxhdGlvbiI6ZmFsc2UsImNhcGFiaWxpdGllcyI6eyJkcm9wIjpbIkFMTCJdfSwicHJpdmlsZWdlZCI6ZmFsc2UsInJlYWRPbmx5Um9vdEZpbGVzeXN0ZW0iOnRydWV9LCJpbnRlZ3JhdGlvbnMiOnt9LCJub3RpZmljYXRpb25zIjp7ImFsZXJ0bWFuYWdlciI6eyJlbmFibGVkIjp0cnVlLCJmcWRuIjoiaHR0cDovL3N4LWt1YmUtcHJvbWV0aGV1cy1zdGFjay1hbGVydG1hbmFnZXIubW9uaXRvcmluZzo5MDkzLyJ9fSwicGxhdGZvcm1zIjp7ImNpY2QiOnsiZW5hYmxlZCI6dHJ1ZSwic2tpcFNhbml0eUNoZWNrcyI6ZmFsc2V9fSwicG9kQW5ub3RhdGlvbnMiOnt9LCJwcm9tZXRoZXVzIjp7ImVuYWJsZWQiOnRydWUsImZxZG4iOiJodHRwOi8vc3gta3ViZS1wcm9tZXRoZXVzLXN0YWNrLXByb21ldGhldXMubW9uaXRvcmluZzo5MDkwLyIsImluc2VjdXJlU2tpcFZlcmlmeSI6ZmFsc2UsImt1YmVSQkFDUHJveHkiOmZhbHNlfSwic2VjdXJpdHlDb250ZXh0Ijp7ImZzR3JvdXAiOjEwMDEsImZzR3JvdXBDaGFuZ2VQb2xpY3kiOiJPblJvb3RNaXNtYXRjaCIsInJ1bkFzR3JvdXAiOjEwMDEsInJ1bkFzTm9uUm9vdCI6dHJ1ZSwicnVuQXNVc2VyIjoxMDAxLCJzZWNjb21wUHJvZmlsZSI6eyJ0eXBlIjoiUnVudGltZURlZmF1bHQifX19LCJncmFmYW5hIjp7ImFkbWluUGFzc3dvcmQiOiJzdHJvbmdwYXNzd29yZCIsImFkbWluVXNlciI6ImFkbWluIiwiYWZmaW5pdHkiOnt9LCJhbm5vdGF0aW9ucyI6e30sImRhc2hib2FyZFByb3ZpZGVycyI6e30sImRhc2hib2FyZHMiOnt9LCJkYXNoYm9hcmRzQ29uZmlnTWFwcyI6e30sImRlcGxveW1lbnRTdHJhdGVneSI6IlJvbGxpbmdVcGRhdGUiLCJkb3dubG9hZERhc2hib2FyZHNJbWFnZSI6eyJwdWxsUG9saWN5IjoiSWZOb3RQcmVzZW50IiwicmVwb3NpdG9yeSI6ImN1cmxpbWFnZXMvY3VybCIsInRhZyI6ImxhdGVzdCJ9LCJlbnYiOnt9LCJlbnZGcm9tU2VjcmV0IjoiIiwiZXh0cmFTZWNyZXRNb3VudHMiOltdLCJncmFmYW5hLmluaSI6eyJhbmFseXRpY3MiOnsiY2hlY2tfZm9yX3VwZGF0ZXMiOnRydWV9LCJhdXRoLmFub255bW91cyI6eyJlbmFibGVkIjp0cnVlLCJvcmdfbmFtZSI6Ik1haW4gT3JnLiIsIm9yZ19yb2xlIjoiRWRpdG9yIn0sImdyYWZhbmFfbmV0Ijp7InVybCI6Imh0dHBzOi8vZ3JhZmFuYS5uZXQifSwibG9nIjp7Im1vZGUiOiJjb25zb2xlIn0sInBhdGhzIjp7ImRhdGEiOiIvdmFyL2xpYi9ncmFmYW5hL2RhdGEiLCJsb2dzIjoiL3Zhci9sb2cvZ3JhZmFuYSIsInBsdWdpbnMiOiIvdmFyL2xpYi9ncmFmYW5hL3BsdWdpbnMiLCJwcm92aXNpb25pbmciOiIvZXRjL2dyYWZhbmEvcHJvdmlzaW9uaW5nIn0sInNlcnZlciI6eyJyb290X3VybCI6IiUocHJvdG9jb2wpczovLyUoZG9tYWluKXM6JShodHRwX3BvcnQpcy9ncmFmYW5hIiwic2VydmVfZnJvbV9zdWJfcGF0aCI6ZmFsc2V9fSwiaW1hZ2UiOnsicHVsbFBvbGljeSI6IklmTm90UHJlc2VudCIsInJlcG9zaXRvcnkiOiJncmFmYW5hL2dyYWZhbmEiLCJ0YWciOiIxMS4zLjEifSwibGl2ZW5lc3NQcm9iZSI6eyJmYWlsdXJlVGhyZXNob2xkIjoxMCwiaHR0cEdldCI6eyJwYXRoIjoiL2FwaS9oZWFsdGgiLCJwb3J0IjozMDAwfSwiaW5pdGlhbERlbGF5U2Vjb25kcyI6NjAsInRpbWVvdXRTZWNvbmRzIjozMH0sIm5hbWVzcGFjZV9kYXNoYm9hcmRzIjoia3ViZWNvc3QiLCJuYW1lc3BhY2VfZGF0YXNvdXJjZXMiOiJrdWJlY29zdCIsIm5vZGVTZWxlY3RvciI6e30sInBsdWdpbnMiOltdLCJwb2RBbm5vdGF0aW9ucyI6e30sInByaW9yaXR5Q2xhc3NOYW1lIjoiIiwicmJhYyI6eyJjcmVhdGUiOnRydWV9LCJyZWFkaW5lc3NQcm9iZSI6eyJodHRwR2V0Ijp7InBhdGgiOiIvYXBpL2hlYWx0aCIsInBvcnQiOjMwMDB9fSwicmVwbGljYXMiOjEsInJlc291cmNlcyI6e30sInNlY3VyaXR5Q29udGV4dCI6e30sInNlcnZpY2UiOnsiYW5ub3RhdGlvbnMiOnt9LCJsYWJlbHMiOnt9LCJwb3J0Ijo4MCwidHlwZSI6IkNsdXN0ZXJJUCJ9LCJzZXJ2aWNlQWNjb3VudCI6eyJjcmVhdGUiOnRydWUsIm5hbWUiOiIifSwic2lkZWNhciI6eyJkYXNoYm9hcmRzIjp7ImFubm90YXRpb25zIjp7fSwiZW5hYmxlZCI6dHJ1ZSwiZXJyb3JfdGhyb3R0bGVfc2xlZXAiOjAsImZvbGRlciI6Ii90bXAvZGFzaGJvYXJkcyIsImxhYmVsIjoiZ3JhZmFuYV9kYXNoYm9hcmQiLCJsYWJlbFZhbHVlIjoiMSJ9LCJpbWFnZSI6eyJwdWxsUG9saWN5IjoiSWZOb3RQcmVzZW50IiwicmVwb3NpdG9yeSI6ImdoY3IuaW8va2l3aWdyaWQvazhzLXNpZGVjYXIiLCJ0YWciOiIxLjI4LjEifSwicmVzb3VyY2VzIjp7fX0sInRvbGVyYXRpb25zIjpbXX0sImluZ3Jlc3MiOnsiZW5hYmxlZCI6dHJ1ZSwiaG9zdHMiOlsia3ViZWNvc3QtMTI3LTAtMC0xLm5pcC5pbyJdLCJwYXRoVHlwZSI6IkltcGxlbWVudGF0aW9uU3BlY2lmaWMiLCJwYXRocyI6WyIvIl0sInRscyI6W3siaG9zdHMiOlsia3ViZWNvc3QtMTI3LTAtMC0xLm5pcC5pbyJdLCJzZWNyZXROYW1lIjoia3ViZWNvc3Qtc2VydmVyLXRscyJ9XX0sImluaXRDaG93bkRhdGEiOnsicmVzb3VyY2VzIjp7fX0sImluaXRDaG93bkRhdGFJbWFnZSI6ImJ1c3lib3giLCJrdWJlY29zdERlcGxveW1lbnQiOnsiYW5ub3RhdGlvbnMiOnt9LCJsYWJlbHMiOnt9LCJyZXBsaWNhcyI6MX0sImt1YmVjb3N0RnJvbnRlbmQiOnsiZGVwbG95TWV0aG9kIjoic2luZ2xlcG9kIiwiZGVwbG95bWVudFN0cmF0ZWd5Ijp7fSwiZW5hYmxlZCI6dHJ1ZSwiaGFSZXBsaWNhcyI6MiwiaW1hZ2UiOiJnY3IuaW8va3ViZWNvc3QxL2Zyb250ZW5kIiwiaW1hZ2VQdWxsUG9saWN5IjoiSWZOb3RQcmVzZW50IiwiaXB2NiI6eyJlbmFibGVkIjp0cnVlfSwibGl2ZW5lc3NQcm9iZSI6eyJlbmFibGVkIjp0cnVlLCJmYWlsdXJlVGhyZXNob2xkIjo2LCJpbml0aWFsRGVsYXlTZWNvbmRzIjoxLCJwZXJpb2RTZWNvbmRzIjo1fSwicmVhZGluZXNzUHJvYmUiOnsiZW5hYmxlZCI6dHJ1ZSwiZmFpbHVyZVRocmVzaG9sZCI6NiwiaW5pdGlhbERlbGF5U2Vjb25kcyI6MSwicGVyaW9kU2Vjb25kcyI6NX0sInJlc291cmNlcyI6eyJyZXF1ZXN0cyI6eyJjcHUiOiIxMG0iLCJtZW1vcnkiOiI1NU1pIn19LCJ1c2VEZWZhdWx0RnFkbiI6ZmFsc2V9LCJrdWJlY29zdE1vZGVsIjp7ImNvbnRhaW5lclN0YXRzRW5hYmxlZCI6dHJ1ZSwiZXRsRGFpbHlTdG9yZUR1cmF0aW9uRGF5cyI6OTEsImV0bEhvdXJseVN0b3JlRHVyYXRpb25Ib3VycyI6NDksImV0bFJlYWRPbmx5TW9kZSI6ZmFsc2UsImV4dHJhQXJncyI6W10sImV4dHJhUG9ydHMiOltdLCJpbWFnZSI6Imdjci5pby9rdWJlY29zdDEvY29zdC1tb2RlbCIsImltYWdlUHVsbFBvbGljeSI6IklmTm90UHJlc2VudCIsImxpdmVuZXNzUHJvYmUiOnsiZW5hYmxlZCI6dHJ1ZSwiZmFpbHVyZVRocmVzaG9sZCI6MjAwLCJpbml0aWFsRGVsYXlTZWNvbmRzIjoxMCwicGVyaW9kU2Vjb25kcyI6MTB9LCJsb2dMZXZlbCI6ImluZm8iLCJtYXhRdWVyeUNvbmN1cnJlbmN5Ijo1LCJyZWFkaW5lc3NQcm9iZSI6eyJlbmFibGVkIjp0cnVlLCJmYWlsdXJlVGhyZXNob2xkIjoyMDAsImluaXRpYWxEZWxheVNlY29uZHMiOjEwLCJwZXJpb2RTZWNvbmRzIjoxMH0sInJlc291cmNlcyI6eyJyZXF1ZXN0cyI6eyJjcHUiOiIyMDBtIiwibWVtb3J5IjoiNTVNaSJ9fSwidXRjT2Zmc2V0IjoiKzAwOjAwIn0sImt1YmVjb3N0UHJvZHVjdENvbmZpZ3MiOnsiY2x1c3Rlck5hbWUiOiJrdWJyaVggRGVtbyIsImNsdXN0ZXJQcm9maWxlIjoiZGV2ZWxvcG1lbnQiLCJjdXJyZW5jeUNvZGUiOiJFVVIiLCJjdXN0b21QcmljZXNFbmFibGVkIjp0cnVlLCJkZWZhdWx0TW9kZWxQcmljaW5nIjp7IkNQVSI6IjI4LjAiLCJHUFUiOiI2OTMuNTAiLCJSQU0iOiIzLjA5IiwiZW5hYmxlZCI6dHJ1ZSwiaW50ZXJuZXROZXR3b3JrRWdyZXNzIjoiMC4xMiIsInJlZ2lvbk5ldHdvcmtFZ3Jlc3MiOiIwLjAxIiwic3BvdENQVSI6IjQuODYiLCJzcG90R1BVIjoiMjI1LjAiLCJzcG90UkFNIjoiMC42NSIsInN0b3JhZ2UiOiIwLjA0Iiwiem9uZU5ldHdvcmtFZ3Jlc3MiOiIwLjAxIn19LCJub2RlU2VsZWN0b3IiOnt9LCJwZXJzaXN0ZW50Vm9sdW1lIjp7ImFubm90YXRpb25zIjp7fSwiZGJTaXplIjoiNUdpIiwiZW5hYmxlZCI6dHJ1ZSwibGFiZWxzIjp7fSwic2l6ZSI6IjVHaSJ9LCJwcm9tZXRoZXVzIjp7ImFsZXJ0bWFuYWdlckZpbGVzIjp7ImFsZXJ0bWFuYWdlci55bWwiOnsiZ2xvYmFsIjp7fSwicmVjZWl2ZXJzIjpbeyJuYW1lIjoiZGVmYXVsdC1yZWNlaXZlciJ9XSwicm91dGUiOnsiZ3JvdXBfaW50ZXJ2YWwiOiI1bSIsImdyb3VwX3dhaXQiOiIxMHMiLCJyZWNlaXZlciI6ImRlZmF1bHQtcmVjZWl2ZXIiLCJyZXBlYXRfaW50ZXJ2YWwiOiIzaCJ9fX0sImNvbmZpZ21hcFJlbG9hZCI6e30sImV4dHJhU2NyYXBlQ29uZmlncyI6Ii0gam9iX25hbWU6IGt1YmVjb3N0XG4gIGhvbm9yX2xhYmVsczogdHJ1ZVxuICBzY3JhcGVfaW50ZXJ2YWw6IDFtXG4gIHNjcmFwZV90aW1lb3V0OiA2MHNcbiAgbWV0cmljc19wYXRoOiAvbWV0cmljc1xuICBzY2hlbWU6IGh0dHBcbiAgZG5zX3NkX2NvbmZpZ3M6XG4gIC0gbmFtZXM6XG4gICAgLSB7eyB0ZW1wbGF0ZSBcImNvc3QtYW5hbHl6ZXIuc2VydmljZU5hbWVcIiAuIH19XG4gICAgdHlwZTogJ0EnXG4gICAgcG9ydDogOTAwM1xuLSBqb2JfbmFtZToga3ViZWNvc3QtbmV0d29ya2luZ1xuICBrdWJlcm5ldGVzX3NkX2NvbmZpZ3M6XG4gICAgLSByb2xlOiBwb2RcbiAgcmVsYWJlbF9jb25maWdzOlxuICAjIFNjcmFwZSBvbmx5IHRoZSB0aGUgdGFyZ2V0cyBtYXRjaGluZyB0aGUgZm9sbG93aW5nIG1ldGFkYXRhXG4gICAgLSBzb3VyY2VfbGFiZWxzOiBbX19tZXRhX2t1YmVybmV0ZXNfcG9kX2xhYmVsX2FwcF9rdWJlcm5ldGVzX2lvX2luc3RhbmNlXVxuICAgICAgYWN0aW9uOiBrZWVwXG4gICAgICByZWdleDogIGt1YmVjb3N0XG4gICAgLSBzb3VyY2VfbGFiZWxzOiBbX19tZXRhX2t1YmVybmV0ZXNfcG9kX2xhYmVsX2FwcF9rdWJlcm5ldGVzX2lvX25hbWVdXG4gICAgICBhY3Rpb246IGtlZXBcbiAgICAgIHJlZ2V4OiAgbmV0d29yay1jb3N0c1xuLSBqb2JfbmFtZToga3ViZWNvc3QtYWdncmVnYXRvclxuICBzY3JhcGVfaW50ZXJ2YWw6IDFtXG4gIHNjcmFwZV90aW1lb3V0OiA2MHNcbiAgbWV0cmljc19wYXRoOiAvbWV0cmljc1xuICBzY2hlbWU6IGh0dHBcbiAgZG5zX3NkX2NvbmZpZ3M6XG4gIC0gbmFtZXM6XG4gICAgLSB7eyB0ZW1wbGF0ZSBcImFnZ3JlZ2F0b3Iuc2VydmljZU5hbWVcIiAuIH19XG4gICAgdHlwZTogJ0EnXG4gICAge3stIGlmIG9yIC5WYWx1ZXMuc2FtbC5lbmFibGVkIC5WYWx1ZXMub2lkYy5lbmFibGVkIH19XG4gICAgcG9ydDogOTAwOFxuICAgIHt7LSBlbHNlIH19XG4gICAgcG9ydDogOTAwNFxuICAgIHt7LSBlbmQgfX1cbiMjIEVuYWJsZXMgc2NyYXBpbmcgb2YgTlZJRElBIEdQVSBtZXRyaWNzIHZpYSBkY2dtLWV4cG9ydGVyLiBTY3JhcGVzIGFsbFxuIyMgZW5kcG9pbnRzIHdoaWNoIGNvbnRhaW4gXCJkY2dtLWV4cG9ydGVyXCIgaW4gbGFiZWxzIFwiYXBwXCIsXG4jIyBcImFwcC5rdWJlcm5ldGVzLmlvL2NvbXBvbmVudFwiLCBvciBcImFwcC5rdWJlcm5ldGVzLmlvL25hbWVcIiB3aXRoIGEgY2FzZVxuIyMgaW5zZW5zaXRpdmUgbWF0Y2guIFRoZSBsYWJlbCBtdXN0IGJlIHByZXNlbnQgb24gdGhlIEs4cyBzZXJ2aWNlIGVuZHBvaW50cyBhbmQgbm90IGp1c3QgcG9kcy5cbiMjIFJlZnM6XG4jIyBodHRwczovL2dpdGh1Yi5jb20vTlZJRElBL2dwdS1vcGVyYXRvci9ibG9iL2Q0MzE2YTQxNWJiZDY4NGNlODQxNmE4ODA0MjMwNWZjMWEwOTNhYTQvYXNzZXRzL3N0YXRlLWRjZ20tZXhwb3J0ZXIvMDYwMF9zZXJ2aWNlLnlhbWwjTDdcbiMjIGh0dHBzOi8vZ2l0aHViLmNvbS9OVklESUEvZGNnbS1leHBvcnRlci9ibG9iLzU0ZmQxY2ExMzdjNjY1MTFhODdhNzIwMzkwNjEzNjgwYjliZGFiZGQvZGVwbG95bWVudC90ZW1wbGF0ZXMvc2VydmljZS55YW1sI0wyM1xuLSBqb2JfbmFtZToga3ViZWNvc3QtZGNnbS1leHBvcnRlclxuICBrdWJlcm5ldGVzX3NkX2NvbmZpZ3M6XG4gICAgLSByb2xlOiBlbmRwb2ludHNcbiAgcmVsYWJlbF9jb25maWdzOlxuICAgIC0gc291cmNlX2xhYmVsczogW19fbWV0YV9rdWJlcm5ldGVzX3BvZF9sYWJlbF9hcHAsIF9fbWV0YV9rdWJlcm5ldGVzX3BvZF9sYWJlbF9hcHBfa3ViZXJuZXRlc19pb19jb21wb25lbnQsIF9fbWV0YV9rdWJlcm5ldGVzX3BvZF9sYWJlbF9hcHBfa3ViZXJuZXRlc19pb19uYW1lXVxuICAgICAgYWN0aW9uOiBrZWVwXG4gICAgICByZWdleDogKD9pKSguKmRjZ20tZXhwb3J0ZXIuKnwuKmRjZ20tZXhwb3J0ZXIuKnwuKmRjZ20tZXhwb3J0ZXIuKilcbiIsInJiYWMiOnsiY3JlYXRlIjp0cnVlfSwic2VydmVyIjp7ImFmZmluaXR5Ijp7fSwiYWxlcnRtYW5hZ2VycyI6W10sImFubm90YXRpb25zIjp7fSwiYmFzZVVSTCI6IiIsImNvbmZpZ01hcE92ZXJyaWRlTmFtZSI6IiIsImNvbmZpZ1BhdGgiOiIvZXRjL2NvbmZpZy9wcm9tZXRoZXVzLnltbCIsImNvbnRhaW5lclNlY3VyaXR5Q29udGV4dCI6e30sImVtcHR5RGlyIjp7InNpemVMaW1pdCI6IiJ9LCJlbmFibGVkIjp0cnVlLCJlbnYiOltdLCJleHRyYUFyZ3MiOnsicXVlcnkubWF4LWNvbmN1cnJlbmN5IjoxLCJxdWVyeS5tYXgtc2FtcGxlcyI6MTAwMDAwMDAwfSwiZXh0cmFDb25maWdtYXBNb3VudHMiOltdLCJleHRyYUZsYWdzIjpbIndlYi5lbmFibGUtbGlmZWN5Y2xlIl0sImV4dHJhSG9zdFBhdGhNb3VudHMiOltdLCJleHRyYUluaXRDb250YWluZXJzIjpbXSwiZXh0cmFTZWNyZXRNb3VudHMiOltdLCJleHRyYVZvbHVtZU1vdW50cyI6W10sImV4dHJhVm9sdW1lcyI6W10sImdsb2JhbCI6eyJldmFsdWF0aW9uX2ludGVydmFsIjoiMW0iLCJleHRlcm5hbF9sYWJlbHMiOnsiY2x1c3Rlcl9pZCI6Imt1YnJpeCJ9LCJzY3JhcGVfaW50ZXJ2YWwiOiIxbSIsInNjcmFwZV90aW1lb3V0IjoiNjBzIn0sImltYWdlIjp7InB1bGxQb2xpY3kiOiJJZk5vdFByZXNlbnQiLCJyZXBvc2l0b3J5IjoicXVheS5pby9wcm9tZXRoZXVzL3Byb21ldGhldXMiLCJ0YWciOiJ2Mi41NS4xIn0sImxpdmVuZXNzUHJvYmVGYWlsdXJlVGhyZXNob2xkIjozLCJsaXZlbmVzc1Byb2JlSW5pdGlhbERlbGF5Ijo1LCJsaXZlbmVzc1Byb2JlU3VjY2Vzc1RocmVzaG9sZCI6MSwibGl2ZW5lc3NQcm9iZVRpbWVvdXQiOjMsIm5hbWUiOiJzZXJ2ZXIiLCJub2RlU2VsZWN0b3IiOnt9LCJwZXJzaXN0ZW50Vm9sdW1lIjp7ImFjY2Vzc01vZGVzIjpbIlJlYWRXcml0ZU9uY2UiXSwiYW5ub3RhdGlvbnMiOnt9LCJlbmFibGVkIjp0cnVlLCJleGlzdGluZ0NsYWltIjoiIiwibW91bnRQYXRoIjoiL2RhdGEiLCJzaXplIjoiMzJHaSIsInN1YlBhdGgiOiIifSwicG9kQW5ub3RhdGlvbnMiOnt9LCJwb2RMYWJlbHMiOnt9LCJwcmVmaXhVUkwiOiIiLCJwcmlvcml0eUNsYXNzTmFtZSI6IiIsInJlYWRpbmVzc1Byb2JlRmFpbHVyZVRocmVzaG9sZCI6MywicmVhZGluZXNzUHJvYmVJbml0aWFsRGVsYXkiOjUsInJlYWRpbmVzc1Byb2JlU3VjY2Vzc1RocmVzaG9sZCI6MSwicmVhZGluZXNzUHJvYmVUaW1lb3V0IjozLCJyZW1vdGVSZWFkIjp7fSwicmVtb3RlV3JpdGUiOnt9LCJyZXBsaWNhQ291bnQiOjEsInJlc291cmNlcyI6e30sInJldGVudGlvbiI6Ijk3aCIsInNlY3VyaXR5Q29udGV4dCI6e30sInNlcnZpY2UiOnsiYW5ub3RhdGlvbnMiOnt9LCJjbHVzdGVySVAiOiIiLCJleHRlcm5hbElQcyI6W10sImxhYmVscyI6e30sImxvYWRCYWxhbmNlcklQIjoiIiwibG9hZEJhbGFuY2VyU291cmNlUmFuZ2VzIjpbXSwic2VydmljZVBvcnQiOjgwLCJzZXNzaW9uQWZmaW5pdHkiOiJOb25lIiwidHlwZSI6IkNsdXN0ZXJJUCJ9LCJzdHJhdGVneSI6eyJ0eXBlIjoiUmVjcmVhdGUifSwidGVybWluYXRpb25HcmFjZVBlcmlvZFNlY29uZHMiOjMwMCwidG9sZXJhdGlvbnMiOltdfSwic2VydmVyRmlsZXMiOnsiYWxlcnRpbmdfcnVsZXMueW1sIjp7fSwicHJvbWV0aGV1cy55bWwiOnsicnVsZV9maWxlcyI6WyIvZXRjL2NvbmZpZy9yZWNvcmRpbmdfcnVsZXMueW1sIiwiL2V0Yy9jb25maWcvYWxlcnRpbmdfcnVsZXMueW1sIl0sInNjcmFwZV9jb25maWdzIjpbeyJqb2JfbmFtZSI6InByb21ldGhldXMiLCJzdGF0aWNfY29uZmlncyI6W3sidGFyZ2V0cyI6WyJsb2NhbGhvc3Q6OTA5MCJdfV19LHsiYmVhcmVyX3Rva2VuX2ZpbGUiOiIvdmFyL3J1bi9zZWNyZXRzL2t1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvdG9rZW4iLCJqb2JfbmFtZSI6Imt1YmVybmV0ZXMtbm9kZXMtY2Fkdmlzb3IiLCJrdWJlcm5ldGVzX3NkX2NvbmZpZ3MiOlt7InJvbGUiOiJub2RlIn1dLCJtZXRyaWNfcmVsYWJlbF9jb25maWdzIjpbeyJhY3Rpb24iOiJrZWVwIiwicmVnZXgiOiIoY29udGFpbmVyX2NwdV91c2FnZV9zZWNvbmRzX3RvdGFsfGNvbnRhaW5lcl9tZW1vcnlfd29ya2luZ19zZXRfYnl0ZXN8Y29udGFpbmVyX25ldHdvcmtfcmVjZWl2ZV9lcnJvcnNfdG90YWx8Y29udGFpbmVyX25ldHdvcmtfdHJhbnNtaXRfZXJyb3JzX3RvdGFsfGNvbnRhaW5lcl9uZXR3b3JrX3JlY2VpdmVfcGFja2V0c19kcm9wcGVkX3RvdGFsfGNvbnRhaW5lcl9uZXR3b3JrX3RyYW5zbWl0X3BhY2tldHNfZHJvcHBlZF90b3RhbHxjb250YWluZXJfbWVtb3J5X3VzYWdlX2J5dGVzfGNvbnRhaW5lcl9jcHVfY2ZzX3Rocm90dGxlZF9wZXJpb2RzX3RvdGFsfGNvbnRhaW5lcl9jcHVfY2ZzX3BlcmlvZHNfdG90YWx8Y29udGFpbmVyX2ZzX3VzYWdlX2J5dGVzfGNvbnRhaW5lcl9mc19saW1pdF9ieXRlc3xjb250YWluZXJfY3B1X2Nmc19wZXJpb2RzX3RvdGFsfGNvbnRhaW5lcl9mc19pbm9kZXNfZnJlZXxjb250YWluZXJfZnNfaW5vZGVzX3RvdGFsfGNvbnRhaW5lcl9mc191c2FnZV9ieXRlc3xjb250YWluZXJfZnNfbGltaXRfYnl0ZXN8Y29udGFpbmVyX2NwdV9jZnNfdGhyb3R0bGVkX3BlcmlvZHNfdG90YWx8Y29udGFpbmVyX2NwdV9jZnNfcGVyaW9kc190b3RhbHxjb250YWluZXJfbmV0d29ya19yZWNlaXZlX2J5dGVzX3RvdGFsfGNvbnRhaW5lcl9uZXR3b3JrX3RyYW5zbWl0X2J5dGVzX3RvdGFsfGNvbnRhaW5lcl9mc19pbm9kZXNfZnJlZXxjb250YWluZXJfZnNfaW5vZGVzX3RvdGFsfGNvbnRhaW5lcl9mc191c2FnZV9ieXRlc3xjb250YWluZXJfZnNfbGltaXRfYnl0ZXN8Y29udGFpbmVyX3NwZWNfY3B1X3NoYXJlc3xjb250YWluZXJfc3BlY19tZW1vcnlfbGltaXRfYnl0ZXN8Y29udGFpbmVyX25ldHdvcmtfcmVjZWl2ZV9ieXRlc190b3RhbHxjb250YWluZXJfbmV0d29ya190cmFuc21pdF9ieXRlc190b3RhbHxjb250YWluZXJfZnNfcmVhZHNfYnl0ZXNfdG90YWx8Y29udGFpbmVyX25ldHdvcmtfcmVjZWl2ZV9ieXRlc190b3RhbHxjb250YWluZXJfZnNfd3JpdGVzX2J5dGVzX3RvdGFsfGNvbnRhaW5lcl9mc19yZWFkc19ieXRlc190b3RhbHxjYWR2aXNvcl92ZXJzaW9uX2luZm98a3ViZWNvc3RfcHZfaW5mbykiLCJzb3VyY2VfbGFiZWxzIjpbIl9fbmFtZV9fIl19LHsiYWN0aW9uIjoicmVwbGFjZSIsInJlZ2V4IjoiKC4rKSIsInNvdXJjZV9sYWJlbHMiOlsiY29udGFpbmVyIl0sInRhcmdldF9sYWJlbCI6ImNvbnRhaW5lcl9uYW1lIn0seyJhY3Rpb24iOiJyZXBsYWNlIiwicmVnZXgiOiIoLispIiwic291cmNlX2xhYmVscyI6WyJwb2QiXSwidGFyZ2V0X2xhYmVsIjoicG9kX25hbWUifV0sInJlbGFiZWxfY29uZmlncyI6W3siYWN0aW9uIjoibGFiZWxtYXAiLCJyZWdleCI6Il9fbWV0YV9rdWJlcm5ldGVzX25vZGVfbGFiZWxfKC4rKSJ9LHsicmVwbGFjZW1lbnQiOiJrdWJlcm5ldGVzLmRlZmF1bHQuc3ZjOjQ0MyIsInRhcmdldF9sYWJlbCI6Il9fYWRkcmVzc19fIn0seyJyZWdleCI6IiguKykiLCJyZXBsYWNlbWVudCI6Ii9hcGkvdjEvbm9kZXMvJDEvcHJveHkvbWV0cmljcy9jYWR2aXNvciIsInNvdXJjZV9sYWJlbHMiOlsiX19tZXRhX2t1YmVybmV0ZXNfbm9kZV9uYW1lIl0sInRhcmdldF9sYWJlbCI6Il9fbWV0cmljc19wYXRoX18ifV0sInNjaGVtZSI6Imh0dHBzIiwidGxzX2NvbmZpZyI6eyJjYV9maWxlIjoiL3Zhci9ydW4vc2VjcmV0cy9rdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L2NhLmNydCIsImluc2VjdXJlX3NraXBfdmVyaWZ5Ijp0cnVlfX0seyJiZWFyZXJfdG9rZW5fZmlsZSI6Ii92YXIvcnVuL3NlY3JldHMva3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC90b2tlbiIsImpvYl9uYW1lIjoia3ViZXJuZXRlcy1ub2RlcyIsImt1YmVybmV0ZXNfc2RfY29uZmlncyI6W3sicm9sZSI6Im5vZGUifV0sIm1ldHJpY19yZWxhYmVsX2NvbmZpZ3MiOlt7ImFjdGlvbiI6ImtlZXAiLCJyZWdleCI6IihrdWJlbGV0X3ZvbHVtZV9zdGF0c191c2VkX2J5dGVzKSIsInNvdXJjZV9sYWJlbHMiOlsiX19uYW1lX18iXX1dLCJyZWxhYmVsX2NvbmZpZ3MiOlt7ImFjdGlvbiI6ImxhYmVsbWFwIiwicmVnZXgiOiJfX21ldGFfa3ViZXJuZXRlc19ub2RlX2xhYmVsXyguKykifSx7InJlcGxhY2VtZW50Ijoia3ViZXJuZXRlcy5kZWZhdWx0LnN2Yzo0NDMiLCJ0YXJnZXRfbGFiZWwiOiJfX2FkZHJlc3NfXyJ9LHsicmVnZXgiOiIoLispIiwicmVwbGFjZW1lbnQiOiIvYXBpL3YxL25vZGVzLyQxL3Byb3h5L21ldHJpY3MiLCJzb3VyY2VfbGFiZWxzIjpbIl9fbWV0YV9rdWJlcm5ldGVzX25vZGVfbmFtZSJdLCJ0YXJnZXRfbGFiZWwiOiJfX21ldHJpY3NfcGF0aF9fIn1dLCJzY2hlbWUiOiJodHRwcyIsInRsc19jb25maWciOnsiY2FfZmlsZSI6Ii92YXIvcnVuL3NlY3JldHMva3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9jYS5jcnQiLCJpbnNlY3VyZV9za2lwX3ZlcmlmeSI6dHJ1ZX19LHsiam9iX25hbWUiOiJrdWJlcm5ldGVzLXNlcnZpY2UtZW5kcG9pbnRzIiwia3ViZXJuZXRlc19zZF9jb25maWdzIjpbeyJyb2xlIjoiZW5kcG9pbnRzIn1dLCJtZXRyaWNfcmVsYWJlbF9jb25maWdzIjpbeyJhY3Rpb24iOiJrZWVwIiwicmVnZXgiOiIoY29udGFpbmVyX2NwdV9hbGxvY2F0aW9ufGNvbnRhaW5lcl9jcHVfdXNhZ2Vfc2Vjb25kc190b3RhbHxjb250YWluZXJfZnNfbGltaXRfYnl0ZXN8Y29udGFpbmVyX2ZzX3dyaXRlc19ieXRlc190b3RhbHxjb250YWluZXJfZ3B1X2FsbG9jYXRpb258Y29udGFpbmVyX21lbW9yeV9hbGxvY2F0aW9uX2J5dGVzfGNvbnRhaW5lcl9tZW1vcnlfdXNhZ2VfYnl0ZXN8Y29udGFpbmVyX21lbW9yeV93b3JraW5nX3NldF9ieXRlc3xjb250YWluZXJfbmV0d29ya19yZWNlaXZlX2J5dGVzX3RvdGFsfGNvbnRhaW5lcl9uZXR3b3JrX3RyYW5zbWl0X2J5dGVzX3RvdGFsfERDR01fRklfREVWX0dQVV9VVElMfGRlcGxveW1lbnRfbWF0Y2hfbGFiZWxzfGt1YmVfZGFlbW9uc2V0X3N0YXR1c19kZXNpcmVkX251bWJlcl9zY2hlZHVsZWR8a3ViZV9kYWVtb25zZXRfc3RhdHVzX251bWJlcl9yZWFkeXxrdWJlX2RlcGxveW1lbnRfc3BlY19yZXBsaWNhc3xrdWJlX2RlcGxveW1lbnRfc3RhdHVzX3JlcGxpY2FzfGt1YmVfZGVwbG95bWVudF9zdGF0dXNfcmVwbGljYXNfYXZhaWxhYmxlfGt1YmVfam9iX3N0YXR1c19mYWlsZWR8a3ViZV9uYW1lc3BhY2VfYW5ub3RhdGlvbnN8a3ViZV9uYW1lc3BhY2VfbGFiZWxzfGt1YmVfbm9kZV9pbmZvfGt1YmVfbm9kZV9sYWJlbHN8a3ViZV9ub2RlX3N0YXR1c19hbGxvY2F0YWJsZXxrdWJlX25vZGVfc3RhdHVzX2FsbG9jYXRhYmxlX2NwdV9jb3Jlc3xrdWJlX25vZGVfc3RhdHVzX2FsbG9jYXRhYmxlX21lbW9yeV9ieXRlc3xrdWJlX25vZGVfc3RhdHVzX2NhcGFjaXR5fGt1YmVfbm9kZV9zdGF0dXNfY2FwYWNpdHlfY3B1X2NvcmVzfGt1YmVfbm9kZV9zdGF0dXNfY2FwYWNpdHlfbWVtb3J5X2J5dGVzfGt1YmVfbm9kZV9zdGF0dXNfY29uZGl0aW9ufGt1YmVfcGVyc2lzdGVudHZvbHVtZV9jYXBhY2l0eV9ieXRlc3xrdWJlX3BlcnNpc3RlbnR2b2x1bWVfc3RhdHVzX3BoYXNlfGt1YmVfcGVyc2lzdGVudHZvbHVtZWNsYWltX2luZm98a3ViZV9wZXJzaXN0ZW50dm9sdW1lY2xhaW1fcmVzb3VyY2VfcmVxdWVzdHNfc3RvcmFnZV9ieXRlc3xrdWJlX3BvZF9jb250YWluZXJfaW5mb3xrdWJlX3BvZF9jb250YWluZXJfcmVzb3VyY2VfbGltaXRzfGt1YmVfcG9kX2NvbnRhaW5lcl9yZXNvdXJjZV9saW1pdHNfY3B1X2NvcmVzfGt1YmVfcG9kX2NvbnRhaW5lcl9yZXNvdXJjZV9saW1pdHNfbWVtb3J5X2J5dGVzfGt1YmVfcG9kX2NvbnRhaW5lcl9yZXNvdXJjZV9yZXF1ZXN0c3xrdWJlX3BvZF9jb250YWluZXJfcmVzb3VyY2VfcmVxdWVzdHNfY3B1X2NvcmVzfGt1YmVfcG9kX2NvbnRhaW5lcl9yZXNvdXJjZV9yZXF1ZXN0c19tZW1vcnlfYnl0ZXN8a3ViZV9wb2RfY29udGFpbmVyX3N0YXR1c19yZXN0YXJ0c190b3RhbHxrdWJlX3BvZF9jb250YWluZXJfc3RhdHVzX3J1bm5pbmd8a3ViZV9wb2RfY29udGFpbmVyX3N0YXR1c190ZXJtaW5hdGVkX3JlYXNvbnxrdWJlX3BvZF9sYWJlbHN8a3ViZV9wb2Rfb3duZXJ8a3ViZV9wb2Rfc3RhdHVzX3BoYXNlfGt1YmVfcmVwbGljYXNldF9vd25lcnxrdWJlX3N0YXRlZnVsc2V0X3JlcGxpY2FzfGt1YmVfc3RhdGVmdWxzZXRfc3RhdHVzX3JlcGxpY2FzfGt1YmVjb3N0X2NsdXN0ZXJfaW5mb3xrdWJlY29zdF9jbHVzdGVyX21hbmFnZW1lbnRfY29zdHxrdWJlY29zdF9jbHVzdGVyX21lbW9yeV93b3JraW5nX3NldF9ieXRlc3xrdWJlY29zdF9sb2FkX2JhbGFuY2VyX2Nvc3R8a3ViZWNvc3RfbmV0d29ya19pbnRlcm5ldF9lZ3Jlc3NfY29zdHxrdWJlY29zdF9uZXR3b3JrX3JlZ2lvbl9lZ3Jlc3NfY29zdHxrdWJlY29zdF9uZXR3b3JrX3pvbmVfZWdyZXNzX2Nvc3R8a3ViZWNvc3Rfbm9kZV9pc19zcG90fGt1YmVjb3N0X3BvZF9uZXR3b3JrX2VncmVzc19ieXRlc190b3RhbHxub2RlX2NwdV9ob3VybHlfY29zdHxub2RlX2NwdV9zZWNvbmRzX3RvdGFsfG5vZGVfZGlza19yZWFkc19jb21wbGV0ZWR8bm9kZV9kaXNrX3JlYWRzX2NvbXBsZXRlZF90b3RhbHxub2RlX2Rpc2tfd3JpdGVzX2NvbXBsZXRlZHxub2RlX2Rpc2tfd3JpdGVzX2NvbXBsZXRlZF90b3RhbHxub2RlX2ZpbGVzeXN0ZW1fZGV2aWNlX2Vycm9yfG5vZGVfZ3B1X2NvdW50fG5vZGVfZ3B1X2hvdXJseV9jb3N0fG5vZGVfbWVtb3J5X0J1ZmZlcnNfYnl0ZXN8bm9kZV9tZW1vcnlfQ2FjaGVkX2J5dGVzfG5vZGVfbWVtb3J5X01lbUF2YWlsYWJsZV9ieXRlc3xub2RlX21lbW9yeV9NZW1GcmVlX2J5dGVzfG5vZGVfbWVtb3J5X01lbVRvdGFsX2J5dGVzfG5vZGVfbmV0d29ya190cmFuc21pdF9ieXRlc190b3RhbHxub2RlX3JhbV9ob3VybHlfY29zdHxub2RlX3RvdGFsX2hvdXJseV9jb3N0fHBvZF9wdmNfYWxsb2NhdGlvbnxwdl9ob3VybHlfY29zdHxzZXJ2aWNlX3NlbGVjdG9yX2xhYmVsc3xzdGF0ZWZ1bFNldF9tYXRjaF9sYWJlbHN8a3ViZWNvc3RfcHZfaW5mb3x1cCkiLCJzb3VyY2VfbGFiZWxzIjpbIl9fbmFtZV9fIl19XSwicmVsYWJlbF9jb25maWdzIjpbeyJhY3Rpb24iOiJrZWVwIiwicmVnZXgiOnRydWUsInNvdXJjZV9sYWJlbHMiOlsiX19tZXRhX2t1YmVybmV0ZXNfc2VydmljZV9hbm5vdGF0aW9uX3Byb21ldGhldXNfaW9fc2NyYXBlIl19LHsiYWN0aW9uIjoia2VlcCIsInJlZ2V4IjoiKC4qbm9kZS1leHBvcnRlcnxrdWJlY29zdC1uZXR3b3JrLWNvc3RzKSIsInNvdXJjZV9sYWJlbHMiOlsiX19tZXRhX2t1YmVybmV0ZXNfZW5kcG9pbnRzX25hbWUiXX0seyJhY3Rpb24iOiJyZXBsYWNlIiwicmVnZXgiOiIoaHR0cHM/KSIsInNvdXJjZV9sYWJlbHMiOlsiX19tZXRhX2t1YmVybmV0ZXNfc2VydmljZV9hbm5vdGF0aW9uX3Byb21ldGhldXNfaW9fc2NoZW1lIl0sInRhcmdldF9sYWJlbCI6Il9fc2NoZW1lX18ifSx7ImFjdGlvbiI6InJlcGxhY2UiLCJyZWdleCI6IiguKykiLCJzb3VyY2VfbGFiZWxzIjpbIl9fbWV0YV9rdWJlcm5ldGVzX3NlcnZpY2VfYW5ub3RhdGlvbl9wcm9tZXRoZXVzX2lvX3BhdGgiXSwidGFyZ2V0X2xhYmVsIjoiX19tZXRyaWNzX3BhdGhfXyJ9LHsiYWN0aW9uIjoicmVwbGFjZSIsInJlZ2V4IjoiKFteOl0rKSg/OjpcXGQrKT87KFxcZCspIiwicmVwbGFjZW1lbnQiOiIkMTokMiIsInNvdXJjZV9sYWJlbHMiOlsiX19hZGRyZXNzX18iLCJfX21ldGFfa3ViZXJuZXRlc19zZXJ2aWNlX2Fubm90YXRpb25fcHJvbWV0aGV1c19pb19wb3J0Il0sInRhcmdldF9sYWJlbCI6Il9fYWRkcmVzc19fIn0seyJhY3Rpb24iOiJsYWJlbG1hcCIsInJlZ2V4IjoiX19tZXRhX2t1YmVybmV0ZXNfc2VydmljZV9sYWJlbF8oLispIn0seyJhY3Rpb24iOiJyZXBsYWNlIiwic291cmNlX2xhYmVscyI6WyJfX21ldGFfa3ViZXJuZXRlc19uYW1lc3BhY2UiXSwidGFyZ2V0X2xhYmVsIjoia3ViZXJuZXRlc19uYW1lc3BhY2UifSx7ImFjdGlvbiI6InJlcGxhY2UiLCJzb3VyY2VfbGFiZWxzIjpbIl9fbWV0YV9rdWJlcm5ldGVzX3NlcnZpY2VfbmFtZSJdLCJ0YXJnZXRfbGFiZWwiOiJrdWJlcm5ldGVzX25hbWUifSx7ImFjdGlvbiI6InJlcGxhY2UiLCJzb3VyY2VfbGFiZWxzIjpbIl9fbWV0YV9rdWJlcm5ldGVzX3BvZF9ub2RlX25hbWUiXSwidGFyZ2V0X2xhYmVsIjoia3ViZXJuZXRlc19ub2RlIn1dfV19LCJyZWNvcmRpbmdfcnVsZXMueW1sIjp7fSwicnVsZXMiOnsiZ3JvdXBzIjpbeyJuYW1lIjoiQ1BVIiwicnVsZXMiOlt7ImV4cHIiOiJzdW0ocmF0ZShjb250YWluZXJfY3B1X3VzYWdlX3NlY29uZHNfdG90YWx7Y29udGFpbmVyIT1cIlwifVs1bV0pKSIsInJlY29yZCI6ImNsdXN0ZXI6Y3B1X3VzYWdlOnJhdGU1bSJ9LHsiZXhwciI6InJhdGUoY29udGFpbmVyX2NwdV91c2FnZV9zZWNvbmRzX3RvdGFse2NvbnRhaW5lciE9XCJcIn1bNW1dKSIsInJlY29yZCI6ImNsdXN0ZXI6Y3B1X3VzYWdlX25vc3VtOnJhdGU1bSJ9LHsiZXhwciI6ImF2ZyhpcmF0ZShjb250YWluZXJfY3B1X3VzYWdlX3NlY29uZHNfdG90YWx7Y29udGFpbmVyIT1cIlBPRFwiLCBjb250YWluZXIhPVwiXCJ9WzVtXSkpIGJ5IChjb250YWluZXIscG9kLG5hbWVzcGFjZSkiLCJyZWNvcmQiOiJrdWJlY29zdF9jb250YWluZXJfY3B1X3VzYWdlX2lyYXRlIn0seyJleHByIjoic3VtKGNvbnRhaW5lcl9tZW1vcnlfd29ya2luZ19zZXRfYnl0ZXN7Y29udGFpbmVyIT1cIlBPRFwiLGNvbnRhaW5lciE9XCJcIn0pIGJ5IChjb250YWluZXIscG9kLG5hbWVzcGFjZSkiLCJyZWNvcmQiOiJrdWJlY29zdF9jb250YWluZXJfbWVtb3J5X3dvcmtpbmdfc2V0X2J5dGVzIn0seyJleHByIjoic3VtKGNvbnRhaW5lcl9tZW1vcnlfd29ya2luZ19zZXRfYnl0ZXN7Y29udGFpbmVyIT1cIlBPRFwiLGNvbnRhaW5lciE9XCJcIn0pIiwicmVjb3JkIjoia3ViZWNvc3RfY2x1c3Rlcl9tZW1vcnlfd29ya2luZ19zZXRfYnl0ZXMifV19LHsibmFtZSI6IlNhdmluZ3MiLCJydWxlcyI6W3siZXhwciI6InN1bShhdmcoa3ViZV9wb2Rfb3duZXJ7b3duZXJfa2luZCE9XCJEYWVtb25TZXRcIn0pIGJ5IChwb2QpICogc3VtKGNvbnRhaW5lcl9jcHVfYWxsb2NhdGlvbikgYnkgKHBvZCkpIiwibGFiZWxzIjp7ImRhZW1vbnNldCI6ImZhbHNlIn0sInJlY29yZCI6Imt1YmVjb3N0X3NhdmluZ3NfY3B1X2FsbG9jYXRpb24ifSx7ImV4cHIiOiJzdW0oYXZnKGt1YmVfcG9kX293bmVye293bmVyX2tpbmQ9XCJEYWVtb25TZXRcIn0pIGJ5IChwb2QpICogc3VtKGNvbnRhaW5lcl9jcHVfYWxsb2NhdGlvbikgYnkgKHBvZCkpIC8gc3VtKGt1YmVfbm9kZV9pbmZvKSIsImxhYmVscyI6eyJkYWVtb25zZXQiOiJ0cnVlIn0sInJlY29yZCI6Imt1YmVjb3N0X3NhdmluZ3NfY3B1X2FsbG9jYXRpb24ifSx7ImV4cHIiOiJzdW0oYXZnKGt1YmVfcG9kX293bmVye293bmVyX2tpbmQhPVwiRGFlbW9uU2V0XCJ9KSBieSAocG9kKSAqIHN1bShjb250YWluZXJfbWVtb3J5X2FsbG9jYXRpb25fYnl0ZXMpIGJ5IChwb2QpKSIsImxhYmVscyI6eyJkYWVtb25zZXQiOiJmYWxzZSJ9LCJyZWNvcmQiOiJrdWJlY29zdF9zYXZpbmdzX21lbW9yeV9hbGxvY2F0aW9uX2J5dGVzIn0seyJleHByIjoic3VtKGF2ZyhrdWJlX3BvZF9vd25lcntvd25lcl9raW5kPVwiRGFlbW9uU2V0XCJ9KSBieSAocG9kKSAqIHN1bShjb250YWluZXJfbWVtb3J5X2FsbG9jYXRpb25fYnl0ZXMpIGJ5IChwb2QpKSAvIHN1bShrdWJlX25vZGVfaW5mbykiLCJsYWJlbHMiOnsiZGFlbW9uc2V0IjoidHJ1ZSJ9LCJyZWNvcmQiOiJrdWJlY29zdF9zYXZpbmdzX21lbW9yeV9hbGxvY2F0aW9uX2J5dGVzIn1dfV19fSwic2VydmljZUFjY291bnRzIjp7ImFsZXJ0bWFuYWdlciI6eyJjcmVhdGUiOnRydWV9LCJub2RlRXhwb3J0ZXIiOnsiY3JlYXRlIjp0cnVlfSwic2VydmVyIjp7ImFubm90YXRpb25zIjp7fSwiY3JlYXRlIjp0cnVlfX19LCJyZXBvcnRpbmciOnsiZXJyb3JSZXBvcnRpbmciOnRydWUsImxvZ0NvbGxlY3Rpb24iOnRydWUsInByb2R1Y3RBbmFseXRpY3MiOnRydWUsInZhbHVlc1JlcG9ydGluZyI6dHJ1ZX0sInNlcnZpY2UiOnsiYW5ub3RhdGlvbnMiOnt9LCJsYWJlbHMiOnt9LCJub2RlUG9ydCI6e30sInBvcnQiOjkwOTAsInRhcmdldFBvcnQiOjkwOTAsInR5cGUiOiJDbHVzdGVySVAifSwic2VydmljZUFjY291bnQiOnsiYW5ub3RhdGlvbnMiOnt9LCJjcmVhdGUiOnRydWV9LCJzaWdWNFByb3h5Ijp7Imhvc3QiOiJhcHMtd29ya3NwYWNlcy51cy13ZXN0LTIuYW1hem9uYXdzLmNvbSIsImltYWdlIjoicHVibGljLmVjci5hd3MvYXdzLW9ic2VydmFiaWxpdHkvYXdzLXNpZ3Y0LXByb3h5OmxhdGVzdCIsImltYWdlUHVsbFBvbGljeSI6IklmTm90UHJlc2VudCIsIm5hbWUiOiJhcHMiLCJwb3J0Ijo4MDA1LCJyZWdpb24iOiJ1cy13ZXN0LTIiLCJyZXNvdXJjZXMiOnt9fSwic3VwcG9ydE5GUyI6ZmFsc2UsInRvbGVyYXRpb25zIjpbXSwidG9wb2xvZ3lTcHJlYWRDb25zdHJhaW50cyI6W10sInVwZ3JhZGUiOnsidG9WMiI6ZmFsc2V9fQ==
+              value: eyJhZmZpbml0eSI6e30sImF3c3N0b3JlIjp7ImFubm90YXRpb25zIjp7fSwiY3JlYXRlU2VydmljZUFjY291bnQiOmZhbHNlLCJpbWFnZU5hbWVBbmRWZXJzaW9uIjoiZ2NyLmlvL2t1YmVjb3N0MS9hd3NzdG9yZTpsYXRlc3QiLCJub2RlU2VsZWN0b3IiOnt9LCJwcmlvcml0eUNsYXNzTmFtZSI6IiIsInVzZUF3c1N0b3JlIjpmYWxzZX0sImRpYWdub3N0aWNzIjp7ImNvbGxlY3RIZWxtVmFsdWVzIjpmYWxzZSwiZW5hYmxlZCI6dHJ1ZSwia2VlcERpYWdub3N0aWNIaXN0b3J5IjpmYWxzZSwicG9sbGluZ0ludGVydmFsIjoiMzAwcyJ9LCJleHRyYU9iamVjdHMiOltdLCJleHRyYVZvbHVtZU1vdW50cyI6W10sImV4dHJhVm9sdW1lcyI6W10sImZlZGVyYXRlZEVUTCI6eyJhZ2VudE9ubHkiOmZhbHNlLCJmZWRlcmF0ZWRDbHVzdGVyIjpmYWxzZSwicmVhZE9ubHlQcmltYXJ5IjpmYWxzZSwicmVkaXJlY3RTM0JhY2t1cCI6ZmFsc2UsInVzZU11bHRpQ2x1c3RlckRCIjpmYWxzZX0sImZvcmVjYXN0aW5nIjp7ImFmZmluaXR5Ijp7fSwiYW5ub3RhdGlvbnMiOnt9LCJlbmFibGVkIjp0cnVlLCJlbnYiOnsiR1VOSUNPUk5fQ01EX0FSR1MiOiItLWxvZy1sZXZlbCBpbmZvIC10IDEyMDAifSwiZnVsbEltYWdlTmFtZSI6Imdjci5pby9rdWJlY29zdDEva3ViZWNvc3QtbW9kZWxpbmc6djAuMS4yMiIsImltYWdlUHVsbFBvbGljeSI6IklmTm90UHJlc2VudCIsImxpdmVuZXNzUHJvYmUiOnsiZW5hYmxlZCI6dHJ1ZSwiZmFpbHVyZVRocmVzaG9sZCI6MjAwLCJpbml0aWFsRGVsYXlTZWNvbmRzIjoxMCwicGVyaW9kU2Vjb25kcyI6MTB9LCJub2RlU2VsZWN0b3IiOnt9LCJyZWFkaW5lc3NQcm9iZSI6eyJlbmFibGVkIjp0cnVlLCJmYWlsdXJlVGhyZXNob2xkIjoyMDAsImluaXRpYWxEZWxheVNlY29uZHMiOjEwLCJwZXJpb2RTZWNvbmRzIjoxMH0sInJlc291cmNlcyI6eyJsaW1pdHMiOnsiY3B1IjoiMTUwMG0iLCJtZW1vcnkiOiIxR2kifSwicmVxdWVzdHMiOnsiY3B1IjoiMjAwbSIsIm1lbW9yeSI6IjMwME1pIn19LCJ0b2xlcmF0aW9ucyI6W119LCJnbG9iYWwiOnsiYWRkaXRpb25hbExhYmVscyI6e30sImFubm90YXRpb25zIjp7fSwiY29udGFpbmVyU2VjdXJpdHlDb250ZXh0Ijp7ImFsbG93UHJpdmlsZWdlRXNjYWxhdGlvbiI6ZmFsc2UsImNhcGFiaWxpdGllcyI6eyJkcm9wIjpbIkFMTCJdfSwicHJpdmlsZWdlZCI6ZmFsc2UsInJlYWRPbmx5Um9vdEZpbGVzeXN0ZW0iOnRydWV9LCJpbnRlZ3JhdGlvbnMiOnt9LCJub3RpZmljYXRpb25zIjp7ImFsZXJ0bWFuYWdlciI6eyJlbmFibGVkIjp0cnVlLCJmcWRuIjoiaHR0cDovL3N4LWt1YmUtcHJvbWV0aGV1cy1zdGFjay1hbGVydG1hbmFnZXIubW9uaXRvcmluZzo5MDkzLyJ9fSwicGxhdGZvcm1zIjp7ImNpY2QiOnsiZW5hYmxlZCI6dHJ1ZSwic2tpcFNhbml0eUNoZWNrcyI6ZmFsc2V9fSwicG9kQW5ub3RhdGlvbnMiOnt9LCJwcm9tZXRoZXVzIjp7ImVuYWJsZWQiOnRydWUsImZxZG4iOiJodHRwOi8vc3gta3ViZS1wcm9tZXRoZXVzLXN0YWNrLXByb21ldGhldXMubW9uaXRvcmluZzo5MDkwLyIsImluc2VjdXJlU2tpcFZlcmlmeSI6ZmFsc2UsImt1YmVSQkFDUHJveHkiOmZhbHNlfSwic2VjdXJpdHlDb250ZXh0Ijp7ImZzR3JvdXAiOjEwMDEsImZzR3JvdXBDaGFuZ2VQb2xpY3kiOiJPblJvb3RNaXNtYXRjaCIsInJ1bkFzR3JvdXAiOjEwMDEsInJ1bkFzTm9uUm9vdCI6dHJ1ZSwicnVuQXNVc2VyIjoxMDAxLCJzZWNjb21wUHJvZmlsZSI6eyJ0eXBlIjoiUnVudGltZURlZmF1bHQifX19LCJncmFmYW5hIjp7ImFkbWluUGFzc3dvcmQiOiJzdHJvbmdwYXNzd29yZCIsImFkbWluVXNlciI6ImFkbWluIiwiYWZmaW5pdHkiOnt9LCJhbm5vdGF0aW9ucyI6e30sImRhc2hib2FyZFByb3ZpZGVycyI6e30sImRhc2hib2FyZHMiOnt9LCJkYXNoYm9hcmRzQ29uZmlnTWFwcyI6e30sImRlcGxveW1lbnRTdHJhdGVneSI6IlJvbGxpbmdVcGRhdGUiLCJkb3dubG9hZERhc2hib2FyZHNJbWFnZSI6eyJwdWxsUG9saWN5IjoiSWZOb3RQcmVzZW50IiwicmVwb3NpdG9yeSI6ImN1cmxpbWFnZXMvY3VybCIsInRhZyI6ImxhdGVzdCJ9LCJlbnYiOnt9LCJlbnZGcm9tU2VjcmV0IjoiIiwiZXh0cmFTZWNyZXRNb3VudHMiOltdLCJncmFmYW5hLmluaSI6eyJhbmFseXRpY3MiOnsiY2hlY2tfZm9yX3VwZGF0ZXMiOnRydWV9LCJhdXRoLmFub255bW91cyI6eyJlbmFibGVkIjp0cnVlLCJvcmdfbmFtZSI6Ik1haW4gT3JnLiIsIm9yZ19yb2xlIjoiRWRpdG9yIn0sImdyYWZhbmFfbmV0Ijp7InVybCI6Imh0dHBzOi8vZ3JhZmFuYS5uZXQifSwibG9nIjp7Im1vZGUiOiJjb25zb2xlIn0sInBhdGhzIjp7ImRhdGEiOiIvdmFyL2xpYi9ncmFmYW5hL2RhdGEiLCJsb2dzIjoiL3Zhci9sb2cvZ3JhZmFuYSIsInBsdWdpbnMiOiIvdmFyL2xpYi9ncmFmYW5hL3BsdWdpbnMiLCJwcm92aXNpb25pbmciOiIvZXRjL2dyYWZhbmEvcHJvdmlzaW9uaW5nIn0sInNlcnZlciI6eyJyb290X3VybCI6IiUocHJvdG9jb2wpczovLyUoZG9tYWluKXM6JShodHRwX3BvcnQpcy9ncmFmYW5hIiwic2VydmVfZnJvbV9zdWJfcGF0aCI6ZmFsc2V9fSwiaW1hZ2UiOnsicHVsbFBvbGljeSI6IklmTm90UHJlc2VudCIsInJlcG9zaXRvcnkiOiJncmFmYW5hL2dyYWZhbmEiLCJ0YWciOiIxMS40LjAifSwibGl2ZW5lc3NQcm9iZSI6eyJmYWlsdXJlVGhyZXNob2xkIjoxMCwiaHR0cEdldCI6eyJwYXRoIjoiL2FwaS9oZWFsdGgiLCJwb3J0IjozMDAwfSwiaW5pdGlhbERlbGF5U2Vjb25kcyI6NjAsInRpbWVvdXRTZWNvbmRzIjozMH0sIm5hbWVzcGFjZV9kYXNoYm9hcmRzIjoia3ViZWNvc3QiLCJuYW1lc3BhY2VfZGF0YXNvdXJjZXMiOiJrdWJlY29zdCIsIm5vZGVTZWxlY3RvciI6e30sInBsdWdpbnMiOltdLCJwb2RBbm5vdGF0aW9ucyI6e30sInByaW9yaXR5Q2xhc3NOYW1lIjoiIiwicmJhYyI6eyJjcmVhdGUiOnRydWV9LCJyZWFkaW5lc3NQcm9iZSI6eyJodHRwR2V0Ijp7InBhdGgiOiIvYXBpL2hlYWx0aCIsInBvcnQiOjMwMDB9fSwicmVwbGljYXMiOjEsInJlc291cmNlcyI6e30sInNlY3VyaXR5Q29udGV4dCI6e30sInNlcnZpY2UiOnsiYW5ub3RhdGlvbnMiOnt9LCJsYWJlbHMiOnt9LCJwb3J0Ijo4MCwidHlwZSI6IkNsdXN0ZXJJUCJ9LCJzZXJ2aWNlQWNjb3VudCI6eyJjcmVhdGUiOnRydWUsIm5hbWUiOiIifSwic2lkZWNhciI6eyJkYXNoYm9hcmRzIjp7ImFubm90YXRpb25zIjp7fSwiZW5hYmxlZCI6dHJ1ZSwiZXJyb3JfdGhyb3R0bGVfc2xlZXAiOjAsImZvbGRlciI6Ii90bXAvZGFzaGJvYXJkcyIsImxhYmVsIjoiZ3JhZmFuYV9kYXNoYm9hcmQiLCJsYWJlbFZhbHVlIjoiMSJ9LCJpbWFnZSI6eyJwdWxsUG9saWN5IjoiSWZOb3RQcmVzZW50IiwicmVwb3NpdG9yeSI6ImdoY3IuaW8va2l3aWdyaWQvazhzLXNpZGVjYXIiLCJ0YWciOiIxLjI5LjEifSwicmVzb3VyY2VzIjp7fX0sInRvbGVyYXRpb25zIjpbXX0sImluZ3Jlc3MiOnsiZW5hYmxlZCI6dHJ1ZSwiaG9zdHMiOlsia3ViZWNvc3QtMTI3LTAtMC0xLm5pcC5pbyJdLCJwYXRoVHlwZSI6IkltcGxlbWVudGF0aW9uU3BlY2lmaWMiLCJwYXRocyI6WyIvIl0sInRscyI6W3siaG9zdHMiOlsia3ViZWNvc3QtMTI3LTAtMC0xLm5pcC5pbyJdLCJzZWNyZXROYW1lIjoia3ViZWNvc3Qtc2VydmVyLXRscyJ9XX0sImluaXRDaG93bkRhdGEiOnsicmVzb3VyY2VzIjp7fX0sImluaXRDaG93bkRhdGFJbWFnZSI6ImJ1c3lib3giLCJrdWJlY29zdERlcGxveW1lbnQiOnsiYW5ub3RhdGlvbnMiOnt9LCJsYWJlbHMiOnt9LCJyZXBsaWNhcyI6MX0sImt1YmVjb3N0RnJvbnRlbmQiOnsiZGVwbG95TWV0aG9kIjoic2luZ2xlcG9kIiwiZGVwbG95bWVudFN0cmF0ZWd5Ijp7fSwiZW5hYmxlZCI6dHJ1ZSwiaGFSZXBsaWNhcyI6MiwiaW1hZ2UiOiJnY3IuaW8va3ViZWNvc3QxL2Zyb250ZW5kIiwiaW1hZ2VQdWxsUG9saWN5IjoiSWZOb3RQcmVzZW50IiwiaXB2NiI6eyJlbmFibGVkIjp0cnVlfSwibGl2ZW5lc3NQcm9iZSI6eyJlbmFibGVkIjp0cnVlLCJmYWlsdXJlVGhyZXNob2xkIjo2LCJpbml0aWFsRGVsYXlTZWNvbmRzIjoxLCJwZXJpb2RTZWNvbmRzIjo1fSwicmVhZGluZXNzUHJvYmUiOnsiZW5hYmxlZCI6dHJ1ZSwiZmFpbHVyZVRocmVzaG9sZCI6NiwiaW5pdGlhbERlbGF5U2Vjb25kcyI6MSwicGVyaW9kU2Vjb25kcyI6NX0sInJlc291cmNlcyI6eyJyZXF1ZXN0cyI6eyJjcHUiOiIxMG0iLCJtZW1vcnkiOiI1NU1pIn19LCJ1c2VEZWZhdWx0RnFkbiI6ZmFsc2V9LCJrdWJlY29zdE1vZGVsIjp7ImNvbnRhaW5lclN0YXRzRW5hYmxlZCI6dHJ1ZSwiZXRsRGFpbHlTdG9yZUR1cmF0aW9uRGF5cyI6OTEsImV0bEhvdXJseVN0b3JlRHVyYXRpb25Ib3VycyI6NDksImV0bFJlYWRPbmx5TW9kZSI6ZmFsc2UsImV4dHJhQXJncyI6W10sImV4dHJhUG9ydHMiOltdLCJpbWFnZSI6Imdjci5pby9rdWJlY29zdDEvY29zdC1tb2RlbCIsImltYWdlUHVsbFBvbGljeSI6IklmTm90UHJlc2VudCIsImxpdmVuZXNzUHJvYmUiOnsiZW5hYmxlZCI6dHJ1ZSwiZmFpbHVyZVRocmVzaG9sZCI6MjAwLCJpbml0aWFsRGVsYXlTZWNvbmRzIjoxMCwicGVyaW9kU2Vjb25kcyI6MTB9LCJsb2dMZXZlbCI6ImluZm8iLCJtYXhRdWVyeUNvbmN1cnJlbmN5Ijo1LCJyZWFkaW5lc3NQcm9iZSI6eyJlbmFibGVkIjp0cnVlLCJmYWlsdXJlVGhyZXNob2xkIjoyMDAsImluaXRpYWxEZWxheVNlY29uZHMiOjEwLCJwZXJpb2RTZWNvbmRzIjoxMH0sInJlc291cmNlcyI6eyJyZXF1ZXN0cyI6eyJjcHUiOiIyMDBtIiwibWVtb3J5IjoiNTVNaSJ9fX0sImt1YmVjb3N0UHJvZHVjdENvbmZpZ3MiOnsiY2x1c3Rlck5hbWUiOiJrdWJyaVggRGVtbyIsImNsdXN0ZXJQcm9maWxlIjoiZGV2ZWxvcG1lbnQiLCJjdXJyZW5jeUNvZGUiOiJFVVIiLCJjdXN0b21QcmljZXNFbmFibGVkIjp0cnVlLCJkZWZhdWx0TW9kZWxQcmljaW5nIjp7IkNQVSI6IjI4LjAiLCJHUFUiOiI2OTMuNTAiLCJSQU0iOiIzLjA5IiwiZW5hYmxlZCI6dHJ1ZSwiaW50ZXJuZXROZXR3b3JrRWdyZXNzIjoiMC4xMiIsInJlZ2lvbk5ldHdvcmtFZ3Jlc3MiOiIwLjAxIiwic3BvdENQVSI6IjQuODYiLCJzcG90R1BVIjoiMjI1LjAiLCJzcG90UkFNIjoiMC42NSIsInN0b3JhZ2UiOiIwLjA0Iiwiem9uZU5ldHdvcmtFZ3Jlc3MiOiIwLjAxIn19LCJub2RlU2VsZWN0b3IiOnt9LCJwZXJzaXN0ZW50Vm9sdW1lIjp7ImFubm90YXRpb25zIjp7fSwiZGJTaXplIjoiNUdpIiwiZW5hYmxlZCI6dHJ1ZSwibGFiZWxzIjp7fSwic2l6ZSI6IjVHaSJ9LCJwcm9tZXRoZXVzIjp7ImFsZXJ0bWFuYWdlckZpbGVzIjp7ImFsZXJ0bWFuYWdlci55bWwiOnsiZ2xvYmFsIjp7fSwicmVjZWl2ZXJzIjpbeyJuYW1lIjoiZGVmYXVsdC1yZWNlaXZlciJ9XSwicm91dGUiOnsiZ3JvdXBfaW50ZXJ2YWwiOiI1bSIsImdyb3VwX3dhaXQiOiIxMHMiLCJyZWNlaXZlciI6ImRlZmF1bHQtcmVjZWl2ZXIiLCJyZXBlYXRfaW50ZXJ2YWwiOiIzaCJ9fX0sImNvbmZpZ21hcFJlbG9hZCI6e30sImV4dHJhU2NyYXBlQ29uZmlncyI6Ii0gam9iX25hbWU6IGt1YmVjb3N0XG4gIGhvbm9yX2xhYmVsczogdHJ1ZVxuICBzY3JhcGVfaW50ZXJ2YWw6IDFtXG4gIHNjcmFwZV90aW1lb3V0OiA2MHNcbiAgbWV0cmljc19wYXRoOiAvbWV0cmljc1xuICBzY2hlbWU6IGh0dHBcbiAgZG5zX3NkX2NvbmZpZ3M6XG4gIC0gbmFtZXM6XG4gICAgLSB7eyB0ZW1wbGF0ZSBcImNvc3QtYW5hbHl6ZXIuc2VydmljZU5hbWVcIiAuIH19XG4gICAgdHlwZTogJ0EnXG4gICAgcG9ydDogOTAwM1xuLSBqb2JfbmFtZToga3ViZWNvc3QtbmV0d29ya2luZ1xuICBrdWJlcm5ldGVzX3NkX2NvbmZpZ3M6XG4gICAgLSByb2xlOiBwb2RcbiAgcmVsYWJlbF9jb25maWdzOlxuICAjIFNjcmFwZSBvbmx5IHRoZSB0aGUgdGFyZ2V0cyBtYXRjaGluZyB0aGUgZm9sbG93aW5nIG1ldGFkYXRhXG4gICAgLSBzb3VyY2VfbGFiZWxzOiBbX19tZXRhX2t1YmVybmV0ZXNfcG9kX2xhYmVsX2FwcF9rdWJlcm5ldGVzX2lvX2luc3RhbmNlXVxuICAgICAgYWN0aW9uOiBrZWVwXG4gICAgICByZWdleDogIGt1YmVjb3N0XG4gICAgLSBzb3VyY2VfbGFiZWxzOiBbX19tZXRhX2t1YmVybmV0ZXNfcG9kX2xhYmVsX2FwcF9rdWJlcm5ldGVzX2lvX25hbWVdXG4gICAgICBhY3Rpb246IGtlZXBcbiAgICAgIHJlZ2V4OiAgbmV0d29yay1jb3N0c1xuLSBqb2JfbmFtZToga3ViZWNvc3QtYWdncmVnYXRvclxuICBzY3JhcGVfaW50ZXJ2YWw6IDFtXG4gIHNjcmFwZV90aW1lb3V0OiA2MHNcbiAgbWV0cmljc19wYXRoOiAvbWV0cmljc1xuICBzY2hlbWU6IGh0dHBcbiAgZG5zX3NkX2NvbmZpZ3M6XG4gIC0gbmFtZXM6XG4gICAgLSB7eyB0ZW1wbGF0ZSBcImFnZ3JlZ2F0b3Iuc2VydmljZU5hbWVcIiAuIH19XG4gICAgdHlwZTogJ0EnXG4gICAge3stIGlmIG9yIC5WYWx1ZXMuc2FtbC5lbmFibGVkIC5WYWx1ZXMub2lkYy5lbmFibGVkIH19XG4gICAgcG9ydDogOTAwOFxuICAgIHt7LSBlbHNlIH19XG4gICAgcG9ydDogOTAwNFxuICAgIHt7LSBlbmQgfX1cbiMjIEVuYWJsZXMgc2NyYXBpbmcgb2YgTlZJRElBIEdQVSBtZXRyaWNzIHZpYSBkY2dtLWV4cG9ydGVyLiBTY3JhcGVzIGFsbFxuIyMgZW5kcG9pbnRzIHdoaWNoIGNvbnRhaW4gXCJkY2dtLWV4cG9ydGVyXCIgaW4gbGFiZWxzIFwiYXBwXCIsXG4jIyBcImFwcC5rdWJlcm5ldGVzLmlvL2NvbXBvbmVudFwiLCBvciBcImFwcC5rdWJlcm5ldGVzLmlvL25hbWVcIiB3aXRoIGEgY2FzZVxuIyMgaW5zZW5zaXRpdmUgbWF0Y2guIFRoZSBsYWJlbCBtdXN0IGJlIHByZXNlbnQgb24gdGhlIEs4cyBzZXJ2aWNlIGVuZHBvaW50cyBhbmQgbm90IGp1c3QgcG9kcy5cbiMjIFJlZnM6XG4jIyBodHRwczovL2dpdGh1Yi5jb20vTlZJRElBL2dwdS1vcGVyYXRvci9ibG9iL2Q0MzE2YTQxNWJiZDY4NGNlODQxNmE4ODA0MjMwNWZjMWEwOTNhYTQvYXNzZXRzL3N0YXRlLWRjZ20tZXhwb3J0ZXIvMDYwMF9zZXJ2aWNlLnlhbWwjTDdcbiMjIGh0dHBzOi8vZ2l0aHViLmNvbS9OVklESUEvZGNnbS1leHBvcnRlci9ibG9iLzU0ZmQxY2ExMzdjNjY1MTFhODdhNzIwMzkwNjEzNjgwYjliZGFiZGQvZGVwbG95bWVudC90ZW1wbGF0ZXMvc2VydmljZS55YW1sI0wyM1xuLSBqb2JfbmFtZToga3ViZWNvc3QtZGNnbS1leHBvcnRlclxuICBrdWJlcm5ldGVzX3NkX2NvbmZpZ3M6XG4gICAgLSByb2xlOiBlbmRwb2ludHNcbiAgcmVsYWJlbF9jb25maWdzOlxuICAgIC0gc291cmNlX2xhYmVsczogW19fbWV0YV9rdWJlcm5ldGVzX3BvZF9sYWJlbF9hcHAsIF9fbWV0YV9rdWJlcm5ldGVzX3BvZF9sYWJlbF9hcHBfa3ViZXJuZXRlc19pb19jb21wb25lbnQsIF9fbWV0YV9rdWJlcm5ldGVzX3BvZF9sYWJlbF9hcHBfa3ViZXJuZXRlc19pb19uYW1lXVxuICAgICAgYWN0aW9uOiBrZWVwXG4gICAgICByZWdleDogKD9pKSguKmRjZ20tZXhwb3J0ZXIuKnwuKmRjZ20tZXhwb3J0ZXIuKnwuKmRjZ20tZXhwb3J0ZXIuKilcbiIsInJiYWMiOnsiY3JlYXRlIjp0cnVlfSwic2VydmVyIjp7ImFmZmluaXR5Ijp7fSwiYWxlcnRtYW5hZ2VycyI6W10sImFubm90YXRpb25zIjp7fSwiYmFzZVVSTCI6IiIsImNvbmZpZ01hcE92ZXJyaWRlTmFtZSI6IiIsImNvbmZpZ1BhdGgiOiIvZXRjL2NvbmZpZy9wcm9tZXRoZXVzLnltbCIsImNvbnRhaW5lclNlY3VyaXR5Q29udGV4dCI6e30sImVtcHR5RGlyIjp7InNpemVMaW1pdCI6IiJ9LCJlbmFibGVkIjp0cnVlLCJlbnYiOltdLCJleHRyYUFyZ3MiOnsicXVlcnkubWF4LWNvbmN1cnJlbmN5IjoxLCJxdWVyeS5tYXgtc2FtcGxlcyI6MTAwMDAwMDAwfSwiZXh0cmFDb25maWdtYXBNb3VudHMiOltdLCJleHRyYUZsYWdzIjpbIndlYi5lbmFibGUtbGlmZWN5Y2xlIl0sImV4dHJhSG9zdFBhdGhNb3VudHMiOltdLCJleHRyYUluaXRDb250YWluZXJzIjpbXSwiZXh0cmFTZWNyZXRNb3VudHMiOltdLCJleHRyYVZvbHVtZU1vdW50cyI6W10sImV4dHJhVm9sdW1lcyI6W10sImdsb2JhbCI6eyJldmFsdWF0aW9uX2ludGVydmFsIjoiMW0iLCJleHRlcm5hbF9sYWJlbHMiOnsiY2x1c3Rlcl9pZCI6Imt1YnJpeCJ9LCJzY3JhcGVfaW50ZXJ2YWwiOiIxbSIsInNjcmFwZV90aW1lb3V0IjoiNjBzIn0sImltYWdlIjp7InB1bGxQb2xpY3kiOiJJZk5vdFByZXNlbnQiLCJyZXBvc2l0b3J5IjoicXVheS5pby9wcm9tZXRoZXVzL3Byb21ldGhldXMiLCJ0YWciOiJ2My4xLjAifSwibGl2ZW5lc3NQcm9iZUZhaWx1cmVUaHJlc2hvbGQiOjMsImxpdmVuZXNzUHJvYmVJbml0aWFsRGVsYXkiOjUsImxpdmVuZXNzUHJvYmVTdWNjZXNzVGhyZXNob2xkIjoxLCJsaXZlbmVzc1Byb2JlVGltZW91dCI6MywibmFtZSI6InNlcnZlciIsIm5vZGVTZWxlY3RvciI6e30sInBlcnNpc3RlbnRWb2x1bWUiOnsiYWNjZXNzTW9kZXMiOlsiUmVhZFdyaXRlT25jZSJdLCJhbm5vdGF0aW9ucyI6e30sImVuYWJsZWQiOnRydWUsImV4aXN0aW5nQ2xhaW0iOiIiLCJtb3VudFBhdGgiOiIvZGF0YSIsInNpemUiOiIzMkdpIiwic3ViUGF0aCI6IiJ9LCJwb2RBbm5vdGF0aW9ucyI6e30sInBvZExhYmVscyI6e30sInByZWZpeFVSTCI6IiIsInByaW9yaXR5Q2xhc3NOYW1lIjoiIiwicmVhZGluZXNzUHJvYmVGYWlsdXJlVGhyZXNob2xkIjozLCJyZWFkaW5lc3NQcm9iZUluaXRpYWxEZWxheSI6NSwicmVhZGluZXNzUHJvYmVTdWNjZXNzVGhyZXNob2xkIjoxLCJyZWFkaW5lc3NQcm9iZVRpbWVvdXQiOjMsInJlbW90ZVJlYWQiOnt9LCJyZW1vdGVXcml0ZSI6e30sInJlcGxpY2FDb3VudCI6MSwicmVzb3VyY2VzIjp7fSwicmV0ZW50aW9uIjoiOTdoIiwic2VjdXJpdHlDb250ZXh0Ijp7fSwic2VydmljZSI6eyJhbm5vdGF0aW9ucyI6e30sImNsdXN0ZXJJUCI6IiIsImV4dGVybmFsSVBzIjpbXSwibGFiZWxzIjp7fSwibG9hZEJhbGFuY2VySVAiOiIiLCJsb2FkQmFsYW5jZXJTb3VyY2VSYW5nZXMiOltdLCJzZXJ2aWNlUG9ydCI6ODAsInNlc3Npb25BZmZpbml0eSI6Ik5vbmUiLCJ0eXBlIjoiQ2x1c3RlcklQIn0sInN0cmF0ZWd5Ijp7InR5cGUiOiJSZWNyZWF0ZSJ9LCJ0ZXJtaW5hdGlvbkdyYWNlUGVyaW9kU2Vjb25kcyI6MzAwLCJ0b2xlcmF0aW9ucyI6W119LCJzZXJ2ZXJGaWxlcyI6eyJhbGVydGluZ19ydWxlcy55bWwiOnt9LCJwcm9tZXRoZXVzLnltbCI6eyJydWxlX2ZpbGVzIjpbIi9ldGMvY29uZmlnL3JlY29yZGluZ19ydWxlcy55bWwiLCIvZXRjL2NvbmZpZy9hbGVydGluZ19ydWxlcy55bWwiXSwic2NyYXBlX2NvbmZpZ3MiOlt7ImpvYl9uYW1lIjoicHJvbWV0aGV1cyIsInN0YXRpY19jb25maWdzIjpbeyJ0YXJnZXRzIjpbImxvY2FsaG9zdDo5MDkwIl19XX0seyJiZWFyZXJfdG9rZW5fZmlsZSI6Ii92YXIvcnVuL3NlY3JldHMva3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC90b2tlbiIsImpvYl9uYW1lIjoia3ViZXJuZXRlcy1ub2Rlcy1jYWR2aXNvciIsImt1YmVybmV0ZXNfc2RfY29uZmlncyI6W3sicm9sZSI6Im5vZGUifV0sIm1ldHJpY19yZWxhYmVsX2NvbmZpZ3MiOlt7ImFjdGlvbiI6ImtlZXAiLCJyZWdleCI6Iihjb250YWluZXJfY3B1X3VzYWdlX3NlY29uZHNfdG90YWx8Y29udGFpbmVyX21lbW9yeV93b3JraW5nX3NldF9ieXRlc3xjb250YWluZXJfbmV0d29ya19yZWNlaXZlX2Vycm9yc190b3RhbHxjb250YWluZXJfbmV0d29ya190cmFuc21pdF9lcnJvcnNfdG90YWx8Y29udGFpbmVyX25ldHdvcmtfcmVjZWl2ZV9wYWNrZXRzX2Ryb3BwZWRfdG90YWx8Y29udGFpbmVyX25ldHdvcmtfdHJhbnNtaXRfcGFja2V0c19kcm9wcGVkX3RvdGFsfGNvbnRhaW5lcl9tZW1vcnlfdXNhZ2VfYnl0ZXN8Y29udGFpbmVyX2NwdV9jZnNfdGhyb3R0bGVkX3BlcmlvZHNfdG90YWx8Y29udGFpbmVyX2NwdV9jZnNfcGVyaW9kc190b3RhbHxjb250YWluZXJfZnNfdXNhZ2VfYnl0ZXN8Y29udGFpbmVyX2ZzX2xpbWl0X2J5dGVzfGNvbnRhaW5lcl9jcHVfY2ZzX3BlcmlvZHNfdG90YWx8Y29udGFpbmVyX2ZzX2lub2Rlc19mcmVlfGNvbnRhaW5lcl9mc19pbm9kZXNfdG90YWx8Y29udGFpbmVyX2ZzX3VzYWdlX2J5dGVzfGNvbnRhaW5lcl9mc19saW1pdF9ieXRlc3xjb250YWluZXJfY3B1X2Nmc190aHJvdHRsZWRfcGVyaW9kc190b3RhbHxjb250YWluZXJfY3B1X2Nmc19wZXJpb2RzX3RvdGFsfGNvbnRhaW5lcl9uZXR3b3JrX3JlY2VpdmVfYnl0ZXNfdG90YWx8Y29udGFpbmVyX25ldHdvcmtfdHJhbnNtaXRfYnl0ZXNfdG90YWx8Y29udGFpbmVyX2ZzX2lub2Rlc19mcmVlfGNvbnRhaW5lcl9mc19pbm9kZXNfdG90YWx8Y29udGFpbmVyX2ZzX3VzYWdlX2J5dGVzfGNvbnRhaW5lcl9mc19saW1pdF9ieXRlc3xjb250YWluZXJfc3BlY19jcHVfc2hhcmVzfGNvbnRhaW5lcl9zcGVjX21lbW9yeV9saW1pdF9ieXRlc3xjb250YWluZXJfbmV0d29ya19yZWNlaXZlX2J5dGVzX3RvdGFsfGNvbnRhaW5lcl9uZXR3b3JrX3RyYW5zbWl0X2J5dGVzX3RvdGFsfGNvbnRhaW5lcl9mc19yZWFkc19ieXRlc190b3RhbHxjb250YWluZXJfbmV0d29ya19yZWNlaXZlX2J5dGVzX3RvdGFsfGNvbnRhaW5lcl9mc193cml0ZXNfYnl0ZXNfdG90YWx8Y29udGFpbmVyX2ZzX3JlYWRzX2J5dGVzX3RvdGFsfGNhZHZpc29yX3ZlcnNpb25faW5mb3xrdWJlY29zdF9wdl9pbmZvKSIsInNvdXJjZV9sYWJlbHMiOlsiX19uYW1lX18iXX0seyJhY3Rpb24iOiJyZXBsYWNlIiwicmVnZXgiOiIoLispIiwic291cmNlX2xhYmVscyI6WyJjb250YWluZXIiXSwidGFyZ2V0X2xhYmVsIjoiY29udGFpbmVyX25hbWUifSx7ImFjdGlvbiI6InJlcGxhY2UiLCJyZWdleCI6IiguKykiLCJzb3VyY2VfbGFiZWxzIjpbInBvZCJdLCJ0YXJnZXRfbGFiZWwiOiJwb2RfbmFtZSJ9XSwicmVsYWJlbF9jb25maWdzIjpbeyJhY3Rpb24iOiJsYWJlbG1hcCIsInJlZ2V4IjoiX19tZXRhX2t1YmVybmV0ZXNfbm9kZV9sYWJlbF8oLispIn0seyJyZXBsYWNlbWVudCI6Imt1YmVybmV0ZXMuZGVmYXVsdC5zdmM6NDQzIiwidGFyZ2V0X2xhYmVsIjoiX19hZGRyZXNzX18ifSx7InJlZ2V4IjoiKC4rKSIsInJlcGxhY2VtZW50IjoiL2FwaS92MS9ub2Rlcy8kMS9wcm94eS9tZXRyaWNzL2NhZHZpc29yIiwic291cmNlX2xhYmVscyI6WyJfX21ldGFfa3ViZXJuZXRlc19ub2RlX25hbWUiXSwidGFyZ2V0X2xhYmVsIjoiX19tZXRyaWNzX3BhdGhfXyJ9XSwic2NoZW1lIjoiaHR0cHMiLCJ0bHNfY29uZmlnIjp7ImNhX2ZpbGUiOiIvdmFyL3J1bi9zZWNyZXRzL2t1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvY2EuY3J0IiwiaW5zZWN1cmVfc2tpcF92ZXJpZnkiOnRydWV9fSx7ImJlYXJlcl90b2tlbl9maWxlIjoiL3Zhci9ydW4vc2VjcmV0cy9rdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3Rva2VuIiwiam9iX25hbWUiOiJrdWJlcm5ldGVzLW5vZGVzIiwia3ViZXJuZXRlc19zZF9jb25maWdzIjpbeyJyb2xlIjoibm9kZSJ9XSwibWV0cmljX3JlbGFiZWxfY29uZmlncyI6W3siYWN0aW9uIjoia2VlcCIsInJlZ2V4IjoiKGt1YmVsZXRfdm9sdW1lX3N0YXRzX3VzZWRfYnl0ZXMpIiwic291cmNlX2xhYmVscyI6WyJfX25hbWVfXyJdfV0sInJlbGFiZWxfY29uZmlncyI6W3siYWN0aW9uIjoibGFiZWxtYXAiLCJyZWdleCI6Il9fbWV0YV9rdWJlcm5ldGVzX25vZGVfbGFiZWxfKC4rKSJ9LHsicmVwbGFjZW1lbnQiOiJrdWJlcm5ldGVzLmRlZmF1bHQuc3ZjOjQ0MyIsInRhcmdldF9sYWJlbCI6Il9fYWRkcmVzc19fIn0seyJyZWdleCI6IiguKykiLCJyZXBsYWNlbWVudCI6Ii9hcGkvdjEvbm9kZXMvJDEvcHJveHkvbWV0cmljcyIsInNvdXJjZV9sYWJlbHMiOlsiX19tZXRhX2t1YmVybmV0ZXNfbm9kZV9uYW1lIl0sInRhcmdldF9sYWJlbCI6Il9fbWV0cmljc19wYXRoX18ifV0sInNjaGVtZSI6Imh0dHBzIiwidGxzX2NvbmZpZyI6eyJjYV9maWxlIjoiL3Zhci9ydW4vc2VjcmV0cy9rdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L2NhLmNydCIsImluc2VjdXJlX3NraXBfdmVyaWZ5Ijp0cnVlfX0seyJqb2JfbmFtZSI6Imt1YmVybmV0ZXMtc2VydmljZS1lbmRwb2ludHMiLCJrdWJlcm5ldGVzX3NkX2NvbmZpZ3MiOlt7InJvbGUiOiJlbmRwb2ludHMifV0sIm1ldHJpY19yZWxhYmVsX2NvbmZpZ3MiOlt7ImFjdGlvbiI6ImtlZXAiLCJyZWdleCI6Iihjb250YWluZXJfY3B1X2FsbG9jYXRpb258Y29udGFpbmVyX2NwdV91c2FnZV9zZWNvbmRzX3RvdGFsfGNvbnRhaW5lcl9mc19saW1pdF9ieXRlc3xjb250YWluZXJfZnNfd3JpdGVzX2J5dGVzX3RvdGFsfGNvbnRhaW5lcl9ncHVfYWxsb2NhdGlvbnxjb250YWluZXJfbWVtb3J5X2FsbG9jYXRpb25fYnl0ZXN8Y29udGFpbmVyX21lbW9yeV91c2FnZV9ieXRlc3xjb250YWluZXJfbWVtb3J5X3dvcmtpbmdfc2V0X2J5dGVzfGNvbnRhaW5lcl9uZXR3b3JrX3JlY2VpdmVfYnl0ZXNfdG90YWx8Y29udGFpbmVyX25ldHdvcmtfdHJhbnNtaXRfYnl0ZXNfdG90YWx8RENHTV9GSV9ERVZfR1BVX1VUSUx8ZGVwbG95bWVudF9tYXRjaF9sYWJlbHN8a3ViZV9kYWVtb25zZXRfc3RhdHVzX2Rlc2lyZWRfbnVtYmVyX3NjaGVkdWxlZHxrdWJlX2RhZW1vbnNldF9zdGF0dXNfbnVtYmVyX3JlYWR5fGt1YmVfZGVwbG95bWVudF9zcGVjX3JlcGxpY2FzfGt1YmVfZGVwbG95bWVudF9zdGF0dXNfcmVwbGljYXN8a3ViZV9kZXBsb3ltZW50X3N0YXR1c19yZXBsaWNhc19hdmFpbGFibGV8a3ViZV9qb2Jfc3RhdHVzX2ZhaWxlZHxrdWJlX25hbWVzcGFjZV9hbm5vdGF0aW9uc3xrdWJlX25hbWVzcGFjZV9sYWJlbHN8a3ViZV9ub2RlX2luZm98a3ViZV9ub2RlX2xhYmVsc3xrdWJlX25vZGVfc3RhdHVzX2FsbG9jYXRhYmxlfGt1YmVfbm9kZV9zdGF0dXNfYWxsb2NhdGFibGVfY3B1X2NvcmVzfGt1YmVfbm9kZV9zdGF0dXNfYWxsb2NhdGFibGVfbWVtb3J5X2J5dGVzfGt1YmVfbm9kZV9zdGF0dXNfY2FwYWNpdHl8a3ViZV9ub2RlX3N0YXR1c19jYXBhY2l0eV9jcHVfY29yZXN8a3ViZV9ub2RlX3N0YXR1c19jYXBhY2l0eV9tZW1vcnlfYnl0ZXN8a3ViZV9ub2RlX3N0YXR1c19jb25kaXRpb258a3ViZV9wZXJzaXN0ZW50dm9sdW1lX2NhcGFjaXR5X2J5dGVzfGt1YmVfcGVyc2lzdGVudHZvbHVtZV9zdGF0dXNfcGhhc2V8a3ViZV9wZXJzaXN0ZW50dm9sdW1lY2xhaW1faW5mb3xrdWJlX3BlcnNpc3RlbnR2b2x1bWVjbGFpbV9yZXNvdXJjZV9yZXF1ZXN0c19zdG9yYWdlX2J5dGVzfGt1YmVfcG9kX2NvbnRhaW5lcl9pbmZvfGt1YmVfcG9kX2NvbnRhaW5lcl9yZXNvdXJjZV9saW1pdHN8a3ViZV9wb2RfY29udGFpbmVyX3Jlc291cmNlX2xpbWl0c19jcHVfY29yZXN8a3ViZV9wb2RfY29udGFpbmVyX3Jlc291cmNlX2xpbWl0c19tZW1vcnlfYnl0ZXN8a3ViZV9wb2RfY29udGFpbmVyX3Jlc291cmNlX3JlcXVlc3RzfGt1YmVfcG9kX2NvbnRhaW5lcl9yZXNvdXJjZV9yZXF1ZXN0c19jcHVfY29yZXN8a3ViZV9wb2RfY29udGFpbmVyX3Jlc291cmNlX3JlcXVlc3RzX21lbW9yeV9ieXRlc3xrdWJlX3BvZF9jb250YWluZXJfc3RhdHVzX3Jlc3RhcnRzX3RvdGFsfGt1YmVfcG9kX2NvbnRhaW5lcl9zdGF0dXNfcnVubmluZ3xrdWJlX3BvZF9jb250YWluZXJfc3RhdHVzX3Rlcm1pbmF0ZWRfcmVhc29ufGt1YmVfcG9kX2xhYmVsc3xrdWJlX3BvZF9vd25lcnxrdWJlX3BvZF9zdGF0dXNfcGhhc2V8a3ViZV9yZXBsaWNhc2V0X293bmVyfGt1YmVfc3RhdGVmdWxzZXRfcmVwbGljYXN8a3ViZV9zdGF0ZWZ1bHNldF9zdGF0dXNfcmVwbGljYXN8a3ViZWNvc3RfY2x1c3Rlcl9pbmZvfGt1YmVjb3N0X2NsdXN0ZXJfbWFuYWdlbWVudF9jb3N0fGt1YmVjb3N0X2NsdXN0ZXJfbWVtb3J5X3dvcmtpbmdfc2V0X2J5dGVzfGt1YmVjb3N0X2xvYWRfYmFsYW5jZXJfY29zdHxrdWJlY29zdF9uZXR3b3JrX2ludGVybmV0X2VncmVzc19jb3N0fGt1YmVjb3N0X25ldHdvcmtfcmVnaW9uX2VncmVzc19jb3N0fGt1YmVjb3N0X25ldHdvcmtfem9uZV9lZ3Jlc3NfY29zdHxrdWJlY29zdF9ub2RlX2lzX3Nwb3R8a3ViZWNvc3RfcG9kX25ldHdvcmtfZWdyZXNzX2J5dGVzX3RvdGFsfG5vZGVfY3B1X2hvdXJseV9jb3N0fG5vZGVfY3B1X3NlY29uZHNfdG90YWx8bm9kZV9kaXNrX3JlYWRzX2NvbXBsZXRlZHxub2RlX2Rpc2tfcmVhZHNfY29tcGxldGVkX3RvdGFsfG5vZGVfZGlza193cml0ZXNfY29tcGxldGVkfG5vZGVfZGlza193cml0ZXNfY29tcGxldGVkX3RvdGFsfG5vZGVfZmlsZXN5c3RlbV9kZXZpY2VfZXJyb3J8bm9kZV9ncHVfY291bnR8bm9kZV9ncHVfaG91cmx5X2Nvc3R8bm9kZV9tZW1vcnlfQnVmZmVyc19ieXRlc3xub2RlX21lbW9yeV9DYWNoZWRfYnl0ZXN8bm9kZV9tZW1vcnlfTWVtQXZhaWxhYmxlX2J5dGVzfG5vZGVfbWVtb3J5X01lbUZyZWVfYnl0ZXN8bm9kZV9tZW1vcnlfTWVtVG90YWxfYnl0ZXN8bm9kZV9uZXR3b3JrX3RyYW5zbWl0X2J5dGVzX3RvdGFsfG5vZGVfcmFtX2hvdXJseV9jb3N0fG5vZGVfdG90YWxfaG91cmx5X2Nvc3R8cG9kX3B2Y19hbGxvY2F0aW9ufHB2X2hvdXJseV9jb3N0fHNlcnZpY2Vfc2VsZWN0b3JfbGFiZWxzfHN0YXRlZnVsU2V0X21hdGNoX2xhYmVsc3xrdWJlY29zdF9wdl9pbmZvfHVwKSIsInNvdXJjZV9sYWJlbHMiOlsiX19uYW1lX18iXX1dLCJyZWxhYmVsX2NvbmZpZ3MiOlt7ImFjdGlvbiI6ImtlZXAiLCJyZWdleCI6dHJ1ZSwic291cmNlX2xhYmVscyI6WyJfX21ldGFfa3ViZXJuZXRlc19zZXJ2aWNlX2Fubm90YXRpb25fcHJvbWV0aGV1c19pb19zY3JhcGUiXX0seyJhY3Rpb24iOiJrZWVwIiwicmVnZXgiOiIoLipub2RlLWV4cG9ydGVyfGt1YmVjb3N0LW5ldHdvcmstY29zdHMpIiwic291cmNlX2xhYmVscyI6WyJfX21ldGFfa3ViZXJuZXRlc19lbmRwb2ludHNfbmFtZSJdfSx7ImFjdGlvbiI6InJlcGxhY2UiLCJyZWdleCI6IihodHRwcz8pIiwic291cmNlX2xhYmVscyI6WyJfX21ldGFfa3ViZXJuZXRlc19zZXJ2aWNlX2Fubm90YXRpb25fcHJvbWV0aGV1c19pb19zY2hlbWUiXSwidGFyZ2V0X2xhYmVsIjoiX19zY2hlbWVfXyJ9LHsiYWN0aW9uIjoicmVwbGFjZSIsInJlZ2V4IjoiKC4rKSIsInNvdXJjZV9sYWJlbHMiOlsiX19tZXRhX2t1YmVybmV0ZXNfc2VydmljZV9hbm5vdGF0aW9uX3Byb21ldGhldXNfaW9fcGF0aCJdLCJ0YXJnZXRfbGFiZWwiOiJfX21ldHJpY3NfcGF0aF9fIn0seyJhY3Rpb24iOiJyZXBsYWNlIiwicmVnZXgiOiIoW146XSspKD86OlxcZCspPzsoXFxkKykiLCJyZXBsYWNlbWVudCI6IiQxOiQyIiwic291cmNlX2xhYmVscyI6WyJfX2FkZHJlc3NfXyIsIl9fbWV0YV9rdWJlcm5ldGVzX3NlcnZpY2VfYW5ub3RhdGlvbl9wcm9tZXRoZXVzX2lvX3BvcnQiXSwidGFyZ2V0X2xhYmVsIjoiX19hZGRyZXNzX18ifSx7ImFjdGlvbiI6ImxhYmVsbWFwIiwicmVnZXgiOiJfX21ldGFfa3ViZXJuZXRlc19zZXJ2aWNlX2xhYmVsXyguKykifSx7ImFjdGlvbiI6InJlcGxhY2UiLCJzb3VyY2VfbGFiZWxzIjpbIl9fbWV0YV9rdWJlcm5ldGVzX25hbWVzcGFjZSJdLCJ0YXJnZXRfbGFiZWwiOiJrdWJlcm5ldGVzX25hbWVzcGFjZSJ9LHsiYWN0aW9uIjoicmVwbGFjZSIsInNvdXJjZV9sYWJlbHMiOlsiX19tZXRhX2t1YmVybmV0ZXNfc2VydmljZV9uYW1lIl0sInRhcmdldF9sYWJlbCI6Imt1YmVybmV0ZXNfbmFtZSJ9LHsiYWN0aW9uIjoicmVwbGFjZSIsInNvdXJjZV9sYWJlbHMiOlsiX19tZXRhX2t1YmVybmV0ZXNfcG9kX25vZGVfbmFtZSJdLCJ0YXJnZXRfbGFiZWwiOiJrdWJlcm5ldGVzX25vZGUifV19XX0sInJlY29yZGluZ19ydWxlcy55bWwiOnt9LCJydWxlcyI6eyJncm91cHMiOlt7Im5hbWUiOiJDUFUiLCJydWxlcyI6W3siZXhwciI6InN1bShyYXRlKGNvbnRhaW5lcl9jcHVfdXNhZ2Vfc2Vjb25kc190b3RhbHtjb250YWluZXIhPVwiXCJ9WzVtXSkpIiwicmVjb3JkIjoiY2x1c3RlcjpjcHVfdXNhZ2U6cmF0ZTVtIn0seyJleHByIjoicmF0ZShjb250YWluZXJfY3B1X3VzYWdlX3NlY29uZHNfdG90YWx7Y29udGFpbmVyIT1cIlwifVs1bV0pIiwicmVjb3JkIjoiY2x1c3RlcjpjcHVfdXNhZ2Vfbm9zdW06cmF0ZTVtIn0seyJleHByIjoiYXZnKGlyYXRlKGNvbnRhaW5lcl9jcHVfdXNhZ2Vfc2Vjb25kc190b3RhbHtjb250YWluZXIhPVwiUE9EXCIsIGNvbnRhaW5lciE9XCJcIn1bNW1dKSkgYnkgKGNvbnRhaW5lcixwb2QsbmFtZXNwYWNlKSIsInJlY29yZCI6Imt1YmVjb3N0X2NvbnRhaW5lcl9jcHVfdXNhZ2VfaXJhdGUifSx7ImV4cHIiOiJzdW0oY29udGFpbmVyX21lbW9yeV93b3JraW5nX3NldF9ieXRlc3tjb250YWluZXIhPVwiUE9EXCIsY29udGFpbmVyIT1cIlwifSkgYnkgKGNvbnRhaW5lcixwb2QsbmFtZXNwYWNlKSIsInJlY29yZCI6Imt1YmVjb3N0X2NvbnRhaW5lcl9tZW1vcnlfd29ya2luZ19zZXRfYnl0ZXMifSx7ImV4cHIiOiJzdW0oY29udGFpbmVyX21lbW9yeV93b3JraW5nX3NldF9ieXRlc3tjb250YWluZXIhPVwiUE9EXCIsY29udGFpbmVyIT1cIlwifSkiLCJyZWNvcmQiOiJrdWJlY29zdF9jbHVzdGVyX21lbW9yeV93b3JraW5nX3NldF9ieXRlcyJ9XX0seyJuYW1lIjoiU2F2aW5ncyIsInJ1bGVzIjpbeyJleHByIjoic3VtKGF2ZyhrdWJlX3BvZF9vd25lcntvd25lcl9raW5kIT1cIkRhZW1vblNldFwifSkgYnkgKHBvZCkgKiBzdW0oY29udGFpbmVyX2NwdV9hbGxvY2F0aW9uKSBieSAocG9kKSkiLCJsYWJlbHMiOnsiZGFlbW9uc2V0IjoiZmFsc2UifSwicmVjb3JkIjoia3ViZWNvc3Rfc2F2aW5nc19jcHVfYWxsb2NhdGlvbiJ9LHsiZXhwciI6InN1bShhdmcoa3ViZV9wb2Rfb3duZXJ7b3duZXJfa2luZD1cIkRhZW1vblNldFwifSkgYnkgKHBvZCkgKiBzdW0oY29udGFpbmVyX2NwdV9hbGxvY2F0aW9uKSBieSAocG9kKSkgLyBzdW0oa3ViZV9ub2RlX2luZm8pIiwibGFiZWxzIjp7ImRhZW1vbnNldCI6InRydWUifSwicmVjb3JkIjoia3ViZWNvc3Rfc2F2aW5nc19jcHVfYWxsb2NhdGlvbiJ9LHsiZXhwciI6InN1bShhdmcoa3ViZV9wb2Rfb3duZXJ7b3duZXJfa2luZCE9XCJEYWVtb25TZXRcIn0pIGJ5IChwb2QpICogc3VtKGNvbnRhaW5lcl9tZW1vcnlfYWxsb2NhdGlvbl9ieXRlcykgYnkgKHBvZCkpIiwibGFiZWxzIjp7ImRhZW1vbnNldCI6ImZhbHNlIn0sInJlY29yZCI6Imt1YmVjb3N0X3NhdmluZ3NfbWVtb3J5X2FsbG9jYXRpb25fYnl0ZXMifSx7ImV4cHIiOiJzdW0oYXZnKGt1YmVfcG9kX293bmVye293bmVyX2tpbmQ9XCJEYWVtb25TZXRcIn0pIGJ5IChwb2QpICogc3VtKGNvbnRhaW5lcl9tZW1vcnlfYWxsb2NhdGlvbl9ieXRlcykgYnkgKHBvZCkpIC8gc3VtKGt1YmVfbm9kZV9pbmZvKSIsImxhYmVscyI6eyJkYWVtb25zZXQiOiJ0cnVlIn0sInJlY29yZCI6Imt1YmVjb3N0X3NhdmluZ3NfbWVtb3J5X2FsbG9jYXRpb25fYnl0ZXMifV19XX19LCJzZXJ2aWNlQWNjb3VudHMiOnsiYWxlcnRtYW5hZ2VyIjp7ImNyZWF0ZSI6dHJ1ZX0sIm5vZGVFeHBvcnRlciI6eyJjcmVhdGUiOnRydWV9LCJzZXJ2ZXIiOnsiYW5ub3RhdGlvbnMiOnt9LCJjcmVhdGUiOnRydWV9fX0sInJlcG9ydGluZyI6eyJlcnJvclJlcG9ydGluZyI6dHJ1ZSwibG9nQ29sbGVjdGlvbiI6dHJ1ZSwicHJvZHVjdEFuYWx5dGljcyI6dHJ1ZSwidmFsdWVzUmVwb3J0aW5nIjp0cnVlfSwic2VydmljZSI6eyJhbm5vdGF0aW9ucyI6e30sImxhYmVscyI6e30sIm5vZGVQb3J0Ijp7fSwicG9ydCI6OTA5MCwidGFyZ2V0UG9ydCI6OTA5MCwidHlwZSI6IkNsdXN0ZXJJUCJ9LCJzZXJ2aWNlQWNjb3VudCI6eyJhbm5vdGF0aW9ucyI6e30sImNyZWF0ZSI6dHJ1ZX0sInNpZ1Y0UHJveHkiOnsiaG9zdCI6ImFwcy13b3Jrc3BhY2VzLnVzLXdlc3QtMi5hbWF6b25hd3MuY29tIiwiaW1hZ2UiOiJwdWJsaWMuZWNyLmF3cy9hd3Mtb2JzZXJ2YWJpbGl0eS9hd3Mtc2lndjQtcHJveHk6bGF0ZXN0IiwiaW1hZ2VQdWxsUG9saWN5IjoiSWZOb3RQcmVzZW50IiwibmFtZSI6ImFwcyIsInBvcnQiOjgwMDUsInJlZ2lvbiI6InVzLXdlc3QtMiIsInJlc291cmNlcyI6e319LCJzdXBwb3J0TkZTIjpmYWxzZSwidGVhbXMiOnsidGVhbXNDb25maWciOltdLCJ0ZWFtc0NvbmZpZ01hcE5hbWUiOiIifSwidG9sZXJhdGlvbnMiOltdLCJ0b3BvbG9neVNwcmVhZENvbnN0cmFpbnRzIjpbXSwidXBncmFkZSI6eyJ0b1YyIjpmYWxzZX19
             - name: READ_ONLY
               value: "false"
             - name: PROMETHEUS_SERVER_ENDPOINT
               valueFrom:
@@ -142,10 +144,8 @@
             - name: PV_ENABLED
               value: "true"
             - name: MAX_QUERY_CONCURRENCY
               value: "5"
-            - name: UTC_OFFSET
-              value: "+00:00"
             - name: CLUSTER_ID
               value: kubrix
             - name: COST_EVENTS_AUDIT_ENABLED
               value: "false"
@@ -166,9 +166,9 @@
             - name: WATERFOWL_ENABLED
               value: "true"
             - name: DIAGNOSTICS_RUN_IN_COST_MODEL
               value: "false"
-        - image: gcr.io/kubecost1/frontend:prod-2.5.3
+        - image: gcr.io/kubecost1/frontend:prod-2.6.2
           env:
             - name: GET_HOSTS_FROM
               value: dns
           name: cost-analyzer-frontend
@@ -185,8 +185,10 @@
             - name: tmp
               mountPath: /var/lib/nginx/tmp
             - name: tmp
               mountPath: /var/run
+            - name: log
+              mountPath: /var/log/nginx
             - name: nginx-conf
               mountPath: /etc/nginx/conf.d/
           resources:
             requests:
@@ -216,9 +218,9 @@
               drop:
               - ALL
             privileged: false
             readOnlyRootFilesystem: true
-          image: gcr.io/kubecost1/cost-model:prod-2.5.3
+          image: gcr.io/kubecost1/cost-model:prod-2.6.2
           readinessProbe:
             httpGet:
               path: /healthz
               port: 9004
@@ -270,9 +272,9 @@
             - name: GRAFANA_ENABLED
               value: "false"
         
         - name: cloud-cost
-          image: gcr.io/kubecost1/cost-model:prod-2.5.3
+          image: gcr.io/kubecost1/cost-model:prod-2.6.2
           
           readinessProbe:
             httpGet:
               path: /healthz
diff -U 4 -r out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-frontend-config-map-template.yaml out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-frontend-config-map-template.yaml
--- out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-frontend-config-map-template.yaml	2025-02-21 23:22:13.417916806 +0000
+++ out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-frontend-config-map-template.yaml	2025-02-21 23:21:49.270697945 +0000
@@ -6,9 +6,9 @@
   name: nginx-conf
   namespace: default
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
 data:
@@ -48,12 +48,8 @@
         text/xml
         text/x-component
         text/x-cross-domain-policy;
 
-    upstream api {
-        server release-name-cost-analyzer.default:9001;
-    }
-
     upstream model {
         server release-name-cost-analyzer.default:9003;
     }
     upstream forecasting {
@@ -81,19 +77,12 @@
         add_header Cache-Control "max-age=300";
         location / {
             try_files $uri $uri/ /index.html;
         }
-        add_header ETag "2.5.3";
+        add_header ETag "2.6.2";
         listen 9090;
         listen [::]:9090;
-        location /api/ {
-            proxy_pass http://api/;
-            proxy_redirect off;
-            proxy_http_version 1.1;
-            proxy_set_header Connection "";
-            proxy_set_header  X-Real-IP  $remote_addr;
-            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
-        }
+        
         location /model/ {
             proxy_connect_timeout       300;
             proxy_send_timeout          300;
             proxy_read_timeout          300;
@@ -688,8 +677,56 @@
             proxy_set_header Connection "";
             proxy_set_header  X-Real-IP  $remote_addr;
             proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
         }
+        location = /model/rbac/teams {
+            proxy_read_timeout          300;
+            proxy_pass http://aggregator/rbac/teams;
+            proxy_redirect off;
+            proxy_set_header Connection "";
+            proxy_set_header  X-Real-IP  $remote_addr;
+            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
+        }
+        location = /model/rbac/team {
+            proxy_read_timeout          300;
+            proxy_pass http://aggregator/rbac/team;
+            proxy_redirect off;
+            proxy_set_header Connection "";
+            proxy_set_header  X-Real-IP  $remote_addr;
+            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
+        }
+        location = /model/rbac/roles {
+            proxy_read_timeout          300;
+            proxy_pass http://aggregator/rbac/roles;
+            proxy_redirect off;
+            proxy_set_header Connection "";
+            proxy_set_header  X-Real-IP  $remote_addr;
+            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
+        }
+        location = /model/rbac/role {
+            proxy_read_timeout          300;
+            proxy_pass http://aggregator/rbac/role;
+            proxy_redirect off;
+            proxy_set_header Connection "";
+            proxy_set_header  X-Real-IP  $remote_addr;
+            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
+        }
+        location = /model/rbac/currentTeams {
+            proxy_read_timeout          300;
+            proxy_pass http://aggregator/rbac/currentTeams;
+            proxy_redirect off;
+            proxy_set_header Connection "";
+            proxy_set_header  X-Real-IP  $remote_addr;
+            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
+        }
+        location = /model/rbac/currentPermissions {
+            proxy_read_timeout          300;
+            proxy_pass http://aggregator/rbac/currentPermissions;
+            proxy_redirect off;
+            proxy_set_header Connection "";
+            proxy_set_header  X-Real-IP  $remote_addr;
+            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
+        }
         location = /model/debug/orchestrator {
             proxy_read_timeout          300;
             proxy_pass http://aggregator/debug/orchestrator;
             proxy_redirect off;
@@ -1129,9 +1166,9 @@
                 "pluginsEnabled": "false",
                 "carbonEstimatesEnabled": "false",
                 "clusterControllerEnabled": "false",
                 "forecastingEnabled": "true",
-                "chartVersion": "2.5.3",
+                "chartVersion": "2.6.2",
                 "hourlyDataRetention": "49",
                 "dailyDataRetention": "91",
                 "hideDiagnostics": "false",
                 "hideOrphanedResources": "false",
diff -U 4 -r out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-ingress-template.yaml out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-ingress-template.yaml
--- out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-ingress-template.yaml	2025-02-21 23:22:13.420916832 +0000
+++ out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-ingress-template.yaml	2025-02-21 23:21:49.273697973 +0000
@@ -6,9 +6,9 @@
   name: release-name-cost-analyzer
   namespace: default
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
 spec:
diff -U 4 -r out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-pricing-configmap.yaml out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-pricing-configmap.yaml
--- out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-pricing-configmap.yaml	2025-02-21 23:22:13.417916806 +0000
+++ out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-pricing-configmap.yaml	2025-02-21 23:21:49.270697945 +0000
@@ -6,9 +6,9 @@
   name: pricing-configs
   namespace: default
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
 data:
diff -U 4 -r out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-pvc-template.yaml out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-pvc-template.yaml
--- out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-pvc-template.yaml	2025-02-21 23:22:13.419916823 +0000
+++ out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-pvc-template.yaml	2025-02-21 23:21:49.272697964 +0000
@@ -6,9 +6,9 @@
   name: release-name-cost-analyzer
   namespace: default
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
 spec:
diff -U 4 -r out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-service-account-template.yaml out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-service-account-template.yaml
--- out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-service-account-template.yaml	2025-02-21 23:22:13.417916806 +0000
+++ out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-service-account-template.yaml	2025-02-21 23:21:49.270697945 +0000
@@ -6,8 +6,8 @@
   name: release-name-cost-analyzer
   namespace: default
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
diff -U 4 -r out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-service-template.yaml out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-service-template.yaml
--- out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-service-template.yaml	2025-02-21 23:22:13.419916823 +0000
+++ out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-service-template.yaml	2025-02-21 23:21:49.272697964 +0000
@@ -6,9 +6,9 @@
   name: release-name-cost-analyzer
   namespace: default
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
 spec:
diff -U 4 -r out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-smtp-configmap.yaml out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-smtp-configmap.yaml
--- out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-smtp-configmap.yaml	2025-02-21 23:22:13.417916806 +0000
+++ out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-smtp-configmap.yaml	2025-02-21 23:21:49.270697945 +0000
@@ -6,8 +6,8 @@
   name: smtp-configs
   namespace: default
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
diff -U 4 -r out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/external-grafana-config-map-template.yaml out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/external-grafana-config-map-template.yaml
--- out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/external-grafana-config-map-template.yaml	2025-02-21 23:22:13.417916806 +0000
+++ out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/external-grafana-config-map-template.yaml	2025-02-21 23:21:49.270697945 +0000
@@ -6,9 +6,9 @@
   name: external-grafana-config-map
   namespace: default
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
 data:
diff -U 4 -r out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/forecasting-deployment.yaml out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/forecasting-deployment.yaml
--- out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/forecasting-deployment.yaml	2025-02-21 23:22:13.420916832 +0000
+++ out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/forecasting-deployment.yaml	2025-02-21 23:21:49.273697973 +0000
@@ -5,9 +5,9 @@
 metadata:
   name: release-name-forecasting
   namespace: default
   labels:
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/name: forecasting
     app.kubernetes.io/instance: release-name
     app: forecasting
@@ -39,9 +39,9 @@
           type: RuntimeDefault
       restartPolicy: Always
       containers:
         - name: forecasting
-          image: gcr.io/kubecost1/kubecost-modeling:v0.1.19
+          image: gcr.io/kubecost1/kubecost-modeling:v0.1.22
           volumeMounts:
             - name: tmp
               mountPath: /tmp
           securityContext:
diff -U 4 -r out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/forecasting-service.yaml out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/forecasting-service.yaml
--- out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/forecasting-service.yaml	2025-02-21 23:22:13.419916823 +0000
+++ out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/forecasting-service.yaml	2025-02-21 23:21:49.272697964 +0000
@@ -5,9 +5,9 @@
 metadata:
   name: release-name-forecasting
   namespace: default
   labels:
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/name: forecasting
     app.kubernetes.io/instance: release-name
     app: forecasting
diff -U 4 -r out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-attached-disks.yaml out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-attached-disks.yaml
--- out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-attached-disks.yaml	2025-02-21 23:22:13.417916806 +0000
+++ out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-attached-disks.yaml	2025-02-21 23:21:49.270697945 +0000
@@ -6,9 +6,9 @@
   name: grafana-dashboard-attached-disk-metrics
   namespace: kubecost
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
     grafana_dashboard: "1"
@@ -48,9 +48,9 @@
       "panels": [
         {
           "datasource": {
             "type": "prometheus",
-            "uid": "PBFA97CFB590B2093"
+            "uid": "${datasource}"
           },
           "fieldConfig": {
             "defaults": {
               "color": {
@@ -129,9 +129,9 @@
           "targets": [
             {
               "datasource": {
                 "type": "prometheus",
-                "uid": "PBFA97CFB590B2093"
+                "uid": "${datasource}"
               },
               "editorMode": "code",
               "expr": "sum(container_fs_limit_bytes{instance=~'$disk', device!=\"tmpfs\", id=\"/\", cluster_id=~'$cluster'}) by (cluster_id, instance)",
               "format": "time_series",
@@ -147,9 +147,9 @@
         },
         {
           "datasource": {
             "type": "prometheus",
-            "uid": "PBFA97CFB590B2093"
+            "uid": "${datasource}"
           },
           "fieldConfig": {
             "defaults": {
               "color": {
@@ -230,9 +230,9 @@
           "targets": [
             {
               "datasource": {
                 "type": "prometheus",
-                "uid": "PBFA97CFB590B2093"
+                "uid": "${datasource}"
               },
               "editorMode": "code",
               "expr": "sum(container_fs_usage_bytes{instance=~'$disk',id=\"/\", cluster_id=~'$cluster'}) by (cluster_id, instance) / sum(container_fs_limit_bytes{instance=~'$disk',device!=\"tmpfs\", id=\"/\", cluster_id=~'$cluster'}) by (cluster_id,instance)",
               "format": "time_series",
@@ -248,9 +248,9 @@
         },
         {
           "datasource": {
             "type": "prometheus",
-            "uid": "PBFA97CFB590B2093"
+            "uid": "${datasource}"
           },
           "fieldConfig": {
             "defaults": {
               "color": {
@@ -331,9 +331,9 @@
           "targets": [
             {
               "datasource": {
                 "type": "prometheus",
-                "uid": "PBFA97CFB590B2093"
+                "uid": "${datasource}"
               },
               "editorMode": "code",
               "expr": "1 - sum(container_fs_inodes_free{instance=~'$disk',id=\"/\", cluster_id=~'$cluster'}) by (cluster_id, instance) / sum(container_fs_inodes_total{instance=~'$disk',id=\"/\", cluster_id=~'$cluster'}) by (cluster_id, instance)",
               "format": "time_series",
@@ -348,9 +348,9 @@
         },
         {
           "datasource": {
             "type": "prometheus",
-            "uid": "PBFA97CFB590B2093"
+            "uid": "${datasource}"
           },
           "fieldConfig": {
             "defaults": {
               "color": {
@@ -429,9 +429,9 @@
           "targets": [
             {
               "datasource": {
                 "type": "prometheus",
-                "uid": "PBFA97CFB590B2093"
+                "uid": "${datasource}"
               },
               "editorMode": "code",
               "expr": "sum(container_fs_usage_bytes{instance=~'$disk',id=\"/\", cluster_id=~'$cluster'}) by (cluster_id, instance)",
               "format": "time_series",
@@ -458,9 +458,9 @@
           {
             "current": {
               "selected": false,
               "text": "Prometheus",
-              "value": "PBFA97CFB590B2093"
+              "value": "Prometheus"
             },
             "hide": 0,
             "includeAll": false,
             "multi": false,
@@ -480,9 +480,9 @@
               "value": "$__all"
             },
             "datasource": {
               "type": "prometheus",
-              "uid": "PBFA97CFB590B2093"
+              "uid": "${datasource}"
             },
             "definition": "label_values(cluster_id)",
             "hide": 0,
             "includeAll": true,
@@ -506,9 +506,9 @@
               "value": "ip-192-168-147-146.us-east-2.compute.internal"
             },
             "datasource": {
               "type": "prometheus",
-              "uid": "PBFA97CFB590B2093"
+              "uid": "${datasource}"
             },
             "definition": "label_values(container_fs_limit_bytes{cluster_id=~\"$cluster\"}, instance)",
             "hide": 0,
             "includeAll": true,
@@ -560,8 +560,8 @@
         ]
       },
       "timezone": "",
       "title": "Attached disk metrics",
-      "uid": "nBH7qBgMk",
+      "uid": "attached-disk-metrics",
       "version": 7,
       "weekStart": ""
     }
diff -U 4 -r out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-cluster-metrics-template.yaml out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-cluster-metrics-template.yaml
--- out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-cluster-metrics-template.yaml	2025-02-21 23:22:13.417916806 +0000
+++ out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-cluster-metrics-template.yaml	2025-02-21 23:21:49.271697954 +0000
@@ -6,9 +6,9 @@
   name: grafana-dashboard-cluster-metrics
   namespace: kubecost
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
     grafana_dashboard: "1"
diff -U 4 -r out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-cluster-utilization-template.yaml out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-cluster-utilization-template.yaml
--- out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-cluster-utilization-template.yaml	2025-02-21 23:22:13.417916806 +0000
+++ out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-cluster-utilization-template.yaml	2025-02-21 23:21:49.271697954 +0000
@@ -6,9 +6,9 @@
   name: grafana-dashboard-cluster-utilization
   namespace: kubecost
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
     grafana_dashboard: "1"
@@ -130,9 +130,9 @@
             "targets": [
               {
                 "datasource": {
                   "type": "prometheus",
-                  "uid": "P0C970EB638C812D0"
+                  "uid": "${datasource}"
                 },
                 "exemplar": false,
                 "expr": "sum(\n (\n (\n sum(kube_node_status_capacity_cpu_cores) by (node)\n * on (node) group_left (label_cloud_google_com_gke_preemptible)\n avg(kube_node_labels{label_cloud_google_com_gke_preemptible=\"true\"}) by (node)\n ) * $costpcpu\n )\n or\n (\n (\n sum(kube_node_status_capacity{resource=\"cpu\", unit=\"core\"}) by (node)\n * on (node) group_left (label_cloud_google_com_gke_preemptible)\n avg(kube_node_labels{label_cloud_google_com_gke_preemptible!=\"true\"}) by (node)\n ) * ($costcpu - ($costcpu / 100 * $costDiscount))\n )\n) ",
                 "format": "time_series",
@@ -214,9 +214,9 @@
             "targets": [
               {
                 "datasource": {
                   "type": "prometheus",
-                  "uid": "P0C970EB638C812D0"
+                  "uid": "${datasource}"
                 },
                 "exemplar": false,
                 "expr": "sum(\n (\n (\n sum(kube_node_status_capacity_memory_bytes) by (node)\n * on (node) group_left (label_cloud_google_com_gke_preemptible)\n avg(kube_node_labels{label_cloud_google_com_gke_preemptible=\"true\"}) by (node)\n ) /1024/1024/1024 * $costpram\n )\n or\n (\n (\n sum(kube_node_status_capacity{resource=\"memory\", unit=\"byte\"}) by (node)\n * on (node) group_left (label_cloud_google_com_gke_preemptible)\n avg(kube_node_labels{label_cloud_google_com_gke_preemptible!=\"true\"}) by (node)\n ) /1024/1024/1024 * ($costram - ($costram / 100 * $costDiscount))\n)\n) ",
                 "format": "time_series",
@@ -298,9 +298,9 @@
             "targets": [
               {
                 "datasource": {
                   "type": "prometheus",
-                  "uid": "P0C970EB638C812D0"
+                  "uid": "${datasource}"
                 },
                 "exemplar": false,
                 "expr": "sum (\n sum(kube_persistentvolumeclaim_info{storageclass=~\".*ssd.*\"}) by (persistentvolumeclaim, namespace, storageclass)\n + on (persistentvolumeclaim, namespace) group_right(storageclass)\n sum(kube_persistentvolumeclaim_resource_requests_storage_bytes) by (persistentvolumeclaim, namespace) or up * 0\n) / 1024 / 1024 /1024 * $costStorageSSD\n\n+\n\nsum (\n sum(kube_persistentvolumeclaim_info{storageclass!~\".*ssd.*\"}) by (persistentvolumeclaim, namespace, storageclass)\n + on (persistentvolumeclaim, namespace) group_right(storageclass)\n sum(kube_persistentvolumeclaim_resource_requests_storage_bytes) by (persistentvolumeclaim, namespace) or up * 0\n) / 1024 / 1024 /1024 * $costStorageStandard\n\n+ \n\nsum(container_fs_limit_bytes{id=\"/\"}) / 1024 / 1024 / 1024 * 1.03 * $costStorageStandard",
                 "format": "time_series",
@@ -383,9 +383,9 @@
             "targets": [
               {
                 "datasource": {
                   "type": "prometheus",
-                  "uid": "P0C970EB638C812D0"
+                  "uid": "${datasource}"
                 },
                 "exemplar": false,
                 "expr": "SUM(rate(node_network_transmit_bytes_total{device=\"eth0\"}[60m]) / 1024 / 1024 / 1024 ) * (60 * 60 * 24 * 30) * $costEgress",
                 "format": "time_series",
@@ -960,9 +960,9 @@
             "targets": [
               {
                 "datasource": {
                   "type": "prometheus",
-                  "uid": "P0C970EB638C812D0"
+                  "uid": "${datasource}"
                 },
                 "exemplar": false,
                 "expr": "# CPU\nsum(\n (\n (\n sum(kube_node_status_capacity_cpu_cores) by (node)\n * on (node) group_left (label_cloud_google_com_gke_preemptible)\n avg(kube_node_labels{label_cloud_google_com_gke_preemptible=\"true\"}) by (node)\n ) * $costpcpu\n )\n or\n (\n (\n sum(kube_node_status_capacity{resource=\"cpu\", unit=\"core\"}) by (node)\n * on (node) group_left (label_cloud_google_com_gke_preemptible)\n avg(kube_node_labels{label_cloud_google_com_gke_preemptible!=\"true\"}) by (node)\n ) * ($costcpu - ($costcpu / 100 * $costDiscount))\n )\n) \n\n+ \n\n# Storage\nsum (\n sum(kube_persistentvolumeclaim_info{storageclass=~\".*ssd.*\"}) by (persistentvolumeclaim, namespace, storageclass)\n + on (persistentvolumeclaim, namespace) group_right(storageclass)\n sum(kube_persistentvolumeclaim_resource_requests_storage_bytes) by (persistentvolumeclaim, namespace) or up * 0\n) / 1024 / 1024 /1024 * $costStorageSSD\n\n+\n\nsum (\n sum(kube_persistentvolumeclaim_info{storageclass!~\".*ssd.*\"}) by (persistentvolumeclaim, namespace, storageclass)\n + on (persistentvolumeclaim, namespace) group_right(storageclass)\n sum(kube_persistentvolumeclaim_resource_requests_storage_bytes) by (persistentvolumeclaim, namespace) or up * 0\n) / 1024 / 1024 /1024 * $costStorageStandard\n\n+ \n\nsum(container_fs_limit_bytes{id=\"/\"}) / 1024 / 1024 / 1024 * 1.03 * $costStorageStandard \n\n+\n\n# END STORAGE\n# RAM \nsum(\n (\n (\n sum(kube_node_status_capacity_memory_bytes) by (node)\n * on (node) group_left (label_cloud_google_com_gke_preemptible)\n avg(kube_node_labels{label_cloud_google_com_gke_preemptible=\"true\"}) by (node)\n ) /1024/1024/1024 * $costpram\n )\n or\n (\n (\n sum(kube_node_status_capacity{resource=\"memory\", unit=\"byte\"}) by (node)\n * on (node) group_left (label_cloud_google_com_gke_preemptible)\n avg(kube_node_labels{label_cloud_google_com_gke_preemptible!=\"true\"}) by (node)\n ) /1024/1024/1024 * ($costram - ($costram / 100 * $costDiscount))\n)\n)\n\n+\n\n#Network \nSUM(rate(node_network_transmit_bytes_total{device=\"eth0\"}[60m]) / 1024 / 1024 / 1024 ) * (60 * 60 * 24 * 30) * $costEgress",
                 "format": "time_series",
diff -U 4 -r out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-deployment-utilization-template.yaml out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-deployment-utilization-template.yaml
--- out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-deployment-utilization-template.yaml	2025-02-21 23:22:13.417916806 +0000
+++ out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-deployment-utilization-template.yaml	2025-02-21 23:21:49.271697954 +0000
@@ -6,9 +6,9 @@
   name: grafana-dashboard-deployment-utilization
   namespace: kubecost
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
     grafana_dashboard: "1"
diff -U 4 -r out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-kubernetes-resource-efficiency-template.yaml out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-kubernetes-resource-efficiency-template.yaml
--- out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-kubernetes-resource-efficiency-template.yaml	2025-02-21 23:22:13.417916806 +0000
+++ out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-kubernetes-resource-efficiency-template.yaml	2025-02-21 23:21:49.271697954 +0000
@@ -6,9 +6,9 @@
   name: grafana-dashboard-kubernetes-resource-efficiency
   namespace: kubecost
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
     grafana_dashboard: "1"
@@ -21,10 +21,10 @@
         "list": [
           {
             "builtIn": 1,
             "datasource": {
-              "type": "grafana",
-              "uid": "-- Grafana --"
+              "type": "datasource",
+              "uid": "grafana"
             },
             "enable": true,
             "hide": true,
             "iconColor": "rgba(0, 211, 255, 1)",
diff -U 4 -r out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-label-cost-utilization-template.yaml out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-label-cost-utilization-template.yaml
--- out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-label-cost-utilization-template.yaml	2025-02-21 23:22:13.418916814 +0000
+++ out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-label-cost-utilization-template.yaml	2025-02-21 23:21:49.271697954 +0000
@@ -6,9 +6,9 @@
   name: grafana-dashboard-label-cost
   namespace: kubecost
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
     grafana_dashboard: "1"
@@ -110,9 +110,9 @@
           "targets": [
             {
               "datasource": {
                 "type": "prometheus",
-                "uid": "P0C970EB638C812D0"
+                "uid": "${datasource}"
               },
               "exemplar": false,
               "expr": "sum(\n  avg(container_cpu_allocation) by (pod,node)\n\n  * on (node) group_left()\n  avg(avg_over_time(node_cpu_hourly_cost[10m])) by (node)\n\n  * on (pod) group_left()\n  label_replace(\n    max(kube_pod_labels{label_$label=~\"$label_value\"}) by (pod),\n    \"pod_name\",\n    \"$1\", \n    \"pod\", \n    \"(.+)\"\n  )\n) * 730",
               "format": "time_series",
@@ -194,9 +194,9 @@
           "targets": [
             {
               "datasource": {
                 "type": "prometheus",
-                "uid": "P0C970EB638C812D0"
+                "uid": "${datasource}"
               },
               "exemplar": false,
               "expr": "sum(\n  avg(container_memory_allocation_bytes) by (pod,node) / 1024 / 1024 / 1024\n\n  * on (node) group_left()\n  avg(avg_over_time(node_ram_hourly_cost[10m])) by (node)\n\n  * on (pod) group_left()\n  label_replace(\n    max(kube_pod_labels{label_$label=~\"$label_value\"}) by (pod),\n    \"pod_name\",\n    \"$1\", \n    \"pod\", \n    \"(.+)\"\n  )\n) * 730",
               "format": "time_series",
@@ -278,9 +278,9 @@
           "targets": [
             {
               "datasource": {
                 "type": "prometheus",
-                "uid": "P0C970EB638C812D0"
+                "uid": "${datasource}"
               },
               "exemplar": false,
               "expr": "sum(\n sum(kube_persistentvolumeclaim_info{storageclass!=\".*ssd.*\"}) by (persistentvolumeclaim, storageclass)\n * on (persistentvolumeclaim) group_right(storageclass)\n sum(kube_persistentvolumeclaim_resource_requests_storage_bytes) by (persistentvolumeclaim)\n * on (persistentvolumeclaim) group_left(label_app)\n max(kube_persistentvolumeclaim_labels{label_$label=~\"$label_value\"}) by (persistentvolumeclaim) or up * 0\n) / 1024 / 1024 /1024 * .04 \n\n+\n\nsum(\n sum(kube_persistentvolumeclaim_info{storageclass=~\".*ssd.*\"}) by (persistentvolumeclaim, storageclass)\n * on (persistentvolumeclaim) group_right(storageclass)\n sum(kube_persistentvolumeclaim_resource_requests_storage_bytes) by (persistentvolumeclaim)\n * on (persistentvolumeclaim) group_left(label_app)\n max(kube_persistentvolumeclaim_labels{label_$label=~\"$label_value\"}) by (persistentvolumeclaim) or up * 0\n) / 1024 / 1024 /1024 * .17 \n",
               "format": "time_series",
@@ -362,9 +362,9 @@
           "targets": [
             {
               "datasource": {
                 "type": "prometheus",
-                "uid": "P0C970EB638C812D0"
+                "uid": "${datasource}"
               },
               "exemplar": false,
               "expr": "# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CPU ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\nsum(\n  avg(container_cpu_allocation) by (pod,node)\n\n  * on (node) group_left()\n  avg(avg_over_time(node_cpu_hourly_cost[10m])) by (node)\n\n  * on (pod) group_left()\n  label_replace(\n    max(kube_pod_labels{label_$label=~\"$label_value\"}) by (pod),\n    \"pod_name\",\n    \"$1\", \n    \"pod\", \n    \"(.+)\"\n  )\n) * 730\n\n#END CPU\n+\n\n# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Memory ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\nsum(\n  avg(container_memory_allocation_bytes) by (pod,node) / 1024 / 1024 / 1024\n\n  * on (node) group_left()\n  avg(avg_over_time(node_ram_hourly_cost[10m])) by (node)\n\n  * on (pod) group_left()\n  label_replace(\n    max(kube_pod_labels{label_$label=~\"$label_value\"}) by (pod),\n    \"pod_name\",\n    \"$1\", \n    \"pod\", \n    \"(.+)\"\n  )\n) * 730\n\n# END MEMORY\n\n+\n\n# ~~~~~~~~~~~~~~~~~~~~~~~~~~~ STORAGE ~~~~~~~~~~~~~~~~~~~~~~~~~\n\nsum(\n sum(kube_persistentvolumeclaim_info{storageclass!=\".*ssd.*\"}) by (persistentvolumeclaim, storageclass)\n * on (persistentvolumeclaim) group_right(storageclass)\n sum(kube_persistentvolumeclaim_resource_requests_storage_bytes) by (persistentvolumeclaim)\n * on (persistentvolumeclaim) group_left(label_app)\n max(kube_persistentvolumeclaim_labels{label_$label=~\"$label_value\"}) by (persistentvolumeclaim) or up * 0\n) / 1024 / 1024 /1024 * .04 \n\n+\n\nsum(\n sum(kube_persistentvolumeclaim_info{storageclass=~\".*ssd.*\"}) by (persistentvolumeclaim, storageclass)\n * on (persistentvolumeclaim) group_right(storageclass)\n sum(kube_persistentvolumeclaim_resource_requests_storage_bytes) by (persistentvolumeclaim)\n * on (persistentvolumeclaim) group_left(label_app)\n max(kube_persistentvolumeclaim_labels{label_$label=~\"$label_value\"}) by (persistentvolumeclaim) or up * 0\n) / 1024 / 1024 /1024 * .17 \n\n\n# END STORAGE\n",
               "format": "time_series",
@@ -1157,8 +1157,8 @@
         ]
       },
       "timezone": "",
       "title": "Label costs & utilization",
-      "uid": "lWMhIA-ik",
+      "uid": "at-label-costs-and-utilization",
       "version": 1,
       "weekStart": ""
     }
diff -U 4 -r out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-namespace-utilization-template.yaml out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-namespace-utilization-template.yaml
--- out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-namespace-utilization-template.yaml	2025-02-21 23:22:13.418916814 +0000
+++ out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-namespace-utilization-template.yaml	2025-02-21 23:21:49.271697954 +0000
@@ -6,9 +6,9 @@
   name: grafana-dashboard-namespace-utilization
   namespace: kubecost
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
     grafana_dashboard: "1"
diff -U 4 -r out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-network-cloud-sevices.yaml out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-network-cloud-sevices.yaml
--- out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-network-cloud-sevices.yaml	2025-02-21 23:22:13.418916814 +0000
+++ out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-network-cloud-sevices.yaml	2025-02-21 23:21:49.271697954 +0000
@@ -6,9 +6,9 @@
   name: grafana-dashboard-network-cloud-services
   namespace: kubecost
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
     grafana_dashboard: "1"
@@ -21,10 +21,10 @@
         "list": [
           {
             "builtIn": 1,
             "datasource": {
-              "type": "grafana",
-              "uid": "-- Grafana --"
+              "type": "datasource",
+              "uid": "grafana"
             },
             "enable": true,
             "hide": true,
             "iconColor": "rgba(0, 211, 255, 1)",
@@ -292,9 +292,9 @@
           {
             "current": {
               "selected": false,
               "text": "Prometheus",
-              "value": "PBFA97CFB590B2093"
+              "value": "Prometheus"
             },
             "hide": 0,
             "includeAll": false,
             "multi": false,
@@ -368,9 +368,9 @@
               "value": "$__all"
             },
             "datasource": {
               "type": "prometheus",
-              "uid": "PBFA97CFB590B2093"
+              "uid": "${datasource}"
             },
             "definition": "label_values(kube_pod_container_status_running{namespace=\"$namespace\"},container)",
             "hide": 0,
             "includeAll": true,
diff -U 4 -r out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-network-costs.yaml out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-network-costs.yaml
--- out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-network-costs.yaml	2025-02-21 23:22:13.418916814 +0000
+++ out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-network-costs.yaml	2025-02-21 23:21:49.271697954 +0000
@@ -6,9 +6,9 @@
   name: grafana-dashboard-network-costs-metrics
   namespace: kubecost
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
     grafana_dashboard: "1"
@@ -21,10 +21,10 @@
         "list": [
           {
             "builtIn": 1,
             "datasource": {
-              "type": "grafana",
-              "uid": "-- Grafana --"
+              "type": "datasource",
+              "uid": "grafana"
             },
             "enable": true,
             "hide": true,
             "iconColor": "rgba(0, 211, 255, 1)",
@@ -515,9 +515,9 @@
           {
             "current": {
               "selected": false,
               "text": "Prometheus",
-              "value": "PBFA97CFB590B2093"
+              "value": "Prometheus"
             },
             "hide": 0,
             "includeAll": false,
             "multi": false,
diff -U 4 -r out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-node-utilization-template.yaml out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-node-utilization-template.yaml
--- out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-node-utilization-template.yaml	2025-02-21 23:22:13.418916814 +0000
+++ out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-node-utilization-template.yaml	2025-02-21 23:21:49.271697954 +0000
@@ -6,9 +6,9 @@
   name: grafana-dashboard-node-utilization
   namespace: kubecost
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
     grafana_dashboard: "1"
diff -U 4 -r out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-pod-utilization-multi-cluster.yaml out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-pod-utilization-multi-cluster.yaml
--- out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-pod-utilization-multi-cluster.yaml	2025-02-21 23:22:13.418916814 +0000
+++ out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-pod-utilization-multi-cluster.yaml	2025-02-21 23:21:49.271697954 +0000
@@ -6,9 +6,9 @@
   name: grafana-dashboard-pod-utilization-multi-cluster
   namespace: kubecost
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
     grafana_dashboard: "1"
diff -U 4 -r out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-pod-utilization-template.yaml out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-pod-utilization-template.yaml
--- out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-pod-utilization-template.yaml	2025-02-21 23:22:13.418916814 +0000
+++ out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-pod-utilization-template.yaml	2025-02-21 23:21:49.271697954 +0000
@@ -6,9 +6,9 @@
   name: grafana-dashboard-pod-utilization
   namespace: kubecost
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
     grafana_dashboard: "1"
diff -U 4 -r out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-prometheus-metrics-template.yaml out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-prometheus-metrics-template.yaml
--- out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-prometheus-metrics-template.yaml	2025-02-21 23:22:13.418916814 +0000
+++ out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-prometheus-metrics-template.yaml	2025-02-21 23:21:49.271697954 +0000
@@ -6,9 +6,9 @@
   name: grafana-dashboard-prom-benchmark
   namespace: kubecost
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
     grafana_dashboard: "1"
diff -U 4 -r out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-workload-aggregator.yaml out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-workload-aggregator.yaml
--- out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-workload-aggregator.yaml	2025-02-21 23:22:13.419916823 +0000
+++ out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-workload-aggregator.yaml	2025-02-21 23:21:49.272697964 +0000
@@ -6,9 +6,9 @@
   name: grafana-dashboard-workload-aggregator
   namespace: kubecost
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
     grafana_dashboard: "1"
@@ -882,9 +882,9 @@
           "targets": [
             {
               "datasource": {
                 "type": "prometheus",
-                "uid": "PBFA97CFB590B2093"
+                "uid": "${datasource}"
               },
               "editorMode": "code",
               "expr": "kubecost_read_db_size",
               "instant": false,
@@ -922,9 +922,9 @@
           {
             "current": {
               "selected": false,
               "text": "Prometheus",
-              "value": "PBFA97CFB590B2093"
+              "value": "Prometheus"
             },
             "hide": 0,
             "includeAll": false,
             "multi": false,
diff -U 4 -r out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-workload-metrics.yaml out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-workload-metrics.yaml
--- out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-workload-metrics.yaml	2025-02-21 23:22:13.419916823 +0000
+++ out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-workload-metrics.yaml	2025-02-21 23:21:49.272697964 +0000
@@ -6,9 +6,9 @@
   name: grafana-dashboard-workload-metrics
   namespace: kubecost
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
     grafana_dashboard: "1"
@@ -800,9 +800,9 @@
           {
             "current": {
               "selected": false,
               "text": "Prometheus",
-              "value": "PBFA97CFB590B2093"
+              "value": "Prometheus"
             },
             "hide": 0,
             "includeAll": false,
             "multi": false,
@@ -876,9 +876,9 @@
               "value": "$__all"
             },
             "datasource": {
               "type": "prometheus",
-              "uid": "PBFA97CFB590B2093"
+              "uid": "${datasource}"
             },
             "definition": "label_values({namespace=~\"$namespace\", pod=~\"$pod\"},container)",
             "hide": 0,
             "includeAll": true,
diff -U 4 -r out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/prometheus/prometheus-server-deployment.yaml out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/prometheus/prometheus-server-deployment.yaml
--- out/target/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/prometheus/prometheus-server-deployment.yaml	2025-02-21 23:22:13.420916832 +0000
+++ out/pr/kubecost/values-k3d.yaml/sx-kubecost/charts/cost-analyzer/templates/prometheus/prometheus-server-deployment.yaml	2025-02-21 23:21:49.273697973 +0000
@@ -22,9 +22,9 @@
     type: Recreate
   template:
     metadata:
       annotations:
-        checksum/configs: 5a026e9b91e4d5ed20cdb242c294e9187b08a1aa77be5d299c219cbd2352b3e2
+        checksum/configs: e6d9233fce13f896ba190b3d096afba3f57911a216638e60789eda5383e657a2
       labels:
         component: "server"
         app: prometheus
         release: release-name
@@ -33,9 +33,9 @@
       serviceAccountName: release-name-prometheus-server
       containers:
 
         - name: prometheus-server
-          image: "quay.io/prometheus/prometheus:v2.55.1"
+          image: "quay.io/prometheus/prometheus:v3.1.0"
           imagePullPolicy: "IfNotPresent"
           args:
             - --storage.tsdb.retention.time=97h
             - --config.file=/etc/config/prometheus.yml
diff -U 4 -r out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/aggregator-cloud-cost-service.yaml out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/aggregator-cloud-cost-service.yaml
--- out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/aggregator-cloud-cost-service.yaml	2025-02-21 23:22:13.282915636 +0000
+++ out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/aggregator-cloud-cost-service.yaml	2025-02-21 23:21:49.135696701 +0000
@@ -5,9 +5,9 @@
 metadata:
   name: release-name-cloud-cost
   namespace: default
   labels:
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/name: cost-analyzer
     app.kubernetes.io/instance: release-name
     app: cost-analyzer
diff -U 4 -r out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/aggregator-service.yaml out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/aggregator-service.yaml
--- out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/aggregator-service.yaml	2025-02-21 23:22:13.282915636 +0000
+++ out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/aggregator-service.yaml	2025-02-21 23:21:49.135696701 +0000
@@ -5,9 +5,9 @@
 metadata:
   name: release-name-aggregator
   namespace: default
   labels:
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/managed-by: Helm
     app: aggregator
 spec:
   selector:
diff -U 4 -r out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-cluster-role-binding-template.yaml out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-cluster-role-binding-template.yaml
--- out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-cluster-role-binding-template.yaml	2025-02-21 23:22:13.282915636 +0000
+++ out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-cluster-role-binding-template.yaml	2025-02-21 23:21:49.135696701 +0000
@@ -5,9 +5,9 @@
 metadata:
   name: release-name-cost-analyzer
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
 roleRef:
@@ -26,9 +26,9 @@
   name: release-name-cost-analyzer
   namespace: default
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
 roleRef:
diff -U 4 -r out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-cluster-role-template.yaml out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-cluster-role-template.yaml
--- out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-cluster-role-template.yaml	2025-02-21 23:22:13.282915636 +0000
+++ out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-cluster-role-template.yaml	2025-02-21 23:21:49.135696701 +0000
@@ -5,9 +5,9 @@
 metadata:
   name: release-name-cost-analyzer
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
 rules:
@@ -90,9 +90,9 @@
   namespace: default
   name: release-name-cost-analyzer
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
 rules:
diff -U 4 -r out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-config-map-template.yaml out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-config-map-template.yaml
--- out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-config-map-template.yaml	2025-02-21 23:22:13.280915619 +0000
+++ out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-config-map-template.yaml	2025-02-21 23:21:49.132696673 +0000
@@ -6,9 +6,9 @@
   name: release-name-cost-analyzer
   namespace: default
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
 data:

Copy link
Contributor

Changes Rendered Chart
diff -U 4 -r out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-deployment-template.yaml out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-deployment-template.yaml
--- out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-deployment-template.yaml	2025-02-21 23:22:13.282915636 +0000
+++ out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-deployment-template.yaml	2025-02-21 23:21:49.136696710 +0000
@@ -6,9 +6,9 @@
   name: release-name-cost-analyzer
   namespace: default
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
   annotations:
@@ -30,9 +30,9 @@
         app.kubernetes.io/name: cost-analyzer
         app.kubernetes.io/instance: release-name
         app: cost-analyzer
       annotations:
-        checksum/configs: 5a026e9b91e4d5ed20cdb242c294e9187b08a1aa77be5d299c219cbd2352b3e2
+        checksum/configs: e6d9233fce13f896ba190b3d096afba3f57911a216638e60789eda5383e657a2
     spec:
       securityContext:
         fsGroup: 1001
         fsGroupChangePolicy: OnRootMismatch
@@ -45,8 +45,10 @@
       serviceAccountName: release-name-cost-analyzer
       volumes:
         - name: tmp
           emptyDir: {}
+        - name: log
+          emptyDir: {}
         - name: nginx-conf
           configMap:
             name: nginx-conf
             items:
@@ -56,9 +58,9 @@
           persistentVolumeClaim:
             claimName: release-name-cost-analyzer
       initContainers:
       containers:
-        - image: "gcr.io/kubecost1/cost-model:prod-2.5.3"
+        - image: "gcr.io/kubecost1/cost-model:prod-2.6.2"
           name: cost-model
           securityContext:
             allowPrivilegeEscalation: false
             capabilities:
@@ -96,15 +98,15 @@
             - name: persistent-configs
               mountPath: /var/configs
           env:
             - name: CONTAINER_IMAGE_TAG
-              value: prod-2.5.3
+              value: prod-2.6.2
             - name: GRAFANA_ENABLED
               value: "false"
             - name: LOG_LEVEL
               value: info
             - name: HELM_VALUES
-              value: eyJhZmZpbml0eSI6e30sImF3c3N0b3JlIjp7ImFubm90YXRpb25zIjp7fSwiY3JlYXRlU2VydmljZUFjY291bnQiOmZhbHNlLCJpbWFnZU5hbWVBbmRWZXJzaW9uIjoiZ2NyLmlvL2t1YmVjb3N0MS9hd3NzdG9yZTpsYXRlc3QiLCJub2RlU2VsZWN0b3IiOnt9LCJwcmlvcml0eUNsYXNzTmFtZSI6IiIsInVzZUF3c1N0b3JlIjpmYWxzZX0sImRpYWdub3N0aWNzIjp7ImNvbGxlY3RIZWxtVmFsdWVzIjpmYWxzZSwiZW5hYmxlZCI6dHJ1ZSwia2VlcERpYWdub3N0aWNIaXN0b3J5IjpmYWxzZSwicG9sbGluZ0ludGVydmFsIjoiMzAwcyJ9LCJleHRyYU9iamVjdHMiOltdLCJleHRyYVZvbHVtZU1vdW50cyI6W10sImV4dHJhVm9sdW1lcyI6W10sImZlZGVyYXRlZEVUTCI6eyJhZ2VudE9ubHkiOmZhbHNlLCJmZWRlcmF0ZWRDbHVzdGVyIjpmYWxzZSwicmVhZE9ubHlQcmltYXJ5IjpmYWxzZSwicmVkaXJlY3RTM0JhY2t1cCI6ZmFsc2UsInVzZU11bHRpQ2x1c3RlckRCIjpmYWxzZX0sImZvcmVjYXN0aW5nIjp7ImFmZmluaXR5Ijp7fSwiYW5ub3RhdGlvbnMiOnt9LCJlbmFibGVkIjp0cnVlLCJlbnYiOnsiR1VOSUNPUk5fQ01EX0FSR1MiOiItLWxvZy1sZXZlbCBpbmZvIC10IDEyMDAifSwiZnVsbEltYWdlTmFtZSI6Imdjci5pby9rdWJlY29zdDEva3ViZWNvc3QtbW9kZWxpbmc6djAuMS4xOSIsImltYWdlUHVsbFBvbGljeSI6IklmTm90UHJlc2VudCIsImxpdmVuZXNzUHJvYmUiOnsiZW5hYmxlZCI6dHJ1ZSwiZmFpbHVyZVRocmVzaG9sZCI6MjAwLCJpbml0aWFsRGVsYXlTZWNvbmRzIjoxMCwicGVyaW9kU2Vjb25kcyI6MTB9LCJub2RlU2VsZWN0b3IiOnt9LCJyZWFkaW5lc3NQcm9iZSI6eyJlbmFibGVkIjp0cnVlLCJmYWlsdXJlVGhyZXNob2xkIjoyMDAsImluaXRpYWxEZWxheVNlY29uZHMiOjEwLCJwZXJpb2RTZWNvbmRzIjoxMH0sInJlc291cmNlcyI6eyJsaW1pdHMiOnsiY3B1IjoiMTUwMG0iLCJtZW1vcnkiOiIxR2kifSwicmVxdWVzdHMiOnsiY3B1IjoiMjAwbSIsIm1lbW9yeSI6IjMwME1pIn19LCJ0b2xlcmF0aW9ucyI6W119LCJnbG9iYWwiOnsiYWRkaXRpb25hbExhYmVscyI6e30sImFubm90YXRpb25zIjp7fSwiY29udGFpbmVyU2VjdXJpdHlDb250ZXh0Ijp7ImFsbG93UHJpdmlsZWdlRXNjYWxhdGlvbiI6ZmFsc2UsImNhcGFiaWxpdGllcyI6eyJkcm9wIjpbIkFMTCJdfSwicHJpdmlsZWdlZCI6ZmFsc2UsInJlYWRPbmx5Um9vdEZpbGVzeXN0ZW0iOnRydWV9LCJpbnRlZ3JhdGlvbnMiOnt9LCJub3RpZmljYXRpb25zIjp7ImFsZXJ0bWFuYWdlciI6eyJlbmFibGVkIjp0cnVlLCJmcWRuIjoiaHR0cDovL3N4LWt1YmUtcHJvbWV0aGV1cy1zdGFjay1hbGVydG1hbmFnZXIubW9uaXRvcmluZzo5MDkzLyJ9fSwicGxhdGZvcm1zIjp7ImNpY2QiOnsiZW5hYmxlZCI6dHJ1ZSwic2tpcFNhbml0eUNoZWNrcyI6ZmFsc2V9fSwicG9kQW5ub3RhdGlvbnMiOnt9LCJwcm9tZXRoZXVzIjp7ImVuYWJsZWQiOnRydWUsImZxZG4iOiJodHRwOi8vc3gta3ViZS1wcm9tZXRoZXVzLXN0YWNrLXByb21ldGhldXMubW9uaXRvcmluZzo5MDkwLyIsImluc2VjdXJlU2tpcFZlcmlmeSI6ZmFsc2UsImt1YmVSQkFDUHJveHkiOmZhbHNlfSwic2VjdXJpdHlDb250ZXh0Ijp7ImZzR3JvdXAiOjEwMDEsImZzR3JvdXBDaGFuZ2VQb2xpY3kiOiJPblJvb3RNaXNtYXRjaCIsInJ1bkFzR3JvdXAiOjEwMDEsInJ1bkFzTm9uUm9vdCI6dHJ1ZSwicnVuQXNVc2VyIjoxMDAxLCJzZWNjb21wUHJvZmlsZSI6eyJ0eXBlIjoiUnVudGltZURlZmF1bHQifX19LCJncmFmYW5hIjp7ImFkbWluUGFzc3dvcmQiOiJzdHJvbmdwYXNzd29yZCIsImFkbWluVXNlciI6ImFkbWluIiwiYWZmaW5pdHkiOnt9LCJhbm5vdGF0aW9ucyI6e30sImRhc2hib2FyZFByb3ZpZGVycyI6e30sImRhc2hib2FyZHMiOnt9LCJkYXNoYm9hcmRzQ29uZmlnTWFwcyI6e30sImRlcGxveW1lbnRTdHJhdGVneSI6IlJvbGxpbmdVcGRhdGUiLCJkb3dubG9hZERhc2hib2FyZHNJbWFnZSI6eyJwdWxsUG9saWN5IjoiSWZOb3RQcmVzZW50IiwicmVwb3NpdG9yeSI6ImN1cmxpbWFnZXMvY3VybCIsInRhZyI6ImxhdGVzdCJ9LCJlbnYiOnt9LCJlbnZGcm9tU2VjcmV0IjoiIiwiZXh0cmFTZWNyZXRNb3VudHMiOltdLCJncmFmYW5hLmluaSI6eyJhbmFseXRpY3MiOnsiY2hlY2tfZm9yX3VwZGF0ZXMiOnRydWV9LCJhdXRoLmFub255bW91cyI6eyJlbmFibGVkIjp0cnVlLCJvcmdfbmFtZSI6Ik1haW4gT3JnLiIsIm9yZ19yb2xlIjoiRWRpdG9yIn0sImdyYWZhbmFfbmV0Ijp7InVybCI6Imh0dHBzOi8vZ3JhZmFuYS5uZXQifSwibG9nIjp7Im1vZGUiOiJjb25zb2xlIn0sInBhdGhzIjp7ImRhdGEiOiIvdmFyL2xpYi9ncmFmYW5hL2RhdGEiLCJsb2dzIjoiL3Zhci9sb2cvZ3JhZmFuYSIsInBsdWdpbnMiOiIvdmFyL2xpYi9ncmFmYW5hL3BsdWdpbnMiLCJwcm92aXNpb25pbmciOiIvZXRjL2dyYWZhbmEvcHJvdmlzaW9uaW5nIn0sInNlcnZlciI6eyJyb290X3VybCI6IiUocHJvdG9jb2wpczovLyUoZG9tYWluKXM6JShodHRwX3BvcnQpcy9ncmFmYW5hIiwic2VydmVfZnJvbV9zdWJfcGF0aCI6ZmFsc2V9fSwiaW1hZ2UiOnsicHVsbFBvbGljeSI6IklmTm90UHJlc2VudCIsInJlcG9zaXRvcnkiOiJncmFmYW5hL2dyYWZhbmEiLCJ0YWciOiIxMS4zLjEifSwibGl2ZW5lc3NQcm9iZSI6eyJmYWlsdXJlVGhyZXNob2xkIjoxMCwiaHR0cEdldCI6eyJwYXRoIjoiL2FwaS9oZWFsdGgiLCJwb3J0IjozMDAwfSwiaW5pdGlhbERlbGF5U2Vjb25kcyI6NjAsInRpbWVvdXRTZWNvbmRzIjozMH0sIm5hbWVzcGFjZV9kYXNoYm9hcmRzIjoia3ViZWNvc3QiLCJuYW1lc3BhY2VfZGF0YXNvdXJjZXMiOiJrdWJlY29zdCIsIm5vZGVTZWxlY3RvciI6e30sInBsdWdpbnMiOltdLCJwb2RBbm5vdGF0aW9ucyI6e30sInByaW9yaXR5Q2xhc3NOYW1lIjoiIiwicmJhYyI6eyJjcmVhdGUiOnRydWV9LCJyZWFkaW5lc3NQcm9iZSI6eyJodHRwR2V0Ijp7InBhdGgiOiIvYXBpL2hlYWx0aCIsInBvcnQiOjMwMDB9fSwicmVwbGljYXMiOjEsInJlc291cmNlcyI6e30sInNlY3VyaXR5Q29udGV4dCI6e30sInNlcnZpY2UiOnsiYW5ub3RhdGlvbnMiOnt9LCJsYWJlbHMiOnt9LCJwb3J0Ijo4MCwidHlwZSI6IkNsdXN0ZXJJUCJ9LCJzZXJ2aWNlQWNjb3VudCI6eyJjcmVhdGUiOnRydWUsIm5hbWUiOiIifSwic2lkZWNhciI6eyJkYXNoYm9hcmRzIjp7ImFubm90YXRpb25zIjp7fSwiZW5hYmxlZCI6dHJ1ZSwiZXJyb3JfdGhyb3R0bGVfc2xlZXAiOjAsImZvbGRlciI6Ii90bXAvZGFzaGJvYXJkcyIsImxhYmVsIjoiZ3JhZmFuYV9kYXNoYm9hcmQiLCJsYWJlbFZhbHVlIjoiMSJ9LCJpbWFnZSI6eyJwdWxsUG9saWN5IjoiSWZOb3RQcmVzZW50IiwicmVwb3NpdG9yeSI6ImdoY3IuaW8va2l3aWdyaWQvazhzLXNpZGVjYXIiLCJ0YWciOiIxLjI4LjEifSwicmVzb3VyY2VzIjp7fX0sInRvbGVyYXRpb25zIjpbXX0sImluZ3Jlc3MiOnsiYW5ub3RhdGlvbnMiOnsiY2VydC1tYW5hZ2VyLmlvL2NsdXN0ZXItaXNzdWVyIjoibGV0c2VuY3J5cHQtc3RhZ2luZyJ9LCJjbGFzc05hbWUiOiJuZ2lueCIsImVuYWJsZWQiOnRydWUsImhvc3RzIjpbImt1YmVjb3N0LW1ldGFsc3RhY2sucGxhdGZvcm0tZW5naW5lZXIuY2xvdWQiXSwicGF0aFR5cGUiOiJJbXBsZW1lbnRhdGlvblNwZWNpZmljIiwicGF0aHMiOlsiLyJdLCJ0bHMiOlt7Imhvc3RzIjpbImt1YmVjb3N0LW1ldGFsc3RhY2sucGxhdGZvcm0tZW5naW5lZXIuY2xvdWQiXSwic2VjcmV0TmFtZSI6Imt1YmVjb3N0LXNlcnZlci10bHMifV19LCJpbml0Q2hvd25EYXRhIjp7InJlc291cmNlcyI6e319LCJpbml0Q2hvd25EYXRhSW1hZ2UiOiJidXN5Ym94Iiwia3ViZWNvc3REZXBsb3ltZW50Ijp7ImFubm90YXRpb25zIjp7fSwibGFiZWxzIjp7fSwicmVwbGljYXMiOjF9LCJrdWJlY29zdEZyb250ZW5kIjp7ImRlcGxveU1ldGhvZCI6InNpbmdsZXBvZCIsImRlcGxveW1lbnRTdHJhdGVneSI6e30sImVuYWJsZWQiOnRydWUsImhhUmVwbGljYXMiOjIsImltYWdlIjoiZ2NyLmlvL2t1YmVjb3N0MS9mcm9udGVuZCIsImltYWdlUHVsbFBvbGljeSI6IklmTm90UHJlc2VudCIsImlwdjYiOnsiZW5hYmxlZCI6dHJ1ZX0sImxpdmVuZXNzUHJvYmUiOnsiZW5hYmxlZCI6dHJ1ZSwiZmFpbHVyZVRocmVzaG9sZCI6NiwiaW5pdGlhbERlbGF5U2Vjb25kcyI6MSwicGVyaW9kU2Vjb25kcyI6NX0sInJlYWRpbmVzc1Byb2JlIjp7ImVuYWJsZWQiOnRydWUsImZhaWx1cmVUaHJlc2hvbGQiOjYsImluaXRpYWxEZWxheVNlY29uZHMiOjEsInBlcmlvZFNlY29uZHMiOjV9LCJyZXNvdXJjZXMiOnsicmVxdWVzdHMiOnsiY3B1IjoiMTBtIiwibWVtb3J5IjoiNTVNaSJ9fSwidXNlRGVmYXVsdEZxZG4iOmZhbHNlfSwia3ViZWNvc3RNb2RlbCI6eyJjb250YWluZXJTdGF0c0VuYWJsZWQiOnRydWUsImV0bERhaWx5U3RvcmVEdXJhdGlvbkRheXMiOjkxLCJldGxIb3VybHlTdG9yZUR1cmF0aW9uSG91cnMiOjQ5LCJldGxSZWFkT25seU1vZGUiOmZhbHNlLCJleHRyYUFyZ3MiOltdLCJleHRyYVBvcnRzIjpbXSwiaW1hZ2UiOiJnY3IuaW8va3ViZWNvc3QxL2Nvc3QtbW9kZWwiLCJpbWFnZVB1bGxQb2xpY3kiOiJJZk5vdFByZXNlbnQiLCJsaXZlbmVzc1Byb2JlIjp7ImVuYWJsZWQiOnRydWUsImZhaWx1cmVUaHJlc2hvbGQiOjIwMCwiaW5pdGlhbERlbGF5U2Vjb25kcyI6MTAsInBlcmlvZFNlY29uZHMiOjEwfSwibG9nTGV2ZWwiOiJpbmZvIiwibWF4UXVlcnlDb25jdXJyZW5jeSI6NSwicmVhZGluZXNzUHJvYmUiOnsiZW5hYmxlZCI6dHJ1ZSwiZmFpbHVyZVRocmVzaG9sZCI6MjAwLCJpbml0aWFsRGVsYXlTZWNvbmRzIjoxMCwicGVyaW9kU2Vjb25kcyI6MTB9LCJyZXNvdXJjZXMiOnsicmVxdWVzdHMiOnsiY3B1IjoiMjAwbSIsIm1lbW9yeSI6IjU1TWkifX0sInV0Y09mZnNldCI6IiswMDowMCJ9LCJrdWJlY29zdFByb2R1Y3RDb25maWdzIjp7ImNsdXN0ZXJOYW1lIjoia3VicmlYIERlbW8iLCJjbHVzdGVyUHJvZmlsZSI6ImRldmVsb3BtZW50IiwiY3VycmVuY3lDb2RlIjoiRVVSIiwiY3VzdG9tUHJpY2VzRW5hYmxlZCI6dHJ1ZSwiZGVmYXVsdE1vZGVsUHJpY2luZyI6eyJDUFUiOiIyOC4wIiwiR1BVIjoiNjkzLjUwIiwiUkFNIjoiMy4wOSIsImVuYWJsZWQiOnRydWUsImludGVybmV0TmV0d29ya0VncmVzcyI6IjAuMTIiLCJyZWdpb25OZXR3b3JrRWdyZXNzIjoiMC4wMSIsInNwb3RDUFUiOiI0Ljg2Iiwic3BvdEdQVSI6IjIyNS4wIiwic3BvdFJBTSI6IjAuNjUiLCJzdG9yYWdlIjoiMC4wNCIsInpvbmVOZXR3b3JrRWdyZXNzIjoiMC4wMSJ9fSwibm9kZVNlbGVjdG9yIjp7fSwicGVyc2lzdGVudFZvbHVtZSI6eyJhbm5vdGF0aW9ucyI6e30sImRiU2l6ZSI6IjVHaSIsImVuYWJsZWQiOnRydWUsImxhYmVscyI6e30sInNpemUiOiI1R2kifSwicHJvbWV0aGV1cyI6eyJhbGVydG1hbmFnZXJGaWxlcyI6eyJhbGVydG1hbmFnZXIueW1sIjp7Imdsb2JhbCI6e30sInJlY2VpdmVycyI6W3sibmFtZSI6ImRlZmF1bHQtcmVjZWl2ZXIifV0sInJvdXRlIjp7Imdyb3VwX2ludGVydmFsIjoiNW0iLCJncm91cF93YWl0IjoiMTBzIiwicmVjZWl2ZXIiOiJkZWZhdWx0LXJlY2VpdmVyIiwicmVwZWF0X2ludGVydmFsIjoiM2gifX19LCJjb25maWdtYXBSZWxvYWQiOnt9LCJleHRyYVNjcmFwZUNvbmZpZ3MiOiItIGpvYl9uYW1lOiBrdWJlY29zdFxuICBob25vcl9sYWJlbHM6IHRydWVcbiAgc2NyYXBlX2ludGVydmFsOiAxbVxuICBzY3JhcGVfdGltZW91dDogNjBzXG4gIG1ldHJpY3NfcGF0aDogL21ldHJpY3NcbiAgc2NoZW1lOiBodHRwXG4gIGRuc19zZF9jb25maWdzOlxuICAtIG5hbWVzOlxuICAgIC0ge3sgdGVtcGxhdGUgXCJjb3N0LWFuYWx5emVyLnNlcnZpY2VOYW1lXCIgLiB9fVxuICAgIHR5cGU6ICdBJ1xuICAgIHBvcnQ6IDkwMDNcbi0gam9iX25hbWU6IGt1YmVjb3N0LW5ldHdvcmtpbmdcbiAga3ViZXJuZXRlc19zZF9jb25maWdzOlxuICAgIC0gcm9sZTogcG9kXG4gIHJlbGFiZWxfY29uZmlnczpcbiAgIyBTY3JhcGUgb25seSB0aGUgdGhlIHRhcmdldHMgbWF0Y2hpbmcgdGhlIGZvbGxvd2luZyBtZXRhZGF0YVxuICAgIC0gc291cmNlX2xhYmVsczogW19fbWV0YV9rdWJlcm5ldGVzX3BvZF9sYWJlbF9hcHBfa3ViZXJuZXRlc19pb19pbnN0YW5jZV1cbiAgICAgIGFjdGlvbjoga2VlcFxuICAgICAgcmVnZXg6ICBrdWJlY29zdFxuICAgIC0gc291cmNlX2xhYmVsczogW19fbWV0YV9rdWJlcm5ldGVzX3BvZF9sYWJlbF9hcHBfa3ViZXJuZXRlc19pb19uYW1lXVxuICAgICAgYWN0aW9uOiBrZWVwXG4gICAgICByZWdleDogIG5ldHdvcmstY29zdHNcbi0gam9iX25hbWU6IGt1YmVjb3N0LWFnZ3JlZ2F0b3JcbiAgc2NyYXBlX2ludGVydmFsOiAxbVxuICBzY3JhcGVfdGltZW91dDogNjBzXG4gIG1ldHJpY3NfcGF0aDogL21ldHJpY3NcbiAgc2NoZW1lOiBodHRwXG4gIGRuc19zZF9jb25maWdzOlxuICAtIG5hbWVzOlxuICAgIC0ge3sgdGVtcGxhdGUgXCJhZ2dyZWdhdG9yLnNlcnZpY2VOYW1lXCIgLiB9fVxuICAgIHR5cGU6ICdBJ1xuICAgIHt7LSBpZiBvciAuVmFsdWVzLnNhbWwuZW5hYmxlZCAuVmFsdWVzLm9pZGMuZW5hYmxlZCB9fVxuICAgIHBvcnQ6IDkwMDhcbiAgICB7ey0gZWxzZSB9fVxuICAgIHBvcnQ6IDkwMDRcbiAgICB7ey0gZW5kIH19XG4jIyBFbmFibGVzIHNjcmFwaW5nIG9mIE5WSURJQSBHUFUgbWV0cmljcyB2aWEgZGNnbS1leHBvcnRlci4gU2NyYXBlcyBhbGxcbiMjIGVuZHBvaW50cyB3aGljaCBjb250YWluIFwiZGNnbS1leHBvcnRlclwiIGluIGxhYmVscyBcImFwcFwiLFxuIyMgXCJhcHAua3ViZXJuZXRlcy5pby9jb21wb25lbnRcIiwgb3IgXCJhcHAua3ViZXJuZXRlcy5pby9uYW1lXCIgd2l0aCBhIGNhc2VcbiMjIGluc2Vuc2l0aXZlIG1hdGNoLiBUaGUgbGFiZWwgbXVzdCBiZSBwcmVzZW50IG9uIHRoZSBLOHMgc2VydmljZSBlbmRwb2ludHMgYW5kIG5vdCBqdXN0IHBvZHMuXG4jIyBSZWZzOlxuIyMgaHR0cHM6Ly9naXRodWIuY29tL05WSURJQS9ncHUtb3BlcmF0b3IvYmxvYi9kNDMxNmE0MTViYmQ2ODRjZTg0MTZhODgwNDIzMDVmYzFhMDkzYWE0L2Fzc2V0cy9zdGF0ZS1kY2dtLWV4cG9ydGVyLzA2MDBfc2VydmljZS55YW1sI0w3XG4jIyBodHRwczovL2dpdGh1Yi5jb20vTlZJRElBL2RjZ20tZXhwb3J0ZXIvYmxvYi81NGZkMWNhMTM3YzY2NTExYTg3YTcyMDM5MDYxMzY4MGI5YmRhYmRkL2RlcGxveW1lbnQvdGVtcGxhdGVzL3NlcnZpY2UueWFtbCNMMjNcbi0gam9iX25hbWU6IGt1YmVjb3N0LWRjZ20tZXhwb3J0ZXJcbiAga3ViZXJuZXRlc19zZF9jb25maWdzOlxuICAgIC0gcm9sZTogZW5kcG9pbnRzXG4gIHJlbGFiZWxfY29uZmlnczpcbiAgICAtIHNvdXJjZV9sYWJlbHM6IFtfX21ldGFfa3ViZXJuZXRlc19wb2RfbGFiZWxfYXBwLCBfX21ldGFfa3ViZXJuZXRlc19wb2RfbGFiZWxfYXBwX2t1YmVybmV0ZXNfaW9fY29tcG9uZW50LCBfX21ldGFfa3ViZXJuZXRlc19wb2RfbGFiZWxfYXBwX2t1YmVybmV0ZXNfaW9fbmFtZV1cbiAgICAgIGFjdGlvbjoga2VlcFxuICAgICAgcmVnZXg6ICg/aSkoLipkY2dtLWV4cG9ydGVyLip8LipkY2dtLWV4cG9ydGVyLip8LipkY2dtLWV4cG9ydGVyLiopXG4iLCJyYmFjIjp7ImNyZWF0ZSI6dHJ1ZX0sInNlcnZlciI6eyJhZmZpbml0eSI6e30sImFsZXJ0bWFuYWdlcnMiOltdLCJhbm5vdGF0aW9ucyI6e30sImJhc2VVUkwiOiIiLCJjb25maWdNYXBPdmVycmlkZU5hbWUiOiIiLCJjb25maWdQYXRoIjoiL2V0Yy9jb25maWcvcHJvbWV0aGV1cy55bWwiLCJjb250YWluZXJTZWN1cml0eUNvbnRleHQiOnt9LCJlbXB0eURpciI6eyJzaXplTGltaXQiOiIifSwiZW5hYmxlZCI6dHJ1ZSwiZW52IjpbXSwiZXh0cmFBcmdzIjp7InF1ZXJ5Lm1heC1jb25jdXJyZW5jeSI6MSwicXVlcnkubWF4LXNhbXBsZXMiOjEwMDAwMDAwMH0sImV4dHJhQ29uZmlnbWFwTW91bnRzIjpbXSwiZXh0cmFGbGFncyI6WyJ3ZWIuZW5hYmxlLWxpZmVjeWNsZSJdLCJleHRyYUhvc3RQYXRoTW91bnRzIjpbXSwiZXh0cmFJbml0Q29udGFpbmVycyI6W10sImV4dHJhU2VjcmV0TW91bnRzIjpbXSwiZXh0cmFWb2x1bWVNb3VudHMiOltdLCJleHRyYVZvbHVtZXMiOltdLCJnbG9iYWwiOnsiZXZhbHVhdGlvbl9pbnRlcnZhbCI6IjFtIiwiZXh0ZXJuYWxfbGFiZWxzIjp7ImNsdXN0ZXJfaWQiOiJrdWJyaXgifSwic2NyYXBlX2ludGVydmFsIjoiMW0iLCJzY3JhcGVfdGltZW91dCI6IjYwcyJ9LCJpbWFnZSI6eyJwdWxsUG9saWN5IjoiSWZOb3RQcmVzZW50IiwicmVwb3NpdG9yeSI6InF1YXkuaW8vcHJvbWV0aGV1cy9wcm9tZXRoZXVzIiwidGFnIjoidjIuNTUuMSJ9LCJsaXZlbmVzc1Byb2JlRmFpbHVyZVRocmVzaG9sZCI6MywibGl2ZW5lc3NQcm9iZUluaXRpYWxEZWxheSI6NSwibGl2ZW5lc3NQcm9iZVN1Y2Nlc3NUaHJlc2hvbGQiOjEsImxpdmVuZXNzUHJvYmVUaW1lb3V0IjozLCJuYW1lIjoic2VydmVyIiwibm9kZVNlbGVjdG9yIjp7fSwicGVyc2lzdGVudFZvbHVtZSI6eyJhY2Nlc3NNb2RlcyI6WyJSZWFkV3JpdGVPbmNlIl0sImFubm90YXRpb25zIjp7fSwiZW5hYmxlZCI6dHJ1ZSwiZXhpc3RpbmdDbGFpbSI6IiIsIm1vdW50UGF0aCI6Ii9kYXRhIiwic2l6ZSI6IjMyR2kiLCJzdWJQYXRoIjoiIn0sInBvZEFubm90YXRpb25zIjp7fSwicG9kTGFiZWxzIjp7fSwicHJlZml4VVJMIjoiIiwicHJpb3JpdHlDbGFzc05hbWUiOiIiLCJyZWFkaW5lc3NQcm9iZUZhaWx1cmVUaHJlc2hvbGQiOjMsInJlYWRpbmVzc1Byb2JlSW5pdGlhbERlbGF5Ijo1LCJyZWFkaW5lc3NQcm9iZVN1Y2Nlc3NUaHJlc2hvbGQiOjEsInJlYWRpbmVzc1Byb2JlVGltZW91dCI6MywicmVtb3RlUmVhZCI6e30sInJlbW90ZVdyaXRlIjp7fSwicmVwbGljYUNvdW50IjoxLCJyZXNvdXJjZXMiOnt9LCJyZXRlbnRpb24iOiI5N2giLCJzZWN1cml0eUNvbnRleHQiOnt9LCJzZXJ2aWNlIjp7ImFubm90YXRpb25zIjp7fSwiY2x1c3RlcklQIjoiIiwiZXh0ZXJuYWxJUHMiOltdLCJsYWJlbHMiOnt9LCJsb2FkQmFsYW5jZXJJUCI6IiIsImxvYWRCYWxhbmNlclNvdXJjZVJhbmdlcyI6W10sInNlcnZpY2VQb3J0Ijo4MCwic2Vzc2lvbkFmZmluaXR5IjoiTm9uZSIsInR5cGUiOiJDbHVzdGVySVAifSwic3RyYXRlZ3kiOnsidHlwZSI6IlJlY3JlYXRlIn0sInRlcm1pbmF0aW9uR3JhY2VQZXJpb2RTZWNvbmRzIjozMDAsInRvbGVyYXRpb25zIjpbXX0sInNlcnZlckZpbGVzIjp7ImFsZXJ0aW5nX3J1bGVzLnltbCI6e30sInByb21ldGhldXMueW1sIjp7InJ1bGVfZmlsZXMiOlsiL2V0Yy9jb25maWcvcmVjb3JkaW5nX3J1bGVzLnltbCIsIi9ldGMvY29uZmlnL2FsZXJ0aW5nX3J1bGVzLnltbCJdLCJzY3JhcGVfY29uZmlncyI6W3siam9iX25hbWUiOiJwcm9tZXRoZXVzIiwic3RhdGljX2NvbmZpZ3MiOlt7InRhcmdldHMiOlsibG9jYWxob3N0OjkwOTAiXX1dfSx7ImJlYXJlcl90b2tlbl9maWxlIjoiL3Zhci9ydW4vc2VjcmV0cy9rdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3Rva2VuIiwiam9iX25hbWUiOiJrdWJlcm5ldGVzLW5vZGVzLWNhZHZpc29yIiwia3ViZXJuZXRlc19zZF9jb25maWdzIjpbeyJyb2xlIjoibm9kZSJ9XSwibWV0cmljX3JlbGFiZWxfY29uZmlncyI6W3siYWN0aW9uIjoia2VlcCIsInJlZ2V4IjoiKGNvbnRhaW5lcl9jcHVfdXNhZ2Vfc2Vjb25kc190b3RhbHxjb250YWluZXJfbWVtb3J5X3dvcmtpbmdfc2V0X2J5dGVzfGNvbnRhaW5lcl9uZXR3b3JrX3JlY2VpdmVfZXJyb3JzX3RvdGFsfGNvbnRhaW5lcl9uZXR3b3JrX3RyYW5zbWl0X2Vycm9yc190b3RhbHxjb250YWluZXJfbmV0d29ya19yZWNlaXZlX3BhY2tldHNfZHJvcHBlZF90b3RhbHxjb250YWluZXJfbmV0d29ya190cmFuc21pdF9wYWNrZXRzX2Ryb3BwZWRfdG90YWx8Y29udGFpbmVyX21lbW9yeV91c2FnZV9ieXRlc3xjb250YWluZXJfY3B1X2Nmc190aHJvdHRsZWRfcGVyaW9kc190b3RhbHxjb250YWluZXJfY3B1X2Nmc19wZXJpb2RzX3RvdGFsfGNvbnRhaW5lcl9mc191c2FnZV9ieXRlc3xjb250YWluZXJfZnNfbGltaXRfYnl0ZXN8Y29udGFpbmVyX2NwdV9jZnNfcGVyaW9kc190b3RhbHxjb250YWluZXJfZnNfaW5vZGVzX2ZyZWV8Y29udGFpbmVyX2ZzX2lub2Rlc190b3RhbHxjb250YWluZXJfZnNfdXNhZ2VfYnl0ZXN8Y29udGFpbmVyX2ZzX2xpbWl0X2J5dGVzfGNvbnRhaW5lcl9jcHVfY2ZzX3Rocm90dGxlZF9wZXJpb2RzX3RvdGFsfGNvbnRhaW5lcl9jcHVfY2ZzX3BlcmlvZHNfdG90YWx8Y29udGFpbmVyX25ldHdvcmtfcmVjZWl2ZV9ieXRlc190b3RhbHxjb250YWluZXJfbmV0d29ya190cmFuc21pdF9ieXRlc190b3RhbHxjb250YWluZXJfZnNfaW5vZGVzX2ZyZWV8Y29udGFpbmVyX2ZzX2lub2Rlc190b3RhbHxjb250YWluZXJfZnNfdXNhZ2VfYnl0ZXN8Y29udGFpbmVyX2ZzX2xpbWl0X2J5dGVzfGNvbnRhaW5lcl9zcGVjX2NwdV9zaGFyZXN8Y29udGFpbmVyX3NwZWNfbWVtb3J5X2xpbWl0X2J5dGVzfGNvbnRhaW5lcl9uZXR3b3JrX3JlY2VpdmVfYnl0ZXNfdG90YWx8Y29udGFpbmVyX25ldHdvcmtfdHJhbnNtaXRfYnl0ZXNfdG90YWx8Y29udGFpbmVyX2ZzX3JlYWRzX2J5dGVzX3RvdGFsfGNvbnRhaW5lcl9uZXR3b3JrX3JlY2VpdmVfYnl0ZXNfdG90YWx8Y29udGFpbmVyX2ZzX3dyaXRlc19ieXRlc190b3RhbHxjb250YWluZXJfZnNfcmVhZHNfYnl0ZXNfdG90YWx8Y2Fkdmlzb3JfdmVyc2lvbl9pbmZvfGt1YmVjb3N0X3B2X2luZm8pIiwic291cmNlX2xhYmVscyI6WyJfX25hbWVfXyJdfSx7ImFjdGlvbiI6InJlcGxhY2UiLCJyZWdleCI6IiguKykiLCJzb3VyY2VfbGFiZWxzIjpbImNvbnRhaW5lciJdLCJ0YXJnZXRfbGFiZWwiOiJjb250YWluZXJfbmFtZSJ9LHsiYWN0aW9uIjoicmVwbGFjZSIsInJlZ2V4IjoiKC4rKSIsInNvdXJjZV9sYWJlbHMiOlsicG9kIl0sInRhcmdldF9sYWJlbCI6InBvZF9uYW1lIn1dLCJyZWxhYmVsX2NvbmZpZ3MiOlt7ImFjdGlvbiI6ImxhYmVsbWFwIiwicmVnZXgiOiJfX21ldGFfa3ViZXJuZXRlc19ub2RlX2xhYmVsXyguKykifSx7InJlcGxhY2VtZW50Ijoia3ViZXJuZXRlcy5kZWZhdWx0LnN2Yzo0NDMiLCJ0YXJnZXRfbGFiZWwiOiJfX2FkZHJlc3NfXyJ9LHsicmVnZXgiOiIoLispIiwicmVwbGFjZW1lbnQiOiIvYXBpL3YxL25vZGVzLyQxL3Byb3h5L21ldHJpY3MvY2Fkdmlzb3IiLCJzb3VyY2VfbGFiZWxzIjpbIl9fbWV0YV9rdWJlcm5ldGVzX25vZGVfbmFtZSJdLCJ0YXJnZXRfbGFiZWwiOiJfX21ldHJpY3NfcGF0aF9fIn1dLCJzY2hlbWUiOiJodHRwcyIsInRsc19jb25maWciOnsiY2FfZmlsZSI6Ii92YXIvcnVuL3NlY3JldHMva3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9jYS5jcnQiLCJpbnNlY3VyZV9za2lwX3ZlcmlmeSI6dHJ1ZX19LHsiYmVhcmVyX3Rva2VuX2ZpbGUiOiIvdmFyL3J1bi9zZWNyZXRzL2t1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvdG9rZW4iLCJqb2JfbmFtZSI6Imt1YmVybmV0ZXMtbm9kZXMiLCJrdWJlcm5ldGVzX3NkX2NvbmZpZ3MiOlt7InJvbGUiOiJub2RlIn1dLCJtZXRyaWNfcmVsYWJlbF9jb25maWdzIjpbeyJhY3Rpb24iOiJrZWVwIiwicmVnZXgiOiIoa3ViZWxldF92b2x1bWVfc3RhdHNfdXNlZF9ieXRlcykiLCJzb3VyY2VfbGFiZWxzIjpbIl9fbmFtZV9fIl19XSwicmVsYWJlbF9jb25maWdzIjpbeyJhY3Rpb24iOiJsYWJlbG1hcCIsInJlZ2V4IjoiX19tZXRhX2t1YmVybmV0ZXNfbm9kZV9sYWJlbF8oLispIn0seyJyZXBsYWNlbWVudCI6Imt1YmVybmV0ZXMuZGVmYXVsdC5zdmM6NDQzIiwidGFyZ2V0X2xhYmVsIjoiX19hZGRyZXNzX18ifSx7InJlZ2V4IjoiKC4rKSIsInJlcGxhY2VtZW50IjoiL2FwaS92MS9ub2Rlcy8kMS9wcm94eS9tZXRyaWNzIiwic291cmNlX2xhYmVscyI6WyJfX21ldGFfa3ViZXJuZXRlc19ub2RlX25hbWUiXSwidGFyZ2V0X2xhYmVsIjoiX19tZXRyaWNzX3BhdGhfXyJ9XSwic2NoZW1lIjoiaHR0cHMiLCJ0bHNfY29uZmlnIjp7ImNhX2ZpbGUiOiIvdmFyL3J1bi9zZWNyZXRzL2t1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvY2EuY3J0IiwiaW5zZWN1cmVfc2tpcF92ZXJpZnkiOnRydWV9fSx7ImpvYl9uYW1lIjoia3ViZXJuZXRlcy1zZXJ2aWNlLWVuZHBvaW50cyIsImt1YmVybmV0ZXNfc2RfY29uZmlncyI6W3sicm9sZSI6ImVuZHBvaW50cyJ9XSwibWV0cmljX3JlbGFiZWxfY29uZmlncyI6W3siYWN0aW9uIjoia2VlcCIsInJlZ2V4IjoiKGNvbnRhaW5lcl9jcHVfYWxsb2NhdGlvbnxjb250YWluZXJfY3B1X3VzYWdlX3NlY29uZHNfdG90YWx8Y29udGFpbmVyX2ZzX2xpbWl0X2J5dGVzfGNvbnRhaW5lcl9mc193cml0ZXNfYnl0ZXNfdG90YWx8Y29udGFpbmVyX2dwdV9hbGxvY2F0aW9ufGNvbnRhaW5lcl9tZW1vcnlfYWxsb2NhdGlvbl9ieXRlc3xjb250YWluZXJfbWVtb3J5X3VzYWdlX2J5dGVzfGNvbnRhaW5lcl9tZW1vcnlfd29ya2luZ19zZXRfYnl0ZXN8Y29udGFpbmVyX25ldHdvcmtfcmVjZWl2ZV9ieXRlc190b3RhbHxjb250YWluZXJfbmV0d29ya190cmFuc21pdF9ieXRlc190b3RhbHxEQ0dNX0ZJX0RFVl9HUFVfVVRJTHxkZXBsb3ltZW50X21hdGNoX2xhYmVsc3xrdWJlX2RhZW1vbnNldF9zdGF0dXNfZGVzaXJlZF9udW1iZXJfc2NoZWR1bGVkfGt1YmVfZGFlbW9uc2V0X3N0YXR1c19udW1iZXJfcmVhZHl8a3ViZV9kZXBsb3ltZW50X3NwZWNfcmVwbGljYXN8a3ViZV9kZXBsb3ltZW50X3N0YXR1c19yZXBsaWNhc3xrdWJlX2RlcGxveW1lbnRfc3RhdHVzX3JlcGxpY2FzX2F2YWlsYWJsZXxrdWJlX2pvYl9zdGF0dXNfZmFpbGVkfGt1YmVfbmFtZXNwYWNlX2Fubm90YXRpb25zfGt1YmVfbmFtZXNwYWNlX2xhYmVsc3xrdWJlX25vZGVfaW5mb3xrdWJlX25vZGVfbGFiZWxzfGt1YmVfbm9kZV9zdGF0dXNfYWxsb2NhdGFibGV8a3ViZV9ub2RlX3N0YXR1c19hbGxvY2F0YWJsZV9jcHVfY29yZXN8a3ViZV9ub2RlX3N0YXR1c19hbGxvY2F0YWJsZV9tZW1vcnlfYnl0ZXN8a3ViZV9ub2RlX3N0YXR1c19jYXBhY2l0eXxrdWJlX25vZGVfc3RhdHVzX2NhcGFjaXR5X2NwdV9jb3Jlc3xrdWJlX25vZGVfc3RhdHVzX2NhcGFjaXR5X21lbW9yeV9ieXRlc3xrdWJlX25vZGVfc3RhdHVzX2NvbmRpdGlvbnxrdWJlX3BlcnNpc3RlbnR2b2x1bWVfY2FwYWNpdHlfYnl0ZXN8a3ViZV9wZXJzaXN0ZW50dm9sdW1lX3N0YXR1c19waGFzZXxrdWJlX3BlcnNpc3RlbnR2b2x1bWVjbGFpbV9pbmZvfGt1YmVfcGVyc2lzdGVudHZvbHVtZWNsYWltX3Jlc291cmNlX3JlcXVlc3RzX3N0b3JhZ2VfYnl0ZXN8a3ViZV9wb2RfY29udGFpbmVyX2luZm98a3ViZV9wb2RfY29udGFpbmVyX3Jlc291cmNlX2xpbWl0c3xrdWJlX3BvZF9jb250YWluZXJfcmVzb3VyY2VfbGltaXRzX2NwdV9jb3Jlc3xrdWJlX3BvZF9jb250YWluZXJfcmVzb3VyY2VfbGltaXRzX21lbW9yeV9ieXRlc3xrdWJlX3BvZF9jb250YWluZXJfcmVzb3VyY2VfcmVxdWVzdHN8a3ViZV9wb2RfY29udGFpbmVyX3Jlc291cmNlX3JlcXVlc3RzX2NwdV9jb3Jlc3xrdWJlX3BvZF9jb250YWluZXJfcmVzb3VyY2VfcmVxdWVzdHNfbWVtb3J5X2J5dGVzfGt1YmVfcG9kX2NvbnRhaW5lcl9zdGF0dXNfcmVzdGFydHNfdG90YWx8a3ViZV9wb2RfY29udGFpbmVyX3N0YXR1c19ydW5uaW5nfGt1YmVfcG9kX2NvbnRhaW5lcl9zdGF0dXNfdGVybWluYXRlZF9yZWFzb258a3ViZV9wb2RfbGFiZWxzfGt1YmVfcG9kX293bmVyfGt1YmVfcG9kX3N0YXR1c19waGFzZXxrdWJlX3JlcGxpY2FzZXRfb3duZXJ8a3ViZV9zdGF0ZWZ1bHNldF9yZXBsaWNhc3xrdWJlX3N0YXRlZnVsc2V0X3N0YXR1c19yZXBsaWNhc3xrdWJlY29zdF9jbHVzdGVyX2luZm98a3ViZWNvc3RfY2x1c3Rlcl9tYW5hZ2VtZW50X2Nvc3R8a3ViZWNvc3RfY2x1c3Rlcl9tZW1vcnlfd29ya2luZ19zZXRfYnl0ZXN8a3ViZWNvc3RfbG9hZF9iYWxhbmNlcl9jb3N0fGt1YmVjb3N0X25ldHdvcmtfaW50ZXJuZXRfZWdyZXNzX2Nvc3R8a3ViZWNvc3RfbmV0d29ya19yZWdpb25fZWdyZXNzX2Nvc3R8a3ViZWNvc3RfbmV0d29ya196b25lX2VncmVzc19jb3N0fGt1YmVjb3N0X25vZGVfaXNfc3BvdHxrdWJlY29zdF9wb2RfbmV0d29ya19lZ3Jlc3NfYnl0ZXNfdG90YWx8bm9kZV9jcHVfaG91cmx5X2Nvc3R8bm9kZV9jcHVfc2Vjb25kc190b3RhbHxub2RlX2Rpc2tfcmVhZHNfY29tcGxldGVkfG5vZGVfZGlza19yZWFkc19jb21wbGV0ZWRfdG90YWx8bm9kZV9kaXNrX3dyaXRlc19jb21wbGV0ZWR8bm9kZV9kaXNrX3dyaXRlc19jb21wbGV0ZWRfdG90YWx8bm9kZV9maWxlc3lzdGVtX2RldmljZV9lcnJvcnxub2RlX2dwdV9jb3VudHxub2RlX2dwdV9ob3VybHlfY29zdHxub2RlX21lbW9yeV9CdWZmZXJzX2J5dGVzfG5vZGVfbWVtb3J5X0NhY2hlZF9ieXRlc3xub2RlX21lbW9yeV9NZW1BdmFpbGFibGVfYnl0ZXN8bm9kZV9tZW1vcnlfTWVtRnJlZV9ieXRlc3xub2RlX21lbW9yeV9NZW1Ub3RhbF9ieXRlc3xub2RlX25ldHdvcmtfdHJhbnNtaXRfYnl0ZXNfdG90YWx8bm9kZV9yYW1faG91cmx5X2Nvc3R8bm9kZV90b3RhbF9ob3VybHlfY29zdHxwb2RfcHZjX2FsbG9jYXRpb258cHZfaG91cmx5X2Nvc3R8c2VydmljZV9zZWxlY3Rvcl9sYWJlbHN8c3RhdGVmdWxTZXRfbWF0Y2hfbGFiZWxzfGt1YmVjb3N0X3B2X2luZm98dXApIiwic291cmNlX2xhYmVscyI6WyJfX25hbWVfXyJdfV0sInJlbGFiZWxfY29uZmlncyI6W3siYWN0aW9uIjoia2VlcCIsInJlZ2V4Ijp0cnVlLCJzb3VyY2VfbGFiZWxzIjpbIl9fbWV0YV9rdWJlcm5ldGVzX3NlcnZpY2VfYW5ub3RhdGlvbl9wcm9tZXRoZXVzX2lvX3NjcmFwZSJdfSx7ImFjdGlvbiI6ImtlZXAiLCJyZWdleCI6IiguKm5vZGUtZXhwb3J0ZXJ8a3ViZWNvc3QtbmV0d29yay1jb3N0cykiLCJzb3VyY2VfbGFiZWxzIjpbIl9fbWV0YV9rdWJlcm5ldGVzX2VuZHBvaW50c19uYW1lIl19LHsiYWN0aW9uIjoicmVwbGFjZSIsInJlZ2V4IjoiKGh0dHBzPykiLCJzb3VyY2VfbGFiZWxzIjpbIl9fbWV0YV9rdWJlcm5ldGVzX3NlcnZpY2VfYW5ub3RhdGlvbl9wcm9tZXRoZXVzX2lvX3NjaGVtZSJdLCJ0YXJnZXRfbGFiZWwiOiJfX3NjaGVtZV9fIn0seyJhY3Rpb24iOiJyZXBsYWNlIiwicmVnZXgiOiIoLispIiwic291cmNlX2xhYmVscyI6WyJfX21ldGFfa3ViZXJuZXRlc19zZXJ2aWNlX2Fubm90YXRpb25fcHJvbWV0aGV1c19pb19wYXRoIl0sInRhcmdldF9sYWJlbCI6Il9fbWV0cmljc19wYXRoX18ifSx7ImFjdGlvbiI6InJlcGxhY2UiLCJyZWdleCI6IihbXjpdKykoPzo6XFxkKyk/OyhcXGQrKSIsInJlcGxhY2VtZW50IjoiJDE6JDIiLCJzb3VyY2VfbGFiZWxzIjpbIl9fYWRkcmVzc19fIiwiX19tZXRhX2t1YmVybmV0ZXNfc2VydmljZV9hbm5vdGF0aW9uX3Byb21ldGhldXNfaW9fcG9ydCJdLCJ0YXJnZXRfbGFiZWwiOiJfX2FkZHJlc3NfXyJ9LHsiYWN0aW9uIjoibGFiZWxtYXAiLCJyZWdleCI6Il9fbWV0YV9rdWJlcm5ldGVzX3NlcnZpY2VfbGFiZWxfKC4rKSJ9LHsiYWN0aW9uIjoicmVwbGFjZSIsInNvdXJjZV9sYWJlbHMiOlsiX19tZXRhX2t1YmVybmV0ZXNfbmFtZXNwYWNlIl0sInRhcmdldF9sYWJlbCI6Imt1YmVybmV0ZXNfbmFtZXNwYWNlIn0seyJhY3Rpb24iOiJyZXBsYWNlIiwic291cmNlX2xhYmVscyI6WyJfX21ldGFfa3ViZXJuZXRlc19zZXJ2aWNlX25hbWUiXSwidGFyZ2V0X2xhYmVsIjoia3ViZXJuZXRlc19uYW1lIn0seyJhY3Rpb24iOiJyZXBsYWNlIiwic291cmNlX2xhYmVscyI6WyJfX21ldGFfa3ViZXJuZXRlc19wb2Rfbm9kZV9uYW1lIl0sInRhcmdldF9sYWJlbCI6Imt1YmVybmV0ZXNfbm9kZSJ9XX1dfSwicmVjb3JkaW5nX3J1bGVzLnltbCI6e30sInJ1bGVzIjp7Imdyb3VwcyI6W3sibmFtZSI6IkNQVSIsInJ1bGVzIjpbeyJleHByIjoic3VtKHJhdGUoY29udGFpbmVyX2NwdV91c2FnZV9zZWNvbmRzX3RvdGFse2NvbnRhaW5lciE9XCJcIn1bNW1dKSkiLCJyZWNvcmQiOiJjbHVzdGVyOmNwdV91c2FnZTpyYXRlNW0ifSx7ImV4cHIiOiJyYXRlKGNvbnRhaW5lcl9jcHVfdXNhZ2Vfc2Vjb25kc190b3RhbHtjb250YWluZXIhPVwiXCJ9WzVtXSkiLCJyZWNvcmQiOiJjbHVzdGVyOmNwdV91c2FnZV9ub3N1bTpyYXRlNW0ifSx7ImV4cHIiOiJhdmcoaXJhdGUoY29udGFpbmVyX2NwdV91c2FnZV9zZWNvbmRzX3RvdGFse2NvbnRhaW5lciE9XCJQT0RcIiwgY29udGFpbmVyIT1cIlwifVs1bV0pKSBieSAoY29udGFpbmVyLHBvZCxuYW1lc3BhY2UpIiwicmVjb3JkIjoia3ViZWNvc3RfY29udGFpbmVyX2NwdV91c2FnZV9pcmF0ZSJ9LHsiZXhwciI6InN1bShjb250YWluZXJfbWVtb3J5X3dvcmtpbmdfc2V0X2J5dGVze2NvbnRhaW5lciE9XCJQT0RcIixjb250YWluZXIhPVwiXCJ9KSBieSAoY29udGFpbmVyLHBvZCxuYW1lc3BhY2UpIiwicmVjb3JkIjoia3ViZWNvc3RfY29udGFpbmVyX21lbW9yeV93b3JraW5nX3NldF9ieXRlcyJ9LHsiZXhwciI6InN1bShjb250YWluZXJfbWVtb3J5X3dvcmtpbmdfc2V0X2J5dGVze2NvbnRhaW5lciE9XCJQT0RcIixjb250YWluZXIhPVwiXCJ9KSIsInJlY29yZCI6Imt1YmVjb3N0X2NsdXN0ZXJfbWVtb3J5X3dvcmtpbmdfc2V0X2J5dGVzIn1dfSx7Im5hbWUiOiJTYXZpbmdzIiwicnVsZXMiOlt7ImV4cHIiOiJzdW0oYXZnKGt1YmVfcG9kX293bmVye293bmVyX2tpbmQhPVwiRGFlbW9uU2V0XCJ9KSBieSAocG9kKSAqIHN1bShjb250YWluZXJfY3B1X2FsbG9jYXRpb24pIGJ5IChwb2QpKSIsImxhYmVscyI6eyJkYWVtb25zZXQiOiJmYWxzZSJ9LCJyZWNvcmQiOiJrdWJlY29zdF9zYXZpbmdzX2NwdV9hbGxvY2F0aW9uIn0seyJleHByIjoic3VtKGF2ZyhrdWJlX3BvZF9vd25lcntvd25lcl9raW5kPVwiRGFlbW9uU2V0XCJ9KSBieSAocG9kKSAqIHN1bShjb250YWluZXJfY3B1X2FsbG9jYXRpb24pIGJ5IChwb2QpKSAvIHN1bShrdWJlX25vZGVfaW5mbykiLCJsYWJlbHMiOnsiZGFlbW9uc2V0IjoidHJ1ZSJ9LCJyZWNvcmQiOiJrdWJlY29zdF9zYXZpbmdzX2NwdV9hbGxvY2F0aW9uIn0seyJleHByIjoic3VtKGF2ZyhrdWJlX3BvZF9vd25lcntvd25lcl9raW5kIT1cIkRhZW1vblNldFwifSkgYnkgKHBvZCkgKiBzdW0oY29udGFpbmVyX21lbW9yeV9hbGxvY2F0aW9uX2J5dGVzKSBieSAocG9kKSkiLCJsYWJlbHMiOnsiZGFlbW9uc2V0IjoiZmFsc2UifSwicmVjb3JkIjoia3ViZWNvc3Rfc2F2aW5nc19tZW1vcnlfYWxsb2NhdGlvbl9ieXRlcyJ9LHsiZXhwciI6InN1bShhdmcoa3ViZV9wb2Rfb3duZXJ7b3duZXJfa2luZD1cIkRhZW1vblNldFwifSkgYnkgKHBvZCkgKiBzdW0oY29udGFpbmVyX21lbW9yeV9hbGxvY2F0aW9uX2J5dGVzKSBieSAocG9kKSkgLyBzdW0oa3ViZV9ub2RlX2luZm8pIiwibGFiZWxzIjp7ImRhZW1vbnNldCI6InRydWUifSwicmVjb3JkIjoia3ViZWNvc3Rfc2F2aW5nc19tZW1vcnlfYWxsb2NhdGlvbl9ieXRlcyJ9XX1dfX0sInNlcnZpY2VBY2NvdW50cyI6eyJhbGVydG1hbmFnZXIiOnsiY3JlYXRlIjp0cnVlfSwibm9kZUV4cG9ydGVyIjp7ImNyZWF0ZSI6dHJ1ZX0sInNlcnZlciI6eyJhbm5vdGF0aW9ucyI6e30sImNyZWF0ZSI6dHJ1ZX19fSwicmVwb3J0aW5nIjp7ImVycm9yUmVwb3J0aW5nIjp0cnVlLCJsb2dDb2xsZWN0aW9uIjp0cnVlLCJwcm9kdWN0QW5hbHl0aWNzIjp0cnVlLCJ2YWx1ZXNSZXBvcnRpbmciOnRydWV9LCJzZXJ2aWNlIjp7ImFubm90YXRpb25zIjp7fSwibGFiZWxzIjp7fSwibm9kZVBvcnQiOnt9LCJwb3J0Ijo5MDkwLCJ0YXJnZXRQb3J0Ijo5MDkwLCJ0eXBlIjoiQ2x1c3RlcklQIn0sInNlcnZpY2VBY2NvdW50Ijp7ImFubm90YXRpb25zIjp7fSwiY3JlYXRlIjp0cnVlfSwic2lnVjRQcm94eSI6eyJob3N0IjoiYXBzLXdvcmtzcGFjZXMudXMtd2VzdC0yLmFtYXpvbmF3cy5jb20iLCJpbWFnZSI6InB1YmxpYy5lY3IuYXdzL2F3cy1vYnNlcnZhYmlsaXR5L2F3cy1zaWd2NC1wcm94eTpsYXRlc3QiLCJpbWFnZVB1bGxQb2xpY3kiOiJJZk5vdFByZXNlbnQiLCJuYW1lIjoiYXBzIiwicG9ydCI6ODAwNSwicmVnaW9uIjoidXMtd2VzdC0yIiwicmVzb3VyY2VzIjp7fX0sInN1cHBvcnRORlMiOmZhbHNlLCJ0b2xlcmF0aW9ucyI6W10sInRvcG9sb2d5U3ByZWFkQ29uc3RyYWludHMiOltdLCJ1cGdyYWRlIjp7InRvVjIiOmZhbHNlfX0=
+              value: eyJhZmZpbml0eSI6e30sImF3c3N0b3JlIjp7ImFubm90YXRpb25zIjp7fSwiY3JlYXRlU2VydmljZUFjY291bnQiOmZhbHNlLCJpbWFnZU5hbWVBbmRWZXJzaW9uIjoiZ2NyLmlvL2t1YmVjb3N0MS9hd3NzdG9yZTpsYXRlc3QiLCJub2RlU2VsZWN0b3IiOnt9LCJwcmlvcml0eUNsYXNzTmFtZSI6IiIsInVzZUF3c1N0b3JlIjpmYWxzZX0sImRpYWdub3N0aWNzIjp7ImNvbGxlY3RIZWxtVmFsdWVzIjpmYWxzZSwiZW5hYmxlZCI6dHJ1ZSwia2VlcERpYWdub3N0aWNIaXN0b3J5IjpmYWxzZSwicG9sbGluZ0ludGVydmFsIjoiMzAwcyJ9LCJleHRyYU9iamVjdHMiOltdLCJleHRyYVZvbHVtZU1vdW50cyI6W10sImV4dHJhVm9sdW1lcyI6W10sImZlZGVyYXRlZEVUTCI6eyJhZ2VudE9ubHkiOmZhbHNlLCJmZWRlcmF0ZWRDbHVzdGVyIjpmYWxzZSwicmVhZE9ubHlQcmltYXJ5IjpmYWxzZSwicmVkaXJlY3RTM0JhY2t1cCI6ZmFsc2UsInVzZU11bHRpQ2x1c3RlckRCIjpmYWxzZX0sImZvcmVjYXN0aW5nIjp7ImFmZmluaXR5Ijp7fSwiYW5ub3RhdGlvbnMiOnt9LCJlbmFibGVkIjp0cnVlLCJlbnYiOnsiR1VOSUNPUk5fQ01EX0FSR1MiOiItLWxvZy1sZXZlbCBpbmZvIC10IDEyMDAifSwiZnVsbEltYWdlTmFtZSI6Imdjci5pby9rdWJlY29zdDEva3ViZWNvc3QtbW9kZWxpbmc6djAuMS4yMiIsImltYWdlUHVsbFBvbGljeSI6IklmTm90UHJlc2VudCIsImxpdmVuZXNzUHJvYmUiOnsiZW5hYmxlZCI6dHJ1ZSwiZmFpbHVyZVRocmVzaG9sZCI6MjAwLCJpbml0aWFsRGVsYXlTZWNvbmRzIjoxMCwicGVyaW9kU2Vjb25kcyI6MTB9LCJub2RlU2VsZWN0b3IiOnt9LCJyZWFkaW5lc3NQcm9iZSI6eyJlbmFibGVkIjp0cnVlLCJmYWlsdXJlVGhyZXNob2xkIjoyMDAsImluaXRpYWxEZWxheVNlY29uZHMiOjEwLCJwZXJpb2RTZWNvbmRzIjoxMH0sInJlc291cmNlcyI6eyJsaW1pdHMiOnsiY3B1IjoiMTUwMG0iLCJtZW1vcnkiOiIxR2kifSwicmVxdWVzdHMiOnsiY3B1IjoiMjAwbSIsIm1lbW9yeSI6IjMwME1pIn19LCJ0b2xlcmF0aW9ucyI6W119LCJnbG9iYWwiOnsiYWRkaXRpb25hbExhYmVscyI6e30sImFubm90YXRpb25zIjp7fSwiY29udGFpbmVyU2VjdXJpdHlDb250ZXh0Ijp7ImFsbG93UHJpdmlsZWdlRXNjYWxhdGlvbiI6ZmFsc2UsImNhcGFiaWxpdGllcyI6eyJkcm9wIjpbIkFMTCJdfSwicHJpdmlsZWdlZCI6ZmFsc2UsInJlYWRPbmx5Um9vdEZpbGVzeXN0ZW0iOnRydWV9LCJpbnRlZ3JhdGlvbnMiOnt9LCJub3RpZmljYXRpb25zIjp7ImFsZXJ0bWFuYWdlciI6eyJlbmFibGVkIjp0cnVlLCJmcWRuIjoiaHR0cDovL3N4LWt1YmUtcHJvbWV0aGV1cy1zdGFjay1hbGVydG1hbmFnZXIubW9uaXRvcmluZzo5MDkzLyJ9fSwicGxhdGZvcm1zIjp7ImNpY2QiOnsiZW5hYmxlZCI6dHJ1ZSwic2tpcFNhbml0eUNoZWNrcyI6ZmFsc2V9fSwicG9kQW5ub3RhdGlvbnMiOnt9LCJwcm9tZXRoZXVzIjp7ImVuYWJsZWQiOnRydWUsImZxZG4iOiJodHRwOi8vc3gta3ViZS1wcm9tZXRoZXVzLXN0YWNrLXByb21ldGhldXMubW9uaXRvcmluZzo5MDkwLyIsImluc2VjdXJlU2tpcFZlcmlmeSI6ZmFsc2UsImt1YmVSQkFDUHJveHkiOmZhbHNlfSwic2VjdXJpdHlDb250ZXh0Ijp7ImZzR3JvdXAiOjEwMDEsImZzR3JvdXBDaGFuZ2VQb2xpY3kiOiJPblJvb3RNaXNtYXRjaCIsInJ1bkFzR3JvdXAiOjEwMDEsInJ1bkFzTm9uUm9vdCI6dHJ1ZSwicnVuQXNVc2VyIjoxMDAxLCJzZWNjb21wUHJvZmlsZSI6eyJ0eXBlIjoiUnVudGltZURlZmF1bHQifX19LCJncmFmYW5hIjp7ImFkbWluUGFzc3dvcmQiOiJzdHJvbmdwYXNzd29yZCIsImFkbWluVXNlciI6ImFkbWluIiwiYWZmaW5pdHkiOnt9LCJhbm5vdGF0aW9ucyI6e30sImRhc2hib2FyZFByb3ZpZGVycyI6e30sImRhc2hib2FyZHMiOnt9LCJkYXNoYm9hcmRzQ29uZmlnTWFwcyI6e30sImRlcGxveW1lbnRTdHJhdGVneSI6IlJvbGxpbmdVcGRhdGUiLCJkb3dubG9hZERhc2hib2FyZHNJbWFnZSI6eyJwdWxsUG9saWN5IjoiSWZOb3RQcmVzZW50IiwicmVwb3NpdG9yeSI6ImN1cmxpbWFnZXMvY3VybCIsInRhZyI6ImxhdGVzdCJ9LCJlbnYiOnt9LCJlbnZGcm9tU2VjcmV0IjoiIiwiZXh0cmFTZWNyZXRNb3VudHMiOltdLCJncmFmYW5hLmluaSI6eyJhbmFseXRpY3MiOnsiY2hlY2tfZm9yX3VwZGF0ZXMiOnRydWV9LCJhdXRoLmFub255bW91cyI6eyJlbmFibGVkIjp0cnVlLCJvcmdfbmFtZSI6Ik1haW4gT3JnLiIsIm9yZ19yb2xlIjoiRWRpdG9yIn0sImdyYWZhbmFfbmV0Ijp7InVybCI6Imh0dHBzOi8vZ3JhZmFuYS5uZXQifSwibG9nIjp7Im1vZGUiOiJjb25zb2xlIn0sInBhdGhzIjp7ImRhdGEiOiIvdmFyL2xpYi9ncmFmYW5hL2RhdGEiLCJsb2dzIjoiL3Zhci9sb2cvZ3JhZmFuYSIsInBsdWdpbnMiOiIvdmFyL2xpYi9ncmFmYW5hL3BsdWdpbnMiLCJwcm92aXNpb25pbmciOiIvZXRjL2dyYWZhbmEvcHJvdmlzaW9uaW5nIn0sInNlcnZlciI6eyJyb290X3VybCI6IiUocHJvdG9jb2wpczovLyUoZG9tYWluKXM6JShodHRwX3BvcnQpcy9ncmFmYW5hIiwic2VydmVfZnJvbV9zdWJfcGF0aCI6ZmFsc2V9fSwiaW1hZ2UiOnsicHVsbFBvbGljeSI6IklmTm90UHJlc2VudCIsInJlcG9zaXRvcnkiOiJncmFmYW5hL2dyYWZhbmEiLCJ0YWciOiIxMS40LjAifSwibGl2ZW5lc3NQcm9iZSI6eyJmYWlsdXJlVGhyZXNob2xkIjoxMCwiaHR0cEdldCI6eyJwYXRoIjoiL2FwaS9oZWFsdGgiLCJwb3J0IjozMDAwfSwiaW5pdGlhbERlbGF5U2Vjb25kcyI6NjAsInRpbWVvdXRTZWNvbmRzIjozMH0sIm5hbWVzcGFjZV9kYXNoYm9hcmRzIjoia3ViZWNvc3QiLCJuYW1lc3BhY2VfZGF0YXNvdXJjZXMiOiJrdWJlY29zdCIsIm5vZGVTZWxlY3RvciI6e30sInBsdWdpbnMiOltdLCJwb2RBbm5vdGF0aW9ucyI6e30sInByaW9yaXR5Q2xhc3NOYW1lIjoiIiwicmJhYyI6eyJjcmVhdGUiOnRydWV9LCJyZWFkaW5lc3NQcm9iZSI6eyJodHRwR2V0Ijp7InBhdGgiOiIvYXBpL2hlYWx0aCIsInBvcnQiOjMwMDB9fSwicmVwbGljYXMiOjEsInJlc291cmNlcyI6e30sInNlY3VyaXR5Q29udGV4dCI6e30sInNlcnZpY2UiOnsiYW5ub3RhdGlvbnMiOnt9LCJsYWJlbHMiOnt9LCJwb3J0Ijo4MCwidHlwZSI6IkNsdXN0ZXJJUCJ9LCJzZXJ2aWNlQWNjb3VudCI6eyJjcmVhdGUiOnRydWUsIm5hbWUiOiIifSwic2lkZWNhciI6eyJkYXNoYm9hcmRzIjp7ImFubm90YXRpb25zIjp7fSwiZW5hYmxlZCI6dHJ1ZSwiZXJyb3JfdGhyb3R0bGVfc2xlZXAiOjAsImZvbGRlciI6Ii90bXAvZGFzaGJvYXJkcyIsImxhYmVsIjoiZ3JhZmFuYV9kYXNoYm9hcmQiLCJsYWJlbFZhbHVlIjoiMSJ9LCJpbWFnZSI6eyJwdWxsUG9saWN5IjoiSWZOb3RQcmVzZW50IiwicmVwb3NpdG9yeSI6ImdoY3IuaW8va2l3aWdyaWQvazhzLXNpZGVjYXIiLCJ0YWciOiIxLjI5LjEifSwicmVzb3VyY2VzIjp7fX0sInRvbGVyYXRpb25zIjpbXX0sImluZ3Jlc3MiOnsiYW5ub3RhdGlvbnMiOnsiY2VydC1tYW5hZ2VyLmlvL2NsdXN0ZXItaXNzdWVyIjoibGV0c2VuY3J5cHQtc3RhZ2luZyJ9LCJjbGFzc05hbWUiOiJuZ2lueCIsImVuYWJsZWQiOnRydWUsImhvc3RzIjpbImt1YmVjb3N0LW1ldGFsc3RhY2sucGxhdGZvcm0tZW5naW5lZXIuY2xvdWQiXSwicGF0aFR5cGUiOiJJbXBsZW1lbnRhdGlvblNwZWNpZmljIiwicGF0aHMiOlsiLyJdLCJ0bHMiOlt7Imhvc3RzIjpbImt1YmVjb3N0LW1ldGFsc3RhY2sucGxhdGZvcm0tZW5naW5lZXIuY2xvdWQiXSwic2VjcmV0TmFtZSI6Imt1YmVjb3N0LXNlcnZlci10bHMifV19LCJpbml0Q2hvd25EYXRhIjp7InJlc291cmNlcyI6e319LCJpbml0Q2hvd25EYXRhSW1hZ2UiOiJidXN5Ym94Iiwia3ViZWNvc3REZXBsb3ltZW50Ijp7ImFubm90YXRpb25zIjp7fSwibGFiZWxzIjp7fSwicmVwbGljYXMiOjF9LCJrdWJlY29zdEZyb250ZW5kIjp7ImRlcGxveU1ldGhvZCI6InNpbmdsZXBvZCIsImRlcGxveW1lbnRTdHJhdGVneSI6e30sImVuYWJsZWQiOnRydWUsImhhUmVwbGljYXMiOjIsImltYWdlIjoiZ2NyLmlvL2t1YmVjb3N0MS9mcm9udGVuZCIsImltYWdlUHVsbFBvbGljeSI6IklmTm90UHJlc2VudCIsImlwdjYiOnsiZW5hYmxlZCI6dHJ1ZX0sImxpdmVuZXNzUHJvYmUiOnsiZW5hYmxlZCI6dHJ1ZSwiZmFpbHVyZVRocmVzaG9sZCI6NiwiaW5pdGlhbERlbGF5U2Vjb25kcyI6MSwicGVyaW9kU2Vjb25kcyI6NX0sInJlYWRpbmVzc1Byb2JlIjp7ImVuYWJsZWQiOnRydWUsImZhaWx1cmVUaHJlc2hvbGQiOjYsImluaXRpYWxEZWxheVNlY29uZHMiOjEsInBlcmlvZFNlY29uZHMiOjV9LCJyZXNvdXJjZXMiOnsicmVxdWVzdHMiOnsiY3B1IjoiMTBtIiwibWVtb3J5IjoiNTVNaSJ9fSwidXNlRGVmYXVsdEZxZG4iOmZhbHNlfSwia3ViZWNvc3RNb2RlbCI6eyJjb250YWluZXJTdGF0c0VuYWJsZWQiOnRydWUsImV0bERhaWx5U3RvcmVEdXJhdGlvbkRheXMiOjkxLCJldGxIb3VybHlTdG9yZUR1cmF0aW9uSG91cnMiOjQ5LCJldGxSZWFkT25seU1vZGUiOmZhbHNlLCJleHRyYUFyZ3MiOltdLCJleHRyYVBvcnRzIjpbXSwiaW1hZ2UiOiJnY3IuaW8va3ViZWNvc3QxL2Nvc3QtbW9kZWwiLCJpbWFnZVB1bGxQb2xpY3kiOiJJZk5vdFByZXNlbnQiLCJsaXZlbmVzc1Byb2JlIjp7ImVuYWJsZWQiOnRydWUsImZhaWx1cmVUaHJlc2hvbGQiOjIwMCwiaW5pdGlhbERlbGF5U2Vjb25kcyI6MTAsInBlcmlvZFNlY29uZHMiOjEwfSwibG9nTGV2ZWwiOiJpbmZvIiwibWF4UXVlcnlDb25jdXJyZW5jeSI6NSwicmVhZGluZXNzUHJvYmUiOnsiZW5hYmxlZCI6dHJ1ZSwiZmFpbHVyZVRocmVzaG9sZCI6MjAwLCJpbml0aWFsRGVsYXlTZWNvbmRzIjoxMCwicGVyaW9kU2Vjb25kcyI6MTB9LCJyZXNvdXJjZXMiOnsicmVxdWVzdHMiOnsiY3B1IjoiMjAwbSIsIm1lbW9yeSI6IjU1TWkifX19LCJrdWJlY29zdFByb2R1Y3RDb25maWdzIjp7ImNsdXN0ZXJOYW1lIjoia3VicmlYIERlbW8iLCJjbHVzdGVyUHJvZmlsZSI6ImRldmVsb3BtZW50IiwiY3VycmVuY3lDb2RlIjoiRVVSIiwiY3VzdG9tUHJpY2VzRW5hYmxlZCI6dHJ1ZSwiZGVmYXVsdE1vZGVsUHJpY2luZyI6eyJDUFUiOiIyOC4wIiwiR1BVIjoiNjkzLjUwIiwiUkFNIjoiMy4wOSIsImVuYWJsZWQiOnRydWUsImludGVybmV0TmV0d29ya0VncmVzcyI6IjAuMTIiLCJyZWdpb25OZXR3b3JrRWdyZXNzIjoiMC4wMSIsInNwb3RDUFUiOiI0Ljg2Iiwic3BvdEdQVSI6IjIyNS4wIiwic3BvdFJBTSI6IjAuNjUiLCJzdG9yYWdlIjoiMC4wNCIsInpvbmVOZXR3b3JrRWdyZXNzIjoiMC4wMSJ9fSwibm9kZVNlbGVjdG9yIjp7fSwicGVyc2lzdGVudFZvbHVtZSI6eyJhbm5vdGF0aW9ucyI6e30sImRiU2l6ZSI6IjVHaSIsImVuYWJsZWQiOnRydWUsImxhYmVscyI6e30sInNpemUiOiI1R2kifSwicHJvbWV0aGV1cyI6eyJhbGVydG1hbmFnZXJGaWxlcyI6eyJhbGVydG1hbmFnZXIueW1sIjp7Imdsb2JhbCI6e30sInJlY2VpdmVycyI6W3sibmFtZSI6ImRlZmF1bHQtcmVjZWl2ZXIifV0sInJvdXRlIjp7Imdyb3VwX2ludGVydmFsIjoiNW0iLCJncm91cF93YWl0IjoiMTBzIiwicmVjZWl2ZXIiOiJkZWZhdWx0LXJlY2VpdmVyIiwicmVwZWF0X2ludGVydmFsIjoiM2gifX19LCJjb25maWdtYXBSZWxvYWQiOnt9LCJleHRyYVNjcmFwZUNvbmZpZ3MiOiItIGpvYl9uYW1lOiBrdWJlY29zdFxuICBob25vcl9sYWJlbHM6IHRydWVcbiAgc2NyYXBlX2ludGVydmFsOiAxbVxuICBzY3JhcGVfdGltZW91dDogNjBzXG4gIG1ldHJpY3NfcGF0aDogL21ldHJpY3NcbiAgc2NoZW1lOiBodHRwXG4gIGRuc19zZF9jb25maWdzOlxuICAtIG5hbWVzOlxuICAgIC0ge3sgdGVtcGxhdGUgXCJjb3N0LWFuYWx5emVyLnNlcnZpY2VOYW1lXCIgLiB9fVxuICAgIHR5cGU6ICdBJ1xuICAgIHBvcnQ6IDkwMDNcbi0gam9iX25hbWU6IGt1YmVjb3N0LW5ldHdvcmtpbmdcbiAga3ViZXJuZXRlc19zZF9jb25maWdzOlxuICAgIC0gcm9sZTogcG9kXG4gIHJlbGFiZWxfY29uZmlnczpcbiAgIyBTY3JhcGUgb25seSB0aGUgdGhlIHRhcmdldHMgbWF0Y2hpbmcgdGhlIGZvbGxvd2luZyBtZXRhZGF0YVxuICAgIC0gc291cmNlX2xhYmVsczogW19fbWV0YV9rdWJlcm5ldGVzX3BvZF9sYWJlbF9hcHBfa3ViZXJuZXRlc19pb19pbnN0YW5jZV1cbiAgICAgIGFjdGlvbjoga2VlcFxuICAgICAgcmVnZXg6ICBrdWJlY29zdFxuICAgIC0gc291cmNlX2xhYmVsczogW19fbWV0YV9rdWJlcm5ldGVzX3BvZF9sYWJlbF9hcHBfa3ViZXJuZXRlc19pb19uYW1lXVxuICAgICAgYWN0aW9uOiBrZWVwXG4gICAgICByZWdleDogIG5ldHdvcmstY29zdHNcbi0gam9iX25hbWU6IGt1YmVjb3N0LWFnZ3JlZ2F0b3JcbiAgc2NyYXBlX2ludGVydmFsOiAxbVxuICBzY3JhcGVfdGltZW91dDogNjBzXG4gIG1ldHJpY3NfcGF0aDogL21ldHJpY3NcbiAgc2NoZW1lOiBodHRwXG4gIGRuc19zZF9jb25maWdzOlxuICAtIG5hbWVzOlxuICAgIC0ge3sgdGVtcGxhdGUgXCJhZ2dyZWdhdG9yLnNlcnZpY2VOYW1lXCIgLiB9fVxuICAgIHR5cGU6ICdBJ1xuICAgIHt7LSBpZiBvciAuVmFsdWVzLnNhbWwuZW5hYmxlZCAuVmFsdWVzLm9pZGMuZW5hYmxlZCB9fVxuICAgIHBvcnQ6IDkwMDhcbiAgICB7ey0gZWxzZSB9fVxuICAgIHBvcnQ6IDkwMDRcbiAgICB7ey0gZW5kIH19XG4jIyBFbmFibGVzIHNjcmFwaW5nIG9mIE5WSURJQSBHUFUgbWV0cmljcyB2aWEgZGNnbS1leHBvcnRlci4gU2NyYXBlcyBhbGxcbiMjIGVuZHBvaW50cyB3aGljaCBjb250YWluIFwiZGNnbS1leHBvcnRlclwiIGluIGxhYmVscyBcImFwcFwiLFxuIyMgXCJhcHAua3ViZXJuZXRlcy5pby9jb21wb25lbnRcIiwgb3IgXCJhcHAua3ViZXJuZXRlcy5pby9uYW1lXCIgd2l0aCBhIGNhc2VcbiMjIGluc2Vuc2l0aXZlIG1hdGNoLiBUaGUgbGFiZWwgbXVzdCBiZSBwcmVzZW50IG9uIHRoZSBLOHMgc2VydmljZSBlbmRwb2ludHMgYW5kIG5vdCBqdXN0IHBvZHMuXG4jIyBSZWZzOlxuIyMgaHR0cHM6Ly9naXRodWIuY29tL05WSURJQS9ncHUtb3BlcmF0b3IvYmxvYi9kNDMxNmE0MTViYmQ2ODRjZTg0MTZhODgwNDIzMDVmYzFhMDkzYWE0L2Fzc2V0cy9zdGF0ZS1kY2dtLWV4cG9ydGVyLzA2MDBfc2VydmljZS55YW1sI0w3XG4jIyBodHRwczovL2dpdGh1Yi5jb20vTlZJRElBL2RjZ20tZXhwb3J0ZXIvYmxvYi81NGZkMWNhMTM3YzY2NTExYTg3YTcyMDM5MDYxMzY4MGI5YmRhYmRkL2RlcGxveW1lbnQvdGVtcGxhdGVzL3NlcnZpY2UueWFtbCNMMjNcbi0gam9iX25hbWU6IGt1YmVjb3N0LWRjZ20tZXhwb3J0ZXJcbiAga3ViZXJuZXRlc19zZF9jb25maWdzOlxuICAgIC0gcm9sZTogZW5kcG9pbnRzXG4gIHJlbGFiZWxfY29uZmlnczpcbiAgICAtIHNvdXJjZV9sYWJlbHM6IFtfX21ldGFfa3ViZXJuZXRlc19wb2RfbGFiZWxfYXBwLCBfX21ldGFfa3ViZXJuZXRlc19wb2RfbGFiZWxfYXBwX2t1YmVybmV0ZXNfaW9fY29tcG9uZW50LCBfX21ldGFfa3ViZXJuZXRlc19wb2RfbGFiZWxfYXBwX2t1YmVybmV0ZXNfaW9fbmFtZV1cbiAgICAgIGFjdGlvbjoga2VlcFxuICAgICAgcmVnZXg6ICg/aSkoLipkY2dtLWV4cG9ydGVyLip8LipkY2dtLWV4cG9ydGVyLip8LipkY2dtLWV4cG9ydGVyLiopXG4iLCJyYmFjIjp7ImNyZWF0ZSI6dHJ1ZX0sInNlcnZlciI6eyJhZmZpbml0eSI6e30sImFsZXJ0bWFuYWdlcnMiOltdLCJhbm5vdGF0aW9ucyI6e30sImJhc2VVUkwiOiIiLCJjb25maWdNYXBPdmVycmlkZU5hbWUiOiIiLCJjb25maWdQYXRoIjoiL2V0Yy9jb25maWcvcHJvbWV0aGV1cy55bWwiLCJjb250YWluZXJTZWN1cml0eUNvbnRleHQiOnt9LCJlbXB0eURpciI6eyJzaXplTGltaXQiOiIifSwiZW5hYmxlZCI6dHJ1ZSwiZW52IjpbXSwiZXh0cmFBcmdzIjp7InF1ZXJ5Lm1heC1jb25jdXJyZW5jeSI6MSwicXVlcnkubWF4LXNhbXBsZXMiOjEwMDAwMDAwMH0sImV4dHJhQ29uZmlnbWFwTW91bnRzIjpbXSwiZXh0cmFGbGFncyI6WyJ3ZWIuZW5hYmxlLWxpZmVjeWNsZSJdLCJleHRyYUhvc3RQYXRoTW91bnRzIjpbXSwiZXh0cmFJbml0Q29udGFpbmVycyI6W10sImV4dHJhU2VjcmV0TW91bnRzIjpbXSwiZXh0cmFWb2x1bWVNb3VudHMiOltdLCJleHRyYVZvbHVtZXMiOltdLCJnbG9iYWwiOnsiZXZhbHVhdGlvbl9pbnRlcnZhbCI6IjFtIiwiZXh0ZXJuYWxfbGFiZWxzIjp7ImNsdXN0ZXJfaWQiOiJrdWJyaXgifSwic2NyYXBlX2ludGVydmFsIjoiMW0iLCJzY3JhcGVfdGltZW91dCI6IjYwcyJ9LCJpbWFnZSI6eyJwdWxsUG9saWN5IjoiSWZOb3RQcmVzZW50IiwicmVwb3NpdG9yeSI6InF1YXkuaW8vcHJvbWV0aGV1cy9wcm9tZXRoZXVzIiwidGFnIjoidjMuMS4wIn0sImxpdmVuZXNzUHJvYmVGYWlsdXJlVGhyZXNob2xkIjozLCJsaXZlbmVzc1Byb2JlSW5pdGlhbERlbGF5Ijo1LCJsaXZlbmVzc1Byb2JlU3VjY2Vzc1RocmVzaG9sZCI6MSwibGl2ZW5lc3NQcm9iZVRpbWVvdXQiOjMsIm5hbWUiOiJzZXJ2ZXIiLCJub2RlU2VsZWN0b3IiOnt9LCJwZXJzaXN0ZW50Vm9sdW1lIjp7ImFjY2Vzc01vZGVzIjpbIlJlYWRXcml0ZU9uY2UiXSwiYW5ub3RhdGlvbnMiOnt9LCJlbmFibGVkIjp0cnVlLCJleGlzdGluZ0NsYWltIjoiIiwibW91bnRQYXRoIjoiL2RhdGEiLCJzaXplIjoiMzJHaSIsInN1YlBhdGgiOiIifSwicG9kQW5ub3RhdGlvbnMiOnt9LCJwb2RMYWJlbHMiOnt9LCJwcmVmaXhVUkwiOiIiLCJwcmlvcml0eUNsYXNzTmFtZSI6IiIsInJlYWRpbmVzc1Byb2JlRmFpbHVyZVRocmVzaG9sZCI6MywicmVhZGluZXNzUHJvYmVJbml0aWFsRGVsYXkiOjUsInJlYWRpbmVzc1Byb2JlU3VjY2Vzc1RocmVzaG9sZCI6MSwicmVhZGluZXNzUHJvYmVUaW1lb3V0IjozLCJyZW1vdGVSZWFkIjp7fSwicmVtb3RlV3JpdGUiOnt9LCJyZXBsaWNhQ291bnQiOjEsInJlc291cmNlcyI6e30sInJldGVudGlvbiI6Ijk3aCIsInNlY3VyaXR5Q29udGV4dCI6e30sInNlcnZpY2UiOnsiYW5ub3RhdGlvbnMiOnt9LCJjbHVzdGVySVAiOiIiLCJleHRlcm5hbElQcyI6W10sImxhYmVscyI6e30sImxvYWRCYWxhbmNlcklQIjoiIiwibG9hZEJhbGFuY2VyU291cmNlUmFuZ2VzIjpbXSwic2VydmljZVBvcnQiOjgwLCJzZXNzaW9uQWZmaW5pdHkiOiJOb25lIiwidHlwZSI6IkNsdXN0ZXJJUCJ9LCJzdHJhdGVneSI6eyJ0eXBlIjoiUmVjcmVhdGUifSwidGVybWluYXRpb25HcmFjZVBlcmlvZFNlY29uZHMiOjMwMCwidG9sZXJhdGlvbnMiOltdfSwic2VydmVyRmlsZXMiOnsiYWxlcnRpbmdfcnVsZXMueW1sIjp7fSwicHJvbWV0aGV1cy55bWwiOnsicnVsZV9maWxlcyI6WyIvZXRjL2NvbmZpZy9yZWNvcmRpbmdfcnVsZXMueW1sIiwiL2V0Yy9jb25maWcvYWxlcnRpbmdfcnVsZXMueW1sIl0sInNjcmFwZV9jb25maWdzIjpbeyJqb2JfbmFtZSI6InByb21ldGhldXMiLCJzdGF0aWNfY29uZmlncyI6W3sidGFyZ2V0cyI6WyJsb2NhbGhvc3Q6OTA5MCJdfV19LHsiYmVhcmVyX3Rva2VuX2ZpbGUiOiIvdmFyL3J1bi9zZWNyZXRzL2t1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvdG9rZW4iLCJqb2JfbmFtZSI6Imt1YmVybmV0ZXMtbm9kZXMtY2Fkdmlzb3IiLCJrdWJlcm5ldGVzX3NkX2NvbmZpZ3MiOlt7InJvbGUiOiJub2RlIn1dLCJtZXRyaWNfcmVsYWJlbF9jb25maWdzIjpbeyJhY3Rpb24iOiJrZWVwIiwicmVnZXgiOiIoY29udGFpbmVyX2NwdV91c2FnZV9zZWNvbmRzX3RvdGFsfGNvbnRhaW5lcl9tZW1vcnlfd29ya2luZ19zZXRfYnl0ZXN8Y29udGFpbmVyX25ldHdvcmtfcmVjZWl2ZV9lcnJvcnNfdG90YWx8Y29udGFpbmVyX25ldHdvcmtfdHJhbnNtaXRfZXJyb3JzX3RvdGFsfGNvbnRhaW5lcl9uZXR3b3JrX3JlY2VpdmVfcGFja2V0c19kcm9wcGVkX3RvdGFsfGNvbnRhaW5lcl9uZXR3b3JrX3RyYW5zbWl0X3BhY2tldHNfZHJvcHBlZF90b3RhbHxjb250YWluZXJfbWVtb3J5X3VzYWdlX2J5dGVzfGNvbnRhaW5lcl9jcHVfY2ZzX3Rocm90dGxlZF9wZXJpb2RzX3RvdGFsfGNvbnRhaW5lcl9jcHVfY2ZzX3BlcmlvZHNfdG90YWx8Y29udGFpbmVyX2ZzX3VzYWdlX2J5dGVzfGNvbnRhaW5lcl9mc19saW1pdF9ieXRlc3xjb250YWluZXJfY3B1X2Nmc19wZXJpb2RzX3RvdGFsfGNvbnRhaW5lcl9mc19pbm9kZXNfZnJlZXxjb250YWluZXJfZnNfaW5vZGVzX3RvdGFsfGNvbnRhaW5lcl9mc191c2FnZV9ieXRlc3xjb250YWluZXJfZnNfbGltaXRfYnl0ZXN8Y29udGFpbmVyX2NwdV9jZnNfdGhyb3R0bGVkX3BlcmlvZHNfdG90YWx8Y29udGFpbmVyX2NwdV9jZnNfcGVyaW9kc190b3RhbHxjb250YWluZXJfbmV0d29ya19yZWNlaXZlX2J5dGVzX3RvdGFsfGNvbnRhaW5lcl9uZXR3b3JrX3RyYW5zbWl0X2J5dGVzX3RvdGFsfGNvbnRhaW5lcl9mc19pbm9kZXNfZnJlZXxjb250YWluZXJfZnNfaW5vZGVzX3RvdGFsfGNvbnRhaW5lcl9mc191c2FnZV9ieXRlc3xjb250YWluZXJfZnNfbGltaXRfYnl0ZXN8Y29udGFpbmVyX3NwZWNfY3B1X3NoYXJlc3xjb250YWluZXJfc3BlY19tZW1vcnlfbGltaXRfYnl0ZXN8Y29udGFpbmVyX25ldHdvcmtfcmVjZWl2ZV9ieXRlc190b3RhbHxjb250YWluZXJfbmV0d29ya190cmFuc21pdF9ieXRlc190b3RhbHxjb250YWluZXJfZnNfcmVhZHNfYnl0ZXNfdG90YWx8Y29udGFpbmVyX25ldHdvcmtfcmVjZWl2ZV9ieXRlc190b3RhbHxjb250YWluZXJfZnNfd3JpdGVzX2J5dGVzX3RvdGFsfGNvbnRhaW5lcl9mc19yZWFkc19ieXRlc190b3RhbHxjYWR2aXNvcl92ZXJzaW9uX2luZm98a3ViZWNvc3RfcHZfaW5mbykiLCJzb3VyY2VfbGFiZWxzIjpbIl9fbmFtZV9fIl19LHsiYWN0aW9uIjoicmVwbGFjZSIsInJlZ2V4IjoiKC4rKSIsInNvdXJjZV9sYWJlbHMiOlsiY29udGFpbmVyIl0sInRhcmdldF9sYWJlbCI6ImNvbnRhaW5lcl9uYW1lIn0seyJhY3Rpb24iOiJyZXBsYWNlIiwicmVnZXgiOiIoLispIiwic291cmNlX2xhYmVscyI6WyJwb2QiXSwidGFyZ2V0X2xhYmVsIjoicG9kX25hbWUifV0sInJlbGFiZWxfY29uZmlncyI6W3siYWN0aW9uIjoibGFiZWxtYXAiLCJyZWdleCI6Il9fbWV0YV9rdWJlcm5ldGVzX25vZGVfbGFiZWxfKC4rKSJ9LHsicmVwbGFjZW1lbnQiOiJrdWJlcm5ldGVzLmRlZmF1bHQuc3ZjOjQ0MyIsInRhcmdldF9sYWJlbCI6Il9fYWRkcmVzc19fIn0seyJyZWdleCI6IiguKykiLCJyZXBsYWNlbWVudCI6Ii9hcGkvdjEvbm9kZXMvJDEvcHJveHkvbWV0cmljcy9jYWR2aXNvciIsInNvdXJjZV9sYWJlbHMiOlsiX19tZXRhX2t1YmVybmV0ZXNfbm9kZV9uYW1lIl0sInRhcmdldF9sYWJlbCI6Il9fbWV0cmljc19wYXRoX18ifV0sInNjaGVtZSI6Imh0dHBzIiwidGxzX2NvbmZpZyI6eyJjYV9maWxlIjoiL3Zhci9ydW4vc2VjcmV0cy9rdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L2NhLmNydCIsImluc2VjdXJlX3NraXBfdmVyaWZ5Ijp0cnVlfX0seyJiZWFyZXJfdG9rZW5fZmlsZSI6Ii92YXIvcnVuL3NlY3JldHMva3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC90b2tlbiIsImpvYl9uYW1lIjoia3ViZXJuZXRlcy1ub2RlcyIsImt1YmVybmV0ZXNfc2RfY29uZmlncyI6W3sicm9sZSI6Im5vZGUifV0sIm1ldHJpY19yZWxhYmVsX2NvbmZpZ3MiOlt7ImFjdGlvbiI6ImtlZXAiLCJyZWdleCI6IihrdWJlbGV0X3ZvbHVtZV9zdGF0c191c2VkX2J5dGVzKSIsInNvdXJjZV9sYWJlbHMiOlsiX19uYW1lX18iXX1dLCJyZWxhYmVsX2NvbmZpZ3MiOlt7ImFjdGlvbiI6ImxhYmVsbWFwIiwicmVnZXgiOiJfX21ldGFfa3ViZXJuZXRlc19ub2RlX2xhYmVsXyguKykifSx7InJlcGxhY2VtZW50Ijoia3ViZXJuZXRlcy5kZWZhdWx0LnN2Yzo0NDMiLCJ0YXJnZXRfbGFiZWwiOiJfX2FkZHJlc3NfXyJ9LHsicmVnZXgiOiIoLispIiwicmVwbGFjZW1lbnQiOiIvYXBpL3YxL25vZGVzLyQxL3Byb3h5L21ldHJpY3MiLCJzb3VyY2VfbGFiZWxzIjpbIl9fbWV0YV9rdWJlcm5ldGVzX25vZGVfbmFtZSJdLCJ0YXJnZXRfbGFiZWwiOiJfX21ldHJpY3NfcGF0aF9fIn1dLCJzY2hlbWUiOiJodHRwcyIsInRsc19jb25maWciOnsiY2FfZmlsZSI6Ii92YXIvcnVuL3NlY3JldHMva3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9jYS5jcnQiLCJpbnNlY3VyZV9za2lwX3ZlcmlmeSI6dHJ1ZX19LHsiam9iX25hbWUiOiJrdWJlcm5ldGVzLXNlcnZpY2UtZW5kcG9pbnRzIiwia3ViZXJuZXRlc19zZF9jb25maWdzIjpbeyJyb2xlIjoiZW5kcG9pbnRzIn1dLCJtZXRyaWNfcmVsYWJlbF9jb25maWdzIjpbeyJhY3Rpb24iOiJrZWVwIiwicmVnZXgiOiIoY29udGFpbmVyX2NwdV9hbGxvY2F0aW9ufGNvbnRhaW5lcl9jcHVfdXNhZ2Vfc2Vjb25kc190b3RhbHxjb250YWluZXJfZnNfbGltaXRfYnl0ZXN8Y29udGFpbmVyX2ZzX3dyaXRlc19ieXRlc190b3RhbHxjb250YWluZXJfZ3B1X2FsbG9jYXRpb258Y29udGFpbmVyX21lbW9yeV9hbGxvY2F0aW9uX2J5dGVzfGNvbnRhaW5lcl9tZW1vcnlfdXNhZ2VfYnl0ZXN8Y29udGFpbmVyX21lbW9yeV93b3JraW5nX3NldF9ieXRlc3xjb250YWluZXJfbmV0d29ya19yZWNlaXZlX2J5dGVzX3RvdGFsfGNvbnRhaW5lcl9uZXR3b3JrX3RyYW5zbWl0X2J5dGVzX3RvdGFsfERDR01fRklfREVWX0dQVV9VVElMfGRlcGxveW1lbnRfbWF0Y2hfbGFiZWxzfGt1YmVfZGFlbW9uc2V0X3N0YXR1c19kZXNpcmVkX251bWJlcl9zY2hlZHVsZWR8a3ViZV9kYWVtb25zZXRfc3RhdHVzX251bWJlcl9yZWFkeXxrdWJlX2RlcGxveW1lbnRfc3BlY19yZXBsaWNhc3xrdWJlX2RlcGxveW1lbnRfc3RhdHVzX3JlcGxpY2FzfGt1YmVfZGVwbG95bWVudF9zdGF0dXNfcmVwbGljYXNfYXZhaWxhYmxlfGt1YmVfam9iX3N0YXR1c19mYWlsZWR8a3ViZV9uYW1lc3BhY2VfYW5ub3RhdGlvbnN8a3ViZV9uYW1lc3BhY2VfbGFiZWxzfGt1YmVfbm9kZV9pbmZvfGt1YmVfbm9kZV9sYWJlbHN8a3ViZV9ub2RlX3N0YXR1c19hbGxvY2F0YWJsZXxrdWJlX25vZGVfc3RhdHVzX2FsbG9jYXRhYmxlX2NwdV9jb3Jlc3xrdWJlX25vZGVfc3RhdHVzX2FsbG9jYXRhYmxlX21lbW9yeV9ieXRlc3xrdWJlX25vZGVfc3RhdHVzX2NhcGFjaXR5fGt1YmVfbm9kZV9zdGF0dXNfY2FwYWNpdHlfY3B1X2NvcmVzfGt1YmVfbm9kZV9zdGF0dXNfY2FwYWNpdHlfbWVtb3J5X2J5dGVzfGt1YmVfbm9kZV9zdGF0dXNfY29uZGl0aW9ufGt1YmVfcGVyc2lzdGVudHZvbHVtZV9jYXBhY2l0eV9ieXRlc3xrdWJlX3BlcnNpc3RlbnR2b2x1bWVfc3RhdHVzX3BoYXNlfGt1YmVfcGVyc2lzdGVudHZvbHVtZWNsYWltX2luZm98a3ViZV9wZXJzaXN0ZW50dm9sdW1lY2xhaW1fcmVzb3VyY2VfcmVxdWVzdHNfc3RvcmFnZV9ieXRlc3xrdWJlX3BvZF9jb250YWluZXJfaW5mb3xrdWJlX3BvZF9jb250YWluZXJfcmVzb3VyY2VfbGltaXRzfGt1YmVfcG9kX2NvbnRhaW5lcl9yZXNvdXJjZV9saW1pdHNfY3B1X2NvcmVzfGt1YmVfcG9kX2NvbnRhaW5lcl9yZXNvdXJjZV9saW1pdHNfbWVtb3J5X2J5dGVzfGt1YmVfcG9kX2NvbnRhaW5lcl9yZXNvdXJjZV9yZXF1ZXN0c3xrdWJlX3BvZF9jb250YWluZXJfcmVzb3VyY2VfcmVxdWVzdHNfY3B1X2NvcmVzfGt1YmVfcG9kX2NvbnRhaW5lcl9yZXNvdXJjZV9yZXF1ZXN0c19tZW1vcnlfYnl0ZXN8a3ViZV9wb2RfY29udGFpbmVyX3N0YXR1c19yZXN0YXJ0c190b3RhbHxrdWJlX3BvZF9jb250YWluZXJfc3RhdHVzX3J1bm5pbmd8a3ViZV9wb2RfY29udGFpbmVyX3N0YXR1c190ZXJtaW5hdGVkX3JlYXNvbnxrdWJlX3BvZF9sYWJlbHN8a3ViZV9wb2Rfb3duZXJ8a3ViZV9wb2Rfc3RhdHVzX3BoYXNlfGt1YmVfcmVwbGljYXNldF9vd25lcnxrdWJlX3N0YXRlZnVsc2V0X3JlcGxpY2FzfGt1YmVfc3RhdGVmdWxzZXRfc3RhdHVzX3JlcGxpY2FzfGt1YmVjb3N0X2NsdXN0ZXJfaW5mb3xrdWJlY29zdF9jbHVzdGVyX21hbmFnZW1lbnRfY29zdHxrdWJlY29zdF9jbHVzdGVyX21lbW9yeV93b3JraW5nX3NldF9ieXRlc3xrdWJlY29zdF9sb2FkX2JhbGFuY2VyX2Nvc3R8a3ViZWNvc3RfbmV0d29ya19pbnRlcm5ldF9lZ3Jlc3NfY29zdHxrdWJlY29zdF9uZXR3b3JrX3JlZ2lvbl9lZ3Jlc3NfY29zdHxrdWJlY29zdF9uZXR3b3JrX3pvbmVfZWdyZXNzX2Nvc3R8a3ViZWNvc3Rfbm9kZV9pc19zcG90fGt1YmVjb3N0X3BvZF9uZXR3b3JrX2VncmVzc19ieXRlc190b3RhbHxub2RlX2NwdV9ob3VybHlfY29zdHxub2RlX2NwdV9zZWNvbmRzX3RvdGFsfG5vZGVfZGlza19yZWFkc19jb21wbGV0ZWR8bm9kZV9kaXNrX3JlYWRzX2NvbXBsZXRlZF90b3RhbHxub2RlX2Rpc2tfd3JpdGVzX2NvbXBsZXRlZHxub2RlX2Rpc2tfd3JpdGVzX2NvbXBsZXRlZF90b3RhbHxub2RlX2ZpbGVzeXN0ZW1fZGV2aWNlX2Vycm9yfG5vZGVfZ3B1X2NvdW50fG5vZGVfZ3B1X2hvdXJseV9jb3N0fG5vZGVfbWVtb3J5X0J1ZmZlcnNfYnl0ZXN8bm9kZV9tZW1vcnlfQ2FjaGVkX2J5dGVzfG5vZGVfbWVtb3J5X01lbUF2YWlsYWJsZV9ieXRlc3xub2RlX21lbW9yeV9NZW1GcmVlX2J5dGVzfG5vZGVfbWVtb3J5X01lbVRvdGFsX2J5dGVzfG5vZGVfbmV0d29ya190cmFuc21pdF9ieXRlc190b3RhbHxub2RlX3JhbV9ob3VybHlfY29zdHxub2RlX3RvdGFsX2hvdXJseV9jb3N0fHBvZF9wdmNfYWxsb2NhdGlvbnxwdl9ob3VybHlfY29zdHxzZXJ2aWNlX3NlbGVjdG9yX2xhYmVsc3xzdGF0ZWZ1bFNldF9tYXRjaF9sYWJlbHN8a3ViZWNvc3RfcHZfaW5mb3x1cCkiLCJzb3VyY2VfbGFiZWxzIjpbIl9fbmFtZV9fIl19XSwicmVsYWJlbF9jb25maWdzIjpbeyJhY3Rpb24iOiJrZWVwIiwicmVnZXgiOnRydWUsInNvdXJjZV9sYWJlbHMiOlsiX19tZXRhX2t1YmVybmV0ZXNfc2VydmljZV9hbm5vdGF0aW9uX3Byb21ldGhldXNfaW9fc2NyYXBlIl19LHsiYWN0aW9uIjoia2VlcCIsInJlZ2V4IjoiKC4qbm9kZS1leHBvcnRlcnxrdWJlY29zdC1uZXR3b3JrLWNvc3RzKSIsInNvdXJjZV9sYWJlbHMiOlsiX19tZXRhX2t1YmVybmV0ZXNfZW5kcG9pbnRzX25hbWUiXX0seyJhY3Rpb24iOiJyZXBsYWNlIiwicmVnZXgiOiIoaHR0cHM/KSIsInNvdXJjZV9sYWJlbHMiOlsiX19tZXRhX2t1YmVybmV0ZXNfc2VydmljZV9hbm5vdGF0aW9uX3Byb21ldGhldXNfaW9fc2NoZW1lIl0sInRhcmdldF9sYWJlbCI6Il9fc2NoZW1lX18ifSx7ImFjdGlvbiI6InJlcGxhY2UiLCJyZWdleCI6IiguKykiLCJzb3VyY2VfbGFiZWxzIjpbIl9fbWV0YV9rdWJlcm5ldGVzX3NlcnZpY2VfYW5ub3RhdGlvbl9wcm9tZXRoZXVzX2lvX3BhdGgiXSwidGFyZ2V0X2xhYmVsIjoiX19tZXRyaWNzX3BhdGhfXyJ9LHsiYWN0aW9uIjoicmVwbGFjZSIsInJlZ2V4IjoiKFteOl0rKSg/OjpcXGQrKT87KFxcZCspIiwicmVwbGFjZW1lbnQiOiIkMTokMiIsInNvdXJjZV9sYWJlbHMiOlsiX19hZGRyZXNzX18iLCJfX21ldGFfa3ViZXJuZXRlc19zZXJ2aWNlX2Fubm90YXRpb25fcHJvbWV0aGV1c19pb19wb3J0Il0sInRhcmdldF9sYWJlbCI6Il9fYWRkcmVzc19fIn0seyJhY3Rpb24iOiJsYWJlbG1hcCIsInJlZ2V4IjoiX19tZXRhX2t1YmVybmV0ZXNfc2VydmljZV9sYWJlbF8oLispIn0seyJhY3Rpb24iOiJyZXBsYWNlIiwic291cmNlX2xhYmVscyI6WyJfX21ldGFfa3ViZXJuZXRlc19uYW1lc3BhY2UiXSwidGFyZ2V0X2xhYmVsIjoia3ViZXJuZXRlc19uYW1lc3BhY2UifSx7ImFjdGlvbiI6InJlcGxhY2UiLCJzb3VyY2VfbGFiZWxzIjpbIl9fbWV0YV9rdWJlcm5ldGVzX3NlcnZpY2VfbmFtZSJdLCJ0YXJnZXRfbGFiZWwiOiJrdWJlcm5ldGVzX25hbWUifSx7ImFjdGlvbiI6InJlcGxhY2UiLCJzb3VyY2VfbGFiZWxzIjpbIl9fbWV0YV9rdWJlcm5ldGVzX3BvZF9ub2RlX25hbWUiXSwidGFyZ2V0X2xhYmVsIjoia3ViZXJuZXRlc19ub2RlIn1dfV19LCJyZWNvcmRpbmdfcnVsZXMueW1sIjp7fSwicnVsZXMiOnsiZ3JvdXBzIjpbeyJuYW1lIjoiQ1BVIiwicnVsZXMiOlt7ImV4cHIiOiJzdW0ocmF0ZShjb250YWluZXJfY3B1X3VzYWdlX3NlY29uZHNfdG90YWx7Y29udGFpbmVyIT1cIlwifVs1bV0pKSIsInJlY29yZCI6ImNsdXN0ZXI6Y3B1X3VzYWdlOnJhdGU1bSJ9LHsiZXhwciI6InJhdGUoY29udGFpbmVyX2NwdV91c2FnZV9zZWNvbmRzX3RvdGFse2NvbnRhaW5lciE9XCJcIn1bNW1dKSIsInJlY29yZCI6ImNsdXN0ZXI6Y3B1X3VzYWdlX25vc3VtOnJhdGU1bSJ9LHsiZXhwciI6ImF2ZyhpcmF0ZShjb250YWluZXJfY3B1X3VzYWdlX3NlY29uZHNfdG90YWx7Y29udGFpbmVyIT1cIlBPRFwiLCBjb250YWluZXIhPVwiXCJ9WzVtXSkpIGJ5IChjb250YWluZXIscG9kLG5hbWVzcGFjZSkiLCJyZWNvcmQiOiJrdWJlY29zdF9jb250YWluZXJfY3B1X3VzYWdlX2lyYXRlIn0seyJleHByIjoic3VtKGNvbnRhaW5lcl9tZW1vcnlfd29ya2luZ19zZXRfYnl0ZXN7Y29udGFpbmVyIT1cIlBPRFwiLGNvbnRhaW5lciE9XCJcIn0pIGJ5IChjb250YWluZXIscG9kLG5hbWVzcGFjZSkiLCJyZWNvcmQiOiJrdWJlY29zdF9jb250YWluZXJfbWVtb3J5X3dvcmtpbmdfc2V0X2J5dGVzIn0seyJleHByIjoic3VtKGNvbnRhaW5lcl9tZW1vcnlfd29ya2luZ19zZXRfYnl0ZXN7Y29udGFpbmVyIT1cIlBPRFwiLGNvbnRhaW5lciE9XCJcIn0pIiwicmVjb3JkIjoia3ViZWNvc3RfY2x1c3Rlcl9tZW1vcnlfd29ya2luZ19zZXRfYnl0ZXMifV19LHsibmFtZSI6IlNhdmluZ3MiLCJydWxlcyI6W3siZXhwciI6InN1bShhdmcoa3ViZV9wb2Rfb3duZXJ7b3duZXJfa2luZCE9XCJEYWVtb25TZXRcIn0pIGJ5IChwb2QpICogc3VtKGNvbnRhaW5lcl9jcHVfYWxsb2NhdGlvbikgYnkgKHBvZCkpIiwibGFiZWxzIjp7ImRhZW1vbnNldCI6ImZhbHNlIn0sInJlY29yZCI6Imt1YmVjb3N0X3NhdmluZ3NfY3B1X2FsbG9jYXRpb24ifSx7ImV4cHIiOiJzdW0oYXZnKGt1YmVfcG9kX293bmVye293bmVyX2tpbmQ9XCJEYWVtb25TZXRcIn0pIGJ5IChwb2QpICogc3VtKGNvbnRhaW5lcl9jcHVfYWxsb2NhdGlvbikgYnkgKHBvZCkpIC8gc3VtKGt1YmVfbm9kZV9pbmZvKSIsImxhYmVscyI6eyJkYWVtb25zZXQiOiJ0cnVlIn0sInJlY29yZCI6Imt1YmVjb3N0X3NhdmluZ3NfY3B1X2FsbG9jYXRpb24ifSx7ImV4cHIiOiJzdW0oYXZnKGt1YmVfcG9kX293bmVye293bmVyX2tpbmQhPVwiRGFlbW9uU2V0XCJ9KSBieSAocG9kKSAqIHN1bShjb250YWluZXJfbWVtb3J5X2FsbG9jYXRpb25fYnl0ZXMpIGJ5IChwb2QpKSIsImxhYmVscyI6eyJkYWVtb25zZXQiOiJmYWxzZSJ9LCJyZWNvcmQiOiJrdWJlY29zdF9zYXZpbmdzX21lbW9yeV9hbGxvY2F0aW9uX2J5dGVzIn0seyJleHByIjoic3VtKGF2ZyhrdWJlX3BvZF9vd25lcntvd25lcl9raW5kPVwiRGFlbW9uU2V0XCJ9KSBieSAocG9kKSAqIHN1bShjb250YWluZXJfbWVtb3J5X2FsbG9jYXRpb25fYnl0ZXMpIGJ5IChwb2QpKSAvIHN1bShrdWJlX25vZGVfaW5mbykiLCJsYWJlbHMiOnsiZGFlbW9uc2V0IjoidHJ1ZSJ9LCJyZWNvcmQiOiJrdWJlY29zdF9zYXZpbmdzX21lbW9yeV9hbGxvY2F0aW9uX2J5dGVzIn1dfV19fSwic2VydmljZUFjY291bnRzIjp7ImFsZXJ0bWFuYWdlciI6eyJjcmVhdGUiOnRydWV9LCJub2RlRXhwb3J0ZXIiOnsiY3JlYXRlIjp0cnVlfSwic2VydmVyIjp7ImFubm90YXRpb25zIjp7fSwiY3JlYXRlIjp0cnVlfX19LCJyZXBvcnRpbmciOnsiZXJyb3JSZXBvcnRpbmciOnRydWUsImxvZ0NvbGxlY3Rpb24iOnRydWUsInByb2R1Y3RBbmFseXRpY3MiOnRydWUsInZhbHVlc1JlcG9ydGluZyI6dHJ1ZX0sInNlcnZpY2UiOnsiYW5ub3RhdGlvbnMiOnt9LCJsYWJlbHMiOnt9LCJub2RlUG9ydCI6e30sInBvcnQiOjkwOTAsInRhcmdldFBvcnQiOjkwOTAsInR5cGUiOiJDbHVzdGVySVAifSwic2VydmljZUFjY291bnQiOnsiYW5ub3RhdGlvbnMiOnt9LCJjcmVhdGUiOnRydWV9LCJzaWdWNFByb3h5Ijp7Imhvc3QiOiJhcHMtd29ya3NwYWNlcy51cy13ZXN0LTIuYW1hem9uYXdzLmNvbSIsImltYWdlIjoicHVibGljLmVjci5hd3MvYXdzLW9ic2VydmFiaWxpdHkvYXdzLXNpZ3Y0LXByb3h5OmxhdGVzdCIsImltYWdlUHVsbFBvbGljeSI6IklmTm90UHJlc2VudCIsIm5hbWUiOiJhcHMiLCJwb3J0Ijo4MDA1LCJyZWdpb24iOiJ1cy13ZXN0LTIiLCJyZXNvdXJjZXMiOnt9fSwic3VwcG9ydE5GUyI6ZmFsc2UsInRlYW1zIjp7InRlYW1zQ29uZmlnIjpbXSwidGVhbXNDb25maWdNYXBOYW1lIjoiIn0sInRvbGVyYXRpb25zIjpbXSwidG9wb2xvZ3lTcHJlYWRDb25zdHJhaW50cyI6W10sInVwZ3JhZGUiOnsidG9WMiI6ZmFsc2V9fQ==
             - name: READ_ONLY
               value: "false"
             - name: PROMETHEUS_SERVER_ENDPOINT
               valueFrom:
@@ -142,10 +144,8 @@
             - name: PV_ENABLED
               value: "true"
             - name: MAX_QUERY_CONCURRENCY
               value: "5"
-            - name: UTC_OFFSET
-              value: "+00:00"
             - name: CLUSTER_ID
               value: kubrix
             - name: COST_EVENTS_AUDIT_ENABLED
               value: "false"
@@ -166,9 +166,9 @@
             - name: WATERFOWL_ENABLED
               value: "true"
             - name: DIAGNOSTICS_RUN_IN_COST_MODEL
               value: "false"
-        - image: gcr.io/kubecost1/frontend:prod-2.5.3
+        - image: gcr.io/kubecost1/frontend:prod-2.6.2
           env:
             - name: GET_HOSTS_FROM
               value: dns
           name: cost-analyzer-frontend
@@ -185,8 +185,10 @@
             - name: tmp
               mountPath: /var/lib/nginx/tmp
             - name: tmp
               mountPath: /var/run
+            - name: log
+              mountPath: /var/log/nginx
             - name: nginx-conf
               mountPath: /etc/nginx/conf.d/
           resources:
             requests:
@@ -216,9 +218,9 @@
               drop:
               - ALL
             privileged: false
             readOnlyRootFilesystem: true
-          image: gcr.io/kubecost1/cost-model:prod-2.5.3
+          image: gcr.io/kubecost1/cost-model:prod-2.6.2
           readinessProbe:
             httpGet:
               path: /healthz
               port: 9004
@@ -270,9 +272,9 @@
             - name: GRAFANA_ENABLED
               value: "false"
         
         - name: cloud-cost
-          image: gcr.io/kubecost1/cost-model:prod-2.5.3
+          image: gcr.io/kubecost1/cost-model:prod-2.6.2
           
           readinessProbe:
             httpGet:
               path: /healthz
diff -U 4 -r out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-frontend-config-map-template.yaml out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-frontend-config-map-template.yaml
--- out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-frontend-config-map-template.yaml	2025-02-21 23:22:13.280915619 +0000
+++ out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-frontend-config-map-template.yaml	2025-02-21 23:21:49.132696673 +0000
@@ -6,9 +6,9 @@
   name: nginx-conf
   namespace: default
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
 data:
@@ -48,12 +48,8 @@
         text/xml
         text/x-component
         text/x-cross-domain-policy;
 
-    upstream api {
-        server release-name-cost-analyzer.default:9001;
-    }
-
     upstream model {
         server release-name-cost-analyzer.default:9003;
     }
     upstream forecasting {
@@ -81,19 +77,12 @@
         add_header Cache-Control "max-age=300";
         location / {
             try_files $uri $uri/ /index.html;
         }
-        add_header ETag "2.5.3";
+        add_header ETag "2.6.2";
         listen 9090;
         listen [::]:9090;
-        location /api/ {
-            proxy_pass http://api/;
-            proxy_redirect off;
-            proxy_http_version 1.1;
-            proxy_set_header Connection "";
-            proxy_set_header  X-Real-IP  $remote_addr;
-            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
-        }
+        
         location /model/ {
             proxy_connect_timeout       300;
             proxy_send_timeout          300;
             proxy_read_timeout          300;
@@ -688,8 +677,56 @@
             proxy_set_header Connection "";
             proxy_set_header  X-Real-IP  $remote_addr;
             proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
         }
+        location = /model/rbac/teams {
+            proxy_read_timeout          300;
+            proxy_pass http://aggregator/rbac/teams;
+            proxy_redirect off;
+            proxy_set_header Connection "";
+            proxy_set_header  X-Real-IP  $remote_addr;
+            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
+        }
+        location = /model/rbac/team {
+            proxy_read_timeout          300;
+            proxy_pass http://aggregator/rbac/team;
+            proxy_redirect off;
+            proxy_set_header Connection "";
+            proxy_set_header  X-Real-IP  $remote_addr;
+            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
+        }
+        location = /model/rbac/roles {
+            proxy_read_timeout          300;
+            proxy_pass http://aggregator/rbac/roles;
+            proxy_redirect off;
+            proxy_set_header Connection "";
+            proxy_set_header  X-Real-IP  $remote_addr;
+            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
+        }
+        location = /model/rbac/role {
+            proxy_read_timeout          300;
+            proxy_pass http://aggregator/rbac/role;
+            proxy_redirect off;
+            proxy_set_header Connection "";
+            proxy_set_header  X-Real-IP  $remote_addr;
+            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
+        }
+        location = /model/rbac/currentTeams {
+            proxy_read_timeout          300;
+            proxy_pass http://aggregator/rbac/currentTeams;
+            proxy_redirect off;
+            proxy_set_header Connection "";
+            proxy_set_header  X-Real-IP  $remote_addr;
+            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
+        }
+        location = /model/rbac/currentPermissions {
+            proxy_read_timeout          300;
+            proxy_pass http://aggregator/rbac/currentPermissions;
+            proxy_redirect off;
+            proxy_set_header Connection "";
+            proxy_set_header  X-Real-IP  $remote_addr;
+            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
+        }
         location = /model/debug/orchestrator {
             proxy_read_timeout          300;
             proxy_pass http://aggregator/debug/orchestrator;
             proxy_redirect off;
@@ -1129,9 +1166,9 @@
                 "pluginsEnabled": "false",
                 "carbonEstimatesEnabled": "false",
                 "clusterControllerEnabled": "false",
                 "forecastingEnabled": "true",
-                "chartVersion": "2.5.3",
+                "chartVersion": "2.6.2",
                 "hourlyDataRetention": "49",
                 "dailyDataRetention": "91",
                 "hideDiagnostics": "false",
                 "hideOrphanedResources": "false",
diff -U 4 -r out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-ingress-template.yaml out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-ingress-template.yaml
--- out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-ingress-template.yaml	2025-02-21 23:22:13.283915645 +0000
+++ out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-ingress-template.yaml	2025-02-21 23:21:49.136696710 +0000
@@ -6,9 +6,9 @@
   name: release-name-cost-analyzer
   namespace: default
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
   annotations:
diff -U 4 -r out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-pricing-configmap.yaml out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-pricing-configmap.yaml
--- out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-pricing-configmap.yaml	2025-02-21 23:22:13.280915619 +0000
+++ out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-pricing-configmap.yaml	2025-02-21 23:21:49.133696683 +0000
@@ -6,9 +6,9 @@
   name: pricing-configs
   namespace: default
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
 data:
diff -U 4 -r out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-pvc-template.yaml out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-pvc-template.yaml
--- out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-pvc-template.yaml	2025-02-21 23:22:13.282915636 +0000
+++ out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-pvc-template.yaml	2025-02-21 23:21:49.135696701 +0000
@@ -6,9 +6,9 @@
   name: release-name-cost-analyzer
   namespace: default
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
 spec:
diff -U 4 -r out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-service-account-template.yaml out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-service-account-template.yaml
--- out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-service-account-template.yaml	2025-02-21 23:22:13.280915619 +0000
+++ out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-service-account-template.yaml	2025-02-21 23:21:49.132696673 +0000
@@ -6,8 +6,8 @@
   name: release-name-cost-analyzer
   namespace: default
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
diff -U 4 -r out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-service-template.yaml out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-service-template.yaml
--- out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-service-template.yaml	2025-02-21 23:22:13.282915636 +0000
+++ out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-service-template.yaml	2025-02-21 23:21:49.136696710 +0000
@@ -6,9 +6,9 @@
   name: release-name-cost-analyzer
   namespace: default
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
 spec:
diff -U 4 -r out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-smtp-configmap.yaml out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-smtp-configmap.yaml
--- out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-smtp-configmap.yaml	2025-02-21 23:22:13.280915619 +0000
+++ out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/cost-analyzer-smtp-configmap.yaml	2025-02-21 23:21:49.133696683 +0000
@@ -6,8 +6,8 @@
   name: smtp-configs
   namespace: default
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
diff -U 4 -r out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/external-grafana-config-map-template.yaml out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/external-grafana-config-map-template.yaml
--- out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/external-grafana-config-map-template.yaml	2025-02-21 23:22:13.280915619 +0000
+++ out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/external-grafana-config-map-template.yaml	2025-02-21 23:21:49.133696683 +0000
@@ -6,9 +6,9 @@
   name: external-grafana-config-map
   namespace: default
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
 data:
diff -U 4 -r out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/forecasting-deployment.yaml out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/forecasting-deployment.yaml
--- out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/forecasting-deployment.yaml	2025-02-21 23:22:13.282915636 +0000
+++ out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/forecasting-deployment.yaml	2025-02-21 23:21:49.136696710 +0000
@@ -5,9 +5,9 @@
 metadata:
   name: release-name-forecasting
   namespace: default
   labels:
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/name: forecasting
     app.kubernetes.io/instance: release-name
     app: forecasting
@@ -39,9 +39,9 @@
           type: RuntimeDefault
       restartPolicy: Always
       containers:
         - name: forecasting
-          image: gcr.io/kubecost1/kubecost-modeling:v0.1.19
+          image: gcr.io/kubecost1/kubecost-modeling:v0.1.22
           volumeMounts:
             - name: tmp
               mountPath: /tmp
           securityContext:
diff -U 4 -r out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/forecasting-service.yaml out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/forecasting-service.yaml
--- out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/forecasting-service.yaml	2025-02-21 23:22:13.282915636 +0000
+++ out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/forecasting-service.yaml	2025-02-21 23:21:49.136696710 +0000
@@ -5,9 +5,9 @@
 metadata:
   name: release-name-forecasting
   namespace: default
   labels:
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/name: forecasting
     app.kubernetes.io/instance: release-name
     app: forecasting
diff -U 4 -r out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-attached-disks.yaml out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-attached-disks.yaml
--- out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-attached-disks.yaml	2025-02-21 23:22:13.280915619 +0000
+++ out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-attached-disks.yaml	2025-02-21 23:21:49.134696692 +0000
@@ -6,9 +6,9 @@
   name: grafana-dashboard-attached-disk-metrics
   namespace: kubecost
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
     grafana_dashboard: "1"
@@ -48,9 +48,9 @@
       "panels": [
         {
           "datasource": {
             "type": "prometheus",
-            "uid": "PBFA97CFB590B2093"
+            "uid": "${datasource}"
           },
           "fieldConfig": {
             "defaults": {
               "color": {
@@ -129,9 +129,9 @@
           "targets": [
             {
               "datasource": {
                 "type": "prometheus",
-                "uid": "PBFA97CFB590B2093"
+                "uid": "${datasource}"
               },
               "editorMode": "code",
               "expr": "sum(container_fs_limit_bytes{instance=~'$disk', device!=\"tmpfs\", id=\"/\", cluster_id=~'$cluster'}) by (cluster_id, instance)",
               "format": "time_series",
@@ -147,9 +147,9 @@
         },
         {
           "datasource": {
             "type": "prometheus",
-            "uid": "PBFA97CFB590B2093"
+            "uid": "${datasource}"
           },
           "fieldConfig": {
             "defaults": {
               "color": {
@@ -230,9 +230,9 @@
           "targets": [
             {
               "datasource": {
                 "type": "prometheus",
-                "uid": "PBFA97CFB590B2093"
+                "uid": "${datasource}"
               },
               "editorMode": "code",
               "expr": "sum(container_fs_usage_bytes{instance=~'$disk',id=\"/\", cluster_id=~'$cluster'}) by (cluster_id, instance) / sum(container_fs_limit_bytes{instance=~'$disk',device!=\"tmpfs\", id=\"/\", cluster_id=~'$cluster'}) by (cluster_id,instance)",
               "format": "time_series",
@@ -248,9 +248,9 @@
         },
         {
           "datasource": {
             "type": "prometheus",
-            "uid": "PBFA97CFB590B2093"
+            "uid": "${datasource}"
           },
           "fieldConfig": {
             "defaults": {
               "color": {
@@ -331,9 +331,9 @@
           "targets": [
             {
               "datasource": {
                 "type": "prometheus",
-                "uid": "PBFA97CFB590B2093"
+                "uid": "${datasource}"
               },
               "editorMode": "code",
               "expr": "1 - sum(container_fs_inodes_free{instance=~'$disk',id=\"/\", cluster_id=~'$cluster'}) by (cluster_id, instance) / sum(container_fs_inodes_total{instance=~'$disk',id=\"/\", cluster_id=~'$cluster'}) by (cluster_id, instance)",
               "format": "time_series",
@@ -348,9 +348,9 @@
         },
         {
           "datasource": {
             "type": "prometheus",
-            "uid": "PBFA97CFB590B2093"
+            "uid": "${datasource}"
           },
           "fieldConfig": {
             "defaults": {
               "color": {
@@ -429,9 +429,9 @@
           "targets": [
             {
               "datasource": {
                 "type": "prometheus",
-                "uid": "PBFA97CFB590B2093"
+                "uid": "${datasource}"
               },
               "editorMode": "code",
               "expr": "sum(container_fs_usage_bytes{instance=~'$disk',id=\"/\", cluster_id=~'$cluster'}) by (cluster_id, instance)",
               "format": "time_series",
@@ -458,9 +458,9 @@
           {
             "current": {
               "selected": false,
               "text": "Prometheus",
-              "value": "PBFA97CFB590B2093"
+              "value": "Prometheus"
             },
             "hide": 0,
             "includeAll": false,
             "multi": false,
@@ -480,9 +480,9 @@
               "value": "$__all"
             },
             "datasource": {
               "type": "prometheus",
-              "uid": "PBFA97CFB590B2093"
+              "uid": "${datasource}"
             },
             "definition": "label_values(cluster_id)",
             "hide": 0,
             "includeAll": true,
@@ -506,9 +506,9 @@
               "value": "ip-192-168-147-146.us-east-2.compute.internal"
             },
             "datasource": {
               "type": "prometheus",
-              "uid": "PBFA97CFB590B2093"
+              "uid": "${datasource}"
             },
             "definition": "label_values(container_fs_limit_bytes{cluster_id=~\"$cluster\"}, instance)",
             "hide": 0,
             "includeAll": true,
@@ -560,8 +560,8 @@
         ]
       },
       "timezone": "",
       "title": "Attached disk metrics",
-      "uid": "nBH7qBgMk",
+      "uid": "attached-disk-metrics",
       "version": 7,
       "weekStart": ""
     }
diff -U 4 -r out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-cluster-metrics-template.yaml out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-cluster-metrics-template.yaml
--- out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-cluster-metrics-template.yaml	2025-02-21 23:22:13.280915619 +0000
+++ out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-cluster-metrics-template.yaml	2025-02-21 23:21:49.134696692 +0000
@@ -6,9 +6,9 @@
   name: grafana-dashboard-cluster-metrics
   namespace: kubecost
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
     grafana_dashboard: "1"
diff -U 4 -r out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-cluster-utilization-template.yaml out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-cluster-utilization-template.yaml
--- out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-cluster-utilization-template.yaml	2025-02-21 23:22:13.280915619 +0000
+++ out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-cluster-utilization-template.yaml	2025-02-21 23:21:49.134696692 +0000
@@ -6,9 +6,9 @@
   name: grafana-dashboard-cluster-utilization
   namespace: kubecost
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
     grafana_dashboard: "1"
@@ -130,9 +130,9 @@
             "targets": [
               {
                 "datasource": {
                   "type": "prometheus",
-                  "uid": "P0C970EB638C812D0"
+                  "uid": "${datasource}"
                 },
                 "exemplar": false,
                 "expr": "sum(\n (\n (\n sum(kube_node_status_capacity_cpu_cores) by (node)\n * on (node) group_left (label_cloud_google_com_gke_preemptible)\n avg(kube_node_labels{label_cloud_google_com_gke_preemptible=\"true\"}) by (node)\n ) * $costpcpu\n )\n or\n (\n (\n sum(kube_node_status_capacity{resource=\"cpu\", unit=\"core\"}) by (node)\n * on (node) group_left (label_cloud_google_com_gke_preemptible)\n avg(kube_node_labels{label_cloud_google_com_gke_preemptible!=\"true\"}) by (node)\n ) * ($costcpu - ($costcpu / 100 * $costDiscount))\n )\n) ",
                 "format": "time_series",
@@ -214,9 +214,9 @@
             "targets": [
               {
                 "datasource": {
                   "type": "prometheus",
-                  "uid": "P0C970EB638C812D0"
+                  "uid": "${datasource}"
                 },
                 "exemplar": false,
                 "expr": "sum(\n (\n (\n sum(kube_node_status_capacity_memory_bytes) by (node)\n * on (node) group_left (label_cloud_google_com_gke_preemptible)\n avg(kube_node_labels{label_cloud_google_com_gke_preemptible=\"true\"}) by (node)\n ) /1024/1024/1024 * $costpram\n )\n or\n (\n (\n sum(kube_node_status_capacity{resource=\"memory\", unit=\"byte\"}) by (node)\n * on (node) group_left (label_cloud_google_com_gke_preemptible)\n avg(kube_node_labels{label_cloud_google_com_gke_preemptible!=\"true\"}) by (node)\n ) /1024/1024/1024 * ($costram - ($costram / 100 * $costDiscount))\n)\n) ",
                 "format": "time_series",
@@ -298,9 +298,9 @@
             "targets": [
               {
                 "datasource": {
                   "type": "prometheus",
-                  "uid": "P0C970EB638C812D0"
+                  "uid": "${datasource}"
                 },
                 "exemplar": false,
                 "expr": "sum (\n sum(kube_persistentvolumeclaim_info{storageclass=~\".*ssd.*\"}) by (persistentvolumeclaim, namespace, storageclass)\n + on (persistentvolumeclaim, namespace) group_right(storageclass)\n sum(kube_persistentvolumeclaim_resource_requests_storage_bytes) by (persistentvolumeclaim, namespace) or up * 0\n) / 1024 / 1024 /1024 * $costStorageSSD\n\n+\n\nsum (\n sum(kube_persistentvolumeclaim_info{storageclass!~\".*ssd.*\"}) by (persistentvolumeclaim, namespace, storageclass)\n + on (persistentvolumeclaim, namespace) group_right(storageclass)\n sum(kube_persistentvolumeclaim_resource_requests_storage_bytes) by (persistentvolumeclaim, namespace) or up * 0\n) / 1024 / 1024 /1024 * $costStorageStandard\n\n+ \n\nsum(container_fs_limit_bytes{id=\"/\"}) / 1024 / 1024 / 1024 * 1.03 * $costStorageStandard",
                 "format": "time_series",
@@ -383,9 +383,9 @@
             "targets": [
               {
                 "datasource": {
                   "type": "prometheus",
-                  "uid": "P0C970EB638C812D0"
+                  "uid": "${datasource}"
                 },
                 "exemplar": false,
                 "expr": "SUM(rate(node_network_transmit_bytes_total{device=\"eth0\"}[60m]) / 1024 / 1024 / 1024 ) * (60 * 60 * 24 * 30) * $costEgress",
                 "format": "time_series",
@@ -960,9 +960,9 @@
             "targets": [
               {
                 "datasource": {
                   "type": "prometheus",
-                  "uid": "P0C970EB638C812D0"
+                  "uid": "${datasource}"
                 },
                 "exemplar": false,
                 "expr": "# CPU\nsum(\n (\n (\n sum(kube_node_status_capacity_cpu_cores) by (node)\n * on (node) group_left (label_cloud_google_com_gke_preemptible)\n avg(kube_node_labels{label_cloud_google_com_gke_preemptible=\"true\"}) by (node)\n ) * $costpcpu\n )\n or\n (\n (\n sum(kube_node_status_capacity{resource=\"cpu\", unit=\"core\"}) by (node)\n * on (node) group_left (label_cloud_google_com_gke_preemptible)\n avg(kube_node_labels{label_cloud_google_com_gke_preemptible!=\"true\"}) by (node)\n ) * ($costcpu - ($costcpu / 100 * $costDiscount))\n )\n) \n\n+ \n\n# Storage\nsum (\n sum(kube_persistentvolumeclaim_info{storageclass=~\".*ssd.*\"}) by (persistentvolumeclaim, namespace, storageclass)\n + on (persistentvolumeclaim, namespace) group_right(storageclass)\n sum(kube_persistentvolumeclaim_resource_requests_storage_bytes) by (persistentvolumeclaim, namespace) or up * 0\n) / 1024 / 1024 /1024 * $costStorageSSD\n\n+\n\nsum (\n sum(kube_persistentvolumeclaim_info{storageclass!~\".*ssd.*\"}) by (persistentvolumeclaim, namespace, storageclass)\n + on (persistentvolumeclaim, namespace) group_right(storageclass)\n sum(kube_persistentvolumeclaim_resource_requests_storage_bytes) by (persistentvolumeclaim, namespace) or up * 0\n) / 1024 / 1024 /1024 * $costStorageStandard\n\n+ \n\nsum(container_fs_limit_bytes{id=\"/\"}) / 1024 / 1024 / 1024 * 1.03 * $costStorageStandard \n\n+\n\n# END STORAGE\n# RAM \nsum(\n (\n (\n sum(kube_node_status_capacity_memory_bytes) by (node)\n * on (node) group_left (label_cloud_google_com_gke_preemptible)\n avg(kube_node_labels{label_cloud_google_com_gke_preemptible=\"true\"}) by (node)\n ) /1024/1024/1024 * $costpram\n )\n or\n (\n (\n sum(kube_node_status_capacity{resource=\"memory\", unit=\"byte\"}) by (node)\n * on (node) group_left (label_cloud_google_com_gke_preemptible)\n avg(kube_node_labels{label_cloud_google_com_gke_preemptible!=\"true\"}) by (node)\n ) /1024/1024/1024 * ($costram - ($costram / 100 * $costDiscount))\n)\n)\n\n+\n\n#Network \nSUM(rate(node_network_transmit_bytes_total{device=\"eth0\"}[60m]) / 1024 / 1024 / 1024 ) * (60 * 60 * 24 * 30) * $costEgress",
                 "format": "time_series",
diff -U 4 -r out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-deployment-utilization-template.yaml out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-deployment-utilization-template.yaml
--- out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-deployment-utilization-template.yaml	2025-02-21 23:22:13.280915619 +0000
+++ out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-deployment-utilization-template.yaml	2025-02-21 23:21:49.134696692 +0000
@@ -6,9 +6,9 @@
   name: grafana-dashboard-deployment-utilization
   namespace: kubecost
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
     grafana_dashboard: "1"
diff -U 4 -r out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-kubernetes-resource-efficiency-template.yaml out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-kubernetes-resource-efficiency-template.yaml
--- out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-kubernetes-resource-efficiency-template.yaml	2025-02-21 23:22:13.281915628 +0000
+++ out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-kubernetes-resource-efficiency-template.yaml	2025-02-21 23:21:49.134696692 +0000
@@ -6,9 +6,9 @@
   name: grafana-dashboard-kubernetes-resource-efficiency
   namespace: kubecost
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
     grafana_dashboard: "1"
@@ -21,10 +21,10 @@
         "list": [
           {
             "builtIn": 1,
             "datasource": {
-              "type": "grafana",
-              "uid": "-- Grafana --"
+              "type": "datasource",
+              "uid": "grafana"
             },
             "enable": true,
             "hide": true,
             "iconColor": "rgba(0, 211, 255, 1)",
diff -U 4 -r out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-label-cost-utilization-template.yaml out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-label-cost-utilization-template.yaml
--- out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-label-cost-utilization-template.yaml	2025-02-21 23:22:13.281915628 +0000
+++ out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-label-cost-utilization-template.yaml	2025-02-21 23:21:49.134696692 +0000
@@ -6,9 +6,9 @@
   name: grafana-dashboard-label-cost
   namespace: kubecost
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
     grafana_dashboard: "1"
@@ -110,9 +110,9 @@
           "targets": [
             {
               "datasource": {
                 "type": "prometheus",
-                "uid": "P0C970EB638C812D0"
+                "uid": "${datasource}"
               },
               "exemplar": false,
               "expr": "sum(\n  avg(container_cpu_allocation) by (pod,node)\n\n  * on (node) group_left()\n  avg(avg_over_time(node_cpu_hourly_cost[10m])) by (node)\n\n  * on (pod) group_left()\n  label_replace(\n    max(kube_pod_labels{label_$label=~\"$label_value\"}) by (pod),\n    \"pod_name\",\n    \"$1\", \n    \"pod\", \n    \"(.+)\"\n  )\n) * 730",
               "format": "time_series",
@@ -194,9 +194,9 @@
           "targets": [
             {
               "datasource": {
                 "type": "prometheus",
-                "uid": "P0C970EB638C812D0"
+                "uid": "${datasource}"
               },
               "exemplar": false,
               "expr": "sum(\n  avg(container_memory_allocation_bytes) by (pod,node) / 1024 / 1024 / 1024\n\n  * on (node) group_left()\n  avg(avg_over_time(node_ram_hourly_cost[10m])) by (node)\n\n  * on (pod) group_left()\n  label_replace(\n    max(kube_pod_labels{label_$label=~\"$label_value\"}) by (pod),\n    \"pod_name\",\n    \"$1\", \n    \"pod\", \n    \"(.+)\"\n  )\n) * 730",
               "format": "time_series",
@@ -278,9 +278,9 @@
           "targets": [
             {
               "datasource": {
                 "type": "prometheus",
-                "uid": "P0C970EB638C812D0"
+                "uid": "${datasource}"
               },
               "exemplar": false,
               "expr": "sum(\n sum(kube_persistentvolumeclaim_info{storageclass!=\".*ssd.*\"}) by (persistentvolumeclaim, storageclass)\n * on (persistentvolumeclaim) group_right(storageclass)\n sum(kube_persistentvolumeclaim_resource_requests_storage_bytes) by (persistentvolumeclaim)\n * on (persistentvolumeclaim) group_left(label_app)\n max(kube_persistentvolumeclaim_labels{label_$label=~\"$label_value\"}) by (persistentvolumeclaim) or up * 0\n) / 1024 / 1024 /1024 * .04 \n\n+\n\nsum(\n sum(kube_persistentvolumeclaim_info{storageclass=~\".*ssd.*\"}) by (persistentvolumeclaim, storageclass)\n * on (persistentvolumeclaim) group_right(storageclass)\n sum(kube_persistentvolumeclaim_resource_requests_storage_bytes) by (persistentvolumeclaim)\n * on (persistentvolumeclaim) group_left(label_app)\n max(kube_persistentvolumeclaim_labels{label_$label=~\"$label_value\"}) by (persistentvolumeclaim) or up * 0\n) / 1024 / 1024 /1024 * .17 \n",
               "format": "time_series",
@@ -362,9 +362,9 @@
           "targets": [
             {
               "datasource": {
                 "type": "prometheus",
-                "uid": "P0C970EB638C812D0"
+                "uid": "${datasource}"
               },
               "exemplar": false,
               "expr": "# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CPU ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\nsum(\n  avg(container_cpu_allocation) by (pod,node)\n\n  * on (node) group_left()\n  avg(avg_over_time(node_cpu_hourly_cost[10m])) by (node)\n\n  * on (pod) group_left()\n  label_replace(\n    max(kube_pod_labels{label_$label=~\"$label_value\"}) by (pod),\n    \"pod_name\",\n    \"$1\", \n    \"pod\", \n    \"(.+)\"\n  )\n) * 730\n\n#END CPU\n+\n\n# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Memory ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\nsum(\n  avg(container_memory_allocation_bytes) by (pod,node) / 1024 / 1024 / 1024\n\n  * on (node) group_left()\n  avg(avg_over_time(node_ram_hourly_cost[10m])) by (node)\n\n  * on (pod) group_left()\n  label_replace(\n    max(kube_pod_labels{label_$label=~\"$label_value\"}) by (pod),\n    \"pod_name\",\n    \"$1\", \n    \"pod\", \n    \"(.+)\"\n  )\n) * 730\n\n# END MEMORY\n\n+\n\n# ~~~~~~~~~~~~~~~~~~~~~~~~~~~ STORAGE ~~~~~~~~~~~~~~~~~~~~~~~~~\n\nsum(\n sum(kube_persistentvolumeclaim_info{storageclass!=\".*ssd.*\"}) by (persistentvolumeclaim, storageclass)\n * on (persistentvolumeclaim) group_right(storageclass)\n sum(kube_persistentvolumeclaim_resource_requests_storage_bytes) by (persistentvolumeclaim)\n * on (persistentvolumeclaim) group_left(label_app)\n max(kube_persistentvolumeclaim_labels{label_$label=~\"$label_value\"}) by (persistentvolumeclaim) or up * 0\n) / 1024 / 1024 /1024 * .04 \n\n+\n\nsum(\n sum(kube_persistentvolumeclaim_info{storageclass=~\".*ssd.*\"}) by (persistentvolumeclaim, storageclass)\n * on (persistentvolumeclaim) group_right(storageclass)\n sum(kube_persistentvolumeclaim_resource_requests_storage_bytes) by (persistentvolumeclaim)\n * on (persistentvolumeclaim) group_left(label_app)\n max(kube_persistentvolumeclaim_labels{label_$label=~\"$label_value\"}) by (persistentvolumeclaim) or up * 0\n) / 1024 / 1024 /1024 * .17 \n\n\n# END STORAGE\n",
               "format": "time_series",
@@ -1157,8 +1157,8 @@
         ]
       },
       "timezone": "",
       "title": "Label costs & utilization",
-      "uid": "lWMhIA-ik",
+      "uid": "at-label-costs-and-utilization",
       "version": 1,
       "weekStart": ""
     }
diff -U 4 -r out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-namespace-utilization-template.yaml out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-namespace-utilization-template.yaml
--- out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-namespace-utilization-template.yaml	2025-02-21 23:22:13.281915628 +0000
+++ out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-namespace-utilization-template.yaml	2025-02-21 23:21:49.134696692 +0000
@@ -6,9 +6,9 @@
   name: grafana-dashboard-namespace-utilization
   namespace: kubecost
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
     grafana_dashboard: "1"
diff -U 4 -r out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-network-cloud-sevices.yaml out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-network-cloud-sevices.yaml
--- out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-network-cloud-sevices.yaml	2025-02-21 23:22:13.281915628 +0000
+++ out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-network-cloud-sevices.yaml	2025-02-21 23:21:49.134696692 +0000
@@ -6,9 +6,9 @@
   name: grafana-dashboard-network-cloud-services
   namespace: kubecost
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
     grafana_dashboard: "1"
@@ -21,10 +21,10 @@
         "list": [
           {
             "builtIn": 1,
             "datasource": {
-              "type": "grafana",
-              "uid": "-- Grafana --"
+              "type": "datasource",
+              "uid": "grafana"
             },
             "enable": true,
             "hide": true,
             "iconColor": "rgba(0, 211, 255, 1)",
@@ -292,9 +292,9 @@
           {
             "current": {
               "selected": false,
               "text": "Prometheus",
-              "value": "PBFA97CFB590B2093"
+              "value": "Prometheus"
             },
             "hide": 0,
             "includeAll": false,
             "multi": false,
@@ -368,9 +368,9 @@
               "value": "$__all"
             },
             "datasource": {
               "type": "prometheus",
-              "uid": "PBFA97CFB590B2093"
+              "uid": "${datasource}"
             },
             "definition": "label_values(kube_pod_container_status_running{namespace=\"$namespace\"},container)",
             "hide": 0,
             "includeAll": true,
diff -U 4 -r out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-network-costs.yaml out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-network-costs.yaml
--- out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-network-costs.yaml	2025-02-21 23:22:13.281915628 +0000
+++ out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-network-costs.yaml	2025-02-21 23:21:49.134696692 +0000
@@ -6,9 +6,9 @@
   name: grafana-dashboard-network-costs-metrics
   namespace: kubecost
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
     grafana_dashboard: "1"
@@ -21,10 +21,10 @@
         "list": [
           {
             "builtIn": 1,
             "datasource": {
-              "type": "grafana",
-              "uid": "-- Grafana --"
+              "type": "datasource",
+              "uid": "grafana"
             },
             "enable": true,
             "hide": true,
             "iconColor": "rgba(0, 211, 255, 1)",
@@ -515,9 +515,9 @@
           {
             "current": {
               "selected": false,
               "text": "Prometheus",
-              "value": "PBFA97CFB590B2093"
+              "value": "Prometheus"
             },
             "hide": 0,
             "includeAll": false,
             "multi": false,
diff -U 4 -r out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-node-utilization-template.yaml out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-node-utilization-template.yaml
--- out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-node-utilization-template.yaml	2025-02-21 23:22:13.281915628 +0000
+++ out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-node-utilization-template.yaml	2025-02-21 23:21:49.134696692 +0000
@@ -6,9 +6,9 @@
   name: grafana-dashboard-node-utilization
   namespace: kubecost
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
     grafana_dashboard: "1"
diff -U 4 -r out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-pod-utilization-multi-cluster.yaml out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-pod-utilization-multi-cluster.yaml
--- out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-pod-utilization-multi-cluster.yaml	2025-02-21 23:22:13.281915628 +0000
+++ out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-pod-utilization-multi-cluster.yaml	2025-02-21 23:21:49.134696692 +0000
@@ -6,9 +6,9 @@
   name: grafana-dashboard-pod-utilization-multi-cluster
   namespace: kubecost
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
     grafana_dashboard: "1"
diff -U 4 -r out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-pod-utilization-template.yaml out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-pod-utilization-template.yaml
--- out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-pod-utilization-template.yaml	2025-02-21 23:22:13.281915628 +0000
+++ out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-pod-utilization-template.yaml	2025-02-21 23:21:49.135696701 +0000
@@ -6,9 +6,9 @@
   name: grafana-dashboard-pod-utilization
   namespace: kubecost
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
     grafana_dashboard: "1"
diff -U 4 -r out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-prometheus-metrics-template.yaml out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-prometheus-metrics-template.yaml
--- out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-prometheus-metrics-template.yaml	2025-02-21 23:22:13.281915628 +0000
+++ out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-prometheus-metrics-template.yaml	2025-02-21 23:21:49.135696701 +0000
@@ -6,9 +6,9 @@
   name: grafana-dashboard-prom-benchmark
   namespace: kubecost
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
     grafana_dashboard: "1"
diff -U 4 -r out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-workload-aggregator.yaml out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-workload-aggregator.yaml
--- out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-workload-aggregator.yaml	2025-02-21 23:22:13.282915636 +0000
+++ out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-workload-aggregator.yaml	2025-02-21 23:21:49.135696701 +0000
@@ -6,9 +6,9 @@
   name: grafana-dashboard-workload-aggregator
   namespace: kubecost
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
     grafana_dashboard: "1"
@@ -882,9 +882,9 @@
           "targets": [
             {
               "datasource": {
                 "type": "prometheus",
-                "uid": "PBFA97CFB590B2093"
+                "uid": "${datasource}"
               },
               "editorMode": "code",
               "expr": "kubecost_read_db_size",
               "instant": false,
@@ -922,9 +922,9 @@
           {
             "current": {
               "selected": false,
               "text": "Prometheus",
-              "value": "PBFA97CFB590B2093"
+              "value": "Prometheus"
             },
             "hide": 0,
             "includeAll": false,
             "multi": false,
diff -U 4 -r out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-workload-metrics.yaml out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-workload-metrics.yaml
--- out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-workload-metrics.yaml	2025-02-21 23:22:13.282915636 +0000
+++ out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/grafana/grafana-dashboard-workload-metrics.yaml	2025-02-21 23:21:49.135696701 +0000
@@ -6,9 +6,9 @@
   name: grafana-dashboard-workload-metrics
   namespace: kubecost
   labels:
     app.kubernetes.io/name: cost-analyzer
-    helm.sh/chart: cost-analyzer-2.5.3
+    helm.sh/chart: cost-analyzer-2.6.2
     app.kubernetes.io/instance: release-name
     app.kubernetes.io/managed-by: Helm
     app: cost-analyzer
     grafana_dashboard: "1"
@@ -800,9 +800,9 @@
           {
             "current": {
               "selected": false,
               "text": "Prometheus",
-              "value": "PBFA97CFB590B2093"
+              "value": "Prometheus"
             },
             "hide": 0,
             "includeAll": false,
             "multi": false,
@@ -876,9 +876,9 @@
               "value": "$__all"
             },
             "datasource": {
               "type": "prometheus",
-              "uid": "PBFA97CFB590B2093"
+              "uid": "${datasource}"
             },
             "definition": "label_values({namespace=~\"$namespace\", pod=~\"$pod\"},container)",
             "hide": 0,
             "includeAll": true,
diff -U 4 -r out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/prometheus/prometheus-server-deployment.yaml out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/prometheus/prometheus-server-deployment.yaml
--- out/target/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/prometheus/prometheus-server-deployment.yaml	2025-02-21 23:22:13.283915645 +0000
+++ out/pr/kubecost/values-metalstack.yaml/sx-kubecost/charts/cost-analyzer/templates/prometheus/prometheus-server-deployment.yaml	2025-02-21 23:21:49.136696710 +0000
@@ -22,9 +22,9 @@
     type: Recreate
   template:
     metadata:
       annotations:
-        checksum/configs: 5a026e9b91e4d5ed20cdb242c294e9187b08a1aa77be5d299c219cbd2352b3e2
+        checksum/configs: e6d9233fce13f896ba190b3d096afba3f57911a216638e60789eda5383e657a2
       labels:
         component: "server"
         app: prometheus
         release: release-name
@@ -33,9 +33,9 @@
       serviceAccountName: release-name-prometheus-server
       containers:
 
         - name: prometheus-server
-          image: "quay.io/prometheus/prometheus:v2.55.1"
+          image: "quay.io/prometheus/prometheus:v3.1.0"
           imagePullPolicy: "IfNotPresent"
           args:
             - --storage.tsdb.retention.time=97h
             - --config.file=/etc/config/prometheus.yml

Copy link
Contributor Author

renovate bot commented Feb 22, 2025

Edited/Blocked Notification

Renovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR.

You can manually request rebase by checking the rebase/retry box above.

⚠️ Warning: custom changes will be lost.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

0 participants