Codercat Studio | Cookbook
This cookbook contains a collection of useful HoudiniFX node setups. All examples are stored using
the new Houdini recipe API and can be copied from this website directly into Houdini using our
simple shelf tools. We also periodically make a backup of the recipes
here.
Copy a snippet of interest from this page, then use Paste on the "Cookbook" shelf to paste it in.
If you would like to share a recipe, click the Create button and paste in the output of the "Copy"
shelf tool. Note that you must be logged in to do so. If you have any questions or comments, feel
free to reach out at codercatclub@gmail.com.
Get new recipes updates over RSS feed.
⚠️ Changelog
11.20.2025 - We updated the copy shelf tool to include the Houdini version, which is also
visible on the recipes listing. Please update your shelf tools using the Python one-liner from the
Recommended Install section.
📦 Recommended Install
To install Cookbook shelf tools copy this code to Houdini Python Shell and press Enter. You
will see Cookbook shelf apper on the top panel.
To open Python Shell press Alt-Shift-P or go to main menu
Window > Python Shell.
📂 Alternative Manual Install
Replace USERNAME and X.Y with your account name and Houdini version.
Restart Houdini.
? About this project
Motivation and Goals
We created this Houdini Cookbook because:
-
We needed a way to quickly share and store small Houdini node setups. Previously, we
attempted to create HDA libraries, but it was too cumbersome for our small team.
-
We believe there is a better way to share Houdini examples than by sharing entire
Houdini files.
- We enjoy sharing our small setups with the Houdini community.
-
We strongly believe in the idea of "Own Your Data," therefore we do not hold any
published recipes hostage. All recipes are backed up once a day to a public Git
repository
here. Even if this service goes down, anyone can still download the full collection and use
it directly with the Cookbook shelf tool or by using the two Python functions described
below.
-
We also embrace the idea of decentralization, and we are considering open sourcing the
Cookbook web service so that anyone can run it locally with their own collection or as
their own public webpage. Let us know if this is something that interests you.
How Does It Work
In Houdini 20.5, SideFX introduced a
new Recipe system
that allows users to save collections of nodes into human-readable structured text files
(JSON). Within this, they added a new collection of Python utilities (hou.data) that allows
for creating and loading recipes programmatically.
In particular, the Cookbook shelf tools use
hou.data.selectedItemsAsData(...) for copying nodes and
hou.createItemsFromData(...) for pasting.
For this web service, we use the Go programming language and store all submitted recipes in
plain text JSON files.
Twist on the basic gyroid, using the formula on spherical coordinates instead of cartesian. This should conform nicer to spherical shapes. This is also an example on how to warp the gyroid shape and get more custom formations.
Nov 09, 2025 | 20.5.584 | vex
Cooked By: snay
ewogICAgIl9fY29va2Jvb2tNZXRhIjogewogICAgICAgICJjb250ZXh0IjogInNvcCIsCiAgICAgICAgInZlcnNpb24iOiAiMjAuNS41ODQiCiAgICB9LAogICAgImF0dHJpYmJsdXIxIjogewogICAgICAgICJpbnB1dHMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJmcm9tIjogImNvbnZlcnR2ZGIxIiwKICAgICAgICAgICAgICAgICJmcm9tX2luZGV4IjogMCwKICAgICAgICAgICAgICAgICJ0b19pbmRleCI6IDAKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInBhcm1zIjogewogICAgICAgICAgICAiaXRlcmF0aW9ucyI6IDE5CiAgICAgICAgfSwKICAgICAgICAicG9zaXRpb24iOiBbCiAgICAgICAgICAgIDAsCiAgICAgICAgICAgIC0xLjk4CiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJhdHRyaWJibHVyIgogICAgfSwKICAgICJjb252ZXJ0dmRiMSI6IHsKICAgICAgICAiaW5wdXRzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiZnJvbSI6ICJneXJvaWQiLAogICAgICAgICAgICAgICAgImZyb21faW5kZXgiOiAwLAogICAgICAgICAgICAgICAgInRvX2luZGV4IjogMAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicGFybXMiOiB7CiAgICAgICAgICAgICJjb252ZXJzaW9uIjogInBvbHkiLAogICAgICAgICAgICAiaXNvdmFsdWUiOiAwLjAxCiAgICAgICAgfSwKICAgICAgICAicG9zaXRpb24iOiBbCiAgICAgICAgICAgIDAsCiAgICAgICAgICAgIC0wLjk4CiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJjb252ZXJ0dmRiIgogICAgfSwKICAgICJneXJvaWQiOiB7CiAgICAgICAgImlucHV0cyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImZyb20iOiAidmRiZnJvbXBvbHlnb25zMSIsCiAgICAgICAgICAgICAgICAiZnJvbV9pbmRleCI6IDAsCiAgICAgICAgICAgICAgICAidG9faW5kZXgiOiAwCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJwYXJtcyI6IHsKICAgICAgICAgICAgImZyZXEiOiA5LjMsCiAgICAgICAgICAgICJoZWlnaHRNdWwiOiAyMDAsCiAgICAgICAgICAgICJzbmlwcGV0IjogImZsb2F0IGZyZXEgPSBjaGYoXCJmcmVxXCIpO1xuXG5mbG9hdCByID0gbGVuZ3RoKHZAUCk7XG5mbG9hdCB0aGV0YSA9IGFjb3MoQFAuei9yKTtcbmZsb2F0IHBoaSA9IGF0YW4yKEBQLnksQFAueCk7XG5cbmZsb2F0IHggPSBmcmVxICogcjtcbmZsb2F0IHkgPSBmcmVxICogdGhldGE7XG5mbG9hdCB6ID0gZnJlcSAqIHBoaTtcblxuZmxvYXQgZnggPSBzaW4oeCkgKiBjb3MoeSkgKyBzaW4oeSkgKiBjb3MoeikgKyBzaW4oeikgKiBjb3MoeCk7XG5cbmlmKGZ4IFx1MDAzYyAwLjAxKXtcbiAgICBAZGVuc2l0eSA9IDAuMDtcbn0gIiwKICAgICAgICAgICAgInRvdGFsQ29scyI6IHsKICAgICAgICAgICAgICAgICJleHByZXNzaW9uIjogImNoKFwiLi4vY2lyY2xlMS9kaXZzXCIpIgogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAicGFybXRlbXBsYXRlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImluc2VydF9hZnRlciI6ICJiaW5kZWFjaCIsCiAgICAgICAgICAgICAgICAicGFybXRlbXBsYXRlcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZm9sZGVyX2dlbmVyYXRlZHBhcm1zX3NuaXBwZXQiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJsYWJlbCI6ICJHZW5lcmF0ZWQgQ2hhbm5lbCBQYXJhbWV0ZXJzIiwKICAgICAgICAgICAgICAgICAgICAgICAgInBhcm10ZW1wbGF0ZXMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnJlcSI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGFiZWwiOiAiRnJlcSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1heF92YWx1ZSI6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjcmlwdF9jYWxsYmFja19sYW5ndWFnZSI6ICJoc2NyaXB0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJmbG9hdCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgInNjcmlwdF9jYWxsYmFja19sYW5ndWFnZSI6ICJoc2NyaXB0IiwKICAgICAgICAgICAgICAgICAgICAgICAgInRhZ3MiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ3JvdXBfdHlwZSI6ICJzaW1wbGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgInNpZGVmeDo6bG9vayI6ICJibGFuayIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiZm9sZGVyX3NpbXBsZSIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJpbnNlcnRfYWZ0ZXIiOiAiZm9sZGVyMF8xIiwKICAgICAgICAgICAgICAgICJwYXJtdGVtcGxhdGVzIjogewogICAgICAgICAgICAgICAgICAgICJoZWlnaHRNdWwiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJsYWJlbCI6ICJIZWlnaHRtdWwiLAogICAgICAgICAgICAgICAgICAgICAgICAibWF4X3ZhbHVlIjogMSwKICAgICAgICAgICAgICAgICAgICAgICAgInNjcmlwdF9jYWxsYmFja19sYW5ndWFnZSI6ICJoc2NyaXB0IiwKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiZmxvYXQiCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAidG90YWxDb2xzIjogewogICAgICAgICAgICAgICAgICAgICAgICAibGFiZWwiOiAiVG90YWxjb2xzIiwKICAgICAgICAgICAgICAgICAgICAgICAgIm1heF92YWx1ZSI6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICJzY3JpcHRfY2FsbGJhY2tfbGFuZ3VhZ2UiOiAiaHNjcmlwdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImZsb2F0IgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInBvc2l0aW9uIjogWwogICAgICAgICAgICAwLAogICAgICAgICAgICAwCiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJ2b2x1bWV3cmFuZ2xlIgogICAgfSwKICAgICJzcGhlcmUxIjogewogICAgICAgICJwb3NpdGlvbiI6IFsKICAgICAgICAgICAgMCwKICAgICAgICAgICAgMi4xCiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJzcGhlcmUiCiAgICB9LAogICAgInZkYmZyb21wb2x5Z29uczEiOiB7CiAgICAgICAgImlucHV0cyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImZyb20iOiAic3BoZXJlMSIsCiAgICAgICAgICAgICAgICAiZnJvbV9pbmRleCI6IDAsCiAgICAgICAgICAgICAgICAidG9faW5kZXgiOiAwCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJwYXJtcyI6IHsKICAgICAgICAgICAgImJ1aWxkZGlzdGFuY2UiOiBmYWxzZSwKICAgICAgICAgICAgImJ1aWxkZm9nIjogdHJ1ZSwKICAgICAgICAgICAgInZveGVsc2l6ZSI6IDAuMDIKICAgICAgICB9LAogICAgICAgICJwb3NpdGlvbiI6IFsKICAgICAgICAgICAgMCwKICAgICAgICAgICAgMS4xCiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJ2ZGJmcm9tcG9seWdvbnMiCiAgICB9Cn0=
The gyroid is a geometry with a detail and a continuous surface. It is found in nature, contributing to the structural coloration of butterfly wings and efficiency of honeycombs. This example is done on basic XYZ cartesian coordinates, but it gets interesting when you start to warp the space that feeds the Gyroid.
Nov 09, 2025 | 20.5.584 | vex
Cooked By: snay
ewogICAgIl9fY29va2Jvb2tNZXRhIjogewogICAgICAgICJjb250ZXh0IjogInNvcCIsCiAgICAgICAgInZlcnNpb24iOiAiMjAuNS41ODQiCiAgICB9LAogICAgImF0dHJpYmJsdXIxIjogewogICAgICAgICJmbGFncyI6IHsKICAgICAgICAgICAgImRpc3BsYXkiOiB0cnVlLAogICAgICAgICAgICAicmVuZGVyIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImlucHV0cyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImZyb20iOiAiY29udmVydHZkYjEiLAogICAgICAgICAgICAgICAgImZyb21faW5kZXgiOiAwLAogICAgICAgICAgICAgICAgInRvX2luZGV4IjogMAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicGFybXMiOiB7CiAgICAgICAgICAgICJpdGVyYXRpb25zIjogMTAwCiAgICAgICAgfSwKICAgICAgICAicG9zaXRpb24iOiBbCiAgICAgICAgICAgIDAsCiAgICAgICAgICAgIC0yLjA0CiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJhdHRyaWJibHVyIgogICAgfSwKICAgICJjb252ZXJ0dmRiMSI6IHsKICAgICAgICAiaW5wdXRzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiZnJvbSI6ICJneXJvaWQiLAogICAgICAgICAgICAgICAgImZyb21faW5kZXgiOiAwLAogICAgICAgICAgICAgICAgInRvX2luZGV4IjogMAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicGFybXMiOiB7CiAgICAgICAgICAgICJjb252ZXJzaW9uIjogInBvbHkiLAogICAgICAgICAgICAiaXNvdmFsdWUiOiAwLjAxCiAgICAgICAgfSwKICAgICAgICAicG9zaXRpb24iOiBbCiAgICAgICAgICAgIDAsCiAgICAgICAgICAgIC0xLjA0CiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJjb252ZXJ0dmRiIgogICAgfSwKICAgICJneXJvaWQiOiB7CiAgICAgICAgImlucHV0cyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImZyb20iOiAidmRiZnJvbXBvbHlnb25zMSIsCiAgICAgICAgICAgICAgICAiZnJvbV9pbmRleCI6IDAsCiAgICAgICAgICAgICAgICAidG9faW5kZXgiOiAwCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJwYXJtcyI6IHsKICAgICAgICAgICAgImZyZXEiOiA3LjcsCiAgICAgICAgICAgICJoZWlnaHRNdWwiOiAyMDAsCiAgICAgICAgICAgICJzbmlwcGV0IjogImZsb2F0IGZyZXEgPSBjaGYoXCJmcmVxXCIpO1xuXG5cbmZsb2F0IHggPSBmcmVxICogQFAueDtcbmZsb2F0IHkgPSBmcmVxICogQFAueTtcbmZsb2F0IHogPSBmcmVxICogQFAuejtcblxuZmxvYXQgZnggPSBzaW4oeCkgKiBjb3MoeSkgKyBzaW4oeSkgKiBjb3MoeikgKyBzaW4oeikgKiBjb3MoeCk7XG5cbmlmKGZ4IFx1MDAzYyAwLjAxKXtcbiAgICBAZGVuc2l0eSA9IDAuMDtcbn0gIiwKICAgICAgICAgICAgInRvdGFsQ29scyI6IHsKICAgICAgICAgICAgICAgICJleHByZXNzaW9uIjogImNoKFwiLi4vY2lyY2xlMS9kaXZzXCIpIgogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAicGFybXRlbXBsYXRlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImluc2VydF9hZnRlciI6ICJiaW5kZWFjaCIsCiAgICAgICAgICAgICAgICAicGFybXRlbXBsYXRlcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZm9sZGVyX2dlbmVyYXRlZHBhcm1zX3NuaXBwZXQiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJsYWJlbCI6ICJHZW5lcmF0ZWQgQ2hhbm5lbCBQYXJhbWV0ZXJzIiwKICAgICAgICAgICAgICAgICAgICAgICAgInBhcm10ZW1wbGF0ZXMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnJlcSI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGFiZWwiOiAiRnJlcSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1heF92YWx1ZSI6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjcmlwdF9jYWxsYmFja19sYW5ndWFnZSI6ICJoc2NyaXB0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJmbG9hdCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgInNjcmlwdF9jYWxsYmFja19sYW5ndWFnZSI6ICJoc2NyaXB0IiwKICAgICAgICAgICAgICAgICAgICAgICAgInRhZ3MiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ3JvdXBfdHlwZSI6ICJzaW1wbGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgInNpZGVmeDo6bG9vayI6ICJibGFuayIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiZm9sZGVyX3NpbXBsZSIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJpbnNlcnRfYWZ0ZXIiOiAiZm9sZGVyMF8xIiwKICAgICAgICAgICAgICAgICJwYXJtdGVtcGxhdGVzIjogewogICAgICAgICAgICAgICAgICAgICJoZWlnaHRNdWwiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJsYWJlbCI6ICJIZWlnaHRtdWwiLAogICAgICAgICAgICAgICAgICAgICAgICAibWF4X3ZhbHVlIjogMSwKICAgICAgICAgICAgICAgICAgICAgICAgInNjcmlwdF9jYWxsYmFja19sYW5ndWFnZSI6ICJoc2NyaXB0IiwKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiZmxvYXQiCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAidG90YWxDb2xzIjogewogICAgICAgICAgICAgICAgICAgICAgICAibGFiZWwiOiAiVG90YWxjb2xzIiwKICAgICAgICAgICAgICAgICAgICAgICAgIm1heF92YWx1ZSI6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICJzY3JpcHRfY2FsbGJhY2tfbGFuZ3VhZ2UiOiAiaHNjcmlwdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImZsb2F0IgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInBvc2l0aW9uIjogWwogICAgICAgICAgICAwLAogICAgICAgICAgICAwCiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJ2b2x1bWV3cmFuZ2xlIgogICAgfSwKICAgICJzcGhlcmUxIjogewogICAgICAgICJwb3NpdGlvbiI6IFsKICAgICAgICAgICAgMCwKICAgICAgICAgICAgMi4wNAogICAgICAgIF0sCiAgICAgICAgInR5cGUiOiAic3BoZXJlIgogICAgfSwKICAgICJ2ZGJmcm9tcG9seWdvbnMxIjogewogICAgICAgICJpbnB1dHMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJmcm9tIjogInNwaGVyZTEiLAogICAgICAgICAgICAgICAgImZyb21faW5kZXgiOiAwLAogICAgICAgICAgICAgICAgInRvX2luZGV4IjogMAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicGFybXMiOiB7CiAgICAgICAgICAgICJidWlsZGRpc3RhbmNlIjogZmFsc2UsCiAgICAgICAgICAgICJidWlsZGZvZyI6IHRydWUsCiAgICAgICAgICAgICJ2b3hlbHNpemUiOiAwLjAyCiAgICAgICAgfSwKICAgICAgICAicG9zaXRpb24iOiBbCiAgICAgICAgICAgIDAsCiAgICAgICAgICAgIDEuMDQKICAgICAgICBdLAogICAgICAgICJ0eXBlIjogInZkYmZyb21wb2x5Z29ucyIKICAgIH0KfQ==
Takes the boundary edge of a surface geometry and insets copies of it towards the center with equal spacing between iterations. Works best on Convex shapes. This was created because the built-in copy and transform with scale of 0.9 creates uneven spacing as the iteration progresses.
Nov 04, 2025 | 20.5.584 | vex
Cooked By: snay
ewogICAgIl9fY29va2Jvb2tNZXRhIjogewogICAgICAgICJjb250ZXh0IjogInNvcCIsCiAgICAgICAgInZlcnNpb24iOiAiMjAuNS41ODQiCiAgICB9LAogICAgImF0dHJpYnByb21vdGUxIjogewogICAgICAgICJpbnB1dHMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJmcm9tIjogInJlc2FtcGxlMSIsCiAgICAgICAgICAgICAgICAiZnJvbV9pbmRleCI6IDAsCiAgICAgICAgICAgICAgICAidG9faW5kZXgiOiAwCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJwYXJtcyI6IHsKICAgICAgICAgICAgImluY2xhc3MiOiAicHJpbWl0aXZlIiwKICAgICAgICAgICAgImlubmFtZSI6ICJjb3B5bnVtIgogICAgICAgIH0sCiAgICAgICAgInBvc2l0aW9uIjogWwogICAgICAgICAgICAwLAogICAgICAgICAgICAwCiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJhdHRyaWJwcm9tb3RlIgogICAgfSwKICAgICJjb3B5MSI6IHsKICAgICAgICAiaW5wdXRzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiZnJvbSI6ICJlZGdlZ3JvdXBfdG9fY3VydmUxIiwKICAgICAgICAgICAgICAgICJmcm9tX2luZGV4IjogMCwKICAgICAgICAgICAgICAgICJ0b19pbmRleCI6IDAKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInBhcm1zIjogewogICAgICAgICAgICAiZG9jb3B5YXR0cmliIjogdHJ1ZSwKICAgICAgICAgICAgIm5jeSI6IDEyCiAgICAgICAgfSwKICAgICAgICAicG9zaXRpb24iOiBbCiAgICAgICAgICAgIDAsCiAgICAgICAgICAgIDIKICAgICAgICBdLAogICAgICAgICJ0eXBlIjogImNvcHl4Zm9ybSIKICAgIH0sCiAgICAiZWRnZWdyb3VwX3RvX2N1cnZlMSI6IHsKICAgICAgICAiaW5wdXRzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiZnJvbSI6ICJ1bnNoYXJlZF9lZGdlX2dyb3VwIiwKICAgICAgICAgICAgICAgICJmcm9tX2luZGV4IjogMCwKICAgICAgICAgICAgICAgICJ0b19pbmRleCI6IDAKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInBhcm1zIjogewogICAgICAgICAgICAiZ3JvdXAiOiAidW5zaGFyZWRFZGdlIgogICAgICAgIH0sCiAgICAgICAgInBvc2l0aW9uIjogWwogICAgICAgICAgICAwLAogICAgICAgICAgICAzCiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJsYWJzOjplZGdlZ3JvdXBfdG9fY3VydmU6OjEuMCIKICAgIH0sCiAgICAiZXh0cmFjdGNlbnRyb2lkMSI6IHsKICAgICAgICAiaW5wdXRzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiZnJvbSI6ICJncmlkMSIsCiAgICAgICAgICAgICAgICAiZnJvbV9pbmRleCI6IDAsCiAgICAgICAgICAgICAgICAidG9faW5kZXgiOiAwCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJwYXJtcyI6IHsKICAgICAgICAgICAgInBpZWNlYXR0cmliIjogIiIKICAgICAgICB9LAogICAgICAgICJwb3NpdGlvbiI6IFsKICAgICAgICAgICAgMi40MiwKICAgICAgICAgICAgMgogICAgICAgIF0sCiAgICAgICAgInR5cGUiOiAiZXh0cmFjdGNlbnRyb2lkIgogICAgfSwKICAgICJncmlkMSI6IHsKICAgICAgICAicG9zaXRpb24iOiBbCiAgICAgICAgICAgIDAsCiAgICAgICAgICAgIDUKICAgICAgICBdLAogICAgICAgICJ0eXBlIjogImdyaWQiCiAgICB9LAogICAgInJlc2FtcGxlMSI6IHsKICAgICAgICAiaW5wdXRzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiZnJvbSI6ICJjb3B5MSIsCiAgICAgICAgICAgICAgICAiZnJvbV9pbmRleCI6IDAsCiAgICAgICAgICAgICAgICAidG9faW5kZXgiOiAwCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJwYXJtcyI6IHsKICAgICAgICAgICAgImRvY3VydmVudW1hdHRyIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgInBvc2l0aW9uIjogWwogICAgICAgICAgICAwLAogICAgICAgICAgICAxCiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJyZXNhbXBsZSIKICAgIH0sCiAgICAidHJhbnNmb3JtX3BvaW50c190b3dhcmRzX2NlbnRlciI6IHsKICAgICAgICAiY29sb3IiOiBbCiAgICAgICAgICAgIDAuOCwKICAgICAgICAgICAgMC4wMiwKICAgICAgICAgICAgMC4wMgogICAgICAgIF0sCiAgICAgICAgImZsYWdzIjogewogICAgICAgICAgICAiY29sb3JkZWZhdWx0IjogZmFsc2UsCiAgICAgICAgICAgICJkaXNwbGF5IjogdHJ1ZSwKICAgICAgICAgICAgInJlbmRlciI6IHRydWUKICAgICAgICB9LAogICAgICAgICJpbnB1dHMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJmcm9tIjogImF0dHJpYnByb21vdGUxIiwKICAgICAgICAgICAgICAgICJmcm9tX2luZGV4IjogMCwKICAgICAgICAgICAgICAgICJ0b19pbmRleCI6IDAKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImZyb20iOiAiZXh0cmFjdGNlbnRyb2lkMSIsCiAgICAgICAgICAgICAgICAiZnJvbV9pbmRleCI6IDAsCiAgICAgICAgICAgICAgICAidG9faW5kZXgiOiAxCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJwYXJtcyI6IHsKICAgICAgICAgICAgInNuaXBwZXQiOiAiZmxvYXQgdG90YWwgPSBjaGYoXCJ0b3RhbFwiKTtcbnZlY3RvciBjZW50cm9pZCA9IHBvaW50KDEsIFwiUFwiLCAwKTtcbnZAUCA9IGxlcnAodkBQLCBjZW50cm9pZCwgQGNvcHludW0vdG90YWwpOyIsCiAgICAgICAgICAgICJ0b3RhbCI6IHsKICAgICAgICAgICAgICAgICJleHByZXNzaW9uIjogImNoKFwiLi4vY29weTEvbmN5XCIpIgogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAicGFybXRlbXBsYXRlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImluc2VydF9hZnRlciI6ICJ2ZXhfdGhyZWFkam9ic2l6ZSIsCiAgICAgICAgICAgICAgICAicGFybXRlbXBsYXRlcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZm9sZGVyX2dlbmVyYXRlZHBhcm1zX3NuaXBwZXQiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJsYWJlbCI6ICJHZW5lcmF0ZWQgQ2hhbm5lbCBQYXJhbWV0ZXJzIiwKICAgICAgICAgICAgICAgICAgICAgICAgInBhcm10ZW1wbGF0ZXMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAidG90YWwiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxhYmVsIjogIlRvdGFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWF4X3ZhbHVlIjogMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NyaXB0X2NhbGxiYWNrX2xhbmd1YWdlIjogImhzY3JpcHQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImZsb2F0IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAic2NyaXB0X2NhbGxiYWNrX2xhbmd1YWdlIjogImhzY3JpcHQiLAogICAgICAgICAgICAgICAgICAgICAgICAidGFncyI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJncm91cF90eXBlIjogInNpbXBsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2lkZWZ4Ojpsb29rIjogImJsYW5rIgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJmb2xkZXJfc2ltcGxlIgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInBvc2l0aW9uIjogWwogICAgICAgICAgICAwLAogICAgICAgICAgICAtMS4wNAogICAgICAgIF0sCiAgICAgICAgInR5cGUiOiAiYXR0cmlid3JhbmdsZSIKICAgIH0sCiAgICAidW5zaGFyZWRfZWRnZV9ncm91cCI6IHsKICAgICAgICAiZmxhZ3MiOiB7CiAgICAgICAgICAgICJoaWdobGlnaHQiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiaW5wdXRzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiZnJvbSI6ICJncmlkMSIsCiAgICAgICAgICAgICAgICAiZnJvbV9pbmRleCI6IDAsCiAgICAgICAgICAgICAgICAidG9faW5kZXgiOiAwCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJwYXJtcyI6IHsKICAgICAgICAgICAgImdyb3VwYmFzZSI6IGZhbHNlLAogICAgICAgICAgICAiZ3JvdXBlZGdlcyI6IHRydWUsCiAgICAgICAgICAgICJncm91cG5hbWUiOiAidW5zaGFyZWRFZGdlIiwKICAgICAgICAgICAgImdyb3VwdHlwZSI6ICJlZGdlIiwKICAgICAgICAgICAgInVuc2hhcmVkIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgInBvc2l0aW9uIjogWwogICAgICAgICAgICAwLAogICAgICAgICAgICA0CiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJncm91cGNyZWF0ZSIKICAgIH0KfQ==