all:
  hosts:
    ubuntu-noble:
      ansible_connection: ssh
      ansible_host: 81.163.193.196
      ansible_port: 22
      ansible_python_interpreter: auto
      ansible_user: zuul
      nodepool:
        az: nova
        cloud: regiocloud-a-ci
        external_id: f8eb89db-df96-4982-93c5-565faff94c72
        host_id: 39b0ac6b1bd0318d0940af02f75334312eeed4057396383c275283da
        interface_ip: 81.163.193.196
        label: ubuntu-noble
        private_ipv4: 10.128.0.108
        private_ipv6: null
        provider: regiocloud-a
        public_ipv4: 81.163.193.196
        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/release/.zuul.yaml@main#2>'
      ansible_version: '8'
      attempts: 1
      branch: main
      build: 531601f4d0324922b26f3618c6e64356
      buildset: 1a772e9c389440cb9304ecb1274a1924
      change: '1807'
      change_message: "chore(deps): update dependency moby/moby to v28\n\nThis PR\
        \ contains the following updates:\n\n| Package | Update | Change |\n|---|---|---|\n\
        | [moby/moby](https://redirect.github.com/moby/moby) | major | `27.5.1` ->\
        \ `28.0.4` |\n\n---\n\n### Release Notes\n\n<details>\n<summary>moby/moby\
        \ (moby/moby)</summary>\n\n### [`v28.0.4`](https://redirect.github.com/moby/moby/releases/tag/v28.0.4)\n\
        \n[Compare Source](https://redirect.github.com/moby/moby/compare/v28.0.3...v28.0.4)\n\
        \n#### 28.0.4\n\nFor a full list of pull requests and changes in this release,\
        \ refer to the relevant GitHub milestones:\n\n-   [docker/cli, 28.0.4 milestone](https://redirect.github.com/docker/cli/issues?q=is%3Aclosed+milestone%3A28.0.4)\n\
        -   [moby/moby, 28.0.4 milestone](https://redirect.github.com/moby/moby/issues?q=is%3Aclosed+milestone%3A28.0.4)\n\
        \n##### Bug fixes and enhancements\n\n-   Fix a regression causing `docker\
        \ pull/push` to fail when interacting with a private repository. [docker/cli#5964](https://redirect.github.com/docker/cli/pull/5964)\n\
        \n### [`v28.0.3`](https://redirect.github.com/moby/moby/releases/tag/v28.0.3)\n\
        \n[Compare Source](https://redirect.github.com/moby/moby/compare/v28.0.2...v28.0.3)\n\
        \n#### 28.0.3\n\nFor a full list of pull requests and changes in this release,\
        \ refer to the relevant GitHub milestones:\n\n-   [docker/cli, 28.0.3 milestone](https://redirect.github.com/docker/cli/issues?q=is%3Aclosed+milestone%3A28.0.3)\n\
        -   [moby/moby, 28.0.3 milestone](https://redirect.github.com/moby/moby/issues?q=is%3Aclosed+milestone%3A28.0.3)\n\
        \n##### Bug fixes and enhancements\n\n-   Fix `docker run` truncating the\
        \ `STDOUT`/`STDERR` prematurely when the container exits before the data is\
        \ consumed. [docker/cli#5957](https://redirect.github.com/docker/cli/pull/5957)\n\
        \n##### Packaging updates\n\n-   Update BuildKit to [v0.20.2](https://redirect.github.com/moby/buildkit/releases/tag/v0.20.2).\
        \ [moby/moby#49698](https://redirect.github.com/moby/moby/pull/49698)\n- \
        \  Update `runc` to [v1.2.6](https://redirect.github.com/opencontainers/runc/releases/tag/v1.2.6)\
        \ (static packages only). [moby/moby#49682](https://redirect.github.com/moby/moby/pull/49682)\n\
        -   Update containerd to [v1.7.26](https://redirect.github.com/containerd/containerd/releases/tag/v1.7.26).\
        \ [docker/containerd-packaging#409](https://redirect.github.com/docker/containerd-packaging/pull/409)\n\
        \n### [`v28.0.2`](https://redirect.github.com/moby/moby/releases/tag/v28.0.2)\n\
        \n[Compare Source](https://redirect.github.com/moby/moby/compare/v28.0.1...v28.0.2)\n\
        \n#### 28.0.2\n\nFor a full list of pull requests and changes in this release,\
        \ refer to the relevant GitHub milestones:\n\n-   [docker/cli, 28.0.2 milestone](https://redirect.github.com/docker/cli/issues?q=is%3Aclosed+milestone%3A28.0.2)\n\
        -   [moby/moby, 28.0.2 milestone](https://redirect.github.com/moby/moby/issues?q=is%3Aclosed+milestone%3A28.0.2)\n\
        \n##### Bug fixes and enhancements\n\n-   Fix CLI-specific attributes (`docker.cli.*`)\
        \ being unintentionally passed to downstream OTel services. [docker/cli#5842](https://redirect.github.com/docker/cli/pull/5842)\n\
        -   Fix an issue where user-specified `OTEL_RESOURCE_ATTRIBUTES` were being\
        \ overridden by CLI's internal telemetry attributes. The CLI now properly\
        \ merges user-specified attributes with internal ones, allowing both to coexist.\
        \ [docker/cli#5842](https://redirect.github.com/docker/cli/pull/5842)\n- \
        \  Fix daemon failing to start on Windows when a container created before\
        \ v28.0.0 was present. [moby/moby#49626](https://redirect.github.com/moby/moby/pull/49626)\n\
        -   Fix possible error on `docker buildx prune` with the `--min-free-space`.\
        \ [moby/moby#49623](https://redirect.github.com/moby/moby/pull/49623)\n- \
        \  Fix spurious `io: read/write on closed pipe` error in the daemon log when\
        \ closing container. [moby/moby#49590](https://redirect.github.com/moby/moby/pull/49590)\n\
        -   Fix the Docker daemon failing too early if the containerd socket isn't\
        \ immediately available. [moby/moby#49603](https://redirect.github.com/moby/moby/pull/49603)\n\
        -   Mask Linux thermal interrupt info in a container's `/proc` and `/sys`\
        \ by default. [moby/moby#49560](https://redirect.github.com/moby/moby/pull/49560)\n\
        -   Update `contrib/check-config.sh` to check for more kernel modules related\
        \ to iptables. [moby/moby#49622](https://redirect.github.com/moby/moby/pull/49622)\n\
        -   containerd image store: Fix integer overflow in User ID handling passed\
        \ via `--user`. [moby/moby#49652](https://redirect.github.com/moby/moby/pull/49652)\n\
        -   containerd image store: Fix spurious `reference for unknown type: application/vnd.in-toto+json`\
        \ warning being logged to the daemon's log. [moby/moby#49652](https://redirect.github.com/moby/moby/pull/49652)\n\
        -   containerd image store: Improve performance of `docker ps` when running\
        \ large number of containers. [moby/moby#49365](https://redirect.github.com/moby/moby/pull/49365)\n\
        \n##### Packaging updates\n\n-   Update BuildKit to [v0.20.1](https://redirect.github.com/moby/buildkit/releases/tag/v0.20.1).\
        \ [moby/moby#49587](https://redirect.github.com/moby/moby/pull/49587)\n- \
        \  Update Buildx to [v0.22.0](https://redirect.github.com/docker/buildx/releases/tag/v0.22.0).\
        \ [docker/docker-ce-packaging#1175](https://redirect.github.com/docker/docker-ce-packaging/pull/1175)\n\
        -   Update Compose to [v2.34.0](https://redirect.github.com/docker/compose/releases/tag/v2.34.0).\
        \ [docker/docker-ce-packaging#1172](https://redirect.github.com/docker/docker-ce-packaging/pull/1172)\n\
        -   Update Go runtime to [1.23.7](https://go.dev/doc/devel/release#go1.23.7).\
        \ [docker/cli#5890](https://redirect.github.com/docker/cli/pull/5890), [docker/docker-ce-packaging#1171](https://redirect.github.com/docker/docker-ce-packaging/pull/1171),\
        \ [moby/moby#49580](https://redirect.github.com/moby/moby/pull/49580)\n- \
        \  Update RootlessKit to [v2.3.4](https://redirect.github.com/rootless-containers/rootlesskit/releases/tag/v2.3.4).\
        \ [moby/moby#49614](https://redirect.github.com/moby/moby/pull/49614)\n- \
        \  Update containerd (static binaries only) to [v1.7.27](https://www.github.com/containerd/containerd/releases/tag/v1.7.27).\
        \ [moby/moby#49656](https://redirect.github.com/moby/moby/pull/49656)\n\n\
        ##### Networking\n\n-   Add environment variable `DOCKER_INSECURE_NO_IPTABLES_RAW=1`\
        \ to allow Docker to run on systems where the Linux kernel can't provide `CONFIG_IP_NF_RAW`\
        \ support. When enabled, Docker will not create rules in the iptables `raw`\
        \ table. Warning: This is not recommended for production environments as it\
        \ reduces security by allowing other hosts on the local network to route to\
        \ ports published to host addresses, even when they are published to `127.0.0.1.`\
        \ This option bypasses some of the security hardening introduced in Docker\
        \ Engine 28.0.0. [moby/moby#49621](https://redirect.github.com/moby/moby/pull/49621)\n\
        -   Allow container startup when an endpoint is attached to a macvlan network\
        \ where the parent interface is down. [moby/moby#49630](https://redirect.github.com/moby/moby/pull/49630)\n\
        -   Do not skip DNAT for packets originating in a gateway_mode=routed network.\
        \ [moby/moby#49577](https://redirect.github.com/moby/moby/pull/49577)\n- \
        \  Fix a bug causing `docker ps` to inconsistently report dual-stack port\
        \ mappings. [moby/moby#49657](https://redirect.github.com/moby/moby/pull/49657)\n\
        -   Fix a bug that could cause `docker-proxy` to stop forwarding UDP datagrams\
        \ to containers. [moby/moby#49649](https://redirect.github.com/moby/moby/pull/49649)\n\
        -   Fix a bug that was causing `docker-proxy` to close UDP connections to\
        \ containers eagerly and resulting in the source address to change needlessly.\
        \ [moby/moby#49649](https://redirect.github.com/moby/moby/pull/49649)\n\n\
        ##### Go SDK\n\n-   Move various types and consts from `cli-plugins/manager`\
        \ to a separate package. [docker/cli#5902](https://redirect.github.com/docker/cli/pull/5902)\n\
        -   Update minimum required Go version to go1.23. [moby/moby#49541](https://redirect.github.com/moby/moby/pull/49541)\n\
        -   `cli/command`: Move `PrettyPrint` utility to `cli/command/formatter`.\
        \ [docker/cli#5916](https://redirect.github.com/docker/cli/pull/5916)\n- \
        \  runconfig/errors: split `ErrConflictHostNetwork` into `ErrConflictConnectToHostNetwork`\
        \ and `ErrConflictDisconnectFromHostNetwork`. [moby/moby#49605](https://redirect.github.com/moby/moby/pull/49605)\n\
        \n##### Deprecations\n\n-   Go-SDK: Deprecate `cli-plugins/manager.ResourceAttributesEnvvar`\
        \ constant. It was used internally, but holds the `OTEL_RESOURCE_ATTRIBUTES`\
        \ name, which is part of the OpenTelemetry specification. Users of this constant\
        \ should define their own. It will be removed in the next release. [docker/cli#5881](https://redirect.github.com/docker/cli/pull/5881)\n\
        -   Go-SDK: Deprecate `opts.PortOpt`, `opts.ConfigOpt` and `opts.SecretOpt`.\
        \ These types were moved to the `opts/swarmopts` package. [docker/cli#5907](https://redirect.github.com/docker/cli/pull/5907)\n\
        -   Go-SDK: Remove `service/logs` package. [docker/cli#5910](https://redirect.github.com/docker/cli/pull/5910)\n\
        -   Go-SDK: `cli/command/image`: Deprecate `PushTrustedReference` and move\
        \ to `cli/trust`. [docker/cli#5894](https://redirect.github.com/docker/cli/pull/5894)\n\
        -   Go-SDK: `cli/command/image`: Deprecate and internalize `TrustedPush`.\
        \ [docker/cli#5894](https://redirect.github.com/docker/cli/pull/5894)\n- \
        \  Go-SDK: `cli/command`: deprecate `Cli.NotaryClient`: use [`trust.GetNotaryRepository`](https://pkg.go.dev/github.com/docker/cli@v28.0.1+incompatible/cli/trust#GetNotaryRepository)\
        \ instead. This method is no longer used and will be removed in the next release.\
        \ [docker/cli#5885](https://redirect.github.com/docker/cli/pull/5885)\n- \
        \  Go-SDK: `cli/command`: deprecate `Cli.RegistryClient`. This method was\
        \ only used internally and will be removed in the next release. Use [`client.NewRegistryClient`](https://pkg.go.dev/github.com/docker/cli@v28.0.1+incompatible/cli/registry/client#NewRegistryClient)\
        \ instead. [docker/cli#5889](https://redirect.github.com/docker/cli/pull/5889),\
        \ [docker/cli#5889](https://redirect.github.com/docker/cli/pull/5889)\n- \
        \  Go-SDK: `registry`: Deprecate `RepositoryInfo.Official` field. [moby/moby#49567](https://redirect.github.com/moby/moby/pull/49567)\n\
        -   Go-SDK: `registry`: deprecate `HostCertsDir`: this function was only used\
        \ internally and will be removed in the next release. [moby/moby#49612](https://redirect.github.com/moby/moby/pull/49612)\n\
        -   Go-SDK: `registry`: deprecate `SetCertsDir`: the cert-directory is now\
        \ automatically selected when running with RootlessKit, and should no longer\
        \ be set manually. [moby/moby#49612](https://redirect.github.com/moby/moby/pull/49612)\n\
        \n### [`v28.0.1`](https://redirect.github.com/moby/moby/releases/tag/v28.0.1)\n\
        \n[Compare Source](https://redirect.github.com/moby/moby/compare/v28.0.0...v28.0.1)\n\
        \n### 28.0.1\n\nFor a full list of pull requests and changes in this release,\
        \ refer to the relevant GitHub milestones:\n\n-   [docker/cli, 28.0.1 milestone](https://redirect.github.com/docker/cli/issues?q=is%3Aclosed+milestone%3A28.0.1)\n\
        -   [moby/moby, 28.0.1 milestone](https://redirect.github.com/moby/moby/issues?q=is%3Aclosed+milestone%3A28.0.1)\n\
        \n#### Networking\n\n-   Remove dependency on kernel modules `ip_set`, `ip_set_hash_net`\
        \ and `netfilter_xt_set`.\n    -   The dependency was introduced in release\
        \ 28.0.0 but proved too disruptive. The iptables rules using these modules\
        \ have been replaced. [moby/moby#49530](https://redirect.github.com/moby/moby/pull/49530)\n\
        -   Allow daemon startup on a host with IPv6 disabled without requiring `--ip6tables=false`.\
        \ [moby/moby#49525](https://redirect.github.com/moby/moby/pull/49525)\n- \
        \  Fix a bug that was causing containers with `--restart=always` and a published\
        \ port already in use to restart in a tight loop. [moby/moby#49507](https://redirect.github.com/moby/moby/pull/49507)\n\
        -   Fix an issue with Swarm ingress, caused by incorrect ordering of iptables\
        \ rules. [moby/moby#49538](https://redirect.github.com/moby/moby/pull/49538)\n\
        -   Fix creation of a swarm-scoped network from a `--config-only` network.\
        \ [moby/moby#49521](https://redirect.github.com/moby/moby/pull/49521)\n- \
        \  Fix `docker network inspect` reporting an IPv6 gateway with CIDR suffix\
        \ for a newly created network with no specific IPAM config, until a daemon\
        \ restart. [moby/moby#49520](https://redirect.github.com/moby/moby/pull/49520)\n\
        -   Improve the error reported when kernel modules `ip_set`, `ip_set_hash_net`\
        \ and `netilter_xt_set` are not available. [moby/moby#49524](https://redirect.github.com/moby/moby/pull/49524)\n\
        -   Move most of Docker's iptables rules out of the filter-FORWARD chain,\
        \ so that other applications are free to append rules that must follow Docker's\
        \ rules. [moby/moby#49518](https://redirect.github.com/moby/moby/pull/49518)\n\
        -   Update `--help` output and man page lo state which options only apply\
        \ to the default bridge network. [moby/moby#49522](https://redirect.github.com/moby/moby/pull/49522)\n\
        \n#### Bug fixes and enhancements\n\n-   Fix `docker context create` always\
        \ returning an error when using the `\"skip-tls-verify\"` option. [docker/cli#5850](https://redirect.github.com/docker/cli/pull/5850)\n\
        -   Fix shell completion suggesting IDs instead of names for services and\
        \ nodes. [docker/cli#5848](https://redirect.github.com/docker/cli/pull/5848)\n\
        -   Fix unintentionally printing exit status to standard error output when\
        \ `docker exec/run` returns a non-zero status. [docker/cli#5854](https://redirect.github.com/docker/cli/pull/5854)\n\
        -   Fix regression `protocol \"tcp\" is not supported by the RootlessKit port\
        \ driver \"slirp4netns\"`. [moby/moby#49514](https://redirect.github.com/moby/moby/pull/49514)\n\
        -   containerd image store: Fix `docker inspect` not being able to show multi-platform\
        \ images with missing layers for all platforms. [moby/moby#49533](https://redirect.github.com/moby/moby/pull/49533)\n\
        -   containerd image store: Fix `docker images --tree` reporting wrong content\
        \ size. [moby/moby#49535](https://redirect.github.com/moby/moby/pull/49535)\n\
        -   Fix compilation on i386 [moby/moby#49526](https://redirect.github.com/moby/moby/pull/49526)\n\
        \n#### Packaging updates\n\n-   Update `github.com/go-jose/go-jose/v4` to\
        \ v4.0.5 to address. [GHSA-c6gw-w398-hv78](https://redirect.github.com/go-jose/go-jose/security/advisories/GHSA-c6gw-w398-hv78)\
        \ / [CVE-2025-27144](https://www.cve.org/CVERecord?id=CVE-2025-27144) [docker/cli#5867](https://redirect.github.com/docker/cli/pull/5867)\n\
        -   Update Buildx to [v0.21.1](https://redirect.github.com/docker/buildx/releases/tag/v0.21.1).\
        \ [docker/docker-ce-packaging#1167](https://redirect.github.com/docker/docker-ce-packaging/pull/1167)\n\
        -   Update Compose to [v2.33.1](https://redirect.github.com/docker/compose/releases/tag/v2.33.1).\
        \ [docker/docker-ce-packaging#1168](https://redirect.github.com/docker/docker-ce-packaging/pull/1168)\n\
        \n#### API\n\n-   containerd image store: Fix `GET /images/json?manifests=1`\
        \ not filling `Manifests` for index-only images. [moby/moby#49533](https://redirect.github.com/moby/moby/pull/49533)\n\
        -   containerd image store: Fix `GET /images/json and /images/<name>/json`\
        \ `Size.Content` field including the size of content that's not available\
        \ locally. [moby/moby#49535](https://redirect.github.com/moby/moby/pull/49535)\n\
        \n### [`v28.0.0`](https://redirect.github.com/moby/moby/releases/tag/v28.0.0)\n\
        \n[Compare Source](https://redirect.github.com/moby/moby/compare/v27.5.1...v28.0.0)\n\
        \n### 28.0.0\n\nFor a full list of pull requests and changes in this release,\
        \ refer to the relevant GitHub milestones:\n\n-   [docker/cli, 28.0.0 milestone](https://redirect.github.com/docker/cli/issues?q=is%3Aclosed+milestone%3A28.0.0)\n\
        -   [moby/moby, 28.0.0 milestone](https://redirect.github.com/moby/moby/issues?q=is%3Aclosed+milestone%3A28.0.0)\n\
        -   Deprecated and removed features, see [Deprecated Features](https://redirect.github.com/docker/cli/blob/v28.0.0/docs/deprecated.md).\n\
        -   Changes to the Engine API, see [API version history](https://redirect.github.com/moby/moby/blob/v28.0.0/docs/api/version-history.md).\n\
        \n#### New\n\n-   Add ability to mount an image inside a container via `--mount\
        \ type=image`. [moby/moby#48798](https://redirect.github.com/moby/moby/pull/48798)\n\
        \    -   You can also specify `--mount type=image,image-subpath=[subpath],...`\
        \ option to mount a specific path from the image. [docker/cli#5755](https://redirect.github.com/docker/cli/pull/5755)\n\
        -   `docker images --tree` now shows metadata badges. [docker/cli#5744](https://redirect.github.com/docker/cli/pull/5744)\n\
        -   `docker load`, `docker save`, and `docker history` now support a `--platform`\
        \ flag allowing you to choose a specific platform for single-platform operations\
        \ on multi-platform images. [docker/cli#5331](https://redirect.github.com/docker/cli/pull/5331)\n\
        -   Add `OOMScoreAdj` to `docker service create` and `docker stack`. [docker/cli#5145](https://redirect.github.com/docker/cli/pull/5145)\n\
        -   `docker buildx prune` now supports `reserved-space`, `max-used-space`,\
        \ `min-free-space` and `keep-bytes` filters. [moby/moby#48720](https://redirect.github.com/moby/moby/pull/48720)\n\
        -   Windows: Add support for running containerd as a child process of the\
        \ daemon, instead of using a system-installed containerd. [moby/moby#47955](https://redirect.github.com/moby/moby/pull/47955)\n\
        \n#### Networking\n\n-   The `docker-proxy` binary has been updated, older\
        \ versions will not work with the updated `dockerd`. [moby/moby#48132](https://redirect.github.com/moby/moby/pull/48132)\n\
        \    -   Close a window in which the userland proxy (`docker-proxy`) could\
        \ accept TCP connections, that would then fail after `iptables` NAT rules\
        \ were set up.\n    -   The executable `rootlesskit-docker-proxy` is no longer\
        \ used, it has been removed from the build and distribution.\n-   DNS nameservers\
        \ read from the host's `/etc/resolv.conf` are now always accessed from the\
        \ host's network namespace. [moby/moby#48290](https://redirect.github.com/moby/moby/pull/48290)\n\
        \    -   When the host's `/etc/resolv.conf` contains no nameservers and there\
        \ are no `--dns` overrides, Google's DNS servers are no longer used, apart\
        \ from by the default bridge network and in build containers.\n-   Container\
        \ interfaces in bridge and macvlan networks now use randomly generated MAC\
        \ addresses. [moby/moby#48808](https://redirect.github.com/moby/moby/pull/48808)\n\
        \    -   Gratuitous ARP / Neighbour Advertisement messages will be sent when\
        \ the interfaces are started so that, when IP addresses are reused, they're\
        \ associated with the newly generated MAC address.\n    -   IPv6 addresses\
        \ in the default bridge network are now IPAM-assigned, rather than being derived\
        \ from the MAC address.\n-   The deprecated OCI `prestart` hook is now only\
        \ used by build containers. For other containers, network interfaces are added\
        \ to the network namespace after task creation is complete, before the container\
        \ task is started. [moby/moby#47406](https://redirect.github.com/moby/moby/pull/47406)\n\
        -   Add a new `gw-priority` option to `docker run`, `docker container create`,\
        \ and `docker network connect`. This option will be used by the Engine to\
        \ determine which network provides the default gateway for a container. On\
        \ `docker run`, this option is only available through the extended `--network`\
        \ syntax. [docker/cli#5664](https://redirect.github.com/docker/cli/pull/5664)\n\
        -   Add a new netlabel `com.docker.network.endpoint.ifname` to customize the\
        \ interface name used when connecting a container to a network. It's supported\
        \ by all built-in network drivers on Linux. [moby/moby#49155](https://redirect.github.com/moby/moby/pull/49155)\n\
        \    -   When a container is created with multiple networks specified, there's\
        \ no guarantee on the order networks will be connected to the container. So,\
        \ if a custom interface name uses the same prefix as the auto-generated names,\
        \ for example `eth`, the container might fail to start.\n    -   The recommended\
        \ practice is to use a different prefix, for example `en0`, or a numerical\
        \ suffix high enough to never collide, for example `eth100`.\n    -   This\
        \ label can be specified on `docker network connect` via the `--driver-opt`\
        \ flag, for example `docker network connect --driver-opt=com.docker.network.endpoint.ifname=foobar\
        \ \u2026`.\n    -   Or via the long-form `--network` flag on `docker run`,\
        \ for example `docker run --network=name=bridge,driver-opt=com.docker.network.endpoint.ifname=foobar\
        \ \u2026`\n-   If a custom network driver reports capability `GwAllocChecker`\
        \ then, before a network is created, it will get a `GwAllocCheckerRequest`\
        \ with the network's options. The custom driver may then reply that no gateway\
        \ IP address should be allocated. [moby/moby#49372](https://redirect.github.com/moby/moby/pull/49372)\n\
        \n#### Port publishing in bridge networks\n\n-   `dockerd` now requires `ipset`\
        \ support in the Linux kernel. [moby/moby#48596](https://redirect.github.com/moby/moby/pull/48596)\n\
        \    -   The `iptables` and `ip6tables` rules used to implement port publishing\
        \ and network isolation have been extensively modified. This enables some\
        \ of the following functional changes, and is a first step in refactoring\
        \ to enable native `nftables` support in a future release. [moby/moby#48815](https://redirect.github.com/moby/moby/issues/48815)\n\
        \    -   If it becomes necessary to downgrade to an earlier version of the\
        \ daemon, some manual cleanup of the new rules will be necessary. The simplest\
        \ and surest approach is to reboot the host, or use `iptables -F` and `ip6tables\
        \ -F` to flush all existing `iptables` rules from the `filter` table before\
        \ starting the older version of the daemon. When that is not possible, run\
        \ the following commands as root:\n        -   `iptables -D FORWARD -m set\
        \ --match-set docker-ext-bridges-v4 dst -m conntrack --ctstate RELATED,ESTABLISHED\
        \ -j ACCEPT; ip6tables -D FORWARD -m set --match-set docker-ext-bridges-v6\
        \ dst -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT`\n        -   `iptables\
        \ -D FORWARD -m set --match-set docker-ext-bridges-v4 dst -j DOCKER; ip6tables\
        \ -D FORWARD -m set --match-set docker-ext-bridges-v6 dst -j DOCKER`\n   \
        \     -   If you were previously running with the iptables filter-FORWARD\
        \ policy set to `ACCEPT` and need to restore access to unpublished ports,\
        \ also delete per-bridge-network rules from the `DOCKER` chains. For example,\
        \ `iptables -D DOCKER ! -i docker0 -o docker0 -j DROP`.\n-   Fix a security\
        \ issue that was allowing remote hosts to connect directly to a container\
        \ on its published ports. [moby/moby#49325](https://redirect.github.com/moby/moby/pull/49325)\n\
        -   Fix a security issue that was allowing neighbor hosts to connect to ports\
        \ mapped on a loopback address. [moby/moby#49325](https://redirect.github.com/moby/moby/pull/49325)\n\
        -   Fix an issue that prevented port publishing to link-local addresses. [moby/moby#48570](https://redirect.github.com/moby/moby/pull/48570)\n\
        -   UDP ports published by a container are now reliably accessible by containers\
        \ on other networks, via the host's public IP address. [moby/moby#48571](https://redirect.github.com/moby/moby/pull/48571)\n\
        -   Docker will now only set the `ip6tables` policy for the `FORWARD` chain\
        \ in the `filter` table to `DROP` if it enables IP forwarding on the host\
        \ itself (sysctls `net.ipv6.conf.all.forwarding` and `net.ipv6.conf.default.forwarding`).\
        \ This is now aligned with existing IPv4 behaviour. [moby/moby#48594](https://redirect.github.com/moby/moby/pull/48594)\n\
        \    -   If IPv6 forwarding is enabled on your host, but you were depending\
        \ on Docker to set the ip6tables filter-FORWARD policy to `DROP`, you may\
        \ need to update your host's configuration to make sure it is secure.\n- \
        \  Direct routed access to container ports that are not exposed using `p`/`-publish`\
        \ is now blocked in the `DOCKER` iptables chain. [moby/moby#48724](https://redirect.github.com/moby/moby/pull/48724)\n\
        \    -   If the default iptables filter-FORWARD policy was previously left\
        \ at `ACCEPT` on your host, and direct routed access to a container's unpublished\
        \ ports from a remote host is still required, options are:\n        -   Publish\
        \ the ports you need.\n        -   Use the new `gateway_mode_ipv[46]=nat-unprotected`,\
        \ described below.\n    -   Container ports published to host addresses will\
        \ continue to be accessible via those host addresses, using NAT or the userland\
        \ proxy.\n    -   Unpublished container ports continue to be directly accessible\
        \ from the Docker host via the container's IP address.\n-   Networks created\
        \ with `gateway_mode_ipv[46]=routed` are now accessible from other bridge\
        \ networks running on the same Docker host, as well as from outside the host.\
        \ [moby/moby#48596](https://redirect.github.com/moby/moby/pull/48596)\n- \
        \  Bridge driver options `com.docker.network.bridge.gateway_mode_ipv4` and\
        \ `com.docker.network.bridge.gateway_mode_ipv6` now accept mode `nat-unprotected`.\
        \ [moby/moby#48597](https://redirect.github.com/moby/moby/pull/48597)\n  \
        \  -   `nat-unprotected` is similar to the default `nat` mode, but no per\
        \ port/protocol rules are set up. This means any port on a container can be\
        \ accessed by direct-routing from a remote host.\n-   Bridge driver options\
        \ `com.docker.network.bridge.gateway_mode_ipv4` and `com.docker.network.bridge.gateway_mode_ipv6`\
        \ now accept mode `isolated`, when the network is also `internal`. [moby/moby#49262](https://redirect.github.com/moby/moby/pull/49262)\n\
        \    -   An address is normally assigned to the bridge device in an `internal`\
        \ network. So, processes on the Docker host can access the network, and containers\
        \ in the network can access host services listening on that bridge address\
        \ (including services listening on \"any\" host address, `0.0.0.0` or `::`).\n\
        \    -   An `internal` bridge network created with gateway mode `isolated`\
        \ does not have an address on the Docker host.\n-   When a port mapping includes\
        \ a host IP address or port number that cannot be used because NAT from the\
        \ host is disabled using `--gateway_mode_ipv[46]`, container creation will\
        \ no longer fail. The unused fields may be needed if the gateway endpoint\
        \ changes when networks are connected or disconnected. A message about the\
        \ unused fields will be logged. [moby/moby#48575](https://redirect.github.com/moby/moby/pull/48575)\n\
        -   Do not create iptables nat-POSTROUTING masquerade rules for a container's\
        \ own published ports, when the userland proxy is enabled. [moby/moby#48854](https://redirect.github.com/moby/moby/pull/48854)\n\
        \n#### IPv6\n\n-   Add `docker network create` option `--ipv4`. To disable\
        \ IPv4 address assignment for a network, use `docker network create --ipv4=false\
        \ [...]`. [docker/cli#5599](https://redirect.github.com/docker/cli/pull/5599)\n\
        -   Daemon option `--ipv6` (`\"ipv6\": true` in `daemon.json`) can now be\
        \ used without `fixed-cidr-v6`. [moby/moby#48319](https://redirect.github.com/moby/moby/pull/48319)\n\
        -   IPAM now handles subnets bigger than \"/64\". [moby/moby#49223](https://redirect.github.com/moby/moby/pull/49223)\n\
        -   Duplicate address detection (DAD) is now disabled for addresses assigned\
        \ to the bridges belonging to bridge networks. [moby/moby#48609](https://redirect.github.com/moby/moby/pull/48609)\n\
        -   Modifications to `host-gateway`, for compatibility with IPv6-only networks.\
        \ [moby/moby#48807](https://redirect.github.com/moby/moby/pull/48807)\n  \
        \  -   When special value `host-gateway` is used in an `--add-host` option\
        \ in place of an address, it's replaced by an address on the Docker host to\
        \ make it possible to refer to the host by name. The address used belongs\
        \ to the default bridge (normally `docker0`). Until now it's always been an\
        \ IPv4 address, because all containers on bridge networks had IPv4 addresses.\n\
        \    -   Now, if IPv6 is enabled on the default bridge network, `/etc/hosts`\
        \ entries will be created for IPv4 and IPv6 addresses. So, a container that's\
        \ only connected to IPv6-only networks can access the host by name.\n    -\
        \   The `--host-gateway-ip` option overrides the address used to replace `host-gateway`.\
        \ Two of these options are now allowed on the command line, for one IPv4 gateway\
        \ and one IPv6.\n    -   In the `daemon.json` file, to provide two addresses,\
        \ use `\"host-gateway-ips\"`. For example, `\"host-gateway-ips\": [\"192.0.2.1\"\
        , \"2001:db8::1111\"]`.\n\n#### Bug fixes and enhancements\n\n-   Add IPv6\
        \ loopback address as an insecure registry by default. [moby/moby#48540](https://redirect.github.com/moby/moby/pull/48540)\n\
        -   Add support for Cobra-generated completion scripts for `dockerd`. [moby/moby#49339](https://redirect.github.com/moby/moby/pull/49339)\n\
        -   Fix DNS queries failing when containers are launched via `systemd` auto-start\
        \ on boot [moby/moby#48812](https://redirect.github.com/moby/moby/pull/48812)\n\
        -   Fix Docker Swarm mode ignoring `volume.subpath` [docker/cli#5833](https://redirect.github.com/docker/cli/pull/5833)\n\
        -   Fix `docker export` continuing the export after the operation is canceled.\
        \ [moby/moby#49265](https://redirect.github.com/moby/moby/pull/49265)\n- \
        \  Fix `docker export` not releasing the container's writable layer after\
        \ a failure. [moby/moby#48517](https://redirect.github.com/moby/moby/pull/48517)\n\
        -   Fix `docker images --tree` unnecessary truncating long image names when\
        \ multiple names are available [docker/cli#5757](https://redirect.github.com/docker/cli/pull/5757)\n\
        -   Fix a bug where a container with a name matching another container's ID\
        \ is not restored on daemon startup. [moby/moby#48669](https://redirect.github.com/moby/moby/pull/48669)\n\
        -   Fix an issue preventing some IPv6 addresses shown by `docker ps` to be\
        \ properly bracketed [docker/cli#5468](https://redirect.github.com/docker/cli/pull/5468)\n\
        -   Fix bug preventing image pulls from being cancelled during `docker run`.\
        \ [docker/cli#5645](https://redirect.github.com/docker/cli/pull/5645)\n- \
        \  Fix error-handling when running the daemon as a Windows service to prevent\
        \ unclean exits. [moby/moby#48518](https://redirect.github.com/moby/moby/pull/48518)\n\
        -   Fix issue causing output of `docker run` to be inconsistent when using\
        \ `--attach stdout` or `--attach stderr` versus `stdin`.  `docker run --attach\
        \ stdin` now exits if the container exits. [docker/cli#5662](https://redirect.github.com/docker/cli/pull/5662)\n\
        -   Fix rootless Docker setup with `subid` backed by NSS modules. [moby/moby#49036](https://redirect.github.com/moby/moby/pull/49036)\n\
        -   Generated completion scripts from the CLI now show descriptions next to\
        \ each command/flag suggestion. [docker/cli#5756](https://redirect.github.com/docker/cli/pull/5756)\n\
        -   IPv6 addresses shown by `docker ps` in port bindings are now bracketed\
        \ [docker/cli#5363](https://redirect.github.com/docker/cli/pull/5363)\n- \
        \  Implement the ports validation method for Compose [docker/cli#5524](https://redirect.github.com/docker/cli/pull/5524)\n\
        -   Improve error-output for invalid flags on the command line. [docker/cli#5233](https://redirect.github.com/docker/cli/pull/5233)\n\
        -   Improve errors when failing to start a container using anther container's\
        \ network namespace. [moby/moby#49367](https://redirect.github.com/moby/moby/pull/49367)\n\
        -   Improve handling of invalid API errors that could result in an empty error\
        \ message being shown. [moby/moby#49373](https://redirect.github.com/moby/moby/pull/49373)\n\
        -   Improve output and consistency for unknown (sub)commands and invalid arguments\
        \ [docker/cli#5234](https://redirect.github.com/docker/cli/pull/5234)\n- \
        \  Improve validation of `exec-opts` in daemon configuration. [moby/moby#48979](https://redirect.github.com/moby/moby/pull/48979)\n\
        -   Update the handling of the `--gpus=0` flag to be consistent with the NVIDIA\
        \ Container Runtime. [moby/moby#48482](https://redirect.github.com/moby/moby/pull/48482)\n\
        -   `client.ContainerCreate` now normalizes `CapAdd` and `CapDrop` fields\
        \ in `HostConfig` to their canonical form. [moby/moby#48551](https://redirect.github.com/moby/moby/pull/48551)\n\
        -   `docker image save` now produces stable timestamps. [moby/moby#48611](https://redirect.github.com/moby/moby/pull/48611)\n\
        -   `docker inspect` now lets you inspect Swarm configs [docker/cli#5573](https://redirect.github.com/docker/cli/pull/5573)\n\
        -   containerd image store: Add support for `Extracting` layer status in `docker\
        \ pull`. [moby/moby#49064](https://redirect.github.com/moby/moby/pull/49064)\n\
        -   containerd image store: Fix `commit`, `import`, and `build` not preserving\
        \ a replaced image as a dangling image. [moby/moby#48316](https://redirect.github.com/moby/moby/pull/48316)\n\
        -   containerd image store: Make `docker load --platform` return an error\
        \ when the requested platform isn't loaded. [moby/moby#48718](https://redirect.github.com/moby/moby/pull/48718)\n\
        -   Fix validation of `--link` option. [docker/cli#5739](https://redirect.github.com/docker/cli/pull/5739)\n\
        -   Add validation of network-diagnostic-port daemon configuration option.\
        \ [moby/moby#49305](https://redirect.github.com/moby/moby/pull/49305)\n- \
        \  Unless explicitly configured, an IP address is no longer reserved for a\
        \ gateway in cases where it is not required. Namely, \u201Cinternal\u201D\
        \ bridge networks with option `com.docker.network.bridge.inhibit_ipv4`, `ipvlan`\
        \ or `macvlan` networks with no parent interface, and L3 IPvlan modes. [moby/moby#49261](https://redirect.github.com/moby/moby/pull/49261)\n\
        -   If a custom network driver reports capability `GwAllocChecker` then, before\
        \ a network is created, it will get a `GwAllocCheckerRequest` with the network's\
        \ options. The custom driver may then reply that no gateway IP address should\
        \ be allocated. [moby/moby#49372](https://redirect.github.com/moby/moby/pull/49372)\n\
        -   Fixed an issue that meant a container could not be attached to an L3 IPvlan\
        \ at the same time as other network types. [moby/moby#49130](https://redirect.github.com/moby/moby/pull/49130)\n\
        -   Remove the correct `/etc/hosts` entries when disconnecting a container\
        \ from a network. [moby/moby#48857](https://redirect.github.com/moby/moby/pull/48857)\n\
        -   Fix duplicate network disconnect events. [moby/moby#48800](https://redirect.github.com/moby/moby/pull/48800)\n\
        -   Resolve issues related to changing `fixed-cidr` for `docker0`, and inferring\
        \ configuration from a user-managed default bridge (`--bridge`). [moby/moby#48319](https://redirect.github.com/moby/moby/pull/48319)\n\
        -   Remove feature flag `windows-dns-proxy`, introduced in release 26.1.0\
        \ to control forwarding to external DNS resolvers from Windows containers,\
        \ to make `nslookup` work. It was enabled by default in release 27.0.0. [moby/moby#48738](https://redirect.github.com/moby/moby/pull/48738)\n\
        -   Remove an `iptables` mangle rule for checksumming SCTP. The rule can be\
        \ re-enabled by setting `DOCKER_IPTABLES_SCTP_CHECKSUM=1` in the daemon's\
        \ environment. This override will be removed in a future release. [moby/moby#48149](https://redirect.github.com/moby/moby/pull/48149)\n\
        -   Faster connection to bridge networks, in most cases. [moby/moby#49302](https://redirect.github.com/moby/moby/pull/49302)\n\
        \n#### Packaging updates\n\n-   Update Go runtime to [1.23.6](https://go.dev/doc/devel/release#go1.23.6).\
        \ [docker/cli#5795](https://redirect.github.com/docker/cli/pull/5795), [moby/moby#49393](https://redirect.github.com/moby/moby/pull/49393),\
        \ [docker/docker-ce-packaging#1161](https://redirect.github.com/docker/docker-ce-packaging/pull/1161)\n\
        -   Update `runc` to [v1.2.5](https://redirect.github.com/opencontainers/runc/releases/tag/v1.2.5)\
        \ (static binaries only). [moby/moby#49464](https://redirect.github.com/moby/moby/pull/49464)\n\
        -   Update containerd to [v1.7.25](https://redirect.github.com/containerd/containerd/releases/tag/v1.7.25).\
        \ [moby/moby#49252](https://redirect.github.com/moby/moby/pull/49252)\n- \
        \  Update BuildKit to [v0.20.0](https://redirect.github.com/moby/buildkit/releases/tag/v0.20.0).\
        \ [moby/moby#49495](https://redirect.github.com/moby/moby/pull/49495)\n- \
        \  Update Buildx to [v0.21.0](https://redirect.github.com/docker/buildx/releases/tag/v0.21.0).\
        \ [docker/docker-ce-packaging#1166](https://redirect.github.com/docker/docker-ce-packaging/pull/1166)\n\
        -   Update Compose to [v2.32.4](https://redirect.github.com/docker/compose/releases/tag/v2.32.3).\
        \ [docker/docker-ce-packaging#1143](https://redirect.github.com/docker/docker-ce-packaging/pull/1143)\n\
        -   The canonical source for the `dockerd(8)` man page has been moved back\
        \ to the `moby/moby` repository itself. [moby/moby#48298](https://redirect.github.com/moby/moby/pull/48298)\n\
        \n#### Go SDK\n\n-   Improve validation of empty object IDs. The client now\
        \ returns an \"Invalid Parameter\" error when trying to use an empty ID or\
        \ name. This changes the error returned by some \"Inspect\" functions from\
        \ a \"Not found\" error to an \"Invalid Parameter\". [moby/moby#49381](https://redirect.github.com/moby/moby/pull/49381)\n\
        -   `Client.ImageBuild()` now omits default values from the API request's\
        \ query string. [moby/moby#48651](https://redirect.github.com/moby/moby/pull/48651)\n\
        -   `api/types/container`: Merge `Stats` and `StatsResponse` [moby/moby#49287](https://redirect.github.com/moby/moby/pull/49287)\n\
        -   `client.WithVersion`: Strip v-prefix when setting API version [moby/moby#49352](https://redirect.github.com/moby/moby/pull/49352)\n\
        -   `client`: Add `WithTraceOptions` allowing to specify custom OTe1 trace\
        \ options. [moby/moby#49415](https://redirect.github.com/moby/moby/pull/49415)\n\
        -   `client`: Add `HijackDialer` interface. [moby/moby#49388](https://redirect.github.com/moby/moby/pull/49388)\n\
        -   `client`: Add `SwarmManagementAPIClient` interface to describe all API\
        \ client methods related to Swarm-specific objects. [moby/moby#49388](https://redirect.github.com/moby/moby/pull/49388)\n\
        -   `client`: Add `WithTraceOptions` allowing to specify custom OTel trace\
        \ options. [moby/moby#49415](https://redirect.github.com/moby/moby/pull/49415)\n\
        -   `client`: `ImageHistory`, `ImageLoad` and `ImageSave` now use variadic\
        \ functional options [moby/moby#49466](https://redirect.github.com/moby/moby/pull/49466)\n\
        -   `pkg/containerfs`: Move to internal [moby/moby#48097](https://redirect.github.com/moby/moby/pull/48097)\n\
        -   `pkg/reexec`: Can now be used on platforms other than Linux, Windows,\
        \ macOS and FreeBSD [moby/moby#49118](https://redirect.github.com/moby/moby/pull/49118)\n\
        -   `api/types/container`: introduce `CommitResponse` type. This is currently\
        \ an alias for `IDResponse`, but may become a distinct type in a future release.\
        \ [moby/moby#49444](https://redirect.github.com/moby/moby/pull/49444)\n- \
        \  `api/types/container`: introduce `ExecCreateResponse` type. This is currently\
        \ an alias for `IDResponse`, but may become a distinct type in a future release.\
        \ [moby/moby#49444](https://redirect.github.com/moby/moby/pull/49444)\n\n\
        #### API\n\n-   Update API version to [v1.48](https://docs.docker.com/engine/api/v1.48/)\
        \ [moby/moby#48476](https://redirect.github.com/moby/moby/pull/48476)\n- \
        \  `GET /images/{name}/json` response now returns the `Manifests` field containing\
        \ information about the sub-manifests contained in the image index. This includes\
        \ things like platform-specific manifests and build attestations. [moby/moby#48264](https://redirect.github.com/moby/moby/pull/48264)\n\
        -   `POST /containers/create` now supports `Mount` of type `image` for mounting\
        \ an image inside a container. [moby/moby#48798](https://redirect.github.com/moby/moby/pull/48798)\n\
        -   `GET /images/{name}/history` now supports a `platform` parameter (JSON\
        \ encoded OCI Platform type) that lets you specify a platform to show the\
        \ history of. [moby/moby#48295](https://redirect.github.com/moby/moby/pull/48295)\n\
        -   `POST /images/{name}/load` and `GET /images/{name}/get` now supports a\
        \ `platform` parameter (JSON encoded OCI Platform type) that lets you specify\
        \ a platform to load/save. Not passing this parameter results in loading/saving\
        \ the full multi-platform image. [moby/moby#48295](https://redirect.github.com/moby/moby/pull/48295)\n\
        -   Improve errors for invalid width/height on container resize and exec resize\
        \ [moby/moby#48679](https://redirect.github.com/moby/moby/pull/48679)\n- \
        \  The `POST /containers/create` endpoint now includes a warning in the response\
        \ when setting the container-wide `VolumeDriver` option in combination with\
        \ volumes defined through `Mounts` because the `VolumeDriver` option has no\
        \ effect on those volumes. This warning was previously generated by the CLI.\
        \ [moby/moby#48789](https://redirect.github.com/moby/moby/pull/48789)\n- \
        \  containerd image store: `GET /images/json` and `GET /images/{name}/json`\
        \ responses now includes `Descriptor` field, which contains an OCI descriptor\
        \ of the image target. The new field is only populated if the daemon provides\
        \ a multi-platform image store. [moby/moby#48894](https://redirect.github.com/moby/moby/pull/48894)\n\
        -   containerd image store: `GET /containers/{name}/json` now returns an `ImageManifestDescriptor`\
        \ field containing the OCI descriptor of the platform-specific image manifest\
        \ of the image that was used to create the container. [moby/moby#48855](https://redirect.github.com/moby/moby/pull/48855)\n\
        -   Add debug endpoints (`GET /debug/vars`, `GET /debug/pprof/`, `GET /debug/pprof/cmdline`,\
        \ `GET /debug/pprof/profile`, `GET /debug/pprof/symbol`, `GET /debug/pprof/trace`,\
        \ `GET /debug/pprof/{name}`) are now also accessible through the versioned-API\
        \ paths (`/v<API-version>/<endpoint>`). [moby/moby#49051](https://redirect.github.com/moby/moby/pull/49051)\n\
        -   Fix API returning a `500` status code instead of `400` for validation\
        \ errors. [moby/moby#49217](https://redirect.github.com/moby/moby/pull/49217)\n\
        -   Fix status codes for archive endpoints `HEAD /containers/{name:.*}/archive`,\
        \ `GET /containers/{name:.*}/archive`, `PUT /containers/{name:.*}/archive`\
        \ returning a `500` status instead of a `400` status. [moby/moby#49219](https://redirect.github.com/moby/moby/pull/49219)\n\
        -   `POST /containers/create` now accepts a `writable-cgroups=true` option\
        \ in `HostConfig.SecurityOpt` to mount the container's cgroups writable. This\
        \ provides a more granular approach than `HostConfig.Privileged`. [moby/moby#48828](https://redirect.github.com/moby/moby/pull/48828)\n\
        -   `POST /build/prune` renames `keep-bytes` to `reserved-space` and now supports\
        \ additional prune parameters `max-used-space` and `min-free-space`. [moby/moby#48720](https://redirect.github.com/moby/moby/pull/48720)\n\
        -   `POST /networks/create` now has an `EnableIPv4` field. Setting it to `false`\
        \ disables IPv4 IPAM for the network. [moby/moby#48271](https://redirect.github.com/moby/moby/pull/48271)\n\
        \    -   `GET /networks/{id}` now returns an `EnableIPv4` field showing whether\
        \ the network has IPv4 IPAM enabled. [moby/moby#48271](https://redirect.github.com/moby/moby/pull/48271)\n\
        \    -   User-defined bridge networks require either IPv4 or IPv6 address\
        \ assignment to be enabled. IPv4 cannot be disabled for the default bridge\
        \ network (`docker0`). [moby/moby#48323](https://redirect.github.com/moby/moby/pull/48323)\n\
        \    -   `macvlan` and `ipvlan` networks can be created with address assignment\
        \ disabled for IPv4, IPv6, or both address families. [moby/moby#48299](https://redirect.github.com/moby/moby/pull/48299)\n\
        \    -   IPv4 cannot be disabled for Windows or Swarm networks. [moby/moby#48278](https://redirect.github.com/moby/moby/pull/48278)\n\
        -   Add a way to specify which network should provide the default gateway\
        \ for a container. [moby/moby#48936](https://redirect.github.com/moby/moby/pull/48936)\n\
        \    -   `POST /networks/{id}/connect` and `POST /containers/create` now accept\
        \ a `GwPriority` field in `EndpointsConfig`. This value is used to determine\
        \ which network endpoint provides the default gateway for the container. The\
        \ endpoint with the highest priority is selected. If multiple endpoints have\
        \ the same priority, endpoints are sorted lexicographically by their network\
        \ name, and the one that sorts first is picked. [moby/moby#48746](https://redirect.github.com/moby/moby/pull/48746)\n\
        \    -   `GET /containers/json` now returns a `GwPriority` field in `NetworkSettings`\
        \ for each network endpoint. The `GwPriority` field is used by the CLI\u2019\
        s new `gw-priority` option for `docker run` and `docker network connect`.\
        \ [moby/moby#48746](https://redirect.github.com/moby/moby/pull/48746)\n- \
        \  Settings for `eth0` in `--sysctl` options are no longer automatically migrated\
        \ to the network endpoint. [moby/moby#48746](https://redirect.github.com/moby/moby/pull/48746)\n\
        \    -   For example, in the Docker CLI, `docker run --network mynet --sysctl\
        \ net.ipv4.conf.eth0.log_martians=1 ...` is rejected. Instead, you must use\
        \ `docker run --network name=mynet,driver-opt=com.docker.network.endpoint.sysctls=net.ipv4.conf.IFNAME.log_martians=1\
        \ ...`\n-   `GET /containers/json` now returns an `ImageManifestDescriptor`\
        \ field matching the same field in `/containers/{name}/json`. This field is\
        \ only populated if the daemon provides a multi-platform image store. [moby/moby#49407](https://redirect.github.com/moby/moby/pull/49407)\n\
        \n#### Removed\n\n-   The Fluent logger option `fluentd-async-connect` has\
        \ been deprecated in v20.10 and is now removed. [moby/moby#46114](https://redirect.github.com/moby/moby/pull/46114)\n\
        -   The `--time` option on `docker stop` and `docker restart` is deprecated\
        \ and renamed to `--timeout`. [docker/cli#5485](https://redirect.github.com/docker/cli/pull/5485)\n\
        -   Go-SDK: `pkg/ioutils`: Remove `NewReaderErrWrapper` as it was never used.\
        \ [moby/moby#49258](https://redirect.github.com/moby/moby/pull/49258)\n- \
        \  Go-SDK: `pkg/ioutils`: Remove deprecated `BytesPipe`, `NewBytesPipe`, `ErrClosed`,\
        \ `WriteCounter`, `NewWriteCounter`, `NewReaderErrWrapper`, `NopFlusher`.\
        \ [moby/moby#49245](https://redirect.github.com/moby/moby/pull/49245)\n- \
        \  Go-SDK: `pkg/ioutils`: Remove deprecated `NopWriter` and `NopWriteCloser`.\
        \ [moby/moby#49256](https://redirect.github.com/moby/moby/pull/49256)\n- \
        \  Go-SDK: `pkg/sysinfo`: Remove deprecated NumCPU. [moby/moby#49242](https://redirect.github.com/moby/moby/pull/49242)\n\
        -   Go-SDK: Remove `pkg/broadcaster`, as it was only used internally [moby/moby#49172](https://redirect.github.com/moby/moby/pull/49172)\n\
        -   Go-SDK: Remove deprecated `cli.Errors` type [docker/cli#5549](https://redirect.github.com/docker/cli/pull/5549)\n\
        -   Remove `pkg/ioutils.ReadCloserWrapper`, as it was only used in tests.\
        \ [moby/moby#49237](https://redirect.github.com/moby/moby/pull/49237)\n- \
        \  Remove deprecated `api-cors-header` config parameter and the `dockerd`\
        \ `--api-cors-header` option [moby/moby#48209](https://redirect.github.com/moby/moby/pull/48209)\n\
        -   Remove deprecated `APIEndpoint.Version` field, `APIVersion` type, and\
        \ `APIVersion1` and `APIVersion2` consts. [moby/moby#49004](https://redirect.github.com/moby/moby/pull/49004)\n\
        -   Remove deprecated `api-cors-header` config parameter and the Docker daemon's\
        \ `--api-cors-header` option. [docker/cli#5437](https://redirect.github.com/docker/cli/pull/5437)\n\
        -   Remove deprecated `pkg/directory` package [moby/moby#48779](https://redirect.github.com/moby/moby/pull/48779)\n\
        -   Remove deprecated `pkg/dmsg.Dmesg()` [moby/moby#48109](https://redirect.github.com/moby/moby/pull/48109)\n\
        -   Remove deprecated image/spec package, which was moved to a separate module\
        \ (`github.com/moby/docker-image-spec`) [moby/moby#48460](https://redirect.github.com/moby/moby/pull/48460)\n\
        -   Remove migration code and errors for the deprecated `logentries` logging\
        \ driver. [moby/moby#48891](https://redirect.github.com/moby/moby/pull/48891)\n\
        -   Remove support for deprecated external graph-driver plugins. [moby/moby#48072](https://redirect.github.com/moby/moby/pull/48072)\n\
        -   `api/types`: Remove deprecated `container.ContainerNode` and `ContainerJSONBase.Node`\
        \ field. [moby/moby#48107](https://redirect.github.com/moby/moby/pull/48107)\n\
        -   `api/types`: Remove deprecated aliases: `ImagesPruneReport`, `VolumesPruneReport`,\
        \ `NetworkCreateRequest`, `NetworkCreate`, `NetworkListOptions`, `NetworkCreateResponse`,\
        \ `NetworkInspectOptions`, `NetworkConnect`, `NetworkDisconnect`, `EndpointResource`,\
        \ `NetworkResource`, `NetworksPruneReport`, `ExecConfig`, `ExecStartCheck`,\
        \ `ContainerExecInspect`, `ContainersPruneReport`, `ContainerPathStat`, `CopyToContainerOptions`,\
        \ `ContainerStats`, `ImageSearchOptions`, `ImageImportSource`, `ImageLoadResponse`,\
        \ `ContainerNode`. [moby/moby#48107](https://redirect.github.com/moby/moby/pull/48107)\n\
        -   `libnetwork/iptables`: Remove deprecated `IPV`, `Iptables`, `IP6Tables`\
        \ and `Passthrough()`. [moby/moby#49121](https://redirect.github.com/moby/moby/pull/49121)\n\
        -   `pkg/archive`: Remove deprecated `CanonicalTarNameForPath`, `NewTempArchive`,\
        \ `TempArchive` [moby/moby#48708](https://redirect.github.com/moby/moby/pull/48708)\n\
        -   `pkg/fileutils`: Remove deprecated `GetTotalUsedFds` [moby/moby#49210](https://redirect.github.com/moby/moby/pull/49210)\n\
        -   `pkg/ioutils`: Remove `OnEOFReader`, which was only used internally [moby/moby#49170](https://redirect.github.com/moby/moby/pull/49170)\n\
        -   `pkg/longpath`: Remove deprecated `Prefix` constant. [moby/moby#48779](https://redirect.github.com/moby/moby/pull/48779)\n\
        -   `pkg/stringid`: Remove deprecated `IsShortID` and  `ValidateID` functions\
        \ [moby/moby#48705](https://redirect.github.com/moby/moby/pull/48705)\n- \
        \  `runconfig/opts`: Remove deprecated `ConvertKVStringsToMap` [moby/moby#48102](https://redirect.github.com/moby/moby/pull/48102)\n\
        -   `runconfig`: Remove deprecated `ContainerConfigWrapper`, `SetDefaultNetModeIfBlank`,\
        \ `DefaultDaemonNetworkMode`, `IsPreDefinedNetwork` [moby/moby#48102](https://redirect.github.com/moby/moby/pull/48102)\n\
        -   `container`: Remove deprecated `ErrNameReserved`, `ErrNameNotReserved`.\
        \ [moby/moby#48728](https://redirect.github.com/moby/moby/pull/48728)\n- \
        \  Remove `Daemon.ContainerInspectCurrent()` method and change `Daemon.ContainerInspect()`\
        \ signature to accept a `backend.ContainerInspectOptions` struct [moby/moby#48672](https://redirect.github.com/moby/moby/pull/48672)\n\
        -   Remove deprecated `Daemon.Exists()` and `Daemon.IsPaused()` methods. [moby/moby#48723](https://redirect.github.com/moby/moby/pull/48723)\n\
        \n#### Deprecations\n\n-   API: The `BridgeNfIptables` and `BridgeNfIp6tables`\
        \ fields in the `GET /info` response are now always be `false` and will be\
        \ omitted in API v1.49. The netfilter module is now loaded on-demand, and\
        \ no longer during daemon startup, making these fields obsolete. [moby/moby#49114](https://redirect.github.com/moby/moby/pull/49114)\n\
        -   API: The `error` and `progress` fields in streaming responses for endpoints\
        \ that return a JSON progress response, such as `POST /images/create`, `POST\
        \ /images/{name}/push`, and `POST /build` are deprecated.  [moby/moby#49447](https://redirect.github.com/moby/moby/pull/49447)\n\
        \    -   Users should use the information in the `errorDetail` and `progressDetail`\
        \ fields instead.\n    -   These fields were marked deprecated in API v1.4\
        \ (docker v0.6.0) and API v1.8 (docker v0.7.1) respectively, but still returned.\n\
        \    -   These fields will be left empty or will be omitted in a future API\
        \ version.\n-   Deprecate `Daemon.Register()`. This function is unused and\
        \ will be removed in the next release. [moby/moby#48702](https://redirect.github.com/moby/moby/pull/48702)\n\
        -   Deprecate `client.ImageInspectWithRaw` function in favor of the new `client.ImageInspect`.\
        \ [moby/moby#48264](https://redirect.github.com/moby/moby/pull/48264)\n- \
        \  Deprecate `daemon/config.Config.ValidatePlatformConfig()`. This method\
        \ was used as helper for `config.Validate`, which should be used instead.\
        \ [moby/moby#48985](https://redirect.github.com/moby/moby/pull/48985)\n- \
        \  Deprecate `pkg/reexec`. This package is deprecated and moved to a separate\
        \ module. Use `github.com/moby/sys/reexec` instead. [moby/moby#49129](https://redirect.github.com/moby/moby/pull/49129)\n\
        -   Deprecate configuration for pushing non-distributable artifacts [docker/cli#5724](https://redirect.github.com/docker/cli/pull/5724)\n\
        -   Deprecate the `--allow-nondistributable-artifacts` daemon flag and corresponding\
        \ `allow-nondistributable-artifacts` field in `daemon.json`. Setting either\
        \ option will no longer take an effect, but a deprecation warning log is added.\
        \ [moby/moby#49065](https://redirect.github.com/moby/moby/pull/49065)\n- \
        \  Deprecate the `RegistryConfig.AllowNondistributableArtifactsCIDRs` and\
        \ `RegistryConfig.AllowNondistributableArtifactsHostnames` fields in the `GET\
        \ /info` API response. For API version v1.48 and older, the fields are still\
        \ included in the response, but always `null`. In API version v1.49 and later,\
        \ the field will be omitted entirely. [moby/moby#49065](https://redirect.github.com/moby/moby/pull/49065)\n\
        -   Go-SDK: Deprecate `registry.ServiceOptions.AllowNondistributableArtifacts`\
        \ field. [moby/moby#49065](https://redirect.github.com/moby/moby/pull/49065)\n\
        -   Go-SDK: The `BridgeNfIptables`, `BridgeNfIp6tables` fields in `api/types/system.Info`\
        \ and `BridgeNFCallIPTablesDisabled`, `BridgeNFCallIP6TablesDisabled` fields\
        \ in `pkg/sysinfo.SysInfo` are deprecated and will be removed in the next\
        \ release. [moby/moby#49114](https://redirect.github.com/moby/moby/pull/49114)\n\
        -   Go-SDK: `client`: Deprecate `CommonAPIClient` interface in favor of the\
        \ `APIClient` interface. The `CommonAPIClient` will be changed to an alias\
        \ for `APIClient` in the next release, and removed in the release after. [moby/moby#49388](https://redirect.github.com/moby/moby/pull/49388)\n\
        -   Go-SDK: `client`: Deprecate `ErrorConnectionFailed` helper. This function\
        \ was only used internally, and will be removed in the next release. [moby/moby#49389](https://redirect.github.com/moby/moby/pull/49389)\n\
        -   Go-SDK: `pkg/ioutils`: Deprecate `NewAtomicFileWriter`, `AtomicWriteFile`,\
        \ `AtomicWriteSet`, `NewAtomicWriteSet` in favor of `pkg/atomicwriter` equivalents.\
        \ [moby/moby#49171](https://redirect.github.com/moby/moby/pull/49171)\n- \
        \  Go-SDK: `pkg/sysinfo`: Deprecate `NumCPU`. This utility has the same behavior\
        \ as `runtime.NumCPU`. [moby/moby#49241](https://redirect.github.com/moby/moby/pull/49241)\n\
        -   Go-SDK: `pkg/system`: Deprecate `MkdirAll`. This function provided custom\
        \ handling for Windows GUID volume paths. Handling for such paths is now supported\
        \ by Go standard library in go1.22 and newer, and this function is now an\
        \ alias for `os.MkdirAll`, which should be used instead. This alias will be\
        \ removed in the next release. [moby/moby#49162](https://redirect.github.com/moby/moby/pull/49162)\n\
        -   Go-SDK: Deprecate `pkg/parsers.ParseKeyValueOpt`. [moby/moby#49177](https://redirect.github.com/moby/moby/pull/49177)\n\
        -   Go-SDK: Deprecate `pkg/parsers.ParseUintListMaximum`, `pkg/parsers.ParseUintList`.\
        \ These utilities were only used internally and will be removed in the next\
        \ release. [moby/moby#49222](https://redirect.github.com/moby/moby/pull/49222)\n\
        -   Go-SDK: Deprecate `api/type.IDResponse` in favor of `container.CommitResponse`\
        \ and `container.ExecCreateResponse`, which are currently an alias, but may\
        \ become distinct types in a future release. This type will be removed in\
        \ the next release. [moby/moby#49446](https://redirect.github.com/moby/moby/pull/49446)\n\
        -   Go-SDK: Deprecate `api/types/container.ContainerUpdateOKBody` in favor\
        \ of `UpdateResponse`. This type will be removed in the next release. [moby/moby#49442](https://redirect.github.com/moby/moby/pull/49442)\n\
        -   Go-SDK: Deprecate `api/types/container.ContainerTopOKBody` in favor of\
        \ `TopResponse`. This type will be removed in the next release. [moby/moby#49442](https://redirect.github.com/moby/moby/pull/49442)\n\
        -   Go-SDK: `pkg/jsonmessage`: Fix deprecation of `ProgressMessage`, `ErrorMessage`,\
        \ which were deprecated in Docker v0.6.0 and v0.7.1 respectively. [moby/moby#49447](https://redirect.github.com/moby/moby/pull/49447)\n\
        -   Move `GraphDriverData` from `api/types` to `api/types/storage`. The old\
        \ type is deprecated and will be removed in the next release. [moby/moby#48108](https://redirect.github.com/moby/moby/pull/48108)\n\
        -   Move `RequestPrivilegeFunc` from `api/types` to `api/types/registry`.\
        \ The old type is deprecated and will be removed in the next release. [moby/moby#48119](https://redirect.github.com/moby/moby/pull/48119)\n\
        -   Move from `api/types` to `api/types/container` - `NetworkSettings`, `NetworkSettingsBase`,\
        \ `DefaultNetworkSettings`, `SummaryNetworkSettings`, `Health`, `HealthcheckResult`,\
        \ `NoHealthcheck`, `Starting`, `Healthy`, and `Unhealthy` constants, `MountPoint`,\
        \ `Port`, `ContainerState`, `Container`, `ContainerJSONBase`, `ContainerJSON`,\
        \ `ContainerNode`. The old types are deprecated and will be removed in the\
        \ next release. [moby/moby#48108](https://redirect.github.com/moby/moby/pull/48108)\n\
        -   Move from `api/types` to `api/types/image` - `ImageInspect`, `RootFS`.\
        \ The old types are deprecated and will be removed in the next release. [moby/moby#48108](https://redirect.github.com/moby/moby/pull/48108)\n\
        -   `ContainerdCommit.Expected`, `RuncCommit.Expected`, and `InitCommit.Expected`\
        \ fields in the `GET /info` endpoint are deprecated and will be omitted in\
        \ API v1.49. [moby/moby#48478](https://redirect.github.com/moby/moby/pull/48478)\n\
        -   `api/types/registry`: Deprecate `ServiceConfig.AllowNondistributableArtifactsCIDRs`\
        \ and `ServiceConfig.AllowNondistributableArtifactsHostnames` fields. These\
        \ fields will be removed in the next release. [moby/moby#49065](https://redirect.github.com/moby/moby/pull/49065)\n\
        -   `api/types/system/Commit.Expected` field is deprecated and should no longer\
        \ be used. [moby/moby#48478](https://redirect.github.com/moby/moby/pull/48478)\n\
        -   `daemon/graphdriver`: Deprecate `GetDriver()` [moby/moby#48079](https://redirect.github.com/moby/moby/pull/48079)\n\
        -   `libnetwork/iptables`: Deprecate `Passthrough`. This function was only\
        \ used internally, and will be removed in the next release. [moby/moby#49115](https://redirect.github.com/moby/moby/pull/49115)\n\
        -   `pkg/directory.Size()` function is deprecated, an will be removed in the\
        \ next release. [moby/moby#48057](https://redirect.github.com/moby/moby/pull/48057)\n\
        -   `registry`: Deprecate `APIEndpoint.TrimHostName`; hostname is now trimmed\
        \ unconditionally for remote names. This field will be removed in the next\
        \ release. [moby/moby#49005](https://redirect.github.com/moby/moby/pull/49005)\n\
        -   `allow-nondistributable-artifacts` field in `daemon.json`. Setting either\
        \ option will no longer take effect, but a deprecation warning log is added\
        \ to raise awareness about the deprecation. This warning is planned to become\
        \ an error in the next release. [moby/moby#49065](https://redirect.github.com/moby/moby/pull/49065)\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/release).\n\
        <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNzMuMSIsInVwZGF0ZWRJblZlciI6IjM5LjIwNy4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZSJdfQ==-->\n"
      change_url: https://github.com/osism/release/pull/1807
      child_jobs: []
      commit_id: 3b7209548649d9921bcb1f08dd6c92735e032627
      event_id: 07003e80-09c1-11f0-8eda-747576a34e24
      executor:
        hostname: 7d211f194f6a
        inventory_file: /var/lib/zuul/builds/531601f4d0324922b26f3618c6e64356/ansible/inventory.yaml
        log_root: /var/lib/zuul/builds/531601f4d0324922b26f3618c6e64356/work/logs
        result_data_file: /var/lib/zuul/builds/531601f4d0324922b26f3618c6e64356/work/results.json
        src_root: /var/lib/zuul/builds/531601f4d0324922b26f3618c6e64356/work/src
        work_root: /var/lib/zuul/builds/531601f4d0324922b26f3618c6e64356/work
      items:
      - branch: main
        change: '1807'
        change_url: https://github.com/osism/release/pull/1807
        patchset: 3b7209548649d9921bcb1f08dd6c92735e032627
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/release
          name: osism/release
          short_name: release
          src_dir: src/github.com/osism/release
      job: flake8
      jobtags: []
      max_attempts: 3
      message: Y2hvcmUoZGVwcyk6IHVwZGF0ZSBkZXBlbmRlbmN5IG1vYnkvbW9ieSB0byB2MjgKClRoaXMgUFIgY29udGFpbnMgdGhlIGZvbGxvd2luZyB1cGRhdGVzOgoKfCBQYWNrYWdlIHwgVXBkYXRlIHwgQ2hhbmdlIHwKfC0tLXwtLS18LS0tfAp8IFttb2J5L21vYnldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkpIHwgbWFqb3IgfCBgMjcuNS4xYCAtPiBgMjguMC40YCB8CgotLS0KCiMjIyBSZWxlYXNlIE5vdGVzCgo8ZGV0YWlscz4KPHN1bW1hcnk+bW9ieS9tb2J5IChtb2J5L21vYnkpPC9zdW1tYXJ5PgoKIyMjIFtgdjI4LjAuNGBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcmVsZWFzZXMvdGFnL3YyOC4wLjQpCgpbQ29tcGFyZSBTb3VyY2VdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvY29tcGFyZS92MjguMC4zLi4udjI4LjAuNCkKCiMjIyMgMjguMC40CgpGb3IgYSBmdWxsIGxpc3Qgb2YgcHVsbCByZXF1ZXN0cyBhbmQgY2hhbmdlcyBpbiB0aGlzIHJlbGVhc2UsIHJlZmVyIHRvIHRoZSByZWxldmFudCBHaXRIdWIgbWlsZXN0b25lczoKCi0gICBbZG9ja2VyL2NsaSwgMjguMC40IG1pbGVzdG9uZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RvY2tlci9jbGkvaXNzdWVzP3E9aXMlM0FjbG9zZWQrbWlsZXN0b25lJTNBMjguMC40KQotICAgW21vYnkvbW9ieSwgMjguMC40IG1pbGVzdG9uZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9pc3N1ZXM/cT1pcyUzQWNsb3NlZCttaWxlc3RvbmUlM0EyOC4wLjQpCgojIyMjIyBCdWcgZml4ZXMgYW5kIGVuaGFuY2VtZW50cwoKLSAgIEZpeCBhIHJlZ3Jlc3Npb24gY2F1c2luZyBgZG9ja2VyIHB1bGwvcHVzaGAgdG8gZmFpbCB3aGVuIGludGVyYWN0aW5nIHdpdGggYSBwcml2YXRlIHJlcG9zaXRvcnkuIFtkb2NrZXIvY2xpIzU5NjRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kb2NrZXIvY2xpL3B1bGwvNTk2NCkKCiMjIyBbYHYyOC4wLjNgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3JlbGVhc2VzL3RhZy92MjguMC4zKQoKW0NvbXBhcmUgU291cmNlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L2NvbXBhcmUvdjI4LjAuMi4uLnYyOC4wLjMpCgojIyMjIDI4LjAuMwoKRm9yIGEgZnVsbCBsaXN0IG9mIHB1bGwgcmVxdWVzdHMgYW5kIGNoYW5nZXMgaW4gdGhpcyByZWxlYXNlLCByZWZlciB0byB0aGUgcmVsZXZhbnQgR2l0SHViIG1pbGVzdG9uZXM6CgotICAgW2RvY2tlci9jbGksIDI4LjAuMyBtaWxlc3RvbmVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kb2NrZXIvY2xpL2lzc3Vlcz9xPWlzJTNBY2xvc2VkK21pbGVzdG9uZSUzQTI4LjAuMykKLSAgIFttb2J5L21vYnksIDI4LjAuMyBtaWxlc3RvbmVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvaXNzdWVzP3E9aXMlM0FjbG9zZWQrbWlsZXN0b25lJTNBMjguMC4zKQoKIyMjIyMgQnVnIGZpeGVzIGFuZCBlbmhhbmNlbWVudHMKCi0gICBGaXggYGRvY2tlciBydW5gIHRydW5jYXRpbmcgdGhlIGBTVERPVVRgL2BTVERFUlJgIHByZW1hdHVyZWx5IHdoZW4gdGhlIGNvbnRhaW5lciBleGl0cyBiZWZvcmUgdGhlIGRhdGEgaXMgY29uc3VtZWQuIFtkb2NrZXIvY2xpIzU5NTddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kb2NrZXIvY2xpL3B1bGwvNTk1NykKCiMjIyMjIFBhY2thZ2luZyB1cGRhdGVzCgotICAgVXBkYXRlIEJ1aWxkS2l0IHRvIFt2MC4yMC4yXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9idWlsZGtpdC9yZWxlYXNlcy90YWcvdjAuMjAuMikuIFttb2J5L21vYnkjNDk2OThdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTY5OCkKLSAgIFVwZGF0ZSBgcnVuY2AgdG8gW3YxLjIuNl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL29wZW5jb250YWluZXJzL3J1bmMvcmVsZWFzZXMvdGFnL3YxLjIuNikgKHN0YXRpYyBwYWNrYWdlcyBvbmx5KS4gW21vYnkvbW9ieSM0OTY4Ml0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5NjgyKQotICAgVXBkYXRlIGNvbnRhaW5lcmQgdG8gW3YxLjcuMjZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jb250YWluZXJkL2NvbnRhaW5lcmQvcmVsZWFzZXMvdGFnL3YxLjcuMjYpLiBbZG9ja2VyL2NvbnRhaW5lcmQtcGFja2FnaW5nIzQwOV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RvY2tlci9jb250YWluZXJkLXBhY2thZ2luZy9wdWxsLzQwOSkKCiMjIyBbYHYyOC4wLjJgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3JlbGVhc2VzL3RhZy92MjguMC4yKQoKW0NvbXBhcmUgU291cmNlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L2NvbXBhcmUvdjI4LjAuMS4uLnYyOC4wLjIpCgojIyMjIDI4LjAuMgoKRm9yIGEgZnVsbCBsaXN0IG9mIHB1bGwgcmVxdWVzdHMgYW5kIGNoYW5nZXMgaW4gdGhpcyByZWxlYXNlLCByZWZlciB0byB0aGUgcmVsZXZhbnQgR2l0SHViIG1pbGVzdG9uZXM6CgotICAgW2RvY2tlci9jbGksIDI4LjAuMiBtaWxlc3RvbmVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kb2NrZXIvY2xpL2lzc3Vlcz9xPWlzJTNBY2xvc2VkK21pbGVzdG9uZSUzQTI4LjAuMikKLSAgIFttb2J5L21vYnksIDI4LjAuMiBtaWxlc3RvbmVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvaXNzdWVzP3E9aXMlM0FjbG9zZWQrbWlsZXN0b25lJTNBMjguMC4yKQoKIyMjIyMgQnVnIGZpeGVzIGFuZCBlbmhhbmNlbWVudHMKCi0gICBGaXggQ0xJLXNwZWNpZmljIGF0dHJpYnV0ZXMgKGBkb2NrZXIuY2xpLipgKSBiZWluZyB1bmludGVudGlvbmFsbHkgcGFzc2VkIHRvIGRvd25zdHJlYW0gT1RlbCBzZXJ2aWNlcy4gW2RvY2tlci9jbGkjNTg0Ml0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RvY2tlci9jbGkvcHVsbC81ODQyKQotICAgRml4IGFuIGlzc3VlIHdoZXJlIHVzZXItc3BlY2lmaWVkIGBPVEVMX1JFU09VUkNFX0FUVFJJQlVURVNgIHdlcmUgYmVpbmcgb3ZlcnJpZGRlbiBieSBDTEkncyBpbnRlcm5hbCB0ZWxlbWV0cnkgYXR0cmlidXRlcy4gVGhlIENMSSBub3cgcHJvcGVybHkgbWVyZ2VzIHVzZXItc3BlY2lmaWVkIGF0dHJpYnV0ZXMgd2l0aCBpbnRlcm5hbCBvbmVzLCBhbGxvd2luZyBib3RoIHRvIGNvZXhpc3QuIFtkb2NrZXIvY2xpIzU4NDJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kb2NrZXIvY2xpL3B1bGwvNTg0MikKLSAgIEZpeCBkYWVtb24gZmFpbGluZyB0byBzdGFydCBvbiBXaW5kb3dzIHdoZW4gYSBjb250YWluZXIgY3JlYXRlZCBiZWZvcmUgdjI4LjAuMCB3YXMgcHJlc2VudC4gW21vYnkvbW9ieSM0OTYyNl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5NjI2KQotICAgRml4IHBvc3NpYmxlIGVycm9yIG9uIGBkb2NrZXIgYnVpbGR4IHBydW5lYCB3aXRoIHRoZSBgLS1taW4tZnJlZS1zcGFjZWAuIFttb2J5L21vYnkjNDk2MjNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTYyMykKLSAgIEZpeCBzcHVyaW91cyBgaW86IHJlYWQvd3JpdGUgb24gY2xvc2VkIHBpcGVgIGVycm9yIGluIHRoZSBkYWVtb24gbG9nIHdoZW4gY2xvc2luZyBjb250YWluZXIuIFttb2J5L21vYnkjNDk1OTBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTU5MCkKLSAgIEZpeCB0aGUgRG9ja2VyIGRhZW1vbiBmYWlsaW5nIHRvbyBlYXJseSBpZiB0aGUgY29udGFpbmVyZCBzb2NrZXQgaXNuJ3QgaW1tZWRpYXRlbHkgYXZhaWxhYmxlLiBbbW9ieS9tb2J5IzQ5NjAzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDk2MDMpCi0gICBNYXNrIExpbnV4IHRoZXJtYWwgaW50ZXJydXB0IGluZm8gaW4gYSBjb250YWluZXIncyBgL3Byb2NgIGFuZCBgL3N5c2AgYnkgZGVmYXVsdC4gW21vYnkvbW9ieSM0OTU2MF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5NTYwKQotICAgVXBkYXRlIGBjb250cmliL2NoZWNrLWNvbmZpZy5zaGAgdG8gY2hlY2sgZm9yIG1vcmUga2VybmVsIG1vZHVsZXMgcmVsYXRlZCB0byBpcHRhYmxlcy4gW21vYnkvbW9ieSM0OTYyMl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5NjIyKQotICAgY29udGFpbmVyZCBpbWFnZSBzdG9yZTogRml4IGludGVnZXIgb3ZlcmZsb3cgaW4gVXNlciBJRCBoYW5kbGluZyBwYXNzZWQgdmlhIGAtLXVzZXJgLiBbbW9ieS9tb2J5IzQ5NjUyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDk2NTIpCi0gICBjb250YWluZXJkIGltYWdlIHN0b3JlOiBGaXggc3B1cmlvdXMgYHJlZmVyZW5jZSBmb3IgdW5rbm93biB0eXBlOiBhcHBsaWNhdGlvbi92bmQuaW4tdG90bytqc29uYCB3YXJuaW5nIGJlaW5nIGxvZ2dlZCB0byB0aGUgZGFlbW9uJ3MgbG9nLiBbbW9ieS9tb2J5IzQ5NjUyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDk2NTIpCi0gICBjb250YWluZXJkIGltYWdlIHN0b3JlOiBJbXByb3ZlIHBlcmZvcm1hbmNlIG9mIGBkb2NrZXIgcHNgIHdoZW4gcnVubmluZyBsYXJnZSBudW1iZXIgb2YgY29udGFpbmVycy4gW21vYnkvbW9ieSM0OTM2NV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5MzY1KQoKIyMjIyMgUGFja2FnaW5nIHVwZGF0ZXMKCi0gICBVcGRhdGUgQnVpbGRLaXQgdG8gW3YwLjIwLjFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L2J1aWxka2l0L3JlbGVhc2VzL3RhZy92MC4yMC4xKS4gW21vYnkvbW9ieSM0OTU4N10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5NTg3KQotICAgVXBkYXRlIEJ1aWxkeCB0byBbdjAuMjIuMF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RvY2tlci9idWlsZHgvcmVsZWFzZXMvdGFnL3YwLjIyLjApLiBbZG9ja2VyL2RvY2tlci1jZS1wYWNrYWdpbmcjMTE3NV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RvY2tlci9kb2NrZXItY2UtcGFja2FnaW5nL3B1bGwvMTE3NSkKLSAgIFVwZGF0ZSBDb21wb3NlIHRvIFt2Mi4zNC4wXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZG9ja2VyL2NvbXBvc2UvcmVsZWFzZXMvdGFnL3YyLjM0LjApLiBbZG9ja2VyL2RvY2tlci1jZS1wYWNrYWdpbmcjMTE3Ml0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RvY2tlci9kb2NrZXItY2UtcGFja2FnaW5nL3B1bGwvMTE3MikKLSAgIFVwZGF0ZSBHbyBydW50aW1lIHRvIFsxLjIzLjddKGh0dHBzOi8vZ28uZGV2L2RvYy9kZXZlbC9yZWxlYXNlI2dvMS4yMy43KS4gW2RvY2tlci9jbGkjNTg5MF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RvY2tlci9jbGkvcHVsbC81ODkwKSwgW2RvY2tlci9kb2NrZXItY2UtcGFja2FnaW5nIzExNzFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kb2NrZXIvZG9ja2VyLWNlLXBhY2thZ2luZy9wdWxsLzExNzEpLCBbbW9ieS9tb2J5IzQ5NTgwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDk1ODApCi0gICBVcGRhdGUgUm9vdGxlc3NLaXQgdG8gW3YyLjMuNF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3Jvb3RsZXNzLWNvbnRhaW5lcnMvcm9vdGxlc3NraXQvcmVsZWFzZXMvdGFnL3YyLjMuNCkuIFttb2J5L21vYnkjNDk2MTRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTYxNCkKLSAgIFVwZGF0ZSBjb250YWluZXJkIChzdGF0aWMgYmluYXJpZXMgb25seSkgdG8gW3YxLjcuMjddKGh0dHBzOi8vd3d3LmdpdGh1Yi5jb20vY29udGFpbmVyZC9jb250YWluZXJkL3JlbGVhc2VzL3RhZy92MS43LjI3KS4gW21vYnkvbW9ieSM0OTY1Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5NjU2KQoKIyMjIyMgTmV0d29ya2luZwoKLSAgIEFkZCBlbnZpcm9ubWVudCB2YXJpYWJsZSBgRE9DS0VSX0lOU0VDVVJFX05PX0lQVEFCTEVTX1JBVz0xYCB0byBhbGxvdyBEb2NrZXIgdG8gcnVuIG9uIHN5c3RlbXMgd2hlcmUgdGhlIExpbnV4IGtlcm5lbCBjYW4ndCBwcm92aWRlIGBDT05GSUdfSVBfTkZfUkFXYCBzdXBwb3J0LiBXaGVuIGVuYWJsZWQsIERvY2tlciB3aWxsIG5vdCBjcmVhdGUgcnVsZXMgaW4gdGhlIGlwdGFibGVzIGByYXdgIHRhYmxlLiBXYXJuaW5nOiBUaGlzIGlzIG5vdCByZWNvbW1lbmRlZCBmb3IgcHJvZHVjdGlvbiBlbnZpcm9ubWVudHMgYXMgaXQgcmVkdWNlcyBzZWN1cml0eSBieSBhbGxvd2luZyBvdGhlciBob3N0cyBvbiB0aGUgbG9jYWwgbmV0d29yayB0byByb3V0ZSB0byBwb3J0cyBwdWJsaXNoZWQgdG8gaG9zdCBhZGRyZXNzZXMsIGV2ZW4gd2hlbiB0aGV5IGFyZSBwdWJsaXNoZWQgdG8gYDEyNy4wLjAuMS5gIFRoaXMgb3B0aW9uIGJ5cGFzc2VzIHNvbWUgb2YgdGhlIHNlY3VyaXR5IGhhcmRlbmluZyBpbnRyb2R1Y2VkIGluIERvY2tlciBFbmdpbmUgMjguMC4wLiBbbW9ieS9tb2J5IzQ5NjIxXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDk2MjEpCi0gICBBbGxvdyBjb250YWluZXIgc3RhcnR1cCB3aGVuIGFuIGVuZHBvaW50IGlzIGF0dGFjaGVkIHRvIGEgbWFjdmxhbiBuZXR3b3JrIHdoZXJlIHRoZSBwYXJlbnQgaW50ZXJmYWNlIGlzIGRvd24uIFttb2J5L21vYnkjNDk2MzBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTYzMCkKLSAgIERvIG5vdCBza2lwIEROQVQgZm9yIHBhY2tldHMgb3JpZ2luYXRpbmcgaW4gYSBnYXRld2F5X21vZGU9cm91dGVkIG5ldHdvcmsuIFttb2J5L21vYnkjNDk1NzddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTU3NykKLSAgIEZpeCBhIGJ1ZyBjYXVzaW5nIGBkb2NrZXIgcHNgIHRvIGluY29uc2lzdGVudGx5IHJlcG9ydCBkdWFsLXN0YWNrIHBvcnQgbWFwcGluZ3MuIFttb2J5L21vYnkjNDk2NTddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTY1NykKLSAgIEZpeCBhIGJ1ZyB0aGF0IGNvdWxkIGNhdXNlIGBkb2NrZXItcHJveHlgIHRvIHN0b3AgZm9yd2FyZGluZyBVRFAgZGF0YWdyYW1zIHRvIGNvbnRhaW5lcnMuIFttb2J5L21vYnkjNDk2NDldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTY0OSkKLSAgIEZpeCBhIGJ1ZyB0aGF0IHdhcyBjYXVzaW5nIGBkb2NrZXItcHJveHlgIHRvIGNsb3NlIFVEUCBjb25uZWN0aW9ucyB0byBjb250YWluZXJzIGVhZ2VybHkgYW5kIHJlc3VsdGluZyBpbiB0aGUgc291cmNlIGFkZHJlc3MgdG8gY2hhbmdlIG5lZWRsZXNzbHkuIFttb2J5L21vYnkjNDk2NDldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTY0OSkKCiMjIyMjIEdvIFNESwoKLSAgIE1vdmUgdmFyaW91cyB0eXBlcyBhbmQgY29uc3RzIGZyb20gYGNsaS1wbHVnaW5zL21hbmFnZXJgIHRvIGEgc2VwYXJhdGUgcGFja2FnZS4gW2RvY2tlci9jbGkjNTkwMl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RvY2tlci9jbGkvcHVsbC81OTAyKQotICAgVXBkYXRlIG1pbmltdW0gcmVxdWlyZWQgR28gdmVyc2lvbiB0byBnbzEuMjMuIFttb2J5L21vYnkjNDk1NDFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTU0MSkKLSAgIGBjbGkvY29tbWFuZGA6IE1vdmUgYFByZXR0eVByaW50YCB1dGlsaXR5IHRvIGBjbGkvY29tbWFuZC9mb3JtYXR0ZXJgLiBbZG9ja2VyL2NsaSM1OTE2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZG9ja2VyL2NsaS9wdWxsLzU5MTYpCi0gICBydW5jb25maWcvZXJyb3JzOiBzcGxpdCBgRXJyQ29uZmxpY3RIb3N0TmV0d29ya2AgaW50byBgRXJyQ29uZmxpY3RDb25uZWN0VG9Ib3N0TmV0d29ya2AgYW5kIGBFcnJDb25mbGljdERpc2Nvbm5lY3RGcm9tSG9zdE5ldHdvcmtgLiBbbW9ieS9tb2J5IzQ5NjA1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDk2MDUpCgojIyMjIyBEZXByZWNhdGlvbnMKCi0gICBHby1TREs6IERlcHJlY2F0ZSBgY2xpLXBsdWdpbnMvbWFuYWdlci5SZXNvdXJjZUF0dHJpYnV0ZXNFbnZ2YXJgIGNvbnN0YW50LiBJdCB3YXMgdXNlZCBpbnRlcm5hbGx5LCBidXQgaG9sZHMgdGhlIGBPVEVMX1JFU09VUkNFX0FUVFJJQlVURVNgIG5hbWUsIHdoaWNoIGlzIHBhcnQgb2YgdGhlIE9wZW5UZWxlbWV0cnkgc3BlY2lmaWNhdGlvbi4gVXNlcnMgb2YgdGhpcyBjb25zdGFudCBzaG91bGQgZGVmaW5lIHRoZWlyIG93bi4gSXQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IHJlbGVhc2UuIFtkb2NrZXIvY2xpIzU4ODFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kb2NrZXIvY2xpL3B1bGwvNTg4MSkKLSAgIEdvLVNESzogRGVwcmVjYXRlIGBvcHRzLlBvcnRPcHRgLCBgb3B0cy5Db25maWdPcHRgIGFuZCBgb3B0cy5TZWNyZXRPcHRgLiBUaGVzZSB0eXBlcyB3ZXJlIG1vdmVkIHRvIHRoZSBgb3B0cy9zd2FybW9wdHNgIHBhY2thZ2UuIFtkb2NrZXIvY2xpIzU5MDddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kb2NrZXIvY2xpL3B1bGwvNTkwNykKLSAgIEdvLVNESzogUmVtb3ZlIGBzZXJ2aWNlL2xvZ3NgIHBhY2thZ2UuIFtkb2NrZXIvY2xpIzU5MTBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kb2NrZXIvY2xpL3B1bGwvNTkxMCkKLSAgIEdvLVNESzogYGNsaS9jb21tYW5kL2ltYWdlYDogRGVwcmVjYXRlIGBQdXNoVHJ1c3RlZFJlZmVyZW5jZWAgYW5kIG1vdmUgdG8gYGNsaS90cnVzdGAuIFtkb2NrZXIvY2xpIzU4OTRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kb2NrZXIvY2xpL3B1bGwvNTg5NCkKLSAgIEdvLVNESzogYGNsaS9jb21tYW5kL2ltYWdlYDogRGVwcmVjYXRlIGFuZCBpbnRlcm5hbGl6ZSBgVHJ1c3RlZFB1c2hgLiBbZG9ja2VyL2NsaSM1ODk0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZG9ja2VyL2NsaS9wdWxsLzU4OTQpCi0gICBHby1TREs6IGBjbGkvY29tbWFuZGA6IGRlcHJlY2F0ZSBgQ2xpLk5vdGFyeUNsaWVudGA6IHVzZSBbYHRydXN0LkdldE5vdGFyeVJlcG9zaXRvcnlgXShodHRwczovL3BrZy5nby5kZXYvZ2l0aHViLmNvbS9kb2NrZXIvY2xpQHYyOC4wLjEraW5jb21wYXRpYmxlL2NsaS90cnVzdCNHZXROb3RhcnlSZXBvc2l0b3J5KSBpbnN0ZWFkLiBUaGlzIG1ldGhvZCBpcyBubyBsb25nZXIgdXNlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IHJlbGVhc2UuIFtkb2NrZXIvY2xpIzU4ODVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kb2NrZXIvY2xpL3B1bGwvNTg4NSkKLSAgIEdvLVNESzogYGNsaS9jb21tYW5kYDogZGVwcmVjYXRlIGBDbGkuUmVnaXN0cnlDbGllbnRgLiBUaGlzIG1ldGhvZCB3YXMgb25seSB1c2VkIGludGVybmFsbHkgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCByZWxlYXNlLiBVc2UgW2BjbGllbnQuTmV3UmVnaXN0cnlDbGllbnRgXShodHRwczovL3BrZy5nby5kZXYvZ2l0aHViLmNvbS9kb2NrZXIvY2xpQHYyOC4wLjEraW5jb21wYXRpYmxlL2NsaS9yZWdpc3RyeS9jbGllbnQjTmV3UmVnaXN0cnlDbGllbnQpIGluc3RlYWQuIFtkb2NrZXIvY2xpIzU4ODldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kb2NrZXIvY2xpL3B1bGwvNTg4OSksIFtkb2NrZXIvY2xpIzU4ODldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kb2NrZXIvY2xpL3B1bGwvNTg4OSkKLSAgIEdvLVNESzogYHJlZ2lzdHJ5YDogRGVwcmVjYXRlIGBSZXBvc2l0b3J5SW5mby5PZmZpY2lhbGAgZmllbGQuIFttb2J5L21vYnkjNDk1NjddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTU2NykKLSAgIEdvLVNESzogYHJlZ2lzdHJ5YDogZGVwcmVjYXRlIGBIb3N0Q2VydHNEaXJgOiB0aGlzIGZ1bmN0aW9uIHdhcyBvbmx5IHVzZWQgaW50ZXJuYWxseSBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IHJlbGVhc2UuIFttb2J5L21vYnkjNDk2MTJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTYxMikKLSAgIEdvLVNESzogYHJlZ2lzdHJ5YDogZGVwcmVjYXRlIGBTZXRDZXJ0c0RpcmA6IHRoZSBjZXJ0LWRpcmVjdG9yeSBpcyBub3cgYXV0b21hdGljYWxseSBzZWxlY3RlZCB3aGVuIHJ1bm5pbmcgd2l0aCBSb290bGVzc0tpdCwgYW5kIHNob3VsZCBubyBsb25nZXIgYmUgc2V0IG1hbnVhbGx5LiBbbW9ieS9tb2J5IzQ5NjEyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDk2MTIpCgojIyMgW2B2MjguMC4xYF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9yZWxlYXNlcy90YWcvdjI4LjAuMSkKCltDb21wYXJlIFNvdXJjZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9jb21wYXJlL3YyOC4wLjAuLi52MjguMC4xKQoKIyMjIDI4LjAuMQoKRm9yIGEgZnVsbCBsaXN0IG9mIHB1bGwgcmVxdWVzdHMgYW5kIGNoYW5nZXMgaW4gdGhpcyByZWxlYXNlLCByZWZlciB0byB0aGUgcmVsZXZhbnQgR2l0SHViIG1pbGVzdG9uZXM6CgotICAgW2RvY2tlci9jbGksIDI4LjAuMSBtaWxlc3RvbmVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kb2NrZXIvY2xpL2lzc3Vlcz9xPWlzJTNBY2xvc2VkK21pbGVzdG9uZSUzQTI4LjAuMSkKLSAgIFttb2J5L21vYnksIDI4LjAuMSBtaWxlc3RvbmVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvaXNzdWVzP3E9aXMlM0FjbG9zZWQrbWlsZXN0b25lJTNBMjguMC4xKQoKIyMjIyBOZXR3b3JraW5nCgotICAgUmVtb3ZlIGRlcGVuZGVuY3kgb24ga2VybmVsIG1vZHVsZXMgYGlwX3NldGAsIGBpcF9zZXRfaGFzaF9uZXRgIGFuZCBgbmV0ZmlsdGVyX3h0X3NldGAuCiAgICAtICAgVGhlIGRlcGVuZGVuY3kgd2FzIGludHJvZHVjZWQgaW4gcmVsZWFzZSAyOC4wLjAgYnV0IHByb3ZlZCB0b28gZGlzcnVwdGl2ZS4gVGhlIGlwdGFibGVzIHJ1bGVzIHVzaW5nIHRoZXNlIG1vZHVsZXMgaGF2ZSBiZWVuIHJlcGxhY2VkLiBbbW9ieS9tb2J5IzQ5NTMwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDk1MzApCi0gICBBbGxvdyBkYWVtb24gc3RhcnR1cCBvbiBhIGhvc3Qgd2l0aCBJUHY2IGRpc2FibGVkIHdpdGhvdXQgcmVxdWlyaW5nIGAtLWlwNnRhYmxlcz1mYWxzZWAuIFttb2J5L21vYnkjNDk1MjVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTUyNSkKLSAgIEZpeCBhIGJ1ZyB0aGF0IHdhcyBjYXVzaW5nIGNvbnRhaW5lcnMgd2l0aCBgLS1yZXN0YXJ0PWFsd2F5c2AgYW5kIGEgcHVibGlzaGVkIHBvcnQgYWxyZWFkeSBpbiB1c2UgdG8gcmVzdGFydCBpbiBhIHRpZ2h0IGxvb3AuIFttb2J5L21vYnkjNDk1MDddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTUwNykKLSAgIEZpeCBhbiBpc3N1ZSB3aXRoIFN3YXJtIGluZ3Jlc3MsIGNhdXNlZCBieSBpbmNvcnJlY3Qgb3JkZXJpbmcgb2YgaXB0YWJsZXMgcnVsZXMuIFttb2J5L21vYnkjNDk1MzhdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTUzOCkKLSAgIEZpeCBjcmVhdGlvbiBvZiBhIHN3YXJtLXNjb3BlZCBuZXR3b3JrIGZyb20gYSBgLS1jb25maWctb25seWAgbmV0d29yay4gW21vYnkvbW9ieSM0OTUyMV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5NTIxKQotICAgRml4IGBkb2NrZXIgbmV0d29yayBpbnNwZWN0YCByZXBvcnRpbmcgYW4gSVB2NiBnYXRld2F5IHdpdGggQ0lEUiBzdWZmaXggZm9yIGEgbmV3bHkgY3JlYXRlZCBuZXR3b3JrIHdpdGggbm8gc3BlY2lmaWMgSVBBTSBjb25maWcsIHVudGlsIGEgZGFlbW9uIHJlc3RhcnQuIFttb2J5L21vYnkjNDk1MjBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTUyMCkKLSAgIEltcHJvdmUgdGhlIGVycm9yIHJlcG9ydGVkIHdoZW4ga2VybmVsIG1vZHVsZXMgYGlwX3NldGAsIGBpcF9zZXRfaGFzaF9uZXRgIGFuZCBgbmV0aWx0ZXJfeHRfc2V0YCBhcmUgbm90IGF2YWlsYWJsZS4gW21vYnkvbW9ieSM0OTUyNF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5NTI0KQotICAgTW92ZSBtb3N0IG9mIERvY2tlcidzIGlwdGFibGVzIHJ1bGVzIG91dCBvZiB0aGUgZmlsdGVyLUZPUldBUkQgY2hhaW4sIHNvIHRoYXQgb3RoZXIgYXBwbGljYXRpb25zIGFyZSBmcmVlIHRvIGFwcGVuZCBydWxlcyB0aGF0IG11c3QgZm9sbG93IERvY2tlcidzIHJ1bGVzLiBbbW9ieS9tb2J5IzQ5NTE4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDk1MTgpCi0gICBVcGRhdGUgYC0taGVscGAgb3V0cHV0IGFuZCBtYW4gcGFnZSBsbyBzdGF0ZSB3aGljaCBvcHRpb25zIG9ubHkgYXBwbHkgdG8gdGhlIGRlZmF1bHQgYnJpZGdlIG5ldHdvcmsuIFttb2J5L21vYnkjNDk1MjJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTUyMikKCiMjIyMgQnVnIGZpeGVzIGFuZCBlbmhhbmNlbWVudHMKCi0gICBGaXggYGRvY2tlciBjb250ZXh0IGNyZWF0ZWAgYWx3YXlzIHJldHVybmluZyBhbiBlcnJvciB3aGVuIHVzaW5nIHRoZSBgInNraXAtdGxzLXZlcmlmeSJgIG9wdGlvbi4gW2RvY2tlci9jbGkjNTg1MF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RvY2tlci9jbGkvcHVsbC81ODUwKQotICAgRml4IHNoZWxsIGNvbXBsZXRpb24gc3VnZ2VzdGluZyBJRHMgaW5zdGVhZCBvZiBuYW1lcyBmb3Igc2VydmljZXMgYW5kIG5vZGVzLiBbZG9ja2VyL2NsaSM1ODQ4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZG9ja2VyL2NsaS9wdWxsLzU4NDgpCi0gICBGaXggdW5pbnRlbnRpb25hbGx5IHByaW50aW5nIGV4aXQgc3RhdHVzIHRvIHN0YW5kYXJkIGVycm9yIG91dHB1dCB3aGVuIGBkb2NrZXIgZXhlYy9ydW5gIHJldHVybnMgYSBub24temVybyBzdGF0dXMuIFtkb2NrZXIvY2xpIzU4NTRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kb2NrZXIvY2xpL3B1bGwvNTg1NCkKLSAgIEZpeCByZWdyZXNzaW9uIGBwcm90b2NvbCAidGNwIiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBSb290bGVzc0tpdCBwb3J0IGRyaXZlciAic2xpcnA0bmV0bnMiYC4gW21vYnkvbW9ieSM0OTUxNF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5NTE0KQotICAgY29udGFpbmVyZCBpbWFnZSBzdG9yZTogRml4IGBkb2NrZXIgaW5zcGVjdGAgbm90IGJlaW5nIGFibGUgdG8gc2hvdyBtdWx0aS1wbGF0Zm9ybSBpbWFnZXMgd2l0aCBtaXNzaW5nIGxheWVycyBmb3IgYWxsIHBsYXRmb3Jtcy4gW21vYnkvbW9ieSM0OTUzM10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5NTMzKQotICAgY29udGFpbmVyZCBpbWFnZSBzdG9yZTogRml4IGBkb2NrZXIgaW1hZ2VzIC0tdHJlZWAgcmVwb3J0aW5nIHdyb25nIGNvbnRlbnQgc2l6ZS4gW21vYnkvbW9ieSM0OTUzNV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5NTM1KQotICAgRml4IGNvbXBpbGF0aW9uIG9uIGkzODYgW21vYnkvbW9ieSM0OTUyNl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5NTI2KQoKIyMjIyBQYWNrYWdpbmcgdXBkYXRlcwoKLSAgIFVwZGF0ZSBgZ2l0aHViLmNvbS9nby1qb3NlL2dvLWpvc2UvdjRgIHRvIHY0LjAuNSB0byBhZGRyZXNzLiBbR0hTQS1jNmd3LXczOTgtaHY3OF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dvLWpvc2UvZ28tam9zZS9zZWN1cml0eS9hZHZpc29yaWVzL0dIU0EtYzZndy13Mzk4LWh2NzgpIC8gW0NWRS0yMDI1LTI3MTQ0XShodHRwczovL3d3dy5jdmUub3JnL0NWRVJlY29yZD9pZD1DVkUtMjAyNS0yNzE0NCkgW2RvY2tlci9jbGkjNTg2N10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RvY2tlci9jbGkvcHVsbC81ODY3KQotICAgVXBkYXRlIEJ1aWxkeCB0byBbdjAuMjEuMV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RvY2tlci9idWlsZHgvcmVsZWFzZXMvdGFnL3YwLjIxLjEpLiBbZG9ja2VyL2RvY2tlci1jZS1wYWNrYWdpbmcjMTE2N10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RvY2tlci9kb2NrZXItY2UtcGFja2FnaW5nL3B1bGwvMTE2NykKLSAgIFVwZGF0ZSBDb21wb3NlIHRvIFt2Mi4zMy4xXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZG9ja2VyL2NvbXBvc2UvcmVsZWFzZXMvdGFnL3YyLjMzLjEpLiBbZG9ja2VyL2RvY2tlci1jZS1wYWNrYWdpbmcjMTE2OF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RvY2tlci9kb2NrZXItY2UtcGFja2FnaW5nL3B1bGwvMTE2OCkKCiMjIyMgQVBJCgotICAgY29udGFpbmVyZCBpbWFnZSBzdG9yZTogRml4IGBHRVQgL2ltYWdlcy9qc29uP21hbmlmZXN0cz0xYCBub3QgZmlsbGluZyBgTWFuaWZlc3RzYCBmb3IgaW5kZXgtb25seSBpbWFnZXMuIFttb2J5L21vYnkjNDk1MzNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTUzMykKLSAgIGNvbnRhaW5lcmQgaW1hZ2Ugc3RvcmU6IEZpeCBgR0VUIC9pbWFnZXMvanNvbiBhbmQgL2ltYWdlcy88bmFtZT4vanNvbmAgYFNpemUuQ29udGVudGAgZmllbGQgaW5jbHVkaW5nIHRoZSBzaXplIG9mIGNvbnRlbnQgdGhhdCdzIG5vdCBhdmFpbGFibGUgbG9jYWxseS4gW21vYnkvbW9ieSM0OTUzNV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5NTM1KQoKIyMjIFtgdjI4LjAuMGBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcmVsZWFzZXMvdGFnL3YyOC4wLjApCgpbQ29tcGFyZSBTb3VyY2VdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvY29tcGFyZS92MjcuNS4xLi4udjI4LjAuMCkKCiMjIyAyOC4wLjAKCkZvciBhIGZ1bGwgbGlzdCBvZiBwdWxsIHJlcXVlc3RzIGFuZCBjaGFuZ2VzIGluIHRoaXMgcmVsZWFzZSwgcmVmZXIgdG8gdGhlIHJlbGV2YW50IEdpdEh1YiBtaWxlc3RvbmVzOgoKLSAgIFtkb2NrZXIvY2xpLCAyOC4wLjAgbWlsZXN0b25lXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZG9ja2VyL2NsaS9pc3N1ZXM/cT1pcyUzQWNsb3NlZCttaWxlc3RvbmUlM0EyOC4wLjApCi0gICBbbW9ieS9tb2J5LCAyOC4wLjAgbWlsZXN0b25lXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L2lzc3Vlcz9xPWlzJTNBY2xvc2VkK21pbGVzdG9uZSUzQTI4LjAuMCkKLSAgIERlcHJlY2F0ZWQgYW5kIHJlbW92ZWQgZmVhdHVyZXMsIHNlZSBbRGVwcmVjYXRlZCBGZWF0dXJlc10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RvY2tlci9jbGkvYmxvYi92MjguMC4wL2RvY3MvZGVwcmVjYXRlZC5tZCkuCi0gICBDaGFuZ2VzIHRvIHRoZSBFbmdpbmUgQVBJLCBzZWUgW0FQSSB2ZXJzaW9uIGhpc3RvcnldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvYmxvYi92MjguMC4wL2RvY3MvYXBpL3ZlcnNpb24taGlzdG9yeS5tZCkuCgojIyMjIE5ldwoKLSAgIEFkZCBhYmlsaXR5IHRvIG1vdW50IGFuIGltYWdlIGluc2lkZSBhIGNvbnRhaW5lciB2aWEgYC0tbW91bnQgdHlwZT1pbWFnZWAuIFttb2J5L21vYnkjNDg3OThdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80ODc5OCkKICAgIC0gICBZb3UgY2FuIGFsc28gc3BlY2lmeSBgLS1tb3VudCB0eXBlPWltYWdlLGltYWdlLXN1YnBhdGg9W3N1YnBhdGhdLC4uLmAgb3B0aW9uIHRvIG1vdW50IGEgc3BlY2lmaWMgcGF0aCBmcm9tIHRoZSBpbWFnZS4gW2RvY2tlci9jbGkjNTc1NV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RvY2tlci9jbGkvcHVsbC81NzU1KQotICAgYGRvY2tlciBpbWFnZXMgLS10cmVlYCBub3cgc2hvd3MgbWV0YWRhdGEgYmFkZ2VzLiBbZG9ja2VyL2NsaSM1NzQ0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZG9ja2VyL2NsaS9wdWxsLzU3NDQpCi0gICBgZG9ja2VyIGxvYWRgLCBgZG9ja2VyIHNhdmVgLCBhbmQgYGRvY2tlciBoaXN0b3J5YCBub3cgc3VwcG9ydCBhIGAtLXBsYXRmb3JtYCBmbGFnIGFsbG93aW5nIHlvdSB0byBjaG9vc2UgYSBzcGVjaWZpYyBwbGF0Zm9ybSBmb3Igc2luZ2xlLXBsYXRmb3JtIG9wZXJhdGlvbnMgb24gbXVsdGktcGxhdGZvcm0gaW1hZ2VzLiBbZG9ja2VyL2NsaSM1MzMxXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZG9ja2VyL2NsaS9wdWxsLzUzMzEpCi0gICBBZGQgYE9PTVNjb3JlQWRqYCB0byBgZG9ja2VyIHNlcnZpY2UgY3JlYXRlYCBhbmQgYGRvY2tlciBzdGFja2AuIFtkb2NrZXIvY2xpIzUxNDVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kb2NrZXIvY2xpL3B1bGwvNTE0NSkKLSAgIGBkb2NrZXIgYnVpbGR4IHBydW5lYCBub3cgc3VwcG9ydHMgYHJlc2VydmVkLXNwYWNlYCwgYG1heC11c2VkLXNwYWNlYCwgYG1pbi1mcmVlLXNwYWNlYCBhbmQgYGtlZXAtYnl0ZXNgIGZpbHRlcnMuIFttb2J5L21vYnkjNDg3MjBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80ODcyMCkKLSAgIFdpbmRvd3M6IEFkZCBzdXBwb3J0IGZvciBydW5uaW5nIGNvbnRhaW5lcmQgYXMgYSBjaGlsZCBwcm9jZXNzIG9mIHRoZSBkYWVtb24sIGluc3RlYWQgb2YgdXNpbmcgYSBzeXN0ZW0taW5zdGFsbGVkIGNvbnRhaW5lcmQuIFttb2J5L21vYnkjNDc5NTVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80Nzk1NSkKCiMjIyMgTmV0d29ya2luZwoKLSAgIFRoZSBgZG9ja2VyLXByb3h5YCBiaW5hcnkgaGFzIGJlZW4gdXBkYXRlZCwgb2xkZXIgdmVyc2lvbnMgd2lsbCBub3Qgd29yayB3aXRoIHRoZSB1cGRhdGVkIGBkb2NrZXJkYC4gW21vYnkvbW9ieSM0ODEzMl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4MTMyKQogICAgLSAgIENsb3NlIGEgd2luZG93IGluIHdoaWNoIHRoZSB1c2VybGFuZCBwcm94eSAoYGRvY2tlci1wcm94eWApIGNvdWxkIGFjY2VwdCBUQ1AgY29ubmVjdGlvbnMsIHRoYXQgd291bGQgdGhlbiBmYWlsIGFmdGVyIGBpcHRhYmxlc2AgTkFUIHJ1bGVzIHdlcmUgc2V0IHVwLgogICAgLSAgIFRoZSBleGVjdXRhYmxlIGByb290bGVzc2tpdC1kb2NrZXItcHJveHlgIGlzIG5vIGxvbmdlciB1c2VkLCBpdCBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIGJ1aWxkIGFuZCBkaXN0cmlidXRpb24uCi0gICBETlMgbmFtZXNlcnZlcnMgcmVhZCBmcm9tIHRoZSBob3N0J3MgYC9ldGMvcmVzb2x2LmNvbmZgIGFyZSBub3cgYWx3YXlzIGFjY2Vzc2VkIGZyb20gdGhlIGhvc3QncyBuZXR3b3JrIG5hbWVzcGFjZS4gW21vYnkvbW9ieSM0ODI5MF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4MjkwKQogICAgLSAgIFdoZW4gdGhlIGhvc3QncyBgL2V0Yy9yZXNvbHYuY29uZmAgY29udGFpbnMgbm8gbmFtZXNlcnZlcnMgYW5kIHRoZXJlIGFyZSBubyBgLS1kbnNgIG92ZXJyaWRlcywgR29vZ2xlJ3MgRE5TIHNlcnZlcnMgYXJlIG5vIGxvbmdlciB1c2VkLCBhcGFydCBmcm9tIGJ5IHRoZSBkZWZhdWx0IGJyaWRnZSBuZXR3b3JrIGFuZCBpbiBidWlsZCBjb250YWluZXJzLgotICAgQ29udGFpbmVyIGludGVyZmFjZXMgaW4gYnJpZGdlIGFuZCBtYWN2bGFuIG5ldHdvcmtzIG5vdyB1c2UgcmFuZG9tbHkgZ2VuZXJhdGVkIE1BQyBhZGRyZXNzZXMuIFttb2J5L21vYnkjNDg4MDhdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80ODgwOCkKICAgIC0gICBHcmF0dWl0b3VzIEFSUCAvIE5laWdoYm91ciBBZHZlcnRpc2VtZW50IG1lc3NhZ2VzIHdpbGwgYmUgc2VudCB3aGVuIHRoZSBpbnRlcmZhY2VzIGFyZSBzdGFydGVkIHNvIHRoYXQsIHdoZW4gSVAgYWRkcmVzc2VzIGFyZSByZXVzZWQsIHRoZXkncmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBuZXdseSBnZW5lcmF0ZWQgTUFDIGFkZHJlc3MuCiAgICAtICAgSVB2NiBhZGRyZXNzZXMgaW4gdGhlIGRlZmF1bHQgYnJpZGdlIG5ldHdvcmsgYXJlIG5vdyBJUEFNLWFzc2lnbmVkLCByYXRoZXIgdGhhbiBiZWluZyBkZXJpdmVkIGZyb20gdGhlIE1BQyBhZGRyZXNzLgotICAgVGhlIGRlcHJlY2F0ZWQgT0NJIGBwcmVzdGFydGAgaG9vayBpcyBub3cgb25seSB1c2VkIGJ5IGJ1aWxkIGNvbnRhaW5lcnMuIEZvciBvdGhlciBjb250YWluZXJzLCBuZXR3b3JrIGludGVyZmFjZXMgYXJlIGFkZGVkIHRvIHRoZSBuZXR3b3JrIG5hbWVzcGFjZSBhZnRlciB0YXNrIGNyZWF0aW9uIGlzIGNvbXBsZXRlLCBiZWZvcmUgdGhlIGNvbnRhaW5lciB0YXNrIGlzIHN0YXJ0ZWQuIFttb2J5L21vYnkjNDc0MDZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80NzQwNikKLSAgIEFkZCBhIG5ldyBgZ3ctcHJpb3JpdHlgIG9wdGlvbiB0byBgZG9ja2VyIHJ1bmAsIGBkb2NrZXIgY29udGFpbmVyIGNyZWF0ZWAsIGFuZCBgZG9ja2VyIG5ldHdvcmsgY29ubmVjdGAuIFRoaXMgb3B0aW9uIHdpbGwgYmUgdXNlZCBieSB0aGUgRW5naW5lIHRvIGRldGVybWluZSB3aGljaCBuZXR3b3JrIHByb3ZpZGVzIHRoZSBkZWZhdWx0IGdhdGV3YXkgZm9yIGEgY29udGFpbmVyLiBPbiBgZG9ja2VyIHJ1bmAsIHRoaXMgb3B0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIHRocm91Z2ggdGhlIGV4dGVuZGVkIGAtLW5ldHdvcmtgIHN5bnRheC4gW2RvY2tlci9jbGkjNTY2NF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RvY2tlci9jbGkvcHVsbC81NjY0KQotICAgQWRkIGEgbmV3IG5ldGxhYmVsIGBjb20uZG9ja2VyLm5ldHdvcmsuZW5kcG9pbnQuaWZuYW1lYCB0byBjdXN0b21pemUgdGhlIGludGVyZmFjZSBuYW1lIHVzZWQgd2hlbiBjb25uZWN0aW5nIGEgY29udGFpbmVyIHRvIGEgbmV0d29yay4gSXQncyBzdXBwb3J0ZWQgYnkgYWxsIGJ1aWx0LWluIG5ldHdvcmsgZHJpdmVycyBvbiBMaW51eC4gW21vYnkvbW9ieSM0OTE1NV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5MTU1KQogICAgLSAgIFdoZW4gYSBjb250YWluZXIgaXMgY3JlYXRlZCB3aXRoIG11bHRpcGxlIG5ldHdvcmtzIHNwZWNpZmllZCwgdGhlcmUncyBubyBndWFyYW50ZWUgb24gdGhlIG9yZGVyIG5ldHdvcmtzIHdpbGwgYmUgY29ubmVjdGVkIHRvIHRoZSBjb250YWluZXIuIFNvLCBpZiBhIGN1c3RvbSBpbnRlcmZhY2UgbmFtZSB1c2VzIHRoZSBzYW1lIHByZWZpeCBhcyB0aGUgYXV0by1nZW5lcmF0ZWQgbmFtZXMsIGZvciBleGFtcGxlIGBldGhgLCB0aGUgY29udGFpbmVyIG1pZ2h0IGZhaWwgdG8gc3RhcnQuCiAgICAtICAgVGhlIHJlY29tbWVuZGVkIHByYWN0aWNlIGlzIHRvIHVzZSBhIGRpZmZlcmVudCBwcmVmaXgsIGZvciBleGFtcGxlIGBlbjBgLCBvciBhIG51bWVyaWNhbCBzdWZmaXggaGlnaCBlbm91Z2ggdG8gbmV2ZXIgY29sbGlkZSwgZm9yIGV4YW1wbGUgYGV0aDEwMGAuCiAgICAtICAgVGhpcyBsYWJlbCBjYW4gYmUgc3BlY2lmaWVkIG9uIGBkb2NrZXIgbmV0d29yayBjb25uZWN0YCB2aWEgdGhlIGAtLWRyaXZlci1vcHRgIGZsYWcsIGZvciBleGFtcGxlIGBkb2NrZXIgbmV0d29yayBjb25uZWN0IC0tZHJpdmVyLW9wdD1jb20uZG9ja2VyLm5ldHdvcmsuZW5kcG9pbnQuaWZuYW1lPWZvb2JhciDigKZgLgogICAgLSAgIE9yIHZpYSB0aGUgbG9uZy1mb3JtIGAtLW5ldHdvcmtgIGZsYWcgb24gYGRvY2tlciBydW5gLCBmb3IgZXhhbXBsZSBgZG9ja2VyIHJ1biAtLW5ldHdvcms9bmFtZT1icmlkZ2UsZHJpdmVyLW9wdD1jb20uZG9ja2VyLm5ldHdvcmsuZW5kcG9pbnQuaWZuYW1lPWZvb2JhciDigKZgCi0gICBJZiBhIGN1c3RvbSBuZXR3b3JrIGRyaXZlciByZXBvcnRzIGNhcGFiaWxpdHkgYEd3QWxsb2NDaGVja2VyYCB0aGVuLCBiZWZvcmUgYSBuZXR3b3JrIGlzIGNyZWF0ZWQsIGl0IHdpbGwgZ2V0IGEgYEd3QWxsb2NDaGVja2VyUmVxdWVzdGAgd2l0aCB0aGUgbmV0d29yaydzIG9wdGlvbnMuIFRoZSBjdXN0b20gZHJpdmVyIG1heSB0aGVuIHJlcGx5IHRoYXQgbm8gZ2F0ZXdheSBJUCBhZGRyZXNzIHNob3VsZCBiZSBhbGxvY2F0ZWQuIFttb2J5L21vYnkjNDkzNzJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTM3MikKCiMjIyMgUG9ydCBwdWJsaXNoaW5nIGluIGJyaWRnZSBuZXR3b3JrcwoKLSAgIGBkb2NrZXJkYCBub3cgcmVxdWlyZXMgYGlwc2V0YCBzdXBwb3J0IGluIHRoZSBMaW51eCBrZXJuZWwuIFttb2J5L21vYnkjNDg1OTZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80ODU5NikKICAgIC0gICBUaGUgYGlwdGFibGVzYCBhbmQgYGlwNnRhYmxlc2AgcnVsZXMgdXNlZCB0byBpbXBsZW1lbnQgcG9ydCBwdWJsaXNoaW5nIGFuZCBuZXR3b3JrIGlzb2xhdGlvbiBoYXZlIGJlZW4gZXh0ZW5zaXZlbHkgbW9kaWZpZWQuIFRoaXMgZW5hYmxlcyBzb21lIG9mIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25hbCBjaGFuZ2VzLCBhbmQgaXMgYSBmaXJzdCBzdGVwIGluIHJlZmFjdG9yaW5nIHRvIGVuYWJsZSBuYXRpdmUgYG5mdGFibGVzYCBzdXBwb3J0IGluIGEgZnV0dXJlIHJlbGVhc2UuIFttb2J5L21vYnkjNDg4MTVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvaXNzdWVzLzQ4ODE1KQogICAgLSAgIElmIGl0IGJlY29tZXMgbmVjZXNzYXJ5IHRvIGRvd25ncmFkZSB0byBhbiBlYXJsaWVyIHZlcnNpb24gb2YgdGhlIGRhZW1vbiwgc29tZSBtYW51YWwgY2xlYW51cCBvZiB0aGUgbmV3IHJ1bGVzIHdpbGwgYmUgbmVjZXNzYXJ5LiBUaGUgc2ltcGxlc3QgYW5kIHN1cmVzdCBhcHByb2FjaCBpcyB0byByZWJvb3QgdGhlIGhvc3QsIG9yIHVzZSBgaXB0YWJsZXMgLUZgIGFuZCBgaXA2dGFibGVzIC1GYCB0byBmbHVzaCBhbGwgZXhpc3RpbmcgYGlwdGFibGVzYCBydWxlcyBmcm9tIHRoZSBgZmlsdGVyYCB0YWJsZSBiZWZvcmUgc3RhcnRpbmcgdGhlIG9sZGVyIHZlcnNpb24gb2YgdGhlIGRhZW1vbi4gV2hlbiB0aGF0IGlzIG5vdCBwb3NzaWJsZSwgcnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZHMgYXMgcm9vdDoKICAgICAgICAtICAgYGlwdGFibGVzIC1EIEZPUldBUkQgLW0gc2V0IC0tbWF0Y2gtc2V0IGRvY2tlci1leHQtYnJpZGdlcy12NCBkc3QgLW0gY29ubnRyYWNrIC0tY3RzdGF0ZSBSRUxBVEVELEVTVEFCTElTSEVEIC1qIEFDQ0VQVDsgaXA2dGFibGVzIC1EIEZPUldBUkQgLW0gc2V0IC0tbWF0Y2gtc2V0IGRvY2tlci1leHQtYnJpZGdlcy12NiBkc3QgLW0gY29ubnRyYWNrIC0tY3RzdGF0ZSBSRUxBVEVELEVTVEFCTElTSEVEIC1qIEFDQ0VQVGAKICAgICAgICAtICAgYGlwdGFibGVzIC1EIEZPUldBUkQgLW0gc2V0IC0tbWF0Y2gtc2V0IGRvY2tlci1leHQtYnJpZGdlcy12NCBkc3QgLWogRE9DS0VSOyBpcDZ0YWJsZXMgLUQgRk9SV0FSRCAtbSBzZXQgLS1tYXRjaC1zZXQgZG9ja2VyLWV4dC1icmlkZ2VzLXY2IGRzdCAtaiBET0NLRVJgCiAgICAgICAgLSAgIElmIHlvdSB3ZXJlIHByZXZpb3VzbHkgcnVubmluZyB3aXRoIHRoZSBpcHRhYmxlcyBmaWx0ZXItRk9SV0FSRCBwb2xpY3kgc2V0IHRvIGBBQ0NFUFRgIGFuZCBuZWVkIHRvIHJlc3RvcmUgYWNjZXNzIHRvIHVucHVibGlzaGVkIHBvcnRzLCBhbHNvIGRlbGV0ZSBwZXItYnJpZGdlLW5ldHdvcmsgcnVsZXMgZnJvbSB0aGUgYERPQ0tFUmAgY2hhaW5zLiBGb3IgZXhhbXBsZSwgYGlwdGFibGVzIC1EIERPQ0tFUiAhIC1pIGRvY2tlcjAgLW8gZG9ja2VyMCAtaiBEUk9QYC4KLSAgIEZpeCBhIHNlY3VyaXR5IGlzc3VlIHRoYXQgd2FzIGFsbG93aW5nIHJlbW90ZSBob3N0cyB0byBjb25uZWN0IGRpcmVjdGx5IHRvIGEgY29udGFpbmVyIG9uIGl0cyBwdWJsaXNoZWQgcG9ydHMuIFttb2J5L21vYnkjNDkzMjVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTMyNSkKLSAgIEZpeCBhIHNlY3VyaXR5IGlzc3VlIHRoYXQgd2FzIGFsbG93aW5nIG5laWdoYm9yIGhvc3RzIHRvIGNvbm5lY3QgdG8gcG9ydHMgbWFwcGVkIG9uIGEgbG9vcGJhY2sgYWRkcmVzcy4gW21vYnkvbW9ieSM0OTMyNV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5MzI1KQotICAgRml4IGFuIGlzc3VlIHRoYXQgcHJldmVudGVkIHBvcnQgcHVibGlzaGluZyB0byBsaW5rLWxvY2FsIGFkZHJlc3Nlcy4gW21vYnkvbW9ieSM0ODU3MF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4NTcwKQotICAgVURQIHBvcnRzIHB1Ymxpc2hlZCBieSBhIGNvbnRhaW5lciBhcmUgbm93IHJlbGlhYmx5IGFjY2Vzc2libGUgYnkgY29udGFpbmVycyBvbiBvdGhlciBuZXR3b3JrcywgdmlhIHRoZSBob3N0J3MgcHVibGljIElQIGFkZHJlc3MuIFttb2J5L21vYnkjNDg1NzFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80ODU3MSkKLSAgIERvY2tlciB3aWxsIG5vdyBvbmx5IHNldCB0aGUgYGlwNnRhYmxlc2AgcG9saWN5IGZvciB0aGUgYEZPUldBUkRgIGNoYWluIGluIHRoZSBgZmlsdGVyYCB0YWJsZSB0byBgRFJPUGAgaWYgaXQgZW5hYmxlcyBJUCBmb3J3YXJkaW5nIG9uIHRoZSBob3N0IGl0c2VsZiAoc3lzY3RscyBgbmV0LmlwdjYuY29uZi5hbGwuZm9yd2FyZGluZ2AgYW5kIGBuZXQuaXB2Ni5jb25mLmRlZmF1bHQuZm9yd2FyZGluZ2ApLiBUaGlzIGlzIG5vdyBhbGlnbmVkIHdpdGggZXhpc3RpbmcgSVB2NCBiZWhhdmlvdXIuIFttb2J5L21vYnkjNDg1OTRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80ODU5NCkKICAgIC0gICBJZiBJUHY2IGZvcndhcmRpbmcgaXMgZW5hYmxlZCBvbiB5b3VyIGhvc3QsIGJ1dCB5b3Ugd2VyZSBkZXBlbmRpbmcgb24gRG9ja2VyIHRvIHNldCB0aGUgaXA2dGFibGVzIGZpbHRlci1GT1JXQVJEIHBvbGljeSB0byBgRFJPUGAsIHlvdSBtYXkgbmVlZCB0byB1cGRhdGUgeW91ciBob3N0J3MgY29uZmlndXJhdGlvbiB0byBtYWtlIHN1cmUgaXQgaXMgc2VjdXJlLgotICAgRGlyZWN0IHJvdXRlZCBhY2Nlc3MgdG8gY29udGFpbmVyIHBvcnRzIHRoYXQgYXJlIG5vdCBleHBvc2VkIHVzaW5nIGBwYC9gLXB1Ymxpc2hgIGlzIG5vdyBibG9ja2VkIGluIHRoZSBgRE9DS0VSYCBpcHRhYmxlcyBjaGFpbi4gW21vYnkvbW9ieSM0ODcyNF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4NzI0KQogICAgLSAgIElmIHRoZSBkZWZhdWx0IGlwdGFibGVzIGZpbHRlci1GT1JXQVJEIHBvbGljeSB3YXMgcHJldmlvdXNseSBsZWZ0IGF0IGBBQ0NFUFRgIG9uIHlvdXIgaG9zdCwgYW5kIGRpcmVjdCByb3V0ZWQgYWNjZXNzIHRvIGEgY29udGFpbmVyJ3MgdW5wdWJsaXNoZWQgcG9ydHMgZnJvbSBhIHJlbW90ZSBob3N0IGlzIHN0aWxsIHJlcXVpcmVkLCBvcHRpb25zIGFyZToKICAgICAgICAtICAgUHVibGlzaCB0aGUgcG9ydHMgeW91IG5lZWQuCiAgICAgICAgLSAgIFVzZSB0aGUgbmV3IGBnYXRld2F5X21vZGVfaXB2WzQ2XT1uYXQtdW5wcm90ZWN0ZWRgLCBkZXNjcmliZWQgYmVsb3cuCiAgICAtICAgQ29udGFpbmVyIHBvcnRzIHB1Ymxpc2hlZCB0byBob3N0IGFkZHJlc3NlcyB3aWxsIGNvbnRpbnVlIHRvIGJlIGFjY2Vzc2libGUgdmlhIHRob3NlIGhvc3QgYWRkcmVzc2VzLCB1c2luZyBOQVQgb3IgdGhlIHVzZXJsYW5kIHByb3h5LgogICAgLSAgIFVucHVibGlzaGVkIGNvbnRhaW5lciBwb3J0cyBjb250aW51ZSB0byBiZSBkaXJlY3RseSBhY2Nlc3NpYmxlIGZyb20gdGhlIERvY2tlciBob3N0IHZpYSB0aGUgY29udGFpbmVyJ3MgSVAgYWRkcmVzcy4KLSAgIE5ldHdvcmtzIGNyZWF0ZWQgd2l0aCBgZ2F0ZXdheV9tb2RlX2lwdls0Nl09cm91dGVkYCBhcmUgbm93IGFjY2Vzc2libGUgZnJvbSBvdGhlciBicmlkZ2UgbmV0d29ya3MgcnVubmluZyBvbiB0aGUgc2FtZSBEb2NrZXIgaG9zdCwgYXMgd2VsbCBhcyBmcm9tIG91dHNpZGUgdGhlIGhvc3QuIFttb2J5L21vYnkjNDg1OTZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80ODU5NikKLSAgIEJyaWRnZSBkcml2ZXIgb3B0aW9ucyBgY29tLmRvY2tlci5uZXR3b3JrLmJyaWRnZS5nYXRld2F5X21vZGVfaXB2NGAgYW5kIGBjb20uZG9ja2VyLm5ldHdvcmsuYnJpZGdlLmdhdGV3YXlfbW9kZV9pcHY2YCBub3cgYWNjZXB0IG1vZGUgYG5hdC11bnByb3RlY3RlZGAuIFttb2J5L21vYnkjNDg1OTddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80ODU5NykKICAgIC0gICBgbmF0LXVucHJvdGVjdGVkYCBpcyBzaW1pbGFyIHRvIHRoZSBkZWZhdWx0IGBuYXRgIG1vZGUsIGJ1dCBubyBwZXIgcG9ydC9wcm90b2NvbCBydWxlcyBhcmUgc2V0IHVwLiBUaGlzIG1lYW5zIGFueSBwb3J0IG9uIGEgY29udGFpbmVyIGNhbiBiZSBhY2Nlc3NlZCBieSBkaXJlY3Qtcm91dGluZyBmcm9tIGEgcmVtb3RlIGhvc3QuCi0gICBCcmlkZ2UgZHJpdmVyIG9wdGlvbnMgYGNvbS5kb2NrZXIubmV0d29yay5icmlkZ2UuZ2F0ZXdheV9tb2RlX2lwdjRgIGFuZCBgY29tLmRvY2tlci5uZXR3b3JrLmJyaWRnZS5nYXRld2F5X21vZGVfaXB2NmAgbm93IGFjY2VwdCBtb2RlIGBpc29sYXRlZGAsIHdoZW4gdGhlIG5ldHdvcmsgaXMgYWxzbyBgaW50ZXJuYWxgLiBbbW9ieS9tb2J5IzQ5MjYyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDkyNjIpCiAgICAtICAgQW4gYWRkcmVzcyBpcyBub3JtYWxseSBhc3NpZ25lZCB0byB0aGUgYnJpZGdlIGRldmljZSBpbiBhbiBgaW50ZXJuYWxgIG5ldHdvcmsuIFNvLCBwcm9jZXNzZXMgb24gdGhlIERvY2tlciBob3N0IGNhbiBhY2Nlc3MgdGhlIG5ldHdvcmssIGFuZCBjb250YWluZXJzIGluIHRoZSBuZXR3b3JrIGNhbiBhY2Nlc3MgaG9zdCBzZXJ2aWNlcyBsaXN0ZW5pbmcgb24gdGhhdCBicmlkZ2UgYWRkcmVzcyAoaW5jbHVkaW5nIHNlcnZpY2VzIGxpc3RlbmluZyBvbiAiYW55IiBob3N0IGFkZHJlc3MsIGAwLjAuMC4wYCBvciBgOjpgKS4KICAgIC0gICBBbiBgaW50ZXJuYWxgIGJyaWRnZSBuZXR3b3JrIGNyZWF0ZWQgd2l0aCBnYXRld2F5IG1vZGUgYGlzb2xhdGVkYCBkb2VzIG5vdCBoYXZlIGFuIGFkZHJlc3Mgb24gdGhlIERvY2tlciBob3N0LgotICAgV2hlbiBhIHBvcnQgbWFwcGluZyBpbmNsdWRlcyBhIGhvc3QgSVAgYWRkcmVzcyBvciBwb3J0IG51bWJlciB0aGF0IGNhbm5vdCBiZSB1c2VkIGJlY2F1c2UgTkFUIGZyb20gdGhlIGhvc3QgaXMgZGlzYWJsZWQgdXNpbmcgYC0tZ2F0ZXdheV9tb2RlX2lwdls0Nl1gLCBjb250YWluZXIgY3JlYXRpb24gd2lsbCBubyBsb25nZXIgZmFpbC4gVGhlIHVudXNlZCBmaWVsZHMgbWF5IGJlIG5lZWRlZCBpZiB0aGUgZ2F0ZXdheSBlbmRwb2ludCBjaGFuZ2VzIHdoZW4gbmV0d29ya3MgYXJlIGNvbm5lY3RlZCBvciBkaXNjb25uZWN0ZWQuIEEgbWVzc2FnZSBhYm91dCB0aGUgdW51c2VkIGZpZWxkcyB3aWxsIGJlIGxvZ2dlZC4gW21vYnkvbW9ieSM0ODU3NV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4NTc1KQotICAgRG8gbm90IGNyZWF0ZSBpcHRhYmxlcyBuYXQtUE9TVFJPVVRJTkcgbWFzcXVlcmFkZSBydWxlcyBmb3IgYSBjb250YWluZXIncyBvd24gcHVibGlzaGVkIHBvcnRzLCB3aGVuIHRoZSB1c2VybGFuZCBwcm94eSBpcyBlbmFibGVkLiBbbW9ieS9tb2J5IzQ4ODU0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDg4NTQpCgojIyMjIElQdjYKCi0gICBBZGQgYGRvY2tlciBuZXR3b3JrIGNyZWF0ZWAgb3B0aW9uIGAtLWlwdjRgLiBUbyBkaXNhYmxlIElQdjQgYWRkcmVzcyBhc3NpZ25tZW50IGZvciBhIG5ldHdvcmssIHVzZSBgZG9ja2VyIG5ldHdvcmsgY3JlYXRlIC0taXB2ND1mYWxzZSBbLi4uXWAuIFtkb2NrZXIvY2xpIzU1OTldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kb2NrZXIvY2xpL3B1bGwvNTU5OSkKLSAgIERhZW1vbiBvcHRpb24gYC0taXB2NmAgKGAiaXB2NiI6IHRydWVgIGluIGBkYWVtb24uanNvbmApIGNhbiBub3cgYmUgdXNlZCB3aXRob3V0IGBmaXhlZC1jaWRyLXY2YC4gW21vYnkvbW9ieSM0ODMxOV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4MzE5KQotICAgSVBBTSBub3cgaGFuZGxlcyBzdWJuZXRzIGJpZ2dlciB0aGFuICIvNjQiLiBbbW9ieS9tb2J5IzQ5MjIzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDkyMjMpCi0gICBEdXBsaWNhdGUgYWRkcmVzcyBkZXRlY3Rpb24gKERBRCkgaXMgbm93IGRpc2FibGVkIGZvciBhZGRyZXNzZXMgYXNzaWduZWQgdG8gdGhlIGJyaWRnZXMgYmVsb25naW5nIHRvIGJyaWRnZSBuZXR3b3Jrcy4gW21vYnkvbW9ieSM0ODYwOV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4NjA5KQotICAgTW9kaWZpY2F0aW9ucyB0byBgaG9zdC1nYXRld2F5YCwgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBJUHY2LW9ubHkgbmV0d29ya3MuIFttb2J5L21vYnkjNDg4MDddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80ODgwNykKICAgIC0gICBXaGVuIHNwZWNpYWwgdmFsdWUgYGhvc3QtZ2F0ZXdheWAgaXMgdXNlZCBpbiBhbiBgLS1hZGQtaG9zdGAgb3B0aW9uIGluIHBsYWNlIG9mIGFuIGFkZHJlc3MsIGl0J3MgcmVwbGFjZWQgYnkgYW4gYWRkcmVzcyBvbiB0aGUgRG9ja2VyIGhvc3QgdG8gbWFrZSBpdCBwb3NzaWJsZSB0byByZWZlciB0byB0aGUgaG9zdCBieSBuYW1lLiBUaGUgYWRkcmVzcyB1c2VkIGJlbG9uZ3MgdG8gdGhlIGRlZmF1bHQgYnJpZGdlIChub3JtYWxseSBgZG9ja2VyMGApLiBVbnRpbCBub3cgaXQncyBhbHdheXMgYmVlbiBhbiBJUHY0IGFkZHJlc3MsIGJlY2F1c2UgYWxsIGNvbnRhaW5lcnMgb24gYnJpZGdlIG5ldHdvcmtzIGhhZCBJUHY0IGFkZHJlc3Nlcy4KICAgIC0gICBOb3csIGlmIElQdjYgaXMgZW5hYmxlZCBvbiB0aGUgZGVmYXVsdCBicmlkZ2UgbmV0d29yaywgYC9ldGMvaG9zdHNgIGVudHJpZXMgd2lsbCBiZSBjcmVhdGVkIGZvciBJUHY0IGFuZCBJUHY2IGFkZHJlc3Nlcy4gU28sIGEgY29udGFpbmVyIHRoYXQncyBvbmx5IGNvbm5lY3RlZCB0byBJUHY2LW9ubHkgbmV0d29ya3MgY2FuIGFjY2VzcyB0aGUgaG9zdCBieSBuYW1lLgogICAgLSAgIFRoZSBgLS1ob3N0LWdhdGV3YXktaXBgIG9wdGlvbiBvdmVycmlkZXMgdGhlIGFkZHJlc3MgdXNlZCB0byByZXBsYWNlIGBob3N0LWdhdGV3YXlgLiBUd28gb2YgdGhlc2Ugb3B0aW9ucyBhcmUgbm93IGFsbG93ZWQgb24gdGhlIGNvbW1hbmQgbGluZSwgZm9yIG9uZSBJUHY0IGdhdGV3YXkgYW5kIG9uZSBJUHY2LgogICAgLSAgIEluIHRoZSBgZGFlbW9uLmpzb25gIGZpbGUsIHRvIHByb3ZpZGUgdHdvIGFkZHJlc3NlcywgdXNlIGAiaG9zdC1nYXRld2F5LWlwcyJgLiBGb3IgZXhhbXBsZSwgYCJob3N0LWdhdGV3YXktaXBzIjogWyIxOTIuMC4yLjEiLCAiMjAwMTpkYjg6OjExMTEiXWAuCgojIyMjIEJ1ZyBmaXhlcyBhbmQgZW5oYW5jZW1lbnRzCgotICAgQWRkIElQdjYgbG9vcGJhY2sgYWRkcmVzcyBhcyBhbiBpbnNlY3VyZSByZWdpc3RyeSBieSBkZWZhdWx0LiBbbW9ieS9tb2J5IzQ4NTQwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDg1NDApCi0gICBBZGQgc3VwcG9ydCBmb3IgQ29icmEtZ2VuZXJhdGVkIGNvbXBsZXRpb24gc2NyaXB0cyBmb3IgYGRvY2tlcmRgLiBbbW9ieS9tb2J5IzQ5MzM5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDkzMzkpCi0gICBGaXggRE5TIHF1ZXJpZXMgZmFpbGluZyB3aGVuIGNvbnRhaW5lcnMgYXJlIGxhdW5jaGVkIHZpYSBgc3lzdGVtZGAgYXV0by1zdGFydCBvbiBib290IFttb2J5L21vYnkjNDg4MTJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80ODgxMikKLSAgIEZpeCBEb2NrZXIgU3dhcm0gbW9kZSBpZ25vcmluZyBgdm9sdW1lLnN1YnBhdGhgIFtkb2NrZXIvY2xpIzU4MzNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kb2NrZXIvY2xpL3B1bGwvNTgzMykKLSAgIEZpeCBgZG9ja2VyIGV4cG9ydGAgY29udGludWluZyB0aGUgZXhwb3J0IGFmdGVyIHRoZSBvcGVyYXRpb24gaXMgY2FuY2VsZWQuIFttb2J5L21vYnkjNDkyNjVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTI2NSkKLSAgIEZpeCBgZG9ja2VyIGV4cG9ydGAgbm90IHJlbGVhc2luZyB0aGUgY29udGFpbmVyJ3Mgd3JpdGFibGUgbGF5ZXIgYWZ0ZXIgYSBmYWlsdXJlLiBbbW9ieS9tb2J5IzQ4NTE3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDg1MTcpCi0gICBGaXggYGRvY2tlciBpbWFnZXMgLS10cmVlYCB1bm5lY2Vzc2FyeSB0cnVuY2F0aW5nIGxvbmcgaW1hZ2UgbmFtZXMgd2hlbiBtdWx0aXBsZSBuYW1lcyBhcmUgYXZhaWxhYmxlIFtkb2NrZXIvY2xpIzU3NTddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kb2NrZXIvY2xpL3B1bGwvNTc1NykKLSAgIEZpeCBhIGJ1ZyB3aGVyZSBhIGNvbnRhaW5lciB3aXRoIGEgbmFtZSBtYXRjaGluZyBhbm90aGVyIGNvbnRhaW5lcidzIElEIGlzIG5vdCByZXN0b3JlZCBvbiBkYWVtb24gc3RhcnR1cC4gW21vYnkvbW9ieSM0ODY2OV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4NjY5KQotICAgRml4IGFuIGlzc3VlIHByZXZlbnRpbmcgc29tZSBJUHY2IGFkZHJlc3NlcyBzaG93biBieSBgZG9ja2VyIHBzYCB0byBiZSBwcm9wZXJseSBicmFja2V0ZWQgW2RvY2tlci9jbGkjNTQ2OF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RvY2tlci9jbGkvcHVsbC81NDY4KQotICAgRml4IGJ1ZyBwcmV2ZW50aW5nIGltYWdlIHB1bGxzIGZyb20gYmVpbmcgY2FuY2VsbGVkIGR1cmluZyBgZG9ja2VyIHJ1bmAuIFtkb2NrZXIvY2xpIzU2NDVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kb2NrZXIvY2xpL3B1bGwvNTY0NSkKLSAgIEZpeCBlcnJvci1oYW5kbGluZyB3aGVuIHJ1bm5pbmcgdGhlIGRhZW1vbiBhcyBhIFdpbmRvd3Mgc2VydmljZSB0byBwcmV2ZW50IHVuY2xlYW4gZXhpdHMuIFttb2J5L21vYnkjNDg1MThdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80ODUxOCkKLSAgIEZpeCBpc3N1ZSBjYXVzaW5nIG91dHB1dCBvZiBgZG9ja2VyIHJ1bmAgdG8gYmUgaW5jb25zaXN0ZW50IHdoZW4gdXNpbmcgYC0tYXR0YWNoIHN0ZG91dGAgb3IgYC0tYXR0YWNoIHN0ZGVycmAgdmVyc3VzIGBzdGRpbmAuICBgZG9ja2VyIHJ1biAtLWF0dGFjaCBzdGRpbmAgbm93IGV4aXRzIGlmIHRoZSBjb250YWluZXIgZXhpdHMuIFtkb2NrZXIvY2xpIzU2NjJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kb2NrZXIvY2xpL3B1bGwvNTY2MikKLSAgIEZpeCByb290bGVzcyBEb2NrZXIgc2V0dXAgd2l0aCBgc3ViaWRgIGJhY2tlZCBieSBOU1MgbW9kdWxlcy4gW21vYnkvbW9ieSM0OTAzNl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5MDM2KQotICAgR2VuZXJhdGVkIGNvbXBsZXRpb24gc2NyaXB0cyBmcm9tIHRoZSBDTEkgbm93IHNob3cgZGVzY3JpcHRpb25zIG5leHQgdG8gZWFjaCBjb21tYW5kL2ZsYWcgc3VnZ2VzdGlvbi4gW2RvY2tlci9jbGkjNTc1Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RvY2tlci9jbGkvcHVsbC81NzU2KQotICAgSVB2NiBhZGRyZXNzZXMgc2hvd24gYnkgYGRvY2tlciBwc2AgaW4gcG9ydCBiaW5kaW5ncyBhcmUgbm93IGJyYWNrZXRlZCBbZG9ja2VyL2NsaSM1MzYzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZG9ja2VyL2NsaS9wdWxsLzUzNjMpCi0gICBJbXBsZW1lbnQgdGhlIHBvcnRzIHZhbGlkYXRpb24gbWV0aG9kIGZvciBDb21wb3NlIFtkb2NrZXIvY2xpIzU1MjRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kb2NrZXIvY2xpL3B1bGwvNTUyNCkKLSAgIEltcHJvdmUgZXJyb3Itb3V0cHV0IGZvciBpbnZhbGlkIGZsYWdzIG9uIHRoZSBjb21tYW5kIGxpbmUuIFtkb2NrZXIvY2xpIzUyMzNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kb2NrZXIvY2xpL3B1bGwvNTIzMykKLSAgIEltcHJvdmUgZXJyb3JzIHdoZW4gZmFpbGluZyB0byBzdGFydCBhIGNvbnRhaW5lciB1c2luZyBhbnRoZXIgY29udGFpbmVyJ3MgbmV0d29yayBuYW1lc3BhY2UuIFttb2J5L21vYnkjNDkzNjddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTM2NykKLSAgIEltcHJvdmUgaGFuZGxpbmcgb2YgaW52YWxpZCBBUEkgZXJyb3JzIHRoYXQgY291bGQgcmVzdWx0IGluIGFuIGVtcHR5IGVycm9yIG1lc3NhZ2UgYmVpbmcgc2hvd24uIFttb2J5L21vYnkjNDkzNzNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTM3MykKLSAgIEltcHJvdmUgb3V0cHV0IGFuZCBjb25zaXN0ZW5jeSBmb3IgdW5rbm93biAoc3ViKWNvbW1hbmRzIGFuZCBpbnZhbGlkIGFyZ3VtZW50cyBbZG9ja2VyL2NsaSM1MjM0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZG9ja2VyL2NsaS9wdWxsLzUyMzQpCi0gICBJbXByb3ZlIHZhbGlkYXRpb24gb2YgYGV4ZWMtb3B0c2AgaW4gZGFlbW9uIGNvbmZpZ3VyYXRpb24uIFttb2J5L21vYnkjNDg5NzldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80ODk3OSkKLSAgIFVwZGF0ZSB0aGUgaGFuZGxpbmcgb2YgdGhlIGAtLWdwdXM9MGAgZmxhZyB0byBiZSBjb25zaXN0ZW50IHdpdGggdGhlIE5WSURJQSBDb250YWluZXIgUnVudGltZS4gW21vYnkvbW9ieSM0ODQ4Ml0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4NDgyKQotICAgYGNsaWVudC5Db250YWluZXJDcmVhdGVgIG5vdyBub3JtYWxpemVzIGBDYXBBZGRgIGFuZCBgQ2FwRHJvcGAgZmllbGRzIGluIGBIb3N0Q29uZmlnYCB0byB0aGVpciBjYW5vbmljYWwgZm9ybS4gW21vYnkvbW9ieSM0ODU1MV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4NTUxKQotICAgYGRvY2tlciBpbWFnZSBzYXZlYCBub3cgcHJvZHVjZXMgc3RhYmxlIHRpbWVzdGFtcHMuIFttb2J5L21vYnkjNDg2MTFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80ODYxMSkKLSAgIGBkb2NrZXIgaW5zcGVjdGAgbm93IGxldHMgeW91IGluc3BlY3QgU3dhcm0gY29uZmlncyBbZG9ja2VyL2NsaSM1NTczXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZG9ja2VyL2NsaS9wdWxsLzU1NzMpCi0gICBjb250YWluZXJkIGltYWdlIHN0b3JlOiBBZGQgc3VwcG9ydCBmb3IgYEV4dHJhY3RpbmdgIGxheWVyIHN0YXR1cyBpbiBgZG9ja2VyIHB1bGxgLiBbbW9ieS9tb2J5IzQ5MDY0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDkwNjQpCi0gICBjb250YWluZXJkIGltYWdlIHN0b3JlOiBGaXggYGNvbW1pdGAsIGBpbXBvcnRgLCBhbmQgYGJ1aWxkYCBub3QgcHJlc2VydmluZyBhIHJlcGxhY2VkIGltYWdlIGFzIGEgZGFuZ2xpbmcgaW1hZ2UuIFttb2J5L21vYnkjNDgzMTZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80ODMxNikKLSAgIGNvbnRhaW5lcmQgaW1hZ2Ugc3RvcmU6IE1ha2UgYGRvY2tlciBsb2FkIC0tcGxhdGZvcm1gIHJldHVybiBhbiBlcnJvciB3aGVuIHRoZSByZXF1ZXN0ZWQgcGxhdGZvcm0gaXNuJ3QgbG9hZGVkLiBbbW9ieS9tb2J5IzQ4NzE4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDg3MTgpCi0gICBGaXggdmFsaWRhdGlvbiBvZiBgLS1saW5rYCBvcHRpb24uIFtkb2NrZXIvY2xpIzU3MzldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kb2NrZXIvY2xpL3B1bGwvNTczOSkKLSAgIEFkZCB2YWxpZGF0aW9uIG9mIG5ldHdvcmstZGlhZ25vc3RpYy1wb3J0IGRhZW1vbiBjb25maWd1cmF0aW9uIG9wdGlvbi4gW21vYnkvbW9ieSM0OTMwNV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5MzA1KQotICAgVW5sZXNzIGV4cGxpY2l0bHkgY29uZmlndXJlZCwgYW4gSVAgYWRkcmVzcyBpcyBubyBsb25nZXIgcmVzZXJ2ZWQgZm9yIGEgZ2F0ZXdheSBpbiBjYXNlcyB3aGVyZSBpdCBpcyBub3QgcmVxdWlyZWQuIE5hbWVseSwg4oCcaW50ZXJuYWzigJ0gYnJpZGdlIG5ldHdvcmtzIHdpdGggb3B0aW9uIGBjb20uZG9ja2VyLm5ldHdvcmsuYnJpZGdlLmluaGliaXRfaXB2NGAsIGBpcHZsYW5gIG9yIGBtYWN2bGFuYCBuZXR3b3JrcyB3aXRoIG5vIHBhcmVudCBpbnRlcmZhY2UsIGFuZCBMMyBJUHZsYW4gbW9kZXMuIFttb2J5L21vYnkjNDkyNjFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTI2MSkKLSAgIElmIGEgY3VzdG9tIG5ldHdvcmsgZHJpdmVyIHJlcG9ydHMgY2FwYWJpbGl0eSBgR3dBbGxvY0NoZWNrZXJgIHRoZW4sIGJlZm9yZSBhIG5ldHdvcmsgaXMgY3JlYXRlZCwgaXQgd2lsbCBnZXQgYSBgR3dBbGxvY0NoZWNrZXJSZXF1ZXN0YCB3aXRoIHRoZSBuZXR3b3JrJ3Mgb3B0aW9ucy4gVGhlIGN1c3RvbSBkcml2ZXIgbWF5IHRoZW4gcmVwbHkgdGhhdCBubyBnYXRld2F5IElQIGFkZHJlc3Mgc2hvdWxkIGJlIGFsbG9jYXRlZC4gW21vYnkvbW9ieSM0OTM3Ml0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5MzcyKQotICAgRml4ZWQgYW4gaXNzdWUgdGhhdCBtZWFudCBhIGNvbnRhaW5lciBjb3VsZCBub3QgYmUgYXR0YWNoZWQgdG8gYW4gTDMgSVB2bGFuIGF0IHRoZSBzYW1lIHRpbWUgYXMgb3RoZXIgbmV0d29yayB0eXBlcy4gW21vYnkvbW9ieSM0OTEzMF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5MTMwKQotICAgUmVtb3ZlIHRoZSBjb3JyZWN0IGAvZXRjL2hvc3RzYCBlbnRyaWVzIHdoZW4gZGlzY29ubmVjdGluZyBhIGNvbnRhaW5lciBmcm9tIGEgbmV0d29yay4gW21vYnkvbW9ieSM0ODg1N10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4ODU3KQotICAgRml4IGR1cGxpY2F0ZSBuZXR3b3JrIGRpc2Nvbm5lY3QgZXZlbnRzLiBbbW9ieS9tb2J5IzQ4ODAwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDg4MDApCi0gICBSZXNvbHZlIGlzc3VlcyByZWxhdGVkIHRvIGNoYW5naW5nIGBmaXhlZC1jaWRyYCBmb3IgYGRvY2tlcjBgLCBhbmQgaW5mZXJyaW5nIGNvbmZpZ3VyYXRpb24gZnJvbSBhIHVzZXItbWFuYWdlZCBkZWZhdWx0IGJyaWRnZSAoYC0tYnJpZGdlYCkuIFttb2J5L21vYnkjNDgzMTldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80ODMxOSkKLSAgIFJlbW92ZSBmZWF0dXJlIGZsYWcgYHdpbmRvd3MtZG5zLXByb3h5YCwgaW50cm9kdWNlZCBpbiByZWxlYXNlIDI2LjEuMCB0byBjb250cm9sIGZvcndhcmRpbmcgdG8gZXh0ZXJuYWwgRE5TIHJlc29sdmVycyBmcm9tIFdpbmRvd3MgY29udGFpbmVycywgdG8gbWFrZSBgbnNsb29rdXBgIHdvcmsuIEl0IHdhcyBlbmFibGVkIGJ5IGRlZmF1bHQgaW4gcmVsZWFzZSAyNy4wLjAuIFttb2J5L21vYnkjNDg3MzhdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80ODczOCkKLSAgIFJlbW92ZSBhbiBgaXB0YWJsZXNgIG1hbmdsZSBydWxlIGZvciBjaGVja3N1bW1pbmcgU0NUUC4gVGhlIHJ1bGUgY2FuIGJlIHJlLWVuYWJsZWQgYnkgc2V0dGluZyBgRE9DS0VSX0lQVEFCTEVTX1NDVFBfQ0hFQ0tTVU09MWAgaW4gdGhlIGRhZW1vbidzIGVudmlyb25tZW50LiBUaGlzIG92ZXJyaWRlIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBbbW9ieS9tb2J5IzQ4MTQ5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDgxNDkpCi0gICBGYXN0ZXIgY29ubmVjdGlvbiB0byBicmlkZ2UgbmV0d29ya3MsIGluIG1vc3QgY2FzZXMuIFttb2J5L21vYnkjNDkzMDJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTMwMikKCiMjIyMgUGFja2FnaW5nIHVwZGF0ZXMKCi0gICBVcGRhdGUgR28gcnVudGltZSB0byBbMS4yMy42XShodHRwczovL2dvLmRldi9kb2MvZGV2ZWwvcmVsZWFzZSNnbzEuMjMuNikuIFtkb2NrZXIvY2xpIzU3OTVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kb2NrZXIvY2xpL3B1bGwvNTc5NSksIFttb2J5L21vYnkjNDkzOTNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTM5MyksIFtkb2NrZXIvZG9ja2VyLWNlLXBhY2thZ2luZyMxMTYxXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZG9ja2VyL2RvY2tlci1jZS1wYWNrYWdpbmcvcHVsbC8xMTYxKQotICAgVXBkYXRlIGBydW5jYCB0byBbdjEuMi41XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vb3BlbmNvbnRhaW5lcnMvcnVuYy9yZWxlYXNlcy90YWcvdjEuMi41KSAoc3RhdGljIGJpbmFyaWVzIG9ubHkpLiBbbW9ieS9tb2J5IzQ5NDY0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDk0NjQpCi0gICBVcGRhdGUgY29udGFpbmVyZCB0byBbdjEuNy4yNV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NvbnRhaW5lcmQvY29udGFpbmVyZC9yZWxlYXNlcy90YWcvdjEuNy4yNSkuIFttb2J5L21vYnkjNDkyNTJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTI1MikKLSAgIFVwZGF0ZSBCdWlsZEtpdCB0byBbdjAuMjAuMF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvYnVpbGRraXQvcmVsZWFzZXMvdGFnL3YwLjIwLjApLiBbbW9ieS9tb2J5IzQ5NDk1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDk0OTUpCi0gICBVcGRhdGUgQnVpbGR4IHRvIFt2MC4yMS4wXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZG9ja2VyL2J1aWxkeC9yZWxlYXNlcy90YWcvdjAuMjEuMCkuIFtkb2NrZXIvZG9ja2VyLWNlLXBhY2thZ2luZyMxMTY2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZG9ja2VyL2RvY2tlci1jZS1wYWNrYWdpbmcvcHVsbC8xMTY2KQotICAgVXBkYXRlIENvbXBvc2UgdG8gW3YyLjMyLjRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kb2NrZXIvY29tcG9zZS9yZWxlYXNlcy90YWcvdjIuMzIuMykuIFtkb2NrZXIvZG9ja2VyLWNlLXBhY2thZ2luZyMxMTQzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZG9ja2VyL2RvY2tlci1jZS1wYWNrYWdpbmcvcHVsbC8xMTQzKQotICAgVGhlIGNhbm9uaWNhbCBzb3VyY2UgZm9yIHRoZSBgZG9ja2VyZCg4KWAgbWFuIHBhZ2UgaGFzIGJlZW4gbW92ZWQgYmFjayB0byB0aGUgYG1vYnkvbW9ieWAgcmVwb3NpdG9yeSBpdHNlbGYuIFttb2J5L21vYnkjNDgyOThdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80ODI5OCkKCiMjIyMgR28gU0RLCgotICAgSW1wcm92ZSB2YWxpZGF0aW9uIG9mIGVtcHR5IG9iamVjdCBJRHMuIFRoZSBjbGllbnQgbm93IHJldHVybnMgYW4gIkludmFsaWQgUGFyYW1ldGVyIiBlcnJvciB3aGVuIHRyeWluZyB0byB1c2UgYW4gZW1wdHkgSUQgb3IgbmFtZS4gVGhpcyBjaGFuZ2VzIHRoZSBlcnJvciByZXR1cm5lZCBieSBzb21lICJJbnNwZWN0IiBmdW5jdGlvbnMgZnJvbSBhICJOb3QgZm91bmQiIGVycm9yIHRvIGFuICJJbnZhbGlkIFBhcmFtZXRlciIuIFttb2J5L21vYnkjNDkzODFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTM4MSkKLSAgIGBDbGllbnQuSW1hZ2VCdWlsZCgpYCBub3cgb21pdHMgZGVmYXVsdCB2YWx1ZXMgZnJvbSB0aGUgQVBJIHJlcXVlc3QncyBxdWVyeSBzdHJpbmcuIFttb2J5L21vYnkjNDg2NTFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80ODY1MSkKLSAgIGBhcGkvdHlwZXMvY29udGFpbmVyYDogTWVyZ2UgYFN0YXRzYCBhbmQgYFN0YXRzUmVzcG9uc2VgIFttb2J5L21vYnkjNDkyODddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTI4NykKLSAgIGBjbGllbnQuV2l0aFZlcnNpb25gOiBTdHJpcCB2LXByZWZpeCB3aGVuIHNldHRpbmcgQVBJIHZlcnNpb24gW21vYnkvbW9ieSM0OTM1Ml0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5MzUyKQotICAgYGNsaWVudGA6IEFkZCBgV2l0aFRyYWNlT3B0aW9uc2AgYWxsb3dpbmcgdG8gc3BlY2lmeSBjdXN0b20gT1RlMSB0cmFjZSBvcHRpb25zLiBbbW9ieS9tb2J5IzQ5NDE1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDk0MTUpCi0gICBgY2xpZW50YDogQWRkIGBIaWphY2tEaWFsZXJgIGludGVyZmFjZS4gW21vYnkvbW9ieSM0OTM4OF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5Mzg4KQotICAgYGNsaWVudGA6IEFkZCBgU3dhcm1NYW5hZ2VtZW50QVBJQ2xpZW50YCBpbnRlcmZhY2UgdG8gZGVzY3JpYmUgYWxsIEFQSSBjbGllbnQgbWV0aG9kcyByZWxhdGVkIHRvIFN3YXJtLXNwZWNpZmljIG9iamVjdHMuIFttb2J5L21vYnkjNDkzODhdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTM4OCkKLSAgIGBjbGllbnRgOiBBZGQgYFdpdGhUcmFjZU9wdGlvbnNgIGFsbG93aW5nIHRvIHNwZWNpZnkgY3VzdG9tIE9UZWwgdHJhY2Ugb3B0aW9ucy4gW21vYnkvbW9ieSM0OTQxNV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5NDE1KQotICAgYGNsaWVudGA6IGBJbWFnZUhpc3RvcnlgLCBgSW1hZ2VMb2FkYCBhbmQgYEltYWdlU2F2ZWAgbm93IHVzZSB2YXJpYWRpYyBmdW5jdGlvbmFsIG9wdGlvbnMgW21vYnkvbW9ieSM0OTQ2Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5NDY2KQotICAgYHBrZy9jb250YWluZXJmc2A6IE1vdmUgdG8gaW50ZXJuYWwgW21vYnkvbW9ieSM0ODA5N10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4MDk3KQotICAgYHBrZy9yZWV4ZWNgOiBDYW4gbm93IGJlIHVzZWQgb24gcGxhdGZvcm1zIG90aGVyIHRoYW4gTGludXgsIFdpbmRvd3MsIG1hY09TIGFuZCBGcmVlQlNEIFttb2J5L21vYnkjNDkxMThdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTExOCkKLSAgIGBhcGkvdHlwZXMvY29udGFpbmVyYDogaW50cm9kdWNlIGBDb21taXRSZXNwb25zZWAgdHlwZS4gVGhpcyBpcyBjdXJyZW50bHkgYW4gYWxpYXMgZm9yIGBJRFJlc3BvbnNlYCwgYnV0IG1heSBiZWNvbWUgYSBkaXN0aW5jdCB0eXBlIGluIGEgZnV0dXJlIHJlbGVhc2UuIFttb2J5L21vYnkjNDk0NDRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTQ0NCkKLSAgIGBhcGkvdHlwZXMvY29udGFpbmVyYDogaW50cm9kdWNlIGBFeGVjQ3JlYXRlUmVzcG9uc2VgIHR5cGUuIFRoaXMgaXMgY3VycmVudGx5IGFuIGFsaWFzIGZvciBgSURSZXNwb25zZWAsIGJ1dCBtYXkgYmVjb21lIGEgZGlzdGluY3QgdHlwZSBpbiBhIGZ1dHVyZSByZWxlYXNlLiBbbW9ieS9tb2J5IzQ5NDQ0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDk0NDQpCgojIyMjIEFQSQoKLSAgIFVwZGF0ZSBBUEkgdmVyc2lvbiB0byBbdjEuNDhdKGh0dHBzOi8vZG9jcy5kb2NrZXIuY29tL2VuZ2luZS9hcGkvdjEuNDgvKSBbbW9ieS9tb2J5IzQ4NDc2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDg0NzYpCi0gICBgR0VUIC9pbWFnZXMve25hbWV9L2pzb25gIHJlc3BvbnNlIG5vdyByZXR1cm5zIHRoZSBgTWFuaWZlc3RzYCBmaWVsZCBjb250YWluaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzdWItbWFuaWZlc3RzIGNvbnRhaW5lZCBpbiB0aGUgaW1hZ2UgaW5kZXguIFRoaXMgaW5jbHVkZXMgdGhpbmdzIGxpa2UgcGxhdGZvcm0tc3BlY2lmaWMgbWFuaWZlc3RzIGFuZCBidWlsZCBhdHRlc3RhdGlvbnMuIFttb2J5L21vYnkjNDgyNjRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80ODI2NCkKLSAgIGBQT1NUIC9jb250YWluZXJzL2NyZWF0ZWAgbm93IHN1cHBvcnRzIGBNb3VudGAgb2YgdHlwZSBgaW1hZ2VgIGZvciBtb3VudGluZyBhbiBpbWFnZSBpbnNpZGUgYSBjb250YWluZXIuIFttb2J5L21vYnkjNDg3OThdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80ODc5OCkKLSAgIGBHRVQgL2ltYWdlcy97bmFtZX0vaGlzdG9yeWAgbm93IHN1cHBvcnRzIGEgYHBsYXRmb3JtYCBwYXJhbWV0ZXIgKEpTT04gZW5jb2RlZCBPQ0kgUGxhdGZvcm0gdHlwZSkgdGhhdCBsZXRzIHlvdSBzcGVjaWZ5IGEgcGxhdGZvcm0gdG8gc2hvdyB0aGUgaGlzdG9yeSBvZi4gW21vYnkvbW9ieSM0ODI5NV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4Mjk1KQotICAgYFBPU1QgL2ltYWdlcy97bmFtZX0vbG9hZGAgYW5kIGBHRVQgL2ltYWdlcy97bmFtZX0vZ2V0YCBub3cgc3VwcG9ydHMgYSBgcGxhdGZvcm1gIHBhcmFtZXRlciAoSlNPTiBlbmNvZGVkIE9DSSBQbGF0Zm9ybSB0eXBlKSB0aGF0IGxldHMgeW91IHNwZWNpZnkgYSBwbGF0Zm9ybSB0byBsb2FkL3NhdmUuIE5vdCBwYXNzaW5nIHRoaXMgcGFyYW1ldGVyIHJlc3VsdHMgaW4gbG9hZGluZy9zYXZpbmcgdGhlIGZ1bGwgbXVsdGktcGxhdGZvcm0gaW1hZ2UuIFttb2J5L21vYnkjNDgyOTVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80ODI5NSkKLSAgIEltcHJvdmUgZXJyb3JzIGZvciBpbnZhbGlkIHdpZHRoL2hlaWdodCBvbiBjb250YWluZXIgcmVzaXplIGFuZCBleGVjIHJlc2l6ZSBbbW9ieS9tb2J5IzQ4Njc5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDg2NzkpCi0gICBUaGUgYFBPU1QgL2NvbnRhaW5lcnMvY3JlYXRlYCBlbmRwb2ludCBub3cgaW5jbHVkZXMgYSB3YXJuaW5nIGluIHRoZSByZXNwb25zZSB3aGVuIHNldHRpbmcgdGhlIGNvbnRhaW5lci13aWRlIGBWb2x1bWVEcml2ZXJgIG9wdGlvbiBpbiBjb21iaW5hdGlvbiB3aXRoIHZvbHVtZXMgZGVmaW5lZCB0aHJvdWdoIGBNb3VudHNgIGJlY2F1c2UgdGhlIGBWb2x1bWVEcml2ZXJgIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRob3NlIHZvbHVtZXMuIFRoaXMgd2FybmluZyB3YXMgcHJldmlvdXNseSBnZW5lcmF0ZWQgYnkgdGhlIENMSS4gW21vYnkvbW9ieSM0ODc4OV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4Nzg5KQotICAgY29udGFpbmVyZCBpbWFnZSBzdG9yZTogYEdFVCAvaW1hZ2VzL2pzb25gIGFuZCBgR0VUIC9pbWFnZXMve25hbWV9L2pzb25gIHJlc3BvbnNlcyBub3cgaW5jbHVkZXMgYERlc2NyaXB0b3JgIGZpZWxkLCB3aGljaCBjb250YWlucyBhbiBPQ0kgZGVzY3JpcHRvciBvZiB0aGUgaW1hZ2UgdGFyZ2V0LiBUaGUgbmV3IGZpZWxkIGlzIG9ubHkgcG9wdWxhdGVkIGlmIHRoZSBkYWVtb24gcHJvdmlkZXMgYSBtdWx0aS1wbGF0Zm9ybSBpbWFnZSBzdG9yZS4gW21vYnkvbW9ieSM0ODg5NF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4ODk0KQotICAgY29udGFpbmVyZCBpbWFnZSBzdG9yZTogYEdFVCAvY29udGFpbmVycy97bmFtZX0vanNvbmAgbm93IHJldHVybnMgYW4gYEltYWdlTWFuaWZlc3REZXNjcmlwdG9yYCBmaWVsZCBjb250YWluaW5nIHRoZSBPQ0kgZGVzY3JpcHRvciBvZiB0aGUgcGxhdGZvcm0tc3BlY2lmaWMgaW1hZ2UgbWFuaWZlc3Qgb2YgdGhlIGltYWdlIHRoYXQgd2FzIHVzZWQgdG8gY3JlYXRlIHRoZSBjb250YWluZXIuIFttb2J5L21vYnkjNDg4NTVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80ODg1NSkKLSAgIEFkZCBkZWJ1ZyBlbmRwb2ludHMgKGBHRVQgL2RlYnVnL3ZhcnNgLCBgR0VUIC9kZWJ1Zy9wcHJvZi9gLCBgR0VUIC9kZWJ1Zy9wcHJvZi9jbWRsaW5lYCwgYEdFVCAvZGVidWcvcHByb2YvcHJvZmlsZWAsIGBHRVQgL2RlYnVnL3Bwcm9mL3N5bWJvbGAsIGBHRVQgL2RlYnVnL3Bwcm9mL3RyYWNlYCwgYEdFVCAvZGVidWcvcHByb2Yve25hbWV9YCkgYXJlIG5vdyBhbHNvIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgdmVyc2lvbmVkLUFQSSBwYXRocyAoYC92PEFQSS12ZXJzaW9uPi88ZW5kcG9pbnQ+YCkuIFttb2J5L21vYnkjNDkwNTFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTA1MSkKLSAgIEZpeCBBUEkgcmV0dXJuaW5nIGEgYDUwMGAgc3RhdHVzIGNvZGUgaW5zdGVhZCBvZiBgNDAwYCBmb3IgdmFsaWRhdGlvbiBlcnJvcnMuIFttb2J5L21vYnkjNDkyMTddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTIxNykKLSAgIEZpeCBzdGF0dXMgY29kZXMgZm9yIGFyY2hpdmUgZW5kcG9pbnRzIGBIRUFEIC9jb250YWluZXJzL3tuYW1lOi4qfS9hcmNoaXZlYCwgYEdFVCAvY29udGFpbmVycy97bmFtZTouKn0vYXJjaGl2ZWAsIGBQVVQgL2NvbnRhaW5lcnMve25hbWU6Lip9L2FyY2hpdmVgIHJldHVybmluZyBhIGA1MDBgIHN0YXR1cyBpbnN0ZWFkIG9mIGEgYDQwMGAgc3RhdHVzLiBbbW9ieS9tb2J5IzQ5MjE5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDkyMTkpCi0gICBgUE9TVCAvY29udGFpbmVycy9jcmVhdGVgIG5vdyBhY2NlcHRzIGEgYHdyaXRhYmxlLWNncm91cHM9dHJ1ZWAgb3B0aW9uIGluIGBIb3N0Q29uZmlnLlNlY3VyaXR5T3B0YCB0byBtb3VudCB0aGUgY29udGFpbmVyJ3MgY2dyb3VwcyB3cml0YWJsZS4gVGhpcyBwcm92aWRlcyBhIG1vcmUgZ3JhbnVsYXIgYXBwcm9hY2ggdGhhbiBgSG9zdENvbmZpZy5Qcml2aWxlZ2VkYC4gW21vYnkvbW9ieSM0ODgyOF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4ODI4KQotICAgYFBPU1QgL2J1aWxkL3BydW5lYCByZW5hbWVzIGBrZWVwLWJ5dGVzYCB0byBgcmVzZXJ2ZWQtc3BhY2VgIGFuZCBub3cgc3VwcG9ydHMgYWRkaXRpb25hbCBwcnVuZSBwYXJhbWV0ZXJzIGBtYXgtdXNlZC1zcGFjZWAgYW5kIGBtaW4tZnJlZS1zcGFjZWAuIFttb2J5L21vYnkjNDg3MjBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80ODcyMCkKLSAgIGBQT1NUIC9uZXR3b3Jrcy9jcmVhdGVgIG5vdyBoYXMgYW4gYEVuYWJsZUlQdjRgIGZpZWxkLiBTZXR0aW5nIGl0IHRvIGBmYWxzZWAgZGlzYWJsZXMgSVB2NCBJUEFNIGZvciB0aGUgbmV0d29yay4gW21vYnkvbW9ieSM0ODI3MV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4MjcxKQogICAgLSAgIGBHRVQgL25ldHdvcmtzL3tpZH1gIG5vdyByZXR1cm5zIGFuIGBFbmFibGVJUHY0YCBmaWVsZCBzaG93aW5nIHdoZXRoZXIgdGhlIG5ldHdvcmsgaGFzIElQdjQgSVBBTSBlbmFibGVkLiBbbW9ieS9tb2J5IzQ4MjcxXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDgyNzEpCiAgICAtICAgVXNlci1kZWZpbmVkIGJyaWRnZSBuZXR3b3JrcyByZXF1aXJlIGVpdGhlciBJUHY0IG9yIElQdjYgYWRkcmVzcyBhc3NpZ25tZW50IHRvIGJlIGVuYWJsZWQuIElQdjQgY2Fubm90IGJlIGRpc2FibGVkIGZvciB0aGUgZGVmYXVsdCBicmlkZ2UgbmV0d29yayAoYGRvY2tlcjBgKS4gW21vYnkvbW9ieSM0ODMyM10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4MzIzKQogICAgLSAgIGBtYWN2bGFuYCBhbmQgYGlwdmxhbmAgbmV0d29ya3MgY2FuIGJlIGNyZWF0ZWQgd2l0aCBhZGRyZXNzIGFzc2lnbm1lbnQgZGlzYWJsZWQgZm9yIElQdjQsIElQdjYsIG9yIGJvdGggYWRkcmVzcyBmYW1pbGllcy4gW21vYnkvbW9ieSM0ODI5OV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4Mjk5KQogICAgLSAgIElQdjQgY2Fubm90IGJlIGRpc2FibGVkIGZvciBXaW5kb3dzIG9yIFN3YXJtIG5ldHdvcmtzLiBbbW9ieS9tb2J5IzQ4Mjc4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDgyNzgpCi0gICBBZGQgYSB3YXkgdG8gc3BlY2lmeSB3aGljaCBuZXR3b3JrIHNob3VsZCBwcm92aWRlIHRoZSBkZWZhdWx0IGdhdGV3YXkgZm9yIGEgY29udGFpbmVyLiBbbW9ieS9tb2J5IzQ4OTM2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDg5MzYpCiAgICAtICAgYFBPU1QgL25ldHdvcmtzL3tpZH0vY29ubmVjdGAgYW5kIGBQT1NUIC9jb250YWluZXJzL2NyZWF0ZWAgbm93IGFjY2VwdCBhIGBHd1ByaW9yaXR5YCBmaWVsZCBpbiBgRW5kcG9pbnRzQ29uZmlnYC4gVGhpcyB2YWx1ZSBpcyB1c2VkIHRvIGRldGVybWluZSB3aGljaCBuZXR3b3JrIGVuZHBvaW50IHByb3ZpZGVzIHRoZSBkZWZhdWx0IGdhdGV3YXkgZm9yIHRoZSBjb250YWluZXIuIFRoZSBlbmRwb2ludCB3aXRoIHRoZSBoaWdoZXN0IHByaW9yaXR5IGlzIHNlbGVjdGVkLiBJZiBtdWx0aXBsZSBlbmRwb2ludHMgaGF2ZSB0aGUgc2FtZSBwcmlvcml0eSwgZW5kcG9pbnRzIGFyZSBzb3J0ZWQgbGV4aWNvZ3JhcGhpY2FsbHkgYnkgdGhlaXIgbmV0d29yayBuYW1lLCBhbmQgdGhlIG9uZSB0aGF0IHNvcnRzIGZpcnN0IGlzIHBpY2tlZC4gW21vYnkvbW9ieSM0ODc0Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4NzQ2KQogICAgLSAgIGBHRVQgL2NvbnRhaW5lcnMvanNvbmAgbm93IHJldHVybnMgYSBgR3dQcmlvcml0eWAgZmllbGQgaW4gYE5ldHdvcmtTZXR0aW5nc2AgZm9yIGVhY2ggbmV0d29yayBlbmRwb2ludC4gVGhlIGBHd1ByaW9yaXR5YCBmaWVsZCBpcyB1c2VkIGJ5IHRoZSBDTEnigJlzIG5ldyBgZ3ctcHJpb3JpdHlgIG9wdGlvbiBmb3IgYGRvY2tlciBydW5gIGFuZCBgZG9ja2VyIG5ldHdvcmsgY29ubmVjdGAuIFttb2J5L21vYnkjNDg3NDZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80ODc0NikKLSAgIFNldHRpbmdzIGZvciBgZXRoMGAgaW4gYC0tc3lzY3RsYCBvcHRpb25zIGFyZSBubyBsb25nZXIgYXV0b21hdGljYWxseSBtaWdyYXRlZCB0byB0aGUgbmV0d29yayBlbmRwb2ludC4gW21vYnkvbW9ieSM0ODc0Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4NzQ2KQogICAgLSAgIEZvciBleGFtcGxlLCBpbiB0aGUgRG9ja2VyIENMSSwgYGRvY2tlciBydW4gLS1uZXR3b3JrIG15bmV0IC0tc3lzY3RsIG5ldC5pcHY0LmNvbmYuZXRoMC5sb2dfbWFydGlhbnM9MSAuLi5gIGlzIHJlamVjdGVkLiBJbnN0ZWFkLCB5b3UgbXVzdCB1c2UgYGRvY2tlciBydW4gLS1uZXR3b3JrIG5hbWU9bXluZXQsZHJpdmVyLW9wdD1jb20uZG9ja2VyLm5ldHdvcmsuZW5kcG9pbnQuc3lzY3Rscz1uZXQuaXB2NC5jb25mLklGTkFNRS5sb2dfbWFydGlhbnM9MSAuLi5gCi0gICBgR0VUIC9jb250YWluZXJzL2pzb25gIG5vdyByZXR1cm5zIGFuIGBJbWFnZU1hbmlmZXN0RGVzY3JpcHRvcmAgZmllbGQgbWF0Y2hpbmcgdGhlIHNhbWUgZmllbGQgaW4gYC9jb250YWluZXJzL3tuYW1lfS9qc29uYC4gVGhpcyBmaWVsZCBpcyBvbmx5IHBvcHVsYXRlZCBpZiB0aGUgZGFlbW9uIHByb3ZpZGVzIGEgbXVsdGktcGxhdGZvcm0gaW1hZ2Ugc3RvcmUuIFttb2J5L21vYnkjNDk0MDddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTQwNykKCiMjIyMgUmVtb3ZlZAoKLSAgIFRoZSBGbHVlbnQgbG9nZ2VyIG9wdGlvbiBgZmx1ZW50ZC1hc3luYy1jb25uZWN0YCBoYXMgYmVlbiBkZXByZWNhdGVkIGluIHYyMC4xMCBhbmQgaXMgbm93IHJlbW92ZWQuIFttb2J5L21vYnkjNDYxMTRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80NjExNCkKLSAgIFRoZSBgLS10aW1lYCBvcHRpb24gb24gYGRvY2tlciBzdG9wYCBhbmQgYGRvY2tlciByZXN0YXJ0YCBpcyBkZXByZWNhdGVkIGFuZCByZW5hbWVkIHRvIGAtLXRpbWVvdXRgLiBbZG9ja2VyL2NsaSM1NDg1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZG9ja2VyL2NsaS9wdWxsLzU0ODUpCi0gICBHby1TREs6IGBwa2cvaW91dGlsc2A6IFJlbW92ZSBgTmV3UmVhZGVyRXJyV3JhcHBlcmAgYXMgaXQgd2FzIG5ldmVyIHVzZWQuIFttb2J5L21vYnkjNDkyNThdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTI1OCkKLSAgIEdvLVNESzogYHBrZy9pb3V0aWxzYDogUmVtb3ZlIGRlcHJlY2F0ZWQgYEJ5dGVzUGlwZWAsIGBOZXdCeXRlc1BpcGVgLCBgRXJyQ2xvc2VkYCwgYFdyaXRlQ291bnRlcmAsIGBOZXdXcml0ZUNvdW50ZXJgLCBgTmV3UmVhZGVyRXJyV3JhcHBlcmAsIGBOb3BGbHVzaGVyYC4gW21vYnkvbW9ieSM0OTI0NV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5MjQ1KQotICAgR28tU0RLOiBgcGtnL2lvdXRpbHNgOiBSZW1vdmUgZGVwcmVjYXRlZCBgTm9wV3JpdGVyYCBhbmQgYE5vcFdyaXRlQ2xvc2VyYC4gW21vYnkvbW9ieSM0OTI1Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5MjU2KQotICAgR28tU0RLOiBgcGtnL3N5c2luZm9gOiBSZW1vdmUgZGVwcmVjYXRlZCBOdW1DUFUuIFttb2J5L21vYnkjNDkyNDJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTI0MikKLSAgIEdvLVNESzogUmVtb3ZlIGBwa2cvYnJvYWRjYXN0ZXJgLCBhcyBpdCB3YXMgb25seSB1c2VkIGludGVybmFsbHkgW21vYnkvbW9ieSM0OTE3Ml0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5MTcyKQotICAgR28tU0RLOiBSZW1vdmUgZGVwcmVjYXRlZCBgY2xpLkVycm9yc2AgdHlwZSBbZG9ja2VyL2NsaSM1NTQ5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZG9ja2VyL2NsaS9wdWxsLzU1NDkpCi0gICBSZW1vdmUgYHBrZy9pb3V0aWxzLlJlYWRDbG9zZXJXcmFwcGVyYCwgYXMgaXQgd2FzIG9ubHkgdXNlZCBpbiB0ZXN0cy4gW21vYnkvbW9ieSM0OTIzN10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5MjM3KQotICAgUmVtb3ZlIGRlcHJlY2F0ZWQgYGFwaS1jb3JzLWhlYWRlcmAgY29uZmlnIHBhcmFtZXRlciBhbmQgdGhlIGBkb2NrZXJkYCBgLS1hcGktY29ycy1oZWFkZXJgIG9wdGlvbiBbbW9ieS9tb2J5IzQ4MjA5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDgyMDkpCi0gICBSZW1vdmUgZGVwcmVjYXRlZCBgQVBJRW5kcG9pbnQuVmVyc2lvbmAgZmllbGQsIGBBUElWZXJzaW9uYCB0eXBlLCBhbmQgYEFQSVZlcnNpb24xYCBhbmQgYEFQSVZlcnNpb24yYCBjb25zdHMuIFttb2J5L21vYnkjNDkwMDRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTAwNCkKLSAgIFJlbW92ZSBkZXByZWNhdGVkIGBhcGktY29ycy1oZWFkZXJgIGNvbmZpZyBwYXJhbWV0ZXIgYW5kIHRoZSBEb2NrZXIgZGFlbW9uJ3MgYC0tYXBpLWNvcnMtaGVhZGVyYCBvcHRpb24uIFtkb2NrZXIvY2xpIzU0MzddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kb2NrZXIvY2xpL3B1bGwvNTQzNykKLSAgIFJlbW92ZSBkZXByZWNhdGVkIGBwa2cvZGlyZWN0b3J5YCBwYWNrYWdlIFttb2J5L21vYnkjNDg3NzldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80ODc3OSkKLSAgIFJlbW92ZSBkZXByZWNhdGVkIGBwa2cvZG1zZy5EbWVzZygpYCBbbW9ieS9tb2J5IzQ4MTA5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDgxMDkpCi0gICBSZW1vdmUgZGVwcmVjYXRlZCBpbWFnZS9zcGVjIHBhY2thZ2UsIHdoaWNoIHdhcyBtb3ZlZCB0byBhIHNlcGFyYXRlIG1vZHVsZSAoYGdpdGh1Yi5jb20vbW9ieS9kb2NrZXItaW1hZ2Utc3BlY2ApIFttb2J5L21vYnkjNDg0NjBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80ODQ2MCkKLSAgIFJlbW92ZSBtaWdyYXRpb24gY29kZSBhbmQgZXJyb3JzIGZvciB0aGUgZGVwcmVjYXRlZCBgbG9nZW50cmllc2AgbG9nZ2luZyBkcml2ZXIuIFttb2J5L21vYnkjNDg4OTFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80ODg5MSkKLSAgIFJlbW92ZSBzdXBwb3J0IGZvciBkZXByZWNhdGVkIGV4dGVybmFsIGdyYXBoLWRyaXZlciBwbHVnaW5zLiBbbW9ieS9tb2J5IzQ4MDcyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDgwNzIpCi0gICBgYXBpL3R5cGVzYDogUmVtb3ZlIGRlcHJlY2F0ZWQgYGNvbnRhaW5lci5Db250YWluZXJOb2RlYCBhbmQgYENvbnRhaW5lckpTT05CYXNlLk5vZGVgIGZpZWxkLiBbbW9ieS9tb2J5IzQ4MTA3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDgxMDcpCi0gICBgYXBpL3R5cGVzYDogUmVtb3ZlIGRlcHJlY2F0ZWQgYWxpYXNlczogYEltYWdlc1BydW5lUmVwb3J0YCwgYFZvbHVtZXNQcnVuZVJlcG9ydGAsIGBOZXR3b3JrQ3JlYXRlUmVxdWVzdGAsIGBOZXR3b3JrQ3JlYXRlYCwgYE5ldHdvcmtMaXN0T3B0aW9uc2AsIGBOZXR3b3JrQ3JlYXRlUmVzcG9uc2VgLCBgTmV0d29ya0luc3BlY3RPcHRpb25zYCwgYE5ldHdvcmtDb25uZWN0YCwgYE5ldHdvcmtEaXNjb25uZWN0YCwgYEVuZHBvaW50UmVzb3VyY2VgLCBgTmV0d29ya1Jlc291cmNlYCwgYE5ldHdvcmtzUHJ1bmVSZXBvcnRgLCBgRXhlY0NvbmZpZ2AsIGBFeGVjU3RhcnRDaGVja2AsIGBDb250YWluZXJFeGVjSW5zcGVjdGAsIGBDb250YWluZXJzUHJ1bmVSZXBvcnRgLCBgQ29udGFpbmVyUGF0aFN0YXRgLCBgQ29weVRvQ29udGFpbmVyT3B0aW9uc2AsIGBDb250YWluZXJTdGF0c2AsIGBJbWFnZVNlYXJjaE9wdGlvbnNgLCBgSW1hZ2VJbXBvcnRTb3VyY2VgLCBgSW1hZ2VMb2FkUmVzcG9uc2VgLCBgQ29udGFpbmVyTm9kZWAuIFttb2J5L21vYnkjNDgxMDddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80ODEwNykKLSAgIGBsaWJuZXR3b3JrL2lwdGFibGVzYDogUmVtb3ZlIGRlcHJlY2F0ZWQgYElQVmAsIGBJcHRhYmxlc2AsIGBJUDZUYWJsZXNgIGFuZCBgUGFzc3Rocm91Z2goKWAuIFttb2J5L21vYnkjNDkxMjFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTEyMSkKLSAgIGBwa2cvYXJjaGl2ZWA6IFJlbW92ZSBkZXByZWNhdGVkIGBDYW5vbmljYWxUYXJOYW1lRm9yUGF0aGAsIGBOZXdUZW1wQXJjaGl2ZWAsIGBUZW1wQXJjaGl2ZWAgW21vYnkvbW9ieSM0ODcwOF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4NzA4KQotICAgYHBrZy9maWxldXRpbHNgOiBSZW1vdmUgZGVwcmVjYXRlZCBgR2V0VG90YWxVc2VkRmRzYCBbbW9ieS9tb2J5IzQ5MjEwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDkyMTApCi0gICBgcGtnL2lvdXRpbHNgOiBSZW1vdmUgYE9uRU9GUmVhZGVyYCwgd2hpY2ggd2FzIG9ubHkgdXNlZCBpbnRlcm5hbGx5IFttb2J5L21vYnkjNDkxNzBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTE3MCkKLSAgIGBwa2cvbG9uZ3BhdGhgOiBSZW1vdmUgZGVwcmVjYXRlZCBgUHJlZml4YCBjb25zdGFudC4gW21vYnkvbW9ieSM0ODc3OV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4Nzc5KQotICAgYHBrZy9zdHJpbmdpZGA6IFJlbW92ZSBkZXByZWNhdGVkIGBJc1Nob3J0SURgIGFuZCAgYFZhbGlkYXRlSURgIGZ1bmN0aW9ucyBbbW9ieS9tb2J5IzQ4NzA1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDg3MDUpCi0gICBgcnVuY29uZmlnL29wdHNgOiBSZW1vdmUgZGVwcmVjYXRlZCBgQ29udmVydEtWU3RyaW5nc1RvTWFwYCBbbW9ieS9tb2J5IzQ4MTAyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDgxMDIpCi0gICBgcnVuY29uZmlnYDogUmVtb3ZlIGRlcHJlY2F0ZWQgYENvbnRhaW5lckNvbmZpZ1dyYXBwZXJgLCBgU2V0RGVmYXVsdE5ldE1vZGVJZkJsYW5rYCwgYERlZmF1bHREYWVtb25OZXR3b3JrTW9kZWAsIGBJc1ByZURlZmluZWROZXR3b3JrYCBbbW9ieS9tb2J5IzQ4MTAyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDgxMDIpCi0gICBgY29udGFpbmVyYDogUmVtb3ZlIGRlcHJlY2F0ZWQgYEVyck5hbWVSZXNlcnZlZGAsIGBFcnJOYW1lTm90UmVzZXJ2ZWRgLiBbbW9ieS9tb2J5IzQ4NzI4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDg3MjgpCi0gICBSZW1vdmUgYERhZW1vbi5Db250YWluZXJJbnNwZWN0Q3VycmVudCgpYCBtZXRob2QgYW5kIGNoYW5nZSBgRGFlbW9uLkNvbnRhaW5lckluc3BlY3QoKWAgc2lnbmF0dXJlIHRvIGFjY2VwdCBhIGBiYWNrZW5kLkNvbnRhaW5lckluc3BlY3RPcHRpb25zYCBzdHJ1Y3QgW21vYnkvbW9ieSM0ODY3Ml0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4NjcyKQotICAgUmVtb3ZlIGRlcHJlY2F0ZWQgYERhZW1vbi5FeGlzdHMoKWAgYW5kIGBEYWVtb24uSXNQYXVzZWQoKWAgbWV0aG9kcy4gW21vYnkvbW9ieSM0ODcyM10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4NzIzKQoKIyMjIyBEZXByZWNhdGlvbnMKCi0gICBBUEk6IFRoZSBgQnJpZGdlTmZJcHRhYmxlc2AgYW5kIGBCcmlkZ2VOZklwNnRhYmxlc2AgZmllbGRzIGluIHRoZSBgR0VUIC9pbmZvYCByZXNwb25zZSBhcmUgbm93IGFsd2F5cyBiZSBgZmFsc2VgIGFuZCB3aWxsIGJlIG9taXR0ZWQgaW4gQVBJIHYxLjQ5LiBUaGUgbmV0ZmlsdGVyIG1vZHVsZSBpcyBub3cgbG9hZGVkIG9uLWRlbWFuZCwgYW5kIG5vIGxvbmdlciBkdXJpbmcgZGFlbW9uIHN0YXJ0dXAsIG1ha2luZyB0aGVzZSBmaWVsZHMgb2Jzb2xldGUuIFttb2J5L21vYnkjNDkxMTRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTExNCkKLSAgIEFQSTogVGhlIGBlcnJvcmAgYW5kIGBwcm9ncmVzc2AgZmllbGRzIGluIHN0cmVhbWluZyByZXNwb25zZXMgZm9yIGVuZHBvaW50cyB0aGF0IHJldHVybiBhIEpTT04gcHJvZ3Jlc3MgcmVzcG9uc2UsIHN1Y2ggYXMgYFBPU1QgL2ltYWdlcy9jcmVhdGVgLCBgUE9TVCAvaW1hZ2VzL3tuYW1lfS9wdXNoYCwgYW5kIGBQT1NUIC9idWlsZGAgYXJlIGRlcHJlY2F0ZWQuICBbbW9ieS9tb2J5IzQ5NDQ3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDk0NDcpCiAgICAtICAgVXNlcnMgc2hvdWxkIHVzZSB0aGUgaW5mb3JtYXRpb24gaW4gdGhlIGBlcnJvckRldGFpbGAgYW5kIGBwcm9ncmVzc0RldGFpbGAgZmllbGRzIGluc3RlYWQuCiAgICAtICAgVGhlc2UgZmllbGRzIHdlcmUgbWFya2VkIGRlcHJlY2F0ZWQgaW4gQVBJIHYxLjQgKGRvY2tlciB2MC42LjApIGFuZCBBUEkgdjEuOCAoZG9ja2VyIHYwLjcuMSkgcmVzcGVjdGl2ZWx5LCBidXQgc3RpbGwgcmV0dXJuZWQuCiAgICAtICAgVGhlc2UgZmllbGRzIHdpbGwgYmUgbGVmdCBlbXB0eSBvciB3aWxsIGJlIG9taXR0ZWQgaW4gYSBmdXR1cmUgQVBJIHZlcnNpb24uCi0gICBEZXByZWNhdGUgYERhZW1vbi5SZWdpc3RlcigpYC4gVGhpcyBmdW5jdGlvbiBpcyB1bnVzZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCByZWxlYXNlLiBbbW9ieS9tb2J5IzQ4NzAyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDg3MDIpCi0gICBEZXByZWNhdGUgYGNsaWVudC5JbWFnZUluc3BlY3RXaXRoUmF3YCBmdW5jdGlvbiBpbiBmYXZvciBvZiB0aGUgbmV3IGBjbGllbnQuSW1hZ2VJbnNwZWN0YC4gW21vYnkvbW9ieSM0ODI2NF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4MjY0KQotICAgRGVwcmVjYXRlIGBkYWVtb24vY29uZmlnLkNvbmZpZy5WYWxpZGF0ZVBsYXRmb3JtQ29uZmlnKClgLiBUaGlzIG1ldGhvZCB3YXMgdXNlZCBhcyBoZWxwZXIgZm9yIGBjb25maWcuVmFsaWRhdGVgLCB3aGljaCBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLiBbbW9ieS9tb2J5IzQ4OTg1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDg5ODUpCi0gICBEZXByZWNhdGUgYHBrZy9yZWV4ZWNgLiBUaGlzIHBhY2thZ2UgaXMgZGVwcmVjYXRlZCBhbmQgbW92ZWQgdG8gYSBzZXBhcmF0ZSBtb2R1bGUuIFVzZSBgZ2l0aHViLmNvbS9tb2J5L3N5cy9yZWV4ZWNgIGluc3RlYWQuIFttb2J5L21vYnkjNDkxMjldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTEyOSkKLSAgIERlcHJlY2F0ZSBjb25maWd1cmF0aW9uIGZvciBwdXNoaW5nIG5vbi1kaXN0cmlidXRhYmxlIGFydGlmYWN0cyBbZG9ja2VyL2NsaSM1NzI0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZG9ja2VyL2NsaS9wdWxsLzU3MjQpCi0gICBEZXByZWNhdGUgdGhlIGAtLWFsbG93LW5vbmRpc3RyaWJ1dGFibGUtYXJ0aWZhY3RzYCBkYWVtb24gZmxhZyBhbmQgY29ycmVzcG9uZGluZyBgYWxsb3ctbm9uZGlzdHJpYnV0YWJsZS1hcnRpZmFjdHNgIGZpZWxkIGluIGBkYWVtb24uanNvbmAuIFNldHRpbmcgZWl0aGVyIG9wdGlvbiB3aWxsIG5vIGxvbmdlciB0YWtlIGFuIGVmZmVjdCwgYnV0IGEgZGVwcmVjYXRpb24gd2FybmluZyBsb2cgaXMgYWRkZWQuIFttb2J5L21vYnkjNDkwNjVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTA2NSkKLSAgIERlcHJlY2F0ZSB0aGUgYFJlZ2lzdHJ5Q29uZmlnLkFsbG93Tm9uZGlzdHJpYnV0YWJsZUFydGlmYWN0c0NJRFJzYCBhbmQgYFJlZ2lzdHJ5Q29uZmlnLkFsbG93Tm9uZGlzdHJpYnV0YWJsZUFydGlmYWN0c0hvc3RuYW1lc2AgZmllbGRzIGluIHRoZSBgR0VUIC9pbmZvYCBBUEkgcmVzcG9uc2UuIEZvciBBUEkgdmVyc2lvbiB2MS40OCBhbmQgb2xkZXIsIHRoZSBmaWVsZHMgYXJlIHN0aWxsIGluY2x1ZGVkIGluIHRoZSByZXNwb25zZSwgYnV0IGFsd2F5cyBgbnVsbGAuIEluIEFQSSB2ZXJzaW9uIHYxLjQ5IGFuZCBsYXRlciwgdGhlIGZpZWxkIHdpbGwgYmUgb21pdHRlZCBlbnRpcmVseS4gW21vYnkvbW9ieSM0OTA2NV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5MDY1KQotICAgR28tU0RLOiBEZXByZWNhdGUgYHJlZ2lzdHJ5LlNlcnZpY2VPcHRpb25zLkFsbG93Tm9uZGlzdHJpYnV0YWJsZUFydGlmYWN0c2AgZmllbGQuIFttb2J5L21vYnkjNDkwNjVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTA2NSkKLSAgIEdvLVNESzogVGhlIGBCcmlkZ2VOZklwdGFibGVzYCwgYEJyaWRnZU5mSXA2dGFibGVzYCBmaWVsZHMgaW4gYGFwaS90eXBlcy9zeXN0ZW0uSW5mb2AgYW5kIGBCcmlkZ2VORkNhbGxJUFRhYmxlc0Rpc2FibGVkYCwgYEJyaWRnZU5GQ2FsbElQNlRhYmxlc0Rpc2FibGVkYCBmaWVsZHMgaW4gYHBrZy9zeXNpbmZvLlN5c0luZm9gIGFyZSBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgcmVsZWFzZS4gW21vYnkvbW9ieSM0OTExNF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5MTE0KQotICAgR28tU0RLOiBgY2xpZW50YDogRGVwcmVjYXRlIGBDb21tb25BUElDbGllbnRgIGludGVyZmFjZSBpbiBmYXZvciBvZiB0aGUgYEFQSUNsaWVudGAgaW50ZXJmYWNlLiBUaGUgYENvbW1vbkFQSUNsaWVudGAgd2lsbCBiZSBjaGFuZ2VkIHRvIGFuIGFsaWFzIGZvciBgQVBJQ2xpZW50YCBpbiB0aGUgbmV4dCByZWxlYXNlLCBhbmQgcmVtb3ZlZCBpbiB0aGUgcmVsZWFzZSBhZnRlci4gW21vYnkvbW9ieSM0OTM4OF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5Mzg4KQotICAgR28tU0RLOiBgY2xpZW50YDogRGVwcmVjYXRlIGBFcnJvckNvbm5lY3Rpb25GYWlsZWRgIGhlbHBlci4gVGhpcyBmdW5jdGlvbiB3YXMgb25seSB1c2VkIGludGVybmFsbHksIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgcmVsZWFzZS4gW21vYnkvbW9ieSM0OTM4OV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5Mzg5KQotICAgR28tU0RLOiBgcGtnL2lvdXRpbHNgOiBEZXByZWNhdGUgYE5ld0F0b21pY0ZpbGVXcml0ZXJgLCBgQXRvbWljV3JpdGVGaWxlYCwgYEF0b21pY1dyaXRlU2V0YCwgYE5ld0F0b21pY1dyaXRlU2V0YCBpbiBmYXZvciBvZiBgcGtnL2F0b21pY3dyaXRlcmAgZXF1aXZhbGVudHMuIFttb2J5L21vYnkjNDkxNzFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTE3MSkKLSAgIEdvLVNESzogYHBrZy9zeXNpbmZvYDogRGVwcmVjYXRlIGBOdW1DUFVgLiBUaGlzIHV0aWxpdHkgaGFzIHRoZSBzYW1lIGJlaGF2aW9yIGFzIGBydW50aW1lLk51bUNQVWAuIFttb2J5L21vYnkjNDkyNDFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTI0MSkKLSAgIEdvLVNESzogYHBrZy9zeXN0ZW1gOiBEZXByZWNhdGUgYE1rZGlyQWxsYC4gVGhpcyBmdW5jdGlvbiBwcm92aWRlZCBjdXN0b20gaGFuZGxpbmcgZm9yIFdpbmRvd3MgR1VJRCB2b2x1bWUgcGF0aHMuIEhhbmRsaW5nIGZvciBzdWNoIHBhdGhzIGlzIG5vdyBzdXBwb3J0ZWQgYnkgR28gc3RhbmRhcmQgbGlicmFyeSBpbiBnbzEuMjIgYW5kIG5ld2VyLCBhbmQgdGhpcyBmdW5jdGlvbiBpcyBub3cgYW4gYWxpYXMgZm9yIGBvcy5Na2RpckFsbGAsIHdoaWNoIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuIFRoaXMgYWxpYXMgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IHJlbGVhc2UuIFttb2J5L21vYnkjNDkxNjJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTE2MikKLSAgIEdvLVNESzogRGVwcmVjYXRlIGBwa2cvcGFyc2Vycy5QYXJzZUtleVZhbHVlT3B0YC4gW21vYnkvbW9ieSM0OTE3N10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5MTc3KQotICAgR28tU0RLOiBEZXByZWNhdGUgYHBrZy9wYXJzZXJzLlBhcnNlVWludExpc3RNYXhpbXVtYCwgYHBrZy9wYXJzZXJzLlBhcnNlVWludExpc3RgLiBUaGVzZSB1dGlsaXRpZXMgd2VyZSBvbmx5IHVzZWQgaW50ZXJuYWxseSBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IHJlbGVhc2UuIFttb2J5L21vYnkjNDkyMjJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTIyMikKLSAgIEdvLVNESzogRGVwcmVjYXRlIGBhcGkvdHlwZS5JRFJlc3BvbnNlYCBpbiBmYXZvciBvZiBgY29udGFpbmVyLkNvbW1pdFJlc3BvbnNlYCBhbmQgYGNvbnRhaW5lci5FeGVjQ3JlYXRlUmVzcG9uc2VgLCB3aGljaCBhcmUgY3VycmVudGx5IGFuIGFsaWFzLCBidXQgbWF5IGJlY29tZSBkaXN0aW5jdCB0eXBlcyBpbiBhIGZ1dHVyZSByZWxlYXNlLiBUaGlzIHR5cGUgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IHJlbGVhc2UuIFttb2J5L21vYnkjNDk0NDZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTQ0NikKLSAgIEdvLVNESzogRGVwcmVjYXRlIGBhcGkvdHlwZXMvY29udGFpbmVyLkNvbnRhaW5lclVwZGF0ZU9LQm9keWAgaW4gZmF2b3Igb2YgYFVwZGF0ZVJlc3BvbnNlYC4gVGhpcyB0eXBlIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCByZWxlYXNlLiBbbW9ieS9tb2J5IzQ5NDQyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDk0NDIpCi0gICBHby1TREs6IERlcHJlY2F0ZSBgYXBpL3R5cGVzL2NvbnRhaW5lci5Db250YWluZXJUb3BPS0JvZHlgIGluIGZhdm9yIG9mIGBUb3BSZXNwb25zZWAuIFRoaXMgdHlwZSB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgcmVsZWFzZS4gW21vYnkvbW9ieSM0OTQ0Ml0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5NDQyKQotICAgR28tU0RLOiBgcGtnL2pzb25tZXNzYWdlYDogRml4IGRlcHJlY2F0aW9uIG9mIGBQcm9ncmVzc01lc3NhZ2VgLCBgRXJyb3JNZXNzYWdlYCwgd2hpY2ggd2VyZSBkZXByZWNhdGVkIGluIERvY2tlciB2MC42LjAgYW5kIHYwLjcuMSByZXNwZWN0aXZlbHkuIFttb2J5L21vYnkjNDk0NDddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTQ0NykKLSAgIE1vdmUgYEdyYXBoRHJpdmVyRGF0YWAgZnJvbSBgYXBpL3R5cGVzYCB0byBgYXBpL3R5cGVzL3N0b3JhZ2VgLiBUaGUgb2xkIHR5cGUgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IHJlbGVhc2UuIFttb2J5L21vYnkjNDgxMDhdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80ODEwOCkKLSAgIE1vdmUgYFJlcXVlc3RQcml2aWxlZ2VGdW5jYCBmcm9tIGBhcGkvdHlwZXNgIHRvIGBhcGkvdHlwZXMvcmVnaXN0cnlgLiBUaGUgb2xkIHR5cGUgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IHJlbGVhc2UuIFttb2J5L21vYnkjNDgxMTldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80ODExOSkKLSAgIE1vdmUgZnJvbSBgYXBpL3R5cGVzYCB0byBgYXBpL3R5cGVzL2NvbnRhaW5lcmAgLSBgTmV0d29ya1NldHRpbmdzYCwgYE5ldHdvcmtTZXR0aW5nc0Jhc2VgLCBgRGVmYXVsdE5ldHdvcmtTZXR0aW5nc2AsIGBTdW1tYXJ5TmV0d29ya1NldHRpbmdzYCwgYEhlYWx0aGAsIGBIZWFsdGhjaGVja1Jlc3VsdGAsIGBOb0hlYWx0aGNoZWNrYCwgYFN0YXJ0aW5nYCwgYEhlYWx0aHlgLCBhbmQgYFVuaGVhbHRoeWAgY29uc3RhbnRzLCBgTW91bnRQb2ludGAsIGBQb3J0YCwgYENvbnRhaW5lclN0YXRlYCwgYENvbnRhaW5lcmAsIGBDb250YWluZXJKU09OQmFzZWAsIGBDb250YWluZXJKU09OYCwgYENvbnRhaW5lck5vZGVgLiBUaGUgb2xkIHR5cGVzIGFyZSBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgcmVsZWFzZS4gW21vYnkvbW9ieSM0ODEwOF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4MTA4KQotICAgTW92ZSBmcm9tIGBhcGkvdHlwZXNgIHRvIGBhcGkvdHlwZXMvaW1hZ2VgIC0gYEltYWdlSW5zcGVjdGAsIGBSb290RlNgLiBUaGUgb2xkIHR5cGVzIGFyZSBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgcmVsZWFzZS4gW21vYnkvbW9ieSM0ODEwOF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4MTA4KQotICAgYENvbnRhaW5lcmRDb21taXQuRXhwZWN0ZWRgLCBgUnVuY0NvbW1pdC5FeHBlY3RlZGAsIGFuZCBgSW5pdENvbW1pdC5FeHBlY3RlZGAgZmllbGRzIGluIHRoZSBgR0VUIC9pbmZvYCBlbmRwb2ludCBhcmUgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSBvbWl0dGVkIGluIEFQSSB2MS40OS4gW21vYnkvbW9ieSM0ODQ3OF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4NDc4KQotICAgYGFwaS90eXBlcy9yZWdpc3RyeWA6IERlcHJlY2F0ZSBgU2VydmljZUNvbmZpZy5BbGxvd05vbmRpc3RyaWJ1dGFibGVBcnRpZmFjdHNDSURSc2AgYW5kIGBTZXJ2aWNlQ29uZmlnLkFsbG93Tm9uZGlzdHJpYnV0YWJsZUFydGlmYWN0c0hvc3RuYW1lc2AgZmllbGRzLiBUaGVzZSBmaWVsZHMgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IHJlbGVhc2UuIFttb2J5L21vYnkjNDkwNjVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9tb2J5L21vYnkvcHVsbC80OTA2NSkKLSAgIGBhcGkvdHlwZXMvc3lzdGVtL0NvbW1pdC5FeHBlY3RlZGAgZmllbGQgaXMgZGVwcmVjYXRlZCBhbmQgc2hvdWxkIG5vIGxvbmdlciBiZSB1c2VkLiBbbW9ieS9tb2J5IzQ4NDc4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDg0NzgpCi0gICBgZGFlbW9uL2dyYXBoZHJpdmVyYDogRGVwcmVjYXRlIGBHZXREcml2ZXIoKWAgW21vYnkvbW9ieSM0ODA3OV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4MDc5KQotICAgYGxpYm5ldHdvcmsvaXB0YWJsZXNgOiBEZXByZWNhdGUgYFBhc3N0aHJvdWdoYC4gVGhpcyBmdW5jdGlvbiB3YXMgb25seSB1c2VkIGludGVybmFsbHksIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgcmVsZWFzZS4gW21vYnkvbW9ieSM0OTExNV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5MTE1KQotICAgYHBrZy9kaXJlY3RvcnkuU2l6ZSgpYCBmdW5jdGlvbiBpcyBkZXByZWNhdGVkLCBhbiB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgcmVsZWFzZS4gW21vYnkvbW9ieSM0ODA1N10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ4MDU3KQotICAgYHJlZ2lzdHJ5YDogRGVwcmVjYXRlIGBBUElFbmRwb2ludC5UcmltSG9zdE5hbWVgOyBob3N0bmFtZSBpcyBub3cgdHJpbW1lZCB1bmNvbmRpdGlvbmFsbHkgZm9yIHJlbW90ZSBuYW1lcy4gVGhpcyBmaWVsZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgcmVsZWFzZS4gW21vYnkvbW9ieSM0OTAwNV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL21vYnkvbW9ieS9wdWxsLzQ5MDA1KQotICAgYGFsbG93LW5vbmRpc3RyaWJ1dGFibGUtYXJ0aWZhY3RzYCBmaWVsZCBpbiBgZGFlbW9uLmpzb25gLiBTZXR0aW5nIGVpdGhlciBvcHRpb24gd2lsbCBubyBsb25nZXIgdGFrZSBlZmZlY3QsIGJ1dCBhIGRlcHJlY2F0aW9uIHdhcm5pbmcgbG9nIGlzIGFkZGVkIHRvIHJhaXNlIGF3YXJlbmVzcyBhYm91dCB0aGUgZGVwcmVjYXRpb24uIFRoaXMgd2FybmluZyBpcyBwbGFubmVkIHRvIGJlY29tZSBhbiBlcnJvciBpbiB0aGUgbmV4dCByZWxlYXNlLiBbbW9ieS9tb2J5IzQ5MDY1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbW9ieS9tb2J5L3B1bGwvNDkwNjUpCgo8L2RldGFpbHM+CgotLS0KCiMjIyBDb25maWd1cmF0aW9uCgrwn5OFICoqU2NoZWR1bGUqKjogQnJhbmNoIGNyZWF0aW9uIC0gQXQgYW55IHRpbWUgKG5vIHNjaGVkdWxlIGRlZmluZWQpLCBBdXRvbWVyZ2UgLSBBdCBhbnkgdGltZSAobm8gc2NoZWR1bGUgZGVmaW5lZCkuCgrwn5qmICoqQXV0b21lcmdlKio6IERpc2FibGVkIGJ5IGNvbmZpZy4gUGxlYXNlIG1lcmdlIHRoaXMgbWFudWFsbHkgb25jZSB5b3UgYXJlIHNhdGlzZmllZC4KCuKZuyAqKlJlYmFzaW5nKio6IFdoZW5ldmVyIFBSIGJlY29tZXMgY29uZmxpY3RlZCwgb3IgeW91IHRpY2sgdGhlIHJlYmFzZS9yZXRyeSBjaGVja2JveC4KCvCflJUgKipJZ25vcmUqKjogQ2xvc2UgdGhpcyBQUiBhbmQgeW91IHdvbid0IGJlIHJlbWluZGVkIGFib3V0IHRoaXMgdXBkYXRlIGFnYWluLgoKLS0tCgogLSBbIF0gPCEtLSByZWJhc2UtY2hlY2sgLS0+SWYgeW91IHdhbnQgdG8gcmViYXNlL3JldHJ5IHRoaXMgUFIsIGNoZWNrIHRoaXMgYm94CgotLS0KClRoaXMgUFIgd2FzIGdlbmVyYXRlZCBieSBbTWVuZCBSZW5vdmF0ZV0oaHR0cHM6Ly9tZW5kLmlvL3Jlbm92YXRlLykuIFZpZXcgdGhlIFtyZXBvc2l0b3J5IGpvYiBsb2ddKGh0dHBzOi8vZGV2ZWxvcGVyLm1lbmQuaW8vZ2l0aHViL29zaXNtL3JlbGVhc2UpLgo8IS0tcmVub3ZhdGUtZGVidWc6ZXlKamNtVmhkR1ZrU1c1V1pYSWlPaUl6T1M0eE56TXVNU0lzSW5Wd1pHRjBaV1JKYmxabGNpSTZJak01TGpJd055NHhJaXdpZEdGeVoyVjBRbkpoYm1Ob0lqb2liV0ZwYmlJc0lteGhZbVZzY3lJNld5SnlaVzV2ZG1GMFpTSmRmUT09LS0+Cg==
      patchset: 3b7209548649d9921bcb1f08dd6c92735e032627
      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: 3dc286d515477883ba4e8d5f0f5ddd7761c550f0
          untrusted/project_0/github.com/osism/zuul-jobs:
            canonical_name: github.com/osism/zuul-jobs
            checkout: main
            commit: 8fb09ca9dcef2fe0856c819e31b5d55cc04cdff5
          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: 3dc286d515477883ba4e8d5f0f5ddd7761c550f0
        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/release
        name: osism/release
        short_name: release
        src_dir: src/github.com/osism/release
      projects:
        github.com/osism/release:
          canonical_hostname: github.com
          canonical_name: github.com/osism/release
          checkout: main
          checkout_description: zuul branch
          commit: 83c4965985fe9b5a84e37a815b8c3a3955097918
          name: osism/release
          required: false
          short_name: release
          src_dir: src/github.com/osism/release
      ref: refs/pull/1807/head
      resources: {}
      tenant: osism
      timeout: 1800
      voting: true
