all:
  hosts:
    ubuntu-noble:
      ansible_connection: ssh
      ansible_host: 81.163.192.171
      ansible_port: 22
      ansible_python_interpreter: auto
      ansible_user: zuul
      nodepool:
        az: nova
        cloud: regiocloud-a-ci
        external_id: 264e6310-9465-467c-b5ce-139c6f6b6163
        host_id: 0d3d02185f810c959252bd1d303ec55040bf5bb0b401cceef814c3a7
        interface_ip: 81.163.192.171
        label: ubuntu-noble
        private_ipv4: 10.128.0.103
        private_ipv6: null
        provider: regiocloud-a
        public_ipv4: 81.163.192.171
        public_ipv6: ''
        region: null
        slot: null
  vars:
    zuul:
      _inheritance_path:
      - '<Job base branches: None source: osism/zuul-config/zuul.d/jobs.yaml@main#2>'
      - '<Job python-black branches: None source: osism/zuul-jobs/.zuul.yaml@main#54>'
      - '<Job python-black branches: None source: osism/testbed/.zuul.yaml@main#195>'
      ansible_version: '8'
      attempts: 1
      branch: main
      build: db809419dafa4491a1787b57f2ed4289
      buildset: f1e732f82b61409b9853eec7089312ae
      change: '2654'
      change_message: "chore(deps): update dependency gruntwork-io/terragrunt to v0.77.21\n\
        \nThis PR contains the following updates:\n\n| Package | Update | Change |\n\
        |---|---|---|\n| [gruntwork-io/terragrunt](https://redirect.github.com/gruntwork-io/terragrunt)\
        \ | patch | `v0.77.3` -> `v0.77.21` |\n\n---\n\n### Release Notes\n\n<details>\n\
        <summary>gruntwork-io/terragrunt (gruntwork-io/terragrunt)</summary>\n\n###\
        \ [`v0.77.21`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.21)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.20...v0.77.21)\n\
        \n#### \u2728 New Features\n\n##### Introduction of `hcl` commands\n\nAs part\
        \ of the [CLI Redesign](https://terragrunt.gruntwork.io/docs/reference/experiments/#cli-redesign)\
        \ experiment, the [`hcl`](https://terragrunt.gruntwork.io/docs/reference/cli-options/#hcl-commands)\
        \ commands has been introduced.\n\nThe `hcl` commands allow users to directly\
        \ interact with HCL content independent of the underlying functionality they\
        \ support.\n\nThe functionality of the `hcl` commands replace existing functionality\
        \ that is soon to be deprecated:\n\n-   `hclfmt` --> `hcl fmt`\n-   `hclvalidate`\
        \ --> `hcl validate`\n-   `validate-inputs` --> `hcl validate --inputs`\n\
        -   `validate-inputs --strict-validate` --> `hcl validate --inputs --strict`\n\
        \n#### What's Changed\n\n-   feat: `hcl` commands docs by [@&#8203;levkohimins](https://redirect.github.com/levkohimins)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4180](https://redirect.github.com/gruntwork-io/terragrunt/pull/4180)\n\
        -   feat: add symbol link experiemnt in discovery process by [@&#8203;denis256](https://redirect.github.com/denis256)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4177](https://redirect.github.com/gruntwork-io/terragrunt/pull/4177)\n\
        -   feat: Implementation of `hcl` commands by [@&#8203;levkohimins](https://redirect.github.com/levkohimins)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4169](https://redirect.github.com/gruntwork-io/terragrunt/pull/4169)\n\
        -   fix: Adding redirect from /docs/reference/experiment-mode to /docs/reference/experiments\
        \ by [@&#8203;yhakbar](https://redirect.github.com/yhakbar) in [https://github.com/gruntwork-io/terragrunt/pull/4178](https://redirect.github.com/gruntwork-io/terragrunt/pull/4178)\n\
        -   fix: Fix spelling by [@&#8203;hpe-noinarisak](https://redirect.github.com/hpe-noinarisak)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4179](https://redirect.github.com/gruntwork-io/terragrunt/pull/4179)\n\
        -   fix: Update status of cli-redesign experiment by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4188](https://redirect.github.com/gruntwork-io/terragrunt/pull/4188)\n\
        -   build(deps): bump github.com/charmbracelet/bubbles from 0.20.0 to 0.21.0\
        \ by [@&#8203;dependabot](https://redirect.github.com/dependabot) in [https://github.com/gruntwork-io/terragrunt/pull/4160](https://redirect.github.com/gruntwork-io/terragrunt/pull/4160)\n\
        \n#### New Contributors\n\n-   [@&#8203;hpe-noinarisak](https://redirect.github.com/hpe-noinarisak)\
        \ made their first contribution in [https://github.com/gruntwork-io/terragrunt/pull/4179](https://redirect.github.com/gruntwork-io/terragrunt/pull/4179)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.20...v0.77.21\n\
        \n### [`v0.77.20`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.20)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.19...v0.77.20)\n\
        \n#### What's Changed\n\n-   build: Added `build-no-proxy.yml` workflow by\
        \ [@&#8203;yhakbar](https://redirect.github.com/yhakbar) in [https://github.com/gruntwork-io/terragrunt/pull/4171](https://redirect.github.com/gruntwork-io/terragrunt/pull/4171)\n\
        -   build: Added `lint.yml` and `strict-lint.yml` workflows for GitHub Actions\
        \ by [@&#8203;yhakbar](https://redirect.github.com/yhakbar) in [https://github.com/gruntwork-io/terragrunt/pull/4172](https://redirect.github.com/gruntwork-io/terragrunt/pull/4172)\n\
        -   build: Added codespell workflow by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4173](https://redirect.github.com/gruntwork-io/terragrunt/pull/4173)\n\
        -   build: Added markdownlint v2 to GitHub Actions workflows by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4175](https://redirect.github.com/gruntwork-io/terragrunt/pull/4175)\n\
        -   docs: Improved getting started guide by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4174](https://redirect.github.com/gruntwork-io/terragrunt/pull/4174)\n\
        -   build(deps): bump github.com/ProtonMail/go-crypto from 1.1.6 to 1.2.0\
        \ by [@&#8203;dependabot](https://redirect.github.com/dependabot) in [https://github.com/gruntwork-io/terragrunt/pull/4161](https://redirect.github.com/gruntwork-io/terragrunt/pull/4161)\n\
        -   build(deps): bump golang.org/x/term from 0.30.0 to 0.31.0 by [@&#8203;dependabot](https://redirect.github.com/dependabot)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4159](https://redirect.github.com/gruntwork-io/terragrunt/pull/4159)\n\
        -   build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.78.2\
        \ to 1.79.2 by [@&#8203;dependabot](https://redirect.github.com/dependabot)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4158](https://redirect.github.com/gruntwork-io/terragrunt/pull/4158)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.19...v0.77.20\n\
        \n### [`v0.77.19`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.19)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.18...v0.77.19)\n\
        \n#### \u2728 New Features\n\n##### OpenTelemetry traces are now integrated\
        \ into `find` and `list` commands\n\nfind telemetry:\n![image](https://redirect.github.com/user-attachments/assets/eb5ff11a-e90f-4b5d-bec0-c99cb1419f57)\n\
        \nlist telemetry:\n![image](https://redirect.github.com/user-attachments/assets/7af232f1-e822-4aae-8230-12257c359d21)\n\
        \n#### What's Changed\n\n-   feat: Implemented telemetry for find/list by\
        \ [@&#8203;denis256](https://redirect.github.com/denis256) in [https://github.com/gruntwork-io/terragrunt/pull/4165](https://redirect.github.com/gruntwork-io/terragrunt/pull/4165)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.18...v0.77.19\n\
        \n### [`v0.77.18`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.18)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.17...v0.77.18)\n\
        \n#### \u2728 New Features\n\n##### Support for HCL formatting with the `render`\
        \ command\n\nAs part of the [CLI Redesign](https://terragrunt.gruntwork.io/docs/reference/experiments/#cli-redesign)\
        \ experiment, the [`render`](https://terragrunt.gruntwork.io/docs/reference/cli-options/#backend-migrate)\
        \ command now supports HCL formatting for rendered configurations, which is\
        \ the default output format.\n\nUsing the `render` command with HCL formatting\
        \ allows users to get a quick, minimal evaluation of Terragrunt unit configurations\
        \ with as much pre-processing done as possible.\n\nFor example, the following\
        \ `terragrunt.hcl` file:\n\n```hcl\n\n### terragrunt.hcl\n\nlocals {\n  aws_region\
        \ = \"us-east-1\"\n}\n\ninputs = {\n  aws_region = local.aws_region\n}\n```\n\
        \nRenders to the following HCL:\n\n```bash\n$ terragrunt render\nlocals {\n\
        \  aws_region = \"us-east-1\"\n}\ninputs = {\n  aws_region = \"us-east-1\"\
        \n}\n```\n\nUsing the `render` command with HCL formatting offers a way to\
        \ resolve complex HCL function evaluation, include merging or string interpolation,\
        \ etc. to achieve equivalent Terragrunt HCL configurations that are easier\
        \ to reason about.\n\n#### What's Changed\n\n-   feat: Adding `render` with\
        \ HCL formatting by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4164](https://redirect.github.com/gruntwork-io/terragrunt/pull/4164)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.17...v0.77.18\n\
        \n### [`v0.77.17`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.17)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.16...v0.77.17)\n\
        \n#### \u2728 New Features\n\n##### Introduction of the `render` command\n\
        \nAs part of the [CLI Redesign](https://terragrunt.gruntwork.io/docs/reference/experiments/#cli-redesign)\
        \ experiment, the [`render`](https://terragrunt.gruntwork.io/docs/reference/cli-options/#backend-migrate)\
        \ command has been introduced.\n\nThe `render` command allows users to easily\
        \ render Terragrunt unit configurations with reduced complexity, making it\
        \ easier to understand configurations at a glance.\n\nFor example, the following\
        \ `terragrunt.hcl` file:\n\n```hcl\n\n### terragrunt.hcl\n\nlocals {\n  aws_region\
        \ = \"us-east-1\"\n}\n\ninputs = {\n  aws_region = local.aws_region\n}\n```\n\
        \nRenders to the following JSON:\n\n```bash\n$ terragrunt render --format\
        \ json\n{\n  \"locals\": { \"aws_region\": \"us-east-1\" },\n  \"inputs\"\
        : { \"aws_region\": \"us-east-1\" }\n  // NOTE: other attributes are omitted\
        \ for brevity\n}\n```\n\nThe introduction of the `render` command is part\
        \ of the eventual deprecation of the existing `render-json` command, which\
        \ will be deprecated by the end of the CLI Redesign. The `render` command\
        \ is a higher level command, that offers the ability to write to stdout, in\
        \ addition to writing to files, and will support HCL configurations in addition\
        \ to JSON (coming soon).\n\nTo learn more about the `render` command, read\
        \ the official documentation [here](https://terragrunt.gruntwork.io/docs/reference/cli-options/#render).\n\
        \n#### What's Changed\n\n-   feat: Adding `render` command by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4145](https://redirect.github.com/gruntwork-io/terragrunt/pull/4145)\n\
        -   feat: Adding docs for `backend migrate` by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4140](https://redirect.github.com/gruntwork-io/terragrunt/pull/4140)\n\
        -   build(deps): bump ruby/setup-ruby from 1.229.0 to 1.230.0 by [@&#8203;dependabot](https://redirect.github.com/dependabot)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4162](https://redirect.github.com/gruntwork-io/terragrunt/pull/4162)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.16...v0.77.17\n\
        \n### [`v0.77.16`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.16)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.15...v0.77.16)\n\
        \n#### \u2728 New Features\n\n##### Introduction of the `backend migrate`\
        \ command\n\nAs part of the [CLI Redesign](https://terragrunt.gruntwork.io/docs/reference/experiments/#cli-redesign)\
        \ experiment, the [`backend migrate`](https://terragrunt.gruntwork.io/docs/reference/cli-options/#backend-migrate)\
        \ command has been introduced.\n\nThe `backend migrate` command allows you\
        \ to simply migrate state between different units (or renames of units) without\
        \ manually running OpenTofu/Terraform state migration commands.\n\nTo learn\
        \ more about the `backend migrate` command, read the [official docs](https://terragrunt.gruntwork.io/docs/reference/cli-options/#backend-migrate).\n\
        \n#### What's Changed\n\n-   feat: Added support for migrating state between\
        \ different backends by [@&#8203;levkohimins](https://redirect.github.com/levkohimins)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4154](https://redirect.github.com/gruntwork-io/terragrunt/pull/4154)\n\
        -   feat: Enhanced error explainer to detect and report issues related to\
        \ `stack` values by [@&#8203;denis256](https://redirect.github.com/denis256)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4163](https://redirect.github.com/gruntwork-io/terragrunt/pull/4163)\n\
        -   fix: Improved the deprecation message for experimental command flags by\
        \ [@&#8203;levkohimins](https://redirect.github.com/levkohimins) in [https://github.com/gruntwork-io/terragrunt/pull/4146](https://redirect.github.com/gruntwork-io/terragrunt/pull/4146)\n\
        -   fix: Prevent `TF_CLI_CONFIG_FILE` environment variable from being overwritten,\
        \ except during `init` and `providers` commands by [@&#8203;levkohimins](https://redirect.github.com/levkohimins)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4155](https://redirect.github.com/gruntwork-io/terragrunt/pull/4155)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.15...v0.77.16\n\
        \n### [`v0.77.15`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.15)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.14...v0.77.15)\n\
        \n#### \u2728 New Features\n\n##### Introduction of the `dag graph` command\n\
        \nAs part of the [CLI Redesign](https://terragrunt.gruntwork.io/docs/reference/experiments/#cli-redesign)\
        \ experiment, the [`dag graph`](https://terragrunt.gruntwork.io/docs/reference/cli-options/#print-graph)\
        \ command has been introduced.\n\n![dag](https://redirect.github.com/user-attachments/assets/389d4e31-197c-4c37-8913-1417ecd3e5b4)\n\
        \n![dag-help](https://redirect.github.com/user-attachments/assets/2525cd27-0d8e-457b-87ea-759fae31e2f3)\n\
        \n![dag-graph-help](https://redirect.github.com/user-attachments/assets/fb268b20-f32b-4b4f-ba13-0d1fc9fca748)\n\
        \n#### What's Changed\n\n-   docs: Added migration guide for adopting Terragrunt\
        \ Stacks by [@&#8203;yhakbar](https://redirect.github.com/yhakbar) in [https://github.com/gruntwork-io/terragrunt/pull/4152](https://redirect.github.com/gruntwork-io/terragrunt/pull/4152)\n\
        -   feat: Added dag graph command by [@&#8203;denis256](https://redirect.github.com/denis256)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4143](https://redirect.github.com/gruntwork-io/terragrunt/pull/4143)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.14...v0.77.15\n\
        \n### [`v0.77.14`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.14)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.13...v0.77.14)\n\
        \n#### \u2728 New Features\n\n##### Support for `--exclude` and `--queue-construct-as`\
        \ in `find` and `list`\n\nThe [`find`](https://terragrunt.gruntwork.io/docs/reference/cli-options/#find)\
        \ and [`list`](https://terragrunt.gruntwork.io/docs/reference/cli-options/#list)\
        \ commands have been updated to leverage new capabilities involving greater\
        \ understanding of the Terragrunt run queue.\n\nUsers can now leverage the\
        \ [`--queue-construct-as`](https://terragrunt.gruntwork.io/docs/reference/cli-options/#find-queue-construct-as)\
        \ (or just `--as`) flag in the `find` and `list` commands to discover configurations\
        \ as if a particular Terragrunt command was being run (e.g. `plan`, `destroy`).\n\
        \nFor example:\n\n```bash\n$ terragrunt find --queue-construct-as=plan\nstacks/live/dev\n\
        stacks/live/prod\nunits/live/dev/vpc\nunits/live/prod/vpc\nunits/live/dev/db\n\
        units/live/prod/db\nunits/live/dev/ec2\nunits/live/prod/ec2\n```\n\n```bash\n\
        $ terragrunt find --as=destroy\nstacks/live/dev\nstacks/live/prod\nunits/live/dev/ec2\n\
        units/live/prod/ec2\nunits/live/dev/db\nunits/live/prod/db\nunits/live/dev/vpc\n\
        units/live/prod/vpc\n```\n\nThe `find` and `list` commands will now construct\
        \ the Terragrunt run queue as if a particular command was being run, potentially\
        \ altering the position of elements in the run queue, based on their dependencies\
        \ (dependencies before dependents for plans, applies, etc. and dependents\
        \ before dependencies for destroys).\n\nIn addition, users can leverage the\
        \ [`--exclude`](https://terragrunt.gruntwork.io/docs/reference/cli-options/#find-exclude)\
        \ flag on the `find` command to get information on the `exclude` block included\
        \ in results. The `exclude` block is also factored in to discovery results\
        \ when the `--queue-construct-as` flag is passed, allowing users to dry-run\
        \ behavior of the `exclude` block before performing any Terragrunt runs.\n\
        \n#### What's Changed\n\n-   feat: Adding exclude support to list and find\
        \ by [@&#8203;yhakbar](https://redirect.github.com/yhakbar) in [https://github.com/gruntwork-io/terragrunt/pull/4147](https://redirect.github.com/gruntwork-io/terragrunt/pull/4147)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.13...v0.77.14\n\
        \n### [`v0.77.13`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.13)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.12...v0.77.13)\n\
        \n#### What's Changed\n\n-   build(deps): bump google.golang.org/grpc from\
        \ 1.71.0 to 1.71.1 by [@&#8203;dependabot](https://redirect.github.com/dependabot)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4132](https://redirect.github.com/gruntwork-io/terragrunt/pull/4132)\n\
        -   build(deps): bump golang.org/x/sys from 0.31.0 to 0.32.0 by [@&#8203;dependabot](https://redirect.github.com/dependabot)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4133](https://redirect.github.com/gruntwork-io/terragrunt/pull/4133)\n\
        -   build(deps): bump golang.org/x/oauth2 from 0.28.0 to 0.29.0 by [@&#8203;dependabot](https://redirect.github.com/dependabot)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4131](https://redirect.github.com/gruntwork-io/terragrunt/pull/4131)\n\
        -   build(deps): bump github.com/getsops/sops/v3 from 3.9.4 to 3.10.1 by [@&#8203;dependabot](https://redirect.github.com/dependabot)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4130](https://redirect.github.com/gruntwork-io/terragrunt/pull/4130)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.12...v0.77.13\n\
        \n### [`v0.77.12`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.12)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.11...v0.77.12)\n\
        \n#### \u2728 New Features\n\nIntroduced `no_validation` attribute for `stack`\
        \ and `unit`, allowing users to bypass Terragrunt's validation checks when\
        \ deploying infrastructure. This is particularly useful in scenarios where\
        \ you need to deploy infrastructure that doesn't strictly adhere to Terragrunt's\
        \ validation rules, such as during emergency deployments or when working with\
        \ legacy infrastructure patterns.\n\n#### What's Changed\n\n-   docs: added\
        \ more docs for stacks by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4144](https://redirect.github.com/gruntwork-io/terragrunt/pull/4144)\n\
        -   feat: added support for `no_validation` attribute for `stack` and `unit`\
        \ by [@&#8203;denis256](https://redirect.github.com/denis256) in [https://github.com/gruntwork-io/terragrunt/pull/4149](https://redirect.github.com/gruntwork-io/terragrunt/pull/4149)\n\
        \nRFC: [https://github.com/gruntwork-io/terragrunt/issues/3313](https://redirect.github.com/gruntwork-io/terragrunt/issues/3313)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.11...v0.77.12\n\
        \n### [`v0.77.11`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.11)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.10...v0.77.11)\n\
        \n#### \u2728 New Features\n\n##### Introduction of the `info print` command\n\
        \nAs part of the [CLI Redesign](https://terragrunt.gruntwork.io/docs/reference/experiments/#cli-redesign)\
        \ experiment, the [`info print`](https://terragrunt.gruntwork.io/docs/reference/cli-options/#print-command)\
        \ command has been introduced.\n\n![help](https://redirect.github.com/user-attachments/assets/2eac4645-93c2-47dd-8dc3-73c4442bf1c8)\n\
        \n![out](https://redirect.github.com/user-attachments/assets/7005c5db-15e1-4efe-b5a8-349a179f6033)\n\
        \n#### What's Changed\n\n-   feat: Introduced the `info print` command to\
        \ output Terragrunt context as a structured JSON object by [@&#8203;denis256](https://redirect.github.com/denis256)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4122](https://redirect.github.com/gruntwork-io/terragrunt/pull/4122)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.10...v0.77.11\n\
        \n### [`v0.77.10`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.10)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.9...v0.77.10)\n\
        \n#### What's Changed\n\n-   fix: Suppressing warning for catalog when determining\
        \ default file name by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4134](https://redirect.github.com/gruntwork-io/terragrunt/pull/4134)\n\
        -   fix: Remove warning message for unimplemented backends by [@&#8203;levkohimins](https://redirect.github.com/levkohimins)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4138](https://redirect.github.com/gruntwork-io/terragrunt/pull/4138)\n\
        -   fix: Fixing optional default template by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4141](https://redirect.github.com/gruntwork-io/terragrunt/pull/4141)\n\
        -   chore: stack code improvements by [@&#8203;denis256](https://redirect.github.com/denis256)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4136](https://redirect.github.com/gruntwork-io/terragrunt/pull/4136)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.9...v0.77.10\n\
        \n### [`v0.77.9`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.9)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.8...v0.77.9)\n\
        \n#### \U0001F41B Bug fixes\n\n##### Fetching Outputs from Nested Stacks\n\
        \nResolved an issue that prevented the correct retrieval of outputs from nested\
        \ stacks.\n\n#### What's Changed\n\n-   fix: corrected the logic for fetching\
        \ outputs from nested stacks by [@&#8203;denis256](https://redirect.github.com/denis256)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4126](https://redirect.github.com/gruntwork-io/terragrunt/pull/4126)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.8...v0.77.9\n\
        \n### [`v0.77.8`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.8)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.7...v0.77.8)\n\
        \n#### \U0001F4D6 Documentation Updates\n\nA new [performance guide](https://terragrunt.gruntwork.io/docs/troubleshooting/performance/)\
        \ has been added to Terragrunt documentation to offer guidance on how performance\
        \ can be improved when using Terragrunt or contributing to the Terragrunt\
        \ codebase.\n\nThis documentation will evolve over time, as more optional\
        \ optimizations become available, or are no longer necessary, as they become\
        \ default behavior.\n\n#### What's Changed\n\n-   feat: Add performance guide\
        \ by [@&#8203;yhakbar](https://redirect.github.com/yhakbar) in [https://github.com/gruntwork-io/terragrunt/pull/4120](https://redirect.github.com/gruntwork-io/terragrunt/pull/4120)\n\
        -   build(deps): bump ruby/setup-ruby from 1.221.0 to 1.229.0 by [@&#8203;dependabot](https://redirect.github.com/dependabot)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4100](https://redirect.github.com/gruntwork-io/terragrunt/pull/4100)\n\
        -   fix: Addressing commas in external IDs by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4128](https://redirect.github.com/gruntwork-io/terragrunt/pull/4128)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.7...v0.77.8\n\
        \n### [`v0.77.7`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.7)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.6...v0.77.7)\n\
        \n#### \u2728 New Features\n\nUsers can now configure a custom default template\
        \ for `scaffold` and `catalog` commands in their `catalog` configuration blocks\
        \ like so:\n\n```hcl\ncatalog {\n  default_template = \"git@github.com/acme/example.git//path/to/template\"\
        \n}\n```\n\nFor more information, read the documentation in the [catalog feature](https://terragrunt.gruntwork.io/docs/features/catalog/#custom-templates-for-scaffolding).\n\
        \nSpecial thanks to [@&#8203;tgeijg](https://redirect.github.com/tgeijg) for\
        \ contributing this feature!\n\n#### What's Changed\n\n-   feat: Adding custom\
        \ default template [#&#8203;3658](https://redirect.github.com/gruntwork-io/terragrunt/issues/3658)\
        \ by [@&#8203;tgeijg](https://redirect.github.com/tgeijg) in [https://github.com/gruntwork-io/terragrunt/pull/4035](https://redirect.github.com/gruntwork-io/terragrunt/pull/4035)\n\
        -   fix: Updating docs after [#&#8203;4035](https://redirect.github.com/gruntwork-io/terragrunt/issues/4035)\
        \ by [@&#8203;yhakbar](https://redirect.github.com/yhakbar) in [https://github.com/gruntwork-io/terragrunt/pull/4117](https://redirect.github.com/gruntwork-io/terragrunt/pull/4117)\n\
        -   chore: stacks documentation improvements by [@&#8203;denis256](https://redirect.github.com/denis256)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4114](https://redirect.github.com/gruntwork-io/terragrunt/pull/4114)\n\
        \n#### New Contributors\n\n-   [@&#8203;tgeijg](https://redirect.github.com/tgeijg)\
        \ made their first contribution in [https://github.com/gruntwork-io/terragrunt/pull/4035](https://redirect.github.com/gruntwork-io/terragrunt/pull/4035)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.6...v0.77.7\n\
        \n### [`v0.77.6`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.6)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.5...v0.77.6)\n\
        \n#### What's Changed\n\n-   fix: Correctly ignore lock table encryption setting\
        \ to prevent unintended configuration overrides by [@&#8203;levkohimins](https://redirect.github.com/levkohimins)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4112](https://redirect.github.com/gruntwork-io/terragrunt/pull/4112)\n\
        -   fix: Introduced stricter constraints for detecting stack configuration\
        \ files by [@&#8203;denis256](https://redirect.github.com/denis256) in [https://github.com/gruntwork-io/terragrunt/pull/4113](https://redirect.github.com/gruntwork-io/terragrunt/pull/4113)\n\
        -   feat: Enabled parsing of stack configuration directly from a string input\
        \ for enhanced integration with 3rd party code by [@&#8203;denis256](https://redirect.github.com/denis256)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4110](https://redirect.github.com/gruntwork-io/terragrunt/pull/4110)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.5...v0.77.6\n\
        \n### [`v0.77.5`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.5)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.4...v0.77.5)\n\
        \n#### What's Changed\n\n-   feat: added support for OpenTelemetry in `stack`\
        \ commands to enable enhanced observability and tracing by [@&#8203;denis256](https://redirect.github.com/denis256)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4109](https://redirect.github.com/gruntwork-io/terragrunt/pull/4109)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.4...v0.77.5\n\
        \n### [`v0.77.4`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.4)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.3...v0.77.4)\n\
        \n#### \U0001F41B Bug fixes\n\n##### Newlines reduced in Error Logging for\
        \ Configuration Errors\n\nLogging for configuration errors has been compacted\
        \ to reduce noise, and make errors easier to read.\n\n```\n\n### Before\n\
        14:09:25.892 ERROR  Error: Error in function call\n\n14:09:25.892 ERROR  \
        \  on terragrunt.hcl line 3, in locals:\n\n14:09:25.892 ERROR     3:     \
        \  requires_auth = run_cmd(\"exit\", \"1\") // intentional error\n\n14:09:25.892\
        \ ERROR\n\n14:09:25.892 ERROR  Call to function \"run_cmd\" failed: Failed\
        \ to execute \"exit 1\" in .\n\nexec: \"exit\": executable file not found\
        \ in $PATH.\n\n```\n\n    ### After\n    15:19:50.937 ERROR  Error: Error\
        \ in function call\n    15:19:50.937 ERROR    on terragrunt.hcl line 3, in\
        \ locals:\n    15:19:50.937 ERROR  Error: Error in function call\n    15:19:50.937\
        \ ERROR    on terragrunt.hcl line 3, in locals:\n    15:19:50.937 ERROR  \
        \   3:       requires_auth = run_cmd(\"exit\", \"1\") // intentional error\n\
        \    15:19:50.937 ERROR     3:       fail   = run_cmd(\"exit\", \"1\") //\
        \ intentional error\n    15:19:50.937 ERROR  Call to function \"run_cmd\"\
        \ failed: Failed to execute \"exit 1\" in .\n    15:19:50.937 ERROR  exec:\
        \ \"exit\": executable file not found in $PATH.\n\n##### Improved Cycle Detection\
        \ Logic for `stack generate`\n\nOn the default filesystem for macOS, path\
        \ length was likely to result in an error before internal cycle detection\
        \ logic, so cycle detection was updated to leverage a maximum path length\
        \ of 1024 characters as an earlier exit for all operating systems.\n\n#####\
        \ Excessive warning for bootstrap requirement resolved\n\nInternal logic for\
        \ determination that backends required bootstrapping was adjusted to no longer\
        \ leverage the value of the OpenTofu state file.\n\nWhile cheaper than making\
        \ a network request to assess the current state of backend resources, it also\
        \ resulted in false negatives, which triggered excessive backend bootstrap\
        \ warnings.\n\n#### What's Changed\n\n-   fix: New lines in TF diagnostic\
        \ log by [@&#8203;levkohimins](https://redirect.github.com/levkohimins) in\
        \ [https://github.com/gruntwork-io/terragrunt/pull/4108](https://redirect.github.com/gruntwork-io/terragrunt/pull/4108)\n\
        -   fix: Stack cycles detection improvements by [@&#8203;denis256](https://redirect.github.com/denis256)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4106](https://redirect.github.com/gruntwork-io/terragrunt/pull/4106)\n\
        -   fix: Fixing excessive warning for bootstrap by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4107](https://redirect.github.com/gruntwork-io/terragrunt/pull/4107)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.3...v0.77.4\n\
        \n</details>\n\n---\n\n### Configuration\n\n\U0001F4C5 **Schedule**: Branch\
        \ creation - At any time (no schedule defined), Automerge - At any time (no\
        \ schedule defined).\n\n\U0001F6A6 **Automerge**: Disabled by config. Please\
        \ merge this manually once you are satisfied.\n\n\u267B **Rebasing**: Whenever\
        \ PR becomes conflicted, or you tick the rebase/retry checkbox.\n\n\U0001F515\
        \ **Ignore**: Close this PR and you won't be reminded about this update again.\n\
        \n---\n\n - [ ] <!-- rebase-check -->If you want to rebase/retry this PR,\
        \ check this box\n\n---\n\nThis PR was generated by [Mend Renovate](https://mend.io/renovate/).\
        \ View the [repository job log](https://developer.mend.io/github/osism/testbed).\n\
        <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMDcuMSIsInVwZGF0ZWRJblZlciI6IjM5LjI0OC40IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZSJdfQ==-->\n"
      change_url: https://github.com/osism/testbed/pull/2654
      child_jobs: []
      commit_id: 4e898e01159662bf8e2bc9f365fe4d21d513debc
      event_id: 22b3de60-1ec1-11f0-800b-233bb7237b46
      executor:
        hostname: 7d211f194f6a
        inventory_file: /var/lib/zuul/builds/db809419dafa4491a1787b57f2ed4289/ansible/inventory.yaml
        log_root: /var/lib/zuul/builds/db809419dafa4491a1787b57f2ed4289/work/logs
        result_data_file: /var/lib/zuul/builds/db809419dafa4491a1787b57f2ed4289/work/results.json
        src_root: /var/lib/zuul/builds/db809419dafa4491a1787b57f2ed4289/work/src
        work_root: /var/lib/zuul/builds/db809419dafa4491a1787b57f2ed4289/work
      items:
      - branch: main
        change: '2654'
        change_url: https://github.com/osism/testbed/pull/2654
        patchset: 4e898e01159662bf8e2bc9f365fe4d21d513debc
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/testbed
          name: osism/testbed
          short_name: testbed
          src_dir: src/github.com/osism/testbed
      job: python-black
      jobtags: []
      max_attempts: 3
      message: Y2hvcmUoZGVwcyk6IHVwZGF0ZSBkZXBlbmRlbmN5IGdydW50d29yay1pby90ZXJyYWdydW50IHRvIHYwLjc3LjIxCgpUaGlzIFBSIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgdXBkYXRlczoKCnwgUGFja2FnZSB8IFVwZGF0ZSB8IENoYW5nZSB8CnwtLS18LS0tfC0tLXwKfCBbZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudCkgfCBwYXRjaCB8IGB2MC43Ny4zYCAtPiBgdjAuNzcuMjFgIHwKCi0tLQoKIyMjIFJlbGVhc2UgTm90ZXMKCjxkZXRhaWxzPgo8c3VtbWFyeT5ncnVudHdvcmstaW8vdGVycmFncnVudCAoZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQpPC9zdW1tYXJ5PgoKIyMjIFtgdjAuNzcuMjFgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcmVsZWFzZXMvdGFnL3YwLjc3LjIxKQoKW0NvbXBhcmUgU291cmNlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvY29tcGFyZS92MC43Ny4yMC4uLnYwLjc3LjIxKQoKIyMjIyDinKggTmV3IEZlYXR1cmVzCgojIyMjIyBJbnRyb2R1Y3Rpb24gb2YgYGhjbGAgY29tbWFuZHMKCkFzIHBhcnQgb2YgdGhlIFtDTEkgUmVkZXNpZ25dKGh0dHBzOi8vdGVycmFncnVudC5ncnVudHdvcmsuaW8vZG9jcy9yZWZlcmVuY2UvZXhwZXJpbWVudHMvI2NsaS1yZWRlc2lnbikgZXhwZXJpbWVudCwgdGhlIFtgaGNsYF0oaHR0cHM6Ly90ZXJyYWdydW50LmdydW50d29yay5pby9kb2NzL3JlZmVyZW5jZS9jbGktb3B0aW9ucy8jaGNsLWNvbW1hbmRzKSBjb21tYW5kcyBoYXMgYmVlbiBpbnRyb2R1Y2VkLgoKVGhlIGBoY2xgIGNvbW1hbmRzIGFsbG93IHVzZXJzIHRvIGRpcmVjdGx5IGludGVyYWN0IHdpdGggSENMIGNvbnRlbnQgaW5kZXBlbmRlbnQgb2YgdGhlIHVuZGVybHlpbmcgZnVuY3Rpb25hbGl0eSB0aGV5IHN1cHBvcnQuCgpUaGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgYGhjbGAgY29tbWFuZHMgcmVwbGFjZSBleGlzdGluZyBmdW5jdGlvbmFsaXR5IHRoYXQgaXMgc29vbiB0byBiZSBkZXByZWNhdGVkOgoKLSAgIGBoY2xmbXRgIC0tPiBgaGNsIGZtdGAKLSAgIGBoY2x2YWxpZGF0ZWAgLS0+IGBoY2wgdmFsaWRhdGVgCi0gICBgdmFsaWRhdGUtaW5wdXRzYCAtLT4gYGhjbCB2YWxpZGF0ZSAtLWlucHV0c2AKLSAgIGB2YWxpZGF0ZS1pbnB1dHMgLS1zdHJpY3QtdmFsaWRhdGVgIC0tPiBgaGNsIHZhbGlkYXRlIC0taW5wdXRzIC0tc3RyaWN0YAoKIyMjIyBXaGF0J3MgQ2hhbmdlZAoKLSAgIGZlYXQ6IGBoY2xgIGNvbW1hbmRzIGRvY3MgYnkgW0AmIzgyMDM7bGV2a29oaW1pbnNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9sZXZrb2hpbWlucykgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxODBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxODApCi0gICBmZWF0OiBhZGQgc3ltYm9sIGxpbmsgZXhwZXJpZW1udCBpbiBkaXNjb3ZlcnkgcHJvY2VzcyBieSBbQCYjODIwMztkZW5pczI1Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RlbmlzMjU2KSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDE3N10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDE3NykKLSAgIGZlYXQ6IEltcGxlbWVudGF0aW9uIG9mIGBoY2xgIGNvbW1hbmRzIGJ5IFtAJiM4MjAzO2xldmtvaGltaW5zXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbGV2a29oaW1pbnMpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTY5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTY5KQotICAgZml4OiBBZGRpbmcgcmVkaXJlY3QgZnJvbSAvZG9jcy9yZWZlcmVuY2UvZXhwZXJpbWVudC1tb2RlIHRvIC9kb2NzL3JlZmVyZW5jZS9leHBlcmltZW50cyBieSBbQCYjODIwMzt5aGFrYmFyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20veWhha2JhcikgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxNzhdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxNzgpCi0gICBmaXg6IEZpeCBzcGVsbGluZyBieSBbQCYjODIwMztocGUtbm9pbmFyaXNha10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2hwZS1ub2luYXJpc2FrKSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDE3OV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDE3OSkKLSAgIGZpeDogVXBkYXRlIHN0YXR1cyBvZiBjbGktcmVkZXNpZ24gZXhwZXJpbWVudCBieSBbQCYjODIwMzt5aGFrYmFyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20veWhha2JhcikgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxODhdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxODgpCi0gICBidWlsZChkZXBzKTogYnVtcCBnaXRodWIuY29tL2NoYXJtYnJhY2VsZXQvYnViYmxlcyBmcm9tIDAuMjAuMCB0byAwLjIxLjAgYnkgW0AmIzgyMDM7ZGVwZW5kYWJvdF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RlcGVuZGFib3QpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTYwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTYwKQoKIyMjIyBOZXcgQ29udHJpYnV0b3JzCgotICAgW0AmIzgyMDM7aHBlLW5vaW5hcmlzYWtdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ocGUtbm9pbmFyaXNhaykgbWFkZSB0aGVpciBmaXJzdCBjb250cmlidXRpb24gaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxNzldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxNzkpCgoqKkZ1bGwgQ2hhbmdlbG9nKio6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9jb21wYXJlL3YwLjc3LjIwLi4udjAuNzcuMjEKCiMjIyBbYHYwLjc3LjIwYF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3JlbGVhc2VzL3RhZy92MC43Ny4yMCkKCltDb21wYXJlIFNvdXJjZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2NvbXBhcmUvdjAuNzcuMTkuLi52MC43Ny4yMCkKCiMjIyMgV2hhdCdzIENoYW5nZWQKCi0gICBidWlsZDogQWRkZWQgYGJ1aWxkLW5vLXByb3h5LnltbGAgd29ya2Zsb3cgYnkgW0AmIzgyMDM7eWhha2Jhcl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3loYWtiYXIpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTcxXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTcxKQotICAgYnVpbGQ6IEFkZGVkIGBsaW50LnltbGAgYW5kIGBzdHJpY3QtbGludC55bWxgIHdvcmtmbG93cyBmb3IgR2l0SHViIEFjdGlvbnMgYnkgW0AmIzgyMDM7eWhha2Jhcl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3loYWtiYXIpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTcyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTcyKQotICAgYnVpbGQ6IEFkZGVkIGNvZGVzcGVsbCB3b3JrZmxvdyBieSBbQCYjODIwMzt5aGFrYmFyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20veWhha2JhcikgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxNzNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxNzMpCi0gICBidWlsZDogQWRkZWQgbWFya2Rvd25saW50IHYyIHRvIEdpdEh1YiBBY3Rpb25zIHdvcmtmbG93cyBieSBbQCYjODIwMzt5aGFrYmFyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20veWhha2JhcikgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxNzVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxNzUpCi0gICBkb2NzOiBJbXByb3ZlZCBnZXR0aW5nIHN0YXJ0ZWQgZ3VpZGUgYnkgW0AmIzgyMDM7eWhha2Jhcl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3loYWtiYXIpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTc0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTc0KQotICAgYnVpbGQoZGVwcyk6IGJ1bXAgZ2l0aHViLmNvbS9Qcm90b25NYWlsL2dvLWNyeXB0byBmcm9tIDEuMS42IHRvIDEuMi4wIGJ5IFtAJiM4MjAzO2RlcGVuZGFib3RdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kZXBlbmRhYm90KSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDE2MV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDE2MSkKLSAgIGJ1aWxkKGRlcHMpOiBidW1wIGdvbGFuZy5vcmcveC90ZXJtIGZyb20gMC4zMC4wIHRvIDAuMzEuMCBieSBbQCYjODIwMztkZXBlbmRhYm90XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZGVwZW5kYWJvdCkgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxNTldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxNTkpCi0gICBidWlsZChkZXBzKTogYnVtcCBnaXRodWIuY29tL2F3cy9hd3Mtc2RrLWdvLXYyL3NlcnZpY2UvczMgZnJvbSAxLjc4LjIgdG8gMS43OS4yIGJ5IFtAJiM4MjAzO2RlcGVuZGFib3RdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kZXBlbmRhYm90KSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDE1OF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDE1OCkKCioqRnVsbCBDaGFuZ2Vsb2cqKjogaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2NvbXBhcmUvdjAuNzcuMTkuLi52MC43Ny4yMAoKIyMjIFtgdjAuNzcuMTlgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcmVsZWFzZXMvdGFnL3YwLjc3LjE5KQoKW0NvbXBhcmUgU291cmNlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvY29tcGFyZS92MC43Ny4xOC4uLnYwLjc3LjE5KQoKIyMjIyDinKggTmV3IEZlYXR1cmVzCgojIyMjIyBPcGVuVGVsZW1ldHJ5IHRyYWNlcyBhcmUgbm93IGludGVncmF0ZWQgaW50byBgZmluZGAgYW5kIGBsaXN0YCBjb21tYW5kcwoKZmluZCB0ZWxlbWV0cnk6CiFbaW1hZ2VdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy9lYjVmZjExYS1lOTBmLTRiNWQtYmVjMC1jOTljYjE0MTlmNTcpCgpsaXN0IHRlbGVtZXRyeToKIVtpbWFnZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzLzdhZjIzMmYxLWU4MjItNGFhZS04MjMwLTEyMjU3YzM1OWQyMSkKCiMjIyMgV2hhdCdzIENoYW5nZWQKCi0gICBmZWF0OiBJbXBsZW1lbnRlZCB0ZWxlbWV0cnkgZm9yIGZpbmQvbGlzdCBieSBbQCYjODIwMztkZW5pczI1Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RlbmlzMjU2KSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDE2NV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDE2NSkKCioqRnVsbCBDaGFuZ2Vsb2cqKjogaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2NvbXBhcmUvdjAuNzcuMTguLi52MC43Ny4xOQoKIyMjIFtgdjAuNzcuMThgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcmVsZWFzZXMvdGFnL3YwLjc3LjE4KQoKW0NvbXBhcmUgU291cmNlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvY29tcGFyZS92MC43Ny4xNy4uLnYwLjc3LjE4KQoKIyMjIyDinKggTmV3IEZlYXR1cmVzCgojIyMjIyBTdXBwb3J0IGZvciBIQ0wgZm9ybWF0dGluZyB3aXRoIHRoZSBgcmVuZGVyYCBjb21tYW5kCgpBcyBwYXJ0IG9mIHRoZSBbQ0xJIFJlZGVzaWduXShodHRwczovL3RlcnJhZ3J1bnQuZ3J1bnR3b3JrLmlvL2RvY3MvcmVmZXJlbmNlL2V4cGVyaW1lbnRzLyNjbGktcmVkZXNpZ24pIGV4cGVyaW1lbnQsIHRoZSBbYHJlbmRlcmBdKGh0dHBzOi8vdGVycmFncnVudC5ncnVudHdvcmsuaW8vZG9jcy9yZWZlcmVuY2UvY2xpLW9wdGlvbnMvI2JhY2tlbmQtbWlncmF0ZSkgY29tbWFuZCBub3cgc3VwcG9ydHMgSENMIGZvcm1hdHRpbmcgZm9yIHJlbmRlcmVkIGNvbmZpZ3VyYXRpb25zLCB3aGljaCBpcyB0aGUgZGVmYXVsdCBvdXRwdXQgZm9ybWF0LgoKVXNpbmcgdGhlIGByZW5kZXJgIGNvbW1hbmQgd2l0aCBIQ0wgZm9ybWF0dGluZyBhbGxvd3MgdXNlcnMgdG8gZ2V0IGEgcXVpY2ssIG1pbmltYWwgZXZhbHVhdGlvbiBvZiBUZXJyYWdydW50IHVuaXQgY29uZmlndXJhdGlvbnMgd2l0aCBhcyBtdWNoIHByZS1wcm9jZXNzaW5nIGRvbmUgYXMgcG9zc2libGUuCgpGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBgdGVycmFncnVudC5oY2xgIGZpbGU6CgpgYGBoY2wKCiMjIyB0ZXJyYWdydW50LmhjbAoKbG9jYWxzIHsKICBhd3NfcmVnaW9uID0gInVzLWVhc3QtMSIKfQoKaW5wdXRzID0gewogIGF3c19yZWdpb24gPSBsb2NhbC5hd3NfcmVnaW9uCn0KYGBgCgpSZW5kZXJzIHRvIHRoZSBmb2xsb3dpbmcgSENMOgoKYGBgYmFzaAokIHRlcnJhZ3J1bnQgcmVuZGVyCmxvY2FscyB7CiAgYXdzX3JlZ2lvbiA9ICJ1cy1lYXN0LTEiCn0KaW5wdXRzID0gewogIGF3c19yZWdpb24gPSAidXMtZWFzdC0xIgp9CmBgYAoKVXNpbmcgdGhlIGByZW5kZXJgIGNvbW1hbmQgd2l0aCBIQ0wgZm9ybWF0dGluZyBvZmZlcnMgYSB3YXkgdG8gcmVzb2x2ZSBjb21wbGV4IEhDTCBmdW5jdGlvbiBldmFsdWF0aW9uLCBpbmNsdWRlIG1lcmdpbmcgb3Igc3RyaW5nIGludGVycG9sYXRpb24sIGV0Yy4gdG8gYWNoaWV2ZSBlcXVpdmFsZW50IFRlcnJhZ3J1bnQgSENMIGNvbmZpZ3VyYXRpb25zIHRoYXQgYXJlIGVhc2llciB0byByZWFzb24gYWJvdXQuCgojIyMjIFdoYXQncyBDaGFuZ2VkCgotICAgZmVhdDogQWRkaW5nIGByZW5kZXJgIHdpdGggSENMIGZvcm1hdHRpbmcgYnkgW0AmIzgyMDM7eWhha2Jhcl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3loYWtiYXIpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTY0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTY0KQoKKipGdWxsIENoYW5nZWxvZyoqOiBodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvY29tcGFyZS92MC43Ny4xNy4uLnYwLjc3LjE4CgojIyMgW2B2MC43Ny4xN2BdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9yZWxlYXNlcy90YWcvdjAuNzcuMTcpCgpbQ29tcGFyZSBTb3VyY2VdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9jb21wYXJlL3YwLjc3LjE2Li4udjAuNzcuMTcpCgojIyMjIOKcqCBOZXcgRmVhdHVyZXMKCiMjIyMjIEludHJvZHVjdGlvbiBvZiB0aGUgYHJlbmRlcmAgY29tbWFuZAoKQXMgcGFydCBvZiB0aGUgW0NMSSBSZWRlc2lnbl0oaHR0cHM6Ly90ZXJyYWdydW50LmdydW50d29yay5pby9kb2NzL3JlZmVyZW5jZS9leHBlcmltZW50cy8jY2xpLXJlZGVzaWduKSBleHBlcmltZW50LCB0aGUgW2ByZW5kZXJgXShodHRwczovL3RlcnJhZ3J1bnQuZ3J1bnR3b3JrLmlvL2RvY3MvcmVmZXJlbmNlL2NsaS1vcHRpb25zLyNiYWNrZW5kLW1pZ3JhdGUpIGNvbW1hbmQgaGFzIGJlZW4gaW50cm9kdWNlZC4KClRoZSBgcmVuZGVyYCBjb21tYW5kIGFsbG93cyB1c2VycyB0byBlYXNpbHkgcmVuZGVyIFRlcnJhZ3J1bnQgdW5pdCBjb25maWd1cmF0aW9ucyB3aXRoIHJlZHVjZWQgY29tcGxleGl0eSwgbWFraW5nIGl0IGVhc2llciB0byB1bmRlcnN0YW5kIGNvbmZpZ3VyYXRpb25zIGF0IGEgZ2xhbmNlLgoKRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgYHRlcnJhZ3J1bnQuaGNsYCBmaWxlOgoKYGBgaGNsCgojIyMgdGVycmFncnVudC5oY2wKCmxvY2FscyB7CiAgYXdzX3JlZ2lvbiA9ICJ1cy1lYXN0LTEiCn0KCmlucHV0cyA9IHsKICBhd3NfcmVnaW9uID0gbG9jYWwuYXdzX3JlZ2lvbgp9CmBgYAoKUmVuZGVycyB0byB0aGUgZm9sbG93aW5nIEpTT046CgpgYGBiYXNoCiQgdGVycmFncnVudCByZW5kZXIgLS1mb3JtYXQganNvbgp7CiAgImxvY2FscyI6IHsgImF3c19yZWdpb24iOiAidXMtZWFzdC0xIiB9LAogICJpbnB1dHMiOiB7ICJhd3NfcmVnaW9uIjogInVzLWVhc3QtMSIgfQogIC8vIE5PVEU6IG90aGVyIGF0dHJpYnV0ZXMgYXJlIG9taXR0ZWQgZm9yIGJyZXZpdHkKfQpgYGAKClRoZSBpbnRyb2R1Y3Rpb24gb2YgdGhlIGByZW5kZXJgIGNvbW1hbmQgaXMgcGFydCBvZiB0aGUgZXZlbnR1YWwgZGVwcmVjYXRpb24gb2YgdGhlIGV4aXN0aW5nIGByZW5kZXItanNvbmAgY29tbWFuZCwgd2hpY2ggd2lsbCBiZSBkZXByZWNhdGVkIGJ5IHRoZSBlbmQgb2YgdGhlIENMSSBSZWRlc2lnbi4gVGhlIGByZW5kZXJgIGNvbW1hbmQgaXMgYSBoaWdoZXIgbGV2ZWwgY29tbWFuZCwgdGhhdCBvZmZlcnMgdGhlIGFiaWxpdHkgdG8gd3JpdGUgdG8gc3Rkb3V0LCBpbiBhZGRpdGlvbiB0byB3cml0aW5nIHRvIGZpbGVzLCBhbmQgd2lsbCBzdXBwb3J0IEhDTCBjb25maWd1cmF0aW9ucyBpbiBhZGRpdGlvbiB0byBKU09OIChjb21pbmcgc29vbikuCgpUbyBsZWFybiBtb3JlIGFib3V0IHRoZSBgcmVuZGVyYCBjb21tYW5kLCByZWFkIHRoZSBvZmZpY2lhbCBkb2N1bWVudGF0aW9uIFtoZXJlXShodHRwczovL3RlcnJhZ3J1bnQuZ3J1bnR3b3JrLmlvL2RvY3MvcmVmZXJlbmNlL2NsaS1vcHRpb25zLyNyZW5kZXIpLgoKIyMjIyBXaGF0J3MgQ2hhbmdlZAoKLSAgIGZlYXQ6IEFkZGluZyBgcmVuZGVyYCBjb21tYW5kIGJ5IFtAJiM4MjAzO3loYWtiYXJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS95aGFrYmFyKSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDE0NV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDE0NSkKLSAgIGZlYXQ6IEFkZGluZyBkb2NzIGZvciBgYmFja2VuZCBtaWdyYXRlYCBieSBbQCYjODIwMzt5aGFrYmFyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20veWhha2JhcikgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxNDBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxNDApCi0gICBidWlsZChkZXBzKTogYnVtcCBydWJ5L3NldHVwLXJ1YnkgZnJvbSAxLjIyOS4wIHRvIDEuMjMwLjAgYnkgW0AmIzgyMDM7ZGVwZW5kYWJvdF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RlcGVuZGFib3QpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTYyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTYyKQoKKipGdWxsIENoYW5nZWxvZyoqOiBodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvY29tcGFyZS92MC43Ny4xNi4uLnYwLjc3LjE3CgojIyMgW2B2MC43Ny4xNmBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9yZWxlYXNlcy90YWcvdjAuNzcuMTYpCgpbQ29tcGFyZSBTb3VyY2VdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9jb21wYXJlL3YwLjc3LjE1Li4udjAuNzcuMTYpCgojIyMjIOKcqCBOZXcgRmVhdHVyZXMKCiMjIyMjIEludHJvZHVjdGlvbiBvZiB0aGUgYGJhY2tlbmQgbWlncmF0ZWAgY29tbWFuZAoKQXMgcGFydCBvZiB0aGUgW0NMSSBSZWRlc2lnbl0oaHR0cHM6Ly90ZXJyYWdydW50LmdydW50d29yay5pby9kb2NzL3JlZmVyZW5jZS9leHBlcmltZW50cy8jY2xpLXJlZGVzaWduKSBleHBlcmltZW50LCB0aGUgW2BiYWNrZW5kIG1pZ3JhdGVgXShodHRwczovL3RlcnJhZ3J1bnQuZ3J1bnR3b3JrLmlvL2RvY3MvcmVmZXJlbmNlL2NsaS1vcHRpb25zLyNiYWNrZW5kLW1pZ3JhdGUpIGNvbW1hbmQgaGFzIGJlZW4gaW50cm9kdWNlZC4KClRoZSBgYmFja2VuZCBtaWdyYXRlYCBjb21tYW5kIGFsbG93cyB5b3UgdG8gc2ltcGx5IG1pZ3JhdGUgc3RhdGUgYmV0d2VlbiBkaWZmZXJlbnQgdW5pdHMgKG9yIHJlbmFtZXMgb2YgdW5pdHMpIHdpdGhvdXQgbWFudWFsbHkgcnVubmluZyBPcGVuVG9mdS9UZXJyYWZvcm0gc3RhdGUgbWlncmF0aW9uIGNvbW1hbmRzLgoKVG8gbGVhcm4gbW9yZSBhYm91dCB0aGUgYGJhY2tlbmQgbWlncmF0ZWAgY29tbWFuZCwgcmVhZCB0aGUgW29mZmljaWFsIGRvY3NdKGh0dHBzOi8vdGVycmFncnVudC5ncnVudHdvcmsuaW8vZG9jcy9yZWZlcmVuY2UvY2xpLW9wdGlvbnMvI2JhY2tlbmQtbWlncmF0ZSkuCgojIyMjIFdoYXQncyBDaGFuZ2VkCgotICAgZmVhdDogQWRkZWQgc3VwcG9ydCBmb3IgbWlncmF0aW5nIHN0YXRlIGJldHdlZW4gZGlmZmVyZW50IGJhY2tlbmRzIGJ5IFtAJiM4MjAzO2xldmtvaGltaW5zXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbGV2a29oaW1pbnMpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTU0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTU0KQotICAgZmVhdDogRW5oYW5jZWQgZXJyb3IgZXhwbGFpbmVyIHRvIGRldGVjdCBhbmQgcmVwb3J0IGlzc3VlcyByZWxhdGVkIHRvIGBzdGFja2AgdmFsdWVzIGJ5IFtAJiM4MjAzO2RlbmlzMjU2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZGVuaXMyNTYpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTYzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTYzKQotICAgZml4OiBJbXByb3ZlZCB0aGUgZGVwcmVjYXRpb24gbWVzc2FnZSBmb3IgZXhwZXJpbWVudGFsIGNvbW1hbmQgZmxhZ3MgYnkgW0AmIzgyMDM7bGV2a29oaW1pbnNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9sZXZrb2hpbWlucykgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxNDZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxNDYpCi0gICBmaXg6IFByZXZlbnQgYFRGX0NMSV9DT05GSUdfRklMRWAgZW52aXJvbm1lbnQgdmFyaWFibGUgZnJvbSBiZWluZyBvdmVyd3JpdHRlbiwgZXhjZXB0IGR1cmluZyBgaW5pdGAgYW5kIGBwcm92aWRlcnNgIGNvbW1hbmRzIGJ5IFtAJiM4MjAzO2xldmtvaGltaW5zXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbGV2a29oaW1pbnMpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTU1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTU1KQoKKipGdWxsIENoYW5nZWxvZyoqOiBodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvY29tcGFyZS92MC43Ny4xNS4uLnYwLjc3LjE2CgojIyMgW2B2MC43Ny4xNWBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9yZWxlYXNlcy90YWcvdjAuNzcuMTUpCgpbQ29tcGFyZSBTb3VyY2VdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9jb21wYXJlL3YwLjc3LjE0Li4udjAuNzcuMTUpCgojIyMjIOKcqCBOZXcgRmVhdHVyZXMKCiMjIyMjIEludHJvZHVjdGlvbiBvZiB0aGUgYGRhZyBncmFwaGAgY29tbWFuZAoKQXMgcGFydCBvZiB0aGUgW0NMSSBSZWRlc2lnbl0oaHR0cHM6Ly90ZXJyYWdydW50LmdydW50d29yay5pby9kb2NzL3JlZmVyZW5jZS9leHBlcmltZW50cy8jY2xpLXJlZGVzaWduKSBleHBlcmltZW50LCB0aGUgW2BkYWcgZ3JhcGhgXShodHRwczovL3RlcnJhZ3J1bnQuZ3J1bnR3b3JrLmlvL2RvY3MvcmVmZXJlbmNlL2NsaS1vcHRpb25zLyNwcmludC1ncmFwaCkgY29tbWFuZCBoYXMgYmVlbiBpbnRyb2R1Y2VkLgoKIVtkYWddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy8zODlkNGUzMS0xOTdjLTRjMzctODkxMy0xNDE3ZWNkM2U1YjQpCgohW2RhZy1oZWxwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vdXNlci1hdHRhY2htZW50cy9hc3NldHMvMjUyNWNkMjctMGQ4ZS00NTdiLTg3ZWEtNzU5ZmFlMzFlMmYzKQoKIVtkYWctZ3JhcGgtaGVscF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzL2ZiMjY4YjIwLWYzMmItNGI0Zi1iYTEzLTBkMWZjOWZjYTc0OCkKCiMjIyMgV2hhdCdzIENoYW5nZWQKCi0gICBkb2NzOiBBZGRlZCBtaWdyYXRpb24gZ3VpZGUgZm9yIGFkb3B0aW5nIFRlcnJhZ3J1bnQgU3RhY2tzIGJ5IFtAJiM4MjAzO3loYWtiYXJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS95aGFrYmFyKSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDE1Ml0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDE1MikKLSAgIGZlYXQ6IEFkZGVkIGRhZyBncmFwaCBjb21tYW5kIGJ5IFtAJiM4MjAzO2RlbmlzMjU2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZGVuaXMyNTYpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTQzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTQzKQoKKipGdWxsIENoYW5nZWxvZyoqOiBodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvY29tcGFyZS92MC43Ny4xNC4uLnYwLjc3LjE1CgojIyMgW2B2MC43Ny4xNGBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9yZWxlYXNlcy90YWcvdjAuNzcuMTQpCgpbQ29tcGFyZSBTb3VyY2VdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9jb21wYXJlL3YwLjc3LjEzLi4udjAuNzcuMTQpCgojIyMjIOKcqCBOZXcgRmVhdHVyZXMKCiMjIyMjIFN1cHBvcnQgZm9yIGAtLWV4Y2x1ZGVgIGFuZCBgLS1xdWV1ZS1jb25zdHJ1Y3QtYXNgIGluIGBmaW5kYCBhbmQgYGxpc3RgCgpUaGUgW2BmaW5kYF0oaHR0cHM6Ly90ZXJyYWdydW50LmdydW50d29yay5pby9kb2NzL3JlZmVyZW5jZS9jbGktb3B0aW9ucy8jZmluZCkgYW5kIFtgbGlzdGBdKGh0dHBzOi8vdGVycmFncnVudC5ncnVudHdvcmsuaW8vZG9jcy9yZWZlcmVuY2UvY2xpLW9wdGlvbnMvI2xpc3QpIGNvbW1hbmRzIGhhdmUgYmVlbiB1cGRhdGVkIHRvIGxldmVyYWdlIG5ldyBjYXBhYmlsaXRpZXMgaW52b2x2aW5nIGdyZWF0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgVGVycmFncnVudCBydW4gcXVldWUuCgpVc2VycyBjYW4gbm93IGxldmVyYWdlIHRoZSBbYC0tcXVldWUtY29uc3RydWN0LWFzYF0oaHR0cHM6Ly90ZXJyYWdydW50LmdydW50d29yay5pby9kb2NzL3JlZmVyZW5jZS9jbGktb3B0aW9ucy8jZmluZC1xdWV1ZS1jb25zdHJ1Y3QtYXMpIChvciBqdXN0IGAtLWFzYCkgZmxhZyBpbiB0aGUgYGZpbmRgIGFuZCBgbGlzdGAgY29tbWFuZHMgdG8gZGlzY292ZXIgY29uZmlndXJhdGlvbnMgYXMgaWYgYSBwYXJ0aWN1bGFyIFRlcnJhZ3J1bnQgY29tbWFuZCB3YXMgYmVpbmcgcnVuIChlLmcuIGBwbGFuYCwgYGRlc3Ryb3lgKS4KCkZvciBleGFtcGxlOgoKYGBgYmFzaAokIHRlcnJhZ3J1bnQgZmluZCAtLXF1ZXVlLWNvbnN0cnVjdC1hcz1wbGFuCnN0YWNrcy9saXZlL2RldgpzdGFja3MvbGl2ZS9wcm9kCnVuaXRzL2xpdmUvZGV2L3ZwYwp1bml0cy9saXZlL3Byb2QvdnBjCnVuaXRzL2xpdmUvZGV2L2RiCnVuaXRzL2xpdmUvcHJvZC9kYgp1bml0cy9saXZlL2Rldi9lYzIKdW5pdHMvbGl2ZS9wcm9kL2VjMgpgYGAKCmBgYGJhc2gKJCB0ZXJyYWdydW50IGZpbmQgLS1hcz1kZXN0cm95CnN0YWNrcy9saXZlL2RldgpzdGFja3MvbGl2ZS9wcm9kCnVuaXRzL2xpdmUvZGV2L2VjMgp1bml0cy9saXZlL3Byb2QvZWMyCnVuaXRzL2xpdmUvZGV2L2RiCnVuaXRzL2xpdmUvcHJvZC9kYgp1bml0cy9saXZlL2Rldi92cGMKdW5pdHMvbGl2ZS9wcm9kL3ZwYwpgYGAKClRoZSBgZmluZGAgYW5kIGBsaXN0YCBjb21tYW5kcyB3aWxsIG5vdyBjb25zdHJ1Y3QgdGhlIFRlcnJhZ3J1bnQgcnVuIHF1ZXVlIGFzIGlmIGEgcGFydGljdWxhciBjb21tYW5kIHdhcyBiZWluZyBydW4sIHBvdGVudGlhbGx5IGFsdGVyaW5nIHRoZSBwb3NpdGlvbiBvZiBlbGVtZW50cyBpbiB0aGUgcnVuIHF1ZXVlLCBiYXNlZCBvbiB0aGVpciBkZXBlbmRlbmNpZXMgKGRlcGVuZGVuY2llcyBiZWZvcmUgZGVwZW5kZW50cyBmb3IgcGxhbnMsIGFwcGxpZXMsIGV0Yy4gYW5kIGRlcGVuZGVudHMgYmVmb3JlIGRlcGVuZGVuY2llcyBmb3IgZGVzdHJveXMpLgoKSW4gYWRkaXRpb24sIHVzZXJzIGNhbiBsZXZlcmFnZSB0aGUgW2AtLWV4Y2x1ZGVgXShodHRwczovL3RlcnJhZ3J1bnQuZ3J1bnR3b3JrLmlvL2RvY3MvcmVmZXJlbmNlL2NsaS1vcHRpb25zLyNmaW5kLWV4Y2x1ZGUpIGZsYWcgb24gdGhlIGBmaW5kYCBjb21tYW5kIHRvIGdldCBpbmZvcm1hdGlvbiBvbiB0aGUgYGV4Y2x1ZGVgIGJsb2NrIGluY2x1ZGVkIGluIHJlc3VsdHMuIFRoZSBgZXhjbHVkZWAgYmxvY2sgaXMgYWxzbyBmYWN0b3JlZCBpbiB0byBkaXNjb3ZlcnkgcmVzdWx0cyB3aGVuIHRoZSBgLS1xdWV1ZS1jb25zdHJ1Y3QtYXNgIGZsYWcgaXMgcGFzc2VkLCBhbGxvd2luZyB1c2VycyB0byBkcnktcnVuIGJlaGF2aW9yIG9mIHRoZSBgZXhjbHVkZWAgYmxvY2sgYmVmb3JlIHBlcmZvcm1pbmcgYW55IFRlcnJhZ3J1bnQgcnVucy4KCiMjIyMgV2hhdCdzIENoYW5nZWQKCi0gICBmZWF0OiBBZGRpbmcgZXhjbHVkZSBzdXBwb3J0IHRvIGxpc3QgYW5kIGZpbmQgYnkgW0AmIzgyMDM7eWhha2Jhcl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3loYWtiYXIpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTQ3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTQ3KQoKKipGdWxsIENoYW5nZWxvZyoqOiBodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvY29tcGFyZS92MC43Ny4xMy4uLnYwLjc3LjE0CgojIyMgW2B2MC43Ny4xM2BdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9yZWxlYXNlcy90YWcvdjAuNzcuMTMpCgpbQ29tcGFyZSBTb3VyY2VdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9jb21wYXJlL3YwLjc3LjEyLi4udjAuNzcuMTMpCgojIyMjIFdoYXQncyBDaGFuZ2VkCgotICAgYnVpbGQoZGVwcyk6IGJ1bXAgZ29vZ2xlLmdvbGFuZy5vcmcvZ3JwYyBmcm9tIDEuNzEuMCB0byAxLjcxLjEgYnkgW0AmIzgyMDM7ZGVwZW5kYWJvdF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RlcGVuZGFib3QpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTMyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTMyKQotICAgYnVpbGQoZGVwcyk6IGJ1bXAgZ29sYW5nLm9yZy94L3N5cyBmcm9tIDAuMzEuMCB0byAwLjMyLjAgYnkgW0AmIzgyMDM7ZGVwZW5kYWJvdF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RlcGVuZGFib3QpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTMzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTMzKQotICAgYnVpbGQoZGVwcyk6IGJ1bXAgZ29sYW5nLm9yZy94L29hdXRoMiBmcm9tIDAuMjguMCB0byAwLjI5LjAgYnkgW0AmIzgyMDM7ZGVwZW5kYWJvdF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RlcGVuZGFib3QpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTMxXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTMxKQotICAgYnVpbGQoZGVwcyk6IGJ1bXAgZ2l0aHViLmNvbS9nZXRzb3BzL3NvcHMvdjMgZnJvbSAzLjkuNCB0byAzLjEwLjEgYnkgW0AmIzgyMDM7ZGVwZW5kYWJvdF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RlcGVuZGFib3QpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTMwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTMwKQoKKipGdWxsIENoYW5nZWxvZyoqOiBodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvY29tcGFyZS92MC43Ny4xMi4uLnYwLjc3LjEzCgojIyMgW2B2MC43Ny4xMmBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9yZWxlYXNlcy90YWcvdjAuNzcuMTIpCgpbQ29tcGFyZSBTb3VyY2VdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9jb21wYXJlL3YwLjc3LjExLi4udjAuNzcuMTIpCgojIyMjIOKcqCBOZXcgRmVhdHVyZXMKCkludHJvZHVjZWQgYG5vX3ZhbGlkYXRpb25gIGF0dHJpYnV0ZSBmb3IgYHN0YWNrYCBhbmQgYHVuaXRgLCBhbGxvd2luZyB1c2VycyB0byBieXBhc3MgVGVycmFncnVudCdzIHZhbGlkYXRpb24gY2hlY2tzIHdoZW4gZGVwbG95aW5nIGluZnJhc3RydWN0dXJlLiBUaGlzIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgaW4gc2NlbmFyaW9zIHdoZXJlIHlvdSBuZWVkIHRvIGRlcGxveSBpbmZyYXN0cnVjdHVyZSB0aGF0IGRvZXNuJ3Qgc3RyaWN0bHkgYWRoZXJlIHRvIFRlcnJhZ3J1bnQncyB2YWxpZGF0aW9uIHJ1bGVzLCBzdWNoIGFzIGR1cmluZyBlbWVyZ2VuY3kgZGVwbG95bWVudHMgb3Igd2hlbiB3b3JraW5nIHdpdGggbGVnYWN5IGluZnJhc3RydWN0dXJlIHBhdHRlcm5zLgoKIyMjIyBXaGF0J3MgQ2hhbmdlZAoKLSAgIGRvY3M6IGFkZGVkIG1vcmUgZG9jcyBmb3Igc3RhY2tzIGJ5IFtAJiM4MjAzO3loYWtiYXJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS95aGFrYmFyKSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDE0NF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDE0NCkKLSAgIGZlYXQ6IGFkZGVkIHN1cHBvcnQgZm9yIGBub192YWxpZGF0aW9uYCBhdHRyaWJ1dGUgZm9yIGBzdGFja2AgYW5kIGB1bml0YCBieSBbQCYjODIwMztkZW5pczI1Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RlbmlzMjU2KSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDE0OV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDE0OSkKClJGQzogW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9pc3N1ZXMvMzMxM10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2lzc3Vlcy8zMzEzKQoKKipGdWxsIENoYW5nZWxvZyoqOiBodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvY29tcGFyZS92MC43Ny4xMS4uLnYwLjc3LjEyCgojIyMgW2B2MC43Ny4xMWBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9yZWxlYXNlcy90YWcvdjAuNzcuMTEpCgpbQ29tcGFyZSBTb3VyY2VdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9jb21wYXJlL3YwLjc3LjEwLi4udjAuNzcuMTEpCgojIyMjIOKcqCBOZXcgRmVhdHVyZXMKCiMjIyMjIEludHJvZHVjdGlvbiBvZiB0aGUgYGluZm8gcHJpbnRgIGNvbW1hbmQKCkFzIHBhcnQgb2YgdGhlIFtDTEkgUmVkZXNpZ25dKGh0dHBzOi8vdGVycmFncnVudC5ncnVudHdvcmsuaW8vZG9jcy9yZWZlcmVuY2UvZXhwZXJpbWVudHMvI2NsaS1yZWRlc2lnbikgZXhwZXJpbWVudCwgdGhlIFtgaW5mbyBwcmludGBdKGh0dHBzOi8vdGVycmFncnVudC5ncnVudHdvcmsuaW8vZG9jcy9yZWZlcmVuY2UvY2xpLW9wdGlvbnMvI3ByaW50LWNvbW1hbmQpIGNvbW1hbmQgaGFzIGJlZW4gaW50cm9kdWNlZC4KCiFbaGVscF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzLzJlYWM0NjQ1LTkzYzItNDdkZC04ZGMzLTczYzQ0NDJiZjFjOCkKCiFbb3V0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vdXNlci1hdHRhY2htZW50cy9hc3NldHMvNzAwNWM1ZGItMTVlMS00ZWZlLWI1YTgtMzQ5YTE3OWY2MDMzKQoKIyMjIyBXaGF0J3MgQ2hhbmdlZAoKLSAgIGZlYXQ6IEludHJvZHVjZWQgdGhlIGBpbmZvIHByaW50YCBjb21tYW5kIHRvIG91dHB1dCBUZXJyYWdydW50IGNvbnRleHQgYXMgYSBzdHJ1Y3R1cmVkIEpTT04gb2JqZWN0IGJ5IFtAJiM4MjAzO2RlbmlzMjU2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZGVuaXMyNTYpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTIyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTIyKQoKKipGdWxsIENoYW5nZWxvZyoqOiBodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvY29tcGFyZS92MC43Ny4xMC4uLnYwLjc3LjExCgojIyMgW2B2MC43Ny4xMGBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9yZWxlYXNlcy90YWcvdjAuNzcuMTApCgpbQ29tcGFyZSBTb3VyY2VdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9jb21wYXJlL3YwLjc3LjkuLi52MC43Ny4xMCkKCiMjIyMgV2hhdCdzIENoYW5nZWQKCi0gICBmaXg6IFN1cHByZXNzaW5nIHdhcm5pbmcgZm9yIGNhdGFsb2cgd2hlbiBkZXRlcm1pbmluZyBkZWZhdWx0IGZpbGUgbmFtZSBieSBbQCYjODIwMzt5aGFrYmFyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20veWhha2JhcikgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxMzRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxMzQpCi0gICBmaXg6IFJlbW92ZSB3YXJuaW5nIG1lc3NhZ2UgZm9yIHVuaW1wbGVtZW50ZWQgYmFja2VuZHMgYnkgW0AmIzgyMDM7bGV2a29oaW1pbnNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9sZXZrb2hpbWlucykgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxMzhdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxMzgpCi0gICBmaXg6IEZpeGluZyBvcHRpb25hbCBkZWZhdWx0IHRlbXBsYXRlIGJ5IFtAJiM4MjAzO3loYWtiYXJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS95aGFrYmFyKSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDE0MV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDE0MSkKLSAgIGNob3JlOiBzdGFjayBjb2RlIGltcHJvdmVtZW50cyBieSBbQCYjODIwMztkZW5pczI1Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RlbmlzMjU2KSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDEzNl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDEzNikKCioqRnVsbCBDaGFuZ2Vsb2cqKjogaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2NvbXBhcmUvdjAuNzcuOS4uLnYwLjc3LjEwCgojIyMgW2B2MC43Ny45YF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3JlbGVhc2VzL3RhZy92MC43Ny45KQoKW0NvbXBhcmUgU291cmNlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvY29tcGFyZS92MC43Ny44Li4udjAuNzcuOSkKCiMjIyMg8J+QmyBCdWcgZml4ZXMKCiMjIyMjIEZldGNoaW5nIE91dHB1dHMgZnJvbSBOZXN0ZWQgU3RhY2tzCgpSZXNvbHZlZCBhbiBpc3N1ZSB0aGF0IHByZXZlbnRlZCB0aGUgY29ycmVjdCByZXRyaWV2YWwgb2Ygb3V0cHV0cyBmcm9tIG5lc3RlZCBzdGFja3MuCgojIyMjIFdoYXQncyBDaGFuZ2VkCgotICAgZml4OiBjb3JyZWN0ZWQgdGhlIGxvZ2ljIGZvciBmZXRjaGluZyBvdXRwdXRzIGZyb20gbmVzdGVkIHN0YWNrcyBieSBbQCYjODIwMztkZW5pczI1Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RlbmlzMjU2KSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDEyNl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDEyNikKCioqRnVsbCBDaGFuZ2Vsb2cqKjogaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2NvbXBhcmUvdjAuNzcuOC4uLnYwLjc3LjkKCiMjIyBbYHYwLjc3LjhgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcmVsZWFzZXMvdGFnL3YwLjc3LjgpCgpbQ29tcGFyZSBTb3VyY2VdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9jb21wYXJlL3YwLjc3LjcuLi52MC43Ny44KQoKIyMjIyDwn5OWIERvY3VtZW50YXRpb24gVXBkYXRlcwoKQSBuZXcgW3BlcmZvcm1hbmNlIGd1aWRlXShodHRwczovL3RlcnJhZ3J1bnQuZ3J1bnR3b3JrLmlvL2RvY3MvdHJvdWJsZXNob290aW5nL3BlcmZvcm1hbmNlLykgaGFzIGJlZW4gYWRkZWQgdG8gVGVycmFncnVudCBkb2N1bWVudGF0aW9uIHRvIG9mZmVyIGd1aWRhbmNlIG9uIGhvdyBwZXJmb3JtYW5jZSBjYW4gYmUgaW1wcm92ZWQgd2hlbiB1c2luZyBUZXJyYWdydW50IG9yIGNvbnRyaWJ1dGluZyB0byB0aGUgVGVycmFncnVudCBjb2RlYmFzZS4KClRoaXMgZG9jdW1lbnRhdGlvbiB3aWxsIGV2b2x2ZSBvdmVyIHRpbWUsIGFzIG1vcmUgb3B0aW9uYWwgb3B0aW1pemF0aW9ucyBiZWNvbWUgYXZhaWxhYmxlLCBvciBhcmUgbm8gbG9uZ2VyIG5lY2Vzc2FyeSwgYXMgdGhleSBiZWNvbWUgZGVmYXVsdCBiZWhhdmlvci4KCiMjIyMgV2hhdCdzIENoYW5nZWQKCi0gICBmZWF0OiBBZGQgcGVyZm9ybWFuY2UgZ3VpZGUgYnkgW0AmIzgyMDM7eWhha2Jhcl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3loYWtiYXIpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTIwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTIwKQotICAgYnVpbGQoZGVwcyk6IGJ1bXAgcnVieS9zZXR1cC1ydWJ5IGZyb20gMS4yMjEuMCB0byAxLjIyOS4wIGJ5IFtAJiM4MjAzO2RlcGVuZGFib3RdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kZXBlbmRhYm90KSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDEwMF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDEwMCkKLSAgIGZpeDogQWRkcmVzc2luZyBjb21tYXMgaW4gZXh0ZXJuYWwgSURzIGJ5IFtAJiM4MjAzO3loYWtiYXJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS95aGFrYmFyKSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDEyOF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDEyOCkKCioqRnVsbCBDaGFuZ2Vsb2cqKjogaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2NvbXBhcmUvdjAuNzcuNy4uLnYwLjc3LjgKCiMjIyBbYHYwLjc3LjdgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcmVsZWFzZXMvdGFnL3YwLjc3LjcpCgpbQ29tcGFyZSBTb3VyY2VdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9jb21wYXJlL3YwLjc3LjYuLi52MC43Ny43KQoKIyMjIyDinKggTmV3IEZlYXR1cmVzCgpVc2VycyBjYW4gbm93IGNvbmZpZ3VyZSBhIGN1c3RvbSBkZWZhdWx0IHRlbXBsYXRlIGZvciBgc2NhZmZvbGRgIGFuZCBgY2F0YWxvZ2AgY29tbWFuZHMgaW4gdGhlaXIgYGNhdGFsb2dgIGNvbmZpZ3VyYXRpb24gYmxvY2tzIGxpa2Ugc286CgpgYGBoY2wKY2F0YWxvZyB7CiAgZGVmYXVsdF90ZW1wbGF0ZSA9ICJnaXRAZ2l0aHViLmNvbS9hY21lL2V4YW1wbGUuZ2l0Ly9wYXRoL3RvL3RlbXBsYXRlIgp9CmBgYAoKRm9yIG1vcmUgaW5mb3JtYXRpb24sIHJlYWQgdGhlIGRvY3VtZW50YXRpb24gaW4gdGhlIFtjYXRhbG9nIGZlYXR1cmVdKGh0dHBzOi8vdGVycmFncnVudC5ncnVudHdvcmsuaW8vZG9jcy9mZWF0dXJlcy9jYXRhbG9nLyNjdXN0b20tdGVtcGxhdGVzLWZvci1zY2FmZm9sZGluZykuCgpTcGVjaWFsIHRoYW5rcyB0byBbQCYjODIwMzt0Z2VpamddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS90Z2VpamcpIGZvciBjb250cmlidXRpbmcgdGhpcyBmZWF0dXJlIQoKIyMjIyBXaGF0J3MgQ2hhbmdlZAoKLSAgIGZlYXQ6IEFkZGluZyBjdXN0b20gZGVmYXVsdCB0ZW1wbGF0ZSBbIyYjODIwMzszNjU4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvaXNzdWVzLzM2NTgpIGJ5IFtAJiM4MjAzO3RnZWlqZ10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3RnZWlqZykgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQwMzVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQwMzUpCi0gICBmaXg6IFVwZGF0aW5nIGRvY3MgYWZ0ZXIgWyMmIzgyMDM7NDAzNV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2lzc3Vlcy80MDM1KSBieSBbQCYjODIwMzt5aGFrYmFyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20veWhha2JhcikgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxMTddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxMTcpCi0gICBjaG9yZTogc3RhY2tzIGRvY3VtZW50YXRpb24gaW1wcm92ZW1lbnRzIGJ5IFtAJiM4MjAzO2RlbmlzMjU2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZGVuaXMyNTYpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTE0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTE0KQoKIyMjIyBOZXcgQ29udHJpYnV0b3JzCgotICAgW0AmIzgyMDM7dGdlaWpnXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vdGdlaWpnKSBtYWRlIHRoZWlyIGZpcnN0IGNvbnRyaWJ1dGlvbiBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDAzNV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDAzNSkKCioqRnVsbCBDaGFuZ2Vsb2cqKjogaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2NvbXBhcmUvdjAuNzcuNi4uLnYwLjc3LjcKCiMjIyBbYHYwLjc3LjZgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcmVsZWFzZXMvdGFnL3YwLjc3LjYpCgpbQ29tcGFyZSBTb3VyY2VdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9jb21wYXJlL3YwLjc3LjUuLi52MC43Ny42KQoKIyMjIyBXaGF0J3MgQ2hhbmdlZAoKLSAgIGZpeDogQ29ycmVjdGx5IGlnbm9yZSBsb2NrIHRhYmxlIGVuY3J5cHRpb24gc2V0dGluZyB0byBwcmV2ZW50IHVuaW50ZW5kZWQgY29uZmlndXJhdGlvbiBvdmVycmlkZXMgYnkgW0AmIzgyMDM7bGV2a29oaW1pbnNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9sZXZrb2hpbWlucykgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxMTJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxMTIpCi0gICBmaXg6IEludHJvZHVjZWQgc3RyaWN0ZXIgY29uc3RyYWludHMgZm9yIGRldGVjdGluZyBzdGFjayBjb25maWd1cmF0aW9uIGZpbGVzIGJ5IFtAJiM4MjAzO2RlbmlzMjU2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZGVuaXMyNTYpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTEzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTEzKQotICAgZmVhdDogRW5hYmxlZCBwYXJzaW5nIG9mIHN0YWNrIGNvbmZpZ3VyYXRpb24gZGlyZWN0bHkgZnJvbSBhIHN0cmluZyBpbnB1dCBmb3IgZW5oYW5jZWQgaW50ZWdyYXRpb24gd2l0aCAzcmQgcGFydHkgY29kZSBieSBbQCYjODIwMztkZW5pczI1Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RlbmlzMjU2KSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDExMF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDExMCkKCioqRnVsbCBDaGFuZ2Vsb2cqKjogaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2NvbXBhcmUvdjAuNzcuNS4uLnYwLjc3LjYKCiMjIyBbYHYwLjc3LjVgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcmVsZWFzZXMvdGFnL3YwLjc3LjUpCgpbQ29tcGFyZSBTb3VyY2VdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9jb21wYXJlL3YwLjc3LjQuLi52MC43Ny41KQoKIyMjIyBXaGF0J3MgQ2hhbmdlZAoKLSAgIGZlYXQ6IGFkZGVkIHN1cHBvcnQgZm9yIE9wZW5UZWxlbWV0cnkgaW4gYHN0YWNrYCBjb21tYW5kcyB0byBlbmFibGUgZW5oYW5jZWQgb2JzZXJ2YWJpbGl0eSBhbmQgdHJhY2luZyBieSBbQCYjODIwMztkZW5pczI1Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RlbmlzMjU2KSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDEwOV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDEwOSkKCioqRnVsbCBDaGFuZ2Vsb2cqKjogaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2NvbXBhcmUvdjAuNzcuNC4uLnYwLjc3LjUKCiMjIyBbYHYwLjc3LjRgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcmVsZWFzZXMvdGFnL3YwLjc3LjQpCgpbQ29tcGFyZSBTb3VyY2VdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9jb21wYXJlL3YwLjc3LjMuLi52MC43Ny40KQoKIyMjIyDwn5CbIEJ1ZyBmaXhlcwoKIyMjIyMgTmV3bGluZXMgcmVkdWNlZCBpbiBFcnJvciBMb2dnaW5nIGZvciBDb25maWd1cmF0aW9uIEVycm9ycwoKTG9nZ2luZyBmb3IgY29uZmlndXJhdGlvbiBlcnJvcnMgaGFzIGJlZW4gY29tcGFjdGVkIHRvIHJlZHVjZSBub2lzZSwgYW5kIG1ha2UgZXJyb3JzIGVhc2llciB0byByZWFkLgoKYGBgCgojIyMgQmVmb3JlCjE0OjA5OjI1Ljg5MiBFUlJPUiAgRXJyb3I6IEVycm9yIGluIGZ1bmN0aW9uIGNhbGwKCjE0OjA5OjI1Ljg5MiBFUlJPUiAgICBvbiB0ZXJyYWdydW50LmhjbCBsaW5lIDMsIGluIGxvY2FsczoKCjE0OjA5OjI1Ljg5MiBFUlJPUiAgICAgMzogICAgICAgcmVxdWlyZXNfYXV0aCA9IHJ1bl9jbWQoImV4aXQiLCAiMSIpIC8vIGludGVudGlvbmFsIGVycm9yCgoxNDowOToyNS44OTIgRVJST1IKCjE0OjA5OjI1Ljg5MiBFUlJPUiAgQ2FsbCB0byBmdW5jdGlvbiAicnVuX2NtZCIgZmFpbGVkOiBGYWlsZWQgdG8gZXhlY3V0ZSAiZXhpdCAxIiBpbiAuCgpleGVjOiAiZXhpdCI6IGV4ZWN1dGFibGUgZmlsZSBub3QgZm91bmQgaW4gJFBBVEguCgpgYGAKCiAgICAjIyMgQWZ0ZXIKICAgIDE1OjE5OjUwLjkzNyBFUlJPUiAgRXJyb3I6IEVycm9yIGluIGZ1bmN0aW9uIGNhbGwKICAgIDE1OjE5OjUwLjkzNyBFUlJPUiAgICBvbiB0ZXJyYWdydW50LmhjbCBsaW5lIDMsIGluIGxvY2FsczoKICAgIDE1OjE5OjUwLjkzNyBFUlJPUiAgRXJyb3I6IEVycm9yIGluIGZ1bmN0aW9uIGNhbGwKICAgIDE1OjE5OjUwLjkzNyBFUlJPUiAgICBvbiB0ZXJyYWdydW50LmhjbCBsaW5lIDMsIGluIGxvY2FsczoKICAgIDE1OjE5OjUwLjkzNyBFUlJPUiAgICAgMzogICAgICAgcmVxdWlyZXNfYXV0aCA9IHJ1bl9jbWQoImV4aXQiLCAiMSIpIC8vIGludGVudGlvbmFsIGVycm9yCiAgICAxNToxOTo1MC45MzcgRVJST1IgICAgIDM6ICAgICAgIGZhaWwgICA9IHJ1bl9jbWQoImV4aXQiLCAiMSIpIC8vIGludGVudGlvbmFsIGVycm9yCiAgICAxNToxOTo1MC45MzcgRVJST1IgIENhbGwgdG8gZnVuY3Rpb24gInJ1bl9jbWQiIGZhaWxlZDogRmFpbGVkIHRvIGV4ZWN1dGUgImV4aXQgMSIgaW4gLgogICAgMTU6MTk6NTAuOTM3IEVSUk9SICBleGVjOiAiZXhpdCI6IGV4ZWN1dGFibGUgZmlsZSBub3QgZm91bmQgaW4gJFBBVEguCgojIyMjIyBJbXByb3ZlZCBDeWNsZSBEZXRlY3Rpb24gTG9naWMgZm9yIGBzdGFjayBnZW5lcmF0ZWAKCk9uIHRoZSBkZWZhdWx0IGZpbGVzeXN0ZW0gZm9yIG1hY09TLCBwYXRoIGxlbmd0aCB3YXMgbGlrZWx5IHRvIHJlc3VsdCBpbiBhbiBlcnJvciBiZWZvcmUgaW50ZXJuYWwgY3ljbGUgZGV0ZWN0aW9uIGxvZ2ljLCBzbyBjeWNsZSBkZXRlY3Rpb24gd2FzIHVwZGF0ZWQgdG8gbGV2ZXJhZ2UgYSBtYXhpbXVtIHBhdGggbGVuZ3RoIG9mIDEwMjQgY2hhcmFjdGVycyBhcyBhbiBlYXJsaWVyIGV4aXQgZm9yIGFsbCBvcGVyYXRpbmcgc3lzdGVtcy4KCiMjIyMjIEV4Y2Vzc2l2ZSB3YXJuaW5nIGZvciBib290c3RyYXAgcmVxdWlyZW1lbnQgcmVzb2x2ZWQKCkludGVybmFsIGxvZ2ljIGZvciBkZXRlcm1pbmF0aW9uIHRoYXQgYmFja2VuZHMgcmVxdWlyZWQgYm9vdHN0cmFwcGluZyB3YXMgYWRqdXN0ZWQgdG8gbm8gbG9uZ2VyIGxldmVyYWdlIHRoZSB2YWx1ZSBvZiB0aGUgT3BlblRvZnUgc3RhdGUgZmlsZS4KCldoaWxlIGNoZWFwZXIgdGhhbiBtYWtpbmcgYSBuZXR3b3JrIHJlcXVlc3QgdG8gYXNzZXNzIHRoZSBjdXJyZW50IHN0YXRlIG9mIGJhY2tlbmQgcmVzb3VyY2VzLCBpdCBhbHNvIHJlc3VsdGVkIGluIGZhbHNlIG5lZ2F0aXZlcywgd2hpY2ggdHJpZ2dlcmVkIGV4Y2Vzc2l2ZSBiYWNrZW5kIGJvb3RzdHJhcCB3YXJuaW5ncy4KCiMjIyMgV2hhdCdzIENoYW5nZWQKCi0gICBmaXg6IE5ldyBsaW5lcyBpbiBURiBkaWFnbm9zdGljIGxvZyBieSBbQCYjODIwMztsZXZrb2hpbWluc10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2xldmtvaGltaW5zKSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDEwOF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDEwOCkKLSAgIGZpeDogU3RhY2sgY3ljbGVzIGRldGVjdGlvbiBpbXByb3ZlbWVudHMgYnkgW0AmIzgyMDM7ZGVuaXMyNTZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kZW5pczI1NikgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxMDZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxMDYpCi0gICBmaXg6IEZpeGluZyBleGNlc3NpdmUgd2FybmluZyBmb3IgYm9vdHN0cmFwIGJ5IFtAJiM4MjAzO3loYWtiYXJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS95aGFrYmFyKSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDEwN10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDEwNykKCioqRnVsbCBDaGFuZ2Vsb2cqKjogaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2NvbXBhcmUvdjAuNzcuMy4uLnYwLjc3LjQKCjwvZGV0YWlscz4KCi0tLQoKIyMjIENvbmZpZ3VyYXRpb24KCvCfk4UgKipTY2hlZHVsZSoqOiBCcmFuY2ggY3JlYXRpb24gLSBBdCBhbnkgdGltZSAobm8gc2NoZWR1bGUgZGVmaW5lZCksIEF1dG9tZXJnZSAtIEF0IGFueSB0aW1lIChubyBzY2hlZHVsZSBkZWZpbmVkKS4KCvCfmqYgKipBdXRvbWVyZ2UqKjogRGlzYWJsZWQgYnkgY29uZmlnLiBQbGVhc2UgbWVyZ2UgdGhpcyBtYW51YWxseSBvbmNlIHlvdSBhcmUgc2F0aXNmaWVkLgoK4pm7ICoqUmViYXNpbmcqKjogV2hlbmV2ZXIgUFIgYmVjb21lcyBjb25mbGljdGVkLCBvciB5b3UgdGljayB0aGUgcmViYXNlL3JldHJ5IGNoZWNrYm94LgoK8J+UlSAqKklnbm9yZSoqOiBDbG9zZSB0aGlzIFBSIGFuZCB5b3Ugd29uJ3QgYmUgcmVtaW5kZWQgYWJvdXQgdGhpcyB1cGRhdGUgYWdhaW4uCgotLS0KCiAtIFsgXSA8IS0tIHJlYmFzZS1jaGVjayAtLT5JZiB5b3Ugd2FudCB0byByZWJhc2UvcmV0cnkgdGhpcyBQUiwgY2hlY2sgdGhpcyBib3gKCi0tLQoKVGhpcyBQUiB3YXMgZ2VuZXJhdGVkIGJ5IFtNZW5kIFJlbm92YXRlXShodHRwczovL21lbmQuaW8vcmVub3ZhdGUvKS4gVmlldyB0aGUgW3JlcG9zaXRvcnkgam9iIGxvZ10oaHR0cHM6Ly9kZXZlbG9wZXIubWVuZC5pby9naXRodWIvb3Npc20vdGVzdGJlZCkuCjwhLS1yZW5vdmF0ZS1kZWJ1ZzpleUpqY21WaGRHVmtTVzVXWlhJaU9pSXpPUzR5TURjdU1TSXNJblZ3WkdGMFpXUkpibFpsY2lJNklqTTVMakkwT0M0MElpd2lkR0Z5WjJWMFFuSmhibU5vSWpvaWJXRnBiaUlzSW14aFltVnNjeUk2V3lKeVpXNXZkbUYwWlNKZGZRPT0tLT4K
      patchset: 4e898e01159662bf8e2bc9f365fe4d21d513debc
      pipeline: check
      playbook_context:
        playbook_projects:
          trusted/project_0/github.com/osism/zuul-config:
            canonical_name: github.com/osism/zuul-config
            checkout: main
            commit: fa94074a33c2a4b1ff3eaadb063e1f29046bf671
          trusted/project_1/opendev.org/zuul/zuul-jobs:
            canonical_name: opendev.org/zuul/zuul-jobs
            checkout: master
            commit: e4e91ee5c425b9c22060484c5410162ce4a3896b
          untrusted/project_0/github.com/osism/zuul-jobs:
            canonical_name: github.com/osism/zuul-jobs
            checkout: main
            commit: c212ef9fff456ceede260bdfaaf903f6e2d2313a
          untrusted/project_1/github.com/osism/zuul-config:
            canonical_name: github.com/osism/zuul-config
            checkout: main
            commit: fa94074a33c2a4b1ff3eaadb063e1f29046bf671
          untrusted/project_2/opendev.org/zuul/zuul-jobs:
            canonical_name: opendev.org/zuul/zuul-jobs
            checkout: master
            commit: e4e91ee5c425b9c22060484c5410162ce4a3896b
        playbooks:
        - path: untrusted/project_0/github.com/osism/zuul-jobs/playbooks/python-black/run.yml
          roles:
          - checkout: main
            checkout_description: playbook branch
            link_name: ansible/playbook_0/role_0/zuul-jobs
            link_target: untrusted/project_0/github.com/osism/zuul-jobs
            role_path: ansible/playbook_0/role_0/zuul-jobs/roles
          - checkout: main
            checkout_description: zuul branch
            link_name: ansible/playbook_0/role_1/zuul-config
            link_target: untrusted/project_1/github.com/osism/zuul-config
            role_path: ansible/playbook_0/role_1/zuul-config/roles
          - checkout: master
            checkout_description: project default branch
            link_name: ansible/playbook_0/role_2/zuul-jobs
            link_target: untrusted/project_2/opendev.org/zuul/zuul-jobs
            role_path: ansible/playbook_0/role_2/zuul-jobs/roles
      post_review: false
      project:
        canonical_hostname: github.com
        canonical_name: github.com/osism/testbed
        name: osism/testbed
        short_name: testbed
        src_dir: src/github.com/osism/testbed
      projects:
        github.com/osism/testbed:
          canonical_hostname: github.com
          canonical_name: github.com/osism/testbed
          checkout: main
          checkout_description: zuul branch
          commit: 02151704c3da0662ce32768e5f03c4ba1b4fe0e8
          name: osism/testbed
          required: false
          short_name: testbed
          src_dir: src/github.com/osism/testbed
      ref: refs/pull/2654/head
      resources: {}
      tenant: osism
      timeout: 1800
      voting: true
