github.com/replicatedcom/ship@v0.50.0/integration/update/jenkins-deployment-labels/expected/.ship/state.json (about)

     1  {
     2    "v1": {
     3      "config": {},
     4      "helmValues": "Master:\n  Name: jenkins-master\n  Image: jenkins/jenkins\n  ImageTag: lts\n  ImagePullPolicy: Always\n  Component: jenkins-master\n  UseSecurity: true\n  HostNetworking: false\n  AdminUser: admin\n  resources:\n    requests:\n      cpu: 50m\n      memory: 256Mi\n    limits:\n      cpu: 2000m\n      memory: 2048Mi\n  UsePodSecurityContext: true\n  ServicePort: 8080\n  ServiceType: LoadBalancer\n  ServiceAnnotations: {}\n  HealthProbes: true\n  HealthProbesLivenessTimeout: 90\n  HealthProbesReadinessTimeout: 60\n  HealthProbeLivenessFailureThreshold: 12\n  SlaveListenerPort: 50000\n  DisabledAgentProtocols:\n  - JNLP-connect\n  - JNLP2-connect\n  CSRF:\n    DefaultCrumbIssuer:\n      Enabled: true\n      ProxyCompatability: true\n  CLI: false\n  SlaveListenerServiceType: ClusterIP\n  SlaveListenerServiceAnnotations: {}\n  LoadBalancerSourceRanges:\n  - 0.0.0.0/0\n  ExtraPorts: null\n  InstallPlugins:\n  - kubernetes:1.12.4\n  - workflow-job:2.24\n  - workflow-aggregator:2.5\n  - credentials-binding:1.16\n  - git:3.9.1\n  InitScripts: null\n  CustomConfigMap: {}\n  OverwriteConfig: false\n  NodeSelector: {}\n  Tolerations: {}\n  PodAnnotations: {}\n  Ingress:\n    ApiVersion: extensions/v1beta1\n    Annotations: {}\n    TLS: null\n  AdminPassword: secret\nAgent:\n  Enabled: true\n  Image: jenkins/jnlp-slave\n  ImageTag: 3.10-1\n  CustomJenkinsLabels: []\n  Component: jenkins-slave\n  Privileged: false\n  resources:\n    requests:\n      cpu: 200m\n      memory: 256Mi\n    limits:\n      cpu: 200m\n      memory: 256Mi\n  AlwaysPullImage: false\n  PodRetention: Never\n  volumes: null\n  NodeSelector: {}\nPersistence:\n  Enabled: true\n  Annotations: {}\n  AccessMode: ReadWriteOnce\n  Size: 8Gi\n  volumes: null\n  mounts: null\nNetworkPolicy:\n  Enabled: false\n  ApiVersion: extensions/v1beta1\nrbac:\n  install: false\n  serviceAccountName: default\n  roleRef: cluster-admin\n  roleBindingKind: ClusterRoleBinding\n",
     5      "releaseName": "jenkins",
     6      "helmValuesDefaults": "# Default values for jenkins.\n# This is a YAML-formatted file.\n# Declare name/value pairs to be passed into your templates.\n# name: value\n\n## Overrides for generated resource names\n# See templates/_helpers.tpl\n# nameOverride:\n# fullnameOverride:\n\nMaster:\n  Name: jenkins-master\n  Image: \"jenkins/jenkins\"\n  ImageTag: \"lts\"\n  ImagePullPolicy: \"Always\"\n# ImagePullSecret: jenkins\n  Component: \"jenkins-master\"\n  UseSecurity: true\n  HostNetworking: false\n  AdminUser: admin\n  # AdminPassword: \u003cdefaults to random\u003e\n  resources:\n    requests:\n      cpu: \"50m\"\n      memory: \"256Mi\"\n    limits:\n      cpu: \"2000m\"\n      memory: \"2048Mi\"\n  # Environment variables that get added to the init container (useful for e.g. http_proxy)\n  # InitContainerEnv:\n  #   - name: http_proxy\n  #     value: \"http://192.168.64.1:3128\"\n  # ContainerEnv:\n  #   - name: http_proxy\n  #     value: \"http://192.168.64.1:3128\"\n  # Set min/max heap here if needed with:\n  # JavaOpts: \"-Xms512m -Xmx512m\"\n  # JenkinsOpts: \"\"\n  # JenkinsUriPrefix: \"/jenkins\"\n  # Enable pod security context (must be `true` if RunAsUser or FsGroup are set)\n  UsePodSecurityContext: true\n  # Set RunAsUser to 1000 to let Jenkins run as non-root user 'jenkins' which exists in 'jenkins/jenkins' docker image.\n  # When setting RunAsUser to a different value than 0 also set FsGroup to the same value:\n  # RunAsUser: \u003cdefaults to 0\u003e\n  # FsGroup: \u003cwill be omitted in deployment if RunAsUser is 0\u003e\n  ServicePort: 8080\n  # For minikube, set this to NodePort, elsewhere use LoadBalancer\n  # Use ClusterIP if your setup includes ingress controller\n  ServiceType: LoadBalancer\n  # Master Service annotations\n  ServiceAnnotations: {}\n  #   service.beta.kubernetes.io/aws-load-balancer-backend-protocol: https\n  # Used to create Ingress record (should used with ServiceType: ClusterIP)\n  # HostName: jenkins.cluster.local\n  # NodePort: \u003cto set explicitly, choose port between 30000-32767\n  # Enable Kubernetes Liveness and Readiness Probes\n  # ~ 2 minutes to allow Jenkins to restart when upgrading plugins. Set ReadinessTimeout to be shorter than LivenessTimeout.\n  HealthProbes: true\n  HealthProbesLivenessTimeout: 90\n  HealthProbesReadinessTimeout: 60\n  HealthProbeLivenessFailureThreshold: 12\n  SlaveListenerPort: 50000\n  DisabledAgentProtocols:\n    - JNLP-connect\n    - JNLP2-connect\n  CSRF:\n    DefaultCrumbIssuer:\n      Enabled: true\n      ProxyCompatability: true\n  CLI: false\n  # Kubernetes service type for the JNLP slave service\n  # SETTING THIS TO \"LoadBalancer\" IS A HUGE SECURITY RISK: https://github.com/kubernetes/charts/issues/1341\n  SlaveListenerServiceType: ClusterIP\n  SlaveListenerServiceAnnotations: {}\n  LoadBalancerSourceRanges:\n  - 0.0.0.0/0\n  # Optionally assign a known public LB IP\n  # LoadBalancerIP: 1.2.3.4\n  # Optionally configure a JMX port\n  # requires additional JavaOpts, ie\n  # JavaOpts: \u003e\n  #   -Dcom.sun.management.jmxremote.port=4000\n  #   -Dcom.sun.management.jmxremote.authenticate=false\n  #   -Dcom.sun.management.jmxremote.ssl=false\n  # JMXPort: 4000\n  # Optionally configure other ports to expose in the Master container\n  ExtraPorts:\n  # - name: BuildInfoProxy\n  #   port: 9000\n  # List of plugins to be install during Jenkins master start\n  InstallPlugins:\n    - kubernetes:1.12.4\n    - workflow-job:2.24\n    - workflow-aggregator:2.5\n    - credentials-binding:1.16\n    - git:3.9.1\n  # Used to approve a list of groovy functions in pipelines used the script-security plugin. Can be viewed under /scriptApproval\n  # ScriptApproval:\n  #   - \"method groovy.json.JsonSlurperClassic parseText java.lang.String\"\n  #   - \"new groovy.json.JsonSlurperClassic\"\n  # List of groovy init scripts to be executed during Jenkins master start\n  InitScripts:\n  #  - |\n  #    print 'adding global pipeline libraries, register properties, bootstrap jobs...'\n  # Kubernetes secret that contains a 'credentials.xml' for Jenkins\n  # CredentialsXmlSecret: jenkins-credentials\n  # Kubernetes secret that contains files to be put in the Jenkins 'secrets' directory,\n  # useful to manage encryption keys used for credentials.xml for instance (such as\n  # master.key and hudson.util.Secret)\n  # SecretsFilesSecret: jenkins-secrets\n  # Jenkins XML job configs to provision\n  # Jobs: |-\n  #   test: |-\n  #     \u003c\u003cxml here\u003e\u003e\n  CustomConfigMap: false\n  # By default, the configMap is only used to set the initial config the first time\n  # that the chart is installed.  Setting `OverwriteConfig` to `true` will overwrite\n  # the jenkins config with the contents of the configMap every time the pod starts.\n  OverwriteConfig: false\n  # Node labels and tolerations for pod assignment\n  # ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector\n  # ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#taints-and-tolerations-beta-feature\n  NodeSelector: {}\n  Tolerations: {}\n  PodAnnotations: {}\n\n  Ingress:\n    ApiVersion: extensions/v1beta1\n    Annotations: {}\n    # kubernetes.io/ingress.class: nginx\n    # kubernetes.io/tls-acme: \"true\"\n\n    TLS:\n    # - secretName: jenkins.cluster.local\n    #   hosts:\n    #     - jenkins.cluster.local\n\nAgent:\n  Enabled: true\n  Image: jenkins/jnlp-slave\n  ImageTag: 3.10-1\n  CustomJenkinsLabels: []\n# ImagePullSecret: jenkins\n  Component: \"jenkins-slave\"\n  Privileged: false\n  resources:\n    requests:\n      cpu: \"200m\"\n      memory: \"256Mi\"\n    limits:\n      cpu: \"200m\"\n      memory: \"256Mi\"\n  # You may want to change this to true while testing a new image\n  AlwaysPullImage: false\n  # Controls how slave pods are retained after the Jenkins build completes\n  # Possible values: Always, Never, OnFailure\n  PodRetention: Never\n  # You can define the volumes that you want to mount for this container\n  # Allowed types are: ConfigMap, EmptyDir, HostPath, Nfs, Pod, Secret\n  # Configure the attributes as they appear in the corresponding Java class for that type\n  # https://github.com/jenkinsci/kubernetes-plugin/tree/master/src/main/java/org/csanchez/jenkins/plugins/kubernetes/volumes\n  volumes:\n  # - type: Secret\n  #   secretName: mysecret\n  #   mountPath: /var/myapp/mysecret\n  NodeSelector: {}\n  # Key Value selectors. Ex:\n  # jenkins-agent: v1\n\nPersistence:\n  Enabled: true\n  ## A manually managed Persistent Volume and Claim\n  ## Requires Persistence.Enabled: true\n  ## If defined, PVC must be created manually before volume will be bound\n  # ExistingClaim:\n\n  ## jenkins data Persistent Volume Storage Class\n  ## If defined, storageClassName: \u003cstorageClass\u003e\n  ## If set to \"-\", storageClassName: \"\", which disables dynamic provisioning\n  ## If undefined (the default) or set to null, no storageClassName spec is\n  ##   set, choosing the default provisioner.  (gp2 on AWS, standard on\n  ##   GKE, AWS \u0026 OpenStack)\n  ##\n  # StorageClass: \"-\"\n\n  Annotations: {}\n  AccessMode: ReadWriteOnce\n  Size: 8Gi\n  volumes:\n  #  - name: nothing\n  #    emptyDir: {}\n  mounts:\n  #  - mountPath: /var/nothing\n  #    name: nothing\n  #    readOnly: true\n\nNetworkPolicy:\n  # Enable creation of NetworkPolicy resources.\n  Enabled: false\n  # For Kubernetes v1.4, v1.5 and v1.6, use 'extensions/v1beta1'\n  # For Kubernetes v1.7, use 'networking.k8s.io/v1'\n  ApiVersion: extensions/v1beta1\n\n## Install Default RBAC roles and bindings\nrbac:\n  install: false\n  serviceAccountName: default\n  # Role reference\n  roleRef: cluster-admin\n  # Role kind (RoleBinding or ClusterRoleBinding)\n  roleBindingKind: ClusterRoleBinding\n",
     7      "kustomize": {
     8        "overlays": {
     9          "ship": {
    10            "excludedBases": [
    11              "/jenkins-test.yaml"
    12            ],
    13            "patches": {
    14              "/jenkins-master-deployment.yaml": "apiVersion: apps/v1beta1\nkind: Deployment\nmetadata:\n  labels:\n    chart: jenkins-0.20.1\n    component: jenkins-jenkins-master\n    heritage: Tiller\n    release: jenkins\n    custom: label\n    key: value\n  name: jenkins\n"
    15            }
    16          }
    17        }
    18      },
    19      "upstream": "github.com/helm/charts/tree/78858a2fb07aebe082efb11b8991b60e7fdd5d60/stable/jenkins",
    20      "metadata": {
    21        "applicationType": "helm",
    22        "icon": "https://wiki.jenkins-ci.org/download/attachments/2916393/logo.png",
    23        "name": "jenkins",
    24        "releaseNotes": "Added ExtraPorts to open in the master pod (#7759)\n\n* Added ExtraPorts to open in the master pod\n\nSigned-off-by: ecejjar \u003cjesus.javier.arauz@ericsson.com\u003e\n\n* [stable/jenkins] Bumped up chart version\n\nSigned-off-by: ecejjar \u003cjesus.javier.arauz@ericsson.com\u003e",
    25        "license": {
    26          "assignee": "",
    27          "createdAt": "0001-01-01T00:00:00Z",
    28          "expiresAt": "0001-01-01T00:00:00Z",
    29          "id": "",
    30          "type": ""
    31        },
    32        "sequence": 0,
    33        "version": "0.20.1"
    34      },
    35      "upstreamContents": {
    36        "upstreamFiles": [
    37          {
    38            "filePath": ".helmignore",
    39            "fileContents": "IyBQYXR0ZXJucyB0byBpZ25vcmUgd2hlbiBidWlsZGluZyBwYWNrYWdlcy4KIyBUaGlzIHN1cHBvcnRzIHNoZWxsIGdsb2IgbWF0Y2hpbmcsIHJlbGF0aXZlIHBhdGggbWF0Y2hpbmcsIGFuZAojIG5lZ2F0aW9uIChwcmVmaXhlZCB3aXRoICEpLiBPbmx5IG9uZSBwYXR0ZXJuIHBlciBsaW5lLgouRFNfU3RvcmUKIyBDb21tb24gVkNTIGRpcnMKLmdpdC8KLmdpdGlnbm9yZQouYnpyLwouYnpyaWdub3JlCi5oZy8KLmhnaWdub3JlCi5zdm4vCiMgQ29tbW9uIGJhY2t1cCBmaWxlcwoqLnN3cAoqLmJhawoqLnRtcAoqfgojIFZhcmlvdXMgSURFcwoucHJvamVjdAouaWRlYS8KKi50bXByb2oK"
    40          },
    41          {
    42            "filePath": "Chart.yaml",
    43            "fileContents": "bmFtZTogamVua2lucwpob21lOiBodHRwczovL2plbmtpbnMuaW8vCnZlcnNpb246IDAuMjAuMQphcHBWZXJzaW9uOiAyLjEyMS4zCmRlc2NyaXB0aW9uOiBPcGVuIHNvdXJjZSBjb250aW51b3VzIGludGVncmF0aW9uIHNlcnZlci4gSXQgc3VwcG9ydHMgbXVsdGlwbGUgU0NNIHRvb2xzCiAgaW5jbHVkaW5nIENWUywgU3VidmVyc2lvbiBhbmQgR2l0LiBJdCBjYW4gZXhlY3V0ZSBBcGFjaGUgQW50IGFuZCBBcGFjaGUgTWF2ZW4tYmFzZWQKICBwcm9qZWN0cyBhcyB3ZWxsIGFzIGFyYml0cmFyeSBzY3JpcHRzLgpzb3VyY2VzOgotIGh0dHBzOi8vZ2l0aHViLmNvbS9qZW5raW5zY2kvamVua2lucwotIGh0dHBzOi8vZ2l0aHViLmNvbS9qZW5raW5zY2kvZG9ja2VyLWpubHAtc2xhdmUKbWFpbnRhaW5lcnM6Ci0gbmFtZTogbGFjaGllODMKICBlbWFpbDogbGFjaGxhbi5ldmVuc29uQG1pY3Jvc29mdC5jb20KLSBuYW1lOiB2aWdsZXNpYXNjZQogIGVtYWlsOiB2aWdsZXNpYXNAZ29vZ2xlLmNvbQppY29uOiBodHRwczovL3dpa2kuamVua2lucy1jaS5vcmcvZG93bmxvYWQvYXR0YWNobWVudHMvMjkxNjM5My9sb2dvLnBuZwo="
    44          },
    45          {
    46            "filePath": "OWNERS",
    47            "fileContents": "YXBwcm92ZXJzOgotIGxhY2hpZTgzCi0gdmlnbGVzaWFzY2UKcmV2aWV3ZXJzOgotIGxhY2hpZTgzCi0gdmlnbGVzaWFzY2UK"
    48          },
    49          {
    50            "filePath": "README.md",
    51            "fileContents": "IyBKZW5raW5zIEhlbG0gQ2hhcnQKCkplbmtpbnMgbWFzdGVyIGFuZCBzbGF2ZSBjbHVzdGVyIHV0aWxpemluZyB0aGUgSmVua2lucyBLdWJlcm5ldGVzIHBsdWdpbgoKKiBodHRwczovL3dpa2kuamVua2lucy1jaS5vcmcvZGlzcGxheS9KRU5LSU5TL0t1YmVybmV0ZXMrUGx1Z2luCgpJbnNwaXJlZCBieSB0aGUgYXdlc29tZSB3b3JrIG9mIENhcmxvcyBTYW5jaGV6IDxtYWlsdG86Y2FybG9zQGFwYWNoZS5vcmc+CgojIyBDaGFydCBEZXRhaWxzCgpUaGlzIGNoYXJ0IHdpbGwgZG8gdGhlIGZvbGxvd2luZzoKCiogMSB4IEplbmtpbnMgTWFzdGVyIHdpdGggcG9ydCA4MDgwIGV4cG9zZWQgb24gYW4gZXh0ZXJuYWwgTG9hZEJhbGFuY2VyCiogQWxsIHVzaW5nIEt1YmVybmV0ZXMgRGVwbG95bWVudHMKCiMjIEluc3RhbGxpbmcgdGhlIENoYXJ0CgpUbyBpbnN0YWxsIHRoZSBjaGFydCB3aXRoIHRoZSByZWxlYXNlIG5hbWUgYG15LXJlbGVhc2VgOgoKYGBgYmFzaAokIGhlbG0gaW5zdGFsbCAtLW5hbWUgbXktcmVsZWFzZSBzdGFibGUvamVua2lucwpgYGAKCiMjIENvbmZpZ3VyYXRpb24KClRoZSBmb2xsb3dpbmcgdGFibGVzIGxpc3QgdGhlIGNvbmZpZ3VyYWJsZSBwYXJhbWV0ZXJzIG9mIHRoZSBKZW5raW5zIGNoYXJ0IGFuZCB0aGVpciBkZWZhdWx0IHZhbHVlcy4KCiMjIyBKZW5raW5zIE1hc3Rlcgp8IFBhcmFtZXRlciAgICAgICAgICAgICAgICAgICAgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICB8IERlZmF1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfAp8IGBuYW1lT3ZlcnJpZGVgICAgICAgICAgICAgICAgICAgICB8IE92ZXJyaWRlIHRoZSByZXNvdXJjZSBuYW1lIHByZWZpeCAgICB8IGBqZW5raW5zYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGBmdWxsbmFtZU92ZXJyaWRlYCAgICAgICAgICAgICAgICB8IE92ZXJyaWRlIHRoZSBmdWxsIHJlc291cmNlIG5hbWVzICAgICB8IGBqZW5raW5zLXtyZWxlYXNlLW5hbWV9YCAob3IgYGplbmtpbnNgIGlmIHJlbGVhc2UtbmFtZSBpcyBgamVua2luc2ApICAgICAgICAgfAp8IGBNYXN0ZXIuTmFtZWAgICAgICAgICAgICAgICAgICAgICB8IEplbmtpbnMgbWFzdGVyIG5hbWUgICAgICAgICAgICAgICAgICB8IGBqZW5raW5zLW1hc3RlcmAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGBNYXN0ZXIuSW1hZ2VgICAgICAgICAgICAgICAgICAgICB8IE1hc3RlciBpbWFnZSBuYW1lICAgICAgICAgICAgICAgICAgICB8IGBqZW5raW5zY2kvamVua2luc2AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGBNYXN0ZXIuSW1hZ2VUYWdgICAgICAgICAgICAgICAgICB8IE1hc3RlciBpbWFnZSB0YWcgICAgICAgICAgICAgICAgICAgICB8IGBsdHNgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGBNYXN0ZXIuSW1hZ2VQdWxsUG9saWN5YCAgICAgICAgICB8IE1hc3RlciBpbWFnZSBwdWxsIHBvbGljeSAgICAgICAgICAgICB8IGBBbHdheXNgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGBNYXN0ZXIuSW1hZ2VQdWxsU2VjcmV0YCAgICAgICAgICB8IE1hc3RlciBpbWFnZSBwdWxsIHNlY3JldCAgICAgICAgICAgICB8IE5vdCBzZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGBNYXN0ZXIuQ29tcG9uZW50YCAgICAgICAgICAgICAgICB8IGs4cyBzZWxlY3RvciBrZXkgICAgICAgICAgICAgICAgICAgICB8IGBqZW5raW5zLW1hc3RlcmAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGBNYXN0ZXIuVXNlU2VjdXJpdHlgICAgICAgICAgICAgICB8IFVzZSBiYXNpYyBzZWN1cml0eSAgICAgICAgICAgICAgICAgICB8IGB0cnVlYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGBNYXN0ZXIuQWRtaW5Vc2VyYCAgICAgICAgICAgICAgICB8IEFkbWluIHVzZXJuYW1lIChhbmQgcGFzc3dvcmQpIGNyZWF0ZWQgYXMgYSBzZWNyZXQgaWYgdXNlU2VjdXJpdHkgaXMgdHJ1ZSB8IGBhZG1pbmAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGBNYXN0ZXIuQWRtaW5QYXNzd29yZGAgICAgICAgICAgICB8IEFkbWluIHBhc3N3b3JkIChhbmQgdXNlcikgY3JlYXRlZCBhcyBhIHNlY3JldCBpZiB1c2VTZWN1cml0eSBpcyB0cnVlIHwgUmFuZG9tIHZhbHVlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBgTWFzdGVyLkplbmtpbnNBZG1pbkVtYWlsYCAgICAgICAgfCBFbWFpbCBhZGRyZXNzIGZvciB0aGUgYWRtaW5pc3RyYXRvciBvZiB0aGUgSmVua2lucyBpbnN0YW5jZSB8IE5vdCBzZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBgTWFzdGVyLnJlc291cmNlc2AgICAgICAgICAgICAgICAgfCBSZXNvdXJjZXMgYWxsb2NhdGlvbiAoUmVxdWVzdHMgYW5kIExpbWl0cykgfCBge3JlcXVlc3RzOiB7Y3B1OiA1MG0sIG1lbW9yeTogMjU2TWl9LCBsaW1pdHM6IHtjcHU6IDIwMDBtLCBtZW1vcnk6IDIwNDhNaX19YHwKfCBgTWFzdGVyLkluaXRDb250YWluZXJFbnZgICAgICAgICAgfCBFbnZpcm9ubWVudCB2YXJpYWJsZXMgZm9yIEluaXQgQ29udGFpbmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3Qgc2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBgTWFzdGVyLkNvbnRhaW5lckVudmAgICAgICAgICAgICAgfCBFbnZpcm9ubWVudCB2YXJpYWJsZXMgZm9yIEplbmtpbnMgQ29udGFpbmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3Qgc2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBgTWFzdGVyLlVzZVBvZFNlY3VyaXR5Q29udGV4dGAgICAgfCBFbmFibGUgcG9kIHNlY3VyaXR5IGNvbnRleHQgKG11c3QgYmUgYHRydWVgIGlmIGBSdW5Bc1VzZXJgIG9yIGBGc0dyb3VwYCBhcmUgc2V0KSB8IGB0cnVlYCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBgTWFzdGVyLlJ1bkFzVXNlcmAgICAgICAgICAgICAgICAgfCB1aWQgdGhhdCBqZW5raW5zIHJ1bnMgd2l0aCAgICAgICAgICAgfCBgMGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBgTWFzdGVyLkZzR3JvdXBgICAgICAgICAgICAgICAgICAgfCB1aWQgdGhhdCB3aWxsIGJlIHVzZWQgZm9yIHBlcnNpc3RlbnQgdm9sdW1lIHwgYDBgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBgTWFzdGVyLlNlcnZpY2VBbm5vdGF0aW9uc2AgICAgICAgfCBTZXJ2aWNlIGFubm90YXRpb25zICAgICAgICAgICAgICAgICAgfCBge31gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBgTWFzdGVyLlNlcnZpY2VUeXBlYCAgICAgICAgICAgICAgfCBrOHMgc2VydmljZSB0eXBlICAgICAgICAgICAgICAgICAgICAgfCBgTG9hZEJhbGFuY2VyYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBgTWFzdGVyLlNlcnZpY2VQb3J0YCAgICAgICAgICAgICAgfCBrOHMgc2VydmljZSBwb3J0ICAgICAgICAgICAgICAgICAgICAgfCBgODA4MGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBgTWFzdGVyLk5vZGVQb3J0YCAgICAgICAgICAgICAgICAgfCBrOHMgbm9kZSBwb3J0ICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3Qgc2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBgTWFzdGVyLkhlYWx0aFByb2Jlc2AgICAgICAgICAgICAgfCBFbmFibGUgazhzIGxpdmVuZXNzIGFuZCByZWFkaW5lc3MgcHJvYmVzIHwgYHRydWVgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBgTWFzdGVyLkhlYWx0aFByb2Jlc0xpdmVuZXNzVGltZW91dGAgICAgICB8IFNldCB0aGUgdGltZW91dCBmb3IgdGhlIGxpdmVuZXNzIHByb2JlIHwgYDEyMGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGBNYXN0ZXIuSGVhbHRoUHJvYmVzUmVhZGluZXNzVGltZW91dGAgfCBTZXQgdGhlIHRpbWVvdXQgZm9yIHRoZSByZWFkaW5lc3MgcHJvYmUgfCBgNjBgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBgTWFzdGVyLkhlYWx0aFByb2JlTGl2ZW5lc3NGYWlsdXJlVGhyZXNob2xkYCB8IFNldCB0aGUgZmFpbHVyZSB0aHJlc2hvbGQgZm9yIHRoZSBsaXZlbmVzcyBwcm9iZSB8IGAxMmAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGBNYXN0ZXIuU2xhdmVMaXN0ZW5lclBvcnRgICAgICAgICB8IExpc3RlbmluZyBwb3J0IGZvciBhZ2VudHMgICAgICAgICAgICB8IGA1MDAwMGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGBNYXN0ZXIuRGlzYWJsZWRBZ2VudFByb3RvY29sc2AgICB8IERpc2FibGVkIGFnZW50IHByb3RvY29scyAgICAgICAgICAgICB8IGBKTkxQLWNvbm5lY3QgSk5MUDItY29ubmVjdGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGBNYXN0ZXIuQ1NSRi5EZWZhdWx0Q3J1bWJJc3N1ZXIuRW5hYmxlZGAgfCBFbmFibGUgdGhlIGRlZmF1bHQgQ1NSRiBDcnVtYiBpc3N1ZXIgfCBgdHJ1ZWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGBNYXN0ZXIuQ1NSRi5EZWZhdWx0Q3J1bWJJc3N1ZXIuUHJveHlDb21wYXRhYmlsaXR5YCB8IEVuYWJsZSBwcm94eSBjb21wYXRpYmlsaXR5IHwgYHRydWVgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBgTWFzdGVyLkNMSWAgICAgICAgICAgICAgICAgICAgICAgfCBFbmFibGUgQ0xJIG92ZXIgcmVtb3RpbmcgICAgICAgICAgICAgfCBgZmFsc2VgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBgTWFzdGVyLkxvYWRCYWxhbmNlclNvdXJjZVJhbmdlc2AgfCBBbGxvd2VkIGluYm91bmQgSVAgYWRkcmVzc2VzICAgICAgICAgfCBgMC4wLjAuMC8wYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBgTWFzdGVyLkxvYWRCYWxhbmNlcklQYCAgICAgICAgICAgfCBPcHRpb25hbCBmaXhlZCBleHRlcm5hbCBJUCAgICAgICAgICAgfCBOb3Qgc2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBgTWFzdGVyLkpNWFBvcnRgICAgICAgICAgICAgICAgICAgfCBPcGVuIGEgcG9ydCwgZm9yIEpNWCBzdGF0cyAgICAgICAgICAgfCBOb3Qgc2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBgTWFzdGVyLkV4dHJhUG9ydHNgICAgICAgICAgICAgICAgfCBPcGVuIGV4dHJhIHBvcnRzLCBmb3Igb3RoZXIgdXNlcyAgICAgfCBOb3Qgc2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBgTWFzdGVyLkN1c3RvbUNvbmZpZ01hcGAgICAgICAgICAgfCBVc2UgYSBjdXN0b20gQ29uZmlnTWFwICAgICAgICAgICAgICAgfCBgZmFsc2VgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBgTWFzdGVyLk92ZXJ3cml0ZUNvbmZpZ2AgICAgICAgICAgfCBSZXBsYWNlIGNvbmZpZyB3LyBDb25maWdNYXAgb24gYm9vdCAgfCBgZmFsc2VgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBgTWFzdGVyLkluZ3Jlc3MuQW5ub3RhdGlvbnNgICAgICAgfCBJbmdyZXNzIGFubm90YXRpb25zICAgICAgICAgICAgICAgICAgfCBge31gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBgTWFzdGVyLkluZ3Jlc3MuVExTYCAgICAgICAgICAgICAgfCBJbmdyZXNzIFRMUyBjb25maWd1cmF0aW9uICAgICAgICAgICAgfCBgW11gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBgTWFzdGVyLkluaXRTY3JpcHRzYCAgICAgICAgICAgICAgfCBMaXN0IG9mIEplbmtpbnMgaW5pdCBzY3JpcHRzICAgICAgICAgfCBOb3Qgc2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBgTWFzdGVyLkNyZWRlbnRpYWxzWG1sU2VjcmV0YCAgICAgfCBLdWJlcm5ldGVzIHNlY3JldCB0aGF0IGNvbnRhaW5zIGEgJ2NyZWRlbnRpYWxzLnhtbCcgZmlsZSB8IE5vdCBzZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBgTWFzdGVyLlNlY3JldHNGaWxlc1NlY3JldGAgICAgICAgfCBLdWJlcm5ldGVzIHNlY3JldCB0aGF0IGNvbnRhaW5zICdzZWNyZXRzJyBmaWxlcyB8IE5vdCBzZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBgTWFzdGVyLkpvYnNgICAgICAgICAgICAgICAgICAgICAgfCBKZW5raW5zIFhNTCBqb2IgY29uZmlncyAgICAgICAgICAgICAgfCBOb3Qgc2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBgTWFzdGVyLkluc3RhbGxQbHVnaW5zYCAgICAgICAgICAgfCBMaXN0IG9mIEplbmtpbnMgcGx1Z2lucyB0byBpbnN0YWxsICAgfCBga3ViZXJuZXRlczoxLjEyLjAgd29ya2Zsb3ctYWdncmVnYXRvcjoyLjUgY3JlZGVudGlhbHMtYmluZGluZzoxLjE2IGdpdDozLjkuMSB3b3JrZmxvdy1qb2I6Mi4yM2AgfAp8IGBNYXN0ZXIuU2NyaXB0QXBwcm92YWxgICAgICAgICAgICB8IExpc3Qgb2YgZ3Jvb3Z5IGZ1bmN0aW9ucyB0byBhcHByb3ZlICB8IE5vdCBzZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGBNYXN0ZXIuTm9kZVNlbGVjdG9yYCAgICAgICAgICAgICB8IE5vZGUgbGFiZWxzIGZvciBwb2QgYXNzaWdubWVudCAgICAgICB8IGB7fWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGBNYXN0ZXIuQWZmaW5pdHlgICAgICAgICAgICAgICAgICB8IEFmZmluaXR5IHNldHRpbmdzICAgICAgICAgICAgICAgICAgICB8IGB7fWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGBNYXN0ZXIuVG9sZXJhdGlvbnNgICAgICAgICAgICAgICB8IFRvbGVyYXRpb24gbGFiZWxzIGZvciBwb2QgYXNzaWdubWVudCB8IGB7fWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGBNYXN0ZXIuUG9kQW5ub3RhdGlvbnNgICAgICAgICAgICB8IEFubm90YXRpb25zIGZvciBtYXN0ZXIgcG9kICAgICAgICAgICB8IGB7fWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGBOZXR3b3JrUG9saWN5LkVuYWJsZWRgICAgICAgICAgICB8IEVuYWJsZSBjcmVhdGlvbiBvZiBOZXR3b3JrUG9saWN5IHJlc291cmNlcy4gfCBgZmFsc2VgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGBOZXR3b3JrUG9saWN5LkFwaVZlcnNpb25gICAgICAgICB8IE5ldHdvcmtQb2xpY3kgQXBpVmVyc2lvbiAgICAgICAgICAgICB8IGBleHRlbnNpb25zL3YxYmV0YTFgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGByYmFjLmluc3RhbGxgICAgICAgICAgICAgICAgICAgICB8IENyZWF0ZSBzZXJ2aWNlIGFjY291bnQgYW5kIENsdXN0ZXJSb2xlQmluZGluZyBmb3IgS3ViZXJuZXRlcyBwbHVnaW4gfCBgZmFsc2VgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGByYmFjLnJvbGVSZWZgICAgICAgICAgICAgICAgICAgICB8IENsdXN0ZXIgcm9sZSBuYW1lIHRvIGJpbmQgdG8gICAgICAgICB8IGBjbHVzdGVyLWFkbWluYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGByYmFjLnJvbGVCaW5kaW5nS2luZGAgICAgICAgICAgICB8IFJvbGUga2luZCAoYFJvbGVCaW5kaW5nYCBvciBgQ2x1c3RlclJvbGVCaW5kaW5nYCl8IGBDbHVzdGVyUm9sZUJpbmRpbmdgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAoKIyMjIEplbmtpbnMgQWdlbnQKCnwgUGFyYW1ldGVyICAgICAgICAgICAgICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERlZmF1bHQgICAgICAgICAgICAgICAgfAp8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwKfCBgQWdlbnQuQWx3YXlzUHVsbEltYWdlYCAgICB8IEFsd2F5cyBwdWxsIGFnZW50IGNvbnRhaW5lciBpbWFnZSBiZWZvcmUgYnVpbGQgIHwgYGZhbHNlYCAgICAgICAgICAgICAgICB8CnwgYEFnZW50LkN1c3RvbUplbmtpbnNMYWJlbHNgfCBBcHBlbmQgSmVua2lucyBsYWJlbHMgdG8gdGhlIGFnZW50ICAgICAgICAgICAgICB8IGB7fWAgICAgICAgICAgICAgICAgICAgfAp8IGBBZ2VudC5FbmFibGVkYCAgICAgICAgICAgIHwgRW5hYmxlIEt1YmVybmV0ZXMgcGx1Z2luIGpubHAtYWdlbnQgcG9kVGVtcGxhdGUgfCBgdHJ1ZWAgICAgICAgICAgICAgICAgIHwKfCBgQWdlbnQuSW1hZ2VgICAgICAgICAgICAgICB8IEFnZW50IGltYWdlIG5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGplbmtpbnNjaS9qbmxwLXNsYXZlYCB8CnwgYEFnZW50LkltYWdlUHVsbFNlY3JldGAgICAgfCBBZ2VudCBpbWFnZSBwdWxsIHNlY3JldCAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdCBzZXQgICAgICAgICAgICAgICAgfAp8IGBBZ2VudC5JbWFnZVRhZ2AgICAgICAgICAgIHwgQWdlbnQgaW1hZ2UgdGFnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgMi42MmAgICAgICAgICAgICAgICAgIHwKfCBgQWdlbnQuUHJpdmlsZWdlZGAgICAgICAgICB8IEFnZW50IHByaXZpbGVnZWQgY29udGFpbmVyICAgICAgICAgICAgICAgICAgICAgIHwgYGZhbHNlYCAgICAgICAgICAgICAgICB8CnwgYEFnZW50LnJlc291cmNlc2AgICAgICAgICAgfCBSZXNvdXJjZXMgYWxsb2NhdGlvbiAoUmVxdWVzdHMgYW5kIExpbWl0cykgICAgICB8IGB7cmVxdWVzdHM6IHtjcHU6IDIwMG0sIG1lbW9yeTogMjU2TWl9LCBsaW1pdHM6IHtjcHU6IDIwMG0sIG1lbW9yeTogMjU2TWl9fWB8CnwgYEFnZW50LnZvbHVtZXNgICAgICAgICAgICAgfCBBZGRpdGlvbmFsIHZvbHVtZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBuaWxgICAgICAgICAgICAgICAgICAgfAoKU3BlY2lmeSBlYWNoIHBhcmFtZXRlciB1c2luZyB0aGUgYC0tc2V0IGtleT12YWx1ZVssa2V5PXZhbHVlXWAgYXJndW1lbnQgdG8gYGhlbG0gaW5zdGFsbGAuCgpBbHRlcm5hdGl2ZWx5LCBhIFlBTUwgZmlsZSB0aGF0IHNwZWNpZmllcyB0aGUgdmFsdWVzIGZvciB0aGUgcGFyYW1ldGVycyBjYW4gYmUgcHJvdmlkZWQgd2hpbGUgaW5zdGFsbGluZyB0aGUgY2hhcnQuIEZvciBleGFtcGxlLAoKYGBgYmFzaAokIGhlbG0gaW5zdGFsbCAtLW5hbWUgbXktcmVsZWFzZSAtZiB2YWx1ZXMueWFtbCBzdGFibGUvamVua2lucwpgYGAKCj4gKipUaXAqKjogWW91IGNhbiB1c2UgdGhlIGRlZmF1bHQgW3ZhbHVlcy55YW1sXSh2YWx1ZXMueWFtbCkKCiMjIE1vdW50aW5nIHZvbHVtZXMgaW50byB5b3VyIEFnZW50IHBvZHMKCllvdXIgSmVua2lucyBBZ2VudHMgd2lsbCBydW4gYXMgcG9kcywgYW5kIGl0J3MgcG9zc2libGUgdG8gaW5qZWN0IHZvbHVtZXMgd2hlcmUgbmVlZGVkOgoKYGBgeWFtbApBZ2VudDoKICB2b2x1bWVzOgogIC0gdHlwZTogU2VjcmV0CiAgICBzZWNyZXROYW1lOiBqZW5raW5zLW15c2VjcmV0cwogICAgbW91bnRQYXRoOiAvdmFyL3J1bi9zZWNyZXRzL2plbmtpbnMtbXlzZWNyZXRzCmBgYAoKVGhlIHN1cHBvcnRlZCB2b2x1bWUgdHlwZXMgYXJlOiBgQ29uZmlnTWFwYCwgYEVtcHR5RGlyYCwgYEhvc3RQYXRoYCwgYE5mc2AsIGBQb2RgLCBgU2VjcmV0YC4gRWFjaCB0eXBlIHN1cHBvcnRzIGEgZGlmZmVyZW50IHNldCBvZiBjb25maWd1cmFibGUgYXR0cmlidXRlcywgZGVmaW5lZCBieSBbdGhlIGNvcnJlc3BvbmRpbmcgSmF2YSBjbGFzc10oaHR0cHM6Ly9naXRodWIuY29tL2plbmtpbnNjaS9rdWJlcm5ldGVzLXBsdWdpbi90cmVlL21hc3Rlci9zcmMvbWFpbi9qYXZhL29yZy9jc2FuY2hlei9qZW5raW5zL3BsdWdpbnMva3ViZXJuZXRlcy92b2x1bWVzKS4KCiMjIE5ldHdvcmtQb2xpY3kKClRvIG1ha2UgdXNlIG9mIHRoZSBOZXR3b3JrUG9saWN5IHJlc291cmNlcyBjcmVhdGVkIGJ5IGRlZmF1bHQsCmluc3RhbGwgW2EgbmV0d29ya2luZyBwbHVnaW4gdGhhdCBpbXBsZW1lbnRzIHRoZSBLdWJlcm5ldGVzCk5ldHdvcmtQb2xpY3kgc3BlY10oaHR0cHM6Ly9rdWJlcm5ldGVzLmlvL2RvY3MvdGFza3MvYWRtaW5pc3Rlci1jbHVzdGVyL2RlY2xhcmUtbmV0d29yay1wb2xpY3kjYmVmb3JlLXlvdS1iZWdpbikuCgpGb3IgS3ViZXJuZXRlcyB2MS41ICYgdjEuNiwgeW91IG11c3QgYWxzbyB0dXJuIG9uIE5ldHdvcmtQb2xpY3kgYnkgc2V0dGluZwp0aGUgRGVmYXVsdERlbnkgbmFtZXNwYWNlIGFubm90YXRpb24uIE5vdGU6IHRoaXMgd2lsbCBlbmZvcmNlIHBvbGljeSBmb3IgX2FsbF8gcG9kcyBpbiB0aGUgbmFtZXNwYWNlOgoKICAgIGt1YmVjdGwgYW5ub3RhdGUgbmFtZXNwYWNlIGRlZmF1bHQgIm5ldC5iZXRhLmt1YmVybmV0ZXMuaW8vbmV0d29yay1wb2xpY3k9e1wiaW5ncmVzc1wiOntcImlzb2xhdGlvblwiOlwiRGVmYXVsdERlbnlcIn19IgoKSW5zdGFsbCBoZWxtIGNoYXJ0IHdpdGggbmV0d29yayBwb2xpY3kgZW5hYmxlZDoKCiAgICAkIGhlbG0gaW5zdGFsbCBzdGFibGUvamVua2lucyAtLXNldCBOZXR3b3JrUG9saWN5LkVuYWJsZWQ9dHJ1ZQoKIyMgUGVyc2lzdGVuY2UKClRoZSBKZW5raW5zIGltYWdlIHN0b3JlcyBwZXJzaXN0ZW5jZSB1bmRlciBgL3Zhci9qZW5raW5zX2hvbWVgIHBhdGggb2YgdGhlIGNvbnRhaW5lci4gQSBkeW5hbWljYWxseSBtYW5hZ2VkIFBlcnNpc3RlbnQgVm9sdW1lCkNsYWltIGlzIHVzZWQgdG8ga2VlcCB0aGUgZGF0YSBhY3Jvc3MgZGVwbG95bWVudHMsIGJ5IGRlZmF1bHQuIFRoaXMgaXMga25vd24gdG8gd29yayBpbiBHQ0UsIEFXUywgYW5kIG1pbmlrdWJlLiBBbHRlcm5hdGl2ZWx5LAphIHByZXZpb3VzbHkgY29uZmlndXJlZCBQZXJzaXN0ZW50IFZvbHVtZSBDbGFpbSBjYW4gYmUgdXNlZC4KCkl0IGlzIHBvc3NpYmxlIHRvIG1vdW50IHNldmVyYWwgdm9sdW1lcyB1c2luZyBgUGVyc2lzdGVuY2Uudm9sdW1lc2AgYW5kIGBQZXJzaXN0ZW5jZS5tb3VudHNgIHBhcmFtZXRlcnMuCgojIyMgUGVyc2lzdGVuY2UgVmFsdWVzCgp8IFBhcmFtZXRlciAgICAgICAgICAgICAgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgfCBEZWZhdWx0ICAgICAgICAgfAp8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0gfAp8IGBQZXJzaXN0ZW5jZS5FbmFibGVkYCAgICAgICB8IEVuYWJsZSB0aGUgdXNlIG9mIGEgSmVua2lucyBQVkMgfCBgdHJ1ZWAgICAgICAgICAgfAp8IGBQZXJzaXN0ZW5jZS5FeGlzdGluZ0NsYWltYCB8IFByb3ZpZGUgdGhlIG5hbWUgb2YgYSBQVkMgICAgICAgfCBgbmlsYCAgICAgICAgICAgfAp8IGBQZXJzaXN0ZW5jZS5BY2Nlc3NNb2RlYCAgICB8IFRoZSBQVkMgYWNjZXNzIG1vZGUgICAgICAgICAgICAgfCBgUmVhZFdyaXRlT25jZWAgfAp8IGBQZXJzaXN0ZW5jZS5TaXplYCAgICAgICAgICB8IFRoZSBzaXplIG9mIHRoZSBQVkMgICAgICAgICAgICAgfCBgOEdpYCAgICAgICAgICAgfAp8IGBQZXJzaXN0ZW5jZS52b2x1bWVzYCAgICAgICB8IEFkZGl0aW9uYWwgdm9sdW1lcyAgICAgICAgICAgICAgfCBgbmlsYCAgICAgICAgICAgfAp8IGBQZXJzaXN0ZW5jZS5tb3VudHNgICAgICAgICB8IEFkZGl0aW9uYWwgbW91bnRzICAgICAgICAgICAgICAgfCBgbmlsYCAgICAgICAgICAgfAoKIyMjIyBFeGlzdGluZyBQZXJzaXN0ZW50Vm9sdW1lQ2xhaW0KCjEuIENyZWF0ZSB0aGUgUGVyc2lzdGVudFZvbHVtZQoxLiBDcmVhdGUgdGhlIFBlcnNpc3RlbnRWb2x1bWVDbGFpbQoxLiBJbnN0YWxsIHRoZSBjaGFydAoKYGBgYmFzaAokIGhlbG0gaW5zdGFsbCAtLW5hbWUgbXktcmVsZWFzZSAtLXNldCBQZXJzaXN0ZW5jZS5FeGlzdGluZ0NsYWltPVBWQ19OQU1FIHN0YWJsZS9qZW5raW5zCmBgYAoKIyMgQ3VzdG9tIENvbmZpZ01hcAoKV2hlbiBjcmVhdGluZyBhIG5ldyBwYXJlbnQgY2hhcnQgd2l0aCB0aGlzIGNoYXJ0IGFzIGEgZGVwZW5kZW5jeSwgdGhlIGBDdXN0b21Db25maWdNYXBgIHBhcmFtZXRlciBjYW4gYmUgdXNlZCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBjb25maWcueG1sIHByb3ZpZGVkLgpJdCBhbHNvIGFsbG93cyBmb3IgcHJvdmlkaW5nIGFkZGl0aW9uYWwgeG1sIGNvbmZpZ3VyYXRpb24gZmlsZXMgdGhhdCB3aWxsIGJlIGNvcGllZCBpbnRvIGAvdmFyL2plbmtpbnNfaG9tZWAuIEluIHRoZSBwYXJlbnQgY2hhcnQncyB2YWx1ZXMueWFtbCwKc2V0IHRoZSBgamVua2lucy5NYXN0ZXIuQ3VzdG9tQ29uZmlnTWFwYCB2YWx1ZSB0byB0cnVlIGxpa2Ugc28KCmBgYHlhbWwKamVua2luczoKICBNYXN0ZXI6CiAgICBDdXN0b21Db25maWdNYXA6IHRydWUKYGBgCgphbmQgcHJvdmlkZSB0aGUgZmlsZSBgdGVtcGxhdGVzL2NvbmZpZy50cGxgIGluIHlvdXIgcGFyZW50IGNoYXJ0IGZvciB5b3VyIHVzZSBjYXNlLiBZb3UgY2FuIHN0YXJ0IGJ5IGNvcHlpbmcgdGhlIGNvbnRlbnRzIG9mIGBjb25maWcueWFtbGAgZnJvbSB0aGlzIGNoYXJ0IGludG8geW91ciBwYXJlbnQgY2hhcnRzIGB0ZW1wbGF0ZXMvY29uZmlnLnRwbGAgYXMgYSBiYXNpcyBmb3IgY3VzdG9taXphdGlvbi4gRmluYWxseSwgeW91J2xsIG5lZWQgdG8gd3JhcCB0aGUgY29udGVudHMgb2YgYHRlbXBsYXRlcy9jb25maWcudHBsYCBsaWtlIHNvOgoKYGBgeWFtbAp7ey0gZGVmaW5lICJvdmVycmlkZV9jb25maWdfbWFwIiB9fQogICAgPENPTlRFTlRTX0hFUkU+Cnt7IGVuZCB9fQpgYGAKCiMjIFJCQUMKCklmIHJ1bm5pbmcgdXBvbiBhIGNsdXN0ZXIgd2l0aCBSQkFDIGVuYWJsZWQgeW91IHdpbGwgbmVlZCB0byBkbyB0aGUgZm9sbG93aW5nOgoKKiBgaGVsbSBpbnN0YWxsIHN0YWJsZS9qZW5raW5zIC0tc2V0IHJiYWMuaW5zdGFsbD10cnVlYAoqIENyZWF0ZSBhIEplbmtpbnMgY3JlZGVudGlhbCBvZiB0eXBlIEt1YmVybmV0ZXMgc2VydmljZSBhY2NvdW50IHdpdGggc2VydmljZSBhY2NvdW50IG5hbWUgcHJvdmlkZWQgaW4gdGhlIGBoZWxtIHN0YXR1c2Agb3V0cHV0LgoqIFVuZGVyIGNvbmZpZ3VyZSBKZW5raW5zIC0tIFVwZGF0ZSB0aGUgY3JlZGVudGlhbHMgY29uZmlnIGluIHRoZSBjbG91ZCBzZWN0aW9uIHRvIHVzZSB0aGUgc2VydmljZSBhY2NvdW50IGNyZWRlbnRpYWwgeW91IGNyZWF0ZWQgaW4gdGhlIHN0ZXAgYWJvdmUuCgojIyBSdW4gSmVua2lucyBhcyBub24gcm9vdCB1c2VyCgpUaGUgZGVmYXVsdCBzZXR0aW5ncyBvZiB0aGlzIGhlbG0gY2hhcnQgbGV0IEplbmtpbnMgcnVuIGFzIHJvb3QgdXNlciB3aXRoIHVpZCBgMGAuCkR1ZSB0byBzZWN1cml0eSByZWFzb25zIHlvdSBtYXkgd2FudCB0byBydW4gSmVua2lucyBhcyBhIG5vbiByb290IHVzZXIuCkZvcnR1bmF0ZWx5IHRoZSBkZWZhdWx0IGplbmtpbnMgZG9ja2VyIGltYWdlIGBqZW5raW5zL2plbmtpbnNgIGNvbnRhaW5zIGEgdXNlciBgamVua2luc2Agd2l0aCB1aWQgYDEwMDBgIHRoYXQgY2FuIGJlIHVzZWQgZm9yIHRoaXMgcHVycG9zZS4KClNpbXBseSB1c2UgdGhlIGZvbGxvd2luZyBzZXR0aW5ncyB0byBydW4gSmVua2lucyBhcyBgamVua2luc2AgdXNlciB3aXRoIHVpZCBgMTAwMGAuCgpgYGB5YW1sCmplbmtpbnM6CiAgTWFzdGVyOgogICAgUnVuQXNVc2VyOiAxMDAwCiAgICBGc0dyb3VwOiAxMDAwCmBgYAoKIyMgUHJvdmlkaW5nIGpvYnMgeG1sCgpKb2JzIGNhbiBiZSBjcmVhdGVkIChhbmQgb3ZlcndyaXR0ZW4pIGJ5IHByb3ZpZGluZyBqZW5raW5zIGNvbmZpZyB4bWwgd2l0aGluIHRoZSBgdmFsdWVzLnlhbWxgIGZpbGUuClRoZSBrZXlzIG9mIHRoZSBtYXAgd2lsbCBiZWNvbWUgYSBkaXJlY3Rvcnkgd2l0aGluIHRoZSBqb2JzIGRpcmVjdG9yeS4KVGhlIHZhbHVlcyBvZiB0aGUgbWFwIHdpbGwgYmVjb21lIHRoZSBgY29uZmlnLnhtbGAgZmlsZSBpbiB0aGUgcmVzcGVjdGl2ZSBkaXJlY3RvcnkuCgpCZWxvdyBpcyBhbiBleGFtcGxlIG9mIGEgYHZhbHVlcy55YW1sYCBmaWxlIGFuZCB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSBjcmVhdGVkOgoKIyMjIyB2YWx1ZXMueWFtbApgYGB5YW1sCk1hc3RlcjoKICBKb2JzOgogICAgdGVzdC1qb2I6IHwtCiAgICAgIDw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J1VURi04Jz8+CiAgICAgIDxwcm9qZWN0PgogICAgICAgIDxrZWVwRGVwZW5kZW5jaWVzPmZhbHNlPC9rZWVwRGVwZW5kZW5jaWVzPgogICAgICAgIDxwcm9wZXJ0aWVzLz4KICAgICAgICA8c2NtIGNsYXNzPSJodWRzb24uc2NtLk51bGxTQ00iLz4KICAgICAgICA8Y2FuUm9hbT5mYWxzZTwvY2FuUm9hbT4KICAgICAgICA8ZGlzYWJsZWQ+ZmFsc2U8L2Rpc2FibGVkPgogICAgICAgIDxibG9ja0J1aWxkV2hlbkRvd25zdHJlYW1CdWlsZGluZz5mYWxzZTwvYmxvY2tCdWlsZFdoZW5Eb3duc3RyZWFtQnVpbGRpbmc+CiAgICAgICAgPGJsb2NrQnVpbGRXaGVuVXBzdHJlYW1CdWlsZGluZz5mYWxzZTwvYmxvY2tCdWlsZFdoZW5VcHN0cmVhbUJ1aWxkaW5nPgogICAgICAgIDx0cmlnZ2Vycy8+CiAgICAgICAgPGNvbmN1cnJlbnRCdWlsZD5mYWxzZTwvY29uY3VycmVudEJ1aWxkPgogICAgICAgIDxidWlsZGVycy8+CiAgICAgICAgPHB1Ymxpc2hlcnMvPgogICAgICAgIDxidWlsZFdyYXBwZXJzLz4KICAgICAgPC9wcm9qZWN0PgogICAgdGVzdC1qb2ItMjogfC0KICAgICAgPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4KICAgICAgPHByb2plY3Q+CiAgICAgICAgPGtlZXBEZXBlbmRlbmNpZXM+ZmFsc2U8L2tlZXBEZXBlbmRlbmNpZXM+CiAgICAgICAgPHByb3BlcnRpZXMvPgogICAgICAgIDxzY20gY2xhc3M9Imh1ZHNvbi5zY20uTnVsbFNDTSIvPgogICAgICAgIDxjYW5Sb2FtPmZhbHNlPC9jYW5Sb2FtPgogICAgICAgIDxkaXNhYmxlZD5mYWxzZTwvZGlzYWJsZWQ+CiAgICAgICAgPGJsb2NrQnVpbGRXaGVuRG93bnN0cmVhbUJ1aWxkaW5nPmZhbHNlPC9ibG9ja0J1aWxkV2hlbkRvd25zdHJlYW1CdWlsZGluZz4KICAgICAgICA8YmxvY2tCdWlsZFdoZW5VcHN0cmVhbUJ1aWxkaW5nPmZhbHNlPC9ibG9ja0J1aWxkV2hlblVwc3RyZWFtQnVpbGRpbmc+CiAgICAgICAgPHRyaWdnZXJzLz4KICAgICAgICA8Y29uY3VycmVudEJ1aWxkPmZhbHNlPC9jb25jdXJyZW50QnVpbGQ+CiAgICAgICAgPGJ1aWxkZXJzLz4KICAgICAgICA8cHVibGlzaGVycy8+CiAgICAgICAgPGJ1aWxkV3JhcHBlcnMvPgpgYGAKCiMjIyMgRGlyZWN0b3J5IHN0cnVjdHVyZSBvZiBqb2JzIGRpcmVjdG9yeQpgYGAKLgrilJzilIDilIAgX3Rlc3Qtam9iLTEKfCAgIOKUlOKUgOKUgCBjb25maWcueG1sCuKUnOKUgOKUgCBfdGVzdC1qb2ItMgp8ICAg4pSU4pSA4pSAIGNvbmZpZy54bWwKYGBgCgpEb2NzIHRha2VuIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2plbmtpbnNjaS9kb2NrZXIvYmxvYi9tYXN0ZXIvRG9ja2VyZmlsZToKX0plbmtpbnMgaXMgcnVuIHdpdGggdXNlciBgamVua2luc2AsIHVpZCA9IDEwMDAuIElmIHlvdSBiaW5kIG1vdW50IGEgdm9sdW1lIGZyb20gdGhlIGhvc3Qgb3IgYSBkYXRhIGNvbnRhaW5lcixlbnN1cmUgeW91IHVzZSB0aGUgc2FtZSB1aWRfCgojIyBSdW5uaW5nIGJlaGluZCBhIGZvcndhcmQgcHJveHkKClRoZSBtYXN0ZXIgcG9kIHVzZXMgYW4gSW5pdCBDb250YWluZXIgdG8gaW5zdGFsbCBwbHVnaW5zIGV0Yy4gSWYgeW91IGFyZSBiZWhpbmQgYSBjb3Jwb3JhdGUgcHJveHkgaXQgbWF5IGJlIHVzZWZ1bCB0byBzZXQgYE1hc3Rlci5Jbml0Q29udGFpbmVyRW52YCB0byBhZGQgZW52aXJvbm1lbnQgdmFyaWFibGVzIHN1Y2ggYXMgYGh0dHBfcHJveHlgLCBzbyB0aGF0IHRoZXNlIGNhbiBiZSBkb3dubG9hZGVkLgoKQWRkaXRpb25hbGx5LCB5b3UgbWF5IHdhbnQgdG8gYWRkIGVudiB2YXJzIGZvciB0aGUgSmVua2lucyBjb250YWluZXIsIGFuZCB0aGUgSlZNIChgTWFzdGVyLkphdmFPcHRzYCkuCgpgYGB5YW1sCk1hc3RlcjoKICBJbml0Q29udGFpbmVyRW52OgogICAgLSBuYW1lOiBodHRwX3Byb3h5CiAgICAgIHZhbHVlOiAiaHR0cDovLzE5Mi4xNjguNjQuMTozMTI4IgogICAgLSBuYW1lOiBodHRwc19wcm94eQogICAgICB2YWx1ZTogImh0dHA6Ly8xOTIuMTY4LjY0LjE6MzEyOCIKICAgIC0gbmFtZTogbm9fcHJveHkKICAgICAgdmFsdWU6ICIiCiAgQ29udGFpbmVyRW52OgogICAgLSBuYW1lOiBodHRwX3Byb3h5CiAgICAgIHZhbHVlOiAiaHR0cDovLzE5Mi4xNjguNjQuMTozMTI4IgogICAgLSBuYW1lOiBodHRwc19wcm94eQogICAgICB2YWx1ZTogImh0dHA6Ly8xOTIuMTY4LjY0LjE6MzEyOCIKICBKYXZhT3B0czogPi0KICAgIC1EaHR0cC5wcm94eUhvc3Q9MTkyLjE2OC42NC4xCiAgICAtRGh0dHAucHJveHlQb3J0PTMxMjgKICAgIC1EaHR0cHMucHJveHlIb3N0PTE5Mi4xNjguNjQuMQogICAgLURodHRwcy5wcm94eVBvcnQ9MzEyOApgYGAK"
    52          },
    53          {
    54            "filePath": "templates/NOTES.txt",
    55            "fileContents": "MS4gR2V0IHlvdXIgJ3t7IC5WYWx1ZXMuTWFzdGVyLkFkbWluVXNlciB9fScgdXNlciBwYXNzd29yZCBieSBydW5uaW5nOgogIHByaW50ZiAkKGt1YmVjdGwgZ2V0IHNlY3JldCAtLW5hbWVzcGFjZSB7eyAuUmVsZWFzZS5OYW1lc3BhY2UgfX0ge3sgdGVtcGxhdGUgImplbmtpbnMuZnVsbG5hbWUiIC4gfX0gLW8ganNvbnBhdGg9InsuZGF0YS5qZW5raW5zLWFkbWluLXBhc3N3b3JkfSIgfCBiYXNlNjQgLS1kZWNvZGUpO2VjaG8KCnt7LSBpZiAuVmFsdWVzLk1hc3Rlci5Ib3N0TmFtZSB9fQoKMi4gVmlzaXQgaHR0cDovL3t7IC5WYWx1ZXMuTWFzdGVyLkhvc3ROYW1lIH19Cnt7LSBlbHNlIH19CjIuIEdldCB0aGUgSmVua2lucyBVUkwgdG8gdmlzaXQgYnkgcnVubmluZyB0aGVzZSBjb21tYW5kcyBpbiB0aGUgc2FtZSBzaGVsbDoKe3stIGlmIGNvbnRhaW5zICJOb2RlUG9ydCIgLlZhbHVlcy5NYXN0ZXIuU2VydmljZVR5cGUgfX0KICBleHBvcnQgTk9ERV9QT1JUPSQoa3ViZWN0bCBnZXQgLS1uYW1lc3BhY2Uge3sgLlJlbGVhc2UuTmFtZXNwYWNlIH19IC1vIGpzb25wYXRoPSJ7LnNwZWMucG9ydHNbMF0ubm9kZVBvcnR9IiBzZXJ2aWNlcyB7eyB0ZW1wbGF0ZSAiamVua2lucy5mdWxsbmFtZSIgLiB9fSkKICBleHBvcnQgTk9ERV9JUD0kKGt1YmVjdGwgZ2V0IG5vZGVzIC0tbmFtZXNwYWNlIHt7IC5SZWxlYXNlLk5hbWVzcGFjZSB9fSAtbyBqc29ucGF0aD0iey5pdGVtc1swXS5zdGF0dXMuYWRkcmVzc2VzWzBdLmFkZHJlc3N9IikKICBlY2hvIGh0dHA6Ly8kTk9ERV9JUDokTk9ERV9QT1JUL2xvZ2luCgp7ey0gZWxzZSBpZiBjb250YWlucyAiTG9hZEJhbGFuY2VyIiAuVmFsdWVzLk1hc3Rlci5TZXJ2aWNlVHlwZSB9fQogIE5PVEU6IEl0IG1heSB0YWtlIGEgZmV3IG1pbnV0ZXMgZm9yIHRoZSBMb2FkQmFsYW5jZXIgSVAgdG8gYmUgYXZhaWxhYmxlLgogICAgICAgIFlvdSBjYW4gd2F0Y2ggdGhlIHN0YXR1cyBvZiBieSBydW5uaW5nICdrdWJlY3RsIGdldCBzdmMgLS1uYW1lc3BhY2Uge3sgLlJlbGVhc2UuTmFtZXNwYWNlIH19IC13IHt7IHRlbXBsYXRlICJqZW5raW5zLmZ1bGxuYW1lIiAuIH19JwogIGV4cG9ydCBTRVJWSUNFX0lQPSQoa3ViZWN0bCBnZXQgc3ZjIC0tbmFtZXNwYWNlIHt7IC5SZWxlYXNlLk5hbWVzcGFjZSB9fSB7eyB0ZW1wbGF0ZSAiamVua2lucy5mdWxsbmFtZSIgLiB9fSAtLXRlbXBsYXRlICJ7eyAie3sgcmFuZ2UgKGluZGV4IC5zdGF0dXMubG9hZEJhbGFuY2VyLmluZ3Jlc3MgMCkgfX17eyAuIH19e3sgZW5kIH19IiB9fSIpCiAgZWNobyBodHRwOi8vJFNFUlZJQ0VfSVA6e3sgLlZhbHVlcy5NYXN0ZXIuU2VydmljZVBvcnQgfX0vbG9naW4KCnt7LSBlbHNlIGlmIGNvbnRhaW5zICJDbHVzdGVySVAiICAuVmFsdWVzLk1hc3Rlci5TZXJ2aWNlVHlwZSB9fQogIGV4cG9ydCBQT0RfTkFNRT0kKGt1YmVjdGwgZ2V0IHBvZHMgLS1uYW1lc3BhY2Uge3sgLlJlbGVhc2UuTmFtZXNwYWNlIH19IC1sICJjb21wb25lbnQ9e3sgLlJlbGVhc2UuTmFtZSB9fS17eyAuVmFsdWVzLk1hc3Rlci5Db21wb25lbnQgfX0iIC1vIGpzb25wYXRoPSJ7Lml0ZW1zWzBdLm1ldGFkYXRhLm5hbWV9IikKICBlY2hvIGh0dHA6Ly8xMjcuMC4wLjE6e3sgLlZhbHVlcy5NYXN0ZXIuU2VydmljZVBvcnQgfX0KICBrdWJlY3RsIHBvcnQtZm9yd2FyZCAkUE9EX05BTUUge3sgLlZhbHVlcy5NYXN0ZXIuU2VydmljZVBvcnQgfX06e3sgLlZhbHVlcy5NYXN0ZXIuU2VydmljZVBvcnQgfX0KCnt7LSBlbmQgfX0Ke3stIGVuZCB9fQoKMy4gTG9naW4gd2l0aCB0aGUgcGFzc3dvcmQgZnJvbSBzdGVwIDEgYW5kIHRoZSB1c2VybmFtZToge3sgLlZhbHVlcy5NYXN0ZXIuQWRtaW5Vc2VyIH19CgpGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBydW5uaW5nIEplbmtpbnMgb24gS3ViZXJuZXRlcywgdmlzaXQ6Cmh0dHBzOi8vY2xvdWQuZ29vZ2xlLmNvbS9zb2x1dGlvbnMvamVua2lucy1vbi1jb250YWluZXItZW5naW5lCgp7ey0gaWYgLlZhbHVlcy5QZXJzaXN0ZW5jZS5FbmFibGVkIH19Cnt7LSBlbHNlIH19CiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyMjIyMgICBXQVJOSU5HOiBQZXJzaXN0ZW5jZSBpcyBkaXNhYmxlZCEhISBZb3Ugd2lsbCBsb3NlIHlvdXIgZGF0YSB3aGVuICAgIyMjIyMKIyMjIyMjICAgICAgICAgICAgdGhlIEplbmtpbnMgcG9kIGlzIHRlcm1pbmF0ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjIyMjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwp7ey0gZW5kIH19Cgp7ey0gaWYgLlZhbHVlcy5yYmFjLmluc3RhbGwgfX0KQ29uZmlndXJlIHRoZSBLdWJlcm5ldGVzIHBsdWdpbiBpbiBKZW5raW5zIHRvIHVzZSB0aGUgZm9sbG93aW5nIFNlcnZpY2UgQWNjb3VudCBuYW1lIHt7IHRlbXBsYXRlICJqZW5raW5zLmZ1bGxuYW1lIiAuIH19IHVzaW5nIHRoZSBmb2xsb3dpbmcgc3RlcHM6CiAgQ3JlYXRlIGEgSmVua2lucyBjcmVkZW50aWFsIG9mIHR5cGUgS3ViZXJuZXRlcyBzZXJ2aWNlIGFjY291bnQgd2l0aCBzZXJ2aWNlIGFjY291bnQgbmFtZSB7eyB0ZW1wbGF0ZSAiamVua2lucy5mdWxsbmFtZSIgLiB9fQogIFVuZGVyIGNvbmZpZ3VyZSBKZW5raW5zIC0tIFVwZGF0ZSB0aGUgY3JlZGVudGlhbHMgY29uZmlnIGluIHRoZSBjbG91ZCBzZWN0aW9uIHRvIHVzZSB0aGUgc2VydmljZSBhY2NvdW50IGNyZWRlbnRpYWwgeW91IGNyZWF0ZWQgaW4gdGhlIHN0ZXAgYWJvdmUuCnt7LSBlbmQgfX0K"
    56          },
    57          {
    58            "filePath": "templates/_helpers.tpl",
    59            "fileContents": "e3svKiB2aW06IHNldCBmaWxldHlwZT1tdXN0YWNoZTogKi99fQp7ey8qCkV4cGFuZCB0aGUgbmFtZSBvZiB0aGUgY2hhcnQuCiovfX0Ke3stIGRlZmluZSAiamVua2lucy5uYW1lIiAtfX0Ke3stIGRlZmF1bHQgLkNoYXJ0Lk5hbWUgLlZhbHVlcy5uYW1lT3ZlcnJpZGUgfCB0cnVuYyA2MyB8IHRyaW1TdWZmaXggIi0iIC19fQp7ey0gZW5kIC19fQoKe3svKgpDcmVhdGUgYSBkZWZhdWx0IGZ1bGx5IHF1YWxpZmllZCBhcHAgbmFtZS4KV2UgdHJ1bmNhdGUgYXQgNjMgY2hhcnMgYmVjYXVzZSBzb21lIEt1YmVybmV0ZXMgbmFtZSBmaWVsZHMgYXJlIGxpbWl0ZWQgdG8gdGhpcyAoYnkgdGhlIEROUyBuYW1pbmcgc3BlYykuCklmIHJlbGVhc2UgbmFtZSBjb250YWlucyBjaGFydCBuYW1lIGl0IHdpbGwgYmUgdXNlZCBhcyBhIGZ1bGwgbmFtZS4KKi99fQp7ey0gZGVmaW5lICJqZW5raW5zLmZ1bGxuYW1lIiAtfX0Ke3stIGlmIC5WYWx1ZXMuZnVsbG5hbWVPdmVycmlkZSAtfX0Ke3stIC5WYWx1ZXMuZnVsbG5hbWVPdmVycmlkZSB8IHRydW5jIDYzIHwgdHJpbVN1ZmZpeCAiLSIgLX19Cnt7LSBlbHNlIC19fQp7ey0gJG5hbWUgOj0gZGVmYXVsdCAuQ2hhcnQuTmFtZSAuVmFsdWVzLm5hbWVPdmVycmlkZSAtfX0Ke3stIGlmIGNvbnRhaW5zICRuYW1lIC5SZWxlYXNlLk5hbWUgLX19Cnt7LSAuUmVsZWFzZS5OYW1lIHwgdHJ1bmMgNjMgfCB0cmltU3VmZml4ICItIiAtfX0Ke3stIGVsc2UgLX19Cnt7LSBwcmludGYgIiVzLSVzIiAuUmVsZWFzZS5OYW1lICRuYW1lIHwgdHJ1bmMgNjMgfCB0cmltU3VmZml4ICItIiAtfX0Ke3stIGVuZCAtfX0Ke3stIGVuZCAtfX0Ke3stIGVuZCAtfX0KCnt7LSBkZWZpbmUgImplbmtpbnMua3ViZXJuZXRlcy12ZXJzaW9uIiAtfX0KICB7ey0gcmFuZ2UgLlZhbHVlcy5NYXN0ZXIuSW5zdGFsbFBsdWdpbnMgLX19CiAgICB7eyBpZiBoYXNQcmVmaXggImt1YmVybmV0ZXM6IiAuIH19CiAgICAgIHt7LSAkc3BsaXQgOj0gc3BsaXRMaXN0ICI6IiAuIH19CiAgICAgIHt7LSBwcmludGYgIiVzIiAoaW5kZXggJHNwbGl0IDEgKSAtfX0KICAgIHt7LSBlbmQgLX19CiAge3stIGVuZCAtfX0Ke3stIGVuZCAtfX0K"
    60          },
    61          {
    62            "filePath": "templates/config.yaml",
    63            "fileContents": "e3stIGlmIG5vdCAuVmFsdWVzLk1hc3Rlci5DdXN0b21Db25maWdNYXAgfX0KCmFwaVZlcnNpb246IHYxCmtpbmQ6IENvbmZpZ01hcAptZXRhZGF0YToKICBuYW1lOiB7eyB0ZW1wbGF0ZSAiamVua2lucy5mdWxsbmFtZSIgLiB9fQpkYXRhOgogIGNvbmZpZy54bWw6IHwtCiAgICA8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSdVVEYtOCc/PgogICAgPGh1ZHNvbj4KICAgICAgPGRpc2FibGVkQWRtaW5pc3RyYXRpdmVNb25pdG9ycy8+CiAgICAgIDx2ZXJzaW9uPnt7IC5WYWx1ZXMuTWFzdGVyLkltYWdlVGFnIH19PC92ZXJzaW9uPgogICAgICA8bnVtRXhlY3V0b3JzPjA8L251bUV4ZWN1dG9ycz4KICAgICAgPG1vZGU+Tk9STUFMPC9tb2RlPgogICAgICA8dXNlU2VjdXJpdHk+e3sgLlZhbHVlcy5NYXN0ZXIuVXNlU2VjdXJpdHkgfX08L3VzZVNlY3VyaXR5PgogICAgICA8YXV0aG9yaXphdGlvblN0cmF0ZWd5IGNsYXNzPSJodWRzb24uc2VjdXJpdHkuRnVsbENvbnRyb2xPbmNlTG9nZ2VkSW5BdXRob3JpemF0aW9uU3RyYXRlZ3kiPgogICAgICAgIDxkZW55QW5vbnltb3VzUmVhZEFjY2Vzcz50cnVlPC9kZW55QW5vbnltb3VzUmVhZEFjY2Vzcz4KICAgICAgPC9hdXRob3JpemF0aW9uU3RyYXRlZ3k+CiAgICAgIDxzZWN1cml0eVJlYWxtIGNsYXNzPSJodWRzb24uc2VjdXJpdHkuTGVnYWN5U2VjdXJpdHlSZWFsbSIvPgogICAgICA8ZGlzYWJsZVJlbWVtYmVyTWU+ZmFsc2U8L2Rpc2FibGVSZW1lbWJlck1lPgogICAgICA8cHJvamVjdE5hbWluZ1N0cmF0ZWd5IGNsYXNzPSJqZW5raW5zLm1vZGVsLlByb2plY3ROYW1pbmdTdHJhdGVneSREZWZhdWx0UHJvamVjdE5hbWluZ1N0cmF0ZWd5Ii8+CiAgICAgIDx3b3Jrc3BhY2VEaXI+JHtKRU5LSU5TX0hPTUV9L3dvcmtzcGFjZS8ke0lURU1fRlVMTE5BTUV9PC93b3Jrc3BhY2VEaXI+CiAgICAgIDxidWlsZHNEaXI+JHtJVEVNX1JPT1RESVJ9L2J1aWxkczwvYnVpbGRzRGlyPgogICAgICA8bWFya3VwRm9ybWF0dGVyIGNsYXNzPSJodWRzb24ubWFya3VwLkVzY2FwZWRNYXJrdXBGb3JtYXR0ZXIiLz4KICAgICAgPGpka3MvPgogICAgICA8dmlld3NUYWJCYXIgY2xhc3M9Imh1ZHNvbi52aWV3cy5EZWZhdWx0Vmlld3NUYWJCYXIiLz4KICAgICAgPG15Vmlld3NUYWJCYXIgY2xhc3M9Imh1ZHNvbi52aWV3cy5EZWZhdWx0TXlWaWV3c1RhYkJhciIvPgogICAgICA8Y2xvdWRzPgogICAgICAgIDxvcmcuY3NhbmNoZXouamVua2lucy5wbHVnaW5zLmt1YmVybmV0ZXMuS3ViZXJuZXRlc0Nsb3VkIHBsdWdpbj0ia3ViZXJuZXRlc0B7eyB0ZW1wbGF0ZSAiamVua2lucy5rdWJlcm5ldGVzLXZlcnNpb24iIC4gfX0iPgogICAgICAgICAgPG5hbWU+a3ViZXJuZXRlczwvbmFtZT4KICAgICAgICAgIDx0ZW1wbGF0ZXM+Cnt7LSBpZiAuVmFsdWVzLkFnZW50LkVuYWJsZWQgfX0KICAgICAgICAgICAgPG9yZy5jc2FuY2hlei5qZW5raW5zLnBsdWdpbnMua3ViZXJuZXRlcy5Qb2RUZW1wbGF0ZT4KICAgICAgICAgICAgICA8aW5oZXJpdEZyb20+PC9pbmhlcml0RnJvbT4KICAgICAgICAgICAgICA8bmFtZT5kZWZhdWx0PC9uYW1lPgogICAgICAgICAgICAgIDxpbnN0YW5jZUNhcD4yMTQ3NDgzNjQ3PC9pbnN0YW5jZUNhcD4KICAgICAgICAgICAgICA8aWRsZU1pbnV0ZXM+MDwvaWRsZU1pbnV0ZXM+CiAgICAgICAgICAgICAgPGxhYmVsPnt7IC5SZWxlYXNlLk5hbWUgfX0te3sgLlZhbHVlcy5BZ2VudC5Db21wb25lbnQgfX0ge3sgLlZhbHVlcy5BZ2VudC5DdXN0b21KZW5raW5zTGFiZWxzICB8IGpvaW4gIiAiIH19PC9sYWJlbD4KICAgICAgICAgICAgICA8bm9kZVNlbGVjdG9yPgogICAgICAgICAgICAgICAge3stICRsb2NhbCA6PSBkaWN0ICJmaXJzdCIgdHJ1ZSB9fQogICAgICAgICAgICAgICAge3stIHJhbmdlICRrZXksICR2YWx1ZSA6PSAuVmFsdWVzLkFnZW50Lk5vZGVTZWxlY3RvciB9fQogICAgICAgICAgICAgICAgICB7ey0gaWYgbm90ICRsb2NhbC5maXJzdCB9fSx7ey0gZW5kIH19CiAgICAgICAgICAgICAgICAgIHt7LSAka2V5IH19PXt7ICR2YWx1ZSB9fQogICAgICAgICAgICAgICAgICB7ey0gJF8gOj0gc2V0ICRsb2NhbCAiZmlyc3QiIGZhbHNlIH19CiAgICAgICAgICAgICAgICB7ey0gZW5kIH19PC9ub2RlU2VsZWN0b3I+CiAgICAgICAgICAgICAgICA8bm9kZVVzYWdlTW9kZT5OT1JNQUw8L25vZGVVc2FnZU1vZGU+CiAgICAgICAgICAgICAgPHZvbHVtZXM+Cnt7LSByYW5nZSAkaW5kZXgsICR2b2x1bWUgOj0gLlZhbHVlcy5BZ2VudC52b2x1bWVzIH19CiAgICAgICAgICAgICAgICA8b3JnLmNzYW5jaGV6LmplbmtpbnMucGx1Z2lucy5rdWJlcm5ldGVzLnZvbHVtZXMue3sgJHZvbHVtZS50eXBlIH19Vm9sdW1lPgp7ey0gcmFuZ2UgJGtleSwgJHZhbHVlIDo9ICR2b2x1bWUgfX17ey0gaWYgbm90IChlcSAka2V5ICJ0eXBlIikgfX0KICAgICAgICAgICAgICAgICAgPHt7ICRrZXkgfX0+e3sgJHZhbHVlIH19PC97eyAka2V5IH19Pgp7ey0gZW5kIH19e3stIGVuZCB9fQogICAgICAgICAgICAgICAgPC9vcmcuY3NhbmNoZXouamVua2lucy5wbHVnaW5zLmt1YmVybmV0ZXMudm9sdW1lcy57eyAkdm9sdW1lLnR5cGUgfX1Wb2x1bWU+Cnt7LSBlbmQgfX0KICAgICAgICAgICAgICA8L3ZvbHVtZXM+CiAgICAgICAgICAgICAgPGNvbnRhaW5lcnM+CiAgICAgICAgICAgICAgICA8b3JnLmNzYW5jaGV6LmplbmtpbnMucGx1Z2lucy5rdWJlcm5ldGVzLkNvbnRhaW5lclRlbXBsYXRlPgogICAgICAgICAgICAgICAgICA8bmFtZT5qbmxwPC9uYW1lPgogICAgICAgICAgICAgICAgICA8aW1hZ2U+e3sgLlZhbHVlcy5BZ2VudC5JbWFnZSB9fTp7eyAuVmFsdWVzLkFnZW50LkltYWdlVGFnIH19PC9pbWFnZT4Ke3stIGlmIC5WYWx1ZXMuQWdlbnQuUHJpdmlsZWdlZCB9fQogICAgICAgICAgICAgICAgICA8cHJpdmlsZWdlZD50cnVlPC9wcml2aWxlZ2VkPgp7ey0gZWxzZSB9fQogICAgICAgICAgICAgICAgICA8cHJpdmlsZWdlZD5mYWxzZTwvcHJpdmlsZWdlZD4Ke3stIGVuZCB9fQogICAgICAgICAgICAgICAgICA8YWx3YXlzUHVsbEltYWdlPnt7IC5WYWx1ZXMuQWdlbnQuQWx3YXlzUHVsbEltYWdlIH19PC9hbHdheXNQdWxsSW1hZ2U+CiAgICAgICAgICAgICAgICAgIDx3b3JraW5nRGlyPi9ob21lL2plbmtpbnM8L3dvcmtpbmdEaXI+CiAgICAgICAgICAgICAgICAgIDxjb21tYW5kPjwvY29tbWFuZD4KICAgICAgICAgICAgICAgICAgPGFyZ3M+JHtjb21wdXRlci5qbmxwbWFjfSAke2NvbXB1dGVyLm5hbWV9PC9hcmdzPgogICAgICAgICAgICAgICAgICA8dHR5RW5hYmxlZD5mYWxzZTwvdHR5RW5hYmxlZD4KICAgICAgICAgICAgICAgICAgIyBSZXNvdXJjZXMgY29uZmlndXJhdGlvbiBpcyBhIGxpdHRsZSBoYWNreS4gVGhpcyB3YXMgdG8gcHJldmVudCBicmVha2luZwogICAgICAgICAgICAgICAgICAjIGNoYW5nZXMsIGFuZCBzaG91bGQgYmUgY2xlYW5uZWQgdXAgaW4gdGhlIGZ1dHVyZSBvbmNlIGV2ZXJ5Ym9keSBoYWQKICAgICAgICAgICAgICAgICAgIyBlbm91Z2ggdGltZSB0byBtaWdyYXRlLgogICAgICAgICAgICAgICAgICA8cmVzb3VyY2VSZXF1ZXN0Q3B1Pnt7LlZhbHVlcy5BZ2VudC5DcHUgfCBkZWZhdWx0IC5WYWx1ZXMuQWdlbnQucmVzb3VyY2VzLnJlcXVlc3RzLmNwdX19PC9yZXNvdXJjZVJlcXVlc3RDcHU+CiAgICAgICAgICAgICAgICAgIDxyZXNvdXJjZVJlcXVlc3RNZW1vcnk+e3suVmFsdWVzLkFnZW50Lk1lbW9yeSB8IGRlZmF1bHQgLlZhbHVlcy5BZ2VudC5yZXNvdXJjZXMucmVxdWVzdHMubWVtb3J5fX08L3Jlc291cmNlUmVxdWVzdE1lbW9yeT4KICAgICAgICAgICAgICAgICAgPHJlc291cmNlTGltaXRDcHU+e3suVmFsdWVzLkFnZW50LkNwdSB8IGRlZmF1bHQgLlZhbHVlcy5BZ2VudC5yZXNvdXJjZXMubGltaXRzLmNwdX19PC9yZXNvdXJjZUxpbWl0Q3B1PgogICAgICAgICAgICAgICAgICA8cmVzb3VyY2VMaW1pdE1lbW9yeT57ey5WYWx1ZXMuQWdlbnQuTWVtb3J5IHwgZGVmYXVsdCAuVmFsdWVzLkFnZW50LnJlc291cmNlcy5saW1pdHMubWVtb3J5fX08L3Jlc291cmNlTGltaXRNZW1vcnk+CiAgICAgICAgICAgICAgICAgIDxlbnZWYXJzPgogICAgICAgICAgICAgICAgICAgIDxvcmcuY3NhbmNoZXouamVua2lucy5wbHVnaW5zLmt1YmVybmV0ZXMuQ29udGFpbmVyRW52VmFyPgogICAgICAgICAgICAgICAgICAgICAgPGtleT5KRU5LSU5TX1VSTDwva2V5Pgp7ey0gaWYgLlZhbHVlcy5NYXN0ZXIuU2xhdmVLdWJlcm5ldGVzTmFtZXNwYWNlIH19CiAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+aHR0cDovL3t7IHRlbXBsYXRlICJqZW5raW5zLmZ1bGxuYW1lIiAuIH19Lnt7LlJlbGVhc2UuTmFtZXNwYWNlfX06e3suVmFsdWVzLk1hc3Rlci5TZXJ2aWNlUG9ydH19e3sgZGVmYXVsdCAiIiAuVmFsdWVzLk1hc3Rlci5KZW5raW5zVXJpUHJlZml4IH19PC92YWx1ZT4Ke3stIGVsc2UgfX0KICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT5odHRwOi8ve3sgdGVtcGxhdGUgImplbmtpbnMuZnVsbG5hbWUiIC4gfX06e3suVmFsdWVzLk1hc3Rlci5TZXJ2aWNlUG9ydH19e3sgZGVmYXVsdCAiIiAuVmFsdWVzLk1hc3Rlci5KZW5raW5zVXJpUHJlZml4IH19PC92YWx1ZT4Ke3stIGVuZCB9fQogICAgICAgICAgICAgICAgICAgIDwvb3JnLmNzYW5jaGV6LmplbmtpbnMucGx1Z2lucy5rdWJlcm5ldGVzLkNvbnRhaW5lckVudlZhcj4KICAgICAgICAgICAgICAgICAgPC9lbnZWYXJzPgogICAgICAgICAgICAgICAgPC9vcmcuY3NhbmNoZXouamVua2lucy5wbHVnaW5zLmt1YmVybmV0ZXMuQ29udGFpbmVyVGVtcGxhdGU+CiAgICAgICAgICAgICAgPC9jb250YWluZXJzPgogICAgICAgICAgICAgIDxlbnZWYXJzLz4KICAgICAgICAgICAgICA8YW5ub3RhdGlvbnMvPgp7ey0gaWYgLlZhbHVlcy5BZ2VudC5JbWFnZVB1bGxTZWNyZXQgfX0KICAgICAgICAgICAgICA8aW1hZ2VQdWxsU2VjcmV0cz4KICAgICAgICAgICAgICAgIDxvcmcuY3NhbmNoZXouamVua2lucy5wbHVnaW5zLmt1YmVybmV0ZXMuUG9kSW1hZ2VQdWxsU2VjcmV0PgogICAgICAgICAgICAgICAgICA8bmFtZT57eyAuVmFsdWVzLkFnZW50LkltYWdlUHVsbFNlY3JldCB9fTwvbmFtZT4KICAgICAgICAgICAgICAgIDwvb3JnLmNzYW5jaGV6LmplbmtpbnMucGx1Z2lucy5rdWJlcm5ldGVzLlBvZEltYWdlUHVsbFNlY3JldD4KICAgICAgICAgICAgICA8L2ltYWdlUHVsbFNlY3JldHM+Cnt7LSBlbHNlIH19CiAgICAgICAgICAgICAgPGltYWdlUHVsbFNlY3JldHMvPgp7ey0gZW5kIH19CiAgICAgICAgICAgICAgPG5vZGVQcm9wZXJ0aWVzLz4KICAgICAgICAgICAgICA8cG9kUmV0ZW50aW9uIGNsYXNzPSJvcmcuY3NhbmNoZXouamVua2lucy5wbHVnaW5zLmt1YmVybmV0ZXMucG9kLnJldGVudGlvbi5EZWZhdWx0Ii8+CiAgICAgICAgICAgIDwvb3JnLmNzYW5jaGV6LmplbmtpbnMucGx1Z2lucy5rdWJlcm5ldGVzLlBvZFRlbXBsYXRlPgp7ey0gZW5kIC19fQogICAgICAgICAgPC90ZW1wbGF0ZXM+CiAgICAgICAgICA8c2VydmVyVXJsPmh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0PC9zZXJ2ZXJVcmw+CiAgICAgICAgICA8c2tpcFRsc1ZlcmlmeT5mYWxzZTwvc2tpcFRsc1ZlcmlmeT4KICAgICAgICAgIDxuYW1lc3BhY2U+e3sgZGVmYXVsdCAuUmVsZWFzZS5OYW1lc3BhY2UgLlZhbHVlcy5NYXN0ZXIuU2xhdmVLdWJlcm5ldGVzTmFtZXNwYWNlIH19PC9uYW1lc3BhY2U+Cnt7LSBpZiAuVmFsdWVzLk1hc3Rlci5TbGF2ZUt1YmVybmV0ZXNOYW1lc3BhY2UgfX0KICAgICAgICAgIDxqZW5raW5zVXJsPmh0dHA6Ly97eyB0ZW1wbGF0ZSAiamVua2lucy5mdWxsbmFtZSIgLiB9fS57ey5SZWxlYXNlLk5hbWVzcGFjZX19Ont7LlZhbHVlcy5NYXN0ZXIuU2VydmljZVBvcnR9fXt7IGRlZmF1bHQgIiIgLlZhbHVlcy5NYXN0ZXIuSmVua2luc1VyaVByZWZpeCB9fTwvamVua2luc1VybD4KICAgICAgICAgIDxqZW5raW5zVHVubmVsPnt7IHRlbXBsYXRlICJqZW5raW5zLmZ1bGxuYW1lIiAuIH19LWFnZW50Lnt7LlJlbGVhc2UuTmFtZXNwYWNlfX06e3sgLlZhbHVlcy5NYXN0ZXIuU2xhdmVMaXN0ZW5lclBvcnQgfX08L2plbmtpbnNUdW5uZWw+Cnt7LSBlbHNlIH19CiAgICAgICAgICA8amVua2luc1VybD5odHRwOi8ve3sgdGVtcGxhdGUgImplbmtpbnMuZnVsbG5hbWUiIC4gfX06e3suVmFsdWVzLk1hc3Rlci5TZXJ2aWNlUG9ydH19e3sgZGVmYXVsdCAiIiAuVmFsdWVzLk1hc3Rlci5KZW5raW5zVXJpUHJlZml4IH19PC9qZW5raW5zVXJsPgogICAgICAgICAgPGplbmtpbnNUdW5uZWw+e3sgdGVtcGxhdGUgImplbmtpbnMuZnVsbG5hbWUiIC4gfX0tYWdlbnQ6e3sgLlZhbHVlcy5NYXN0ZXIuU2xhdmVMaXN0ZW5lclBvcnQgfX08L2plbmtpbnNUdW5uZWw+Cnt7LSBlbmQgfX0KICAgICAgICAgIDxjb250YWluZXJDYXA+MTA8L2NvbnRhaW5lckNhcD4KICAgICAgICAgIDxyZXRlbnRpb25UaW1lb3V0PjU8L3JldGVudGlvblRpbWVvdXQ+CiAgICAgICAgICA8Y29ubmVjdFRpbWVvdXQ+MDwvY29ubmVjdFRpbWVvdXQ+CiAgICAgICAgICA8cmVhZFRpbWVvdXQ+MDwvcmVhZFRpbWVvdXQ+CiAgICAgICAgICA8cG9kUmV0ZW50aW9uIGNsYXNzPSJvcmcuY3NhbmNoZXouamVua2lucy5wbHVnaW5zLmt1YmVybmV0ZXMucG9kLnJldGVudGlvbi57eyAuVmFsdWVzLkFnZW50LlBvZFJldGVudGlvbiB9fSIvPgogICAgICAgIDwvb3JnLmNzYW5jaGV6LmplbmtpbnMucGx1Z2lucy5rdWJlcm5ldGVzLkt1YmVybmV0ZXNDbG91ZD4KICAgICAgPC9jbG91ZHM+CiAgICAgIDxxdWlldFBlcmlvZD41PC9xdWlldFBlcmlvZD4KICAgICAgPHNjbUNoZWNrb3V0UmV0cnlDb3VudD4wPC9zY21DaGVja291dFJldHJ5Q291bnQ+CiAgICAgIDx2aWV3cz4KICAgICAgICA8aHVkc29uLm1vZGVsLkFsbFZpZXc+CiAgICAgICAgICA8b3duZXIgY2xhc3M9Imh1ZHNvbiIgcmVmZXJlbmNlPSIuLi8uLi8uLiIvPgogICAgICAgICAgPG5hbWU+QWxsPC9uYW1lPgogICAgICAgICAgPGZpbHRlckV4ZWN1dG9ycz5mYWxzZTwvZmlsdGVyRXhlY3V0b3JzPgogICAgICAgICAgPGZpbHRlclF1ZXVlPmZhbHNlPC9maWx0ZXJRdWV1ZT4KICAgICAgICAgIDxwcm9wZXJ0aWVzIGNsYXNzPSJodWRzb24ubW9kZWwuVmlldyRQcm9wZXJ0eUxpc3QiLz4KICAgICAgICA8L2h1ZHNvbi5tb2RlbC5BbGxWaWV3PgogICAgICA8L3ZpZXdzPgogICAgICA8cHJpbWFyeVZpZXc+QWxsPC9wcmltYXJ5Vmlldz4KICAgICAgPHNsYXZlQWdlbnRQb3J0Pnt7IC5WYWx1ZXMuTWFzdGVyLlNsYXZlTGlzdGVuZXJQb3J0IH19PC9zbGF2ZUFnZW50UG9ydD4KICAgICAgPGRpc2FibGVkQWdlbnRQcm90b2NvbHM+Cnt7LSByYW5nZSAuVmFsdWVzLk1hc3Rlci5EaXNhYmxlZEFnZW50UHJvdG9jb2xzIH19CiAgICAgICAgPHN0cmluZz57eyAuIH19PC9zdHJpbmc+Cnt7LSBlbmQgfX0KICAgICAgPC9kaXNhYmxlZEFnZW50UHJvdG9jb2xzPgogICAgICA8bGFiZWw+PC9sYWJlbD4Ke3stIGlmIC5WYWx1ZXMuTWFzdGVyLkNTUkYuRGVmYXVsdENydW1iSXNzdWVyLkVuYWJsZWQgfX0KICAgICAgPGNydW1iSXNzdWVyIGNsYXNzPSJodWRzb24uc2VjdXJpdHkuY3NyZi5EZWZhdWx0Q3J1bWJJc3N1ZXIiPgp7ey0gaWYgLlZhbHVlcy5NYXN0ZXIuQ1NSRi5EZWZhdWx0Q3J1bWJJc3N1ZXIuUHJveHlDb21wYXRhYmlsaXR5IH19CiAgICAgICAgPGV4Y2x1ZGVDbGllbnRJUEZyb21DcnVtYj50cnVlPC9leGNsdWRlQ2xpZW50SVBGcm9tQ3J1bWI+Cnt7LSBlbmQgfX0KICAgICAgPC9jcnVtYklzc3Vlcj4Ke3stIGVuZCB9fQogICAgICA8bm9kZVByb3BlcnRpZXMvPgogICAgICA8Z2xvYmFsTm9kZVByb3BlcnRpZXMvPgogICAgICA8bm9Vc2FnZVN0YXRpc3RpY3M+dHJ1ZTwvbm9Vc2FnZVN0YXRpc3RpY3M+CiAgICA8L2h1ZHNvbj4Ke3stIGlmIC5WYWx1ZXMuTWFzdGVyLlNjcmlwdEFwcHJvdmFsIH19CiAgc2NyaXB0YXBwcm92YWwueG1sOiB8LQogICAgPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4KICAgIDxzY3JpcHRBcHByb3ZhbCBwbHVnaW49InNjcmlwdC1zZWN1cml0eUAxLjI3Ij4KICAgICAgPGFwcHJvdmVkU2NyaXB0SGFzaGVzLz4KICAgICAgPGFwcHJvdmVkU2lnbmF0dXJlcz4Ke3stIHJhbmdlICRrZXksICR2YWwgOj0gLlZhbHVlcy5NYXN0ZXIuU2NyaXB0QXBwcm92YWwgfX0KICAgICAgICA8c3RyaW5nPnt7ICR2YWwgfX08L3N0cmluZz4Ke3stIGVuZCB9fQogICAgICA8L2FwcHJvdmVkU2lnbmF0dXJlcz4KICAgICAgPGFjbEFwcHJvdmVkU2lnbmF0dXJlcy8+CiAgICAgIDxhcHByb3ZlZENsYXNzcGF0aEVudHJpZXMvPgogICAgICA8cGVuZGluZ1NjcmlwdHMvPgogICAgICA8cGVuZGluZ1NpZ25hdHVyZXMvPgogICAgICA8cGVuZGluZ0NsYXNzcGF0aEVudHJpZXMvPgogICAgPC9zY3JpcHRBcHByb3ZhbD4Ke3stIGVuZCB9fQogIGplbmtpbnMubW9kZWwuSmVua2luc0xvY2F0aW9uQ29uZmlndXJhdGlvbi54bWw6IHwtCiAgICA8P3htbCB2ZXJzaW9uPScxLjEnIGVuY29kaW5nPSdVVEYtOCc/PgogICAgPGplbmtpbnMubW9kZWwuSmVua2luc0xvY2F0aW9uQ29uZmlndXJhdGlvbj4KICAgICAgPGFkbWluQWRkcmVzcz57eyBkZWZhdWx0ICIiIC5WYWx1ZXMuTWFzdGVyLkplbmtpbnNBZG1pbkVtYWlsIH19PC9hZG1pbkFkZHJlc3M+Cnt7LSBpZiAuVmFsdWVzLk1hc3Rlci5Ib3N0TmFtZSB9fQp7ey0gaWYgLlZhbHVlcy5NYXN0ZXIuSW5ncmVzcy5UTFMgfX0KICAgICAgPGplbmtpbnNVcmw+aHR0cHM6Ly97eyAuVmFsdWVzLk1hc3Rlci5Ib3N0TmFtZSB9fXt7IGRlZmF1bHQgIiIgLlZhbHVlcy5NYXN0ZXIuSmVua2luc1VyaVByZWZpeCB9fTwvamVua2luc1VybD4Ke3stIGVsc2UgfX0KICAgICAgPGplbmtpbnNVcmw+aHR0cDovL3t7IC5WYWx1ZXMuTWFzdGVyLkhvc3ROYW1lIH19e3sgZGVmYXVsdCAiIiAuVmFsdWVzLk1hc3Rlci5KZW5raW5zVXJpUHJlZml4IH19PC9qZW5raW5zVXJsPgp7ey0gZW5kIH19Cnt7LSBlbHNlIH19CiAgICAgIDxqZW5raW5zVXJsPmh0dHA6Ly97eyB0ZW1wbGF0ZSAiamVua2lucy5mdWxsbmFtZSIgLiB9fTp7ey5WYWx1ZXMuTWFzdGVyLlNlcnZpY2VQb3J0fX17eyBkZWZhdWx0ICIiIC5WYWx1ZXMuTWFzdGVyLkplbmtpbnNVcmlQcmVmaXggfX08L2plbmtpbnNVcmw+Cnt7LSBlbmR9fQogICAgPC9qZW5raW5zLm1vZGVsLkplbmtpbnNMb2NhdGlvbkNvbmZpZ3VyYXRpb24+CiAgamVua2lucy5DTEkueG1sOiB8LQogICAgPD94bWwgdmVyc2lvbj0nMS4xJyBlbmNvZGluZz0nVVRGLTgnPz4KICAgIDxqZW5raW5zLkNMST4Ke3stIGlmIC5WYWx1ZXMuTWFzdGVyLkNMSSB9fQogICAgICA8ZW5hYmxlZD50cnVlPC9lbmFibGVkPgp7ey0gZWxzZSB9fQogICAgICA8ZW5hYmxlZD5mYWxzZTwvZW5hYmxlZD4Ke3stIGVuZCB9fQogICAgPC9qZW5raW5zLkNMST4KICBhcHBseV9jb25maWcuc2g6IHwtCiAgICBta2RpciAtcCAvdXNyL3NoYXJlL2plbmtpbnMvcmVmL3NlY3JldHMvOwogICAgZWNobyAiZmFsc2UiID4gL3Vzci9zaGFyZS9qZW5raW5zL3JlZi9zZWNyZXRzL3NsYXZlLXRvLW1hc3Rlci1zZWN1cml0eS1raWxsLXN3aXRjaDsKe3stIGlmIC5WYWx1ZXMuTWFzdGVyLk92ZXJ3cml0ZUNvbmZpZyB9fQogICAgY3AgL3Zhci9qZW5raW5zX2NvbmZpZy9jb25maWcueG1sIC92YXIvamVua2luc19ob21lOwogICAgY3AgL3Zhci9qZW5raW5zX2NvbmZpZy9qZW5raW5zLkNMSS54bWwgL3Zhci9qZW5raW5zX2hvbWU7CiAgICBjcCAvdmFyL2plbmtpbnNfY29uZmlnL2plbmtpbnMubW9kZWwuSmVua2luc0xvY2F0aW9uQ29uZmlndXJhdGlvbi54bWwgL3Zhci9qZW5raW5zX2hvbWU7Cnt7LSBlbHNlIH19CiAgICBjcCAtLW5vLWNsb2JiZXIgL3Zhci9qZW5raW5zX2NvbmZpZy9jb25maWcueG1sIC92YXIvamVua2luc19ob21lOwogICAgY3AgLS1uby1jbG9iYmVyIC92YXIvamVua2luc19jb25maWcvamVua2lucy5DTEkueG1sIC92YXIvamVua2luc19ob21lOwogICAgY3AgLS1uby1jbG9iYmVyIC92YXIvamVua2luc19jb25maWcvamVua2lucy5tb2RlbC5KZW5raW5zTG9jYXRpb25Db25maWd1cmF0aW9uLnhtbCAvdmFyL2plbmtpbnNfaG9tZTsKe3stIGVuZCB9fQp7ey0gaWYgLlZhbHVlcy5NYXN0ZXIuSW5zdGFsbFBsdWdpbnMgfX0KICAgICMgSW5zdGFsbCBtaXNzaW5nIHBsdWdpbnMKICAgIGNwIC92YXIvamVua2luc19jb25maWcvcGx1Z2lucy50eHQgL3Zhci9qZW5raW5zX2hvbWU7CiAgICBybSAtcmYgL3Vzci9zaGFyZS9qZW5raW5zL3JlZi9wbHVnaW5zLyoubG9jawogICAgL3Vzci9sb2NhbC9iaW4vaW5zdGFsbC1wbHVnaW5zLnNoIGBlY2hvICQoY2F0IC92YXIvamVua2luc19ob21lL3BsdWdpbnMudHh0KWA7CiAgICAjIENvcHkgcGx1Z2lucyB0byBzaGFyZWQgdm9sdW1lCiAgICBjcCAtbiAvdXNyL3NoYXJlL2plbmtpbnMvcmVmL3BsdWdpbnMvKiAvdmFyL2plbmtpbnNfcGx1Z2luczsKe3stIGVuZCB9fQp7ey0gaWYgLlZhbHVlcy5NYXN0ZXIuU2NyaXB0QXBwcm92YWwgfX0KICAgIGNwIC1uIC92YXIvamVua2luc19jb25maWcvc2NyaXB0YXBwcm92YWwueG1sIC92YXIvamVua2luc19ob21lL3NjcmlwdEFwcHJvdmFsLnhtbDsKe3stIGVuZCB9fQp7ey0gaWYgLlZhbHVlcy5NYXN0ZXIuSW5pdFNjcmlwdHMgfX0KICAgIG1rZGlyIC1wIC92YXIvamVua2luc19ob21lL2luaXQuZ3Jvb3Z5LmQvOwogICAgY3AgLW4gL3Zhci9qZW5raW5zX2NvbmZpZy8qLmdyb292eSAvdmFyL2plbmtpbnNfaG9tZS9pbml0Lmdyb292eS5kLwp7ey0gZW5kIH19Cnt7LSBpZiAuVmFsdWVzLk1hc3Rlci5DcmVkZW50aWFsc1htbFNlY3JldCB9fQogICAgY3AgLW4gL3Zhci9qZW5raW5zX2NyZWRlbnRpYWxzL2NyZWRlbnRpYWxzLnhtbCAvdmFyL2plbmtpbnNfaG9tZTsKe3stIGVuZCB9fQp7ey0gaWYgLlZhbHVlcy5NYXN0ZXIuU2VjcmV0c0ZpbGVzU2VjcmV0IH19CiAgICBjcCAtbiAvdmFyL2plbmtpbnNfc2VjcmV0cy8qIC91c3Ivc2hhcmUvamVua2lucy9yZWYvc2VjcmV0czsKe3stIGVuZCB9fQp7ey0gaWYgLlZhbHVlcy5NYXN0ZXIuSm9icyB9fQogICAgZm9yIGpvYiBpbiAkKGxzIC92YXIvamVua2luc19qb2JzKTsgZG8KICAgICAgbWtkaXIgLXAgL3Zhci9qZW5raW5zX2hvbWUvam9icy8kam9iCiAgICAgIGNwIC1uIC92YXIvamVua2luc19qb2JzLyRqb2IgL3Zhci9qZW5raW5zX2hvbWUvam9icy8kam9iL2NvbmZpZy54bWwKICAgIGRvbmUKe3stIGVuZCB9fQp7ey0gcmFuZ2UgJGtleSwgJHZhbCA6PSAuVmFsdWVzLk1hc3Rlci5Jbml0U2NyaXB0cyB9fQogIGluaXR7eyAka2V5IH19Lmdyb292eTogfC0Ke3sgJHZhbCB8IGluZGVudCA0IH19Cnt7LSBlbmQgfX0KICBwbHVnaW5zLnR4dDogfC0Ke3stIGlmIC5WYWx1ZXMuTWFzdGVyLkluc3RhbGxQbHVnaW5zIH19Cnt7LSByYW5nZSAkaW5kZXgsICR2YWwgOj0gLlZhbHVlcy5NYXN0ZXIuSW5zdGFsbFBsdWdpbnMgfX0Ke3sgJHZhbCB8IGluZGVudCA0IH19Cnt7LSBlbmQgfX0Ke3stIGVuZCB9fQp7eyBlbHNlIH19Cnt7IGluY2x1ZGUgIm92ZXJyaWRlX2NvbmZpZ19tYXAiIC4gfX0Ke3stIGVuZCAtfX0K"
    64          },
    65          {
    66            "filePath": "templates/home-pvc.yaml",
    67            "fileContents": "e3stIGlmIGFuZCAuVmFsdWVzLlBlcnNpc3RlbmNlLkVuYWJsZWQgKG5vdCAuVmFsdWVzLlBlcnNpc3RlbmNlLkV4aXN0aW5nQ2xhaW0pIC19fQpraW5kOiBQZXJzaXN0ZW50Vm9sdW1lQ2xhaW0KYXBpVmVyc2lvbjogdjEKbWV0YWRhdGE6Cnt7LSBpZiAuVmFsdWVzLlBlcnNpc3RlbmNlLkFubm90YXRpb25zIH19CiAgYW5ub3RhdGlvbnM6Cnt7IHRvWWFtbCAuVmFsdWVzLlBlcnNpc3RlbmNlLkFubm90YXRpb25zIHwgaW5kZW50IDQgfX0Ke3stIGVuZCB9fQogIG5hbWU6IHt7IHRlbXBsYXRlICJqZW5raW5zLmZ1bGxuYW1lIiAuIH19CiAgbGFiZWxzOgogICAgYXBwOiB7eyB0ZW1wbGF0ZSAiamVua2lucy5mdWxsbmFtZSIgLiB9fQogICAgY2hhcnQ6ICJ7eyAuQ2hhcnQuTmFtZSB9fS17eyAuQ2hhcnQuVmVyc2lvbiB9fSIKICAgIHJlbGVhc2U6ICJ7eyAuUmVsZWFzZS5OYW1lIH19IgogICAgaGVyaXRhZ2U6ICJ7eyAuUmVsZWFzZS5TZXJ2aWNlIH19IgpzcGVjOgogIGFjY2Vzc01vZGVzOgogICAgLSB7eyAuVmFsdWVzLlBlcnNpc3RlbmNlLkFjY2Vzc01vZGUgfCBxdW90ZSB9fQogIHJlc291cmNlczoKICAgIHJlcXVlc3RzOgogICAgICBzdG9yYWdlOiB7eyAuVmFsdWVzLlBlcnNpc3RlbmNlLlNpemUgfCBxdW90ZSB9fQp7ey0gaWYgLlZhbHVlcy5QZXJzaXN0ZW5jZS5TdG9yYWdlQ2xhc3MgfX0Ke3stIGlmIChlcSAiLSIgLlZhbHVlcy5QZXJzaXN0ZW5jZS5TdG9yYWdlQ2xhc3MpIH19CiAgc3RvcmFnZUNsYXNzTmFtZTogIiIKe3stIGVsc2UgfX0KICBzdG9yYWdlQ2xhc3NOYW1lOiAie3sgLlZhbHVlcy5QZXJzaXN0ZW5jZS5TdG9yYWdlQ2xhc3MgfX0iCnt7LSBlbmQgfX0Ke3stIGVuZCB9fQp7ey0gZW5kIH19Cg=="
    68          },
    69          {
    70            "filePath": "templates/jenkins-agent-svc.yaml",
    71            "fileContents": "YXBpVmVyc2lvbjogdjEKa2luZDogU2VydmljZQptZXRhZGF0YToKICBuYW1lOiB7eyB0ZW1wbGF0ZSAiamVua2lucy5mdWxsbmFtZSIgLiB9fS1hZ2VudAogIGxhYmVsczoKICAgIGFwcDoge3sgdGVtcGxhdGUgImplbmtpbnMuZnVsbG5hbWUiIC4gfX0KICAgIGNoYXJ0OiAie3sgLkNoYXJ0Lk5hbWUgfX0te3sgLkNoYXJ0LlZlcnNpb24gfX0iCiAgICBjb21wb25lbnQ6ICJ7eyAuUmVsZWFzZS5OYW1lIH19LXt7IC5WYWx1ZXMuTWFzdGVyLkNvbXBvbmVudCB9fSIKe3stIGlmIC5WYWx1ZXMuTWFzdGVyLlNsYXZlTGlzdGVuZXJTZXJ2aWNlQW5ub3RhdGlvbnMgfX0KICBhbm5vdGF0aW9uczoKe3sgdG9ZYW1sIC5WYWx1ZXMuTWFzdGVyLlNsYXZlTGlzdGVuZXJTZXJ2aWNlQW5ub3RhdGlvbnMgfCBpbmRlbnQgNCB9fQp7ey0gZW5kIH19CnNwZWM6CiAgcG9ydHM6CiAgICAtIHBvcnQ6IHt7IC5WYWx1ZXMuTWFzdGVyLlNsYXZlTGlzdGVuZXJQb3J0IH19CiAgICAgIHRhcmdldFBvcnQ6IHt7IC5WYWx1ZXMuTWFzdGVyLlNsYXZlTGlzdGVuZXJQb3J0IH19CiAgICAgIHt7IGlmIChhbmQgKGVxIC5WYWx1ZXMuTWFzdGVyLlNsYXZlTGlzdGVuZXJTZXJ2aWNlVHlwZSAiTm9kZVBvcnQiKSAobm90IChlbXB0eSAuVmFsdWVzLk1hc3Rlci5TbGF2ZUxpc3RlbmVyUG9ydCkpKSB9fQogICAgICBub2RlUG9ydDoge3suVmFsdWVzLk1hc3Rlci5TbGF2ZUxpc3RlbmVyUG9ydH19CiAgICAgIHt7ZW5kfX0KICAgICAgbmFtZTogc2xhdmVsaXN0ZW5lcgogIHNlbGVjdG9yOgogICAgY29tcG9uZW50OiAie3sgLlJlbGVhc2UuTmFtZSB9fS17eyAuVmFsdWVzLk1hc3Rlci5Db21wb25lbnQgfX0iCiAgdHlwZToge3sgLlZhbHVlcy5NYXN0ZXIuU2xhdmVMaXN0ZW5lclNlcnZpY2VUeXBlIH19Cg=="
    72          },
    73          {
    74            "filePath": "templates/jenkins-master-deployment.yaml",
    75            "fileContents": "e3stIGlmIC5DYXBhYmlsaXRpZXMuQVBJVmVyc2lvbnMuSGFzICJhcHBzL3YxIiB9fQphcGlWZXJzaW9uOiBhcHBzL3YxCnt7LSBlbHNlIH19CmFwaVZlcnNpb246IGFwcHMvdjFiZXRhMQp7ey0gZW5kIH19CmtpbmQ6IERlcGxveW1lbnQKbWV0YWRhdGE6CiAgbmFtZToge3sgdGVtcGxhdGUgImplbmtpbnMuZnVsbG5hbWUiIC4gfX0KICBsYWJlbHM6CiAgICBoZXJpdGFnZToge3sgLlJlbGVhc2UuU2VydmljZSB8IHF1b3RlIH19CiAgICByZWxlYXNlOiB7eyAuUmVsZWFzZS5OYW1lIHwgcXVvdGUgfX0KICAgIGNoYXJ0OiAie3sgLkNoYXJ0Lk5hbWUgfX0te3sgLkNoYXJ0LlZlcnNpb24gfX0iCiAgICBjb21wb25lbnQ6ICJ7eyAuUmVsZWFzZS5OYW1lIH19LXt7IC5WYWx1ZXMuTWFzdGVyLk5hbWUgfX0iCnNwZWM6CiAgcmVwbGljYXM6IDEKICBzdHJhdGVneToKICAgIHR5cGU6IHt7IGlmIC5WYWx1ZXMuUGVyc2lzdGVuY2UuRW5hYmxlZCB9fVJlY3JlYXRle3sgZWxzZSB9fVJvbGxpbmdVcGRhdGV7eyBlbmQgfX0KICBzZWxlY3RvcjoKICAgIG1hdGNoTGFiZWxzOgogICAgICBjb21wb25lbnQ6ICJ7eyAuUmVsZWFzZS5OYW1lIH19LXt7IC5WYWx1ZXMuTWFzdGVyLkNvbXBvbmVudCB9fSIKICB0ZW1wbGF0ZToKICAgIG1ldGFkYXRhOgogICAgICBsYWJlbHM6CiAgICAgICAgYXBwOiB7eyB0ZW1wbGF0ZSAiamVua2lucy5mdWxsbmFtZSIgLiB9fQogICAgICAgIGhlcml0YWdlOiB7eyAuUmVsZWFzZS5TZXJ2aWNlIHwgcXVvdGUgfX0KICAgICAgICByZWxlYXNlOiB7eyAuUmVsZWFzZS5OYW1lIHwgcXVvdGUgfX0KICAgICAgICBjaGFydDogInt7IC5DaGFydC5OYW1lIH19LXt7IC5DaGFydC5WZXJzaW9uIH19IgogICAgICAgIGNvbXBvbmVudDogInt7IC5SZWxlYXNlLk5hbWUgfX0te3sgLlZhbHVlcy5NYXN0ZXIuQ29tcG9uZW50IH19IgogICAgICBhbm5vdGF0aW9uczoKICAgICAgICBjaGVja3N1bS9jb25maWc6IHt7IGluY2x1ZGUgKHByaW50ICQuVGVtcGxhdGUuQmFzZVBhdGggIi9jb25maWcueWFtbCIpIC4gfCBzaGEyNTZzdW0gfX0KICAgICAgICB7ey0gaWYgLlZhbHVlcy5NYXN0ZXIuUG9kQW5ub3RhdGlvbnMgfX0Ke3sgdG9ZYW1sIC5WYWx1ZXMuTWFzdGVyLlBvZEFubm90YXRpb25zIHwgaW5kZW50IDggfX0KICAgICAgICB7ey0gZW5kIH19CiAgICBzcGVjOgogICAgICB7ey0gaWYgLlZhbHVlcy5NYXN0ZXIuTm9kZVNlbGVjdG9yIH19CiAgICAgIG5vZGVTZWxlY3RvcjoKe3sgdG9ZYW1sIC5WYWx1ZXMuTWFzdGVyLk5vZGVTZWxlY3RvciB8IGluZGVudCA4IH19CiAgICAgIHt7LSBlbmQgfX0KICAgICAge3stIGlmIC5WYWx1ZXMuTWFzdGVyLlRvbGVyYXRpb25zIH19CiAgICAgIHRvbGVyYXRpb25zOgp7eyB0b1lhbWwgLlZhbHVlcy5NYXN0ZXIuVG9sZXJhdGlvbnMgfCBpbmRlbnQgOCB9fQogICAgICB7ey0gZW5kIH19CiAgICAgIHt7LSBpZiAuVmFsdWVzLk1hc3Rlci5BZmZpbml0eSB9fQogICAgICBhZmZpbml0eToKe3sgdG9ZYW1sIC5WYWx1ZXMuTWFzdGVyLkFmZmluaXR5IHwgaW5kZW50IDggfX0KICAgICAge3stIGVuZCB9fQp7ey0gaWYgLlZhbHVlcy5NYXN0ZXIuVXNlUG9kU2VjdXJpdHlDb250ZXh0IH19CiAgICAgIHNlY3VyaXR5Q29udGV4dDoKICAgICAgICBydW5Bc1VzZXI6IHt7IGRlZmF1bHQgMCAuVmFsdWVzLk1hc3Rlci5SdW5Bc1VzZXIgfX0Ke3stIGlmIGFuZCAoLlZhbHVlcy5NYXN0ZXIuUnVuQXNVc2VyKSAoLlZhbHVlcy5NYXN0ZXIuRnNHcm91cCkgfX0Ke3stIGlmIG5vdCAoZXEgLlZhbHVlcy5NYXN0ZXIuUnVuQXNVc2VyIDAuMCkgfX0KICAgICAgICBmc0dyb3VwOiB7eyAuVmFsdWVzLk1hc3Rlci5Gc0dyb3VwIH19Cnt7LSBlbmQgfX0Ke3stIGVuZCB9fQp7ey0gZW5kIH19CiAgICAgIHNlcnZpY2VBY2NvdW50TmFtZToge3sgaWYgLlZhbHVlcy5yYmFjLmluc3RhbGwgfX17eyB0ZW1wbGF0ZSAiamVua2lucy5mdWxsbmFtZSIgLiB9fXt7IGVsc2UgfX0ie3sgLlZhbHVlcy5yYmFjLnNlcnZpY2VBY2NvdW50TmFtZSB9fSJ7eyBlbmQgfX0Ke3stIGlmIC5WYWx1ZXMuTWFzdGVyLkhvc3ROZXR3b3JraW5nIH19CiAgICAgIGhvc3ROZXR3b3JrOiB0cnVlCiAgICAgIGRuc1BvbGljeTogQ2x1c3RlckZpcnN0V2l0aEhvc3ROZXQgCnt7LSBlbmQgfX0KICAgICAgaW5pdENvbnRhaW5lcnM6CiAgICAgICAgLSBuYW1lOiAiY29weS1kZWZhdWx0LWNvbmZpZyIKICAgICAgICAgIGltYWdlOiAie3sgLlZhbHVlcy5NYXN0ZXIuSW1hZ2UgfX06e3sgLlZhbHVlcy5NYXN0ZXIuSW1hZ2VUYWcgfX0iCiAgICAgICAgICBpbWFnZVB1bGxQb2xpY3k6ICJ7eyAuVmFsdWVzLk1hc3Rlci5JbWFnZVB1bGxQb2xpY3kgfX0iCiAgICAgICAgICBjb21tYW5kOiBbICJzaCIsICIvdmFyL2plbmtpbnNfY29uZmlnL2FwcGx5X2NvbmZpZy5zaCIgXQogICAgICAgICAge3stIGlmIC5WYWx1ZXMuTWFzdGVyLkluaXRDb250YWluZXJFbnYgfX0KICAgICAgICAgIGVudjoKe3sgdG9ZYW1sIC5WYWx1ZXMuTWFzdGVyLkluaXRDb250YWluZXJFbnYgfCBpbmRlbnQgMTIgfX0KICAgICAgICAgIHt7LSBlbmQgfX0KICAgICAgICAgIHJlc291cmNlczoKe3sgdG9ZYW1sIC5WYWx1ZXMuTWFzdGVyLnJlc291cmNlcyB8IGluZGVudCAxMiB9fQogICAgICAgICAgdm9sdW1lTW91bnRzOgogICAgICAgICAgICAtCiAgICAgICAgICAgICAgbW91bnRQYXRoOiAvdmFyL2plbmtpbnNfaG9tZQogICAgICAgICAgICAgIG5hbWU6IGplbmtpbnMtaG9tZQogICAgICAgICAgICAtCiAgICAgICAgICAgICAgbW91bnRQYXRoOiAvdmFyL2plbmtpbnNfY29uZmlnCiAgICAgICAgICAgICAgbmFtZTogamVua2lucy1jb25maWcKICAgICAgICAgICAge3stIGlmIC5WYWx1ZXMuTWFzdGVyLkNyZWRlbnRpYWxzWG1sU2VjcmV0IH19CiAgICAgICAgICAgIC0KICAgICAgICAgICAgICBtb3VudFBhdGg6IC92YXIvamVua2luc19jcmVkZW50aWFscwogICAgICAgICAgICAgIG5hbWU6IGplbmtpbnMtY3JlZGVudGlhbHMKICAgICAgICAgICAgICByZWFkT25seTogdHJ1ZQogICAgICAgICAgICB7ey0gZW5kIH19CiAgICAgICAgICAgIHt7LSBpZiAuVmFsdWVzLk1hc3Rlci5TZWNyZXRzRmlsZXNTZWNyZXQgfX0KICAgICAgICAgICAgLQogICAgICAgICAgICAgIG1vdW50UGF0aDogL3Zhci9qZW5raW5zX3NlY3JldHMKICAgICAgICAgICAgICBuYW1lOiBqZW5raW5zLXNlY3JldHMKICAgICAgICAgICAgICByZWFkT25seTogdHJ1ZQogICAgICAgICAgICB7ey0gZW5kIH19CiAgICAgICAgICAgIHt7LSBpZiAuVmFsdWVzLk1hc3Rlci5Kb2JzIH19CiAgICAgICAgICAgIC0KICAgICAgICAgICAgICBtb3VudFBhdGg6IC92YXIvamVua2luc19qb2JzCiAgICAgICAgICAgICAgbmFtZTogamVua2lucy1qb2JzCiAgICAgICAgICAgICAgcmVhZE9ubHk6IHRydWUKICAgICAgICAgICAge3stIGVuZCB9fQogICAgICAgICAgICB7ey0gaWYgLlZhbHVlcy5NYXN0ZXIuSW5zdGFsbFBsdWdpbnMgfX0KICAgICAgICAgICAgLQogICAgICAgICAgICAgIG1vdW50UGF0aDogL3Zhci9qZW5raW5zX3BsdWdpbnMKICAgICAgICAgICAgICBuYW1lOiBwbHVnaW4tZGlyCiAgICAgICAgICAgIHt7LSBlbmQgfX0KICAgICAgICAgICAgLQogICAgICAgICAgICAgIG1vdW50UGF0aDogL3Vzci9zaGFyZS9qZW5raW5zL3JlZi9zZWNyZXRzLwogICAgICAgICAgICAgIG5hbWU6IHNlY3JldHMtZGlyCiAgICAgIGNvbnRhaW5lcnM6CiAgICAgICAgLSBuYW1lOiB7eyB0ZW1wbGF0ZSAiamVua2lucy5mdWxsbmFtZSIgLiB9fQogICAgICAgICAgaW1hZ2U6ICJ7eyAuVmFsdWVzLk1hc3Rlci5JbWFnZSB9fTp7eyAuVmFsdWVzLk1hc3Rlci5JbWFnZVRhZyB9fSIKICAgICAgICAgIGltYWdlUHVsbFBvbGljeTogInt7IC5WYWx1ZXMuTWFzdGVyLkltYWdlUHVsbFBvbGljeSB9fSIKICAgICAgICAgIHt7LSBpZiAuVmFsdWVzLk1hc3Rlci5Vc2VTZWN1cml0eSB9fQogICAgICAgICAgYXJnczogWyAiLS1hcmd1bWVudHNSZWFsbS5wYXNzd2QuJChBRE1JTl9VU0VSKT0kKEFETUlOX1BBU1NXT1JEKSIsICAiLS1hcmd1bWVudHNSZWFsbS5yb2xlcy4kKEFETUlOX1VTRVIpPWFkbWluIl0KICAgICAgICAgIHt7LSBlbmQgfX0KICAgICAgICAgIGVudjoKICAgICAgICAgICAgLSBuYW1lOiBKQVZBX1RPT0xfT1BUSU9OUwogICAgICAgICAgICAgIHZhbHVlOiAie3sgZGVmYXVsdCAiIiAuVmFsdWVzLk1hc3Rlci5KYXZhT3B0c319IgogICAgICAgICAgICAtIG5hbWU6IEpFTktJTlNfT1BUUwogICAgICAgICAgICAgIHZhbHVlOiAie3sgaWYgLlZhbHVlcy5NYXN0ZXIuSmVua2luc1VyaVByZWZpeCB9fS0tcHJlZml4PXt7IC5WYWx1ZXMuTWFzdGVyLkplbmtpbnNVcmlQcmVmaXggfX0ge3sgZW5kIH19e3sgZGVmYXVsdCAiIiAuVmFsdWVzLk1hc3Rlci5KZW5raW5zT3B0c319IgogICAgICAgICAgICB7ey0gaWYgLlZhbHVlcy5NYXN0ZXIuVXNlU2VjdXJpdHkgfX0KICAgICAgICAgICAgLSBuYW1lOiBBRE1JTl9QQVNTV09SRAogICAgICAgICAgICAgIHZhbHVlRnJvbToKICAgICAgICAgICAgICAgIHNlY3JldEtleVJlZjoKICAgICAgICAgICAgICAgICAgbmFtZToge3sgdGVtcGxhdGUgImplbmtpbnMuZnVsbG5hbWUiIC4gfX0KICAgICAgICAgICAgICAgICAga2V5OiBqZW5raW5zLWFkbWluLXBhc3N3b3JkCiAgICAgICAgICAgIC0gbmFtZTogQURNSU5fVVNFUgogICAgICAgICAgICAgIHZhbHVlRnJvbToKICAgICAgICAgICAgICAgIHNlY3JldEtleVJlZjoKICAgICAgICAgICAgICAgICAgbmFtZToge3sgdGVtcGxhdGUgImplbmtpbnMuZnVsbG5hbWUiIC4gfX0KICAgICAgICAgICAgICAgICAga2V5OiBqZW5raW5zLWFkbWluLXVzZXIKICAgICAgICAgICAge3stIGVuZCB9fQogICAgICAgICAgICB7ey0gaWYgLlZhbHVlcy5NYXN0ZXIuQ29udGFpbmVyRW52IH19Cnt7IHRvWWFtbCAuVmFsdWVzLk1hc3Rlci5Db250YWluZXJFbnYgfCBpbmRlbnQgMTIgfX0KICAgICAgICAgICAge3stIGVuZCB9fQogICAgICAgICAgcG9ydHM6CiAgICAgICAgICAgIC0gY29udGFpbmVyUG9ydDogODA4MAogICAgICAgICAgICAgIG5hbWU6IGh0dHAKICAgICAgICAgICAgLSBjb250YWluZXJQb3J0OiB7eyAuVmFsdWVzLk1hc3Rlci5TbGF2ZUxpc3RlbmVyUG9ydCB9fQogICAgICAgICAgICAgIG5hbWU6IHNsYXZlbGlzdGVuZXIKICAgICAgICAgICAge3stIGlmIC5WYWx1ZXMuTWFzdGVyLkpNWFBvcnQgfX0KICAgICAgICAgICAgLSBjb250YWluZXJQb3J0OiB7eyAuVmFsdWVzLk1hc3Rlci5KTVhQb3J0IH19CiAgICAgICAgICAgICAgbmFtZTogam14CiAgICAgICAgICAgIHt7LSBlbmQgfX0Ke3stIHJhbmdlICRpbmRleCwgJHBvcnQgOj0gLlZhbHVlcy5NYXN0ZXIuRXh0cmFQb3J0cyB9fQogICAgICAgICAgICAtIGNvbnRhaW5lclBvcnQ6IHt7ICRwb3J0LnBvcnQgfX0KICAgICAgICAgICAgICBuYW1lOiB7eyAkcG9ydC5uYW1lIH19Cnt7LSBlbmQgfX0Ke3stIGlmIC5WYWx1ZXMuTWFzdGVyLkhlYWx0aFByb2JlcyB9fQogICAgICAgICAgbGl2ZW5lc3NQcm9iZToKICAgICAgICAgICAgaHR0cEdldDoKICAgICAgICAgICAgICBwYXRoOiAie3sgZGVmYXVsdCAiIiAuVmFsdWVzLk1hc3Rlci5KZW5raW5zVXJpUHJlZml4IH19L2xvZ2luIgogICAgICAgICAgICAgIHBvcnQ6IGh0dHAKICAgICAgICAgICAgaW5pdGlhbERlbGF5U2Vjb25kczoge3sgLlZhbHVlcy5NYXN0ZXIuSGVhbHRoUHJvYmVzTGl2ZW5lc3NUaW1lb3V0IH19CiAgICAgICAgICAgIHRpbWVvdXRTZWNvbmRzOiA1CiAgICAgICAgICAgIGZhaWx1cmVUaHJlc2hvbGQ6IHt7IC5WYWx1ZXMuTWFzdGVyLkhlYWx0aFByb2JlTGl2ZW5lc3NGYWlsdXJlVGhyZXNob2xkIH19CiAgICAgICAgICByZWFkaW5lc3NQcm9iZToKICAgICAgICAgICAgaHR0cEdldDoKICAgICAgICAgICAgICBwYXRoOiAie3sgZGVmYXVsdCAiIiAuVmFsdWVzLk1hc3Rlci5KZW5raW5zVXJpUHJlZml4IH19L2xvZ2luIgogICAgICAgICAgICAgIHBvcnQ6IGh0dHAKICAgICAgICAgICAgaW5pdGlhbERlbGF5U2Vjb25kczoge3sgLlZhbHVlcy5NYXN0ZXIuSGVhbHRoUHJvYmVzUmVhZGluZXNzVGltZW91dCB9fQp7ey0gZW5kIH19CiAgICAgICAgICAjIFJlc291cmNlcyBjb25maWd1cmF0aW9uIGlzIGEgbGl0dGxlIGhhY2t5LiBUaGlzIHdhcyB0byBwcmV2ZW50IGJyZWFraW5nCiAgICAgICAgICAjIGNoYW5nZXMsIGFuZCBzaG91bGQgYmUgY2xlYW5uZWQgdXAgaW4gdGhlIGZ1dHVyZSBvbmNlIGV2ZXJ5Ym9keSBoYWQKICAgICAgICAgICMgZW5vdWdoIHRpbWUgdG8gbWlncmF0ZS4KICAgICAgICAgIHJlc291cmNlczoKe3sgaWYgb3IgLlZhbHVlcy5NYXN0ZXIuQ3B1IC5WYWx1ZXMuTWFzdGVyLk1lbW9yeSB9fQogICAgICAgICAgICByZXF1ZXN0czoKICAgICAgICAgICAgICBjcHU6ICJ7eyAuVmFsdWVzLk1hc3Rlci5DcHUgfX0iCiAgICAgICAgICAgICAgbWVtb3J5OiAie3sgLlZhbHVlcy5NYXN0ZXIuTWVtb3J5IH19Igp7eyBlbHNlIH19Cnt7IHRvWWFtbCAuVmFsdWVzLk1hc3Rlci5yZXNvdXJjZXMgfCBpbmRlbnQgMTIgfX0Ke3sgZW5kIH19CiAgICAgICAgICB2b2x1bWVNb3VudHM6Cnt7LSBpZiAuVmFsdWVzLlBlcnNpc3RlbmNlLm1vdW50cyB9fQp7eyB0b1lhbWwgLlZhbHVlcy5QZXJzaXN0ZW5jZS5tb3VudHMgfCBpbmRlbnQgMTIgfX0Ke3stIGVuZCB9fQogICAgICAgICAgICAtCiAgICAgICAgICAgICAgbW91bnRQYXRoOiAvdmFyL2plbmtpbnNfaG9tZQogICAgICAgICAgICAgIG5hbWU6IGplbmtpbnMtaG9tZQogICAgICAgICAgICAgIHJlYWRPbmx5OiBmYWxzZQogICAgICAgICAgICAtCiAgICAgICAgICAgICAgbW91bnRQYXRoOiAvdmFyL2plbmtpbnNfY29uZmlnCiAgICAgICAgICAgICAgbmFtZTogamVua2lucy1jb25maWcKICAgICAgICAgICAgICByZWFkT25seTogdHJ1ZQogICAgICAgICAgICB7ey0gaWYgLlZhbHVlcy5NYXN0ZXIuQ3JlZGVudGlhbHNYbWxTZWNyZXQgfX0KICAgICAgICAgICAgLQogICAgICAgICAgICAgIG1vdW50UGF0aDogL3Zhci9qZW5raW5zX2NyZWRlbnRpYWxzCiAgICAgICAgICAgICAgbmFtZTogamVua2lucy1jcmVkZW50aWFscwogICAgICAgICAgICAgIHJlYWRPbmx5OiB0cnVlCiAgICAgICAgICAgIHt7LSBlbmQgfX0KICAgICAgICAgICAge3stIGlmIC5WYWx1ZXMuTWFzdGVyLlNlY3JldHNGaWxlc1NlY3JldCB9fQogICAgICAgICAgICAtCiAgICAgICAgICAgICAgbW91bnRQYXRoOiAvdmFyL2plbmtpbnNfc2VjcmV0cwogICAgICAgICAgICAgIG5hbWU6IGplbmtpbnMtc2VjcmV0cwogICAgICAgICAgICAgIHJlYWRPbmx5OiB0cnVlCiAgICAgICAgICAgIHt7LSBlbmQgfX0KICAgICAgICAgICAge3stIGlmIC5WYWx1ZXMuTWFzdGVyLkpvYnMgfX0KICAgICAgICAgICAgLQogICAgICAgICAgICAgIG1vdW50UGF0aDogL3Zhci9qZW5raW5zX2pvYnMKICAgICAgICAgICAgICBuYW1lOiBqZW5raW5zLWpvYnMKICAgICAgICAgICAgICByZWFkT25seTogdHJ1ZQogICAgICAgICAgICB7ey0gZW5kIH19CiAgICAgICAgICAgIHt7LSBpZiAuVmFsdWVzLk1hc3Rlci5JbnN0YWxsUGx1Z2lucyB9fQogICAgICAgICAgICAtCiAgICAgICAgICAgICAgbW91bnRQYXRoOiAvdXNyL3NoYXJlL2plbmtpbnMvcmVmL3BsdWdpbnMvCiAgICAgICAgICAgICAgbmFtZTogcGx1Z2luLWRpcgogICAgICAgICAgICAgIHJlYWRPbmx5OiBmYWxzZQogICAgICAgICAgICB7ey0gZW5kIH19CiAgICAgICAgICAgIC0KICAgICAgICAgICAgICBtb3VudFBhdGg6IC91c3Ivc2hhcmUvamVua2lucy9yZWYvc2VjcmV0cy8KICAgICAgICAgICAgICBuYW1lOiBzZWNyZXRzLWRpcgogICAgICAgICAgICAgIHJlYWRPbmx5OiBmYWxzZQogICAgICB2b2x1bWVzOgp7ey0gaWYgLlZhbHVlcy5QZXJzaXN0ZW5jZS52b2x1bWVzIH19Cnt7IHRvWWFtbCAuVmFsdWVzLlBlcnNpc3RlbmNlLnZvbHVtZXMgfCBpbmRlbnQgNiB9fQp7ey0gZW5kIH19CiAgICAgIC0gbmFtZTogamVua2lucy1jb25maWcKICAgICAgICBjb25maWdNYXA6CiAgICAgICAgICBuYW1lOiB7eyB0ZW1wbGF0ZSAiamVua2lucy5mdWxsbmFtZSIgLiB9fQogICAgICB7ey0gaWYgLlZhbHVlcy5NYXN0ZXIuQ3JlZGVudGlhbHNYbWxTZWNyZXQgfX0KICAgICAgLSBuYW1lOiBqZW5raW5zLWNyZWRlbnRpYWxzCiAgICAgICAgc2VjcmV0OgogICAgICAgICAgc2VjcmV0TmFtZToge3sgLlZhbHVlcy5NYXN0ZXIuQ3JlZGVudGlhbHNYbWxTZWNyZXQgfX0KICAgICAge3stIGVuZCB9fQogICAgICB7ey0gaWYgLlZhbHVlcy5NYXN0ZXIuU2VjcmV0c0ZpbGVzU2VjcmV0IH19CiAgICAgIC0gbmFtZTogamVua2lucy1zZWNyZXRzCiAgICAgICAgc2VjcmV0OgogICAgICAgICAgc2VjcmV0TmFtZToge3sgLlZhbHVlcy5NYXN0ZXIuU2VjcmV0c0ZpbGVzU2VjcmV0IH19CiAgICAgIHt7LSBlbmQgfX0KICAgICAge3stIGlmIC5WYWx1ZXMuTWFzdGVyLkpvYnMgfX0KICAgICAgLSBuYW1lOiBqZW5raW5zLWpvYnMKICAgICAgICBjb25maWdNYXA6CiAgICAgICAgICBuYW1lOiB7eyB0ZW1wbGF0ZSAiamVua2lucy5mdWxsbmFtZSIgLiB9fS1qb2JzCiAgICAgIHt7LSBlbmQgfX0KICAgICAge3stIGlmIC5WYWx1ZXMuTWFzdGVyLkluc3RhbGxQbHVnaW5zIH19CiAgICAgIC0gbmFtZTogcGx1Z2luLWRpcgogICAgICAgIGVtcHR5RGlyOiB7fQogICAgICB7ey0gZW5kIH19CiAgICAgIC0gbmFtZTogc2VjcmV0cy1kaXIKICAgICAgICBlbXB0eURpcjoge30KICAgICAgLSBuYW1lOiBqZW5raW5zLWhvbWUKICAgICAge3stIGlmIC5WYWx1ZXMuUGVyc2lzdGVuY2UuRW5hYmxlZCB9fQogICAgICAgIHBlcnNpc3RlbnRWb2x1bWVDbGFpbToKICAgICAgICAgIGNsYWltTmFtZToge3sgLlZhbHVlcy5QZXJzaXN0ZW5jZS5FeGlzdGluZ0NsYWltIHwgZGVmYXVsdCAoaW5jbHVkZSAiamVua2lucy5mdWxsbmFtZSIgLikgfX0KICAgICAge3stIGVsc2UgfX0KICAgICAgICBlbXB0eURpcjoge30KICAgICAge3stIGVuZCAtfX0Ke3stIGlmIC5WYWx1ZXMuTWFzdGVyLkltYWdlUHVsbFNlY3JldCB9fQogICAgICBpbWFnZVB1bGxTZWNyZXRzOgogICAgICAtIG5hbWU6IHt7IC5WYWx1ZXMuTWFzdGVyLkltYWdlUHVsbFNlY3JldCB9fQp7ey0gZW5kIC19fQo="
    76          },
    77          {
    78            "filePath": "templates/jenkins-master-ingress.yaml",
    79            "fileContents": "e3stIGlmIC5WYWx1ZXMuTWFzdGVyLkhvc3ROYW1lIH19CmFwaVZlcnNpb246IHt7IC5WYWx1ZXMuTWFzdGVyLkluZ3Jlc3MuQXBpVmVyc2lvbiB9fQpraW5kOiBJbmdyZXNzCm1ldGFkYXRhOgp7ey0gaWYgLlZhbHVlcy5NYXN0ZXIuSW5ncmVzcy5Bbm5vdGF0aW9ucyB9fQogIGFubm90YXRpb25zOgp7eyB0b1lhbWwgLlZhbHVlcy5NYXN0ZXIuSW5ncmVzcy5Bbm5vdGF0aW9ucyB8IGluZGVudCA0IH19Cnt7LSBlbmQgfX0KICBuYW1lOiB7eyB0ZW1wbGF0ZSAiamVua2lucy5mdWxsbmFtZSIgLiB9fQpzcGVjOgogIHJ1bGVzOgogIC0gaG9zdDoge3sgLlZhbHVlcy5NYXN0ZXIuSG9zdE5hbWUgfCBxdW90ZSB9fQogICAgaHR0cDoKICAgICAgcGF0aHM6CiAgICAgIC0gYmFja2VuZDoKICAgICAgICAgIHNlcnZpY2VOYW1lOiB7eyB0ZW1wbGF0ZSAiamVua2lucy5mdWxsbmFtZSIgLiB9fQogICAgICAgICAgc2VydmljZVBvcnQ6IHt7IC5WYWx1ZXMuTWFzdGVyLlNlcnZpY2VQb3J0IH19Cnt7LSBpZiAuVmFsdWVzLk1hc3Rlci5JbmdyZXNzLlRMUyB9fQogIHRsczoKe3sgdG9ZYW1sIC5WYWx1ZXMuTWFzdGVyLkluZ3Jlc3MuVExTIHwgaW5kZW50IDQgfX0Ke3stIGVuZCAtfX0Ke3stIGVuZCB9fQo="
    80          },
    81          {
    82            "filePath": "templates/jenkins-master-networkpolicy.yaml",
    83            "fileContents": "e3stIGlmIC5WYWx1ZXMuTmV0d29ya1BvbGljeS5FbmFibGVkIH19CmtpbmQ6IE5ldHdvcmtQb2xpY3kKYXBpVmVyc2lvbjoge3sgLlZhbHVlcy5OZXR3b3JrUG9saWN5LkFwaVZlcnNpb24gfX0KbWV0YWRhdGE6CiAgbmFtZTogInt7IC5SZWxlYXNlLk5hbWUgfX0te3sgLlZhbHVlcy5NYXN0ZXIuQ29tcG9uZW50IH19IgpzcGVjOgogIHBvZFNlbGVjdG9yOgogICAgbWF0Y2hMYWJlbHM6CiAgICAgIGNvbXBvbmVudDogInt7IC5SZWxlYXNlLk5hbWUgfX0te3sgLlZhbHVlcy5NYXN0ZXIuQ29tcG9uZW50IH19IgogIGluZ3Jlc3M6CiAgICAjIEFsbG93IHdlYiBhY2Nlc3MgdG8gdGhlIFVJCiAgICAtIHBvcnRzOgogICAgICAtIHBvcnQ6IDgwODAKICAgICMgQWxsb3cgaW5ib3VuZCBjb25uZWN0aW9ucyBmcm9tIHNsYXZlCiAgICAtIGZyb206CiAgICAgIC0gcG9kU2VsZWN0b3I6CiAgICAgICAgICBtYXRjaExhYmVsczoKICAgICAgICAgICAgImplbmtpbnMve3sgLlJlbGVhc2UuTmFtZSB9fS17eyAuVmFsdWVzLkFnZW50LkNvbXBvbmVudCB9fSI6ICJ0cnVlIgogICAgICBwb3J0czoKICAgICAgLSBwb3J0OiB7eyAuVmFsdWVzLk1hc3Rlci5TbGF2ZUxpc3RlbmVyUG9ydCB9fQp7ey0gaWYgLlZhbHVlcy5BZ2VudC5FbmFibGVkIH19Ci0tLQpraW5kOiBOZXR3b3JrUG9saWN5CmFwaVZlcnNpb246IHt7IC5WYWx1ZXMuTmV0d29ya1BvbGljeS5BcGlWZXJzaW9uIH19Cm1ldGFkYXRhOgogIG5hbWU6ICJ7eyAuUmVsZWFzZS5OYW1lIH19LXt7IC5WYWx1ZXMuQWdlbnQuQ29tcG9uZW50IH19IgpzcGVjOgogIHBvZFNlbGVjdG9yOgogICAgbWF0Y2hMYWJlbHM6CiAgICAgICMgRGVmYXVsdERlbnkKICAgICAgImplbmtpbnMve3sgLlJlbGVhc2UuTmFtZSB9fS17eyAuVmFsdWVzLkFnZW50LkNvbXBvbmVudCB9fSI6ICJ0cnVlIgp7ey0gZW5kIH19Cnt7LSBlbmQgfX0K"
    84          },
    85          {
    86            "filePath": "templates/jenkins-master-svc.yaml",
    87            "fileContents": "YXBpVmVyc2lvbjogdjEKa2luZDogU2VydmljZQptZXRhZGF0YToKICBuYW1lOiB7e3RlbXBsYXRlICJqZW5raW5zLmZ1bGxuYW1lIiAuIH19CiAgbGFiZWxzOgogICAgYXBwOiB7eyB0ZW1wbGF0ZSAiamVua2lucy5mdWxsbmFtZSIgLiB9fQogICAgaGVyaXRhZ2U6IHt7LlJlbGVhc2UuU2VydmljZSB8IHF1b3RlIH19CiAgICByZWxlYXNlOiB7ey5SZWxlYXNlLk5hbWUgfCBxdW90ZSB9fQogICAgY2hhcnQ6ICJ7ey5DaGFydC5OYW1lfX0te3suQ2hhcnQuVmVyc2lvbn19IgogICAgY29tcG9uZW50OiAie3suUmVsZWFzZS5OYW1lfX0te3suVmFsdWVzLk1hc3Rlci5Db21wb25lbnR9fSIKe3stIGlmIC5WYWx1ZXMuTWFzdGVyLlNlcnZpY2VBbm5vdGF0aW9ucyB9fQogIGFubm90YXRpb25zOgp7eyB0b1lhbWwgLlZhbHVlcy5NYXN0ZXIuU2VydmljZUFubm90YXRpb25zIHwgaW5kZW50IDQgfX0Ke3stIGVuZCB9fQpzcGVjOgogIHBvcnRzOgogICAgLSBwb3J0OiB7ey5WYWx1ZXMuTWFzdGVyLlNlcnZpY2VQb3J0fX0KICAgICAgbmFtZTogaHR0cAogICAgICB0YXJnZXRQb3J0OiA4MDgwCiAgICAgIHt7aWYgKGFuZCAoZXEgLlZhbHVlcy5NYXN0ZXIuU2VydmljZVR5cGUgIk5vZGVQb3J0IikgKG5vdCAoZW1wdHkgLlZhbHVlcy5NYXN0ZXIuTm9kZVBvcnQpKSl9fQogICAgICBub2RlUG9ydDoge3suVmFsdWVzLk1hc3Rlci5Ob2RlUG9ydH19CiAgICAgIHt7ZW5kfX0KICBzZWxlY3RvcjoKICAgIGNvbXBvbmVudDogInt7LlJlbGVhc2UuTmFtZX19LXt7LlZhbHVlcy5NYXN0ZXIuQ29tcG9uZW50fX0iCiAgdHlwZToge3suVmFsdWVzLk1hc3Rlci5TZXJ2aWNlVHlwZX19CiAge3tpZiBlcSAuVmFsdWVzLk1hc3Rlci5TZXJ2aWNlVHlwZSAiTG9hZEJhbGFuY2VyIn19Cnt7LSBpZiAuVmFsdWVzLk1hc3Rlci5Mb2FkQmFsYW5jZXJTb3VyY2VSYW5nZXMgfX0KICBsb2FkQmFsYW5jZXJTb3VyY2VSYW5nZXM6Cnt7IHRvWWFtbCAuVmFsdWVzLk1hc3Rlci5Mb2FkQmFsYW5jZXJTb3VyY2VSYW5nZXMgfCBpbmRlbnQgNCB9fQp7ey0gZW5kIH19CiAge3tpZiAuVmFsdWVzLk1hc3Rlci5Mb2FkQmFsYW5jZXJJUH19CiAgbG9hZEJhbGFuY2VySVA6IHt7LlZhbHVlcy5NYXN0ZXIuTG9hZEJhbGFuY2VySVB9fQogIHt7ZW5kfX0KICB7e2VuZH19Cg=="
    88          },
    89          {
    90            "filePath": "templates/jenkins-test.yaml",
    91            "fileContents": "YXBpVmVyc2lvbjogdjEKa2luZDogUG9kCm1ldGFkYXRhOgogIG5hbWU6ICJ7eyAuUmVsZWFzZS5OYW1lIH19LXVpLXRlc3Qte3sgcmFuZEFscGhhTnVtIDUgfCBsb3dlciB9fSIKICBhbm5vdGF0aW9uczoKICAgICJoZWxtLnNoL2hvb2siOiB0ZXN0LXN1Y2Nlc3MKc3BlYzoKICB7ey0gaWYgLlZhbHVlcy5NYXN0ZXIuTm9kZVNlbGVjdG9yIH19CiAgbm9kZVNlbGVjdG9yOgp7eyB0b1lhbWwgLlZhbHVlcy5NYXN0ZXIuTm9kZVNlbGVjdG9yIHwgaW5kZW50IDQgfX0KICB7ey0gZW5kIH19CiAge3stIGlmIC5WYWx1ZXMuTWFzdGVyLlRvbGVyYXRpb25zIH19CiAgdG9sZXJhdGlvbnM6Cnt7IHRvWWFtbCAuVmFsdWVzLk1hc3Rlci5Ub2xlcmF0aW9ucyB8IGluZGVudCA0IH19CiAge3stIGVuZCB9fQogIGluaXRDb250YWluZXJzOgogICAgLSBuYW1lOiAidGVzdC1mcmFtZXdvcmsiCiAgICAgIGltYWdlOiAiZGR1cG9ydGFsL2JhdHM6MC40LjAiCiAgICAgIGNvbW1hbmQ6CiAgICAgIC0gImJhc2giCiAgICAgIC0gIi1jIgogICAgICAtIHwKICAgICAgICBzZXQgLWV4CiAgICAgICAgIyBjb3B5IGJhdHMgdG8gdG9vbHMgZGlyCiAgICAgICAgY3AgLVIgL3Vzci9sb2NhbC9saWJleGVjLyAvdG9vbHMvYmF0cy8KICAgICAgdm9sdW1lTW91bnRzOgogICAgICAtIG1vdW50UGF0aDogL3Rvb2xzCiAgICAgICAgbmFtZTogdG9vbHMKICBjb250YWluZXJzOgogICAgLSBuYW1lOiB7eyAuUmVsZWFzZS5OYW1lIH19LXVpLXRlc3QKICAgICAgaW1hZ2U6IHt7IC5WYWx1ZXMuTWFzdGVyLkltYWdlIH19Ont7IC5WYWx1ZXMuTWFzdGVyLkltYWdlVGFnIH19CiAgICAgIGNvbW1hbmQ6IFsiL3Rvb2xzL2JhdHMvYmF0cyIsICItdCIsICIvdGVzdHMvcnVuLnNoIl0KICAgICAgdm9sdW1lTW91bnRzOgogICAgICAtIG1vdW50UGF0aDogL3Rlc3RzCiAgICAgICAgbmFtZTogdGVzdHMKICAgICAgICByZWFkT25seTogdHJ1ZQogICAgICAtIG1vdW50UGF0aDogL3Rvb2xzCiAgICAgICAgbmFtZTogdG9vbHMKICB2b2x1bWVzOgogIC0gbmFtZTogdGVzdHMKICAgIGNvbmZpZ01hcDoKICAgICAgbmFtZToge3sgdGVtcGxhdGUgImplbmtpbnMuZnVsbG5hbWUiIC4gfX0tdGVzdHMKICAtIG5hbWU6IHRvb2xzCiAgICBlbXB0eURpcjoge30KICByZXN0YXJ0UG9saWN5OiBOZXZlcgo="
    92          },
    93          {
    94            "filePath": "templates/jobs.yaml",
    95            "fileContents": "e3stIGlmIC5WYWx1ZXMuTWFzdGVyLkpvYnMgfX0KYXBpVmVyc2lvbjogdjEKa2luZDogQ29uZmlnTWFwCm1ldGFkYXRhOgogIG5hbWU6IHt7IHRlbXBsYXRlICJqZW5raW5zLmZ1bGxuYW1lIiAuIH19LWpvYnMKZGF0YToKe3sgLlZhbHVlcy5NYXN0ZXIuSm9icyB8IGluZGVudCAyIH19Cnt7LSBlbmQgLX19Cg=="
    96          },
    97          {
    98            "filePath": "templates/rbac.yaml",
    99            "fileContents": "e3sgaWYgLlZhbHVlcy5yYmFjLmluc3RhbGwgfX0Ke3stICRzZXJ2aWNlTmFtZSA6PSBpbmNsdWRlICJqZW5raW5zLmZ1bGxuYW1lIiAuIC19fQp7ey0gaWYgLkNhcGFiaWxpdGllcy5BUElWZXJzaW9ucy5IYXMgInJiYWMuYXV0aG9yaXphdGlvbi5rOHMuaW8vdjEiIH19CmFwaVZlcnNpb246IHJiYWMuYXV0aG9yaXphdGlvbi5rOHMuaW8vdjEKe3stIGVsc2UgaWYgLkNhcGFiaWxpdGllcy5BUElWZXJzaW9ucy5IYXMgInJiYWMuYXV0aG9yaXphdGlvbi5rOHMuaW8vdjFiZXRhMSIgfX0KYXBpVmVyc2lvbjogcmJhYy5hdXRob3JpemF0aW9uLms4cy5pby92MWJldGExCnt7LSBlbmQgfX0Ka2luZDoge3sgLlZhbHVlcy5yYmFjLnJvbGVCaW5kaW5nS2luZCB9fQptZXRhZGF0YToKICBuYW1lOiB7eyAkc2VydmljZU5hbWUgfX0tcm9sZS1iaW5kaW5nCiAgbGFiZWxzOgogICAgYXBwOiB7eyAkc2VydmljZU5hbWUgfX0KICAgIGNoYXJ0OiAie3sgLkNoYXJ0Lk5hbWUgfX0te3sgLkNoYXJ0LlZlcnNpb24gfX0iCiAgICByZWxlYXNlOiAie3sgLlJlbGVhc2UuTmFtZSB9fSIKICAgIGhlcml0YWdlOiAie3sgLlJlbGVhc2UuU2VydmljZSB9fSIKcm9sZVJlZjoKICBhcGlHcm91cDogcmJhYy5hdXRob3JpemF0aW9uLms4cy5pbwogIGtpbmQ6IENsdXN0ZXJSb2xlCiAgbmFtZToge3sgLlZhbHVlcy5yYmFjLnJvbGVSZWYgfX0Kc3ViamVjdHM6Ci0ga2luZDogU2VydmljZUFjY291bnQKICBuYW1lOiB7eyAkc2VydmljZU5hbWUgfX0KICBuYW1lc3BhY2U6IHt7IC5SZWxlYXNlLk5hbWVzcGFjZSB9fQp7eyBlbmQgfX0K"
   100          },
   101          {
   102            "filePath": "templates/secret.yaml",
   103            "fileContents": "e3stIGlmIC5WYWx1ZXMuTWFzdGVyLlVzZVNlY3VyaXR5IH19CmFwaVZlcnNpb246IHYxCmtpbmQ6IFNlY3JldAptZXRhZGF0YToKICBuYW1lOiB7eyB0ZW1wbGF0ZSAiamVua2lucy5mdWxsbmFtZSIgLiB9fQogIGxhYmVsczoKICAgIGFwcDoge3sgdGVtcGxhdGUgImplbmtpbnMuZnVsbG5hbWUiIC4gfX0KICAgIGNoYXJ0OiAie3sgLkNoYXJ0Lk5hbWUgfX0te3sgLkNoYXJ0LlZlcnNpb24gfX0iCiAgICByZWxlYXNlOiAie3sgLlJlbGVhc2UuTmFtZSB9fSIKICAgIGhlcml0YWdlOiAie3sgLlJlbGVhc2UuU2VydmljZSB9fSIKdHlwZTogT3BhcXVlCmRhdGE6CiAge3sgaWYgLlZhbHVlcy5NYXN0ZXIuQWRtaW5QYXNzd29yZCB9fQogIGplbmtpbnMtYWRtaW4tcGFzc3dvcmQ6IHt7IC5WYWx1ZXMuTWFzdGVyLkFkbWluUGFzc3dvcmQgfCBiNjRlbmMgfCBxdW90ZSB9fQogIHt7IGVsc2UgfX0KICBqZW5raW5zLWFkbWluLXBhc3N3b3JkOiB7eyByYW5kQWxwaGFOdW0gMTAgfCBiNjRlbmMgfCBxdW90ZSB9fQogIHt7IGVuZCB9fQogIGplbmtpbnMtYWRtaW4tdXNlcjoge3sgLlZhbHVlcy5NYXN0ZXIuQWRtaW5Vc2VyIHwgYjY0ZW5jIHwgcXVvdGUgfX0Ke3stIGVuZCB9fQ=="
   104          },
   105          {
   106            "filePath": "templates/service-account.yaml",
   107            "fileContents": "e3sgaWYgLlZhbHVlcy5yYmFjLmluc3RhbGwgfX0Ke3stICRzZXJ2aWNlTmFtZSA6PSBpbmNsdWRlICJqZW5raW5zLmZ1bGxuYW1lIiAuIC19fQphcGlWZXJzaW9uOiB2MQpraW5kOiBTZXJ2aWNlQWNjb3VudAptZXRhZGF0YToKICBuYW1lOiB7eyAkc2VydmljZU5hbWUgfX0KICBsYWJlbHM6CiAgICBhcHA6IHt7ICRzZXJ2aWNlTmFtZSB9fQogICAgY2hhcnQ6ICJ7eyAuQ2hhcnQuTmFtZSB9fS17eyAuQ2hhcnQuVmVyc2lvbiB9fSIKICAgIHJlbGVhc2U6ICJ7eyAuUmVsZWFzZS5OYW1lIH19IgogICAgaGVyaXRhZ2U6ICJ7eyAuUmVsZWFzZS5TZXJ2aWNlIH19Igp7eyBlbmQgfX0="
   108          },
   109          {
   110            "filePath": "templates/test-config.yaml",
   111            "fileContents": "YXBpVmVyc2lvbjogdjEKa2luZDogQ29uZmlnTWFwCm1ldGFkYXRhOgogIG5hbWU6IHt7IHRlbXBsYXRlICJqZW5raW5zLmZ1bGxuYW1lIiAuIH19LXRlc3RzCmRhdGE6CiAgcnVuLnNoOiB8LQogICAgQHRlc3QgIlRlc3RpbmcgSmVua2lucyBVSSBpcyBhY2Nlc3NpYmxlIiB7CiAgICAgIGN1cmwgLS1yZXRyeSA0OCAtLXJldHJ5LWRlbGF5IDEwIHt7IHRlbXBsYXRlICJqZW5raW5zLmZ1bGxuYW1lIiAuIH19Ont7IC5WYWx1ZXMuTWFzdGVyLlNlcnZpY2VQb3J0IH19e3sgZGVmYXVsdCAiIiAuVmFsdWVzLk1hc3Rlci5KZW5raW5zVXJpUHJlZml4IH19L2xvZ2luCiAgICB9Cg=="
   112          },
   113          {
   114            "filePath": "values.yaml",
   115            "fileContents": "IyBEZWZhdWx0IHZhbHVlcyBmb3IgamVua2lucy4KIyBUaGlzIGlzIGEgWUFNTC1mb3JtYXR0ZWQgZmlsZS4KIyBEZWNsYXJlIG5hbWUvdmFsdWUgcGFpcnMgdG8gYmUgcGFzc2VkIGludG8geW91ciB0ZW1wbGF0ZXMuCiMgbmFtZTogdmFsdWUKCiMjIE92ZXJyaWRlcyBmb3IgZ2VuZXJhdGVkIHJlc291cmNlIG5hbWVzCiMgU2VlIHRlbXBsYXRlcy9faGVscGVycy50cGwKIyBuYW1lT3ZlcnJpZGU6CiMgZnVsbG5hbWVPdmVycmlkZToKCk1hc3RlcjoKICBOYW1lOiBqZW5raW5zLW1hc3RlcgogIEltYWdlOiAiamVua2lucy9qZW5raW5zIgogIEltYWdlVGFnOiAibHRzIgogIEltYWdlUHVsbFBvbGljeTogIkFsd2F5cyIKIyBJbWFnZVB1bGxTZWNyZXQ6IGplbmtpbnMKICBDb21wb25lbnQ6ICJqZW5raW5zLW1hc3RlciIKICBVc2VTZWN1cml0eTogdHJ1ZQogIEhvc3ROZXR3b3JraW5nOiBmYWxzZQogIEFkbWluVXNlcjogYWRtaW4KICAjIEFkbWluUGFzc3dvcmQ6IDxkZWZhdWx0cyB0byByYW5kb20+CiAgcmVzb3VyY2VzOgogICAgcmVxdWVzdHM6CiAgICAgIGNwdTogIjUwbSIKICAgICAgbWVtb3J5OiAiMjU2TWkiCiAgICBsaW1pdHM6CiAgICAgIGNwdTogIjIwMDBtIgogICAgICBtZW1vcnk6ICIyMDQ4TWkiCiAgIyBFbnZpcm9ubWVudCB2YXJpYWJsZXMgdGhhdCBnZXQgYWRkZWQgdG8gdGhlIGluaXQgY29udGFpbmVyICh1c2VmdWwgZm9yIGUuZy4gaHR0cF9wcm94eSkKICAjIEluaXRDb250YWluZXJFbnY6CiAgIyAgIC0gbmFtZTogaHR0cF9wcm94eQogICMgICAgIHZhbHVlOiAiaHR0cDovLzE5Mi4xNjguNjQuMTozMTI4IgogICMgQ29udGFpbmVyRW52OgogICMgICAtIG5hbWU6IGh0dHBfcHJveHkKICAjICAgICB2YWx1ZTogImh0dHA6Ly8xOTIuMTY4LjY0LjE6MzEyOCIKICAjIFNldCBtaW4vbWF4IGhlYXAgaGVyZSBpZiBuZWVkZWQgd2l0aDoKICAjIEphdmFPcHRzOiAiLVhtczUxMm0gLVhteDUxMm0iCiAgIyBKZW5raW5zT3B0czogIiIKICAjIEplbmtpbnNVcmlQcmVmaXg6ICIvamVua2lucyIKICAjIEVuYWJsZSBwb2Qgc2VjdXJpdHkgY29udGV4dCAobXVzdCBiZSBgdHJ1ZWAgaWYgUnVuQXNVc2VyIG9yIEZzR3JvdXAgYXJlIHNldCkKICBVc2VQb2RTZWN1cml0eUNvbnRleHQ6IHRydWUKICAjIFNldCBSdW5Bc1VzZXIgdG8gMTAwMCB0byBsZXQgSmVua2lucyBydW4gYXMgbm9uLXJvb3QgdXNlciAnamVua2lucycgd2hpY2ggZXhpc3RzIGluICdqZW5raW5zL2plbmtpbnMnIGRvY2tlciBpbWFnZS4KICAjIFdoZW4gc2V0dGluZyBSdW5Bc1VzZXIgdG8gYSBkaWZmZXJlbnQgdmFsdWUgdGhhbiAwIGFsc28gc2V0IEZzR3JvdXAgdG8gdGhlIHNhbWUgdmFsdWU6CiAgIyBSdW5Bc1VzZXI6IDxkZWZhdWx0cyB0byAwPgogICMgRnNHcm91cDogPHdpbGwgYmUgb21pdHRlZCBpbiBkZXBsb3ltZW50IGlmIFJ1bkFzVXNlciBpcyAwPgogIFNlcnZpY2VQb3J0OiA4MDgwCiAgIyBGb3IgbWluaWt1YmUsIHNldCB0aGlzIHRvIE5vZGVQb3J0LCBlbHNld2hlcmUgdXNlIExvYWRCYWxhbmNlcgogICMgVXNlIENsdXN0ZXJJUCBpZiB5b3VyIHNldHVwIGluY2x1ZGVzIGluZ3Jlc3MgY29udHJvbGxlcgogIFNlcnZpY2VUeXBlOiBMb2FkQmFsYW5jZXIKICAjIE1hc3RlciBTZXJ2aWNlIGFubm90YXRpb25zCiAgU2VydmljZUFubm90YXRpb25zOiB7fQogICMgICBzZXJ2aWNlLmJldGEua3ViZXJuZXRlcy5pby9hd3MtbG9hZC1iYWxhbmNlci1iYWNrZW5kLXByb3RvY29sOiBodHRwcwogICMgVXNlZCB0byBjcmVhdGUgSW5ncmVzcyByZWNvcmQgKHNob3VsZCB1c2VkIHdpdGggU2VydmljZVR5cGU6IENsdXN0ZXJJUCkKICAjIEhvc3ROYW1lOiBqZW5raW5zLmNsdXN0ZXIubG9jYWwKICAjIE5vZGVQb3J0OiA8dG8gc2V0IGV4cGxpY2l0bHksIGNob29zZSBwb3J0IGJldHdlZW4gMzAwMDAtMzI3NjcKICAjIEVuYWJsZSBLdWJlcm5ldGVzIExpdmVuZXNzIGFuZCBSZWFkaW5lc3MgUHJvYmVzCiAgIyB+IDIgbWludXRlcyB0byBhbGxvdyBKZW5raW5zIHRvIHJlc3RhcnQgd2hlbiB1cGdyYWRpbmcgcGx1Z2lucy4gU2V0IFJlYWRpbmVzc1RpbWVvdXQgdG8gYmUgc2hvcnRlciB0aGFuIExpdmVuZXNzVGltZW91dC4KICBIZWFsdGhQcm9iZXM6IHRydWUKICBIZWFsdGhQcm9iZXNMaXZlbmVzc1RpbWVvdXQ6IDkwCiAgSGVhbHRoUHJvYmVzUmVhZGluZXNzVGltZW91dDogNjAKICBIZWFsdGhQcm9iZUxpdmVuZXNzRmFpbHVyZVRocmVzaG9sZDogMTIKICBTbGF2ZUxpc3RlbmVyUG9ydDogNTAwMDAKICBEaXNhYmxlZEFnZW50UHJvdG9jb2xzOgogICAgLSBKTkxQLWNvbm5lY3QKICAgIC0gSk5MUDItY29ubmVjdAogIENTUkY6CiAgICBEZWZhdWx0Q3J1bWJJc3N1ZXI6CiAgICAgIEVuYWJsZWQ6IHRydWUKICAgICAgUHJveHlDb21wYXRhYmlsaXR5OiB0cnVlCiAgQ0xJOiBmYWxzZQogICMgS3ViZXJuZXRlcyBzZXJ2aWNlIHR5cGUgZm9yIHRoZSBKTkxQIHNsYXZlIHNlcnZpY2UKICAjIFNFVFRJTkcgVEhJUyBUTyAiTG9hZEJhbGFuY2VyIiBJUyBBIEhVR0UgU0VDVVJJVFkgUklTSzogaHR0cHM6Ly9naXRodWIuY29tL2t1YmVybmV0ZXMvY2hhcnRzL2lzc3Vlcy8xMzQxCiAgU2xhdmVMaXN0ZW5lclNlcnZpY2VUeXBlOiBDbHVzdGVySVAKICBTbGF2ZUxpc3RlbmVyU2VydmljZUFubm90YXRpb25zOiB7fQogIExvYWRCYWxhbmNlclNvdXJjZVJhbmdlczoKICAtIDAuMC4wLjAvMAogICMgT3B0aW9uYWxseSBhc3NpZ24gYSBrbm93biBwdWJsaWMgTEIgSVAKICAjIExvYWRCYWxhbmNlcklQOiAxLjIuMy40CiAgIyBPcHRpb25hbGx5IGNvbmZpZ3VyZSBhIEpNWCBwb3J0CiAgIyByZXF1aXJlcyBhZGRpdGlvbmFsIEphdmFPcHRzLCBpZQogICMgSmF2YU9wdHM6ID4KICAjICAgLURjb20uc3VuLm1hbmFnZW1lbnQuam14cmVtb3RlLnBvcnQ9NDAwMAogICMgICAtRGNvbS5zdW4ubWFuYWdlbWVudC5qbXhyZW1vdGUuYXV0aGVudGljYXRlPWZhbHNlCiAgIyAgIC1EY29tLnN1bi5tYW5hZ2VtZW50LmpteHJlbW90ZS5zc2w9ZmFsc2UKICAjIEpNWFBvcnQ6IDQwMDAKICAjIE9wdGlvbmFsbHkgY29uZmlndXJlIG90aGVyIHBvcnRzIHRvIGV4cG9zZSBpbiB0aGUgTWFzdGVyIGNvbnRhaW5lcgogIEV4dHJhUG9ydHM6CiAgIyAtIG5hbWU6IEJ1aWxkSW5mb1Byb3h5CiAgIyAgIHBvcnQ6IDkwMDAKICAjIExpc3Qgb2YgcGx1Z2lucyB0byBiZSBpbnN0YWxsIGR1cmluZyBKZW5raW5zIG1hc3RlciBzdGFydAogIEluc3RhbGxQbHVnaW5zOgogICAgLSBrdWJlcm5ldGVzOjEuMTIuNAogICAgLSB3b3JrZmxvdy1qb2I6Mi4yNAogICAgLSB3b3JrZmxvdy1hZ2dyZWdhdG9yOjIuNQogICAgLSBjcmVkZW50aWFscy1iaW5kaW5nOjEuMTYKICAgIC0gZ2l0OjMuOS4xCiAgIyBVc2VkIHRvIGFwcHJvdmUgYSBsaXN0IG9mIGdyb292eSBmdW5jdGlvbnMgaW4gcGlwZWxpbmVzIHVzZWQgdGhlIHNjcmlwdC1zZWN1cml0eSBwbHVnaW4uIENhbiBiZSB2aWV3ZWQgdW5kZXIgL3NjcmlwdEFwcHJvdmFsCiAgIyBTY3JpcHRBcHByb3ZhbDoKICAjICAgLSAibWV0aG9kIGdyb292eS5qc29uLkpzb25TbHVycGVyQ2xhc3NpYyBwYXJzZVRleHQgamF2YS5sYW5nLlN0cmluZyIKICAjICAgLSAibmV3IGdyb292eS5qc29uLkpzb25TbHVycGVyQ2xhc3NpYyIKICAjIExpc3Qgb2YgZ3Jvb3Z5IGluaXQgc2NyaXB0cyB0byBiZSBleGVjdXRlZCBkdXJpbmcgSmVua2lucyBtYXN0ZXIgc3RhcnQKICBJbml0U2NyaXB0czoKICAjICAtIHwKICAjICAgIHByaW50ICdhZGRpbmcgZ2xvYmFsIHBpcGVsaW5lIGxpYnJhcmllcywgcmVnaXN0ZXIgcHJvcGVydGllcywgYm9vdHN0cmFwIGpvYnMuLi4nCiAgIyBLdWJlcm5ldGVzIHNlY3JldCB0aGF0IGNvbnRhaW5zIGEgJ2NyZWRlbnRpYWxzLnhtbCcgZm9yIEplbmtpbnMKICAjIENyZWRlbnRpYWxzWG1sU2VjcmV0OiBqZW5raW5zLWNyZWRlbnRpYWxzCiAgIyBLdWJlcm5ldGVzIHNlY3JldCB0aGF0IGNvbnRhaW5zIGZpbGVzIHRvIGJlIHB1dCBpbiB0aGUgSmVua2lucyAnc2VjcmV0cycgZGlyZWN0b3J5LAogICMgdXNlZnVsIHRvIG1hbmFnZSBlbmNyeXB0aW9uIGtleXMgdXNlZCBmb3IgY3JlZGVudGlhbHMueG1sIGZvciBpbnN0YW5jZSAoc3VjaCBhcwogICMgbWFzdGVyLmtleSBhbmQgaHVkc29uLnV0aWwuU2VjcmV0KQogICMgU2VjcmV0c0ZpbGVzU2VjcmV0OiBqZW5raW5zLXNlY3JldHMKICAjIEplbmtpbnMgWE1MIGpvYiBjb25maWdzIHRvIHByb3Zpc2lvbgogICMgSm9iczogfC0KICAjICAgdGVzdDogfC0KICAjICAgICA8PHhtbCBoZXJlPj4KICBDdXN0b21Db25maWdNYXA6IGZhbHNlCiAgIyBCeSBkZWZhdWx0LCB0aGUgY29uZmlnTWFwIGlzIG9ubHkgdXNlZCB0byBzZXQgdGhlIGluaXRpYWwgY29uZmlnIHRoZSBmaXJzdCB0aW1lCiAgIyB0aGF0IHRoZSBjaGFydCBpcyBpbnN0YWxsZWQuICBTZXR0aW5nIGBPdmVyd3JpdGVDb25maWdgIHRvIGB0cnVlYCB3aWxsIG92ZXJ3cml0ZQogICMgdGhlIGplbmtpbnMgY29uZmlnIHdpdGggdGhlIGNvbnRlbnRzIG9mIHRoZSBjb25maWdNYXAgZXZlcnkgdGltZSB0aGUgcG9kIHN0YXJ0cy4KICBPdmVyd3JpdGVDb25maWc6IGZhbHNlCiAgIyBOb2RlIGxhYmVscyBhbmQgdG9sZXJhdGlvbnMgZm9yIHBvZCBhc3NpZ25tZW50CiAgIyByZWY6IGh0dHBzOi8va3ViZXJuZXRlcy5pby9kb2NzL2NvbmNlcHRzL2NvbmZpZ3VyYXRpb24vYXNzaWduLXBvZC1ub2RlLyNub2Rlc2VsZWN0b3IKICAjIHJlZjogaHR0cHM6Ly9rdWJlcm5ldGVzLmlvL2RvY3MvY29uY2VwdHMvY29uZmlndXJhdGlvbi9hc3NpZ24tcG9kLW5vZGUvI3RhaW50cy1hbmQtdG9sZXJhdGlvbnMtYmV0YS1mZWF0dXJlCiAgTm9kZVNlbGVjdG9yOiB7fQogIFRvbGVyYXRpb25zOiB7fQogIFBvZEFubm90YXRpb25zOiB7fQoKICBJbmdyZXNzOgogICAgQXBpVmVyc2lvbjogZXh0ZW5zaW9ucy92MWJldGExCiAgICBBbm5vdGF0aW9uczoge30KICAgICMga3ViZXJuZXRlcy5pby9pbmdyZXNzLmNsYXNzOiBuZ2lueAogICAgIyBrdWJlcm5ldGVzLmlvL3Rscy1hY21lOiAidHJ1ZSIKCiAgICBUTFM6CiAgICAjIC0gc2VjcmV0TmFtZTogamVua2lucy5jbHVzdGVyLmxvY2FsCiAgICAjICAgaG9zdHM6CiAgICAjICAgICAtIGplbmtpbnMuY2x1c3Rlci5sb2NhbAoKQWdlbnQ6CiAgRW5hYmxlZDogdHJ1ZQogIEltYWdlOiBqZW5raW5zL2pubHAtc2xhdmUKICBJbWFnZVRhZzogMy4xMC0xCiAgQ3VzdG9tSmVua2luc0xhYmVsczogW10KIyBJbWFnZVB1bGxTZWNyZXQ6IGplbmtpbnMKICBDb21wb25lbnQ6ICJqZW5raW5zLXNsYXZlIgogIFByaXZpbGVnZWQ6IGZhbHNlCiAgcmVzb3VyY2VzOgogICAgcmVxdWVzdHM6CiAgICAgIGNwdTogIjIwMG0iCiAgICAgIG1lbW9yeTogIjI1Nk1pIgogICAgbGltaXRzOgogICAgICBjcHU6ICIyMDBtIgogICAgICBtZW1vcnk6ICIyNTZNaSIKICAjIFlvdSBtYXkgd2FudCB0byBjaGFuZ2UgdGhpcyB0byB0cnVlIHdoaWxlIHRlc3RpbmcgYSBuZXcgaW1hZ2UKICBBbHdheXNQdWxsSW1hZ2U6IGZhbHNlCiAgIyBDb250cm9scyBob3cgc2xhdmUgcG9kcyBhcmUgcmV0YWluZWQgYWZ0ZXIgdGhlIEplbmtpbnMgYnVpbGQgY29tcGxldGVzCiAgIyBQb3NzaWJsZSB2YWx1ZXM6IEFsd2F5cywgTmV2ZXIsIE9uRmFpbHVyZQogIFBvZFJldGVudGlvbjogTmV2ZXIKICAjIFlvdSBjYW4gZGVmaW5lIHRoZSB2b2x1bWVzIHRoYXQgeW91IHdhbnQgdG8gbW91bnQgZm9yIHRoaXMgY29udGFpbmVyCiAgIyBBbGxvd2VkIHR5cGVzIGFyZTogQ29uZmlnTWFwLCBFbXB0eURpciwgSG9zdFBhdGgsIE5mcywgUG9kLCBTZWNyZXQKICAjIENvbmZpZ3VyZSB0aGUgYXR0cmlidXRlcyBhcyB0aGV5IGFwcGVhciBpbiB0aGUgY29ycmVzcG9uZGluZyBKYXZhIGNsYXNzIGZvciB0aGF0IHR5cGUKICAjIGh0dHBzOi8vZ2l0aHViLmNvbS9qZW5raW5zY2kva3ViZXJuZXRlcy1wbHVnaW4vdHJlZS9tYXN0ZXIvc3JjL21haW4vamF2YS9vcmcvY3NhbmNoZXovamVua2lucy9wbHVnaW5zL2t1YmVybmV0ZXMvdm9sdW1lcwogIHZvbHVtZXM6CiAgIyAtIHR5cGU6IFNlY3JldAogICMgICBzZWNyZXROYW1lOiBteXNlY3JldAogICMgICBtb3VudFBhdGg6IC92YXIvbXlhcHAvbXlzZWNyZXQKICBOb2RlU2VsZWN0b3I6IHt9CiAgIyBLZXkgVmFsdWUgc2VsZWN0b3JzLiBFeDoKICAjIGplbmtpbnMtYWdlbnQ6IHYxCgpQZXJzaXN0ZW5jZToKICBFbmFibGVkOiB0cnVlCiAgIyMgQSBtYW51YWxseSBtYW5hZ2VkIFBlcnNpc3RlbnQgVm9sdW1lIGFuZCBDbGFpbQogICMjIFJlcXVpcmVzIFBlcnNpc3RlbmNlLkVuYWJsZWQ6IHRydWUKICAjIyBJZiBkZWZpbmVkLCBQVkMgbXVzdCBiZSBjcmVhdGVkIG1hbnVhbGx5IGJlZm9yZSB2b2x1bWUgd2lsbCBiZSBib3VuZAogICMgRXhpc3RpbmdDbGFpbToKCiAgIyMgamVua2lucyBkYXRhIFBlcnNpc3RlbnQgVm9sdW1lIFN0b3JhZ2UgQ2xhc3MKICAjIyBJZiBkZWZpbmVkLCBzdG9yYWdlQ2xhc3NOYW1lOiA8c3RvcmFnZUNsYXNzPgogICMjIElmIHNldCB0byAiLSIsIHN0b3JhZ2VDbGFzc05hbWU6ICIiLCB3aGljaCBkaXNhYmxlcyBkeW5hbWljIHByb3Zpc2lvbmluZwogICMjIElmIHVuZGVmaW5lZCAodGhlIGRlZmF1bHQpIG9yIHNldCB0byBudWxsLCBubyBzdG9yYWdlQ2xhc3NOYW1lIHNwZWMgaXMKICAjIyAgIHNldCwgY2hvb3NpbmcgdGhlIGRlZmF1bHQgcHJvdmlzaW9uZXIuICAoZ3AyIG9uIEFXUywgc3RhbmRhcmQgb24KICAjIyAgIEdLRSwgQVdTICYgT3BlblN0YWNrKQogICMjCiAgIyBTdG9yYWdlQ2xhc3M6ICItIgoKICBBbm5vdGF0aW9uczoge30KICBBY2Nlc3NNb2RlOiBSZWFkV3JpdGVPbmNlCiAgU2l6ZTogOEdpCiAgdm9sdW1lczoKICAjICAtIG5hbWU6IG5vdGhpbmcKICAjICAgIGVtcHR5RGlyOiB7fQogIG1vdW50czoKICAjICAtIG1vdW50UGF0aDogL3Zhci9ub3RoaW5nCiAgIyAgICBuYW1lOiBub3RoaW5nCiAgIyAgICByZWFkT25seTogdHJ1ZQoKTmV0d29ya1BvbGljeToKICAjIEVuYWJsZSBjcmVhdGlvbiBvZiBOZXR3b3JrUG9saWN5IHJlc291cmNlcy4KICBFbmFibGVkOiBmYWxzZQogICMgRm9yIEt1YmVybmV0ZXMgdjEuNCwgdjEuNSBhbmQgdjEuNiwgdXNlICdleHRlbnNpb25zL3YxYmV0YTEnCiAgIyBGb3IgS3ViZXJuZXRlcyB2MS43LCB1c2UgJ25ldHdvcmtpbmcuazhzLmlvL3YxJwogIEFwaVZlcnNpb246IGV4dGVuc2lvbnMvdjFiZXRhMQoKIyMgSW5zdGFsbCBEZWZhdWx0IFJCQUMgcm9sZXMgYW5kIGJpbmRpbmdzCnJiYWM6CiAgaW5zdGFsbDogZmFsc2UKICBzZXJ2aWNlQWNjb3VudE5hbWU6IGRlZmF1bHQKICAjIFJvbGUgcmVmZXJlbmNlCiAgcm9sZVJlZjogY2x1c3Rlci1hZG1pbgogICMgUm9sZSBraW5kIChSb2xlQmluZGluZyBvciBDbHVzdGVyUm9sZUJpbmRpbmcpCiAgcm9sZUJpbmRpbmdLaW5kOiBDbHVzdGVyUm9sZUJpbmRpbmcK"
   116          }
   117        ]
   118      },
   119      "contentSHA": "f19d8cd21704fb28480ac2f4b590522cf1686ae3b2bc2c6e7eb71da9b169947a"
   120    }
   121  }