all:
  hosts:
    ubuntu-noble:
      ansible_connection: ssh
      ansible_host: 81.163.192.42
      ansible_port: 22
      ansible_python_interpreter: auto
      ansible_user: zuul
      nodepool:
        az: nova
        cloud: regiocloud-a-ci
        external_id: 40dc1240-cadb-440a-a2ec-7d144f69e70d
        host_id: 55633341e2323245483187cac115f046b03a9f9bdd80b43c7e9345ac
        interface_ip: 81.163.192.42
        label: ubuntu-noble
        private_ipv4: 10.128.0.99
        private_ipv6: null
        provider: regiocloud-a
        public_ipv4: 81.163.192.42
        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 flake8 branches: None source: osism/zuul-jobs/.zuul.yaml@main#32>'
      - '<Job flake8 branches: None source: osism/testbed/.zuul.yaml@main#195>'
      ansible_version: '8'
      attempts: 1
      branch: main
      build: 33a65f0deece4379b517879176d7c4df
      buildset: 749d6c00a0f34bcdabb12512fb56bad4
      change: '2615'
      change_message: "chore(deps): update dependency gruntwork-io/terragrunt to v0.76.6\n\
        \nThis PR contains the following updates:\n\n| Package | Update | Change |\n\
        |---|---|---|\n| [gruntwork-io/terragrunt](https://redirect.github.com/gruntwork-io/terragrunt)\
        \ | minor | `v0.73.15` -> `v0.76.6` |\n\n---\n\n### Release Notes\n\n<details>\n\
        <summary>gruntwork-io/terragrunt (gruntwork-io/terragrunt)</summary>\n\n###\
        \ [`v0.76.6`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.76.6)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.76.5...v0.76.6)\n\
        \n#### What's Changed\n\n-   feat: Adding `govet` alignment check by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4057](https://redirect.github.com/gruntwork-io/terragrunt/pull/4057)\n\
        -   feat: Throw error when an absolute path is used for stack [@&#8203;denis256](https://redirect.github.com/denis256)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4055](https://redirect.github.com/gruntwork-io/terragrunt/pull/4055)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.76.5...v0.76.6\n\
        \n### [`v0.76.5`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.76.5)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.76.4...v0.76.5)\n\
        \n#### What's Changed\n\n-   fix(docs): Addressing some missed renames of\
        \ `terragrunt.hcl` to `root.hcl` in the docs by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4058](https://redirect.github.com/gruntwork-io/terragrunt/pull/4058)\n\
        -   build(deps): Updated cloud.google.com/go/storage to 1.51.0 by [@&#8203;denis256](https://redirect.github.com/denis256)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4059](https://redirect.github.com/gruntwork-io/terragrunt/pull/4059)\n\
        -   build(deps): Updated go.opentelemetry.io/otel/exporters/stdout/stdoutmetric\
        \ to 1.35.0 by [@&#8203;denis256](https://redirect.github.com/denis256) in\
        \ [https://github.com/gruntwork-io/terragrunt/pull/4059](https://redirect.github.com/gruntwork-io/terragrunt/pull/4059)\n\
        -   build(deps): Updated go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp\
        \ to 1.35.0 by [@&#8203;denis256](https://redirect.github.com/denis256) in\
        \ [https://github.com/gruntwork-io/terragrunt/pull/4059](https://redirect.github.com/gruntwork-io/terragrunt/pull/4059)\n\
        -   build(deps): Updated golang.org/x/oauth2 to 0.28.0 by [@&#8203;denis256](https://redirect.github.com/denis256)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4059](https://redirect.github.com/gruntwork-io/terragrunt/pull/4059)\n\
        -   build(deps): Updated go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp\
        \ to 1.35.0 by [@&#8203;denis256](https://redirect.github.com/denis256) in\
        \ [https://github.com/gruntwork-io/terragrunt/pull/4059](https://redirect.github.com/gruntwork-io/terragrunt/pull/4059)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.76.4...v0.76.5\n\
        \n### [`v0.76.4`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.76.4)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.76.3...v0.76.4)\n\
        \n#### What's Changed\n\n-   feat: Introduced `-a` alias for the `-all` flag\
        \ [#&#8203;4048](https://redirect.github.com/gruntwork-io/terragrunt/pull/4048)\
        \ by [@&#8203;levkohimins](https://redirect.github.com/levkohimins)\n-   feat:\
        \ Implemented detection of nested stacks [#&#8203;4052](https://redirect.github.com/gruntwork-io/terragrunt/pull/4052)\
        \ by [@&#8203;denis256](https://redirect.github.com/denis256)\n-   fix: Refactored\
        \ list package structure [#&#8203;4050](https://redirect.github.com/gruntwork-io/terragrunt/pull/4050)\
        \ by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\n-   fix: Updated\
        \ documentation for list usage [#&#8203;4051](https://redirect.github.com/gruntwork-io/terragrunt/pull/4051)\
        \ by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\n-   fix: Corrected\
        \ `.stack` references in generated documentation [#&#8203;4053](https://redirect.github.com/gruntwork-io/terragrunt/pull/4053)\
        \ by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\n\n**Full Changelog**:\
        \ https://github.com/gruntwork-io/terragrunt/compare/v0.76.3...v0.76.4\n\n\
        ### [`v0.76.3`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.76.3)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.76.2...v0.76.3)\n\
        \n#### \U0001F6E0\uFE0F Breaking Changes\n\n##### `find --sort=dag` changed\
        \ to `find --dag`\n\nThe experimental [`find`](https://terragrunt.gruntwork.io/docs/reference/cli-options/#find)\
        \ command no longer has a `--sort` flag. Instead the ability to sort configurations\
        \ according to their position in the [DAG](https://terragrunt.gruntwork.io/docs/getting-started/terminology/#directed-acyclic-graph-dag)\
        \ has been replaced with the dedicated `--dag` flag, which puts the command\
        \ in \"DAG Mode\". These changes have been done to allow for closer parity\
        \ in the behavior of `find` and `list`.\n\n```bash\n\n### Before\nterragrunt\
        \ find --sort=dag\n\n### After\nterragrunt find --dag\n```\n\n#### \u2728\
        \ New Features\n\n##### Introduction of the `list` command\n\nAs part of the\
        \ [CLI Redesign](https://terragrunt.gruntwork.io/docs/reference/experiments/#cli-redesign)\
        \ experiment, the [`list`](https://terragrunt.gruntwork.io/docs/reference/cli-options/#list)\
        \ command has been introduced. As with other new features, usage requires\
        \ enabling the CLI Redesign experiment.\n\nThe list command helps you discover\
        \ and display Terragrunt configurations in your codebase. It provides various\
        \ output formats and options to help you understand the structure and dependencies\
        \ of your Terragrunt configurations.\n\nThe list command is very similar to\
        \ the [find command](https://terragrunt.gruntwork.io/docs/reference/cli-options/#find).\
        \ It uses the same backend logic for configuration discovery. It also supports\
        \ very similar flags and configuration options.\n\nGenerally, the list command\
        \ is optimized for displaying configurations in a format that is easy for\
        \ a human to read and understand, so there are more configuration options,\
        \ and the output is more verbose. Output from the list command can vary significantly\
        \ depending on the flags used, and the output structure is more variable than\
        \ that of the find command.\n\nUse the list command when you want to visualize\
        \ your Terragrunt configurations in a human-readable format. Use the find\
        \ command when you want to programmatically search for configurations in your\
        \ codebase.\n\n##### Usage\n\nBy default, the `list` command will display\
        \ all discovered configurations with some spacing to display as many as it\
        \ can on each line.\n\n![list](https://redirect.github.com/user-attachments/assets/d4473e7e-85bd-4629-aba1-0b9601c24d0c)\n\
        \nWhen the size of the output exceeds the width of the terminal, entries will\
        \ be broken into multiple lines.\n\n![list-narrow](https://redirect.github.com/user-attachments/assets/0273d315-bb35-466c-a308-aeb2c76e3696)\n\
        \nUsers can additionally request that the `--long` format is used, which breaks\
        \ the results over individual lines for each discovered configuration.\n\n\
        ![list-long](https://redirect.github.com/user-attachments/assets/746a6a22-19f2-4847-a048-f3fc335b5417)\n\
        \nLike with the `find` command, users can optionally request that dependencies\
        \ be displayed.\n\n![list-long-dependencies](https://redirect.github.com/user-attachments/assets/e69b042a-7d7b-4501-bfe4-d976654f87a6)\n\
        \nThe final format that the `list` command supports is the `tree` format:\n\
        \n![list-tree](https://redirect.github.com/user-attachments/assets/deca7432-08ff-41a9-bf98-1533769966d1)\n\
        \nLike with the `find` command, the `list` command supports the `--dag` flag\
        \ which sorts and groups results according to their relative positions in\
        \ the Directed Acyclic Graph (DAG).\n\n![list-tree-dag](https://redirect.github.com/user-attachments/assets/2fa1e314-5de4-4381-bab3-8a1ee01442b7)\n\
        \nFor more information read the documentation in [`list`](https://terragrunt.gruntwork.io/docs/reference/cli-options/#list).\n\
        \n#### What's Changed\n\n-   feat: Adding `list` command by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4034](https://redirect.github.com/gruntwork-io/terragrunt/pull/4034)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.76.2...v0.76.3\n\
        \n### [`v0.76.2`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.76.2)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.76.1...v0.76.2)\n\
        \n#### \u2728 New Features\n\nAdded `--no-stack-generate` support in `stack\
        \ run` and `stack output`, allowing users to disable automatic stack regeneration\
        \ before executing commands. This provides greater control over stack operations\
        \ by allowing commands to use the existing `.terragrunt-stack` directory,\
        \ improving efficiency and avoiding unnecessary updates.\n\n#### What's Changed\n\
        \n-   feat: Added `--no-stack-generate` cli flag to skip stack generation\
        \ by [@&#8203;denis256](https://redirect.github.com/denis256) in [https://github.com/gruntwork-io/terragrunt/pull/4039](https://redirect.github.com/gruntwork-io/terragrunt/pull/4039)\n\
        -   chroe: Stack tests improvements by [@&#8203;denis256](https://redirect.github.com/denis256)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4033](https://redirect.github.com/gruntwork-io/terragrunt/pull/4033)\n\
        -   chrore: Adding `.cursor` to `.gitignore` by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4040](https://redirect.github.com/gruntwork-io/terragrunt/pull/4040)\n\
        -   docs: Adding docs for `--all` and `--graph` by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4036](https://redirect.github.com/gruntwork-io/terragrunt/pull/4036)\n\
        -   docs: Move `info` to a better location by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4037](https://redirect.github.com/gruntwork-io/terragrunt/pull/4037)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.76.1...v0.76.2\n\
        \n### [`v0.76.1`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.76.1)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.76.0...v0.76.1)\n\
        \n#### \u2728 New Features\n\nIntroduced `no_dot_terragrunt_stack` support\
        \ in `stack` and `unit`, allowing users to opt out of generating `.terragrunt-stack`\
        \ directories. This enables seamless adoption of `terragrunt.stack.hcl` without\
        \ requiring state migration for existing infrastructure.\n\nDemo:\n![no_dot_terragrunt_stack_example_release_example](https://redirect.github.com/user-attachments/assets/546d281b-3dbb-4cb8-afd3-9b98b75b4f02)\n\
        \nStacks RFC: [https://github.com/gruntwork-io/terragrunt/issues/3313](https://redirect.github.com/gruntwork-io/terragrunt/issues/3313)\n\
        \n#### What's Changed\n\n-   feat: added support for support for `no_dot_terragrunt_stack`\
        \ in `stack` and `unit` blocks by [@&#8203;denis256](https://redirect.github.com/denis256)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4019](https://redirect.github.com/gruntwork-io/terragrunt/pull/4019)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.76.0...v0.76.1\n\
        \n### [`v0.76.0`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.76.0)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.75.10...v0.76.0)\n\
        \n#### \u2728 New Features / \U0001F6E0\uFE0F Breaking Changes\n\n##### Catalog/Scaffold\
        \ no longer requires `--root-file-name root.hcl`\n\n\u2728 The `catalog` and\
        \ `scaffold` commands will now attempt to discover a parent `root.hcl` file\
        \ by default and use it as the default root Terragrunt configuration when\
        \ present to help users adopt the changes in [migrating-from-root-terragrunt-hcl](https://terragrunt.gruntwork.io/docs/migrate/migrating-from-root-terragrunt-hcl/).\n\
        \nUsers that have switched over to use `root.hcl` as the root of their Terragrunt\
        \ configurations instead of `terragrunt.hcl` will no longer need to explicitly\
        \ pass `--root-file-name root.hcl` or use the [root-terragrunt-hcl](https://terragrunt.gruntwork.io/docs/reference/strict-mode/#root-terragrunt-hcl)\
        \ strict control to automatically discover the root of their Terragrunt configurations\
        \ when using `catalog` or `scaffold`.\n\n\U0001F6E0\uFE0F Note that this is\
        \ technically a breaking change to the way that `catalog` and `scaffold` work.\
        \ With this change, users that have *both* a `root.hcl` file and a `terragrunt.hcl`\
        \ file at the root of their repositories will have the `root.hcl` file used\
        \ instead of the `terragrunt.hcl` file for the `catalog` and `scaffold` commands.\n\
        \nIf you are not yet ready to rename the `terragrunt.hcl` file at the root\
        \ of your repository, use the `--root-file-name` flag to explicitly provide\
        \ `terragrunt.hcl` as the name of the Terragrunt configuration at the root\
        \ of your Terragrunt project.\n\nThis change was made as most users are very\
        \ unlikely to have *both* `root.hcl` (the recommended root of Terragrunt configurations)\
        \ and `terragrunt.hcl` (the legacy root of Terragrunt configurations in the\
        \ same Terragrunt project) at the root of their Terragrunt project. This configuration\
        \ is entirely CLI based, making it relatively easy to address for users (as\
        \ opposed to HCL configurations, which might take more time for teams to address).\n\
        \nUsers looking to move from a root `terragrunt.hcl` file to a `root.hcl`\
        \ file will still need to read through the migration guide to adjust all usages\
        \ of `find_in_parent_folders` when making the switch.\n\n#### What's Changed\n\
        \n-   fix: Lookup root.hcl if present by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4022](https://redirect.github.com/gruntwork-io/terragrunt/pull/4022)\n\
        -   fix: Improving logic for scaffold default root discovery by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4029](https://redirect.github.com/gruntwork-io/terragrunt/pull/4029)\n\
        -   fix: Fixing configuration parsing order link by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4021](https://redirect.github.com/gruntwork-io/terragrunt/pull/4021)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.75.10...v0.76.0\n\
        \n### [`v0.75.10`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.75.10)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.75.9...v0.75.10)\n\
        \n#### What's Changed\n\n-   fix: addressing `gopls` findings by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4018](https://redirect.github.com/gruntwork-io/terragrunt/pull/4018)\n\
        -   build(deps): bump golang.org/x/net from 0.35.0 to 0.36.0 by [@&#8203;dependabot](https://redirect.github.com/dependabot)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4013](https://redirect.github.com/gruntwork-io/terragrunt/pull/4013)\n\
        -   build(deps): bump go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc\
        \ to 1.35.0 update by [@&#8203;denis256](https://redirect.github.com/denis256)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4020](https://redirect.github.com/gruntwork-io/terragrunt/pull/4020)\n\
        -   build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 to 1.78.1 update\
        \ by [@&#8203;denis256](https://redirect.github.com/denis256) in [https://github.com/gruntwork-io/terragrunt/pull/4020](https://redirect.github.com/gruntwork-io/terragrunt/pull/4020)\n\
        -   build(deps): bump golang.org/x/mod to 0.24.0 update by [@&#8203;denis256](https://redirect.github.com/denis256)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4020](https://redirect.github.com/gruntwork-io/terragrunt/pull/4020)\n\
        -   build(deps): bump go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc\
        \ to 1.35.0 update by [@&#8203;denis256](https://redirect.github.com/denis256)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4020](https://redirect.github.com/gruntwork-io/terragrunt/pull/4020)\n\
        -   build(deps): bump go.opentelemetry.io/otel to 1.35.0 update by [@&#8203;denis256](https://redirect.github.com/denis256)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4020](https://redirect.github.com/gruntwork-io/terragrunt/pull/4020)\n\
        -   build(deps): bump github.com/gruntwork-io/terragrunt-engine-go to v0.0.11\
        \ update by [@&#8203;denis256](https://redirect.github.com/denis256) in [https://github.com/gruntwork-io/terragrunt/pull/4020](https://redirect.github.com/gruntwork-io/terragrunt/pull/4020)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.75.9...v0.75.10\n\
        \n### [`v0.75.9`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.75.9)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.75.8...v0.75.9)\n\
        \n#### \U0001F41B Bug fixes\n\n##### Using absolute paths for `mark_as_read`\n\
        \nThe internal store for the values `mark_as_read` was tracking now use absolute\
        \ paths instead of \"canonical paths\". The result of this is that even if\
        \ you are using tooling like `run_cmd` to dynamically discover files to mark\
        \ as read, you should still expect `--queue-include-units-reading` to work\
        \ correctly.\n\n#### What's Changed\n\n-   fix: Use abs path for `mark_as_read`\
        \ by [@&#8203;yhakbar](https://redirect.github.com/yhakbar) in [https://github.com/gruntwork-io/terragrunt/pull/4015](https://redirect.github.com/gruntwork-io/terragrunt/pull/4015)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.75.8...v0.75.9\n\
        \n### [`v0.75.8`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.75.8)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.75.7...v0.75.8)\n\
        \n#### What's Changed\n\n-   feat: added support for`  --source-map ` when\
        \ downloading units and stacks by [@&#8203;denis256](https://redirect.github.com/denis256)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4011](https://redirect.github.com/gruntwork-io/terragrunt/pull/4011)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.75.7...v0.75.8\n\
        \n### [`v0.75.7`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.75.7)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.75.6...v0.75.7)\n\
        \n#### \u2728 New Features\n\n##### `find` supports `dag` sorting\n\nThe `find`\
        \ command now supports the ability to sort results by their relative positions\
        \ in the Directed Acyclic Graph (DAG).\n\nTo use the `find` command, you must\
        \ enable the [`cli-redesign` experiment](https://terragrunt.gruntwork.io/docs/reference/experiments/#cli-redesign).\n\
        \n![tg-find-no-dag](https://redirect.github.com/user-attachments/assets/36366dde-0581-47a9-a4f7-94b06f9df0bb)\n\
        \n![tg-find-dag](https://redirect.github.com/user-attachments/assets/01d0eeb1-75be-43e2-8657-77ff4cf46c18)\n\
        \nThe `find` command now also supports discovering dependencies of units with\
        \ the new `--dependencies` flag.\n\n![tg-find-dag-deps](https://redirect.github.com/user-attachments/assets/1ea9c5a8-3d03-4075-b6c8-8fa9ce68274c)\n\
        \nIn addition, external dependencies (dependencies outside the working directory\
        \ where `find` was run), can be discovered using the `--external` flag.\n\n\
        ![tg-find-dag-ext](https://redirect.github.com/user-attachments/assets/92c90bde-62bc-4145-a04e-e27ba6884f9a)\n\
        \nMore information can be found [in the `find` docs](https://terragrunt.gruntwork.io/docs/reference/cli-options/#find-sorting).\n\
        \n##### The `stack run` command now supports all `run` flags\n\nThe `stack\
        \ run` command now supports all the same flags `run` supports, including `--queue-include-dir`.\n\
        \nTo use `stack` commands, you must enable the [`stacks`](https://terragrunt.gruntwork.io/docs/reference/experiments/#stacks)\
        \ experiment.\n\nAs an example of what's supported now:\n\n```bash\nterragrunt\
        \ --experiment stacks stack run apply --queue-strict-include --queue-include-dir=./.terragrunt-stack/app1\
        \ --non-interactive\n```\n\nMore information can be found [in the `stack run`\
        \ docs](https://terragrunt.gruntwork.io/docs/reference/cli-options/#stack-run).\n\
        \n#### What's Changed\n\n-   feat: Support all `run` cli flags in the Stack\
        \ command by [@&#8203;denis256](https://redirect.github.com/denis256) in [https://github.com/gruntwork-io/terragrunt/pull/4005](https://redirect.github.com/gruntwork-io/terragrunt/pull/4005)\n\
        -   feat: Adding DAG support to find by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4001](https://redirect.github.com/gruntwork-io/terragrunt/pull/4001)\n\
        -   fix: Upgrading `golangci-lint` by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/3987](https://redirect.github.com/gruntwork-io/terragrunt/pull/3987)\n\
        -   fix: Reducing noise for skipped dependency inputs by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4007](https://redirect.github.com/gruntwork-io/terragrunt/pull/4007)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.75.6...v0.75.7\n\
        \n### [`v0.75.6`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.75.6)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.75.5...v0.75.6)\n\
        \n#### \u2728 New Features\n\n##### IaC Engine Dependency Support\n\nIaC Engines\
        \ are now used during dependency evaluation when enabled. This results in\
        \ more coverage by IaC engines when enabled, reducing the reliance on the\
        \ presence of OpenTofu/Terraform on host machines when using IaC Engines.\n\
        \nThanks to [@&#8203;partcyborg](https://redirect.github.com/partcyborg) for\
        \ submitting this change.\n\n#### \U0001F697 Performance Improvements\n\n\
        Generation of `terragrunt.stack.hcl` files are now done in parallel. This\
        \ can result in significant speedups for users with multiple units or nested\
        \ stacks in `terragrunt.stack.hcl` files.\n\n#### What's Changed\n\n-   feat:\
        \ add engine support to dependencies by [@&#8203;partcyborg](https://redirect.github.com/partcyborg)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/3974](https://redirect.github.com/gruntwork-io/terragrunt/pull/3974)\n\
        -   feat: engine config in dependencies improvements by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4002](https://redirect.github.com/gruntwork-io/terragrunt/pull/4002)\n\
        -   feat: added support for parallel stacks generation by [@&#8203;denis256](https://redirect.github.com/denis256)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/3999](https://redirect.github.com/gruntwork-io/terragrunt/pull/3999)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.75.5...v0.75.6\n\
        \n### [`v0.75.5`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.75.5)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.75.4...v0.75.5)\n\
        \n#### \u2728 New Features\n\nThis release introduces experimental support\
        \ for the Terragrunt Content Addressable Store (CAS).\n\nTo enable this feature,\
        \ you must use the [cas](https://terragrunt.gruntwork.io/docs/reference/experiments/#cas)\
        \ experiment.\n\nWhen using the CAS, the `catalog` command will store its\
        \ contents in a CAS to deduplicate repository contents, then construct the\
        \ resultant repo from the CAS.\n\nYou can use Git URLs for the `catalog` command\
        \ normally, and when the `cas` experiment is enabled, Terragrunt will leverage\
        \ the CAS to save you clone time and disk space:\n\n```hcl\ncatalog {\n  urls\
        \ = [\n    \"git@github.com:acme/modules.git\"\n  ]\n}\n```\n\nThere are more\
        \ planned integration points for the CAS, but for now only the `catalog` command\
        \ is supported.\n\nYou can learn more about the CAS in the [feature documentation](https://terragrunt.gruntwork.io/docs/features/cas/).\n\
        \n#### What's Changed\n\n-   feat: Adding cas support to catalog by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/3929](https://redirect.github.com/gruntwork-io/terragrunt/pull/3929)\n\
        -   fix: Engine tests improvements by [@&#8203;denis256](https://redirect.github.com/denis256)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/3995](https://redirect.github.com/gruntwork-io/terragrunt/pull/3995)\n\
        -   fix: Adding integration testing to the `find` command. by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/3997](https://redirect.github.com/gruntwork-io/terragrunt/pull/3997)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.75.4...v0.75.5\n\
        \n### [`v0.75.4`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.75.4)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.75.3...v0.75.4)\n\
        \n#### \u2728 New Features\n\n##### The `find` command\n\nThis release introduces\
        \ experimental support for the `find` command.\n\nTo use it, you will need\
        \ to enable the [`cli-redesign`](https://terragrunt.gruntwork.io/docs/reference/experiments/#cli-redesign---criteria-for-stabilization)\
        \ experiment.\n\nThe `find` command allows for easy discovery of [unit](https://terragrunt.gruntwork.io/docs/getting-started/terminology/#unit)\
        \ and [stack](https://terragrunt.gruntwork.io/docs/getting-started/terminology/#stack)\
        \ configurations in a Terragrunt codebase.\n\nBy default, results are color\
        \ coded to make it easy to discern different configuration types:\n\n![tg-find](https://redirect.github.com/user-attachments/assets/bb43596b-e9a0-4d6e-b504-ece8c1f6c96e)\n\
        \nWhen piped into another command, Terragrunt will automatically remove those\
        \ colors so that it won't interfere with any post-processing:\n\n![tg-find-piped](https://redirect.github.com/user-attachments/assets/50d20fb7-58a8-43c7-8911-218434eb3888)\n\
        \nResults can also be emitted in JSON format for more advanced use-cases:\n\
        \n![tg-find-json](https://redirect.github.com/user-attachments/assets/955cbfe4-4147-449b-9ac4-7779a68b1aed)\n\
        \nThis is the initial, minimal implementation of the command, with more functionality\
        \ to come in the near future.\n\nYou can learn more about the command [here](https://terragrunt.gruntwork.io/docs/reference/cli-options/#find).\n\
        \n#### What's Changed\n\n-   feat: Adding `find` command by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/3981](https://redirect.github.com/gruntwork-io/terragrunt/pull/3981)\n\
        -   fix: Adding docs from role assumption updates in Jekyll docs to Starlight\
        \ docs by [@&#8203;yhakbar](https://redirect.github.com/yhakbar) in [https://github.com/gruntwork-io/terragrunt/pull/3985](https://redirect.github.com/gruntwork-io/terragrunt/pull/3985)\n\
        -   fix: Fixed failing CircleCI jobs by [@&#8203;denis256](https://redirect.github.com/denis256)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/3988](https://redirect.github.com/gruntwork-io/terragrunt/pull/3988)\n\
        -   fix: Remove usage of template provider in text fixtures by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/3986](https://redirect.github.com/gruntwork-io/terragrunt/pull/3986)\n\
        -   build(deps): bump github.com/gruntwork-io/terratest from 0.47.2 to 0.48.2\
        \ by [@&#8203;dependabot](https://redirect.github.com/dependabot) in [https://github.com/gruntwork-io/terragrunt/pull/3858](https://redirect.github.com/gruntwork-io/terragrunt/pull/3858)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.75.3...v0.75.4\n\
        \n### [`v0.75.3`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.75.3)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.75.2...v0.75.3)\n\
        \n#### \u2728 New Features\n\nThis release introduces support for all the\
        \ remaining `assume_role` arguments used by OpenTofu/Terraform backends.\n\
        \nThank you to [@&#8203;erpel](https://redirect.github.com/erpel) for contributing\
        \ this!\n\n#### What's Changed\n\n-   feat: Add support for all assume_role\
        \ block arguments for s3 backend by [@&#8203;erpel](https://redirect.github.com/erpel)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/3975](https://redirect.github.com/gruntwork-io/terragrunt/pull/3975)\n\
        -   fix: Adjusting contribution docs by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/3979](https://redirect.github.com/gruntwork-io/terragrunt/pull/3979)\n\
        -   chore: Bumping Dependencies as requested by Dependabot by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/3984](https://redirect.github.com/gruntwork-io/terragrunt/pull/3984)\n\
        -   docs: update contributing.md with dev containers entry by [@&#8203;j2udev](https://redirect.github.com/j2udev)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/3977](https://redirect.github.com/gruntwork-io/terragrunt/pull/3977)\n\
        \n#### New Contributors\n\n-   [@&#8203;erpel](https://redirect.github.com/erpel)\
        \ made their first contribution in [https://github.com/gruntwork-io/terragrunt/pull/3975](https://redirect.github.com/gruntwork-io/terragrunt/pull/3975)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.75.2...v0.75.3\n\
        \n### [`v0.75.2`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.75.2)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.75.1...v0.75.2)\n\
        \n#### What's Changed\n\n-   Stacks: added support for stack values by [@&#8203;denis256](https://redirect.github.com/denis256)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/3961](https://redirect.github.com/gruntwork-io/terragrunt/pull/3961)\n\
        \nExample HCL configuration:\n\n```hcl\nstack \"dev\" {\n  source = \"stacks/dev\"\
        \n  path   = \"dev\"\n\n### new values block\n  values = {\n    project =\
        \ \"dev-project\"\n    env     = \"dev\"\n  }\n}\n```\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.75.1...v0.75.2\n\
        \n### [`v0.75.1`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.75.1)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.75.0...v0.75.1)\n\
        \n#### What's Changed\n\n-   feat: Strict control for old deprecated env vars\
        \ by [@&#8203;levkohimins](https://redirect.github.com/levkohimins) in [https://github.com/gruntwork-io/terragrunt/pull/3964](https://redirect.github.com/gruntwork-io/terragrunt/pull/3964)\n\
        -   feat: Adding `.coderabbit.yaml` file by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/3969](https://redirect.github.com/gruntwork-io/terragrunt/pull/3969)\n\
        -   fix: Updated failing engine tests by [@&#8203;denis256](https://redirect.github.com/denis256)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/3960](https://redirect.github.com/gruntwork-io/terragrunt/pull/3960)\n\
        -   fix: Replacing usage of `run-all` with `run --all` in starlight docs by\
        \ [@&#8203;yhakbar](https://redirect.github.com/yhakbar) in [https://github.com/gruntwork-io/terragrunt/pull/3950](https://redirect.github.com/gruntwork-io/terragrunt/pull/3950)\n\
        -   fix: Update mark_as_read example and docs by [@&#8203;odgrim](https://redirect.github.com/odgrim)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/3971](https://redirect.github.com/gruntwork-io/terragrunt/pull/3971)\n\
        -   fix: Adding missing cautionary asides by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/3970](https://redirect.github.com/gruntwork-io/terragrunt/pull/3970)\n\
        -   chore: Tofu engine update to v0.0.16 in tests by [@&#8203;denis256](https://redirect.github.com/denis256)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/3951](https://redirect.github.com/gruntwork-io/terragrunt/pull/3951)\n\
        -   build(deps-dev): bump uri from 0.13.0 to 0.13.2 in /docs by [@&#8203;dependabot](https://redirect.github.com/dependabot)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/3963](https://redirect.github.com/gruntwork-io/terragrunt/pull/3963)\n\
        \n#### New Contributors\n\n-   [@&#8203;odgrim](https://redirect.github.com/odgrim)\
        \ made their first contribution in [https://github.com/gruntwork-io/terragrunt/pull/3971](https://redirect.github.com/gruntwork-io/terragrunt/pull/3971)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.75.0...v0.75.1\n\
        \n### [`v0.75.0`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.75.0)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.74.0...v0.75.0)\n\
        \n**Terraform 1.11 support**: We are now testing Terragrunt against Terraform\
        \ 1.11 and is confirmed to be working.\n\nNOTE: Although this release is marked\
        \ as backward incompatible, it is functionally compatible as nothing has been\
        \ changed in Terragrunt internals. The minor version release is useful to\
        \ mark the change in Terraform version that is being tested.\n\n#### What's\
        \ Changed\n\n-   feat: Added support for Terraform 1.11 by [@&#8203;denis256](https://redirect.github.com/denis256)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/3958](https://redirect.github.com/gruntwork-io/terragrunt/pull/3958)\n\
        -   fix: corrected command `run -- graph` by [@&#8203;levkohimins](https://redirect.github.com/levkohimins)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/3959](https://redirect.github.com/gruntwork-io/terragrunt/pull/3959)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.74.0...v0.75.0\n\
        \n### [`v0.74.0`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.74.0)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.73.16...v0.74.0)\n\
        \n#### Description\n\n**Terraform 1.10 support**: We are now testing Terragrunt\
        \ against Terraform 1.10 and is confirmed to be working.\n\nNOTE: Although\
        \ this release is marked as backward incompatible, it is functionally compatible\
        \ as nothing has been changed in Terragrunt internals. The minor version release\
        \ is useful to mark the change in Terraform version that is being tested.\n\
        \n#### What's Changed\n\n-   feat: Implementation of `--all` `--graph` flags\
        \ by [@&#8203;levkohimins](https://redirect.github.com/levkohimins) in [https://github.com/gruntwork-io/terragrunt/pull/3944](https://redirect.github.com/gruntwork-io/terragrunt/pull/3944)\n\
        -   feat: Added support for Terraform 1.10 by [@&#8203;denis256](https://redirect.github.com/denis256)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/3605](https://redirect.github.com/gruntwork-io/terragrunt/pull/3605)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.73.16...v0.74.0\n\
        \n### [`v0.73.16`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.73.16)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.73.15...v0.73.16)\n\
        \n#### \u2728 New Features\n\nAdded support for nested stacks, enabling more\
        \ flexible and modular stack configurations.\n\nDemo:\n\n![nested-stacks](https://redirect.github.com/user-attachments/assets/12b5c2e1-f58e-4488-873f-ee8b94e72afc)\n\
        \nTo try it out, make sure you enable the [stacks experiment](https://terragrunt.gruntwork.io/docs/reference/experiments/#stacks).\n\
        \nRFC: [https://github.com/gruntwork-io/terragrunt/issues/3313](https://redirect.github.com/gruntwork-io/terragrunt/issues/3313)\n\
        \n#### What's Changed\n\n-   feat: added support for nested stacks [@&#8203;denis256](https://redirect.github.com/denis256)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/3900](https://redirect.github.com/gruntwork-io/terragrunt/pull/3900)\n\
        -   docs: Support new pre-release process by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/3941](https://redirect.github.com/gruntwork-io/terragrunt/pull/3941)\n\
        -   build(deps): bump github.com/go-jose/go-jose/v4 from 4.0.4 to 4.0.5 by\
        \ [@&#8203;dependabot](https://redirect.github.com/dependabot) in [https://github.com/gruntwork-io/terragrunt/pull/3930](https://redirect.github.com/gruntwork-io/terragrunt/pull/3930)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.73.15...v0.73.16\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:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNzYuMiIsInVwZGF0ZWRJblZlciI6IjM5LjIwNy4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZSJdfQ==-->\n"
      change_url: https://github.com/osism/testbed/pull/2615
      child_jobs: []
      commit_id: 35c0a2cea1e4207528d2e592f1e17879fb50a84f
      event_id: f0d3c5e0-0764-11f0-96a2-29dc024afa06
      executor:
        hostname: 7d211f194f6a
        inventory_file: /var/lib/zuul/builds/33a65f0deece4379b517879176d7c4df/ansible/inventory.yaml
        log_root: /var/lib/zuul/builds/33a65f0deece4379b517879176d7c4df/work/logs
        result_data_file: /var/lib/zuul/builds/33a65f0deece4379b517879176d7c4df/work/results.json
        src_root: /var/lib/zuul/builds/33a65f0deece4379b517879176d7c4df/work/src
        work_root: /var/lib/zuul/builds/33a65f0deece4379b517879176d7c4df/work
      items:
      - branch: main
        change: '2615'
        change_url: https://github.com/osism/testbed/pull/2615
        patchset: 35c0a2cea1e4207528d2e592f1e17879fb50a84f
        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: flake8
      jobtags: []
      max_attempts: 3
      message: Y2hvcmUoZGVwcyk6IHVwZGF0ZSBkZXBlbmRlbmN5IGdydW50d29yay1pby90ZXJyYWdydW50IHRvIHYwLjc2LjYKClRoaXMgUFIgY29udGFpbnMgdGhlIGZvbGxvd2luZyB1cGRhdGVzOgoKfCBQYWNrYWdlIHwgVXBkYXRlIHwgQ2hhbmdlIHwKfC0tLXwtLS18LS0tfAp8IFtncnVudHdvcmstaW8vdGVycmFncnVudF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50KSB8IG1pbm9yIHwgYHYwLjczLjE1YCAtPiBgdjAuNzYuNmAgfAoKLS0tCgojIyMgUmVsZWFzZSBOb3RlcwoKPGRldGFpbHM+CjxzdW1tYXJ5PmdydW50d29yay1pby90ZXJyYWdydW50IChncnVudHdvcmstaW8vdGVycmFncnVudCk8L3N1bW1hcnk+CgojIyMgW2B2MC43Ni42YF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3JlbGVhc2VzL3RhZy92MC43Ni42KQoKW0NvbXBhcmUgU291cmNlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvY29tcGFyZS92MC43Ni41Li4udjAuNzYuNikKCiMjIyMgV2hhdCdzIENoYW5nZWQKCi0gICBmZWF0OiBBZGRpbmcgYGdvdmV0YCBhbGlnbm1lbnQgY2hlY2sgYnkgW0AmIzgyMDM7eWhha2Jhcl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3loYWtiYXIpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MDU3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MDU3KQotICAgZmVhdDogVGhyb3cgZXJyb3Igd2hlbiBhbiBhYnNvbHV0ZSBwYXRoIGlzIHVzZWQgZm9yIHN0YWNrIFtAJiM4MjAzO2RlbmlzMjU2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZGVuaXMyNTYpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MDU1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MDU1KQoKKipGdWxsIENoYW5nZWxvZyoqOiBodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvY29tcGFyZS92MC43Ni41Li4udjAuNzYuNgoKIyMjIFtgdjAuNzYuNWBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9yZWxlYXNlcy90YWcvdjAuNzYuNSkKCltDb21wYXJlIFNvdXJjZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2NvbXBhcmUvdjAuNzYuNC4uLnYwLjc2LjUpCgojIyMjIFdoYXQncyBDaGFuZ2VkCgotICAgZml4KGRvY3MpOiBBZGRyZXNzaW5nIHNvbWUgbWlzc2VkIHJlbmFtZXMgb2YgYHRlcnJhZ3J1bnQuaGNsYCB0byBgcm9vdC5oY2xgIGluIHRoZSBkb2NzIGJ5IFtAJiM4MjAzO3loYWtiYXJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS95aGFrYmFyKSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDA1OF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDA1OCkKLSAgIGJ1aWxkKGRlcHMpOiBVcGRhdGVkIGNsb3VkLmdvb2dsZS5jb20vZ28vc3RvcmFnZSB0byAxLjUxLjAgYnkgW0AmIzgyMDM7ZGVuaXMyNTZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kZW5pczI1NikgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQwNTldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQwNTkpCi0gICBidWlsZChkZXBzKTogVXBkYXRlZCBnby5vcGVudGVsZW1ldHJ5LmlvL290ZWwvZXhwb3J0ZXJzL3N0ZG91dC9zdGRvdXRtZXRyaWMgdG8gMS4zNS4wIGJ5IFtAJiM4MjAzO2RlbmlzMjU2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZGVuaXMyNTYpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MDU5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MDU5KQotICAgYnVpbGQoZGVwcyk6IFVwZGF0ZWQgZ28ub3BlbnRlbGVtZXRyeS5pby9vdGVsL2V4cG9ydGVycy9vdGxwL290bHB0cmFjZS9vdGxwdHJhY2VodHRwIHRvIDEuMzUuMCBieSBbQCYjODIwMztkZW5pczI1Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RlbmlzMjU2KSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDA1OV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDA1OSkKLSAgIGJ1aWxkKGRlcHMpOiBVcGRhdGVkIGdvbGFuZy5vcmcveC9vYXV0aDIgdG8gMC4yOC4wIGJ5IFtAJiM4MjAzO2RlbmlzMjU2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZGVuaXMyNTYpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MDU5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MDU5KQotICAgYnVpbGQoZGVwcyk6IFVwZGF0ZWQgZ28ub3BlbnRlbGVtZXRyeS5pby9vdGVsL2V4cG9ydGVycy9vdGxwL290bHBtZXRyaWMvb3RscG1ldHJpY2h0dHAgdG8gMS4zNS4wIGJ5IFtAJiM4MjAzO2RlbmlzMjU2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZGVuaXMyNTYpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MDU5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MDU5KQoKKipGdWxsIENoYW5nZWxvZyoqOiBodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvY29tcGFyZS92MC43Ni40Li4udjAuNzYuNQoKIyMjIFtgdjAuNzYuNGBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9yZWxlYXNlcy90YWcvdjAuNzYuNCkKCltDb21wYXJlIFNvdXJjZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2NvbXBhcmUvdjAuNzYuMy4uLnYwLjc2LjQpCgojIyMjIFdoYXQncyBDaGFuZ2VkCgotICAgZmVhdDogSW50cm9kdWNlZCBgLWFgIGFsaWFzIGZvciB0aGUgYC1hbGxgIGZsYWcgWyMmIzgyMDM7NDA0OF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDA0OCkgYnkgW0AmIzgyMDM7bGV2a29oaW1pbnNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9sZXZrb2hpbWlucykKLSAgIGZlYXQ6IEltcGxlbWVudGVkIGRldGVjdGlvbiBvZiBuZXN0ZWQgc3RhY2tzIFsjJiM4MjAzOzQwNTJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQwNTIpIGJ5IFtAJiM4MjAzO2RlbmlzMjU2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZGVuaXMyNTYpCi0gICBmaXg6IFJlZmFjdG9yZWQgbGlzdCBwYWNrYWdlIHN0cnVjdHVyZSBbIyYjODIwMzs0MDUwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MDUwKSBieSBbQCYjODIwMzt5aGFrYmFyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20veWhha2JhcikKLSAgIGZpeDogVXBkYXRlZCBkb2N1bWVudGF0aW9uIGZvciBsaXN0IHVzYWdlIFsjJiM4MjAzOzQwNTFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQwNTEpIGJ5IFtAJiM4MjAzO3loYWtiYXJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS95aGFrYmFyKQotICAgZml4OiBDb3JyZWN0ZWQgYC5zdGFja2AgcmVmZXJlbmNlcyBpbiBnZW5lcmF0ZWQgZG9jdW1lbnRhdGlvbiBbIyYjODIwMzs0MDUzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MDUzKSBieSBbQCYjODIwMzt5aGFrYmFyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20veWhha2JhcikKCioqRnVsbCBDaGFuZ2Vsb2cqKjogaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2NvbXBhcmUvdjAuNzYuMy4uLnYwLjc2LjQKCiMjIyBbYHYwLjc2LjNgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcmVsZWFzZXMvdGFnL3YwLjc2LjMpCgpbQ29tcGFyZSBTb3VyY2VdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9jb21wYXJlL3YwLjc2LjIuLi52MC43Ni4zKQoKIyMjIyDwn5ug77iPIEJyZWFraW5nIENoYW5nZXMKCiMjIyMjIGBmaW5kIC0tc29ydD1kYWdgIGNoYW5nZWQgdG8gYGZpbmQgLS1kYWdgCgpUaGUgZXhwZXJpbWVudGFsIFtgZmluZGBdKGh0dHBzOi8vdGVycmFncnVudC5ncnVudHdvcmsuaW8vZG9jcy9yZWZlcmVuY2UvY2xpLW9wdGlvbnMvI2ZpbmQpIGNvbW1hbmQgbm8gbG9uZ2VyIGhhcyBhIGAtLXNvcnRgIGZsYWcuIEluc3RlYWQgdGhlIGFiaWxpdHkgdG8gc29ydCBjb25maWd1cmF0aW9ucyBhY2NvcmRpbmcgdG8gdGhlaXIgcG9zaXRpb24gaW4gdGhlIFtEQUddKGh0dHBzOi8vdGVycmFncnVudC5ncnVudHdvcmsuaW8vZG9jcy9nZXR0aW5nLXN0YXJ0ZWQvdGVybWlub2xvZ3kvI2RpcmVjdGVkLWFjeWNsaWMtZ3JhcGgtZGFnKSBoYXMgYmVlbiByZXBsYWNlZCB3aXRoIHRoZSBkZWRpY2F0ZWQgYC0tZGFnYCBmbGFnLCB3aGljaCBwdXRzIHRoZSBjb21tYW5kIGluICJEQUcgTW9kZSIuIFRoZXNlIGNoYW5nZXMgaGF2ZSBiZWVuIGRvbmUgdG8gYWxsb3cgZm9yIGNsb3NlciBwYXJpdHkgaW4gdGhlIGJlaGF2aW9yIG9mIGBmaW5kYCBhbmQgYGxpc3RgLgoKYGBgYmFzaAoKIyMjIEJlZm9yZQp0ZXJyYWdydW50IGZpbmQgLS1zb3J0PWRhZwoKIyMjIEFmdGVyCnRlcnJhZ3J1bnQgZmluZCAtLWRhZwpgYGAKCiMjIyMg4pyoIE5ldyBGZWF0dXJlcwoKIyMjIyMgSW50cm9kdWN0aW9uIG9mIHRoZSBgbGlzdGAgY29tbWFuZAoKQXMgcGFydCBvZiB0aGUgW0NMSSBSZWRlc2lnbl0oaHR0cHM6Ly90ZXJyYWdydW50LmdydW50d29yay5pby9kb2NzL3JlZmVyZW5jZS9leHBlcmltZW50cy8jY2xpLXJlZGVzaWduKSBleHBlcmltZW50LCB0aGUgW2BsaXN0YF0oaHR0cHM6Ly90ZXJyYWdydW50LmdydW50d29yay5pby9kb2NzL3JlZmVyZW5jZS9jbGktb3B0aW9ucy8jbGlzdCkgY29tbWFuZCBoYXMgYmVlbiBpbnRyb2R1Y2VkLiBBcyB3aXRoIG90aGVyIG5ldyBmZWF0dXJlcywgdXNhZ2UgcmVxdWlyZXMgZW5hYmxpbmcgdGhlIENMSSBSZWRlc2lnbiBleHBlcmltZW50LgoKVGhlIGxpc3QgY29tbWFuZCBoZWxwcyB5b3UgZGlzY292ZXIgYW5kIGRpc3BsYXkgVGVycmFncnVudCBjb25maWd1cmF0aW9ucyBpbiB5b3VyIGNvZGViYXNlLiBJdCBwcm92aWRlcyB2YXJpb3VzIG91dHB1dCBmb3JtYXRzIGFuZCBvcHRpb25zIHRvIGhlbHAgeW91IHVuZGVyc3RhbmQgdGhlIHN0cnVjdHVyZSBhbmQgZGVwZW5kZW5jaWVzIG9mIHlvdXIgVGVycmFncnVudCBjb25maWd1cmF0aW9ucy4KClRoZSBsaXN0IGNvbW1hbmQgaXMgdmVyeSBzaW1pbGFyIHRvIHRoZSBbZmluZCBjb21tYW5kXShodHRwczovL3RlcnJhZ3J1bnQuZ3J1bnR3b3JrLmlvL2RvY3MvcmVmZXJlbmNlL2NsaS1vcHRpb25zLyNmaW5kKS4gSXQgdXNlcyB0aGUgc2FtZSBiYWNrZW5kIGxvZ2ljIGZvciBjb25maWd1cmF0aW9uIGRpc2NvdmVyeS4gSXQgYWxzbyBzdXBwb3J0cyB2ZXJ5IHNpbWlsYXIgZmxhZ3MgYW5kIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4KCkdlbmVyYWxseSwgdGhlIGxpc3QgY29tbWFuZCBpcyBvcHRpbWl6ZWQgZm9yIGRpc3BsYXlpbmcgY29uZmlndXJhdGlvbnMgaW4gYSBmb3JtYXQgdGhhdCBpcyBlYXN5IGZvciBhIGh1bWFuIHRvIHJlYWQgYW5kIHVuZGVyc3RhbmQsIHNvIHRoZXJlIGFyZSBtb3JlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgYW5kIHRoZSBvdXRwdXQgaXMgbW9yZSB2ZXJib3NlLiBPdXRwdXQgZnJvbSB0aGUgbGlzdCBjb21tYW5kIGNhbiB2YXJ5IHNpZ25pZmljYW50bHkgZGVwZW5kaW5nIG9uIHRoZSBmbGFncyB1c2VkLCBhbmQgdGhlIG91dHB1dCBzdHJ1Y3R1cmUgaXMgbW9yZSB2YXJpYWJsZSB0aGFuIHRoYXQgb2YgdGhlIGZpbmQgY29tbWFuZC4KClVzZSB0aGUgbGlzdCBjb21tYW5kIHdoZW4geW91IHdhbnQgdG8gdmlzdWFsaXplIHlvdXIgVGVycmFncnVudCBjb25maWd1cmF0aW9ucyBpbiBhIGh1bWFuLXJlYWRhYmxlIGZvcm1hdC4gVXNlIHRoZSBmaW5kIGNvbW1hbmQgd2hlbiB5b3Ugd2FudCB0byBwcm9ncmFtbWF0aWNhbGx5IHNlYXJjaCBmb3IgY29uZmlndXJhdGlvbnMgaW4geW91ciBjb2RlYmFzZS4KCiMjIyMjIFVzYWdlCgpCeSBkZWZhdWx0LCB0aGUgYGxpc3RgIGNvbW1hbmQgd2lsbCBkaXNwbGF5IGFsbCBkaXNjb3ZlcmVkIGNvbmZpZ3VyYXRpb25zIHdpdGggc29tZSBzcGFjaW5nIHRvIGRpc3BsYXkgYXMgbWFueSBhcyBpdCBjYW4gb24gZWFjaCBsaW5lLgoKIVtsaXN0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vdXNlci1hdHRhY2htZW50cy9hc3NldHMvZDQ0NzNlN2UtODViZC00NjI5LWFiYTEtMGI5NjAxYzI0ZDBjKQoKV2hlbiB0aGUgc2l6ZSBvZiB0aGUgb3V0cHV0IGV4Y2VlZHMgdGhlIHdpZHRoIG9mIHRoZSB0ZXJtaW5hbCwgZW50cmllcyB3aWxsIGJlIGJyb2tlbiBpbnRvIG11bHRpcGxlIGxpbmVzLgoKIVtsaXN0LW5hcnJvd10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzLzAyNzNkMzE1LWJiMzUtNDY2Yy1hMzA4LWFlYjJjNzZlMzY5NikKClVzZXJzIGNhbiBhZGRpdGlvbmFsbHkgcmVxdWVzdCB0aGF0IHRoZSBgLS1sb25nYCBmb3JtYXQgaXMgdXNlZCwgd2hpY2ggYnJlYWtzIHRoZSByZXN1bHRzIG92ZXIgaW5kaXZpZHVhbCBsaW5lcyBmb3IgZWFjaCBkaXNjb3ZlcmVkIGNvbmZpZ3VyYXRpb24uCgohW2xpc3QtbG9uZ10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzLzc0NmE2YTIyLTE5ZjItNDg0Ny1hMDQ4LWYzZmMzMzViNTQxNykKCkxpa2Ugd2l0aCB0aGUgYGZpbmRgIGNvbW1hbmQsIHVzZXJzIGNhbiBvcHRpb25hbGx5IHJlcXVlc3QgdGhhdCBkZXBlbmRlbmNpZXMgYmUgZGlzcGxheWVkLgoKIVtsaXN0LWxvbmctZGVwZW5kZW5jaWVzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vdXNlci1hdHRhY2htZW50cy9hc3NldHMvZTY5YjA0MmEtN2Q3Yi00NTAxLWJmZTQtZDk3NjY1NGY4N2E2KQoKVGhlIGZpbmFsIGZvcm1hdCB0aGF0IHRoZSBgbGlzdGAgY29tbWFuZCBzdXBwb3J0cyBpcyB0aGUgYHRyZWVgIGZvcm1hdDoKCiFbbGlzdC10cmVlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vdXNlci1hdHRhY2htZW50cy9hc3NldHMvZGVjYTc0MzItMDhmZi00MWE5LWJmOTgtMTUzMzc2OTk2NmQxKQoKTGlrZSB3aXRoIHRoZSBgZmluZGAgY29tbWFuZCwgdGhlIGBsaXN0YCBjb21tYW5kIHN1cHBvcnRzIHRoZSBgLS1kYWdgIGZsYWcgd2hpY2ggc29ydHMgYW5kIGdyb3VwcyByZXN1bHRzIGFjY29yZGluZyB0byB0aGVpciByZWxhdGl2ZSBwb3NpdGlvbnMgaW4gdGhlIERpcmVjdGVkIEFjeWNsaWMgR3JhcGggKERBRykuCgohW2xpc3QtdHJlZS1kYWddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy8yZmExZTMxNC01ZGU0LTQzODEtYmFiMy04YTFlZTAxNDQyYjcpCgpGb3IgbW9yZSBpbmZvcm1hdGlvbiByZWFkIHRoZSBkb2N1bWVudGF0aW9uIGluIFtgbGlzdGBdKGh0dHBzOi8vdGVycmFncnVudC5ncnVudHdvcmsuaW8vZG9jcy9yZWZlcmVuY2UvY2xpLW9wdGlvbnMvI2xpc3QpLgoKIyMjIyBXaGF0J3MgQ2hhbmdlZAoKLSAgIGZlYXQ6IEFkZGluZyBgbGlzdGAgY29tbWFuZCBieSBbQCYjODIwMzt5aGFrYmFyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20veWhha2JhcikgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQwMzRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQwMzQpCgoqKkZ1bGwgQ2hhbmdlbG9nKio6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9jb21wYXJlL3YwLjc2LjIuLi52MC43Ni4zCgojIyMgW2B2MC43Ni4yYF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3JlbGVhc2VzL3RhZy92MC43Ni4yKQoKW0NvbXBhcmUgU291cmNlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvY29tcGFyZS92MC43Ni4xLi4udjAuNzYuMikKCiMjIyMg4pyoIE5ldyBGZWF0dXJlcwoKQWRkZWQgYC0tbm8tc3RhY2stZ2VuZXJhdGVgIHN1cHBvcnQgaW4gYHN0YWNrIHJ1bmAgYW5kIGBzdGFjayBvdXRwdXRgLCBhbGxvd2luZyB1c2VycyB0byBkaXNhYmxlIGF1dG9tYXRpYyBzdGFjayByZWdlbmVyYXRpb24gYmVmb3JlIGV4ZWN1dGluZyBjb21tYW5kcy4gVGhpcyBwcm92aWRlcyBncmVhdGVyIGNvbnRyb2wgb3ZlciBzdGFjayBvcGVyYXRpb25zIGJ5IGFsbG93aW5nIGNvbW1hbmRzIHRvIHVzZSB0aGUgZXhpc3RpbmcgYC50ZXJyYWdydW50LXN0YWNrYCBkaXJlY3RvcnksIGltcHJvdmluZyBlZmZpY2llbmN5IGFuZCBhdm9pZGluZyB1bm5lY2Vzc2FyeSB1cGRhdGVzLgoKIyMjIyBXaGF0J3MgQ2hhbmdlZAoKLSAgIGZlYXQ6IEFkZGVkIGAtLW5vLXN0YWNrLWdlbmVyYXRlYCBjbGkgZmxhZyB0byBza2lwIHN0YWNrIGdlbmVyYXRpb24gYnkgW0AmIzgyMDM7ZGVuaXMyNTZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kZW5pczI1NikgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQwMzldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQwMzkpCi0gICBjaHJvZTogU3RhY2sgdGVzdHMgaW1wcm92ZW1lbnRzIGJ5IFtAJiM4MjAzO2RlbmlzMjU2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZGVuaXMyNTYpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MDMzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MDMzKQotICAgY2hyb3JlOiBBZGRpbmcgYC5jdXJzb3JgIHRvIGAuZ2l0aWdub3JlYCBieSBbQCYjODIwMzt5aGFrYmFyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20veWhha2JhcikgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQwNDBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQwNDApCi0gICBkb2NzOiBBZGRpbmcgZG9jcyBmb3IgYC0tYWxsYCBhbmQgYC0tZ3JhcGhgIGJ5IFtAJiM4MjAzO3loYWtiYXJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS95aGFrYmFyKSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDAzNl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDAzNikKLSAgIGRvY3M6IE1vdmUgYGluZm9gIHRvIGEgYmV0dGVyIGxvY2F0aW9uIGJ5IFtAJiM4MjAzO3loYWtiYXJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS95aGFrYmFyKSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDAzN10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDAzNykKCioqRnVsbCBDaGFuZ2Vsb2cqKjogaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2NvbXBhcmUvdjAuNzYuMS4uLnYwLjc2LjIKCiMjIyBbYHYwLjc2LjFgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcmVsZWFzZXMvdGFnL3YwLjc2LjEpCgpbQ29tcGFyZSBTb3VyY2VdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9jb21wYXJlL3YwLjc2LjAuLi52MC43Ni4xKQoKIyMjIyDinKggTmV3IEZlYXR1cmVzCgpJbnRyb2R1Y2VkIGBub19kb3RfdGVycmFncnVudF9zdGFja2Agc3VwcG9ydCBpbiBgc3RhY2tgIGFuZCBgdW5pdGAsIGFsbG93aW5nIHVzZXJzIHRvIG9wdCBvdXQgb2YgZ2VuZXJhdGluZyBgLnRlcnJhZ3J1bnQtc3RhY2tgIGRpcmVjdG9yaWVzLiBUaGlzIGVuYWJsZXMgc2VhbWxlc3MgYWRvcHRpb24gb2YgYHRlcnJhZ3J1bnQuc3RhY2suaGNsYCB3aXRob3V0IHJlcXVpcmluZyBzdGF0ZSBtaWdyYXRpb24gZm9yIGV4aXN0aW5nIGluZnJhc3RydWN0dXJlLgoKRGVtbzoKIVtub19kb3RfdGVycmFncnVudF9zdGFja19leGFtcGxlX3JlbGVhc2VfZXhhbXBsZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzLzU0NmQyODFiLTNkYmItNGNiOC1hZmQzLTliOThiNzViNGYwMikKClN0YWNrcyBSRkM6IFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvaXNzdWVzLzMzMTNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9pc3N1ZXMvMzMxMykKCiMjIyMgV2hhdCdzIENoYW5nZWQKCi0gICBmZWF0OiBhZGRlZCBzdXBwb3J0IGZvciBzdXBwb3J0IGZvciBgbm9fZG90X3RlcnJhZ3J1bnRfc3RhY2tgIGluIGBzdGFja2AgYW5kIGB1bml0YCBibG9ja3MgYnkgW0AmIzgyMDM7ZGVuaXMyNTZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kZW5pczI1NikgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQwMTldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQwMTkpCgoqKkZ1bGwgQ2hhbmdlbG9nKio6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9jb21wYXJlL3YwLjc2LjAuLi52MC43Ni4xCgojIyMgW2B2MC43Ni4wYF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3JlbGVhc2VzL3RhZy92MC43Ni4wKQoKW0NvbXBhcmUgU291cmNlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvY29tcGFyZS92MC43NS4xMC4uLnYwLjc2LjApCgojIyMjIOKcqCBOZXcgRmVhdHVyZXMgLyDwn5ug77iPIEJyZWFraW5nIENoYW5nZXMKCiMjIyMjIENhdGFsb2cvU2NhZmZvbGQgbm8gbG9uZ2VyIHJlcXVpcmVzIGAtLXJvb3QtZmlsZS1uYW1lIHJvb3QuaGNsYAoK4pyoIFRoZSBgY2F0YWxvZ2AgYW5kIGBzY2FmZm9sZGAgY29tbWFuZHMgd2lsbCBub3cgYXR0ZW1wdCB0byBkaXNjb3ZlciBhIHBhcmVudCBgcm9vdC5oY2xgIGZpbGUgYnkgZGVmYXVsdCBhbmQgdXNlIGl0IGFzIHRoZSBkZWZhdWx0IHJvb3QgVGVycmFncnVudCBjb25maWd1cmF0aW9uIHdoZW4gcHJlc2VudCB0byBoZWxwIHVzZXJzIGFkb3B0IHRoZSBjaGFuZ2VzIGluIFttaWdyYXRpbmctZnJvbS1yb290LXRlcnJhZ3J1bnQtaGNsXShodHRwczovL3RlcnJhZ3J1bnQuZ3J1bnR3b3JrLmlvL2RvY3MvbWlncmF0ZS9taWdyYXRpbmctZnJvbS1yb290LXRlcnJhZ3J1bnQtaGNsLykuCgpVc2VycyB0aGF0IGhhdmUgc3dpdGNoZWQgb3ZlciB0byB1c2UgYHJvb3QuaGNsYCBhcyB0aGUgcm9vdCBvZiB0aGVpciBUZXJyYWdydW50IGNvbmZpZ3VyYXRpb25zIGluc3RlYWQgb2YgYHRlcnJhZ3J1bnQuaGNsYCB3aWxsIG5vIGxvbmdlciBuZWVkIHRvIGV4cGxpY2l0bHkgcGFzcyBgLS1yb290LWZpbGUtbmFtZSByb290LmhjbGAgb3IgdXNlIHRoZSBbcm9vdC10ZXJyYWdydW50LWhjbF0oaHR0cHM6Ly90ZXJyYWdydW50LmdydW50d29yay5pby9kb2NzL3JlZmVyZW5jZS9zdHJpY3QtbW9kZS8jcm9vdC10ZXJyYWdydW50LWhjbCkgc3RyaWN0IGNvbnRyb2wgdG8gYXV0b21hdGljYWxseSBkaXNjb3ZlciB0aGUgcm9vdCBvZiB0aGVpciBUZXJyYWdydW50IGNvbmZpZ3VyYXRpb25zIHdoZW4gdXNpbmcgYGNhdGFsb2dgIG9yIGBzY2FmZm9sZGAuCgrwn5ug77iPIE5vdGUgdGhhdCB0aGlzIGlzIHRlY2huaWNhbGx5IGEgYnJlYWtpbmcgY2hhbmdlIHRvIHRoZSB3YXkgdGhhdCBgY2F0YWxvZ2AgYW5kIGBzY2FmZm9sZGAgd29yay4gV2l0aCB0aGlzIGNoYW5nZSwgdXNlcnMgdGhhdCBoYXZlICpib3RoKiBhIGByb290LmhjbGAgZmlsZSBhbmQgYSBgdGVycmFncnVudC5oY2xgIGZpbGUgYXQgdGhlIHJvb3Qgb2YgdGhlaXIgcmVwb3NpdG9yaWVzIHdpbGwgaGF2ZSB0aGUgYHJvb3QuaGNsYCBmaWxlIHVzZWQgaW5zdGVhZCBvZiB0aGUgYHRlcnJhZ3J1bnQuaGNsYCBmaWxlIGZvciB0aGUgYGNhdGFsb2dgIGFuZCBgc2NhZmZvbGRgIGNvbW1hbmRzLgoKSWYgeW91IGFyZSBub3QgeWV0IHJlYWR5IHRvIHJlbmFtZSB0aGUgYHRlcnJhZ3J1bnQuaGNsYCBmaWxlIGF0IHRoZSByb290IG9mIHlvdXIgcmVwb3NpdG9yeSwgdXNlIHRoZSBgLS1yb290LWZpbGUtbmFtZWAgZmxhZyB0byBleHBsaWNpdGx5IHByb3ZpZGUgYHRlcnJhZ3J1bnQuaGNsYCBhcyB0aGUgbmFtZSBvZiB0aGUgVGVycmFncnVudCBjb25maWd1cmF0aW9uIGF0IHRoZSByb290IG9mIHlvdXIgVGVycmFncnVudCBwcm9qZWN0LgoKVGhpcyBjaGFuZ2Ugd2FzIG1hZGUgYXMgbW9zdCB1c2VycyBhcmUgdmVyeSB1bmxpa2VseSB0byBoYXZlICpib3RoKiBgcm9vdC5oY2xgICh0aGUgcmVjb21tZW5kZWQgcm9vdCBvZiBUZXJyYWdydW50IGNvbmZpZ3VyYXRpb25zKSBhbmQgYHRlcnJhZ3J1bnQuaGNsYCAodGhlIGxlZ2FjeSByb290IG9mIFRlcnJhZ3J1bnQgY29uZmlndXJhdGlvbnMgaW4gdGhlIHNhbWUgVGVycmFncnVudCBwcm9qZWN0KSBhdCB0aGUgcm9vdCBvZiB0aGVpciBUZXJyYWdydW50IHByb2plY3QuIFRoaXMgY29uZmlndXJhdGlvbiBpcyBlbnRpcmVseSBDTEkgYmFzZWQsIG1ha2luZyBpdCByZWxhdGl2ZWx5IGVhc3kgdG8gYWRkcmVzcyBmb3IgdXNlcnMgKGFzIG9wcG9zZWQgdG8gSENMIGNvbmZpZ3VyYXRpb25zLCB3aGljaCBtaWdodCB0YWtlIG1vcmUgdGltZSBmb3IgdGVhbXMgdG8gYWRkcmVzcykuCgpVc2VycyBsb29raW5nIHRvIG1vdmUgZnJvbSBhIHJvb3QgYHRlcnJhZ3J1bnQuaGNsYCBmaWxlIHRvIGEgYHJvb3QuaGNsYCBmaWxlIHdpbGwgc3RpbGwgbmVlZCB0byByZWFkIHRocm91Z2ggdGhlIG1pZ3JhdGlvbiBndWlkZSB0byBhZGp1c3QgYWxsIHVzYWdlcyBvZiBgZmluZF9pbl9wYXJlbnRfZm9sZGVyc2Agd2hlbiBtYWtpbmcgdGhlIHN3aXRjaC4KCiMjIyMgV2hhdCdzIENoYW5nZWQKCi0gICBmaXg6IExvb2t1cCByb290LmhjbCBpZiBwcmVzZW50IGJ5IFtAJiM4MjAzO3loYWtiYXJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS95aGFrYmFyKSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDAyMl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDAyMikKLSAgIGZpeDogSW1wcm92aW5nIGxvZ2ljIGZvciBzY2FmZm9sZCBkZWZhdWx0IHJvb3QgZGlzY292ZXJ5IGJ5IFtAJiM4MjAzO3loYWtiYXJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS95aGFrYmFyKSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDAyOV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDAyOSkKLSAgIGZpeDogRml4aW5nIGNvbmZpZ3VyYXRpb24gcGFyc2luZyBvcmRlciBsaW5rIGJ5IFtAJiM4MjAzO3loYWtiYXJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS95aGFrYmFyKSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDAyMV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDAyMSkKCioqRnVsbCBDaGFuZ2Vsb2cqKjogaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2NvbXBhcmUvdjAuNzUuMTAuLi52MC43Ni4wCgojIyMgW2B2MC43NS4xMGBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9yZWxlYXNlcy90YWcvdjAuNzUuMTApCgpbQ29tcGFyZSBTb3VyY2VdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9jb21wYXJlL3YwLjc1LjkuLi52MC43NS4xMCkKCiMjIyMgV2hhdCdzIENoYW5nZWQKCi0gICBmaXg6IGFkZHJlc3NpbmcgYGdvcGxzYCBmaW5kaW5ncyBieSBbQCYjODIwMzt5aGFrYmFyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20veWhha2JhcikgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQwMThdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQwMTgpCi0gICBidWlsZChkZXBzKTogYnVtcCBnb2xhbmcub3JnL3gvbmV0IGZyb20gMC4zNS4wIHRvIDAuMzYuMCBieSBbQCYjODIwMztkZXBlbmRhYm90XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZGVwZW5kYWJvdCkgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQwMTNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQwMTMpCi0gICBidWlsZChkZXBzKTogYnVtcCBnby5vcGVudGVsZW1ldHJ5LmlvL290ZWwvZXhwb3J0ZXJzL290bHAvb3RscG1ldHJpYy9vdGxwbWV0cmljZ3JwYyB0byAxLjM1LjAgdXBkYXRlIGJ5IFtAJiM4MjAzO2RlbmlzMjU2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZGVuaXMyNTYpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MDIwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MDIwKQotICAgYnVpbGQoZGVwcyk6IGJ1bXAgZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby12Mi9zZXJ2aWNlL3MzIHRvIDEuNzguMSB1cGRhdGUgYnkgW0AmIzgyMDM7ZGVuaXMyNTZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kZW5pczI1NikgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQwMjBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQwMjApCi0gICBidWlsZChkZXBzKTogYnVtcCBnb2xhbmcub3JnL3gvbW9kIHRvIDAuMjQuMCB1cGRhdGUgYnkgW0AmIzgyMDM7ZGVuaXMyNTZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kZW5pczI1NikgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQwMjBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQwMjApCi0gICBidWlsZChkZXBzKTogYnVtcCBnby5vcGVudGVsZW1ldHJ5LmlvL290ZWwvZXhwb3J0ZXJzL290bHAvb3RscHRyYWNlL290bHB0cmFjZWdycGMgdG8gMS4zNS4wIHVwZGF0ZSBieSBbQCYjODIwMztkZW5pczI1Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RlbmlzMjU2KSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDAyMF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDAyMCkKLSAgIGJ1aWxkKGRlcHMpOiBidW1wIGdvLm9wZW50ZWxlbWV0cnkuaW8vb3RlbCB0byAxLjM1LjAgdXBkYXRlIGJ5IFtAJiM4MjAzO2RlbmlzMjU2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZGVuaXMyNTYpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MDIwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MDIwKQotICAgYnVpbGQoZGVwcyk6IGJ1bXAgZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC1lbmdpbmUtZ28gdG8gdjAuMC4xMSB1cGRhdGUgYnkgW0AmIzgyMDM7ZGVuaXMyNTZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kZW5pczI1NikgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQwMjBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQwMjApCgoqKkZ1bGwgQ2hhbmdlbG9nKio6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9jb21wYXJlL3YwLjc1LjkuLi52MC43NS4xMAoKIyMjIFtgdjAuNzUuOWBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9yZWxlYXNlcy90YWcvdjAuNzUuOSkKCltDb21wYXJlIFNvdXJjZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2NvbXBhcmUvdjAuNzUuOC4uLnYwLjc1LjkpCgojIyMjIPCfkJsgQnVnIGZpeGVzCgojIyMjIyBVc2luZyBhYnNvbHV0ZSBwYXRocyBmb3IgYG1hcmtfYXNfcmVhZGAKClRoZSBpbnRlcm5hbCBzdG9yZSBmb3IgdGhlIHZhbHVlcyBgbWFya19hc19yZWFkYCB3YXMgdHJhY2tpbmcgbm93IHVzZSBhYnNvbHV0ZSBwYXRocyBpbnN0ZWFkIG9mICJjYW5vbmljYWwgcGF0aHMiLiBUaGUgcmVzdWx0IG9mIHRoaXMgaXMgdGhhdCBldmVuIGlmIHlvdSBhcmUgdXNpbmcgdG9vbGluZyBsaWtlIGBydW5fY21kYCB0byBkeW5hbWljYWxseSBkaXNjb3ZlciBmaWxlcyB0byBtYXJrIGFzIHJlYWQsIHlvdSBzaG91bGQgc3RpbGwgZXhwZWN0IGAtLXF1ZXVlLWluY2x1ZGUtdW5pdHMtcmVhZGluZ2AgdG8gd29yayBjb3JyZWN0bHkuCgojIyMjIFdoYXQncyBDaGFuZ2VkCgotICAgZml4OiBVc2UgYWJzIHBhdGggZm9yIGBtYXJrX2FzX3JlYWRgIGJ5IFtAJiM4MjAzO3loYWtiYXJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS95aGFrYmFyKSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDAxNV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDAxNSkKCioqRnVsbCBDaGFuZ2Vsb2cqKjogaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2NvbXBhcmUvdjAuNzUuOC4uLnYwLjc1LjkKCiMjIyBbYHYwLjc1LjhgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcmVsZWFzZXMvdGFnL3YwLjc1LjgpCgpbQ29tcGFyZSBTb3VyY2VdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9jb21wYXJlL3YwLjc1LjcuLi52MC43NS44KQoKIyMjIyBXaGF0J3MgQ2hhbmdlZAoKLSAgIGZlYXQ6IGFkZGVkIHN1cHBvcnQgZm9yYCAgLS1zb3VyY2UtbWFwIGAgd2hlbiBkb3dubG9hZGluZyB1bml0cyBhbmQgc3RhY2tzIGJ5IFtAJiM4MjAzO2RlbmlzMjU2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZGVuaXMyNTYpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MDExXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MDExKQoKKipGdWxsIENoYW5nZWxvZyoqOiBodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvY29tcGFyZS92MC43NS43Li4udjAuNzUuOAoKIyMjIFtgdjAuNzUuN2BdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9yZWxlYXNlcy90YWcvdjAuNzUuNykKCltDb21wYXJlIFNvdXJjZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2NvbXBhcmUvdjAuNzUuNi4uLnYwLjc1LjcpCgojIyMjIOKcqCBOZXcgRmVhdHVyZXMKCiMjIyMjIGBmaW5kYCBzdXBwb3J0cyBgZGFnYCBzb3J0aW5nCgpUaGUgYGZpbmRgIGNvbW1hbmQgbm93IHN1cHBvcnRzIHRoZSBhYmlsaXR5IHRvIHNvcnQgcmVzdWx0cyBieSB0aGVpciByZWxhdGl2ZSBwb3NpdGlvbnMgaW4gdGhlIERpcmVjdGVkIEFjeWNsaWMgR3JhcGggKERBRykuCgpUbyB1c2UgdGhlIGBmaW5kYCBjb21tYW5kLCB5b3UgbXVzdCBlbmFibGUgdGhlIFtgY2xpLXJlZGVzaWduYCBleHBlcmltZW50XShodHRwczovL3RlcnJhZ3J1bnQuZ3J1bnR3b3JrLmlvL2RvY3MvcmVmZXJlbmNlL2V4cGVyaW1lbnRzLyNjbGktcmVkZXNpZ24pLgoKIVt0Zy1maW5kLW5vLWRhZ10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzLzM2MzY2ZGRlLTA1ODEtNDdhOS1hNGY3LTk0YjA2ZjlkZjBiYikKCiFbdGctZmluZC1kYWddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy8wMWQwZWViMS03NWJlLTQzZTItODY1Ny03N2ZmNGNmNDZjMTgpCgpUaGUgYGZpbmRgIGNvbW1hbmQgbm93IGFsc28gc3VwcG9ydHMgZGlzY292ZXJpbmcgZGVwZW5kZW5jaWVzIG9mIHVuaXRzIHdpdGggdGhlIG5ldyBgLS1kZXBlbmRlbmNpZXNgIGZsYWcuCgohW3RnLWZpbmQtZGFnLWRlcHNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy8xZWE5YzVhOC0zZDAzLTQwNzUtYjZjOC04ZmE5Y2U2ODI3NGMpCgpJbiBhZGRpdGlvbiwgZXh0ZXJuYWwgZGVwZW5kZW5jaWVzIChkZXBlbmRlbmNpZXMgb3V0c2lkZSB0aGUgd29ya2luZyBkaXJlY3Rvcnkgd2hlcmUgYGZpbmRgIHdhcyBydW4pLCBjYW4gYmUgZGlzY292ZXJlZCB1c2luZyB0aGUgYC0tZXh0ZXJuYWxgIGZsYWcuCgohW3RnLWZpbmQtZGFnLWV4dF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzLzkyYzkwYmRlLTYyYmMtNDE0NS1hMDRlLWUyN2JhNjg4NGY5YSkKCk1vcmUgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIFtpbiB0aGUgYGZpbmRgIGRvY3NdKGh0dHBzOi8vdGVycmFncnVudC5ncnVudHdvcmsuaW8vZG9jcy9yZWZlcmVuY2UvY2xpLW9wdGlvbnMvI2ZpbmQtc29ydGluZykuCgojIyMjIyBUaGUgYHN0YWNrIHJ1bmAgY29tbWFuZCBub3cgc3VwcG9ydHMgYWxsIGBydW5gIGZsYWdzCgpUaGUgYHN0YWNrIHJ1bmAgY29tbWFuZCBub3cgc3VwcG9ydHMgYWxsIHRoZSBzYW1lIGZsYWdzIGBydW5gIHN1cHBvcnRzLCBpbmNsdWRpbmcgYC0tcXVldWUtaW5jbHVkZS1kaXJgLgoKVG8gdXNlIGBzdGFja2AgY29tbWFuZHMsIHlvdSBtdXN0IGVuYWJsZSB0aGUgW2BzdGFja3NgXShodHRwczovL3RlcnJhZ3J1bnQuZ3J1bnR3b3JrLmlvL2RvY3MvcmVmZXJlbmNlL2V4cGVyaW1lbnRzLyNzdGFja3MpIGV4cGVyaW1lbnQuCgpBcyBhbiBleGFtcGxlIG9mIHdoYXQncyBzdXBwb3J0ZWQgbm93OgoKYGBgYmFzaAp0ZXJyYWdydW50IC0tZXhwZXJpbWVudCBzdGFja3Mgc3RhY2sgcnVuIGFwcGx5IC0tcXVldWUtc3RyaWN0LWluY2x1ZGUgLS1xdWV1ZS1pbmNsdWRlLWRpcj0uLy50ZXJyYWdydW50LXN0YWNrL2FwcDEgLS1ub24taW50ZXJhY3RpdmUKYGBgCgpNb3JlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBbaW4gdGhlIGBzdGFjayBydW5gIGRvY3NdKGh0dHBzOi8vdGVycmFncnVudC5ncnVudHdvcmsuaW8vZG9jcy9yZWZlcmVuY2UvY2xpLW9wdGlvbnMvI3N0YWNrLXJ1bikuCgojIyMjIFdoYXQncyBDaGFuZ2VkCgotICAgZmVhdDogU3VwcG9ydCBhbGwgYHJ1bmAgY2xpIGZsYWdzIGluIHRoZSBTdGFjayBjb21tYW5kIGJ5IFtAJiM4MjAzO2RlbmlzMjU2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZGVuaXMyNTYpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MDA1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MDA1KQotICAgZmVhdDogQWRkaW5nIERBRyBzdXBwb3J0IHRvIGZpbmQgYnkgW0AmIzgyMDM7eWhha2Jhcl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3loYWtiYXIpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MDAxXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MDAxKQotICAgZml4OiBVcGdyYWRpbmcgYGdvbGFuZ2NpLWxpbnRgIGJ5IFtAJiM4MjAzO3loYWtiYXJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS95aGFrYmFyKSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvMzk4N10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvMzk4NykKLSAgIGZpeDogUmVkdWNpbmcgbm9pc2UgZm9yIHNraXBwZWQgZGVwZW5kZW5jeSBpbnB1dHMgYnkgW0AmIzgyMDM7eWhha2Jhcl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3loYWtiYXIpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MDA3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MDA3KQoKKipGdWxsIENoYW5nZWxvZyoqOiBodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvY29tcGFyZS92MC43NS42Li4udjAuNzUuNwoKIyMjIFtgdjAuNzUuNmBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9yZWxlYXNlcy90YWcvdjAuNzUuNikKCltDb21wYXJlIFNvdXJjZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2NvbXBhcmUvdjAuNzUuNS4uLnYwLjc1LjYpCgojIyMjIOKcqCBOZXcgRmVhdHVyZXMKCiMjIyMjIElhQyBFbmdpbmUgRGVwZW5kZW5jeSBTdXBwb3J0CgpJYUMgRW5naW5lcyBhcmUgbm93IHVzZWQgZHVyaW5nIGRlcGVuZGVuY3kgZXZhbHVhdGlvbiB3aGVuIGVuYWJsZWQuIFRoaXMgcmVzdWx0cyBpbiBtb3JlIGNvdmVyYWdlIGJ5IElhQyBlbmdpbmVzIHdoZW4gZW5hYmxlZCwgcmVkdWNpbmcgdGhlIHJlbGlhbmNlIG9uIHRoZSBwcmVzZW5jZSBvZiBPcGVuVG9mdS9UZXJyYWZvcm0gb24gaG9zdCBtYWNoaW5lcyB3aGVuIHVzaW5nIElhQyBFbmdpbmVzLgoKVGhhbmtzIHRvIFtAJiM4MjAzO3BhcnRjeWJvcmddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9wYXJ0Y3lib3JnKSBmb3Igc3VibWl0dGluZyB0aGlzIGNoYW5nZS4KCiMjIyMg8J+alyBQZXJmb3JtYW5jZSBJbXByb3ZlbWVudHMKCkdlbmVyYXRpb24gb2YgYHRlcnJhZ3J1bnQuc3RhY2suaGNsYCBmaWxlcyBhcmUgbm93IGRvbmUgaW4gcGFyYWxsZWwuIFRoaXMgY2FuIHJlc3VsdCBpbiBzaWduaWZpY2FudCBzcGVlZHVwcyBmb3IgdXNlcnMgd2l0aCBtdWx0aXBsZSB1bml0cyBvciBuZXN0ZWQgc3RhY2tzIGluIGB0ZXJyYWdydW50LnN0YWNrLmhjbGAgZmlsZXMuCgojIyMjIFdoYXQncyBDaGFuZ2VkCgotICAgZmVhdDogYWRkIGVuZ2luZSBzdXBwb3J0IHRvIGRlcGVuZGVuY2llcyBieSBbQCYjODIwMztwYXJ0Y3lib3JnXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vcGFydGN5Ym9yZykgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzM5NzRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzM5NzQpCi0gICBmZWF0OiBlbmdpbmUgY29uZmlnIGluIGRlcGVuZGVuY2llcyBpbXByb3ZlbWVudHMgYnkgW0AmIzgyMDM7eWhha2Jhcl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3loYWtiYXIpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MDAyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MDAyKQotICAgZmVhdDogYWRkZWQgc3VwcG9ydCBmb3IgcGFyYWxsZWwgc3RhY2tzIGdlbmVyYXRpb24gYnkgW0AmIzgyMDM7ZGVuaXMyNTZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kZW5pczI1NikgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzM5OTldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzM5OTkpCgoqKkZ1bGwgQ2hhbmdlbG9nKio6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9jb21wYXJlL3YwLjc1LjUuLi52MC43NS42CgojIyMgW2B2MC43NS41YF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3JlbGVhc2VzL3RhZy92MC43NS41KQoKW0NvbXBhcmUgU291cmNlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvY29tcGFyZS92MC43NS40Li4udjAuNzUuNSkKCiMjIyMg4pyoIE5ldyBGZWF0dXJlcwoKVGhpcyByZWxlYXNlIGludHJvZHVjZXMgZXhwZXJpbWVudGFsIHN1cHBvcnQgZm9yIHRoZSBUZXJyYWdydW50IENvbnRlbnQgQWRkcmVzc2FibGUgU3RvcmUgKENBUykuCgpUbyBlbmFibGUgdGhpcyBmZWF0dXJlLCB5b3UgbXVzdCB1c2UgdGhlIFtjYXNdKGh0dHBzOi8vdGVycmFncnVudC5ncnVudHdvcmsuaW8vZG9jcy9yZWZlcmVuY2UvZXhwZXJpbWVudHMvI2NhcykgZXhwZXJpbWVudC4KCldoZW4gdXNpbmcgdGhlIENBUywgdGhlIGBjYXRhbG9nYCBjb21tYW5kIHdpbGwgc3RvcmUgaXRzIGNvbnRlbnRzIGluIGEgQ0FTIHRvIGRlZHVwbGljYXRlIHJlcG9zaXRvcnkgY29udGVudHMsIHRoZW4gY29uc3RydWN0IHRoZSByZXN1bHRhbnQgcmVwbyBmcm9tIHRoZSBDQVMuCgpZb3UgY2FuIHVzZSBHaXQgVVJMcyBmb3IgdGhlIGBjYXRhbG9nYCBjb21tYW5kIG5vcm1hbGx5LCBhbmQgd2hlbiB0aGUgYGNhc2AgZXhwZXJpbWVudCBpcyBlbmFibGVkLCBUZXJyYWdydW50IHdpbGwgbGV2ZXJhZ2UgdGhlIENBUyB0byBzYXZlIHlvdSBjbG9uZSB0aW1lIGFuZCBkaXNrIHNwYWNlOgoKYGBgaGNsCmNhdGFsb2cgewogIHVybHMgPSBbCiAgICAiZ2l0QGdpdGh1Yi5jb206YWNtZS9tb2R1bGVzLmdpdCIKICBdCn0KYGBgCgpUaGVyZSBhcmUgbW9yZSBwbGFubmVkIGludGVncmF0aW9uIHBvaW50cyBmb3IgdGhlIENBUywgYnV0IGZvciBub3cgb25seSB0aGUgYGNhdGFsb2dgIGNvbW1hbmQgaXMgc3VwcG9ydGVkLgoKWW91IGNhbiBsZWFybiBtb3JlIGFib3V0IHRoZSBDQVMgaW4gdGhlIFtmZWF0dXJlIGRvY3VtZW50YXRpb25dKGh0dHBzOi8vdGVycmFncnVudC5ncnVudHdvcmsuaW8vZG9jcy9mZWF0dXJlcy9jYXMvKS4KCiMjIyMgV2hhdCdzIENoYW5nZWQKCi0gICBmZWF0OiBBZGRpbmcgY2FzIHN1cHBvcnQgdG8gY2F0YWxvZyBieSBbQCYjODIwMzt5aGFrYmFyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20veWhha2JhcikgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzM5MjldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzM5MjkpCi0gICBmaXg6IEVuZ2luZSB0ZXN0cyBpbXByb3ZlbWVudHMgYnkgW0AmIzgyMDM7ZGVuaXMyNTZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kZW5pczI1NikgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzM5OTVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzM5OTUpCi0gICBmaXg6IEFkZGluZyBpbnRlZ3JhdGlvbiB0ZXN0aW5nIHRvIHRoZSBgZmluZGAgY29tbWFuZC4gYnkgW0AmIzgyMDM7eWhha2Jhcl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3loYWtiYXIpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC8zOTk3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC8zOTk3KQoKKipGdWxsIENoYW5nZWxvZyoqOiBodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvY29tcGFyZS92MC43NS40Li4udjAuNzUuNQoKIyMjIFtgdjAuNzUuNGBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9yZWxlYXNlcy90YWcvdjAuNzUuNCkKCltDb21wYXJlIFNvdXJjZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2NvbXBhcmUvdjAuNzUuMy4uLnYwLjc1LjQpCgojIyMjIOKcqCBOZXcgRmVhdHVyZXMKCiMjIyMjIFRoZSBgZmluZGAgY29tbWFuZAoKVGhpcyByZWxlYXNlIGludHJvZHVjZXMgZXhwZXJpbWVudGFsIHN1cHBvcnQgZm9yIHRoZSBgZmluZGAgY29tbWFuZC4KClRvIHVzZSBpdCwgeW91IHdpbGwgbmVlZCB0byBlbmFibGUgdGhlIFtgY2xpLXJlZGVzaWduYF0oaHR0cHM6Ly90ZXJyYWdydW50LmdydW50d29yay5pby9kb2NzL3JlZmVyZW5jZS9leHBlcmltZW50cy8jY2xpLXJlZGVzaWduLS0tY3JpdGVyaWEtZm9yLXN0YWJpbGl6YXRpb24pIGV4cGVyaW1lbnQuCgpUaGUgYGZpbmRgIGNvbW1hbmQgYWxsb3dzIGZvciBlYXN5IGRpc2NvdmVyeSBvZiBbdW5pdF0oaHR0cHM6Ly90ZXJyYWdydW50LmdydW50d29yay5pby9kb2NzL2dldHRpbmctc3RhcnRlZC90ZXJtaW5vbG9neS8jdW5pdCkgYW5kIFtzdGFja10oaHR0cHM6Ly90ZXJyYWdydW50LmdydW50d29yay5pby9kb2NzL2dldHRpbmctc3RhcnRlZC90ZXJtaW5vbG9neS8jc3RhY2spIGNvbmZpZ3VyYXRpb25zIGluIGEgVGVycmFncnVudCBjb2RlYmFzZS4KCkJ5IGRlZmF1bHQsIHJlc3VsdHMgYXJlIGNvbG9yIGNvZGVkIHRvIG1ha2UgaXQgZWFzeSB0byBkaXNjZXJuIGRpZmZlcmVudCBjb25maWd1cmF0aW9uIHR5cGVzOgoKIVt0Zy1maW5kXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vdXNlci1hdHRhY2htZW50cy9hc3NldHMvYmI0MzU5NmItZTlhMC00ZDZlLWI1MDQtZWNlOGMxZjZjOTZlKQoKV2hlbiBwaXBlZCBpbnRvIGFub3RoZXIgY29tbWFuZCwgVGVycmFncnVudCB3aWxsIGF1dG9tYXRpY2FsbHkgcmVtb3ZlIHRob3NlIGNvbG9ycyBzbyB0aGF0IGl0IHdvbid0IGludGVyZmVyZSB3aXRoIGFueSBwb3N0LXByb2Nlc3Npbmc6CgohW3RnLWZpbmQtcGlwZWRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy81MGQyMGZiNy01OGE4LTQzYzctODkxMS0yMTg0MzRlYjM4ODgpCgpSZXN1bHRzIGNhbiBhbHNvIGJlIGVtaXR0ZWQgaW4gSlNPTiBmb3JtYXQgZm9yIG1vcmUgYWR2YW5jZWQgdXNlLWNhc2VzOgoKIVt0Zy1maW5kLWpzb25dKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy85NTVjYmZlNC00MTQ3LTQ0OWItOWFjNC03Nzc5YTY4YjFhZWQpCgpUaGlzIGlzIHRoZSBpbml0aWFsLCBtaW5pbWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBjb21tYW5kLCB3aXRoIG1vcmUgZnVuY3Rpb25hbGl0eSB0byBjb21lIGluIHRoZSBuZWFyIGZ1dHVyZS4KCllvdSBjYW4gbGVhcm4gbW9yZSBhYm91dCB0aGUgY29tbWFuZCBbaGVyZV0oaHR0cHM6Ly90ZXJyYWdydW50LmdydW50d29yay5pby9kb2NzL3JlZmVyZW5jZS9jbGktb3B0aW9ucy8jZmluZCkuCgojIyMjIFdoYXQncyBDaGFuZ2VkCgotICAgZmVhdDogQWRkaW5nIGBmaW5kYCBjb21tYW5kIGJ5IFtAJiM4MjAzO3loYWtiYXJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS95aGFrYmFyKSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvMzk4MV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvMzk4MSkKLSAgIGZpeDogQWRkaW5nIGRvY3MgZnJvbSByb2xlIGFzc3VtcHRpb24gdXBkYXRlcyBpbiBKZWt5bGwgZG9jcyB0byBTdGFybGlnaHQgZG9jcyBieSBbQCYjODIwMzt5aGFrYmFyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20veWhha2JhcikgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzM5ODVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzM5ODUpCi0gICBmaXg6IEZpeGVkIGZhaWxpbmcgQ2lyY2xlQ0kgam9icyBieSBbQCYjODIwMztkZW5pczI1Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RlbmlzMjU2KSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvMzk4OF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvMzk4OCkKLSAgIGZpeDogUmVtb3ZlIHVzYWdlIG9mIHRlbXBsYXRlIHByb3ZpZGVyIGluIHRleHQgZml4dHVyZXMgYnkgW0AmIzgyMDM7eWhha2Jhcl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3loYWtiYXIpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC8zOTg2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC8zOTg2KQotICAgYnVpbGQoZGVwcyk6IGJ1bXAgZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmF0ZXN0IGZyb20gMC40Ny4yIHRvIDAuNDguMiBieSBbQCYjODIwMztkZXBlbmRhYm90XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZGVwZW5kYWJvdCkgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzM4NThdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzM4NTgpCgoqKkZ1bGwgQ2hhbmdlbG9nKio6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9jb21wYXJlL3YwLjc1LjMuLi52MC43NS40CgojIyMgW2B2MC43NS4zYF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3JlbGVhc2VzL3RhZy92MC43NS4zKQoKW0NvbXBhcmUgU291cmNlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvY29tcGFyZS92MC43NS4yLi4udjAuNzUuMykKCiMjIyMg4pyoIE5ldyBGZWF0dXJlcwoKVGhpcyByZWxlYXNlIGludHJvZHVjZXMgc3VwcG9ydCBmb3IgYWxsIHRoZSByZW1haW5pbmcgYGFzc3VtZV9yb2xlYCBhcmd1bWVudHMgdXNlZCBieSBPcGVuVG9mdS9UZXJyYWZvcm0gYmFja2VuZHMuCgpUaGFuayB5b3UgdG8gW0AmIzgyMDM7ZXJwZWxdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9lcnBlbCkgZm9yIGNvbnRyaWJ1dGluZyB0aGlzIQoKIyMjIyBXaGF0J3MgQ2hhbmdlZAoKLSAgIGZlYXQ6IEFkZCBzdXBwb3J0IGZvciBhbGwgYXNzdW1lX3JvbGUgYmxvY2sgYXJndW1lbnRzIGZvciBzMyBiYWNrZW5kIGJ5IFtAJiM4MjAzO2VycGVsXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZXJwZWwpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC8zOTc1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC8zOTc1KQotICAgZml4OiBBZGp1c3RpbmcgY29udHJpYnV0aW9uIGRvY3MgYnkgW0AmIzgyMDM7eWhha2Jhcl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3loYWtiYXIpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC8zOTc5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC8zOTc5KQotICAgY2hvcmU6IEJ1bXBpbmcgRGVwZW5kZW5jaWVzIGFzIHJlcXVlc3RlZCBieSBEZXBlbmRhYm90IGJ5IFtAJiM4MjAzO3loYWtiYXJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS95aGFrYmFyKSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvMzk4NF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvMzk4NCkKLSAgIGRvY3M6IHVwZGF0ZSBjb250cmlidXRpbmcubWQgd2l0aCBkZXYgY29udGFpbmVycyBlbnRyeSBieSBbQCYjODIwMztqMnVkZXZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9qMnVkZXYpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC8zOTc3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC8zOTc3KQoKIyMjIyBOZXcgQ29udHJpYnV0b3JzCgotICAgW0AmIzgyMDM7ZXJwZWxdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9lcnBlbCkgbWFkZSB0aGVpciBmaXJzdCBjb250cmlidXRpb24gaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzM5NzVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzM5NzUpCgoqKkZ1bGwgQ2hhbmdlbG9nKio6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9jb21wYXJlL3YwLjc1LjIuLi52MC43NS4zCgojIyMgW2B2MC43NS4yYF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3JlbGVhc2VzL3RhZy92MC43NS4yKQoKW0NvbXBhcmUgU291cmNlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvY29tcGFyZS92MC43NS4xLi4udjAuNzUuMikKCiMjIyMgV2hhdCdzIENoYW5nZWQKCi0gICBTdGFja3M6IGFkZGVkIHN1cHBvcnQgZm9yIHN0YWNrIHZhbHVlcyBieSBbQCYjODIwMztkZW5pczI1Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RlbmlzMjU2KSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvMzk2MV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvMzk2MSkKCkV4YW1wbGUgSENMIGNvbmZpZ3VyYXRpb246CgpgYGBoY2wKc3RhY2sgImRldiIgewogIHNvdXJjZSA9ICJzdGFja3MvZGV2IgogIHBhdGggICA9ICJkZXYiCgojIyMgbmV3IHZhbHVlcyBibG9jawogIHZhbHVlcyA9IHsKICAgIHByb2plY3QgPSAiZGV2LXByb2plY3QiCiAgICBlbnYgICAgID0gImRldiIKICB9Cn0KYGBgCgpSRkM6IFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvaXNzdWVzLzMzMTNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9pc3N1ZXMvMzMxMykKCioqRnVsbCBDaGFuZ2Vsb2cqKjogaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2NvbXBhcmUvdjAuNzUuMS4uLnYwLjc1LjIKCiMjIyBbYHYwLjc1LjFgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcmVsZWFzZXMvdGFnL3YwLjc1LjEpCgpbQ29tcGFyZSBTb3VyY2VdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9jb21wYXJlL3YwLjc1LjAuLi52MC43NS4xKQoKIyMjIyBXaGF0J3MgQ2hhbmdlZAoKLSAgIGZlYXQ6IFN0cmljdCBjb250cm9sIGZvciBvbGQgZGVwcmVjYXRlZCBlbnYgdmFycyBieSBbQCYjODIwMztsZXZrb2hpbWluc10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2xldmtvaGltaW5zKSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvMzk2NF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvMzk2NCkKLSAgIGZlYXQ6IEFkZGluZyBgLmNvZGVyYWJiaXQueWFtbGAgZmlsZSBieSBbQCYjODIwMzt5aGFrYmFyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20veWhha2JhcikgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzM5NjldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzM5NjkpCi0gICBmaXg6IFVwZGF0ZWQgZmFpbGluZyBlbmdpbmUgdGVzdHMgYnkgW0AmIzgyMDM7ZGVuaXMyNTZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kZW5pczI1NikgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzM5NjBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzM5NjApCi0gICBmaXg6IFJlcGxhY2luZyB1c2FnZSBvZiBgcnVuLWFsbGAgd2l0aCBgcnVuIC0tYWxsYCBpbiBzdGFybGlnaHQgZG9jcyBieSBbQCYjODIwMzt5aGFrYmFyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20veWhha2JhcikgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzM5NTBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzM5NTApCi0gICBmaXg6IFVwZGF0ZSBtYXJrX2FzX3JlYWQgZXhhbXBsZSBhbmQgZG9jcyBieSBbQCYjODIwMztvZGdyaW1dKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9vZGdyaW0pIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC8zOTcxXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC8zOTcxKQotICAgZml4OiBBZGRpbmcgbWlzc2luZyBjYXV0aW9uYXJ5IGFzaWRlcyBieSBbQCYjODIwMzt5aGFrYmFyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20veWhha2JhcikgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzM5NzBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzM5NzApCi0gICBjaG9yZTogVG9mdSBlbmdpbmUgdXBkYXRlIHRvIHYwLjAuMTYgaW4gdGVzdHMgYnkgW0AmIzgyMDM7ZGVuaXMyNTZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kZW5pczI1NikgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzM5NTFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzM5NTEpCi0gICBidWlsZChkZXBzLWRldik6IGJ1bXAgdXJpIGZyb20gMC4xMy4wIHRvIDAuMTMuMiBpbiAvZG9jcyBieSBbQCYjODIwMztkZXBlbmRhYm90XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZGVwZW5kYWJvdCkgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzM5NjNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzM5NjMpCgojIyMjIE5ldyBDb250cmlidXRvcnMKCi0gICBbQCYjODIwMztvZGdyaW1dKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9vZGdyaW0pIG1hZGUgdGhlaXIgZmlyc3QgY29udHJpYnV0aW9uIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC8zOTcxXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC8zOTcxKQoKKipGdWxsIENoYW5nZWxvZyoqOiBodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvY29tcGFyZS92MC43NS4wLi4udjAuNzUuMQoKIyMjIFtgdjAuNzUuMGBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9yZWxlYXNlcy90YWcvdjAuNzUuMCkKCltDb21wYXJlIFNvdXJjZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2NvbXBhcmUvdjAuNzQuMC4uLnYwLjc1LjApCgoqKlRlcnJhZm9ybSAxLjExIHN1cHBvcnQqKjogV2UgYXJlIG5vdyB0ZXN0aW5nIFRlcnJhZ3J1bnQgYWdhaW5zdCBUZXJyYWZvcm0gMS4xMSBhbmQgaXMgY29uZmlybWVkIHRvIGJlIHdvcmtpbmcuCgpOT1RFOiBBbHRob3VnaCB0aGlzIHJlbGVhc2UgaXMgbWFya2VkIGFzIGJhY2t3YXJkIGluY29tcGF0aWJsZSwgaXQgaXMgZnVuY3Rpb25hbGx5IGNvbXBhdGlibGUgYXMgbm90aGluZyBoYXMgYmVlbiBjaGFuZ2VkIGluIFRlcnJhZ3J1bnQgaW50ZXJuYWxzLiBUaGUgbWlub3IgdmVyc2lvbiByZWxlYXNlIGlzIHVzZWZ1bCB0byBtYXJrIHRoZSBjaGFuZ2UgaW4gVGVycmFmb3JtIHZlcnNpb24gdGhhdCBpcyBiZWluZyB0ZXN0ZWQuCgojIyMjIFdoYXQncyBDaGFuZ2VkCgotICAgZmVhdDogQWRkZWQgc3VwcG9ydCBmb3IgVGVycmFmb3JtIDEuMTEgYnkgW0AmIzgyMDM7ZGVuaXMyNTZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kZW5pczI1NikgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzM5NThdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzM5NTgpCi0gICBmaXg6IGNvcnJlY3RlZCBjb21tYW5kIGBydW4gLS0gZ3JhcGhgIGJ5IFtAJiM4MjAzO2xldmtvaGltaW5zXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbGV2a29oaW1pbnMpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC8zOTU5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC8zOTU5KQoKKipGdWxsIENoYW5nZWxvZyoqOiBodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvY29tcGFyZS92MC43NC4wLi4udjAuNzUuMAoKIyMjIFtgdjAuNzQuMGBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9yZWxlYXNlcy90YWcvdjAuNzQuMCkKCltDb21wYXJlIFNvdXJjZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2NvbXBhcmUvdjAuNzMuMTYuLi52MC43NC4wKQoKIyMjIyBEZXNjcmlwdGlvbgoKKipUZXJyYWZvcm0gMS4xMCBzdXBwb3J0Kio6IFdlIGFyZSBub3cgdGVzdGluZyBUZXJyYWdydW50IGFnYWluc3QgVGVycmFmb3JtIDEuMTAgYW5kIGlzIGNvbmZpcm1lZCB0byBiZSB3b3JraW5nLgoKTk9URTogQWx0aG91Z2ggdGhpcyByZWxlYXNlIGlzIG1hcmtlZCBhcyBiYWNrd2FyZCBpbmNvbXBhdGlibGUsIGl0IGlzIGZ1bmN0aW9uYWxseSBjb21wYXRpYmxlIGFzIG5vdGhpbmcgaGFzIGJlZW4gY2hhbmdlZCBpbiBUZXJyYWdydW50IGludGVybmFscy4gVGhlIG1pbm9yIHZlcnNpb24gcmVsZWFzZSBpcyB1c2VmdWwgdG8gbWFyayB0aGUgY2hhbmdlIGluIFRlcnJhZm9ybSB2ZXJzaW9uIHRoYXQgaXMgYmVpbmcgdGVzdGVkLgoKIyMjIyBXaGF0J3MgQ2hhbmdlZAoKLSAgIGZlYXQ6IEltcGxlbWVudGF0aW9uIG9mIGAtLWFsbGAgYC0tZ3JhcGhgIGZsYWdzIGJ5IFtAJiM4MjAzO2xldmtvaGltaW5zXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbGV2a29oaW1pbnMpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC8zOTQ0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC8zOTQ0KQotICAgZmVhdDogQWRkZWQgc3VwcG9ydCBmb3IgVGVycmFmb3JtIDEuMTAgYnkgW0AmIzgyMDM7ZGVuaXMyNTZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kZW5pczI1NikgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzM2MDVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzM2MDUpCgoqKkZ1bGwgQ2hhbmdlbG9nKio6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9jb21wYXJlL3YwLjczLjE2Li4udjAuNzQuMAoKIyMjIFtgdjAuNzMuMTZgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcmVsZWFzZXMvdGFnL3YwLjczLjE2KQoKW0NvbXBhcmUgU291cmNlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvY29tcGFyZS92MC43My4xNS4uLnYwLjczLjE2KQoKIyMjIyDinKggTmV3IEZlYXR1cmVzCgpBZGRlZCBzdXBwb3J0IGZvciBuZXN0ZWQgc3RhY2tzLCBlbmFibGluZyBtb3JlIGZsZXhpYmxlIGFuZCBtb2R1bGFyIHN0YWNrIGNvbmZpZ3VyYXRpb25zLgoKRGVtbzoKCiFbbmVzdGVkLXN0YWNrc10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzLzEyYjVjMmUxLWY1OGUtNDQ4OC04NzNmLWVlOGI5NGU3MmFmYykKClRvIHRyeSBpdCBvdXQsIG1ha2Ugc3VyZSB5b3UgZW5hYmxlIHRoZSBbc3RhY2tzIGV4cGVyaW1lbnRdKGh0dHBzOi8vdGVycmFncnVudC5ncnVudHdvcmsuaW8vZG9jcy9yZWZlcmVuY2UvZXhwZXJpbWVudHMvI3N0YWNrcykuCgpSRkM6IFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvaXNzdWVzLzMzMTNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9pc3N1ZXMvMzMxMykKCiMjIyMgV2hhdCdzIENoYW5nZWQKCi0gICBmZWF0OiBhZGRlZCBzdXBwb3J0IGZvciBuZXN0ZWQgc3RhY2tzIFtAJiM4MjAzO2RlbmlzMjU2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZGVuaXMyNTYpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC8zOTAwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC8zOTAwKQotICAgZG9jczogU3VwcG9ydCBuZXcgcHJlLXJlbGVhc2UgcHJvY2VzcyBieSBbQCYjODIwMzt5aGFrYmFyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20veWhha2JhcikgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzM5NDFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzM5NDEpCi0gICBidWlsZChkZXBzKTogYnVtcCBnaXRodWIuY29tL2dvLWpvc2UvZ28tam9zZS92NCBmcm9tIDQuMC40IHRvIDQuMC41IGJ5IFtAJiM4MjAzO2RlcGVuZGFib3RdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kZXBlbmRhYm90KSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvMzkzMF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvMzkzMCkKCioqRnVsbCBDaGFuZ2Vsb2cqKjogaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2NvbXBhcmUvdjAuNzMuMTUuLi52MC43My4xNgoKPC9kZXRhaWxzPgoKLS0tCgojIyMgQ29uZmlndXJhdGlvbgoK8J+ThSAqKlNjaGVkdWxlKio6IEJyYW5jaCBjcmVhdGlvbiAtIEF0IGFueSB0aW1lIChubyBzY2hlZHVsZSBkZWZpbmVkKSwgQXV0b21lcmdlIC0gQXQgYW55IHRpbWUgKG5vIHNjaGVkdWxlIGRlZmluZWQpLgoK8J+apiAqKkF1dG9tZXJnZSoqOiBEaXNhYmxlZCBieSBjb25maWcuIFBsZWFzZSBtZXJnZSB0aGlzIG1hbnVhbGx5IG9uY2UgeW91IGFyZSBzYXRpc2ZpZWQuCgrimbsgKipSZWJhc2luZyoqOiBXaGVuZXZlciBQUiBiZWNvbWVzIGNvbmZsaWN0ZWQsIG9yIHlvdSB0aWNrIHRoZSByZWJhc2UvcmV0cnkgY2hlY2tib3guCgrwn5SVICoqSWdub3JlKio6IENsb3NlIHRoaXMgUFIgYW5kIHlvdSB3b24ndCBiZSByZW1pbmRlZCBhYm91dCB0aGlzIHVwZGF0ZSBhZ2Fpbi4KCi0tLQoKIC0gWyBdIDwhLS0gcmViYXNlLWNoZWNrIC0tPklmIHlvdSB3YW50IHRvIHJlYmFzZS9yZXRyeSB0aGlzIFBSLCBjaGVjayB0aGlzIGJveAoKLS0tCgpUaGlzIFBSIHdhcyBnZW5lcmF0ZWQgYnkgW01lbmQgUmVub3ZhdGVdKGh0dHBzOi8vbWVuZC5pby9yZW5vdmF0ZS8pLiBWaWV3IHRoZSBbcmVwb3NpdG9yeSBqb2IgbG9nXShodHRwczovL2RldmVsb3Blci5tZW5kLmlvL2dpdGh1Yi9vc2lzbS90ZXN0YmVkKS4KPCEtLXJlbm92YXRlLWRlYnVnOmV5SmpjbVZoZEdWa1NXNVdaWElpT2lJek9TNHhOell1TWlJc0luVndaR0YwWldSSmJsWmxjaUk2SWpNNUxqSXdOeTR4SWl3aWRHRnlaMlYwUW5KaGJtTm9Jam9pYldGcGJpSXNJbXhoWW1Wc2N5STZXeUp5Wlc1dmRtRjBaU0pkZlE9PS0tPgo=
      patchset: 35c0a2cea1e4207528d2e592f1e17879fb50a84f
      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: 8fd3a82aa1a3b21fda55f85a6184991a004c717d
          untrusted/project_0/github.com/osism/zuul-jobs:
            canonical_name: github.com/osism/zuul-jobs
            checkout: main
            commit: dbe45ee47ddf5e6d0630bc342ea3bba9baf9d2d1
          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: 8fd3a82aa1a3b21fda55f85a6184991a004c717d
        playbooks:
        - path: untrusted/project_0/github.com/osism/zuul-jobs/playbooks/flake8/run.yaml
          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: a85e1898052ecb3bd9014fd3a2751d94661304bb
          name: osism/testbed
          required: false
          short_name: testbed
          src_dir: src/github.com/osism/testbed
      ref: refs/pull/2615/head
      resources: {}
      tenant: osism
      timeout: 1800
      voting: true
